Лабораториялық жұмыс №3

DES алгоритмі

Алгоритм жұмысы (сурет-1) шифрленетін текстті алдын ала 64 биттік блоктарға бөлуден басталады. Сосын төмендегі берілген 1-ші кестеде көрсетілген схема бойынша алғашқы орын ауыстыру ІР процедурасы орындалады, яғни 58-ші бит 1 биттің орнына, 50-ші бит 2-ші биттің орнына және тағы сол сияқты орын алмастырулар орындалады. Одан кейін осы 64 биттік блокты екіге тең етіп 32 биттен бөлеміз, олар сол (L) және оң (R) деп белгіленеді. Бұдан кейін осы жарты блоктарға 16 рет f шифрлеу функциясы қолданылады. Соңында жарты блоктар біріктіріліп 2-кестеде көрсетілген схема бойынша кері орын ауыстыру IP-1 процедурасымен аяқталады.

Сурет 1 – DES алгоритмінің жалпы схемасы

DES-тің І-ші этапының нәтижесі келесі формулар(1) арқылы белгіленді:

Li = Ri-1

Ri = Li-1 Å f(Ri-1,Ki) (1)

Мұндағы Å - екі модулі бойынша қосу(XOR операциясы), ал f шифрлеу функциясы, Ki – кілт(кілттерді түрлендіру туралы төменде жеке түсіндіріледі).

Ал, криптоалгоритмнің І-ші этапының жұмысы төмендегі схемада(сурет 2) көрсетілген.

Сурет 2 - DES криптоалгоритмінің І-ші этапы

Деректердің оң(R) бөлігі 3-ші кестеде көрсетілген схема бойынша орын ауыстыру арқылы 48-битке дейін кеңейтіледі, содан кейін XOR операциясы арқылы 48-биттік түрлендірілген кілтпен біріктіріледі. Бұның нәтижесі 4-ші кестеде көрсетілген 8 S-блок арқылы өтіп 32 битті құрайды, сосын бұл 32 бит 5-ші кестеде көрсетілгендей тағы да орын ауыстырылады. Сонында шыққан 32 бит сол(L) бөлігімен XOR арқылы біріктіріледі, сөйтіп нәтижесінде түрлендірілген жаңа оң(R) бөлік шығады, ал басындағы оң(R) жарты бөлік өзгерместен сол(L) жарты бөлікті алмастырады. Осы процесс 16 рет қайталанады.

Енді S блок жұмысын қарастырамыз: келіп түскен 48 битті алты биттен 8 бөлікке бөлеміз де, мына сегіз блокпен жұмыс істейміз S1, S2, ... , S8 , яғни келіп түскен 6 битті 4 битке түрлендіру. Әрбір S блокта төрт жол және 16 бағаннан тұрады, онда әрбір жолында қайталанбайтын 0-ден ...15-ке дейінгі сандар орналасқан. Мысалы, S1 – блокқа келіп түскен 110010 биттер осы блоктан шығарда 1111 биттерге алмастырылған. Келіп түскен биттердің біріншісі және алтыншысы жол номерін , қалғандары(2,3,4,5) баған номерін көрсетеді. Мұндағы 102 =2 , ал 10012 =9, сонда S1-ші блоктың екінші жолы мен тоғызыншы бағанының қиылысуындағы элемент -15, ол - 1111 болады. Осылайша барлық S блоктармен жұмыс істейміз, нәтижесінде 32 бит аламыз.

Кілтті түрлендіру. Алғашқыда берілген 64 биттік кілтті 6-шы кестеде көрсетілгендей орын ауыстыру арқылы 56 битке түрлендіреміз, яғни жұптылыққа тексеру үшін әрбір сегізінші битті (8,16,24,32,40,48,56,64) жоямыз. Содан кейін 56 битті екіге тең етіп 28 биттен бөлеміз, оның бірінші жартысы 57, 49, ..., 44, 36 биттерден, ал екінші жартысы 63, 55, ..., 12, 4 биттерден тұрады. Бұл биттермен 7-ші кестеде берілген жылжыту позицияларын пайдаланып, солға циклдік жылжыту жасаймыз. Осы кестеде көрсетілгендей DES алгоритмінің әрбір этапында әртүрлі позицияға солға циклдік жылжыту орындалады. Циклдік жылжыту процесі орындалып болғаннан кейін биттер біріктіріліп, оларға 8-ші кестеде көрсетілген схема бойынша орын ауыстыру жүргізіледі. Нәтижесінде шыққан 48 бит, жоғарыда айтылғандай(сурет-2) оң жақ жарты блокпен біріктіріледі.

