I. Загальна частина. P>
Q: Що таке криптографія, кріптологія, криптоаналіз? p>
A: Криптология - це наука про шифри і все, що з ними пов'язано. p>
Криптология прийнято поділяти на криптографію і криптоаналіз. p>
Якщо криптограф займається питаннями захисту інформації за допомогою p>
криптографічних методів, то криптоаналітика, навпаки, намагається p>
цей захист подолати. Чия робота складніше - питання складне, але p>
існує усталена думка, що тільки хороший криптоаналітика, p>
який має великий досвід в "розколюванні" шифрів може розробити p>
хороший (стійкий) новий шифр. p>
Q: А що таке стеганогpафія? p>
A: Це ще один спосіб приховування інформації. Іноді буває простіше скритої сам p>
факт наявності секpетной КВАЛІФІКАЦІЙНА, ніж сподіватися на стійкість p>
кpіптоалгоpітма. Використовувані методи залежать від технічних можливостей і p>
фантазії автора. Пpімеpом стеганогpафіі можуть служити "випадкові" точки на p>
ізобpаженіі, "шум" в звуковій КВАЛІФІКАЦІЙНА і т.д. в котоpие вкpапляется важлива p>
і секpетная КВАЛІФІКАЦІЙНА. Можна комбініpовать стеганогpафію і шіфpованіе. P>
Q: Що таке шифр? p>
A: шифр прийнято називати оборотний спосіб перетворення інформації з метою p>
захисту її від перегляду, в якому використовується якийсь секретний елемент. p>
Вихідна інформація в цьому випадку буде називатися відкритим текстом, а p>
результат застосування до неї шифру - закритим текстом або шифртексту. p>
Якщо давати строге визначення, то шифр є сукупність усіх можливих p>
криптографічних перетворень (їх число дорівнює числу всіх можливих ключів), p>
відображають безліч всіх відкритих текстів в множина всіх шифртексту і p>
назад. p>
* Алгоритм шифрування - формальний опис шифру. p>
* зашифрування - процес перетворення відкритого тексту в шифртексту с p>
використанням ключа. p>
* розшифрування - процес відновлення відкритого тексту з шифртексту p>
з використанням ключа. p>
* Дешифрування - процес відновлення відкритого тексту з шифртексту p>
без знання ключа. p>
* Ключ - змінний елемент шифру, що дозволяє зробити сам алгоритм p>
шифрування відкритим і використовувати його багато разів, змінюючи лише ключ. p>
Q: Що таке "криптування"? p>
A: Слівце, що використовується дилетантами замість стандартного терміну шифрування, p>
що видає в них повних ламеров. Hастоящіе фахівці-криптограф ніколи p>
не користуються цим словом, а також його похідними "закріптованіе", p>
"закріптованние дані", "раскріптованіе", і т.д p>
Q: Що таке криптографічний протокол? p>
A: Кpіптогpафіческій пpотокол - є алгоpітм обміну КВАЛІФІКАЦІЙНА (не p>
обов'язково секpетной!) між учасниками, якому можуть бути як p>
сопеpнікамі, так і соpатнікамі. В основі криптографічних протоколів можуть p>
лежати як симетричні криптоалгоритми, так і алгоритми з відкритим ключем. p>
Криптографічний протокол вважається стійким, якщо в процесі його використання p>
легітимні учасники процесу досягають своєї мети, а зловмисник - ні. p>
Q: Що таке "інші криптографічні параметри"? p>
A: У це поняття входять вузли заміни, сінхропосилкі та інші p>
змінні параметри, що не є ключами. p>
Q: Навіщо використовувати DES, ГОСТ, Rijndael, інші опубліковані p>
алгоритми? Раз їх дозволили опублікувати, значить, у них є p>
діри. Я вчора придумав свій супер-алгоритм, його-то точно ніхто p>
зламати не зможе. Чому б не використати його? P>
A: Придумати алгоритм - це 5% роботи. Решта 95% - переконатися p>
(і переконати інших), що його ніхто не зможе зламати (в доступне для огляду p>
час). Це складно. Це не під силу одній людині. P>
Ті алгоритми, які у всіх на слуху, аналізували сотні p>
(тисячі) кваліфікованих людей, у тому числі й ті, хто не p>
знаходиться на державній службі. Якщо _все_ вони говорять, p>
що дірок немає - з імовірністю 0.9999 вони мають рацію. p>
З іншого боку, якщо хочеш винайти свій власний p>
алгоритм, спочатку Зламай пару-трійку чужих. p>
Q: А навіщо pазбіpаться в алгоpітме. Хіба не за тим, щоб його потім зробити? P>
A: Перш за все розбиратися - для того, щоб ПОHЯТЬ, які алгоритми слід p>
застосувати і як їх правильно зістикувати між собою. А знайти (при p>
необхідності) в І-неті исходник, якщо точно знаєш, що шукати - не проблема. p>
Ну, або тут попросити 8-)) p>
Q: Hу от я винайшов алгоритм, допоможіть мені перевірити, що він надійний. p>
Я зашифрував їм файл, зашифрований файл помістив в лист. p>
Розшифруйте його! Сам алгоритм я не покажу - секрет фірми. P>
A1: Поспішаю розчарувати: нікому з присутніх у Ехе людей p>
нецікаво займатися фигней. А саме ламати алгоритм p>
тільки за зашифрованого тексту. Якщо комусь дуже треба p>
буде подивитися зашифровані дані - він роздобуде p>
алгоритм (купить екземпляр програми для себе, вкраде і т.п.). p>
Так що немає ніяких підстав приховувати самі алгоритм: якщо p>
він - твоя інтелектуальна власність, запатентує його. p>
З цих же причин немає підстав довіряти алгоритмами, p>
розробники яких тримають їх у секреті. p>
A2: Криптографія завжди має слідувати правилу Керкхоффа: весь механізм p>
шифрування крім значення секретного ключа, відомий криптоаналітика p>
супротивника (часто це правило формулюється так: стійкість шифру повинна p>
визначатися тільки секретністю ключа). p>
Q: Я хочу захистити свою інформацію, зашифровану її ... p>
A: Величезна кількість людей HЕ ПОHІМАЕТ, що шифрування не є єдиний і p>
універсальний спосіб приховати свої секрети, а всього лише спосіб зменшити свої p>
проблеми, замінивши один (великий) секрет на іншій (маленький). p>
Q: Чи існує абсолютно стійкий шифр? p>
A: Клод Шеннон у своїх працях ввів поняття стійкості шифру і показав, що p>
існує шифр, що забезпечує абсолютну таємність. Іншими словами, знання p>
шифртексту не дозволяє противнику поліпшити оцінку відповідного відкритого p>
тексту. Ним може бути, наприклад, шифр Віженера за умови використання p>
нескінченно довгого ключового слова і абсолютно випадкового розподілу p>
символів в цьому слові. Очевидно, що практична реалізація такого шифру p>
(нескінченна випадкова стрічка) неможлива (точніше, в більшості випадків - p>
економічно невигідна), тому зазвичай розглядають практичну стійкість p>
шифру, чисельно що вимірюється часом (або числом елементарних операцій), p>
необхідним на його злом (з урахуванням поточного рівня розвитку техніки). До речі, p>
першим запропонував використовувати такий шифр Верна, але обгрунтування дав саме p>
Шеннон. p>
Абсолютно стійкий шифр - це абстрактно-математичне поняття, з практикою не p>
має майже нічого спільного. Абсолютно стійкий шифр може виявитися абсолютно p>
_не_стойкім проти таких атак, як physical attack або social engineering p>
attack (див. нижче) - все залежить від реалізації. p>
Q: От кажуть іноді "симетричні шифри", "криптографія з відкритим ключем". p>
Поясніть, що це за поділ? p>
A1: Симетричні шифри (криптосистеми) - це такі шифри, в яких для p>
зашифрування і розшифрування інформації використовується один і той же ключ. В p>
несиметричних системах (системах з відкритим ключем) для зашифрування p>
використовується відкритий (публічний) ключ, відомий всім і кожному, а для p>
розшифрування - секретний (особистий, закритий) ключ, відомий тільки p>
одержувачу. p>
A2: Симетричні шифри (криптосистеми) - це такі шифри, в яких p>
алгоритми зашифрування і розшифрування можуть бути _еффектівно_ побудовані за p>
одного й того самого ключа. p>
II. Симетричні шифри. P>
Q: А що значить блочне/потокове шифрування? p>
A: Блочна криптосистема (блочний шифр) розбиває відкритий текст M на p>
послідовні блоки M1, M2, ..., Mn і застосовує криптографічне p>
перетворення до кожного блоку. Потокова криптосистема (поточний шифр) p>
розбиває відкритий текст M на букви або біти m1, m2 ,..., mn і застосовує p>
криптографічне перетворення до кожного знаку mi відповідно зі знаком p>
ключового потоку ki. Потокове шифрування часто називають гамування. P>
Потоковий шифр може бути легко отримана з блокового шляхом застосування p>
спеціального режиму (див. нижче). p>
Q: Що таке ECB, CBC, OFB, CFB? p>
A: Це режими роботи блокових шифрів. ANSI X3.106 (1983) p>
ECB p>
Electronic Code Book Mode (режим електронної кодової книги, режим простий p>
заміни). У цьому режимі всі блоки тексту шифруються незалежно, на одному і тому ж p>
ключі, відповідно до алгоритму. p>
SM p>
Stream Mode (поточний режим, режим гамування). У цьому режимі відкритий текст p>
складається за модулем 2 з гамою шифру. Гамма отримують у такий спосіб: p>
за допомогою генератора формується попередня гамма (початкове заповнення p>
цього генератора - так звана сінхропосилка - не є секретом і p>
передається по каналу у відкритому вигляді). Попередня гамма піддається p>
зашифрованими в режимі ECB, внаслідок чого і виходить основна гама, с p>
якої складається відкритий текст. Якщо останній блок неповний (його довжина p>
менше стандартного для даного алгоритму розміру блоку), береться тільки p>
необхідну кількість біт гами. p>
CFB p>
Cipher Feedback Mode (гамування зі зворотним зв'язком). У цьому режимі відкритий p>
текст також складається за модулем 2 з гамою шифру. Гамма отримують у такий p>
чином: спочатку шифрується (в режимі ECB) сінхропосилка (вона також передається p>
по каналу в відкритому вигляді). Результат шифрування складається по модулю 2 с p>
першим блоком відкритого тексту (виходить перший блок шифртексту) і знову p>
піддається зашифрування. Отриманий результат складається з другим блоком p>
відкритого тексту і т.д. Обробка останнього блоку - аналогічно попередньому p>
режиму. p>
OFB p>
Output Feedback Mode (гамування зі зворотним зв'язком по виходу). Як і в p>
попередньому режимі, спочатку зашифрування піддається сінхропосилка. Результат p>
складається за модулем 2 з першим блоком відкритого тексту - виходить перший p>
блок шифртексту. Далі, результат шифрування з попереднього кроку (до складення!) P>
шифрується ще раз і складається з наступним блоком відкритого тексту. Таким p>
чином, гамма шифру виходить шляхом багаторазового шифрування сінхропосилкі в p>
режимі ECB. Обробка останнього блоку - аналогічно попереднього режиму. P>
Легко бачити, що наведене визначення OFB повністю збігається з p>
визначенням SM. І це відповідає криптографічного практиці зокрема в p>
[1.2, p 203] просто немає SM, а OFB визначається так: p>
Ci = Pi ^ Si; Si = Ek (Si-1) - шифрування p>
Pi = Ci ^ Si; Si = Ek (Si-1) - розшифрування p>
У той же час можна зустріти інше визначення OFB, на приклад, p>
http://msdn.microsoft.com/library/psdk/crypto/aboutcrypto_9omd.htm. p>
Там же рекомендовано встановити розмір зсуву рівний розміром блоку p>
блочного шифру з причин стійкості. Однак, така установка призводить p>
до повного збігу з режимом SM. Зокрема для DES, завжди застосовують p>
ofb64bit. p>
CBC p>
Cipher Block Chaining Mode (режим зчеплення блоків). У цьому режимі черговий p>
блок відкритого тексту складається за модулем 2 з попереднім блоком шифртексту, p>
після чого піддається зашифрованими в режимі ECB. Для самого першого блоку p>
"попереднім блоком шифртексту" є сінхропосилка. Якщо останній блок p>
відкритого тексту неповний - він доповнюється до необхідної довжини. p>
Q: Що таке "гама" і "гамування"? p>
A: Гамма - це псевдовипадкових числова послідовність, що виробляється за p>
заданому алгоритму і використовується для зашифрування відкритих даних і p>
розшифрування зашифрованих. Гамування прийнято називати процес накладення p>
за певним законом гами шифру на відкриті дані для їх зашифрування. p>
Q: А у поточного шифрування які бувають режими? p>
A: Шифрування послідовності зі зворотним зв'язком (загортає p>
кріптотекст на вхід ДСП (генератор випадкової послідовності, роль якого p>
грає алгоритм шифрування) шифрування ключів зі зворотним зв'язком. Див режим CFB p>
для блочних шифрів. p>
Q: Що таке архітектура "Квадрат" (SQUARE)? p>
A. Це архітектура побудови блокових шифрів із секретним ключем, вона має p>
такі особливості: p>
- вона є варіантом загальних SP-мереж (за один раунд шіфруемий блок p>
перетвориться цілком), побудованих за схемою KASLT (Key Addition - p>
Substitution - Linear Transformation); p>
- архітектура байт-орієнтована, шіфруемий блок представляється у вигляді p>
матриці байтів, заміна також виконується побайтно, на кожному раунді може p>
використовуватися один, максимум-два вузли замін, більше втиснути складніше; p>
- лінійне перетворення (третій крок раунду) двофазове, складається з p>
перестановки байтів в матриці і незалежного лінійного комбінування p>
окремих стовпців (або рядків) матриці. Сенс цієї двофазної - дифузія p>
змін у двох напрямках - по рядках і по стовпцях; p>
У даній архітектурі заміна призводить до дифузії змін всередині байти, p>
лінійне перетворення - у двох вимірах матриці, у результаті отримуємо, що p>
будь-яка зміна в даних дифундує на весь блок всього за 2 раунду. p>
В архітектурі "квадрат" виконані шифри AES (Rijndael), Square ( "квадрат", p>
його назва дала ім'я всій архітектурі), Crypton (один з кандидатів на p>
AES). Друге місце в конкурсі AES зайняв інший KASLT-шифр, Serpent. Справа p>
йде до того, що KASLT-мережі і, зокрема, архітектура SQUARE, в найближчому p>
майбутньому стануть безроздільно домінувати. p>
Q: А які є симетричні алгоритми шифрування? p>
A: Та їх не злічити! ;) Наведемо найбільш відомі: p>
Шифр Цезаря p>
Великий імператор, з метою приховування змісту написаного замінював кожну p>
літеру на третьому наступну за нею по рахунку букву алфавіту. Цезар застосовував p>
зрушення на три букви; в загальному випадку це може бути будь-яке число, менше, ніж p>
довжина алфавіту. Це число і є ключем в даному шифрі: p>
А Б В Г Д Е Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ъ Ю Я p>
Г Д Е Е Ж 3 І И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ъ Ю Я А Б В p>
Криптографія -> НУЛТХСЕУГЧЛВ p>
p>
Шифр Віженера p>
є модифікацією шифру Цезаря, в якому величина зсуву є p>
змінною і залежить від ключового слова. Наприклад, якщо в якості ключового p>
слова використовувати слово "ТАЙНА", то це буде означати, що першу літеру p>
повідомлення необхідно зрушити на 20 (порядковий номер літери "Т"), друге - p>
на 1 (порядковий номер літери "А"), третій - на 11, четверту - на 15, p>
п'ятий - на 1, шосту - знову на 20 (ключове слово починаємо використовувати p>
з початку) і т.д. Таким чином, ключове слово "накладається" на захищається p>
текст. p>
p>
Шифр Вернама p>
Алгоритм був винайдений в 1917 р. співробітником компанії AT & T на прізвище p>
Vernam і називається одноразовим блокнотом (one-time pad). p>
У цьому алгоритмі ключ являє собою послідовність бітів не менше p>
довгу, ніж шіфруемое повідомлення m. p>
Результат шифрування отримується в результаті побітового складання по модулю 2 p>
повідомлення та ключа. p>
Розшифровка полягає в побітового складання шифрограми з ключем. p>
Відзначимо, що даний алгоритм втрачає свою надійність, якщо два повідомлення p>
виявляються зашифровані одним і тим же ключем. У цьому випадку шляхом побітового p>
складання шифрограму можна виключити біти ключа, а вийшла побітового p>
сума осмислених повідомлень піддається методів статистичного аналізу. p>
Ключ повинен бути надійним чином переданий адресату, що саме по собі не p>
простіше, ніж передача повідомлення. Єдина вигода методу полягає в тому, p>
що ключ можна передати заздалегідь, а повідомлення - по відкритому каналу і тоді, p>
коли це буде потрібно. p>
AES. p>
Переможцем конкурсу став AES алгоритм Rijndael (див. нижче). p>
BlowFish. p>
Блочний алгоpітм, сбалансіpованная мережа Файстеля, 16 ітеpацій пpосто p>
кpіптогpафіческого пpеобpазованія. Довжина ключа 40 - 448 p>
біт, звідси складна фаза ініціалізації до опеpацій шіфpованія. p>
Розроблений в 1993 році. p>
Автор: Брюс Шнаейр (Bruce Schneier) p>
Параметри: p>
- Pазмер блоку 64 біта p>
- Pазмер ключа 32-448 біт p>
- число раундів 16 p>
CAST. p>
У певному сенсі аналог DES. p>
Автори: C.M. Adams і S. E. Tavares. P>
Параметри: p>
CAST-128 p>
- розмір блоку 64 біта p>
- розмір ключа 128 біт p>
- число раундів 16 p>
CAST-256 p>
- розмір блоку 128 біт p>
- розмір ключа 256 біт p>
DEAL. p>
Базується на DES (DEA). Уувеліченіе довжини блоку зменшує ймовірність вдалої p>
кріптоатакі методом порівняння криптограми, рівень стійкості шифрування p>
можна порівняти з рівнем triple-DES. p>
Автор: Lars R. Knudsen. P>
Параметри: p>
- розмір блоку 128 біт p>
- розмір ключа 128/192/256 б?? т p>
- число раундів: 6 (DEAL-128, DEAL-192), 8 (DEAL-256) p>
DES. p>
Алгоритм з ефективною довжиною ключа в 56-bits (хоча часто говорять про 8 байтах, p>
але старший біт в байті не використовується). p>
Автор: National Institute of Standards and Technology (NIST). p>
Параметри: p>
- розмір блоку 64 біта p>
- розмір ключа 56 біт p>
- число раундів 16 p>
IDEA (International Decryption-Encryption Algorithm) p>
Час/місце розробки 1990-1991 роки, Цюріх, Швейцарія. p>
Архітектура Загальна збалансована шифруюча SP-мережа, інваріант раунду - p>
побітового сума по модулю 2 старшої та молодшої половин блоку. p>
Автори: Xuejia Lai, James Massey. p>
Параметри: p>
- Pазмер блоку 64 біта p>
- Pазмер ключа 128 біт p>
- число раундів 8 p>
Lucifer. p>
перший (опублікований у відкритій пресі) блочний алгоритм. Предтеча DES p>
Автор: Horst Feisstel, Walter Tuchman (IBM) p>
тип - мережа Файстеля p>
Параметри: p>
- розмір блоку 128 bit p>
- розмір ключа 128 bit p>
- число раундів 16. p>
У кожному використовується з'єднання в 72 біта, породжуваний з головного p>
ключа оскільки має більший розмір ключа і блоку по відношенню до DES, p>
тому більш стійкий до діфф. криптоаналіз p>
p>
NewDES. p>
Створений в 1985 як творча переробка DES. Це самостійний алгоритм, а p>
не варіант DES. NewDES дещо простіше, ніж DES, оскільки в нього немає початковій p>
і, зрозуміло, кінцевою перестановки. Операції проводяться над байтами, а не p>
битами як в DES. Brute-force атака на NewDES вимагає 2 ^ 119 операцій, проти p>
2 ^ 111 для TripleDES. p>
Автор: Robert Scott. p>
Параметри: p>
- розмір блоку 64 біта p>
- розмір ключа 120 біт p>
- число раундів 17 p>
RC2. p>
Блочний алгоpітм шіфpованія. Довжина ключа пpеменная - від 8 до 1024 біт. P>
Разpабативался під 16-ти бітне слово. Реалізyет p>
16 pаyндов "пеpемешівающіх" (mixing) і 2 pаyнда "pазмазивающіх"
(mashing) p>
пpеобpазованій. Описано в RFC2268. Разpаботал Ron Rivest (RSA Laboratories). P>
Режими: ECB, CBC, CFB 8bit, OFB, OFB counter 8bit p>
ECB, CBC, OFB: шифрують дані блоками по 64 біти (8 байт) p>
CFB, OFBC: шифрують дані блоками по 8 біт (1 байту) p>
Автор: RSA Data Security (Ron Rivest) p>
/RC - Ron's Code/ p>
Параметри: p>
- розмір блоку 64 біта p>
- розмір ключа до 1024 біт p>
- число раундів 16 p>
RC4. p>
Описувати RC4 просто. Алгоритм працює в режимі OFB: потік ключів не p>
залежить від відкритого тексту. p>
Використовується S-блок розміром 8 * 8: S0, S1,. . . , S255. Елементи p>
представляють собою перестановку чисел від 0 до p>
255, а перестановка є функцією ключа змінної довжини. В алгоритмі p>
застосовуються два лічильника, i і j, p>
з нульовими початковими значеннями. p>
Для генерації випадкового байти виконується наступне: p>
i = (i + 1) mod 256 p>
j = (j + Si) mod 256 p>
поміняти місцями Si і Sj p>
t = (Si + Sj) mod 256 p>
K = St p>
Байт K використовується в операції XOR з відкритим текстом для отримання p>
шіфротекста або в операції XOR з шіфротекстом для отримання відкритого p>
тексту. Шифрування виконується приблизно в 10 разів швидше, ніж DES. P>
Також нескладна і ініціалізація S-блоку. Спочатку заповнимо його лінійно: p>
S0 = 0, S1 = 1,. . . , S255 = 255. Потім заповнимо ключем другий 256-байтовий p>
масив, при необхідності для заповнення всього масиву повторюючи ключ: K0, K1, p>
. . . , K255. Встановимо значення індексу j рівним 0. Потім: p>
for i = 0 to 255: p>
j = (j + Si + Ki) mod 256 p>
поміняти місцями Si і Sj p>
Автор: RSA Data Security (Ron Rivest) p>
/RC - Ron's Code/ p>
RC5 p>
Блочний шифр із змінними параметрами. p>
Режими: ECB, CBC, CFB 8bit, OFB, OFB counter 8bit p>
Шифр RC5 "словооріентірованний"; всі найпростіші обчислювальні операції p>
виробляються над w-бітними словами. RC5 блочний шифр з розмірністю вхідного і p>
вихідного блоків 2 слова. Номінальний вибір для w - 32 бита, при якому p>
вхідний і вихідний блоки RC5 мають розмір 64 біта. У принципі, RC5 допускає p>
будь-яке значення w> 0, проте для простоти беруть допустимі значення w - 16, p>
32 і 64 біта. p>
Число раундів r є другим параметром RC5. Вибір більшого числа раундів p>
збільшує ступінь захисту. Можливі значення для r: 0,1 ,..., 255. P>
Зауважимо також, що RC5 має розширену ключову таблицю S, що отримується з p>
що надається користувачем секретного ключа. Розмір t таблиці S також p>
залежить від числа раундів r і становить t = 2 (r +1) слів. Вибір більшого числа p>
раундів, таким чином, збільшує вимоги до пам'яті. p>
Для запису параметрів RC5 застосовують наступну нотацію: RC5-w/r/b. Наприклад, p>
запис RC5-32/16/10 означає, що використовуються 32-бітові слова, 16 раундів і p>
10-байтовий (80-бітний) секретний ключ, а також розширена ключова таблиця p>
розміром 2 (16 +1) = 34 слів. "Номінальним" набором параметрів вважається p>
RC5-32/12/16 (розмір слова 32 біти, число раундів - 12 і 16-байтовий ключ). p>
ECB, CBC, OFB: шифрують дані блоками по 64 біти (8 байт) p>
CFB, OFBC: шифрують дані блоками по 8 біт (1 байту) p>
Автор: RSA Data Security (Ron Rivest) p>
/RC - Ron's Code/ p>
Параметри: p>
- розмір блоку 32/64/128 біт p>
- розмір ключа до 2048 біт p>
RC6 p>
Блочний шифр p>
Автор: RSA Data Security (Ron Rivest) p>
/RC - Ron's Code/ p>
Параметри: p>
- розмір блоку 128 біт p>
- розмір ключа до 2048 біт p>
- число раундів 16-24 p>
Rijndael. p>
Є нетрадиційним блоковим шифром, оскільки виконаний в архітектурі p>
SQUARE. Алгоритм представляє кожен блок кодованих даних у вигляді двовимірного p>
масиву байт розміром 4х4, 4х6 або 4х8 в залежності від встановленої довжини p>
блоку. Далі на відповідних етапах перетворення виробляються або над p>
незалежними стовпцями, або над незалежними рядками, або взагалі над p>
окремими байтами в таблиці. p>
Автор: Joan Daemen and Vincent Rijmen p>
Параметри: p>
- розмір блоку 128, 192, 256 біт, як AES допускається p>
використання шифру з розміром блоку 128 біт; p>
- розмір ключа 128, 192, 256 біт p>
- число раундів 10, 12, 14. Залежить від розміру блоку (Nb) і ключа (Nk), p>
заданих в бітах, за такою формулою: Nr = max (Nb, Nk)/32 +6; p>
SAFER. p>
Автор: J. L. Massey p>
Параметри: p>
- розмір блоку 64 біт p>
- розмір ключа 64/128 p>
- число раундів, r: p>
SAFER K64 6 (5
SAFER SK64 8 (5
SAFER K128 10 (9
SAFER SK128 10 (9
p>
SAFER + ( "Secure And Fast Encryption Routine") p>
один з кандидатів на AES p>
Автор: Cylink Corporation p>
Параметри: p>
- розмір блоку 16 байт p>
- розмір ключа 128/192/256 p>
- число раундів 8/12/16 p>
Skipjack. p>
Старанно пропихається Держдепом США симетричний алгоритм шифрування з p>
розділяються ключем і бекдор. Використовується в чіпах Clipper і Capstone, які p>
хочуть засунути до Інтернет унітазів включно :). p>
Цікавий тим, що ламається 31 раунд (за аналогією з DES запас зроблений p>
мінімальний). Ще цікавий тим, що за аналогією з ГОСТ ключове розширення p>
виходить простим повторенням ключа. p>
Режими: ECB, CBC, CFB 8bit, OFB, OFB counter 8bit p>
ECB, CBC, OFB: шифрують дані блоками по 64 біти (8 байт) p>
CFB, OFBC: шифрують дані блоками по 8 біт (1 байту) p>
Автор: NSA p>
Параметри: p>
- розмір блоку 64 біта p>
- розмір ключа 80 біт p>
- число раундів 32 p>
TEA (Tiny Encryption Algorithm). p>
Автори: David Wheeler, Roger M. Needham p>
Параметри алгоритму: p>
- розмір блоку - 64 біта. p>
- розмір ключа - 128 біт. p>
TripleDES. p>
Алгоритм зашифрування полягає в наступному: початковий текст зашифровується DESом p>
з ключем K1, результат розшифровується DESом з ключем K2, а цей результат p>
знову зашифровується DESом з ключем K1. Разом довжина ключа 112 біт. P>
Іноді застосовують 3 різних ключі, але стійкість від цього не змінюється. p>
DES - не група, тобто композиція двох операцій шифрування з різними p>
ключами не є в загальному випадку DES-шифруванням з деякими третіми p>
ключем [2.5]. Отже, можна намагатися збільшити простір ключів p>
за рахунок багаторазового застосування DES. p>
Подвійний DES, c = К1 (К2 (m)), не забезпечує збільшення в 2 в 56 ступені p>
раз обсягу перебору, необхідного для визначення ключа, оскільки при p>
атаці з відомим відкритим текстом можна підбирати паралельно вихідний p>
текст m і шифрограму c, накопичувати в хеш-таблиці значення К2 (m), К1 ^ -1 (c) p>
і шукати збігу між ними. p>
Потрійний DES рекомендується фахівцями як заміну DES: p>
У режимі ECB c = К1 (К2 (К3 (m))) або c = К1 (К2 ^ -1 (К3 (m ))) p>
В інших режимах c = К1 (К2 ^ -1 (К1 (m ))) p>
Застосування функції розшифрування на другому кроці пояснюється бажанням досягти p>
сумісності з одноразовим алгоритмом DES у випадку, якщо всі ключі рівні. p>
Потрійне шифрування з двома ключами все одно зводиться до одинарному при p>
використанні атаки з вибором відкритого тексту [2.6]. p>
Автор: NIST ANSI X9.17, "American National Standard, Financial Institution p>
Key Management (Wholesale) ", 1985. p>
ISO/IEC 8732:1987, "Banking - Key Management (Wholesale )". p>
Параметри: p>
- розмір ключа 112 біт p>
- інше - див DES p>
ГОСТ 28147-89 p>
Російський федеральний стандарт шифрування. Фактично, описує кілька p>
алгоритмів (режими роботи ГОСТ). Крім ключа йому необхідна ще одна таблиця p>
(таблиця замін, 128 осередків 4-бітових чисел) для формування вузлів заміни. ГОСТ p>
її не визначає, тому вона може розглядатися як довготривалий ключовою p>
елемент. Визначено наступні режими роботи: режим простої заміни (ECB), режим p>
гамування (SM) та режим гамування зі зворотним зв'язком (OFB). Кілька p>
осібно стоїть режим вироблення імітовставки. У принципі, у нього таке ж p>
призначення як у хеш-функції, тільки її значення ще залежить від секретного p>
ключа. З отриманого в результаті 64 бітного значення вибирається l бітів, де p>
l <= 32. Мінімальний розмір даних для імітозащіти - 2 64-бітових блоку. P>
Автор: КДБ СРСР p>
Параметри: p>
- розмір блоку 64 біта p>
- розмір ключа 256 біт p>
- число раундів 32 (16 - для імітовставки) p>
Q: Які мають бути правила побудови таблиць (вузлів) заміни в Гості? p>
A: Основне завдання - зробити S-box'и (так називають ці таблиці) стійкими до p>
диференціальне та лінійному криптоаналіз. Можна спробувати p>
сформулювати критерії, дивлячись на ті критерії, які Тучман використовував у p>
початку 70-х для DES./* Знадобилося близько 10 місяців */ p>
Отже, можна сформулювати такі правила: p>
1. Hі один вихідний біт не повинен скільки-небудь добре наближатися лінійної p>
функцією від вхідних біт. p>
2. Якщо два вхідних значення відрізняються на один біт, вихідні значення p>
повинні відрізнятися не менш ніж на 2 біти. p>
3. Якщо два вхідних значення відрізняються у двох сусідніх бітах (як мінімум p>
центральних), то вихідні значення повинні відрізнятися не менш ніж на 2 біти. p>
4. Для будь-якого значення XOR між вхідними значеннями, слід мінімізувати p>
кількість пар, чиї XOR на вході і на виході рівні цього значення (це p>
вельми хитромудрий вимога випливає з спроби захиститися від p>
диференціального p>
криптоаналізу). p>
5. S-box'и не повинні бути схожі один на одного. Hаприклад, кількість вхідних p>
значень, що дають одне і теж значення на виході з різних S-box'ов, повинно p>
бути мінімально. p>
6. Вузли заміни в ідеалі повинні враховувати особливості вхідного тексту: якщо p>
використовуються тільки алфавітно-цифровий діапазон ASCII-таблиці, то він повинен p>
відображатися (після заміни) на все безліч використовуваного алфавіту, приховуючи p>
статистичні властивості відкритого тексту. p>
A2: Запросити вузол заміни в ФАПСИ. p>
III. Несиметричні шифри. P>
Q: А які є несиметричні алгоритми шифрування? p>
A: А ось цих небагато:) В принципі, вся несиметрична криптографія будується p>
на 2 проблеми: проблеми розкладання великого числа на прості множники і p>
проблеми дискретного логарифмування. Власне, для шифрування використовується p>
алгоритм RSA (Rivest-Shamir-Adleman), розроблений в 1977 році математиками p>
Роном Райвестом (R. Rivest), Аді Шамір (A. Shamir) та Леонардом Аделманом p>
(L. Adleman). Використовується не тільки для шифрування, але і для формування ЕЦП. P>
Схема приблизно така: p>
Абонент А, що бажає вступити в листування, ЗАРАHЕЕ: p>
- виробляє різні прості числа p, q, приблизно рівною розрядності, p>
і обчислює n = p * q; p>
- генерує випадкове числі e
e * d == 1 (mod ф (n)); (ф (n) - функція Ейлера) p>
- розсилає відкритий ключ (e, n); p>
- зберігає в таємниці секретний ключ (p, q, d). p>
Абонент B, бажаючий зашифрувати повідомлення для абонента А, виконує наступні p>
дії: p>
- відкритий текст розбивається на блоки, кожний з яких представляється як p>
число m, 0 <= m <= (n-1), і перетвориться в блок c, 0 <= c <= (n-1), p>
шифрованого тексту з = E (n, e, m) = m ^ e (mod n). p>
Для РАСШІФРОВАHІЯ абонент А виконує наступні дії: p>
- обчислює m '= E (n, d, c) = c ^ d (mod n). p>
A2: p>
Якщо приводити до фундаментальних математичним p>
проблем, то всі існуючі алгоритми з відкритим ключем прагнуть p>
будувати таким чином що б вони були схожі на Поліноміальні для p>
власника особистого ключа і на NP-повні проблеми для всіх інших. p>
В [1.2, pp. 461-482] приведено p>
9 таких систем (ну, скажімо, популярні нині еліпіческіе криві це просто p>
зміна кінцевого поля, ще парочку можна звести до інших, але 6 принципово p>
різних алгоритмів є). p>
У той же час доказів NP-повноти немає ні у більшості з них, а про RSA p>
є серйозні підозри на його поліноміальною. p>
Усіх їх можна використовувати для шифрування, але більшість (крім RSA) можна p>
використовувати для одночасної аутентифікації за ті ж гроші. Тому більш p>
коректно сказати, що RSA можна використовувати тільки для шифрування (у ньому p>
навіть ЕЦП є формою шифрування, так і пишуть: encrypted digest:) p>
IV. Хеш-функція. P>
Q: Що таке хеш-функція (hash, hash-function)? p>
A: Це перетворення, яке отримує з даних довільної довжини якесь значення p>
(згортку) фіксованої довжини. Найпростішими прикладами є контрольні p>
суми (наприклад, crc32). Бувають криптографічні і програмістські хэши. P>
Криптографічний хеш відрізняється від програмістської наступними p>
двома властивостями: необоротністю і вільний від колізій. p>
Позначимо m - вихідні дані, h (m) - хеш від них. Hеобратімость p>
означає, що якщо відомо число h0, то важко підібрати m таке, p>
що h (m) = h0. Вільний від колізій означає, що важко p>
підібрати такі m1 і m2, що m1! = m2, але h (m1) = h (m2). p>
Криптографічні хеш-функції поділяються на два класи: p>
- хеш-функції без ключа (MDC (Modification (Manipulation) Detect Code) - коди), p>
- хеш-функції c ключем (MАC (Message Authentication Code) - коди). p>
Хеш-функції без ключа поділяються на два підкласи: p>
- слабкі хеш-функції, p>
- сильні хеш-функції. p>
Слабкою хеш-функцією називется одностороння функція H (x), яка задовольняє p>
таким умовам: p>
1) аргумент х може бути рядком біт довільної довжини; p>
2) значення H (x) має бути рядком біт фіксованої довжини; p>
3) значення H (x) легко вирахувати; p>
4) для будь-якого фіксованого x обчислювально неможливо знайти інший p>
x '! = x, такий що H (x') = H (x). p>
Пара x '! = x, коли H (x') = H (x) називається колізією хеш-функції. p>
Сильною хеш-функцією називається одностороння функція H (x), яка задовольняє p>
умовами 1-3 для слабкої хеш-функції і властивості 4 ': p>
4 ') обчислювально неможливо знайти будь-яку пару x'! = x, такий що p>
H (x ') = H (x). p>
Оскільки з властивостей 1-2 випливає, що безліч визначення хеш-функції p>
значно ширше безлічі значень, то колізії повинні існувати. p>
Властивість 4 вимагає, щоб знайти їх для заданого значення х було практично p>
неможливо. Вимога 4 'говорить про те, що у сильної хеш-функції p>
обчислювально неможливо взагалі знайти будь-яку колізію. p>
Хеш-функцією з ключем (MAC) називається функція H (k, x) задовольняє p>
властивостями: p>
1) аргумент х функції H (k, x) може бути рядком біт довільної довжини; p>
2) значення H (k, x) має бути рядком біт фіксованої довжини; p>
3) за будь-яких k і x легко вирахувати H (k, x); p>
4) для будь-якого х повинно бути важко обчислити H (k, x) не знаючи k; p>
5) повинно бути важко визначити k навіть при великому числі невідомих p>
пар (x, H (k, x)) при вибраному наборі х або обчислити з цієї інформації p>
H (k, x ') для x'! = x. p>
Q: А навіщо вона потрібна? p>
A: Справа в тому, що багато криптографічні перетворення (зокрема, p>
обчислення і перевірка електронного цифрового підпису, ЕЦП) виконуються над p>
даними фіксованого розміру. Тому перед проставляння електронної p>
підписи під многомегабайтним файлом зазвичай розраховують значення хеш-функції p>
від нього, а вже від цього значення вважають ЕЦП. Крім того, зручно, наприклад, p>
паролі в базі зберігати не у відкритому вигляді, а в хешірованном (так зроблено p>
у всіх Юнікс). p>
Q: А які є алгоритми хеш-функцій? p>
A: Ось деякі з них: p>
MD2 p>
Автор: RFC 1319, "The MD2 Message Digest Algorithm", Burt Kaliski, 1992. p>
Розмір: 128 біт. p>
MD4 p>
Автор: RSA Data Security p>
Розмір: 128 біт. p>
MD5 p>
Капітально перероблений MD4. p>
Кожна ітерація алгоритму складається з 64 операцій. p>
Hедавно виявлена нестійкість до виявлення колізій [2.1.9, 2.1.10, 2.1.11], p>
але поки не побудована настою?? а атака на цю функцію. p>
Автор: RSA Data Security p>
Розмір: 128 біт. p>
SHA (Secure Hash Standard) p>
Один з (відносно) нових алгоритмів пакунки. p>
Функція запропонована як національного стандарту США. p>
Кожна ітерація алгоритму складається з 80 операцій. p>
Автор: NIST (National Institut of Standards and Technology) p>
FIP-180 (Federal Information Processing Standards Publication 180) p>
ANSI X9.30-2, "American National Standard, Public-Key Cryptography Using p>
Irreversible Algorithms for the Financial Services Industry ", 1993. p>
FIPS PUB 180, "Secure Hash Standard", 1993 p>
FIPS PUB 180-1, "Secure Hash Standard", 1994 p>
Розмір: 160 біт. p>
ГОСТ Р34.11-94 p>
Російський алгоритм. Розмірність одержуваного значення дуже зручна p>
для формування за паролем ключа для ГОСТ 28147-89. p>
Автор: Стандарт ГОСТ Р 34.11-94 розроблений ГУБС p>
ФАПСИ і ВHІІС, внесений ТК 22 "Інформаційні технології" і ФАПСИ, прийнятий і p>
введений в дію Держстандартом Росії 23.05.94. p>
Розмір: 256 біт. p>
V. Електронний цифровий підпис. P>
Q: Що таке електронний цифровий підпис (ЕЦП)? p>
A: ЕЦП - це для автора документа спосіб переконати читачів у тому, p>
що автор - саме він. Спосіб працює приблизно так. P>
Спочатку автор документа (файла тощо) повинен згенерувати p>
пару ключів, один секретний, один відкритий. Секретний ключ p>
він залишає при собі, відкритий - передає всім потенційним p>
читачам (під розпис, або за іншою довіреній каналу). p>
Тепер при необхідності надіслати документ від обчислює p>
деяке число (ЕЦП), яке залежить від самого файлу і від p>
секретного ключа. Без знання секретного ключа це число підібрати p>
вкрай складно. p>
Одержувач обчислює інше число на основі отриманого файлу, p>
отриманої ЕЦП і відкритого ключа. Якщо вийшла 1 - значить, p>
документ не було спотворено, і автор відповідає передбачуваному. p>
Якщо вийшов 0 - значить, це підробка. p>
Hесложно зрозуміти, що цю систему правильніше було б назвати p>
"Електронний цифровий друк", тому що підпис - це щось p>
індивідуальне. А друк (як і секретний ключ) можна p>
вкрасти, з усіма наслідками, що випливають. p>
RSA. p>
ПРЕДВАРІТЕЛЬHО: p>
- ті ж попередні дії що і для алгоритми шифрування RSA. p>
ВИЧІСЛЕHІЕ ПІДПИСИ: p>
- c = H (m) ^ d (mod n) (H (m) - результат хешування повідомлення m); p>
ПЕРЕВІРКА ПІДПИСИ: p>
- перевірка равества H (m) == c ^ e (mod n). p>
('==' - операція порівняння (це не більше або менше :-))) p>
Автори: Рональд Райвест (R. Rivest), Аді Шамір (A. Shamir) p>
і Леонард Аделман (L. Adleman) p>
Розміри ключів: будь-які, розмір модуля вибирається зазвичай не менше p>
2048 біт (відповідно сума довжин e і d приблизно дорівнює довжині n) p>
Розмір підпису: Равен довжині модуля. p>
ElGamal p>
ПРЕДВАРІТЕЛЬHО: p>
1. У всій мережі вибираються просте число p, p = 2q +1, q - просте число і Alfa - p>
утворює поля GF (p). p>
При спеціальному виборі параметрів p і Alfa стає можливим підробляти p>
підпису. Це доводиться в [3.4.2]. P>
Цей факт може бути використаний, якщо параметри системи породжуються p>
централізовано. Тоді той, хто їх породжує, може підробляти підписи всіх p>
обслуговуваних їм учасників. p>
2. У всій мережі вибирається хеш-функція H зі значеннями в