QUY TRÌNH VÀ CÔNG CỤ THIẾT KẾ

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

3.1.1 Quy trình thiết kế

Phương pháp thiết kế nhằm áp dụng DES trên công nghệ FPGA hoàn toàn tuân thủ theo qui trình thiết kế một ứng dụng trên công nghệ FPGA đã được trình bày trong chương 2. Thực chất của việc thiết kế modul mã khối trên FPGA là việc lập trình để thiết lập cấu hình ghép nối các phần tử mạch có sẵn trên linh kiện FPGA nhằm thực thi các khâu xử lý của thuật toán DES khi thực hiện phép mã/giải mã cũng như hoạt động của các khối chức năng.

Quá trình thiết kế được thực hiện theo các bước sau:

- Bước 1: Nhập thiết kế: Xây dựng các khối hàm cơ bản của thuật toán mã khối DES bằng ngôn ngữ mô tả phần cứng.

- Bước 2: Tổng hợp và tối ưu về mặt logic - Bước 3: Thực hiện thiết kế

- Bước 4: Kiểm tra và mô phỏng - Bước 5: Nạp thiết kế vào FPGA

3.1.2 Công cụ thiết kế

Chương 2 đã trình bày tổng quát về công nghệ FPGA cũng như ngôn ngữ mô tả phần cứng VHDL và giới thiệu một số hãng chuyên sản xuất

linh kiện FPGA trong đó các họ sản phẩm của hãng XILINX là những sản phẩm phổ biến trên thị trường hiện nay. Vì vậy công cụ thiết kế được chọn như sau:

- Công cụ phần mềm: Hệ công cụ phát triển cho thiết kế logíc ISE của XILINX, trong đó thiết kế các khối hàm cơ bản của DES bằng ngôn ngữ mô tả phần cứng VHDL

- Công cụ phần cứng: FPGA được sử dụng trong thiết kế là dòng linh kiện của XILINX.

3.2 SƠ ĐỒ KHỐI CHỨC NĂNG 3.2.1 Sơ đồ khối tổng quát 3.2.1 Sơ đồ khối tổng quát

Từ cấu trúc chung của modul mã khối và thuật toán DES, sơ đồ khối tổng quát của modul mã khối gồm các thành phần mô tả trên hình 3.1.

- Khối vào/ra dữ liệu: Vào/Ra dữ liệu rõ/mã; vào khoá mã; độ dài khối dữ liệu là 64 bít.

- Khối FPGA DES: Tính toán khoá con; thực hiện các hàm mã hoá, giải mã theo thuật toán DES.

- Khối điều khiển: Các tín hiệu điều khiển hoạt động của Modul. - Khối cấu hình cho FPGA.

Hình 3.1: Sơ đồ khối tổng quát của modul DES trên FPGA

3.2.2 Mô tả quá trình mã hoá giải mã của DES

Mô tả chung về quá trình mã hoá/giải mã của thuật toán DES trên hình 3.2

- Khối mã hoá: Dữ liệu rõ có độ dài 64 bít được chuyển vào hoán vị IP, sau đó đi qua 16 vòng lặp với các khoá từ K1, K2,...., K16 , tiếp theo dữ liệu được chuyển vào hoán vị FP cho ra bãn mã.

- Khối giải mã thực hiện theo thứ tự ngược lại so với khối mã hoá với các khoá từ K16, K15,...., K1

Hình 3.2: Quá trình mã hoá/giải mã DES

3.2.3 Sơ đồ khối chức năng của modul DES

Hình 3.3 mô tả các chức năng chính của modul DES gồm : - Khối thực hiện phép hoán vị IP.

- Khối thực hiện mã hoá/giải mã 16 vòng DES (Roundfunc). - Khối tính khoá con cho các vòng lặp của DES (Deskey). - Khối thực hiện phép hoán vị FP.

Hình 3.3: Mô tả chức năng modul mã hoá DES

Chức năng các chân tín hiệu của modul DES được mô tả trong bảng 3.1 Tên chân tín hiệu Kiểu I/O Mô tả

Reset Input Đặt trạng thái ban đầu cho toàn bộ hệ thống

Clk Input Hệ thống xung nhịp. Cung cấp nhịp cho

hoạt động của toàn khối trong modul

En_de Input En_de = ‘1’ chế độ mã hóa (adsbygoogle = window.adsbygoogle || []).push({});

En_de = ‘0’ chế độ giải mã

Key[1...64] Input Khóa mã: 64 bít ( 56 bít + 8 bít kiểm tra) Data_in [1…64] Input 64 bít dữ liệu vào

Data_out[1…64] Output 64 bít dữ liệu ra trong chế độ mã hóa hoặc dữ liệu rõ trong chế độ giải mã

Bảng 3.1: Mô tả các tín hiệu vào ra của modul DES

