Để module DES thiết kế trên FPGA có thể hoạt động đƣợc độc lập, cần phải thiết kế một bảng mạch phụ trợ theo sơ đồ hình 3.17:
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 EN M· ho¸/Gi¶i m· FPGA d÷ liÖu ra kho¸ m· Ic cÊu h×nh C¸p mv d÷ liÖu vµo t¹o xung nhÞp En/De Reset
Hình 3.17: Sơ đồ khối phần cứng của modul mã khối DES. 3.3.4.1. Khối xử lý chính (mã hoá/giải mã).
Đây là phần chính thực thi toàn bộ các hoạt động của modul mã khối. Toàn bộ chƣơng trình thiết kế thuật toán DES và các chức năng khác của modul bằng ngôn ngữ mô tả phần cứng sau khi qua các giai đoạn của trình biên dịch, tối ƣu, đặt và định đƣờng, kiểm tra sẽ đƣợc nạp và thực hiện trên cho FPGA. Việc chọn linh kiện FPGA hoàn toàn phụ thuộc vào các yêu cầu của một nhiệm vụ cụ thể. Ví dụ: Các yêu cầu về tốc độ xử lý phải đáp ứng đƣợc tốc độ dữ liệu của ứng dụng, số chân vào/ra tín hiệu phụ thuộc vào phƣơng thức lấy dữ liệu vào/ra, số lƣợng các cổng logic của linh kiện phải đảm bảo tƣơng ứng với số lƣợng các cổng logic của chƣơng trình thiết kế, giá thành sản phẩm...
3.3.4.2. Khối cấu hình cho FPGA.
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
- Giai đoạn 1: “Nạp mềm” dùng cho việc kiểm tra kết quả trong từng giai đoạn hoặc toàn bộ quá trình thiết kế. Với mỗi khối chức năng đƣợc chia ra trong quá trình thiết kế modul ngoài việc kiểm tra sự hoạt động của khối bằng chƣơng trình mô phỏng“ Vector Waveform File” của công cụ Quartus II nhƣ đã trình bày trong phần 3.3.3.7, ngƣời thiết kế có thể kiểm tra sự hoạt động của các khối bằng cách nạp cấu hình của khối đó thông qua cáp ByteBlasterMV (MV) ra thiết bị phần cứng để phân tích xem hoạt động của khối có đúng so với yêu cầu chƣa. Nếu khối chức năng hoạt động chƣa đúng yêu cầu thì quay lại kiểm tra thiết kế. Cấu hình này trong phần cứng sẽ bị xoá khi tắt nguồn nuôi.
Hình 3.18: Sơ đồ ghép nối giữa FPGA và cáp MV.
- Giai đoạn 2: “Nạp cứng” sau khi kiểm tra toàn bộ hoạt động của modul theo đúng yêu cầu thiết kế, ngƣời thiết kế tiến hành nạp cấu hình cho phần cứng bằng thiết bị nạp trình ALL-11C. IC để lƣu giữ cấu hình đƣợc chọn phải phù hợp với linh kiện FPGA.
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
Hình 3.19: Sơ đồ ghép nối giữa FPGA và linh kiện cấu hình
3.3.4.3. Các phần mạch khác.
- Mạch tạo xung nhịp: Tạo xung Clock cung cấp cho toàn bộ module.
- Khối nguồn đƣợc thiết kế cho ra các nguồn điện áp DC +5V; +2,5V; +3,3V
để cung cấp cho các vi mạch.
3.3.5. Kiểm tra sự hoạt động của DES trong module mã khối.
Việc thiết kế module mã khối DES, cũng nhƣ cứng hoá các thuật toán phức tạp khác trên công nghệ FPGA phải trả lời một câu hỏi: liệu vi mạch FPGA đã thiết kế có hoạt động đúng nhƣ mô tả lý thuyết của thuật toán? Để kiểm tra tính đúng đắn của thiết bị phần cứng đã thiết kế, ngƣời ta thƣờng thực hiện bằng phƣơng pháp kiểm tra theo vector (test vector)[17], trong đó mỗi vector là một bộ thông tin bao gồm: thông tin đầu vào, thông tin cần xử lý và thông tin kết quả, tuỳ theo từng thuật toán phải đánh giá. Những vector kiểm tra này đƣợc ngƣời xây dựng thuật toán tạo ra bằng công cụ lý thuyết. Việc kiểm tra vector đƣợc thực hiện theo hai phƣơng pháp:
- Phƣơng pháp kiểm tra vector đã đƣợc tính sẵn kết quả KAT (Know Answer Test).
- Phƣơng pháp kiểm tra vector ngẫu nhiên (Monte - Carlo).
Trong hai phƣơng pháp trên, KAT đƣợc sử dụng phổ biển nhất. Cơ sở của Test vector là các giá trị vector kiểm tra đƣợc tính toán sẵn. Sau khi công bố, phần lớn các thuật toán xử lý dữ liệu có khả năng cứng hoá đều đƣợc tính trƣớc các vector
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
kiểm tra nhằm tạo cơ sở cho nhà sản xuất thiết bị xử lý dữ liệu theo thuật toán đó kiểm tra thành phẩm.
Đối với thuật toán DES, các giá trị vector kiểm tra đƣợc công bố trong tài liệu: NIST Special Publication 800-17. Hai bảng vector kiểm tra chính là VPKAT (Variable Plaintext Know Answer Test) và VKKAT(Variable Key Know Answer Test).
Kiểm tra với bản rõ biến đổi (VPKAT).
Quá trình mã hoá đƣợc kiểm tra bằng cách thực hiện kiểm tra với bản rõ biến đổi, trong đó phần cứng cần kiểm tra (ITU: Implemantation Under Test) sẽ nhận các giá trị của bản rõ cho trƣớc trong vector đầu vào hệ thống kiểm tra (MOVS – Modes of Operation Validation System). Khoá phiên đƣợc đặt giá trị bằng 1 ở những vị trí lẻ.
Phép kiểm tra VPKAT đƣợc thực hiện nhƣ sau:
1. MOVS thiết lập:
a) Khoá phiên: Key=0101010101010101 (đặt parity lẻ)
b) Bản rõ ban đầu: PT1=8000000000000000
c) Gửi Key và PT1 đến IUT
2. IUT thực hiện thuật toán mã hoá dữ liệu với Key và gửi kết quả cho MOVS.
3. MOVS so sánh két quả tính toán trong IUT với bản mã đã đƣợc tính sẵn.
Kiểm tra với khoá biến đổi (VKKAT)
Kiểm tra với khoá biển đổi đƣợc thực hiện nhƣ sau: ITU nhận đƣợc vector đầu vào gồm có giá trị khoá thay đổi và giá trị bản rõ cố định là “0”
Phép kiểm tra với khoá biến đổi (VKKAT) đƣợc thực hiện nhƣ sau:
1. MOVS thiết lập:
a) Khoá phiên: Key1 = 800101010101010101
b) Bản rõ ban đầu: PT = 0000000000000000 c) Gửi Key1 và PT đến IUT
2. IUT thực hiện thuật toán mã hoá dữ liệu với Key và gửi kết quả tới MOVS
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
3.4. KẾT QUẢ THIẾT KẾ MODULE MÃ KHỐI DES. 3.4.1. Kết quả thiết kế. 3.4.1. Kết quả thiết kế.
Quá trình xây dựng và thiết kế module mã khối DES đƣợc thực hiện trên cơ sở xây dựng các khối chức năng của thuật toán DES bằng mô tả VHDL trong phần 3.3.3 và các yếu tố về phần cứng trong phần 3.3.4.
3.4.1.1. Sơ đồ phần cứng của module.
a) Module DES: Trong module sử dụng chíp EP20K100TC144-3 thuộc họ APEX 20K của ALTERA.
Những đặc điểm chính của chíp EP20K100TC144-3 của Altera:
EP20K100TC 144-3 cung cấp 100.000 cổng sử dụng, 144 chân vào ra trong đó có 95 chân I/O dành cho ngƣời sử dụng, 4406 thanh ghi, 53.248 bít RAM, ROM, sử dụng nguồn nuôi 2.5 VDC, làm việc với xung nhịp cao nhất là 133 MHz. Sơ đồ chân tín hiệu của EP20K100TC 144-3 đƣợc nêu trong phụ lục 1.
b) IC cấu hình: Có thể dùng loại EPC1, EPC2... tuỳ theo dung lƣợng của thiết bị. Với họ linh kiện APEX 20K của Altera có thể dùng IC cấu hình loại EPC2LC 20. File chƣơng trình DES.SOF đƣợc nạp cho EPC2LC20 bằng bộ nạp ALL-11C.
EPC2 LC20 là một loại SRAM có dung lƣợng là 1.655 Kbít sử dụng nguồn nuôi là 5.0 V và 3.3 V.
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 Control Control +3,3V +5V +2,5V Enciph
Reset MOdulE des
Apex20k Ep20k100tc144-3 DỮ LIỆU RA 74LS373 KHOÁ MÃ CÁP MV EPC2 Lc 20 BẢNG LED HIỂN THỊ TÍN HIỆU RA DỮ LIỆU VÀO 74LS244 BẢNG LED HIỂN THỊ TÍN HIỆU VÀO TẠO XUNG NHỊP KHỐI NGUỒN
Hình 3.20: Sơ đồ khối phần cứng mô phỏng.
Chức năng các chân tín hiệu vào/ra của EPC2 LC20 đƣợc mô tả ở bảng 3.10.
Stt Tên Vào/Ra Mô tả
1 TDO Output Nối với cáp JTAG nếu cáp này đƣợc sử
dụng.
2 DATA Output Dữ liệu ra nối tiếp. Dữ liệu đƣợc chốt tại đây
đến khi chân tín hiệu nCS có mức cao thì dữ liệu sẽ đƣợc nạp cho linh kiện FPGA.
3 TCK Input Chân nhịp của JTAG. Chân này nối tới GND
nếu nhƣ cáp JTAG không đƣợc sử dụng.
5 VCCSEL Input Chọn chế độ nguồn cung cấp Vcc. VCCSEL
phải đƣợc nối tới GND nếu linh kiện sử dụng chế độ nguồn cung cấp là 5V và nối tới Vcc nếu linh kiện sử dụng chế độ nguồn cung cấp là 3.3V.
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
8 OE(3) Output OE=’1’ cho phép đƣa dữ liệu vào linh kiện,
OE=’0’ reset lại bộ đếm.
9 nCS(3) Input Vào chọn chíp cấu hình khi phải dùng nhiều
IC cấu hình cho một linh kiện FPGA.
10 GND Đất Chân nối đất. Nối tụ điện 0.2mF để lọc
nguồn giữa Vcc và GND.
11 TDI Input Chân vào dữ liệu của mạch JTAG. Không
đƣợc nối chân này nếu nhƣ mạch JTAG không đƣợc sử dụng.
12 nCASC Output Nối tới chân nCS của IC cấu hình tiếp theo
nếu nhƣ trong mạch dùng nhiều hơn một IC cấu hình.
13 nINIT_CONF(3
)
Output Chân tín hiệu này đƣợc nối với nCONFIG
của linh kiện FPGA từ IC cấu hình qua cáp JTAG
14 VPPSEL Input Tƣơng tự nhƣ chân số 5
18 VPP Power Cung cấp nguồn. Với EPC2 chân này đƣợc
nối tới Vcc.
19 TMS Input Chọn chế độ JTAG. Nối chân này tới Vcc
nếu nhƣ mạch JTAG không sử dụng.
20 VCC Power Cung cấp nguồn.
Bảng 3.10: Chức năng các tín hiệu vào/ra của EPC2 LC20.
Chú ý: (3) Các chân OE, nCS, và nINIT_CONF trên EPC2 khi sử dụng nối một
điện trở 1KÙ với Vcc.
c)Mạch chốt dữ liệu vào/ra: Dữ liệu vào/ra có thể đƣợc thiết kế ở dạng nối tiếp hay song song tuỳ thuộc vào hệ thống truyền tin cụ thể đƣợc chọn làm đối tƣợng ghép nối. Trong thiết kế moduê để thuận tiện cho việc mô phỏng tín hiệu, mạch chốt dữ liệu đƣợc thiết kế riêng, sử dụng vi mạch 74LS 244 cùng với 8 cụm chuyển mạch (mỗi cụm có 8 chuyển mạch ) tạo ra 64 bít dữ liệu để mô phỏng cho tín hiệu đầu vào, vi mạch 74LS 373 chốt 64 bít dữ liệu đầu ra hiển thị ra LED, các tín hiệu điều khiển (control) đƣợc đƣa ra từ chíp FPGA nhằm điều khiển việc lấy dữ liệu vào/ra. Để thuận tiện cho quá trình mô phỏng, khoá mã đƣợc nạp sẵn trong modul mã khối.
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
d) Bảng dèn LED hiển thị: Dùng trong quá trình mô phỏng mục đích là chỉ thị các bít dữ liệu ở đầu vào và đầu ra. LED ở trạng thái “sáng” chỉ thị cho mức lôgíc “1” và ở trạng thái “tắt” chỉ thị cho mức lôgíc “0”.
e) Mạch tạo xung nhịp: Tạo xung Clock cung cấp cho toàn bộ modul với tần số hoạt động 24MHz.
f) Khối nguồn: Đƣợc thiết kế cho ra các nguồn điện áp DC +5V; +2,5V; +3,3V để cung cấp cho các vi mạch.
Hình 3.21: Hình ảnh module mã khối DES đã được thiết kế. 3.4.1.2. Kiểm tra kết quả thiết kế.
Module DES, sau khi đƣợc cứng hoá bằng công nghệ FPGA, đã đƣợc kiểm tra theo phƣơng pháp Test vector nhằm kiểm chứng tính đúng đắn trong hoạt động trên chíp FPGA. Sau khi kiểm tra từng vector theo hai bảng vector kiểm tra, module DES đã cho kết quả đúng nhƣ tính toán lý thuyết, chứng tỏ hoạt động của module DES trên FPGA hoàn toàn chính xác.
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
3.4.2. Đánh giá kết quả thiết kế module mã khối.
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: