Mật mã học Nâng cao

Get Started. It's Free
or sign up with your email address
Mật mã học Nâng cao by Mind Map: Mật mã học Nâng cao

1. Vấn đề tấn công, thám mã,

1.1. Chuẩn PKCS

1.1.1. Khái niệm

1.1.1.1. PKCS: Chuẩn mã hóa công khai

1.1.1.1.1. Dựa vào các cấu trúc ASN.1

1.1.1.1.2. Là tập hợp các giao thức chuẩn xen kẽ dựa trên PKI

1.1.2. Đặc điểm

1.1.2.1. Dữ liệu được chia thành từng khối nhỏ nhất là 8 bit (octet) để đảm bảo An toàn.

1.1.2.2. • Các tiêu chuẩn của PKCS gồm

1.1.2.2.1. o Mã hóa RSA: Thuật toán mã hóa khóa công khai: Nhờ vào độ khó về xử lý 2 số nguyên tố lớn p,q trên trường logarit rời rạc và tính toán modulo.

1.1.2.2.2. o Mã hóa dựa trên mật khẩu.

1.1.2.2.3. o Cú pháp chứng chỉ mở rộng và cú pháp tin nhắn mật mã cho S/MIME

1.1.2.2.4. o Tiêu chuẩn đề xuất của RSA về an toàn email.

1.1.3. Ví dụ

1.1.3.1. • PKCS#11 là phức tạp nhất, nó là chuẩn cho việc truyền thông tin trên mạng dưới dạng các gói tin đã mã.

1.1.3.1.1. o Dùng để xác định API độc lập nền tảng với mã thông báo mã hóa ,

1.1.3.2. • Trong chuẩn PKCS#1 phiên bản 1.5, trước khi mã hóa, thông điệp M được đệm thông báo vào trước nó thành • m = PKCS(M) = 00 02 R1 R2 … Rs 00 M.

1.1.3.2.1. o Trong đó: • k là số byte của n. • byte đầu tiên có giá trị 0, byte thứ hai có giá trị 2. • Ri là các byte ngẫu nhiên khác 0. • (s = k – 3)- số byte của data và s ≥ 8 để đáp ứng yêu cầu về an toàn. • byte ngay sau Rs cũng có giá trị 0 - Cuối cùng là thông điệp M. =>Khi đó bản mã được tính là C = m^e mod N

1.2. Thám mã nội suy

1.2.1. Khái niệm

1.2.1.1. Là phương pháp xây dụng một đa thức biểu diễn mối quan hệ giữa bản rõ và bản mã.( xây dựng đa thức từ bản rõ/bản mã).

1.2.1.2. Nếu cả bộ mã được biểu diễn bởi một đa thức có bậc nhỏ thì hệ số của đa thức có thể tìm thấy từ các cặp bản mã/bản rõ sử dụng phương pháp nội suy Lagrange.

1.2.2. Ưu điểm

1.2.2.1. Đơn giản về mặt ý tưởng, dễ trong khâu lập trình.

1.2.2.2. Sử dụng độ phức tạp tính toán của đa thức có bậc nhỏ, dễ trong việc dự đoán đặc biệt là Meet in the middle.

1.2.2.3. Thông qua các cặp bản rõ/bản mã sử dụng nội suy, Attacker có thể thu hẹp không gian bản rõ/ bản mã => rút ngắn time thám mã.

1.2.3. Nhược điểm

1.2.3.1. Phải tính toán lại từ đầu nến thêm một mốc nội suy (thêm một cặp bản rõ/bản mã vào để tính toán đa thức).

