Đánh giá kết quả thiết kế module mã khối

Một phần của tài liệu thiết kế hệ thống mã khối bằng công nghệ fpga (Trang 107 - 126)

Căn cứ vào các yêu cầu đối với module mã khối, việc thiết kế mô phỏng module mã khối với thuật toán DES, sử dụng chíp EP20K100TC 144-3 đã đạt đƣợc các kết quả nhƣ sau:

- Đã thiết kế chế tạo 2 module mã khối với thuật toán DES trên công nghệ FPGA.

- Toàn bộ thuật toán DES đƣợc thiết kế đóng gói trên chíp FPGA, hoạt động chính xác so với mô tả về lý thuyết, đảm bảo đƣợc các yêu cầu về bảo mật thiết kế, kết cấu vật lý và tính ổn định khi hoạt động.

- Về tốc độ mã hoá/giải mã dữ liệu: Phƣơng pháp thiết kế trên sử dụng số chu kỳ xung nhịp cho một quá trình mã hoá là 24, trong đó 8 chu kỳ dành cho lấy dữ liệu và khoá, 16 chu kỳ dành cho 16 vòng lặp, dữ liệu ra đƣợc lấy song song 64 bít. Nhƣ vậy với xung nhịp 24 MHz, dữ liệu đầu vào mã hoá 64 bít thì tốc độ mã hoá dữ liệu tính theo lý thuyết là:(24 MHz/s * 64bít)/24 = 64Mbít/s. Với các loại chíp FPGA khác nhau sẽ hoạt động với các tốc độ xung nhịp khác nhau. Chíp EP20K100TC144-3 làm việc với xung nhịp cao nhất là 133 MHz, nhƣ vậy tốc độ mã hoá dữ liệu tính theo lý thuyết sẽ đạt: (133MHz/s * 64 bít) / 24  355 Mbít/s. - Về hiệu suất sử dụng chíp FPGA: Số cổng logíc sử dụng cho thiết kế là (tính theo %): 67.740 gate/100.000 gate = 67,74%. Số chân tín hiệu vào/ra sử dụng cho thiết kế là: 83/95  87%.

Trong thực tế nhiều hệ thống truyền tin hiện đại có tốc độ truyền dữ liệu rất lớn vì vậy để đạt đƣợc tốc độ mã hoá/giải mã dữ liệu cao hơn, có thể sử dụng hƣớng thiết kế theo phƣơng pháp đƣờng ống (pipeline). Thay vì xử lý một khối dữ liệu trong một thời điểm, thiết kế pipeline có thể xử lý hai hay nhiều khối dữ liệu trong cùng một thời điểm. Thuật toán DES với 16 vòng lặp, thiết kế pipeline đầy đủ sẽ đƣợc tạo ra bởi pipeline 16 tầng. Phƣơng pháp này cho tốc độ xử lý dữ liệu tăng một cách đáng kể, tuy nhiên số cổng logíc sử dụng cũng tăng rất nhiều có nghĩa rằng phải dùng chíp FPGA có số lƣợng cổng lôgíc lớn.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

kế sẽ phải tính toán và lựa chọn chíp FPGA thích hợp về tốc độ xử lý dữ liệu, hiệu suất sử dụng chíp...

3.5 Kết luận chƣơng.

Chƣơng 3 đã trình bày các vấn đề về cấu trúc của module mã khối, cách lựa chọn thuật toán cho mô phỏng thiết kế cùng các quy trình và công cụ để thiết kế module mã khối trên FPGA; phần cứng mô phỏng module mã khối với các khối xử lý mã hoá/giải mã, các khối cấu hình và các phần mạch phụ trợ; kết quả thiết kế đạt đƣợc với các đánh giá, kiểm tra, kiểm nghiệm thực tế.

3.6 Kết luận chung.

Với sự phát triển vƣợt bậc của Khoa học kỹ thuật, đặc biệt là kỹ thuật mật mã, trong đó phải kể đến hệ mã khối là hệ mật có nhiều ƣu điểm phù hợp hơn cho các hoạt động bảo mật tốc độ cao. Việc cứng hoá các thuật toán mã khối bằng công nghệ FPGA để giải quyết bài toán đáp ứng tốc độ xử lý dữ liệu, tính chủ động, chuyên dụng hoá thiết bị bảo mật, hạ giá thành thiết bị trong điều kiện thực tế về công nghệ và yêu cầu sử dụng ở Việt Nam là một định hƣớng nghiên cứu mới có tính thực tế cao.

