Стандарт шифрування DES

Лабораторна робота 2

Стандарт шифрування DES

Мета роботи – опанувати методику шифрування алгоритмами збивання. На прикладі DES здійснити шифрування. Усвідомити сильні сторони в застосуванні даного методу шифрування.

Теоретичні відомості

Алгоритм DES був державним стандартом США і здійснює шифрування 64-бітових блоків даних за допомогою 64-бітового ключа. Процес шифрування полягає в початковій перестановці бітів 64-бітового блоку і 16 циклах шифрування, а розшифрування – 16 циклах розшифрування і у кінцевій перестановці бітів.

Слід зазначити, що всі таблиці, що приводяться, є стандартними і повинні включатися в реалізацію алгоритму DES у незмінному вигляді. Усі перестановки і коди в таблицях підібрані розроблювачами таким чином, щоб максимально заважати процесу дешифрування шляхом підбору ключа.

Підключ – деяка ключова інформація, яка отримується з основного ключа шифрування. На кожному раунді використовується нове значення підключа Ki (довжиною 48 біт), яке обчислюється з початкового 64-бітового ключа K з 8 бітами контролю парності, розташованими в позиціях 8,16,24,32,40,48,56,64. Для вилучення контрольних бітів і підготовки ключа до роботи використовується функція PC1 первісної підготовки ключа. Докладно процес одержання підключей показано на рис 1.1.

Результат перетворення PC1(K) розбивається на дві половини C0 і D0 по 28 біт кожна. Перші чотири рядки матриці PC1 визначають, як вибираються біти послідовності C0, останні чотири рядки – послідовності D0. Для генерації послідовностей не використовуються біти 8,16,24,32,40,48,56 і 64 ключа шифру. Таким чином, у дійсності ключ шифру є 56-бітовим.

Після визначення С0 і D0 рекурсивно визначаються Сi і Di, i = 1, 2,..., 16.

Для цього застосовуються операції циклічного зрушення вліво на один чи два біти в залежності від номера кроку раунду, як показано в таблиці, що приведена в додатку. Ключ Ki, обумовлений на кожнім кроці раунду, є результатом вибору конкретних бітів з 56-бітової послідовності Сi Di, і їхньої перестановки згідно з таблицею PC2, яка наведена в додатку. Іншими словами, ключ Ki=PC2(Ci Di) [17].

Рис. 1.1. Цикл отримання підключів для кожного раунду

Процес шифрування виглядає в такий спосіб. Нехай з файлу вхідного тексту був прочитаний черговий 64-бітовий (8-байтовий) блок T. Цей блок T обробляється за допомогою матриці початкової перестановки IP: біти вхідного блоку (64 біта) переставляються відповідно до матриці IP [2]. Отримана послідовність бітів розділяється на 2 послідовності: L0-ліві старші біти, R0-праві молодші біти, кожна з яких містить 32 біта. Потім виконується ітеративний процес шифрування, що складається з 16 раундів. (рис 1.2)

Рис 1.2. Структурна схема алгоритму DES

Нехай Ti- результат i-ого раунду:

Ti=LiRi,

(1.1)

де Li – перші 32 біта послідовності, Ri – останні 32 біта послідовності. Тоді результат i-ого раунду описується наступними формулами:

Li=Ri-1, i=1,2,3, …, 16,

(1.2)

Ri=Li-1 xor f(Ri-1, Ki), i=1,2,3, …, 16.

(1.3)

Функція f називається функцією шифрування. Її аргументами є послідовність Ri-1, одержувана на попередньому кроці раунду, і 48-бітовий підключ Ki, що є результатом перетворень 64-бітового ключа шифру K.

На останньому кроці раунду одержують послідовності R16 і L16, що об’єднуються в 64-бітову послідовність – здійснюється відновлення позицій бітів за допомогою матриці зворотної перестановки IP-1 [17]. Елементи матриць IP і IP-1 зв’язані між собою.

Тепер розглянемо, що ховається під перетворенням, позначеним літерою f. Для обчислення значення функції f використовуються:

  • функція E (розширення 32 біт до 48);
  • функція S1,S2, …,S8 (перетворення 6-бітового числа в 4-бітове);
  • функція P (перестановка бітів у 32-бітовій послідовності).

Приведемо визначення цих функцій і процес шифрування більш докладно.

1. Функція розширення E приймає блок з 32 біт і породжує блок з 48 біт, відповідно до матриці E.

2. Отриманий результат складається по модулю 2 (операція XOR) з поточним значенням ключа Ki і потім розбивається на вісім 6-бітових блоків B1,B2, …,B8...

3. Далі кожний з цих блоків використовується як номер елемента у блоках S1,S2, …,S8, що мають 4-бітові значення. Нехай на вхід функції Sj надходить 6-бітовий блок Bj=b1b2b3b4b5b6, тоді двохбітове число b1b6 указує номер рядка матриці, а чотирьохбітове число b2b3b4b5 – номер стовпця в наступній таблиці.

Сукупність 6-бітових блоків B1,B2, …,B8 забезпечує вибір чотирьохбітового елемента в кожній з функцій S1,S2, …,S8... У результаті одержуємо S1(B1) S2(B2) … S8(B8), або 32-бітовий блок (оскільки матриці Sj містять 4-бітові елементи).

4. Цей 32-бітовий блок перетвориться за допомогою функції перестановки бітів P. Таким чином, функція шифрування f (Ri-1,Ki)=P (S1 (B1) S2 (B2) … S8 (B8))...

5. Далі випливає додавання по модулю 2 лівого підблока й результату перетворення правого підблока.

Процес розшифровування даних є інверсним стосовно процесу шифрування. Усі дії повинні бути виконані в зворотному порядку. Це означає, що дані, що розшифровуються, спочатку переставляються відповідно до матриці IP-1 ,а потім над послідовністю бітів R16L16 виконуються ті ж дії, що й у процесі шифрування, але в зворотному порядку.

Ітеративний процес розшифрування може бути описаний наступними формулами:

Ri=Li, i=1,2,3, …, 16,

(1.4)

Li-1=Ri xor f (Li, Ki), i=1,2,3, …, 16. R16L 16

(1.5)

Таким чином, для процесу розшифрування з переставленим вхідним блоком R16L16 на першому раунді використовується ключ K16, на другому раунді – K15 і т.д. На 16-ому раунді використовується ключ K1. на останньому кроці останнього раунду будуть отримані послідовності L0 і R0, що конкатенуються (об’єднуються) в 64-бітову послідовність L0R0. Потім у цій послідовності 64 біта переставляються відповідно до матриці IP. Результат такого перетворення – вихідна послідовність бітів. (див. рис. 1.2.)

Основні режими роботи алгоритму DES. Алгоритм DES дозволяє безпосередньо перетворювати 64-бітовий вхідний відкритий текст у 64-бітовий вихідний шифрований текст, однак дані рідко обмежуються 64 розрядами. Щоб скористатися алгоритмом DES для рішення різноманітних криптографічних задач, розроблені чотири робочі режими:

електронна кодова книга ЕСВ (Electronic Code Book);

зчеплення блоків шифру СВС (Cipher Block Chaining);

зворотний зв’язок по шифртексту СРВ (Cipher Feed Back);

зворотний зв’язок по виходу OFB (Output Feed Back)[3].

Режим "Електронна кодова книга". Довгий файл розбивають на 64-бітові відрізки (блоки) по 8 байтів. Кожний з цих блоків шифрують незалежно з використанням того ж самого ключа шифрування. Найбільша перевага цього режиму – простота реалізації. Недолік – відносно слабка стійкість проти кваліфікованих криптоаналітиків. Через фіксований характер шифрування при обмеженій довжині блоку (64 біта) можливе проведення криптоаналізу „зі словником”. Блок такого розміру може повторитися в повідомленні унаслідок великої розмірності тексту. Це приводить до того, що ідентичні блоки відкритого тексту в повідомленні будуть представлені ідентичними блоками шифротексту, що дає криптоаналітику деяку інформацію про зміст повідомлення [2].

Режим "Зчеплення блоків шифру". У цьому режимі вхідний файл М розбивається на 64-бітові блоки: М=M1M2...Mn. Перший блок M1 складається по модулю 2 з 64-бітовим початковим вектором (IV), що змінюється щодня і тримається в секреті. Отримана сума потім шифрується з використанням ключа DES. Отриманий 64-бітовий шифр C1 складається по модулю 2 із другим блоком тексту, результат шифрується і отримується другий 64-бітовий шифр С2, і т.д. Процедура повторюється доти, доки не будуть оброблені всі блоки тексту. Таким чином, для всіх i = 1...n (n – число блоків) результат шифрування Ci визначається у такий спосіб: Сi=DES(Mi xor Сi-1), де С0=IV-початкове значення шифру, що дорівнює початковому вектору ініціалізації. Очевидно, що останній 64-бітовий блок шифротексту є функцією секретного ключа, початкового вектора і кожного біта відкритого тексту незалежно від його довжини. Цей блок шифротексту називають кодом аутентифікації повідомлення (КАП). Код КАП може бути легко перевірений одержувачем, що володіє секретним ключем і початковим вектором, шляхом повторення процедури, виконаної відправником. Перевага даного режиму в тому, що він не дозволяє накопичуватися помилкам при передачі. Блок М, є функцією тільки Сi-1 і Ci. Тому помилка при передачі приведе до втрати тільки двох блоків вихідного тексту [2].

Режим "Зворотний зв’язок за шифром". У цьому режимі розмір блоку може відрізнятися від 64 біт. Файл, що підлягає шифруванню, зчитується послідовними блоками довжиною k бітів k=1...64). Вхідний блок (64-бітовий) спочатку містить вектор ініціалізації, вирівняний по правому краю. Припустимо, що в результаті розбивання на блоки ми одержали n блоків довжиною k бітів кожний (залишок дописується нулями чи пробілами). Тоді для будь-якого i=1...n блок шифротексту Сi=Mi xor Pi-1, де Pi-1 позначає k старших бітів попереднього зашифрованого блоку. Ці k старших бітів , що вже використані при шифруванні, відкидаються і вхідний блок зсовується на k бітів. Для відновлення зашифрованих даних Pi-1 і Сi, відкритий текст обчислюється аналогічним чином Мi=Сi xor Pi-1 [2].

Режим "Зворотний зв’язок по виходу". Цей режим теж використовує змінний розмір блоку і регістр зсуву , що ініціюється (набуває початкового значення) так само, як у режимі СРВ, а саме – вхідний блок спочатку містить вектор ініціалізації IV, вирівняний по правому краю. При цьому, для кожного сеансу шифрування даних необхідно використовувати новий початковий стан регістра, що повинний пересилатися по каналу відкритим текстом. Покладемо М = M1 М2... Мn. Для всіх i = 1... n Сi=Мi xor Рi , де Рi – старші k бітів операції DES (Ci-1). На відміну від режиму зворотного зв’язку по шифру, відновлення регістра зсуву здійснюється шляхом відкидання старших k бітів і дописування їх праворуч відносно Р1 [13].

Хід виконання роботи

Таблиця 1 – Ключ

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

0

1

0

0

1

0

1

1

1

1

0

0

0

0

1

1

0

1

0

1

0

0

1

0

1

1

0

0

0

0

1

1

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

0

0

0

0

0

1

0

0

1

1

0

1

0

0

0

0

0

1

0

1

1

0

1

1

0

1

0

1

1

1

0

1

Функція PC1 первісної підготовки ключа

57

49

41

33

25

17

9

1

58

50

42

34

26

18

10

2

59

51

43

35

27

19

11

3

60

52

44

36

63

55

47

39

31

23

15

7

62

54

46

38

30

22

14

6

61

53

45

37

29

21

13

5

28

20

12

