MathType

четвъртък, 27 август 2015 г.

Емулатор на немска шифровъчна машина Енигма

Част I. Принцип на работа на Енигма машина

Настоящата статия е разделена в няколко публикации на блога:
Част I. Принцип на работа на Енигма машина
Част II. Детайли за роторите и математически модел на машината
Част III. Програмният код
Последна редакция: 01.09.2015

Енигма е шифровъчна машина, използвана от Германия по времето на Втората световна война. Шифърът, който тя опосредства, представлява полибуквен заместващ шифър. Като заместващ шифър, той замества буква по буква буквите на оригиналния текст с други, за да го превърне в шифриран текст (шифротекст).

Енигма е резултат на дълга еволюция в проектирането на такива шифри. Така например шифри, базирани на заместване, датират чак от времето на Римската империя. Повечето от тях обаче, заместват една буква в нешифрирания текст с една и съща друга буква, за да получат шифрирания текст. Например А винаги се замества с M, B винаги се замества с P и т.н. Този недостатък на заместващите шифри позволява елементарното им дешифриране - факт, който е известен поне от началото на Ренесанса. Енигма преодолява този критичен недостатък като извършва полибуквено заместване - една буква от нешифрирания текст се замества с различна буква всеки път, когато тя бъде срещната в оригиналния текст. Така например при първото срещане на буквата А в нешифрирания текст, тя може да заменена с Q, но при второто срещане на същата буква, тя може да бъде заменена с например L и т.н. Това подобрение изключително усложнява криптоанализа на шифъра.

Енигма машината /фиг. 1/ работи на електро-механичен принцип и е се състои от клавиатура, 3 до 8 на брой роторни колела, рефлектор, комутационен панел и табло с лампи.

Фиг. 1. Енигма машина. 1 - роторни колела /покрити от капак,
част от корпуса на машината/; 2 - табло с лампи;
3 - клавиатура; 4 - комутационен панел, закрит от
капак на дървения корпус на машината.
Оригинално изображение: RadioFan

Роторните колела /фиг. 2, 3/ са най-важните компоненти на машината. От едната страна, роторното колело има 26 електрически контакта с пинчета на пружина. От другата страна, колелото има 26 контактни точки, с които контактуват пинчетата на следващото колело.

Фиг. 2. Роторни колела на Енигма машина.
Оригинално изображение: The Science Museum

Фиг. 3. Роторни колела на Енигма машина. Пиновете са ясно видни на лявото колело, а контактните точки са виждат на дясното колело.
Оригинално изображение: TedColes

Роторните колела съдържат проводници, които свързват всеки пин от едната страна на колелото с точно една контактна точка от другата страна на колелото /фиг. 4/

Фиг. 4. Сглобеното роторно колело /ляво/ и основните му части. Стрелката показва проводниците, които свързват пиновете с контактните точки.
Оригинално изображение: Jerry Proc

Проводниците са кръстосани, тоест пинът от едната страна не задължително (даже на практика много рядко) е свързан точно със съответстващата му от другата страна контактна точка.

Роторите на Енгима машината (обикновено 3 или 4, според варианта на машината) се поставят на шпиндел между две крайни неподвижни колела. Едното от тях е неподвижно и несменяемо и е свързано с клавиатурата. То се нарича входно колело. Колелото в другия край се нарича рефлектор. То е неподвижно, но сменяемо, като неговото значение е свързано с възможността машината да бъде използвана за шифриране и дешифриране с едни и същи настройки.

Фиг. 5. Роторни колела на техния шпиндел
Оригинално изображение: Wikipedia

Всяка буква от клавиатурата е свързана с една от контактните точки на входното колело. При натискате на клавиш, електрически ток протича през веригата, формирана от роторите и активира дадена от 26-те лампи на таблото, всяка от която отговаря на една буква. Тъй като роторите разместват електрическите пътища, те извършват на практика заместващ шифър, който замества набраната от клавиатурата буква с друга.

Всеки ротор може да се завърта ръчно от оператора на една от 26-те възможни позици. Тези позиции са обозначени обикновено с буквите от латинската азбука - от A до Z. Обозначаването се осъществява от специален пръстен, който се монтира върпу ротора и има изписани буквите, отговарящи на позициите.

Всяка от позициите на ротора на практика представлява една различна пермутация на буквите от А до Z. Резултатът от преминаването на електрическия ток, представляващ дадена буква, през трите ротора на машината може да се разглежда като композиция на трите пермутации, отговарящи на позициите на трите ротора.

Тъй като композицията на пермутации е отново пермутация, трите ротора, стоейки неподвиждно, извършват прост заместващ шифър. Така например буквата А в оригиналния нешифриран текст винаги ще се замества с една и съща буква в шифрирания текст. Тя ще се определя от пермутацията, избрана от позициите на роторите. Такъв шифър в никакъв случай не би бил сиурен и би се поддал на най-елементарни техники за криптоанализ, каквато е например честотния анализ.

Същественият елемент, който гарантира много по-високата сигурност на машината, е че преди натискането на всеки клавиш, роторите се завъртат автоматично, благодарение на специален механизъм. Подобно на километража на кола, преди всяко натискане на клавиш, най-десният ротор се придвижва с една позиция напред (позиция A става позиция B, позиция B става позиция C) и така нататък. Когато най-десният ротор се "превърти", средният ротор превърта с позиция напред и т.н.

Със смяната на позицията на роторите, електрическият път през тях се променя, тоест към всяка следваща буква от входния текст се прилага различна пермутация, което позволява заместването да стане полибуквено.

Преминаването на електрическите сигнали през роторите е всъщност малко по-сложно. След като преминат през входното колело и трите ротора, те попадат в специално неподвижно колело - т.нар. рефлектор. Рефлекторът има контактни пинове, но не се върти. Той кръстосва всички електрически връзки по двойки според някаква фиксирана схема. Резултат от това кръстосване е, че електрическият сигнал се връща отново по друг електрически път през трите ротора, за да излезе в крайна сметка от входното колело. (Входното колело е доста неправилно наименование за този компонент на машината, тъй като той се явява както входящ, така и изходящ за електрическите пътища в роторната сглобка). /Фиг. 6/

Фиг. 6. Енигма машина с премахнати роторни колела, което позволява да се види добре рефлектора /крайно ляво на изображението/.
Оригинално изображение: www.w1tp.com

Благодарение на рефлектора, всяка пермутация, избрана от текущите настройки на роторната сглобка, включително позициите на въртящите се ротори, е обратна сама на себе си. Следователно, ако настройките на шифриращата и дешифриращата машина са еднакви, при набиране на нешифрирания текст машините ще произвеждат шифрирания текст и обратно при набиране на шифрирания текст, машините ще произведат нешифрираните текстове. Тоест, наличието на рефлектор позволява машините да използват едни и същи ротори и настройки при шифриране и дешифриране, което значително опростява работата с машината.

Така например, ако дадени фиксирани позиции на роторите превръщат А в F преди влизането на електрическия сигнал в рефлектора, рефлекторът превръща F в S, а S при връщането през роторите се превръща в Р, крайният резултат ще бъде превръщането на А в P.

При същите настройки на роторите, те ще превърнат P на входа началното колело в S при входа на рефлектора, който ще превърне S в F. При повторното преминаване през роторите, F ще се превърне в А /Фиг. 7/

Фиг. 7. Диаграма, илюстрираща функцията на рефлектора

Военните версии на Енигма машините имат допълнителен компонент, който значително увеличава възможните начални състояния на конфигурацията на машината. Този компонент е електрически комутационен панел. Комутационният панел се състои от 26 щекерни гнезда, етикирани с буквите от азбуката. Електрическите пътища от клавиатурата преминават през комутационния панел преди да стигнат до входното колело. При излизане от входното колело, електрическите пътища минават отново през комутационния панел преди да стигнат до таблото с лампите на машината.

Комутационното табло, точно като рефлектора, позволява разместване на буквите по двойки. За целта се използват кабели с щекери, които свързват две гнезда. Свързването на две гнезда ефективно кръстосва електрическите пътища. Така например свързването на щекерното гнездо А с щекерното гнездо D ще кръстоса пътищата така, че когато се натисне клавиш А от клавиатурата, към роторната сглобка ще бъде "изпратено" D. Обратно, ако от роторната сглобка "излезe" D, то ще бъде светната лампата, която отговая на A. Щекерно гнездо, което няма подкачен кабел затваря директно веригата, което води до изпращането на същата буква, която е набрана от клавиатурата, към ротора.