FPGA với cấu trúc chip đƣợc đốt vật lý, bảo đảm toàn vẹn, chống tấn công do thám thiết kế, không phụ thuộc vào hệ điều hành nào… đã chứa đựng trong nó những thuộc tính thích hợp cao cho an toàn mật mã. Hơn nữa, FPGA thích hợp cho

những sản phẩm đang trong quá trình nghiên cứu phát triển: với tiêu chí Dễ phát

triển góp phần đáng kể rút ngắn thời gian nghiên cứu phát triển cũng nhƣ hạ giá thành tổng thể cho các sản phẩm loạt nhỏ và vừa; và đối với những sản phẩm cần khả năng cấu hình lại (nhƣ thay thế thuật toán) thì Tính mềm dẻo cần chú trọng, do vậy FPGA là thích hợp. Thực tế đã cho thấy FPGA ƣu thế hơn so với ASSP và ASIC. Ngoài ra đối với mật mã thì Tính mềm dẻo là một tiêu chí cần phải xếp lên hàng đầu bởi thuật toán sinh khóa/mã hóa có thể thay đổi theo từng phiên liên lạc hoặc khi chuyển mạng. Bởi vậy công nghệ thích hợp nhất để cứng hóa mật mã được lựa chọn chính là FPGA với những ƣu điểm chính:

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

+ An toàn mật mã cao. + Mềm dẻo.

+ Dễ phát triển.

Nhƣ vậy, các thuật toán bảo mật đều có thể thực hiện đƣợc bằng FPGA với nhiều hiệu năng, tính tối ƣu không thể phủ nhận. Sử dụng và phát triển các thuật toán bảo mật bằng công nghệ FPGA sẽ mang lại sự chủ động cho việc đảm bảo an ninh trên mạng, đảm bảo tính tƣờng minh an toàn của dữ liệu. Áp dụng công nghệ FPGA trong lĩnh vực bảo mật nhằm đáp ứng yêu cầu về an toàn thông tin ở Việt Nam là hƣớng nghiên cứu ứng dụng cần đƣợc phát triển.

Tuy nhiên, do trình độ của bản thân và thời gian thực hiện đề tài có hạn nên không thể tránh khỏi những hạn chế. Rất mong nhận đƣợc những ý kiến đóng góp, giúp đỡ của các Thầy Cô giáo và các đồng chí có quan tâm để kết quả đề tài này đƣợc tốt hơn.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

TÀI LIỆU THAM KHẢO

Tiếng Việt:

[1] Đỗ Xuân Tiến (2001), Kỹ thuật vi xử lý và lập trình Assembly cho hệ vi xử

, NXB Khoa học và Kỹ thuật.

[2] Đỗ Xuân Tiến (2003), Kỹ thuật lập trình điều khiển hệ thống, NXB Khoa

học và Kỹ thuật, Hà Nội.

[3] 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.

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

[5] 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.

[6] Đặng Văn Chuyết, Nguyễn Tuấn Anh (2001), Cơ sở lý thuyết truyền tin,

NXB Giáo dục, Hà Nội.

[7] Nguyễn Minh Đức (2004), Bộ vi xử lý thiết kế bằng máy tính các hệ kỹ thuật số, NXB Tổng hợp TP. Hồ Chí Minh.

[8] Hồ Trung Mỹ (2002), VHDL và thiết kế số, Đại học Bách khoa TP. Hồ Chí Minh.

[9] Vũ Ngọc Phàn (2006), Lý thuyết Thông tin và Mã hoá, NXB Bƣu điện.

Tiếng Anh:

[10] A.J.Menezes, P.C.Van Oorschot, S.A.Vanston (1997), Handbock of

applied cryptography, CRC Press 1997.

[11] Altera Corporation (1997), MAX+PLUS II: Programmable Logic

Development System, United States of America.

[12] Altera Corporation (1997), Quartus II, United States of America.

[13] Daniel D. Gajski, Nikil D. Dutt, Allen C-H Wu, Steve Y-L Lin (1992),

High-Level Synthesis Introdution to Chip and System Design,

[14] Douglas R. Stinson (1995), Crytography: Theory And Practice, CRC

Press, Inc.

