2016-09-20 43 views
0

我想了解下載歸檔時驗證信任背後的關鍵高級別詳細信息。驗證已簽名歸檔的X.509 CoT的方法

這是我如何可以做到理解:

在軟件開發方面:

  1. 獲取從公共CA證書VeriSign這樣

  2. 生成然後使用您的證書中的私鑰對該字符串進行加密,這是「簽名」

  3. 主機存檔下載,與包含證書+公共密鑰在步驟2

產生在(用戶)客戶端的簽名一個單獨的文件一起:

  • 下載並解壓存檔,下載簽名+公鑰文件

  • 使用下載的公鑰解密下載簽名,保存該值

  • 遍歷操作系統中嵌入的公共根證書。對於每個根證書,解密簽名值並將結果與​​步驟5中的結果進行比較。

  • 一旦在6中找到匹配項,就證實作者的私鑰從CA的信任鏈下降其中在第6步

    • 發現匹配的這一切都假定軟件開發者使用,我們已經在我們的客戶操作系統的內置根證書的CA.
  • 問題:

    1. 繫上述方法的聲音,還是我俯瞰關鍵細節?
    2. 既然你控制一個空白的石板客戶,如果我想的公共密鑰+簽名+歸檔到一個單一的文件,我可以讓客戶瞭解和分析結合起來,有沒有得到廣泛支持的格式,以利用組織這個數據?

    回答

    1

    除了在開發者(2)(描述RSA簽名如何工作,但ECDSA非常適合這項任務)方面有點過於具體,這聽起來更像是Authenticode減去一些EKU限制。這導致我問「爲什麼不使用Authenticode簽名?」。

    我會考慮的結構是PKCS#7/CMS SignedData格式。它可以從多個證書(簽字描述多個簽名ECDSA-brainpoolP320t1-SHA-3-512的人誰可以讀取它,以及RSA-2048-SHA-2-256對於我們大多數人,和DSA-1024-SHA- 1,任何人其計算機建於2001年)。

    對於數據文件,您可以正常使用SignedData,對於可執行文件,由於存在語義部分(因此您必須將其鬆散到某處並使用間接簽名),因此更難。

    如果您使用.NET進行簽名,PKCS#7/CMS SignedData可用於通過System.Security.Cryptography.Pkcs.SignedCms進行簽名和驗證(儘管您可能必須定義自己的鏈信任規則那個班級)。

    +0

    感謝您的回覆,是不是特定於Microsoft操作系統Authenticode?客戶端是運行Linux的MIPS拱板。 – Hoofamon

    +0

    那麼,這將是一個很好的理由不使用Authenticode :)。簽名數據格式可能仍然是贏家。 – bartonjs