Обмен технологиями

[Криптография] Основные понятия потоковых шифров

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Прежде чем знакомиться с потоковыми шифрами, давайте сначала поймем базовую операцию XOR точки знаний.

1. Операция исключающее ИЛИ (XOR).

Правила работы: такие же, как 0, отличные от 1.

Особенности: Один бит дважды подвергается операции XOR и может быть восстановлен до исходного бита.

Обычный текст: 1100

Ключ: 0101 (зашифрованный)

Шифрованный текст: 1001

Ключ: 0101 (расшифровка)

Обычный текст: 1100

преимущество:Эта обратимость позволяет использовать операцию XOR как для преобразований шифрования, так и для дешифрования.

недостаток:Если злоумышленник сможет угадать или захватить ключ, его можно легко расшифровать с помощью XOR.

Причина, по которой операцию XOR можно использовать для шифрования и дешифрования одновременно, заключается в ее обратимости, но это также и ее недостаток. Безопасность полностью полагается на сокрытие ключа.

2. Алгоритм одноразового ввода (OTP)

(1) Определение

One-Time Pad (OTP) — это алгоритм потокового шифрования. Теоретически он считается одним из наиболее безопасных методов шифрования при условии, что его реализация строго соответствует нескольким ключевым принципам:

1.  Ключ должен быть такой же длины, как и открытый текст.: Это означает, что при каждом шифровании используется ключ той же длины, что и шифруемое сообщение.

2.  Ключ должен быть действительно случайным: Каждый бит ключа должен генерироваться случайным образом, без какой-либо закономерности или предсказуемости.

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

4.  Ключ должен храниться в секрете: Распространение и хранение ключей должны быть максимально безопасными, чтобы предотвратить доступ третьих лиц.

(2) Преимущества и недостатки

преимущество:

  • Ключ генерируется случайным образом и используется только один раз.
  • Безоговорочно безопасно
  • Шифрование и дешифрование — это операции сложения, которые более эффективны.

недостаток:

  • Длина ключа не меньше длины открытого текста, что затрудняет и делает нецелесообразным совместное использование ключей.

3. Определение потокового шифра.

Когда люди изучают алгоритмы шифрования одноразовых блокнотов, они пытаются решить проблемы управления ключами и их длины. Если существовал способ сгенерировать все ключи для шифрования открытого текста, предоставляя только небольшую часть ключа, то поточный шифр был разработан на основе этой идеи.

(1) Основная идея потокового шифра

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

ключ ксгенерировать ключевой поток z=z_0z_1z_2...И используйте следующие правила для сравнения простых текстовых строк х=х_0х_1х_2...Чтобы зашифровать:
у=у_0у_1у_2...=Ez_0(x_0)Ez_1(x_1)Ez_2(x_2)...

Регистр сдвига с линейной обратной связью обычно используется для генерации псевдослучайных ключей. Этот принцип здесь обсуждаться не будет.

(2) Алгоритмический процесс

Процесс шифрования и дешифрования можно описать следующим образом:

  • Генерация потока ключей: обе стороны шифрования и дешифрования используют один и тот же ключ и вектор инициализации (IV) для инициализации генератора псевдослучайных чисел (PRNG). PRNG генерирует серию псевдослучайных битов на основе своего внутреннего состояния для формирования потока ключей.
  • Процесс шифрования: отправитель выполняет операцию побитового исключающего ИЛИ (XOR) над сгенерированным потоком ключей и открытым текстом для получения зашифрованного текста. Из-за характера операции XOR одна и та же операция обратима для разных битов.
  • Процесс расшифровки: получатель повторно инициализирует PRNG с тем же ключом и IV и генерирует тот же поток ключей, что и при шифровании. Затем получатель выполняет XOR зашифрованного текста с потоком ключей, чтобы восстановить исходный открытый текст.

(3) Принципы построения потокового шифрования

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

  1. огромный цикл : Период потока ключей должен быть достаточно продолжительным, чтобы предотвратить повторное использование одного и того же сегмента потока ключей, что может выявить закономерности в зашифрованных данных и позволить криптоаналитикам проводить атаки путем сравнения сходств и различий различных сообщений. Теоретически для n-битного пространства ключей идеальная длина цикла должна составлять 2n-1. На практике более длительные периоды означают, что поток ключей повторяется реже, что повышает безопасность криптосистемы.

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

  3. Устойчивость к линейному анализу : Поточный шифр должен быть устойчив к линейному анализу, при котором криптоаналитик пытается восстановить ключ или открытый текст, находя линейную корреляцию между потоком ключей и открытым текстом или зашифрованным текстом. Обычно для этого требуется, чтобы выходные данные генератора потока ключей были нелинейными или, по крайней мере, содержали достаточное количество нелинейных компонентов, чтобы простые методы решения линейных систем не могли вывести поток ключей или сам ключ.