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 1Gi¸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 2Giớ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 5MÃ 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 7MÃ 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 9MÃ 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 11MÃ 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 12KHỞ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 13MÃ 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 14KHỞ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 15MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
Trang 16KHỞ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 17MÃ 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 18KHỞ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 19MÃ 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 21MÃ 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 23MÃ 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 24LINEAR 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 25MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
Trang 26S-BOX (2/4)
• S-box sử dụng khi mã hóa trong thuật toán Serpent:
Trang 27MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
Trang 28S-BOX (4/4)
• S-box nghịch đảo sử dụng khi giải mã trong thuật toán Serpent:
Trang 29MÃ 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 30QUY 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 31MÃ 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 33MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
Trang 34QUY 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 35MÃ 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 39KÍ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