Принципы шифрования данных
Программно-аппаратная реализация модуля шифрования. Генерация констант, инициализация массива расширенных ключей. Разбиение ключа на слова. Анализ затраченных ресурсов кристалла, производительности и потребляемой мощности. Процедура расширения ключа.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | отчет по практике |
Язык | русский |
Дата добавления | 22.05.2013 |
Размер файла | 291,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования Республики Беларусь
Учреждение образования
Белорусский Государственный Университет Информатики и Радиоэлектроники
Факультет компьютерного проектирования
Кафедра электронных вычислительных средств
Руководитель практики
от университета:
___________Лихачёв Д.С.
«__»____________2012г.
Руководитель практики
от предприятия:
____________Петров М.П.
«__»____________2012г.
Отчет
по преддипломной практике
Выполнил:
студент группы 710702
Корзун Д.Л.
Минск 2011
СОДЕРЖАНИЕ
Введение
Принципы шифрования данных
1. Анализ технического задания
2. Структура модуля шифрования
3. Программно-аппаратная реализация модуля шифрования
3.1 Генерация констант
3.2 Инициализация массива расширенных ключей
3.3 Разбиение ключа на слова
3.4 Процедура расширения ключа:
3.5 Шифрование
3.6 Расшифрование
3.7 Общий принцип работы
3.8 Разработка функциональной схемы
4. Анализ результатов проектирования
4.1 Результаты тестирования
4.2 Анализ затраченных ресурсов кристалла, производительности и потребляемой мощности
Заключение
Список использованных источников
Введение
Криптограмфия (от др.-греч. ксхрфьт -- скрытый и гсЬцщ -- пишу) -- наука о методах обеспечения конфиденциальности (невозможности прочтения информации посторонним) и аутентичности (целостности и подлинности авторства, а также невозможности отказа от авторства) информации.
Изначально криптография изучала методы шифрования информации -- обратимого преобразования открытого (исходного) текста на основе секретного алгоритма и/или ключа в шифрованный текст (шифротекст). Традиционная криптография образует раздел симметричных криптосистем, в которых зашифрование и расшифрование проводится с использованием одного и того же секретного ключа. Помимо этого раздела современная криптография включает в себя асимметричные криптосистемы, системы электронной цифровой подписи (ЭЦП), хеш-функции, управление ключами, получение скрытой информации, квантовую криптографию.
Приемлемость алгоритма с точки зрения аппаратной реализации определяется такими требованиями, как минимальные суммарные аппаратные затраты, максимальное быстродействие, а также минимальное энергопотребление. Один из алгоритмов, удачно сочетающих все эти требования - RC6. В данном курсовом проекте была осуществлена попытка оптимальной реализации этого алгоритма на базе ПЛИС семейства XilinxVirtex 5.
1. Анализ технического задания
RC6 -- симметричный блочный криптографический алгоритм, производный от алгоритма RC5. Был создан Роном Ривестом, Мэттом Робшау и Рэем Сиднеем для удовлетворения требований конкурса Advanced Encryption Standard (AES). Алгоритм был одним из пяти финалистов конкурса, был также представлен NESSIE и CRYPTREC. Является собственническим (проприетарным) алгоритмом, и запатентован RSA Security.
Вариант шифра RC6, заявленный на конкурс AES, поддерживает блоки длиной 128 бит и ключи длиной 128, 192 и 256 бит, но сам алгоритм, как и RC5, может быть сконфигурирован для поддержки более широкого диапазона длин как блоков, так и ключей (от 0 до 2040 бит). RC6 очень похож на RC5 по своей структуре и также довольно прост в реализации.
Является финалистом AES, однако одна из примитивных операций -- операция умножения, медленно выполняемая на некотором оборудовании и затрудняет реализацию шифра на ряде аппаратных платформ и, что оказалось сюрпризом для авторов, на системах с архитектурой Intel IA-64 также реализована довольно плохо. В данном случае алгоритм теряет одно из своих ключевых преимуществ -- высокую скорость выполнения, что стало причиной для критики и одной из преград для избрания в качестве нового стандарта. Однако, на системах с процессором Pentium II, Pentium Pro, Pentium III, PowerPC и ARM алгоритм RC6 опережает победителя -- Rijndael.
Для данной работы был выбрал вариант алгоритма с длиной ключа 128 бит.
Так же, как и RC5, RC6 -- полностью параметризированная семья алгоритмов шифрования. Для спецификации алгоритма с конкретными параметрами, принято обозначение RC6-w/r/b, где
w -- длина машинного слова в битах.
r -- число раундов.
b -- длина ключа в байтах. Возможные значения 0..255 байт.
Для того чтобы соответствовать требованиям AES, блочный шифр должен обращаться с 128-битовыми блоками. Так как RC5 -- исключительно быстрый блочный шифр, расширение его, чтобы работать с 128-битовыми блоками привело бы к использованию двух 64-битовых рабочих регистров. Но архитектура и языки программирования ещё не поддерживают 64-битные операции, поэтому пришлось изменить проект так, чтобы использовать четыре 32-битных регистров вместо двух 64-битных. Для курсового проекта были выбраны параметры:
- длина машинного слова w=32 бит;
- число раундов r=20;
- длина ключа в байтах b=16 байт (128 бит).
2. Структура модуля шифрования
Определим внешние связи процессора шифрования. Внешние связи состоят из входной (128 бит, DI) и выходной (128 бит, DO) параллельных шин данных, а также из следующих внешних сигналов управления: сигнал сброса (RESET)(на структурной схеме не показан), сигнал запуска шифрования, записи ключа или режима генерации расширенных ключей (START), сигнал выбора режима записи ключа (E_W), сигнал выбора режима генерации расширенного ключа (E_G), сигнал выбора режима шифрования или расшифрования (S), сигнал готовности (READY)(на структурной схеме не показан). Одна и та же шина DI используется как для приёма ключа, так и для приёма входного блока данных, что значительно экономит число внешних выводов процессора. Так как процессор является синхронным, он также имеет вход для задающего тактового сигнала (CLK) (на структурной схеме не показан).
Электрическая структурная схема проектируемого процессора представлена на чертеже ГУИР.431282.004 Э1.
3. Программно-аппаратная реализация модуля шифрования
3.1 Генерация констант
В RC6 генерируются две псевдослучайные величины, используя две математические константы: экспонента (e) и золотое сечение (f). и -- псевдослучайные константы, образованные путем умножения на дробной части и последующего округления до ближайшего нечетного целого двух математических констант (e и f соответственно):
= B7E15163h,
= 9E3779B9h,
Авторы алгоритма в его спецификации утверждают, что выбор данных значений не является важным. Соответственно при необходимости создания реализации алгоритма RC6, не совместимой со стандартной, следует изменить значения и .
3.2 Инициализация массива расширенных ключей
Инициализация массива расширенных ключей K0...K43, производится следующим образом:
= ,
= Ki + mod
шифрование массив ключ слово
3.3 Разбиение ключа на слова
На этом этапе происходит копирование пользовательского ключа в массив слов L, длиной w (32 байта для нашего случая).
Пример:
ключ =01234567 89abcdef 01122334 45566778 h
L[0]=67452301 h ;
L[1]=efcdab89 h;
L[2]=34231201 h ;
L[3]=78675645 h ;
Из примера видно, что старшие байты исходного ключа ставятся на младшие позиции при записи в массив, а младшие соответственно на старшие позиции [2].
3.4 Процедура расширения ключа
Предварительно инициализированный массив ключей смешивается с пользовательским ключом
v=3max{c,2r+4}
for s=1 to v do
{
A=S[i]=(S[i]+A+B)<<<3
B=L[j]=(L[j]+A+B)<<<(A+B)
i=(i+1) mod (2r+4)
j=(j+1) mod c
}
Где с - длина массива пользовательского ключа (4 в нашем случае),
r - количество рандов (20 в нашем случае),
v - внутренняя переменная.
3.5 Шифрование
RC6 работает с четырьмя w-битными регистрами A, B, C и D, которые содержат входной исходный текст и выходной шифрованный текст в конце шифрования. Причём информация в регистрах располагается таким образом, что младший байт располагается на месте старшего байта в регистре А, а старший байт информации - на месте младшего байта регистра D.
Пример:
text=02132435 46576879 8a9bacbd cedfe0f1;
A=35241302 h;
B=79685746 h;
C=bdac9b8a h;
D=f1e0dfce h;
Преобразование производится по следующему алгоритму:
B = B + S[0]
D = D + S[1]
for i = 1 to r do
{
t = (B*(2*B + 1)) <<< lg w
u = (D*(2*D + 1)) <<< lg w
A = ((A ^ t) <<< u) + S[2i]
C = ((C ^ u) <<< t) + S[2i + 1]
(A, B, C, D) = (B, C, D, A)
}
A = A + S[2r + 2]
C = C + S[2r + 3]
Где w - длина машинного слова в битах (32 в нашем случае, lg w=5),
r - количество рандов (20 в нашем случае).
Процесс шифрования можно представить в виде схемы, представленной на Рисунке 1
Где f() - функция выполняющая следующие действия: f(x)=x*(2*x+1)
Рисунок 1 - схема процесса зашифрования
3.6 Расшифрование
Во время расшифрования проводятся аналогичные действия, что и при шифровании, только в обратном порядке. Алгоритм расшифрования имеет вид:
C = C - S[2r + 3]
A = A - S[2r + 2]
for i = r downto 1 do
{
(A, B, C, D) = (D, A, B, C)
u = (D*(2*D + 1)) <<< lg w
t = (B*(2*B + 1)) <<< lg w
C = ((C - S[2i + 1]) >>> t) ^ u
A = ((A - S[2i]) >>> u) ^ t
}
D = D - S[1]
B = B - S[0]
Процесс расшифрования можно представить в виде схемы, представленной на Рисунке 2
Рисунок 2 - диаграмма процесса расшифрования
3.7 Общий принцип работы
Работа процессора начинается с процесса занесения в память пользовательских ключей. Внешнее устройство устанавливает ключ на шине данных DI, и режим записи ключей E_W, и запускается процесс установкой сигнала START, проектируемое устройство принимает пользовательский ключ длиной 128 бит, который считывается с входной шины за 1 такт синхронизации, и уже в следующем такте процессор готов для дальнейшей работы. Далее необходимо произвести расширение пользовательского ключа до длинны 2*r+4, для этого на вход устройства E_W подаётся `0', на E_G и START подаётся `1'. Так как инициализации расширенного ключа константами проводится изначально и автоматически по сигналу RESET, нам необходимо 3*(2*r+4) тактов для выполнения алгоритма описанного в пункте 2.1.4. По завершению формирования ключей процессор устанавливает сигнал готовности READY, после чего он готов к дальнейшей работе. Для шифрации необходимо подать данные на шину DI, выставить значения на входах E_W='0', E_G='0', S='0' (для дешифрации установить S ='1'). Через 24 тактов синхронизации процессор выдаст данные на выходную шину DO и установит сигнал готовности READY.
3.8 Разработка функциональной схемы
Функциональная схема предназначена для детализации связей между структурными блоками процессора и должна наглядно отражать последовательность процессов, протекаемых в схеме.
Электрическая функциональная схема проектируемого процессора представлена на чертеже ГУИР.402120.001 Э2.
В блоке RC6 fith происходит преобразование входных данных в соответствии с данными алгоритма, для каждых 32 бит происходит переворачивание побайтно сигналов. Режим шифрации S устанавливает: в каком порядке будут выдаваться ключи на выход блока key_gen, устанавливает выходное состояние мультиплексоров.
Электрическая функциональная схема модуля шифрования и расшифрования block представлена на чертеже ГУИР.402120.002 Э2.
В зависимости от режима шифрации или дешифрации в регистры принимаются соответствующие значения, для экономии ресурсов сдвиг регистров происходит в обоих режимах в одну сторону, но порядок записи начальных значений в регистры при дешифрации отличается от порядка записи при режиме шифрации. Функция умножения выполняется одним и тем же блоком при шифрации и дешифрации, так как это самая ресурсоёмкая операция, блоки хоr, сдвиг и суммирование разделены, для увеличения производительности.
Электрическая функциональная схема модуля генерации ключей key_gen представлена на чертеже ГУИР.402120.003 Э2.
В блоке содержится 4 счётчика:
- st_w - отвечает за адрес 32 битного пользовательского ключа, может принимать значения от 0 до 3,
- st_3c - отвечает за отсчёт количества циклов расширения ключа, так как в данной реализации количества раундов фиксировано и равно r=20 то счётчик принимает значения от 0 до 3*(2*r+4)-1=123, по достижению максимального значения счётчика он обнуляется и сбрасывается значение в регистре en_g тем самым останавливается процесс генерации расширенных ключей.
- st_K_g - отвечает за индекс текущего расширенного ключа записываемого в процесса расширения ключей, может принимать значения от 0 до 43, при этом, так как блока регистров ключей два, на адресные входы
- подаются старшие 5 бит, а младший бит разрешает запись в первый или второй блок ключей, таким образом поочерёдно записываются 44 ключа в блоки регистров хранящие по 22 ключа с чётными или не чётными индексами.
- st_K - счётчик отвечает за текущий номер раунда преобразования при шифрации или дешифрации, его значение параллельно подаётся на адресные входы обоих блоков регистров ключей, а при дешифрации это значение отнимается от константы 23, таким образом при дешифрации ключи выдаются в обратном порядке, что соответствует алгоритму. Также значения этого счётчика выдаётся на выход блока N_K, в зависимости от номера цикла преобразования запускается или останавливается работа блока шифрации, заносится результат в выходной регистр.
Сигнал READY не показан на функциональной схеме, он формируется, когда счётчики N_K и st_3c равны нулю, это означает, что в это время не происходит не шифрование, не генерация ключей.
4. Анализ результатов проектирования
4.1 Результаты тестирования
Для проведения теста примем следующие входные данные, заданные в качестве проверочных в стандарте:
Значение ключа : 01 23 45 67 89 ab cd ef 01 12 23 34 45 56 67 78 h;
Данные: 02 13 24 35 46 57 68 79 8a 9b ac bd ce df e0 f1 h;
Зашифрованные данные: 52 4e 19 2f 47 15 c6 23 1f 51 f6 36 7e a4 3f 18 h;
Результаты тестирования приведены на Рисунок 2,Рисунок 3
Рисунок 3 - ввод ключа
Рисунок 4 - результаты шифрования и расшифрования
Для Post-Route теста был выбран период синхросигнала 1100 нс. Полученные результаты соответствуют проверочным, это говорит о том, что алгоритм реализован правильно
a.
4.2 Анализ затраченных ресурсов кристалла, производительности и потребляемой мощности
В качестве целевого FPGA был выбран кристалл XilinxVirtex xc5vlx30-3-ff676. Это младший кристалл семейства, и, тем не менее, его ресурсов достаточно для имплементации процессора шифрования RC6.
Macro Statistics
# Multipliers : 2
32x32-bit multiplier : 2
# Adders/Subtractors : 17
32-bit adder : 10
32-bit subtractor : 6
5-bit adder : 1
# Counters : 4
2-bit up counter : 1
5-bit up counter : 1
6-bit up counter : 1
8-bit up counter : 1
# Registers : 188
1-bit register : 131
32-bit register : 57
# Logic shifters : 5
32-bit shifter rotate left : 3
32-bit shifter rotate right : 2
# Xors : 4
32-bit xor2 : 4
Timing summary:
---------------
Timing errors: 0 Score: 0 (Setup/Max: 0, Hold: 0)
Constraints cover 5801879903 paths, 0 nets, and 13660 connections
Design statistics:
Minimum period: 10.744ns{1} (Maximum frequency: 93.075MHz)
Определим скорость шифрования с учётом тактовой частоты (результат выдаётся каждые 22 такта):
(7.1)
Рисунок 5 - Отчёт об затраченных ресурсах кристалла
Рисунок 6 - Отчёт об энергопотреблении
Заключение
Во время выполнения работы была осуществлена попытка разработки процессора шифрования по алгоритму RC6. Как наиболее компактная была выбрана последовательная структура процессора, которая позволяет выполнять все итерации процесса шифрования на одном универсальном реконфигурируемом ядре, которое в зависимости от управляющего сигнала может выполнять шифрование и расшифрование. Полученное устройство оказалось достаточно быстрым: удалось получить производительность в 0,54 гигабита в секунду, или 68 мегабайт в секунду на одном из младших кристаллов FPGA семейства Virtex 5 - xc5vlx30-3-ff676. Суммарные задействованные ресурсы кристалла оказались относительно невелики. На кристалле осталось достаточно ресурсов для реализации других модулей, если в этом будет необходимость. Среднее энергопотребление процессора оказалось на относительно низком уровне (397 мВт), что позволяет применить данный процессор в системах, требовательным к низкому энергопотреблению. Анализ критических путей показывает, что наибольшая задержка сигнала происходит в процессе шифрования, из-за относительно большой длительности выполнения операции умножения.
Список использованных источников
[1] Википедия -[Электронныйресурс] : http://ru.wikipedia.org/wiki/RC6
[2] The RC6 Block Cipher Ronald L. Rivest1 M.J .B. Robsha R. Sidne , and Y.L. Yin M. I .T. Laboratory for Computer Science, 545 Technology Square, Cambridge,MA 02139 USA,Version 1 . 1 - August 20 , 1998.
Размещено на Allbest.ru
...Подобные документы
Реализация алгоритма DES и режимов шифрования для любой длины сообщения и любой длины ключа. Шифрование сообщений различной длины и ключа с замериванием времени и скорости шифрования. Реализация алгоритма RSA. Сохранение зашифрованного файла на диск.
курсовая работа [398,4 K], добавлен 26.01.2010Создание программного приложения для искажения графической информации в цифровом изображении и последующего ее восстановления. Декартово произведение множеств. Передача ключа шифрования. Генерация псевдослучайных чисел. Умножение, транспонирование матриц.
курсовая работа [1,7 M], добавлен 07.09.2016Стандарт шифрования Advanced Encryption Standard как официальный стандарт правительства США для симметричного шифрования. Таблицы подстановки для S-Box и InvS-Box. Преобразование MixColumns, SubWord, RotWord. Процедура расширения ключа 128, 192, 256 бит.
презентация [2,2 M], добавлен 12.12.2013История появления симметричных алгоритмов шифрования. Роль симметричного ключа в обеспечении степени секретности сообщения. Диффузия и конфузия как способы преобразования бит данных. Алгоритмы шифрования DES и IDEA, их основные достоинства и недостатки.
лабораторная работа [335,9 K], добавлен 18.03.2013Симметричные криптосистемы; алгоритмы шифрования и дешифрования данных, их применение в компьютерной технике в системах защиты конфиденциальной и коммерческой информации. Основные режимы работы алгоритма DES, разработка программной реализации ключа.
курсовая работа [129,6 K], добавлен 17.02.2011Симметричные и асиметричные методы шифрования. Шифрование с помощью датчика псевдослучайных чисел. Алгоритм шифрования DES. Российский стандарт цифровой подписи. Описание шифрования исходного сообщения асимметричным методом с открытым ключом RSA.
курсовая работа [101,1 K], добавлен 09.03.2009Описания режимов шифрования с использованием электронной книги кодов, с посимвольной и внутренней обратной связью. Генератор реальных случайных последовательностей. Линейный сдвиговый регистр с обратной связью. Генерация ключей в министерстве обороны США.
реферат [206,1 K], добавлен 18.01.2015Разработка приложения для шифрования данных с помощью алгоритма DES5: процесс шифрования, расшифрования, получение ключей. Спецификация программы, процедуры и функции; описание интерфейса пользователя. Реализация задачи в среде программирования DELPHI.
курсовая работа [812,6 K], добавлен 27.03.2012Шифрование с использованием симметричных алгоритмов. Генерация зарытого ключа для асимметричных алгоритмов шифрования. Применение асимметричных алгоритмов шифрования. Управление цифровыми сертификатами и управление списками отзыва сертификатов.
учебное пособие [677,6 K], добавлен 13.10.2015Сравнение производительности программных реализаций алгоритмов шифрования с оптимизациями под языки С и Java. История разработки, сущность, принципы шифрования и успехи в криптоанализе таких алгоритмов шифрования как AES, RC4, RC5, RC6, Twofish и Mars.
реферат [1,3 M], добавлен 13.11.2009Электронная цифровая подпись. Асимметричные алгоритмы шифрования. Сценарий распределения открытых ключей, обмен сертификатами. Выбор программных средств. Математическая модель. Скорости Эль-Гамаля для различных длин модулей. Программная реализация.
дипломная работа [461,7 K], добавлен 22.09.2011Инфраструктура открытых ключей PKI. Преимущество сетевой архитектуры. Программные средства поддержки PKI. Описание логики работы программы. Форма генерации и экспорта ключа для подписи, создания нового пользователя, добавления нового сертификата.
курсовая работа [450,8 K], добавлен 22.07.2012Разработка криптографического алгоритма программы ручного шифра по таблице Виженера. Разработка программы, выполняющей шифрование и расшифрование. Особенности использования в качестве ключа самого открытого текста. Алгоритмы решения "обратных" задач.
курсовая работа [45,0 K], добавлен 13.11.2009Особенности шифрования данных, предназначение шифрования. Понятие криптографии как науки, основные задачи. Анализ метода гаммирования, подстановки и метода перестановки. Симметрические методы шифрования с закрытым ключом: достоинства и недостатки.
курсовая работа [564,3 K], добавлен 09.05.2012История криптографии. Сравнение алгоритмов шифрования, применение в операционной системе. Анализ продуктов в области пользовательского шифрования. Включение и отключение шифрования на эллиптических кривых. Использование хеш-функции. Электронная подпись.
курсовая работа [492,6 K], добавлен 18.09.2016Автоматизация процесса шифрования на базе современных информационных технологий. Криптографические средства защиты. Управление криптографическими ключами. Сравнение симметричных и асимметричных алгоритмов шифрования. Программы шифрования информации.
курсовая работа [795,7 K], добавлен 02.12.2014Симметричные криптосистемы как способ шифрования, в котором для шифрования и расшифровывания применяется один и тот же криптографический ключ. Разбор и реализация шифрования алгоритма: простая и двойная перестановка, перестановка "магический квадрат".
курсовая работа [3,3 M], добавлен 11.03.2013Защита информации путем ее преобразования, исключающего прочтение посторонним лицом. Блочный шифр Anubis. Процедура расширения ключа. Архивирование и разархивирование данных. Выбор взаимно простых чисел и генерация супервозрастающей последовательности.
курсовая работа [1,3 M], добавлен 07.08.2012Статистический анализ текстов, созданных программой симметричного шифрования. Реализация симметричного криптоалгоритма. Основные шаги в использовании криптосистемы PGP. Генерация ключей, шифрование и расшифровка сообщений. Защита от сетевых атак.
лабораторная работа [1,7 M], добавлен 06.07.2009Состав, параметры технических средств. Выработка общего ключа для шифрования/расшифровки сообщения. Структура подключения ПЛИС с персональным компьютером по Ethernet. Модули формирования электронно-цифровой подписи. Архитектура стандарта Gigabit Ethernet.
дипломная работа [3,6 M], добавлен 13.09.2017