2010-04-14 7 views
31

Ich meine nicht, dass dies eine Debatte ist, aber ich versuche zu verstehen, warum so viele Apps SHA1 verwenden, um Geheimnisse zu hashing, wenn SHA512 sicherer ist. Vielleicht ist es einfach aus Gründen der Rückwärtskompatibilität.Warum SHA1 zum Hashing von Geheimnissen verwenden, wenn SHA-512 sicherer ist?

Neben der offensichtlichen größeren Größe (128 Zeichen vs 40), oder geringe Geschwindigkeitsunterschiede, gibt es noch einen anderen Grund, warum Leute die ehemalige verwenden?

Auch SHA-1 glaube ich wurde vor Jahren von einem VCR-Prozessor zuerst geknackt. Hat jemand schon 512 geknackt (vielleicht mit einem Laubbläser) oder ist es immer noch sicher ohne zu salzen?

+2

SHA-1 ist noch nicht geknackt. – Joe

+12

nicht alle Hash-Anwendungen sind sicherheitsrelevant – Javier

+0

@Joe bist du sicher? Ich habe gehört, dass alle Arten von Verschlüsselung in letzter Zeit gehackt wurden, mit all dem Quantum Computing, das innerhalb von Sekunden viele Algorithmen knacken kann. – Earlz

Antwort

41

Die meisten Anwendungen von SHA-1 sind für die Interoperabilität: Wir verwenden SHA-1, wenn wir Protokolle implementieren, für die SHA-1 vorgeschrieben ist. Die Einfachheit der Entwicklung wird ebenfalls berücksichtigt: SHA-1-Implementierungen in verschiedenen Sprachen und Programmierumgebungen sind häufiger als SHA-512-Implementierungen.

Auch wenn die meisten Nutzungen von Hash-Funktionen keine Leistungsprobleme haben (zumindest kein Leistungsproblem, bei dem die Hash-Funktion der Flaschenhals ist), gibt es einige Architekturen, in denen SHA-1 wesentlich effizienter ist als SHA-512 . Betrachten Sie einen grundlegenden Linksys-Router: Er verwendet eine Mips-Derivative-CPU, die mit 200 MHz getaktet ist. Eine solche Maschine kann neu programmiert werden, z.B. mit OpenWRT (ein kleines Linux für Embedded-Systeme). Als Router hat es ein schnelles Netzwerk (100Mbit/s). Angenommen, Sie möchten einige Daten hashen (z. B. als Teil einer VPN-Software - ein Router sieht wie ein guter Kandidat zum Ausführen eines VPN aus). Mit SHA-1 erhalten Sie ca. 6 MB/s bei voller CPU-Auslastung. Das ist schon ziemlich niedriger als die Netzwerkbandbreite. SHA-512 liefert Ihnen nicht mehr als 1,5 MB/s auf demselben Rechner. Bei einem solchen System ist der Leistungsunterschied nicht vernachlässigbar. Wenn ich SHA-1 auf meinem Linksys-Router für ein Kommunikationsprotokoll verwende, muss der Rechner am anderen Ende der Verbindung ebenfalls SHA-1 verwenden.

Die gute Nachricht ist, dass es eine fortwährende Konkurrenz gibt, eine neue Standard-Hash-Funktion mit dem Codenamen SHA-3 auszuwählen. Einige der konkurrierenden Kandidaten bieten eine Leistung ähnlich der von SHA-1 oder sogar etwas besser, während sie immer noch eine 512-Bit-Ausgabe ergeben und (wahrscheinlich) so sicher sind wie SHA-512.

+0

@Thomas danke für die tolle Info. Ich verwende SHA512 einfach zum Passwortschutz in einem privaten Computer in einem Colo, weil ich keine gesalzenen Daten haben will (aus irgendeinem Grund), aber ich möchte, dass es (zumindest für eine Weile) rissfest ist. Sicherheit ist ein Problem, aber es besteht kein Risiko, dass Kreditkartennummern verloren gehen, usw. – orokusaki

+0

@Thomas Wow, war von Ihrer Antwort beeindruckt, also habe ich Ihre Website und Ihren Lebenslauf überprüft. PhD in diesem Zeug eh. Meinst du, mein Passwort ist eine schlechte Idee? – orokusaki

+0

@orokusaki: Für den Kennwortschutz einer privaten Maschine in einem colo ist Kryptographie übertrieben. _Wenn die potenziellen Angreifer wirklich motiviert sind, ist der physische Zugriff auf das System alles was sie benötigen (z. B. um ein Keylogger-Gerät zu installieren, wenn Sie Ihr Passwort eingeben). Daher können Sie alles verwenden, was Sie "sicher" fühlen lässt. –

23

Sowohl SHA1 als auch SHA512 sind Hash-Funktionen. Wenn Sie sie als kryptografischen Hash verwenden, ist das vielleicht ein guter Grund, SHA512 zu verwenden. Es gibt jedoch Anwendungen, die diese Funktion verwenden, um Objekte zu identifizieren. Zum Beispiel verwendet Git SHA1, um billig zwischen Objekten zu unterscheiden. In diesem Fall, weil die Möglichkeit einer Kollision zwischen zwei Dokumenten mit SHA1 unglaublich klein ist, gibt es keine Rechtfertigung für den zusätzlichen Platzbedarf von SHA512, wenn SHA1 für die Aufgabe mehr als geeignet ist.

In Bezug auf kryptografische Hashes und die Wahl, ein Salz oder nicht zu verwenden, könnten Sie interessiert sein zu lesen Don't Hash Secrets. Selbst mit SHA512 ist die Verwendung eines Salzes eine gute Idee (und es ist auch billig, also warum nicht?), Weil Sie die obersten Passwörter erraten und sehen können, ob sie den gleichen Hash haben, aber der Autor weist darauf hin ist ein sicherer Mechanismus. In jedem Fall müssen Sie die Kosten für die zusätzliche Zeit + Speicherplatz und die Kosten, die mit der Möglichkeit eines Verstoßes verbunden sind, ermitteln und bestimmen, wie paranoid Sie sein möchten. Wie kürzlich von Microsoft entdeckt, constantly changing passwords is a waste of money and doesn't pay off, so während Paranoia ist in der Regel gut, wenn es um die Sicherheit geht, müssen Sie wirklich die Mathematik zu bestimmen, ob es Sinn macht .... übertrifft die Gewinne in Sicherheit Zeit und Speicherkosten?

+0

@Michael Ich meinte wirklich: Warum benutzen Leute immer noch SHA1 als Sicherheitsgerät (nicht für Prüfsummenzwecke oder andere). – orokusaki

+5

@orokusaki; Vielleicht möchten Sie die Frage aktualisieren, um das zu sagen. :-) –

+0

@Dean J Ich dachte, der 'sicherere' Teil im Titel und in der Frage würde dafür sorgen. Was könnte ich sonst noch in Bezug auf 'sha1' und Sicherheit sagen? – orokusaki

3

Wenn Sie schnell Hashes benötigen oder nur einen 160-Bit-Hash benötigen, verwenden Sie SHA-1.

Um Datenbankeinträge schnell miteinander zu vergleichen, könnten Sie 100 Felder nehmen und daraus einen SHA-1-Hash erstellen, der 160 Bit ergibt. Diese 160 Bits sind 10^50-Werte.

Wenn ich wahrscheinlich nie mehr als einen winzigen Bruchteil der 10^50-Werte haben werde, ist es schneller, nur Hashes, was ich mit dem einfacheren und schnelleren Algorithmus habe.