Фиг. 8. Eлектрическа схема на Енигма машина.
Оригинално изображение: Matt Crypto

Фиг 8. илюстрира пътя на електрическия ток през комутационното табло при натискане на клавиша А. Всички клавиши са ключове с две затворени позиции. В горна позиция, клавишите осъществяват контакт на таблото с лампите с комутационното табло. В долна позиция /натиснат клавиш/, ключът свързва батерията с комутационното табло, предизвиквайки протичането на ток през него към роторната сглобка.

В ситуацията, илюстрирана на фиг. 8, натискането на клавиша А свързва батерията с гнездо А на комутационното табло. То няма щекер, следователно затваря веригата към позиция А на входното колело. Роторите и рефлекторите извършват заместването, резултат от което е ток на позиция S на входното колело, което е свързано с гнездо S на комутационното табло. Това гнездо има щекер, което прекъсва директната връзка към клавиша S и лампа S, като вместо това насочва електрическия ток към гнездо D, което е свързано с клавиш D. Клавиш D е в горна позиция, което значи че свързва гнездо D с лампа D, която светва.

Последният важен детайл, от гледна точка на емулирането на машината, е свързан с механизма за автоматизираното въртене на роторите. Този механизъм е реализиран с помощтта на три палеца, които се движат едновременно и заедно в движение, което се инициира при натискане на клавиш на клавиатурата. Всеки палец е проектиран да се зацепва в зъбчатото колело на един ротор и при движение на палеца, да избутва ротора напред с една позиция. Зъбчатките на роторите са най-дясната част на всеки ротор. Палците обаче са поставени точно на снадката между два ротора. Всеки от тях, с изключение на най-десния, застъпва зъбчатката на своя ротор, но и металния пръстен, който е най лявата част от предния ротор. Този метален пръстен е с диаметър, по голям от зъбчатката и на практика пречи на палеца да се зацепи в своя ротор, отклонявайки го нагоре в встрани, когато палците започнат постъпателно движение.

Металният пръстен на всеки ротор има поне една вдлъбнатина. Ролята на тази вдлъбнатина е да контролира кога палецът може да превърти следващия по ред ротор. /Фиг. 9/ Когато най-десният ротор се превърти и вдлъбнатината му застане срещу палеца, палецът е свободен да се зацепи в зъбчатката на следващия ротор и да го избута една позиция напред. По този начин, когато палците се задвижат, най-десният ротор винаги се придвижва с една позиция, тъй като срещу неговия палец няма метален пръстен на по-десен от него ротор, който да предотвратява зацепването. Едва когато десният ротор се превърти и вдлъбнатината в неговия пръстен се изравни с зъба на палеца, следващият ротор се придвижва с една позиция напред. Превъртането на следващите ротори работи по аналогичен начин.

По-късните версии на Енигма машините, които са използвани най-масово във Втората световна война, имат ротори, които имат повече от една вдлъбнатина. По този начин роторите се движат по различен ред от "естествената" последователност /ААА, ААB, ААС ... AAZ, ABA, ABB .... ZZZ/.

Фиг. 9. Роторни колела на Енигма машина с отбелязани: 1 - зъбчатка; 2 - метален пръстен; 3 - вдлъбнатина в металния пръстен
Оригинално изображение: Matt Crypto

В заключение е подходящо да се отбележи, че хитроумният и елегантен дизайн на Енигма е оценен по достойнство от всички държави - участнички във Втората световна война. Повечето от тях са имали достъп до Енигма машини преди /цивилните версии на машината/ или след войната и са разработили свои варианти, много от които са внимателно проектирани да избягват недостатъците на техния първообраз.

Приключваме тази част със снимки на съветската шифрираща машина M-125 (Фиалка), която е завършекът на еволюцията на тези машини. Първите /по-елементарни/ версии на машината са внедвени около 1956 година, докато последните версии датират от началото на 80-те години на миналия век. С изместването им от компютърната техника, те вече принадлежат на историята.

Фиг. 10. Съветска роторна шифрираща машина Фиалка (M-125) от времето на Студената война. Разсекретена около 2005.
Оригинално изображение: Glenn's Computer Museum