Сучасна криптографія

ЗАВЕРШАЛЬНІ ЗАУВАЖЕННЯ


ДОДАТОК




 

 

 

 

В.Ємець, А.Мельник, Р.Попович

 

Сучасна криптографія. Основні  поняття. – Львів: БаК, 2003.

 

Розглянуто основні теоретичні положення сучасної криптографії. Описано  симетричні шифрувальні алгоритми, які використовуються сьогодні. Наведено теоретичні основи для асиметричних шифрувальних алгоритмів та практично всі відомі нині класи цих алгоритмів. Висвітлено генерування псевдовипадкових послідовностей та використання хешувальних функцій. Пояснено побудову цифрових підписів на підставі асиметричних алгоритмів. Викладено одне із ключових питань у разі застосування криптографії на практиці - адміністрування ключами. Розглянуто можливі сучасні підходи до зламування криптосистем.

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

 

 

 

 

 

 

 

 

 

 

 

 

Рецензенти:  д.т.н., професор В.П.Тарасенко, НТУ “КПІ”

д.т.н., професор Р.П.Базилевич, НУ “ЛП”

 

 

 

 

 

 

 

ÓВ.Ємець, А.Мельник, Р.Попович, 2003

 

 

 

 

ЗМІСТ

 

 

 

ВСТУП

Проблема захисту інформації шляхом її перетворення, що унеможливлює прочитання цієї інформації сторонньою особою, ще кілька десятиліть тому стосувалася  головно військових операцій або  була пов’язана з шпигунськими історіями, а не становила предмет широкого використання. Причиною бурхливого розвитку криптографії, з одного боку, є використання комп'ютерних мереж, зокрема глобальної мережі Internet, по яких передають великі обсяги інформації державного, військового, комерційного і приватного змісту, що не допускає можливості доступу до неї сторонніх осіб, а з іншого, – поява нових потужних обчислювальних засобів обчислень зробила можливою дискредитацію низки криптографічних систем. Без криптографії не було б стільникових телефонів, банкоматів, цифрового телебачення, Internet платежів тощо.

Методи криптографічного захисту інформації передбачають як програмне, так і апаратне використання. Програмна реалізація шифрування є  дешевшою та практичнішою. Водночас апаратна реалізація продуктивніша та простіша у використанні. Сучасні криптографічні системи повинні задовольняти такі загальноприйняті вимоги [4]:

 

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

 

Викладення теоретичних  основ сучасної криптографії, не пов’язаних з державною таємницею, – мета цієї книжки. Наведено основні термінологічні поняття та приклади використання шифрування на практиці. Наведено основні законодавчі акти України в області криптографії. Зроблено екскурс в історію криптографії та розглянуто класичні алгоритми шифрування: підстановки й перестановки. Поряд із загальними принципами утворення блокових симетричних шифрів, описано найбільш широко вживані на даний час алгоритми шифрування, включаючи стандарт AES. Розглянуто теоретичні основи асиметричних алгоритмів, висвітлено питання складності обчислень та описано алгоритми шифрування RSA, Рабіна, Ель-Гамаля, а також утворення криптосистем на основі еліптичних кривих та рюкзакові шифри. Висвітлено питання генерування псевдовипадкових послідовностей, утворення хешувальних функцій. У додатку наведено необхідні базові поняття абстрактної алгебри.

 

 

 

Розділ 1. ОСНОВНІ ПОНЯТТЯ

1.1. Термінологія

Основним предметом вивчення криптографії є шифрування документів. З оригінального документа (звичайного тексту, цифрового зображення, звукового сигналу тощо), який називають явним або відкритим текстом, можна утворити зашифровану версію, яку називають криптограмою (криптотекстом) або шифрограмою (шифротекстом). Явний текст використовує, наприклад:

 

  • алфавіт Z33, що включає 33 літери української абетки без додаткових символів для апострофа, розділових знаків, цифр, великих літер;
  • двійковий алфавіт Z= {0, 1};
  • алфавіт Z256, що складається з символів ASCII та КОІ 8;
  • алфавіт Z26, що використовує 26 літер латинської абетки без додаткових символів, розділових знаків, цифр, великих літер.

 

Для шифрування й дешифрування потрібні додатково ключ або ключі (рис. 1.1).

 

 

 

Рис. 1.1. Загальна схема шифрування й дешифрування.

 

