AesCtrParams
Словарь AesCtrParams API Web Crypto API представляет собой объект, который должен быть передан в качестве параметра algorithm в SubtleCrypto.encrypt(), SubtleCrypto.decrypt(), SubtleCrypto.wrapKey() или SubtleCrypto.unwrapKey() при использовании алгоритма AES-CTR.
AES — это блочный шифр, означающий, что он разбивает сообщение на блоки и шифрует его по блокам. В режиме CTR каждый раз, когда шифруется блок сообщения, в него добавляется дополнительный блок данных. Этот дополнительный блок называется «блоком счётчика».
Значение данного блока счётчика не должно использоваться более одного раза с одним и тем же ключом:
- Для сообщения длиной в n блоков должен использоваться другой блок счётчика для каждого блока.
- Если один и тот же ключ используется для шифрования более чем одного сообщения, для всех блоков всех сообщений должен использоваться другой блок счётчика.
Обычно это достигается путём разделения начального значения блока счётчика на две конкатенированные части:
- Инициализирующая последовательность (то есть число, которое может быть использовано только один раз). Часть блока, относящаяся к инициализирующей последовательности, остаётся неизменной для каждого блока в сообщении. Каждый раз при шифровании нового сообщения выбирается новая инициализирующая последовательность. Инициализирующие последовательности не обязательно должны быть секретными, но их нельзя повторно использовать с одним и тем же ключом.
- Счётчик. Эта часть блока увеличивается каждый раз, когда шифруется блок.
По сути: инициализирующая последовательность должна гарантировать, что блоки счётчика не будут повторно использованы из одного сообщения в другое, а счётчик — что блоки счётчика не будут повторно использованы в пределах одного сообщения.
Примечание: Более подробную информацию см. в приложении B стандарта NIST SP800-38A.
Свойства экземпляра
name-
Строка. Должна быть установлена в
AES-CTR. counter-
ArrayBuffer,TypedArrayилиDataView— начальное значение блока счётчика. Оно должно иметь длину 16 байт (размер блока AES). Правыеlengthбита этого блока используются для счётчика, а остальные — для инициализирующей последовательности. Например, еслиlengthустановлено в 64, то первая половинаcounter— это инициализирующая последовательность, а вторая половина используется для счётчика. length-
Number— количество битов в блоке счётчика, используемых для фактического счётчика. Счётчик должен быть достаточно большим, чтобы не переполняться: если сообщение состоит изnблоков, а счётчик имеет длинуmбитов, то должно выполняться следующее условие:n <= 2^m. Стандарт NIST SP800-38A, определяющий режим CTR, предполагает, что счётчик должен занимать половину блока счётчика (см. приложение B.2), поэтому для AES это будет 64.
Примеры
См. примеры для SubtleCrypto.encrypt() и SubtleCrypto.decrypt().
Спецификации
| Спецификация |
|---|
| Web Cryptography API # dfn-AesCtrParams |
Совместимость с браузерами
См. также
- Режим CTR определён в разделе 6.5 стандарта NIST SP800-38A.
-
SubtleCrypto.encrypt(). -
SubtleCrypto.decrypt(). -
SubtleCrypto.wrapKey(). -
SubtleCrypto.unwrapKey().
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/AesCtrParams