gpt4 book ai didi

.net - 验证签名的 Word 文档的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-03 00:10:50 25 4
gpt4 key购买 nike

根据 "The Digital Signing Framework of the Open Packaging Conventions" , .docx 文件本质上是各种“部分”的 zip 文件,签署 .docx 意味着在 .docx 容器中包含这些部分的某些子集的签名。但是没有提到哪些部分的子集构成有效签名。有一个部分描述了 .XPS“应用程序签名策略”,但没有对应的 .DOCX。 Packaging API 告诉我哪些部分已签名以及它们的签名是否有效,但似乎要由程序员来确保所有需要签名的部分都在签名列表中。链接文档只是说:

Applications using package-based formats define their own policies as part of the Signing Framework. The policy is determined by the element types and workflow requirements of the format.

我如何知道 Word 文档的正确策略是什么?

例如,使用Word 2013对一个简单的Word文档进行签名,使用Packaging API枚举签名的部分,显示并不是所有的部分都被签名。特别是,/docProps/core.xml(似乎包含文档“owner”)未签名:

Add-Type -Assembly WindowsBase
$f = "My Signed File.docx"
$p = [System.IO.Packaging.Package]::Open($f)
$dsm = [System.IO.Packaging.PackageDigitalSignatureManager]::new($p)
$p.GetParts() | ForEach-Object {$_.Uri.ToString()}
$dsm.Signatures | ForEach-Object {$_.SignedParts} | ForEach-Object {$_.ToString()}

打印(所有部分):

/docProps/app.xml
/docProps/core.xml
/word/document.xml
/word/fontTable.xml
/word/settings.xml
/word/styles.xml
/word/theme/theme1.xml
/word/webSettings.xml
/word/_rels/document.xml.rels
/_rels/.rels
/_xmlsignatures/origin.sigs
/_xmlsignatures/sig1.xml
/_xmlsignatures/_rels/origin.sigs.rels

和(签名部分):

/word/document.xml
/word/fontTable.xml
/word/settings.xml
/word/styles.xml
/word/theme/theme1.xml
/word/webSettings.xml

最佳答案

首先,就此而言..

'How do I know what the correct policy is for Word documents?'

数字签名并不是真正的政策,因为真正的 DLP/IP 工具提供。它们只是最常使用的身份属性。如果您正在查看真正的政策,那就是 AD RMS/Azure 信息保护解决方案等。

这是我关于这个数字签名主题的笔记,与验证相关。

所有这些签名内容都是通过 Microsoft CAPI NG API 实现的。

https://msdn.microsoft.com/en-us/library/windows/desktop/aa376210(v=vs.85).aspx

https://msdn.microsoft.com/en-us/library/windows/desktop/aa376214(v=vs.85).aspx

在我见过的几乎所有案例中,这都涉及证书、自签名证书、域颁发证书或外部 3rdP 证书。

当您在 Word 中打开已签名的文档时,您会在 UI 中看到“签名”按钮(红色丝带),这意味着它位于 Word DOM 中。因此,谨慎的方法是导航 DOM 以查看要验证的位置。

https://support.office.com/en-us/article/View-digital-signature-and-certificate-details-76BA00CB-1E58-42AA-8717-0CAEE76BB3CF

现在,综上所述,意思是,您正在查看的所有 Prop 。可以直接看签名 bool 证据。

http://technet.microsoft.com/en-us/sysinternals/bb897441.aspx

sigcheck.exe -a -u -e

您可以利用 signtool.exe

http://msdn.microsoft.com/en-us/library/windows/desktop/aa388171%28v=vs.85%29.aspx

https://msdn.microsoft.com/en-us/library/aa387764.aspx

# sign - Digitally signs files.
# verify - Verifies the digital signature of files.

signtool verify /pa myfile.exe
if %ERRORLEVEL% GEQ 1 echo This file is not signed.

# verbose out put, add a '/v' after '/pa'.

PoSH 可以使用以下 cmdlet 与挖掘文档属性查看文件签名。然而,这并没有查看所有这些属性,只是查看了 sig。

 Get-AuthenticodeSignature 'C:\windows\explorer.exe'

您当然可以 .NET 检索签署文件的证书,从而获得所有者。

关于.net - 验证签名的 Word 文档的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48629637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com