THỰC HIỆN THUẬT TOÁN RIJNDAEL TRÊN FPGA

Một phần của tài liệu đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA” (Trang 56 - 76)

3.1.1 Quá trình mã hóa và giải mã

Thực hiện thuật toán Rijndael cho quá trình mã hóa được thiết kế thi hành song song hai quá trình sinh khóa con và tính các vòng lặp (Hình 3.1).

Hình 3.1 Sơ đồ thực hiện mã hóa

Đầu tiên, vòng lặp thứ nhất (Round 0) (Dữ liệu vào XOR với khóa chính) được thực hiện và tính khóa vòng lặp tiếp theo. Sau đó, các vòng lặp tiếp theo lần lượt được thực hiện, đồng thời trong khi thực hiện mỗi vòng lặp thì các khóa của vòng lặp tiếp theo được tính. Cách thực hiện này,

không phải tính ra toàn bộ các khóa cần sử dụng rồi mới thực hiện các biến đổi thông qua các vòng lặp. Lợi thế của cách thiết kế này là không cần nhiều bộ nhớ để lưu trữ các khóa con cho mỗi vòng lặp.

Thuật toán giải mã cũng được thực hiện giống với thuật toán mã hóa. Đầu tiên, khóa con thứ nhất được tính, rồi thực hiện biến đổi vòng lặp đầu tiên, đồng thời tính khóa thứ hai , hai quá trình này đồng thời xảy ra. Tiếp tục như thế cứ qua mỗi vòng lặp hoàn tất thì cũng có một khóa con của vòng lặp tiếp theo đã được tính. (Hình 3.2).

Hình 3.2 Sơ đồ thực hiện giải mã

3.1.2. Xây dựng các modul

Dựa trên hai sơ đồ thực hiện hai quá trình mã hóa( Hình 3.1) và giải mã(Hình 3.2) trên, tôi xây dựng sơ đồ khối chức năng cho thuật toán mã hóa Rijndael như sau(Hình 3.3).

Hình 3.3: Sơ đồ khối thuật toán Rijndael

Trong đó:

 Khối Encryption/Decryption: thực hiện các biến đổi trong vòng lặp.

 Khối Key Expansion: thực hiện sinh khóa con cho các vòng lặp

 Khối Control: thực hiện điều khiển quá trình xảy ra ở hai khối Encryption/Decryption và Key Expansion.

Sơ đồ thực hiện các vòng lặp

Các vòng lặp trong quá trình mã hóa bao gồm các biến đổi: ByteSub,

ShiftRow, MixColumn, AddRoundKey, riêng vòng lặp cuối cùng không có

biến đổi MixColumn. Quá trình thực hiện vòng lặp mã hóa được thể hiện trong sơ đồ dưới đây (Hình 3.4).

Hình 3.4:Vòng lặp mã hóa

Các vòng lặp trong quá trình giải mã bao gồm các phép biến đổi:

đầu tiên không có phép biến đổi InvMixColumn. Quá trình giải mã được thiết kế giống với quá trình mã hóa, được thể hiện ở Hình 3.5.

Hình 3.5: Vòng lặp giải mã

Hinh 3.6: Sơ đồ khối modul Encryption/Decryption

Chức năng các chân tín hiệu trong sơ đồ hình 3.6:

Tên chân tín hiệu Cổng I/O Mô tả

Clock Input Hệ thống xung nhịp, cung cấp nhịp cho hoạt động của modul. Reset Input Khởi tạo lại trạng thái cho hệ

thống.

ALG_Start Input Tín hiệu xác định điểm bắt đầu thực hiện của thuật toán.

ALG_ENC Input Xác định thực hiện mã hóa hay giải mã.

ALG_DataIn Input Khối dữ liệu vào, 128 bit

ALG_Key Input Khóa con, 128 bit

ALG_CVSize Input Xác định chiều dài của khóa là 128, hay 192 hoặc 256 bit.

ALG_DataOut Output Dữ liệu ra, dài 128 bit

toán.

Sơ đồ khối của modul Key Expansion

Sơ đồ được miêu tả ở hình 3.7.

Hình 3.7 Sơ đồ khối của modul Key expansion

Chức năng các chân tín hiệu trong sơ đồ hình 3.7:

Tên chân tín hiệu Tín hiệu I/O Mô tả

