1. Trang chủ
  2. » Luận Văn - Báo Cáo

bài tập nhóm lý thuyết mật mã

39 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài Tập Nhóm Môn: Lý Thuyết Mật Mã
Tác giả Trịnh Đức Chung, Trần Trọng Quyền, Nguyễn Quốc Tuấn
Người hướng dẫn PGS. TS. Đỗ Trọng Tuấn
Trường học Trường Đại Học Bách Khoa Hà Nội, Trường Điện – Điện Tử
Chuyên ngành Lý Thuyết Mật Mã
Thể loại Bài tập nhóm
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 39
Dung lượng 11,18 MB

Cấu trúc

  • 1. S H C CÁC S NGUYÊN: ................................................... 4 Ố Ọ Ố 2. S H C MÔ-Ố Ọ ĐUN (4)
  • 4. MA TR N: ............................................................................... 13 Ậ 1. Định nghĩa (13)
    • 4.2. M t s phép toán v ma tr n ............................................... 14 ộ ố ề ậ MỘT SỐ H M T CỆẬ Ổ ĐIỂN (14)
  • 1. Additive Cipher (15)
  • 2. Multiplicative Cipher (16)
  • 3. Affine Cipher (0)
  • 4. Substitution Cipher (0)
  • 5. Vigenere Cipher (0)
  • 6. Hill Cipher (0)
  • I. DES (0)
    • 5. Quá trình gi i mã DES ........................................................... 31 ả (22)
  • II. AES (28)
    • 2. Xây d ng thu t toán. .............................................................. 37 ự ậ 3. Các d ng tạ ấn công vào AES và phương pháp phòng chố ng. 43 (28)
  • III. RC4 .......................................................................................... 45 1.Khái ni m ................................................................................ 45 ệ 2.Cấu tạo hệ m t ........................................................................ 45 ậ 3.Mã hóa và gi i mã ................................................................... 46ả (36)

Nội dung

Toán tử cho kết quả một thặng dư không âm

S H C CÁC S NGUYÊN: 4 Ố Ọ Ố 2 S H C MÔ-Ố Ọ ĐUN

- Z* là tập h p các s ợ ố nguyên không âm : Z*= {0,1,2,…}

- T p h p Z là ậ ợ đóng kín đố ới v i các phép c ng, trộ ừ và nhân nhưng không đóng kín đố ới v i phép chia

- Cho hai s nguyên b t kì a và b, b >1 ố ấ a = q*n +r , 0 ≤ r ≤ b

+ Nếu r ≠ 0 => a không chia hết cho n, kí hi u n a ệ

- Ước số chung l n nh t: ớ ấ d = gcd(a,b)

Ta s d ng thuử ụ ật toán Euclide để tìm gcd(a,b)

+ M t s ộ ố nguyên a>1 được gọi là s nguyên t , nố ố ếu a không có ước số nào ngoài 1 và chính nó, và được gọi là hợp số nếu không phải là số nguyên tố

+ Hai s ố a và b được g i là nguyên t v i nhau n u gcd(a, b) = 1 ọ ố ớ ế

+ M t s nguyên n>1 bộ ố ất kì đều có th viể ết dướ ại d ng:

Trong đó p 1, p 2, ,p k là các số nguyên tố khác nhau, , a 1 a 2 , ,a k là các số mũ nguyên dương

Mối quan h c a phép chia (ệ ủ 𝑎 = 𝑞 × 𝑛 + 𝑟) gồm hai đầu vào ( và 𝑎 𝑛) và hai đầu ra (𝑞 và 𝑟) Trong số ọc mô-đun, ta chỉ quan tâm đế h n một đầu ra duy nhất, đó chính là số dư 𝑟, mà không cần quan tâm đến thương Như vậ𝑞 y ta có thể thay đổi mối quan hệ trên thành m t toán t hai ngôi vộ ử ới hai đầu vào là và , và m𝑎 𝑛 ột đầu ra là 𝑟

Toán tử hai ngôi được nhắc đế ở trên đượn c g i là ọ toán t moduloử và được ký hi u ệ là mod Đầu vào th hai (ứ 𝑛) được g i là ọ mô-đun (ti ng Anh: ế modulus) Đầu ra 𝑟được gọi là thặng dư (tiếng Anh: residue)

Toán t modulo (ử mod) l y m t s nguyên ( ) t t p và mô-ấ ộ ố 𝑎 ừ ậ ℤ đun (𝑛) là m t s ộ ố nguyên dương Toán tử cho kết quả một thặng dư không âm (𝑟) Ta nói

Một số ví d : ụ a 27 mod 5 = 2 b 36 mod = 0 12 c −18 mod 14 10 d −7 mod 10 = 3

Tập h p các thợ ặng dư ℤ𝒏

Kết qu c a phép toán modulo vả ủ ới mô-đun 𝑛 luôn là một s nguyên t ố ừ0 đến 𝑛 − 1 Nói cách khác, k t qu c a ế ả ủ 𝑎 mod 𝑛 luôn luôn là m t s nguyên không âm nhộ ố ỏ hơn

