
- •Курсовий проект (пояснювальна записка)
- •Часть 1
- •Алгоритмическое изображение схемы
- •Порядок выполнения работы
- •Верхний используется для выбора адреса памяти, по которому будет осуществлена запись одного из кодов символа исходных данных в блок памяти ram8_16.
- •Ramdp 8_16 – блок памяти, куда записываются и откуда читаются коды символов, подлежащих шифрованию; Power3 – умножитель, выполняющий операцию возведения в 3-ю степень;
- •Cхема проекта
- •Часть 2
- •Алгоритмическое изображение схемы
- •Порядок выполнения работы
- •Дешифрованая информация
- •Листинг программы проекта
- •Конвертирования программных величин
М
ІНІСТЕРСТВО
ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ АВІАЦІЙНИЙ УНІВЕРСИТЕТ
Кафедра безпеки інформаційних технологій
Курсовий проект (пояснювальна записка)
з дисципліни “Системи технічного захисту інформації”
Тема: Розробка проекту криптографічного процесора текстової інформації
Виконав: ______________/ студентка 431 групи інституту
Інформаційно-Діагностичних Систем
Клепач О.М.
Керівник: __________________/ к.д.н. доц. Тимошенко М.П.
Київ 2012
Часть 1
Тема: Разработка схемотехнического проекта криптографического процессора текстовой информации в среде Active HDL 5.1.
Цель работы:
Изучить приемы проектирования электронных технических средств защиты информации с помощью САПР.
Изучить приемы проектирования цифровых устройств в базисе библиотечных функций и мегафункций САПР Max +Plus II.
Задание на выполнение работы:
Процессор должен шифровать текстовую информацию заданного объёма представленную кодами ASСII. Текстовая информация должна содержать фамилию, имя, отчество студента, номер группы (оставшаяся часть может быть произвольной). Текстовая информация в процессоре должна храниться в двух портовой памяти.
Объем шифруемой информации: не менее 128 байт.
Для шифрования информации применить вектор, содержащий ключи из случайного набора 16-тиричных кодов. Шифрующий вектор должен содержать не менее 8-ми ключей. Коды ключей должны храниться в двух портовой памяти.
Используемый метод шифрования информации выбирается в соответствии с таблицей № 1: ( Смотри таблицу №1)
Зашифрованный код символа должен храниться в регистре (разрядность регистра должна быть выбрана такой, чтобы имелась безошибочно дешифровать текстовую информацию) и пересылаться на выходной порт процессора.
Дешифрованный код символа должен (храниться) в регистре и с выхода регистра пересылаться на выходной порт процессора.
При разработке схемотехнического проекта предусмотреть возможность использования специального цикла дающего возможность ввода исходных данных (текстовой информации и кодов ключей) в соответствующие модули памяти через входные порты.
После разработки и успешной компиляции проекта, построить, используя Waveform Editor , временную диаграмму работы проекта и, используя модуль Simulator, промоделировать работу проекта. Убедиться в правильности получения дешифрованной текстовой информации.
Снять временные характеристики спроектированного процессора, используя модуль Timing Analyzer.
Алгоритмическое изображение схемы
Порядок выполнения работы
В данном курсовом проекте используется метод шифрования RSA, названный так по начальным буквам фамилий его изобретателей (Rivest, Shamir, Adleman).
Суть метода заключается в том, что для шифрования исходной информации используется один ключ, который не является секретным (открытый ключ). В свою очередь, для расшифровки секретного сообщения используется другой ключ, который уже является секретным (закрытый ключ).
Можно выделить следующие три свойства метода шифрования RSA:
расшифровать данные с помощью открытого ключа невозможно;
ключ для расшифрования не может быть определен из открытого ключа, т.е. из ключа шифрования;
ключи должны иметь очень большую величину, т.к. метод основан на трудности разложения очень больших целых чисел на простые сомножители.
Чтобы использовать алгоритм RSA, нужно сначала сгенерировать открытый и закрытый ключи, выполнив следующие шаги:
выбирают два простых числа p и q (в идеале берут очень большие числа);
определяют два произведения: n=p*q и m=(p-1)*(q-1);
выбирают случайное целое число d взаимно простое с m;
подбирают такое целое число е, для которого является истинным следующее соотношение: (e*d)mod m =1;
После произведенных действий получим:
(d, n) – открытый ключ;
(e, n) – закрытый (секретный) ключ.
Теперь, чтобы зашифровать исходные данные по известному ключу (d, n), необходимо выполнить следующее:
разбить шифруемый текст на блоки, каждый из которых может быть представлен в виде целого числа (text(i));
зашифровать текст, рассматриваемый как последовательность чисел, по формуле: code(i) = (text(i)^d) mod n.
Для расшифрования этих данных, используя секретный ключ (e, n), необходимо применить следующую формулу: decode(i) = (code(i)^e) mod n.
В результате будет получено множество чисел, которые представляют собой исходный текст.
Сгенерируем открытый и закрытый ключи, выполнив следующие шаги:
согласно заданию: p = 3, q = 11;
вычисляем n = p*q = 33 и m = (p-1)*(q-1) = 20;
выбираем случайное целое число e = 5 взаимно простое с m;
подбираем такое целое число d = 7, для которого является истинным следующее соотношение: (e*d)mod m =1;
В итоге получаем:
(3, 33) – открытый ключ;
(7, 33) – закрытый ключ.
Разрабатываемый криптографический процессор будет шифровать данные по формуле: code(i) = (data(i) ^ 3) mod 33.
Соответственно для расшифрования полученной информации необходимо будет применить формулу: decode(i) = (code(i) ^ 7) mod 33.
Cогласно заданию будем шифровать следующие данные:
№сим |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
текс |
K |
l |
e |
p |
a |
c |
h |
код |
0100/1011 4/11 |
0110/1100 6/12 |
0110/0101 6/5 |
0111/0000 7/0 |
0110/0001 6/1 |
0110/0011 6/3 |
0110/1000 6/8 |
№сим |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
текс |
O |
l |
g |
a |
4 |
3 |
1 |
код |
0110/1111 6/15 |
0110/1100 6/12 |
0110/0111 6/7 |
0110/0001 6/1 |
0011/0100 3/4 |
0011/011 3/3 |
0011/0001 3/1 |
№сим |
14 |
|
|
|
|
|
|
текс |
G |
|
|
|
|
|
|
|
0100/0111 4/7 |
|
|
|
|
|
|
В проекте используются следующие элементы и условные обозначения:
входные порты:
clk – тактовый сигнал;
wren_dmem– тактовый сигнал разрешения записи данных в память;
asclr – сигнал асинхронной очистки адресных счетчиков памяти, выходных регистров;
clk_registr – тактовый сигнал записи данных в выходные регистры;
text(7:0) – входной порт для ввода данных, подлежащих шифрованию;
stepin –тактовой сигнал для возведения числа в 3-ю степень;
stepindesh – тактовый сигнал для возведения числа в 7-ю степень и определения остатка;
а(4..0) – входной порт для ввода числа , остаток от которого определяется;
выходные порты:
ram(7..0) –порт для вывода данных, которые хранятся в памяти
Q(4..0) – порт для вывода данных счетчика;
th(38..0) –порт для вывода данных, возведенных в 3-ю степень;
mod33(4..0) –порт для вывода зашифрованной информации в потоковом формате;
Kod_text – порт для вывода зашифрованной информации;
dekod_text – порт для вывода дешифрованной информации.
Элементы:
Olya – адресные счетчики памяти;