1. Trang chủ
  2. » Giáo Dục - Đào Tạo

THUẬT TOÁN SERPENT (DOTNET)

14 775 5

Đ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

Định dạng
Số trang 14
Dung lượng 395,34 KB

Nội dung

 Các tác giả thiết kế thuật toán này hướng tới việc tuân thủ dựa trên các thiết kế đã có và coi trọng tính an toàn của thuật toán hơn là tính mới lạ và tốc độ của thuật toán..  Trong m

Trang 1

ĐỒ ÁN MÔN HỌC LẬP TRÌNH DOTNET

Đề tài: THUẬT TOÁN SERPENT

Giáo viên hướng dẫn

Sinh viên thực hiện

: :

Thầy Phan Việt Anh Nguyễn Huy Linh (MSV: 10150320, Lớp Tin học 9A)

HỌC VIỆN KỸ THUẬT QUÂN SỰ KHOA CÔNG NGHỆ THÔNG TIN

- O 0 O

Trang 2

-MỤC LỤC

Trang 3

1 Lịch sử thuật toán Serpent

 NIST đã đề nghị một sự thay thế cho thuật toán DES – Thuật toán AES

 Các thuộc tính của AES:

− Khối mã hóa 128 bit

− Khóa đối xứng

− Các biến thể của độ dài khóa: 128, 192, 256 bit

− Nhanh hơn DES 3 lần

− An toàn như 3DES

2 Giới thiệu khái chung về thuật toán Serpent

 Serpent là một thuật toán mã nguồn mở mã hóa ở dạng khối, còn gọi là khóa đối xứng Về cơ bản chỉ có một khóa được sử dụng để mã hóa và giải mã thông điệp

 Thuật toán được phát triển vào năm 1998 bởi 3 nhà nghiên cứu: Ross Anderson, Lars Knudsen và Eli Biham

 Serpent là một trong 5 ứng viên cuối vào vị trí thuật toán AES (Advanced Encryption Standard)

 Được thiết kế dựa trên mạng chuyển vị - thay thế (S-P Network)

 Các tác giả thiết kế thuật toán này hướng tới việc tuân thủ dựa trên các thiết

kế đã có và coi trọng tính an toàn của thuật toán hơn là tính mới lạ và tốc độ của thuật toán

 Trong mỗi vòng của thuật toán bao gồm 8 hộp S dựa trên các hộp S của mã DES, nó được thiết kế cho phép tất cả các toán tử có thể thực hiện song song

Trang 4

 Sơ đồ thuật toán

Trang 5

 Thuật toán bao gồm 32 vòng Các tác giả của thuật toán khẳng định rằng 16 vòng đã đảm bảo độ an toàn của thuật toán (32 vòng sẽ đảm bảo khả năng chống lại các kiểu tấn công trong tương lai)

 Điều này dễ dàng tạo cho thuật toán một sự an toàn cần thiết (Serpent được nhìn nhận là thuật toán an toàn nhất trong các thuật toán chung khảo AES),

 Nhưng sự trả giá của nó là hiệu suất thấp của thuật toán so với tất cả các thuật toán chung khảo AES

 Tuy nhiên, vì yêu cầu ít bộ nhớ khi thực hiện, vì vậy thuật toán rất thích hợp để thực hiện trên smart card (chính điều này giúp cho Serpent chiến thắng thuật toán CAST-256, mặc dù chúng có cùng hiệu năng và

độ an toàn)

3 Quy trình mã hóa – giải mã

a KHỞI TẠO VÀ PHÂN BỔ KHÓA

 Việc mã hóa của thuật toán Serpent đòi hỏi 132 từ 32 bit của toàn bộ khóa Đầu tiên, từ khóa K 256 bits người sử dụng cung cấp, ta mở rộng nó thành

