Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
/
З В І Т
до лабораторної роботи №1
з курсу: «Комп`ютерні методи високорівневого проектування систем захисту»
на тему: «ПРОЕКТУВАННЯ НА VERILOG ПІДСТАНОВОК
В S-БЛОКАХ АЛГОРИТМУ ШИФРУВАННЯ DES»
Варіант 4
Мета роботи: - вивчення принципів виконання підстановок в S-блоках алгоритму шифрування DES і особливостей їх реалізації мовою VERILOG.
1. ОСНОВНІ ВІДОМОСТІ
Відповідно до схеми раунду DES (Рис. 1) підстановка в S-блоках виконується над результатом розширюючої перестановки, на який операцією XOR накладено раундовий ключ.
Рисунок 1. Схема раунду DES.
Підстановка за допомогою S-блоків є ключовим кроком алгоритму DES. Саме ця підстановка визначає стійкість алгоритму. Інші операції алгоритму лінійні і легко піддаються аналізу. S-блоки нелінійні і саме вони визначають безпеку DES.
Підстановка (тобто заміна) здійснюється за допомогою восьми блоків підстановки, або S-блоків (від substitution). В кожного S-блока 6-бітовий вхід і 4-бітовий вихід. Всі вісім блоків різні. При виконанні підстановки 48 вхідних бітів діляться на вісім 6-бітових під блоків. Кожен окремий під блок обробляється своїм S-блоком: замість 6-бітового вхідного під блоку підставляється 4-бітовий (Рис. 2).
Рисунок 2. Схема включення S-блоків
Кожен з восьми S-блоків (Рис.2) є таблицею з 4 рядків і 16 стовпців. Нумерація рядків і стовпців починається з нуля. В таблицях певним чином розташовані 4-бітні числа. Шість вхідних бітів S-блока визначають номери рядка і стовпця, на перетині яких зчитується чотири бітне число, яке підставляється замість вхідного шести бітного.
Нехай маємо 6-бітовий вхід S-блока: b1, b2, b3, b4, b5 і b6. Біти b1 і b6 об'єднуються, утворюючи 2-бітове число від 0 до 3, яке визначає номер рядка таблиці. Середні 4 біта, з b2 по b5, об'єднуються, утворюючи 4-бітове число від 0 до 15, яке визначає номер стовпця таблиці. Наприклад, нехай на вхід четвертого S-блока (тобто біти функції XOR з 19 по 24) подається 101011. Перший і останній біт, об’єднавшись, складають двійкове число 11, що відповідає третьому рядку четвертого S-блока. Середні 4 біта утворять 0101, що відповідає п’ятому стовпчику того-ж S-блока. В четвертому S-блоці (Див. Рис.3), на перетині рядка з номером 3 і стовпця з номером 5 зчитуємо число 1. Двійкове чотири бітне число 0001, яке відповідає одиниці, і підставляється замість вхідного шести бітного блоку 101011.
Номер стовпця
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Номер рядка
0
7
13
14
3
0
6
9
10
1
2
8
5
11
12
4
15
S4
1
13
8
11
5
6
15
0
3
4
7
2
12
1
10
14
9
2
10
6
9
0
12
11
7
13
15
1
3
14
5
2
8
4
3
3
15
0
6
10
1
13
8
9
4
5
11
12
7
2
14
2. ЗАВДАННЯ
Ознайомитися з основними відомостями.
Мовою VERILOG розробити програму для підстановки в заданому S-блоці алгоритму шифрування DES (номер S-блоку відповідає номеру варіанту). Програма має передбачати:
а) зчитування з вхідного порту 6-бітового входу S-блоку;
б) формування заданого S-блоку: або як одного (цілий S-блок), або як чотирьох (кожна стрічка S-блоку окремо) одномірних масивів чотири бітних даних (пам’ять);
в) вибір результату підстановки шляхом аналізу 6-бітового входу S-блоку;
г) видачу результату підстановки на вихідний 4-бітний порт пристрою.
3. Відлагодити програму і реалізувати розроблений пристрій в лабораторії.
4. Оформити і захистити звіт про виконану роботу.
Приклад коду для варіанту S4
// Quartus II Verilog Template
// DES Permutatiom
module LabVer1 (S4OUT, S4IN);
input[5:0] S4IN;
output[3:0] S4OUT;
reg[3:0] S4[63:0];
initial
begin
S4[0]=4'd7;
S4[1]=4'd13;
S4[2]=4'd14;
S4[3]=4'd3;
S4[4]=4'd0;
S4[5]=4'd6;
S4[6]=4'd9;
S4[7]=4'd10;
S4[8]=4'd1;
S4[9]=4'd2;
S4[10]=4'd8;
S4[11]=4'd5;
S4[12]=4'd11;
S4[13]=4'd12;
S4[14]=4'd4;
S4[15]=4'd15;
S4[16]=4'd13;
S4[17]=4'd8;
S4[18]=4'd11;
S4[19]=4'd5;
S4[20]=4'd6;
S4[21]=4'd15;
S4[22]=4'd0;
S4[23]=4'd3;
S4[24]=4'd4;
S4[25]=4'd7;
S4[26]=4'd2;
S4[27]=4'd12;
S4[28]=4'd1;
S4[29]=4'd10;
S4[30]=4'd14;
S4[31]=4'd9;
S4[32]=4'd10;
S4[33]=4'd6;
S4[34]=4'd9;
S4[35]=4'd0;
S4[36]=4'd12;
S4[37]=4'd11;
S4[38]=4'd7;
S4[39]=4'd13;
S4[40]=4'd15;
S4[41]=4'd1;
S4[42]=4'd3;
S4[43]=4'd14;
S4[44]=4'd5;
S4[45]=4'd2;
S4[46]=4'd8;
S4[47]=4'd4;
S4[48]=4'd3;
S4[49]=4'd15;
S4[50]=4'd0;
S4[51]=4'd6;
S4[52]=4'd10;
S4[53]=4'd1;
S4[54]=4'd13;
S4[55]=4'd8;
S4[56]=4'd9;
S4[57]=4'd4;
S4[58]=4'd5;
S4[59]=4'd11;
S4[60]=4'd12;
S4[61]=4'd7;
S4[62]=4'd2;
S4[63]=4'd14;
end
assign S4OUT=S4[{S4IN[5],S4IN[0],S4IN[4:1]}];
endmodule
Висновки
Виконання даної лабораторної роботи відбувалось у цілях ознайомлення та вивчення принципів виконання підстановок в S-блоках алгоритму шифрування DES і особливостей їх реалізації мовою VERILOG.