4

Таблиця 2 – Отриманий за допомогою функції РС1 регистр C0

57

49

41

33

25

17

9

1

58

50

42

34

26

18

10

2

59

51

43

35

27

19

11

3

60

52

44

36

0

0

1

0

1

0

1

0

1

1

1

0

1

1

1

1

0

0

0

0

0

0

0

0

1

1

1

0

Таблиця 3 – Отриманий за допомогою функції РС1 регистр D0

63

55

47

39

31

23

15

7

62

54

46

38

30

22

14

6

61

53

45

37

29

21

13

5

28

20

12

4

0

1

0

0

1

1

1

1

1

0

0

1

0

0

0

0

1

1

0

0

0

0

0

1

0

1

0

0

Таблиця 4 – Отриманий за допомогою зсуву вліво на 1біт регистр C1

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

0

1

0

1

0

1

0

1

1

1

0

1

1

1

1

0

0

0

0

0

0

0

0

1

1

1

0

0

Таблиця 5 – Отриманий за допомогою зсуву вліво на 1біт регистр D1

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

1

0

0

1

1

1

1

1

0

0

1

0

0

0

0

1

1

0

0

0

0

0

1

0

1

0

0

0

Таблиця 6 – Отриманий за допомогою функції РС2 підключ К1

Функція РС2

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

0

0

0

0

0

1

0

0

1

0

0

1

1

0

0

1

0

1

0

1

0

0

1

0

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

1

1

0

0

0

0

1

1

0

0

0

0

0

1

0

0

1

1

0

1

0

0

0

0

Таблиця 7 – Шифротекст

3

11000110 00000110 11000011 10010001 01101010 00110110 01110001 11000100

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

1

1

0

0

0

1

1

0

0

0

0

0

0

1

1

0

1

1

0

0

0

0

1

1

1

0

0

1

0

0

0

1

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

0

1

1

0

1

0

1

0

0

0

1

1

0

1

1

0

0

1

1

1

0

0

0

1

1

1

0

0

0

1

0

0

Матриця початкової перестановки IP

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

Таблиця 8 – Старші біти шифротексту отримані за допомогою функції IP

L0

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

1

0

0

0

1

1

0

1

0

1

1

1

0

0

0

0

0

0

0

1

0

0

0

0

0

0

1

1

0

1

1

1

Таблиця 9 – Молодші біти шифротексту отримані за допомогою функції IP R0

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

1

1

0

1

0

1

0

1

0

1

1

0

1

0

0

0

1

0

1

0

0

0

1

1

0

1

0

0

1

1

0

0

Матриця розширення E

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

Таблиця 10 – Розширення молодших бітів шифротексту за допомогою функції E R0

32

1

2

3

4

5

4

5

6

7

8

9

8

9

10

11

12

13

12

13

14

15

16

17

0

1

1

0

1

0

1

0

1

0

1

0

1

0

1

1

0

1

0

1

0

0

0

1

16

17

18

19

20

21

20

21

22

23

24

25

24

25

26

27

28

29

28

29

30

31

32

1

0

1

0

1

0

0

0

0

0

1

1

0

1

0

1

0

0

1

0

1

1

0

0

1

Таблиця 11 – XOR розширеного R0 та К1

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

К1

0

0

0

0

0

1

0

0

1

0

0

1

1

0

0

1

0

1

0

1

0

0

1

0

R0

0

1

1

0

1

0

1

0

1

0

1

0

1

0

1

1

0

1

0

1

0

0

0

1

Ре

0

1

1

0

1

1

1

0

1

0

1

1

0

0

1

0

0

0

0

0

0

0

1

1

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

К1

1

1

0

0

0

0

1

1

0

0

0

0

0

1

0

0

1

1

0

1

0

0

0

0

R0

0

1

0

1

0

0

0

0

0

1

1

0

1

0

1

0

0

1

0

1

1

0

0

1

Ре

1

0

0

1

0

0

1

1

0

1

1

0

1

1

1

0

1

0

0

0

1

