Открыть сервис

Симметричное шифрование

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

Симметричное шифрование противопоставляется асимметричному шифрованию (криптосистемам с открытым ключом), где используются два разных, но математически связанных ключа: открытый (для шифрования) и закрытый (для расшифрования). Исторически симметричные шифры появились задолго до асимметричных и остаются основой для защиты данных во многих современных протоколах и системах, как правило, в комбинации с асимметричными методами для безопасного распределения сеансовых ключей.

История

Первые известные примеры симметричного шифрования относятся к глубокой древности. Одним из самых ранних и простых является шифр Цезаря, использовавшийся, по преданию, Гаем Юлием Цезарем для переписки. В основе такого шифра лежит сдвиг букв алфавита на фиксированное число позиций — сам сдвиг и являлся ключом.

На протяжении столетий развивались различные мануальные шифры, такие как шифр Виженера (многоалфавитная замена, где ключом служит повторяющееся слово) и шифровальные диски Альберти. Все они, однако, основывались на симметричном принципе и были уязвимы для криптоанализа (особенно частотного) по мере его развития.

Переломным моментом стало создание электромеханических устройств, таких как роторные шифровальные машины XX века, самым известным примером которых является немецкая «Энигма». Несмотря на усложнение процедур шифрования, ключи для «Энигмы» были симметричными (например, начальные позиции роторов). Работа союзников по взлому «Энигмы» под руководством Алана Тьюринга продемонстрировала как мощь, так и уязвимости симметричных систем при неправильном управлении ключами и повторении сеансовых настроек.

С началом цифровой эры в 1970-х годах были формализованы и стандартизированы первые блочные симметричные шифры, работающие с данными в двоичном виде. В 1977 году был опубликован DES (Data Encryption Standard) — алгоритм, ставший стандартом шифрования в США на многие годы. DES использовал ключ длиной 56 бит, что на момент создания было достаточно, но к концу XX века стало возможным взломать полным перебором (лбрутфорс) за разумное время.

Это привело к разработке и проведению конкурса Национальным институтом стандартов и технологий США (NIST), победителем которого в 2001 году стал алгоритм Rijndael, принятый как стандарт AES (Advanced Encryption Standard). AES использует ключи длиной 128, 192 или 256 бит и является основным современным симметричным алгоритмом на сегодняшний день.

Классификация симметричных шифров

Симметричные криптосистемы делятся на два основных типа в зависимости от способа обработки данных: поточные шифры и блочные шифры.

Поточные шифры

Поточный шифр шифрует каждый символ (бит) открытого текста по отдельности, последовательно. Для этого он генерирует гамму — псевдослучайную последовательность ключевого материала, обычно одинаковой длины с сообщением. Шифротекст получается путём наложения гаммы на открытый текст (чаще всего с помощью операции XOR (исключающее ИЛИ)). Для расшифровки на стороне получателя генерируется та же самая гамма с использованием того же ключа и начального вектора.

Блочные шифры

Блочный шифр делит открытый текст на фиксированные блоки (например, 64 или 128 бит) и по определённой математической процедуре преобразует каждый блок в блок шифротекста соответствующего размера. Ключ используется на применение определённых раундовых преобразований, включающих перестановки (P-блоки) и подстановки (S-блоки). Для шифрования произвольной длины данных применяются режимы шифрования, которые организуют работу блочного шифра для последовательности блоков.

Устройство и принцип работы (на примере блочного шифра)

На примере современного стандарта AES (Rijndael) можно показать типичную структуру блочного симметричного шифра.

  1. Размеры: AES использует блок данных размером 128 бит (16 байт). Размер ключа может быть 128, 192 или 256 бит. Количество раундов (циклов обработки) зависит от длины ключа: 10 (128), 12 (192) или 14 (256).
  2. Раунды: Каждый раунд (кроме последнего) состоит из четырёх операций, выполняемых над состоянием — двумерным массивом байтов размером 4×4:
  1. Расширение ключа: Из основного (мастер-ключа) по определённому алгоритму порождаются все раундовые ключи — по одному на каждый раунд плюс начальный раунд.

Процесс расшифровки — это обратные операции, выполняемые в обратном порядке: сначала AddRoundKey, затем обратный MixColumns, обратный ShiftRows и обратный SubBytes.

Применение

Симметричное шифрование повсеместно используется в современных криптографических системах и протоколах благодаря высокой скорости работы и относительной простоте реализации.

  1. Шифрование данных в покое (Data at Rest):
  1. Шифрование трафика (Data in Transit):
  1. Мессенджеры:
  1. Финансовые системы:
  1. Аутентификация:

Ключевые проблемы и ограничения

Несмотря на надёжность при правильной реализации, симметричное шифрование имеет несколько фундаментальных проблем:

  1. Проблема распределения ключей: Самый существенный недостаток. Отправитель и получатель должны иметь идентичный секретный ключ и безопасно обменяться им до начала передачи шифрованного сообщения. В открытых каналах (Интернет) это часто решается с помощью асимметричного шифрования, которое используется для защиты передачи симметричного ключа. Однако если асимметричный ключ скомпрометирован, симметричный ключ тоже может быть раскрыт.
  2. Управление ключами: В больших системах количество необходимых парных симметричных ключей растёт квадратично (n², где n — количество участников системы). Это усложняет их генерацию, хранение, распространение и замену.
  3. Повторное использование ключа: Повторное использование одного и того же ключа для нескольких сообщений без соответствующего начального вектора или в режиме гаммы ведёт к катастрофической потере безопасности. В режиме ECB повторяющиеся блоки открытого текста выдают визуальные паттерны на равнозначных данных, что делает возможным частичное чтение данных даже при свете одинаковых блоков.
  4. Отсутствие неотказуемости (non-repudiation): В симметричном шифровании оба участника знают один и тот же ключ, поэтому ни один из них не может доказать третьей стороне, что конкретное сообщение было отправлено именно другим участником. Это ограничение требует дополнительных механизмов (внешних протоколов) для юридической значимости.

Современные алгоритмы и перспективы

На сегодняшний день основными и наиболее широко применяемыми симметричными алгоритмами являются AES-256 (блочный шифр) и ChaCha20 (поточный шифр). Большинство современных программных и аппаратных реализаций (включая инструкции AES-NI в процессорах x86) выполняют AES очень быстро — на уровне нескольких гигабит в секунду.

С развитием квантовых вычислений существует потенциальная угроза для симметричного шифрования. В отличие от асимметричных схем, квантовый компьютер (при помощи алгоритма Гровера) может в теории ускорить полный перебор ключа симметричного шифра лишь квадратичным образом (например, для 128-битного ключа потребуется выполнить ~2^64 операций, а не ~2^128). Поэтому для защиты от квантовых атак рекомендуется использовать симметричные алгоритмы с ключом не менее 256 бит (AES-256, ChaCha256). При этом симметричное шифрование считается устойчивым к квантовым взломам в гораздо большей степени, чем асимметричное шифрование, для которого разработка постквантовых схем является актуальной задачей.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →