ich bin ein wenig verwirrt, wie AES und HMAC (basierend auf SHA-256) in einer richtigen Art und Weise zu verwenden, wenn die verschlüsselte Nachricht vom Server zum Client zu übertragen, oder umgekehrtverwirrt, wie AES und HMAC verwenden
korrigieren Sie mich bitte, wenn die folgende Methode ist falsch:
- die sicheren Schlüssel aus der Schlüsseldatei (zum Beispiel: schlagen wir die AES-256 zu verwenden, und wir haben bereits eine gültige 256-Bit-Schlüssellängen haben)
- generieren random IV für AES-256, um sicherzustellen, dass derselbe Klartext eine andere Verschlüsselungsausgabe hat.
- Berechnen Sie HMAC-SHA-256 mit dem Nur-Text- und Sicherheitsschlüssel. (Die erste Frage: Soll IV für die HMAC-Berechnung verwendet werden? Zum Beispiel an den sicheren Schlüssel anhängen?)
- Verschlüsseln Sie den Nur-Text mit AES-256.
- Compose Nachricht für die Kunden, wie folgend: HMAC + IV + ENCRYPTED_MESSAGE
Die größte Frage ist: ist es möglich, irgendwie nicht IV Client zu senden, sondern es auf die gleiche Weise erzeugen und noch Krypto sicher sein? Oder ist es in Ordnung, die IV auch zu senden?
Ich habe am Ende mit zufälligen IV-Generation, weil es erforderlich ist, dass der gleiche Klartext in verschiedenen Verschlüsselungsergebnissen landen wird.
Und welchen Betriebsmodus würden Sie empfehlen? CBC hat seinen Overhead und wir sollten uns mit Padding beschäftigen. Ich denke meine Wahl ic OFB/CFB. – Valentin
Aus Sicherheitsgründen sind sie alle gleich (außer EZB, verwenden Sie das nicht). Stellen Sie nur sicher, dass Sie eine frische IV verwenden, wenn das System eine IV einnimmt. Wenn Sie sich etwas Mühe sparen wollen, gibt es authentifizierte Modi, die kein hmac benötigen. GCM ist das Beste von ihnen. Welche Sprache verwendest du? – imichaelmiers
Ich würde nicht empfehlen, die SHA1-Summe des ersten Schlüssels als zweiten Schlüssel zu nehmen. Stattdessen können Sie zwei verschiedene Schlüssel mit unterschiedlichen Parametern und PBKDF2 aus einer Passphrase ableiten.Das Beste ist, zwei unabhängige Schlüssel zu haben und sich nicht auf eine (wahrscheinlich) schwache Passphrase zu verlassen. –