Алгоритмы шифрования

         

Аcимметричные алгоритмы шифрования


    В асимметричных алгоритмах шифрования (или криптографии с открытым ключом) для зашифровывания информации используют один ключ (открытый), а для расшифровывания - другой (секретный). Эти ключи различны и не могут быть получены один из другого.
    Схема обмена информацией такова:

получатель вычисляет открытый и секретный ключи, секретный ключ хранит в тайне, открытый же делает доступным (сообщает отправителю, группе пользователей сети, публикует);

отправитель, используя открытый ключ получателя, зашифровывает сообщение, которое пересылается получателю;

получатель получает сообщение и расшифровывает его, используя свой секретный ключ.



Алгоритмы шифрования


Александр Новосельский

Шифрование - метод защиты информации Предания старины глубокой...

ХХ век - от интуиции к науке

Классификация алгоритмов шифрования Симметричные алгоритмы шифрования
- Потоковые шифры
- Блочные шифры
Аcимметричные алгоритмы шифрования
- RSA
- ElGamal

Сравнение cимметричных и аcимметричных алгоритмов шифрования Проверка подлинности информации. Цифровая подпись Реализация алгоритмов шифрования Криптология с открытым ключом Литература

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



Блочные шифры


При блочном шифровании информация разбивается на блоки фиксированной длины и шифруется поблочно. Блочные шифры бывают двух основных видов:



шифры перестановки (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 обратной связью.


ElGamal


    Разработан в 1985 году. Назван по фамилии автора - Эль-Гамаль. Используется в стандарте США на цифровую подпись DSS (Digital Signature Standard). Криптостойкость основана на вычислительной сложности задачи логарифмирования целых чисел в конечных полях.



ХХ век - от интуиции к науке


   Последнее имя, которое мы назовем в донаучной криптологии, - инженер AT&T Жильбер Вернам (G.S. Vernam). В 1926 году он предложил действительно нераскрываемый шифр. Идея шифра состоит в том, чтобы в уравнении (1) для каждого следующего символа выбирать новое значение z. Другими словами, секретный ключ должен использоваться только один раз. Если такой ключ выбирается случайным образом, то, как было строго доказано Шенноном через 23 года, шифр является нераскрываемым. Этот шифр является теоретическим обоснованием для использования так называемых "шифроблокнотов", широкое применение которых началось в годы второй мировой войны. Шифроблокнот содержит множество ключей однократного использования, последовательно выбираемых при шифровании сообщений. Предложение Вернама, однако, не решает задачи секретной связи: вместо способа передачи секретного сообщения теперь необходимо найти способ передачи секретного ключа, РАВНОГО ему ПО ДЛИНЕ, т. е. содержащего столько же символов, сколько имеется в открытом тексте.
   В 1949 году статья Клода Шеннона "Теория связи в секретных системах" положила начало научной криптологии. Шеннон показал, что для некоторого "случайного шифра" количество знаков шифротекста, получив которые криптоаналитик при неограниченных ресурсах может восстановить ключ (и раскрыть шифр),

H (Z)/(rlog N), (2)

где H (Z) - энтропия ключа, r - избыточность открытого текста, а N - объем алфавита. По эффективности, с которой архиваторы сжимают текстовые файлы, нам хорошо известно, как велика избыточность обычного текста - ведь их работа и состоит в снижении избыточности (причем только на наиболее легко устраняемой ее части). При избыточности
обычного текста порядка 0,75 и использовании 56-битового ключа (такого, как предполагает DES), достаточно 11 символов шифротекста для восстановления ключа при неограниченных ресурсах криптоаналитика.
   Строго говоря, соотношение (2) не доказано для произвольного шифра, но верно для известных частных случаев. Из (2) следует замечательный вывод: работу криптоаналитика можно затруднить не только совершенствованием криптосистемы, но и снижением избыточности открытого текста. Более того, если избыточность открытого текста снизить до нуля, то даже короткий ключ даст шифр, который криптоаналитик не сможет раскрыть.

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



Классификация алгоритмов шифрования


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). Шифры работают с отдельными битами, буквами, символами. Коды оперируют лингвистическими элементами (слоги, слова, фразы).



