Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Лабораторная работа № 5. Методы криптографии. Реализация режимов стандарта DES




Цель работы

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

2. Теоретические положения

В 1977 году Национальное бюро стандартов США (NBS) опубликовало стандарт шифрования данных Data Encryption Standart (DES), предназначенный для использования в государственных и правительственных учреждениях США для защиты от несанкционированного доступа важной информации. Алгоритм, положенный в основу стандарта распространялся достаточно быстро, и уже в 1980 году был одобрен ANSI. С этого момента DES превратился в стандарт не только по названию, но и фактически. Появляются программное обеспечение и специализированные микроЭВМ, предназначенные для шифрования/дешифрования информации в сетях передачи данных и на магнитных носителях. К настоящему времени DES является наиболее распространенным алгоритмом, используемом в системах защиты коммерческой информации. Более того, реализация стандарта DES в таких системах является просто признаком хорошего тона. Почему же DES добился такой популярности?

Основные достоинства стандарта DES:

¨ используется только один ключ длиной 56 битов;

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

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

¨ достаточно высокая стойкость алгоритма.

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

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

Процесс шифрования заключается в начальной перестановке битов 64-битового блока, шестнадцати циклах шифрования и обратной перестановки битов (рис. 1).

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

Рис. 1. Общая схема процесса шифрования в алгоритме DES

Пусть из файла считан очередной 8-байтовый блок Т, который преобразуется с помощью матрицы IP (таблица 1) начальной перестановки, что даст в результате:

T0 = IP(T) (1)

Таблица 1

Матрица начальной перестановки IP

               
               
               
               
               
               
               
               

 

Затем шестнадцать раз повторяется процедура шифрования этого блока с помощью функции f. Пусть Ti обозначает результат i-ой операции. Тогда обозначим, что

Li=t1…t32, (первые 32 бита) Ri=t33…t64 (последние 32 бита), то есть

Ti=LiRi (2)

Тогда результатом i-ой итерации будет

Li=Ri-1 (3)

Ri=Li-1 f(Ri-1,Ki) (4)

где: – поразрядная операция исключающее или (^);

Ki – i-е преобразование ключа шифрования.

Функция f выполняет операции над значением Ri-1 (результатом прошлой операции) и текущим значением 48-битового ключа Ki (с отсечением лишних битов). Кстати, после 16-й итерации левая и правая половины блока местами не меняются (рис. 2).

По окончании шифрования осуществляется восстановление позиций битов с помощью матрицы перестановок IP-1 (таблица 2)

Таблица 2

Матрица обратной перестановки IP-1

               
               
               
               
               
               
               
               

Теперь рассмотрим, что же скрывается под преобразованием, скрытым буквой f. На каждой итерации массив Ri-1 с помощью таблицы распределения Е (таблица 4) расширяется до 48 битов.

Таблица 3

Таблица распределения битов Е

           
           
           
           
           
           
           
           

Рис. 4 Общая схема алгоритма шифрования DES

Полученный результат (обозначим его Е(Ri-1)) складывается по модулю 2 (операция XOR) с текущим значением ключа Ki и затем разбивается на восемь блоков B1…B8.

То есть:

E(Ri-1)+Ki=B1B2…B8 (5)

Далее каждый из этих блоков используется как номер элемента в матрицах S1…S8, содержащих четырехбитовые значения (таблица 5).

В результате, применив операцию выбора к каждому из блоков, мы получим:

S1(B1) S2(B2) S3(B3)… S8(B8)

Этот 32 – битовый блок (матрицы Sj содержат 4 – битовые значения) преобразуется с помощью матрицы перестановки P (таблица 4)

 

Таблица 4

Матрица перестановки битов Р

       
       
       
       
       
       
       
       

 

Таким образом,

f(Ri-1,Ki)=P(S1(B1),…S8(B8))

Таблица 5

Матрицы преобразования 16 ´ 4 S1…S8

  Номер столбца  
                                   
                                   
                                  S1
                                   
                                   
                                   
                                  S2
                                   
                                   
                                   
                                  S3
                                   
                                   
                                   
                                  S4
                                   
                                   
                                   
                                  S5
                                   
                                   
                                   
                                  S6
                                   
                                   
                                   
                                  S7
                                   
                                   
                                   
                                  S8
                                   
                                   

 

Общая схема данного участка программы представлена на рис. 4

Рис.4. Вычисление функции F(Ri,Ki)

Следует отметить, что выбор элемента в матрице Sj осуществляется довольно оригинальным образом. Пусть на вход поступает 6-битовый блок Bj=b1b2b3b4b5b6, тогда двухбитовое число b1b6 выбирает строку матрицы, а b2b3b4b5 – номер столбца. Результатом Sj(Bj) будет 4-битовое число, расположенное по указанному адресу.

Например, если B3 = 100110, тогда необходимо извлечь значение, размещенное в 3-м столбце второй строки, что составит 9.

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

На каждой итерации используется новое значение ключа Ki, которое вычисляется из начального ключа K. K представляет собой 64-битовый блок с восемью битами контроля по четности, расположенными в позициях 8,16,24,32,40,48,56,64.

Для удаления контрольных битов и подготовки ключа к работе используется матрица PC-1 (таблица 6).

Таблица 6

Матрица первоначальной подготовки ключа PC-1

             
             
             
             
             
             
             
             

 

Результат преобразования PC-1 (K) разбивается на две половины C0 и D0 по 28 битов каждая. После этого блоки C0 и D0 на каждой итерации последовательно сдвигаются влево (циклически). Пусть Ci и Di обозначают значения, которые были получены на i – й операции:

Ci = LSi(Ci-1); Di = LSi(Di-1) (6)

где LSi – представляет собой i-й элемент матрицы сдвига (см. таблицу 7).

Таблица 7

Таблица сдвигов для вычисления ключа

Номер итерации Сдвиг (бит)
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   

 

Полученное значение вновь “перемешивается” в соответствии с матрицей PC-2 (таблица 8).

Таблица 8

Матрица завершающей обработки ключа PC-2

           
           
           
           
           
           
           
           

 

Схема алгоритма вычисления i-й итерации ключа приведена на рис.5.

Рис.5. Алгоритм вычисления ключа

Итак, алгоритм шифрования изложен полностью. Теперь о том, как происходит дешифрование.

Дешифрование в DES является операцией обратной шифрованию и выполняется путем повторения операций шифрования в обратном порядке.

Восстановление исходного текста осуществляется по этому же алгоритму, но вначале используется ключ K-15, затем K-14, и так далее.

3. Задание на работу

Получить вариант задания у преподавателя для разработки конкретной процедуры стандарта DES в интегрированной среде Delphi или C++ Builder.

Вариант Название процедуры Обозначение
  Процедура перестановки бит на основе матрицы перестановки Per(char* in_B, char* out_B, char* Mat_P, int L) In_B – массив исходного блока данных; Out_B – массив результирующего блока данных; Mat_P – массив матрицы перестановки; L – количество элементов в матрице перестановки.
  Процедура циклического сдвига влево блока данных на заданное количество разрядов L_Sdvig(char* B, int N, int L) B – массив блока данных; N – длина блока данных в битах; L – количество разрядов сдвига.
  Процедура циклического сдвига вправо блока данных на заданное количество разрядов R_Sdvig(char* B, int N, int L) B – массив блока данных; N – длина блока данных в битах; L – количество разрядов сдвига.
  Процедура формирования ключей (рис. 5) Create_Klu(AnsiString Klutch, char Klu_M[16][6]) Klutch – исходный 64-х битный ключ; Klu_M – двухмерный массив шестнадцати 48-и битных ключей.
  Процедура F(Ri,Ki) (рис. 4) F2(char* in_R, char* K, char* out_R) in_R – массив исходного блока данных Ri; K – массив i-го ключа Ki; out_R – массив результирующего блока данных функции.
  Процедура разбиения 56-и битного блока данных на два 28-и битных блока R_CD(char* R, char* C, char* D) R – массив исходного 56-и битного блока данных; C, D – массивы результирующих 28-и битных блоков данных (C – младшие 28 бит, D – старшие).
  Процедура объединения двух 28-и битных блоков данных в один 56-и битный блока данных битных блока CD _R(char* C, char* D, char* R) C, D – массивы исходных 28-и битных блоков данных (C – младшие 28 бит, D – старшие); R – массив результирующего 56-и битного блока данных;

В случае проектирования ПО в интегрированной среде Delphi в списках формальных аргументов вместо массивов символов необходимо использовать байтовые массивы (char* in_B º in_B: Array of Byte).

4. Оборудование

ПЭВМ с архитектурой IBM PC, операционная система – Windows 95, интегрированная среда – C++ Builder или Delphi версии не ниже 3.0

5. Порядок выполнения работы

1) Согласно полученному варианту задания разработать и отладить ПО конкретной криптографической процедуры.

2) Разработать методику тестирования правильности функционирования для конкретной процедуры. Оценить правильность функционирования конкретной процедуры.

3) Оформить отчет.

6. Оформление отчета

Отчет должен содержать:

− задание на лабораторную работу;

− листинг разработанного ПО для реализации конкретной криптографической процедуры;

− результаты исследования правильности функционирования конкретной процедуры.

7. Контрольные вопросы

1) Какие одноключевые криптографические преобразования Вам известны?

2) В каких случаях находят применение двухключевые криптографические методы, а в каких – одноключевые?

3) Какие методы побитовой обработки операндов реализованы в C++ Builder?

4) Какие методы побитовой обработки операндов реализованы в Delphi?

5) Поясните реализацию функции F (рис. 4).

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

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




Поделиться с друзьями:


Дата добавления: 2015-05-07; Просмотров: 1028; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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