Hoạt động của các khối trong modul mã khối sẽ được lần lượt mô tả bằng ngôn ngữ mô tả phần cứngVHDL.

3.3 CÁC KHỐI TRONG MODUL DES

Mô tả thuật toán DES bằng VHDL sẽ được thực hiện từ mức mô tả khối cao nhất (Top Level) sau đó sẽ lần lượt đi vào các chức năng chính của từng khối cơ bản. Căn cứ theo sơ đồ khối của Modul, phần mềm chức năng của các khối sẽ được xây dựng thành các tập tin chính như mô tả trong bảng 3.2

Tên tập tin Mô tả chức năng

Desenc.vhd Mô tả modul DES ỏ mức cao nhất (Top Level) IP.vhd, FP.vhd Mô tả các phép hoán vị IP, FP

Roundfunc.vhd Mô tả hoạt động một vòng lặp của DES

Keysched.vhd Mô tả việc tính Khóa cho các vòng lặp của DES

Bảng 3.2: Danh sách các tệp tin của modul DES

Hình 3.4: Cấu trúc I/O của DES

Modul DES được tổng hợp từ mô tả hoạt động của các khối chức năng bằng VHDL (desenc.vhd). Mô tả khai báo modul DES ở mức cao nhất (Top Level) bằng VHDL như sau:

use ieee.std_logic_1164.all; entity desenc is port

( pt : in std_logic_vector(1 TO 64); key : in std_logic_vector(1 TO 64); ct : out std_logic_vector(1 TO 64); reset : in std_logic; en_de : in std_logic; clk : in std_logic ); end desenc; component keysched component ip component roundfunc component fp

Mô tả modul DES ở mức cao ngoài việc khai báo cấu trúc của modul chúng ta phải xây dựng các thành phần chức năng trong modul:

- Khối các phép hoán vị - Khối roundfunc

- Khối Keysched.

3.3.1 Khối các phép hoán vị

Phép hoán vị IP: Dữ liệu đầu vào Data_in [1..64] được hoán vị IP sau đó chia thành hai phần L0[1..32] và R0[1..32]. Tham số của phép hoán vị IP được mô tả trong bảng Hoán vị IP. Thực chất của phép hoán vị được

thực hiện bằng phần cứng chính là việc kết nối vị trí các dây tín hiệu theo tham số của phép hoán vị.

Mô tả phép hoán vị IP bằng VHDL như sau:

Hình 3.5: Sơ đồ thực thể phép hoán vị IP library ieee; use ieee.std_logic_1164.all; entity ip is port ( data_in: in std_logic_vector(1 TO 64); l0 : out std_logic_vector(1 TO 32); r0 : out std_logic_vector(1 TO 32)); end ip; architecture behavior of ip is begin

l0(1)<=data_in(58); sắp xếp vị trí của các dây tín hiệu theo phép hoán vị IP. Tức là dây tín hiệu thứ 58 của data_in được gán cho dây tín hiệu thứ 1 của l 0.

r0x(32)<=data_in(7); dây tín hiệu thứ 7 của data_in được gán cho dây tín hiệu thứ 32 của r0.

end behavior;

3.3.2 Mô tả khối Roundfunc

Khối roundfunc là thành phần chính của modul DES với 16 vòng lặp. Tại đầu vào dữ liệu có độ rộng là 64 bít được chia thành 2 phần, các thanh ghi được tạo ra từ các Triger D của FPGA L0[1..32] và R0[1..32] sử dụng để nhận dữ liệu đầu vào sau hoán vị IP đồng thời cũng là vùng đệm dữ liệu từ đầu ra của các vòng lặp quay về. Tại đầu ra, 2 thanh ghi Li[1..32] và Ri[1..32] cũng được sử dụng để lưu giữ kết quả và quay trở về đầu vào sau mỗi vòng lặp do khối điều khiển tác động, đồng thời là vùng đệm dữ liệu của vòng lặp thứ 16 trước khi qua phép hoán vị FP.

Hình 3.6: Mô tả 16 vòng lặp của DES (adsbygoogle = window.adsbygoogle || []).push({});

Các vòng lặp của DES có cấu trúc cơ bản giống nhau, vì vậy một vòng lặp của DES sẽ được mô tả trong tập tin roundfunc.vhd.

Hình 3.7: Sơ đồ thiết kế của một vòng lặp

Mô tả một vòng lặp của DES đã được trình bày trong phần 3.2.2 gồm các phép toán như sau:

- EP : Hàm mở rộng dữ liệu của Ri từ 32 bít thành 48 bít.

- XOR1 : Phép cộng modul 2 giữa khoá Ki và dữ liệu đầu ra của hàm EP.

- S-BOX : Các hộp thế.

- P : Hoán vị dữ liệu đầu ra của các hộp S-BOX.