Криптология с открытым ключом


Борис Оболикшто

   Казалось бы, толчок, данный Шенноном, должен был вызвать обвал результатов в научной криптологии. Но этого не произошло. Только бурное развитие телекоммуникаций, удаленного доступа к ЭВМ при несовершенстве существовавших криптосистем с секретным ключом вызвало к жизни следующий и, пожалуй, самый интересный этап криптологии, отсчет которому ведут от появившейся в ноябре 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 году описали систему на основе односторонних свойств функции разложения на простые множители (умножать просто, а разлагать - нет).

Е.Спаффорд Б.Доул С.Лодин
<
        Развитие криптологии с открытым ключом позволило криптологическим системам довольно быстро найти широкое коммерческое применение. Но интенсивное использование криптографии не обходится без "накладок". Время от времени мы узнаем о неприятностях в той или иной системе защиты. Последним нашумевшим в мире происшествием стал взлом системы Kerberos. Система эта, разработанная в середине 80-х годов, довольно популярна в мире, и ее взлом вызвал немалое беспокойство пользователей.
   В случае с Kerberos неприятность заключалась не в алгоритме шифрования, а в способе получения случайных чисел, т. е. в методе реализации алгоритма. Когда в октябре прошлого года пришло известие о просчетах в системе генерации случайных чисел в программных продуктах Netscape, обнаруженных студентами университета Беркли, Стивен Лодин обнаружил подобную неприятность в Kerberos. Совместно с Брайаном Доулом он сумел найти брешь и в системе Kerberos. Действующие лица этой истории - не дилетанты. Выпускники университета Purdue (штат Иллинойс) сотрудничали с лабораторией COAST (Computer Operations, Audit, and Security Technology), профессионально занятой вопросами компьютерной безопасности и руководимой проф. Спаффордом, который является также основателем PCERT (Purdue Computer Emergency Response Team) - университетского отряда "быстрого реагирования" на компьютерные ЧП. PCERT, в свою очередь, член аналогичной международной организации FIRST (Forum of Incident Response Teams). Как видим, мину нашли саперы, а это внушает надежду, что пользователи криптосистем не останутся беззащитными даже в случае выявления недоработок.
   Характерно содержание первого обращения к прессе (от 16 февраля 1996 г.), которое от лица первооткрывателей сделал проф. Спаффорд. В нем, наряду с информацией о ненадежности системы паролей и возможностях ее взлома в течение пяти минут, говорится о задержке дальнейшего распространения технической информации до тех пор, пока разработчиками не будут внесены коррективы препятствующие несанкционированному доступу.
   Не обошли ошибки и наши пенаты. К счастью, есть в наших краях профессионалы, способные своевременно найти и показать слабые места системы защиты. Еще месяц не прошел с тех пор, как специалистами киевского ООО "Финтроник" П.В. Лесковым и В.В. Татьяниным продемонстрированы недостатки одной из популярных банковских систем защиты: время вскрытия шифротекстов составило менее 6 минут, а время, необходимое для неконтролируемого нарушения целостности документа (обход системы аутентификации), - менее 5 минут. И здесь нам, читатель, также придется подождать, пока разработчики внесут необходимые изменения. А уж затем мы сможем рассказать подробнее о том, как и что было сделано.


Литература:


1. Водолазский В. Коммерческие системы шифрования: основные алгоритмы и их реализация. Часть 1. // Монитор. - 1992. - N 6-7. - c. 14 - 19.

2. Игнатенко Ю.И. Как сделать так, чтобы?.. // Мир ПК. - 1994. - N 8. - c. 52 - 54.

3. Ковалевский В., Максимов В. Криптографические методы. // КомпьютерПресс. - 1993. - N 5. - c. 31 - 34.

4. Мафтик С. Механизмы защиты в сетях ЭВМ. - М.: Мир, 1993.

5. Спесивцев А.В., Вегнер В.А., Крутяков А.Ю. и др. Защита информации в персональных ЭВМ. - M.: Радио и связь, 1992.

