2009-08-04 2 views
1

Wie kann ich C# in einer FIPS-kompatiblen WinXP SP2-Box verwenden, um den Inhalt einer bestimmten Datei eindeutig zu hashen? Ich bin nicht besorgt über die Leistung (noch?).FIPS-kompatibler HashAlgorithm auf WinXP?

Hoffentlich kann jemand auf eine Ausnahme von der "Regel" hinweisen, aber es scheint, dass die "* ServiceProvider" -Klassen FIPS-kompatibel und auf WinXP nicht verfügbar sind, während die "* Managed" -Klassen auf WinXP und nicht FIPS verfügbar sind -konform.

Und MD5 ist out, weil es nicht zuverlässig einzigartig ist (ja, selbst diese geringe Wahrscheinlichkeit ist inakzeptabel für mein Projekt).

+0

Kein Hash-Algorithmus ist zuverlässig eindeutig. Nach dem [Taube-Prinzip] (http://en.wikipedia.org/wiki/Pigeonhole_Principle) können Sie nicht alle möglichen Dateien beliebiger Länge mit einem Hash fester Länge eindeutig darstellen. –

+1

Obwohl dies technisch wahr ist, ist das heutzutage in der Computertechnik nicht sehr nützlich. Die Idee ist, dass Sie bereit sind, das Risiko einzugehen, dass es angesichts der Wahrscheinlichkeiten des Algorithmus nicht einzigartig ist. Es hat sich gezeigt, dass MD5 das Risiko nicht wert ist, aber SHA256 und SHA512 sind es wert. SHA1 fällt irgendwo dazwischen und ist gut genug für viele Menschen, obwohl ich zögern würde, es selbst zu benutzen. Ich würde niemals MD5 benutzen. –

Antwort

2

Wenn alles, was Sie brauchen, ist ein Hashing-Anbieter ist, der keine Fehler auslöst, wenn die Auf der Windows-Maschine ist die FIPS-konforme Richtlinieneinstellung in der Registrierung aktiviert. Anschließend können Sie SHA1CryptoServiceProvider verwenden, der FIPS-kompatibel ist und nur .Net 2.0 und XP SP2 erfordert.

Aber - wenn Sie eine echte FIPS-konforme Implementierung aus Sicherheits- und Richtliniengründen benötigen, dann lautet die kurze Antwort entweder, dass die Clients auf Win XP SP3 (oder neueres Betriebssystem) aktualisiert werden oder mit einem dritten Partei FIPS validierte Kryptografiedienstanbieter (CSP).

Während Win XP SP2 eine FIPS-kompatible Implementierung von SHA1 (SHACryptoServiceProvider) unterstützt, die im FIPS-kompatiblen Modus (Registrierungseinstellung) funktioniert, sollte SHA1 nicht für neue Implementierungen nach 2010 verwendet werden und ist möglicherweise nicht mehr FIPS-kompatibel alle, abhängig von der Verwendung (dh für Zufallszahlenerzeugung vs. Hashing).

Wenn Sie mindestens XP SP3 erhalten, können Sie SHA256CryptoServiceProvider oder SHA512CryptoServiceProvider verwenden, die beide FIPS-kompatibel sind.

Verwandte Themen