- •1. Вступ
- •2. Елементи теорiї криптографiчних систем
- •3. Класичні криптосистеми
- •Хід роботи
- •Приклад тексту програми
- •4. Сучасні блочна та асиметрична криптографiї
- •Хiд роботи
- •Лабораторна робота №2. Блочні криптосистеми типу des
- •Хiд роботи
- •Лабораторна робота №3. Криптопакет krypton
- •Цифрова сигнатура.
- •Лабораторна робота №4. Асиметричні криптосистеми
- •Хід роботи
- •5. Прикладні застосування криптографічних методів
- •Комплексне застосування криптографічних перетворень, кодування і стиску інформації.
- •6. Література
- •Інтернет – сайти
Хід роботи
Створена за допомогою мови програмування Pascal програма шифрування текстової інформації працює за таким алгоритмом:
спочатку йде запит до користувача про дію, яку він хоче виконати: шифрувати чи розшифровувати інформацію;
йде прив’зка до двох файлів: 1 – файл, що містить інформацію, яку необхідно зашифрувати; 2 – файл, куди записано інформацію вже в зашифрованому вигляді (адреси цих файлів користувач програми повинен сам ввести з клавіатури, коли буде відповідний запит);
йде запит до користувача про довжину ключа (ключ являє собою кількість символів, на які буде зсунуто ASCII код кожного з символів);
програма зчитує початковий файл з текстом, розбиває кожний прочитаний рядок на символи, перетворює їх в ASCII коди, додає до ASCII кодів довжину ключа, перетворює утворені ASCII коди назад у символи і записує їх у файл у зашифрованому тексті.
У випадку розшифрування все відбувається аналогічно, лише з однією відмінністю: замість додавання ключа до ASCII кода програма віднімає його. Внаслідок цього ми одержуємо вихідний текст у розшифрованому вигляді.
Приклад тексту програми
uses crt, graph;
const
n=200;
var
choise, i, key : integer;
information, encrypt : text;
symbol : char;
ss, adres, adres_encrypt : string;
begin
clrscr;
writeln;
writeln(’Program for encription and description’);
writeln;
writeln(’for encription enter 1’);
writeln(’for description enter 2’);
readln(choise);
i:=l;
if choise=l then
begin
Writeln(’Enter file address’);
Readln(adres);
Writeln;
Writeln(’Enter encrypted file address’);
Readln(adres_encrypt);
assign (information,adres);
assign(encrypt,adres_encrypt);
Reset(information);
Rewrite(encrypt);
Writeln(’enter the lenght of key’);
Readln(key);
while not eof(information) do
begin
Readln(information, ss);
For i:=l to length (ss) do
Begin
Write(encrypt, chr(Ord(ss[i])+key));
end;
Writeln(encrypt);
end;
Writeln(’Coding procces is allredy complited’);
Writeln;
Writeln(’for exit push <Enter>’);
readln;
end;
if choise=2 then
begin
Writeln(‘Enter encrypted file address1);
Readln(adres_encrypt);
Writeln(‘Enter descrypted file address’);
Readln(adres);
Writeln;
assign (mformation,adres);
assign(encrypt,adres_encrypt);
Rewrite(information);
Reset(encrypt);
Writeln(‘enter the lenght of key1);
Readln(key);
while not eof(encrypt) do
begin
Readln(encrypt, ss);
For i:=l to length (ss) do
begin
Write(information,chr(Ord(ss[i]) – key));
end;
end;
Writeln(‘Decoding procces is allredy complited’);
Writeln;
Writeln(‘for exit push <Enter>‘);
readln;
close(information);
close(encrypt);
end;
end.
4. Сучасні блочна та асиметрична криптографiї
Стандарт шифрування даних ГОСТ 28147 – 89.
Важливим завданням у справі створення умов для гарантійної безпеки в iнформацiйнiй системi (IС) є розробка і використання стандартних алгоритмів шифрування даних. Першим серед подібних стандартів був американський DES – послідовне використання замін і перестановок.
Ефективнішим є стандарт шифрування даних ГОСТ, який рекомендовано для використання і для захисту даних у вигляді двійкового коду, хоч допустимі й інші методи шифрування. Цей стандарт формувався з урахуванням світового досвіду, а саме – були прийняті до уваги недоліки і нереалізовані можливості алгоритму DES, тому використання стандарту ГОСТ має перевагу. Алгоритм досить складний. Опишемо його концепцію.
Введемо асоціативну операцію конкатенації, використовуючи для неї мультиплікативний запис. Крім того, використаємо такі операції додавання:
АВ – побітове додавання за модулем 2;
А[+]В – додавання за модулем 232;
А{+}В – додавання за модулем 232 – 1.
Алгоритм криптографічного перетворення передбачає декілька режимів роботи. В усіх режимах використано ключ W завдовжки 256 біт, який поданий у вигляді восьми 32 – розрядних чисел х(і).
W=X(7)X(6)X(5)X(4)X(3)X(2)X(1)X(0)
Для дешифрування використовують той самий ключ, проте процес дешифрування є інверсним до вихідного. Найпростіший з можливих режимів – заміна.
Нехай відкриті блоки розбиті на блоки по 64 біт у кожному, які позначимо T(j).
Чергова послідовність біт T(j) розділена на дві послідовності – В(0) і А(0) по 32 біти (правий і лівий блоки). Далі виконуємо ітераційний процес шифрування, що описуємо такими формулами (вигляд його залежить від і):
Для і=1,2,…,24, j=(i – 1)mod 8;
A(i)=f(A(i – 1)[+]x(j))B(i – 1),
B(i)=A(i – 1).
Для і=25,26,...,31, j=32 – і;
A(i)=f(A(i – 1)[+]x(j))B(i – 1),
B(i)=A(i – 1).
Для і=32
А(32)=А(31)
В(32)=f(A(31)[+]x(0))B(31),
де і – номер ітерації, f – функція шифрування.
Функція шифрування охоплює дві операції над 32 – розряд-ним аргументом.
Перша операція є підстановкою К. Блок підстановки К складається з 8 вузлів заміни К(1)...К(8) з пам’яттю 64 біт кожний. 32 – розрядний вектор, що надходить на блок підстановки, розбивається на 8 послідовних 4 – розрядних вектори, кожен з яких перетворюється в 4 – розрядний вектор відповідним вузлом заміни, що є таблицею з 16 цілих чисел у діапазоні 0 – 15. Вхідний вектор визначає адресу рядка в таблиці, число з якої є вихідним вектором. Потім 4 – розрядні вектори послідовно об’єднуються в 32 – розрядний вихідний.
Друга операція – циклічне зміщення ліворуч 32 – розрядного вектора, одержаного в результаті підстановки К. 64 – розрядний блок зашифрованих даних Т записуємо у вигляді
Т=А(32)В(32).
Інші блоки відкритих даних у режимі простої заміни зашифровуємо аналогічно. Треба враховувати, що такий режим шифрування має обмежену криптостійкість.
Інший режим шифрування називається режимом гамування.
Відкриті дані, розбиті на 64 – розрядні блоки Т(і) (і=1,2,…,m) (m визначається об’ємом шифрованих даних), зашифровують у режимі гамування шляхом порозрядного додавання за модулем 2 з гамою шифру Гш, яка виробляється блоками по 64 біт, тобто
Гш=(Г(1),Г(2),…,Г(m)).
Рівняння шифрування даних у режимі гамування опишемо у вигляді
Ш(і)=A(Y(i – 1)C2,Z(i – 1)) {+} C(1) T(i)=Г(і) Т(і).
У цьому рівнянні Ш(і) позначає 64 – розрядний блок зашифрованого тексту; А – функцію шифрування в режимі простої заміни (аргументами цієї функції є два 32 – розрядних числа); С1 і С2 – константи, які задані в ГОСТ 28147 – 89. Величини y(i) і Z(i) визначають ітераційно в міру формування гами:
(Y(0),Z(0))=A(S), S – 64 – розрядна двійкова послідовність,
(Y(i),Z(i))=(Y(i – 1)[+]C2, Z(i – 1){+}C(1)), I=1,2,…,m.
64 – розрядна послідовність, що називається синхропосилан-ням, не є секретним елементом шифру, проте його наявність необхідна як на передавальній, так і на приймальній сторонах.
Режим гамування із зворотним зв’язком дуже подібний до режиму гамування: як і в режимі гамування відкриті дані, розбиті на 64 – розрядні блоки Т(і), зашифровуються шляхом порозрядного додавання за модулем 2 з гамою шифру Гш , яка виробляється блоками по 64 біт:
Гш=(Г(1),Г(2),…,Г(m)).
Рівняння шифрування даних у режимі гамування із зворотним зв’язком має вигляд:
Ш(1)=A(S) T(1)=Г(1)Т(1),
Ш(і)=А(Ш(і – 1))Т(і)=Г(і) Т(і), і=2,3,…,m.
У ГОСТ 28147 – 89 визначається процес створення імітовставки, який одинаковий для всіх режимів шифрування. Імітовставка – це блок з р біт (імітовставка Ір), який виробляється або перед шифруванням усього повідомлення, або паралельно з шифруванням по блоках. Параметр р вибирається у відповідності з необхідним рівнем імітозахищеності.
Для одержання імітовставки відкриті дані подають також у вигляді блоків по 64 біт. Перший блок відкритих даних Т(1) підлягає перетворенню, що відповідає першим 16 циклам алгоритму режиму простої заміни. Як ключ використовують той самий ключ, що і для шифрування даних. Одержане 64 – розрядне число сумується з відкритим блоком Т(2) і сума знову підлягає 16 циклам шифрування для режиму простої заміни. Ця процедура повторюється для всіх m блоків повідомлення. З одержаного 64 – розрядного числа вибирають відрізок Ір довжиною р біт.
Імітовставку передають по каналу зв’язку після зашифрованих даних. На приймальній стороні аналогічним способом з прийнятого повідомлення виділяється імітовставка і порівнюється з одержаною. У випадку незбіжності імітовставок повідомлення вважається неправдивим.