6. Сяо Д., Керр Д., Мэдник С. Защита ЭВМ. - М.: Мир, 1982.

7. Шмелева А. Грим - что это ? // Hard'н'Soft. - 1994. - N 5.

8. ГОСТ 28147-89. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования.



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


    В потоковых шифрах, т. е. при шифровании потока данных, каждый бит исходной информации шифруется независимо от других с помощью гаммирования.
    Гаммирование - наложение на открытые данные гаммы шифра (случайной или псевдослучайной последовательности единиц и нулей) по определенному правилу. Обычно используется "исключающее ИЛИ", называемое также сложением по модулю 2 и реализуемое в ассемблерных программах командой XOR. Для расшифровывания та же гамма накладывается на зашифрованные данные.
    При однократном использовании случайной гаммы одинакового размера с зашифровываемыми данными взлом кода невозможен (так называемые криптосистемы с одноразовым или бесконечным ключом). В данном случае "бесконечный" означает, что гамма не повторяется.
    В некоторых потоковых шифрах ключ короче сообщения. Так, в системе Вернама для телеграфа используется бумажное кольцо, содержащее гамму. Конечно, стойкость такого шифра не идеальна.
    Понятно, что обмен ключами размером с шифруемую информацию не всегда уместен. Поэтому чаще используют гамму, получаемую с помощью генератора псевдослучайных чисел (ПСЧ). В этом случае ключ - порождающее число (начальное значение, вектор инициализации, initializing value, IV) для запуска генератора ПСЧ. Каждый генератор ПСЧ имеет период, после которого генерируемая последовательность повторяется. Очевидно, что период псевдослучайной гаммы должен превышать длину шифруемой информации.
    Генератор ПСЧ считается корректным, если наблюдение фрагментов его выхода не позволяет восстановить пропущенные части или всю последовательность при известном алгоритме, но неизвестном начальном значении [4, c. 63].
    При использовании генератора ПСЧ возможны несколько вариантов [4, c. 126 - 128]:

1. Побитовое шифрование потока данных. Цифровой ключ используется в качестве начального значения генератора ПСЧ, а выходной поток битов суммируется по модулю 2 с исходной информацией. В таких системах отсутствует свойство распространения ошибок.
2. Побитовое шифрование потока данных с обратной связью (ОС) по шифртексту. Такая система аналогична предыдущей, за исключением того, что шифртекст возвращается в качестве параметра в генератор ПСЧ. Характерно свойство распространения ошибок. Область распространения ошибки зависит от структуры генератора ПСЧ.
3. Побитовое шифрование потока данных с ОС по исходному тексту. Базой генератора ПСЧ является исходная информация. Характерно свойство неограниченного распространения ошибки.
4. Побитовое шифрование потока данных с ОС по шифртексту и по исходному тексту.



Предания старины глубокой...


Борис Оболикшто

   Криптология - древняя наука и обычно это подчеркивают рассказом о Юлии Цезаре (100 - 44 гг. до н. э.), переписка которого с Цицероном (106 - 43 гг. до н. э.) и другими "абонентами" в Древнем Риме шифровалась. Шифр Цезаря, иначе шифр циклических подстановок, состоит в замене каждой буквы в сообщении буквой алфавита, отстоящей от нее на фиксированное число букв. Алфавит считается циклическим, то есть после Z следует A. Цезарь заменял букву буквой, отстоящей от исходной на три.
   Сегодня в криптологии принято оперировать символами не в виде букв, а в виде чисел, им соответствующих. Так, в латинском алфавите можем использовать числа от 0 (соответствующего A) до 25 (Z). Обозначая число, соответствующее исходному символу, x, а закодированному - y, можем записать правило применения подстановочного шифра:

y = x + z (mod N), (1)

где z - секретный ключ, N - количество символов в алфавите, а сложение по модулю N - операция, аналогичная обычному сложению, с тем лишь отличием, что если обычное суммирование дает результат, больший или равный N, то значением суммы считается остаток от деления его на N.
   Шифр Цезаря в принятых обозначениях соответствует значению секретного ключа z = 3 (а у Цезаря Августа z = 4). Такие шифры раскрываются чрезвычайно просто даже без знания значения ключа: достаточно знать лишь алгоритм шифрования, а ключ можно подобрать простым перебором (так называемой силовой атакой). Криптология и состоит из двух частей - криптографии, изучающей способы шифрования и/или проверки подлинности сообщений, и криптоанализа, рассматривающего пути расшифровки и подмены криптограмм. Неустойчивость первых шифров на многие столетия породила атмосферу секретности вокруг работы криптографа, затормозила развитие криптологии как науки.
   Так называемая "донаучная" криптография более чем за две тысячи лет полуинтуитивно "нащупала" довольно много интересных решений. Простейшее действие - выполнить подстановку не в алфавитном порядке. Неплохо также переставить символы в сообщении местами (шифры перестановок).
   Первым систематическим трудом по криптографии принято считать работу великого архитектора Леона Баттиста Альберти (1404 - 1472 гг.). Период до середины XVII века уже насыщен работами по криптографии и криптоанализу. Интриги вокруг шифрограмм в Европе того времени удивительно интересны. Увы, ограниченные возможностями журнала, мы выберем только одну известную со школы фамилию - Франсуа Виет (1540 - 1603 гг.), который при дворе короля Франции Генриха IV так успешно занимался криптоанализом (тогда еще не носившим этого гордого названия), что испанский король Филипп II жаловался Папе Римскому на применение французами черной магии. Но все обошлось без кровопролития - при дворе Папы в это время уже служили советники из семейства Ардженти, которых мы сегодня назвали бы криптоаналитиками.
   Можно утверждать, что на протяжении веков дешифрованию криптограмм помогает частотный анализ появления отдельных символов и их сочетаний. Вероятности появления отдельных букв в тексте сильно разнятся (для русского языка, например, буква "о" появляется в 45 раз чаще буквы "ф"). Это, с одной стороны, служит основой как для раскрытия ключей, так и для анализа алгоритмов шифрования, а с другой - является причиной значительной избыточности (в информационном смысле) текста на естественном языке. Любая простая подстановка не позволяет спрятать частоту появления символа - как шило из мешка торчат в русском тексте символы, соответствующие буквам "о", "е", "а", "и", "т", "н". Но теория информации и мера избыточности еще не созданы, и для борьбы с врагом криптографа - частотным анализом - предлагается РАНДОМИЗАЦИЯ. Ее автор Карл Фридрих Гаусс (1777 - 1855 гг.) ошибочно полагал, что создал нераскрываемый шифр.
   Следующая заметная личность в истории криптологии, которую мы не должны пропустить, - голландец Огюст Керкхофф (1835 - 1903 гг.). Ему принадлежит замечательное "правило Керкхоффа": стойкость шифра должна определяться ТОЛЬКО секретностью ключа. Учитывая время, когда это правило было сформулировано, его можно признать величайшим открытием (до создания систематической теории еще более полувека!). Это правило полагает, что АЛГОРИТМ шифрования НЕ ЯВЛЯЕТСЯ СЕКРЕТНЫМ, а значит, можно вести открытое обсуждение достоинств и недостатков алгоритма.Таким образом, это правило переводит работы по криптологии в разряд ОТКРЫТЫХ научных работ, допускающих дискуссии, публикации и т. п.



Проверка подлинности информации. Цифровая подпись


    При передаче информации должны быть обеспечены вместе или по отдельности:

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.
    В заключение заметим, что шифрование информации не является панацеей. Его следует рассматривать только как один из методов защиты информации и применять обязательно в сочетании с законодательными, организационными и другими мерами.


RSA [4, 5]


Защищен патентом США N 4405829. Разработан в 1977 году в Массачусетском технологическом институте (США). Получил название по первым буквам фамилий авторов (Rivest, Shamir, Adleman). Криптостойкость основана на вычислительной сложности задачи разложения большого числа на простые множители.