Алгоритм шифрування й дешифрування утворює криптосистему або шифр. Розглянемо два здавна відомі шифри.

 

 Шифр Цезаря (100-44 р. до н. е.). Його названо за іменем римського імператора Гая Юлія Цезаря, який доручав Цицерону складати шифровані повідомлення для керування військами. Літери абетки тут ототожнені з цифрами. В системі Цезаря використано 26 символів (26 літер латинської абетки), які пронумеровані числами від 0 до 25 (табл. 1.1). Шифр ґрунтується на підстановці:

 

00 (a) ® 03 (d); 01 (b) ® 04 (e); 02 (c) ® 05 (f); ...; 25 (z) ® 02 (c).

 

Це означає, що в шифрограмі кожну  літеру явного тексту замінюють на літеру, розташовану в абетці на три позиції далі. Висловлюючись сучасною мовою, римляни застосовували операцію додавання до номера літери числа 3 за модулем 26 : C ≡ P + 3 (mod 26), де С – номер літери в криптограмі, а P – номер відповідної літери в явному тексті. Наприклад, латинському слову imperium (імперія) відповідає криптограма lpshulxp, а латинському тексту Veni, vidi, vici (прийшов, побачив, переміг – крилата фраза Цезаря), коли з нього викинути коми й пропуски між словами, відповідає криптограма yhqlylglylfl.

 

Таблиця 1.1. Нумерація літер латинської абетки

a

00

h

07

o

14

v

21

b

01

i

08

p

15

w

22

c

02

j

09

q

16

x

23

d

03

k

10

r

17

y

24

e

04

l

11

s

18

z

25

f

05

m

12

t

19

   

g

06

n

13

u

20

   

 

Таблиця 1.2. Нумерація літер української  абетки

а

00

є

07

к

14

с

21

ш

28

б

01

ж

08

л

15

т

22

щ

29

в

02

з

09

м

16

у

23

ь

30

г

03

и

10

н

17

ф

24

ю

31

ґ

04

і

11

о

18

х

25

я

32

д

05

ї

12

п

19

ц

26

   

е

06

й

13

р

20

ч

27

   

 

 

Шифр Цезаря стосовно української  абетки (табл.1.2) означає, що літеру а замінюють на літеру г, літеру б – на літеру ґ, літеру в - на літеру д і т.д. Останні букви абетки ь, ю, я зміщуються циклічно, тобто переходять у а, б, в, відповідно. Наприклад, слову імперія відповідає криптограма кптзукв.

Шифр Цезаря є шифром зсуву на три позиції.

 

‚ Шифр частоколу. Цей шифр належить до шифрів перестановки. Наприклад, слово криптографія записуємо у вигляді і шляхом зчитування по рядках з верху до низу отримуємо криптограму рпорфякитгаі. У цьому випадку висота частоколу дорівнює 2. Для висоти частоколу, що дорівнює 3, маємо: й отримуємо криптограму иоаяртрікпгф.

Для розглянутих прикладів довжина  перестановки й висота частоколу  є ключем шифрування й дешифрування.

Явний текст P, зашифрований за допомогою ключа K, будемо позначати через EK(P) = C, а явний текст, отриманий з криптограми C за допомогою ключа K, - через DK(C) = P. Такі позначення передбачають, що знаємо, який ключ шифрування або дешифрування використовують.

З огляду на використання ключів розрізняють  два методи шифрування: метод, що використовує симетричні алгоритми, та метод, що використовує асиметричні алгоритми.

Симетричні алгоритми – це алгоритми, де ключ для шифрування та ключ для дешифрування є одним і тим самим (рис. 1.2).

 

 

 

Рис. 1.2. Симетрична схема шифрування й дешифрування.

 

 

Асиметричні алгоритми, або алгоритми з явним чи публічним ключем – це алгоритми, де ключі для шифрування й дешифрування різні (рис.1.3). У цьому разі практично не повинно бути можливим отримання з одного із них іншого.

У рамках криптографії вивчають також методи розкриття шифрів, або методи криптоаналізу. На підставі криптограми необхідно знайти відповідний їй явний текст або ключ. Криптоаналіз також може виявити слабкі місця в криптосистемах, що зрештою призведе до попереднього результату. Отримання ключа не криптографічним способом називають компрометацією ключа. Найпростішою формою криптоаналізу є метод, який називають систематичним пошуком, або брутальною атакою (англ. термін brute-force). Цей метод полягає у випробуванні всіх можливих ключів. Наприклад, знаючи явний текст P i відповідну йому криптограму C, можемо шифрувати P по черзі всіма можливими ключами, доки не знайдемо такий ключ, який дає в результаті C. З огляду на стрімке зростання продуктивності ЕОМ можна припустити, що такий метод криптоаналізу може виявитися досить ефективним.

 

 

 

