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 зі значеннями в