Алгоритмы шифрования данных. Симметричные алгоритмы шифрования. Алгоритм шифрования RSA. Алгоритм шифрования DES. Выбор алгоритма шифрования.  Симметричное и асимметричное шифрование для новичков

Симметричные криптосистемы

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

В настоящее время симметричные шифры - это:

1. Блочные шифры - обрабатывают информацию блоками определенной длины (обычно 64, 128 бит), применяя к блоку ключ в установленном порядке, как правило, несколькими циклами перемешивания и подстановки, называемыми раундами. Результатом повторения раундов является лавинный эффект - нарастающая потеря соответствия битов между блоками открытых и зашифрованных данных.

2. Поточные шифры - в которых шифрование проводится над каждым битом либо байтом исходного (открытого) текста с использованием гаммирования. Поточный шифр может быть легко создан на основе блочного (например, ГОСТ 28147-89 в режиме гаммирования), запущенного в специальном режиме.

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

Криптографическая система с открытым ключом (или Асимметричное шифрование, Асимметричный шифр) -- система шифрования информации, при которой ключ, которым зашифровывается сообщение и само зашифрованное сообщение передаётся по открытому, (то есть незащищённому, доступному для наблюдения) каналу. Для генерации открытого ключа и для прочтения зашифрованного сообщения получатель использует секретный ключ. Криптографические системы с открытым ключом в настоящее время широко применяются в различных сетевых протоколах, в частности, в протоколе SSL и основанных на нём протоколах прикладного уровня HTTPS, SSH и т. д.

Рис. 7.

1. Получатель генерирует ключ. Ключ разбивается на открытую и закрытую часть. При этом открытый ключ не должен передаваться по открытому каналу. Либо его подлинность должна быть гарантирована некоторым сертифицирующим органом.

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

3. Получатель с помощью закрытого ключа дешифрует сообщение.

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

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

Особенности системы

Преимущество асимметричных шифров перед симметричными шифрами состоит в отсутствии необходимости передачи секретного ключа. Сторона, желающая принимать зашифрованные тексты, в соответствии с используемым алгоритмом вырабатывает пару «открытый ключ -- закрытый ключ». Значения ключей связаны между собой, однако вычисление одного значения из другого должно быть невозможным с практической точки зрения. Открытый ключ публикуется в открытых справочниках и используется для шифрования информации контрагентом. Закрытый ключ держится в секрете и используется для расшифровывания сообщения, переданного владельцу пары ключей. Начало асимметричным шифрам было положено в 1976 году в работе Уитфилда Диффи и Мартина Хеллмана «Новые направления в современной криптографии». Они предложили систему обмена общим секретным ключом на основе проблемы дискретного логарифма. Вообще, в основу известных асимметричных криптосистем кладётся одна из сложных математических проблем, которая позволяет строить односторонние функции и функции-ловушки. Например, криптосистема Ривеста-Шамира-Адельмана использует проблему факторизации больших чисел, а криптосистемы Меркля-Хеллмана и Хора-Ривеста опираются на так называемую задачу об укладке рюкзака.

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

Гибридная (или комбинированная) криптосистема -- это система шифрования, обладающая всеми достоинствами криптосистемы с открытым ключом, но лишенная ее основного недостатка -- низкой скорости шифрования.

Принцип: Криптографические системы используют преимущества двух основных криптосистем: симметричной и асимметричной криптографии. На этом принципе построены такие программы, как PGP и GnuPG.

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

Шифрование: Большинство шифровальных систем работают следующим образом. Для симметричного алгоритма (3DES, IDEA, AES или любого другого) генерируется случайный ключ. Такой ключ, как правило, имеет размер от 128 до 512 бит (в зависимости от алгоритма). Затем используется симметричный алгоритм для шифрования сообщения. В случае блочного шифрования необходимо использовать режим шифрования (например, CBC), что позволит шифровать сообщение с длиной, превышающей длину блока. Что касается самого случайного ключа, он должен быть зашифрован с помощью открытого ключа получателя сообщения, и именно на этом этапе применяется криптосистема с открытым ключом (RSA или Алгоритм Диффи -- Хеллмана). Поскольку случайный ключ короткий, его шифрование занимает немного времени. Шифрование набора сообщений с помощью асимметричного алгоритма -- это задача вычислительно более сложная, поэтому здесь предпочтительнее использовать симметричное шифрование. Затем достаточно отправить сообщение, зашифрованное симметричным алгоритмом, а также соответствующий ключ в зашифрованном виде. Получатель сначала расшифровывает ключ с помощью своего секретного ключа, а затем с помощью полученного ключа получает и всё сообщение.

Цифровая подпись обеспечивает:

* Удостоверение источника документа. В зависимости от деталей определения документа могут быть подписаны такие поля, как «автор», «внесённые изменения», «метка времени» и т. д.

* Защиту от изменений документа. При любом случайном или преднамеренном изменении документа (или подписи) изменится шифр, следовательно, подпись станет недействительной.

Возможны следующие угрозы цифровой подписи:

*Злоумышленник может попытаться подделать подпись для выбранного им документа.

*Злоумышленник может попытаться подобрать документ к данной подписи, чтобы подпись к нему подходила.

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

*Злоумышленник, укравший закрытый ключ, может подписать любой документ от имени владельца ключа.

*Злоумышленник может обманом заставить владельца подписать какой-либо документ, например используя протокол слепой подписи.

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

Защити свой компьютер на 100% от вирусов и хакеров Бойцев Олег Михайлович

Симметричное шифрование

Симметричное шифрование

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

Популярными алгоритмами симметричного шифрования являются:

DES (значительно устарел) и TripleDES (3DES);

AES (Rijndael);

ГОСТ 28147-89;

Основными параметрами алгоритмов симметричного шифрования можно считать:

Стойкость;

Длину ключа;

Количество раундов;

Длину обрабатываемого блока;

Сложность аппаратной/программной реализации.

Итак, начнем.

Data Encryption Standard (DES). Алгоритм Data Encryption Standard (DES) был разработан компанией IBM в начале 1970-х гг. Национальный институт стандартов и технологий США (NIST) принял на вооружение алгоритм (публикация FIPS 46) для DES в 1977 году. Дальнейшей модификации алгоритм подвергался в 1983, 1988, 1993 и 1999 годах.

До недавнего времени DES был "стандартом США", поскольку правительство этой страны рекомендовало применять его для реализации различных систем шифрования данных. Однако несмотря на то что изначально DES планировалось использовать не более 10-15 лет, попытки его замены начались только в 1997 году.

DES использует ключ длиной 56 бит. По сегодняшним меркам, такая длина ключа неприемлема. DES является блочным алгоритмом шифрования, обрабатывающим единовременно один 64-битный блок открытого текста. В алгоритме DES выполняются 16 циклов шифрования с различным подключом в каждом из циклов. Ключ подвергается действию своего собственного алгоритма для образования 16 подключей (рис. 2.1).

Рис. 2.1. Схема работы DES

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

Вводится функция F, которая работает с 32-разрядными словами исходного текста ® и использует в качестве параметра 48-разрядный ключ (J). Схема работы функции F показана на рис. 2.1. Сначала 32 входных разряда расширяются до 48, при этом некоторые разряды повторяются.

