Блоктық шифрлар

Блоктық шифрлар туралы қазақша реферат

Блоктық шифрлеу кезінде бастапқы мәтін ұзындығы тұрақты бекітілген блоктарға бөлінеді. Блок мәтіндері бір-біріне қатыссыз бөлек шифрленеді. Шифрлеу үшін барлық блоктарға бір ғана кілт қолданылады. Шифрлеу тәсілдері ауыстыру, алмастыру, құрастырма шифрлар болып бөлінеді.

Ауыстыру шифрі белгілі бір ереженің көмегімен бастапқы мәтін символдарын басқа символдармен ауыстыру арқылы анықталады. Егер шифрлеу үшін бір әліпби қолданылса, онда шифр бір әліпбилі немесе моноәліпбилік деп аталады. Егер бірнеше әліпби қолданылса, онда ол көп әлипбилі немесе полиәліпбилі деп аталады. Бір әліпбилі шифрдің ең қарапайым мысалы Цезарь шифры.

Қазақ алфавитіне пробел символын қосып, сәйкес келетін ретпен жазып шығайық.

“ А Ә Б В Г Ғ Д Е Е Ж  З  И   Й  К  Қ  Л  М  Н  Ң  О  Ө  П  Р   С   Т  У   Ұ

0 1 2  3  4 5 6  7  8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

Ү  Ф  Х  Һ  Ц  Ч  Ш Щ Ъ  Ы    І     Ь   Э   Ю   Я

28 29 30 31 32 33 34 35 36 37 38   39  40  41  42

Цезарь хаттарды келесі формуланың көмегімен шифрлеген:

(әріп)= ((әріп)+N) mod 43      Мұндағы 1<=N<43

N – шифрлеу кілті.

Цезарь шифрімен түрлендірілген хабарламаға мысал:

Б М С Б Т Б Ұ Ә Б Н Ң Б У Ү              N=0,2

А Қ П А Р А Т   А Л М А С У

Әйгілі Вижинер шифры да көп әліпбилі ауыстыру шифріне жатады. Шифрлеу өлшемі n*n матрицасының көмегімен жүргізіледі. Кестенің бірінші жолында әліпбидің символдары түгелдей жазылады. Келесі жолдары алдыңғы жолды бір символға солға жылжыту арқылы табылады.

Хабарды шифрлеу үшін:

1)    Түйінді сөз таңдайды. Мысалға «ақпарат» сөзін таңдайық.

2)    Ашық мәтін символдарының астына кілт символдарын жазады. Егер кілт хабардан қысқа болса, оны бірнеше рет қайталайды.

О Р Ы Н А Л М А С Т Ы Р У Ш И Ф Р І          (*)

А  қ  п  а  р  а   т   а  қ п  а   р  а   т   а  қ  п а          (**)

3) Шифрмәтін символы Вижинер кестесі көмегімен ізделінеді. Ол үшін (*) тізбегіндегі символды кесте жолынан, ал (**) тізбегіндегі символды кесте бағанынан іздейсіз. Шифрланған символ сол бағана мен жолдың қиылысында орналасқан.

Сонда келесі шифрмәтін аламыз:

Кесте 1  Вижинер кестесі

21

Мәтінді шифрлеуде сенімділік жоғары болуы үшін Вижинердің жетілдірілген кесте түрі ұсынылады, ол келесіде :

1)  Алфавит әріптері барлық (біріншісінен басқа) кесте жолдарында өз еркімен орналасады;

2)  0-ден 9-ға дейінгі натурал сандармен нөмірленген он (біріншісін есептемегенде) жол таңдалады;

3)  Кілт ретінде шамалар қолданылады.

Ақпаратты сенімді шифрлеуді қамтамасыз ететін ауыстыру әдісінің жеке жағдайы матрицалардың алгебрада (мысалы, векторға матрицаны көбейту) қолдануы болып табылады:

22

Осы ережеге сәйкес A={aij} матрицасын шифрлеуге арналған негіз ретінде пайдалануға болады, B={bi} вектор белгілері шифрленген мәтін символдары бола алады, ал вектор белгілерінің нәтижесі C={сi} шифрланген мәтін символдары болып табылады.

Әріптік ақпаратты шифрлеу үшін ең алдымен алфавитте әріптің реттік нөмірі бола алатын цифрлік эквиваленттерін алфавит белгілеріне ауыстыру керек.

Дешифрлеу үшін векторға матрицаны көбейту ережесі қолданылады, тек қана негіз ретінде кері матрица алынады, ал көбейткішті вектор ретінде шифрленген мәтіннің лайықты сандар жиынынан алады.

Шифрлау және шифрді ашу процедуралары қатал формализацияланған, бұл автоматты орындаулар үшін салыстырмалы жеңіл бағдарламмалауға рұқсат етеді. Осы әдістің кемшілігі әрбір әріпті шифрлау және шифрді ашу үшін бірнеше арифметикалық әрекеттер орындау керек, бұл ақпаратты өңдеу уақытын үлкейтеді.

Орын алмастыру шифрлері символдардың орналасу позицияларын ған өзгертеді. Ең қарапайым шифр – жай бағаналық орын алмастыру шифрын келтірейік.

Шифрдің бұл түрінде мәтін ұзындығы біркелкі блоктарға алдын ала бөлініп горизантал бағытта бірнеше рет жазылады. Шифрмәтінді алу үшін мәтінді вертикал бағытта оқу керек. Дешифрлеу үшін шифрмәтін вертикал бағытта жазылып, ашық мәтін горизонтал бағытта оқылады.

Мысал. Ашық мәтін ретінде келесі сөйлемді алайық:

СИММЕТРИЯЛЫ ЖҮЙЕНІ ШИФРЛЕУ

Сөйлемді алты жолы, төрт бағанасы бар кесте түрінде жазайық:

С И М М Е Т

Р И Я Л Ы Ж

Ү Й Е Н І Ш

И Ф Р Л Е У

Шифрмәтін алу үшін  кестедегі символдарды бағана бойымен (жоғарыдан төменге) оқып мысалға бес-бестен топқа бөліп жазамыз.

Сонда шифрмәтін аламыз: срүии ийфмя ермлн леыіе тжшу.

Орын алмастыру шифры хабарлаудың шифрлауына арналған символдардың n ұзындығымен өзгеруін қарастырамыз. Оны кесте көмегімен көрсетуге болады

23

мұндағы i1 – шифрмәтінінің нөмірі,  i2 – екінші әріп үшін орын нөмірі және т.с.с. Кестенің жоғарғы жолында 1-ден n-ге дейінгі сандар ретпен жазылған, ал төменгі жолында сол сандар, тек сандар өз бетінше орналасқан. Осындай кесте n дәрежесінің ауыстырылуы деп аталады.

Келесі бағдарлама кодының (Object Pascal тілінде) үзіндісі негізгі хабарлауды шифрлеу және  шифрді ашуда оның орын алмастыру шифрын қолдануды демонстрациялайды:

const     Lmax=100;

type     TArr=array[1..Lmax] of integer;

{процедура-мәтінді шифрлеу функциясы

Кіру параметрі: txt — негізгі мәтін, password — кілт

Функцияның нәтижесі – шифрленген мәтіннің жолы}

function SH_TO(txt:string;password:TArr):string;

var i,l:integer;

shifr:array[1..Lmax] of char;

s:string;

begin

l:=length(txt);

for i:=1 to l do

shifr[password[i]]:=txt[i];

for i:=1 to l do

s:=s+shifr[i];

result:=s;

end;

{процедура-шифрді ашу функциясы

Кіру параметрі: txt – шифрленген текст, password – кілт

Функцияның нәтижесі – шифрі бұзылған мәтіннің жолы }

function SH_FROM(txt:string;password:TArr):string;

var i,l:integer;

s:string;

begin

l:=length(txt);

for i:=1 to l do

s:=s+txt[Password[i]];

result:=s;

end.

Құрастырма шифрлар.Бұл шифрдің негізінде, сенімді криптожүйе құрастыру үшін ауыстыру және орын алмастыру сияқты қарапайым шифрларды алма – кезек бірнеше рет қолдану идеясы жатыр. DES (Data Encryption Standard, АҚШ), FEAL-1 (Fast Enciphering Algoritm, Жапония), IDEA/IPES (International Data Encryption Algorithm/Improved Proposed Encryption Standard, Ascom-Tech AG фирмасы, Швейцария), B-Crypt (British Telecom фирмасы, Ұлыбритания), АES (АҚШ),  ГОСТ 28147-89, Skipjack (АҚШ) және басқа көптеген алгоритмдер шифрдің осы түріне жатады.

Құрастырма шифрларына мінездеме 2-кестеде көрсетілген.

Кесте 2 Құрастырма алгоритмдері

Алгоритмдердің аты

Кілттің өлшемі, бит

Блоктың өлшемі, бит

Инициализация векторының өлшемі, бит

Шифрлеу циклінің саны

Lucipher

128

128

DES

56

64

64

16

FEAL-1

64

64

4

B-Crypt

56

64

64

IDEA

128

64

ГОСТ 28147-89

256

64

64

32

Соның ішінде DES алгоритіміне кеңінен тоқталайық.

1972 жылы NBS (National Bureau of Standards, АҚШ) стандартты криптографиялық алгоритм құрастыруға сынақ жариялады. Бірақ келіп түскен бір де бір ұсыныс қойылып отырған талаптарға сай келмеді. Тек 1974 жылы Lucifer атты алгоритм IBM корпорациясында жұмыс істеуші криптографтар атынан ұсынылды. Олар – Рой Адлер, Дон Копперсмит, Хорст Файстель, Эдна Кроссман және басқалары. NBS бюросы NSA ұйымынан алгоритмді бағалауда көмек сұрады. 1976 жылы DES федералдық стандарт ретінде бекітілді.

Енді DES-ті сипаттауға көшейік. DES блоктық алгоритм болып табылады. Ашық мәтін ұзындығы – 64 бит. Кілт ұзындығы – 56 бит. Алгоритмде 16 бөлім орындалады, яғни бірдей тәсілдердің комбинациясы ашық мәтінге 16 рет қолданылады. Алгоритмнің негізгі қадамдарын қарастырайық.

Бастапқы орын алмастыру.

Алгоритм басталмас бұрын ашық текст биттері үшін орын алмастыру процедурасы орындалады. Pk  деп к-ші жаңа позицияға орналасатын ашық текст битінің нөмірін белгілейік. Р0 = 0, Р1 = 58болсын. Алдыңғы төрт байттың құрамындағы бірінші бит позициясына келесі бит орналасады.

Р8i+1 = Р1 + Р8i , i=0,3    (1)

Бесінші байттың бірінші битінің позициясы былай есептеледі:

Р8i+1 = Р1– 1, i = 4

i=5,6,7 болғандағы 8i+1 позицияларына орналасар бит нөмірлері (1) формуласы арқылы есептеледі. Қалған позицияларға келесі нөмірлі биттер орналасады:

Р­8i+j+1 = Р8i+1 -8j, i=0,7, j=1,8

Ақыры мынандай орын алмастыру кестесін аламыз.

Кесте 3 Бастапқы орын алмастыру

58   50   42   34   26   18   10   2   60   52   44   36   28   20   12   4

62   54   46   38   30   22   14   6   64   56   48   40   32   24   16   8

57   49   41   33   25   17     9   1   59   51   43   35   27   19   11   3

61   53   45   37   29   21    13  5   63   55   47   39   31   23   15   7

Кілт түрлендіру

а) 64-биттік кілттің әрбір сегізінші биті ескерілмейді. Олар тақтық қасиетін тексеру үшін қолданылады. Сонымен кілттің ұзындығы 56 битке шейін қысқарылады.

б) 56 биттік кілт екі тең бөлікке бөлінеді. Раунд нөміріне байланысты кілт бөліктері бір немесе екі битке солға жылжытылады. 1, 2, 9, 16-шы бөлімдерде кілт 1 битке жылжиды. Қалған жағдайларда 2 битке жылжиды.

в) 56 биттің 48 таңдап алынады. Бит орналасу реті де өзгертіледі. Бұл операция сығылатын орын алмастыру деп аталады.

Кесте 4 Шифрлау алгортмінің сүлбесі

25

Сонымен әрқайсысының ұзындығы 48 бит 16 бөлімдік кілт жасалады.

 Кесте 5 Сығылатын орын алмастыру

14     17     11     24      1      5      3      28     15      6     21      10

23     19     12      4      26     8     16      7      27     20    13       2

41     52     31     37     47     55    30    40     51     45    33      48

44     49     39     56     34     53    46    42     50     36    29      32

Кесте 6 Кілт түрлендіру алгоритмі

26

Хабарды шифрлау.

Демек сіз ұзындығы 64 бит бастапқы мәтін және ұзындығы 48 бит кілтке иесіз. Бастапқы хабар іспеттес тең екі бөлікке бөлінеді. Оң бөлік кілт ұзындығына дейін кеңейтіледі. Биттердің орын алу реті де өзгереді. Бұл қадамның негізгі мақсаты – әр шифрмәтін битінің әрбір шифрмәтін және кілт биттеріне тәуелділігін арттыру.

Кесте 7 Кеңейтетін орын алмастыру

32        1         2        3        4        5       4        5        6       7        8       9

8          9        10      11      12      13     12      13      14     15      16     17

16       17       18      19      20      21     20      21      22     23      24     25

24       25       26      27      28      29     28      29     30      31      32      1

Деректердің оң жағы Ri және бөлімдік кілт Ki  үшін қосу операциясы орындалады, яғни Ri+Ki  мәні есептелінеді.

48 бит сегіз 6 биттік блокшаға бөлінеді. Әрқайсысына S-блок деп аталатын кестелердің көмегімен ауыстыру операциясы қолданылады. DES алгоритмінде S-блоктардың атқаратын маңызы зор. Алгоритмнің сенімділігін арттыратын осы блоктар. Барлығы 8 S-блок қолданылады. Кірісіндегі 6 бит S-блок көмегімен 4 битке дейін сығылады. Бастапқы блоктың бірінші және алтыншы битінің конкатенациясы 0-ден 3-ке шейінгі сан құрайды, ол сан кесте жолын анықтайды. Ортасындағы төрт бит конкатенацияланып 0-ден 15-ке шейінгі сан құрайды, ол сан кесте бағанасын анықтайды. Яғни, 4-биттік нәтиже сәйкес жол мен бағананың қиылысуында орналасады.

Кесте 8 S-блоктар

1-ші S-блок:

14      4       13      1      2      15    11      8       3      10      6     12      5       9     0      7

0       15       7       4      14     2     13      1      10      6      12    11      9       5     3      8

4       1        14      8      13     6      2       11    15     12      9      7       3       10   5      0

15     12       8       2        4     9      1        7       5     11      3     14     10      0     6    13

2-ші S-блок:

15     1        8        14      6     11     3       4        9       7     2     13     12     0     5     10

3      13        4        7      15     2      8      14      12      0     1     10      6      9    11     5

0      14       7        11     10     4     13      1       5        8    12     6       9      3    2      15

13    8        10        1       3     15     4       2       11      6     7     12      0      5    14     9

 

3-ші S-блок:

10     0       9        14        6       3       15      5       1      13     12     7    11    4     2     8

13     7       0         9         3       4        6      10      2       8       5     14   12    11   15   1

13     6       4         9         8      15       3       0      11      1       2     12     5    10   14   7

1      10     13        0         6       9        8       7       4       15    14     3     11   5     2   12

4-ші S-блок:

7    13     14       3         0       6         9       10      1       2       8      5    11    12    4   15

13   8      11       5         6      15        0       3        4       7       2     12    1     10   14   9

10   6      9         0        12     11        7       13     15      1       3     14    5      2     8    4

3    15     0        6         10      1       13       8        9       4       5     11   12     7     2   14

5-ші S-блок:

2    12     4        1         7       10       11      6       8       5       3     15   13     0     14   9

14  11     2       12        4       7         13      1       5       0      15    10     3     9      8    6

4    2       1       11       10      13        7       8      15      9      12     5      6     3      0   14

11  8      12       7         1       14        2      13      6      15      0       9    10    4      5    3

6-шы S-блок:

12   1      10      15       9        2         6       8       0      13      3       4    14    7     5    11

10   15     4        2        7       12        9       5       6       1      13     14     0   11    3     8

9     14    15       5        2        8        12      3       7       0       4      10     1   13    11   6

4     3       2       12       9        5        15     10     11     14      1       7      6    0     8     3

7-ші S-блок:

4     14     2       14      15       0        8       13      3      12      9       7      5    10    6    1

13    0     11      7        4         9        1       10     14      3       5      12     2    15    8    6

1      4     11      13      12       3        7       14     10     15      6       8      0     5     9    2

6     11    13      8        1         4       10       7       9       5       0       15    14   2     3   12

8-ші S-блок         :

13     2        8      4        6      15    11    1     10      9       3      14      5      0      12     7

1      15      13     8       10      3      7     4     12      5       6      11      0     14      9      2

7      11       4      1        9       12    14   2      0       6       10    13      15    3       5      8

2       1       14     7        4       10     8    13    15    12      9      0        3      5       6     11

Енді  32 биттік блок үшін Р блогының көмегімен тікелей орын алмастыру орындалады. Блок биттері қай позицияға жылжитыны 9-кестеде көрсетілген.

Кесте 9 Р блок

16    7      20     21     29     12    28     17      1      15     23     26     5     18    31    10

2     8       24     14     32     27    3       9       19     13     30      6     22    11     4     25

Алынған нәтиже блоктың сол бөлігімен қосылады.

Оң және сол бөліктер алмастырылып, келесі соңғы орын ауыстыруға көшеміз. Соңғы орын ауыстыру бастапқы орын ауыстыру операциясына кері операция болып табылады. Соңғы бөлімнің алдыңғы бөлімдерден айырмашылығы одан кейінгі блоктың сол және оң жақтары орын алмастырмайды.

Кесте 10 Соңғы орын ауыстыру

40     8       48      16     56     24     64     32    39     7    47     15      55    23    63   31

38     6       46      14     54     22     62     30    37     5    45     13      53    21    61   29

36     4       44      12     52     20     60     28    35     3    43     11      51    19    59   27

34     2       42      10     50     18     58     26    33     1    41     9        49    17    57   25

Дешифрлау.Бұл алгоритмде шифрлау және дешифрлау процедуралары бірдей. Дешифрлау кілттері болып К16, К15,…, К1 табылады.

Диффи мен Хеллман 1976-1977 жылдары DES алгоритмінің кілтін бір күннің ішінде анықтап бере алатын арнайы параллель есептеулерге негізделген компьютер құрастыруға болады және ол 20 миллион доллар тұрады деп айтқан еді.

Electronic Frontier Foundation (EFF) ұйымы 1998 жылы осындай есептеуіш машинаны ойлап тапты. Оның бағасы $250.000 еді. Кілт анықтау үшін 3 күн керек болды.

Бүгін DES стандарты келесі себептерге байланысты қолайсыз деп табылды:

1) Кілттің ұзындығы – 56 бит бүгін қауіпсіздік үшін тым аз;

2) Алгоритм құрастырылғанда ол программалық емес, аппараттық қолдану үшін жасалған, сондықтан микропроцессорда оның кейбір операциялары тым көп уақыт алады.

Қазір DES-пен қатар 3DES алгоритмі көп қолданылады. Ол DES негізінде жасалған алгоритм. Шифрлаудың сенімділігін арттыру үшін мұнда шифрлау операциясы үш рет қайтара орындалады. Алгоритмде 256 биттік кілт қолданылады, яғни кілттің ұзындығы 112 бит. 2.1.2 Ағындық шифрлар

Егер блоктық алгоритмдерді мәтінді блоктарға бөліп оларды бір бірден шифрлайтын болса, ағынды шифрлау алгоритмі мәтінді бөліктемей әр элементін шифрлап ағынды күйде жіберіледі. Шифрлау және дешифрлау негізінен 2 модулі бойынша ашық және кездейсоқ кілт тізбегін қосу операциясын қолданады. Тарихи бірінші ағынды шифр Вернам шифры (сур.1.). Вернам шифрының оның кілт тізбегінің шифрлауында. Бұл шифрдың практикалық қолданылуы өте ұзын кілт тізбектерінің жасалуына байланысты қолайсыз деп есептелінеді.

28

Синхрондық шифр. Синхрондық шифрда кілт тізбегі ақпарат ағынына байланыссыз жасалады. Хабар алушы және хабар жіберуші жағында кілт тізбегі генераторының жұмысы синхрондалған болу керек. Әйтпесе, бір бит мәліметтің жоғалып кетуі қалған символдардың қате дешифрлануына әкеледі.

Өзіндік синхронданатын шифры. Шифрдің бұл түрінде ашық мәтін символдары алдыңғы n символға байланысты шифрланады. Ол алдыңғы n символ кілт тізбегінің жасалуына қатысады. Синхрондау режимі әр n шифрмәтін символынан кейін автоматты түрде орындалады.