Лейтенант Димитър Бисеров Пoлк. доц д-р инж. Илиян Ангелов 02 December 2022 г гр. Велико Търново Съдържание Увод изложение



страница4/7
Дата02.12.2022
Размер348.9 Kb.
#115746
ТипИзложение
1   2   3   4   5   6   7
Бисероввввввв
Свързани:
Тренировки, бисероввввв, ссзкик, списък, Структура на военната дипломация‘‘
2.2 Мрежи на Feistel
Архитектурата на новия метод за криптиране, предложен от Feistel в класическата литература, се нарича „архитектура на Feistel“, но в момента в руската и чуждестранната литература се използва по-утвърден термин - „мрежата на Feistel“ или NetWork на Feistel. Впоследствие шифърът "Луцифер" е изграден върху тази архитектура - която по-късно е публикувана и предизвиква нова вълна от интерес към криптографията като цяло.

Идеята на архитектурата на "мрежата на Feistel" е следната: входният поток от данни е разделен на блокове с n бита по размер, където n е четно число. Всеки блок е разделен на две части - L и R, след което тези части се подават в итеративен блоков шифър, в който резултатът от j-тия етап се определя от резултата от предишния етап j-1! Това може да се илюстрира с пример:


Фигура: 1
Където функция A е основното действие на блоковия шифър. Това може да бъде просто действие, като например операцията XOR, или може да има по-сложна форма като последователност от поредица от прости действия - модулно добавяне, лява смяна, подмяна на елемент и т.н., взети заедно, тези прости действия образуват така наречената - основната стъпка на крипто трансформацията.
Трябва да се отбележи, че ключовите елементи на функцията са снабдяването с ключови елементи и операцията XOR и от това колко добре обмислена е работата на тези операции, това говори за криптографската сила на шифъра като цяло.
За да бъде идеята за мрежите на Feistel окончателно ясна, помислете за най-простия случай, показан в фиг. 1, където във функция A - ще има операции “mod 2” (“xor”), но това най-простислучай, в по-сериозна ситуация, например скриване на информация от държавно значение, функция А може да е по-сложна (доколкото видях, функция А е наистина много сложна):

Първоначални данни:


L \u003d 1110b, R \u003d 0101, K \u003d 1111b
Вземете криптирането
1. (R + K) mod 2 4 \u003d Smod, Smod \u003d 0100b
2. (Smod + L) mod 2 \u003d Sxor, Sxor \u003d 1010b
3. L \u003d R, R \u003d Sxor
L \u003d 0101b, R \u003d 1010b
Нека обясним нашите действия:
1. Тази операция е добавяне мод 2 4. На практика такава операция се свежда до просто събиране, където трябва да добавим две числа и да игнорираме прехвърлянето към 5-та цифра. Тъй като, ако поставим експоненти над цифрите на двоичното представяне на число, ще има степен четири над петата цифра, погледнете фигурата по-долу, която показва действията на нашата операция:

Фигура: 2


Тук посочих експонентите със стрелка, както можете да видите, резултатът трябваше да е 10100, но тъй като прехвърлянето се игнорира по време на операцията mod 2 4, получаваме 0100.
2. Тази операция в литературата се нарича mod 2, на асемблерен език тя се изпълнява от командата XOR... Но по-правилното му име е мод 2 1. Без тази уникална операция едва ли е възможно да се изгради бърз, лесно изпълним алгоритъм за криптиране и в същото време да бъде доста криптографски силен. Уникалността на тази операция се крие във факта, че тя самата е обратното! Например, ако числото A е XORed с числото B, в резултат на това ще получим B, в бъдеще е достатъчно да повторно XOR числата B и C помежду си, за да се получи предишната стойност на A!
В тази операция получихме 1010 с числа 1110 и 0100, за да се върнем 1110, достатъчно е да повторно XOR числата 0100 и 1010! Повече подробности за тази операция можете да намерите в статията, прикачена към сайта www.wasm.ru, « Елементарно ръководство заCRC_ алгоритми за откриване на грешки»Авторът, който Рос Н. Уилямс... В тази работа има една точка - " 5. Двоична аритметика без тире". В тази статия е описана операцията. xor! Възкликвам, защото в тази статия тази операция е толкова планирана, че читателят не само разбира как работи тази операция, той дори я стартира вижте, чуйте и почувствайте!
3. Това действие е необходимо, за да могат първоначалните стойности да бъдат получени от криптирането по време на дешифрирането.
2.2 Блок шифър GOST 28147-89
Алгоритъмът за криптиране GOST 28147 - 89 принадлежи към категорията блокови шифри, работещи върху архитектурата на балансирани мрежи на Feistel, където две части от избрания информационен блок са с еднакъв размер. Алгоритъмът е разработен в дълбините на осмия отдел на КГБ, сега трансформиран във FAPSI и е включен като стандарт за криптиране на Руската федерация през 1989 г. при СССР.
За да работи този метод на алгоритъма, е необходимо информацията да се раздели на блокове с размер 64 бита. Генерирайте или въведете в системата за криптиране следната ключова информация: ключ и таблица за заместване. Изборът на ключа и таблицата за заместване за криптиране трябва да се вземе много сериозно, тъй като това е основата на сигурността на вашата информация. За информация относно това какви изисквания са наложени върху ключа и таблицата на заместванията вижте елемента "Изисквания за ключова информация".
Когато разглеждаме метода, няма да се фокусираме върху това, защото Тази статия, както казах по-горе, е написана с цел да научи читателя как да шифрова данните чрез метода на простото заместване на този алгоритъм за криптиране, но определено ще засегнем този въпрос в края на статията.
Теоретичен минимум.
3.1 Основна информация
Както казах по-горе, следните критерии активно участват в криптирането на данни:
3.1.1. Ключът е последователност от осем елемента, по 32 бита всеки. По-нататък ще обозначим със символа K и елементите, от които се състои, са k1, k2, k3, k4, k5, k6, k7, k8.
3.1.2 Таблица за заместване - матрица от осем реда и шестнадесет колони, оттук нататък - Hij. Всеки елемент в пресечната точка на ред i и колона j заема 4 бита.
3.2 Основната стъпка на крипто трансформацията
Основната стъпка в процеса на криптиране е - основната стъпка на крипто трансформацията. Това не е нищо повече от действие за криптиране на данни според определен алгоритъм, само разработчиците са въвели име, което е твърде тромаво.
Преди да започне да шифрова, блокът се разделя на две части L и R, по 32 бита всяка. Избира се ключовият елемент и едва след това тези две части на блока, ключовият елемент, таблицата на заместването, се подават във функцията на основната стъпка, резултатът от основната стъпка е една итерация на основния цикъл, която ще бъде разгледана в следващия параграф. Основната стъпка се състои от следното:

  1. Събирателната част на блока R се сумира с ключовия елемент K mod 2 32. Описах подобна операция по-горе, тук същото нещо само експонентата не е "4", а "32" - резултатът от тази операция ще бъде означен като Smod в бъдеще.

  2. Полученият резултат Smod се разделя на четирибитови елементи s7, s6, s5, s4, s3, s2, s1, s0 и се подава към функцията за заместване. Заместването е както следва: елементът Smod - s i е избран, от началото започваме с най-ниския елемент и заместваме със стойността от таблицата на заместванията с i - редът и колоната, посочени от стойността на елемента s i. Преминаваме към елемента s i +1 и продължаваме по същия начин и продължаваме така, докато не променим стойността на последния елемент Smod - резултатът от тази операция ще бъде означен като Ssimple.

  3. В тази операция ние изместваме стойността Ssimple циклично наляво с 11 бита и получаваме Srol.

  4. Избираме втората част от L блока и добавяме mod 2 със Srol, в крайна сметка имаме Sxor.

  5. На този етап частта от L блока става равна на стойността на R частта, а R частта от своя страна се инициализира с резултата Sxor и на това основната стъпкова функция е завършена!

3.3 Основни цикли: "32-З", "32-Р".


