Программно-аппаратная реализация модуля шифрования. Генерация констант, инициализация массива расширенных ключей. Разбиение ключа на слова. Анализ затраченных ресурсов кристалла, производительности и потребляемой мощности. Процедура расширения ключа.
Министерство образования Республики Беларусь Белорусский Государственный Университет Информатики и Радиоэлектроники Руководитель практики от университета: ___________Лихачев Д.С.Криптография (от др.-греч. ??????? - скрытый и ????? - пишу) - наука о методах обеспечения конфиденциальности (невозможности прочтения информации посторонним) и аутентичности (целостности и подлинности авторства, а также невозможности отказа от авторства) информации. Изначально криптография изучала методы шифрования информации - обратимого преобразования открытого (исходного) текста на основе секретного алгоритма и/или ключа в шифрованный текст (шифротекст).Вариант шифра RC6, заявленный на конкурс AES, поддерживает блоки длиной 128 бит и ключи длиной 128, 192 и 256 бит, но сам алгоритм, как и RC5, может быть сконфигурирован для поддержки более широкого диапазона длин как блоков, так и ключей (от 0 до 2040 бит). Является финалистом AES, однако одна из примитивных операций - операция умножения, медленно выполняемая на некотором оборудовании и затрудняет реализацию шифра на ряде аппаратных платформ и, что оказалось сюрпризом для авторов, на системах с архитектурой Intel IA-64 также реализована довольно плохо. В данном случае алгоритм теряет одно из своих ключевых преимуществ - высокую скорость выполнения, что стало причиной для критики и одной из преград для избрания в качестве нового стандарта. Однако, на системах с процессором Pentium II, Pentium Pro, Pentium III, POWERPC и ARM алгоритм RC6 опережает победителя - Rijndael. Для спецификации алгоритма с конкретными параметрами, принято обозначение RC6-w/r/b, где w - длина машинного слова в битах. r - число раундов. b - длина ключа в байтах.Внешние связи состоят из входной (128 бит, DI) и выходной (128 бит, DO) параллельных шин данных, а также из следующих внешних сигналов управления: сигнал сброса (RESET)(на структурной схеме не показан), сигнал запуска шифрования, записи ключа или режима генерации расширенных ключей (START), сигнал выбора режима записи ключа (E_W), сигнал выбора режима генерации расширенного ключа (E_G), сигнал выбора режима шифрования или расшифрования (S), сигнал готовности (READY)(на структурной схеме не показан).В RC6 генерируются две псевдослучайные величины, используя две математические константы: экспонента (e) и золотое сечение (f). и - псевдослучайные константы, образованные путем умножения на дробной части и последующего округления до ближайшего нечетного целого двух математических констант (e и f соответственно): = B7E15163h, = 9E3779B9h, Авторы алгоритма в его спецификации утверждают, что выбор данных значений не является важным.Инициализация массива расширенных ключей K0...K43, производится следующим образом: = , = Ki mod шифрование массив ключ словоНа этом этапе происходит копирование пользовательского ключа в массив слов L, длиной w (32 байта для нашего случая).Предварительно инициализированный массив ключей смешивается с пользовательским ключом v=3max{c,2r 4} for s=1 to v doRC6 работает с четырьмя w-битными регистрами A, B, C и D, которые содержат входной исходный текст и выходной шифрованный текст в конце шифрования. Причем информация в регистрах располагается таким образом, что младший байт располагается на месте старшего байта в регистре А, а старший байт информации - на месте младшего байта регистра D.Во время расшифрования проводятся аналогичные действия, что и при шифровании, только в обратном порядке.Работа процессора начинается с процесса занесения в память пользовательских ключей. Внешнее устройство устанавливает ключ на шине данных DI, и режим записи ключей E_W, и запускается процесс установкой сигнала START, проектируемое устройство принимает пользовательский ключ длиной 128 бит, который считывается с входной шины за 1 такт синхронизации, и уже в следующем такте процессор готов для дальнейшей работы.Режим шифрации S устанавливает: в каком порядке будут выдаваться ключи на выход блока key_gen, устанавливает выходное состояние мультиплексоров. В зависимости от режима шифрации или дешифрации в регистры принимаются соответствующие значения, для экономии ресурсов сдвиг регистров происходит в обоих режимах в одну сторону, но порядок записи начальных значений в регистры при дешифрации отличается от порядка записи при режиме шифрации. Функция умножения выполняется одним и тем же блоком при шифрации и дешифрации, так как это самая ресурсоемкая операция, блоки xor, сдвиг и суммирование разделены, для увеличения производительности. В блоке содержится 4 счетчика: - st_w - отвечает за адрес 32 битного пользовательского ключа, может принимать значения от 0 до 3, - st_3c - отвечает за отсчет количества циклов расширения ключа, так как в данной реализации количества раундов фиксировано и равно r=20 то счетчик принимает значения от 0 до 3*(2*r 4)-1=123, по достижению максимального значения счетчика он обнуляется и сбрасывается значение в регистре en_g тем самым останавливается процесс генерации расширенных ключей.