Tài liệu Nghiên cứu ứng dụng chuyển mật mã nâng cao (aes) trong xây dựng hàm băm

  • Số trang: 26 |
  • Loại file: PDF |
  • Lượt xem: 99 |
  • Lượt tải: 0
nganguyen

Đã đăng 34345 tài liệu

Mô tả:

1 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG --------------------------------------- Trần Thị Kim Thùy NGHIÊN CỨU VỀ ỨNG DỤNG CHUẨN MẬT MÃ NÂNG CAO (AES) TRONG XÂY DỰNG HÀM BĂM Chuyên ngành: Kỹ thuật điện tử Mã số: 60.52.70 TÓM TẮT LUẬN VĂN THẠC SĨ HÀ NỘI - 2012 2 Luận văn được hoàn thành tại: HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG Người hướng dẫn khoa học: GS.TS.NGUYỄN BÌNH Phản biện 1: ………………………………………………………… Phản biện 2: …………………………..…………………………….. Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn thạc sĩ tại Học viện Công nghệ Bưu chính Viễn thông Vào lúc: ....... giờ ....... ngày ....... tháng ....... .. năm ............... Có thể tìm hiểu luận văn tại: - Thư viện của Học viện Công nghệ Bưu chính Viễn thông 3 MỞ ĐẦU Với tốc độ và khả năng xử lý ngày càng được nâng cao của các bộ vi xử lý hiện nay, phương pháp mã hóa chuẩn (DES - Data Encryption Standard) đã trở nên không an toàn trong bảo mật thông tin. Do đó, Viện tiêu chuẩn và công nghệ Hoa kỳ (NIST - National Institute Standards of Technology) đã quyết định chọn một chuẩn mã hóa mới với độ an toàn cao nhằm phục vụ nhu cầu bảo mật thông tin liên lạc của Chính phủ Hoa Kỳ cũng như trong các ứng dụng dân sự. Thuật toán Rijndael do Vincent Rijmen và Joan Daeman đã được chính thức chọn trở thành chuẩn mã hóa nâng cao (AES - Advanced Encryption Standard) từ ngày 02 tháng 10 năm 2000. Ngày nay, ứng dụng của chuẩn mật mã nâng cao đang được sử dụng ngày càng phổ biến trong các lĩnh vực khác nhau trên thế giới. Chuẩn mật mã nâng cao không chỉ đơn thuần là mã hóa và giải mã thông tin mà còn bao gồm nhiều vấn đề khác nhau cần được nghiên cứu và giải quyết như ứng dụng xây dựng các hàm băm phục vụ việc chứng thực nguồn gốc nội dung thông tin (kỹ thuật chữ ký điện tử), xác thực tính nguyên vẹn dữ liệu... Với sự phát triển ngày càng nhanh chóng của Internet và các ứng dụng giao dịch điện tử trên mạng, nhu cầu bảo vệ thông tin trong các hệ thống và ứng dụng điện tử ngày càng được quan tâm và có ý nghĩa hết sức quan trọng. Vì thế việc nghiên cứu về chuẩn mật mã nâng cao và ứng dụng nó trong các lĩnh vực bảo mật thông tin là rất cần thiết. Ngoài phần mở đầu, kết luận và danh mục tài liệu tham khảo luận văn được kết cấu thành 3 chương: Chương 1: Sơ lược về chuẩn mật mã nâng cao (AES) Chương 2: Hàm băm mật mã Chương 3: Ứng dụng chuẩn mật mã nâng cao để xây dựng một vài hàm băm cụ thể Trong quá trình thực hiện Luận văn, do thời gian cũng như trình độ của tác giả có những hạn chế nhất định nên không thể tránh khỏi những sai sót. Rất mong nhận được sự góp ý của các thầy, cô giáo và các bạn để Luận văn hoàn thiện hơn. Tôi xin chân thành cám ơn sự hướng dẫn, và giúp đỡ tận tình của GS.TS Nguyễn Bình, các thầy trong khoa Quốc tế và Đào tạo sau đại học – Học viện Công nghệ Bưu chính Viễn thông đã giúp đỡ tôi trong quá trình học tập cũng như trong quá trình làm Luận văn. 4 CHƯƠNG 1: SƠ LƯỢC VỀ CHUẨN MẬT MÃ NÂNG CAO 1.1. Đặt vấn đề Hiện nay với tốc độ và khả năng xử lý của các bộ vi xử lý ngày càng được nâng cao, phương pháp mã hóa chuẩn DES, Tri DES đã trở nên không an toàn trong bảo mật thông tin. Vì thế cần nghiên cứu chuẩn mật mã đáp ứng được nhu cầu bảo mật thông tin, chuẩn mật mã nâng cao AES ra đời. Sau khi thực hiện hai lần tuyển chọn công khai, có năm thuật toán được vào vòng chung kết, gồm có: Mars, RC6, Serpent, Twofish và Rijndael. Các thuật toán này đều đạt các yêu cầu của AES nên được gọi chung là các thuật toán ứng viên AES. Các thuật toán ứng viên AES có độ an toàn cao, chi phí thực hiện thấp. Tuy nhiên với thiết kế đẹp và đơn giản thuật toán Rijndael do hai nhà mật mã học người Bỉ thiết kế đã được chọn là thuật toán của AES. 1.2. Cơ sở toán học của AES AES sử dụng trường hữu hạn Galois (GF(28) để thực hiện các phép toán: phép cộng, phép trừ, phép nhân, và phép chia. Các phần tử của trường GF(28) được xem như là các đa thức. 1.3. Các thuật toán ứng viên AES 1.3.1. Thuật toán Marc 1.3.2. Thuật toán RC6 1.3.3. Thuật toán Rijndael 1.3.4. Thuật toán Serpent 1.3.5. Thuật toán TwoFish 1.3.6. Nhận xét các thuật toán ứng viên AES  Quy trình mã hóa gồm: khởi tạo, phân bố khóa và mã hóa.  Quy trình giải mã gồm: khởi tạo, phân bố khóa và giải mã.  Phân bố khóa được thực hiện dựa trên khóa người sử dụng cung cấp để phát sinh bộ subkey phục vụ cho việc mã hóa và giải mã.  Dữ liệu vào và ra trong quy trình mã hóa, giải mã là khối dữ liệu 128 bit. 1.4. Mô tả AES theo Rijndael 1.4.1. Đầu vào và đầu ra của phép mã và giải mã AES là một trường hợp riêng của Rijndael. AES có độ dài khối bằng 128 bit và hỗ trợ các độ dài khóa bằng 128, 192, hay 256 bit. Đầu vào và đầu ra của Rijndael được xem như là mảng một chiều của các byte 8bit. Đối với phép mã, đầu vào là khối rõ và khóa, đầu ra là bản mã. Đối với phép giải mã, đầu vào là khối mã và khóa, đầu 5 ra là khối rõ. Biến đổi vòng của Rijndael và các bước của nó, thao tác trên một kết quả trung gian, được gọi là trạng thái. Trạng thái có thể được vẽ như là một mảng chữ nhật các byte với 4 dòng. Số các cột trong trạng thái được ký hiệu bởi Nb và bằng độ dài khối chia cho 32 (đối với AES thì Nb bằng 4). 1.4.2. Cấu trúc AES Rijndael là một mã khối khóa - lặp: nó bao gồm việc áp dụng lặp một ánh xạ vòng trên trạng thái. Số các vòng được ký hiệu bởi N r và phụ thuộc vào độ dài khối và độ dài khóa. Hình vẽ 1.8 trên minh họa cấu trúc cơ sở của thuật toán AES. Hình 1.8: Cấu trúc cơ sở của thuật toán AES Tầng phi tuyến: Áp dụng song song của các S - box mà có các tính chất phi tuyến trong trường hợp tồi nhất tối ưu. Tầng trộn tuyến tính: Đảm bảo khuyếch tán cao qua nhiều vòng Tầng cộng khóa: Là phép XOR từng bit của Round key và trạng thái trung gian. Trong thực tế, tầng trộn tuyến tính của Rijndael lại bao gồm hai tầng con, đó là ShiftRows và MixColumns 1.4.3. Quy trình mã hóa và giải mã Quy trình mã hóa và giải mã AES sử dụng một hàm lặp là kết hợp của bốn hàm biến đổi (đơn vị xử lý là byte) sau: 1) biến đổi thay thế byte sử dụng một bảng thế (Sbox), 2) dịch các hàng của mảng trạng thái với số lần dịch của mỗi hàng là khác nhau, 3) kết hợp dữ liệu của mỗi cột trong mảng trạng thái và 4) cộng một khóa RoundKey vào trạng thái. Giải mã AES bằng cách thực hiện biến đổi ngược của các biến đổi ở 6 phép mã hóa AES hoặc bằng cách biến đổi tương đương. Các biến đổi này được minh họa bằng hình vẽ 1.10 dưới đây: Hình 1.10. Quy trình mã hóa và giải mã AES 1.4.3.1. Quy trình mã hóa Toàn bộ của phép mã hóa có thể mô tả như sau: (1) S = AddRoundKey (P,W0) (2) For i = 1 to Nr -1 S = SubBytes (S) S = ShiftRows (S) S = MixColumns (S) S = AddRoundKey (S, W) (3) S = SubBytes (S), S = ShiftRows (S) (4) C = AddRoundKey (SubBytes, WNr) 1.4.3.2. Giải mã Rijndael Giải mã Rijndael có 2 cách giải mã đó là: giải mã trực tiếp và giải mã bằng thuật toán giải mã tương đương. 7 Giải mã trực tiếp: Mọi biến đổi được dùng trong các phép tính mã hóa là khả nghịch. Cài đặt phép tính giải mã là giữ nguyên các thứ tự các biến đổi đã dùng trong phép mã hóa, chỉ thay các phép biến đổi bằng các biến đổi ngược của chúng. Giải mã tương đương: được thực hiện bằng cách đảo ngược thứ tự của hàm SubByte-1() và ShiftRows-1(), thay đổi thứ tự của AddRoundKey(), MixColumns-1 () trong các lần lặp sau khi thay đổi khóa cho giá trị Round = 1 to N r-1 bằng cách sử dụng biến đổi MixColumns(). Các word đầu tiên và cuối cùng của danh sách khóa không bị thay đổi khi ta áp dụng phương pháp này. 1.4.3.2.Các phép biến đổi trong mã hóa và giải mã AES a) Biến đổi SubBytes() Biến đổi SubBytes() thay thế mỗi byte riêng rẽ của state sr,c bằng một giá trị mới s’r,c sử dụng bảng thay thế (S - box), nó là bảng có ngược. Hình 1.13 chỉ ra ảnh hưởng của biến đổi SubBytes() trên state Hình 1. 13. SubBytes() áp dụng S - box cho mỗi byte của state S - box dùng trong biến đổi SubBytes() được trình bày ở dạng cơ số 16 như bảng 3.1 sau: b) Biến đổi ShiftRows(): Hình 1.14 chỉ ra biến đổi ShiftRows(). Hình 1.14. Dịch vòng ShiftRows() ba hàng cuối cùng trong state 8 Trong biến đổi ShiftRows(), các byte trong ba hàng cuối cùng của trạng thái được dịch vòng đi các số byte khác nhau (độ lệch) . Cụ thể, biến đổi ShiftRows(), xử lý như sau: s’rc = sr(c+r)mod 4, với 0 - Xem thêm -