Классификация алгоритмов шифрования
1. Симметричные (с секретным, единым ключом, одноключевые, single-key).
1.1. Потоковые (шифрование потока данных):
с одноразовым или бесконечным ключом (infinite-key cipher);
с конечным ключом (система Вернама - Vernam);
на основе генератора псевдослучайных чисел (ПСЧ).
1.2. Блочные (шифрование данных поблочно):
1.2.1. Шифры перестановки (permutation, P-блоки);
1.2.2. Шифры замены (подстановки, substitution, S-блоки):
моноалфавитные (код Цезаря);
полиалфавитные (шифр Видженера, цилиндр Джефферсона, диск Уэтстоуна, Enigma);
1.2.3. составные (таблица 1):
Lucipher (фирма IBM, США);
DES (Data Encryption Standard, США);
FEAL-1 (Fast Enciphering Algoritm, Япония);
IDEA/IPES (International Data Encryption Algorithm/
Improved Proposed Encryption Standard, фирма Ascom-Tech AG, Швейцария);
B-Crypt (фирма British Telecom, Великобритания);
ГОСТ 28147-89 (СССР); * Skipjack (США).
2. Асимметричные (с открытым ключом, public-key):
Диффи-Хеллман DH (Diffie, Hellman);
Райвест-Шамир-Адлeман RSA (Rivest, Shamir, Adleman);
Эль-Гамаль ElGamal.
Кроме того, есть разделение алгоритмов шифрования на собственно шифры (ciphers) и коды (codes). Шифры работают с отдельными битами, буквами, символами. Коды оперируют лингвистическими элементами (слоги, слова, фразы).
Симметричные алгоритмы шифрования
Симметричные алгоритмы шифрования (или криптография с секретными ключами) основаны на том, что отправитель и получатель информации используют один и тот же ключ. Этот ключ должен храниться в тайне и передаваться способом, исключающим его перехват.
Обмен информацией осуществляется в 3 этапа:
отправитель передает получателю ключ (в случае сети с несколькими абонентами у каждой пары абонентов должен быть свой ключ, отличный от ключей других пар);
отправитель, используя ключ, зашифровывает сообщение, которое пересылается получателю;
получатель получает сообщение и расшифровывает его.
Если для каждого дня и для каждого сеанса связи будет использоваться уникальный ключ, это повысит защищенность системы.
Потоковые шифры
В потоковых шифрах, т. е. при шифровании потока данных, каждый бит исходной информации шифруется независимо от других с помощью гаммирования.
Гаммирование - наложение на открытые данные гаммы шифра (случайной или псевдослучайной последовательности единиц и нулей) по определенному правилу. Обычно используется "исключающее ИЛИ", называемое также сложением по модулю 2 и реализуемое в ассемблерных программах командой XOR. Для расшифровывания та же гамма накладывается на зашифрованные данные.
При однократном использовании случайной гаммы одинакового размера с зашифровываемыми данными взлом кода невозможен (так называемые криптосистемы с одноразовым или бесконечным ключом). В данном случае "бесконечный" означает, что гамма не повторяется.
В некоторых потоковых шифрах ключ короче сообщения. Так, в системе Вернама для телеграфа используется бумажное кольцо, содержащее гамму. Конечно, стойкость такого шифра не идеальна.
Понятно, что обмен ключами размером с шифруемую информацию не всегда уместен. Поэтому чаще используют гамму, получаемую с помощью генератора псевдослучайных чисел (ПСЧ). В этом случае ключ - порождающее число (начальное значение, вектор инициализации, initializing value, IV) для запуска генератора ПСЧ. Каждый генератор ПСЧ имеет период, после которого генерируемая последовательность повторяется. Очевидно, что период псевдослучайной гаммы должен превышать длину шифруемой информации.
Генератор ПСЧ считается корректным, если наблюдение фрагментов его выхода не позволяет восстановить пропущенные части или всю последовательность при известном алгоритме, но неизвестном начальном значении [4, c. 63].
При использовании генератора ПСЧ возможны несколько вариантов [4, c. 126 - 128]:
1. Побитовое шифрование потока данных. Цифровой ключ используется в качестве начального значения генератора ПСЧ, а выходной поток битов суммируется по модулю 2 с исходной информацией. В таких системах отсутствует свойство распространения ошибок.
2. Побитовое шифрование потока данных с обратной связью (ОС) по шифртексту. Такая система аналогична предыдущей, за исключением того, что шифртекст возвращается в качестве параметра в генератор ПСЧ. Характерно свойство распространения ошибок. Область распространения ошибки зависит от структуры генератора ПСЧ.
3. Побитовое шифрование потока данных с ОС по исходному тексту. Базой генератора ПСЧ является исходная информация. Характерно свойство неограниченного распространения ошибки.
4. Побитовое шифрование потока данных с ОС по шифртексту и по исходному тексту.
Блочные шифры
При блочном шифровании информация разбивается на блоки фиксированной длины и шифруется поблочно. Блочные шифры бывают двух основных видов:
шифры перестановки (transposition, permutation, P-блоки);
шифры замены (подстановки, substitution, S-блоки).
Шифры перестановок переставляют элементы открытых данных (биты, буквы, символы) в некотором новом порядке. Различают шифры горизонтальной, вертикальной, двойной перестановки, решетки, лабиринты, лозунговые и др.
Шифры замены заменяют элементы открытых данных на другие элементы по определенному правилу. Paзличают шифры простой, сложной, парной замены, буквенно-слоговое шифрование и шифры колонной замены. Шифры замены делятся на две группы:
моноалфавитные (код Цезаря) ;
полиалфавитные (шифр Видженера, цилиндр Джефферсона, диск Уэтстоуна, Enigma).
В моноалфавитных шифрах замены буква исходного текста заменяется на другую, заранее определенную букву. Например в коде Цезаря буква заменяется на букву, отстоящую от нее в латинском алфавите на некоторое число позиций. Очевидно, что такой шифр взламывается совсем просто. Нужно подсчитать, как часто встречаются буквы в зашифрованном тексте, и сопоставить результат с известной для каждого языка частотой встречаемости букв.
В полиалфавитных подстановках для замены некоторого символа исходного сообщения в каждом случае его появления последовательно используются различные символы из некоторого набора. Понятно, что этот набор не бесконечен, через какое-то количество символов его нужно использовать снова. В этом слабость чисто полиалфавитных шифров.
В современных криптографических системах, как правило, используют оба способа шифрования (замены и перестановки). Такой шифратор называют составным (product cipher). Oн более стойкий, чем шифратор, использующий только замены или перестановки.
Блочное шифрование можно осуществлять двояко [4, c.129-130]:
1. Без обратной связи (ОС). Несколько битов (блок) исходного текста шифруются одновременно, и каждый бит исходного текста влияет на каждый бит шифртекста. Однако взаимного влияния блоков нет, то есть два одинаковых блока исходного текста будут представлены одинаковым шифртекстом. Поэтому подобные алгоритмы можно использовать только для шифрования случайной последовательности битов (например, ключей). Примерами являются DES в режиме ECB и ГОСТ 28147-89 в режиме простой замены.
2. С обратной связью. Обычно ОС организуется так: предыдущий шифрованный блок складывается по модулю 2 с текущим блоком. В качестве первого блока в цепи ОС используется инициализирующее значение. Ошибка в одном бите влияет на два блока - ошибочный и следующий за ним. Пример - DES в режиме CBC.
Генератор ПСЧ может применяться и при блочном шифровании [4, c. 128]:
1. Поблочное шифрование потока данных. Шифрование последовательных блоков (подстановки и перестановки) зависит от генератора ПСЧ, управляемого ключом.
2. Поблочное шифрование потока данных с ОС. Генератор ПСЧ управляется шифрованным или исходным текстом или обоими вместе.
Весьма распространен федеральный стандарт США DES (Data Encryption Standard) [1, 5], на котором основан международный стандарт ISO 8372-87. DES был поддержан Американским национальным институтом стандартов (American National Standards Institute, ANSI) и рекомендован для применения Американской ассоциацией банков (American Bankers Association, ABA). DES предусматривает 4 режима работы:
ECB (Electronic Codebook) электронный шифрблокнот;
CBC (Cipher Block Chaining) цепочка блоков;
CFB (Cipher Feedback) обратная связь по шифртексту;
OFB (Output Feedback) обратная связь по выходу.
ГОСТ 28147-89 - отечественный стандарт на шифрование данных [8]. Стандарт включает три алгоритма зашифровывания (расшифровывания) данных: режим простой замены, режим гаммирования, режим гаммирования с обратной связью - и режим выработки имитовставки.
С помощью имитовставки можно зафиксировать случайную или умышленную модификацию зашифрованной информации. Вырабатывать имитовставку можно или перед зашифровыванием (после расшифровывания) всего сообщения, или одновременно с зашифровыванием (расшифровыванием) по блокам. При этом блок информации шифруется первыми шестнадцатью циклами в режиме простой замены, затем складывается по модулю 2 со вторым блоком, результат суммирования вновь шифруется первыми шестнадцатью циклами и т. д.
Алгоритмы шифрования ГОСТ 28147-89 обладают достоинствами других алгоритмов для симметричных систем и превосходят их своими возможностями. Так, ГОСТ 28147-89 (256-битовый ключ, 32 цикла шифрования) по сравнению с такими алгоритмами, как DES (56-битовый ключ, 16 циклов шифрования) и FEAL-1 (64-битовый ключ, 4 цикла шифрования) обладает более высокой криптостойкостью за счет более длинного ключа и большего числа циклов шифрования.
Следует отметить, что в отличие от DES, у ГОСТ 28147-89 блок подстановки можно произвольно изменять, то есть он является дополнительным 512-битовым ключом.
Алгоритмы гаммирования ГОСТ 28147-89 (256-битовый ключ, 512-битовый блок подстановок, 64-битовый вектор инициализации) превосходят по криптостойкости и алгоритм B-Crypt (56-битовый ключ, 64-битовый вектор инициализации).
Достоинствами ГОСТ 28147-89 являются также наличие защиты от навязывания ложных данных (выработка имитовставки) и одинаковый цикл шифрования во всех четырех алгоритмах ГОСТа.
Блочные алгоритмы могут использоваться и для выработки гаммы. В этом случае гамма вырабатывается блоками и поблочно складывается по модулю 2 с исходным текстом. В качестве примера можно назвать B-Crypt, DES в режимах CFB и OFB, ГОСТ 28147-89 в режимах гаммирования и гаммирования c обратной связью.
Аcимметричные алгоритмы шифрования
В асимметричных алгоритмах шифрования (или криптографии с открытым ключом) для зашифровывания информации используют один ключ (открытый), а для расшифровывания - другой (секретный). Эти ключи различны и не могут быть получены один из другого.
Схема обмена информацией такова:
получатель вычисляет открытый и секретный ключи, секретный ключ хранит в тайне, открытый же делает доступным (сообщает отправителю, группе пользователей сети, публикует);
отправитель, используя открытый ключ получателя, зашифровывает сообщение, которое пересылается получателю;
получатель получает сообщение и расшифровывает его, используя свой секретный ключ.
RSA [4, 5]
Защищен патентом США N 4405829. Разработан в 1977 году в Массачусетском технологическом институте (США). Получил название по первым буквам фамилий авторов (Rivest, Shamir, Adleman). Криптостойкость основана на вычислительной сложности задачи разложения большого числа на простые множители.
ElGamal
Разработан в 1985 году. Назван по фамилии автора - Эль-Гамаль. Используется в стандарте США на цифровую подпись DSS (Digital Signature Standard). Криптостойкость основана на вычислительной сложности задачи логарифмирования целых чисел в конечных полях.
Сравнение cимметричных и аcимметричных алгоритмов шифрования
В асимметричных системах необходимо применять длинные ключи (512 битов и больше). Длинный ключ резко увеличивает время шифрования. Кроме того, генерация ключей весьма длительна. Зато распределять ключи можно по незащищенным каналам.
В симметричных алгоритмах используют более короткие ключи, т. е. шифрование происходит быстрее. Но в таких системах сложно распределение ключей.
Поэтому при проектировании защищенной системы часто применяют и cимметричные, и аcимметричные алгоритмы. Так как система с открытыми ключами позволяет распределять ключи и в симметричных системах, можно объединить в системе передачи защищенной информации асимметричный и симметричный алгоритмы шифрования. С помощью первого рассылать ключи, вторым же - собственно шифровать передаваемую информацию [4, c. 53].
Обмен информацией можно осуществлять следующим образом:
получатель вычисляет открытый и секретный ключи, секретный ключ хранит в тайне, открытый же делает доступным;
отправитель, используя открытый ключ получателя, зашифровывает сеансовый ключ, который пересылается получателю по незащищенному каналу;
получатель получает сеансовый ключ и расшифровывает его, используя свой секретный ключ;
отправитель зашифровывает сообщение сеансовым ключом и пересылает получателю;
получатель получает сообщение и расшифровывает его.
Надо заметить, что в правительственных и военных системах связи используют лишь симметричные алгоритмы, так как нет строго математического обоснования стойкости систем с открытыми ключами, как, впрочем, не доказано и обратное.
Проверка подлинности информации. Цифровая подпись
При передаче информации должны быть обеспечены вместе или по отдельности:
1. Конфиденциальность (privacy) - злоумышленник не должен иметь возможности узнать содержание передаваемого сообщения.
2. Подлинность (authenticity), которая включает два понятия
целостность (integrity) - сообщение должно быть защищено от случайного или умышленного изменения;
идентификация отправителя (проверка авторства) - получатель должен иметь возможность проверить, кем отправлено сообщение.
Шифрование может обеспечить конфиденциальность, а в некоторых системах и целостность.
Целостность сообщения проверяется вычислением контрольной функции (check function) от сообщения - некоего числа небольшой длины. Эта контрольная функция должна с высокой вероятностью изменяться даже при малых изменениях сообщения (удаление, включение, перестановки или переупорядочивание информации). Называют и вычисляют контрольную функцию по-разному:
код подлинности сообщения (Message Authentical Code, MAC);
квадратичный конгруэнтный алгоритм (Quadratic Congruentical Manipulation Detection Code, QCMDС);
Manipulation Detection Code (MDС);
Message Digest Algorithm (MD5);
контрольная сумма;
символ контроля блока (Block Check Character, BCC);
циклический избыточный код (ЦИК, Cyclic Redundancy Check, CRC);
хеш-функция (hash);
имитовставка в ГОСТ 28147-89;
алгоритм с усечением до n битов (n-bit Algorithm with Truncation).
При вычислении контрольной функции может использоваться какой-либо алгоритм шифрования. Возможно шифрование самой контрольной суммы.
Широко применяется цифровая подпись (цифровое дополнение к передаваемой информации, гарантирующее целостность последней и позволяющее проверить ее авторство). Известны модели цифровой подписи (digital signature) на основе алгоритмов симметричного шифрования, но при использовании систем с открытыми ключами цифровая подпись осуществляется более удобно.
Для использования алгоритма RSA сообщение следует сжать функцией хеширования (алгоритм MD5 - Message Digest Algorithm) до 256-битового хеша (H). Сигнатура сообщения S вычисляется следующим образом:
d
S = H mod n
Сигнатура пересылается вместе с сообщением.
Процесс идентификации заключается в получении хеш-функции сообщения (H') и сравнении с
e
H = S mod n
где H - хеш сообщения,
S - его сигнатура,
d - секретный ключ,
e - открытый ключ.
Проверке подлинности посвящены стандарты:
проверка подлинности (аутентификация, authentication) - ISO 8730-90, ISO/IES 9594-90 и ITU X.509;
целостность - ГОСТ 28147-89, ISO 8731-90;
цифровая подпись - ISO 7498, P 34.10-94 (Россия), DSS (Digital Signature Standard, США).
ISO - Международная организация по стандартизации /МОС/,
ITU - Международный союз электросвязи /МСЭ/.
Реализация алгоритмов шифрования
Алгоритмы шифрования реализуются программными или аппаратными средствами. Есть великое множество чисто программных реализаций различных алгоритмов. Из-за своей дешевизны (некoторые и вовсе бесплатны), а также все большего быстродействия процессоров ПЭВМ, простоты работы и безотказности они весьма конкурентоспособны. Широко известна программа Diskreet из пакета Norton Utilities, реализующая DES.
Нельзя не упомянуть пакет PGP (Pretty Good Privacy, версия 2.1, автор Philip Zimmermann), в котором комплексно решены практически все проблемы защиты передаваемой информации. Применены сжатие данных перед шифрованием, мощное управление ключами, симметричный (IDEA) и асимметричный (RSA) алгоритмы шифрования, вычисление контрольной функции для цифровой подписи, надежная генерация ключей.
Публикации журнала "Монитор" с подробными описаниями различных алгоритмов и соответствующими листингами дают возможность каждому желающему написать свою программу (или воспользоваться готовым листингом).
Аппаратная реализация алгоритмов возможна с помощью специализированных микросхем (производятся кристаллы для алгоритмов DH, RSA, DES, Skipjack, ГОСТ 28147-89) или с использованием компонентов широкого назначения (ввиду дешевизны и высокого быстродействия перспективны цифровые сигнальные процессоры - ЦСП, Digital Signal Processor, DSP).
Среди российских разработок следует отметить платы "Криптон" (фирма "Анкад") [2] и "Грим" (методология и алгоритмы фирмы "ЛАН-Крипто", техническая разработка НПЦ "ЭЛиПС") [7].
"Криптон" - одноплатные устройства, использующие криптопроцессоры (специализированные 32-разрядные микроЭВМ, которые также называются "блюминг"). Блюминги аппаратно реализуют алгоритмы ГОСТ 28147-89, они состоят из вычислителя и ОЗУ для хранения ключей. Причем в криптопроцессоре есть три области для хранения ключей, что позволяет строить многоуровневые ключевые системы.
Для большей надежности шифрования одновременно работают два криптопроцессора, и блок данных в 64 битов считается правильно зашифрованным, только если совпадает информация на выходе обоих блюмингов. Скорость шифрования - 250 КБ/c.
Кроме двух блюмингов на плате расположены:
контроллер сопряжения с шиной компьютера (за исключением "Криптон-ЕС" платы рассчитаны на работу с шиной ISA);
BIOS платы, предназначенный для осуществления интерфейса с компьютером и выполняющий самотестирование устройства и ввод ключей в криптопроцессоры;
датчик случайных чисел (ДСЧ) для выработки ключей шифрования, выполненный на шумовых диодах.
Выпускаются следующие разновидности плат "Криптон":
"Криптон-ЕС" предназначена для ПЭВМ серии ЕС 1841-1845;
"Криптон-3";
"Криптон-4" (сокращены габаритные размеры за счет перемещения ряда дискретных элементов в базовые кристаллы, повышена скoрость обмена благодаря внутреннему буферу на 8 байт);
"Криптон-ИК" дополнительно оснащена контроллером ИК (интеллектуальная карточка, смарт-карта, smart card).
В устройствах "Криптон-ЕС", "Криптон-3", "Криптон-4" ключи хранятся в виде файла на дискете. В "Криптон-ИК" ключи находятся на ИК, что затрудняет подделку и копирование.
В плате "Грим" используются цифровые сигнальные процессоры фирмы Analog Devices ADSP-2105 и ADSP-2101, что дает скорость шифрования соответственно 125 и 210 КБ/c. На плате есть физический ДСЧ и ПЗУ с программами начального теста, проверки прав доступа, загрузки и генерации ключей. Ключи хранятся на нестандартно форматированной дискете. Плата реализует алгоритмы ГОСТ 28147-89 и цифровой подписи.
Для защиты информации, передаваемой по каналам связи, служат устройства канального шифрования, которые изготовляются в виде интерфейсной карты или автономного модуля. Скорость шифрования различных моделей от 9600 бит/с до 35 Мбит/c.
В заключение заметим, что шифрование информации не является панацеей. Его следует рассматривать только как один из методов защиты информации и применять обязательно в сочетании с законодательными, организационными и другими мерами.
Криптология с открытым ключом
Борис Оболикшто
Казалось бы, толчок, данный Шенноном, должен был вызвать обвал результатов в научной криптологии. Но этого не произошло. Только бурное развитие телекоммуникаций, удаленного доступа к ЭВМ при несовершенстве существовавших криптосистем с секретным ключом вызвало к жизни следующий и, пожалуй, самый интересный этап криптологии, отсчет которому ведут от появившейся в ноябре 1976 года статьи Уитфилда Диффи и Марти E. Хеллмана "Новые направления в криптографии". Сам У. Диффи датирует получение опубликованных в ноябре 1976 года результатов маем того же года; таким образом, у нас есть повод с мая до ноября отмечать ДВАДЦАТИЛЕТНИЙ ЮБИЛЕЙ криптологии с открытым ключом.
Одна из проблем, которая осталась неразрешенной в традиционной криптографии, - распространение секретных ключей. Идея передавать "секретный" ключ по открытому каналу кажется на первый взгляд безумной, но если, отказавшись от совершенной секретности, ограничиться практической стойкостью, то можно придумать способ обмена ключами.
Первым из получивших распространение способов оказался экспоненциальный ключевой обмен. Суть его в следующем:
- Алиса и Боб (привлечение в качестве сторон не абстрактных "А" и "Б", а симпатичных Алисы и Боба, стало традицией в этой области криптологии) выбирают случайные числа Хa и Хb соответственно.
- Алиса передает Бобу Ya =aXa (mod q), а Боб Алисе - Yb =aXb (mod q).
Здесь a - так называемый примитивный элемент конечного поля Галуа GF (q), замечательное для нас свойство которого заключается в том, что его степени дают все ненулевые значения элементов поля. В качестве секретного ключа используется значение
Ya =aXaXb (mod q),
которое Алиса получает возведением переданного Бобом числа в степень Xa, известную только ей, а Боб - полученного от Алисы числа в известную только ему степень Хb. Криптоаналитик вынужден вычислять логарифм по крайней мере одного из передаваемых чисел.
Устойчивость экспоненциального ключевого обмена базируется на так называемой односторонности функции возведения в степень: вычислительная сложность получения Ya из Xa при q длиной 1000 битов - порядка 2000 умножений 1000 битовых чисел, в то время как обратная операция потребует примерно 1030 операций. ОДНОСТОРОННИЕ функции, обладающие подобной асимметрией вычислительной сложности прямой и обратной задачи, играют ведущую роль в криптографии с открытым ключом.
Еще более интересна односторонняя функция с потайным ходом ("лазейкой"). Идея состоит в том, чтобы построить функцию, обратить которую можно только зная некоторую "лазейку" - секретный ключ. Тогда параметры функции служат открытым ключом, который Алиса может передать по незащищенному каналу Бобу; Боб, используя полученный открытый ключ, выполняет шифрование (вычисление прямой функции) и передает по тому же каналу результат Алисе; Алиса, зная "лазейку" (секретный ключ), легко вычисляет обратную функцию, тогда как криптоаналитик, не зная секретного ключа, обречен на решение намного более сложной задачи.
Такую функцию в 1976 году удалось построить Р. Мерклю (R.C. Merkle) на основе задачи об укладке ранца. Сама по себе задача - односторонняя: зная подмножество грузов, уложенных в ранец, легко подсчитать суммарный вес, но зная вес, непросто определить подмножество грузов. В нашем случае использовался одномерный вариант задачи: вектор грузов и сумма компонентов его подвекторов. Встроив "лазейку", удалось получить так называемую ранцевую систему Меркля-Хелмана. Первая криптосистема с открытым ключом заработала, и Меркль предложил $100 тому, кто сможет ее раскрыть.
Награда досталась А. Шамиру (Adi Shamir) шесть лет спустя после публикации им в марте 1982 года сообщения о раскрытии ранцевой системы Меркля-Хелмана с одной итерацией. На конференции Crypto'82 Л. Адлман (L. Adleman) продемонстрировал на компьютере Apple II раскрытие ранцевой системы. Заметим, что Шамир не построил способ обращения задачи - получения значения секретного ключа, он сумел построить ключ, не обязательно равный секретному, но позволяющий раскрыть шифр. В этом таится одна из наибольших опасностей для криптографии с открытым ключом: нет строгого доказательства односторонности используемых алгоритмов, т. е. никто не гарантирован от возможности нахождения способа дешифрования, вероятно, и не требующего решения обратной задачи, высокая сложность которой позволяет надеяться на практическую стойкость шифра. Хорошо, если раскрытие той или иной системы проведет ученый с мировым именем (в 1982 году А. Шамир уже был известен как один из авторов системы RSA). А если это удастся нечестолюбивому хакеру?
В заключение драмы о ранцевой системе упомянем еще об одном пари, которое Меркль заключил с желающими раскрыть усовершенствованную систему с многими итерациями на сумму $1000. И эту сумму пришлось заплатить. Ее получил Э. Брикелл, раскрыв летом 1984 года систему с сорока итерациями и со ста посылками за час работы Cray-1.
Значительно более удачна на сегодняшний день судьба системы RSA, названной так по первым буквам фамилий ее авторов Р. Ривеста (Ronald Rivest) и уже знакомых нам А. Шамира и Л. Адлмана. Кстати, именно первому систематическому изложению алгоритма RSA обязаны своим появлением на свет Алиса и Боб. С их "помощью" авторы в 1977 году описали систему на основе односторонних свойств функции разложения на простые множители (умножать просто, а разлагать - нет).
1. Симметричные (с секретным, единым ключом, одноключевые, single-key).
1.1. Потоковые (шифрование потока данных):
с одноразовым или бесконечным ключом (infinite-key cipher);
с конечным ключом (система Вернама - Vernam);
на основе генератора псевдослучайных чисел (ПСЧ).
1.2. Блочные (шифрование данных поблочно):
1.2.1. Шифры перестановки (permutation, P-блоки);
1.2.2. Шифры замены (подстановки, substitution, S-блоки):
моноалфавитные (код Цезаря);
полиалфавитные (шифр Видженера, цилиндр Джефферсона, диск Уэтстоуна, Enigma);
1.2.3. составные (таблица 1):
Lucipher (фирма IBM, США);
DES (Data Encryption Standard, США);
FEAL-1 (Fast Enciphering Algoritm, Япония);
IDEA/IPES (International Data Encryption Algorithm/
Improved Proposed Encryption Standard, фирма Ascom-Tech AG, Швейцария);
B-Crypt (фирма British Telecom, Великобритания);
ГОСТ 28147-89 (СССР); * Skipjack (США).
2. Асимметричные (с открытым ключом, public-key):
Диффи-Хеллман DH (Diffie, Hellman);
Райвест-Шамир-Адлeман RSA (Rivest, Shamir, Adleman);
Эль-Гамаль ElGamal.
Кроме того, есть разделение алгоритмов шифрования на собственно шифры (ciphers) и коды (codes). Шифры работают с отдельными битами, буквами, символами. Коды оперируют лингвистическими элементами (слоги, слова, фразы).
Симметричные алгоритмы шифрования
Симметричные алгоритмы шифрования (или криптография с секретными ключами) основаны на том, что отправитель и получатель информации используют один и тот же ключ. Этот ключ должен храниться в тайне и передаваться способом, исключающим его перехват.
Обмен информацией осуществляется в 3 этапа:
отправитель передает получателю ключ (в случае сети с несколькими абонентами у каждой пары абонентов должен быть свой ключ, отличный от ключей других пар);
отправитель, используя ключ, зашифровывает сообщение, которое пересылается получателю;
получатель получает сообщение и расшифровывает его.
Если для каждого дня и для каждого сеанса связи будет использоваться уникальный ключ, это повысит защищенность системы.
Потоковые шифры
В потоковых шифрах, т. е. при шифровании потока данных, каждый бит исходной информации шифруется независимо от других с помощью гаммирования.
Гаммирование - наложение на открытые данные гаммы шифра (случайной или псевдослучайной последовательности единиц и нулей) по определенному правилу. Обычно используется "исключающее ИЛИ", называемое также сложением по модулю 2 и реализуемое в ассемблерных программах командой XOR. Для расшифровывания та же гамма накладывается на зашифрованные данные.
При однократном использовании случайной гаммы одинакового размера с зашифровываемыми данными взлом кода невозможен (так называемые криптосистемы с одноразовым или бесконечным ключом). В данном случае "бесконечный" означает, что гамма не повторяется.
В некоторых потоковых шифрах ключ короче сообщения. Так, в системе Вернама для телеграфа используется бумажное кольцо, содержащее гамму. Конечно, стойкость такого шифра не идеальна.
Понятно, что обмен ключами размером с шифруемую информацию не всегда уместен. Поэтому чаще используют гамму, получаемую с помощью генератора псевдослучайных чисел (ПСЧ). В этом случае ключ - порождающее число (начальное значение, вектор инициализации, initializing value, IV) для запуска генератора ПСЧ. Каждый генератор ПСЧ имеет период, после которого генерируемая последовательность повторяется. Очевидно, что период псевдослучайной гаммы должен превышать длину шифруемой информации.
Генератор ПСЧ считается корректным, если наблюдение фрагментов его выхода не позволяет восстановить пропущенные части или всю последовательность при известном алгоритме, но неизвестном начальном значении [4, c. 63].
При использовании генератора ПСЧ возможны несколько вариантов [4, c. 126 - 128]:
1. Побитовое шифрование потока данных. Цифровой ключ используется в качестве начального значения генератора ПСЧ, а выходной поток битов суммируется по модулю 2 с исходной информацией. В таких системах отсутствует свойство распространения ошибок.
2. Побитовое шифрование потока данных с обратной связью (ОС) по шифртексту. Такая система аналогична предыдущей, за исключением того, что шифртекст возвращается в качестве параметра в генератор ПСЧ. Характерно свойство распространения ошибок. Область распространения ошибки зависит от структуры генератора ПСЧ.
3. Побитовое шифрование потока данных с ОС по исходному тексту. Базой генератора ПСЧ является исходная информация. Характерно свойство неограниченного распространения ошибки.
4. Побитовое шифрование потока данных с ОС по шифртексту и по исходному тексту.
Блочные шифры
При блочном шифровании информация разбивается на блоки фиксированной длины и шифруется поблочно. Блочные шифры бывают двух основных видов:
шифры перестановки (transposition, permutation, P-блоки);
шифры замены (подстановки, substitution, S-блоки).
Шифры перестановок переставляют элементы открытых данных (биты, буквы, символы) в некотором новом порядке. Различают шифры горизонтальной, вертикальной, двойной перестановки, решетки, лабиринты, лозунговые и др.
Шифры замены заменяют элементы открытых данных на другие элементы по определенному правилу. Paзличают шифры простой, сложной, парной замены, буквенно-слоговое шифрование и шифры колонной замены. Шифры замены делятся на две группы:
моноалфавитные (код Цезаря) ;
полиалфавитные (шифр Видженера, цилиндр Джефферсона, диск Уэтстоуна, Enigma).
В моноалфавитных шифрах замены буква исходного текста заменяется на другую, заранее определенную букву. Например в коде Цезаря буква заменяется на букву, отстоящую от нее в латинском алфавите на некоторое число позиций. Очевидно, что такой шифр взламывается совсем просто. Нужно подсчитать, как часто встречаются буквы в зашифрованном тексте, и сопоставить результат с известной для каждого языка частотой встречаемости букв.
В полиалфавитных подстановках для замены некоторого символа исходного сообщения в каждом случае его появления последовательно используются различные символы из некоторого набора. Понятно, что этот набор не бесконечен, через какое-то количество символов его нужно использовать снова. В этом слабость чисто полиалфавитных шифров.
В современных криптографических системах, как правило, используют оба способа шифрования (замены и перестановки). Такой шифратор называют составным (product cipher). Oн более стойкий, чем шифратор, использующий только замены или перестановки.
Блочное шифрование можно осуществлять двояко [4, c.129-130]:
1. Без обратной связи (ОС). Несколько битов (блок) исходного текста шифруются одновременно, и каждый бит исходного текста влияет на каждый бит шифртекста. Однако взаимного влияния блоков нет, то есть два одинаковых блока исходного текста будут представлены одинаковым шифртекстом. Поэтому подобные алгоритмы можно использовать только для шифрования случайной последовательности битов (например, ключей). Примерами являются DES в режиме ECB и ГОСТ 28147-89 в режиме простой замены.
2. С обратной связью. Обычно ОС организуется так: предыдущий шифрованный блок складывается по модулю 2 с текущим блоком. В качестве первого блока в цепи ОС используется инициализирующее значение. Ошибка в одном бите влияет на два блока - ошибочный и следующий за ним. Пример - DES в режиме CBC.
Генератор ПСЧ может применяться и при блочном шифровании [4, c. 128]:
1. Поблочное шифрование потока данных. Шифрование последовательных блоков (подстановки и перестановки) зависит от генератора ПСЧ, управляемого ключом.
2. Поблочное шифрование потока данных с ОС. Генератор ПСЧ управляется шифрованным или исходным текстом или обоими вместе.
Весьма распространен федеральный стандарт США DES (Data Encryption Standard) [1, 5], на котором основан международный стандарт ISO 8372-87. DES был поддержан Американским национальным институтом стандартов (American National Standards Institute, ANSI) и рекомендован для применения Американской ассоциацией банков (American Bankers Association, ABA). DES предусматривает 4 режима работы:
ECB (Electronic Codebook) электронный шифрблокнот;
CBC (Cipher Block Chaining) цепочка блоков;
CFB (Cipher Feedback) обратная связь по шифртексту;
OFB (Output Feedback) обратная связь по выходу.
ГОСТ 28147-89 - отечественный стандарт на шифрование данных [8]. Стандарт включает три алгоритма зашифровывания (расшифровывания) данных: режим простой замены, режим гаммирования, режим гаммирования с обратной связью - и режим выработки имитовставки.
С помощью имитовставки можно зафиксировать случайную или умышленную модификацию зашифрованной информации. Вырабатывать имитовставку можно или перед зашифровыванием (после расшифровывания) всего сообщения, или одновременно с зашифровыванием (расшифровыванием) по блокам. При этом блок информации шифруется первыми шестнадцатью циклами в режиме простой замены, затем складывается по модулю 2 со вторым блоком, результат суммирования вновь шифруется первыми шестнадцатью циклами и т. д.
Алгоритмы шифрования ГОСТ 28147-89 обладают достоинствами других алгоритмов для симметричных систем и превосходят их своими возможностями. Так, ГОСТ 28147-89 (256-битовый ключ, 32 цикла шифрования) по сравнению с такими алгоритмами, как DES (56-битовый ключ, 16 циклов шифрования) и FEAL-1 (64-битовый ключ, 4 цикла шифрования) обладает более высокой криптостойкостью за счет более длинного ключа и большего числа циклов шифрования.
Следует отметить, что в отличие от DES, у ГОСТ 28147-89 блок подстановки можно произвольно изменять, то есть он является дополнительным 512-битовым ключом.
Алгоритмы гаммирования ГОСТ 28147-89 (256-битовый ключ, 512-битовый блок подстановок, 64-битовый вектор инициализации) превосходят по криптостойкости и алгоритм B-Crypt (56-битовый ключ, 64-битовый вектор инициализации).
Достоинствами ГОСТ 28147-89 являются также наличие защиты от навязывания ложных данных (выработка имитовставки) и одинаковый цикл шифрования во всех четырех алгоритмах ГОСТа.
Блочные алгоритмы могут использоваться и для выработки гаммы. В этом случае гамма вырабатывается блоками и поблочно складывается по модулю 2 с исходным текстом. В качестве примера можно назвать B-Crypt, DES в режимах CFB и OFB, ГОСТ 28147-89 в режимах гаммирования и гаммирования c обратной связью.
Аcимметричные алгоритмы шифрования
В асимметричных алгоритмах шифрования (или криптографии с открытым ключом) для зашифровывания информации используют один ключ (открытый), а для расшифровывания - другой (секретный). Эти ключи различны и не могут быть получены один из другого.
Схема обмена информацией такова:
получатель вычисляет открытый и секретный ключи, секретный ключ хранит в тайне, открытый же делает доступным (сообщает отправителю, группе пользователей сети, публикует);
отправитель, используя открытый ключ получателя, зашифровывает сообщение, которое пересылается получателю;
получатель получает сообщение и расшифровывает его, используя свой секретный ключ.
RSA [4, 5]
Защищен патентом США N 4405829. Разработан в 1977 году в Массачусетском технологическом институте (США). Получил название по первым буквам фамилий авторов (Rivest, Shamir, Adleman). Криптостойкость основана на вычислительной сложности задачи разложения большого числа на простые множители.
ElGamal
Разработан в 1985 году. Назван по фамилии автора - Эль-Гамаль. Используется в стандарте США на цифровую подпись DSS (Digital Signature Standard). Криптостойкость основана на вычислительной сложности задачи логарифмирования целых чисел в конечных полях.
Сравнение cимметричных и аcимметричных алгоритмов шифрования
В асимметричных системах необходимо применять длинные ключи (512 битов и больше). Длинный ключ резко увеличивает время шифрования. Кроме того, генерация ключей весьма длительна. Зато распределять ключи можно по незащищенным каналам.
В симметричных алгоритмах используют более короткие ключи, т. е. шифрование происходит быстрее. Но в таких системах сложно распределение ключей.
Поэтому при проектировании защищенной системы часто применяют и cимметричные, и аcимметричные алгоритмы. Так как система с открытыми ключами позволяет распределять ключи и в симметричных системах, можно объединить в системе передачи защищенной информации асимметричный и симметричный алгоритмы шифрования. С помощью первого рассылать ключи, вторым же - собственно шифровать передаваемую информацию [4, c. 53].
Обмен информацией можно осуществлять следующим образом:
получатель вычисляет открытый и секретный ключи, секретный ключ хранит в тайне, открытый же делает доступным;
отправитель, используя открытый ключ получателя, зашифровывает сеансовый ключ, который пересылается получателю по незащищенному каналу;
получатель получает сеансовый ключ и расшифровывает его, используя свой секретный ключ;
отправитель зашифровывает сообщение сеансовым ключом и пересылает получателю;
получатель получает сообщение и расшифровывает его.
Надо заметить, что в правительственных и военных системах связи используют лишь симметричные алгоритмы, так как нет строго математического обоснования стойкости систем с открытыми ключами, как, впрочем, не доказано и обратное.
Проверка подлинности информации. Цифровая подпись
При передаче информации должны быть обеспечены вместе или по отдельности:
1. Конфиденциальность (privacy) - злоумышленник не должен иметь возможности узнать содержание передаваемого сообщения.
2. Подлинность (authenticity), которая включает два понятия
целостность (integrity) - сообщение должно быть защищено от случайного или умышленного изменения;
идентификация отправителя (проверка авторства) - получатель должен иметь возможность проверить, кем отправлено сообщение.
Шифрование может обеспечить конфиденциальность, а в некоторых системах и целостность.
Целостность сообщения проверяется вычислением контрольной функции (check function) от сообщения - некоего числа небольшой длины. Эта контрольная функция должна с высокой вероятностью изменяться даже при малых изменениях сообщения (удаление, включение, перестановки или переупорядочивание информации). Называют и вычисляют контрольную функцию по-разному:
код подлинности сообщения (Message Authentical Code, MAC);
квадратичный конгруэнтный алгоритм (Quadratic Congruentical Manipulation Detection Code, QCMDС);
Manipulation Detection Code (MDС);
Message Digest Algorithm (MD5);
контрольная сумма;
символ контроля блока (Block Check Character, BCC);
циклический избыточный код (ЦИК, Cyclic Redundancy Check, CRC);
хеш-функция (hash);
имитовставка в ГОСТ 28147-89;
алгоритм с усечением до n битов (n-bit Algorithm with Truncation).
При вычислении контрольной функции может использоваться какой-либо алгоритм шифрования. Возможно шифрование самой контрольной суммы.
Широко применяется цифровая подпись (цифровое дополнение к передаваемой информации, гарантирующее целостность последней и позволяющее проверить ее авторство). Известны модели цифровой подписи (digital signature) на основе алгоритмов симметричного шифрования, но при использовании систем с открытыми ключами цифровая подпись осуществляется более удобно.
Для использования алгоритма RSA сообщение следует сжать функцией хеширования (алгоритм MD5 - Message Digest Algorithm) до 256-битового хеша (H). Сигнатура сообщения S вычисляется следующим образом:
d
S = H mod n
Сигнатура пересылается вместе с сообщением.
Процесс идентификации заключается в получении хеш-функции сообщения (H') и сравнении с
e
H = S mod n
где H - хеш сообщения,
S - его сигнатура,
d - секретный ключ,
e - открытый ключ.
Проверке подлинности посвящены стандарты:
проверка подлинности (аутентификация, authentication) - ISO 8730-90, ISO/IES 9594-90 и ITU X.509;
целостность - ГОСТ 28147-89, ISO 8731-90;
цифровая подпись - ISO 7498, P 34.10-94 (Россия), DSS (Digital Signature Standard, США).
ISO - Международная организация по стандартизации /МОС/,
ITU - Международный союз электросвязи /МСЭ/.
Реализация алгоритмов шифрования
Алгоритмы шифрования реализуются программными или аппаратными средствами. Есть великое множество чисто программных реализаций различных алгоритмов. Из-за своей дешевизны (некoторые и вовсе бесплатны), а также все большего быстродействия процессоров ПЭВМ, простоты работы и безотказности они весьма конкурентоспособны. Широко известна программа Diskreet из пакета Norton Utilities, реализующая DES.
Нельзя не упомянуть пакет PGP (Pretty Good Privacy, версия 2.1, автор Philip Zimmermann), в котором комплексно решены практически все проблемы защиты передаваемой информации. Применены сжатие данных перед шифрованием, мощное управление ключами, симметричный (IDEA) и асимметричный (RSA) алгоритмы шифрования, вычисление контрольной функции для цифровой подписи, надежная генерация ключей.
Публикации журнала "Монитор" с подробными описаниями различных алгоритмов и соответствующими листингами дают возможность каждому желающему написать свою программу (или воспользоваться готовым листингом).
Аппаратная реализация алгоритмов возможна с помощью специализированных микросхем (производятся кристаллы для алгоритмов DH, RSA, DES, Skipjack, ГОСТ 28147-89) или с использованием компонентов широкого назначения (ввиду дешевизны и высокого быстродействия перспективны цифровые сигнальные процессоры - ЦСП, Digital Signal Processor, DSP).
Среди российских разработок следует отметить платы "Криптон" (фирма "Анкад") [2] и "Грим" (методология и алгоритмы фирмы "ЛАН-Крипто", техническая разработка НПЦ "ЭЛиПС") [7].
"Криптон" - одноплатные устройства, использующие криптопроцессоры (специализированные 32-разрядные микроЭВМ, которые также называются "блюминг"). Блюминги аппаратно реализуют алгоритмы ГОСТ 28147-89, они состоят из вычислителя и ОЗУ для хранения ключей. Причем в криптопроцессоре есть три области для хранения ключей, что позволяет строить многоуровневые ключевые системы.
Для большей надежности шифрования одновременно работают два криптопроцессора, и блок данных в 64 битов считается правильно зашифрованным, только если совпадает информация на выходе обоих блюмингов. Скорость шифрования - 250 КБ/c.
Кроме двух блюмингов на плате расположены:
контроллер сопряжения с шиной компьютера (за исключением "Криптон-ЕС" платы рассчитаны на работу с шиной ISA);
BIOS платы, предназначенный для осуществления интерфейса с компьютером и выполняющий самотестирование устройства и ввод ключей в криптопроцессоры;
датчик случайных чисел (ДСЧ) для выработки ключей шифрования, выполненный на шумовых диодах.
Выпускаются следующие разновидности плат "Криптон":
"Криптон-ЕС" предназначена для ПЭВМ серии ЕС 1841-1845;
"Криптон-3";
"Криптон-4" (сокращены габаритные размеры за счет перемещения ряда дискретных элементов в базовые кристаллы, повышена скoрость обмена благодаря внутреннему буферу на 8 байт);
"Криптон-ИК" дополнительно оснащена контроллером ИК (интеллектуальная карточка, смарт-карта, smart card).
В устройствах "Криптон-ЕС", "Криптон-3", "Криптон-4" ключи хранятся в виде файла на дискете. В "Криптон-ИК" ключи находятся на ИК, что затрудняет подделку и копирование.
В плате "Грим" используются цифровые сигнальные процессоры фирмы Analog Devices ADSP-2105 и ADSP-2101, что дает скорость шифрования соответственно 125 и 210 КБ/c. На плате есть физический ДСЧ и ПЗУ с программами начального теста, проверки прав доступа, загрузки и генерации ключей. Ключи хранятся на нестандартно форматированной дискете. Плата реализует алгоритмы ГОСТ 28147-89 и цифровой подписи.
Для защиты информации, передаваемой по каналам связи, служат устройства канального шифрования, которые изготовляются в виде интерфейсной карты или автономного модуля. Скорость шифрования различных моделей от 9600 бит/с до 35 Мбит/c.
В заключение заметим, что шифрование информации не является панацеей. Его следует рассматривать только как один из методов защиты информации и применять обязательно в сочетании с законодательными, организационными и другими мерами.
Криптология с открытым ключом
Борис Оболикшто
Казалось бы, толчок, данный Шенноном, должен был вызвать обвал результатов в научной криптологии. Но этого не произошло. Только бурное развитие телекоммуникаций, удаленного доступа к ЭВМ при несовершенстве существовавших криптосистем с секретным ключом вызвало к жизни следующий и, пожалуй, самый интересный этап криптологии, отсчет которому ведут от появившейся в ноябре 1976 года статьи Уитфилда Диффи и Марти E. Хеллмана "Новые направления в криптографии". Сам У. Диффи датирует получение опубликованных в ноябре 1976 года результатов маем того же года; таким образом, у нас есть повод с мая до ноября отмечать ДВАДЦАТИЛЕТНИЙ ЮБИЛЕЙ криптологии с открытым ключом.
Одна из проблем, которая осталась неразрешенной в традиционной криптографии, - распространение секретных ключей. Идея передавать "секретный" ключ по открытому каналу кажется на первый взгляд безумной, но если, отказавшись от совершенной секретности, ограничиться практической стойкостью, то можно придумать способ обмена ключами.
Первым из получивших распространение способов оказался экспоненциальный ключевой обмен. Суть его в следующем:
- Алиса и Боб (привлечение в качестве сторон не абстрактных "А" и "Б", а симпатичных Алисы и Боба, стало традицией в этой области криптологии) выбирают случайные числа Хa и Хb соответственно.
- Алиса передает Бобу Ya =aXa (mod q), а Боб Алисе - Yb =aXb (mod q).
Здесь a - так называемый примитивный элемент конечного поля Галуа GF (q), замечательное для нас свойство которого заключается в том, что его степени дают все ненулевые значения элементов поля. В качестве секретного ключа используется значение
Ya =aXaXb (mod q),
которое Алиса получает возведением переданного Бобом числа в степень Xa, известную только ей, а Боб - полученного от Алисы числа в известную только ему степень Хb. Криптоаналитик вынужден вычислять логарифм по крайней мере одного из передаваемых чисел.
Устойчивость экспоненциального ключевого обмена базируется на так называемой односторонности функции возведения в степень: вычислительная сложность получения Ya из Xa при q длиной 1000 битов - порядка 2000 умножений 1000 битовых чисел, в то время как обратная операция потребует примерно 1030 операций. ОДНОСТОРОННИЕ функции, обладающие подобной асимметрией вычислительной сложности прямой и обратной задачи, играют ведущую роль в криптографии с открытым ключом.
Еще более интересна односторонняя функция с потайным ходом ("лазейкой"). Идея состоит в том, чтобы построить функцию, обратить которую можно только зная некоторую "лазейку" - секретный ключ. Тогда параметры функции служат открытым ключом, который Алиса может передать по незащищенному каналу Бобу; Боб, используя полученный открытый ключ, выполняет шифрование (вычисление прямой функции) и передает по тому же каналу результат Алисе; Алиса, зная "лазейку" (секретный ключ), легко вычисляет обратную функцию, тогда как криптоаналитик, не зная секретного ключа, обречен на решение намного более сложной задачи.
Такую функцию в 1976 году удалось построить Р. Мерклю (R.C. Merkle) на основе задачи об укладке ранца. Сама по себе задача - односторонняя: зная подмножество грузов, уложенных в ранец, легко подсчитать суммарный вес, но зная вес, непросто определить подмножество грузов. В нашем случае использовался одномерный вариант задачи: вектор грузов и сумма компонентов его подвекторов. Встроив "лазейку", удалось получить так называемую ранцевую систему Меркля-Хелмана. Первая криптосистема с открытым ключом заработала, и Меркль предложил $100 тому, кто сможет ее раскрыть.
Награда досталась А. Шамиру (Adi Shamir) шесть лет спустя после публикации им в марте 1982 года сообщения о раскрытии ранцевой системы Меркля-Хелмана с одной итерацией. На конференции Crypto'82 Л. Адлман (L. Adleman) продемонстрировал на компьютере Apple II раскрытие ранцевой системы. Заметим, что Шамир не построил способ обращения задачи - получения значения секретного ключа, он сумел построить ключ, не обязательно равный секретному, но позволяющий раскрыть шифр. В этом таится одна из наибольших опасностей для криптографии с открытым ключом: нет строгого доказательства односторонности используемых алгоритмов, т. е. никто не гарантирован от возможности нахождения способа дешифрования, вероятно, и не требующего решения обратной задачи, высокая сложность которой позволяет надеяться на практическую стойкость шифра. Хорошо, если раскрытие той или иной системы проведет ученый с мировым именем (в 1982 году А. Шамир уже был известен как один из авторов системы RSA). А если это удастся нечестолюбивому хакеру?
В заключение драмы о ранцевой системе упомянем еще об одном пари, которое Меркль заключил с желающими раскрыть усовершенствованную систему с многими итерациями на сумму $1000. И эту сумму пришлось заплатить. Ее получил Э. Брикелл, раскрыв летом 1984 года систему с сорока итерациями и со ста посылками за час работы Cray-1.
Значительно более удачна на сегодняшний день судьба системы RSA, названной так по первым буквам фамилий ее авторов Р. Ривеста (Ronald Rivest) и уже знакомых нам А. Шамира и Л. Адлмана. Кстати, именно первому систематическому изложению алгоритма RSA обязаны своим появлением на свет Алиса и Боб. С их "помощью" авторы в 1977 году описали систему на основе односторонних свойств функции разложения на простые множители (умножать просто, а разлагать - нет).