- XOR2 : Phép cộng modul 2 giữa kết quả của P và Li .

Các thành phần khối màu xám trong sơ đồ tạo nên hàm F của DES.

Mô tả khai báo cấu trúc của khối roundfunc và các hàm trong vòng lặp bằng VHDL như sau:

entity roundfunc is port (

clk : in std_logic; reset : in std_logic;

li,ri : in std_logic_vector(1 to 32); k : in std_logic_vector(1 to 48); lo,ro : out std_logic_vector(1 to 32) ); end roundfunc; component xp component desxor1 component s1 component s2 .... component s8 component pp component desxor2 component reg32

a) Hàm EP: 32 bít dữ liệu tại thanh ghi bên phải Ri [1..32] được mở rộng thành 48 bít theo tham số mô tả ở bảng 3.3; kết quả chuyển tới e[1..48]. b) Hàm XOR1: Thực hiện cộng modul 2 giữa khoá trong thanh ghi K[1..48] và dữ liệu chuyển đến qua e[1..48], kết quả đưa vào 8 hộp S-BOX theo thứ tự vị trí các bít dữ liệu: [1..6] vào hộp S-BOX1; [7..12] vào hộp S- BOX2;... ; [43..48] vào hộp S-BOX8.

Hàm XOR2 cũng được mô tả tương tự như hàm XOR1.

c) Hộp thế S-BOX: Có 8 hộp S-BOX trong mỗi vòng của DES, cấu trúc một hộp S-BOX được mô tả như hình 3.8.

Hình 3.8: Sơ đồ thực thể hộp S - BOX

Các hộp thế S-BOX2,..., S-BOX8 cũng được thực hiện tương tự như S-BOX1. Mô tả tham số của các hộp thế được trình bày trong chương 1. d) Hoán vị P: Thực hiện hoán vị dữ liệu tại đầu ra của các hộp thế theo tham số mô tả ở bảng Hoán vị P; phương pháp thực hiện tương tự như hoán vị IP đã được trình bày ở trên.

3.3.3 Khối Keysched (tính toán khoá)

Nhiệm vụ của khối keysched là tính toán khoá cho 16 vòng lặp của DES mỗi khoá con có độ dài 48 bít từ 56 bít cỡ khoá đúng (64 bít khoá đầu vào loại bỏ 8 bít kiểm tra chẵn lẻ) .

Mô tả cấu trúc của khối tính khoá con bằng VHDL như sau:

entity keysched is port ( key : in std_logic_vector(1 to 64); k1x,k2x,k3x,k4x,k5x,k6x,k7x,k8x,k9x,k10x,k11x,k12x,k13x,k14 x,k15x,k16x: out std_logic_vector(1 to 48) ); end keysched; component pc1; phép hoán vị PC-1. component pc2; phép hoán vị PC-2.

- Khối PC-1, PC-2: Từ 64 bít khoá vào cho trước, loại bỏ 8 bít kiểm tra tính chẵn lẻ và hoán vị 56 bít còn lại theo phép hoán vị cố định PC-1 và PC - 2 theo tham số mô tả ở chương 1.

3.3.4 Tổng hợp các khối chức năng của modul DES

Hình 3.9: Sơ đồ liên kết giữa các khối trong modul DES

3.4 KIỂM TRA THIẾT KẾ

Kiểm tra thiết kế bằng chương trình mô phỏng Waveform Edit

Sau mỗi bước thiết kế chương trình, việc kiểm tra sự hoạt động của khối chức năng với mục đích khảng định tính đúng đắn của thiết kế theo các yêu cầu đặt ra có thể thực hiện nhờ sự trợ giúp bởi chương trình Waveform Edit của công cụ ISE với việc cho bộ tham số véc tơ đầu vào mô phỏng, sau khi chạy chương trình Simulation đầu ra sẽ thu được kết quả. Việc kiểm tra DES có thể thực hiện theo phương pháp Test Vector.

Kiểm tra khối Roundfunc

KẾT LUẬN (adsbygoogle = window.adsbygoogle || []).push({});

Bảo mật tin tức luôn là một nhu cầu cần thiết và cấp bách đối với các hệ thống truyền tin, đặc biệt trong lĩnh vực an ninh, quốc phòng. Hệ thống truyền tin càng hiện đại thì việc tích hợp các giải thuật mật mã càng khó và luôn là thách thức đặt ra đối với kỹ thuật trong điều kiện nền khoa học và công nghệ của Việt nam còn có nhiều mặt hạn chế. Với nhu cầu bảo mật cho các hệ thống truyền tin tốc độ lớn, hướng tới chuyên dụng hoá thiết bị bảo mật để tính chủ động, độc lập trong các thiết bị mật mã ngày càng cao thì việc tạo ra một cấu trúc vật lý sử dụng mã khối trong xử lý mật thông tin trên công nghệ FPGA là một giải pháp ưu việt hiện nay. Đây là một hướng nghiên cứu, có khả năng áp dụng phù hợp với điều kiện thực tế về công nghệ và yêu cầu sử dụng ở Việt Nam .

Qua thời gian nghiên cứu đồ án đã hoàn thành được nhiệm vụ, mục tiêu đặt ra và đã đạt được những kết quả chính như sau:

- Đã trình bày tổng quan về mô hình và thuật toán Mã hóa DES. - Trình bày tổng quan về công nghệ FPGA, giới thiệu quy trình thiết kế một sản phẩm trên công nghệ FPGA, một số đặc điểm tóm tắt của các ngôn ngữ mô tả phần cứng trong đó đi sâu mô tả cơ bản về ngôn ngữ mô tả phần cứng VHDL là ngôn ngữ được dùng trong quá trình thiết kế modul mã DES.

- Đã thực hiện thiết kế modul mã DES trên môi trường phần mềm tích hợp ISE của Xilinx. Kết quả của thiết kế có thể được tích hợp vào linh kiện phần cứng đáp ứng được nhu cầu bảo mật hiện nay nhờ sự linh hoạt, mềm dẻo trong thiết kế của công nghệ FPGA.

Do thời gian làm đồ án không được nhiều, trình độ bản thân hạn chế, đồ án không thể tránh được những sai sót, nội dung chưa được sâu sắc. Kính mong nhận được sự đóng góp các thầy giáo

Một lần nữa tôi xin chân thành cảm ơn TS Lưu Hồng Dũng, cùng các thầy giáo khoa Công nghệ thông tin đã tạo điều kiện, giúp đỡ tôi trong quá trình học tập và hoàn thành đồ án.

TÀI LIỆU THAM KHẢO

Tiếng Việt

1. 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.

2. Ban Cơ yếu Chính phủ (2004), Cơ sở mật mã hiện đại, Hà Nội.

3. Nguyễn Tăng Cường, Phan Quốc Thắng (2003), Cấu trúc và lập trình các hệ xử lý tín hiệu số, NXB Khoa học và kỹ thuật, Hà Nội.

4. Tống Văn On (2007), Thiết kế mạch số với VHDL & Verilog Tiếng Anh

5. A.J.Menezes, P.C.Van Oorschot, S.A.Vanston (1997), Handbock of applied cryptography, CRC Press 1997.

6. Daniel D. Gajski, Nikil D. Dutt, Allen C-H Wu, Steve Y-L Lin (1992), High Level Synthesis Introdution to Chip and System Design,

Nguồn tham khảo từ Internet www.altera.com www.xilinx.com www.intel.com

PHỤ LỤC

Thứ tự các bước thực hiện trên ISE của Xilinx

- Tạo một dự án mới (Creating a New Project) - Cửa sổ New Project

Hình 4.1: Cửa sổ tạo Project mới

- Cửa sổ Device Properties : Cửa sổ này cho phép lựa chọn các yếu tố như

họ thiết bị, tên thiết bị, loại vỏ, công cụ tổng hợp, mô phỏng…ở đây, đồ án chọn như sau:

Device Family: Virtex5 Device: XC5VLX30 Package: FF324 Speed Grade: -3

Synthesis Tool: XST( VHDL/Verilog) Simulator: ISE Simulator

Generater Simulator Language: VHDL

Hình 4.2: Cửa sổ lựa chọn họ thiết bị

- Cửa sổ tạo File nguồn mới cho Project

Hình 4.3: Cửa sổ tạo file nguồn mới cho dự án

Hình 4.4: Form chính của chương trình (adsbygoogle = window.adsbygoogle || []).push({});

Trong form chính của chương trình có cửa sổ soạn thảo, cửa sổ này dùng để viết nội dung thiết kế. Dùng ngôn ngữ lập trình VHDL để viết chương trình. Sau khi đã soạn thảo nội dung chương trình vào cửa sổ soạn thảo, thực hiện save lại. Để kết thúc việc tạo một module thiết kế mới, kiểm tra cấu trúc module vừa tạo bằng Check Syntax

Hình 4.5: Kiểm tra mô đun thiết kế vừa tạo

Hình 4.6: Sơ đồ tổng quát

Hình 4.7: Sơ đồ mở rộng

Hình 4.8: Sơ đồ Round 1

Trình mô phỏng được sử dụng trong thiết kế này là ISE Simulator. Từ thiết kế vừa tạo, để có thể mô phỏng trên phần mềm ISE Simulator phải tạo ra một file thử dạng sóng cho các đầu vào (Test Bench Waveform).

Hình 4.9: Cửa sổ lựa chọn Test Bench Waveform

Hình 4.11: Kết quả mô phỏng trên ISE Simulator

- View Design Summary

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