У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 7 Применение генератора РСЛОС в шифровании Существует несколько типов регистров с

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 7.4.2025

Лабораторная работа № 7

Применение генератора РСЛОС в шифровании

Существует несколько типов регистров с обратной связью.

Принципиальная схема регистра сдвига с линейной обратной связью (РСЛОС) представлена на рис. 1. РСЛОС относится к простейшему типу регистров сдвига.

Обратная связь представляет собой операцию XOR над некоторыми битами регистра, которые называются последовательностью отводов (или точек съема). Такой принцип реализации обратной связи называют конфигурацией Фибоначчи. В криптографии РСЛОС используются чаще других регистров сдвига.

Принцип работы генератора РСЛОС заключается в следующем. n-битовый РСЛОС (длина регистра равна n битам) может находиться в одном из 2n – 1 внутренних состояний. Это значит, что теоретически такой регистр может генерировать псевдослучайную последовательность с периодом 2n – 1 битов.

Количество возможных состояний равно 2n – 1, а не 2n, так как заполнение РСЛОС одними нулями приведет к выводу бесконечной последовательности нулей. Только при определенных последовательностях отводов РСЛОС циклически пройдет через все 2n – 1 внутренних состояний. Такие регистры называются регистрами РСЛОС с максимальным периодом. Получившийся выход называют т-последовательностью.

Для обеспечения максимального периода конкретного РСЛОС, соответствующий многочлен, образованный из последовательности отводов регистра, должен быть примитивным по модулю 2. Степень многочлена является длиной регистра сдвига.

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

В данной работе будет рассмотрена программная реализация генератора, работа которого описывается уравнением (1).

     (1)

В данном случае длина регистра равна 32. Биты с номерами 0, 1, 2, 3, 5, 7 задают последовательность отводов. Началом последовательности является правый (младший) край регистра сдвига. Член х32 является входом, куда подается новый бит регистра.

Таким образом, новый бит последовательности, создается при помощи операции XOR над седьмым, пятым, третьим, вторым, первым и нулевым битами и помещается на место 31 бита (Рис. 2). Период данного РСЛОС будет максимальным. Число возможных внутренних состояний регистра равняется 232  1, после чего наступит повторение состояний.

Рис. 2. Схема 32-битового генератора РСЛОС

Задание 1. Выполнить программную реализацию описанного формулой  (1) генератора РСЛОС.

Выполнение.

  1.  Набрать программный код представленный на рис. 3.

После объявления переменных и открытия файлов начинается шифрование. Описываемый генератор РСЛОС работает в режиме побитового шифрования, то так как в программе используется переменная типа unsigned char byte_gamma, то используется дополнительный цикл for из 8 повторений. Цикл предназначен для заполнения переменной byte_gamma 8 битами гаммы. Рассмотрим команды цикла:

  1.  сначала выделяется бит гаммы при помощи операции:

bit_ch=key&0x01;

  1.  затем бит записывается в байт гаммы, а счетчик j регулирует позицию байта, в которую записывается бит:

byte_gamma|=(bit_ch<<(7-j));

  1.  вычисляется значение нового бита:

shift_reg=(((key>>7)^(key>>5)^(key>>3)^(key>>2)^(key>>1)^(key>>0))&0x01);

  1.  биты регистра сдвигаются влево на одну позицию, а полученный новый бит записывается на место старшего бита:

key=key>>1;

key=key^(shift_reg<<31);

После окончания цикла выполняется XOR над переменной ch – символом из открытого текста и byte_gamma, затем считывается новый байт открытого текста и цикл повторяется снова.

  1.  Закончив набор программного кода, отладить и протестировать программу на произвольном текстовом документе размером 3-5 байт.

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

  1.  В случае положительного результата тестирования опробовать шифрование файлов любого типа.

Рис. 3. Программная реализация на языке С++ РСЛОС

Задание 2. Выполнить программную реализацию генератора РСЛОС, описанного формулой (2).

Работа данного РСЛОС описывается формулой (2):

    (2)

Для описания работы этого многочлена требуется внести следующие изменения в программный код, изображенный на рисунке 3:

  1.  вместо объявления переменной типа unsigned long в качестве ключа указать массив переменных типа unsigned long (в данном случае из двух элементов):

unsigned long key[2];

  1.  ввод ключевой последовательности изменится на:

cout<<"Enter the first Key: "<<endl;

cin>>key[0];

cout<<"Enter the second Key: "<<endl;

cin>>key[1];

key[1]=key[1]&0x3fffff;

  1.  генерация нового бита ключевой последовательности, а также обновления его внутреннего состояния усложнится, так как необходимо предусмотреть перенос битов с одного элемента ключевого массива на другой. Так как степень многочлена 54, а две переменные типа unsigned long хранят 64 бита, то необходима операция сложения с константой 0x3fffff для обнуления старших 10 битов ключевой последовательности одной из переменных, хранящих значение ключа. Схематически данный процесс продемонстрирован на рисунке 4:

Рис. 4. Перемещение битов ключевой последовательности

Программный код для реализации усложненного преобразования  приведен ниже:

shift_reg=(((key[0]>>6)^(key[0]>>5)^(key[0]>>4)^(key[0]>>3)^(key[0]>>2)^(key[0]>>0))&0x01);

key[0]=key[0]>>1;

key[0]=((key[1]&0x01)<<31)^key[0];

key[1]=key[1]>>1;

key[1]=key[1]^(shift_reg<<21);

Задание 3 Самостоятельно. Выполнить программную реализацию РСЛОС, описываемого формулой (3):

    (3)

Задание 4 Самостоятельно. Выполнить программную реализацию шифрования, основанную на двух РСЛОС, описываемых формулами (4):

   (4)

РСЛОС должны работать последовательно, вход второго РСЛОС равен выходы первого (рис. 5).

Внимание!!! Данный двойной РСЛОС будет обеспечивать максимальный выход, поскольку высшие степени РСЛОС1 и РСЛОС2 взаимно просты. При использовании нескольких РСЛОС следует проследить, чтобы значения их высших степеней были взаимно просты. Однако, данная схема, несмотря на то, что позволяет шифровать данные, не является криптографически устойчивой и представляет только учебное значение. Подробно ознакомиться с поточными генераторами, основанными на основе РСЛОС можно в работе Б. Шнайера (стр. 416-444)

Рис. 5. Схема работы двойного РСЛОС

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

  1.  Какова принципиальная схема работы РСЛОС?
  2.  Как генерируется выходная гамма?
  3.  Как обновляется внутреннее состояние генератора?
  4.  Как обеспечить максимальный выход гаммы из генератора?
  5.  Как осуществить программную реализацию обновления внутреннего состояния для генераторов, чья длина ключа более 32 битов?
  6.  Как обеспечить максимальный выход шифруещей гаммы двух и более генераторов РСЛОС?




1. Что важнее всего в молодости Полученные результаты представлены в виде гистограммы
2. это наука о закономерностях воспитания и обучения подрастающего поколения и взрослых людей об управлении и.
3. В конце XVII начале XVIII вв.
4. Как записать цифрами число сто одна тысяча восемь 1 1018 2 10 018 3 10 108.html
5. Основы разработки, внедрения и подготовки производства гибких производственных систе
6. Типы профессиональных умений обусловленные особенностями ориентировочной основы действий при их формиров
7. Стратегия фирмы в области управления человеческими ресурсам
8. Перенашиваемая беременность- 41, 42 43
9. Итоги работы портов- Одесса, Ильичёвск, Николаев, Мариуполь и Херсон за 2003 год
10. Учет уставного капитала