0Pricing
Cryptology Academy · Урок

GCM и аутентифицированное шифрование

Добавьте к шифрованию теги аутентификации, чтобы предотвратить подмену данных

«GCM и аутентифицированное шифрование» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Добро пожаловать

AES-GCM — эталонный вариант аутентифицированного шифрования. Он обеспечивает конфиденциальность AND целостность за одну операцию, предотвращая подделку без отдельного шага HMAC.

Проблема одного лишь шифрования

Шифрование обеспечивает конфиденциальность, но NOT целостность. Злоумышленник, перехвативший шифротекст AES-CBC, может изменить отдельные биты и преобразовать расшифрованный открытый текст, не зная ключа.

AEAD: аутентифицированное шифрование с дополнительными данными

Схемы AEAD выдают: шифротекст + тег аутентификации. Тег аутентифицирует и шифротекст, AND дополнительные незашифрованные данные (AAD), если они указаны. Любое изменение делает тег недействительным.

Архитектура GCM

AES-GCM использует: 1. AES-CTR для шифрования 2. GHASH для аутентификации GHASH вычисляет полиномиальный MAC над шифротекстом + AAD, используя умножение в GF(2^128).

Обзор GHASH

GHASH(H, A, C) = хэш AAD + шифротекста с использованием дополнительного ключа H = AES(K, 0^128). Полином вычисляется в точке H над GF(2^128). Результат объединяется операцией XOR с зашифрованным счётчиком, образуя тег.

Входные и выходные данные AES-GCM

Входные данные: ключ размером 128/192/256 бит, одноразовое число размером 96 бит, открытый текст, необязательные AAD Выходные данные: шифротекст (той же длины, что и открытый текст), тег аутентификации размером 128 бит Обычно тег имеет длину 16 байт. Не рекомендуется сокращать его менее чем до 12 байт.

Требования к одноразовому числу в GCM

GCM требует уникальное одноразовое число для каждого шифрования с одним и тем же ключом. Стандартный вариант — случайное одноразовое число размером 96 бит. После 2^32 сообщений вероятность коллизии превышает 1%. В этот момент замените ключ.

Катастрофа при повторном использовании одноразового числа GCM

Повторное использование пары (ключ, одноразовое число) в GCM позволяет злоумышленнику восстановить дополнительный ключ GHASH и подделать любой шифротекст с действительным тегом. Это полностью нарушает и конфиденциальность, и целостность.

Сценарии использования дополнительных данных (AAD)

AAD — это метаданные, которые нужно аутентифицировать, но не шифровать: - Заголовок HTTP: аутентифицируется для предотвращения атак на маршрутизацию ответов - Идентификатор записи базы данных: гарантирует, что шифротекст расшифровывается в правильной строке - Версия протокола: предотвращает атаки на понижение версии

Полный пример AES-GCM в Python

from cryptography.hazmat.primitives.ciphers.aead import AESGCM import os key = AESGCM.generate_key(256) nonce = os.urandom(12) aad = b'user_id=12345' aesgcm = AESGCM(key) ct = aesgcm.encrypt(nonce, b'secret', aad) pt = aesgcm.decrypt(nonce, ct, aad) # raises if tampered

Альтернатива: ChaCha20-Poly1305

ChaCha20-Poly1305 — ещё одна основная схема AEAD. Используется в TLS 1.3 на устройствах без AES-NI (ARM и мобильные устройства). Обеспечивает безопасность, сравнимую с AES-GCM, но работает быстрее в программных реализациях без аппаратного ускорения.

Быстрая проверка

От чего защищает тег аутентификации в AES-GCM?

Итоги

AES-GCM — правильный вариант по умолчанию для аутентифицированного шифрования. Далее мы изучим потоковые шифры: от сломанного RC4 до современного ChaCha20.

Часто задаваемые вопросы

Урок «GCM и аутентифицированное шифрование» бесплатный?

Да — полный текст урока «GCM и аутентифицированное шифрование» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «GCM и аутентифицированное шифрование»?

Добавьте к шифрованию теги аутентификации, чтобы предотвратить подмену данных Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «GCM и аутентифицированное шифрование»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы блочных шифров и дополнение
  2. ECB и CBC: закономерности и векторы инициализации
  3. Режим CTR и поведение потокового шифра
  4. GCM и аутентифицированное шифрование
← Назад к Cryptology Academy