33 khóa con 128 bit (K 0 , …, K 32 ) bằng cách ghi khóa K thành 8 từ 32 bit (w -8,

, w -1 ) và mở rộng các từ này thành khóa trung gian w 0 , …, w 131 bằng công thức sau:

w i =(w i- 8 ⊕ wi-5 ⊕ wi-3 ⊕ wi-1 ⊕ φ ⊕ i) <<< 11 Trong đó:

φ: là phần phân số của tỉ số vàng (sqrt(5) + 1) / 2 hoặc số hexa 0x9e3779b9

<<< : là phép vòng trái 11 bits

 Những khóa thực hiện một chu kỳ được suy ra từ các khóa trước khi sử dụng các S–box Sử dụng S–box để biến đổi các khóa wi thành các từ ki của khóa chu kỳ theo cách sau:

{k 0 , k 1 , k 2 , k 3 }:= S 3 (w 0 , w 1 , w 2 , w 3)

{k 4 , k 5 , k 6 , k 7 }:= S 2 (w 4 , w 5 , w 6 , w 7)

{k 8 , k 9 , k 10 , k 11 }:= S 1 (w 8 , w 9 , w 10 , w 11)

{k 12 , k 13 , k 14 , k 15 }:= S 0 (w 12 , w 13 , w 14 , w 15)

{k 16 , k 17 , k 18 ,k 19 }:= S 7 (w 16 , w 17 , w 18 , w 19)

Trang 6

{k 124 , k 125 , k 126 , k 127 } := S 4 (w 124 , w 125 , w 126 , w 127)

{k 128 , k 129 , k 130 , k 131 } := S 3 (w 128 , w 129 , w 130 , w 131)

Ta đánh số lại các giá trị 32 bit kj giống các subkey 128 bit Ki (cho i ∈ 0,

…, r) như sau:

K i :={k 4i , k 4i+1 , k 4i+2 , k 4i+3}

 Ví dụ:

− Khóa:

133457799BBCDFFIIFDCBB997754331133457799BBCDFFIIFDCBB9

97754331 (256 bit)

− Khóa này ở dạng nhị phân là một chuỗi bít như sau:

0001001000100100010101110111100

1001101110111100110111111111000

0001111111111101110010111011100

1001011101110101010000100010000

0001001000100100010101110111100

1001101110111100110111111111000

0001111111111101110010111011100

1001011101110101010000100010000

− Tính wi

w i =(w i- 8 ⊕ wi-5 ⊕ wi-3 ⊕ wi-1 ⊕ φ ⊕ i) <<< 11

w0 =(w-8 ⊕ w-5 ⊕ w-3 ⊕ w-1 ⊕ φ ⊕ i) <<< 11

Trang 7

1001011101110101010000100010000

1001101110111100110111111111000

1001011101110101010000100010000

1001111000110111011110011011100

0000000000000000000000000000000

0000010110001011101001100100100

0 0101110100110010010000000010110

0 <<< 11 0101110100110010010000000010110

− Cứ như vậy lần lượt ta tính được 132 từ 32 bit

− Tính kj: sau khi tính được các wi ta tính được các khóa:

{k 0 , k 1 , k 2 , k 3 }:= S 3 (w 0 , w 1 , w 2 , w 3)

{k 4 , k 5 , k 6 , k 7 }:= S 2 (w 4 , w 5 , w 6 , w 7)

{k 8 , k 9 , k 10 , k 11 }:= S 1 (w 8 , w 9 , w 10 , w 11)

{k 12 , k 13 , k 14 , k 15 }:= S 0 (w 12 , w 13 , w 14 , w 15)

{k 16 , k 17 , k 18 ,k 19 }:= S 7 (w 16 , w 17 , w 18 , w 19)

{k 124 , k 125 , k 126 , k 127 } := S 4 (w 124 , w 125 , w 126 , w 127)

{k 128 , k 129 , k 130 , k 131 } := S 3 (w 128 , w 129 , w 130 , w 131)

− Ta đánh số lại các giá trị 32 bit k j:

