Frage

Wenn im Jahr 2009 eine durchschnittliche neue App zu schreiben, was ist die vernünftigste verdauen Funktion zu nutzen, in Bezug auf Sicherheit und Leistung? (Und wie kann ich dies in der Zukunft bestimmen, da die Bedingungen ändern?)

Wenn ähnlich < a href = "https://stackoverflow.com/questions/184089/what-is-the-strongest-hashing-algorithm-commonly-available-today"> Fragen wurden gefragt zuvor Antworten werden eingeschlossen SHA1, SHA2, SHA-256, SHA-512, MD5, bcrypt und Blowfish.

Ich weiß, dass zu einem großen Teil, einer diese könnte funktionieren, wenn intelligent genutzt, aber ich mag lieber nicht würfeln und eine zufällig auswählen. Danke.

War es hilfreich?

Lösung

Ich würde folgen NIST / FIPS-Richtlinien :

  

15. März 2006: Die SHA-2-Familie von   Hash-Funktionen (das heißt, SHA-224,   SHA-256, SHA-384 und SHA-512) sein können   von Bundesagenturen für alle verwendeten   Anwendungen mit sicheren Hash   Algorithmen. Bundesbehörden sollten   aufhören mit SHA-1 für digitale   Signaturen, digitale Zeitstempel und   andere Anwendungen, die erfordern   Kollision Widerstand, sobald   praktisch, und muss die SHA-2 verwenden,   Familie von Hash-Funktionen für diese   Anträge, die nach 2010 nach 2010   Bundesbehörden können SHA-1 verwenden nur   für die folgenden Anwendungen:   Hash-basierte Nachrichtenauthentifizierung   Codes (HMACs); Schlüsselableitungs-   Funktionen (KDFs); und Zufallszahl   Generatoren (RNGs). Unabhängig davon Gebrauch,   NIST fördert Anwendung und   Protokoll-Designer die SHA-2 zu verwenden,   Familie von Hash-Funktionen für alle neuen   Anwendungen und Protokolle.

Andere Tipps

Sie sagen, „verdauen Funktion“; vermutlich bedeutet, dass Sie es verwenden möchten Verdaue von „long“ -Nachrichten zu berechnen (und nicht nur „kurz“ „Nachrichten“ wie Passwörter Hashing). Das bedeutet bcrypt und ähnliche Entscheidungen sind aus; langsam sein Brute-Force-Angriffe auf Passwort-Datenbanken hemmen sie entworfen. MD5 ist komplett gebrochen, und SHA-0 und SHA-1 sind geschwächt zu gute Wahl zu sein. Blowfish ist eine Stromchiffre (auch wenn man es in einem Modus ausführen kann, die Digests erzeugt), so ist es nicht so eine gute Wahl, entweder.

Das lässt mehrere Familien von Hash-Funktionen, einschließlich der SHA-2, HAVAL, RIPEMD, WHIRLPOOL und andere. Von diesen ist der SHA-2-Familie die am gründlichsten cryptanalyzed, und so wäre es meine Empfehlung für den allgemeinen Gebrauch sein. Ich würde entweder SHA2-256 oder SHA2-512 für typische Anwendungen, da diese beiden Größen sind die häufigsten und wahrscheinlich unterstützt wird in Zukunft von SHA-3.

empfehlen

Es hängt wirklich davon ab, was Sie brauchen es für.

Wenn Sie in der Notwendigkeit tatsächlicher Sicherheit sind, wo die Fähigkeit, eine Kollision leicht zu finden wäre Ihr System kompromittieren, würde ich so etwas wie SHA-256 oder SHA-512 verwenden, wie sie von verschiedenen Agenturen stark empfohlen kommen.

Wenn Sie brauchen etwas, das schnell ist, und kann verwendet werden, um etwas eindeutig zu identifizieren, aber es gibt keine tatsächlichen Sicherheitsanforderungen (dh ein Angreifer nicht in der Lage sein, etwas böse zu tun, wenn sie eine Kollision gefunden) ich würde dann so etwas wie MD5 verwenden.

MD4, MD5 und SHA-1 wurden im Sinne der Suche nach einer Kollision über eine Geburtstag Angriffsmethode, gezeigt werden, leichter zerbrechlich, als erwartet. RIPEMD-160 ist gut angesehen, aber nur 160 Bit ein Geburtstagsangriff benötigt nur 2 ^ 80 Operationen, so dass es nicht ewig dauern wird. Whirlpool verfügt über hervorragende Eigenschaften und scheint die stärksten der Partie, wenn es nicht die gleiche Unterstützung wie SHA-256 oder SHA-512 hat funktioniert - in dem Sinne, dass, wenn es ein Problem mit SHA-256 oder SHA-512 Sie‘ d eher darüber über geeignete Kanäle erfahren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top