Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 [ 10 ] 11 12 13 14 15 16 17

Набивка

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

Pn-2

Cn.2

Pn-1

Cn-1

P n (j битов длиной)


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

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

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

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

Pn-1

Cn-1


Ф Cn-2

Pn-1

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

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

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



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

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

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

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

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

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

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

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

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

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

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

Ci =pi © ki

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

p. = Ci © ki

Так как

pi © ki © ki=pi

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

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

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



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



Поток

ключей К/ Поток > Шифротекст

ключей К/

S

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

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

Шифрование

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

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

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

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

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

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

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

КЛЮЧ К


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



0 1 2 3 4 5 6 7 8 9 [ 10 ] 11 12 13 14 15 16 17