SSL-Verschlüsselung, SHA-1 und SHA-2

8

Ich versuche, SHA-2 Verschlüsselung statt SHA-1 .

Dafür weiß ich, dass die Anzahl der Bits zwischen diesen beiden Hash-Algorithmen unterschiedlich ist, und das verwirrt mich.

Wie kann dies erreicht werden und an welchen Stellen muss ich die erforderlichen Änderungen vornehmen?

Ich kann jede Open-Source-Bibliothek von Java, Python und jeder anderen wichtigen Programmiersprache verwenden.

    
Hellnar 13.05.2010, 13:28
quelle

5 Antworten

30

Erstens ist weder SHA-1 noch irgendetwas in Bezug auf SHA-2 ein "Verschlüsselungs" -Algorithmus. Sie sind Hash-Funktionen. In SSL werden Hash-Funktionen hauptsächlich für Integrität und nicht für Vertraulichkeit über die HMAC -Konstruktion verwendet. Eine Hash-Funktion nimmt eine Eingabe beliebiger Länge und erzeugt eine Ausgabe mit einer festen Länge, die eine Art "Digest" der Eingabedaten ist; Die Operation soll nicht umkehrbar sein.

Eine Hash-Funktion ist "public": Es gibt keine vertraulichen Daten, keinen Schlüssel; Jeder kann die Ausgabe der Hash-Funktion für jede Eingabe berechnen. Ein "Message Authentication Code" (MAC) ist eine Art "keyed hash": Ein geheimer Schlüssel (dh ein beliebiger Bund von Bits) wird ebenfalls in den Prozess eingegeben, so dass die Kenntnis des Schlüssels notwendig ist, um (neu) zu berechnen der MAC-Ausgang. Dies wird für Integritätsprüfungen verwendet (der Sender verwendet den Schlüssel zum Berechnen des MAC, der Empfänger verwendet den Schlüssel zum Neuberechnen des MACs; wenn der MAC übereinstimmt, dann sind die Daten korrekt, weil ein Angreifer, der den Schlüssel nicht kennt, nicht haben könnte änderte die Daten und berechnete eine gültige MAC auf den geänderten Daten).

HMAC ist eine Konstruktion, die eine Hash-Funktion (wie SHA-1) in einen MAC umwandelt. TLS (das ist der aktuelle Standardname von SSL) verwendet HMAC. Die Ausgabe von HMAC hat, wenn sie mit einer gegebenen Hash-Funktion h verwendet wird, dieselbe Größe wie die Ausgabe von h . Diese Ausgabe kann konventionell abgeschnitten werden: HMAC / SHA-1 erzeugt nominell eine 160-Bit-Ausgabe, aber in einigen Protokollen ist es üblich, nur die ersten 96 Bits zu behalten. Eine solche Kürzung tritt bei SSL nicht auf.

Der Standard FIPS 180-3 definiert fünf Hash-Funktionen namens SHA -1, SHA-224, SHA-256, SHA-384 und SHA-512 mit Ausgabelängen von jeweils 160, 224, 256, 384 und 512 Bit. Die Funktionen SHA-224, SHA-256, SHA-384 und SHA-512 sind umgangssprachlich als "SHA-2" bekannt, so dass "SHA-2" keine einzige Funktion ist, sondern eine Familie von vier Hash-Funktionen.

Die TLS Spezifikation definiert Cipher Suites . Eine Cipher-Suite ist eine Menge kryptografischer Algorithmen, auf die sich der Client und der Server während der Anfangsphase der Verbindung einigen (der "Handshake"). Unter den Algorithmen ist der MAC zu verwenden, um die Datenintegrität sicherzustellen. Einige der Standard-Cipher-Suites spezifizieren, dass der MAC "HMAC mit SHA-256" sein soll, d. H. Etwas, das eine der SHA-2-Funktionen verwendet.

Die Antwort auf Ihre Frage lautet also: "Konfigurieren Sie den Client und den Server nur so, dass sie eine der Verschlüsselungssammlungen mit HMAC / SHA-256 verwenden". Wenn Ihre SSL-Implementierung solche Cipher Suites nicht unterstützt, müssen Sie sie modifizieren, was ein gründliches Verständnis der Funktionsweise von SSL mit sich bringt. Lesen und Verstehen des kompletten RFC 5246 wird notwendig sein.

    
Thomas Pornin 13.05.2010, 15:12
quelle
1

Das Modul hashlib und MessageDigest unterstützt alle SHA-2-Algorithmen.

    
Ignacio Vazquez-Abrams 13.05.2010 13:34
quelle
1

Soweit ich sehen kann, ist alles, was Sie wissen müssen, um SHA256 in SSL zu implementieren, in RFC 5246 behandelt.

Aber ich vermute, dass Sie nicht annähernd genug Kryptographie verstehen, um das zu tun ... SHA 2 existiert nicht, Sie suchen nach SHA256, SHA384 oder SHA512, und es ist kein Verschlüsselungsalgorithmus, sondern ein kryptografisches Hash-Funktion.

Also, was versuchst du eigentlich zu tun?

    
Andrew McGregor 13.05.2010 13:59
quelle
1

Ich bin sicher, Sie werden mehr und mehr von dieser Frage sehen. GoDaddy verfügt nun über eine Option, wenn Sie eine Zertifikatssignierungsanforderung senden, um anzugeben, ob Sie SHA1 oder SHA2 verwenden werden.

Das war eine interessante Lektüre hier. Ich wusste im Grunde, was es war und wie ich meinen Server zwingen konnte, eine Chiffre zu benutzen, die das eine oder das andere benutzte. Ich bin mir nicht sicher, ob ich genau wusste, was der Unterschied war oder warum es besser wäre, das eine oder das andere zu verwenden.

    
wired420 08.09.2013 04:42
quelle
0

Probieren Sie dies, es funktioniert für Weblogic SQL Authenticator

%Vor%     
TariqueH 06.02.2015 09:28
quelle