sonyps4.ru

Криптография. Симметричное шифрование

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

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

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

  • Симметричные алгоритмы
  • Ассиметричные алгоритмы
  • Алгоритмы хэш-функций

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

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

В блочных системах происходит разбиение исходных данных на блоки с последующим преобразованием с помощью ключа.

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

Где где М - открытый текст, К - секретный ключ, передаваемый по закрытому каналу, Еn(М) - операция зашифрования, а Dk(M) - операция расшифрования

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

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

Симметричные системы имеют как свои преимущества, так и недостатки перед асимметричными.

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

Примеры симметричных шифров

  • ГОСТ 28147-89 - отечественный стандарт шифрования
  • 3DES (Triple-DES, тройной DES)
  • RC6 (Шифр Ривеста)
  • Twofish
  • SEED - корейский стандарт шифрования
  • Camellia – японский стандарт шифрования
  • CAST (по инициалам разработчиков Carlisle Adams и Stafford Tavares)
  • XTEA - наиболее простой в реализации алгоритм
  • AES – американский стандарт шифрования
  • DES – стандарт шифрования данных в США до AES

Асимметричные алгоритмы

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

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

Принцип работы асимметричных систем

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

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

Примеры асимметричных шрифтов

  • RSA (Rivest-Shamir-Adleman, Ривест - Шамир - Адлеман)
  • DSA (Digital Signature Algorithm)
  • Elgamal (Шифросистема Эль-Гамаля)
  • Diffie-Hellman (Обмен ключами Диффи - Хелмана)
  • ECC (Elliptic Curve Cryptography, криптография эллиптической кривой)

Хеш-функции

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

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

Нас интересуют криптографически стойкие хеш-функции. К таким обычно предъявляют два требования:

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

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

Примеры хеш-алгоритмов

  • Adler-32
  • SHA-1
  • SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)
  • HAVAL
  • N-Hash
    • RIPEMD-160
  • RIPEMD-256
  • RIPEMD-320
  • Skein
  • Snefru
  • Tiger (TTH)
  • Whirlpool
  • ГОСТ Р34.11-94 (ГОСТ 34.311-95)
  • IP Internet Checksum (RFC 1071)

Криптографические примитивы

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

Квантовая криптография

Криптография в цифровых технологиях

История

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

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

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

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

С развитием математики стали появляться математические алгоритмы шифрования, но все эти виды криптографической защиты информации сохраняли в разной объемной степени статистические данные и оставались уязвимыми. Уязвимость стала особенно ощутима с изобретением частотного анализа, который был разработан в IX веке нашей эры предположительно арабским энциклопедистом ал-Кинди. И только в XV веке, после изобретения полиалфавитных шрифтов Леоном Баттистой Альберти (предположительно), защита перешла на качественно новый уровень. Однако в середине XVII века Чарлз Бэббидж представил убедительные доказательства частичной уязвимости полиалфавитных шрифтов перед частотным анализом.

Развитие механики позволило создавать приборы и механизмы, облегчающие шифрование – появились такие устройства, как квадратная доска Тритемиуса, дисковый шифр Томаса Джефферсона. Но все эти приборы ри в какое сравнение не идут с теми, были созданы в XX веке. Именно в это время стали появляться различные шифровальные машины и механизмы высокой сложности, например, роторные машины, самой известной из которых является «Энигма »

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

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

Сегодня можно говорить о значительных разработках в квантовой криптографии.

Литература

  • Баричев С.Г., Гончаров В.В., Серов Р.Е. Основы современной криптографии. - М.: *Варфоломеев А. А., Жуков А. Е., Пудовкина М. А. Поточные криптосистемы. Основные свойства и методы анализа стойкости. М.: ПАИМС, 2000.
  • Ященко В. В. Введение в криптографию. СПб.: Питер, 2001. .
  • ГОСТ 28147-89. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования. М.: ГК СССР по стандартам, 1989.
  • ГОСТ Р 34.10-94.Информационная технология. Криптографическая защита информации. *ГОСТ Р 34.11-94. Информационная технология. Криптографическая защита информации. Функция хэширования. М., 1995.
  • ГОСТ Р 34.10-2001 Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи. М., 2001.
  • Нечаев В. И. Элементы криптографии (Основы теории защиты информации). М.: Высшая школа, 1999.
  • Жельников В. Криптография от папируса до компьютера. М.: АВР,1996.

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

При поточном шифровании каждый символ исходного текста может представляться в битовой форме, то есть в двоичном виде. Далее каждый бит полученной последовательности можно преобразовать по определенному правилу. В качестве такого правила преобразования часто используют побитовое сложение исходного текста с некоторой секретной последовательностью битов. Секретная последовательность битов играет роль ключа зашифрования в симметричных потоковых шифрах. Сама по себе операция побитового сложения, называемая также операцией сложения по модулю двойки, операцией “исключающего ИЛИ” или просто 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).

Кафедра информационно-коммуникационных технологий

