Алгоритъм на Луцифер, блог за криптиране
Стандартът за криптиране DES, приет в САЩ, се основава на алгоритъма на Луцифер, разработен в началото на 70-те години. и неговата история е достатъчно интересна и заслужава отделно разглеждане.
Луцифер често се нарича „първият алгоритъм за криптиране за гражданска употреба“ [338, 395]. Всъщност Луцифер не е един алгоритъм, а цяло семейство взаимосвързани (разработени в рамките на едноименната изследователска програма за компютърна криптография от IBM [28]), но създадени по различно време алгоритми за блоково симетрично криптиране на данни.
Нека да разгледаме на свой ред различните варианти на алгоритъма на Луцифер.
Оригиналната версия на алгоритъма Lucifer е разработена от екип от специалисти от IBM, водени от Horst Feistel. Тази версия на алгоритъма е патентована от IBM през 1971 г. (патент издаден през 1974 г.), а подробното му описание може да бъде намерено в патент на САЩ № 3798359 [144].
Този вариант на алгоритъма криптира данните в блокове от 48 бита, използвайки 48-битов ключ за криптиране.
1. Предоставяне на обратна връзка. Извършва се логическа операция „изключително или“ (XOR) между всеки бит на обработвания блок и предишната стойност на същия бит, ако същият бит на кръглия ключ има една стойност; в противен случай операцията се проваля. Предишните стойности на всеки обработен бит се съхраняват в регистъра на блока за обратна връзка. В първия кръг на алгоритъма блокът за обратна връзка не изпълнява операция XOR, а само запомня битовете на блока, които се обработват за следващия кръг.

Фигура: 3.115. Обобщена схема на вариант No1
2. Разбъркване на трансформация. Нелинейна трансформация на данните, получени в резултат на предишната операция, се извършва чрез заместване на таблица, в зависимост от стойността на определен бит на кръглия ключ. Освен това такава зависимост е съвсем проста: ако стойността на контролния бит е 1, се извършва заместване на таблица S0, в противен случай таблица Si.
Всяко хапване от данни се заменя независимо от други данни; така че таблиците заменят и 4-битовия вход с 4-битовия изход.
Трябва да се каже, че патентът [144] не дава конкретни стойности на таблици за заместване; следната таблица е показана като пример:
Това означава, че входната стойност 0 се заменя със стойността 2, стойността 1 се заменя с 5 и така нататък, докато стойността 15 се замени с 11.
3. Дисипативна трансформация, състояща се в просто пренасочване на входни битове по такъв начин, че стойностите на всички входни битове се разменят съгласно определен закон. Подобно на стойностите на таблиците за заместване, самият закон, чрез който се извършва разсейването на данни, не е описан в патента [144].
Тази операция се извършва абсолютно независимо от стойността на ключа за криптиране.
4. Наслагване на ключ. Извършено чрез побитово XOR от резултата от предишната операция и съответните битове на кръглия ключ.
Както можете да видите от горното описание, всеки кръг на криптиране изисква 108 бита ключова информация:
? 48 бита за блока за обратна връзка;
? 12 бита за разбъркващия блок;
? 48 бита за блок с припокриване.
За да получите 16 108-битови кръгли клавиша от оригиналните 48-битови
ключът за шифроване, се извършва процедурата за разширяване на ключа (фиг. 3.116):
1,48-битов ключ се зарежда в 8-битови регистри KRI ... KR6.
2. От тези регистри необходимият брой битове ключова информация се „набира“ с помощта на разширяваща се пермутация KEP. Операция KEP не извършва никакви изчисления, получаването на 108 бита ключова информация от 48 се случва чрез многократно използване на определени битове на ключовите регистри L7? 1 ... L7? 6. Пермутация на ключ KEP не е описано подробно в спецификацията на алгоритъма.