Trang 8

ki :={k 4i , k 4i+1 , k 4i+2 , k 4i+3} tương ứng ta được:

k0 ={k 0 , k 1 , k 2 , k 3 }:= S 3 (w 0 , w 1 , w 2 , w 3)

k1 ={k 4 , k 5 , k 6 , k 7 }:= S 2 (w 4 , w 5 , w 6 , w 7)

……

k31={k 128 , k 129 , k 130 , k 131 } := S 3 (w 128 , w 129 , w 130 ,w 131)

− Mô hình phát sinh khóa

-Initial

Permutation):

Trang 9

 Trong thuật toán ta cần hoán vị cả khóa và bản rõ qua bảng IP để định vị các bit khóa và bit rõ vào vị trí đúng cột

 Ví dụ:

− Nội dung bản rõ là:

0123456789ABCDEFFEDCBA9876543210 (128 bit)

− Đưa về dạng nhị phân:

00000001001000110100010101100111 10001001101010111100110111101111 11111110110111001011101010011000 01110110010101000011001000010000

− Ta lần lượt đánh vị trí các bít (0 -> 127) và sau đó lấy các bít có vị trí theo bảng IP: do đó sau khi qua bảng IP ta được bản rõ sau khi hoán vị là:

01100110001100110011011000110011 11000110001111000011011000111100 11000110110000110011011011000011 11000110110011000011011011001100

 Bảng hoán vị cuối (FP – Final Permutation):

− Bảng hoán vị cuối FP được sử dụng sau khi qua 33 chu kì và ta thu được kết quả là bản mã

Trang 10

c LINEAR TRANSFORMATION (BIẾN ĐỔI TUYẾN TÍNH)

 Applied on the result of the S-Boxes, I.e on Si(Bi ⊕ Ki)

 Each output bit is an exclusive or of some input bits

 For Example, output bit 0 is an exclusive or of input bits: 16, 52, 56, 70, 83,

94 and bit 105

 The number of input bits XORed to give one output bit is variant and not fixed to seven

d S-BOX

 S–box của Serpent là phép hoán vị 4 bit S–box được phát sinh theo cách sau: sử dụng một ma trận gồm 32 dãy, mỗi dãy 16 phần tử Ma trận được khởi gán với 32 hàng của S–box DES và được biến đổi bằng cách hoán đổi các phần tử trong dãy r tùy thuộc vào giá trị của các phần tử trong dãy (r + 1)

và chuỗi ban đầu đại diện cho một khóa Nếu dãy kết quả có các đặc tính như mong muốn (vi phân và tuyến tính), ta lưu dãy này như một Serpent S– box Lặp đi lặp lại thủ tục này đến khi 8 S–box được phát sinh

 S-box sử dụng khi mã hóa trong thuật toán Serpent:

 Cách tra bảng S-box:

Trang 11

 S-box nghịch đảo sử dụng khi giải mã trong thuật toán Serpent:

e QUY TRÌNH MÃ HÓA

 Việc mã hóa bao gồm:

− B1: Phép hoán vị đầu IP (initial permutation);

− B2: 32 chu kỳ, mỗi chu kỳ bao gồm một phép trộn khóa, một lượt duyệt qua các S–box và một phép biến đổi tuyến tính (cho tất cả các chu kỳ trừ chu kỳ cuối) Ở chu kỳ cuối cùng, phép biến đổi tuyến tính này thay thế bằng một phép trộn khóa

− B3: Phép hoán vị cuối FP (final permutation)

 Ta sử dụng các ký hiệu như sau: Phép hoán vị đầu IP áp dụng vào văn bản

ban đầu P cho ra dữ liệu BÂ 0 là đầu vào chu kỳ thứ nhất (các chu kỳ đánh số

từ 0 đến 31) Dữ liệu ra của chu kỳ thứ nhất là BÂ 1, dữ liệu ra của chu kỳ thứ

