Потоковий шифр
Потоковий шифр - група симетричних шифрів, які шифрують кожен символ відкритого тексту незалежно від інших символів.
У основі таких шифрів є шифр XOR. З тією відмінністю, що гама для шифру XOR формується за певним алгоритмом, який є криптостійким генератором (з використанням ключа) псевдовипадкової послідовності символів.
Потокові шифри на базі зсувних регістрів активно використовувалися в роки війни, ще задовго до появи електроніки. Вони були прості в проектуванні та реалізації.
1965 Ернст Селмер, головний криптограф норвезького уряду, розробив теорію послідовності зсувних регістрів. Пізніше Соломон Голомб, математик Агентства Національної Безпеки США, написав книгу під назвою «Shift Register Sequences» («Послідовності зсувних регістрів»), в якій виклав свої основні досягнення в цій галузі, а також досягнення Селмер.
Велику популярність потоковим шифрів принесла робота Клода Шеннона, опублікована в 1949 році, в якій Шеннон довів абсолютну стійкість шифру Вернама. У шифрі Вернама ключ має довжину, рівну довжині самого переданого повідомлення. Якщо кожен біт ключа вибирається випадково, то розкрити шифр неможливо (тому що всі можливі відкриті тексти будуть рівноймовірнісними). Шифри, в яких довжина ключа менша від довжини тексту, згідно з Шенноном, не можуть бути «ідеально безпечними». Для таких шифрів вводять інше розуміння безпечності.
Дотепер було винайдено чимало алгоритмів потокового шифрування. Як-от: A3, A5, A8, RC4, PIKE, SEAL, eSTREAM.
Потоковий шифр породжує послідовність елементів потоку ключа базуючись на внутрішньому стані. Цей стан оновлюється двома способами: якщо стан змінюється незалежно від відкритого тексту або шифротексту повідомлення, шифр позначають синхронним (англ. synchronous) потоковим шифром. Натомість, потокові шифри такі, що самосинхронізуються (англ. self-synchronising) оновлюють стан на основі попередніх цифр шифротексту.
В синхронному потоковому шифрі потік псевдовипадкових цифр породжується незалежно від відкритого тексту і шифротексту повідомлення, і тоді поєднується з відкритим текстом (для шифрування) або шифротекстом (для розшифрування). В найпоширенішій формі використовуються двійкові цифри (біти), і потік ключа поєднується з відкритим текстом за допомогою XOR. Тут вживається термін двійковий адитивний потоковий шифр (англ. binary additive stream cipher).
В синхронних шифрах, відправник і отримувач повинні іти точно в ногу для успішного розшифрування. Якщо цифра додана або видалена з потоку під час передачі, синхронізація втрачається. Для відновлення синхронізації, з ціллю отримання правильного відкритого тексту автоматично пробуються різні зсуви. Інший підхід полягає в використанні позначок у шифротексті з визначеною регулярністю.
Однак, якщо цифра пошкоджена, тоді це вплине лише на одну цифру в відкритому тексті і помилка не пошириться на інші частини повідомлення. Ця властивість корисна у випадку високої схильності до помилок під час передачі; однак це робить менш імовірним виявлення помилки без додаткових механізмів. Більше того, через цю властивість, потокові шифри дуже сприйнятливі до активних атак — якщо нападник може змінити цифру в шифротексті, він може змінити біт і в відкритому тексті; наприклад, зміна біту в шифротексті спричиняє зміну того самого біту в відкритому тексті.
Інший підхід використовує декілька з N попередніх цифр шифротексту для обчислення потоку ключа. Така схема відома як потокові шифри, що самосинхронізуються (англ. self-synchronizing stream ciphers), асинхронні потокові шрифти (англ. asynchronous stream ciphers) або шифротекст з автоключем (англ. ciphertext autokey, CTAK). Ідею асинхронних шифрів запатентували в 1946, і вона має перевагу, що отримувач автоматично синхронізується з генератором потоку ключів по отриманні N цифр шифротексту, що полегшує відновлення у випадку, якщо до потоку додана чи видалена цифра. Помилки з однієї цифри обмежені в своєму впливі, зачіпаючи не більше ніж N цифр відкритого тексту.
Прикладом асинхронного потокового шифру є блоковий шифр в режимі зворотного зв'язку по шифртексту (CFB).
Існує багато сучасних шифрів даного класу.
Застарілі, ненадійні:
- RC4, шифр розроблений 1987 і, незважаючи на свої слабкості, досі активно використовується, наприклад у HTTPS і WEP. Не рекомендується для використання в нових проектах.
- CSS (шифр), зламаний в усіх варіаціях. Легко втілюється апаратно, використовує лінійний циклічний зсувний регістр (LFSR). Використовується лише через те, що вже втілений в апаратній частині, часто для шифрування DVD.
Сучасні і надійні:
- Salsa20, розроблений у межах проекту eSTREAM. Добре підходить для апаратного і програмного втілення. Дуже швидкий. Крім ключа використовує нонс.
- Matt J. B. Robshaw. Stream Ciphers Technical Report TR-701 (англ.), версія 2.0, RSA Laboratories, 1995.
- Технічний звіт RSA по операціях з потоковими шифрами. (англ.)
- Розбір Легковагових Потокових Шифрів (тези Фішера). (англ.)
- SVG анімація простого потокового шифру. (англ.)
- Порівняльний аналіз алгоритмів потокового шифрування для цифрового зв'язку.[недоступне посилання з липня 2019] (англ.)
Це незавершена стаття про алгоритми. Ви можете допомогти проєкту, виправивши або дописавши її. |