Рис. 1.3. Асиметрична схема шифрування й дешифрування.

 

 

Головне припущення криптоаналізу, вперше сформульоване в ХІХ ст. Дутчманом  А.Керкхофсом [6], полягає в тому, що безпека шифру повністю визначена ключем. Керкхофс припустив, що в криптоаналітика є повний опис алгоритму і його реалізації (звичайно ж, ЦРУ не має звички повідомляти Моссад про свої криптографічні алгоритми, але Моссад намагатиметься все одно їх роздобути). Хоча в реальному світі криптоаналітики не завжди мають відповідну детальну інформацію, таке припущення є доброю гіпотезою. Якщо супротивник не зможе зламати алгоритм, навіть знаючи те, як він працює, то тим більше цей зловмисник не зможе розкрити алгоритм без цієї інформації.

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

У криптоаналітиків не завжди є доступ до алгоритмів, та часто вони його отримують. Якщо алгоритм використовують у комерційній  програмі безпеки, то, як свідчить практика, його отримання - це просто питання часу й грошей. Якщо ж алгоритм використовують у військовій системі зв’язку, то тут, особливо під час ведення воєнних дій, виникає питання купівлі або викрадення відповідної апаратури з метою реконструювання алгоритму.

Класифікація криптографічних  атак, залежно від виду інформації, доступної під час криптоаналізу, така.

  1. Атака, що оперує тільки відомими криптограмами (атака типу ciphertext only). Зловмисник має лише криптотекст EK(P) або певну кількість криптотекстів EK(P1), …, EK(Pl), зашифрованих тим самим ключем, але не має інформації про відповідні їм явні тексти.
  2. Атака з відомим явним текстом (атака типу known plaintext). Крім EK(P), певні пари EK(P1) i P1, …, EK(Pl) i Pl є відомими, та ці пари не можуть бути вибрані зловмисником.
  3. Атака з вибраним явним текстом (атака типу chosen plaintext). Зловмисник має криптограму EK(P) для довільно вибраного явного тексту P. Атака такого типу можлива, коли є змога шифрувати за допомогою криптографічного пристрою, проте ключ K невідомий.
  4. Атака з вибраною криптограмою (атака типу chosen ciphertext). Зловмисник може отримати явні тексти DK(C1), …, DK(Cl) для довільно вибраних криптограм C1, …, Cl. Така ситуація виникає, коли зловмисник має змогу дешифрувати за допомогою криптографічного пристрою, проте не має ключа.

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

Ми кажемо з часткою умовності, бо є ймовірність створення нових  потужних алгоритмів криптоаналізу. З  іншого боку, значущість більшості  даних, що підлягають зашифруванню, зменшується з часом. Важливо, щоб значущість даних завжди була меншою, ніж вартість зламування системи безпеки, яка захищає дані.

Ларс Кнудсен [6] розрізняє розкриття  алгоритмів шифрування за такими категоріями, наведеними в порядку зменшення  їхньої важливості.

  1. Повне розкриття. Криптоаналітик отримав такий ключ K, що DK(C) = P.
  2. Глобальна дедукція. Криптоаналітик отримав альтернативний алгоритм, що дає змогу відтворити DK(C), не знаючи ключа K.
  3. Часткова (локальна) дедукція. Криптоаналітик отримав відкритий текст для певного перехопленого криптотексту.
  4. Інформаційна дедукція. Криптоаналітик отримав деяку інформацію про ключ або відкритий текст. Такою інформацією можуть бути декілька бітів ключа, відомості про форму відкритого тексту тощо.

Алгоритм є безумовно безпечним, якщо інформації для отримання відкритого тексту недостатньо, незалежно від обсягу шифротекстів у криптоаналітика. По суті, лише шифрограми, утворені за допомогою методу одноразового блокнота (див. параграф 2.1), неможливо розкрити навіть з необмеженими ресурсами. Усі інші криптосистеми піддаються розкриттю з використанням лише шифротексту простим  перебиранням можливих ключів (брутальною атакою) і перевіренням осмисленості отриманих відкритих текстів.

У криптографії більше цікавляться  криптосистемами, які важко зламати обчислювальним способом. Алгоритм уважають обчислювально безпечним (або, як іноді називають сильним), коли його не можна зламати з використанням доступних ресурсів нині або в майбутньому. Термін “доступні ресурси” є досить розмитий, бо складність зламування шифру можна виміряти різними способами, зокрема:

  1. складністю даних -  обсягом даних, які використовують на вході операції розкриття;
  2. складністю опрацювання -  часом, потрібним для зламування;
  3. вимогами до пам’яті -  обсягом пам’яті, необхідної для зламування.

За емпіричного підходу складність розкриття шифру визначають за максимальним з цих трьох коефіцієнтів. Низка  операцій зламування шифру передбачає певні взаємозв’язки між наведеними вище коефіцієнтами. Наприклад, швидше розкриття шифру можливе завдяки посиленню вимог до пам’яті комп’ютера.

Тоді як складність зламування шифру  є сталою (до часу, доки якийсь криптоаналітик не придумає кращого способу розкриття), потужність комп’ютерів постійно зростає. За останні півстоліття їхні обчислювальні потужності феноменально зросли, й немає ніяких причин вважати, що ця тенденція не буде збережена. Багато криптографічних методів зламувань ґрунтується на використанні паралельних обчислень: задачу розбивають на мільярди маленьких фрагментів, розв’язування яких не потребує міжпроцесорної взаємодії. Оголошення алгоритму шифрування надійним лише тому, що його важко зламати, використовуючи сучасну техніку, в кращому випадку ненадійне. Добрі криптосистеми проектують стійкими до зламування з урахуванням розвитку обчислювальних засобів на багато років уперед.

1.2. Застосування шифрувань

1.2.1. Захист даних від несанкціонованого доступу

Забезпечити захист даних від доступу  до них невтаємничених осіб можна  за допомогою як симетричних, так  і асиметричних алгоритмів. Вибір алгоритму зумовлений передусім вимогами до швидкості роботи криптографічної системи. Можливі такі застосування.

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

Забезпечення зв’язку через лінію, яку прослуховують. Такого типу захист необхідний, наприклад, у випадку виконання електронних торгових операцій. Справді, підслуховування замовлень дало б інформацію, яка може забезпечити вдалі торгові спекуляції. Ще більша небезпека пов’язана з можливістю внесення змін в інформацію, яку пересилають, наприклад, під час електронного обігу грошей між банками. Зазначимо, що шифрування не усуває можливості спотворення інформації шляхом внесення фізичних змін у повідомлення. Проте зміни, зроблені без знання відповідного ключа, спричинюють лише появу хаотичних текстів під час розшифрування адресатом, який використовує правильний ключ. У такий спосіб спроба шахрайства буде викритою.

1.2.2. Підписування документів

Документи можна підписувати за допомогою асиметричних алгоритмів. Абонент В публікує (наприклад, на своєму боці електронної мережі) один з пари ключів, саме той, який слугує для дешифрування (саме тому цей ключ називають публічним, або явним, ключем). Інший із пари ключів зберігається в таємниці. Цей ключ називають приватним ключем. Абонент В підписує документи, шифруючи їх за допомогою свого приватного ключа. Це можливе, оскільки:

  • за допомогою публічного ключа абонента В будь-яка особа може відтворити оригінальний текст;
  • якщо криптограма не була згенерована за допомогою приватного ключа абонента В, то дешифрування її за допомогою публічного ключа дає в результаті текст, що є хаотичною послідовністю знаків. Це гарантує, що тільки власник приватного ключа може таким способом підписувати документи абонента В;
  • так само заміна публічного ключа під час дешифрування дає текст, що є хаотичною послідовністю знаків. Завдяки цьому неможливо приписати деякий текст іншому автору.

1.2.3. Захист таємниці електронної пошти

Пересилання електронної пошти  пов’язано з багатьма небезпеками. Хтось, хто має контроль над вузлом Інтернету, може видозмінити лист або переслати його комусь іншому. Щоб запобігти подібного роду видозмінам можна використати наступний сценарій.

