Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Вектор инициализации



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

У ряда сообщений может быть одинаковый заголовок - тема письма, строка "From" или еще что-нибудь. Хо­тя повтор блока будет невозможен, такое одинаковое начало может предоставить криптоаналитику какую-нибудь полезную информацию.

Избежать этого можно, шифруя в качестве первого блока какие-то случайные данные. Этот блок случайных данных называется вектором инициализации (initialization vector, IV), инициализирующей переменной или на­чальным значением сцепления. IV не имеет никакого смыслового значения, он используется только для того, чтобы сделать каждое сообщение уникальным. Когда получатель расшифровывает этот блок, он испольтзует его только для заполнения регистра обратной связи. Хорошим IV служит метка времени. Или используйте какие-нибудь случайные биты.

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

IV не должен храниться в секрете, он может передаваться открыто вместе с шифротекстом. Если вы не по­нимаете почему, рассмотрите следующий довод. Пусть наше сообщение состоит из нескольких блоков: В,, В2,..., Bt. В, шифруется вместе с IV. В2 шифруется с использованием шифротекста В, в роли IV. В3 шифруется с использованием шифротекста В2 в роли IV, и так далее. Итак, если количество блоков - и, то п-1 "векторов ини­циализации" открыты, даже если первоначальный IV хранится в секрете. Поэтому причин хранить в секрете IV нет, IV - это просто блок-заглушка, можно считать его нулевым блоком сцепления В0.


Набивка

Набивка используется также, как и в режиме ЕСВ, но в некоторых приложениях размер шифротекст должен в точности совпадать с размером открытого текста. Может быть, зашифрованный файл должен занять в точно­сти тот же объем памяти, что и файл открытого текста. В этом случае последний короткий блок придется шиф­ровать иначе. Пусть последний блок состоит из / битов. Зашифровав последний полный блок, снова зашифруйте шифротекст, выберите старшие / битов и выполните для них и короткого блока операцию XOR, создавая шиф­ротекст. Эта процедура показана на 5-й.



Рп-2

О

Ек


Рп-1

Gt;в

Ек


