2008-12-16 90 views
7

Występuje problem z aplikacją ASP.NET 2.0. Nasi użytkownicy sieci po prostu podnieśli nasze bezpieczeństwo i teraz dostaję komunikat o błędzie podczas próby uzyskania dostępu do aplikacji:ASP.NET 2.0 Rijndael Zarządzany algorytm szyfrowania kontra FIPS

"Implementacja ta nie jest częścią zatwierdzonych algorytmów kryptograficznych FIPS platformy Windows."

Zrobiłem trochę badań, a to brzmi jak ASP.NET wykorzystuje algorytm szyfrowania AES RijndaelManaged do zaszyfrowania ViewState stron ... i RijndaelManaged znajduje się na liście algorytmów, które nie są zgodne z FIPS . Z pewnością nie wzywamy jednoznacznie żadnego algorytmu szyfrowania... a tym bardziej niczego na liście niezgodnej.

Ta sprawa z ViewState ma dla mnie sens, jak sądzę. Rzeczą, której nie mogę się jednak pozbyć, jest to, co z tym zrobić. Znalazłem KB article, który sugeruje użycie ustawienia web.config do określenia innego algorytmu ... ale albo to się nie przylgnęło, albo ten algorytm nie jest do tego przeznaczony.

Więc:

1) Czy RijndaelManaged/ViewState rzeczą faktycznie problem? Czy mogę szczekać złe drzewo?

2) Jak określić, który algorytm należy użyć zamiast RijndaelManaged? Mam listę algorytmów, które są i nie są zgodne; Po prostu nie wiem, gdzie podłączyć tę informację.

Dzięki!

Richard

Odpowiedz

2

Odnośnie swojej 2nd pytanie: Może to MSDN Article pomaga.

Zgodnie z docs można skonfigurować algorytm szyfrowania tak:

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

walidacji, można zastosować jedną z następujących czynności: [SHA1 | MD5 | 3DES | AES]

Do odszyfrowania można użyć jednego z następujących: [Auto | DES | 3DES | AES]

Aby być zgodnym z FIPS, możesz użyć 3DES (chociaż AFAIK teoretycznie jest mniej bezpieczny).

0

Próbowaliśmy klucza maszynowego, który sugerujesz. Pomaga w niektórych aplikacjach internetowych (w połączeniu z), które są świetne, ale nie są z nich wcale frustrujące.

Brakuje mi czegoś, ale zmieniłem się, gdybym mógł powiedzieć co.

0

będzie trzeba także zrobić to w oknie

Enforcing FIPS Certified Cryptography

+0

Choć niezbyt istotne, mało godne -1, kimkolwiek jesteś - tak zrównoważenie przez upvoting (jeśli -1er wraca i wyjaśnia, cieszę się, że usunąłem mój program). (Link wyjaśnia, w jaki sposób zainteresowani użytkownicy sieci najpierw zmieniliby tę zasadę) –

5

dokładnie sprawdzić, że nie masz <compilation debug="true" /> w swoim web.config. Gdy kompilacja debugowania jest ustawiona, system .NET używa skrótu MD5 do wewnętrznego księgowania. MD5 nie jest zgodny z FIPS, więc pojawia się ten błąd.

0

Niektóre witryny, takie jak witryny SharePoint, mają klucz maszynowy SHA1 już w konfiguracji sieci, więc sprawdź, czy istnieje już algorytm, jeśli istnieje, usuń go i dodaj powyższe.

2

Źródło: http://blogs.msdn.com/b/shawnfa/archive/2008/03/14/disabling-the-fips-algorithm-check.aspx

Można dodać następujące do pliku web.config lub maszynowego config więc aplikacje ASP.NET zostanie zatrzymać z powodu braku kontroli zgodności FIPS.

<configuration> 

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

Twój machine.config można znaleźć tutaj: \ Microsoft.NET \ Framework \\ config \ machine.config

Jeśli zmienisz Machine.config iisreset może być wymagane, aby ustawienia zaczęły obowiązywać. Uwaga: zmiana pliku maching.config wpłynie na wszystkie aplikacje .NET w systemie.


Aby otrzymać wniosek, aby być FIPS zgodnych bez konieczności wyłączania FIPS, można spróbować wykonać następujące czynności:

1) Skonfiguruj swój klucz maszynowy użyć 3DES do deszyfrowania i SHA1 walidacji.

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

UWAGA: jeśli używasz środowiska rolnicze internetowej, można użyć IIS GUI i przejdź do sekcji konfiguracji urządzenia do generowania kluczy zestaw kluczy i używać tych samych klawiszy całej farmie internetowej.

2) Upewnij się, że debugowanie kompilacji = "false", a wszystkie dyrektywy stron mają debug = "false". Ustawienie opcji debugowania na wartość true spowoduje również rozpoczęcie sprawdzania zgodności FIP.

0

Problemy z kluczem konfiguracyjnym komputera i kompilacją = "debugowanie" są najczęstszymi przyczynami tego problemu z tego, co widziałem. O ile wiem, w .NET 2.0, algorytm 3DES do sprawdzania/szyfrowania stanu jest tylko JEDNĄ, która jest zgodna z FIPS. Zatem opcje SHA1, MD5 i AES nie będą tam działać.

Ważne jest również, aby zdać sobie sprawę, że jeśli odniesienie do dowolnego algorytmu zgodnego non-FIPS jest w kodzie, nigdy nawet jeśli rzeczywiście używany/osiągalny spowoduje błąd zgodności FIPS. Na przykład samo zadeklarowanie zmiennej MD5CryptoServiceProvider bez wywołania jej spowoduje błąd. Obejmuje to inne odwołania do zespołów .NET, więc należy się upewnić, że żadne referencyjne biblioteki dll nie wykorzystują również algorytmów niezgodnych z fipsami.

Oto przydatny stroną, która zawiera listę wszystkich FIPS i algorytmów FIPS w non-NET http://blog.aggregatedintelligence.com/2007/10/fips-validated-cryptographic-algorithms.html