Енигма (машина)

Енѝгма (на немски: Enigma; от гръцки: αίνιγμα [енигма] – загадка) е тип преносима шифровъчна машина, използвана за шифриране и дешифриране на секретни съобщения през 1920-те години.
Енигма е използвана от началото на 1920-те години за търговски цели, както и във военните и държавни служби и учреждения на много страни, но най-широко разпространение получава в Националсоциалистическа Германия по време на Втората световна война. Затова под „Енигма“ най-често се разбира немският военен модел Енигма на Вермахта (Wehrmacht Enigma).
За изобретател на Енигма се счита германският електроинженер д-р Артур Шербиус (1878 – 1929), който на 23 февруари 1918 г. получава първи патент за шифровата машина. За производството на машината на 9 юли 1923 г. в Берлин се създава Акционерно дружество „Шифрови машини“ (Chiffriermaschinen – Aktiengesellschaft) с адрес Берлин, W.35 Steglitzer, str. 2. Първоначално Енигма е замислена като гражданска криптографска система, която да се продава свободно. Така например през 1923 г. е свободно предлагана за продажба на Международния пощенски конгрес в Берн. В края на 20-те години на ХХ век обаче военните институции проявяват засилен интерес към изобретението, така че машината скоро изчезва от цивилния пазар. Точно в началото на възхода на едва кретащото дотогава предприятие на Шербиус обаче, собственикът загива при нещастен случай. Фирмата на Шербиус е наследена през 1934 г. от Рудолф Хаймсьот и Елзбет Ринке. Двамата преустройват старата фирма на Шербиус и започват производството на Енигма в предприятието с ново име „Heimsoeth & Rinke“ в Берлин. Точно по това време в Германия изгрява националсоциализмът. На нарастващата военна мощ на Райха ѝ е необходима сериозна криптографска система, така че нищо вече не стои на пътя на възхода на Енигма.
Различните специалисти сочат различен брой произведени по време на Втората световна война машини: между 30 000 и 200 000 бройки. До края на войната се сменят различни модели и варианти на Енигма. Най-използваният обаче е т.нар. Енигма-I („Енигма едно“), който от 1930 г. е на въоръжение в Райхсвера, а по-късно и във Вермахта.
Тази машина става по-късно известна с това, че още преди войната криптоаналитиците от Антихитлеристката коалиция успяват да разшифроват много съобщения, шифрирани на нея. Заслугата е на полските криптографи Мариан Рейевски, Йежи Рожицки и Хенрик Зигалски от полското Шифрово бюро (на полски: Biuro Szyfrów), които разбиват кода през 1932 г. През юли 1939 г. Полша споделя с Великобритания и Франция разработените дешифровъчни методи и им предоставя реконструкции на машината. Така за британското военно разузнаване става възможно да добива информация чрез дубликат на Енигма, разработен в Блечли Парк и наричан УЛТРА (ULTRA). УЛТРА е използвана за декодиране на съобщения, кодирани с по-късната версия на Енигма, на базата на шифровъчна книга, спасена от потопена немска подводница. Към края на Втората световна война в отговор на подобренията направени от немска страна върху Енигма, във Великобритания бива разработена една от първите електронни изчислителни машини – КОЛОС (Colossus). Различните военни специалисти оценяват по различен начин приноса на УЛТРА и КОЛОС за ускоряването на победата на Съюзниците, но някои считат, че разшифроването на немските криптограми е съкратило продължителността на войната с две години.
Въпреки че шифърът на Енигма е слаб от криптографска гледна точка, той е труден за разбиване и на практика разчитането на шифрограмите става възможно само вследствие на съчетаването на няколко фактора като операторски грешки, процедурни недостатъци и трофейни машини Енигма и шифровъчни книги.
Буквата A се шифрира различно при последователното натискане на един и същ клавиш първо като G, а след това като C. Сигналът преминава по друга електрическа верига заради завъртането на ротора.
Машината Енигма-I тежи около 10 kg и е с размери 310 mm x 255 mm x 130 mm. На пръв поглед прилича на пишеща машина. Както и другите роторни машини, Енигма се състои от комбинация от механически и електрически системи. Механичната част включва клавиатура, набор от въртящи се дискове (ротори), които са разположени около вала и са долепени до него и степенчат механизъм, задвижващ един или повече ротора при всяко натискане на клавиш. Конкретният начин на работа може да е различен, но общият принцип е един и същ: при всяко натискане на клавиш най-десният ротор се измества с една позиция, а при определени условия се изместват и другите ротори. Движението на роторите води до различни криптографски преобразувания (самото шифриране) при всяко следващо натискане на клавиш на клавиатурата.
Механичните части се движат, образувайки променяща се електрическа верига, тоест фактически шифрирането на буквите се осъществява електрически. При натискането на клавиш веригата се затваря, токът преминава през различните компоненти и накрая включва една от множеството лампички, изобразяваща буквата, която ще излезе на изхода. Например, при шифроване на съобщение, започващо с ANX..., операторът първо натиска клавиш A и светвала лампичка Z, тоест Z ставала първата буква на криптограмата. Операторът продължавал шифрирането с буквата N по същия начин и т.н.
За обяснение на принципа на работа на Енигма вижте диаграмата вдясно. Диаграмата е опростена, като са показани само 4 компонента – на практика механизмът се състои от 26 лампички, клавиши, ключове и електрически схеми вътре в роторите. Токът преминава от батерията (1) през превключвателя (2) в комутационния панел (3). Комутационният панел позволява сигналът да премине от клавиатурата (2) до неподвижното входно колело (4). По-нататък токът преминава през щекер (3), в конкретния пример неизползван, входното колело (4) и схемата на съединение на три (в армейския модел) или четири (във военноморския модел) ротора (5), от където влиза в рефлектора (6). Рефлекторът връща тока обратно по друг път през роторите (5) и входното колело (4), после през щекер 'S', съединен чрез кабел (8) с щекер 'D', през друг двупосочен превключвател (9), като захранва лампичката..
Така постоянното изменение на електрическата верига, през която преминава електричеството позволява да се постигне многобуквен шифър, който е сравнително високоустойчив за времето си. Ако операторът изпише „OTTO“, то последователно ще се засветят примерно лампите „PQWS“. Важно в криптографско отношение е, че заради завъртането на роторите една и съща буква се кодира по различен начин.
Роторите са сърцето на Енигма. Всеки ротор представлява диск с диаметър около 10 cm, изработен от твърда гума или бакелит, с пружинни контактори от едната страна на ротора, разположени в кръг. От другата страна има съответното количество плоски електрически контакти. Всяка двойка съответства на буква от азбуката, обикновено 26-те букви от A до Z. При допир контактите на съседни ротори затварят електрическа верига. Вътре в ротора всеки контактор е съединен с друг от плоските контакти. Редът на съединяване може да е произволен.
Роторът сам по себе си извършва най-простия тип шифриране – замяна на една буква с друга. Например контактът, отговарящ за буквата Е, може да е свързан с контакта на буквата Т от другата страна на ротора и тогава всички букви „Е“ в шифрирания текст биха били заменени с „Т“. Но при използването на няколко взаимосвързани ротора (обикновено три или четири), при тяхното въртене се получава наистина надеждно шифриране.
Роторът може да заема една от 26 възможни позиции в машината. Той може да бъде завъртян до друга позиция ръчно посредством назъбения роторен палец, който се подава навън, както се вижда на Снимката. За да може операторът винаги да определя положението на ротора, на венеца на всеки от тях в кръг са изписани буквите от азбуката и само една от тях се вижда през прозорчето. В първите модели Енигма азбучното колело било фиксирано, а в по-късните версии конструкцията била усложнена и то можело да се регулира. Всеки ротор имал една или няколко зъба, използвани за управление на движението на роторите. Във военните версии зъбите били разположени на азбучното колело.
Военните модели Енигма се произвеждали с различен брой ротори. Първият модел имал едва три, от 15 декември 1938 г. те станали пет, но само три от тях се използвали едновременно в машината. Тези ротори били маркирани с римските числа от I до V, и всеки от тях имал по един зъбец, разположен на различни места в азбучното колело. Военноморските модели винаги имали повече ротори, отколкото другите – по шест, седем или дори осем. Тези допълнителни ротори били маркирани с числата VI, VII и VIII, като всеки от тях имал различни електропроводници. Имали по два зъбеца около буквите 'N' и 'A', поради което се завъртали по-често.
Четирироторният военноморски модел Енигма-M4 имал един допълнителен ротор, въпреки че бил с размерите на трироторен. Това се постигало с по-тънък рефлектор. Имало два типа допълнителен ротор – Бета и Гама. Те не се движели в процеса на шифриране, но можели да бъдат преместени ръчно на която и да е от 26 различни позиции.
Всеки ротор бил прикрепен към зъбно колело с 26 зъба (зъбен запиращ механизъм), а групата езичета се зацепвала в зъбите на това колело. Езичетата се измествали напред едновременно с натискането на клавиш на машината. Ако езичето зацепвало зъб на запиращия механизъм, роторът се завъртал с една стъпка.
В армейския модел на Енигма всеки ротор бил прикрепен към регулируемо колело със зъбци. Петте базови ротора (I-V) имали по един зъбец, докато военноморският модел (VI-VIII) имал по два. В даден момент зъбецът попадал срещу езичето, позволявайки му да се зацепи за зъбния запиращ механизъм на следващия ротор при последващото натискане на клавиш. Когато обаче езичето не попадало в зъбец, то просто се плъзгало по повърхността на колелото, без да се зацепва за механизма. В система с един зъбец вторият ротор се измествал напред с една позиция за същото време, за което първият се измествал с 26 позиции. Аналогично третият се премествал с една позиция за времето, за което втория правел 26 стъпки. Специфична особеност на машината била, че вторият ротор също се местел, ако се премествал третия. Това означава, че втория ротор може да се премести два пъти при две последователни натискания на клавиши – така нареченото „двустъпково движение“, което водело до намаляване на периода.
Двустъпковото движение различава работата на роторите от тази на обикновения километражен брояч. Двойната стъпка действала по следния начин: първият ротор се завъртал, карайки втория също да направи една стъпка. И ако втория попаднел в необходимата позиция, третото езиче се зацепвало в третия запиращ зъбен механизъм. На следващата стъпка това езиче бутало запъващия механизъм и го премествало, премествайки същевременно и третия ротор.
С три диска, имащи само по един зъбец на първия и втория диск, машината имала период на повторение 26 × 25 × 26 = 16 900 символа. Като правило, изпращаните съобщения били по-къси от неколкостотин символа, поради което нямало риск да се повтори една и съща позиция на роторите при едно и също съобщение.
В четирироторните военноморски модели нямало изменения в механизма. Четвъртият ротор не се въртял, но можел да бъде сложен ръчно на която и да е от наличните 26 позиции.
Входното колело (на немски Eintrittswalze), или входният статор, съединявало комутационния панел или клавиатурата и ламповия панел с роторите. Въпреки че фиксираното свързване на проводниците имало сравнително малка роля в осигуряването на сигурността на криптограмите, то точно този елемент се оказал значително препятствие в работата на полския криптоаналитик Мариан Рейевски.
В търговския модел на Енигма буквите били свързани в порядъка, в който следвали на клавиатурата: Q → {\displaystyle \rightarrow } A, W → {\displaystyle \rightarrow } B, E → {\displaystyle \rightarrow } C и така нататък. При военния модел обаче, те били свързани в азбучен ред: A → {\displaystyle \rightarrow } A, B → {\displaystyle \rightarrow } B, C → {\displaystyle \rightarrow } C и т.н.
Само интуицията позволила на Рейевски да промени разчетите и да реши уравнението.
С изключение на ранните модели A и B, след последния ротор бил разположен рефлекторът (на немски Umkehrwalze, съкратено UKW), патентован детайл, отличаващ машините Енигма от другите роторни машини, разработени по това време. Рефлекторът съединявал контактите на последния ротор по чифтове, комутирайки ток през роторите в обратно направление, но по друг маршрут. Наличието на рефлектор гарантирало, че преобразованието, което извършва Енигма е инволюция, т.е. дешифрирането е същото, което е и шифрирането. Наличието на рефлектора обаче правело невъзможно която и да е буква да бъде шифрирана чрез самата себе си. Това бил сериозен концептуален недостатък, който по-късно малко облекчил работата на дешифровчиците.
В търговския модел на Енигма-C рефлекторът можел да бъде поставян в две различни позиции, а в модел D – в 26 възможни позиции, но в самия процес на шифриране бил неподвижен. В модела, използван от Абвера, рефлекторът се движел по време на шифриране, както и останалите дискове.
В армейския и военновъздушния модели на Енигма рефлекторът бил фиксиран и не можел да се върти. Имало четири разновидности. Оригиналната версия била белязана с A и била заменена с Umkehrwalze B на 1 ноември 1937 г. Третата, Umkehrwalze C била използвана за кратко през 1940 г., вероятно поради проблеми. Четвъртата, Umkehrwalze D, появила се на 2 януари 1944 г., позволявала на оператора на Енигма да управлява настройките на комутация вътре в рефлектора.
Таблицата показва строго секретната (тогава) схема на завъртане на роторите на Енигма-I. Дадени са петте ротора от I до V и двата рефлектора B и C:
Комутационният панел (на немски Steckerbrett) позволява на оператора да променя свързването на проводниците. За първи път се появява в немските армейски версии през 1930 г. и скоро успешно е приложен и във военноморските версии. Комутационният панел има огромен принос за усложняването на шифроването на машината. Според експерти-криптографи, усложняването е дори по-сериозно, отколкото с въвеждането на допълнителен ротор. С Енигма, без комутационен панел, криптоанализаторът би се справил на практика ръчно, но след добавянето на панела, това можело да стане само с конструирането на специални машини.
Кабелът, разположен на комутационния панел, свързвал буквите две по две – например E и Q. Ефектът бил в размяната на тези букви преди и след преминаването на сигнала през ротора. Например, когато операторът натискал E, сигналът се отправял в Q и едва след това във входния ротор. Същевременно можело да се ползват няколко такива чифта (до 13).
Всяка буква на комутационния панел имала две гнезда. Включването на щепсела разделяло горното гнездо от клавиатурата и долното гнездо (към входния ротор) на тази буква. Щепселът на другия край на кабела се слагал в гнездото на друга буква, като по този начин ги превключвал една към друга.
Преобразуването на всяка буква от Енигма може да бъде определено математически като резултат от пермутация. Да разгледаме трироторния армейски модел. Нека с P обозначим комутационния панел, с U – отражателя, а L, М, R да обозначават съответно действията на левия, средния и десния ротори. Тогава шифрирането с Енигма – Е може да бъде изразено като
След всяко натискане на клавиш, роторът се движи, водейки до трансформация. Например, ако десният ротор R {\displaystyle R} се завърти на i {\displaystyle i} позиции, се получава трансформация ρ i R ρ − i {\displaystyle \rho ^{i}R\rho ^{-i}} , където ρ {\displaystyle \rho } е циклична пермутация, преминаваща от A към B, от B към C и така нататък. Аналогично средният и левият ротор могат да са обозначит с j {\displaystyle j} и k {\displaystyle k} завъртания на M {\displaystyle M} и L {\displaystyle L} . Функцията на шифриране в този случай може да се изрази по следния начин:
В германските въоръжени сили средствата за свръзка били разделени в отделни мрежи, като всяка от тях имала собствени настройки за кодиране за машините Енигма. В английския център за дешифриране Блечли Парк (Bletchley Park) тези комуникационни мрежи се наричали ключове (keys) и им били давани кодови имена като Red, Chaffinch или Shark. На всяка единица, работеща в мрежата за определен период от време важали определени настройки, които след това трябвало да бъдат променяни. За да бъдело съобщението правилно шифрирано и дешифрирано, машините на изпращащия и приемащия трябвало да бъдат настроени еднакво. Идентични трябвало да бъдат: изборът на ротори, началните позиции на роторите и връзките в комутационния панел. Тези настройки се уточнявали предварително и се записвали в специални шифрови книги.
Първоначално криптографският ключ на Енигма включвал следните параметри:
За по-късните версии, допълнителна настройка била и позицията на променящия се рефлектор.
Енигма била разработена така, че секретността да бъде опазвана дори тогава, когато на противника са известни роторните схеми, макар и самите те да били пазени в тайна. С неизвестна схема общото количество възможни конфигурации възлиза на около 10 (приблизително 380 бита), а с известна схема на връзките и другите операционни настройки този показател спада до около 10 (76 бита). Потребителите на Енигма се чувствали сигурни при нейната употреба, заради този висок брой възможности.
Повечето от ключовете се съхранявали само за ограничен период от време, обичайно за денонощие, но за всяко ново съобщение се задавали нови начални позиции на роторите. Това се налагало, защото в случай на твърде много съобщения – надхвърлящи като брой символи периода на повторение на кодовите комбинации и изпратени с идентични настройки, криптоаналитикът получавал възможност чрез използване на честотен анализ да намери шифъра на съобщенията. Подобна идея се използва в принципа „инициализиран вектор“ в съвременното шифриране. Тези начални позиции се изпращали заедно с криптограмата, преди шифрирания текст. Този принцип се нарича „индикационна процедура“. Именно слабостта на подобни индикационни процедури довела до първите успешни случаи на разбиване на кода на Енигма.
Ранните индикационни процедури били използвани от полските криптоаналитици за разбиване на кода. При тези процедури операторът настройвал машината в съответствие със списъка настройки, които съдържат главните първоначални стартови позиции на роторите. Да предположим, че главната ключова дума е AOH. Операторът завъртал роторите ръчно, докато думата AOH не се изобрази на прозорчетата. След това операторът избирал свой собствен ключ за новото съобщение. Нека този ключ е думата EIN. Тази дума се въвеждала два пъти за да се избегнат грешки при предаването. Като резултат, след двойното въвеждане на AOH в криптограмата се изобразява думата XHTLOA, която предхождала тялото на основното съобщение. И накрая, операторът отново завъртал роторите в съответствие с избрания ключ, в случая AOH, след което въвеждал основния текст на съобщението.
При получаване на това шифрирано съобщение, цялата операция се изпълнявала в обратен ред. Операторът-получател въвеждал в машината първоначалните настройки и отпечатвал първите шест букви от съобщението (в случая XHTLOA). Тогава лампичките примигвали в последователност EINEIN, тоест разбирал, че ключовата дума е EIN и че трябва да завърти роторите така, че да изобразят позиция EIN. След това отпечатвал основния текст, разшифровайки съобщението.
Този метод имал два недостатъка. Първият бил в използването на главни ключови настройки. Впоследствие това било изменено и операторът избирал собствени начални позиции и ги изпращал в незашифрован вид. Вторият проблем бил в повторяемостта на избраната от оператора-шифровчик дума-индикатор, което било съществен пробив в сигурността. Ключът на съобщението се шифровал два пъти, в резултат на което се появявало закономерно сходство между първия и четвъртия, втория и петия и третия и шестия символи. Този недостатък позволил на полските дешифровчици да разбият кода на Енигма още през 1932 г. От 1940 г. обаче немците променили процедурата, за да повишат сигурността.
По време на Втората световна война немските оператори използвали шифрова книга само за настройка на роторите и колелата. За всяко съобщение операторът избирал случайна стартова позиция, например WZA, и случаен ключ на съобщението, примерно SXT. Той завъртал роторите на стартова позиция WZA и шифровал ключа на съобщението SXT. Получавало се примерно UHL. След това операторът слагал думата SXT като начална позиция на роторите и шифровал съобщението. Изпращал стартовата позиция WZA, шифровия ключ UHL и основния текст. Получателят от своя страна слагал роторите на стартова позиция в съответствие с първата триграма WZA и разшифровал втората триграма UHL, за да получи ключа на съобщението – SXT. Този ключ бил използван за разшифроване на текста. Така всеки път главния ключ се оказвал различен и бил премахнат недостатъка, присъщ на процедурата с двойно шифроване на ключа.
„Таблицата с ключове“ представяла в табличен вид валидните за целия месец дневни ключове, които били сменяни в полунощ. По-долу е дадена примерна таблица за последните три дни от месеца по начина, по който тогава били подреждани. Обратното подреждане позволявало вече използвания ключ да бъде изрязан и унищожен.
Пример за 31-во число на месеца: Рефлектор В, позиция на роторите I IV III означава, че за рефлектор трябва да се сложи тип В, ротор I трябва да е вляво (като най-бавен), ротор IV – в средата и ротор III – вдясно (като най-бърз). Пръстените трябва да се завъртят така, че да са на позиции 16, 26 и респективно 8. Това съответства на буквите P, Z и H.
Позициите на пръстените често (както в примера) били задавани с цифри, а не с букви, за да се избегне объркването с други части на ключа. Затова за улеснение на оператора във вътрешната част на сандъчето на Енигма имало табелка, припомняща реда на буквите:
Армейската версия на Енигма използвала само 26 букви. Другите символи се заменяли с редки комбинации от букви. Интервалът се пропускал или се заменял с Х. Символът „Х“ най-често се използвал за точка или за край на съобщението. В отделните подразделения се използвали специални символи. В шифрованите съобщения на армията запетайката се заменяла с ZZ, а въпросителния знак с FRAGE или FRAQ. В шифровките, използвани от военноморските сили, запетаята се заменяла с Y, а въпросителния знак – с комбинацията UD. Комбинацията от символи CH, например в думите „ACHT“ (осем), „RICHTUNG“ (направление), се заменяла със символа Q („AQT“, „RIQTUNG“). Две, три или четири нули се заменяли съответно с думите „CENTA“, „MILLE“ и „MYRIA“.
Вермахта (армията) и Луфтвафе (ВВС) изпращали съобщенията си в групи от по пет символа. Военноморските сили, използващи четирироторни машини, изпращали съобщенията си в групи от по четири символа. Често употребяваните думи и имена се изменяли по най-различни начини. Например, думата „Minensuchboot“ (минотърсач) можело да бъде изписана като „MINENSUCHBOOT“, „MINBOOT“, „MMMBOOT“ или „MMM354“. За да се затрудни криптоанализа, отделните съобщения не съдържали повече от 250 символа. По-дългите текстове били разделяни на части и за всяка част се използвал отделен ключ. За повече подробности виж английските преводи на Тони Сейл – „General Procedure“ и „Officer and Staff procedure“.
По-долу са изброени някои от по-важните моменти от историята на Енигма