logo
MethodFull

Устройство генератора потока ключей.

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

В самосинхронизирующихся потоковых шифрах каждый бит потока ключей является функцией фиксиро­ванного числа предыдущих битов шифротекста. Военные называют этот шифр автоключом шифротек-ста (ciphertext auto key, CTAK). Основная идея была запатентована в 1946.

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

Самосинхронизирующийся генератор потока ключей.

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

В интеллектуальных реализациях этого режима каждое сообщение начинается случайным заголовком дл и-ной п битов. Этот заголовок шифруется, передается и затем расшифровывается . Расшифровка будет неправиль­ной, но после этих п битов оба генератора потока ключей будут синхронизированы.

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

Вопросы безопасности

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

Синхронные потоковые шифры

В синхронном потоковом шифре поток ключей генерируется независимо от потока сообщения. Военные называют этот шифр ключевым автоключом (Key Auto-Key, КАК). При шифровании генератор потока клю­чей один за другим выдает биты потока ключей. При дешифрировании другой генератор потока ключей один за другим выдает идентичные биты потока ключей. Это работает, если оба генератора синхронизированы. Если один из них пропускает один из циклов, или если бит шифротекста теряется при передаче , то после ошибки ка­ждый символ шифротекста будет расшифрован неправильно.

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

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

Генератор должен выдавать один и тот же поток ключей и для шифрования, и для дешифрирования, след о-вательно, выход генератора должен быть предопределен. Если он реализуется на конечном автомате (т.е., ко м-пьютере), последовательность со временем повторится. Такие генераторы потока ключей называются периоди­ческими. За исключением одноразовых блокнотов все генераторы потока ключей являются периодическими .

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

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

Синхронные потоковые шифры также предохраняют от любых вставок и удалений шифротекста , так как они приводят к потере синхронизации и будут немедленно обнаружены. Однако, они не защищают полностью от битовых сбоев. Как и при блоковых шифрах в режиме CFB, Мэллори может изменить отдельные биты потока. Если ему известен открытый текст, он может изменить эти биты так, чтобы эти биты дешифрировались так, как ему надо. Дальнейшие биты при дешифрировании превратятся в чепуху (пока система не восстановится) , но в определенных приложениях Мэллори может принести заметный ущерб .

Выбор режима шифра

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

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

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

Для шифрования файлов лучше всего подходит СВС. Значительно увеличивается безопасность, и при появ­лении ошибок в хранимых данных почти никогда не бывает сбоев синхронизации. Если ваше приложение -программное, то СВС почти всегда будет лучшим выбором.