Русская Википедия:Гаммирование

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Гамми́рование, или Шифр XOR, — метод симметричного шифрования, заключающийся в «наложении» последовательности, состоящей из случайных чисел, на открытый текст. Последовательность случайных чисел называется гамма-последовательностью и используется для зашифровывания и расшифровывания данных. Суммирование обычно выполняется в каком-либо конечном поле. Например, в поле Галуа <math>GF(2)</math> суммирование принимает вид операции «исключающее ИЛИ (XOR)».

Визуальное представление

Файл:Передатчик.jpg
Схема передатчика
Файл:Приемник.JPG
Схема приёмника

Стойкость

Доказательство абсолютной стойкости Шеннона

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

Пусть <math>X</math>, <math>Y</math> и <math>Z</math> — дискретные случайные величины.

Пусть:

  • <math>X</math> — значение бита открытого текста; то есть, переменная <math>X</math> (бит) способна принимать два значения: 0 и 1;
  • <math>p</math> — вероятность события, заключающегося в том, что переменная <math>X</math> примет значение 0;
  • <math>(1-p)</math> — вероятность противоположного события (то есть, вероятность того, что переменная <math>X</math> примет значение 1).

Запишем закон распределения значений <math>X</math>:

<math>X</math> <math>0</math> <math>1</math>
<math>Pi</math> <math>p</math> <math>(1-p)</math>

Используем <math>p</math> и <math>(1-p)</math>, так как вероятность встретить одну букву в разных словах различна.

Пусть:

  • <math>Y</math> — бит псевдослучайной последовательности (гаммы); то есть, переменная <math>Y</math> (бит) способна принимать два значения: 0 и 1;
  • каждое из значений <math>Y</math> равновероятно; то есть, вероятности получить 0 или 1 равны 1/2.

Запишем закон распределения значений <math>Y</math>:

<math>Y</math> <math>0</math> <math>1</math>
<math>Pi</math> <math>\frac 12</math> <math>\frac 12</math>

Иными словами, в качестве гаммы (<math>Y</math>) подаётся одинаковое количество нулей и единиц, или значения переменной <math>Y</math> имеют симметричный закон распределения.

Пусть:

  • <math>Z</math> — бит закрытого текста; то есть, переменная <math>Z</math> (бит) способна принимать два значения: 0 и 1;
  • значение <math>Z</math> вычисляется на основе значений <math>X</math> и <math>Y</math> по формуле:
<math>Z=X+Y</math> (mod 2)
или
Z = xor(X, Y)
или
Z = X Y

Найдём следующие вероятности:

  • <math>P(Z=0)</math> — вероятность события, заключающегося в том, что переменная <math>Z</math> принимает значение 0;
  • <math>P(Z=1)</math> — вероятность события, заключающегося в том, что переменная <math>Z</math> принимает значение 1.

Используем формулы:

<math>P(A+B) = P(A) + P(B)</math>;
<math>P(A*B) = P(A) * P(B)</math>.

Вероятность того, что переменная <math>Z</math> примет значение 0:

<math>P(Z=0) = P( X=0, Y=0 ) + P( X=1, Y=1 ) = P(X=0) * P(Y=0) + P(X=1) * P(Y=1) = p * 1/2 + (1-p) * 1/2 = 1/2</math>.

Вероятность того, что переменная <math>Z</math> примет значение 1:

<math>P(Z=1) = 1 - P(Z=0) = 1/2</math>.

Так как <math>P(Z=0)</math> и <math>P(Z=1)</math> не зависят от <math>p</math>, <math>p</math> может принимать любое значение.

Запишем закон распределения значений переменной <math>Z</math>:

<math>Z</math> <math>0</math> <math>1</math>
<math>Pi</math> <math>\frac 12</math> <math>\frac 12</math>

Закон распределения <math>Z</math> оказался симметричным, как и закон распределения гамма (<math>Y</math>) или шум. То есть, <math>Z</math> не содержит никакую информацию из <math>X</math> (в <math>Z</math> нет <math>p</math>). Это доказывает, что шифр является абсолютно стойким.

Требования к гамме

  • Для шифрования каждого нового сообщения нужно использовать новую гамму. Повторное использование гаммы недопустимо ввиду свойств операции «xor». Рассмотрим пример: с помощью одинаковой гаммы Y зашифрованы два открытых текста X₁ и X₂, получено две шифрограммы Z₁ и Z₂:
<math>Z_1 = X_1 \oplus Y</math>
<math>Z_2 = X_2 \oplus Y</math>

Выполним сложение двух шифрограмм, используя операцию «xor»:

<math>Z_1 \oplus Z_2 = ( X_1 \oplus Y ) \oplus ( X_2 \oplus Y ) = X_1 \oplus X_2</math>

Результат зависит от открытых текстов X₁ и X₂ и не зависит от гаммы Y. Ввиду избыточности естественных языков результат поддаётся частотному анализу, то есть открытые тексты можно подобрать, не зная гамму Y.

  • Для формирования гаммы (последовательности псевдослучайных чисел) нужно использовать аппаратные генераторы случайных чисел, основанные на физических процессах. Если гамма не будет случайной, для получения открытого текста потребуется подобрать только начальное состояние (Шаблон:Lang-en) генератора псевдослучайных чисел.
  • Длина гаммы должна быть не меньше длины защищаемого сообщения (открытого текста). В противном случае для получения открытого текста потребуется подобрать длину гаммы, проанализировать блоки шифротекста угаданной длины, подобрать биты гаммы.

Литература

См. также