русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Расшифрование в режиме простой замены


Дата добавления: 2013-12-24; просмотров: 1574; Нарушение авторских прав


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

Tш = (a1(32),a2(32), …, a32(32), b1(32),b2(32), …, b32(32))

в накопители N1 и N2 производят так, чтобы начальное значение накопителя N1 имело вид:

а начальное заполнение накопителя N2 - вид

Расшифрование осуществляется по тому же алгоритму, что и зашифрование, с тем изменением, что заполнение накопителей X0,X1,X2, …, X7 считывается из КЗУ в циклах расшифрования в следующем порядке:

K0, K1, K2, K3, K4, K5, K6, K7, K7, K7, K6, K5, K4, K3, K2, K1, K1

K7, K7, K6, K5, K4, K3, K2, K1, K0, K7, K6, K5, K4, K3, K2, K1, K1.

Уравнения расшифрования имеют вид:

при j = 1...8,

при j = 9…31,

при j = 32.

Полученные после 32 циклов работы заполнения накопителей и образуют блок открытых данных

T0 = (a1(0),a2(0), …, a32(0), b1(0),b2(0), …, b32(0)),

соответсвующий блоку зашифрованных данных Тш. При этом состояние накопителя N1

состояние накопителя N2

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

Если алгоритм зашифрования в режиме простой замены 64-битового блока Т0 обозначить через А, то

A(T0) = A(a(0),b(0)) = (a(32),b(32) )= Tш.

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

The Advanced Encryption Standard (AES)

В 80-х годах в США был принят стандарт симметричного криптоалгоритма для внутреннего применения DES (Data Encryption Standard), который получил достаточно широкое распространение в свое время. Однако на текущий момент этот стандарт полностью неприемлем для использования по двум причинам: 1) основной – длина его ключа составляет 56 бит, что чрезвычайно мало на современном этапе развития ЭВМ, 2) второстепенной – при разработке алгоритм был ориентирован на аппаратную реализацию, то есть содержал операции, выполняемые на микропроцессорах за неприемлимо большое время (например, такие как перестановка бит внутри машинного слова по определенной схеме).



Все это сподвигло Американский институт стандартизации NIST – National Institute of Standards & Technology на объявление в 1997 году конкурса на новый стандарт симметричного криптоалгоритма. На сей раз уже были учтены основные промахи шифра-предшественника, а к разработке были подключены самые крупные центры по криптологии со всего мира. Тем самым, победитель этого соревнования, названного AES – Advanced Encryption Standard, станет де-факто мировым криптостандартом на ближайшие 10-20 лет.

Требования, предъявленные к кандидитам на AES в 1998 году, были предельно просты:

1) алгоритм должен быть симметричным,

2) алгоритм должен быть блочным шифром,

3) алгоритм должен иметь длину блока 128 бит и поддерживать три длины ключа: 128, 192 и 256 бит.

Дополнительно кандидатам рекомендовалось:

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

2) ориентироваться на 32-разрядные процессоры,

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

На первом этапе в оргкомитет соревнования поступило 15 заявок из совершенно разных уголков мира. В течение 2 лет специалисты комитета, исследуя самостоятельно, и изучая публикации других исследователей, выбрали 5 лучших представителей, прошедших в "финал" соревнования. Алгоритмы-финалисты приведены в таблице 6.2.1.3.

Таблица 6.2.1.3

Алгоритм Создатель Страна Быстродействие (asm, 200 МГц), Мбайт/с
MARS IBM US
RC6 R.Rivest & Co US
Rijndael V.Rijmen & J.Daemen BE
Serpent Universities IS, UK, NO
TwoFish B.Schneier & Co US

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

2 октября 2000 года NIST объявил о своем выборе – победителем конкурса стал бельгийский алгоритм RIJNDAEL. С этого момента с алгоритма-победителя сняты все патентные ограничения – его можно будет использовать в любой криптопрограмме без отчисления каких-либо средств создателю.

  • Финалист AES – шифр MARS

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

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

