PE 數字簽名

http://www.youdzone.com/signature.html  英文文章,介紹了證書與簽名的關係。

http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html 是翻譯後的文章。


PE 數字簽名是被DER編碼方式編碼的二進制數據,數據的構成有 PKCS #7 V1.5 定義,具體請參考 PKCS #7Cryptographic Message Syntax Standard.

PKCS#7 數據中包含了簽發簽名的證書以及其上級證書的完整證書鏈。根證書籤發下一級證書,然後一級一級的簽發下去最後一級證書籤發籤名。

x.509 定義了證書的數據構成。

這裏有有關數字證書的ASN.1描述
http://www.rfc-base.org/txt/rfc-5280.txt
Internet X.509 Public Key Infrastructure Certificate
             and Certificate Revocation List (CRL) Profile
PKCS #7 V1.5 和 X.509 的定義都採用了ASN.1 語法

http://msdn.microsoft.com/en-us/windows/hardware/gg463180 是微軟對數字簽名的ASN.1語法描述,但是沒有 PKCS #7Cryptographic Message Syntax Standard. 講些的詳細。


http://www.lapo.it/asn1js/   可以將PE 文件最後的證書數據直接解析爲 ASN.1語法

asn1viewer 是一個免費工具,也可以解析DER數據

使用 openssl pkcs7命令能夠將完整數字簽名消息中的全部數字證書都導出,然後在使用openssl x509 進行解析。

openssl pkcs7 -inform DER -in Certificate.cer -print_certs

這說明,openssl 是能夠驗證PKCS7並解析pkcs#7數字簽名數據的。

注: 這裏導出的證書文件與通過Windows 文件屬性的簽名選項導出的der格式的證書是一樣的。


Linux 下將數字證書解析爲ASN.1 文本的命令:

openssl x509 -inform der -in vmUpdate.cer -text 


利用openssl pkcs7 命令導出了一個數字簽名數據的全部證書,發現包含了從根證書到最終簽發簽名的全部證書以及用於校驗時間戳的證書。通過這個能夠確定 WinVerifyTrust 函數,應該不會以聯網方式校驗證書的。此外,證書鏈的關聯是通過證書中的Issuer Name  與Subject 建立的。Issuer Name 標記了上一級證書的名字,Subject 標記了證書的名字

微軟文檔中提到了驗證數據簽名是,使用了 Certificates Store 來驗證完成的證書鏈。根據猜測,在Windows  下運行certmgr.msc 後看得應該就是Certificates Store
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章