Nghiên cứu thuật toán mật mã AES và cài đặt mô phỏng AES128

29 791 19
Nghiên cứu thuật toán mật mã AES và cài đặt mô phỏng AES128

Đ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

Cài đặt thuật toán AES 128 Mục lục Page Cài đặt thuật toán AES 128 DANH MỤC TỪ VIẾT TẮT DES AES NIST Data Encryption Standard Advanced Encryption Standard National Institute of Standards and Technology Page Cài đặt thuật tốn AES 128 DANH MỤC HÌNH ẢNH Page Cài đặt thuật tốn AES 128 LỜI NĨI ĐẤU Từ trước công nguyên người phải quan tâm tới việc làm để đảm bảo an tồn bí mật cho liệu, văn quan trọng, đặc biệt lĩnh vực như: quân sự, ngoại giao Ngày nay, với việc xuất máy tính, tài liệu văn thơng tin quan trọng số hóa xử lý máy tính truyền môi trường mạng, môi trường không an tồn truyền liệu Do cần có yêu cầu việc có giải pháp để bảo vệ an tồn cho liệu, thơng tin nhạy cảm, quan trọng ngày cấp thiết Môn học mật giúp cho nghiên cứu thuật tốn hóa quan trọng, giúp đảm bảo an toàn cho liệu Page Cài đặt thuật toán AES 128 CHƯƠNG 1: TỔNG QUAN VỀ THUẬT TỐN HĨA AES 1.1 LỊCH SỬ PHÁT TRIỂN Do tốc độ tính tốn máy tính ngày tăng cao thuật tốn DES trở nên khơng an tồn ( năm 1999 mạng máy tính gồm 100.000 máy giải thư tín hóa DES chưa đầy 24 giờ) Vì Cơng nghệ Hoa Kỳ chọn thuật tốn thay DES Năm 1997 NIST (trước NBS) thông báo thi tìm kiếm thuật tốn thay DES tổ chức hội thảo công khai tiêu chí cho chuẩn hóa nâng cao Độ dài khóa quan trọng Một hội đồng đặc biệt nhóm họp năm 1996 cho 90 bit độ dài khóa tối thiểu để đảm bảo an ninh liệu vòng 20 năm NIST yêu cầu cao định độ dài khóa tối thiếu 128bit Nhiều thuật toán gửi đến, hội đồng xét tuyển thành lập làm việc qua nhiều vòng Cuối cùng, chọn thuật tốn có mức an toàn cao: RC6, MARS, Rijndael, Twofish, Spent Vào ngày 2-10-2000, NIST công bố người chiến thắng cho mục tiêu đề xuất Rijndael, Joan Daemen Vincent Rijmen Bỉ thiết kế Thiết kế họ đơn giản hợp lý, không dựa kiến trúc DES (DES sử dụng mạng Feistel, Rijndael sử dụng mạng thay hốn vị) Cuối cùng, Rijndael chọn có kết hợp tốt an tồn, kịch thực hiện, hiệu khả thực Người ta tin thuật tốn an toàn 20 năm Niềm tin dựa khơng gian khóa Rijndael lớn “Thuẫn” chống lại cơng tiếng biết Mặc dù tên AES Rijndael thường gọi thay cho thực tế thuật tốn khơng hồn tồn giống AES làm việc với khối liệu (đầu vào đầu ra) 128 bit khóa có độ dài 128,192 256 bít Rijndael làm việc với liệu khóa có độ dài bội số 32bit nằm khoảng từ 128 đến 256 bít Khối bổ sung chiều dài khóa Rijndael khơng đánh giá tiến trình lựa chọn AES, chúng khơng thông qua tiêu chuẩn FIPS hành 1.2 CẤU TRÚC AES AES khối khóa- lặp: Nó bao gồm việc áp dụng lặp ánh xạ vòng trạng thái Số vòng ký hiệu Nr phụ thuộc vào độ độ dài khóa Page Cài đặt thuật tốn AES 128 Hình 1: Cấu trúc AES Đầu vào, đầu ra: Là trạng thái biểu diễn dạng ma trận 4x4, ma trận kí tự biểu diễn dạng hexa Tầng phi tuyến: Áp dụng song song S-Box có tính chất phi tuyến Tầng trộn tuyến tính: Đảm báo khuếch tán cao qua nhiều vòng Tầng cộng khóa: Là phép XOR bit Round Key trạng thái trung gian Nguyên lý hoạt động AES biểu diễn hình Hình 2: Nguyên lý hoạt động AES 128bit Page Cài đặt thuật toán AES 128 1.3 CÁC PHÉP TOÁN TRÊN BYTE 1.3.1 Cách biểu diễn byte Cho byte b7b6b5b4b3b2b1b0 ta có biểu diễn chọn cách tự biểu diễn này: • Một byte xâu bit có độ dài bit; ví dụ: 10111011; • Một byte viết kí tự hexa BF; • Một byte viết đa thức modulo bậc 43, tương ứng với vòng lặp sinh giá trị W tương ứng với giá trị W liên tiếp tạo nên khóa vòng (RoundKey), sau hàm mở rộng khóa thực xong ta có thêm 10 khóa vòng Qui tắc thực hàm mở rộng khóa sau: RoundKey(0) = key = w0 w1 w2 w3 Gán I =4 Vòng lặp : a Kiểm tra giá trị i có chia hết cho không: b Đúng (i chia hết cho 4) i Gán x = w[i-1] ii Gán x = RotWord(x) iii Gán x = SubWord(x) iv Gán x = x XOR Rcon[i/4] v Gán w[i] = x XOR w[i-4] vi I = I + vii I = 44  kết thúc c Sai (i không chia hết cho 4) i Gán x = w[i-1] ii Gán w[i] = x XOR w[i-4] iii I = I +1 iv I = 44  kết thúc Bảng giá trị Rcon i Rcon[i] 8d000000 01000000 02000000 04000000 08000000 10000000 20000000 Page Cài đặt thuật toán AES 128 10 40000000 80000000 1b000000 36000000 1.4.1 Hàm RotWord Hàm RotWord dịch vòng cột cuối trạng thái Ở cột cuối trạng thái byte đầu tiền cột dịch vòng xuống thành byte cuối cột Ví dụ: 2B 7E 15 16 28 AE D2 A6 AB F7 15 88 09 CF 4F 3C 2B 7E 15 16  28 AE D2 A6 AB F7 15 88 CF 4F 3C 09 1.4.2 Hàm SubWord Hàm SubWord hàm byte cho byte trạng thái biến đối tất định độc lập với byte khác trạng thái Nó tương tự hàm SubByte trình bày mục hóa Điểm khác biệt hàm SubWord thay byte cột cuối trạng thái cũ để sử dụng làm cột trạng thái 1.4.3 Ví dụ chi tiết hàm tạo khóa: Ban đầu ta có Key: 2B 7E 15 16 28 AE D2 A6 AB F7 15 88 09 CF 4F 3C Tiếp sau ta sử dụng cột cuối trạng thái key để thực RotWord 09 CF 4F 3C  CF 4F 3C 09 Page 10 Cài đặt thuật toán AES 128 1.5.2 Hàm ShiftRows Thực việc biến đổi dòng trạng thái Dòng khơng thay đổi, tất dòng khác bị dịch trái vòng theo byte Dòng thứ hai bị dịch vòng trái byte, dòng thứ bị dịch vòng trái byte dòng cuối bị dịch vòng trái byte Hình 7: Hoạt động hàm ShiftRow Ví dụ: ban đầu ta có trạng thái sau D 27 11 E0 B B B F 98 D F1 E5 E 41 52 A 30 E Hàng thứ ta không thực chuyển Hàng thứ thực dịch vòng trái byte ta kết sau B B 41 27 F Hàng thứ ta thực dịch vòng trái byte thu kết sau 5 D Hàng thứ ta thực dịch vòng trái byte thu kết sau A F E E Như sau thực phép ShiftRows từ trạng thái ban đâu ta thu trạng thái sau: Page 15 Cài đặt thuật toán AES 128 D B F D 30 E0 B E B4 41 27 52 11 98 A E F1 E 1.5.3 Hàm MixColumns Phép biến đổi cột trạng thái độc lập với cột khác Giả sử c(x) đa thức cố định có bậc 3: c(x) = c0 + c1x + c2x2 + c3x3 Giả sử a(x) b(x) hai đa thức biến với hệ số c i di cách tương ứng (với 1

Ngày đăng: 09/11/2017, 11:29

Từ khóa liên quan

Mục lục

  • Mục lục

  • DANH MỤC TỪ VIẾT TẮT

  • DANH MỤC HÌNH ẢNH

  • LỜI NÓI ĐẤU

  • CHƯƠNG 1: TỔNG QUAN VỀ THUẬT TOÁN MÃ HÓA AES

    • 1.1 LỊCH SỬ PHÁT TRIỂN

    • 1.2 CẤU TRÚC AES

    • 1.3 CÁC PHÉP TOÁN TRÊN BYTE

      • 1.3.1 Cách biểu diễn của byte

      • 1.3.2 Phép cộng 2 byte

      • 1.3.3 Phép nhân 2 byte

      • 1.3.4 Phép toán Xtime

      • 1.4 HÀM MỞ RỘNG KHÓA

        • 1.4.1 Hàm RotWord

        • 1.4.2 Hàm SubWord

        • 1.4.3 Ví dụ chi tiết về hàm tạo khóa:

        • 1.5 MÃ HÓA

          • 1.5.1 Hàm SubBytes

          • 1.5.2 Hàm ShiftRows

          • 1.5.3 Hàm MixColumns

          • 1.5.4 Hàm AddRoundKey

          • 1.6 GIẢI MÃ

            • 1.6.1 Hàm InvShiftRows

            • 1.6.2 Hàm InvSubBytes

            • 1.6.3 Hàm InvMixColumns

Tài liệu cùng người dùng

Tài liệu liên quan