Припустимо, що абонент В має пару ключів для асиметричного шифруючого алгоритму. Коли абонент А хоче послати лист до абонента В, то реалізується наступний протокол.

  • Абонент А бере публічний ключ абонента В.
  • Абонент А шифрує текст свого листа до абонента В за допомогою його публічного ключа й посилає зашифрований лист електронною поштою.
  • Абонент В дешифрує отриманий лист за допомогою свого приватного ключа й отримує в такий спосіб оригінальний текст.

Наведений протокол гарантує, що тільки абонент В може дешифрувати призначені йому листи.

1.2.4. Електронний нотаріус

До нотаріуса звертаємось у  двох важливих ситуаціях:

  • коли хочемо офіційно підтвердити існування документа без розголошення його змісту;
  • коли хочемо гарантувати, щоб у певному документі, наприклад у торговій угоді, недобросовісний партнер не зробив змін.

В обох випадках вистачає чогось подібного  до відбитків пальців – короткої послідовності символів, яка практично для кожного тексту є іншою.

Для отримання „відбитків пальців” використовуємо так звані однонапрямлені хешувальні (вкорочувальні) функції. Кажемо, що H є однонапрямленою хешувальною функцією, якщо виконуються такі умови:

  1. для кожного тексту X легко обчислити H(X);
  2. H(X) має однакову довжину для всіх текстів X (тому довжина H(X) не дає жодної інформації про текст X);
  3. практично неможливо для заданого Y знайти таке X, що H(X) = Y.

З наведених умов випливає, що послідовність H(X) повинна бути досить довгою для того, щоб унеможливити систематичний пошук. Коли значення хешувальної функції складається з 128 біт, то маємо 2128 можливих варіантів.

З метою „нотаріального” підтвердження  власності на документ X необхідно обчислити значення функції H(X) i опублікувати або розмістити його в нотаріуса. У цьому разі роль нотаріуса може відігравати спеціальна мережева програма. Пізніше, коли треба довести власність на документ X, достатньо подати X i зазначити місце, де раніше помістили значення H(X). Підтвердження полягає в обчисленні значення H(X) для поданого тексту X i порівнянні його із попередньо опублікованим або депонованим у нотаріуса.

Зазначимо, що описаний метод міг  би, наприклад, забезпечити просте засвідчення  автентичності комп’ютерних програм.

1.3. Історія криптографії

Історія криптографії пов’язана з  великою кількістю дипломатичних  та військових таємниць і тому оповита  туманом легенд. Свій слід в історії  криптографії залишило багато відомих  історичних осіб. Найповніша книга  з історії криптографії містить понад тисячу сторінок. Вона опублікована 1967 р. і українською мовою не перекладена (Kahn David. The Story of Secret Writing. New York: Macmillan, 1967).

Перші відомості про використання шифрів у військовій справі пов’язані  з іменем спартанського полководця Лісандра (шифр скитала). Такий шифр використовували спартанці для військових повідомлень під час війни Спарти проти Афін у V ст. до н. е. Скиталою називали дерев’яний валик, на який щільно намотували стрічку пергаменту або шкіри. Повідомлення писали рядками вздовж поверхні валика так, щоб у рядку на один виток стрічки припадала тільки одна буква. Стрічка, знята з валика, містила незрозумілу послідовність літер. Її можна було прочитати, лише намотавши стрічку на валик такого самого діаметра. Тобто в цьому випадку ключем до прочитання повідомлення був діаметр валика.

Зазначимо, що шифр скитала, як і шифр частоколу, полягає в перетворенні відкритого тексту в зашифрований шляхом певного переставляння букв відкритого тексту. Тому ці шифри можна класифікувати як шифри перестановки. Інший розглянутий вище шифр - шифр Цезаря, - класифікують як шифр заміни.

Криптоаналіз уперше застосували  арабські дослідники. Опис частотного аналізу є в їхніх писемних джерелах початку XV ст.

На початку XVI ст. був запропонований шифр Play-fair (чесна гра; або в іншій модифікації - шифр чотирьох квадратів). Відомий математик Кардано, автор формули для розв’язування кубічного рівняння, запропонував один із варіантів шифру перестановки. Гомоморфний шифр заміни запропоновано видатним німецьким математиком Карлом Фрідріхом Гауссом.

Французький криптограф XVI ст. Блез де Віженер запропонував шифр заміни, який кілька століть уважали надійним. Як одиниці явного тексту він вибрав блоки, складені з k літер. Потім пересував кожний блок на певне „кодове слово” довжини k. Лише в 60-х роках XIX ст. офіцер пруського війська Касискі виявив, що цей шифр можна частотно аналізувати.

