Анимация
JavaScript
|
Главная Библионтека Набивка Набивка используется также, как и в режиме 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
Рис. 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 и одноразовым блокнотом. Генератор потока ключей создает битовый поток, который похож на случайный, но в действительности дете р-минирован и может быть безошибочно воспроизведен при дешифрировании . Чем ближе выход генератора потока ключей к случайному, тем больше времени потребуется криптоаналитику, чтобы взломать шифр .
Шифрование Дешифрирование Рис. 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 |