Самостоятельная работа по дисциплине 


«Системы и сети связи с подвижными объектами»

.

Тема: «Разработка криптостойкого генератора псевдослучайной последовательности»


Часть 2




Выполнила: 

студентка группы 319

Лукашова Е.В.





    Напомню, что в предыдущей части для реализации был выбран генератор ПСП на основе ГОСТ 28147-89.

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

1. Выбор среды разработки и языка программирования

2. Анализ блок-схемы генератора ПСП ГОСТ 28147-89

3. Разработка программного кода для реализации генератора

4. Проверить удовлетворяет ли генератор ПСП требованиям, описанным выше

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

Среда разработки программного кода CodeBlocks 13.12


Рисунок 1. Главное окно CodeBlocks 13.12 

Язык программирования для реализации кода С++

Блок схема генератора ПСП ГОСТ 28147-89 приведена на рисунке 2: 


а)


б)

Рисунок 2. а) блок - схема цикла j1, б) блок схема всего алгоритма шифрования.

    Разрядность блока данных равна 64 битам. Число раундов преобразований равно 32. На входе двоичная последовательность. Эта последовательность записывается в накопители N1 и N2 (первые 32 значения последовательности вводится в N1 поразрядно, а остальные 32 в N2). Таблица замен размерностью 4х16х8 бит, определяющая логику работы 8ми 4х-разрядных блоков замены (рисунок 3)


Рисунок 3. Таблица замен

    В ключевое запоминающее устройство вводится 256 бит ключа (8 ключей X0, X1, ...., X7 по 32 бита)

    Первый цикл j1 : начальное заполнение N2 суммируется по модулю 2^32 в сумматоре SM1 с ключом Х0, при этом заполнение N2 сохраняется.

    Результат суммирования преобразуется в поле подстановки К (по таблице замен) и полученный вектор поступает на вход регистра R, где циклически сдвигается на 11 шагов влево.

    Результат сдвига суммируется поразрядно по модулю 2 в SM2 с 32х - разрядным заполнением накопителя N1.

    Полученный в SM2 результат записывается в N2, а старое заполнение N2 переписывается в N1. На этом цикл j1 заканчивается.

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

    Порядок использования ключей: Х0, Х1, ..., Х7, Х0, Х1, ... , Х7, Х0, Х1, ..., Х7, Х7, Х6, ... , Х0.

Начиная с 25 цикла ключи используются в обратном порядке.

    В 32 цикле результат из сумматора SM2 выводится в N1, а в N2 сохраняется старое заполнение.

    Полученный после 32го цикла 64 битный блок (N1+N2) и есть нужная нам ПСП.


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