[15] Don Davis (Winter 2002), “Architectural Synthesis: Unleashing the Power

of FPGA System-Level Design”, Xcell Journal, (Issue 44), pages 30 – 34,

Xilinx, United States of America.

[16] Giovanni De Micheli, Rajesh K. Gupta (3/1997), “Hardware/Software Co-Design”, Proceedings of the IEEE, (Vol. 85, No 3), pages 349 - 364.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

[17] Michael John Sebastian Smith (1997), Application-Specific Integrated

Circuits, Hardcover (www.Amazon.com), United States of America. [18] Peter J.Ashenden (1990), The VHDL CooKBook, University of Adelaide,

South Australia.

[19] Roger Lipsett & Carl Schaefer (1989), VHDL: Hardware Description and

Design, Kluwer Academic Publishers, United States of America.

[20] Sharon Keller, Miles Smid (2/1998), NIST Special Publication 800-17, U.S. Department of Commerce.

[21] Nguồn tham khảo từ Internet: - www.xilinx.com

- www.actel.com - www.intel.com

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

PHỤ LỤC 1

Quartus II Version 4.2 Build 157 04/05/2005 SJ Full Version CHIP "DES" ASSIGNED TO AN: EP20K100TC144-3

Pin Name/Usage : Location : Dir. : I/O Standard : Voltage : I/O Bank : User Assignment

---

VCC_INT : 1 : power : : 2.5V : :

DataIn[0] : 2 : input : LVTTL/LVCMOS : : : Y

DataIn[1] : 3 : input : LVTTL/LVCMOS : : : Y

GND : 4 : gnd : : : :

DataIn[2] : 5 : input : LVTTL/LVCMOS : : : Y

DataIn[3] : 6 : input : LVTTL/LVCMOS : : : Y

DataIn[4] : 7 : input : LVTTL/LVCMOS : : : Y

DataIn[5] : 8 : input : LVTTL/LVCMOS : : : Y

DataIn[6] : 9 : input : LVTTL/LVCMOS : : : Y

DataIn[7] : 10 : input : LVTTL/LVCMOS : : : Y

cs[0] : 11 : output : LVTTL/LVCMOS : : : Y GND_IO : 12 : gnd : : : : cs[1] : 13 : output : LVTTL/LVCMOS : : : Y cs[2] : 14 : output : LVTTL/LVCMOS : : : Y cs[3] : 15 : output : LVTTL/LVCMOS : : : Y VCC_INT : 16 : power : : 2.5V : : GND : 17 : gnd : : : : MSEL0 : 18 : input : : : : MSEL1 : 19 : input : : : : GND+ : 20 : : : : : VCC_INT : 21 : power : : 2.5V : : NCONFIG : 22 : input : : : : cs[4] : 23 : output : LVTTL/LVCMOS : : : Y cs[5] : 24 : output : LVTTL/LVCMOS : : : Y cs[6] : 25 : output : LVTTL/LVCMOS : : : Y cs[7] : 26 : output : LVTTL/LVCMOS : : : Y GND* : 27 : : : : : VCC_IO : 28 : power : : 3.3V : : GND* : 29 : : : : : GND* : 30 : : : : : GND* : 31 : : : : : GND* : 32 : : : : : GND* : 33 : : : : : GND : 34 : gnd : : : : GND* : 35 : : : : : VCC_INT : 36 : power : : 2.5V : :

res_out[0] : 37 : output : LVTTL/LVCMOS : : : Y

res_out[1] : 38 : output : LVTTL/LVCMOS : : : Y

res_out[2] : 39 : output : LVTTL/LVCMOS : : : Y

res_out[3] : 40 : output : LVTTL/LVCMOS : : : Y

res_out[4] : 41 : output : LVTTL/LVCMOS : : : Y

GND_IO : 42 : gnd : : : :

res_out[5] : 43 : output : LVTTL/LVCMOS : : : Y

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

res_out[7] : 45 : output : LVTTL/LVCMOS : : : Y

res_out[8] : 46 : output : LVTTL/LVCMOS : : : Y

res_out[9] : 47 : output : LVTTL/LVCMOS : : : Y

res_out[10] : 48 : output : LVTTL/LVCMOS : : : Y

res_out[11] : 49 : output : LVTTL/LVCMOS : : : Y

res_out[12] : 50 : output : LVTTL/LVCMOS : : : Y

