Алгоритми шифрування DES, RSA, RC5 і AES.
[DES]
[Теорія]
Один з найбільш распространненыха алгоритмів шифрування — DES (Data Encryption Standart) — розроблений у середині 70-x років. Він використовується в багатьох криптографічних системах. Це блочний алгоритм шифрування симетричним ключем. Ключ складається з 64 бітів, але лише 56 з них застосовуються безпосередньо при шифруванні. 8 призначені для контролю парності: вони встановлюються так, щоб кожен з 8 байтів ключа мав непарне значення. Шифруемая інформація обробляється блоками по 64 біта, причому кожен блок модифікується за допомогою ключа в интерационной процедурою, що включає 16 циклів. Так, до речі, DES створила відома компанія RSA.
[Вся правда про DES]
Хочу сказати, що DES вже морально застарів :(, він так само може застосовуватися в різних девайсах, програмних забезпечення (але це наврятле, хоча не виключено :)), типу: AMT — банкомат, або простіше кажучи сейф :). Різні операції і маніпуляції вироблені з банкоматом (AMT і т. д.), шифрується саме їм. Напевно кардери з ним добре знайомі. Вся справа в тому, що підприємства використали цей алгоритм тривалий час і відповідно під нього подстраиволось все що можна, ну коротше кажучи, не вистачає коштів для полново переходу на цей алгоритм. Наприклад, велике підприємство, або завод створювався довгий час, а пізніше він обонкротися, тому що мобільні підприємства (в Америці таких доповалом) швидко перейшли на інше обладнання і т. д. Ну гаразд, хрін з цією економікою! Пізніше придумали якусь подобу DES, це 3DES. Він відрізняється лише тим, що у нього як би перехідна довжина ключа, тобто було на початку ~56, а стало ~64. Відповідно це дуже ускладнювало злом цього алгоритму :(. Але він не занадто м відрізняється дырявостью від простого DES.

В даний момент при довжині ключа 56 біт алгоритм вважається стійким до злому.

Для більшої надійності можна задіяти алгоритм Triple-DES (http://www.inroad.kiev.ua/prog/3des.htm).

Оскільки DES — федеральний стандарт США, його зазвичай не використовують прогаммных продуктах, призначених для експорту, а якщо й використовують, то довжина ключа не може перевищувати 56 бітів.

[Що таке RC5?]

RC5 це досить-таки швидкий блочний шифр розроблений Рівестом RSA Data Security. Цей алгаритм параметричен, тобто з пременным розміром блоку, довжиною ключа і змінним числом проходів. Розмір блока може бути 32, 64 або 128 біт. Кількість проходів в проміжку від 0 до 2048 біт. Параметричность такого роду дає гнучкість і ефективність шифрування.

RC5 складається з введення ключа (key expansion), шифрування і дешифрування. При введенні ключа вводяться також кількість проходів, розмір блоку і т. д. Шифрування складається з 3 примитвных операцій: додавання, побітового XOR і чергування (rotation). Виняткова простота RC5 робить його простим у використанні, RC5 текст, також як і RSA, може бути дописаний в кінці листа в зашифрованому вигляді.

Безпека RC5 ґрунтується на залежній від даних чергуванням і змішуванням результатів різних операцій. RC5 з розміром блоку 64 біта і 12 або більше проходів забезпечує хорошу стійкість проти диференціального та лінійного криптанализов

[Що таке RSA]

RSA — один з перших і дуже популярний алгоритм шифрування з відкритим ключем — розроблено засновниками фірми RSA (Rivest, Shmir, Adleman) в кінці 70-х років і названий по первымбуквам їх прізвищ.

Ступінь стійкості зашифрованої інформації до злому, а також неможливість за відкритим ключем відновити закритий визначаються труднощами факторизації великих чисел і залежать від довжини ключа.

Зараз ключі довжиною 512 біт розглядаються як недостатньо стійкі, тому в криптографічному програмному забезпеченні рекомендуються 768 або 1024 бітові ключі.

Часто використовують комбінований підхід: спочатку повідомлення кодуються за допомогою деякого ключа по алгоритму типу DES, а потім ключ шифрується із застосуванням RSA та передається разом із закодованим повідомленням. Це дозволяє досягнути високої швидкості обробки інформації і в той же час забезпечує надійний захист.

Стислі основи RSA:
1. Вибираються великі прості числа M і N;
2. Обчислюється їх добуток: Q=MxN;
3. Вибирається число D, яке повинно бути взаємно простим з результатом множення (M-1)x(N-1), тобто не повинно мати з ним спільних дільників, відмінних від одиниці;
4. Обчислюється число A з виразу (AxD) mod [(M-1)x(N-1)]=1;

Таким чином, пара чисел (A,Q) буде твоїм відкритим ключем, а пара чисел (D,Q) — закритим ключем. Зрозуміло, що відкритим ключем можна тільки закодувати вихідний текст, для того, щоб її розкодувати, потрібен закритий ключ.
Кодування числа P: C=M^A mod Q;
Зворотна операція: P=C^D mod Q;

Так от, для того, щоб поламати PGP (сиріч RSA), необхідно і достатньо вміти розкласти число Q (яке ми візьмемо, зрозуміло, з відкритого ключа, поміщеного людиною в бурхливі води, скажімо, Fido та/або Internet) на прості множники. Ось тут-то і починається найцікавіше.

Прості множники числа — літопис у теорії чисел, над ними билися багато математики. про на жаль, так нічого і не домоглися. В математиці не существует_ теорем, які можуть надійно передбачити, чи є число простим.

Є теореми, які можуть швидко встановити, що число складене, але якщо не виконуються умови теореми, то це не значить, що число просте: це означає, що воно НАЧЕБТО просте, і треба застосовувати більш сильні теореми, які, на жаль, на машині перевіряються тільки перебором. Далі, немає теореми, які допомагають хоча б оцінити кількість простих співмножників числа і порядок їх величини.

Так що реально число з, скажімо, трьохсот десяткових знаків розкласти на прості множники (якщо вони, правда не лежать близько до кореня з числа і т. д. — є легкі випадки) за розумний час нереально.

Так, програма на 386SX40 розкладає число з 17 десяткових знаків за час, близький до трьох хвилин, але час її роботи є P*exp(n), тобто число з 300 знаків вона буде розкладати exp(280) разів довше (це близько 5.1*10^279). Природно, що якщо взяти більш швидке точило, Cray, приміром, то буде швидше… 🙂 все одно не дуже. Правда, є більш швидкі алгоритми, решето Сива, наприклад, але вони гарні, коли співмножники лежать близько до кореня, і вимагають велику кількість пам’яті.

[AES]
Це альтернатива DES :). На сегодняйший день, не замечано зломів цього алгоритму. Ну якщо і замечано, то його зломів майже немає :). Він став применятьтся в нових девайсах, в прогах. Всі незабаром повинні на нього перейти. AES застосовується в WI-FI, довжина ключа у нього, якщо не помиляюся близько 128 Біт. Судити тобі, що надійніше :).