МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Лабораторна робота №2
Ознайомлення із симетричними криптографічними шифрами
Виконав: ст.. гр. СТАм-14
Львів – 2009
Мета: Ознайомитись з алгоритмами і методами шифрування симетричними блоковими шифрами. Отримати навики роботи з шифрами DES-EBC, DES-CBC. Ознайомитись з алгоритмом AES. Навчитися проводити шифрування і дешифрування тексту, застосовуючи демонстраційний модуль пакету CrypTool. Навчитися застосовувати набуті знання в галузі інформаційної безпеки.
Симетричні шифри
Симетричні шифри - спосіб шифрування, в якому для шифрування і дешифрування застосовується один і той же криптографічний ключ. Ключ алгоритму повинен зберігатися в секреті обома сторонами. Ключ алгоритму вибирається сторонами до початку обміну повідомленнями.
В даний час симетричні шифри - це:
блокові шифри, обробляють інформацію блоками певної довжини (наприклад 64, 128 біт), застосовуючи до блоку ключ в установленому порядку, як правило, декількома циклами перестановки і підстановки, званими раундами;
потокові шифри, у яких шифрування проводиться над кожним бітом або байтом початкового (відкритого) тексту з накладанням гами. Потоковий шифр може бути створений на основі блокового запущеного в спеціальному режимі.
Поширені алгоритми симетричного шифрування:
AES (англ. Advanced Encryption Standard) - перспективний стандарт шифрування;
ГОСТ 28147-89 — російський стандарт шифрування даних;
DES (англ. Data Encryption Standard) - стандарт шифрування даних в США до AES;
3DES (Triple-DES, потрійний DES);
RC6 (Шифр Ривеста);
Twofish;
IDEA (англ. International Data Encryption Algorithm);
SEED - корейський стандарт шифрування даних;
Camellia - сертифікований для використанні в Японії шифр;
CAST (за ініціалами розробників Carlisle Adams і Stafford Tavares);
XTEA - найбільш простий в реалізації алгоритм.
1.1. DES (Data Encryption Standard – стандарт шифрування даних).
Симетричний алгоритм шифрування, в якому один ключ використовується як для шифрування, так і для дешифрування даних. DES шифрує блоки по 64 біт і 16 циклову структуру. Для шифрування використовує ключ з довжиною 56 біт. Алгоритм використовує комбінацію нелінійних (S-блоки) і лінійних (перестановки E, IP, IP-1) перетворень. Для DES рекомендовано декілька режимів:
· режим електронної кодової книги (ECB - Electronic Code Book);
· режим зчеплення блоків (СВС - Cipher Block Chaining);
· режим зворотного зв'язку за шифротекстом (CFB - Cipher Feed Back);
· режим зворотного зв'язку за виходом (OFB - Output Feed Back).
DES є блоковим шифром. Схема шифрування алгоритму DES наведена на рис.1.1.
Рис.1.1. Схема шифрування алгоритму DES
Початковий текст - блок 64 біт. Процес шифрування полягає в початковій перестановці, 16 циклах шифрування і кінцевій перестановці. Шифрований текст - блок 64 біт. Ключі ki виходять з початкового ключа до (64 біт = 8 байт або 8 символів в АSCII таким чином: вісім бітів, що знаходять в позиціях 8, 16, 24, 32, 40, 48, 56, 64 додаються в ключ так, щоб кожен байт містив непарне число одиниць. Це використовується для виявлення помилок при обміні і зберіганні ключів. Потім роблять перестановку для розширеного ключа (окрім бітів, що додаються, 8, 16, 24, 32, 40, 48, 56, 64).
Режим електронної кодової книги (ЕСВ - Electronic Code Book) - звичайне використання DES як блокового шифру. Шифрований текст розбивається на блоки, при цьому, кожен блок шифрується окремо, нзалежно від інших блоків (рис. 1.2).
Рис.1.2. Режим електронної кодової книги – ECB.
Режим ECB простий в реалізації, але можливе проведення криптоаналізу.
В режимі ECB спотворення при передачі одного 64-бітового блоку шифротекста Ci приводить до спотворення після дешифрування тільки відповідного відкритого блоку Mi, тому такі режими використовується для передачі по каналах зв'язку з великим числом спотворень.
Режим зчеплення блоків (СВС - Cipher Block Chaining) (рис.1.3). Кожен черговий блок Ci i 1, перед шифруванням складається за модулем 2 з наступним блоком відкритого тексту Mi + 1. Вектор C0 - початковий вектор, він міняється щодня і зберігається в секреті.
Рис.1.3. Режим зчеплення блоків - СВС.
В режимі CBC спотворення при передачі одного блоку шифрованого тексту Сі приводить до спотворення на приймачі не більше двох блоків відкритого тексту Mi, Mi + 1. Зміна Mi приводить до зміни всієї решти блоків Mi + 1, Mi + 2…. Ця властивість використовується для вироблення коду аутентифікації повідомлення МАС.
Відомі атаки на DES
Методи атаки
Відомі відкр. тексти
Вибрані відкр. тексти
Об'єм пам'яті
Кількість операцій
Повний пошук
1
-
Незначний
255
Лінійний Криптоаналіз
243(85%)
-
Для текста
243
Лінійний Криптоаналіз
238(10%)
-
Для текста
250
Діффер. Криптоаналіз
-
247
Для текста
247
Діффер. Криптоаналіз
255
-
Для текста
255
Метод повного пошуку вимагає одну відому пару шифрованого і розшифрованого тексту, незначний об'єм пам'яті, і для його виконання потрібно 255 кроків.
Діференційний криптоаналіз — вимагає шифрування 247 відкритих текстів вибраних нападаючим, і для його виконання потрібно 247 кроків. Теоретично будучи точкою розриву, ця атака непрактична із-за надмірних вимог до підбору даних і складності організації атаки по вибраному відкритому тексту. DES вважають захищеними для такої атаки.
Лінійний криптоаналіз дозволяє відновити ключ DES за допомогою аналізу 243 відомих відкритих текстів, при цьому потрібний 243 кроків для виконання.
Для лінійної і диференціальної атак потрібний достатньо великий об'єм пам'яті для збереження вибраних (відомих) відкритих текстів до початку атак.
Алгоритм DES широко застосовується для захисту фінансової інформації для емісії і обробки кредитних карт VISA, Europay та інші.
1.2. AES (Advanced Encryption Standard – розширений стандарт шифрування).
Алгоритм AES, також відомий як Rijndael, це - симетричний алгоритм блокового шифрування (розмір блоку 128 біт, ключ 128/192/256 біт). AES є алгоритмом ІІІ тисячоліття.
Визначення і допоміжні процедури AES
Визначення
Block
послідовність біт, з яких складається input, output, State и Round Key. Також під Block можна розуміти послідовність байт
Cipher Key
секретний, криптографічний ключ, який використовується Key Expansion процедурою, щоб виробити набір ключів для раундів (Round Keys); може бути представлений як прямокутний масив байтів, що має чотири рядки і Nk колонок.
Ciphertext
вихідні дані алгоритму шифрування
Key Expansion
процедура використовувана для генерації Round Keys із Cipher Key
Round Key
Round Keys отримують з Cipher Key використовуючи процедуру Key Expansion. Вони застосовуються до State при шифруванні і дешифруванні
State
проміжний результат шифрування, який може бути представлений як прямокутний масив байтів, який має 4 рядки і Nb колонок
S-box
нелінійна таблиця замін використовується в декількох трансформаціях заміни байт і в процедурі Key Expansion для взаємно однозначної заміни значення байта
Nb
число стовпців (32 бітових слів), складових State. Для, AES Nb = 4
Nk
число 32 бітових слів, складових шифроключа. Для AES, Nk = 4,6, или 8
Nr
число раундоі, яке є функцією Nk и Nb. Для AES, Nr = 10, 12, 14
Rcon[]
масив, який складається з бітів 32-х розрядного слова і є постійним для даного раунду
Допоміжні процедури
AddRoundKey()
трансформація при шифруванні і зворотному шифруванні, при якій Round Key XOR’иться із State. Длина RoundKey рівна розміру State (якщо Nb = 4, то довжина RoundKey рівна 128 біт або 16 байт)
InvMixColumns()
трансформація при дешифруванні яка є зворотною по відношенню до MixColumns()
InvShiftRows()
трансформація при дешифруванні яка є зворотною по відношенню до ShiftRows()
InvSubBytes()
трансформація при дешифруванні яка є зворотною по відношенню до SubBytes()
MixColumns()
трансформація при шифруванні яка бере всі стовпці State і змішує їх дані (незалежно один від одного), щоб отримати нові стовпці
RotWord()
функція, що використовується в процедурі Кеу Expansion, яка бере 4 байтное слово і робить над ним циклічну перестановку
ShiftRows()
трансформації при шифруванні, які обробляють State, циклічно зміщуючи останні три рядки State на різні величини
SubBytes()
трансформації при шифруванні які обробляють State використовуючи нелінійну таблицю заміщення байтів (S-box), застосовуючи її незалежно до кожного байта State
SubWord()
функція, яка використовується в процедурі Кеу Expansion, яка бере на вході четырех-байтное слово і застосовуючи S-box до кожного з чотирьох байтів видає вихідне слово
Для AES довжина input (блоку вхідних даних) і State (стан) постійна і рівна 128 біт, а довжина шифроключа K складає 128, 192, або 256 біт. При цьому, початковий алгоритм Rijndael допускає довжину ключа і розмір блоку від 128 до 256 біт з кроком в 32 біти. Для позначення вибраних довжин input, State і Cipher Key в байтах використовується нотація Nb = 4 для input і State, Nk = 4, 6, 8 для Cipher Key відповідно для різних довжин ключів.
На початку шифрування input копіюється в масив State за правилом s[r,c]= in[r + 4c], для і. Після цього до State застосовується процедура Addroundkey() і потім State проходить через процедуру трансформації (раунд) 10, 12, або 14 разів (залежно від довжини ключа), при цьому останній раунд декілька відрізняється від попередніх. В результаті, після завершення останнього раунду трансформації, State копіюється в output за правилом out[r + 4c]= s[r,c], для і .
Приклад. 1. Зашифрувати 16 байт тексту, який представлений в 16–ковій системі кодом /32 43 f6 a8 88 5a 30 8d 31 31 98 a2 e0 37 07 34/ за допосогою ключа /2b7e151628aed2a6abf7158809cf4f3c/.
Текст і ключ записатують у вигляді матриць
Input (State) - Текст для шифрування
32 88 31 e043 5a 31 37f6 30 98 07a8 8d a2 34
В 16-ковій системі
32 = 0011 0010 (1 байт)
Chiper Key - головний ключ
2b 28 ab 097e ae f7 cf15 d2 15 4f16 a6 88 3c
Шифрування відбувається в такій послідовності (рис. 1.4):
Рис. 1.4. Демонстрація шифрування за алгоритмом AES.
Опис алгоритму шифрування наданий на рис. 1.5.
Рис. 1.5. Процес шифрування AES, де 1, 2, 3, 4 – чотири види перетворення.
Шифрування проходить 9 раундів. 1 раунд шифрування показано на рис. 1.6.
Головний ключ шифру з першого до фінального раунду розширився до 11 ключів. Розширений ключ можна представити як масив із 32-розрядних слів (колонок), пронумерованих з 0 до 43. Перші чотири колонки заповнені наданим ключем Cipher key (рис. 1.7).
Слова в позиціях, які кратні числу 4 (w4, w8, …. w40), обчислені за допомогою:
a) застосування RotWord і SubBytes перетворення до попереднього слова wi-1.
б) додавання (XOR) цього результату до слова 4 позицій раніше wi-4, плюс раунд постійний Rcon.
в) 32-розрядні слова wі, які залишилися,, обчислюються додаванням (XOR) попереднього слова wі-1, із словом на 4 позиції раніше wі-4.
Таблиця заміни байтів.
Рис. 1.6. Перший раунд шифрування.
а)
Rcon
б)
Rcon
в)
Rcon
Rcon
Rcon
Рис. 1.7. Розвиток головного ключа в процесі шифрування.
ЗАВДАННЯ ДЛЯ ВИКОНАННЯ
3.1. Згенерувати криптографічний ключ для алгоритму DES шляхом подання свого прізвища в ASCII-коді записаного у 16-ковій системі числення (див. п. 2.1).
M
a
k
а
r
R
о
m
4D
61
6B
61
72
52
6F
6D
3.2. Підготувати для дослідження такі файли:
наданий викладачем текстовий файл PN.txt (PN –Порядковий Номер студента у журналі групи);
створений текстовим редактором Word на основі текстового файлу PN.txt документ Word PN.doc (див. п. 2.4);
стиснені архіватором Zip файли PN.txt і PN.doc (див. п. 2.5).
Оцінити розмір зазначених файлів до і після стиснення та обчислити ступінь компресії.
Дати порівняльну оцінку зазначеним файлам, застосовуючи засоби криптоаналізу пакету CrypTool: Entropia, Floating Frequency, Histogram, Autokorelacja, Cyklicznosc.
Вихідний текст
So I set my face against the sea trip. Not, as I explained, upon my own
account. I was never queer. But I was afraid for George. George said
he should be all right, and would rather like it, but he would advise
Harris and me not to think of it, as he felt sure we should both be ill.
Harris said that, to himself, it was always a mystery how people managed
to get sick at sea - said he thought people must do it on purpose, from
affectation - said he had often wished to be, but had never been able.
Then he told us anecdotes of how he had gone across the Channel when it
was so rough that the passengers had to be tied into their berths, and he
and the captain were the only two living souls on board who were not ill.
Sometimes it was he and the second mate who were not ill; but it was
generally he and one other man. If not he and another man, then it was
he by himself.
It is a curious fact, but nobody ever is sea-sick - on land. At sea, you
come across plenty of people very bad indeed, whole boat-loads of them;
but I never met a man yet, on land, who had ever known at all what it was
to be sea-sick. Where the thousands upon thousands of bad sailors that
swarm in every ship hide themselves when they are on land is a mystery.
If most men were like a fellow I saw on the Yarmouth boat one day, I
could account for the seeming enigma easily enough. It was just off
Southend Pier, I recollect, and he was leaning out through one of the
port-holes in a very dangerous position. I went up to him to try and
save him.
"Hi! come further in," I said, shaking him by the shoulder. "You'll be
overboard."
"Oh my! I wish I was," was the only answer I could get; and there I had
to leave him.
Three weeks afterwards, I met him in the coffee-room of a Bath hotel,
talking about his voyages, and explaining, with enthusiasm, how he loved
the sea.
"Good sailor!" he replied in answer to a mild young man's envious query;
"well, I did feel a little queer ONCE, I confess. It was off Cape Horn.
The vessel was wrecked the next morning."
I said:
"Weren't you a little shaky by Southend Pier one day, and wanted to be
thrown overboard?"
"Southend Pier!" he replied, with a puzzled expression.
"Yes; going down to Yarmouth, last Friday three weeks."
"Oh, ah - yes," he answered, brightening up; "I remember now. I did have
a headache that afternoon. It was the pickles, you know. They were the
most disgraceful pickles I ever tasted in a respectable boat. Did you
have any?"
Аналіз файлу 7.txt
Аналіз файлу 7.doc
Аналіз файлу 7txt.rar
Аналіз файлу 7doc.rar
3.3. Зашифрувати файл PN.doc за допомогою алгоритму DES в режимах ECB і CBC.
Зберегти свій криптографічний ключ згідно п. 2.4.
Порівняти шифрограми одержані в режимах ECB і CBC, застосовуючи засоби криптоаналізу пакету CrypTool: Entropia, Floating Frequency, Histogram, Autokorelacja, Cyklicznosc.
Розшифрувати шифрограми викостовуючи збережений ключ.
Зламати шифрограми за методом брутальної сили, використовуючи вбудовані засоби криптоаналізу пакету CrypTool для симетричних алгоритмів. Для криптоаналізу залишити невідомими перші п’ять 16-кових цифр ключа.
Алгоритм DES в режимі ECB
Алгоритм DES в режимі CBC
3.4. Зашифрувати стиснений архіватором Zip файл PN.doc за допомогою алгоритму DES в режимах ECB і CBC.
Зберегти свій криптографічний ключ згідно п. 2.4.
Порівняти шифрограми одержані в режимах ECB і CBC, застосовуючи засоби криптоаналізу пакету CrypTool: Entropia, Floating Frequency, Histogram, Autokorelacja, Cyklicznosc.
Розшифрувати шифрограми викостовуючи збережений ключ.
Зламати шифрограми за методом брутальної сили, використовуючи вбудовані засоби криптоаналізу пакету CrypTool для симетричних алгоритмів. Для криптоаналізу залишити невідомими перші дві 16-кові цифри ключа.
Алгоритм DES в режимі ECB
Алгоритм DES в режимі CBC
3.5. Зашифрувати на одному ключі стиснений архіватором Zip файл PN.doc за допомогою алгоритмів 3DES режим CBС та AES. Зберегти свій криптографічний ключ згідно п. 2.4.
Порівняти одержані шифрограми, застосовуючи засоби криптоаналізу пакету CrypTool: Entropia, Floating Frequency, Histogram, Autokorelacja, Cyklicznosc.
Розшифрувати шифрограми викостовуючи збережений ключ.
Зламати шифрограми за методом брутальної сили, використовуючи вбудовані засоби криптоаналізу пакету CrypTool для симетричних алгоритмів. Для криптоаналізу залишити невідомою першу 16-кову цифру ключа.
Алгоритм 3DES в режимі ECB
Алгоритм 3DES в режимі CBC
3.6. Відпрацювати роботу алгоритму AES в програмі Інспектор AES. Ключ – прізвище повторити до 16 байт. Провести шифрування тексту, заданого викладачем і порівняти з результатами, отриманими в Інспекторі. Розписати покроково процеси отримання ключів і шифрування тексту.
Провести шифрування тексту, заданого викладачем в активному вікні CrypTool та порівняти дані.
Висновок: Отже ми ознайомились з алгоритмами і методами шифрування симетричними блоковими шифрами. Отримали навики роботи з шифрами DES-EBC, DES-CBC. Ознайомились з алгоритмом AES. Навчилися проводити шифрування і дешифрування тексту, застосовуючи демонстраційний модуль пакету CrypTool. Навчилися застосовувати набуті знання в галузі інформаційної безпеки.