DES криптоалгоритмінің кестелер жинағы

Кесте - 1 |  | Кесте -2 | Кесте -4

    58  50  42  34  26  18  10  02

    60  52  44  36  28  20  12  04

    62  54  46  38  30  22  14  06

    64  56  48  40  32  24  16  08

    57  49  41  33  25  17  09  01

    59  51  43  35  27  19  11  03

    61  53  45  37  29  21  13  05

63 55 47 39 31 23 15 07

    40  08  48  16  56  24  64  32

    39  07  47  15  55  23  63  31

    38  06  46  14  54  22  62  30

    37  05  45  13  53  21  61  29

    36  04  44  12  52  20  60  28

    35  03  43  11  51  19  59  27

    34  02  42  10  50  18  58  26

33 01 41 09 49 17 57 25

                Баған номері

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

     Ж

     О

     Л

     Д

     А

     Р

    Н

     о

     м

     е

     р

     і

     0

     1

     2

     3

     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  1 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

     S1

     0

     1

     2

     3

     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

     S2

     0

     1

     2

     3

     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

     S3

     0

     1

     2

     3

      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

     S4

     0

     1

     2

     3

      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

     S5

     0

     1

     2

     3

      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 13

     S6

     0

     1

     2

     3

      4 11  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

     S7

     0

     1

     2

     3

     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

     S8

Кесте -3 |  | Кесте -5

    32  01  02  03  04  05 04  05

    06  07  08  09  08  09  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 01

    16  07  20  21 29  12  28  17

    01  15  23  26 05  18  31  10

    02  08  24  14 32  27  03  09

    19  13  30  06 22  11  04  25

Кесте - 6 |  | Кесте -8

57 49 41 33 25 17 09

01 58 50 42 34 26 18

10 02 59 51 43 35 27

19 11 03 60 52 44 36

63 55 47 39 31 23 15

07 62 54 46 38 30 22

14 06 61 53 45 37 29

21 13 05 28 20 12 04

    14  17  11  24  01  05 03  28

    15  06  21  10  23  19 12  04

    26  08  16  07  27  20 13  02

41 52 31 37 47 55 30 40

51 45 33 48 44 49 39 56

34 53 46 42 50 36 29 32

    Кесте 7

Итерация номері

    01  02   03   04   05   06   07   08   09   10   11   12   13   14   15   16

Жылжыту позициясы

    1      1    2      2     2     2    2      2     1     2     2     2     2      2     2    1

DES алгоритмінің шифрлеу процессіне осылайша жүзеге асырылады. Ал, шифрленген деректерді қайтадан қалпына келтіру(расшифрования данных) процессі шифрлеу процессіне қарағанда инверсиялы болып келеді. Барлық іс-әрекет кері ретпен орындалады, яғни алдымен кері орын ауыстыру(кесте-2) сосын R және L жақ жарты бөліктермен f шифрлеу функциясы кері ретпен қайталанады. I – ші процессінің формуласы:

R(i-1)=L(i), i=1,2, ...,16;

L(i-1)=R(i) xor f(L(i),K(i)), i=1,2, ... ,16.

Соңында, алғашқы орын ауыстыру(кесте-1) орындалады. Бір ғана ерекшелік кілттерге байланысты: егер шифрлеу кезінде кілттер мына ретпен ki, К2, К3, ..., К16 қолданылса, мұнда кілттер мынадай ретпен К16, К15, Ki4, ..., ki қолданылатын болады, сонымен қатар кілттер циклдік оңға жылжытылады, ал жылжыту позициясының саны мынандай 0, 1,2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 ретпен беріледі.

Техникалық тапсырма

1. Текстік файлды DES шифрлеу алгоритмін қолданып шифрлеуді ұйымдастыру

2. Текстік файлды DES шифрлеу алгоритмін қолданып дешифрлеуді ұйымдастыру