Для полученного 48-разрядного кода и ключа выполняется операция сложения по модулю 2. Результирующий 48-разрядный код преобразуется в 32-разрядный с помощью S-матриц.

Исходный 48-разрядный код делится на восемь групп по шесть разрядов. Первый и последний разряды в группе используются в качестве адреса строки, а средние четыре разряда – в качестве адреса столбца. В результате каждые шесть бит кода преобразуются в четыре бита, а весь 48-разрядный код – в 32-разрядный (для этого нужно восемь S-матриц). Существуют разработки, позволяющие выполнять шифрование в рамках стандарта DES аппаратным образом, что обеспечивает довольно высокое быстродействие.

Чтобы все-таки разобраться во всех тонкостях алгоритма DES, будет вполне уместно привести описание так называемой сети Фейштеля (иногда называют сетью Файстеля), которая и стоит в основе DES.

В 1973 году Хорст Фейштель (Horst Feistel) в журнале Scientific American опубликовал статью "Cryptography and Computer Privacy", в которой раскрыл некоторые важные аспекты шифрования, а также ввел конструкцию, названную впоследствии сетью Фейштеля. Эта схема была использована в проекте Lucifer фирмы IBM, над которым работали Фейштель и Дон Копперсмит (Don Coppersmith). Данный проект был скорее экспериментальным, но стал базисом для Data Encryption Standard (DES). Итеративная структура алгоритма позволяла упростить его реализацию в аппаратных средах.

Уместно заметить, что следующие блочные шифры как раз таки используют классическую или модифицированную сеть Фейштеля в своей основе: Blowfish, Camellia, CAST, DES, FEAL, ГОСТ 28147-89, KASUMI, LOKI97, Lucifer, MacGuffin, MARS, MAGENTA, MISTY1, RC2, RC5, RC6, Skipjack, TEA, Triple DES, Twofish, XTEA.

TripleDES (3DES). Очевидная нестойкость DES стала причиной поисков некой альтернативы. В 1992 году исследования показали, что DES можно использовать трижды для обеспечения более мощного шифрования. Так появился тройной DES (3DES). Тройной DES используется либо с двумя, либо с тремя ключами. Используемый при этом ключ обеспечивает большую мощность в сравнении с обычным DES.

Advanced Encrypt Standard (AES). Вскоре после выхода DES обнаружилась очевидная слабость алгоритма. Необходимость в принятии нового стандарта была более чем явной: небольшая длина ключа DES (56 бит) позволяла применить метод грубой силы против этого алгоритма. Кроме того, архитектура DES была ориентирована на аппаратную реализацию, и программная реализация алгоритма на платформах с ограниченными ресурсами не давала необходимого быстродействия. Модификация TDES обладала достаточной длиной ключа, но при этом была еще медленнее. TDES не просуществовал столь долго, чтобы можно было говорить о том, что алгоритм стоек и надежен. Ему на смену, как и следовало ожидать, пришел более стойкий и надежный алгоритм – AES, который, между прочим, был выбран в результате конкурса и принят в качестве американского стандарта шифрования правительством США. Немного о самом конкурсе.

2 января 1997 года NIST (Национальный Институт Стандартов и Технологий) объявляет о намерении найти замену DES, являвшемуся американским стандартом с 1977 года. NIST принял достаточное количество предложений от заинтересованных сторон о том, каким образом следует выбирать алгоритм. Активный отклик со стороны открытого криптографического сообщества привел к объявлению конкурса 12 сентября 1997 года. Алгоритм могла предложить практически любая организация или группа исследователей. Минимальные требования к новому стандарту были следующими:

Это должен быть блочный шифр;

Длина блока должна составлять 128 бит;

Алгоритм должен работать с ключами длиной 128, 192 и 256 бит;

Использовать операции, легко реализуемые как аппаратно (в микрочипах), так и программно (на персональных компьютерах и серверах);

Ориентироваться на 32-разрядные процессоры;

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

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

20 августа 1998 года на первой конференции AES был объявлен список из 15 кандидатов, а именно: CAST-256, CRYPTON, DEAL, DFC, E2, FROG, HPC, LOKI97, MAGENTA, MARS, RC6, Rijndael, SAFER+, Serpent и Twofish.

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

В марте 1999 года прошла вторая конференция AES, а в августе 1999 года были объявлены пять финалистов, среди которых оказались: MARS, RC6, Rijndael, Serpent и Twofish. Все они были разработаны авторитетными криптографами, имеющими мировое признание. На 3-й конференции AES в апреле 2000 года все авторы представили свои алгоритмы.

В Нью-Йорке 13 и 14 апреля 2000 года, незадолго до завершения второго этапа, прошла третья конференция AES. Двухдневная конференция была разделена на восемь сессий по четыре в день. На сессиях первого дня обсуждались вопросы, связанные с программируемыми матрицами (FGPA), проводилась оценка реализации алгоритмов на различных платформах, в том числе PA-RISC, IA-64, Alpha, высокоуровневых смарт-картах и сигнальных процессорах, сравнивалась производительность претендентов на стандарт, анализировалось количество раундов в алгоритмах-кандидатах. На второй день был проанализирован Rijndael с сокращенным количеством раундов и показана его слабость в этом случае, обсуждался вопрос об интегрировании в окончательный стандарт всех пяти алгоритмов-претендентов, еще раз тестировались все алгоритмы. В конце второго дня была проведена презентация, на которой претенденты рассказывали о своих алгоритмах, их достоинствах и недостатках. О Rijndael как о лидере рассказал Винсент Риджмен (Vincent Rijmen), заявивший о надежности защиты, высокой общей производительности и простоте архитектуры своего кандидата.

2 октября 2000 года было объявлено, что победителем конкурса стал алгоритм Rijndael, и началась процедура стандартизации. 28 февраля 2001 года был опубликован проект, а 26 ноября 2001 года AES был принят как FIPS 197.

Строго говоря, AES и Rijndael не одно и то же, так как Rijndael поддерживает широкий диапазон длин ключей и блоков.

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

В отличие от ГОСТ 28147, который будет рассмотрен ниже, алгоритм Rijndael представляет блок данных в виде двухмерного байтового массива размером 4 х 4, 4 х 6 или 4 х 8 (допускается использование нескольких фиксированных размеров шифруемого блока информации). Все операции выполняются с отдельными байтами массива, а также с независимыми столбцами и строками.

Алгоритм Rijndael предусматривает выполнение четырех последовательных преобразований.

1. BS (ByteSub) – табличная замена каждого байта массива (рис. 2.2).

Рис. 2.2. Табличная замена каждого байта массива

2. SR (ShiftRow) – сдвиг строк массива. При этой операции первая строка остается без изменений, а остальные циклически побайтно сдвигаются влево на фиксированное количество байт, зависящее от размера массива. Например, для массива размером 4 х 4 строки 2, 3 и 4 сдвигаются на 1, 2 и 3 байта соответственно (рис. 2.3).

3. Следующим идет MC (MixColumn) – операция над независимыми столбцами массива, когда каждый столбец по определенному правилу умножается на фиксированную матрицу C(X) (рис. 2.4).

