星期五, 4月 18, 2014

[.NET]FIPS on server

因為微軟在2014/04/08後將中止對於XP系統的支援,
所以最近的工作內容(其實之前就是了)比較多偏於系統轉換的問題。

客戶轉User的工作系統,
能夠的話當然連Server一起升級是最好的,
然後我就被整死了 (爆

因為英文程度沒有很好,其他關於FIPS的中文介紹只有在MSDN上多,
所以,以下內容偏個人紀錄,理解有錯的話還請指出._.


關於FIPS: 
詳細介紹FIPS的內容,可以請參考這份文件
簡單來說,就是美國跟加拿大合作開開的聯邦資訊處理標準。
然後這個標準針對的則是在伺服器上的加密演算法(encryption, hashing, and signing)作出的標準。

從Windows Server 2003開始就已經能夠在系統上作此設定。
當然到現在新的Server基本都是2008R2起跳就更不用說可以使用此設定。

Server在安裝好系統時,這個設定基本的預設是停用的。
如果要啟用,須修改下列路徑的機碼設置
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\fipsalgorithmpolicy  


這項實作不是屬於 Windows 平台 FIPS 驗證的密碼編譯演算法。
如果遇到這樣的錯誤,就代表環境的FIPS設定是開啟的,
且程式使用的加解密方式並不在FIPS認定的範圍內。

絕對要修改的加解密方式 : AES中的Rijndael這個演算法。

工作上遇到的問題就是加解密透過Enterprise Library2.0採用Rijndael演算法,
雖然Rijndael演算法是比TripleDES安全的,但是FIPS就是沒認定他,
最後採了折衷的方案,還是換用EL2.0TripleDES處理Orz

因為EL2.0的版本並沒有提供厲害一點AES的加解密 (爆

當然上面是因為客戶程式版本沒有辦法升級的關係,
所以只能用TripleDES當最後的解法。

如果你的程式.net framwork 3.5版本以上的話,
可以使用

這個Class來作加解密的處理,這樣是健康又安全的做法,
且不用擔心FIPS到底有沒有開啟 (爆

Refference :

沒有留言: