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

THUẬT TOÁN SERPENT (DOTNET)

14 757 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

ĐỒ Á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 O0O Hà Nội, tháng 05 năm 2013 LẬP TRÌNH DOTNET MỤC LỤC Thuật toán Serpent | Trang 2 / 13 LẬP TRÌNH DOTNET 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 SerpentSerpent 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. Thuật toán Serpent | Trang 3 / 13 LẬP TRÌNH DOTNET  Sơ đồ thuật toán Thuật toán Serpent | Trang 4 / 13 LẬP TRÌNH DOTNET  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 ⊕ w i-5 ⊕ w i-3 ⊕ w i-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 w i thành các từ k i 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 ) … Thuật toán Serpent | Trang 5 / 13 LẬP TRÌNH DOTNET {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 giống các subkey 128 bit K i (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 1 w -8 1001101110111100110111111111000 1 w -7 0001111111111101110010111011100 1 w -6 1001011101110101010000100010000 1 w -5 0001001000100100010101110111100 1 w -4 1001101110111100110111111111000 1 w -3 0001111111111101110010111011100 1 w -2 1001011101110101010000100010000 1 w -1 − Tính w i w i =(w i- 8 ⊕ w i-5 ⊕ w i-3 ⊕ w i-1 ⊕ φ ⊕ i) <<< 11 w 0 =(w -8 ⊕ w -5 ⊕ w -3 ⊕ w -1 ⊕ φ ⊕ i) <<< 11 Thuật toán Serpent | Trang 6 / 13 LẬP TRÌNH DOTNET 0001001000100100010101110111100 1 w -8 1001011101110101010000100010000 1 w -5 1001101110111100110111111111000 1 w -3 1001011101110101010000100010000 1 w -1 1001111000110111011110011011100 1 φ 0000000000000000000000000000000 0 i 0000010110001011101001100100100 0 0101110100110010010000000010110 0 <<< 11 0101110100110010010000000010110 0 w 0 − Cứ như vậy lần lượt ta tính được 132 từ 32 bit. − Tính k j : sau khi tính được các w i 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 : Thuật toán Serpent | Trang 7 / 13 LẬP TRÌNH DOTNET k i :={k 4i , k 4i+1 , k 4i+2 , k 4i+3 } tương ứng ta được: k 0 ={k 0 , k 1 , k 2 , k 3 }:= S 3 (w 0 , w 1 , w 2 , w 3 ) k 1 ={k 4 , k 5 , k 6 , k 7 }:= S 2 (w 4 , w 5 , w 6 , w 7 ) …… k 31 ={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 − 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): K i = IP(K i ) b. CÁC BẢNG ĐIỀU KHIỂN  Bảng hoán vị khởi đầu (IP - Initial Permutation): Thuật toán Serpent | Trang 8 / 13 LẬP TRÌNH DOTNET  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ã. Thuật toán Serpent | Trang 9 / 13 LẬP TRÌNH DOTNET 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: Thuật toán Serpent | Trang 10 / 13 [...]... 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) Tài liệu tham khảo http://wikipedia.com Bài giảng Mã hóa thông tin – Thầy Nguyễn Hiếu Minh, HV KTQS Thuật. .. đổi tuyến tính L trên Yi = (y0 , y1, y2, y3) định nghĩa như sau: y0 ← y0 . phép tất cả các toán tử có thể thực hiện song song. Thuật toán Serpent | Trang 3 / 13 LẬP TRÌNH DOTNET  Sơ đồ thuật toán Thuật toán Serpent | Trang 4 / 13 LẬP TRÌNH DOTNET  Thuật toán bao gồm. 2013 LẬP TRÌNH DOTNET MỤC LỤC Thuật toán Serpent | Trang 2 / 13 LẬP TRÌNH DOTNET 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ầ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

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

Xem thêm: THUẬT TOÁN SERPENT (DOTNET)

Mục lục

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

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

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

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

    b. CÁC BẢNG ĐIỀU KHIỂN

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

    e. QUY TRÌNH MÃ HÓA

    f. QUY TRÌNH GIẢI MÃ

    6. Tài liệu tham khảo

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

TÀI LIỆU LIÊN QUAN

w