4. Заключительный этап – AK (AddRoundKey) – добавление ключа. Каждый бит массива складывается по модулю 2 с соответствующим битом ключа раунда, который, в свою очередь, определенным образом вычисляется из ключа шифрования (рис. 2.5).

Рис. 2.3. Сдвиг строк массива

Рис. 2.4. Операция MixColumn

Рис. 2.5. Операция добавления ключа

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

Рис. 2.6. Последовательность раундов Rijndael

В алгоритме Rijndael количество раундов шифрования ® переменное (10, 12 или 14 раундов) и зависит от размеров блока и ключа шифрования (для ключа также предусмотрено несколько фиксированных размеров).

Почему же Rijndael стал новым стандартом шифрования, опередившим другие алгоритмы? Прежде всего, он обеспечивает высокую скорость шифрования, причем на всех платформах: как при программной, так и при аппаратной реализации. Алгоритм отличается удачным механизмом распараллеливания вычислений по сравнению с другими алгоритмами, представленными на конкурс. Кроме того, требования к ресурсам для его работы минимальны, что важно при его использовании в устройствах, обладающих ограниченными вычислительными возможностями.

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

26 мая 2006 года на конференции Quo Vadis IV Николя Тадеуш Куртуа (польский криптограф, проживающий во Франции) представил практическое доказательство существования алгебраических атак, оптимизированных против шифра AES-Rijndael. За полтора часа на своем ноутбуке он осуществил демо-взлом всего лишь по нескольким шифртекстам близкого аналога Rijndael. Хотя это был только модельный шифр, он являлся таким же стойким, в него не было добавлено существенных слабостей, он имел такие же хорошие диффузионные характеристики и устойчивость ко всем известным до этого видам криптоанализа. Единственным отличием были лишь измененные в рамках модели алгебраических атак параметры S-блоков и уменьшенное для наглядности количество раундов. Однако этого было достаточно, чтобы убедить скептиков в реальности алгебраических атак и несовершенстве даже такого, казалось бы, совершенного метода шифрования.

ГОСТ 28147. Следующим алгоритмом симметричного шифрования, который мы рассмотрим, станет ГОСТ 28147-89. Это советский и российский стандарт симметричного шифрования, введенный 1 июля 1990 года. Стандарт обязателен для организаций, предприятий и учреждений, применяющих криптографическую защиту данных, хранимых и передаваемых в сетях ЭВМ, в отдельных вычислительных комплексах или ЭВМ.

Алгоритм был разработан в бывшем Главном Управлении КГБ СССР или в одном из секретных НИИ в его системе. Первоначально имел гриф (ОВ или СС – точно неизвестно), затем гриф последовательно снижался и к моменту официального проведения алгоритма через Госстандарт СССР в 1989 году был снят. Алгоритм остался ДСП (как известно, ДСП не считается грифом). В 1989 году стал официальным стандартом СССР, а позже, после распада СССР, федеральным стандартом Российской Федерации.

С момента опубликования ГОСТа на нем стоял ограничительный гриф "Для служебного пользования", и формально шифр был объявлен "полностью открытым" только в мае 1994 года. По известным причинам, история создания шифра и критерии его проектирования до сих пор неизвестны.

ГОСТ 28147-89 представляет собой блочный шифр с 256-битным ключом и 32 циклами преобразования, оперирующий 64-битными блоками. Основа алгоритма – уже известная нам сеть Фейштеля. Основным режимом шифрования по ГОСТ 28147-89 является режим простой замены (определены также более сложные режимы гаммирования и гаммирования с обратной связью). Рассмотрим механизм работы алгоритма подробнее.

При работе ГОСТ 28147-89 информация шифруется блоками по 64 бита (такие алгоритмы называются блочными), которые затем разбиваются на два субблока по 32 бита (N1 и N2). После завершения обработки субблока N1 его значение складывается со значением субблока N2 (сложение выполняется по модулю 2, то есть применяется логическая операция XOR – исключающее ИЛИ), а затем субблоки меняются местами. Данное преобразование выполняется определенное количество раз (раундов): 16 или 32 в зависимости от режима работы алгоритма. В каждом раунде выполняются две операции (рис. 2.7).

Рис. 2.7. Преобразование выполняется определенное количество раз

Первая операция подразумевает наложение ключа. Содержимое субблока N1 складывается по модулю 2 с 32-битной частью ключа Kx. Полный ключ шифрования представляется в виде конкатенации 32-битных подключей: K0, K1, K2, K3, K4, K5, K6, K7. В процессе шифрования используется один из этих подключей, в зависимости от номера раунда и режима работы алгоритма.

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

Алгоритм, определяемый ГОСТ 28147-89, может работать в четырех режимах:

Простой замены;

Гаммирования;

Гаммирования с обратной связью;

Генерации имитоприставок.

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

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

В режиме гаммирования каждый блок открытого текста побитно складывается по модулю 2 с блоком гаммы шифра размером 64 бита. Гамма шифра – это специальная последовательность, которая получается в результате определенных операций с регистрами N1 и N2 .

1. В регистры N1 и N2 записывается их начальное заполнение – 64-битная величина, называемая синхропосылкой.

2. Выполняется зашифровка содержимого регистров N1 и N2 (в данном случае синхропосылки) в режиме простой замены.

3. Содержимое регистра N1 складывается по модулю (2 32 – 1) с константой C1, равной 2 24 + 2 16 + 2 8 + 2 4 , а результат сложения записывается в регистр N1.

4. Содержимое регистра N2 складывается по модулю 2 32 с константой C2, равной 2 24 + 2 16 + 2 8 + 1, а результат сложения записывается в регистр N2.

5. Содержимое регистров N1 и N2 подается на выход в качестве 64-битного блока гаммы шифра (в данном случае N1 и N2 образуют первый блок гаммы).

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

Для расшифровки гамма вырабатывается аналогичным образом, а затем к битам зашифрованного текста и гаммы снова применяется операция XOR.

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

В большинстве реализаций алгоритма ГОСТ 28147-89 синхропосылка несекретна, однако есть системы, где синхропосылка является таким же секретным элементом, как и ключ шифрования. Для таких систем эффективная длина ключа алгоритма (256 бит) увеличивается еще на 64 бит секретной синхропосылки, которую также можно рассматривать как ключевой элемент.

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

Рассматривая режим генерации имитоприставок, следует определить понятие предмета генерации. Имитоприставка – это криптографическая контрольная сумма, вычисляемая с использованием ключа шифрования и предназначенная для проверки целостности сообщений. При генерации имитоприставки выполняются следующие операции: первый 64-битный блок массива информации, для которого вычисляется имитоприставка, записывается в регистры N1 и N2 и зашифровывается в сокращенном режиме простой замены (выполняются первые 16 раундов из 32). Полученный результат суммируется по модулю 2 со следующим блоком информации с сохранением результата в N1 и N2.

Цикл повторяется до последнего блока информации. Получившееся в результате этих преобразований 64-битное содержимое регистров N1 и N2 или его часть и называется имитоприставкой. Размер имитоприставки выбирается исходя из требуемой достоверности сообщений: при длине имитоприставки r бит вероятность, что изменение сообщения останется незамеченным, равна 2^.Чаще всего используется 32-битная имитоприставка, то есть половина содержимого регистров. Этого достаточно, поскольку, как любая контрольная сумма, имитоприставка предназначена прежде всего для защиты от случайных искажений информации. Для защиты же от преднамеренной модификации данных применяются другие криптографические методы – в первую очередь электронная цифровая подпись.

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

