2008-12-16 74 views
7

我遇到了ASP.NET 2.0應用程序的問題。我們的網絡人只是調升我們的安全,現在我得到了floowing錯誤,每當我嘗試訪問該應用程序:「此實現不驗證的加密算法的Windows平臺FIPS的一部分」ASP.NET 2.0 RijndaelManaged加密算法與FIPS

我已經做了一點研究,聽起來像ASP.NET使用RijndaelManaged AES加密算法來加密ViewState的頁面......而RijndaelManaged是在不符合FIPS的算法列表上。當然,我們當然不會明確地調用任何加密算法......更不用說不符合規範的列表上的任何東西。

這個ViewState業務對我來說很合理,我想。然而,我無法解決的事情是對此做些什麼。我發現一個KB article,建議使用web.config設置來指定一個不同的算法...但要麼沒有堅持,要麼那個算法還沒有達到鼻菸。

所以:

1)是RijndaelManaged的/ ViewState的東西其實這個問題?還是我吠叫錯了樹?

2)如何指定使用什麼算法代替RijndaelManaged?我已經列出了一些不兼容的算法列表,我只是不知道在哪裏插入該信息。

謝謝!

理查德

回答

2

關於你提到的第二個問題:也許這MSDN Article幫助。

根據該文件,您可以配置加密算法是這樣的:

<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>

進行驗證,可以使用下列之一: [SHA1 | MD5 | 3DES | AES]

對於解密,您可以使用以下之一: [Auto | DES | 3DES | AES]

因此,爲了符合FIPS標準,您可以使用3DES(儘管AFAIK理論上不太安全)。

0

我們已經嘗試過您建議的machineKey。這有助於一些網絡應用程序(配對時),這很好,但不是全部是,這是令人沮喪的。

我錯過了一些東西,但是如果我能說出什麼就會發生危險。

0

你也需要做這個包裝盒上的

Enforcing FIPS Certified Cryptography

+0

雖然不是非常相關的,不值得一-1,不管你是誰 - 因此upvoting平衡了(如果-1er回來並解釋說,我很高興刪除我的upvote)。 (該鏈接解釋了網絡人員如何首先轉換此政策) – 2009-12-04 13:50:44

5

仔細檢查你沒有在你的web.config <compilation debug="true" />。當設置調試編譯時,.NET會使用MD5散列進行某些內部簿記。 MD5不符合FIPS,所以你會得到這個錯誤。

0

某些網站(如SharePoint站點)在Web配置中已經有SHA1計算機密鑰,因此請檢查是否存在algorythm,如果存在刪除並添加以上內容。

2

來源: http://blogs.msdn.com/b/shawnfa/archive/2008/03/14/disabling-the-fips-algorithm-check.aspx

您可以添加以下到你的web.config或機器的配置讓你的ASP.Net應用程序將停止失敗是由於FIPS合規性檢查。

<configuration> 

    <runtime> 
     <enforceFIPSPolicy enabled="false"/> 
    </runtime> 

你的machine.config可以在這裏找到: \ Microsoft.NET \框架\\ CONFIG \ machine.config中

如果你改變你的machine.config,一個IISRESET可能這些設置才能生效。注意:更改maching.config將影響系統上的所有.NET應用程序。


爲了讓您的應用程序是符合FIPS而不必禁用FIPS,你可以嘗試以下方法:

1)配置機器鍵使用3DES解密和SHA1進行驗證。

<configuration> 
<system.web> 
    <authentication mode="Windows" /> 
    <machineKey decryption="3DES" decryptionKey="AutoGenerate,IsolateApps" validation="SHA1" validationKey="AutoGenerate,IsolateApps" /> 
</system.web> 
</configuration> 

注:如果您使用的是網絡場環境中,您可以使用IIS GUI,並轉到計算機密鑰配置部分,以產生一組密鑰,並在您的Web場使用相同的密鑰。

2)確保您的編譯debug =「false」,並且所有頁面指令都具有debug =「false」。將debug設置爲true也會啓動FIP合規性檢查。

0

viewstate機器的關鍵和編譯=「調試」配置問題是從我看到的這個問題最常見的原因。據我所知,在.NET 2.0中,用於視圖狀態驗證/加密的3DES算法是唯一符合FIPS的算法。所以SHA1,MD5和AES選項將不會在那裏工作。

認識到如果在代碼中引用任何不符合FIPS的算法,即使從未實際使用/可訪問也會導致FIPS合規性錯誤,這一點也很重要。例如,僅僅聲明一個MD5CryptoServiceProvider變量而不實例化它將導致錯誤。這包括其他引用的.NET程序集,因此請確保沒有引用的dll可能也使用不符合fips的算法。

這裏有一個方便的網站,列出了.NET所有的FIPS和非FIPS算法 http://blog.aggregatedintelligence.com/2007/10/fips-validated-cryptographic-algorithms.html