AES (Advanced Encryption Standard) — симметричный алгоритм блочного шифрования, основанный на сети подстановок и перестановок (SP-network), работающий с блоками данных фиксированного размера 128 бит. В контексте Web Crypto API он является одним из базовых криптографических примитивов, используемых для шифрования данных, генерации защищённых ключей и реализации протоколов безопасного обмена информацией в браузере.
Алгоритм AES оперирует тремя основными размерами ключей:
Увеличение длины ключа напрямую влияет на криптостойкость, увеличивая количество раундов преобразований внутри алгоритма:
Каждый раунд включает операции подстановки байтов, сдвига строк, смешивания столбцов и добавления раундового ключа.
В Web Crypto API AES реализован исключительно как симметричный алгоритм: один и тот же ключ используется как для шифрования, так и для расшифрования.
WebCrypto не предоставляет «голый» AES без режима. Алгоритм всегда используется в конкретной схеме работы с блоками данных. Поддерживаются следующие режимы:
Режим цепочки блоков шифротекста.
Каждый блок открытого текста перед шифрованием XOR-ится с предыдущим блоком шифротекста. Для первого блока используется вектор инициализации (IV).
C_i = E_K(P_i C_{i-1})
Особенности:
Использование оправдано в устаревших протоколах и совместимости.
Наиболее современный и рекомендуемый режим.
Комбинирует:
C_i = P_i E_K(_i)
Ключевая особенность — наличие аутентификационного тега (authentication tag), обеспечивающего целостность и подлинность данных.
Характеристики:
Используется как стандарт в TLS 1.3, современном хранении данных и API-безопасности.
Режим счётчика превращает блочный шифр в потоковый.
Каждый блок шифруется путём XOR с результатом шифрования счётчика.
C_i = P_i E_K( + i)
Особенности:
При повторном использовании nonce с тем же ключом полностью компрометируется безопасность данных.
Специализированный режим для защиты криптографических ключей.
Используется для:
Работает по алгоритму RFC 3394 / RFC 5649.
Особенности:
Web Crypto API предоставляет низкоуровневый интерфейс через объект
SubtleCrypto.
Основные операции:
Ключ создаётся через generateKey.
Параметры:
name: алгоритм (AES-CBC, AES-GCM, AES-CTR, AES-KW)length: 128 / 192 / 256extractable: возможность экспорта ключаkeyUsages: назначение (encrypt, decrypt, wrapKey и
др.)Ключ в WebCrypto представлен объектом CryptoKey,
который:
При использовании AES-GCM участвуют три элемента:
Шифрование формирует:
Нарушение любого из параметров делает расшифрование невозможным.
Корректность и безопасность AES напрямую зависит от уникальности вектора инициализации:
В Web Crypto API:
Padding влияет на:
Сравнение свойств:
Наиболее критическая ошибка, приводящая к:
В AES-GCM игнорирование проверки приводит к:
Создаёт уязвимости:
Типовой поток операций:
encryptdecryptКлючевой принцип — хранение IV вместе с данными, но не в секрете.
AES аппаратно ускоряется на большинстве современных CPU через AES-NI инструкции.
Особенности:
Web Crypto API обеспечивает:
Ключи невозможно прочитать напрямую, только использовать через API операций.
Режимы AES применяются в разных протоколах: