4.2. Български стандарт за криптиране на данни ГОСТ 28147-89
Важна задача за гарантиране на гарантираната сигурност на информацията в ИС е разработването и използването на стандартни алгоритми за криптиране на данни. Първият сред тези стандарти беше американският DES, който е последователно използване на замествания и пермутации. В момента все повече хора говорят за неоправдана сложност и ниска криптографска стабилност. На практика трябва да използвате неговите модификации.
Алгоритъмът за криптиране, определен от българския стандарт ГОСТ 28147-89, е единен криптографски алгоритъм за защита на данни за големи информационни системи, локални мрежи и автономни компютри.
Препоръчва се да се използва за защита на всички данни, представени в двоична форма, въпреки че не са изключени други методи за криптиране.
Този алгоритъм може да бъде реализиран както хардуерно, така и софтуерно, отговаря на всички криптографски изисквания, развити в световната практика, и в резултат на това позволява криптографска защита на всякаква информация, независимо от нейната степен на секретност.
В алгоритъма GOST 28147-89, за разлика от алгоритъма DES, се използва 256-битов ключ, който е представен като осем 32-битови числа. Данните се декриптират със същия ключ, с който са били криптирани.
Този стандарт е формиран, като се вземе предвид световният опит и по-специално са взети предвид недостатъците и нереализираните възможности на алгоритъма DES, така че използването на стандарта GOST е за предпочитане. Тя ви позволява да откривате както случайни, така и умишлени модификации на криптирана информация. Основен недостатък на този алгоритъм е голямата сложност на софтуерната му реализация и много ниската скорост. Алгоритъмът е доста сложен и по-долуосновно неговата концепция ще бъде описана.
Описанието на стандарта за криптиране на данни се съдържа в документа, озаглавен "Алгоритъм за преобразуване на криптографски данни GOST 28147-89". Фактът, че името му вместо термина "криптиране" включва по-общото понятие "криптографска трансформация" не е никак случаен. В допълнение към няколко тясно свързани процедури за криптиране, документът описва един алгоритъм за генериране навмъкнати имитации, изграден на същите принципи като тях. Последното не е нищо повече от криптографска контролна комбинация, тоест код, генериран от оригиналните данни с помощта на таен ключ, за даимитира защитаили да защити данните от неупълномощени промени.
На различни стъпки от алгоритмите на GOST данните, с които работят, се интерпретират и използват по различни начини. В някои случаи елементите от данни се третират като масиви от независими битове, в други случаи като цяло число без знак, в трети като сложен елемент със структура, състояща се от няколко по-прости елемента. Нека въведем асоциативната операция конкатенация, използвайки мултипликативната нотация за нея. Освен това ще използваме следните операции за събиране:
- AB - побитово събиране по модул 2;
- A[+]B - събиране по модул 2 32 ;
- AB - събиране по модул 2 32 -1.
Алгоритъмът за криптографско преобразуване осигурява няколко режима на работа. Във всички режими ключът W е дълъг 256 бита, представен като осем 32-битови числаx(i):
Същият ключ се използва за декриптиране, но процесът на декриптиране е обратен спрямо оригиналния.
Най-простият възможен режим езамяна.
Нека отворените блокове се разделят на блокове от 64 бита всеки, които обозначаваме като T(j).
Следващата поредица от битове T(j) е разделена на две поредици B(0) и A(0) от по 32 бита всяка (десен и ляв блок). След това се извършва итеративен процес на криптиране, който се описва със следните формули, чиято форма зависи от i:
* За i=1, 2, . 24, j=(i-1) mod 8;
* За i=25, 26, . 31, j=32-i;
Тук i обозначава номера на итерацията. Функцияf- функция за криптиране.
Функцията за криптиране включва две операции върху 32-битовия аргумент.
Първата операция е заместванеK. Блокът за заместване K се състои от 8 възела за заместване K(1). K(8) с 64 бита памет всеки. 32-битовият вектор, пристигащ в блока за заместване, се разделя на 8 последователни 4-битови вектора, всеки от които се преобразува в 4-битов вектор от съответния заместващ възел, който е таблица от 16 цели числа в диапазона 0. 15. Входният вектор определя адреса на реда в таблицата, числото от което oh е изходният вектор. След това 4-битовите вектори се свързват в 32-битов изходен вектор.
Втората операция е ляво циклично изместване на 32-битовия вектор, получен в резултат на заместване K. 64-битовият блок от криптирани данни T е представен като
Останалите блокове отворени данни в режим на проста замяна се криптират по същия начин.
Трябва да се има предвид, че този режим на криптиране има ограничена криптографска устойчивост.
Друг режим на криптиране се наричарежим на игра.
Отворените данни, разделени на 64-битови блокове T(i) (i=1.2. m) (m се определя от количеството криптирани данни), се криптират в гама режим чрез побитово добавяне по модул 2 с шифър гама Gsh, койтопроизведени в блокове от 64 бита, т.е.
Уравнението за криптиране на данни в гама режим може да бъде представено по следния начин:
В това уравнение W(i) обозначава 64-битов блок от шифрован текст, A е функцията за криптиране в режим на проста замяна (аргументите на тази функция са две 32-битови числа). C1 и C2 са константи, посочени в GOST 28147-89. Стойностите Y(i) и Z(i) се определят итеративно, тъй като гамата се формира, както следва:
(Y(0),Z(0))=A(S), S - 64-битова двоична последователност
64-битовата последователност, наречена синхронизиращо съобщение, не е таен елемент на шифъра, но нейното присъствие е необходимо както на предаващата, така и на приемащата страна.
Режимът на мащабиране на обратната връзкае много подобен на режима на мащабиране. Както в режим гама, отворените данни, разделени на 64-битови блокове T(i), се криптират чрез побитово добавяне по модул 2 с шифър гама Gsh, който се генерира в блокове от 64 бита:
Уравнението за криптиране на данни в режим на гама обратна връзка изглежда така:
GOST 28147-89 определя процеса на разработване на симулирана вложка, която е еднаква за всички режими на криптиране. Фалшивата е блок отpбита (фалшива Ip), която се генерира или преди цялото съобщение да бъде шифровано. или паралелно с криптиране блок по блок. Параметърът ppсе избира в съответствие с необходимото ниво на защита от имитация.
За да се получи имитация на вмъкване, отворените данни също се представят под формата на блокове от 64 бита. Първият блок от отворени данни T(1) е подложен на трансформация, съответстваща на първите 16 цикъла на алгоритъма за прост режим на заместване. Освен това същият ключ се използва като ключ за криптиране на данни. Получени 64-битовичислото се добавя към отворения блок T(2) и сумата отново се подлага на 16 цикъла на криптиране за режима на проста замяна. Тази процедура ще се повтори за всички m блока съобщения. От полученото 64-битово число се избира сегмент от Ip с дължина p бита.
Фалшивата се предава по комуникационния канал след криптираните данни. От приемащата страна по същия начин се извлича симулирана вложка от полученото съобщение и се сравнява с полученото. Ако имитационните вложки не съвпадат, съобщението се счита за невярно.