3.1.1. Cấu trúc chung.
Nguyên lý thiết kế và cấu trúc của thuật toán mã khối đã đƣợc trình bày trong chƣơng 1 của luận văn. Trên cơ sở đó, cấu trúc của module mã khối đƣợc xây dựng nhƣ sơ đồ hình 3.1.
Hình 3.1: Cấu trúc chung của module mã khối.
Khóa mã
Dữ liệu vào Dữ liệu ra
Khối xử lý mã hóa/giải
mã dữ liệu
Điều khiển
Trong đó:
- Khối dữ liệu vào (ra) là bản tin rõ (mã) có độ dài M bít .
- Khối xử lý mã hoá/giải mã dữ liệu là khối đóng vai trò chức năng chính của modul mã khối, có nhiệm vụ mã hoá hay giải mã dữ liệu theo thuật toán mã khối đƣợc chọn lựa.
- Khoá mã độ dài K bít có nhiệm vụ kết hợp với các hàm toán học của thuật toán mã khối để thực hiện mã hoá hay giải mã khối dữ liệu.
- Khối điều khiển thực hiện nhiệm vụ điều khiển toàn bộ hoạt động của modul.
3.1.2. Một số yêu cầu đối với module mã khối.
Module mã khối dùng trong hệ truyền tin mật phải thoả mãn một số yêu cầu cơ bản sau:
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
- Về mặt mật mã: Phải đảm bảo yêu cầu bảo mật, yêu cầu nghiệp vụ mật mã tuỳ theo các cấp độ mật khác nhau phụ thuộc vào nội dung thông tin cần bảo mật.
- Về mặt kỹ thuật công nghệ: Phải đảm bảo tốc độ mã hoá, tốc độ giải mã phù hợp với tốc độ luồng dữ liệu của hệ thống truyền tin.
- Về mặt hệ thống: Phải ghép nối đƣợc với các thiết bị truyền tin, đồng bộ giữa phần mã hoá và giải mã, hạn chế thấp nhất các khả năng gây lỗi cho toàn bộ hệ thống truyền tin mật
- Về mặt sử dụng: Có tính tiện dụng và chuyên dụng, có độ tin cậy cao trong khi hoạt động, linh hoạt trong quá trình xử lý, giá thành phù hợp, hiệu quả kinh tế cao.
3.2. LỰA CHỌN THUẬT TOÁN CHO MÔ PHỎNG THIẾT KẾ. 3.2.1. Lựa chọn thuật toán. 3.2.1. Lựa chọn thuật toán.
Việc lựa chọn thuật toán mã khối để mô phỏng thiết kế có ý nghĩa chứng minh về khả năng cũng nhƣ cách thức tiến hành khi thiết kế một hệ mã khối trên FPGA nên nó phải đáp ứng đƣợc các tiêu chí:
- Mang đầy đủ đặc trƣng cơ bản của cấu trúc Feistel.
- Đã đƣợc phổ biến rộng rãi và đƣợc kiểm chứng trên thực tế.
Trong số các thuật toán mã khối đã đƣợc công bố, thuật toán DES đã đáp ứng đƣợc hai tiêu chí trên, vì:
- DES có đầy đủ các đặc trƣng của cấu trúc Feistel nhƣ đã đƣợc trình bày trong mục 1.2.4 và trong đó một số cấu trúc biến đổi khác nhƣ các hộp nén, các phép hoán vị, các phép dịch vòng lại mang những đặc trƣng của cấu trúc cộng - nhân.
- DES đã đƣợc thừa nhận là chuẩn mật mã của Mỹ từ cuối những năm 1970, đã đƣợc sử dụng rộng rãi trên thế giới.
3.2.2. Mô tả thuật toán DES.
Thuật toán DES [1],[7] thực hiện mã hoá bản rõ X có độ dài 64 bits với khoá mã
K có độ dài 56 bít, cho bản mã là một xâu bít Y có độ dài 64 bits.
Thuật toán DES hoạt động ở 4 chế độ: ECB, CBC, CFB, OFB trong đó, chế độ ECB là chế độ hoạt động tiêu biểu của mã khối và từ đây về sau thuật ngữ DES đƣợc hiểu là DES làm việc ở chế độ ECB.
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
Lƣợc đồ của thuật toán DES đƣợc mô tả trên hình 3.2. Thuật toán tiến hành theo 3 giai đoạn:
Giai đoạn 1. Với bản rõ cho trƣớc x, một xâu bít x0 sẽ đƣợc xây dựng bằng cách hoán vị các bít của x theo phép hoán vị cố định ban đầu IP. x0= IP(X) = L0R0, trong đó L0 gồm 32 bít đầu và R0 là 32 bít cuối.
Giai đoạn 2. Sau đó tính toán 16 lần lặp theo một hàm toán học xác định, tính LiRi, 1 i 16 theo quy tắc sau:
Li = Ri-1
Ri = Li-1 f(Ri-1,Ki)
trong đó kí hiệu phép hoặc loại trừ của hai xâu bít (cộng theo modulo 2). F là một hàm sẽ đƣợc mô tả ở sau, còn K1,K2, . . . ,K16 là các xâu bít độ dài 48 đƣợc tính nhƣ hàm của khoá K. (trên thực tế mỗi Ki là một phép chọn hoán vị bít trong K). K1, . . ., K16 sẽ tạo thành bảng khoá. Một vòng của phép mã hoá đƣợc mô tả trên hình 3.3.
Giai đoạn3. Áp dụng phép hoán vị FP cho xâu bit R16L16, ta thu đƣợc bản mờ y. Tức là y=FP (R16L16). Hãy chú ý thứ tự đã đảo của L16 và R16.
3.2.2.1. Hàm F trong thuật toán DES.
Hàm F: Có hai biến vào.
- Biến thứ nhất A là xâu bit độ dài 32.
- Biến thứ hai J là một xâu bit độ dài 48. Đầu ra của f là một xâu bit độ dài 32. a) Biến thứ nhất A đƣợc mở rộng thành một xâu bit độ dài 48 theo một hàm mở rộng cố định E. E(A) gồm 32 bớt của A (đƣợc hoán vị theo cách cố định) với 16 bit xuất hiện hai lần.
b) Tính E(A) J và viết kết quả thành một chuỗi 8 xâu 6 bit
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.2: Lược đồ của thuật toán DES
c) Bƣớc tiếp theo dùng 8 bảng S1, S2, ...,S8 (đƣợc gọi là các hộp thế S-BOX). Với mỗi Si là một bảng 416 cố định có các hàng là các số nguyên từ 0 đến 15. Với xâu bít có độ dài 6 (kí hiệu Bi = b1b2b3b4b5b6), ta tính Sj(Bj) nhƣ sau: Hai bít b1b6 xác định biểu diễn nhị phân của hàng r của Sj ( 0 r 3) và bốn bít (b2b3b4b5) xác định biểu diễn nhị phân của cột c của Sj ( 0 c 15 ). Khi đó Sj(Bj) sẽ xác định phần tử Sj(r,c); phần tử này viết dƣới dạng nhị phân là một xâu bít có độ dài 4 (bởi vậy, mỗi Sj có thể đƣợc coi là một hàm mã mà đầu vào là một xâu bít có độ dài 2 và một xâu bít có độ dài 4, còn đầu ra là một xâu bít có độ dài 4). Bằng cách tƣơng tự tính các Cj = Sj(Bj), 1 j 8.
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 F Ki + Li Ri Li-1 Ri -1
Hình 3.3: Một vòng của DES.
J E E(A) + B1 B2 B3 B4 B5 B6 B7 B 8 S1 C1 C2 C3 C4 C5 C6 C7 C8 E(A) P S2 S3 S4 S5 S6 S7 S8 F(A,J) F(A,J)
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) Xâu bít C = C1C2... C8 có độ dài 32 đƣợc hoán vị theo phép hoán vị cố định P. Xâu kết quả là P(C) đƣợc xác định là F(A,J).
Hàm F đƣợc mô tả trên hình 3.4. Chủ yếu nó gồm một phép thế (sử dụng hộp S- BOX ), tiếp sau đó là phép hoán vị P; 16 phép lặp của F sẽ tạo nên một hệ mật tích.
Phép hoán vị ban đầu IP
58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7
Bảng 3.1: Các tham số của phép hoán vị ban đầu IP.
Bảng này có nghĩa là bit thứ 58 của x là bit đầu tiên của IP(x); bit thứ 50 của x là bit thứ hai của IP(x), .v.v . . .
Phép hoán vị FP 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25
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 Bảng chọn E bit 32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1
Bảng 3.3: Các tham số của hàm mở rộng E.
Hộp thế S-Box: S1 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 S2 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9 S3 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12 S5 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
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 S7 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12 S8 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
Bảng 3.4: Tham số của các hộp S-Box.
Phép hoán vị P trong hàm F:
P 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 32 27 3 9 19 13 30 6 22 11 4 25
Bảng 3.5: Các tham số của phép hoán vị P. 3.2.2.2. Lược đồ tạo khoá mã dịch.
Đây là phần mô tả việc tính toán bảng khoá từ khoá K. Trên thực tế, K là một xâu bít độ dài 64, trong đó 56 bít là khoá và 8 bít để kiểm tra tính chẵn lẻ nhằm phát hiện sai. Các bít ở các vị trí 8,16,24,32,40,48,56,64 đƣợc xác định sao cho mỗi byte chứa một số lẻ các số "1". Bởi vậy một sai sót đơn lẻ có thể phát hiện đƣợc trong mỗi nhóm 8 bít. Các bít kiểm tra bị bỏ qua trong quá trình tính toán bảng khoá.
a) Với một khoá K có độ dài 64 bít cho trƣớc, loại bỏ các bít kiểm tra tính chẵn lẻ và hoán vị các bít còn lại của K theo phép hoán vị cố định PC-1.
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
b) Với i thay đổi từ 1 đến 16:
Ci = LSi(Ci-1) Di = LSi(Di-1)
Trong đó LSi là phép dịch vòng trái, phụ thuộc vào giá trị của i. Với i = 1,2,9 hoặc 16 thì dịch vòng sang trái 1 vị trí, còn các giá trị khác của i thì dịch vòng sang trái 2 vị trí. Hoán vị PC-1 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4
Bảng 3.6: Các tham số của phép hoán vị PC-1.
Hoán vị PC-2 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32
Bảng 3.7: Các tham số của phép hoán vị PC-2.
Nhƣ đã nói ở trên, mỗi vòng sử dụng một khoá 48 bít gồm 48 bít nằm trong K. Phép giải mã đƣợc thực hiện nhờ dùng cùng thuật toán nhƣ phép mã nếu đầu vào là Y nhƣng dùng bảng khoá theo thứ tự ngƣợc lại K16,...K1. Đầu ra của thuật toán sẽ là bản rõ X.
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 PC-1 C0 D0 LS1 LS1 C1 D1 PC-2 K1 . . LS16 LS16 C16 D16 PC-2 K16
Hình 3.5: Sơ đồ tính khoá của thuật toán DES.
3.3. PHƢƠNG PHÁP THIẾT KẾ MODULE DES TRÊN FPGA. 3.3.1. Quy trình và công cụ thiết kế. 3.3.1. Quy trình và công cụ thiết kế.
3.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ế module 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ã hoá/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:
a) 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.
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
b) Biên dịch và kiểm tra từng khối chức năng ở mức RTL (Register Transfer Level).
c) Tổng hợp và tối ƣu về mặt logic.
d) Đặt và định đƣờng đi cho các thiết bị chuyên dụng. e) Kiểm tra thiết kế.
f) Nạp cấu hình cho phần cứng.
Các bƣớc b, c, d chủ yếu do công cụ thiết kế thực hiện một cách tự động.
3.3.1.2. Công cụ thiết kế.
Trong chƣơng 2 luận văn đã trình bày 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 ALTERA 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:
a) Công cụ phần mềm:
- Thiết kế các khối hàm cơ bản của DES bằng ngôn ngữ VHDL. - Hệ công cụ phát triển cho thiết kế logic Quartus II của ALTERA. b) Công cụ phần cứng:
FPGA đƣợc sử dụng trong thiết kế là dòng linh kiện của ALTERA.
3.3.2. Sơ đồ khối chức năng của module mã khối DES trên FPGA.
3.3.2.1. Sơ đồ khối tổng quát.
Từ cấu trúc chung của moduê mã khối và thuật toán DES, sơ đồ khối tổng quát của module mã khối gồm các thành phần mô tả trên hình 3.6.
- 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 Module.
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 FPGA DES Điều khiển Dữ liệu ra Dữ liệu vào
Khoá mã vào Cấu
hình
Hình 3.6: Sơ đồ khối tổng quát của module mã khối DES trên FPGA. 3.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.7. - 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.
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 1 K15 K16 K 16 K2 K1 Bản rõ Tính toán khoá con Hoán vị IP Bản mã Hoán vị FP Vòng 1 Vòng 1 Vòng 2 Vòng 16 Bả n mã Vòng 2 Vòng 16 Bả n rõ Hoán vị IP Hoán vị FP
Hình 3.7: Quá trình mã hoá/giải mã DES.
3.3.2.3. Sơ đồ khối chức năng của module DES.
Hình 3.8 mô tả các chức năng chính của module DES gồm : - Khối vào/ra dữ liệu (Converter).