Алгоритм ГОСТ 28147-89 считается достаточно сильным – в настоящее время для его раскрытия не существует более эффективных методов, чем упомянутый выше Brute Force. Высокая стойкость алгоритма достигается в первую очередь за счет большой длины ключа, равной 256 бит. К тому же при использовании секретной синхропосылки эффективная длина ключа увеличивается до 320 бит, а засекречивание таблицы замен прибавляет дополнительные биты. Кроме того, криптостойкость ГОСТ 28147-89 уже при 32 раундах можно считать более чем достаточной, и это притом, что полный эффект рассеивания входных данных достигается уже после восьми раундов.

На сегодняшний день алгоритм ГОСТ 28147-89 полностью удовлетворяет всем требованиям криптографии и обладает теми же достоинствами, что и другие алгоритмы, но лишен их недостатков. К очевидным достоинствам этого алгоритма можно отнести:

Эффективность реализации и, соответственно, высокое быстродействие на современных компьютерах;

Бесперспективность силовой атаки (XSL-атаки в учет не берутся, так как их эффективность на данный момент полностью не доказана).

Однако же, как оно всегда и бывает, алгоритм не лишен недостатков: тривиально доказывается, что у ГОСТа существуют "слабые" ключи и S-блоки, но в стандарте не описываются критерии выбора и отсева "слабых". Кроме того, стандарт не специфицирует алгоритм генерации S-блоков (таблицы замен). С одной стороны, это может являться дополнительной секретной информацией (помимо ключа), а с другой – поднимает ряд проблем: нельзя определить криптостойкость алгоритма, не зная заранее таблицы замен; реализации алгоритма от различных производителей могут использовать разные таблицы замен и могут быть несовместимы между собой.

Кратко рассмотрим некоторые другие алгоритмы симметричного шифрования.

Blowfish. Blowfish представляет собой 64-битный блочный шифр, разработанный Шнайером (Schneier) в 1993 году. Этот шифр, как и многие другие, основан на алгоритме сети Фейштеля. Отдельный раунд шифрования данного алгоритма состоит из зависимой от ключа перестановки и зависимой от ключа с данными замены. Все операции основаны на операциях XOR и прибавлениях к 32-битным словам (XORs and additions on 32-bit words). Ключ имеет переменную длину (максимальная длина 448 бит) и используется для генерации нескольких подключевых массивов (subkey arrays). Шифр был создан специально для 32-битных машин и существенно быстрее ранее рассмотренного нами алгоритма DES.

IDEA (International Data Encryption Algorithm) был разработан К. Лейем (Lai) и Д. Месси (Massey) в конце 1980-х годов. Это шифр, состоящий из 64-битных повторяющихся блоков со 128-битным ключом и восемью раундами. Следует отметить, что, в отличие от ранее нами рассмотренных алгоритмов шифрования, IDEA не основан на сети Фейштеля, хотя процесс дешифрования аналогичен процессу шифрования. IDEA был сконструирован с учетом его легкого воплощения как программно, так и аппаратно. Ко всему прочему безопасность IDEA основывается на использовании трех несовместимых типов арифметических операций над 16-битными словами.

Один из принципов создания IDEA заключался в том, чтобы максимально затруднить его дифференциальный криптоанализ, что в настоящее время выражается отсутствием алгебраически слабых мест алгоритма. Даже не смотря на то что найденный неким "Daemen" обширный класс (2 51) слабых ключей теоретически может скомпрометировать алгоритм, IDEA остается достаточно надежным алгоритмом, так как существует 2 128 возможных вариантов ключей, что делает его взлом трудно осуществимым.

RC5 представляет собой довольно быстрый блочный шифр, разработанный Ривестом (Ronald Linn Rivest) специально для «RSA Data Security». Этот алгоритм параметричен, то есть его блок, длинна ключа и количество проходов (раундов) переменны.

Размер блока может равняться 32, 64 или 128 бит. Количество проходов может варьироваться от 0 до 2048 бит. Параметричность подобного рода делает RC5 необычайно гибким и эффективным алгоритмом в своем классе.

Исключительная простота RC5 делает его простым в использовании. RC5 с размером блока в 64 бита и 12 или более проходами обеспечивает хорошую стойкость против дифференциального и линейного криптоанализов.

Из книги Защити свой компьютер на 100% от вирусов и хакеров автора Бойцев Олег Михайлович