hai là BÂ 2 , dữ liệu ra của chu kỳ thứ i là BÂ i+1… cho đến chu kỳ cuối cùng Phép biến đổi tuyến tính ở chu kỳ cuối cùng thay thế bằng phép trộn khóa

được ký hiệu BÂ 32 Phép hoán vị cuối FP áp dụng vào BÂ 32 cho ra văn bản

mã hóa C.

 Cho K i là subkey 128 bit chu kỳ thứ i và S–box S i được sử dụng ở chu kỳ

thứ i Cho L là phép biến đổi tuyến tính Khi đó hàm thực hiện một chu kỳ

được định nghĩa như sau :

X i ← B i ⊕ Ki

Y i ← S i (X i )

B i-1 ←L(Y i ), i = 0, …, 30

B i-1 ← Y i ⊕ K i-1 , i = 31

Như vậy quá trình mã hóa tương đương:

Trang 12

B0 := IP(P)

B i+1 := R i (B i)

C := FP(B32)

ở đây:

Ri(X) = L(^Si(X ^Ki)), i = 0,…, 30

Ri(X) = ^Si(X ^Ki) ^K 32 , i = 31

 Ở mỗi chu kỳ vòng R i (i ∈ {0, …, 31}) chỉ sử dụng một bản sao S–box Ri

sử dụng bảng S(i mod 8) Bộ tám S–box (S 0 …S 7 ) được sử dụng 4 lần Do

đó sau khi sử dụng S 7 ở chu kỳ 7, S 0 lại tiếp tục được sử dụng ở chu kỳ 8, S 1

ở chu kỳ 9…, cuối các vòng là phép biến đổi tuyến tính và ngoại lệ là vòng

R 31, vòng này sau khi sử dụng S7 cho:

(B 31 ⊕ K31 ) kết quả thu được đem XOR với K 32

 Sau đó, kết quả B 32 được hoán vị bằng FP cho ra văn bản mã hóa

 Cấu trúc mã hóa:

 Phép biến đổi tuyến tính L trên Yi = (y0 , y1, y2, y3) định nghĩa như sau:

y 0 ← y 0 <<< 13

Trang 13

y 2 ← y 2 <<< 3

y 1 ← y 0 ⊕ y1 ⊕ y2

y 3 ← y 2 ⊕ y3 ⊕ (y0 << 3)

y 1 ← y 1 <<< 1

y 3 ← y 3 <<< 7

y 0 ← y 0 ⊕ y1 ⊕ y3

y 2 ← y 2 ⊕ y3 ⊕ (y1 << 7)

y 0 ←y 0 <<< 5

y 2 ← y 2 <<< 22

B i+1 ← (y 0 , y 1 , y 2 , y 3)

Trang 14

f QUY TRÌNH GIẢI MÃ

 Quy trình giải mã có khác với quy trình mã hóa Cụ thể là nghịch đảo các S–box (S–box –1) phải được sử dụng theo thứ tự ngược lại, cũng như nghịch đảo của biến đổi tuyến tính và nghịch đảo thứ tự các subkey

4 Chương trình Demo

 Chúng em xin phép được báo cáo chương trình Demo trong một buổi khác

5 Kết luận

 Thuật toán có độ an toàn cao hơn thuật toán AES và có tốc độ nhanh hơn thuật toán DES

 Vì yêu cầu ít bộ nhớ khi thực hiện, vì vậy thuật toán rất thích hợp

để thực hiện trên smart card (chính điều này giúp cho Serpent chiến thắng thuật toán CAST-256, mặc dù chúng có cùng hiệu năng và độ an toàn)

6 Tài liệu tham khảo

 http:// w ikipedia.com

 Bài giảng Mã hóa thông tin – Thầy Nguyễn Hiếu Minh, HV KTQS

Ngày đăng: 13/05/2014, 21:11

TỪ KHÓA LIÊN QUAN

w