СОВРЕМЕННЫЕ СИММЕТРИЧНЫЕ И АССИМЕТРИЧНЫЕ КРИПТОСИСТЕМЫ

Методические указания к лабораторной работе по курсу

Москва 2009


ВВЕДЕНИЕ

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

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

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

Цель работы

Описание и программная реализация одного из предложенных алгоритмов.

Теоретические сведения

Методы и средства защиты информации

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

Рис. 1. Классификация методов и средств защиты информации

Кратко рассмотрим основные методы защиты информации. Управление представляет собой направленное воздействие на ресурсы системы в рамках установленного технологического цикла обработки и передачи данных, где в качестве ресурсов рассматриваются технические средства, ОС, программы, БД, элементы данных и т.п.

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

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

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

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

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

Формальные средства защиты

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

К техническим средствам (вам защиты относятся все устройства, которые предназначены для защиты защиты. Физическими называются средства защиты, которые создают физические препятствия на пути к защищаемым данным и не входят в состав аппаратуры ИВС, а аппаратными - средства защиты данных, непосредственно входящие в состав аппаратуры ИВС.

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

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

Неформальные средства защиты

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

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

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


1. ОСНОВНЫЕ ПОНЯТИЯ И ОПРЕДЕЛЕНИЯ

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

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

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

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

· достаточная криптостойкость (надежность закрытия данных);

· простота процедур шифрования и расшифрования;

· незначительная избыточность информации за счет шифрования;

· нечувствительность к небольшим ошибкам шифрования и др.

В той или иной мере этим требованиям отвечают:

· шифры перестановок:

· шифры замены;

· шифры гаммирования;

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

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

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

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

Шифрование аналитическим преобразованием заключается в том, что шифруемый текст преобразуется по некоторому аналитическому правилу (формуле).

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

Процессы шифрования и расшифрования осуществляются в рамках некоторой криптосистемы.


1.1 Традиционные симметричные криптосистемы. Принципы криптографической защиты информации

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

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

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

Симметричное и асимметричное шифрование. Разбор алгоритма передачи шифрованных данных между серверами

  • Алгоритмы ,
  • Информационная безопасность ,
  • Криптография

Условимся, что машина, которая передает шифрованные данные - это всегда машина A, а машина, которая их принимает - имеет условное обозначение B.

Библиотека решает два возможных случая (при необходимости довнесу функционал):


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

Библиотека реализует оба варианта, под каждый из которых есть демо:

Для первого случая в папке server_b_1 есть скрипт testGetDataFromA.php
Для второго случая в папке server_a_1 есть скрипт testPushDataToB.php

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

Теперь о том как реализованы оба решения:

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

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

$encrypted_data = urlencode(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $sinc_key, $notice_text, MCRYPT_MODE_ECB))); $test_decrypted = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256,$sinc_key, base64_decode(urldecode($encrypted_data)),MCRYPT_MODE_ECB));
Работа с асимметричным шифрованием происходит с использованием php OpenSSL

Итак:

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

1) Случай, когда имеется машина (B), которой нужны данные от машины A (например, ей нужно получить толкен клиента) и эти данные должны быть получены безопасно. Т.е. инициатором передачи является машина B.

Машина B генерирует пару ключей (приватный и публичный) и делает запрос на машину A, отослав публичный ключ (приватный оставив у себя). Машина А генерирует симметричный ключ, шифрует им требуемую к передаче секретную информацию N. После этого машина А возвращает зашифрованный публичным ключом симметричный ключ, а так же зашифрованную симметричным ключом секретную информацию N. Машина B расшифровывает данные своим приватным ключом. В расшифрованных данных она получает симметричный ключ и зашифрованные им данные. С помощью симметричного ключа она расшифровывает секретные данные.

Нет гарантии, что машина A - именно наша машина, а не ФСБ-шника Анатолия. Поэтому реализация этого алгоритма библиотекой немного изменена подполнительной проверкой:

(Демо скрипта - server_b_1/testGetDataFromA.php)