Шифрование - метод защиты информации


Испокон веков не было ценности большей, чем информация. ХХ век - век информатики и информатизации. Технология дает возможность передавать и хранить все большие объемы информации. Это благо имеет и оборотную сторону. Информация становится все более уязвимой по разным причинам:

возрастающие объемы хранимых и передаваемых данных;

расширение круга пользователей, имеющих доступ к ресурсам ЭВМ, программам и данным;

усложнение режимов эксплуатации вычислительных систем.

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

Характеристики составных алгоритмов шифрования

Название алгоритма

Размер ключа, бит

Размер блока, бит

Размер вектора инициализации, бит

Количество циклов шифрования

Lucipher

128

128

DES

56

64

64

16

FEAL-1

64

64

4

B-Crypt

56

64

64

IDEA

128

64

ГОСТ 28147-89

256

64

64

32

    Защита информации - совокупность мероприятий, методов и средств, обеспечивающих:

исключение НСД к ресурсам ЭВМ, программам и данным;

проверку целостности информации;

исключение несанкционированного использования программ (защита программ от копирования).

    Очевидная тенденция к переходу на цифровые методы передачи и хранения информации позволяет применять унифицированные методы и алгоритмы для защиты дискретной (текст, факс, телекс) и непрерывной (речь) информации.
    Испытанный метод защиты информации от НСД - шифрование (криптография). Шифрованием (encryption) называют процесс преобразования открытых данных (plaintext) в зашифрованные (шифртекст, ciphertext) или зашифрованных данных в открытые по определенным правилам с применением ключей. В англоязычной литературе зашифрование/расшифрование - enciphering/deciphering.
    С помощью криптографических методов возможно:


шифрование информации;

реализация электронной подписи;

распределение ключей шифрования;

защита от случайного или умышленного изменения информации.



    К алгоритмам шифрования предъявляются определенные требования:

высокий уровень защиты данных против дешифрования и возможной модификации;

защищенность информации должна основываться только на знании ключа и не зависеть от того, известен алгоритм или нет (правило Киркхоффа);

малое изменение исходного текста или ключа должно приводить к значительному изменению шифрованного текста (эффект "обвала");

область значений ключа должна исключать возможность дешифрования данных путем перебора значений ключа;

экономичность реализации алгоритма при достаточном быстродействии;

стоимость дешифрования данных без знания ключа должна превышать стоимость данных.




Симметричные алгоритмы шифрования


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

отправитель передает получателю ключ (в случае сети с несколькими абонентами у каждой пары абонентов должен быть свой ключ, отличный от ключей других пар);

отправитель, используя ключ, зашифровывает сообщение, которое пересылается получателю;

получатель получает сообщение и расшифровывает его.

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



Сравнение cимметричных и аcимметричных алгоритмов шифрования


В асимметричных системах необходимо применять длинные ключи (512 битов и больше). Длинный ключ резко увеличивает время шифрования. Кроме того, генерация ключей весьма длительна. Зато распределять ключи можно по незащищенным каналам.
    В симметричных алгоритмах используют более короткие ключи, т. е. шифрование происходит быстрее. Но в таких системах сложно распределение ключей.
    Поэтому при проектировании защищенной системы часто применяют и cимметричные, и аcимметричные алгоритмы. Так как система с открытыми ключами позволяет распределять ключи и в симметричных системах, можно объединить в системе передачи защищенной информации асимметричный и симметричный алгоритмы шифрования. С помощью первого рассылать ключи, вторым же - собственно шифровать передаваемую информацию [4, c. 53].
    Обмен информацией можно осуществлять следующим образом:

получатель вычисляет открытый и секретный ключи, секретный ключ хранит в тайне, открытый же делает доступным;

отправитель, используя открытый ключ получателя, зашифровывает сеансовый ключ, который пересылается получателю по незащищенному каналу;

получатель получает сеансовый ключ и расшифровывает его, используя свой секретный ключ;

отправитель зашифровывает сообщение сеансовым ключом и пересылает получателю;

получатель получает сообщение и расшифровывает его.

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