обляють інформацію блоками певної довжини (зазвичай 64, 128 біт), застосовуючи до блоку ключ в установленому порядку, як правило, кількома циклами перемішування і підстановки, званими раундами. Результатом повторення раундів є лавинний ефект - наростаюча втрата відповідності бітів між блоками відкритих і зашифрованих даних.
Потокові шифри, в яких шифрування проводиться над кожним бітом або байтом вихідного (відкритого) тексту з використанням гамування. Потоковий шифр може бути легко створений на основі блочного (наприклад, ГОСТ 28147-89 в режимі гамування), запущеного в спеціальному режимі.
Більшість симетричних шифрів використовують складну комбінацію великої кількості підстановок і перестановок. Багато такі шифри виконуються в декілька (іноді до 80) проходів, використовуючи на кожному проході «ключ проходу». Безліч «ключів проходу» для всіх проходів називається «розкладом ключів» (key schedule). Як правило, воно створюється з ключа виконанням над ним деяких операцій, в тому числі перестановок і підстановок.
Типовим способом побудови алгоритмів симетричного шифрування є мережа Фейстеля. Алгоритм будує схему шифрування на основі функції F (D, K), де D - порція даних, розміром вдвічі менше блоку шифрування, а K - «ключ проходу» для даного проходу. Від функції не потрібно оборотність - зворотна їй функція може бути невідома. Переваги мережі Фейстеля - майже повний збіг дешифрування з шифруванням (єдина відмінність - зворотний порядок «ключів проходу» в розкладі), що сильно полегшує апаратну реалізацію.
Операція перестановки перемішує біти повідомлення по якомусь закону. В апаратних реалізаціях вона тривіально реалізується як перепутиваніе провідників. Саме операції перестановки дають можливість досягнення «ефекту лавини». Операція перестановки линейна - f (a) xor f (b) == f (a xor b)
Операції підстановки виконуються як заміна значення якоїсь частини повідомлення (часто в 4, 6 або 8 біт) на стандартне, жорстко вбудоване в алгоритм інше число шляхом звернення до константностей масиву. Операція підстановки привносить в алгоритм нелінійність.
Найчастіше стійкість алгоритму, особливо до диференціального криптоанализу, залежить від вибору значень в таблицях підстановки (S-блоках). Як мінімум вважається небажаним наявність нерухомих елементів S (x)=x, а також відсутність впливу якогось біта вхідного байта на якийсь біт результату - тобто випадки, коли біт результату однаковий для всіх пар вхідних слів, що відрізняються тільки в даному бите .
Малюнок 1.Види ключів
4. Асиметричне шифрування
Криптографічна система з відкритим ключем (або асиметричне шифрування, асиметричний шифр) - система шифрування та / або електронного цифрового підпису, при якій відкритий ключ передається по відкритому (тобто незахищеному, доступному для спостереження) каналу і використовується для перевірки ЕЦП і для шифрування повідомлення. Для генерації ЕЦП і для розшифровки повідомлення використовується секретний ключ. Криптографічні системи з відкритим ключем в даний час широко застосовуються в різних мережевих протоколах, зокрема, в протоколах TLS і його попереднику SSL (що лежать в основі HTTPS), в SSH.
Ідея криптографії з відкритим ключем дуже тісно пов'язана з ідеєю односторонніх функцій, тобто таких функцій, що за відомим досить просто знайти значенн...