为什么这个签名脚本比未签名脚本花费更多时间?

时间:2016-11-29 13:27:08

标签: vbscript code-signing-certificate wsh

我有签名的VBScript。我试图通过命令提示符使用cscript.exe执行它。未签名的脚本执行得更快(1秒),但如果签名则需要花费更多时间(16秒)来执行。

c:\cscript my.vbs

我的.vbs文件包含以下内容:

Wscript.echo "My very first script."

'' SIG '' Begin signature block
'' SIG '' BAcTCEVybGFuZ2VuMSAwHgYDVQQKFBdTaWVtZW5zIEhl
'' SIG '' YWx0aGNhcmUgR21iSDEgMB4GA1UEAxQXU2llbWVucyBI
'' SIG '' ZWFsdGhjYXJlIEdtYkgwggEiMA0GCSqGSIb3DQEBAQUA
'' SIG '' A4IBDwAwggEKAoIBAQC1y/VtChCaIT1wrPyyd6dyIiBv
'' SIG '' hwlw6P2ojQgyFutYPqGiPStdiA3O2cvrQJaaqu/lXc+v
'' SIG '' c3tOdSbg2YcqZg5Svpbhr7vxIiN7wd4DGKy8mFdpp23E
'' SIG '' UTnn9bcDqmEqNtLOfu3hFcyW760NDeXWPgwBvXqaUWUL
'' SIG '' kEr96LHmz0Zfohs0ER1WPgYkncIx14nd442KULJb8EyM
'' SIG '' nPvGbv9r4RROSqfGyNwV6EHnQ5TLHieE8n2o7lIEtMSP
'' SIG '' Ne1Psr7V2QEc9wZe2EEsTaKAwdTP3bhexoMK0dGTXcLf
'' SIG '' qI0IT3yqCou9X9zuYfpTmB0u0Mpi8Xma6OmO+L5UmXCo
'' SIG '' bBeXYJFvAgMBAAGjggFdMIIBWTAJBgNVHRMEAjAAMA4G
'' SIG '' A1UdDwEB/wQEAwIHgDArBgNVHR8EJDAiMCCgHqAchhpo
'' SIG '' dHRwOi8vc3Yuc3ltY2IuY29tL3N2LmNybDBhBgNVHSAE
'' SIG '' WjBYMFYGBmeBDAEEATBMMCMGCCsGAQUFBwIBFhdodHRw
.
.
.
.
etc
'' SIG '' End signature block

我只在一个网络中的计算机上遇到此问题。

1 个答案:

答案 0 :(得分:0)

虽然签署脚本的有用功能确实会引入开销,但这很简单。

  1. 它增加了脚本文件的大小,因为必须存储加密的签名哈希,而这不应该是小脚本的问题,它会对较大的脚本产生重大影响(因为哈希)是从内容创建的

  2. Windows Scripting Host 5.6或更高版本支持加密签名哈希时采取的额外步骤*。

    1. 从脚本文本中提取证书和签名哈希。
    2. 验证证书是否由受信任的根签名,因此是受信任的证书。
    3. 使用证书中的公钥解密签名的哈希。
    4. 将解密的哈希值与收到的脚本文本的哈希值进行比较。
  3. *从Windows Script Host: New Code-Signing Features Protect Against Malicious Scripts 取得的步骤

      OP 的

    Comment
      我只能在少数几台机器上重现此问题。

    这里的可能性是“少数计算机”需要更长的时间来验证哈希,因为系统限制,例如在验证签名哈希时处理能力,内存或操作系统负载。