chủ đề 4: data encryption standard và advanced encryption standard

55
Chủ đề 4: Data Encryption Standard và Advanced Encryption Standard ThS. Trần Minh Triết ThS. Trần Minh Triết

Upload: taryn

Post on 05-Jan-2016

71 views

Category:

Documents


13 download

DESCRIPTION

Chủ đề 4: Data Encryption Standard và Advanced Encryption Standard. ThS. Trần Minh Triết. Nội dung. Data Encryption Standard Advanced Encryption Standard. Mã hóa tích (Product Cipher). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Chủ đề 4:

Data Encryption Standard và Advanced Encryption Standard

Chủ đề 4:

Data Encryption Standard và Advanced Encryption Standard

ThS. Trần Minh TriếtThS. Trần Minh Triết

Page 2: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Nội dungNội dung

Data Encryption StandardData Encryption Standard

Advanced Encryption StandardAdvanced Encryption Standard

Page 3: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Mã hóa tích (Product Cipher)Mã hóa tích (Product Cipher)

Mã hóa chỉ sử dụng phép thay thế (Mã hóa chỉ sử dụng phép thay thế (substitutionsubstitution) ) hay phép đổi chỗ (hay phép đổi chỗ (transpositiontransposition) không an toàn (do ) không an toàn (do đặc tính của ngôn ngữ)đặc tính của ngôn ngữ)Sử dụng liên tiếp các thao tác mã hóa đơn giản sẽ tạo Sử dụng liên tiếp các thao tác mã hóa đơn giản sẽ tạo ra cách mã hóa thông tin an toàn hơnra cách mã hóa thông tin an toàn hơn

SubstitutionSubstitution kết hợp với kết hợp với SubstitutionSubstitution an toàn an toàn hơn 1 phép hơn 1 phép SubstitutionSubstitutionTranspositionTransposition kết hợp với kết hợp với TranspositionTransposition an an toàn hơn 1 phép toàn hơn 1 phép TranspositionTransposition

SubstitutionSubstitution kết hợp kết hợp TranspositionTransposition cho kết cho kết quả an toàn hơn nhiều so với việc chỉ dùng một quả an toàn hơn nhiều so với việc chỉ dùng một loại thao tác (thay thế hay đổi chỗ)loại thao tác (thay thế hay đổi chỗ)

Đây là ý tưởng mở đầu cho các phương pháp mã hóa Đây là ý tưởng mở đầu cho các phương pháp mã hóa hiện đạihiện đại

Page 4: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Quy trình mã hóa theo khốiQuy trình mã hóa theo khối

Key ScheduleKey ScheduleKey ScheduleKey Schedule

Data PathData PathData PathData Path

Secret KeySecret Key

PlainTextPlainText

Round Keys (Sub Keys)Round Keys (Sub Keys)

Page 5: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Quy trình mã hóa theo khốiQuy trình mã hóa theo khối

Data Path:Data Path:

Thông thường, quy trình mã hóa bao gồm nhiều Thông thường, quy trình mã hóa bao gồm nhiều chu kỳ mã hóa (round) liên tiếp nhau; mỗi chu kỳ chu kỳ mã hóa (round) liên tiếp nhau; mỗi chu kỳ gồm nhiều thao tác mã hóagồm nhiều thao tác mã hóa

Key Schedule:Key Schedule:

Từ khóa gốc (secret key), phát sinh (có quy luật) Từ khóa gốc (secret key), phát sinh (có quy luật) các giá trị khóa sẽ được sử dụng trong mỗi chu kỳ các giá trị khóa sẽ được sử dụng trong mỗi chu kỳ mã hóa (round key)mã hóa (round key)

Page 6: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Kiến trúc chu kỳ mã hóaKiến trúc chu kỳ mã hóa

Kiến trúc phổ biến của chu kỳ mã hóa:Kiến trúc phổ biến của chu kỳ mã hóa:

Kiến trúc FiestelKiến trúc FiestelVí dụ: Blowfish, Camellia, CAST-128, DES, FEAL, Ví dụ: Blowfish, Camellia, CAST-128, DES, FEAL, KASUMI, LOKI97, Lucifer, MARS, MAGENTA, KASUMI, LOKI97, Lucifer, MARS, MAGENTA, MISTY1, RC5, TEA, Triple DES, Twofish, XTEAMISTY1, RC5, TEA, Triple DES, Twofish, XTEA

Kiến trúc SPNKiến trúc SPNVí dụ: Rijndael – AES, Anubis…Ví dụ: Rijndael – AES, Anubis…

Page 7: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Data Encryption StandardData Encryption Standard

Page 8: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Data Encryption StandardData Encryption Standard

Mã hóa theo khối (block cipher)Mã hóa theo khối (block cipher)Ý tưởng: mã hóa tích (product cipher)Ý tưởng: mã hóa tích (product cipher)

Key: 56 bitKey: 56 bitBlock: 64 bitBlock: 64 bit

Được IBM phát triển từ phương pháp Được IBM phát triển từ phương pháp LuciferLuciferChính thức công bố năm Chính thức công bố năm 19751975Được chọn là Chuẩn xử lý thông tin liên bang Được chọn là Chuẩn xử lý thông tin liên bang (Federal Information Processing Standard - FIPS) (Federal Information Processing Standard - FIPS) năm năm 19761976Giải thuật mã hóa và giải mã được công bốGiải thuật mã hóa và giải mã được công bốCơ sở Toán học và mật mã của việc thiết kế DES: Cơ sở Toán học và mật mã của việc thiết kế DES: thông tin bí mậtthông tin bí mật

Page 9: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Chu kỳ mã hóa Chu kỳ mã hóa ii

Chu kỳ mã hóa Chu kỳ mã hóa NrNr

Quy trình Mã hóa theo kiến trúc FeistelQuy trình Mã hóa theo kiến trúc Feistel

Chu kỳ mã hóa 1Chu kỳ mã hóa 1

LLii-1-1 RRii-1-1

KKii-1-1

LLii RRii

ff ff

LLii = = RRii-1-1

RRii = = LLii-1-1 f f ((RRii-1-1, , KKii-1-1))

Page 10: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Chu kỳ giải mã Chu kỳ giải mã NrNr

Chu kỳ giải mã Chu kỳ giải mã ii

Chu kỳ giải mã Chu kỳ giải mã 11

Quy trình Giải mã theo kiến trúc FeistelQuy trình Giải mã theo kiến trúc Feistel

LLii RRii

KKii

LLii-1-1 RRii-1-1

ff ff

RRii-1-1 = = LLii

LLi-1i-1 = = RRii f f ((LLii, , KKii))

Page 11: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Chu kỳ mã hóa 1Chu kỳ mã hóa 1

Chu kỳ mã hóa Chu kỳ mã hóa ii

Chu kỳ mã hóa 16Chu kỳ mã hóa 16

Quy trình Mã hóa của giải thuật DESQuy trình Mã hóa của giải thuật DES

Initial Permutation Initial Permutation

Final Permutation (Final Permutation (RR1616,,LL1616) )

Plaintext Plaintext (64-bit)(64-bit)

Plaintext Plaintext (64-bit)(64-bit)

Ciphertext Ciphertext (64-bit)(64-bit)

Ciphertext Ciphertext (64-bit)(64-bit)

IP: Initial PermutationIP: Initial PermutationFP: Final PermutationFP: Final Permutation

FP = IPFP = IP-1-1

Ghi chú:Ghi chú:FP và IP không có ý nghĩa về FP và IP không có ý nghĩa về mặt mã hóa, chi có tác dụng mặt mã hóa, chi có tác dụng để nạp dữ liệu vào và ra các để nạp dữ liệu vào và ra các khối dữ liệu (theo cơ chế phần khối dữ liệu (theo cơ chế phần cứng giữa thập niên 1970!!!)cứng giữa thập niên 1970!!!)

Page 12: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Initial PermutationInitial PermutationInitial PermutationInitial Permutation

IPIP

5858 5050 4242 3434 2626 1818 1010 22

6060 5252 4444 3636 2828 2020 1212 44

6262 5454 4646 3838 3030 2222 1414 66

6464 5656 4848 4040 3232 2424 1616 88

5757 4949 4141 3333 2525 1717     99 11

5959 5151 4343 3535 2727 1919 1111 33

6161 5353 4545 3737 2929 2121 1313 55

6363 5555 4747 3939 3131 2323 1515 77

Ví dụ: Bit thứ 58 của Ví dụ: Bit thứ 58 của xx trở thành bit đầu tiên của trở thành bit đầu tiên của IP(IP(xx)) Bit thứ 50 của x trở thành bit thứ hai của Bit thứ 50 của x trở thành bit thứ hai của IP(IP(xx))

Page 13: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Final PermutationFinal PermutationFinal PermutationFinal Permutation

Ví dụ: Bit thứ 58 của Ví dụ: Bit thứ 58 của xx trở thành bit đầu tiên của trở thành bit đầu tiên của IP(IP(xx)) Bit thứ 50 của x trở thành bit thứ hai của Bit thứ 50 của x trở thành bit thứ hai của IP(IP(xx))

IPIP

4040 88 4848 1616 5656 2424 6464 3232

3939 77 4747 1515 5555 2323 6363 3131

3838 66 4646 1414 5454 2222 6262 3030

3737 55 4545 1313 5353 2121 6161 2929

3636 44 4444 1212 5252 2020 6060 2828

3535 33 4343 1111 5151 1919 5959 2727

3434 22 4242 1010 5050 1818 5858 2626

3333 11 4141     99 4949 1717 5757 2525

Page 14: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

ExpansionExpansionExpansionExpansion

Bảng chọn lựa bit EBảng chọn lựa bit E

3232     11     22     33     44     55

    44     55     66     77     88     99

    88     99 1010 1111 1212 1313

1212 1313 1414 1515 1616 1717

1616 1717 1818 1919 2020 2121

2020 2121 2222 2323 2424 2525

2424 2525 2626 2727 2828 2929

2828 2929 3030 3131 3232     11

