Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






 

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

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

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

При описании алгоритма применены следующие обозначения:

L и R — последовательности битов. (левая и правая).

LR — конкатенация последовательностей L и R, то есть такая последовательность битов, длина которой равна сумме длин L и R; в последовательности LR биты последовательности R следуют за битами последовательности L.

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

 

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

 

               
               
               
               
               
               
               
               

 

Биты входного блока T (64 бита) переставляются в соответствии с матрицей IP: бит 58 входного блока Т становится битом 1, бит 50 — битом 2 и т. д.. Эту перестановку можно описать выражением Т0=IP(T). Полученная последовательность битов Т0 разделяется на 2 последовательности: L0 — левые или старшие биты, R0 — правые или младшие биты, каждые из которых содержат 32 бита.

Затем выполняется итеративный процесс шифрования, состоящий из 16 шагов (циклов). Пусть Тi — результат i-той операции:

Тi= LiRi,

где Li=t1t2…t32 (первые 32 бита),

Ri=t33t34…t64 (последние 32 бита).

Тогда результат i-той операции описывается следующими формулами:

;

.

 

 

Рисунок 4.1.1 — Структура алгоритма DES

Функция f называется функцией шифрования. Её аргументами является последовательность Ri-1, получаемые на предыдущем шаге итерации и 48-битовый ключ Ki, который является результатом преобразования 64-битового ключа шифра K.

На последнем шаге итерации получают последовательности R16 и L16 (без перестановки местами), которые конкатенируются в 64-битовую последовательность R16L16.

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

 

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

 

               
               
               
               
               
               
               
               

 

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

Теперь рассмотрим, что скрывается под преобразованием, обозначенным буквой f. Схема вычисления функции шифрования f(Ri-1, Ki) показана ниже.

Для вычисления функции f используются:

· функция Е (расширение 32 бит до 48);

· функции S1, S2, … S8 (преобразование 6-битового числа в 4-битовое);

· функция Р (перестановка битов в 32-битовой последовательности).

 

 

 

Рисунок 4.1.2 — Схема вычисления функции шифрования

 

Таблица 4.1.3 — Функция расширения Е

 

           
           
           
           
           
           
           
           

 

Таблица 4.1.4 — Функция P перестановки битов

 

       
       
       
       
       
       
       
       

 

Таблица 4.1.5 — Функции преобразования S1, S2, … S8

 

  Номер столбца
                               
Номер строки                                  
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 

 

Рисунок 2.13 — Схема алгоритма вычисления ключей Кi


Таблица 4.1.6 — Функция G первоначальной подготовки ключа

 

             
             
             
             
             
             
             
             

 

Данная таблица разделена на две части. Результат преобразования G(K) разбивается на две половины С0 и D0 по 28 бит каждая. Первые четыре строки матрицы G определяют, как выбираются биты последовательности С0.

Следующие четыре строки матрицы G определяют, как выбираются биты последовательности.

Как видно из таблицы, для генерации последовательности С0 и D0 не используются биты 8, 16, 24, 32, 40, 48, 56 и 64 ключа шифра. Эти биты не влияют на шифрование и могут служить для других целей (например, для контроля по четности). Таким образом, в действительности ключ шифра является 56-битовым.

После определения С0 и D0 рекурсивно определяются Сi и Di, i = 1, 2…16.

Для этого применяются операции циклического сдвига влево на один или два бита в зависимости от номера шага итерации.

Операции сдвига выполняются для последовательностей Сi и Di независимо.

Таблица 4.1.7 — Таблица количества сдвигов

 

Номер итерации Количество Si сдвигов влево, бит Номер итерации Количество Si сдвигов влево, бит
       
       
       
       
       
       
       
       

 

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

 

Таблица 4.1.8 — Функция H завершающей обработки ключа

 

           
           
           
           
           
           
           
           

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.