Смекни!
smekni.com

Устройство аппаратного шифрования данных с интерфейсом USB (стр. 3 из 12)

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

В криптографии, описанные проблемы решаются при помощи использования ключа, который обозначается буквой «К» (от английского слова key). Ключ должен выбираться среди значений, принадлежащих множеству, которое называется ключевым пространством. И функция шифрования «Е», и функция расшифровки «D» зависят от ключа. Этот факт выражается присутствием «К» в качестве подстрочного индекса у функций «Е» и «D»:

Е к (Р) = С (1.1)

D к (С) = Р (1.2)

Справедливо следующее тождество:

D k (E k (P)) = P (1.3)

Некоторые алгоритмы шифрования используют различные ключи для шифрования и расшифровки. Это означает, что ключ шифрования «К1» отличается от ключа расшифровки «К2». В этом случае справедливы следующие соотношения:


Е k1 ( P ) = С (1.4)

D k2 (С) = Р (1.5)

D k2 (E k1 (Р) ) = Р (1.6)

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

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

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

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

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

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

1.4.1.1 Блочные алгоритмы

Тройной DES

Базовый алгоритм DES был разработан фирмой IBM в середине 1970-х годов. Через несколько лет, DES был принят в качестве государственного стандарта шифрования США. Тройной DES - это вариация DES, в которой базовый алгоритм выполняется трижды на одном блоке данных. Длина общего ключа – 168 бит (в DES – 56 бит). Алгоритм оперирует 64-битовыми блоками данных. Расчётная стойкость такого алгоритма к лобовой атаке составляет 112 бит.

AES

"Улучшенный стандарт шифрования" (Advanced Encryption Standard). Алгоритм принят национальным институтом стандартов и технологий (NIST) США в 1999 году в качестве стандарта шифрования важных несекретных коммуникаций. Пришел на смену устаревшему DES. Авторское название – Rijndael ("Рэндал"). Это блочный шифр со 128-, 192- или 256-битовым размером ключа и 128-битовым блоком.

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

CAST

Представляет собой шифр со 128-битовым ключом и 64-битовым блоком. Дизайн основан на формальной архитектуре DES с доказанной стойкостью. Не имеет слабых ключей. Алгоритм совершенно устойчив к линейному и дифференциальному криптоанализу. Может быть взломан только методом прямого перебора.

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

Twofish

Один из пяти финалистов на звание AES. Группу разработчиков возглавлял Брюс Шнайер. В реализации использует 256-битовый ключ и 128-битовый блок данных.

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

Blowfish

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

При проектировании использовалась формальная схема DES (т.е. сеть Файсталя) с 16 раундами. Это упрощает анализ алгоритма и гарантирует отсутствие в нём неочевидных уязвимостей. Blowfish имеет большой запас прочности и поддаётся криптоанализу только в сильно ослабленных вариантах. Имеет небольшое пространство слабых ключей, вероятность выбора которых ничтожно мала.

Автор алгоритма, Брюс Шнайер, рекомендует использовать Blowfish во встраиваемых системах анализа, обработки и преобразования данных.

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

RC4

Это потоковый шифр, широко применяющийся в различных системах защиты информации в компьютерных сетях (например, в протоколе SSL и для шифрования паролей в Windows NT). Шифр разработан компанией RSA Security Inc. Для его использования требуется лицензия.

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

В США длина ключа для использования внутри страны рекомендуется равной 128 битов. Алгоритм имеет специальный статус, который означает, что разрешено экспортировать реализации RC4 с длинной ключа до 40 бит.

RC4 в 10 раз быстрее DES и устойчив к криптоанализу. S-блок медленно изменяется при использовании.

WAKE

Алгоритм WAKE (Word Auto Key Encryption) выдаёт поток 32-битных слов, которые с помощью XOR могут быть использованы для получения шифротекста. Для генерации следующего слова ключа используется предыдущее слово шифротекста. Это быстрый алгоритм. Алгоритм использует S блок из 256 32-битовых значений. Этот S-блок обладает одним особым свойством: старший байт всех элементов представляет собой перестановку всех возможных байтов, а 3 младших байта случайны.

Самым ценным качеством WAKE является его скорость. WAKE чувствителен к вскрытию с выбранным открытым текстом или выбранным шифротекстом.

1.4.2 Алгоритмы шифрования с открытым ключом

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

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

RSA

Это криптографическая система с открытым ключом, обеспечивающая оба механизма защиты: шифрование и цифровую подпись. Криптосистема RSA была разработана в 1977 году и названа в честь авторов: Рональда Ривеста, Ади Шамира и Леонарда Адельмана.

Принцип действия RSA состоит в следующем. Для начала сгенерируем пару ключей:

1. Возьмём два больших случайных простых числа p и q (т.е. числа делящихся только на себя и на 1) приблизительно равной разрядности, и вычислим их произведение

n = p∙q (1.7)

2. Выберем число e, взаимно простое с произведением (p–1)*(q–1). Взаимно простыми называют числа, у которых нет общих множителей кроме 1 (например, 15 и 28 – являются, 15 и 27 – нет: кроме 1 их общий множитель – 3).

3. Вычисляется число d, взаимно простое с n.


d = e-1mod((p–1)∙(q–1)) (1.8)

Числа e и n становятся открытым ключом. Число d – закрытым. Чтобы создать шифротекст c из сообщения m, необходимо выполнить:

c = me mod n (1.9)

Чтобы расшифровать полученный шифротекст, необходимо выполнить:

m = cd mod n (1.10)

Пока не найдены эффективные методы разложения чисел на множители, невозможно факторизовав n получить p и q, а, следовательно, и показатель закрытого ключа d. Таким образом, надежность криптосистемы RSA базируется на трудноразрешимой задаче разложения n на множители. Несмотря на фактическую сложность разложения больших чисел на множители, научно не доказано, что факторизация является трудной, или NP-полной, задачей. Доказательств обратного тоже никто не представил.