Шифрование больших сообщений и потоков данных

Эта проблема появилась сравнительно недавно с появлением средств мультимедиа и сетей с высокой пропускной способностью, обеспечивающих передачу мультимедийных данных.

До сих пор говорилось о защите сообщений. При этом под ними подразумевалась скорее некоторая текстовая или символическая информация. Однако в современных ИС и информационных системах начинают применяться технологии, которые требуют передачи существенно больших объемов данных. Среди таких технологий:

* факсимильная, видео и речевая связь;

* голосовая почта;

* системы видеоконференций.

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

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

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

Генератор потока ключей (называемый генератором с бегущим клю­чом) выдает по­ток битов: k 1, k 2, k 3 ,…,ki. Этот поток битов (называемый бегущим ключом) и поток битов открытого текста x 1, x 2, x 3 ,…,xi сумми­руются по модулю 2 (операция Å или XOR-«исключающее ИЛИ»), и в резу­льтате получается поток битов шифртекста:

сi = xi Å ki.

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

xi = сi Å ki.

Отметим, что для получения ключа по формуле

ki = сi Å xi

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

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

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

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

Поточные шифры, ориентированные на программную реализацию. Алгоритм RC4

Примером стандартного потокового алгоритма является алгоритм RC4 - это поточный шифр с переменным размером ключа. Шифр разра­бо­тан в 1987 г. Ривестом (R. Rivest) для RSA Data Security, Inc (там же и тем же автором, что и RC5).

Он работает в режиме OFB: поток ключей не зависит от открытого текста. Используется S-блок размером 8x8: S 0 S 1,..., S 255. Элементы пред­став­ляют собой перестановку чисел от 0 до 255, а перестановка яв­ляется функцией ключа переменной длины. В алгоритме применяются два счет­чика, i и j, с нулевыми начальными значениями. Для генерации случай­ного байта выполняются следующие вычисления:

i = (i + 1) mod 256;

j = (j + Si)mod 256.

Поменять местами Si и Sj.

t= (Si + Sj) mod 256; k = St.

К используется в операции Å с открытым текстом для получения шифртекста или в операции Å с шифротекстом для получения отк­рытого текста. Шифрование выполняется примерно в 10 раз быстрее, чем в DES. Так же несложна и инициали­зация S -блока. Сначала S -блок заполняется по правилу: S 0=0, S 1=1,…., S 255=255. После этого ключ за­писывается в массив: К 0 1 ,...,К 255. Затем при начальном значении j = 0 в цикле выполняются следующие вычисления:

for i = 0 to 255;

j = (j + St + ki)mod 256.

Поменять местами Si и Sj.

Компания RSA Data Security, Inc. утверждает, что алгоритм устойчив к диф­ференциальному и линейному криптоанализу и что он в высокой степени нелине­ен. S -блок медленно изменяется при использовании: i и j обеспечивают случайное изменение каждого элемента.

RC4 входит в десятки коммерческих продуктов, включая Lotus Notes, AOCE компа­нии Aррle Comрuter и Oracle Secure SQL. Этот алго­ритм также является частью спецификации стандарта сотовой цифровой пакетной передачи данных - CDРD (Cellular Digital Рacket Data).

Алгоритм SEAL

SEAL — это эффективный поточный шифр, разработанный в IBM Рогэвэем (Р. Rogaway) и Копперсмитом (D. Coррersmith). Алгоритм опти­мизирован для 32-битовых процессоров. Для нормаль­ной работы ему нужно восемь 32-битовых регистров и память на неско­лько килобайтов.

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

Особенность SEAL состоит в том, что он в действительности явля­ется не тра­диционным поточным шифром, а представляет собой семейство псевдослучайных функций. При 160-битовом ключе k и 32-битовом ре­гис­т­ре п SEAL растягивает п в L -битовую строку k (n). L может прини­мать любое значение, меньшее 64 Кбайт.

SEAL использует следующее правило: если k выбирается случай­ным образом, то k (n)должно быть неотличимо от случайной L -битовой функции п.

Практический эффект того, что SEAL является семейством псевдо­случайных функций, состоит в том, что он удобен в ряде приложений, где неприменимы традиционные поточные шифры.

При использовании большинства поточных шифров создается одно­направленная последовательность бит: единственным способом опреде­лить i -й бит (зная ключ и позицию i) является генерирование всех битов вплоть до i -го. Отличие семейства псевдослучайных функций состоит в том. что можно легко получить доступ к любой позиции ключевой последова­тельности.

Например, для шифрования жесткого диска, состоящего из множест­ва 512-байтовых секторов, можно воспользоваться семейством псевдо­случайных функ­ций, подобных SEAL, и выполнить XOR каждого секто­ра с k (n). Это то же самое, как если бы была выполнена операция XOR всего диска с длинной псевдослучай­ной функцией, причем любая часть этой длинной последовательности бит может быть вычислена независи­мо.

Семейство псевдослучайных функций также упрощает проблему син­хрониза­ции, встречающуюся в стандартных поточных шифрах, — мож­но зашифровать хп (п- епередаваемое сообщение) на ключе k,выполнив XOR хп и k (n). Получателю не нужно хранить состояние шифра для вос­становления хп, ему не приходится беспокоиться и о потерянных сооб­щениях, влияющих на процесс дешифрования.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: