我問有關裝配的安全性和別人一個問題告訴我幾件事情:類庫安全和許可技術
你可以調用一個牌技的時候,圖書館是被實例化。我過去所做的是將公鑰作爲dll的資源,然後查找帶有用我的私鑰簽名的加密簽名的許可證xml文檔。只要我密切關注我的私鑰,就很難打敗。
看完這個我有一些問題:
- 如何調用我的牌技,當我開發一個類庫?
- 如何將公鑰作爲資源添加到程序集中?
- 如何查找帶有用我的私鑰簽名的加密簽名的許可證xml文檔以及何時查看何處?
如果有人請幫助我詳細瞭解一些事情以實現上述安全性,那將會更好。非常感謝。
我問有關裝配的安全性和別人一個問題告訴我幾件事情:類庫安全和許可技術
你可以調用一個牌技的時候,圖書館是被實例化。我過去所做的是將公鑰作爲dll的資源,然後查找帶有用我的私鑰簽名的加密簽名的許可證xml文檔。只要我密切關注我的私鑰,就很難打敗。
看完這個我有一些問題:
如果有人請幫助我詳細瞭解一些事情以實現上述安全性,那將會更好。非常感謝。
「許可技術」基本上是他在本段其餘部分詳細介紹的方法。 「許可證」只不過是行爲者(用戶自己或代表他們運行的其他代碼)使用您的代碼的權限證明。它不必像SSL證書那樣是通用的標準。它只是需要被人知道,而且很難被別人冒充。
至於資源,這只是.Net中固有的東西。在VS解決方案資源管理器中,轉到您希望能夠訪問受限DLL的項目。其擴展內容中的第一項將是屬性文件夾;在那之下你應該找到一個項目Resources.resx。打開它,你會得到一個GUI,它允許你引用字符串,圖像,純文本文件等,當解決方案被構建時,它們可以被編譯或保存在DLL中。這是你指定一個加密的已知值的字符串的地方。可能最安全的加密字符串是程序集的強名稱或GUID,因爲那樣你就可以將你解密的內容與調用者的程序集信息進行比較,從而防止某人從你的某個庫中獲取加密字符串並使用它在他們的。在受限制的DLL中,可以使用相同的功能來存儲解密密鑰,您將使用解密密鑰來解碼調用DLL提供的字符串。
有許多資源可用於教程如何在.NET中使用RSA加密(此處推斷的加密方法)。有一個RsaCryptoServiceProvider將執行加密/解密,生成密鑰等;所有你需要做的就是放進去。可能會令人困惑的是,在像RSA這樣的非對稱密鑰算法中,數據通常使用「public」密鑰進行加密,並使用「private」密鑰進行解密。這是因爲不對稱密鑰通常用於公共通信信道,並且您需要爲遠程方提供一個可用於編寫消息的密鑰,然後您可以解碼。但是,在這種情況下,受限制的DLL必須解密需要比較的數據,因此它需要一個固定的「私鑰」。這使得解密密鑰「公開」給任何使用.NET Reflector或類似反彙編程序的人。但是,如果您是開發人員唯一可以向授權訪問您的DLL的DLL提供加密字符串的人,那麼您可以保密加密密鑰。
對於任何人誰是困惑,他引用[這是他的問題以前的答案](http://stackoverflow.com/questions/4762259/class-library-and-security-in-dotnet-technology/4762319# 4762319)。@Thomas - 如果您通過選擇第二段並單擊blockquote **「**按鈕來編輯您的問題,您的問題就會更清晰。 – Justin 2011-01-21 19:31:23