У роки першої світової війни з’явились  подрібнювальні шифри, чи не найвідомішим з яких є шифр ADGVX, що його використовувала німецька армія. Шифр ADGVX є шифром перестановки в поєднанні з шифром підстановки. Цей, для того часу дуже складний алгоритм, розкрив французький криптоаналітик Жорж Пенвен.

У 1917 р. інженери Г. Вернам та М.Моборн із фірми AT&T винайшли шифр одноразового блокнота для застосування в телетайпному зв’язку. Цей шифр можна вважати узагальненням шифру Віженера на випадок, коли довжина ключа збігається з довжиною тексту. Шифр одноразового блокнота абсолютно надійний, і лише деякі обставини звужують сферу його застосування. Зокрема, застосування цього шифру передбачає використання безпечного каналу зв’язку для обміну довгими ключами шифрування. Назва шифру походить від того, що агент, який виконував шифрування вручну, отримував копії своїх ключів, записані на окремих сторінках блокнота. Як тільки ключ використано, сторінку з ним відразу ж знищували. Саме шифр одноразового блокнота застосовували для захисту від підслуховування гарячої лінії зв’язку, встановленої під час холодної війни між Вашингтоном і Москвою.

Попередником сучасних шифрувальних пристроїв була роторна машина, винайдена 1917 р. Едвардом Хепберном з Окленда, Каліфорнія. На цих машинах ґрунтувалась уся військова криптографія упродовж майже 50 років. Базовими елементами роторної машини є сам ротор та механічне колесо, що слугує для виконання операції підстановки.

У початковому варіанті роторна  машина мала клавіатуру та чотири колеса, що оберталися на одній осі. На кожному  колесі з лівого й правого боку було по 25 електричних контактних майданчиків, що відповідали 25 символам латинської абетки (літери I та J ототожнені). Контактні майданчики лівого й правого боку були в певному порядку попарно з’єднані всередині колеса 25 комутаційними провідниками. Наприклад, ротор могли використовувати для заміни А на L, B на U, С на Z і так далі. У процесі руху колеса складалися разом, і їхні контакти, доторкаючись один до одного, забезпечували проходження електричних імпульсів через усі чотири колеса. Наприклад, у чотирироторній машині перший ротор міг замінювати А на L, другий - L на V, третій - V на D і четвертий - D на S. Літера S була остаточним символом шифротексту (рис.1.4).

 

 

 

Рис. 1.4. Структура роторної шифрувальної машини.

 

 

Перед початком роботи колеса встановлювали так, щоб отримати певне слово – ключ шифрування. Далі під час шифрування чергового символу колеса обертались так, як у лічильнику електроенергії.

Отже, для дешифрування повідомлення треба було знати внутрішні з’єднання  в кожному колесі (статична ключова інформація) і ключ шифрування (динамічна ключова інформація). Конструкція роторної машини виявилась дуже вдалою в сенсі стійкості до криптоаналізу вручну. Знаючи внутрішні з’єднання в колесах, для зламування шифру необхідно перебрати 25= 390 625 можливих варіантів з метою відтворення ключа шифрування, а коли ще й внутрішні з’єднання невідомі, то 25≈ 1,5∙1011 варіантів.

Надалі шифрувальні роторні  машини розвивалися в напрямі  збільшення кількості коліс та розширення використовуваного алфавіту. Шифрування на базі роторних машин реалізувало багаторазову композицію шифрів Віженера.

Найвдалішим роторним пристроєм була машина Енігма (Enigma). Енігму застосовувала  німецька армія під час другої світової війни. Німці значно вдосконалили базовий проект, використовуючи три ротори, які можна було вибрати з п’яти можливих, комутатор, що незначно перемішував відкритий текст, і відбивний ротор, завдяки якому кожний окремий ротор повинен був опрацьовувати відкритий текст кожного повідомлення двічі.

Незважаючи на складність Енігми, алгоритм, який вона реалізовувала, був розкритий під час війни. Група польських криптографів зламала шифр німецької Енігми й пояснила розкритий алгоритм англійцям. У ході війни німці модифікували Енігму, а англійці продовжували криптоаналіз нових версій. Перша електронно-обчислювальна машина сконструйована за участю видатного англійського математика Алана Тюрінга саме з метою зламування шифру машини Енігма.

Сучасна криптографія