Самосинхронизирующийся потоковый шифр: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 10: Строка 10:
Важно отметить, что для расшифровки первых M бит открытого текста необходимо определить ''вектор инициализации'':
Важно отметить, что для расшифровки первых M бит открытого текста необходимо определить ''вектор инициализации'':
: <math> C_{init} = c_{-M+1} ... c_0</math>
: <math> C_{init} = c_{-M+1} ... c_0</math>
Этот вектор должен быть отправлен получателю первым. При этом, если первые ''k'' бит вектора инициализации на приемной стороне отличаются от первых ''k'' бит передающей стороны, то вероятность того, что весь шифртекст получен корректно, равна <math>2^{-k}</math>.
Этот вектор должен быть отправлен получателю первым. При этом, если первые ''k'' бит вектора инициализации на приемной стороне отличаются от первых ''k'' бит передающей стороны, то вероятность того, что весь шифртекст получен корректно, равна <math>2^{-k}</math>.<ref>{{Книга|автор=Matthew Robshaw, Olivier Billet|заглавие=New Stream Cipher Designs - The eSTREAM Finalists|ссылка=http://www.springer.com/us/book/9783540683506|ответственный=|издание=|место=|издательство=Springer|год=2008|страницы=210-213|страниц=|isbn=|isbn2=}}</ref>


== Криптографические свойства ==
== Криптографические свойства ==
Строка 30: Строка 30:
Отсюда находим, что память шифрования M должна быть выбрана:
Отсюда находим, что память шифрования M должна быть выбрана:
:<math>M \geqslant \log_2 (\frac{N^2}{p})</math>
:<math>M \geqslant \log_2 (\frac{N^2}{p})</math>
Например, для <math>p=10^{-9}</math> и <math>N=10^{12}</math>, оценка на память шифрования - <math>M\geqslant110</math>. С другой стороны, следует учесть возможность появлений ошибок при передачи данных по [[Канал связи|каналу связи]]. Ошибка в одном бите при передаче шифртекста распространяется на следующие ''M'' бит при расшифровке.Следовательно, память шифрования ''M'' должна быть выбрана как можно меньше. Учитывая приведенные аргументы, для конкретного примера выбрать <math>M\in[80, 128]</math> кажется разумным для удовлетворения условий безопасности и устойчивости к ошибкам.
Например, для <math>p=10^{-9}</math> и <math>N=10^{12}</math>, оценка на память шифрования - <math>M\geqslant110</math>. С другой стороны, следует учесть возможность появлений ошибок при передачи данных по [[Канал связи|каналу связи]]. Ошибка в одном бите при передаче шифртекста распространяется на следующие ''M'' бит при расшифровке.Следовательно, память шифрования ''M'' должна быть выбрана как можно меньше. Учитывая приведенные аргументы, для конкретного примера выбрать <math>M\in[80, 128]</math> кажется разумным для удовлетворения условий безопасности и устойчивости к ошибкам.<ref>{{Статья|автор=Ueli M. Maurer|заглавие=New Approaches to the Design of Self-Synchronizing Stream Ciphers|ссылка=https://link.springer.com/chapter/10.1007/3-540-46416-6_39|язык=en|издание=Advances in Cryptology — EUROCRYPT ’91|тип=|издательство=Springer, Berlin, Heidelberg|год=1991-04-08|месяц=|число=|том=|номер=|страницы=465–466|isbn=3540464166|issn=|doi=10.1007/3-540-46416-6_39}}</ref>
==Сравнение самосинхронизирующихся поточных шифров с аналогами===
==Сравнение самосинхронизирующихся поточных шифров с аналогами==
===Сравнение с синхронными поточными шифрами===
В [[Потоковый шифр|синхронных поточных шифрах]] поток ключей генерируется независимо от шифртекста. Для корректной расшифровки необходимо, чтобы генератор потока ключей был синхронизирован на приемной и передающей сторонах. Как правило, это осуществляется за счет сброса генератора при появлении определенного потока бит шифртекста фиксированной длины - ''маркеров''. При ошибки передачи маркера, генераторы перестанут работать синхронно и дальнейшая расшифровка пройдет некорректно. В то же время, при однократном приеме некорректного бита в случае самосинхронизирующегося шифрования, расшифровка продолжится правильно после M бит. С другой стороны, если в синхронном потоковом шифровании генераторы синхронизированы, то прием ''одного'' некорректного бита породит неправильную расшифровку ''одного'' бита, в то время как в самосинхронизирующемся шифровании неправильно будут расшифрованы ''M'' бит.
===Сравнение с блочным шифром===
Самосинхронизирующиеся шифры могут рассматриваться как [[Блочный шифр|блочные шифры]] работающие в [[Режим обратной связи по шифротексту|однобитном режиме обратной связи]]. Для шифрования одного бита открытого текста требуется выполнения функции шифрования целого блока, работающая значительно медленнее функции шифрования самосинронизирующегося шифра. Поэтому, блочный шифр в данном режиме работает значительно медленнее.
Еще одной важной особенностью самосинхронизирующихся шифров является то, что каждый бит открытого текста влияет на ''весь'' шифртекст. Сравнивая с блочным шифром, не являющийся безопасным при шифровании текста с большой [[Избыточность информации|избыточностью]], самосинхронизирующиеся шифры дают лучшие показатели при атаке на основе избыточности открытого текста.<ref>{{Статья|автор=Ueli M. Maurer|заглавие=New Approaches to the Design of Self-Synchronizing Stream Ciphers|ссылка=https://link.springer.com/chapter/10.1007/3-540-46416-6_39|язык=en|издание=Advances in Cryptology — EUROCRYPT ’91|тип=|издательство=Springer, Berlin, Heidelberg|год=1991-04-08|месяц=|число=|том=|номер=|страницы=459-460|isbn=3540464166|issn=|doi=10.1007/3-540-46416-6_39}}</ref>

Версия от 21:02, 16 ноября 2017

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

Структура шифра

Шифрование очередного бита открытого текста производится за счет операции двоичного сложения с соответствующим битом ключа :

,

где бит ключа определяется функцией шифрования , зависящей от меняющегося по определенному правилу ключа шифрования K и от предшествующих M символов шифртекста, смещенных на b бит:

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

Важно отметить, что для расшифровки первых M бит открытого текста необходимо определить вектор инициализации:

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

Криптографические свойства

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

Пусть получена последовательность шифртекста функции шифрования при одном ключе K :

Без ограничения общности предположим, что задержка b=0.

При заданном условии

Определим минимальное значение памяти шифра M, чтобы предотвратить описанную уязвимость. Рассмотрим поток шифртекста как последовательность случайных чисел. Вероятность q(N, M) того, что в случайной бинарной последовательности длины N все подпоследовательности длины M различны, равна:

Воспользовавшись разложением Тэйлора для малых x, получим:

Зададим допустимую вероятность p повторения 2-х подпоследовательностей длины M внутри последовательности длины N. Длина последовательности N задается при одном ключе K функци шифровани .

Отсюда находим, что память шифрования M должна быть выбрана:

Например, для и , оценка на память шифрования - . С другой стороны, следует учесть возможность появлений ошибок при передачи данных по каналу связи. Ошибка в одном бите при передаче шифртекста распространяется на следующие M бит при расшифровке.Следовательно, память шифрования M должна быть выбрана как можно меньше. Учитывая приведенные аргументы, для конкретного примера выбрать кажется разумным для удовлетворения условий безопасности и устойчивости к ошибкам.[2]

Сравнение самосинхронизирующихся поточных шифров с аналогами

Сравнение с синхронными поточными шифрами

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

Сравнение с блочным шифром

Самосинхронизирующиеся шифры могут рассматриваться как блочные шифры работающие в однобитном режиме обратной связи. Для шифрования одного бита открытого текста требуется выполнения функции шифрования целого блока, работающая значительно медленнее функции шифрования самосинронизирующегося шифра. Поэтому, блочный шифр в данном режиме работает значительно медленнее. Еще одной важной особенностью самосинхронизирующихся шифров является то, что каждый бит открытого текста влияет на весь шифртекст. Сравнивая с блочным шифром, не являющийся безопасным при шифровании текста с большой избыточностью, самосинхронизирующиеся шифры дают лучшие показатели при атаке на основе избыточности открытого текста.[3]

  1. Matthew Robshaw, Olivier Billet. New Stream Cipher Designs - The eSTREAM Finalists. — Springer, 2008. — С. 210-213.
  2. Ueli M. Maurer. New Approaches to the Design of Self-Synchronizing Stream Ciphers (англ.) // Advances in Cryptology — EUROCRYPT ’91. — Springer, Berlin, Heidelberg, 1991-04-08. — P. 465–466. — ISBN 3540464166. — doi:10.1007/3-540-46416-6_39.
  3. Ueli M. Maurer. New Approaches to the Design of Self-Synchronizing Stream Ciphers (англ.) // Advances in Cryptology — EUROCRYPT ’91. — Springer, Berlin, Heidelberg, 1991-04-08. — P. 459-460. — ISBN 3540464166. — doi:10.1007/3-540-46416-6_39.