Асимметричное шифрование В отличие от алгоритмов симметричного шифрования, где используется один и тот же ключ как для расшифровки, так и для зашифровки, алгоритмы асимметричного шифрования используют открытый (для зашифровки) и закрытый, или секретный (для

Из книги Основы AS/400 автора Солтис Фрэнк

Симметричное мультипроцессирование Ранее мы видели, что система симметричного мультипроцессирования (SMP) дает возможность ОС обрабатывать задачи на любом свободном процессоре или на всех процессорах сразу, при этом память остается общей для всех процессоров. Именно

Из книги Windows Script Host для Windows 2000/XP автора Попов Андрей Владимирович

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

3.8.6 Комбинированное шифрование Комбинированное шифрование реализуется следующим образом:? Выбирается случайный симметричный ключ.? По этому ключу шифруются данные.? Случайный ключ шифруется с помощью общедоступного ключа шифрования получателя и включается в

Из книги 500 лучших программ для Windows автора Уваров Сергей Сергеевич

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

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

2.26. Шифрование строк Иногда нежелательно, чтобы строки можно было легко распознать. Например, пароли не следует хранить в открытом виде, какими бы ограничительными ни были права доступа к файлу.В стандартном методе crypt применяется стандартная функция с тем же именем для

Из книги PGP: Кодирование и шифрование информации с открытым ключом. автора Левин Максим

Подписание и шифрование. Для подписания текстового файла вашим секретным ключом и последующей его зашифровки открытым ключом адресата, наберите:pgp –es textfile her_userid [-u your_userid]Обратите внимание, что скобки просто обозначают необязательное поле, не вводите сами скобки.В

Из книги Delphi. Трюки и эффекты автора Чиртик Александр Анатольевич

Глава 12 Шифрование Основы криптографии Шифр простой подстановки Транспозиция Шифр Виженера и его варианты Шифр с автоключом ВзломПо той или иной причине часто бывает необходимо сообщить определенную информацию конкретному кругу людей так, чтобы она

Из книги Windows Vista. Для профессионалов автора Клименко Роман Александрович

7.4. Шифрование В операционной системе Windows Vista также появились новые возможности по шифрованию файлов и папок, а также целых разделов жесткого диска. Поэтому нельзя не упомянуть об этих возможностях в книге, посвященной нововведениям операционной системы Windows Vista.Работа с

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Шифрование пароля Интерфейс gsec шифрует пароли, используя скромный метод, основанный на алгоритме хэширования DES (Data Encryption Standard, стандарт шифрования данных). По причине восьмисимвольного ограничения идентификация пользователя в Firebird на сегодняшний день не может

Из книги Введение в криптографию автора Циммерманн Филипп

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

Из книги Linux глазами хакера автора Флёнов Михаил Евгеньевич

5.2. Шифрование Во времена рождения Интернета и первых сетевых протоколов еще не задумывались о безопасности. Этот вопрос стал актуальным только тогда, когда начали происходить реальные взломы. Одним из самых больших упущений было то, что в большинстве протоколов данные

Из книги IT-безопасность: стоит ли рисковать корпорацией? автора Маккарти Линда

5.2.3. Шифрование файлов Некоторые серверы могут использоваться для хранения архивных данных, которые, несмотря на такой статус, должны быть скрыты от стороннего взгляда. Наилучший вариант защиты - шифровать файлы, чтобы никто не смог увидеть их содержимое, и пакет OpenSSL

Из книги Анонимность и безопасность в Интернете. От «чайника» к пользователю автора Колисниченко Денис Николаевич

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

Из книги автора

10.4. Шифрование в Windows 7 Самые дорогие выпуски Windows 7: Профессиональная (Professional), Корпоративная (Enterprise) и Максимальная (Ultimate) – поддерживают функцию шифрования файлов и каталогов (система EFS). Зашифрованные файлы нельзя просмотреть на другом компьютере – в случае, если,

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

Все многообразие симметричных систем основывается на следующих базовых классах:

Моно- и многоалфавитные подстановки;

Перестановки;

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

Гаммирование.

Подстановки

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

c ≡ (a*e +s) mod K , (5.1)

где a – десятичный коэффициент; s – коэффициент сдвига; e – код буквы исходного текста; c – код зашифрованной буквы; K – длина алфавита; mod – операция вычисления остатка от деления выражения в скобках на модуль К.

Пример. Шифр Цезаря

Рассмотрим шифрование на алфавите, состоящим и 26 латинских букв и знака пробела (пробел будем изображать знаком #). Знаку # присвоим код 0, букве A – код 1, B – код 2,… букве Z – код 26.

Возьмем следующие параметры: a = 1 s = 2 K = 27

Формула для шифрования примет вид

c ≡ (e + 2) mod 27 (5.2)

Входной алфавит:

# A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Выходной алфавит

B C D E F G H I J K L M N O P Q R S T U V W X Y Z # A

(Буквы сдвигаются на две позиции: A-C B-D и т.д.)

Тогда исходное сообщение в зашифрованном виде будет выглядеть так:

Для расшифровки (для случая, когда a=1) используется следующая формула

e ≡ (K+ c - s) mod K (5.3)

Простая многоалфавитная подстановка последовательно и циклически меняет используемые алфавиты (в предыдущем случае для шифрования использовался один алфавит). При m-алфавитной подстановке знак a 1 из исходного сообщения заменяется знаком из алфавита B 1 , знак a 2 - знаком из алфавита B 2 , … знак a m - знаком из алфавита B m , знак a m +1 - знаком из алфавита B 1 и т.д. Эффект использования многоалфавитной подстановки состоит в том, что обеспечивается маскировка частотной статистики исходного языка, так как конкретный знак из алфавита А преобразуется в несколько различных знаков шифровального алфавита В.

Пример

Исходное сообщение: WE#NEED#SNOW

Ключ: SECURITYSECU

В качестве ключа выбрано слово SECURITY. Слово записывается под исходным сообщением, когда буквы ключа исчерпываются, начинаем повторять слово, пока не закончатся буквы исходного сообщения. Каждая буква ключа (точнее ее код) будет задавать сдвижку в исходном алфавите для получения зашифрованного символа. В качестве алфавита используем латинские буквы и знак # вместо пробела.

Исходный ключ Шифр

(W + S) mod 27 = (23 + 19) mod 27 = 15→O

(E + E) mod 27 = (5 + 5) mod 27 = 10 → J

(# + C) mod 27 = (0 + 3) mod 27 = 3 → C

Задание

Предлагаем в качестве упражнения составить шифровку до конца.

Перестановки

Знаки исходного текста можно переставлять в соответствии с определенным правилом.

Пример 1. Линейная перестановка

Пусть необходимо зашифровать следующий текст:

ГРУЗИТЕ#АПЕЛЬСИНЫ#БОЧКАХ

Разобьем текст на группы длиной, например по 4 символа:

ГРУЗ ИТЕ# АПЕЛ ЬСИН Ы#БО ЧКАХ

Зададим следующее правило перестановки: “переставить группировки из четырех букв, находящихся в порядке 1-2-3-4 в порядок 3-1-4-2”.

Получим следующий зашифрованный текст:

УГРЗ ЕИ#Т ЕАЛП ИЬНС БЫО# АЧХК

Замечание

Если длина сообщения не кратна длине группы, то последнюю группу дополняем символами (например, пробелами) до нужной длины.

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

Пример 2 . Решетка Кардано

Решетка Кардано – это прямоугольная карточка с отверстиями, чаще квадратная, которая при наложении на лист бумаги оставляет открытыми лишь некоторые его части. Число строк и столбцов четно. Карточка сделана так, что при ее последовательном повороте каждая клетка лежащего под ним листа будет занятой. Если решетка квадратная, то можно последовательно поворачивать ее вокруг центра квадрата на 90°.

Шифровка:

ВАВОЧС МУНОТИ МЫЖРОЕ ЬУХСОЙ МДОСТО ЯАСНТВ

Расшифровать сообщение, вращая решетку по часовой стрелке на 90°. Сообщение впишите в квадрат по строкам.

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

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

Блочные шифры представляют собой семейство обратимых преобразований блоков (частей фиксированной длины) исходного текста.

Под N-разрядным блоком будем понимать последовательность из нулей и единиц длины N:

x = (x 0 , x 1 , …x N -1) . (5.5)

x в Z 2, N можно интерпретировать как вектор и как двоичное представление целого числа

(5.6)

Под блочным шифром будем понимать элемент

Где x = (x 0 , x 1 , …x N -1), y = (y 0 , y 1 , …y N -1)

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

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

Потоковые шифры представляют собой разновидность гаммирования и преобразуют открытый текст в шифрованный последовательно по одному биту. Генератор ключевой последовательности, иногда называемой генератором бегущего ключа, выдает последовательность бит k 1 , k 2 , … k N . Эта ключевая последовательность складывается по модулю 2 (“исключающее или”) с последовательностью бит исходного текста e 1 , e 2 , …, e N:

На приемной стороне шифрованный текст складывается по модулю 2 с идентичной ключевой последовательностью для получения исходного текста:

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

Потоковые шифры наиболее пригодны для шифрования непрерывных потоков данных, например, в сетях передачи данных.

Введение

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

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

Почему проблема использования криптографических методов в информационных системах (ИС) стала в настоящий момент особо актуальна?

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

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

Проблемой защиты информации путем ее преобразования занимается криптология (kryptos - тайный, logos - наука). Криптология разделяется на два направления - криптографию и криптоанализ . Цели этих направлений прямо противоположны.

Криптография занимается поиском и исследованием математических методов преобразования информации.

Криптоанализ - исследует возможности расшифровывания информации без знания ключей.

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


Криптография

Современная криптография включает в себя четыре крупных раздела:

1. Симметричные криптосистемы . В симметричных криптосистемах и для шифрования, и для дешифрования используется один и тот же ключ;

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

3. Электронная подпись . Системой электронной подписи,называется присоединяемое к тексту его криптографическое преобразование, которое позволяет при получении текста другим пользователем проверить авторство и подлинность сообщения.

4. Управление ключами . Это процесс системы обработки информации, содержанием которых является составление и распределение ключей между пользователями.

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

Итак, криптография дает возможность преобразовать информацию таким образом, что ее прочтение (восстановление) возможно только при знании ключа.

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

Алфавит - конечное множество используемых для кодирования информации знаков.

Текст - упорядоченный набор из элементов алфавита.

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

Дешифрование - обратный шифрованию процесс. На основе ключа шифрованный текст преобразуется в исходный.

Ключ - информация, необходимая для беспрепятственного шифрования и дешифрования текстов.

Криптосистемы разделяются на симметричные и с открытым ключом .

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

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

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

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

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

· количество всех возможных ключей;

· среднее время, необходимое для криптоанализа.

Симметричные криптосистемы

Все многообразие существующих криптографических методов можно свести к следующим классам преобразований:

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

· Перестановки.

Также несложный метод криптографического преобразования. Используется, как правило, в сочетании с другими методами.

Перестановка - символы шифруемого текста переставляются по некоторому правилу в пределах заданного блока передаваемого текста.

· Гаммирование.

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

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

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

Комбинированное преобразование - представляют собой последовательность основных методов преобразования, применяемую к блоку шифруемого текста. Блочные шифры на практике встречаются чаще, чем “чистые” преобразования того или иного класса в силу их более высокой криптостойкости. Российский и американский стандарты шифрования основаны именно на этом классе.

· Подстановка.

Подстановка - символы шифруемого текста заменяются символами того же или другого алфавита в соответствии с заранее определенным правилом.


Похожая информация.


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

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

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 0

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

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

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

- обеспечивать производство достаточно длинных неповторяющихся последовательностей;

- обладать достаточной скоростью для работы в реальном времени.

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

Операция замены (transmutation), которую еще иногда называют операцией подстановки , состоит в замене одних символов исходного текста на другие символы. Символы исходного текста и символы на которые они заменяются, могут принадлежать одному и тому же алфавиту (например русскому языку), а могут – разным.

Операция перестановки состоит в перестановки символов исходного текста по определенному правилу.

Шифры замены и перестановки относятся к самым древним из известных методов шифрования. Подобные методы известны еще с античных времен. С течением времени усложнялись правила перестановки и замены. Теоретическая база для построения стойких шифров была разработана в середине прошлого века известным американским ученым Клодом Элвудом Шенонном (Claude Elwood Shannon ) (1916-2001), знаменитого также своими основополагающими трудами в области теории информации. С появлением его работы “Теория связи в секретных системах” криптография превращается в строгую научную дисциплину. Был предложен математический аппарат для построения стойких шифров, а также сформулированы основные принципы рассеивания и перемешивания .


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

Перемешивание – усложнение восстановления взаимосвязи статистических свойств открытого текста и криптограммы, а также между ключом и криптограммой. Перемешивание соответствует использованию методов замены [Алф2001].

С использованием этих принципов во второй половине прошлого века была предложена архитектура для построения симметричных блочных шифров. Архитектура получила название сети Фейсталя (Feistal network), по имени Хорста Фейсталя, сотрудника компании IBM. Эта архитектура на долгое время определила основное направление развития стандартов в области шифрования данных.

В сети Фейсталя происходит преобразование исходного блока данных. На выходе сети получается преобразованный блок данных. Исходный блок разделяется на две части X1 и X2. Выходной блок данных также состоит из двух частей Y1 и Y2. Чаcть Y1 – это непосредственное значение X2. Значение Y2 является результатов сложения части X1 и результата функции шифрования F. Под функцией шифрования в данном понимается функция от двух аргументов: входного блока данных и секретного ключа. Сама функция представляет собой некоторое не специфицированное преобразование над данными. В сети Фейсталя в качестве аргументов функции шифрования F выступают, входной блок данных X2 и секретный ключ шифрования K.

Аналитические формулы описанных преобразований имеют следующий вид:

Y1 = X2

Y2 = X1  F(X2, K)

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

X1 = Y2  F(Y1, K)

X2 = Y1

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

DES - старый федеральный стандарт шифрования США;

ГОСТ 28147-89 - отечественный стандарт шифрования данных;

AES - новый федеральный стандарт шифрования США.

Изложение ведется в хронологическом порядке появления этих стандартов. Работу симметричных криптографических алгоритмов можно рассматривать как функционирование “черных ящиков”. На вход подается исходный текст и ключ зашифрования фиксированного размера. На выходе получается криптограмма. Внутренняя структура таких алгоритмов представляет интерес для разработчиков и криптоаналитиков. Для пользователей в первую очередь представляют интерес сравнительные характеристики алгоритмов, результаты анализа их стойкости и область применения.

Стандарт шифрования Digital Encryption Standard (DES) более 20 лет служил в качестве федерального стандарта шифрования в США. Алгоритм был Алгоритм, лежащий в основе стандарта, был разработан еще в 1974 году в компании IBM. В 1977 году стандарт был опубликован Национальным бюро стандартов (НБС) США. Затем в 1980 году он был одобрен Национальным институтом стандартов и технологий (НИСТ) США для защиты коммерческой и несекретной информации. С 1986 года становится международным стандартом, принятым ИСО под наименованием DEA-1.

Алгоритм лежащий в основе DES относится к группе симметричных блочных шифров. Длина ключа составляет 64 бита. Из которых каждый восьмой бит служит для проверки четности. Соответственно в ключе содержится только 56 секретных бит. Входной блок данных также составляет 64 бита.

Алгоритм основан на архитектуре сети Фейсталя. Суть его состоит в выполнении преобразований в этой сети несколько раз подряд. Выходной блок данных после одного преобразования является входным блоком, для следующего преобразования. Каждое такое преобразование называется раундом шифрования . Иногда DES и другие подобные алгоритмы еще называют итерационными блочными шифрами , где под одной итерацией понимается выполнение преобразования в сети Фейсталя. Всего в DES шестнадцать раундов шифрования.

Количество раундов шифрования является важной характеристикой подобных итерационных шифров. От этого значения зависит стойкость шифра к современным методам криптоанализа, таким как дифференциальный и линейный криптоанализ. Как отмечается в работе [Вар98], применение этих методов дало наилучшие результаты в области анализа систем блочного шифрования. Наличие шестнадцати раундов шифрования является минимально необходимым для того, чтобы указанные выше методы криптоанализа были не легче полного перебора всех возможных ключей. Следует сказать, что в открытой литературе методы дифференциального и линейного криптоанализа были опубликованы сравнительно недавно. В тоже время DES был разработан и проанализирован еще в 70-х года прошлого века. Это заставляет предположить, что возможности подобных методов взлома шифров были известны специальным службам уже достаточно давно.

На каждом раунде шифрования в сети Фейсталя используется ключ шифрования для передачи его на вход функции шифрования. Такие ключи называют раундовыми ключами . Всего соответственно используется шестнадцать различных раундовых ключей. Каждый такой раундовый ключ получается из исходного ключа В описании DES опубликован метод генерации таких ключей.

Сама по себе функция шифрования является не сложной. В ее основе лежит правило преобразования входного блока данных. Это преобразование состоит из сложения входного блока данных с раундовым ключом и последующим преобразованием полученного результата в так называемом S-блоке. S-блок в DES представляет собой матрицу из 4-х строк и 16-и столбцов. В каждой ячейки матрицы содержится число от 0 до 15. Всего в стандарте опубликовано и используются 8 таких матриц.

За время своего существования DES стал очень распространенным алгоритмом шифрования, реализованным в многочисленных системах и приложениях. Однако на сегодняшний день он уже является устаревшим алгоритмом, неспособным обеспечить требуемую стойкость. В первую очередь это связано с недостаточной длинной ключа шифрования в 56 бит, принятого в стандарте. В конце 90-х годов прошлого века компания RSA Security провела серию открытых конкурсов на его взлом. Задание конкурсов состояло в дешифровании криптограммы, опубликованной на сайте компании. Все варианты были решены с помощью атаки грубой силой, то есть путем успешного полного перебора всех возможных вариантов ключей. Ниже приводится таблица с хронологией взлома DES в рамках открытых конкурсов, проводившихся компанией RSA Security:

Дата

Время взлома

Мощность

18.06.1997

96 дней

7 млрд. ключей/сек.

23.02.1998

39 дней

34 млрд. ключей/сек.

17.07.1998

3 дня

88 млрд. ключей/сек.

19.01.1999

22 часа 15 мин.

245 млрд. ключей/сек.

Как видно из приведенной таблицы, во время последнего конкурса взлом DES был осуществлен менее чем за один день. После этого компания RSA Security прекратила проведение конкурсов по взлому DES. Последний взлом был осуществлен совместными усилиями двух некоммерческих организаций: Electronic Frontier Foundation (www.eff.org) и Distributed Computing Technologies, Inc. (www.distributed.net) Подбор возможных вариантов ключа осуществлялся с помощью специального компьютера, названного Deep Cracker, стоимостью $250000. Кроме того в процессе обработки ключей использовались мощности компьютеров объединенных в сети Интернет.

Достигнутые результаты красноречиво свидетельствовали о необходимости принятия нового стандарта в области шифрования данных и смягчение существовавших в то время в США экспортных ограничений на криптографические продукты. Новый стандарт был принят в 2001 году и получил название Advanced Encryption Standard (AES). Этот стандарт и лежащий в его основе алгоритм рассмотрены ниже. С конца 90-х годов прошлого века, в качестве усиления существовавшего стандарта, применяется его модификация, получившая название “Тройной-DES” (Triple-DES).

Алгоритм ГОСТ 28147-89 является блочным симметричным шифром и основан на архитектуре сети Фейсталя. Длина ключа составляет 256 бит. Входной блок данных составляет 64 бита. В алгоритме используется 32 раунда шифрования. На каждом раунде шифрования используется раундевый ключ, значения которых получаются из первоначального секретного ключа шифрования.

Функций шифрования алгоритма ГОСТ 28147-89, использующаяся в каждом раунде шифрования имеет несложную структуру и состоит из простых операций замены и циклического сдвига. Замены осуществляются в S-блоке в специальной матрице. Для алгоритма ГОСТ 28147-89 не специфицирован конкретный вид матрицы замены. Каждый разработчик и производитель может сформировать собственную матрицу или сделать запрос в специальные службы, которые могут помочь в подготовке криптостойкой матрицы. При желании можно менять матрицу замены с течением некоторого времени. В силу того, что матрица не специфицирована ее иногда еще называют сменным ключевым элементом . В матрице восемь строк, шестнадцать столбцов и в каждой ячейке хранится четыре бита информации. Размер матрицы составляет 512 бит. Если добавить к этому размер ключа шифрования, то совокупный размер секретной информации составит 768 бит. Это дает гигантское число 2768 возможных вариантов для перебора всех значений секретной информации. Перебор подобного количества вариантов лежит далеко за пределами даже прогнозируемых мощностей вычислительной техники и совершенно недосягаем в сколько-нибудь обозримом будущем. Однако справедливости ради следует сказать, что по настоящему секретной информацией является все-таки только ключ шифрования размеров 256 бит. Структуру даже неопубликованных матриц теоретически можно определить путем анализа работы программного или аппаратного обеспечения. Также возможны попытки несанкционированного доступа к технической документации по реализации алгоритма ГОСТ 28147-89. Но даже в этом случае для полного перебора всех возможных ключей надо будет выполнить 2256 попыток. Это количество вариантов все равно остается гигантским и обеспечивает абсолютную стойкость алгоритма к атаке методом полного перебора ключей.

В открытых публикациях до сих пор не было рассмотрено ни одного успешного метода взлома отечественного стандарта шифрования данных. Однако в работе [Мол02] приводятся доводы в пользу замены имеющегося стандарта новым алгоритмом. По мнению авторов, имеющийся стандарт из-за своей архитектуры не может отвечать современным требованиям к скорости преобразования данных (более 2Гбит/сек). Кроме того отмечается, что в ряде работ в течении последних нескольких лет были описаны различные потенциальные атаки касающиеся алгоритма ГОСТ 28147-89.

Для стандарта ГОСТ 28147-89 определены следующие четыре режима работы:

Простая замена. Это основной и самый простой режим работы алгоритма. Применяется для шифрования ключевой информации.

Гаммирование . В этом режиме возможна выработка псевдослучайной гаммы с очень хорошими статистическими свойствами. Фактически использование этого режима позволяет получить потоковый шифр из блочного шифра. Применяется для шифрования данных.

Гаммирование с обратной связью . Этот режим отличается от предыдущего способом получения гаммы. Очередной элемент гаммы вырабатывается в результате преобразования предыдущего блока зашифрованных данных. Данный режим иногда также называют режимом гаммирования с зацеплением блоков [Дом2000]. Каждый блок криптограммы зависит от всех предыдущих блоков открытого текста. В режимах гаммирования можно обрабатывать входные блоки данных размером меньше 8 байт. Это свойство используется для шифрования массивов данных с произвольным размером.

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

Стандарт шифрования Advanced Encryption Standard (AES) был выбран в результате открытого международного конкурса, проводимого НИСТ США. О начале конкурса было объявлено 2 января 1997 года. В результате первоначального отбора в августе 1998 года были выбраны пятнадцать алгоритмов – кандидатов. Затем еще через год, в августе 1999 года были определены пять алгоритмов - финалистов конкурса. Конкурс завершился в октябре 2000 года. Победителем в нем стал бельгийский алгоритм RIJNDAEL разработанный Винсентом Рюменом (Vincent Rijmen) и Йон Дэмен (Joan Daemen). Этот алгоритм был выбран в качестве стандарта AES. Окончательная версия стандарта была опубликована в ноябре 2001 года. Алгоритм утвержден в качестве нового федерального стандарта шифрования в США под кодом FIPS-197 и предназначен для обработки коммерческой информации и информации, не содержащей государственную тайну. Стандарт вступил в действие с 26 мая 2002 года [Зен2002].

Стандарт AES основан на архитектуре, отличной от сети Фейсталя. Авторы алгоритма назвали эту новую архитектуру “Квадрат”. Суть ее заключается в том, что исходный блок данных по байтам записывается в матрицу. Сам процесс шифрования заключается в повторяющемся выполнении различных преобразований с элементами такой матрицы, а также с ее строками и столбцами. Предложенная архитектура обладает хорошими свойствами Шенноновского рассеивания и перемешивания.

В стандарте AES предусмотрено три режима работы в зависимости от длины используемого ключа. Возможные длины ключа составляют 128, 192 и 256 бит. Количество раундов шифрования зависит от используемой длины ключа, это соответственно 10, 12 или 14 раундов. Размер входного исходного блока данных и выходного блока шифротекста одинаковый и всегда составляет 128 бит.

В ходе анализа алгоритма в рамках проводимого конкурса, в нем не было обнаружено каких-либо слабостей. Справедливости ради следует сказать, что это относится ко всем алгоритмам – финалистам конкурса. Все они являются стойкими алгоритмами. Однако по совокупным характеристикам производительности, удобства реализации, ресурсоемкости и другим, RIJNDAEL оказался наиболее предпочтительным в качестве универсального стандарта шифрования.

К преимуществам стандарта AES относятся:

- высокая эффективность реализации на любых платформах;

- высокая стойкость;

- низкие требования к памяти;

- возможность реализации на smart-картах;

- быстрая процедура формирования ключа;

- возможность параллелизма операций.


Ниже дается сводная таблица с характеристиками рассмотренных стандартов шифрования данных [Вин2001].

DES

ГОСТ 28147-89

AES

Размер блока данных (бит)

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

128, 192, 256

Архитектура

Сеть Фейсталя

Сеть Фейсталя

“Квадрат”

Число раундов

10, 12, 14

Структура раунда

Простая

Простая

Сложная

Используемые операции

Аддитивные операции, замена, перестановки, сдвиги

Аддитивные операции, замена, сдвиги

Операции в конечных полях

Для того, чтобы перебрать все возможные ключи для алгоритма DES нужно выполнить около 7.2x1016 вариантов. Минимальный размер ключа в алгоритме AES составляет 128 бит. Для перебора всех возможных ключей в этом случае придется проверить уже около 3.4x1038 вариантов. Это примерно в 1021 раз больше чем в случае DES. Для перебора же всех ключей длинной в 256 бит потребуется проверить астрономическое число вариантов – около 1.1x1077 ключей. Стойкости нового стандарта шифрования AES по отношению к атакам методом полного перебора ключей, только сейчас сравнялась с отечественным стандартом ГОСТ 28147-89.

В алгоритме ГОСТ 28147-89 крайне простая выработка раундовых ключей шифрования. Они берутся как составные части начального секретного ключа шифрования. В то же время, в DES и в AES используются значительно более сложные алгоритмы вычисления раундевых ключей.

По сравнению с DES, алгоритм ГОСТ 28147-89 обладает большим быстродействием. Так, например, на процессорах Intel x86 реализация ГОСТ 28147-89 превосходит по быстродействию реализацию DES более чем в два раза. На процессоре Pention Pro-200 MHz предел быстродействия алгоритма ГОСТ 28147-89 составляет 8 Мбайт/сек. Ниже в таблице приведены сравнительные показатели быстродействия стандартов ГОСТ 28147-89 и AES

ГОСТ 28147-89

AES

Pentium 166 MHz

2.04 Мбайт/c

2.46 Мбайт/c

Pentium III 433 MHz

8.30 Мбайт/c

9.36 Мбайт/c

Алгоритм ГОСТ 28147-89 является более удобным для аппаратной и для программной реализации, чем DES, но менее удобным, чем AES. Стандарты ГОСТ 28147-89 и AES имеют сопоставимые значения основных характеристик.

Для блочных симметричных алгоритмов шифрования (АШ) определены несколько основных режимов их использования. Первоначально эти режимы относились к использованию алгоритма DES, но фактически могут быть применимы к любому блочному алгоритму. Например, некоторые из этих режимов являются аналогами режимов работы, определенных для алгоритма ГОСТ 28147-89. Выбранный режим определяет область применения блочного алгоритма шифрования. Каждый режим работы имеет свои преимущества и недостатки.

Режим электронной кодовой книги .

Electronic Code Book (ECB)

Исходный текст разбивается на блоки. В этом режиме каждый блок поступает на вход алгоритма шифрования и преобразуется независимо один от другого. Расшифрование каждого блока также происходит независимо.

Достоинства:

- простота реализации;

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

- возможность параллельной.

Недостатки:

- однозначное соответствие между блоками открытого текста и криптограммами;

- возможность повтора блоков и замены блоков в информационном пакете;

- распространение ошибки шифротекста.


Область применения:

- шифрование других ключей и вообще случайной информации;

- шифрование хранилищ данных с произвольным доступом.

Режим сцепления блоков шифротекста .

Cipher Block Chaining (CBC)

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


Достоинства:

- сложно манипулировать открытым текстом (подмена и замена);

- одним ключом можно шифровать несколько сообщений;

- расшифрование может выполнятся параллельно.

Недостатки:

- шифротекст на один блок длиннее открытого текста;

- ошибка в синхронизации является фатальной;

- распространение ошибки шифротекста;

- шифрование не может выполняться параллельно.

Область применения:

- шифрование файлов и сообщений.


Режим обратной связи по шифротексту.

Cipher Feed Back (CFB)

В самом начале вектор инициализации непосредственно поступает на вход алгоритма шифрования. Исходный текст состоит из блоков дины k бит, причем k n , где n - длина входного блока данных. Каждый блок исходного текста складывается с частью последовательности длиной k бит, полученной на выходе из алгоритма шифрования. Результатом сложения является блок шифротекста. Значение последовательности, полученной на выходе из алгоритма шифрования, сдвигается на k бит влево. Самые правые k бит последовательности занимают биты криптограммы. Вновь сформированная таким образом входная последовательность данных поступает на вход алгоритма шифрования и так далее.


Достоинства:

- размер блока данных может отличаться от стандартного размера;

- сложно манипулировать открытым текстом;

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

Недостатки:

- обязательная уникальность (но не секретность) вектора инициализации;

- быстрое распространение ошибки шифротекста.

Область применения:

- посимвольное шифрование потока данных (передача данных между сервером и клиентом в процессе аутентификации).


Режим обратной связи по выходу .

Output Feed Back (OFB)

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


Достоинства:

- ошибки шифротекста не распространяются;

- возможность предварительной подготовки гаммы;

- размер блока данных может отличаться от стандартного размера.

Недостатки:

- ошибка синхронизации является фатальной;

- легко манипулировать открытым текстом;

- обязательная уникальность (но не секретность) вектора инициализации.

Область применения:

- высокоскоростные синхронные системы (спутниковая связь);

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


Дополнительные режимы шифрования

Существует также ряд дополнительных режимов шифрования:

· Режим сцепления блоков с распространением ошибок (PCBC).

· Режим сцепления блоков шифротекста с контрольной суммой (CBCC).

· Режим нелинейной обратной связи по выходу (OFBNLF).

· Сцепление блоков открытого текста (PBC).

· Режим обратной связи по открытому тексту (PFB).

· Сцепления блоков текста по различиям открытого текста (CBCPD).