1.2.3.2. Việc xây dựng đa thức từ các cặp bản rõ bản mã không hiệu quả trong trường hợp không đủ dữ liệu đầu vào (bản rõ/ bản mã

1.3. Thám mã tuyến tính

1.3.1. Khái niệm

1.3.1.1. LÀ phương pháp thám mã đã biết bản rõ, lợi dụng mối quan hệ tuyến tính giữa input và output của một hệ mã để thực hiện.

1.3.2. Ưu điểm

1.3.2.1. Áp dụng các biểu thức, các phép toán xấp xỉ, lân cận -> dễ tính toán và thực hiện.

1.3.2.2. Tấn công được hệ mật DES dựa vào điểm yếu của S-Box (thành phần phi tuyến duy nhất của DES là S-Box).

1.3.2.3. Hiệu quả và tiết kiệm thời gian hơn tấn công bản mã chọn trươc bằng vét cạn.

1.3.3. Nhược điểm

1.3.3.1. Thám mã tuyến tính không khả thi trong thực tế. Vì số lượng bản rõ thu được là không đủ (thử nghiệm trên DES cần 247 bản rõ).

1.3.3.2. Phụ thuộc vào điểm yếu của các thành phần phi tuyến (vd S-box). Không phải hệ mật nào cũng dễ dàng tìm đc các thành phần phi tuyến có điểm yếu.

1.3.3.3. Mất time trong việc tìm điểm yếu, chuẩn bị các bản rõ thử nghiệm trước khi thám mã.

1.4. Tấn công chọn bản mã thích nghi

1.4.1. Khái niệm

1.4.1.1. Là tấn công bản rõ chọn trước( Kẻ tấn công có khả năng chọn các bản mã Ci và các bộ giải mã tương ứng của Ci để tìm ra bản rõ Pi) trong đó kẻ tấn công có thể chọn đầu vào cho các chức năng giải mã là các bản mã mà hắn đã chọn trước đó.

1.4.1.2. Không cần phải biết khóa bí mật vẫn có thể giải mã được các thông điệp dựa vào việc khai thác các kết quả trả về của hàm tiên tri (Oracle Function) - Một phần mềm kiểm tra xem bản rõ có tuân theo PKCS#1 hay không (True/False).

1.4.2. Ví dụ minh họa

1.4.2.1. Kịch bản

1.4.2.1.1. Kẻ tấn công muốn tìm bản rõ M từ bản mã C = M^e mod n

1.4.2.2. Các bước tiến hành

1.4.2.2.1. Dùng hàm tiên tri kiểm tra xem M có theo chuẩn PKCS hay không.

1.4.2.2.2. Tìm m thuộc miền xác định

1.4.2.2.3. Thu hẹp miền xác định chứa m.

1.4.2.2.4. Kết quả cuối cùng M thuộc Mi = [a,a] là kết quả a duy nhất.

2. Giải thuật RC6

2.1. Đọc hiểu RC6

2.1.1. • RC6 là giải thuật mã hóa khóa đối xứng có tốc độ mã hóa/ giải mã cao (trên 100Mbps). • Khích thước mã hóa khối 128 bit; hỗ trợ khóa 128,192,256bit.

2.1.2. Được xác định bằng các tham số b, w, r:

2.1.2.1. b: chiều dài khóa (byte).

2.1.2.2. r: số chu kỳ (số vòng) mã hóa: thường là r=20

2.1.2.3. w: Kích thước từ: 128bit/4 = 32bit

2.1.3. sử dụng 6 phép toán cơ bản và logarit cơ số 2 của w (lgw = lg32 =5)

2.1.3.1. o a + b modulo 2^w. o a – b modulo 2^w. o a ⊕ b phép XOR. o a x b nhân modulo 2^w. o a<<<b quay chu kỳ tròn bên trái b bit. o a>>>b quay chu kì tròn bên phải b bit.

2.2. Quy trình Mã hóa

2.2.1. • Mã hóa với RC6-w / r / b • Input: Bản rõ được lưu trữ trong bốn thanh ghi đầu vào w-bit A, B, C & D o r là số lượng vòng = 20 o w-bit round keys K[0, ..., 2r + 3]  K[0,…,43]. • Kết quả: Mật mã được lưu trữ trong A, B, C, D //

2.2.2. Quy trình 3 bươc

2.2.2.1. • Chia đầu vào thành 4 từ A,B,C,D • B + khóa K[0], D + khóa K[1]. Vad modulo 2^w. B = B + K[0] mod 2^w D = D + K[1] mod 2^w

2.2.2.2. • Lặp r vòng (r = 20) for i = 1 to r do { //Hàm f(x) = x*(2x+1) mod 2^w //Bặt t = f(B) <<< lgw; //Đặt u = f(D) <<< lgw; //lgw = lg32 = 5. t = [(B*(2B + 1)) mod 2^w] <<< lg w u = [(D*(2D + 1)) mod 2^w]<<< lg w //Sau đó tính: A = ((A ⊕ t) <<< u) + K[2i] C = ((C ⊕ u) <<< t) + K[2i + 1] //Quay trái: (A, B, C, D) = (B, C, D, A) }

2.2.2.3. Sau khi lặp r vòng: //Cộng A với khóa vòng K[42]; | 2*20 + 2 = 42 //Cộng C với khóa vòng K[43]; | 2*20 + 3 = 43 A = A + K[2r + 2] C = C + K[2r + 3]

2.3. Quy trình Giải mã

2.3.1. • Giải mã RC6-w / r / b Ngược lại với quy trình mã hóa RC6. • Input: Bản mã được lưu trữ trong bốn thanh ghi đầu vào w-bit A, B, C & D o r là số lượng vòng = 20 o w-bit round keys K[0, ..., 2r + 3]  K[0,…,43]. • Kết quả: bản rõ được lưu trữ trong A, B, C, D // • Quy trình giải mã Gồm 3 bước :

2.3.2. Quy trình 3 bươc

2.3.2.1. • Chia đầu vào cần giải mã thành 4 từ: A,B,C,D • C trừ khóa vòng K[43]; A trừ khóa vòng K[42] và modulo 2^32. C = C - K[2r +3] mod 2^w A = A - K[2r +2] mod 2^w

2.3.2.2. • Lặp r vòng for i = r downto 1 do { //- Thực hiện phép gán vế phải trừ vế trái.(quay vòng phải) (A, B, C, D) = (D, A, B, C) // Hàm f(x) = 2*(2x+1) mod 2^w //Đặt: u = f(D)<<< lg32; t = f(B)<<<lg32 //f(x) = x*(2x +1). //lg32 = 5. u = (D*(2D + 1)) <<< lg w t = (B*(2B + 1)) <<< lg w //Sau đó tính: C = ((C - K[2i + 1]) >>> t) ⊕ u A = ((A - K[2i]) >>> u) ⊕ t }

2.3.2.3. • Sau khi lặp r vòng (r = 20) • Trừ D cho khóa K[1]; Trừ B cho khóa K[0]. D = D - K[1] B = B - K[0]

3. Giải thuật Rabin

3.1. Yêu cầu sinh khóa

3.1.1. Chọn 2 số nguyên tố lớn p,q; p~=q.

3.1.1.1. Có thể chọn p,q là các số nto bất kỳ tuy nhiên nên chọn p và q đồng dư 3mod 4 để thuận tiện cho việ =c tính toán C^[(p+1)/4]

3.1.1.2. Khóa bí mật là K''=(p,q)

3.1.2. Tính n = p.q

3.1.2.1. N là số nguyên blum

3.1.3. Chọn số nguyên b thuộc [1,n-1]

3.1.3.1. Khi đó khóa công khai là K' =(n,b)

3.1.3.2. Sử dụng b để tính toán cho các công thức E,D

3.2. Mã hóa giải mã trong trường hợp p và q đồng dư 3mod4

3.2.1. Mã hóa (3 bước)

3.2.1.1. Người gửi thông điệp nhận khóa công khai n từ người nhận thông điệp.

3.2.1.2. • Giả sử thông điệp là một số nguyên m trong đoạn [0,n-1]. • Người gửi Tính c = m ^ 2 mod n

3.2.1.3. Gửi bản mã c cho người nhận

3.2.1.4. Ví dụ:

3.2.1.4.1. Cho p =11, q = 7, M =32. • Mã hóa: o Tính n = pq = 11*7 =77. o C = M^2 mod n = 32^2 mod 77 = 23.

3.2.2. Giải mã

3.2.2.1. Dùng thuật tóa Euclide mở rộng tìm a,b sao cho ap + bq =1.

3.2.2.2. Tính:

3.2.2.2.1. 1. Tính r = C^[(p+1) /4] mod p 2. Tính s = C^[(p+1) /4] mod q 3. Tính x = (aps + bqr) mod n. 4. Tính y = (aps – bqr) mod n.

3.2.2.3. Dự đoán bốn căn bậc 2 của C mod n, một trong 4 kết quả là bản mã. dựa vào b để lựa chọn kq chính xác.

3.2.2.3.1. • M1 = x. • M2 = -x mod n. • M3 = y. • M4 = -y mod n.

3.2.2.4. Ví dụ

3.2.2.4.1. • Giải mã: o Nhận thấy p,q đồng dư 3mod4. o Do a = (1-7b)/11. => 1-7b là bội của 11 => b=8, a = -5.

3.2.2.4.2.  Tính: r = C^[(p+1)/4)] mod p = 23^[(11+1)/4] mod 77 = 1.  Tính: s = C^[(q+1)/4] mod q = 23^[(7+1)/4] mod 77 = 4  Tính: x= (aps +bqr) mod n = (-5*11*4 + 8*7*1) mod 77 = 67  Tính y = (aps – bqr) mod n = )-5*11*4 – 8*7*1) mod 77 = 32

