加解密模塊使得開發者可以很容易的在應用中使用加解密的相關功能,例如,加密信息,創建一個數據的hash值,比較hash值,看看數據是否被修改。
模塊具有下列功能:
- 減少實現標準功能的開發代碼,加解密模塊實現了常用的加解密功能。
- 在應用和跨企業之間提供一致的加解密策略。
- 降低了開發者為應用建立一致的加解密架構所需的學習曲線
- 是可擴展的,意味著它支持自定義加解密的provider
一、加解密模塊簡介
包括下列主題:
- 通用解決方案
- 示例代碼
- 什么時候使用加解密模塊
- Key的管理和分布
- 選擇算法
1.1通用解決方案
開發者在開發的時候,經常需要加密數據和hash功能來滿足企業組織的安全需要。應用創建數據和管理數據,也包括配置信息,通常需要加密。另外,訪問系統需要的密碼和其他信息也需要hash。
加解密模塊通過提供抽象出來的加解密provider來簡化開發者的工作,可以通過配置,再不修改代碼的情況下改變provider。
模塊只支持對稱加密算法,對稱加密算法使用相同的key加密和解密。模塊不支持非對稱(也就是公鑰)加密解密,使用一個key加密信息,使用另外一個key解密信息。
加解密模塊的設計滿足了開發者在開發應用的時候這方面的常用需求,下面列出了一些常用的解決方案,以供參考:
- 配置信息加密
- 加密數據
- 解密數據
- 獲取數據的hash值
- 檢查hash值是否和數據匹配
1.2示例代碼

???????????? // Encrypt?the?Sensitive?Data?String
???????????? string ?encryptedContentBase64 = Cryptographer?.EncryptSymmetric?( " symmProvider " ,
??????????????????????????????????????????????????????????????????????????? " SensitiveData " );
????????????
???????????? // Decrypt?the?base64?encoded?string
???????????? string ?readableString = string .Empty?;
????????????readableString? = Cryptographer?.DecryptSymmetric?( " symmProvider " ,encryptedContentBase64?);
????????}
?
?
1.3什么時候使用加解密模塊
在你需要hash數據,或者是對稱加解密的時候,可以選擇企業庫的加解密模塊。你也可以自定義加解密的provider。如果數據只需要加密,不需要解密,例如:密碼。可以使用hash。如果數據需要加密和解密,那就選擇對稱加密算法。
使用對稱加密的一個先決條件是發送數據的應用和接受數據的應用之間是可信任的。例如,發送方和接受方是同一個應用。這種限制通常會不適合一些需要網絡傳輸數據的應用。在使用加解密模塊的時候,有兩點也需要考慮:
1)對稱密鑰的管理
2)選擇hash值,還是選擇對稱加密算法
1.4管理和分布key
對稱加密算法在加密和解密的時候使用同一個key,發送數據和接受數據的雙方都必須要具有key。任何拿到這個key的應用也都可以加密和解密數據。這就意味著,如果攻擊者獲得key,就可以拿到加密的數據內容。攻擊者也可以通過刪除或者是破壞key,使得正常應用無法讀取數據。一個key文件是一個加密文件,里面包括了加解密所需要的key。需要很小心的管理key,可以考慮下面的方式:
- 使用Access Control List (ACL訪問控制列表)保護key,只有授權才可以訪問key文件。
- 在高危環境關閉電腦的遠程調試。例如,服務器的匿名訪問。
加解密模塊將每一個key文件存在在本地計算機,配置節<securityCryptographyConfiguraion>中包含了每個文件的絕對地址。為了保護key,在寫入文件的時候使用了DPAPI加密了key信息。如果使用加解密,一定要保證路徑地址也是加密值。例如,你可以將ACLs值包含在路徑加密值中。如果應用需要其他硬件輔助的加密,需要修改模塊的源代碼來滿足需求。
模塊不完全解決key的分發問題。如果key只是在自己的安全的計算機上使用的話,很容易解決分發問題。但是,如果是在多個地方共享key,需要仔細的計劃。一個辦法是用企業庫的配置工具,在你分發之前導出key文件。導出key的時候設置一個password。在另外的地方使用企業庫配置工具導入key的時候需要輸入密碼。
1.5算法的選擇
如果一個加解密算法被破解,或者算法是很容易被暴力破解的,加解密provider就不是安全的。自定義的算法在沒有測試的時候是很容易被破解的。相反,使用公用的,著名的加密算法是經得起考驗的。
如果計算能力增加的話,推薦增加key的長度。目前情況,加密key的長度在128-256位之間是較為安全的,目前大多算法至少都是128位。
hash算法中,推薦用 SHA256 算法,算法使用的hash大小是256位。SHA1 hash算法是16位的,這種算法是可以接受的,但是不夠的。MD4和MD5不在推薦使用。
對稱加密算法中,推薦使用 AES ,也叫做Rijndael。這個算法的key長度支持128、192、256位。DES算法不在推薦使用。
未完待續。。。。。。。。。。。。。。。。。。。。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
