Гаммирование: различия между версиями
[отпатрулированная версия] | [отпатрулированная версия] |
Нет описания правки |
Нет описания правки |
||
(не показано 38 промежуточных версий 22 участников) | |||
Строка 1: | Строка 1: | ||
'''Гамми́рование''', или '''Шифр XOR''', — метод [[Симметричные криптосистемы|симметричного]] [[шифрование|шифрования]], заключающийся в «наложении» последовательности, состоящей из случайных чисел, на [[открытый текст]]. Последовательность случайных чисел называется '''''гамма-последовательностью''''' и используется для зашифровывания и расшифровывания данных. Суммирование обычно выполняется в каком-либо [[конечное поле|конечном поле]]. Например, в [[поле Галуа]] <math>GF(2)</math> суммирование принимает вид операции «[[Сложение по модулю 2|исключающее ИЛИ (XOR)]]». |
|||
{{Викифицировать}} |
|||
'''Гамми́рование''' — метод [[Симметричные криптосистемы|симметричного]] [[шифрование|шифрования]], заключающийся в «наложении» последовательности, состоящей из случайных чисел, на [[открытый текст]]. Последовательность случайных чисел называется '''гамма-последовательностью''' и используется для зашифровывания и расшифровывания данных. Суммирование, обычно, выполняется в каком-либо [[конечное поле|конечном поле]]. Например, в поле [[Поле Галуа|Галуа GF(2)]] суммирование принимает вид операции «[[Сложение по модулю 2|исключающее ИЛИ (xor)]]». |
|||
<!-- Шифрование / расшифрирование данных в режиме гаммирования. Криптосхема алгоритма шифрования в режиме простой замены, записывается заполнение КЗУ и блока подстановок. |
|||
Сначала равновероятно и взаимосвязано генерируется 64 бита синхропосылки, которая разделяется на начальные левый и правый подблоки длиной по 32 бита: |
|||
Подблоки синхропосылки зашифровываются в режиме простой замены в течение 32 циклов шифрования: |
|||
Образованные в итоге 32-го цикла левый и правый подблоки записываются в накопителе и накопителе, как значения и соответственно. Заполнение накопителя складывается в сумматоре СМ по модулю с 32-битовой криптографической константой. |
|||
С выхода сумматора СМ новое значение запоминается в накопителе. |
|||
В течение 32 циклов значения и зашифровываются в режиме простой замены, образуя первый 64-разрядный блок шифрующей гаммы, состоящей из правого и левого полублоков: |
|||
Полублоки шифруемой гаммы записываются в регистр последовательно сдвига, из которого побитно считаются для шифрования битов первого 64-разрядного блока открытого сообщения. Очередной бит блока сообщения шифруется в режиме гаммирования путем поразрядного сложения по модулю 2 в сумматоре СМ с очередным битом блока шифрующей гаммы: |
|||
Сформированные таким образом 64 бита составляют первый блок криптограммы. |
|||
Для шифрования второго и последующих блоков открытого сообщения из накопителей и считываются значения и, складываются с соответствующими криптографическими константами и полученные значения запоминаются в указанных накопителях. Далее формирование использование второго и последующих блоков шифрующей гаммы выполняется в соответствии с (4.25) и (4.26). По каналу связи или в память ЭВМ последовательно передаются синхропосылки и сформированные блоки криптограммы. |
|||
Криптосистема алгоритма при расшифровывании в режиме гаммирования имеет вид, аналогичный криптосистеме шифрования (рис. 4.9). Из полученной синхропосылки, идентично процессу формирования блоков шифрующей гаммы, последовательно формируются блоки дешифрующий гаммы, которые используются для дешифрирования принятых блоков криптограммы по правилу: |
|||
Алгоритм шифрования в режиме гаммирования по ГОСТ 28147-89 является реализацией режима обратной связи по выходу блочного шифра и позволяет обеспечить помехоустойчивую шифрованную связь при передаче данных по каналам связи с ошибками, так как размножения ошибок при расшифровании не происходит. Для исключения снижения криптостойкости при повторном использовании одного и того же оперативного ключа необходимо в каждом сеансе связи использовать неповторяющуюся синхропосылку. Алгоритм шифрования в режиме гаммирования при возможности имитовоздействия со стороны нарушителя необходимо использовать совместно с алгоритмом выработки имитоставки. |
|||
'''Гамма последовательность (gamma sequence)''' |
|||
Генерация, абсолютно стойкие системы, длина гаммы.--> |
|||
== Визуальное представление == |
== Визуальное представление == |
||
{| |
|||
| [[Файл:Передатчик.jpg|thumb|Схема передатчика]] |
|||
| [[Файл:Приемник.JPG|thumb|Схема приёмника]] |
|||
|} |
|||
== Стойкость == |
|||
Схема передатчика. |
|||
=== Доказательство абсолютной стойкости Шеннона === |
|||
[[Изображение:Передатчик.jpg]] |
|||
[[Шеннон, Клод Элвуд|Клод Шеннон]] доказал, что при определённых свойствах гаммы этот метод шифрования является [[Абсолютно стойкий шифр|абсолютно стойким]] (то есть не поддающимся взлому). |
|||
Пусть <math>X</math>, <math>Y</math> и <math>Z</math> — дискретные [[случайная величина|случайные величины]]. |
|||
Схема приёмника. |
|||
Пусть: |
|||
[[Изображение:Приемник.JPG]] |
|||
* <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>: |
|||
== Стойкость == |
|||
{| class="wikitable" |
|||
[[Шеннон, Клод Элвуд|Клод Шеннон]] доказал, что при определённых свойствах гаммы этот метод шифрования является абсолютно стойким (то есть, не поддающимся взлому). |
|||
!<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; |
|||
* X и Y — [[случайная величина|случайные величины]] дискретного типа; |
|||
* каждое из значений <math>Y</math> равновероятно; то есть, вероятности получить 0 или 1 равны 1/2. |
|||
* X — случайная величина для |
|||
открытого текста; |
|||
* Y — случайная величина для гаммы, |
|||
тогда [[функция распределения|закон распределения]] X будет выглядеть так: |
|||
Запишем закон распределения значений <math>Y</math>: |
|||
{| border=1 |
|||
!X |
|||
{| class="wikitable" |
|||
!0 |
|||
!<math>Y</math> |
|||
!1 |
|||
! <math>0</math>|| <math>1</math> |
|||
|- |
|- |
||
!Pi |
!<math>Pi</math> |
||
| <math>\frac 12</math>|| <math>\frac 12</math> |
|||
|p |
|||
|1-p |
|||
|} |
|} |
||
Иными словами, в качестве гаммы (<math>Y</math>) подаётся одинаковое количество нулей и единиц, или значения переменной <math>Y</math> имеют симметричный закон распределения. |
|||
Используем p и 1-p, так как [[вероятность]] встречаемости букв в разных словах различна. Закон распределения Y: |
|||
Пусть: |
|||
{| border=1 |
|||
* <math>Z</math> — бит закрытого текста; то есть, переменная <math>Z</math> (бит) способна принимать два значения: 0 и 1; |
|||
!Y |
|||
* значение <math>Z</math> вычисляется на основе значений <math>X</math> и <math>Y</math> по формуле: |
|||
!0 |
|||
: <math>Z=X+Y</math> (mod 2) |
|||
!1 |
|||
: или |
|||
|- |
|||
: Z = [[Сложение по модулю 2|xor]](X, Y) |
|||
!Pi |
|||
: или |
|||
|1/2 |
|||
: Z = X [[Сложение по модулю 2|⊕]] Y |
|||
|1/2 |
|||
|} |
|||
Найдём следующие вероятности: |
|||
То есть в качестве гаммы подаётся одинаковое количество единиц и |
|||
* <math>P(Z=0)</math> — вероятность события, заключающегося в том, что переменная <math>Z</math> принимает значение 0; |
|||
нулей (у Y симметричный закон распределения). |
|||
* <math>P(Z=1)</math> — вероятность события, заключающегося в том, что переменная <math>Z</math> принимает значение 1. |
|||
Z — случайная величина дискретного типа для закрытого текста. Из картинки выше |
|||
видно, что Z=X+Y(mod 2). |
|||
Вычислим вероятности встречаемости нулей и единиц в законе распределения Z: |
|||
Используем формулы: |
|||
Используя: |
|||
* сложения вероятностей [[Несовместные события|несовместных событий]]: |
|||
: <math>P(A+B) = P(A) + P(B)</math>; |
|||
* умножения вероятностей [[Независимость (теория вероятностей)|независимых]] событий: |
|||
: <math>P(A*B) = P(A) * P(B)</math>. |
|||
Вероятность того, что переменная <math>Z</math> примет значение 0: |
|||
1. P(A+B)=P(A)+P(B), если A и B не совместны. |
|||
: <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>. |
|||
2. P(A*B)=P(A)*P(B), если A и B независимы. |
|||
Вероятность того, что переменная <math>Z</math> примет значение 1: |
|||
Имеем: |
|||
P(Z= |
: <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> может принимать любое значение. |
|||
p*1/2+(1-p)*1/2 = 1/2 (для любого p!) |
|||
Запишем [[функция распределения|закон распределения]] значений переменной <math>Z</math>: |
|||
P(Z=1) = 1-P(Z=0) = 1/2 |
|||
{| class="wikitable" |
|||
То есть закон распределения Z: |
|||
!<math>Z</math> |
|||
! <math>0</math>|| <math>1</math> |
|||
{| border=1 |
|||
!Z |
|||
!0 |
|||
!1 |
|||
|- |
|- |
||
!Pi |
!<math>Pi</math> |
||
| <math>\frac 12</math>|| <math>\frac 12</math> |
|||
|1/2 |
|||
|1/2 |
|||
|} |
|} |
||
Закон распределения <math>Z</math> оказался симметричным, как и закон распределения гамма (<math>Y</math>) или шум. То есть, <math>Z</math> не содержит никакую информацию из <math>X</math> (в <math>Z</math> нет <math>p</math>). Это доказывает, что шифр является абсолютно стойким. |
|||
Таким образом, закон распределения Z оказывается симметричным, то есть получается |
|||
та же гамма или шум (Z не содержит никакую информацию из X, то есть в Z нет p). |
|||
Это доказывает что шифр является абсолютно стойким. |
|||
== Требования к гамме == |
== Требования к гамме == |
||
* Для каждого сообщения использовать новую гамму |
* Для шифрования каждого нового сообщения нужно использовать новую гамму. Повторное использование гаммы недопустимо ввиду свойств операции «[[Сложение по модулю 2|xor]]». Рассмотрим пример: с помощью одинаковой гаммы Y зашифрованы два [[открытый текст|открытых текста]] X₁ и X₂, получено две [[шифротекст|шифрограммы]] Z₁ и Z₂: |
||
: <math>Z_1 = X_1 \oplus Y</math> |
|||
: <math>Z_2 = X_2 \oplus Y</math> |
|||
Выполним сложение двух шифрограмм, используя операцию «[[Сложение по модулю 2|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|seed}}) генератора псевдослучайных чисел. |
||
* Длина гаммы должна быть не меньше длины защищаемого сообщения (открытого текста). В противном случае для получения открытого текста потребуется подобрать длину гаммы, проанализировать блоки шифротекста угаданной длины, подобрать биты гаммы. |
|||
* Длина гаммы должна быть не меньше длины защищаемого сообщения. |
|||
<!-- == Терминология == |
|||
* Открытый (исходный) текст — данные (не обязательно текстовые), передаваемые с использованием криптографии. |
|||
* Шифрованный (закрытый) текст — данные, полученные после применения криптосистемы с указанным [[ключ (криптография)|ключом]]. |
|||
--> |
|||
== Примечания == |
|||
{{примечания}} |
|||
== Литература == |
== Литература == |
||
* {{Книга|ссылка=https://books.google.com.ua/books?id=Li3hCgAAQBAJ|автор=|заглавие=Введение в криптографию|ответственный=под ред. Ященко|год=2017|язык=ru|издание=|место=|издательство=Litres|страницы=|страниц=349|isbn=978-5-457-91528-2}} |
|||
* Владимир Иванов ([[Яндекс]]). [https://events.yandex.ru/lib/talks/2337/ Видеолекция] о [[Криптография|криптографии]]. |
|||
* Ященко В. В. Введение в криптографию. |
|||
== Ссылки == |
|||
== См. также == |
== См. также == |
||
* [[Псевдослучайная последовательность]] |
* [[Псевдослучайная последовательность]] |
||
* [[Потоковый шифр]] |
|||
* [[Шифр Вернама]] |
|||
[[Категория:Криптография]] |
[[Категория:Криптография]] |
Текущая версия от 13:37, 1 мая 2023
Гамми́рование, или Шифр XOR, — метод симметричного шифрования, заключающийся в «наложении» последовательности, состоящей из случайных чисел, на открытый текст. Последовательность случайных чисел называется гамма-последовательностью и используется для зашифровывания и расшифровывания данных. Суммирование обычно выполняется в каком-либо конечном поле. Например, в поле Галуа суммирование принимает вид операции «исключающее ИЛИ (XOR)».
Визуальное представление
[править | править код]Стойкость
[править | править код]Доказательство абсолютной стойкости Шеннона
[править | править код]Клод Шеннон доказал, что при определённых свойствах гаммы этот метод шифрования является абсолютно стойким (то есть не поддающимся взлому).
Пусть , и — дискретные случайные величины.
Пусть:
- — значение бита открытого текста; то есть, переменная (бит) способна принимать два значения: 0 и 1;
- — вероятность события, заключающегося в том, что переменная примет значение 0;
- — вероятность противоположного события (то есть, вероятность того, что переменная примет значение 1).
Запишем закон распределения значений :
Используем и , так как вероятность встретить одну букву в разных словах различна.
Пусть:
- — бит псевдослучайной последовательности (гаммы); то есть, переменная (бит) способна принимать два значения: 0 и 1;
- каждое из значений равновероятно; то есть, вероятности получить 0 или 1 равны 1/2.
Запишем закон распределения значений :
Иными словами, в качестве гаммы () подаётся одинаковое количество нулей и единиц, или значения переменной имеют симметричный закон распределения.
Пусть:
- — бит закрытого текста; то есть, переменная (бит) способна принимать два значения: 0 и 1;
- значение вычисляется на основе значений и по формуле:
Найдём следующие вероятности:
- — вероятность события, заключающегося в том, что переменная принимает значение 0;
- — вероятность события, заключающегося в том, что переменная принимает значение 1.
Используем формулы:
- сложения вероятностей несовместных событий:
- ;
- умножения вероятностей независимых событий:
- .
Вероятность того, что переменная примет значение 0:
- .
Вероятность того, что переменная примет значение 1:
- .
Так как и не зависят от , может принимать любое значение.
Запишем закон распределения значений переменной :
Закон распределения оказался симметричным, как и закон распределения гамма () или шум. То есть, не содержит никакую информацию из (в нет ). Это доказывает, что шифр является абсолютно стойким.
Требования к гамме
[править | править код]- Для шифрования каждого нового сообщения нужно использовать новую гамму. Повторное использование гаммы недопустимо ввиду свойств операции «xor». Рассмотрим пример: с помощью одинаковой гаммы Y зашифрованы два открытых текста X₁ и X₂, получено две шифрограммы Z₁ и Z₂:
Выполним сложение двух шифрограмм, используя операцию «xor»:
Результат зависит от открытых текстов X₁ и X₂ и не зависит от гаммы Y. Ввиду избыточности естественных языков результат поддаётся частотному анализу, то есть открытые тексты можно подобрать, не зная гамму Y.
- Для формирования гаммы (последовательности псевдослучайных чисел) нужно использовать аппаратные генераторы случайных чисел, основанные на физических процессах. Если гамма не будет случайной, для получения открытого текста потребуется подобрать только начальное состояние (англ. seed) генератора псевдослучайных чисел.
- Длина гаммы должна быть не меньше длины защищаемого сообщения (открытого текста). В противном случае для получения открытого текста потребуется подобрать длину гаммы, проанализировать блоки шифротекста угаданной длины, подобрать биты гаммы.
Литература
[править | править код]- Введение в криптографию / под ред. Ященко. — Litres, 2017. — 349 с. — ISBN 978-5-457-91528-2.
- Владимир Иванов (Яндекс). Видеолекция о криптографии.