Третий этап: собственно шифрование. В нем используется сеть Фейстеля третьего типа с 4 ветвями, то есть значения трех функций, вычисленных от одной ветви, накладываются соответственно на три других, затем идет перестановка машинных слов. Эта операция также повторяется 8 раз. Именно на этом этапе происходит смешивание текста с основной (большей) частью материала ключа. В алгоритме MARS использованы практически все виды операций, применяемых в криптографических преобразованиях: сложение, "исключающее ИЛИ", сдвиг на фиксированное число бит, сдвиг на переменное число бит, умножение и табличные подстановки.

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

 

Рисунок 6.2.1.7 - Алгоритм MARS

Рисунок 6.2.1.8 - MARS. Основные функции

  • Финалист AES – шифр RC6

Алгоритм является продолжением криптоалгоритма RC5, разработанного Рональдом Ривестом (англ. Ron Rivest) – очень известной личностью в мире криптографии. RC5 был незначительно изменен для того, чтобы соответствовать требованиям AES по длине ключа и размеру блока. При этом алгоритм стал еще быстрее, а его ядро, унаследованное от RC5, имеет солидный запас исследований, проведенных задолго до объявления конкурса AES.

Алгоритм является сетью Фейстеля с 4 ветвями смешанного типа: в нем два четных блока используются для одновременного изменения содержимого двух нечетных блоков. Затем производится обычный для сети Фейстеля сдвиг на одно машинное слово, что меняет четные и нечетные блоки местами. Сам алгоритм предельно прост и изображен на рисунке 6.2.1.9. Разработчики рекомендуют при шифровании использовать 20 раундов сети, хотя в принципе их количество не регламентируется. При 20 повторах операции шифрования алгоритм имеет самую высокую скорость среди 5 финалистов AES.

 

Рисунок 6.2.1.9 - Шифр RC6

Преобразование T(x) очень просто: T(X)=(X*(X+1)) mod 2N. Оно используется в качестве нелинейного преобразования с хорошими показателями перемешивания битового значения входной величины.

  • Финалист AES – шифр Serpent

Алгоритм разработан группой ученых из нескольких исследовательских центров мира. Алгоритм представляет собой сеть Фейштеля для четырех ветвей смешанного типа: 2 четные ветви изменяют совместо значения нечетных, затем меняются местами. В качестве криптопреобразований используются только исключающее "ИЛИ", табличные подстановки и битовые сдвиги. Алгоритм состоит из 32 раундов. Сами раунды составлены таким образом, что добавление к ветвями материала ключа на первом и последнем раундах образует входное и выходное забеливание (рисунок 6.2.1.10).

 

Рисунок 6.2.1.10 - Шифр Serpent

  • Финалист AES – шифр TwoFish

Алгоритм разработан команией Counterpain Security Systems, возглавляемой Брюсом Шнайером (англ. Bruce Schneier). Предыдущая программная разработка этой фирмы, называвшаяся BlowFish, являлась и до сих пор является признанным криптостойким алгоритмом.

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

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

 

Рисунок 6.2.1.11 - TwoFish

  • Победитель AES – шифр Rijndael

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

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

Алгоритм состоит из некоторого количества раундов (от 10 до 14 – это зависит от размера блока и длины ключа), в которых последовательно выполняются следующие операции:

¾ ByteSub – табличная подстановка 8х8 бит (рис. 6.2.1.12),


Рисунок 6.2.1.12 - Табличная подстановка

¾ ShiftRow – сдвиг строк в двумерном массиве на различные смещения (рис. 6.2.1.13),


Рисунок 6.2.1.13 - Сдвиг

  • MixColumn – математическое преобразование, перемешивающее данные внутри столбца (рис. 6.2.1.14),


Рисунок 6.2.1.14 - Перемешивание

  • AddRoundKey – добавление материала ключа операцией XOR (рис. 6.2.1.15).


Рисунок 6.2.1.15 - Добавление материала ключа

В последнем раунде операция перемешивания столбцов отсутствует, что делает всю последовательность операций симметричной.



<== предыдущая лекция | следующая лекция ==>
Режим простой замены | Режимы применения блочных шифров


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.035 сек.