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

Serpend algorithm

39 532 3

Đ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 39
Dung lượng 5,04 MB

Nội dung

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.. • Serpen

Trang 1

Gi¸o viªn h ướ ng dÉn: PGS, TS NguyÔn HiÕu Minh

Nhãm th c hi n: ự ệ

1/ NguyÔn Huy Linh 2/ TrÇn Quang Khanh 3/ Nguy n ễ Đắ c Ti n ế

KHOA CNTT H C VI N KTQS – Ọ Ệ NHãM 6 TIN HäC 9A –

- O 0 O

-BµI THUYÕT TR×NH: M· HãA TH¤NG TIN

THUËT TO¸N Serpent

Ngµy hoµn thµnh: 25/04/2013

Trang 2

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

6

Kết luận Các nhận xét

Tài liệu tham khảo Tài liệu tham khảo trong quá trình làm đồ án Chương trình

Trang 3

• 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:

Trang 4

• 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)

Trang 5

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

• Giới thiệu

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

2/6

• Đượ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 7

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

• Sơ đồ thuật toán

Sơ đồ thuật toán

2/6

Trang 8

• 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),

Trang 9

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

• 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)

Trang 10

• Các vấn đề thảo luận ở đây:

Trang 11

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

3/6

• Mã hóa

Encryption

KHỞI TẠO VÀ PHÂN BỔ KHÓA (1/8)

• 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 (K0,

…, K32) 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 w0, …, w131 bằng công thức sau:

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

Trang 12

KHỞI TẠO VÀ PHÂN BỔ KHÓA (2/8)

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:

Trang 13

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

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:

Ki :={k4i, k4i+1, k4i+2, k4i+3}

Trang 14

KHỞI TẠO VÀ PHÂN BỔ KHÓA (4/8)

Ví dụ:

• Khóa: 133457799BBCDFFIIFDCBB997754331133457799BBCDFFIIFDCBB997754331 (256 bit)

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

Trang 15

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

Trang 16

KHỞI TẠO VÀ PHÂN BỔ KHÓA (6/8)

• 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:

Trang 17

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

3/6

• Mã hóa

Encryption

KHỞI TẠO VÀ PHÂN BỔ KHÓA (7/8)

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

Ki :={k4i, k4i+1, k4i+2, k4i+3}

Trang 18

KHỞI TẠO VÀ PHÂN BỔ KHÓA (8/8)

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

• Kế đến áp dụng phép hoán vị đầu vào khóa thực hiện một

chu kỳ để định vị các bit khóa vào đúng vị trí (cột)

Ki = IP(Ki)

Trang 19

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

Trang 20

• 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.

CÁC BẢNG ĐIỀU KHIỂN (2/4)

Trang 21

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

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

`

CÁC BẢNG ĐIỀU KHIỂN (3/4)

Trang 22

• 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ã

CÁC BẢNG ĐIỀU KHIỂN (4/4)

Trang 23

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

3/6

• Mã hóa

Encryption

BIẾN ĐỔI TUYẾN TÍNH

Si(Bi ⊕ Ki)

Trang 24

LINEAR TRANSFORMATION

• 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

Trang 25

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

Trang 26

S-BOX (2/4)

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

Trang 27

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

Trang 28

S-BOX (4/4)

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

Trang 29

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

3/6

• Mã hóa

Encryption

QUY TRÌNH MÃ HÓA (1/6)

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)

Trang 30

QUY TRÌNH MÃ HÓA (2/6)

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 Ki là subkey 128 bit chu kỳ thứ i và S–box Si đượ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 :

Trang 31

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

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

Ri(X) = ^Si(X ^Ki) ^K32 , i = 31

Trang 32

(B31 ⊕ K31) kết quả thu được đem XOR với K32.

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

Trang 33

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

Trang 34

QUY TRÌNH MÃ HÓA (6/6)

Phép biến đổi tuyến tính L trên Yi = (y0 , y1, y2,

y3) định nghĩa như sau:

Trang 35

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

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.

Trang 37

• 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

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

• Kết luậnCác nhận xét

5/6

ĐỘ AN TOÀN VÀ BẢO MẬT CỦA THUẬT TOÁN SERPENT

Trang 38

 http://Wikipedia.com

Trang 39

KÍNH CHÚC THẦY, CÔ GIÁO SỨC KHỎE, HẠNH PHÚC!

BÀI THUYẾT TRÌNH CỦA CHÚNG EM

ĐẾN ĐÂY KẾT THÚC

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

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

Xem thêm

HÌNH ẢNH LIÊN QUAN

Sơ đồ thuật toán - Serpend algorithm
Sơ đồ thu ật toán (Trang 6)
Sơ đồ thuật toán - Serpend algorithm
Sơ đồ thu ật toán (Trang 7)
w