AesCtrParams
Das AesCtrParams-Wörterbuch der Web Crypto API repräsentiert das Objekt, das als algorithm-Parameter in SubtleCrypto.encrypt(), SubtleCrypto.decrypt(), SubtleCrypto.wrapKey() oder SubtleCrypto.unwrapKey() übergeben werden sollte, wenn der AES-CTR-Algorithmus verwendet wird.
AES ist ein Blockchiffre, was bedeutet, dass es die Nachricht in Blöcke aufteilt und diese Block für Block verschlüsselt. Im CTR-Modus wird jedes Mal, wenn ein Block der Nachricht verschlüsselt wird, ein zusätzlicher Block von Daten eingemischt. Dieser zusätzliche Block wird "Counter-Block" genannt.
Ein gegebener Counter-Block-Wert darf nicht mehr als einmal mit demselben Schlüssel verwendet werden:
- Bei einer Nachricht, die n Blöcke lang ist, muss für jeden Block ein anderer Counter-Block verwendet werden.
- Wenn derselbe Schlüssel zum Verschlüsseln mehrerer Nachrichten verwendet wird, muss für alle Blöcke über alle Nachrichten hinweg ein unterschiedlicher Counter-Block verwendet werden.
Typischerweise wird dies erreicht, indem der anfängliche Counter-Block-Wert in zwei zusammengefügte Teile aufgeteilt wird:
- Eine Nonce (das heißt, eine Zahl, die nur einmal verwendet werden darf). Der Nonce-Teil des Blocks bleibt für jeden Block in der Nachricht gleich. Jedes Mal, wenn eine neue Nachricht verschlüsselt werden soll, wird eine neue Nonce gewählt. Nonces müssen nicht geheim sein, aber sie dürfen nicht mit demselben Schlüssel wiederverwendet werden.
- Ein Zähler. Dieser Teil des Blocks wird jedes Mal inkrementiert, wenn ein Block verschlüsselt wird.
Im Wesentlichen sollte die Nonce sicherstellen, dass Counter-Blöcke nicht von einer Nachricht zur nächsten wiederverwendet werden, während der Zähler sicherstellen sollte, dass Counter-Blöcke nicht innerhalb einer einzelnen Nachricht wiederverwendet werden.
Hinweis: Siehe Anhang B des NIST SP800-38A-Standards für weitere Informationen.
Instanz-Eigenschaften
name-
Ein String. Dieser sollte auf
AES-CTRgesetzt werden. counter-
Ein
ArrayBuffer, einTypedArray, oder eineDataView— Der Anfangswert des Counter-Blocks. Dieser muss 16 Bytes lang sein (die AES-Blockgröße). Die rechtsmostlengthBits dieses Blocks werden für den Zähler verwendet, und der Rest wird für die Nonce verwendet. Zum Beispiel, wennlengthauf 64 gesetzt ist, dann ist die erste Hälfte voncounterdie Nonce und die zweite Hälfte wird für den Zähler verwendet. length-
Eine
Number— die Anzahl der Bits im Counter-Block, die für den tatsächlichen Zähler verwendet werden. Der Zähler muss groß genug sein, damit er nicht überläuft: Wenn die NachrichtnBlöcke lang ist und der ZählermBits lang ist, muss folgendes gelten:n <= 2^m. Der NIST SP800-38A Standard, der CTR definiert, empfiehlt, dass der Zähler die Hälfte des Counter-Blocks einnehmen sollte (siehe Anhang B.2), so dass er für AES 64 wäre.
Beispiele
Siehe die Beispiele für SubtleCrypto.encrypt() und SubtleCrypto.decrypt().
Spezifikationen
| Specification |
|---|
| Web Cryptography Level 2> # dfn-AesCtrParams> |
Browser-Kompatibilität
Browser, die den "AES-CTR"-Algorithmus für die Methoden SubtleCrypto.encrypt(), SubtleCrypto.decrypt(), SubtleCrypto.wrapKey(), oder SubtleCrypto.unwrapKey() unterstützen, werden diesen Typ unterstützen.
Siehe auch
- Der CTR-Modus ist in Abschnitt 6.5 des NIST SP800-38A-Standards definiert.
SubtleCrypto.encrypt().SubtleCrypto.decrypt().SubtleCrypto.wrapKey().SubtleCrypto.unwrapKey().