За да шифровате информация, е необходимо да я разделите на блокове с размер 64 бита, разбира се последният блок може да бъде по-малък от 64 бита. Този факт е ахилесовата пета на този метод за „лесна подмяна“. Тъй като добавянето му към 64 бита е много важна задача за увеличаване на криптографската сила на кода на шифъра и към това чувствително място, ако то присъства в информационния масив, но може да не съществува (например файл от 512 байта!), Трябва да се третира с голям отговорност!


След като разделите информацията на блокове, трябва да разделите ключа на елементи:


K \u003d k1, k2, k3, k4, k5, k6, k7, k8


Самото криптиране се състои в използването на така наречените основни цикли. Които от своя страна включват n-ия брой основни стъпки на крипто-трансформацията.


Основните цикли са обозначени, как да се изразя: n - m. Където n е броят на основните стъпки на криптопреобразуването в основния цикъл, а m е „типът“ на основния цикъл, т.е. за какво става въпрос, за "Z" криптиране или "R" криптиране на данни.


Основен цикъл на криптиране 32-З се състои от 32 основни стъпки на крипто-трансформация. Блок N и елемент от ключа K се подават във функцията, която реализира действията на стъпката, като първата стъпка се случва с k1, втората върху резултата, получен с елемента k2 и т.н. по следната схема:


k1, k2, k3, k4, k5, k6, k7, k8, k1, k2, k3, k4, k5, k6, k7, k8, k1, k2, k3, k4, k5, k6, k7, k8k8, k7, k6, k5, k4, k3, k2, k1


Процесът на дешифриране за 32-P е подобен, но ключовите елементи са дадени в обратен ред:


k1, k2, k3, k4, k5, k6, k7, k8, k8, k7, k6, k5, k4, k3, k2, k1, k8, k7, k6, k5, k4, k3, k2, k1, k8, k7, k6, k5, k4, k3, k2, k1


Практика.


4.1 Изпълнение на основната стъпка от крипто трансформацията
След като се запознахме с теорията за това как да шифроваме информация, беше време да видим как криптирането работи на практика.
Първоначални данни:
Вземете блок информация N \u003d 0102030405060708h, тук частите L и R са равни:
L \u003d 01020304h, R \u003d 05060708h, нека вземем ключа:
K \u003d ‘ като28zw37 q8397342ui238e2t wqm2ewp1 '(това са ASCII кодове, за да видите шестнадесетичното представяне, можете да отворите този файл в режим на преглед в Total Commander, като натиснете клавиша F3"И тогава ключът" 3 "). В този ключ стойностите на елементите ще бъдат:
k1 \u003d ‘as28’, k2 \u003d ‘zw37’, k3 \u003d ‘q839’, k4 \u003d ‘7342’
k5 \u003d ‘ui23’, k6 \u003d ‘8e2t’, k7 \u003d ‘wqm2’, k8 \u003d ‘ewp1’
Фигура: 3
Тук редовете са номерирани от 0 до 7, колоните от 0 до F.
Внимание:Цялата информация, включително ключа с таблицата за заместване, е взета като пример за разглеждане на алгоритъма!
Използвайки "Първоначални данни", е необходимо да се получи резултатът от действието на основната стъпка на крипто трансформацията.

  1. Изберете частта R \u003d 05060708h и ключовия елемент k1 \u003d ‘as28’, в шестнадесетичен вид ключовият елемент ще изглежда така: 61733238h. Сега правим операцията по сумиране мод 2 32:

Фигура: 4
Както можете да видите на фигурата, нямаме трансфер в 33 бита, маркирани в червено и с експонента „ 32 ". И ако имахме други стойности за R и ключовия елемент, това можеше да се случи и тогава щяхме да го игнорираме и по-нататък да използваме само битовете, маркирани в жълто.
Изпълнявам тази операция с командата на асемблер добавете:
; eax \u003d R, ebx \u003d 'as28'
Резултатът от тази операция Smod \u003d 66793940h


Сподели с приятели:
1   2   3   4   5   6   7




©obuch.info 2024
отнасят до администрацията

    Начална страница