TMS : 51 : input : : : : TCK : 52 : input : : : : Clk : 53 : input : LVTTL/LVCMOS : : : Y GND : 54 : gnd : : : : VCC_INT : 55 : power : : 2.5V : : GND+ : 56 : : : : : STATUS : 57 : bidir : : : : CONF_DONE : 58 : bidir : : : :

res_out[13] : 59 : output : LVTTL/LVCMOS : : : Y

res_out[14] : 60 : output : LVTTL/LVCMOS : : : Y

VCC_IO : 61 : power : : 3.3V : :

res_out[15] : 62 : output : LVTTL/LVCMOS : : : Y

res_out[16] : 63 : output : LVTTL/LVCMOS : : : Y

res_out[17] : 64 : output : LVTTL/LVCMOS : : : Y

res_out[18] : 65 : output : LVTTL/LVCMOS : : : Y

res_out[19] : 66 : output : LVTTL/LVCMOS : : : Y

res_out[20] : 67 : output : LVTTL/LVCMOS : : : Y

res_out[21] : 68 : output : LVTTL/LVCMOS : : : Y

res_out[22] : 69 : output : LVTTL/LVCMOS : : : Y

res_out[23] : 70 : output : LVTTL/LVCMOS : : : Y

res_out[24] : 71 : output : LVTTL/LVCMOS : : : Y

GND_IO : 72 : gnd : : : :

VCC_INT : 73 : power : : 2.5V : :

GND : 74 : gnd : : : :

res_out[25] : 75 : output : LVTTL/LVCMOS : : : Y

res_out[26] : 76 : output : LVTTL/LVCMOS : : : Y

GND : 77 : gnd : : : :

res_out[27] : 78 : output : LVTTL/LVCMOS : : : Y

res_out[28] : 79 : output : LVTTL/LVCMOS : : : Y

res_out[29] : 80 : output : LVTTL/LVCMOS : : : Y

res_out[30] : 81 : output : LVTTL/LVCMOS : : : Y

res_out[31] : 82 : output : LVTTL/LVCMOS : : : Y

res_out[32] : 83 : output : LVTTL/LVCMOS : : : Y

res_out[33] : 84 : output : LVTTL/LVCMOS : : : Y

VCC_CKLK : 85 : power : : 2.5V : : VCC_INT : 86 : power : : 2.5V : : GND : 87 : gnd : : : : GND_CKLK : 88 : gnd : : : : VCC_IO : 89 : power : : 3.3V : : TDI : 90 : input : : : : nCE : 91 : input : : : : GND+ : 92 : : : : : DCLK : 93 : bidir : : : : DATA0 : 94 : input : : : :

res_out[34] : 95 : output : LVTTL/LVCMOS : : : Y

res_out[35] : 96 : output : LVTTL/LVCMOS : : : Y

res_out[36] : 97 : output : LVTTL/LVCMOS : : : Y

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

res_out[38] : 99 : output : LVTTL/LVCMOS : : : Y

res_out[39] : 100 : output : LVTTL/LVCMOS : : : Y

res_out[40] : 101 : output : LVTTL/LVCMOS : : : Y

res_out[41] : 102 : output : LVTTL/LVCMOS : : : Y

res_out[42] : 103 : output : LVTTL/LVCMOS : : : Y

res_out[43] : 104 : output : LVTTL/LVCMOS : : : Y

res_out[44] : 105 : output : LVTTL/LVCMOS : : : Y

GND_IO : 106 : gnd : : : :

res_out[45] : 107 : output : LVTTL/LVCMOS : : : Y

VCC_INT : 108 : power : : 2.5V : :

res_out[46] : 109 : output : LVTTL/LVCMOS : : : Y

res_out[47] : 110 : output : LVTTL/LVCMOS : : : Y

res_out[48] : 111 : output : LVTTL/LVCMOS : : : Y

res_out[49] : 112 : output : LVTTL/LVCMOS : : : Y

res_out[50] : 113 : output : LVTTL/LVCMOS : : : Y

res_out[51] : 114 : output : LVTTL/LVCMOS : : : Y

res_out[52] : 115 : output : LVTTL/LVCMOS : : : Y

VCC_IO : 116 : power : 3.3V : :

res_out[53] : 117 : output : LVTTL/LVCMOS : : : Y

res_out[54] : 118 : output : LVTTL/LVCMOS : : : Y