Рп (/' битов длиной)



Сп-2


Сп-1


С„ (j битов длиной)


Рис. 9-4. Шифрование короткого последнего блока в режимеСВС.

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

Лучшим способом является похищение щифротекста (см. 4th) [402]. Р„_7 - последний полный блок открытого текста, Р„ - заключительный, короткий блок открытого текста. С„., - последний полный блок шифротекста, С„ -заключительный, короткий блок шифротекста. С - это просто промежуточный результат, не являющийся ча­стью переданного шифротекста. Преимуществом этого метода является то, что все биты открытого текста соо б-щения проходят через алгоритм шифрования.





Рис. 9-5. Похищение шифротекста в режимеСВС.

Распространение ошибки

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


ленный открытый текст будет содержать ту же единственную ошибку.

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

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

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

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

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

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

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

Наконец, хотя структура открытого текста маскируется сцеплением, структура очень длинных сообщений все равно будет заметна. Парадокс дня рождения предсказывает, что после 2ыг блоков, где m - размер блока, появ­ляются одинаковые блоки. Для 64-битового блока длина такого сообщения примерно равны 32 Гбайтам. По­добная проблема возникает только для сообщений немаленького размера.

9.4 Потоковые шифры

Потоковые шифры преобразуют открытый текст в шифротекст по одному биту за операцию. Простейшая реализация потокового шифра показана на 3-й. Генератор потока ключей (иногда называемый генератором с бегущим ключом) выдает поток битов: к,, к2, к3,..., к,. Этот поток ключей (иногда называемый бегущим ключом) и поток битов открытого текста, р,, р2, р3,..., р„ подвергаются операции "исключающее или", и в р е-зультате получаетсяы поток битов шифротекста.

с, =pt © к,

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

Pt = с, © к,

Так как

Pt ®ki®ki= pi

это работает правильно.

Безопасность системы полностью зависит от свойств генератора потока ключей. Если генератор потока клю­чей выдает бесконечную строку нулей, шифротекст будет совпадать с открытым текстом, и все операция будет бессмысленна. Если генератор потока ключей выплевывает повторяющийся 16-битовый шаблон, алгоритм б у-дет являться простым XOR с пренебрежимо малой безопасностью (см. раздел 1.4). Если генератор потока клю­чей выплевывает бесконечный поток случайных (по настоящему, а не псевдослучайных - см. раздел 2.8) битов, вы получаете одноразовый блокнот и идеальную безопасность.

На деле безопасность потокового шифра находится где-то между простым XOR и одноразовым блокнотом.


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






Pi


Поток ключей Ki

<в—

Открытый текст


Шифротекст

Ci


Поток ключей Ki

Открытый текст


Pi



Шифрование


Дешифрирование


Рис. 9-6. Потоковый шифр

Однако, если генератор потока ключей при каждом включении создает один и тот же битовый поток, то ис­пользующую его криптосистему взломать нетрудно. Покажем на примере, почему это так.

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

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

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

Генератор потока ключей состоит из трех основных частей (см. 2nd). Внутреннее состояние описывает теку­щее состояние генератора потока ключей. Два генератора потока ключей, с одинаковым ключом и одинаковым внутренним состоянием, выдают одинаковые потоки ключей. Функция выхода по внутреннему состоянию гене­рирует бит потока ключей. Функция следующего состояния по внутреннему состоянию генерирует новое вну т-реннее состояние.



КЛЮЧ K


Рис. 9-7. Устройство генератора потока ключей.


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

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

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

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

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

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

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

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

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

9.6 Режим обратной связи по шифру

Блочный шифр также может быть реализованы как самосинхронизирующийся потоковый шифр, такой р е-жим называется режимом обратной связи по шифру (cipher-feedback, CFB). В режиме СВС шифрование не мог­ло начаться, пока не получен целый блок данных. Это создает проблемы для некоторых сетевых приложений. Например, в безопасной сетевой среде терминал должен иметь возможность передавать главному компьютеру каждый символ сразу, как только он введен. Если данные нужно обрабатывать байтами, режим СВС также не работает.

В режиме CFB единица зашифрованных данных может быть меньше размера блока. В следующем примере каждый раз шифруется только один символ ASCII (это называется 8-битовым шифрованием), но в числе 8 нет ничего волшебного. Вы можете шифровать данные по одному биту с помощью 1-битового CFB, хотя использо­вание для единственного бита полного шифрования блочным шифром потребует много ресурсов, потоковый шифр в этом случае был бы идеей получше. (Уменьшение количества циклов блочного фильтра для повышения скорости не рекомендуется [1269].) Можно также использовать 64-битовый CFB, или любой и-битовый CFB, где п больше или равно размеру блока.


На 0-й показан 8-битовый режим CFB, работающий с 64-битовым алгоритмом. Блочный алгоритм в режиме CFB работает с очередью, размер которой равен размеру используемого блока. Сначала очередь заполнена IV, как и в режиме СВС. Очередь шифруется и для крайних левых восьми битов результата выполняется XOR с первыми 8-битовым символом открытого текста для получения первого 8-битового символа шифротекста. Т е-перь этот символ передается. Те же восемь битов также передвигаются на место крайних правых восьми битов очереди, а крайними левыми битами становятся следующие восемь битов. Крайние восемь левых битов отбра­сывается. Следующий символ открытого текста шифруется тем же способом. Дешифрирование является обрат­ным процессом. И шифрующей, и дешифрирующей стороной блочный алгоритм используется в режиме шифр о-вания.

Если размер блока алгоритма - п, то -битовый CFB выглядит следующим образом (см. -1-й):

С, = Р, ®Ek(C,j) Р, = С, ®Ек(С,.,)


Сдвиговый регистр


Сдвиговый регистр


V/


Ключ К


Шифрование


Ключ К


Шифрование



Самый левый байт


к,


Самый левый байт


к,



pi


Ф


С/


С/


Е


pi



(а) Шифрование


(б) Дешифрирование


Рис. 9-9. Режим 8-битовой обратной связи по шифру.

Рп-1 Рп Рп+1


О


Ек


О г-


Ек


О



Сп-1


сп


Сп+1


Рис. 9-10. n-битовый CBF с n-битовым алгоритмом.

Как и режим СВС, режим CFB связывает вместе символы открытого текста так, что шифротекст зависит от всего предшествующего открытого текста.





Дата публикования: 2014-11-03; Прочитано: 1110 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.015 с)...