Clock Input Hệ thống xung nhịp, cung cấp nhịp cho hoạt động của modul. Reset Input Khởi tạo lại trạng thái cho hệ

thống.

KS_LOADCV Input Tín hiệu báo bắt đầu đưa vào một khóa mới.

KS_START Input Tín hiệu báo bắt đầu tạo một khóa con.

256 bit.

KS_CV_SIZE Input Cho biết độ dài khóa đã dung là 128, 192 hay 256.

KS_ENC Input Quá trình mã hóa hay giải mã

KS_ROUND_KEY Output Khóa con cho mỗi vòng lặp, dài 128 bit.

Sơ đồ khối của modul Control(Hình 3.8)

Hình 3.8: Sơ đồ khối của modul Control

Chức năng các chân tín hiệu trong sơ đồ hình 3.8: Tên chân tín hiệu Tín hiệu I/O Mô tả

Clock Input Hệ thống xung nhịp, cung cấp nhịp cho hoạt động của modul. Reset Input Khởi tạo lại trạng thái cho hệ

thống.

CTRL_ENC Input Tín hiệu xác định mã hóa hay giải mã.

CTRL_ALG_START Output Bắt đầu thực hiện mã hóa hay giải mã.

CTRL_KS_START Output Bắt đầu tạo khóa con.

3.1.3. Thực hiện thiết kế

Công cụ thiết kế

•Phần mềm: Sử dụng công cụ phát triển cho thiết kế logic ISE 9.2i của XILINX, đây là môi trường phần mềm tích hợp, cho phép tạo các sản phẩm thiết kế và nhập các thiết kế vào thiết bị đã được chương trình hóa của Xilinx. Có hỗ trợ các loại ngôn ngữ mô tả phần cứng và các thiết bị phần cứng.

•Xây dựng chương trình các modul của thuật toán bằng ngôn ngữ mô tả phần cứng VHDL.

Phương pháp thiết kế một Modul bằng ngôn ngữ mô tả phần cứng VHDL trên phần mềm ISE 9.2i

• Nhập thiết kế:

Chọn Start->Program->Xilinx ISE 9.2i->Project Navigator. Giao diện làm việc như hình 3.9.

Hình 3.9. Giao diện làm việc của ISE 9.2i

Tạo một project mới: Chọn File ->New project, xuất hiện cửa sổ như

hình 3.10. Đặt project name là Doan_TN.

Nhấn nút Next xuất hiện của sổ như hình 3.11, cửa sổ này cho phép bạn chọn các loại thiết bị phần cứng dùng để lập trình.

Hình 3.11. Cửa sổ chọn các loại thiết bị phần cứng

Nhấn nút Next xuất hiện cửa sổ như hình 3.12, để tạo một file chương trình trên cử sổ hình 3.12 nhấn nút new Source xuất hiện cửa sổ chọn các kiểu file cần tạo, để tạo một gói (package) chọn VHDL Package, đặt tên của gói là package, còn nếu muốn tạo một modul thì chọn VHDL Module như ở Hình 3.13 là cách tạo một gói.

Hình 3.12. Cửa sổ tạo một new file nguồn

Hình 3.13. Cửa sổ chọn mã soản thảo chương trình

Nếu chọn VHDL Module để tạo một modul, nhấn nút Next sẽ xuất hiện cửa sổ như hình 3.14, cửa sổ này cho phép bạn tạo một thực thể. Bạn nhập các cổng, chọn cổng là cổng vào ( in), cổng ra ( out) hoặc cổng cả vào và ra (inout).

Hình 3.14. Cửa sổ tạo một thực thể

Bạn nhấp nút Next, sau đó cửa sổ làm việc như hình 3.15, ở đây bạn có thể viết các câu lệnh theo thiết kế của bạn để tạo một Modul.

•Mô phỏng chức năng của hệ thống

Sau khi thiết kế xong một hệ thống theo các bước như trên, chúng ta có thể chạy thử hệ thống xem kết quả có như kết quả cần đạt được của bản thiết kế hay không. Chọn project -> new source, xuất hiện cửa sổ như hình

3.13 chọn Test Bench WaveForm, rồi đặt tên Test, tiếp theo nhấn nút Next

xuất hiện cửa sổ như hình 3.16, đây là cửa sổ khởi tạo tín hiệu Clock, nhấn nút Finish chuẩn bị chạy mô phỏng.

Hình 3.16 Cửa sổ khởi tạo tín hiệu Clock

Hình 3.17. Cửa sổ khởi tạo quá trình mô phỏng

Trong cửa sổ hình 3.17 nhập các giá trị đầu vào như hình vẽ, rồi nhấn kích chuột phải vào Simulate Behavioral Model, kích chuột trái vào Run thì chương trình sẽ được chạy mô phỏng.

3.2. KẾT QUẢ THỰC HIỆN

Chương trình sau khi cài đặt hoàn tất, đã thực hiện chạy mô phỏng trên công cụ ISE 9.2i với FPGA họ Virtex5 và thiết bị XC5VLX30, gói FF324 ta thu được kết quả như sau:

 Mã hóa với dữ liệu 128 bit, khóa 128bit: Plaintext: 00112233445566778899aabbccddeeff Input Key: 000102030405060708090a0b0c0d0e0f Ciphertext:8c34c7e2358383edd3da9b3d23cca3b3.

Hình 3.18. Kết quả chạy mã hóa 128 bit data và 128 bit key

 Giải mã với bản mã 128 bit và khóa 128 bit: Ciphertext:8c34c7e2358383edd3da9b3d23cca3b3 Input Key: 000102030405060708090a0b0c0d0e0f Plaintext: 00112233445566778899aabbccddeeff

Hình 3.19. Kết quả giải mã 128 bit data và 128 bit key

Plaintext: 00112233445566778899aabbccddeeff

Key: 000102030405060708090a0b0c0d0e0f1011121314151617 Ciphertext:b6a0b915a035f63f973ae059905193bc

Hình 3.20. Kết quả mã hóa với 192 bit Key và 128 bit data

 Mã hóa và giải mã với dữ liệu 128 bit và khóa 256 bit: Plaintext: 00112233445566778899aabbccddeeff Key: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1 e1f Ciphertext:416e86c3779726a308990bccdf2ec6d6

Hình 3.22. Kết quả mã hóa với 256 bit Key và 128 bit data

KẾT LUẬN

Qua quá trình làm đồ án, tôi đã hoàn thành nhiệm vụ, mục tiêu của đồ án đặt ra.

Đã trình bày tổng quan về công nghệ FPGA và ngôn ngữ mô tả phần cứng VHDL. Những tiện ích khi sử dụng ngôn ngữ mô tả phần cứng VHDL để thiết kế hệ thống số.

Trình bày rõ ràng về thuật toán mã hóa Rijndael. Đưa ra đánh giá thuật toán này về độ an toàn của nó.

Cài đặt thành công chương trình mã hóa và giải mã bằng thuật toán Rijndael bằng ngôn ngữ mô tả phần cứng VHDL.

Chạy mô phỏng hệ thống trên phần mềm ISE 9.2i, phầm mềm này có hỗ trợ các thiết bị phần cứng công nghệ FPGA. Kết quả thu được đúng với mong muốn.

Một lần nữa tôi xin chân thành cảm ơn thầy Lưu Hồng Dũng, các thầy cô giáo khoa CNTT, và cán bộ chỉ huy các cấp đã giúp đỡ tôi rất nhiều trong quá trình làm đồ án tốt nghiệp.

TÀI LIỆU THAM KHẢO

1) Tống Văn On, Thiết kế mạch số với VHDL & Verilog, Nhà xuất bản lao động Hà Nội.

2) TS. Dương Anh Đức, ThS. Trần Minh Triết, Mã hóa và ứng dụng. 3) Đặng Hoài Bắc, Đinh Sỹ Quảng, Đỗ Mạnh Hà Khoa, Ngôn ngữ mô tả phần cứng VHDL và ứng dụng vào đào tạo, Học viện công nghệ bưu chính viễn thông.

4) Nguyễn Bình (1996), Mật mã: Lý thuyết và thực hành, Học viện kỹ thuật quân sự, Hà Nội.

5) Joan Daemen, Vincent Rijmen, A Specification for Rijndael, the AES Algorithm.

6)http://en.wikipedia.org/wiki/Field-programmable_gate_array

7) Xilinx.com

8) http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf 9) http://vi.wikipedia.org/wiki/FPGA

Một phần của tài liệu đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA” (Trang 56 - 76)

Tải bản đầy đủ (DOC)

(76 trang)
w