Bảng E: quy tắc mở rộng từ 32 bit thành 48 bitBảng E: quy tắc mở rộng từ 32 bit thành 48 bit

Page 15: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Hàm f trong DESHàm f trong DES

PPermutationermutation

SS11SS11 SS22

SS22 SS33SS33 SS44

SS44 SS55SS55 SS66

SS66 SS77SS77 SS88

SS88

EExpansion xpansion EExpansion xpansion

Nửa khốiNửa khối(32 bit)(32 bit)

Nửa khốiNửa khối(32 bit)(32 bit)

Sub KeySub Key(48 bit)(48 bit)

48 bit48 bit

Page 16: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

S-boxS-box

SS11

1414     44 1313     11     22 1515 1111     88     33 1010     66 1212     55     99     00     77

    00 1515     77     44 1414     22 1313     11 1010     66 1212 1111     99     55     33     88

    44     11 1414     88 1313     66     22 1111 1515 1212     99     77     33 1010     55     00

1515 1212     88     22     44     99     11     77     55 1111     33 1414 1010     00     66 1313

SS22

1515     11     88 1414     66 1111     33     44     99     77     22 1313 1212     00     55 1010

    33 1313     44     77 1515     22     88 1414 1212     00     11 1010     66     99 1111     55

    00 1414     77 1111 1010     44 1313     11     55     88 1212     66     99     33     22 1515

1313     88 1010     11     33 1515     44     22 1111     66     77 1212     00     55 1414     99

Ví dụ: Bj = b1b2b3b4b5b6 thì Sj(Bi) = = SSjj[[bb11bb66][][bb22bb33bb44bb55]]

Page 17: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

S-boxS-boxS-boxS-box

SS33

1010     00     99 1414     66     33 1515     55     11 1313 1212     77 1111     44     22     88

1313     77     00     99     33     44     66 1010     22     88     55 1414 1212 1111 1515     11

1313     66     44     99     88 1515     33     00 1111     11     22 1212     55 1010 1414     77

    11 1010 1313     00     66     99     88     77     44 1515 1414     33 1111     55     22 1212

SS44

    77 1313 1414     33     00     66     99 1010     11     22     88     55 1111 1212     44 1515

1313     88 1111     55     66 1515     00     33     44     77     22 1212     11 1010 1414     99

1010     66     99     00 1212 1111     77 1313 1515     11     33 1414     55     22     88     44

    33 1515     00     66 1010     11 1313     88     99     44     55 1111 1212     77     22 1414

Page 18: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

S-boxS-boxS-boxS-box

SS55

    22 1212     44     11     77 1010 1111     66     88     55     33 1515 1313     00 1414     99

1414 1111     22 1212     44     77 1313     11     55     00 1515 1010     33     99     88     66

    44     22     11 1111 1010 1313     77     88 1515     99 1212     55     66     33     00 1414

1111     88 1212     77     11 1414     22 1313     66 1515     00     99 1010     44     55     33

SS66

1212     11 1010 1515     99     22     66     88     00 1313     33     44 1414     77     55 1111

1010 1515     44     22     77 1212     99     55     66     11 1313 1414     00 1111     33     88

    99 1414 1515     55     22     88 1212     33     77     00     44 1010     11 1313 1111     66

    44     33     22 1212     99     55 1515 1010 1111 1414     11     77     66     00     88 1313

Page 19: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

S-boxS-boxS-boxS-box

SS77

    44 1111     22 1414 1515     00     88 1313     33 1212     99     77     55 1010     66     11

1313     00 1111     77     44     99     11 1010 1414     33     55 1212     22 1515     88     66

    11     44 1111 1313 1212     33     77 1414 1010 1515     66     88     00     55     99     22

    66 1111 1313     88     11     44 1010     77     99     55     00 1515 1414     22     33 1212

SS88

1313     22     88     44     66 1515 1111     11 1010     99     33 1414     55     00 1212     77

    11 1515 1313     88 1010     33     77     44 1212     55     66 1111     00 1414     99     22

    77 1111     44     11     99 1212 1414     22     00     66 1010 1313 1515     33     55     88

    22     11 1414     77     44 1010     88 1313 1515 1212     99     00     33     55     66 1111

Page 20: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Bảng hoán vị PBảng hoán vị PBảng hoán vị PBảng hoán vị P

PP

1616     77 2020 2121

2929 1212 2828 1717

    11 1515 2323 2626

    55 1818 3131 1010

    22     88 2424 1414

3232 2727     33     99

1919 1313 3030     66

2222 1111     44 2525

Page 21: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Key ScheduleKey Schedule

Thao tác xoay vòng bitThao tác xoay vòng bit

<<<: Xoay vòng sang trái<<<: Xoay vòng sang trái

>>>: Xoay vòng sang phải>>>: Xoay vòng sang phải

Với subkey thứ 1, 2, 9, 16: xoay Với subkey thứ 1, 2, 9, 16: xoay vòng 1 vị trívòng 1 vị trí

Với subkey còn lại: xoay vòng 2 vị Với subkey còn lại: xoay vòng 2 vị trítrí

Page 22: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Các hoán vị trong Key ScheduleCác hoán vị trong Key Schedule

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

PC-1

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

Chọn 56 bitChọn 56 bit

(bỏ bit 8, 16, 24, 32, (bỏ bit 8, 16, 24, 32,

40, 48, 56, 6440, 48, 56, 64

Chọn 56 bitChọn 56 bit

(bỏ bit 8, 16, 24, 32, (bỏ bit 8, 16, 24, 32,

40, 48, 56, 6440, 48, 56, 64

Chọn 48 bitChọn 48 bit(bỏ bit 9, 18, 22, 25, (bỏ bit 9, 18, 22, 25,

35, 38, 43, 54)35, 38, 43, 54)

Chọn 48 bitChọn 48 bit(bỏ bit 9, 18, 22, 25, (bỏ bit 9, 18, 22, 25,

35, 38, 43, 54)35, 38, 43, 54)

Page 23: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Một số nhận xétMột số nhận xét

4 khóa yếu (weak key):4 khóa yếu (weak key):

Gồm toàn bit 0Gồm toàn bit 0

Gồm toàn bit 1Gồm toàn bit 1

Gồm ½ là bit 0 (liên tiếp), ½ là bit 1 (liên tiếp)Gồm ½ là bit 0 (liên tiếp), ½ là bit 1 (liên tiếp)

12 khóa “tương đối yếu” (semi-weak key)12 khóa “tương đối yếu” (semi-weak key)

Tính chất: EncryptTính chất: Encryptk k ((PP) = ) = PP

Khóa có dạng: 7 bit 0 (liên tiếp), 7 bit 1 (liên tiếp)Khóa có dạng: 7 bit 0 (liên tiếp), 7 bit 1 (liên tiếp)

Khóa bù (complement key)Khóa bù (complement key)

EncryptEncryptkk((PP) = ) = CC Encrypt Encryptk*k*((P*P*) = ) = C*C*

Với Với xx* được tạo bằng cách đảo ngược các bit của * được tạo bằng cách đảo ngược các bit của xx

Page 24: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Advanced Encryption StandardAdvanced Encryption Standard

Page 25: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Phương pháp mã hóa RijndaelPhương pháp mã hóa Rijndael

Phương pháp Rijndael do Vincent Rijmen và Joan Phương pháp Rijndael do Vincent Rijmen và Joan Daeman đề nghịDaeman đề nghị

Viện Tiêu chuẩn và Công nghệ Hoa Kỳ (National Viện Tiêu chuẩn và Công nghệ Hoa Kỳ (National Institute of Standards and Technology – NIST) chọn Institute of Standards and Technology – NIST) chọn làm chuẩn mã hóa nâng cao (Advanced Encryption làm chuẩn mã hóa nâng cao (Advanced Encryption Standard) từ 02 tháng 10 năm 2000 Standard) từ 02 tháng 10 năm 2000

Page 26: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Phương pháp mã hóa RijndaelPhương pháp mã hóa Rijndael

Phương pháp mã hóa theo khối (block cipher) có kích Phương pháp mã hóa theo khối (block cipher) có kích thước khối và mã khóa thay đổi linh hoạt với các giá thước khối và mã khóa thay đổi linh hoạt với các giá trị 128, 192 hay 256 bit. trị 128, 192 hay 256 bit.

Phương pháp này thích hợp ứng dụng trên nhiều hệ Phương pháp này thích hợp ứng dụng trên nhiều hệ thống khác nhau từ các thẻ thông minh cho đến các thống khác nhau từ các thẻ thông minh cho đến các máy tính cá nhân máy tính cá nhân

Page 27: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Một số khái niệm Toán họcMột số khái niệm Toán học

Đơn vị thông tin được xử lý trong thuật toán Rijndael Đơn vị thông tin được xử lý trong thuật toán Rijndael là byte là byte

Mỗi byte xem như một phần tử của trường Galois Mỗi byte xem như một phần tử của trường Galois GF(2GF(288) được trang bị phép cộng (ký hiệu ) được trang bị phép cộng (ký hiệu ) và phép ) và phép nhân (ký hiệu nhân (ký hiệu ) )

Mỗi byte được biểu diễn theo nhiều cách khác nhau: Mỗi byte được biểu diễn theo nhiều cách khác nhau:

Dạng nhị phân: Dạng nhị phân: {{bb77bb66bb55bb44bb33bb22bb11bb00} }

Dạng thập lục phân: Dạng thập lục phân: {{hh11hh00}}

Dạng đa thức có các hệ số nhị phân Dạng đa thức có các hệ số nhị phân

7

0i

ii xb

Page 28: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Phép toán trên GF (28)Phép toán trên GF (28)

Phép cộng trên GF(2Phép cộng trên GF(288))

{{aa77aa66aa55aa44aa33aa22aa11aa00}} {{bb77bb66bb55bb44bb33bb22bb11bb00}}

= = {{cc77cc66cc55cc44cc33cc22cc11cc00}}

với với ccii = = aaii bbii, 0, 0 i i 7 7

Phép nhân trên GF(2Phép nhân trên GF(288))

aa((xx) ) bb((xx) = ) = aa((xx) ) bb((xx) mod () mod (xx88 + + xx44 + + xx33 + + xx + 1) + 1)

Page 29: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Đa thức với hệ số trên GF(28) Đa thức với hệ số trên GF(28)

3

0

)(i

ii xaxa

3

0i

ii xbxb

3

0

)()()(i

iii xbaxbxa

)2(GF 8ia

)2(GF 8ib

Page 30: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Đa thức với hệ số trên GF(28)Đa thức với hệ số trên GF(28)

3

2

1

0

0123

3012

2301

1230

3

2

1

0

b

b

b

b

aaaa

aaaa

aaaa

aaaa

c

c

c

c

1mod 4 xxbxaxbxaxc

Page 31: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Phương pháp RijndaelPhương pháp Rijndael

Kết quả trung gian giữa các bước biến đổi được gọi là Kết quả trung gian giữa các bước biến đổi được gọi là trạng thái (state)trạng thái (state)

Một trạng thái được biểu diễn dưới dạng ma trận gồm Một trạng thái được biểu diễn dưới dạng ma trận gồm 4 dòng và 4 dòng và NbNb cột với cột với NbNb bằng độ dài khối chia cho 32 bằng độ dài khối chia cho 32

Mã khóa chính (Cipher Key) được biểu diễn dưới Mã khóa chính (Cipher Key) được biểu diễn dưới dạng ma trận gồm 4 dòng và dạng ma trận gồm 4 dòng và NkNk cột với cột với NkNk bằng độ bằng độ dài khóa chia cho 32dài khóa chia cho 32

Số lượng chu kỳ Số lượng chu kỳ NrNr = max{ = max{NbNb, , NkNk}+6 }+6

Page 32: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Biểu diễn khối dữ liệu và mã khóaBiểu diễn khối dữ liệu và mã khóa

Nb=4Nb=4Nb=6Nb=6Nb=8Nb=8SS2121

SS0000 SS0101 SS0202 SS0303

SS1010 SS1111 SS1212 SS1313

SS2020 SS2222 SS2323

SS3030 SS3131 SS3232 SS3333

SS0404 SS0505

SS1414 SS1515

SS2424 SS2525

SS3434 SS3535

SS0606 SS0707

SS1616 SS1717

SS2626 SS2727

SS3636 SS3737

Page 33: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Chu kỳ mã hóa bình thườngChu kỳ mã hóa bình thường

Chu kỳ 1

MixMixColumnsColumns

MixMixColumnsColumnsAddAdd

RoundRoundKeyKey

AddAddRoundRoundKeyKey

SubSubBytesBytes

SubSubBytesBytes ShiftShift

RowsRows

ShiftShiftRowsRows

Chu kỳ i

MixMixColumnsColumns

MixMixColumnsColumnsAddAdd

RoundRoundKeyKey

AddAddRoundRoundKeyKey

SubSubBytesBytes

SubSubBytesBytes ShiftShift

RowsRows

ShiftShiftRowsRows

Chu kỳ Nr-1

MixMixColumnsColumns

MixMixColumnsColumnsAddAdd

RoundRoundKeyKey

AddAddRoundRoundKeyKey

SubSubBytesBytes

SubSubBytesBytes ShiftShift

RowsRows

ShiftShiftRowsRows

Chu kỳ Nr

MixMixColumnsColumns

MixMixColumnsColumnsAddAdd

RoundRoundKeyKey

AddAddRoundRoundKeyKey

SubSubBytesBytes

SubSubBytesBytes ShiftShift

RowsRows

ShiftShiftRowsRows

AddAddRoundRoundKeyKey

AddAddRoundRoundKeyKey

SubSubBytesBytes

SubSubBytesBytes ShiftShift

RowsRows

ShiftShiftRowsRows

MixMixColumnsColumns

MixMixColumnsColumns

AddAddRoundRound

KeyKey

AddAddRoundRound

KeyKey

SubSubBytesBytes

SubSubBytesBytes

ShiftShiftRowsRows

ShiftShiftRowsRows

Page 34: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Chu kỳ mã hóa cuốiChu kỳ mã hóa cuối

Chu kỳ 1

MixMixColumnsColumns

MixMixColumnsColumnsAddAdd

RoundRoundKeyKey

AddAddRoundRoundKeyKey

SubSubBytesBytes

SubSubBytesBytes ShiftShift

RowsRows

ShiftShiftRowsRows

Chu kỳ i

MixMixColumnsColumns

MixMixColumnsColumnsAddAdd

RoundRoundKeyKey

AddAddRoundRoundKeyKey

SubSubBytesBytes

SubSubBytesBytes ShiftShift

RowsRows

ShiftShiftRowsRows

Chu kỳ Nr-1

MixMixColumnsColumns

MixMixColumnsColumnsAddAdd

RoundRoundKeyKey

AddAddRoundRoundKeyKey

SubSubBytesBytes

SubSubBytesBytes ShiftShift

RowsRows

ShiftShiftRowsRows

Chu kỳ NrAddAddRoundRoundKeyKey

AddAddRoundRoundKeyKey

SubSubBytesBytes

SubSubBytesBytes ShiftShift

RowsRows

ShiftShiftRowsRows

AddAddRoundRoundKeyKey

AddAddRoundRoundKeyKey

SubSubBytesBytes

SubSubBytesBytes ShiftShift

RowsRows

ShiftShiftRowsRows AddAdd

RoundRoundKeyKey

AddAddRoundRound

KeyKey

SubSubBytesBytes

SubSubBytesBytes

ShiftShiftRowsRows

ShiftShiftRowsRows

Page 35: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Kiến trúc Substitution-Permutation NetworkKiến trúc Substitution-Permutation Network

Add Round KeyAdd Round Key

32-bit LT32-bit LT 32-bit LT32-bit LT 32-bit LT32-bit LT 32-bit LT32-bit LT

MixMixColumnsColumns

MixMixColumnsColumns

AddAddRoundRound

KeyKey

AddAddRoundRound

KeyKey

SubSubBytesBytes

SubSubBytesBytes

ShiftShiftRowsRows

ShiftShiftRowsRows

Page 36: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Quy trình mã hóa của thuật toán RijndaelQuy trình mã hóa của thuật toán Rijndael

Cipher( byte in[4 * Nb], byte out[4 * Nb], word w[Nb*(Nr Cipher( byte in[4 * Nb], byte out[4 * Nb], word w[Nb*(Nr + 1)])+ 1)])

beginbeginbytebyte state[4,Nb]state[4,Nb]state =state = ininAddRoundKeyAddRoundKey(state, w)(state, w)for round = 1 to Nr – 1 for round = 1 to Nr – 1

SubBytesSubBytes(state)(state)ShiftRowsShiftRows(state)(state)MixColumnsMixColumns(state)(state)AddRoundKeyAddRoundKey(state, w + round * Nb)(state, w + round * Nb)

end forend forSubBytesSubBytes(state)(state)ShiftRowsShiftRows(state)(state)AddRoundKeyAddRoundKey(state, w + Nr * Nb)(state, w + Nr * Nb)out = stateout = state

endend

Page 37: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

S'S'0000 S'S'0101 S'S'0202 S'S'0303

S'S'1010 S'S'1111 S'S'1212 S'S'1313

S'S'2020 S'S'2222 S'S'2323

S'S'3030 S'S'3131 S'S'3232 S'S'3333

Phép biến đổi SubBytesPhép biến đổi SubBytes

SubBytesSubBytes

SSijij

S-BoxS-Box

S’S’ijij

Page 38: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Phép biến đổi SubBytesPhép biến đổi SubBytes

Phép thay thế byte phi tuyến thông qua bảng thay thế Phép thay thế byte phi tuyến thông qua bảng thay thế (S-box)(S-box)

Tác động độc lập lên từng byte trong trạng thái hiện Tác động độc lập lên từng byte trong trạng thái hiện hành hành

Page 39: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Phép biến đổi SubBytesPhép biến đổi SubBytes

Quá trình thay thế byte Quá trình thay thế byte xx trong trong SubBytesSubBytes::

Xác định phần tử nghịch đảo Xác định phần tử nghịch đảo xx-1-1 (có biểu diễn nhị (có biểu diễn nhị phân {phân {xx77xx66xx55xx44xx33xx22xx11xx00}). Quy ước {00}}). Quy ước {00}-1-1 = {00} = {00}

Phép biến đổi affine: Phép biến đổi affine:

yyii==xxiixx((ii+4)mod8+4)mod8 xx((ii+5)mod8+5)mod8 xx((ii+6)mod8+6)mod8 xx((ii+7)mod8+7)mod8 ccii

với {với {cc77cc66cc55cc44cc33cc22cc11cc00}} = {63} = {63}

Page 40: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Phép biến đổi SubBytesPhép biến đổi SubBytes

0

1

1

0

0

0

1

1

11111000

01111100

00111110

00011111

10001111

11000111

11100011

11110001

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

x

x

x

x

x

x

x

x

y

y

y

y

y

y

y

y

Page 41: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Phép biến đổi ngược InvSubBytesPhép biến đổi ngược InvSubBytes

Quá trình thay thế byte Quá trình thay thế byte yy trong trong InvSubBytesInvSubBytes::

Phép biến đổi affinePhép biến đổi affine: :

xxii==yy((ii+2)mod8+2)mod8 yy((ii+5)mod8+5)mod8 yy((ii+7)mod8+7)mod8 ddii

với {với {dd77dd66dd55dd44dd33dd22dd11dd00}} = {05} = {05}

Xác định phần tử nghịch đảo Xác định phần tử nghịch đảo xx-1-1GF(2GF(288) của ) của xx. Q. Quy uy ước ước {00}{00}-1-1 = = {00}{00}

Page 42: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Phép biến đổi ngược InvSubBytesPhép biến đổi ngược InvSubBytes

0

0

0

0

0

1

0

1

01010010

00101001

10010100

01001010

00100101

10010010

01001001

10100100

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

y

y

y

y

y

y

y

y

x

x

x

x

x

x

x

x

Page 43: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Phép biến đổi ShiftRowsPhép biến đổi ShiftRows

ShiftRowsShiftRows

Page 44: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Phép biến đổi ShiftRowsPhép biến đổi ShiftRows

Mỗi dòng của trạng thái hiện hành được dịch chuyển Mỗi dòng của trạng thái hiện hành được dịch chuyển xoay vòng đi một số vị trí xoay vòng đi một số vị trí

Byte Byte ssrr,,cc tại dòng tại dòng rr cột cột cc sẽ dịch chuyển đến cột sẽ dịch chuyển đến cột ((cc + + shiftshift((rr, , NbNb)) mod )) mod NbNb

Phép biến đổi ngược Phép biến đổi ngược InvShiftRowsInvShiftRows: Byte : Byte ssrr,,cc tại tại dòng dòng rr cột cột cc sẽ dịch chuyển đến cột ( sẽ dịch chuyển đến cột (cc- - shiftshift((rr, , NbNb)) )) mod mod NbNb

shiftshift((rr, , NbNb)) rr

11 22 33

NbNb44 11 22 33

66 11 22 33

88 11 33 44

Page 45: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

l l = = roundround**NbNb AddRoundKeyAddRoundKey

Phép biến đổi AddRoundKeyPhép biến đổi AddRoundKey

SS0000 SS0101 SS0202 SS0303

SS1010 SS1111 SS1212 SS1313

SS2020 SS2121 SS2222 SS2323

SS3030 SS3131 SS3232 SS3333

S'S'0000 S'S'0101 S'S'0202 S'S'0303

S'S'1010 S'S'1111 S'S'1212 S'S'1313

S'S'2020 S'S'2121 S'S'2222 S'S'2323

S'S'3030 S'S'3131 S'S'3232 S'S'3333

SS00cc

SS11cc

SS22cc

SS33cc

S’S’00cc

S’S’11cc

S’S’22cc

S’S’33cc

WWll WWll+1+1 WWll+2+2 WWll+3+3WWll++cc

Page 46: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Phép biến đổi AddRoundKeyPhép biến đổi AddRoundKey

Từng byte của trạng thái sẽ được XOR với byte tương Từng byte của trạng thái sẽ được XOR với byte tương ứng trong mã khóa của chu kỳ hiện hành.ứng trong mã khóa của chu kỳ hiện hành.

s’s’r,cr,c = = kkr,cr,cssr,cr,c , 0 , 0 << r r << 8,8, 00 c c << Nb Nb

Phép biến đổi ngược của Phép biến đổi ngược của AddRoundKeyAddRoundKey cũng chính cũng chính là là AddRoundKeyAddRoundKey..

Page 47: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

MixColumnsMixColumns

Phép biến đổi MixColumnsPhép biến đổi MixColumns

SS2121

SS0000 SS0101 SS0202 SS0303

SS1010 SS1111 SS1212 SS1313

SS2020 SS2222 SS2323

SS3030 SS3131 SS3232 SS3333

SSii

S'S'0000 S'S'0101 S'S'0202 S'S'0303

S'S'1010 S'S'1111 S'S'1212 S'S'1313

S'S'2020 S'S'2222 S'S'2323

S'S'3030 S'S'3131 S'S'3232 S'S'3333

S'S'2121SS’’ii

aa((xx))

Page 48: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Phép biến đổi MixColumnsPhép biến đổi MixColumns

Mỗi cột của trạng thái hiện hành được biểu diễn dưới dạng đa thức s(x) có các hệ số trên GF(28).

Thực hiện phép nhân

s’(x) = a(x) s(x)

với

a(x) = {03}x3+{01}x2+{01}x+{02}

c

c

c

c

c

c

c

c

s

s

s

s

s

s

s

s

,3

,2

,1

,0

',3

',2

',1

',0

02010103

03020101

01030201

01010302

Page 49: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Phép biến đổi ngược InvMixColumnsPhép biến đổi ngược InvMixColumns

Mỗi cột của trạng thái hiện hành được biểu diễn dưới Mỗi cột của trạng thái hiện hành được biểu diễn dưới dạng đa thức dạng đa thức ss((xx) có các hệ số trên GF(2) có các hệ số trên GF(288). ).

Thực hiện phép nhân Thực hiện phép nhân

ss’(’(xx) = ) = aa-1-1((xx) ) ss((xx))

vớivới

aa-1-1((xx) = ) = {0b}{0b}xx33++{0d}{0d}xx22++{09}{09}xx++{0e}{0e}

c

c

c

c

c

c

c

c

s

s

s

s

s

s

s

s

,3

,2

,1

,0

',3

',2

',1

',0

0e090d0b

0b0e090d

0d0b0e09

090d0b0e

Page 50: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Phát sinh mã khóa mỗi chu kỳPhát sinh mã khóa mỗi chu kỳ

Bảng mã khóa mở rộng là mảng 1 chiều chứa các từ Bảng mã khóa mở rộng là mảng 1 chiều chứa các từ (có độ dài 4 byte) (có độ dài 4 byte)

Hàm phát sinh bảng mã khóa mở rộng phụ thuộc vào Hàm phát sinh bảng mã khóa mở rộng phụ thuộc vào giá trị giá trị NkNk, tức là phụ thuộc vào độ dài của mã khóa , tức là phụ thuộc vào độ dài của mã khóa chính chính

Page 51: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Phát sinh mã khóa mỗi chu kỳPhát sinh mã khóa mỗi chu kỳ

w 0 w 1 w 2 w 3 w 4 w 5 w 6 w 7 w 8 w 9 w 1 0 w 1 1 w 1 2 w 1 3 w 1 4 w 1 5 w 1 6 w 1 7 . . .

M aõ khoùa chu kyø 0 M aõ khoùa chu kyø 1 M aõ khoùa chu kyø 2 ...

Bảng mã khóa mở rộng và cách xác định Bảng mã khóa mở rộng và cách xác định mã khóa của chu kỳ (Nb=6, Nk=4)mã khóa của chu kỳ (Nb=6, Nk=4)

Page 52: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Phát sinh mã khóa mỗi chu kỳPhát sinh mã khóa mỗi chu kỳ

KeyExpansionKeyExpansion(byte key[4 * Nk], word w[Nb * (Nr + 1)], Nk)(byte key[4 * Nk], word w[Nb * (Nr + 1)], Nk)beginbegin

i=0i=0whilewhile (i < Nk) (i < Nk)

w[i] = word[key[4*i], key[4*i+1], w[i] = word[key[4*i], key[4*i+1], key[4*i+2],key[4*i+3]]key[4*i+2],key[4*i+3]] i = i + 1i = i + 1endend whilewhilei = Nki = Nkwhilewhile (i < Nb * (Nr + 1)) (i < Nb * (Nr + 1))

word temp = w[i - 1]word temp = w[i - 1]ifif (i mod Nk = 0) (i mod Nk = 0) thenthen

temp = temp = SubWordSubWord((RotWordRotWord(temp)) (temp)) xorxor Rcon[i / Rcon[i / Nk]Nk]

elseelse ifif (Nk = 8) (Nk = 8) andand (i mod Nk = 4) (i mod Nk = 4) thenthen

temp = temp = SubWordSubWord(temp)(temp)endend ififw[i] = w[i - Nk] w[i] = w[i - Nk] xorxor temp tempi = i + 1i = i + 1

endend whilewhileendend

Page 53: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Phát sinh mã khóa mỗi chu kỳPhát sinh mã khóa mỗi chu kỳ

Rcon[Rcon[ii] = (RC[] = (RC[ii], {00}, {00}, {00}) với RC[], {00}, {00}, {00}) với RC[ii] ] GF(2GF(288) )

RC[1]=1 ({01}) RC[1]=1 ({01})

RC[RC[ii] =] =xx ({02}) ({02})(RC[(RC[ii-1]) = -1]) = xx((ii–1)–1)

Page 54: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

SboxSbox y

0 1 2 3 4 5 6 7 8 9 a b c d e f

x

0 63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76

1 ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0

2 b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15

3 04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75

4 09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84

5 53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf

6 d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8

7 51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2

8 cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73

9 60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db

a e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79

b e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08

c ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a

d 70 3e B5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e

e e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df

f 8c a1 89 0d Bf e6 42 68 41 99 2d 0f b0 54 bb 16

Page 55: Chủ đề 4: Data Encryption Standard và  Advanced Encryption Standard

Sbox-1

y

0 1 2 3 4 5 6 7 8 9 a b c d e f

x

0 52 09 6a d5 30 36 a5 38 bf 40 a3 9e 81 f3 d7 fb

1 7c e3 39 82 9b 2f ff 87 34 8e 43 44 c4 de e9 cb

2 54 7b 94 32 a6 c2 23 3d ee 4c 95 0b 42 fa c3 4e

3 08 2e a1 66 28 d9 24 b2 76 5b a2 49 6d 8b d1 25

4 72 f8 f6 64 86 68 98 16 d4 a4 5c cc 5d 65 b6 92

5 6c 70 48 50 fd ed b9 da 5e 15 46 57 a7 8d 9d 84

6 90 d8 ab 00 8c bc d3 0a f7 e4 58 05 b8 b3 45 06

7 d0 2c 1e 8f ca 3f 0f 02 c1 af bd 03 01 13 8a 6b

8 3a 91 11 41 4f 67 dc ea 97 f2 cf ce f0 b4 e6 73

9 96 ac 74 22 e7 ad 35 85 e2 f9 37 e8 1c 75 df 6e

a 47 f1 1a 71 1d 29 c5 89 6f b7 62 0e aa 18 be 1b

b fc 56 3e 4b c6 d2 79 20 9a db c0 fe 78 cd 5a f4

c 1f dd a8 33 88 07 c7 31 b1 12 10 59 27 80 ec 5f

d 60 51 7f a9 19 b5 4a 0d 2d e5 7a 9f 93 c9 9c ef

e a0 e0 3b 4d ae 2a f5 b0 c8 eb bb 3c 83 53 99 61

f 17 2b 04 7e ba 77 d6 26 e1 69 14 63 55 21 0c 7d