3.2.2.4.3. o Tính M1= 67; M2 = 10; M3= 32; M4 = 45. Kết quả đúng là M=32.

3.3. ví dụ minh họa( đọc thêm)

3.3.1. Tạo khóa (A tạo)

3.3.1.1. • A chọn số nguyên tố p = 331, q =311 có p,q đồng dư 3mod4 • Tính n = p*q = 102941 • Khóa công khai K’ là n = 102941 • Khóa bí mật của A là (p=311,q=311)

3.3.2. Mã hóa (B thực hiện

3.3.2.1. • Nếu giá trị m được chọn chưa đủ 16bit, cần thêm số bit vào bằng cách lấy các bit cuối cùng của chính số m và thêm vào cho đủ. • Số m = 633(10) = 1000 1111 001(2). Thiếu 6 bit. • Bù vào 6 bit bằng cách lấy 6 bit cuối cùng =>M =1000 1111 001 111001(2). • Theo hệ 10 M = 40569. • Sau đó B tính: c = M^2 mod n = 40569^2 mod 102941 = 23053 • Gửi c = 23053 cho A.

3.3.3. Giải mã (A thực hiện)

3.3.3.1. 1. Dùng thuật toán Euclide mở rộng tìm 2 số nguyên a và b: ap + bq =1. Tìm dược a =140, b =-149.

3.3.3.2. • Tính r = C^[(p+1)/4] mod p = 23053^[(331+1)/4] mod 331 = 144. • Tính s = C^[(p+1)/4] mod q = 23053^[(331+1)/4] mod 311 = 139. • Tính x = (asp +bqr) mod n = (6052060-6672816) mod 102941 =-25674. • Tính y=(aps-bqs) mod n= [(140*331*139)-(-149*311*139)] mod 102941= (6052060+6672816) mod 102941=40569.

3.3.3.3. Bốn căn bậc 2 của c mod n là x, -x mod n, y và –y mod n. • m1 =25674(10) =644A(H)=0110010001001010(2) • m2 =77267(10)=2DD3(H)= 0010110111010011(2) • m3 = 40569(10)= 9E79(H)= 1001111001111001(2) • m4 = 62372(10) = F3A4(H)= 1111001110100100(2) => Vì chỉ có m3 có dư thừa dữ liệu yêu cầu, A giải mã c thành m3 (bỏ 6 bit lặp cuối cùng) và phục hồi bản rõ ban đầu là M= 10011110012= 633(10)

4. Giải thuật Elgamal

4.1. Sơ đồ quy trình chung

4.2. Yêu cầu Tạo khóa

4.2.1. • Trước khi tiến hành mã hóa, người nhận sẽ thực hiện công việc sinh khóa để phục vụ cho quá trình giải mã của mình.

4.2.2. Chọn số p đủ lớn (trên 1024bit)

4.2.2.1. Số bit càng lơn (hơn 1024bit) tránh bị tấn công dự đoán bởi tính toán modulo.

4.2.3. Chọn ngẫy nhiên e1; sao cho e1 thuộcZ(p)* là phần tử nguyên thủy.

4.2.3.1. Phần tử này phải là số nguyên tố dương. Vì độ an toàn của Elgamal phần lớn phụ thuộc vào độ khó của việc tính toán số nguyên tố. kết hợp với modulo.

4.2.4. Chọn d sao cho 1<d<p-1

4.2.4.1. d nằm trong khoảng (1,p-1) vừa đảm bảo đủ an toàn và không quá khó cho việc tạo khóa e2. Và nếu d >= 1-p thì phép tính mod p sẽ gây tác dụng ngược.

4.2.5. Tìm e2 sao cho e2 =e1^d mod p

4.2.6. Kết luận: Như vậy khóa công khai sẽ là (e2; e1; p); khóa bí mật sẽ là d. Người nhận sẽ công khai tham số (e2; e1; p)

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

4.3.1. Mã hóa Elgamal

4.3.2. Giải mã Elgamal

4.4. Ví dụ minh họa

4.4.1. Chọn p= 2579; e1= 2; khóa bí mật d=765; chọn r ngẫu nhiên = 853. Tìm khóa của hệ mã trên.

4.4.2. Mã hóa

4.4.2.1. 1. tính e2 = e1^d mod p = 2^756 mod 2579 = 949. 2. để mã hóa thông điệp P(là số nto lớn) =1299 ta tính theo r = 853: • C1 = e1^r mod p = 2^853 mod 2579 = 435. • C2 = (P*e2^r) mod p = [1299*(949^853)] mod 2579 = 2396. • Vậy bản mã gửi đi sẽ là C= (C1,C2) = (435,2396).

4.4.3. Giải mã

4.4.3.1. Với khóa bí mật d = 765. • Tính Z^(-1) = (C1^d)^-1 mod p = (C1^(p-1-d))mod p = 435^(2579-1-765) mod 2579 = 1980. • M = (C2*Z^(-1)) mod p = (2396*1980) mod 2579 = 1229.

5. Phép toán trong Eliptic

5.1. Đọc hiểu về Eliptic

5.1.1. Dạng đường cong

5.1.1.1. • Eliptic trên trường Zp (p nguyên tố)

5.1.1.1.1. y^2 mod p = (x^3 +ax + b) mod p

5.1.1.1.2. o Ví dụ trong trường Z, chọn a= 1, b= 1, x = 9, y = 7, p = 23 o Có: 7^2 mod 23 = ( 9^3 + 9 + 1) mod 23 o => 49 mod 23 = 739 mod 23 => đồng dư 3.

5.1.1.2. • Eliptic trên trường GF(2^m). m là nguyên tố.

5.1.2. Tính modulo phân số

5.1.2.1. (a/b) mod n = [(a mod n)* (b^(n-2) mod n] mod n

5.1.2.2. a,b là số nguyên tố của n, n là số nguyên tố

5.1.3. Chọn đường cong Eliplic

5.2. Phép cộng

5.2.1. Khía cạnh hình học

5.2.1.1. • R = P+Q (P≠O, Q≠O, P≠Q), • Nối P và Q bằng đường thẳng L. • Đường thẳng L cắt đường E tại ba điểm P, Q và –R(x, y). • Điểm R(x, – y) sẽ có tung độ là giá trị đối của y.

5.2.2. Khía cạnh đại số

5.2.2.1. • Xác định các điểm R(xR,yR), P(xP,yP) + Q(xQ,yQ) • Đk: P ≠ O, Q ≠ O, P ≠ Q.

5.2.2.1.1. delta = (xP - xQ)/(yP - yQ)

5.2.2.2. Tính xR, yR thông qua giá trị delta:

5.2.2.2.1. xR = delta^2 - xQ - xP

5.2.2.2.2. yR = - yP + delta*(xP - xR)

5.3. Phép nhân

5.3.1. Khía cạnh hình học

5.3.1.1. • Để xác định điểm R= 2P = P+P, • Vẽ tiếp tuyến L của đường cong E tại điểm P, • Điểm –R là giao điểm còn lại của L với E và R = 2P = P+P.

5.3.2. Khía cạnh đại số

5.3.2.1. • Xác định điểm R(xR,yR) = P+P = 2P (do P trùng nên không áp dụng được phép cộng vì không xác định được Delta:

5.3.2.2. xR, yR tính như sau:

6. Trao đổi khóa

6.1. Omura-Massay

6.1.1. Ý tưởng

6.1.1.1. Alice muốn gửi tin nhắn cho Bob, nhưng tất cả những gì cô có là một chiếc hộp và một chiếc khóa mà cô có chìa khóa duy nhất.

6.1.2. Quy trình + ví dụ

6.1.2.1. Trước khi trao đổi khóa

6.1.2.1.1. • A và B cần chọn trước nhóm Ep(a,b) làm khóa công khai.

6.1.2.1.2. • Chọn khóa bí mật:

6.1.2.2. o Giả sử đường cong Ep(a,b) là E13(1,4), chọn điểm nguyên thủy là P(2,1). o Aice sử dụng khóa bí mật m của M để khóa khóa chung M (M do Alice chọn).

6.1.2.2.1.  m + n = #Ep(a,b). tính mP + M  Ví dụ m,n = 4,10; M =3P  mP+ M = 4P+3P = (3P+ P) + (2P +P)  Tính:2P = (9,12), 4P = (7,4), 3P = (5,11). => 7P(10,0)

6.1.2.3. o Bob nhận được 7P(10,0) thì tiến hành cộng thêm khóa u của mình và gửi lại A:

6.1.2.3.1.  (u,v) = (6,8).  7P + uP = 7P + 6P = 13P(2,12).

6.1.2.4. o Alice nhận được 13P thì tiến hành dùng khóa n để khử khóa m của mình.

6.1.2.4.1. 13P + 10P = 23P = 9P(8,2). Rồi gửi lại 9P(8,2) cho Bob.

6.1.2.5. o Bob nhận 9P sẽ dùng khóa bí mật v =8 của mình để khử khóa u trước đó:

6.1.2.5.1.  9P +8P = 17P = 3P =M.

6.2. Diffie- Hellman

6.2.1. Ý tưởng bái toán liên quan đến việc kết hợp màu.

6.2.1.1. Mỗi bên chọn ra một màu chung(khóa chung). Và một màu riêng (khóa riêng).

6.2.1.2. o Alice trộn màu chung với màu riêng của mình: vàng + đỏ = cam. o Bob trộn màu chung với màu riêng của anh ta: vàng + lục = xanh dương.

6.2.1.3. Alice và Bob trao đổi màu sau khi trộn lần 1 cho nhau.

6.2.1.3.1.  A trộn màu mà Bob gửi với màu riêng của mình: vàng + lục + đỏ = tràm.  Bob trộn màu màu mà Alice gửi với màu riêng của anh ta: vàng + đỏ + lục = tràm.

6.2.1.4. Kết thúc quá trình trao đổi. cả 2 bên đều có màu giống nhau:

6.2.1.4.1. vàng + đỏ + lục = tràm.

6.2.2. Quy trình + ví dụ

6.2.2.1. Chọn Ep(1,4) với điểm nguyên thủy P(2,1) làm ví dụ.

6.2.2.2. • Alice chọn khóa bí mật x thỏa mãn 1<x<#Ep(a,b). và “trộn” với khóa công khai P(2,1) rồi gửi cho Bob.

6.2.2.2.1. o Ví dụ x = 3. o xP = 3P => Bob nhận đc 3P .

6.2.2.3. • Bob chọn khóa bí mật y thỏa mãn 1<y<#Ep(a,b). và “trộn” với khóa công khai P(2,1). Rồi gửi cho Alice.

6.2.2.3.1. o Ví dụ y =4 o yP = 4P => Alice nhận đc 4P.

6.2.2.4. • Sau đó: o Alice trộn tiếp yP vừa nhận được từ Bob với khóa bí mật x của mình: x(yP) = 3(4P) = 12P(9,1). o Bob trộn tiếp xP vừa nhận được từ Alice với khóa bí mật y của mình: y(xP) = 4(3P) = 12P(9,1).

7. Giải thuật IDEA

7.1. Vẽ sơ đồ

7.1.1. Sơ đồ về giải thuật 8 vòng đầu

7.1.1.1. 1. Nhân modulo X1 với K1 2. Cộng modulo X2 với K2 3. Cộng modulo X3 với K3 4. Nhân modulo X4 với K4 5. XOR kết quả bước1 với bước 3. 6. XOR kết quả bước 2 với bước 4 7. Nhân modulo kết quả bước 5 với K5. 8. Cộng modulo kết quả bước 7 với bước 6 9. Nhân modulo kết quả bước 8 với K6 10. Cộng modulo kết quả bước 9 với bước 7 11. XOR kết quả bước 1 với bước 9. 12. XOR kết quả bước 3 với bước 9 13. XOR kết quả bước 2 với bước 10 14. XOR kết quả bước 4 với bước 10

7.1.2. Các bước tại vòng cuối cùng (vòng9)

7.2. Quy trình

7.2.1. • Giải thuật IDEA với đầu vào là khối X 64 bit được chia thành 4 khối X1,X2,X3,X4; mỗi khối Xi 16bit.

7.2.2. Trải qua 2 quả trình chính

7.2.2.1. 8 vòng đầu được xử lý và tất cả các khóa con được nhận từ K (K1-K6). • Kết quả của vòng r là đầu vào của vòng r+1 và lặp lại đến hết vòng thứ 8. • Kết quả xử lý sau khi chạy 8 vòng đầu là input của các khối Y1,Y2,Y3,Y4 để xử lý vòng cuối cùng (vòng 9).

7.2.2.2. Kết quả sau vòng 9 là cụm mã 4 khối Y={Y1,Y2,Y3,Y4} 64(bit) chính là bản mã ta cần.

8. Hàm g trong giải thuật Twofish

8.1. Sơ đồ hàm g

8.1.1. • Hàm g nhận tham số input và output đề là khối 32bit.

8.2. Quy trình xử lý của hàm g

8.2.1. Dữ liệu đầu vào là X 32bit chia thành 4byte, mỗi byte đi vào mỗi hàm S-box

8.2.2. Biến đổi qua mỗi S-box (S-box0 đến S-box3) thu được các giá trị 8bit (y0 -y3). Tổng là 4byte.

8.2.3. 4 byte kết quả này là môt jvecter có chiều dài là 4 trên trường GF(2^8). Nhân vecter này với ma trận 4x4 MDS (sử dụng GF(2^8) cho việc tính toán).

8.2.4. Vecter thu được sau nhân là 32bit chính là kết quả hàm g.

8.3. Các thành phần của hàm g

8.3.1. Ma trận MDS có dạng như hình. Phần tử trong MDS viết dưới dạng byte HEX.

8.3.2. Các hàm S-box thực hiện quá trình biến đổi

8.3.2.1. • Phép hoán vị q gồm q0 và q1 • Phép XOR • Sau mỗi lần biến đổi(hoán vị,..) q0,q1 các byte của 4 S-box lại được XOR với các khóa phụ Si. (từ 0-i). (tương ứng với 128,192,256 thì i=1,2,3).