公共語言運行庫中的程序集-05程序集安全注意事項

 

程序集安全注意事項

Ø  在您生成程序集時,您可以指定該程序集運行所需的一組權限。是否將特定的權限授予程序集是基於證據的。

使用證據有兩種截然不同的方式:

Ø  將輸入證據與加載程序所收集的證據合併,以創建用於策略決策的最終證據集。使用這種語義的方法包括 Assembly.LoadAssembly.LoadFrom  Activator.CreateInstance

Ø  原封不動地使用輸入證據作爲用於策略決策的最終證據集。使用這種語義的方法包括 Assembly.Load(byte[])  AppDomain.DefineDynamicAssembly()

通過在將運行程序集的計算機上設置安全策略,您可以授予一些可選的權限。如果您希望代碼可以處理所有潛在的安全異常,可以執行以下操作之一:

Ø  爲您的代碼必須具有的所有權限插入權限請求,並預先處理在未授予權限時發生的加載時錯誤。

Ø  不要使用權限請求來獲取您的代碼可能需要的權限,但一定要準備處理在未授予權限時發生的安全異常。

說明:安全性是一個較爲複雜的領域,您將要做出很多選擇。有關更多信息,請參見安全性的基礎概念

在加載時,程序集的證據用作安全策略的輸入。安全策略是由企業和計算機的管理員以及用戶策略設置建立的,它在執行時確定向所有託管代碼授予的權限組。可以爲該程序集(如果該程序集具有簽名工具生成的簽名)的發行者建立安全策略,或者爲該程序集的下載網站和區域(就 Internet Explorer 而言)建立安全策略,也可以爲該程序集的強名稱建立該策略。例如,一臺計算機的管理員可以建立這樣一種安全策略:它允許從某一網站下載由指定軟件公司簽發用以訪問計算機上的數據庫的所有代碼,但不授予對該計算機磁盤的寫訪問權。

強名稱程序集和簽名工具

可以用兩種不同但相互補充的方式對程序集進行簽名:使用強名稱,或是使用 .NET Framework 1.0 1.1 版中的文件簽名工具 (Signcode.exe) 以及 .NET Framework 更高版本中的簽名工具 (SignTool.exe)。使用強名稱對程序集進行簽名將向包含程序集清單的文件添加公鑰加密。強名稱簽名幫助驗證名稱的唯一性,避免名稱欺騙,並在解析引用時向調用方提供某標識。

但是,任何信任級別都不會與一個強名稱關聯,這樣簽名工具 (SignTool.exe) 就變得十分重要。簽名工具要求發行者向第三方證書頒發機構證實其標識並獲取證書,然後此證書將嵌入到您的文件中,並且管理員能夠使用該證書來決定是否相信這些代碼的真實性。

您可以將強名稱和使用簽名工具 (SignTool.exe) 創建的數字簽名一起提供給程序集,或者您可以單獨使用其中之一。簽名工具一次只能對一個文件進行簽名。對於多文件程序集,您可以對包含程序集清單的文件進行簽名。強名稱存儲在包含程序集清單的文件中,但簽名工具 (SignTool.exe) 創建的簽名存儲在該程序集清單所在的可移植可執行 (PE) 文件中保留的槽中。當您已經具有依賴於簽名工具 (SignTool.exe) 生成的簽名的信任層次結構或者當您的策略只使用密鑰部分並且不檢查信任鏈時,就可以使用通過簽名工具 (SignTool.exe) 對程序集進行的簽名(帶或不帶強名稱)。

說明:在一個程序集上同時使用強名稱和簽名工具簽名時,必須首先分配強名稱。

公共語言運行庫還將執行哈希驗證;程序集清單包含構成該程序集的所有文件的列表,包括當生成清單時存在的每一文件的散列。在加載每一文件時,其內容被散列化並與清單中存儲的哈希值進行比較。 如果兩個哈希值不匹配,則無法加載該程序集。

因爲強名稱和使用簽名工具 (SignTool.exe) 進行簽名確保了完整性,因此您可以將代碼訪問安全策略建立在這兩種形式的程序集證據的基礎上。強名稱和使用簽名工具 (SignTool.exe) 進行簽名通過數字簽名和證書來確保完整性。上面提到的所有技術(哈希驗證、強名稱和使用簽名工具 (SignTool.exe) 進行簽名)共同作用,可以確保程序集沒有做過任何方式的改動。

簽名工具 (SignTool.exe)

簽名工具是一個命令行工具,用於對文件進行數字簽名,驗證文件或時間戳文件中的簽名。

sn [-quiet][option [parameter(s)]]

參數

(略)

備註

簽名工具要求本地計算機上安裝了 CAPICOM 2.0 可再發行程序。

簽名工具的 verify 命令確定簽名證書是否由受信任的頒發機構頒發、是否已撤消了簽名證書,以及簽名證書對於特定策略是否有效(此項可選)。

執行成功時,簽名工具返回退出代碼 0;執行失敗時,簽名工具返回退出代碼 1;執行完畢並給出警告時,簽名證書返回退出代碼 2

示例

此命令演示如何使用最佳證書自動對文件進行簽名。

signtool sign /a MyFile.exe

 

原文地址:

http://msdn.microsoft.com/zh-cn/library/ab4eace3(v=VS.90).aspx
http://msdn.microsoft.com/zh-cn/library/8s9b9yaz(v=VS.90).aspx

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章