𝑛 Ta có th nói r ng phép toán modulo t o ra m t t p h p, mà trong s h c mô-ể ằ ạ ộ ậ ợ ố ọ đun được gọi là tập h p các thợ ặng dư nhỏ nh t trong modulo ấ 𝒏, hay được viết là ℤ𝒏

Mặc dù chỉ có duy nh t m t t p hấ ộ ậ ợp các s nguyên (ố ℤ), nhưng ta có vô số ậ t p hợp các thặng dư (ℤ 𝑛 ) ng v i m i giá tr c a khác nhau ứ ớ ỗ ị ủ 𝑛

Ví dụ m t s t p h p thộ ố ậ ợ ặng dư: Đồng dư

Trong mật mã, ta thường dùng khái niệm đồng dư(đồng dư thức) thay vì đẳng thức Ánh x t t i không phạ ừℤ ớ ℤ 𝑛 ải là tương ứng một đối m t (one-to-one), t c là nhi u ộ ứ ề phần t trong có th ánh x tử ℤ ể ạ ới cùng m t ph n t trong Vô s ph n t c a t p ộ ầ ử ℤ𝑛 ố ầ ử ủ ậ

ℤ có th ánh x t i m t ph n t trong t p ể ạ ớ ộ ầ ử ậ ℤ 𝑛 Ví d , k t qu c a ụ ế ả ủ 2 mod 10 = 2,

12 mod = 2, 10 22 mod = 210 , v.v… Trong số học mô-đun, số nguyên như 2, 12 và 22 được gọi là đồng dư theo mod 10 Để chỉ ra hai s ố nguyên đồng dư, ta sử ụ d ng toán tử đồng dư ( ) và thêm c m t (mod ) vào bên ph≡ ụ ừ 𝑛 ải đồng dư thức a Toán t ử đồng dư khá giống toán tử bằng, nhưng cũng có một vài điểm khác biệt Thứ nh t, toán t b ng ánh x m t ph n t trong t p tấ ử ằ ạ ộ ầ ử ậ ℤ ới chính nó; trong khi đó toán t ử đồng dư ánh xạ các phầ ử ừ ận t t t p sang m t ph n t t p Th hai, ℤ ộ ầ ử ở ậ ℤ𝑛 ứ toán t bử ằng tương ứng một tới m t; còn toán t ộ ử đồng dư thì tương ứng nhi u t i ề ớ một (nhi u ph n tề ầ ử tương ứng với m t ph n t ) ộ ầ ử b Cụm t (mod ừ 𝑛) được thêm vào bên ph i c a toán t ả ủ ử đồng dư chỉ là d u hi u c a ấ ệ ủ tập đích (ℤ 𝑛 ) Ta cần phải thêm cụm từ này để chỉ ra mô-đun nào được dùng trong ánh x Ký hiạ ệu mod được s d ng ử ụ ở đây không được dùng với nghĩa là toán t hai ngôi Nói cách khác, ký hi u mod trong ử ệ 12 mod 10 là m t toán t ; ộ ử cụm t (mod 10) trong ừ 2 ≡12 (mod 10) có nghĩa tập đích là ℤ10

Một l p thớ ặng dư [𝑎] hay [𝑎]𝑛 là t p hậ ợp các s ố nguyên đồng dư theo modulo 𝑛 Nói cách khác, nó là tập h p t t c các s nguyên sao cho ợ ấ ả ố 𝑥 ≡ 𝑎 (mod 𝑛)

Ví dụ, n u ế 𝑛 = 5, ta có t t c ấ ả năm tập h p ợ [0] [1] [2] [3], , , và [4] như dưới đây: [0] = ሼ… , − , − , −5, 0, 5,15 10 10 15, , … ሽ

Các s nguyên trong t p h p ố ậ ợ [0] khi th c hiự ện phép toán modulo cho 5 thì đều cho kết qu là 0 Các sả ố nguyên trong t p ậ [1] thì cho k t qu 1 khi th c hi n phép toán ế ả ự ệ modulo cho 5,v.v… Trong mỗi tập hợp sẽ có một phần tử được gọi là thặng dư nhỏ nhất (không âm) Trong t p [0], ph n t này là 0; trong t p [1], ph n t này là 1; ậ ầ ử ậ ầ ử v.v… Tập h p t t c các th ng dợ ấ ả ặ ư nhỏ nh t chính là t p ấ ậ ℤ = ሼ0, 1, 2, 3, 4ሽ5 Nói cách khác, t p h p là t p các ậ ợ ℤ 𝒏 ậ thặng dư nhỏ nhất trong modulo 𝑛

Khái niệm đồng dư có thể được hiểu rõ hơn bằng vi c s d ng m t biệ ử ụ ộ ểu đồ tròn Giống vi c s d ng m t trệ ử ụ ộ ục số để bi u di n các s nguyên trong t p , ta có th s ể ễ ố ậ ℤ ể ử dụng một đường tròn để ể bi u di n các s nguyên trong t p ễ ố ậ ℤ 𝑛

Các s nguyên tố ừ 0 n đế 𝑛 − 1 cách đều nhau trên đường tròn T t c các s nguyên ấ ả ố đồng dư trong modulo 𝑛 nằm cùng một điểm trên đường tròn Các số nguyên dương và nguyên âm t t p ừ ậ ℤđược biểu diễn trên đường tròn một cách đố ứi x ng

Ta thường sử dụng số học đồng dư trong cuộc sống hàng ngày của chúng ta; ví dụ như chúng ta sử ụng đồ d ng hồ để tính th i gian H thờ ệ ống đồng h mà ta s d ng th ồ ử ụ ể hiện một đồng dư trong modulo 12 Tuy nhiên, thay vì là 0, ta sử ụ d ng s 12 Cho ố

2 𝑎 ≡ 2 (mod 𝑛) nên, h thệ ống đồng h bồ ắt đầ ừu t 0 (hay 12) cho t i 11 B i vì m t ngày kéo dài 24 ớ ở ộ giờ, cho nên kim giờ sẽ được quay hai vòng, vòng đầu tiên cho bu i sáng và vòng ổ thứ hai cho bu i chi u ổ ề

Ba phép toán hai ngôi (phép c ng, phép trộ ừ và phép nhân) đố ớ ậi v i t p ℤ cũng có thể định nghĩa trong tập Kℤ 𝑛 ết quả của toán tử trong sℤ 𝑛 ẽ cần được ánh xạ tới tập ℤ 𝑛 bằng việc sử ụ d ng toán t mod ử

Thực ra, có hai lo i toán t ạ ử đã được sử d ng ụ ở đây Loại th nhứ ất đó là một trong các toán t hai ngôi (ử +, −,×); và th hai là toán t mod Ta c n s d ng d u ngoứ ử ầ ử ụ ấ ặc đơn để thể hiện thứ tự ưu tiên của các phép toán Đầu vào ( và ) có th𝑎 𝑏 ể là các phần tử trong t p hoậ ℤ ặc tập ℤ𝑛

Ta đã từng đề cập tới việc hai đầu vào của phép toán hai ngôi trong số học mô-đun có thể n m trong t p ho c Tính chằ ậ ℤ ặ ℤ 𝑛 ất sau đây cho phép chúng ta ánh xạ hai đầu vào t i t p (n u chúng t i t t p ớ ậ ℤ𝑛 ế ớ ừ ậ ℤ) trước khi th c hi n ba phép toán hai ngôi ự ệ

Quá trình trước và sau khi áp dụng những tính chất trên

Tính ch t th nhấ ứ ất: (𝑎 + 𝑏) mod 𝑛 = [(𝑎 mod 𝑛) + (𝑏 mod 𝑛)] mod 𝑛

Tính ch t th hai:ấ ứ (𝑎 − 𝑏) mod 𝑛 = [(𝑎 mod 𝑛) − (𝑏 mod 𝑛)] mod 𝑛

Tính ch t th ba: ấ ứ (𝑎 × 𝑏) mod 𝑛 = [ 𝑎 mod 𝑛 × (𝑏 mod 𝑛)] mod 𝑛( )

Mặc dù quá trình x lý s ử ẽ dài hơn nếu ta sử dụng các tính chất trên, nhưng trong mật mã ta s ph i x lý v i nh ng con s r t l n Ví d , n u ta nhân hai s nguyên l n ẽ ả ử ớ ữ ố ấ ớ ụ ế ố ớ với m t s nguyên l n khác, ta sộ ố ớ ẽ được môt s nguyên quá lố ớn để lưu trữ trong máy tính Áp d ng các tính chụ ất trên, trước tiên làm cho hai toán h ng nh ạ ỏ đi, sau đó mới thực hi n phép nhân ệ

Trong s hố ọc, ta thường c n tìm sầ ố dư lũy thừa c a 10 khi chia cho m t s nguyên ủ ộ ố

Ví d , ta c n tính 10 mod 3, 10 mod 3, 10ụ ầ 2 3 mod 3, v.v… Hay ta cần tính 10 mod 7,

10 2 mod 7, 10 3 mod 7, v.v… Tính chất th ba cứ ủa toán t mod ử ở trên s làm công ẽ việc trở nên dễ dàng hơn.

10 𝑛 mod 𝑥 = ( mod 𝑥)10 𝑛 Áp d ng tính ch t th ba l n ụ ấ ứ 𝑛 ầ

Khi thực hiện phép toán trên các số mô-đun, chúng ta thường phải tìm nghịch đảo của một số trong phép toán đó Chúng ta thường phải tìm nghịch đảo cộng liên quan đến phép cộng hoặc nghịch đảo nhân liên quan đến phép nhân.

Trong tập , hai sℤ𝑛 ố 𝑎 và là ngh𝑏 ịch đảo c ng c a nhau n u ộ ủ ế

Trong ℤ𝑛, nghịch đảo c ng c a có thộ ủ 𝑎 ể được tính b ng ằ 𝑏 = 𝑛 − 𝑎 Ví d , ngh ch ụ ị đảo cộng của 4 trong ℤ 𝑛 là 10− 4 = 6

Lưu ý rằng trong số học mô-đun, mỗi một số sẽ có một nghịch đảo cộng và phần tử nghịch đảo đó là duy nhất; mỗi số có một và chỉ một nghịch đảo cộng Tuy nhiên, nghịch đảo c ng cộ ủa một s có th là chính nó ố ể

Trong 𝑍𝑛, hai số 𝑎 và là ngh𝑏 ịch đảo nhân c a nhau n u ủ ế

Ví dụ, n u xét mô-ế đun 10, nghịch đảo nhân của 3 là 7 Nói cách khác, ta có (3 × 7) mod 10 = 1

MA TR N: 13 Ậ 1 Định nghĩa

M t s phép toán v ma tr n 14 ộ ố ề ậ MỘT SỐ H M T CỆẬ Ổ ĐIỂN

(Điều kiện: s cố ột ma tr n A = s hàng ma trậ ố ận B)

4.2.4 Ma tr n ph i s chuy n v ậ ụ đạ ố ể ị

Gọi 𝐷 𝑖𝑗 là định thức con của ma trận A khi b ỏđi i hàng, j cột (det(A) 0) ≠

Cho ma trận vuông A kích thước n*n

Trong đó 𝐴𝑖𝑗 là ma trận A bỏ đi i hàng, j cột

• Ma tr n nghậ ịch đảo i) Nghịch đảo cộng:

Ma tr n B g i là nghậ ọ ịch đảo c ng c a ma tr n A ó A+B=O ộ ủ ậ

Trong đó O là ma trận không ii) Nghịch đảo nhân:

Ma tr n nghậ ịch đảo nhân c a A, kí hi u ủ ệ 𝐴 −1 : A*𝐴 −1 =I (I: ma trận đơn vị)

Additive Cipher

Mật mã cộng, còn gọi là Mật mã Caesar, là phương pháp mã hóa thay thế sử dụng bảng chữ cái, trong đó mỗi chữ cái được ánh xạ thành một số, sau đó được mã hóa thông qua phép cộng mô đun Để thực hiện mã hóa Caesar, trước tiên cần ánh xạ các ký tự trong bảng chữ cái Latin thành các số tương ứng từ 0 đến 25.

Sau đó, ta thực hiện quá trình mã hóa theo sơ đồ sau: Ở đây, khóa k là một số nguyên có giá trị thuộc tập Z 26 = {0,1,2,…,25}

VD: Mã hóa bản tin P = “VIETNAM” bằng mật mã cộng với khóa = 5 k

=> C = “ANJYSFR” Để giải mã, ta thực hiện theo sơ đồ sau:

Trong công thức này, - là ph n t nghk ầ ử ịch đảo c ng c a trong t p ộ ủ k ậ Z 26 :

VD: Giả sử thu được ciphertext như ví dụ ở trên, bi t khóa = 5 Tìm plaintext? ế k k = 5 => - = 21k

Multiplicative Cipher

Mật mã nhân (Multiplicative cipher) là một d ng m t mã thay th dùng mạ ậ ế ột bảng ch ữ cái, trong đó mỗi ch ữ cái được ánh x t i m t sạ ớ ộ ố, sau đó được mã hóa thông qua phép nhân module Để thực hiện mật mã hóa Caesar, trước tiên ta cần ánh xạ các kí t trong b ng ự ả chữ cái (La tinh) thành các số tương ứng 0 25

Sau đó, ta thực hiện quá trình mã hóa theo sơ đồ sau: Ở đây, khóa k là một số nguyên có giá trị thuộc tập Z 26 = {0,1,2,…,25}

VD: Mã hóa bản tin P = “VIETNAM” bằng mật mã nhân với khóa = 5 k

=> C = “BOURNAI” Để giải mã, ta thực hiện theo sơ đồ sau:

Trong công thức này, k -1 là ph n t nghầ ử ịch đảo nhân c a trong t p ủ k ậ Z 26 mod 26 = 1 k -1 k

VD: Giả sử thu được ciphertext như ví dụ ở trên, bi t khóa = 5 Tìm plaintext? ế k k = 5 => k -1 = 21

Thuật toán DES sử dụng 16 vòng lặp giống hệt nhau, nhưng mỗi vòng sử dụng một khóa con khác nhau Tất cả các khóa con đều được sinh ra từ khóa chính của DES thông qua thuật toán sinh khóa con.

Khóa ban đầu là 1 xâu có dài 64 bit, bit thđộ ứ 8 của m i byte sẽ được lấy ra để ỗ kiểm tra phát hi n l i, t o ra chu i 56 bit Sau khi b các bit ki m tra ta s hoán vệ ỗ ạ ỗ ỏ ể ẽ ị chuỗi 56 bit này Hai bước trên được thực hi n thông qua hoán v ma tr n PC-1 ệ ị ậ(Permuted choice 1)

Tiếp theo ta k t qu sau khi PC-1 thành 2 phế ả ần : C0 : 28 bit đầu D0 : 28 bit cu i ố Mỗi ph n s ầ ẽ được xử lý 1 cách độ ậc l p Ci = LSi(Ci-1) Di = LSi(Ci-1) với 1 ≤ i ≤

16 LSi là bi u di n phép d ch bit vòng (cyclic shift) sang trái 1 ho c 2 v trí tùy ể ễ ị ặ ị thuộc vào i

Cuối cùng s d ng hoán vử ụ ị cố định PC-2 (Permuted choice 2) để hoán vị chu i CiDi ỗ

56 bit t o thành khóa Ki v i 48 bit ạ ớ

4 Quá trình mã hóa DES

Với bản rõ cho trước x, 1 xâu x’ sẽ được tạo ra b ng cách hoán vằ ị các bit c a x theo ủ hoán v ị ban đầu IP

Tiếp theo x’ sẽ được chia thành 2 phần L0,R0 x’ = IP(x) = L0R0 Trong đó L0 là 32 bit đầu, R0 là 32 bit cuối

Tính toán 16 lần bằng 1 hàm xác định Ta sẽ tính Li, Ri (1 ≤ i ≤ 16) theo quy tắc: Li

= Ri-1 Ri = Li-1 XOR f(Ri-1, Ki) Với Ki là khóa được sinh ra quá trình t o ở ạ khóa, f là m t hàm s ộ ẽ được trình bày ở ph n sau ầ

• Giai đoạn 3: Áp dụng hoán v kị ết thúc FP cho xâu bit R16L16 ta thu được bản mã y: y FP(R16L16)

5 Quá trình gi i mã DES ả

Quá trình giải mã của DES cũng tương tự quá trình mã hóa Ch khác nhau : Li = ỉ ở Ri-1 Ri = Li-1 XOR f(Ri-1, K16-i+1) Như vậy khóa K c a hàm F sủ ẽ đi từ khóa K16 đến khóa K1

*Hàm f : Đầu vào hàm f có 2 biến:

Hàm f nhận một giá trị Ri-ứ ấ 1 là xâu bit dài 32 bit và một giá trị Ki là xâu bit dài 48 bit Hàm này trả về xâu có độ dài 32 bit sau khi thực hiện một số phép toán.

• Biến th nh t Ri-ứ ấ 1 được mở r ng thành m t xộ ộ âu có độ dài 48 bit theo m t ộ hàm m r ng hoán v E (Expansion permutation) Thở ộ ị ực chất hàm m r ng ở ộ E(Ri-1) là m t hoán v có lộ ị ặp trong đó lặ ạp l i 16 bit c a Ri-1 ủ

• Tách k t qu cế ả ủa phép tính trên thành 8 xâu 6 bit B1, B2, …, B8.

đưa các khối 8 bit Bi vào 8 bảng S1, S2, …, S8 (gọi là các hộp S-box) Mỗi hộp S-Box là một bảng 4*16 chứa các cột từ 0 đến 15 và các hàng từ 0 đến 3 Với mỗi xâu 6 bit Bi = b1b2b3b4b5b6 ta tính được SiBi như sau: hai bit b1b6 xác định hàng r trong hộp Si, bốn bit b2b3b4b5 xác định cột c trong hộp Si Khi đó, Si(Bi) sẽ xác định phần tử Ci = Si(r,c), phần tử này viết dưới dạng nhị phân 4 bit Như vậy, 8 khối 6 bit Bi (1 ≤ i ≤ 8) sẽ cho ra 8 khối 4 bit Ci.

• Xâu bit C = C1C2C3C4C5C6C7C8 có độ dài 32 bit được hoán vị theo phép toán hoán v P (h p P-Box) K t qu P(C) s là k t quá c a hàm f(Ri-1,Ki) ị ộ ế ả ẽ ế ủ

Hàm r ng E s ở ộ ẽ tăng độ dài Ri-1 t 32 bit lên 48 bit bừ ằng cách thay đổi th t các ứ ự bit cũng như lặp lại các bit Việc thực hiện này nhằm hai mục đích:

• Làm độ dài của Ri-1 cùng c vỡ ới khóa K để ực hiện việc cộng modulo th XOR

• Cho k t quế ả dài hơn để có thể được nén trong su t quá trình thay th Tuy ố ế nhiên, c hai mả ục đích này nhằm m t m c tiêu chính là b o m t d li u ộ ụ ả ậ ữ ệ Bằng cách cho phép 1 bit có th chèn vào hai vể ị trí thay th , s ph thuế ự ụ ộc của các bit đầu ra với các bit đầu vào sẽ trải rộng ra

Sau khi th c hi n phép XOR gi a E(Ri-1) và Ki, k t quự ệ ữ ế ả thu được chu i 48 bit chia ỗ làm 8 khối đưa vào 8 hộp S-box M i h p S-Box sỗ ộ ẽ có 6 bit đầu vào và 4 bit đầu ra Kết qu ả thu được là một chuỗi 32 bit ti p t c vào h p P-Box ế ụ ộ

• Mỗi hàng trong mỗi h p S là hoán vộ ị c a các sủ ố nguyên từ 0 đến 15

• Các h p S-box phi tuyộ ến tính nói cách khác, đầu ra không ph i là biả ến đối tuyến tính của đầu vào

• Sự thay đổ ủa mội c t bit, hai bit hoặc nhiều hơn sẽ ẫn đế d n s biự ến đổ ở đầu i ra

• Nếu hai đầu vào của một S-box bất kì chỉ khác nhau 2 bit ở giữa (bit 3 và 4) thì đầu ra sẽ khác nhau ít nhất 2 bit Nói cách khác, S(x) và S(x XOR 001100) ph i khác nhau ít nh t 2 bit ả ấ

Mỗi 4 bit đầu ra c a các h p S-box sủ ộ ẽ được ghép l i, theo th t các hạ ứ ự ộp và được đem vào hộp P-box Hộp P-Box đơn giản chỉ là hoán vị các bit với nhau

1.Lịch sử hình thành h mệ ật AES

• AES (viết tắt của từ tiếng anh: Advanced Encryption Standard, hay Tiêu chuẩn mã hóa nâng cao) là một thuật toán mã hóa khối được chính phủ Hoa

Kỳ áp dụng làm tiêu chuẩn mã hóa

• Thuật toán được xây dựng dựa trên Rijndael Cipher phát triển bởi 2 nhà mật mã học người Bỉ: Joan Daemen và Vincent Rijmen

• AES làm việc với các khối dữ liệu 128bit và độ dài khóa 128bit, 192bit hoặc 256bit Các khóa mở rộng sử dụng trong chu trình được tạo ra bởi thủ tục sinh khóa Rijndael

2.1 Xây d ng b ng S-box ự ả a B ng S box thu n ả – ậ

• Bảng S-box thuận được sinh ra b ng viằ ệc xác định nghịch đảo cho một giá trị nhất định trên GF(28) = GF(2)[x] / (x8+x4+x3+x+1) (trường hữu hạn Rijindael) Giá tr 0 không có nghị ịch đảo thì được ánh xạ với 0 Nh ng ữ nghịch đảo được chuyển đổi thông qua phép biến đổi affine

• Công th c tính các giá tr b ng S-box và b ng S- ứ ị ả ả box tương ứng: b B ng S-box nghả ịch đảo.

• S-box nghịch đảo chỉ đơn giản là S-box chạy ngược Nó được tính b ng ằ phép biến đổi affine nghịch đảo các giá tr u vào Phép biị đầ ến đổi affine nghịch đảo được biểu diễn như sau:

2.2 Gi i thu t sinh khóa ph ả ậ ụ

Quá trình sinh khóa gồm 4 bước:

• Rcon: tính giá tr ị Rcon(i) Trong đó :

2.3 Quá trình mã hóa a Sơ đồ tổng quát b Hàm AddRoundKey

• Được áp d ng t vòng l p th 1 tụ ừ ặ ứ ới vòng lặp Nr

• Trong biến đổi Addroundkey(), một khóa vòng được cộng với state b ng ằ một phép XOR theo từng bit đơn giản

• Mỗi khóa vòng g m có 4 t ồ ừ (128 bit) được lấ ừ ịy t l ch trình khóa 4 t ừ đó được cộng vào mỗi c t c a state, sao cho: ộ ủ c Hàm SubBytes

• Biến đổi SubBytes() thay th m i byte riêng r c a state Sr,c bế ỗ ẽ ủ ằng m t giá ộ trị mới S’ r,c sử ụ d ng b ng thay th (S - ả ế box) được xây dựng ở trên d Hàm ShiftRow

• Trong biến đổi ShiftRows(), các byte trong ba hàng cu i cùng c a tr ng ố ủ ạ thái được dịch vòng đi các số byte khác nhau (độ lệch) Cụ th : ể

• S’r,c = Sr,(c + shift ( r, Nb)) mod Nb (Nb = 4)

• Trong đó giá trị dịch shift (r, Nb) ph thu c vào s ụ ộ ố hàng r như sau:

DES

Quá trình gi i mã DES 31 ả

Quá trình giải mã của DES cũng tương tự quá trình mã hóa Ch khác nhau : Li = ỉ ở Ri-1 Ri = Li-1 XOR f(Ri-1, K16-i+1) Như vậy khóa K c a hàm F sủ ẽ đi từ khóa K16 đến khóa K1

*Hàm f : Đầu vào hàm f có 2 biến:

• Biến th nh t: Ri-ứ ấ 1 là xâu bit có độ dài 32 bit - Bi n th hai: Ki là xâu bit có ế ứ độ dài 48 bit Đầu ra của hàm f là xâu có độ dài 32 bit Quy trình hoạt động của hàm f như sau:

• Biến th nh t Ri-ứ ấ 1 được mở r ng thành m t xộ ộ âu có độ dài 48 bit theo m t ộ hàm m r ng hoán v E (Expansion permutation) Thở ộ ị ực chất hàm m r ng ở ộ E(Ri-1) là m t hoán v có lộ ị ặp trong đó lặ ạp l i 16 bit c a Ri-1 ủ

• Tách k t qu cế ả ủa phép tính trên thành 8 xâu 6 bit B1, B2, …, B8.

• Đưa các khối 8 bit Bi vào 8 bảng S1, S2, …, S8 (được gọi là các hộp S-box) Mỗi h p S-Box là mộ ột b ng 4*16 c ả ố định có các c t tộ ừ 0 đến 15 và các hàng từ 0 đến 3 Với mỗi xâu 6 bit Bi = b1b2b3b4b5b6 ta tính được SiBi như sau: hai bit b1b6 xác định hàng r trong hộp Si, bốn bit b2b3b4b5 xác định cột c trong hộp Si Khi đó, Si(Bi) sẽ xác định ph n t Ci = Si(r,c), ph n t này vi t ầ ử ầ ử ế dưới dạng nhị phân 4 bit Như vậy, 8 khối 6 bit Bi (1 ≤ i ≤ 8) sẽ cho ra 8 khối

• Xâu bit C = C1C2C3C4C5C6C7C8 có độ dài 32 bit được hoán vị theo phép toán hoán v P (h p P-Box) K t qu P(C) s là k t quá c a hàm f(Ri-1,Ki) ị ộ ế ả ẽ ế ủ

Hàm r ng E s ở ộ ẽ tăng độ dài Ri-1 t 32 bit lên 48 bit bừ ằng cách thay đổi th t các ứ ự bit cũng như lặp lại các bit Việc thực hiện này nhằm hai mục đích:

• Làm độ dài của Ri-1 cùng c vỡ ới khóa K để ực hiện việc cộng modulo th XOR

• Cho k t quế ả dài hơn để có thể được nén trong su t quá trình thay th Tuy ố ế nhiên, c hai mả ục đích này nhằm m t m c tiêu chính là b o m t d li u ộ ụ ả ậ ữ ệ Bằng cách cho phép 1 bit có th chèn vào hai vể ị trí thay th , s ph thuế ự ụ ộc của các bit đầu ra với các bit đầu vào sẽ trải rộng ra

Sau khi th c hi n phép XOR gi a E(Ri-1) và Ki, k t quự ệ ữ ế ả thu được chu i 48 bit chia ỗ làm 8 khối đưa vào 8 hộp S-box M i h p S-Box sỗ ộ ẽ có 6 bit đầu vào và 4 bit đầu ra Kết qu ả thu được là một chuỗi 32 bit ti p t c vào h p P-Box ế ụ ộ

• Mỗi hàng trong mỗi h p S là hoán vộ ị c a các sủ ố nguyên từ 0 đến 15

• Các h p S-box phi tuyộ ến tính nói cách khác, đầu ra không ph i là biả ến đối tuyến tính của đầu vào

• Sự thay đổ ủa mội c t bit, hai bit hoặc nhiều hơn sẽ ẫn đế d n s biự ến đổ ở đầu i ra

• Nếu hai đầu vào của một S-box bất kì chỉ khác nhau 2 bit ở giữa (bit 3 và 4) thì đầu ra sẽ khác nhau ít nhất 2 bit Nói cách khác, S(x) và S(x XOR 001100) ph i khác nhau ít nh t 2 bit ả ấ

Mỗi 4 bit đầu ra c a các h p S-box sủ ộ ẽ được ghép l i, theo th t các hạ ứ ự ộp và được đem vào hộp P-box Hộp P-Box đơn giản chỉ là hoán vị các bit với nhau.

AES

Xây d ng thu t toán 37 ự ậ 3 Các d ng tạ ấn công vào AES và phương pháp phòng chố ng 43

2.1 Xây d ng b ng S-box ự ả a B ng S box thu n ả – ậ

• Bảng S-box thuận được sinh ra b ng viằ ệc xác định nghịch đảo cho một giá trị nhất định trên GF(28) = GF(2)[x] / (x8+x4+x3+x+1) (trường hữu hạn Rijindael) Giá tr 0 không có nghị ịch đảo thì được ánh xạ với 0 Nh ng ữ nghịch đảo được chuyển đổi thông qua phép biến đổi affine

• Công th c tính các giá tr b ng S-box và b ng S- ứ ị ả ả box tương ứng: b B ng S-box nghả ịch đảo.

• S-box nghịch đảo chỉ đơn giản là S-box chạy ngược Nó được tính b ng ằ phép biến đổi affine nghịch đảo các giá tr u vào Phép biị đầ ến đổi affine nghịch đảo được biểu diễn như sau:

2.2 Gi i thu t sinh khóa ph ả ậ ụ

Quá trình sinh khóa gồm 4 bước:

• Rcon: tính giá tr ị Rcon(i) Trong đó :

2.3 Quá trình mã hóa a Sơ đồ tổng quát b Hàm AddRoundKey

• Được áp d ng t vòng l p th 1 tụ ừ ặ ứ ới vòng lặp Nr

• Trong biến đổi Addroundkey(), một khóa vòng được cộng với state b ng ằ một phép XOR theo từng bit đơn giản

• Mỗi khóa vòng g m có 4 t ồ ừ (128 bit) được lấ ừ ịy t l ch trình khóa 4 t ừ đó được cộng vào mỗi c t c a state, sao cho: ộ ủ c Hàm SubBytes

• Biến đổi SubBytes() thay th m i byte riêng r c a state Sr,c bế ỗ ẽ ủ ằng m t giá ộ trị mới S’ r,c sử ụ d ng b ng thay th (S - ả ế box) được xây dựng ở trên d Hàm ShiftRow

• Trong biến đổi ShiftRows(), các byte trong ba hàng cu i cùng c a tr ng ố ủ ạ thái được dịch vòng đi các số byte khác nhau (độ lệch) Cụ th : ể

• S’r,c = Sr,(c + shift ( r, Nb)) mod Nb (Nb = 4)

• Trong đó giá trị dịch shift (r, Nb) ph thu c vào s ụ ộ ố hàng r như sau:

Hàm MixColumns nhận đầu vào là một ma trận 4x4 byte và trả về một ma trận 4x4 byte khác Trong hàm này, mỗi cột của ma trận đầu vào được biến đổi theo công thức sau:- Hàng đầu tiên không thay đổi.- Hàng thứ 2 được dịch vòng trái 1 lần.- Hàng thứ 3 được dịch vòng trái 2 lần.- Hàng thứ 4 được dịch vòng trái 3 lần.

• Biến đổi MixColumns() tính toán trên t ng cừ ộ ủt c a state Các cột được coi như là đa thức trong trường GF(28) và nhân v i mớ ột đa thức a(x) v i: ớ

• Biến đổi này có th ể được trình bày như phép nhân một ma trận, mà m i ỗ byte được hiểu như là một phần tử trong trường GF(28): s’(x) = a(x) s(x):

• Mô t b ng ma trả ằ ận như sau :

2.4 Quá trình gi i mã ả a T ng quan ổ

Thuật toán gi i mã khá gi ng v i thu t toán mã hóa v m t cả ố ớ ậ ề ặ ấu trúc nhưng 4 hàm s dử ụng là 4 hàm ngược của quá trình mã hóa b Thu t toán gi i mã ậ ả

InvCipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)]) begin byte state[4,Nb] state = in

AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1]) for round = Nr-1 downto 1

AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])

AddRoundKey(state, w[0, Nb-1]) out = state end

• In[] : M ng d liả ự ệu đầu vào Input

• Out[] : M ng d liả ữ ệu đầu ra Output

• W[] : Mảng các w[i] có độ dài 4 bytes

3 Các d ng tạ ấn công vào AES và phương pháp phòng chống

• Side Channels (Kênh kề) được định nghĩa là các kênh đầu ra không mong muốn từ m t h th ng ộ ệ ố

• Tấn công kênh bên hay còn g i là T n công kênh k là lo i t n công d ọ ấ ề ạ ấ ễ thực hiện trong các lo i t n công m nh ch ng l i quá trình tri n khai mã ạ ấ ạ ố ạ ể hóa, và m c tiêu c a lo i t n công này là phân tích các nguyên t , các ụ ủ ạ ấ ố giao th c, modul, và các thi t b trong m i h th ng ứ ế ị ỗ ệ ố

• Phân lo i : ạ o Tấn công th i gian ờ o Tấn công d a vào l i ự ỗ o Tấn công phân tích năng lượng o Tấn công phân tích điện t ừ

• Vào năm 2002, Nicolas Courtois và Josef Pieprzyk phát hiện một tấn công trên lý thuy t g i là tế ọ ấn công XSL và ch ỉ ra điểm y u tiế ềm tàng c a AES ủ

Tuy nhiên, một số chuyên gia và một số tổ chức khác đã chỉ ra một số vấn đề trong cơ sở toán học của công nghệ này và cho rằng các tác giả đã có sai lầm trong tính toán Việc công nghệ này có thực sự trở thành hiện thực hay không vẫn còn là điều để ngỏ và cho tới nay thì công nghệ XSL vẫn chỉ là suy đoán.

3.3 Các phương pháp phòng chống

• Phương pháp 1: Mã hóa cực mạnh o Sử d ng các biụ ện pháp để tăng tính bảo mật của các thu t toán mã ậ hóa

• Phương pháp 2: Bảo vệ d liữ ệu theo phương pháp vật lý o Nếu một k t n công không th tiẻ ấ ể ếp c n v t lý v i d liậ ậ ớ ữ ệu, dĩ nhiên khả năng đánh cắp khóa mã hóa s ẽ khó khăn hơn Vì vậy, trước những cu c tộ ấn công qua âm thanh ti m tàng, b n có th sề ạ ể ử ụ d ng các gi i pháp b o v vả ả ệ ật lý như đặt laptop vào các hộp cách ly âm thanh, không để ai lại gần máy tính khi đang giải mã dữ liệu ho c ặ sử d ng các nguụ ồn âm thanh băng rộng tần số đủ cao để gây nhi u ễ

• Phương pháp 3: Kết hợp c 2 cách trên ả

RC4 45 1.Khái ni m 45 ệ 2.Cấu tạo hệ m t 45 ậ 3.Mã hóa và gi i mã 46ả

3.Mã hóa và gi i mã ả

3.1.Tạo b ng S-box value b ng hàm KSA ả ằ

3.2.Tạo Key Stream b ng hàm PRGA và mã hóaằ

Ngày đăng: 11/06/2024, 22:18

HÌNH ẢNH LIÊN QUAN

Bảng c ng và nhân  ộ - bài tập nhóm lý thuyết mật mã
Bảng c ng và nhân ộ (Trang 12)
Bảng c ng trong  ộ ℤ 10 Bảng nhân trong ℤ 10 - bài tập nhóm lý thuyết mật mã
Bảng c ng trong ộ ℤ 10 Bảng nhân trong ℤ 10 (Trang 12)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w