18:03 Потоковый шифр | |
Потоковый шифр представляет собой симметричный ключ шифра , где цифры открытого текста в сочетании с псевдослучайной шифра значного потока ( ключевого потока ). В потоковом шифре каждая цифра открытого текста шифруется по одной с соответствующей цифрой потока ключей, чтобы получить цифру потока шифрованного текста. Поскольку шифрование каждой цифры зависит от текущего состояния шифра, оно также известно как шифр состояния . На практике цифра обычно является битом, а операция объединения является исключающей или (XOR). Псевдослучайный ключевой поток обычно генерируется последовательно из случайного начального значения с использованием цифровых сдвиговых регистров . Начальное значение служит в качестве криптографического ключа для расшифровки зашифрованного потока. Потоковые шифры представляют собой другой подход к симметричному шифрованию по сравнению с блочными шифрами . Блочные шифры работают с большими блоками цифр с фиксированным, неизменным преобразованием. Это различие не всегда четко: в некоторых режимах работыПримитив блочного шифра используется таким образом, что он эффективно действует как потоковый шифр. Потоковые шифры обычно работают с более высокой скоростью, чем блочные шифры, и имеют более низкую аппаратную сложность. Однако потоковые шифры могут быть подвержены серьезным проблемам безопасности, если используются неправильно (см. Атаки потокового шифра ); в частности, одно и то же начальное состояние (начальное число) никогда не должно использоваться дважды. Потоковые шифры можно рассматривать как аппроксимирующие действие проверенного небьющегося шифра, одноразовой площадки (OTP). Одноразовый блокнот использует ключевой поток из совершенно случайных цифр. Поток ключей объединяется с цифрами открытого текста по одной за раз, чтобы сформировать зашифрованный текст. В 1949 году Клод Э. Шеннон доказал, что эта система безопасна . Однако поток ключей должен генерироваться случайным образом, по крайней мере, такой же длины, что и открытый текст, и его нельзя использовать более одного раза. Это делает систему громоздкой для реализации во многих практических приложениях, и в результате одноразовая накладка не получила широкого применения, за исключением наиболее важных приложений. Генерация ключей, их распределение и управление имеют решающее значение для этих приложений. Потоковый шифр использует намного меньший и более удобный ключ, такой как 128 бит. На основе этого ключа он генерирует псевдослучайный поток ключей, который можно комбинировать с цифрами открытого текста аналогично одноразовому пэду. Однако это обходится дорого. Ключевой поток теперь псевдослучайный и поэтому не является действительно случайным. Доказательство безопасности, связанное с одноразовым блокнотом, больше не имеет места. Потоковый шифр вполне может быть совершенно небезопасным. Потоковый шифр генерирует последовательные элементы потока ключей на основе внутреннего состояния. Это состояние обновляется по существу двумя способами: если состояние изменяется независимо от сообщений открытого текста или зашифрованного текста, шифр классифицируется как синхронный потоковый шифр. Напротив, самосинхронизирующиеся потоковые шифры обновляют свое состояние на основе предыдущих цифр зашифрованного текста. В синхронном потоковом шифре поток псевдослучайных цифр генерируется независимо от сообщений открытого и зашифрованного текста, а затем объединяется с открытым текстом (для шифрования) или зашифрованным текстом (для дешифрования). В наиболее распространенной форме используются двоичные цифры ( биты ), а поток ключей объединяется с открытым текстом с использованием исключающей или операции (XOR). Это называется двоичным аддитивным потоковым шифром . В синхронном потоковом шифре отправитель и получатель должны быть точно в шаге, чтобы расшифровка была успешной. Если цифры добавляются или удаляются из сообщения во время передачи, синхронизация теряется. Для восстановления синхронизации можно систематически пытаться использовать различные смещения для получения правильного дешифрования. Другой подход - пометить зашифрованный текст маркерами в обычных точках на выходе. Однако, если цифра повреждена при передаче, а не добавлена или потеряна, затрагивается только одна цифра в открытом тексте, и ошибка не распространяется на другие части сообщения. Это свойство полезно, когда частота ошибок при передаче высока; однако это снижает вероятность того, что ошибка будет обнаружена без дополнительных механизмов. Более того, благодаря этому свойству синхронные потоковые шифры очень восприимчивы к активным атакам : если злоумышленник может изменить цифру в зашифрованном тексте, он сможет внести предсказуемые изменения в соответствующий бит открытого текста; например, переключение бита в зашифрованном тексте приводит к переключению того же бита в незашифрованном тексте. Другой подход использует несколько из предыдущих цифр N зашифрованного текста для вычисления потока ключей. Такие схемы известны как самосинхронизирующиеся потоковые шифры , асинхронные потоковые шифры или автоматический ключ шифрованного текста ( CTAK ). Идея самосинхронизации была запатентована в 1946 году и имеет преимущество в том, что получатель автоматически синхронизируется с генератором потока ключей после получения N цифр зашифрованного текста, что упрощает восстановление, если цифры отбрасываются или добавляются в поток сообщений. Однозначные ошибки ограничены по своему воздействию, затрагивая только до N символов открытого текста. Пример самосинхронизирующимися потокового шифра представляет собой блочный шифр в шифр обратной связи (CFB) режиме . Поскольку LFSR по своей природе являются линейными, один из методов удаления линейности состоит в том, чтобы подать выходные сигналы нескольких параллельных LFSR в нелинейную булеву функцию для формирования комбинированного генератора . Различные свойства такой функции объединения имеют решающее значение для обеспечения безопасности результирующей схемы, например, чтобы избежать атак корреляции . Обычно LFSRs шагают регулярно. Один из подходов к введению нелинейности состоит в том, чтобы LFSR синхронизировался нерегулярно, управляя выходом второго LFSR. Такие генераторы включают в себя генератор стоп-энд-гоу , на генератор переменного шага и усадки генератора . Переменный шаг генератор состоит из трех ЛРСОС, который мы будем называть LFSR0, LFSR1 и LFSR2 для удобства. Выход одного из регистров решает, какой из двух других будет использоваться; например, если LFSR2 выдает 0, LFSR0 синхронизируется, а если выдает 1, LFSR1 синхронизируется. Выход - исключающее ИЛИ последнего бита, созданного LFSR0 и LFSR1. Начальное состояние трех LFSR - это ключ. Остановочный генератор (Beth and Piper, 1984) состоит из двух LFSR. Один LFSR синхронизируется, если выходной сигнал секунды равен 1, в противном случае он повторяет свой предыдущий выходной сигнал. Этот выход затем (в некоторых версиях) объединяется с выходом третьего LFSR, синхронизируемого с постоянной скоростью. Усадка генератор использует другой подход. Используются два LFSR, оба регулярно синхронизируются. Если выход первого LFSR равен 1, выход второго LFSR становится выходом генератора. Однако, если первый LFSR выдает 0, выход второго сбрасывается, и генератор не выдает никаких битов. Этот механизм страдает от временных атак на второй генератор, так как скорость на выходе является переменной в зависимости от состояния второго генератора. Это может быть облегчено путем буферизации вывода. Чтобы потоковый шифр был безопасным, его поток ключей должен иметь большой период, и должно быть невозможно восстановить ключ или внутреннее состояние шифра из потока ключей. Криптографы также требуют, чтобы в потоке ключей не было даже незначительных искажений, которые позволили бы злоумышленникам отличить поток от случайного шума, и не было обнаружено обнаруживаемых взаимосвязей между потоками ключей, которые соответствуют связанным ключам или связанным криптографическим одноразовым номерам . Это должно быть верно для всех ключей (не должно быть слабых ключей ), даже если злоумышленник может знать или выбрать какой-нибудь открытый текст или зашифрованный текст . Как и в случае других атак в криптографии, атаки потокового шифра могут быть сертификационными, поэтому они не обязательно являются практическими способами взлома шифра, но указывают на то, что шифр может иметь другие недостатки. Безопасное использование безопасного синхронного потокового шифра требует, чтобы никто никогда не использовал один и тот же поток ключей дважды. Как правило, это означает, что для каждого вызова шифра должен быть указан другой одноразовый номер или ключ. Разработчики приложений также должны понимать, что большинство потоковых шифров обеспечивают не аутентичность, а конфиденциальность : зашифрованные сообщения все еще могут быть изменены при передаче. Короткие периоды для потоковых шифров были практической проблемой. Например, 64-битные блочные шифры, такие как DES, могут использоваться для генерации потока ключей в режиме обратной связи с выходом (OFB). Однако, когда не используется полная обратная связь, результирующий поток имеет период в среднем около 2 32 блоков; для многих приложений этот период слишком мал. Например, если шифрование выполняется со скоростью 8 мегабайт в секунду, поток с периодом 2 32 блока будет повторяться примерно через полчаса Потоковые шифры часто используются из-за их скорости и простоты реализации в аппаратных средствах и в приложениях, где открытый текст поставляется в количествах непостижимой длины, таких как безопасное беспроводное соединение. Если в этом типе приложений должен использоваться блочный шифр (не работающий в режиме потокового шифра), разработчик должен будет выбрать либо эффективность передачи, либо сложность реализации, поскольку блочные шифры не могут напрямую работать с блоками короче, чем их размер. Например, если 128-битный блочный шифр получил отдельные 32-битные пакеты открытого текста, три четверти передаваемых данных будут заполнены . Блочные шифры должны использоваться при краже зашифрованного текста или при окончании остаточного блока режим, чтобы избежать заполнения, в то время как потоковые шифры устраняют эту проблему, естественно работая на самом маленьком блоке, который может быть передан (обычно байты). | |
|
Всього коментарів: 0 | |