2016-11-29 25 views
1

我有一個簽名的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 

我面對這個問題只在機器這是在一個網絡。

+0

cscript.exe文件的額外大小必須在運行時間執行之前打開?說實話,這不是真正的火箭科學,更長的文件可以打開。說了15秒的差異似乎很多。 – Lankymart

+0

@Lankymart謝謝你的回覆。它不是很大的文件。它只有一個聲明,但是它被簽名。我知道簽名導致了這個問題。我不知道爲什麼會發生。我只能在幾臺機器上重現此問題。 – user2328412

+0

文件被簽名的事實意味着它包含更多的內容,然後是第一個未簽名的文件,因此文件大小增加。 – Lankymart

回答

0

這確實很簡單,雖然簽署腳本的有用功能確實會引入開銷。

  1. 它增加了腳本文件的大小,因爲加密的簽名哈希存儲已到,而這不應該是小的腳本,它將對較大的一個顯著的影響(因爲哈希是一個問題從內容創建)

  2. 當Windows Scripting Host 5.6或更高版本支持加密簽名散列時,採取額外步驟*進行驗證。

    1. 從腳本文本中提取證書並簽名散列。
    2. 驗證證書是否由受信任的根簽名,因此是受信任的證書。
    3. 使用證書中的公鑰解密簽名的散列。
    4. 將解密後的散列與接收到的腳本文本的散列進行比較。

*從Windows Script Host: New Code-Signing Features Protect Against Malicious Scripts

Comment採取措施,OP
我能夠重現這個問題只有幾臺機器。

的可能性在這裏是那些「幾臺機器」需要更長的時間來驗證哈希由於像在簽署哈希正被驗證的時間處理能力,內存或者操作系統加載系統的限制。

相關問題