Frage

Damit meine ich nicht für diese Debatte sein, aber ich versuche, die technischen Gründe zu verstehen, hinter, warum so viele Apps nutzen, SHA1 Hashing Geheimnissen, wenn SHA512 sicherer ist. Vielleicht ist es einfach für die Abwärtskompatibilität.

Neben der offensichtlichen größeren Größe (128 Zeichen vs 40) oder geringes Geschwindigkeitsunterschiede gibt es einen anderen Grund, warum Leute die ehemaligen benutzen?

Auch SHA-1 Ich glaube, wurde zum ersten Mal von einem Videorecorder Prozessor Jahren geknackt. Hat jemand 512 noch (vielleicht mit einem Laubbläser) geknackt, oder ist es immer noch sicher, ohne das Salzen zu benutzen?

War es hilfreich?

Lösung

Die meisten Anwendungen von SHA-1 sind für die Interoperabilität: wir verwenden SHA-1, wenn wir Protokolle implementieren, wo SHA-1 vorgeschrieben ist. Einfache Entwicklung kommt auch in Betracht:. SHA-1-Implementierungen in verschiedenen Sprachen und Programmierumgebung sind häufiger als SHA-512-Implementierungen

Auch selbst so dass die meisten Verwendungen von Hash-Funktionen haben Performance-Probleme nicht (zumindest kein Performance-Problem, wo die Hash-Funktion ist die Engpass), gibt es einige Architekturen, bei denen SHA-1 ist wesentlich effizienter als SHA-512. Betrachten wir ein einfaches Linksys-Router: es wird ein Mips-Derivat CPU mit 200 MHz getaktet. Eine solche Maschine neu programmiert werden kann, z.B. mit OpenWRT (ein kleines Linux für Embedded-Systeme). Als Router hat es schnelles Netzwerk (100 Mbit / s). Nehmen wir an, Sie Hash wollen einige Daten (zum Beispiel als Teil einer VPN-Software - ein Router sieht aus wie ein guter Kandidat für den Betrieb eines VPN). Mit SHA-1, werden Sie ca. 6 MB / s erhalten, die volle CPU. Das ist schon recht niedriger als die Netzwerkbandbreite. SHA-512 werden Sie nicht mehr als 1,5 MB geben / s auf der gleichen Maschine. Auf ein solches System ist der Unterschied in der Leistung nicht zu vernachlässigen. Auch, wenn ich SHA-1 auf meinem Linksys-Router für einige Kommunikationsprotokolle, dann ist die Maschine am anderen Ende der Verbindung wird auch verwenden SHA-1.

Die gute Nachricht ist, dass es ein laufender Wettbewerb ist eine neue Standard-Hash-Funktion, den Codename SHA-3 . Einige der konkurrierenden Kandidaten bieten ähnliche Performance wie SHA-1 oder sogar etwas besser, während immer noch einen 512-Bit-Ausgang und seine (vermutlich) so sicher wie SHA-512 erhalten wird.

Andere Tipps

Sowohl SHA1 und SHA512 Hash-Funktionen sind. Wenn Sie sie als verschlüsselten Hash verwenden, dann vielleicht ist, dass gute Gründe für die Verwendung SHA512; Es gibt jedoch Anwendungen, die diese Funktion einfach verwenden, um Objekte zu identifizieren. Zum Beispiel verwendet Git SHA1 zwischen Objekten zu billig zu unterscheiden. In diesem Fall, da die Möglichkeit einer Kollision zwischen zwei Dokumenten mit SHA1 unglaublich klein ist, ist es wirklich keine Rechtfertigung für den zusätzlichen Platzbedarf von SHA512 wenn SHA1 mehr als geeignet für die Aufgabe ist.

Im Hinblick auf die Kryptographie Hashes und die Wahl eines Salzes verwendet wird oder nicht, können Sie bei der Lektüre Do not Hash Secrets . Selbst mit SHA512, ein Salz ist eine gute Idee (und billig ist, es zu tun, auch, also warum nicht?), Weil Sie die Top-Passwörter erraten können und sehen, ob sie den gleichen Hash, aber der Autor weist darauf hin, dass HMAC ein sicherer Mechanismus ist. Auf jeden Fall werden Sie die Kosten im Zusammenhang mit der zusätzlichen Zeit + Raum und die Kosten im Zusammenhang mit der Möglichkeit einer Verletzung bestimmen müssen, und bestimmen, wie paranoid Sie sein möchten. Wie kürzlich von Microsoft entdeckt wurde, ständig wechselnde Passwörter sind eine Verschwendung von Geld und nicht nicht auszahlen, also, während Paranoia in der Regel gut, wenn es um Sicherheit geht, muss man wirklich die Mathematik tun, um zu bestimmen, ob es Sinn macht .... tun die Gewinne in Sicherheit Zeit und Lagerung überwiegen Kosten?

Wenn Sie etwas brauchen schnell gehasht werden, oder nur einen 160-Bit-Hash benötigen, würden Sie verwenden SHA-1.

Für Datenbankeinträge sie schnell zu vergleichen, können Sie 100 Felder nehmen und einen SHA-1-Hash aus ihnen machen, wodurch man 160 Bit. Diese 160 Bits werden 10 ^ 50ish Werte.

Wenn ich unwahrscheinlich bin immer mehr haben, als ein winziger Bruchteil von 10 ^ 50-Werten, es ist schneller, nur Hash, was ich mit dem einfacheren und schnelleren Algorithmus habe.

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