На обоих машинах прописан секретный ключ SIGNATURE_KEY, который учавствует в дополнительной проверке. Машина B генерирует пару ключей (приватный и публичный), ключ текущей коннекции и делает запрос (http://.../server_a_1/getDataToB.php) на машину A, отослав ключ текущей коннекции и публичный ключ (приватный оставив у себя). Машина А генерирует симметричный ключ, шифрует им требуемую к передаче секретную информацию N. Также формируются допданные M, которые представляют собой md5 от строки содержащей SIGNATURE_KEY и ключ текущей коннекции. После этого машина А возвращает зашифрованную публичным ключом строку из симметричного ключа и допданных М, а так же зашифрованную симметричным ключом секретную информацию N. Машина B расшифровывает данные с симметричным ключом своим приватным ключом, генерирует строку, подданным М (поскольку вполне может вычислить md5 от строки содержащей SIGNATURE_KEY и ключ текущей коннекции). Если допданные совпадают (что является просто дополнительной проверкой для каждой транзакции, что машина A знает SIGNATURE_KEY, а следовательно - наша машина), машина В извлекает симметричный ключ с помощью которого она расшифровывает секретную информацию N.

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

Упрощенный алгоритм такой передачи сводится к следующему:

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

Нет гарантии, что мы получили публичный ключ от машины B, а не от ФСБ-шника Петрова. Поэтому реализация этого алгоритма библиотекой немного изменена дополнительными проверками:

(Демо скрипта - server_a_1/testPushDataToB.php)

На обоих машинах прописан секретный ключ SIGNATURE_KEY, который участвует в дополнительной проверке. Машина A, сгенерировав md5 от ключа текущей коннекции и SIGNATURE_KEY отправляет эти данные (вместе с незашифрованым ключом текущей коннекции) машине B (http://.../server_b_1/get_public_key.php), которая генерирует публичный ключ только если у нее получается такой же md5 от своего SIGNATURE_KEY и полученного ключа текущей коннекции. Это не решает вопроса, что публичный ключ будет получен именно от машины A, а не от машины ФСБ-шника Василия, но гарантирует машеине B, что она генерирует публичный ключ именно для машины A (хотя генерация публичного ключа - дело вообще говоря произвольное, но даже тут лучше перестраховаться). Вместе с публичным ключом генерируется md5 от SIGNATURE_KEY и вторым ключом текущей коннекции. Второй ключ текущей коннекции - произвольный хеш. Данные публичного ключа, второго ключа произвольной коннекции и указанный md5 возвращаются на машину A. Получив второй ключ произвольной коннекции машина A, зная SIGNATURE_KEY генерирует проверочный md5 и если он совпадает с тем, что машина получила - публичный ключ считается именно от машины B, а не от Василия.

Далее машина A (тут уже схема аналогична первому случаю передачи данных) генерирует симметричный ключ и доп проверку, которая представляет собой md5 от SIGNATURE_KEY и ключа текущей коннекции. Эти данные шифруются публичным ключом от машины B. Далее данные вместе с ключом текущей коннекции отправляются на машину B (http://.../server_b_1/pushDataFromA.php), которая генерирует на основе полученного из этих данных ключа текущей коннекции и SIGNATURE_KEY md5, сверяет с полученным, что дает гарантию, что данные не от ФСБ-шника Николая. Если все в порядке и проверка пройдена - с помощью приватного ключа извлекается симметричный ключ, которым уже расшифровывается сообщение.

Буду рад, если кому-то пригодится эта информация.

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

Рис. 4.3. Система симметричной криптосистемы шифрования

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

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

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

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



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

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

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

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

Матрица ключей представляет собой таблицу, содержащую ключи парной связи абонентов. Каждый элемент таблицы предназначен для связи абонентов i и j и доступен только двум данным абонентам. Соответственно, для всех элементов матрицы ключей соблюдается равенство

. (4.3)

Рис.4.4. Матрица ключей

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



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

где М – исходный (открытый) блок данных; С – зашифрованный блок данных.

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

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

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

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

Для получения стойких блочных шифров использовать два общих принципа:

¨ рассеивание – собой распространение влияния одного знака откры­того текста на много знаков шифртекста, что позволяет скрыть статистические свойства открытого текста.

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

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

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

В составных шифрах в качестве простых шифров чаще всего используются простые перестановки и подстановки. При перестановке просто перемешивают символы открытого текста, причем конкретный вид перемешивания определяется секретным ключом. При подстановке каждый символ открытого текста заменяют другим символом из того же алфавита, а конкретный вид подстановки также определяется секретным ключом. Следует заметить, что в современном блочном шифре блоки открытого текста и шифртекста представляют собой двоичные последовательности обычно длиной 64 или 128 бит. При длине 64 бит каждый блок может принимать 2 64 значений. Поэтому подстановки выполняются в очень большом алфавите, содержащем до 2 64 ~ 10 19 «символов».

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

Все действия, производимые блочным криптоалгоритмом над данными, основаны на том факте, что преобразуемый блок может быть представлен в виде целого неотрицательного числа из диапазона, соответствующего его разрядности. Например, 32-битный блок данных можно интерпретировать как число из диапазона 0...4294 967 295. Кроме того, блок, разрядность которого представляет собой «степень двойки», можно трактовать как сцепление нескольких независимых неотрицательных чисел из меньшего диапазона (указанный выше 32-битный блок можно также представить в виде сцепления двух независимых 16-битных чисел из диапазона 0...65 535 или в виде сцепления четырех независимых 8-битных чисел из диапазона 0...255).

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

Таблица 4.1. Действия, выполняемые криптоалгоритмами над числами

В качестве параметра V для любого из этих преобразований может использоваться:

¨ фиксированное число (например, X "= X + 125);

¨ число, получаемое из ключа (например, X "= X + F(K ));

¨ число, получаемое из независимой части блока (например, Х 2" = Х 2 + F (Х 1)).

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

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



Загрузка...