res_out[55] : 119 : output : LVTTL/LVCMOS : : : Y

res_out[56] : 120 : output : LVTTL/LVCMOS : : : Y

res_out[57] : 121 : output : LVTTL/LVCMOS : : : Y

res_out[58] : 122 : output : LVTTL/LVCMOS : : : Y

TDO : 123 : output : : : : GND+ : 124 : : : : : VCC_INT : 125 : power : : 2.5V : : GND : 126 : gnd : : : : GND+ : 127 : : : : : nCEO : 128 : output : : : : TRST : 129 : input : : : :

res_out[59] : 130 : output : LVTTL/LVCMOS : : : Y

res_out[60] : 131 : output : LVTTL/LVCMOS : : : Y

res _out[61] : 132 : output : LVTTL/LVCMOS : : : Y

res _out[62] : 133 : output : LVTTL/LVCMOS : : : Y

GND_IO : 134 : gnd : : : :

res_out[63] : 135 : output : LVTTL/LVCMOS : : : Y

GND* : 136 : : : : :

En/De : 137 : input : LVTTL/LVCMOS : : : Y

GND* : 138 : : : : :

done : 139 : output : LVTTL/LVCMOS : : : Y

GND* : 140 : : : : :

GND* : 141 : : : : :

GND* : 142 : : : : :

rdy_to_ld : 143 : output : LVTTL/LVCMOS : : : Y

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

PHỤ LỤC 2: CHƢƠNG TRÌNH MÔ TẢ DES BẰNG VHDL

DES.VHD

library ieee;

use ieee.std_logic_1164.all; entity DES is port

( pt : in std_logic_vector(1 TO 16); key : in std_logic_vector(1 TO 16); clk : in std_logic; reset : in std_logic; ct : out std_logic_vector(1 TO 64) ); end DES;

architecture structural of DES is component control

port (

reset : in std_logic;

clk : in std_logic;

load_new_pt : out std_logic;

output_ok : out std_logic;

load_pt : out std_logic;

unload_pt : out std_logic;

load_key : out std_logic;

unload_key : out std_logic;

shift : out std_logic_vector(1 to 3)

); end component; component Des16 port ( pt : in std_logic_vector(1 TO 64); xkey : in std_logic_vector(1 TO 48); reset : in std_logic; clk : in std_logic; load_new_pt : in std_logic; output_ok : in std_logic; ct : out std_logic_vector(1 TO 64)); end component; component deskey port ( the_key : in std_logic_vector(1 to 64); shift : in std_logic_vector(1 to 3); clk : in std_logic; ki : out std_logic_vector(1 to 48)

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn ); end component; component converter port ( input : in std_logic_vector(1 to 16); load : in std_logic; unload : in std_logic; clk : in std_logic;

output : out std_logic_vector (1 to 64)

);

end component;

signal load_new_pt : std_logic;

signal output_ok : std_logic;

signal load_pt_sig : std_logic;

signal unload_pt_sig : std_logic;

signal load_key_sig : std_logic;

signal unload_key_sig : std_logic;

signal shift_sig : std_logic_vector(1 to 3);

signal ki_sig : std_logic_vector(1 to 48);

signal key_sig : std_logic_vector(1 to 64);

signal pt_sig : std_logic_vector(1 to 64);

begin

control_unit : control port map(reset=>reset,

clk=>clk,

load_new_pt=>load_new_pt,output_ok=>output_ok,load_pt=>load_pt_sig ,unload_pt=>unload_pt_sig,load_key=>load_key_sig,unload_key=>unloa d_key_sig, shift=>shift_sig );

converter_pt : converter port map ( input=>pt,

load=>load_pt_sig, unload=>unload_pt_sig, clk=>clk, output=>pt_sig );

converter_key : converter port map ( input=>key,

load=>load_key_sig,unload=>unload_key_sig,clk=>clk, utput=>key_sig );

datapath : Des16 port map ( pt=>pt_sig, xkey=>ki_sig,

reset=>reset,clk=>clk,load_new_pt=>load_new_pt, output_ok=>output_ok, ct=>ct );

key_proc : deskey port map ( the_key=>key_sig,

shift=>shift_sig, clk=>clk, ki=>ki_sig ); end structural;

Một phần của tài liệu thiết kế hệ thống mã khối bằng công nghệ fpga (Trang 107 - 126)

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

(126 trang)