0

0

1

b1b2b3b4b5b6

1

2

3

4

5

6

№ рядка

b1b6

рядка

стовпця

b2b3b4b5

стовпця

Число

десяткове

Число

двійкове,S

S1(B1)

0

1

1

0

1

1

01

1

1101

13

5

0101

S2(B2)

1

0

1

0

1

1

11

3

0101

5

15

1111

S3(B3)

0

0

1

0

0

0

00

0

0100

4

6

0110

S4(B4)

0

0

0

0

1

1

01

1

0001

1

8

1000

S5(B5)

1

0

0

1

0

0

10

2

0010

2

1

0001

S6(B6)

1

1

0

1

1

0

10

2

1011

11

10

1010

S7(B7)

1

1

1

0

1

0

10

2

1101

13

5

0101

S8(B8)

0

0

1

0

0

1

01

1

0100

4

10

1010

Таблиця 12 – Перетворення XOR розширеного R0 та К1 функцією S

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

Ре

0

1

1

0

1

1

1

0

1

0

1

1

0

0

1

0

0

0

0

0

0

0

1

1

S

0

1

0

1

1

1

1

1

0

1

1

0

1

0

0

0

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

Ре

1

0

0

1

0

0

1

1

0

1

1

0

1

1

1

0

1

0

0

0

1

0

0

1

S

0

0

0

1

1

0

1

0

0

1

0

1

1

0

1

0

Таблиця 13 – Результат роботи функції S

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

0

1

0

1

1

1

1

1

0

1

1

0

1

0

0

0

0

0

0

1

1

0

1

0

0

1

0

1

1

0

1

0

Таблиця 14 – Результат роботи функції P

16

7

20

21

29

12

28

17

1

15

23

26

15

18

31

10

2

8

24

14

32

27

3

9

19

13

30

6

22

11

4

25

0

1

1

1

1

0

1

0

0

0

1

1

0

0

1

1

1

1

0

0

0

0

0

0

0

1

0

1

0

1

1

0

Функція P перестановки бітів

16

7

20

21

29

12

28

17

1

15

23

26

15

18

31

10

2

8

24

14

32

27

3

9

19

13

30

6

22

11

4

25

Таблиця 15 – Результат роботи функції P

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

Р

0

1

1

1

1

0

1

0

0

0

1

1

0

0

1

1

1

1

0

0

0

0

0

0

0

1

0

1

0

1

1

0

L

1

0

0

0

1

1

0

1

0

1

1

1

0

0

0

0

0

0

0

1

0

0

0

0

0

0

1

1

0

1

1

1

Х

1

1

1

1

0

1

1

1

0

1

0

0

0

0

1

1

1

1

0

1

0

0

0

0

0

1

1

0

0

0

0

0

Таблиця 16 – Результати роботи першого раунду

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

R

1

1

1

1

0

1

1

1

0

1

0

0

0

0

1

1

1

1

0

1

0

0

0

0

0

1

1

0

0

0

0

0

L

1

1

0

1

0

1

0

1

0

1

1

0

1

0

0

0

1

0

1

0

0

0

1

1

0

1

0

0

1

1

0

0

Висновки: В результаті виконання лабораторної роботи опановано методику шифрування алгоритмами збивання. На прикладі DES виконано перший раунд шифрування.


Змн.

Арк.

№ докум.

ідпис

Дата

Арк.

1

6.170102.4381ЛР 2

Студент

Борцов А.С.

Викладач

Щелконогов О.О.

Стандарт шифрування DES

Літ.

Аркушів

НУК

K(56+8)

PC1

Регістр C

Регістр D

Зсув

Регістр C

Регістр D

PC2

Kі(48 біт)

Input

IP

L0

R0

f(R0,K)

L1=R0

R1=L0f(R0,K)

K1

f(R1,K)

L15=R14

R15=L14f(R14,K)

K2

f(R15,K)

L16=R15

R16=L15f(R15,K)

K16

R16

L16

IP-1

Output

Стандарт шифрування DES