Luận án Nghiên cứu giải pháp nâng cao hiệu quả bảo mật thông tin trên mạng truyền số liệu đa dịch vụ
Mạng truyền số liệu được sử dụng rộng rãi trong hầu hết các l nh vực
đời sống, kinh tế - xã hội, an ninh quốc phòng để đáp ứng nhu cầu trao đổi
thông tin. Việc xây dựng những mạng truyền thông tốc độ cao với khả năng
bảo đảm chất lượng, dịch vụ là tiền đề để xây dựng và phát triển một xã hội
thông tin hiện đại. Tùy th o tính chất nhiệm vụ và yêu cầu của từng ngành mà
mạng truyền số liệu được xây dựng và tổ chức thành các mạng riêng, độc lập.
Tuy nhiên, các mạng vi n thông hiện nay có xu hướng chung là hội tụ để có
thể truyền được nhiều loại hình thông tin trên một nền mạng duy nhất trong
đó IP/MPL [1], [2], [4], [12] là hai công nghệ nền tảng để xây dựng những
mạng hội tụ như vậy.
Bên cạnh việc phát triển của mạng truyền số liệu thì vấn đề đảm bảo an
ninh, an toàn, bảo mật cho một mạng thông tin là một trong những yếu tố
hàng đầu quyết định chất lượng cũng như tính khả dụng của mạng, bởi vì trên
đó luôn tiềm ẩn rất nhiều nguy cơ gây mất an toàn thông tin, gây hậu quả
nghiêm trọng về kinh tế, chính trị, quân sự, an ninh quốc gia. Đặc biệt đối với
mạng thông tin của các cơ quan Đảng, Nhà nước, Quân đội yêu cầu về an
toàn và bảo mật thông tin, dữ liệu luôn là đòi hỏi cần thiết và cấp bách
Tóm tắt nội dung tài liệu: Luận án Nghiên cứu giải pháp nâng cao hiệu quả bảo mật thông tin trên mạng truyền số liệu đa dịch vụ
BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ QUỐC PHÒNG VIỆN KHOA HỌC VÀ CÔNG NGHỆ QUÂN SỰ ------------------------------ HOÀNG VĂN QUÂN NGHIÊN CỨU GIẢI PHÁP NÂNG CAO HIỆU QUẢ BẢO MẬT THÔNG TIN TRÊN MẠNG TRUYỀN SỐ LIỆU ĐA DỊCH VỤ LUẬN ÁN TIẾN SĨ KỸ THUẬT HÀ NỘI - 2016 BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ QUỐC PHÒNG VIỆN KHOA HỌC VÀ CÔNG NGHỆ QUÂN SỰ ------------------------------ HOÀNG VĂN QUÂN NGHIÊN CỨU GIẢI PHÁP NÂNG CAO HIỆU QUẢ BẢO MẬT THÔNG TIN TRÊN MẠNG TRUYỀN SỐ LIỆU ĐA DỊCH VỤ Chuyên ngành: Kỹ thuật điện tử Mã số: 62 52 02 03 LUẬN ÁN TIẾN SĨ KỸ THUẬT NGƯỜI HƯỚNG DẪN KHOA HỌC: 1. TS LỀU ĐỨC TÂN 2. TS HOÀNG NGỌC MINH HÀ NỘI - 2016 i LỜI CAM ĐOAN Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi. Các nội dung, số liệu và kết quả trình bày trong luận án là hoàn toàn trung thực và chưa có tác giả nào công bố trong bất cứ một công trình nào khác, các dữ liệu tham khảo được trích dẫn đầy đủ. Người cam đoan Hoàng Văn Quân ii LỜI CÁM ƠN Luận án được thực hiện tại Viện Khoa học và Công nghệ Quân sự - Bộ Quốc phòng. Tôi xin bày tỏ lòng biết ơn sâu sắc tới TS Lều Đức Tân và TS Hoàng Ngọc Minh, các thầy đã tận tình giúp đỡ, trang bị phương pháp nghiên cứu, kinh nghiệm, kiến thức khoa học và kiểm tra, đánh giá các kết quả trong suốt quá trình nghiên cứu luận án. Xin trân trọng cám ơn Viện Khoa học và Công nghệ Quân sự, Phòng Đào tạo, Viện Điện tử là cơ sở đào tạo và đơn vị quản lý, các đồng chí lãnh đạo, chỉ huy Cục Cơ yếu - Bộ Tổng Tham mưu – nơi tôi công tác đã tạo mọi điều kiện thuận lợi, hỗ trợ và giúp đỡ tôi trong suốt quá trình học tập, nghiên cứu thực hiện luận án. Xin chân thành cám ơn các thầy, cô của Viện Khoa học và Công nghệ Quân sự, Viện Điện tử, các nhà khoa học, các đồng nghiệp thuộc Trung tâm Nghiên cứu Kỹ thuật Mật mã – Cục Cơ yếu, Viện Khoa học Công nghệ Mật mã/Ban Cơ yếu Chính phủ đã giúp đỡ, hỗ trợ tôi trong suốt thời gian qua. Cuối cùng, tôi xin bày tỏ lòng thành kính và luôn ghi nhớ công ơn của cha mẹ, gia đình, những người thân và xin dành lời cảm ơn đặc biệt tới vợ con, những người đã luôn đồng hành, động viên và là chỗ dựa về mọi mặt giúp tôi vượt qua khó khăn để có được những kết quả nghiên cứu ngày hôm nay. Tác giả iii MỤC LỤC Trang DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT..................................... vi DANH MỤC CÁC BẢNG ................................................................................. ix DANH MỤC CÁC HÌNH VẼ............................................................................. x MỞ ĐẦU .. 1 Chương T NG QUAN V AN TOÀN VÀ BẢO M T T ONG MẠNG T U N Ố LIỆU ĐA D CH VỤ .................................................... 8 . . Đặc điểm mạng truyền số liệu đa dịch vụ .................................................. 8 .2. An toàn và bảo mật trong mạng truyền số liệu đa dịch vụ ........................ 9 .2. . Một số khái niệm chung ................................................................... 9 .2.2. Các cơ chế an ninh dựa trên mật mã .............................................. 11 .2. . Vị trí đặt dịch vụ an ninh th o mô hình mạng phân tầng ............... 14 .2. . Ý ngh a của việc sử dụng mật mã trong bảo mật tại tầng IP ........ 15 .2.5. Bảo mật trong mạng truyền số liệu đa dịch vụ .............................. 18 .2. . Giao thức bảo mật cho mạng truyền số liệu đa dịch vụ ................. 22 . . Giao thức bảo mật IP c .......................................................................... 22 . . . Kiến trúc của IP c ........................................................................ 22 . .2. Modul thiết lập A ....................................................................... 24 . . . Giao thức E P ................................................................................ 24 . . . Giao thức AH ................................................................................. 25 . .5. Giao thức trao đổi khóa IKEv2 trong IP c ................................. 26 . . Hạn chế của giải pháp bảo mật hiện tại và đề xuất hướng giải quyết. ..... 27 1.4.1. Một số hạn chế của giải pháp bảo mật ........................................... 27 1.4.2. Đề xuất các nội dung nghiên cứu của luận án ................................ 28 .5. Giao thức trao đổi khóa Diffi -H llman kết hợp ECC ............................ 28 iv .5. . Đặt vấn đề ....................................................................................... 28 .5.2. Giao thức trao đổi khóa ECDH ...................................................... 31 . . Công nghệ để cứng hóa mật mã ............................................................... 34 1.7. Kết luận Chương ................................................................................... 35 Chương 2 N NG CAO HIỆU QUẢ TH C HIỆN PH P NH N ĐI M C A ECC CHO GIAO TH C T AO Đ I KH A ................................. 36 2.1. Phép nhân điểm trên đường cong lliptic ................................................ 36 2. . . Một số thuật toán nhân điểm lliptic trên trường GF(2n) ............... 36 2. .2. Thuật toán nhân điểm Elliptic dựa trên triển khai một số nguyên th o NAF tính toán trực tiếp ........................................................... 40 2.2. Xây dựng công thức tính số xung nhịp máy trung bình để cộng hai số nguyên khi thực hiện trên phần cứng .............................................. 43 2.2. . Cơ sở đề xuất .................................................................................. 43 2.2.2. Mạch cộng hai số nguyên và phân phối xác suất của đại lượng F(k) ....................................................................................... 43 2.2. . Kết quả tính toán số AAF(k) và AAF(k,M) .................................. 51 2.2. . ng dụng của kết quả..................................................................... 55 2. . Thực hiện thuật toán nhân điểm trên phần cứng FPGA .......................... 55 2. . . Phương pháp thiết kế chung ........................................................... 55 2. .2. Lựa chọn đường cong lliptic ........................................................ 56 2. . . Mô hình cứng hóa thuật toán nhân điểm ........................................ 56 2. . . Kết quả thực hiện ........................................................................... 71 2. . Kết luận Chương 2 ................................................................................... 74 Chương N NG CAO HIỆU QUẢ TH C HIỆN THU T TOÁN M H A DỮ LIỆU T ONG BẢO M T MẠNG T U N Ố LIỆU ......... 76 . . Cơ sở lý thuyết ......................................................................................... 76 . . . Các mã khối có cấu trúc PN ......................................................... 76 v . .2. Các tiêu chí đánh giá và xây dựng tầng tuyến tính hiệu quả, an toàn cho mã khối có cấu trúc PN .......................................................... 78 .2. Chuẩn mã hóa dữ liệu AE ...................................................................... 81 3.3. Đánh giá một số ma trận MDS trong các mã pháp dạng AE ............. 85 . . . Một số định ngh a ........................................................................... 85 . .2. Đánh giá một số ma trận MD sử dụng trong mã pháp dạng AE 87 . . Đề xuất ma trận MD mới để cải tiến tầng tuyến tính cho các mã pháp dạng AE ........................................................................................ 91 3.4.1. Đề xuất ma trận MD mới và đánh giá hiệu quả hoạt động .......... 92 3.4.2. Phân tích cài đặt các ma trận th o quan điểm phần mềm .............. 96 3.4.3. Điểm bất động của tầng tuyến tính th o ma trận đề xuất ............... 99 3.4.4. Kết quả cài đặt thực nghiệm trên FPGA ...................................... 100 . .5. Kết quả cài đặt AE chuẩn và AE với ma trận MD đề xuất ... 102 .5. Kết luận Chương ................................................................................. 103 KẾT LU N ..................................................................................................... 105 DANH MỤC CÁC CÔNG T ÌNH KHOA HỌC Đ CÔNG BỐ ................ 107 TÀI LIỆU THAM KHẢO ............................................................................... 108 vi E Ký hiệu đường cong elliptic O Điểm vô cực của đường cong lliptic G Một điểm trên E sinh ra một nhóm cyclic cấp N KA Khóa bí mật A KB Khóa bí mật B p ,GF(p) Ký hiệu cho trường hữu hạn chứa p phần tử với p là số nguyên tố #{(X,Y) Lực lượng của tập X, #(a) Lực lượng của a #(b) Lực lượng của b x1, y1 Tọa độ điểm P trên đường cong E x2, y2 Tọa độ điểm Q trên đường cong E x3, y3 Tọa độ điểm trên đường cong E Rank(A) Hạng của ma trận A ATM1 An toàn mạng ATM2 An toàn mạng 2 AES Chuẩn mã hóa dữ liệu mở rộng (Advanc d Encryption tandard) AH Giao thức tiêu đề xác thực (Authentication Header) ASIC Mạch tích hợp cho các ứng dụng đặc biệt (Application Specific Integrated Circuit) ATM Phương thức truyền tải không đồng bộ (Asynchronous Transfer Mode) DLP Bài toán logarith rời rạc (Discrete Logarithm Problem) DoS Tấn công từ chối dịch vụ (Denial of Service ) DDoS Tấn công từ chối dịch vụ phân tán (Distributed Denial of Service) DTLS Bảo mật gói dữ liệu tầng giao vận (Datagram Transport Layer Security) DH Diffie-Hellman (Elliptic Curve) DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT vii EC Đường cong lliptic ECADD Phép cộng hai điểm khác nhau (Elliptic Curve ADD) ECC Hệ mật Elliptic (Elliptic Curve Cryptosystem) ECDBL Phép nhân đôi (phép cộng hai điểm giống nhau - EC Double) ECDH Bài toán Diffie-Hellman trên Elliptic (Elliptic Curve Diffie- Hellman) ECDLP Bài toán logarith rời rạc trên đường cong lliptic (Elliptic Curve Discrete Logarithm Problem) ECDSA Thuật toán chữ ký số Elliptic (Elliptic Curve Digital Signature Algorithm) ESP Encapsulating Security Payload FPGA Mảng cổng lập trình dạng trường (Field Programmable Gate Array) GCD Tìm ước số chung lớn nhất (Gr at st Common Divisor) IP Giao thức liên mạng (Internet Protocol) IDPS Hệ thống phát hiện và ngăn chặn truy cập (Intrusion Detection Pevention System) IPSec Giao thức bảo mật (IP Security Protocol) IKE Trao đổi khóa (Internet Key Exchange) ISO Tổ chức Tiêu chuẩn quốc tế (International Organization for Standardization) MPLS Chuyển mạch nhãn đa giao thức (Multi Protocol Label Switching) MDS Phân tách có khoảng cách cực đại (Maximum Distance Separable) NAF Dạng không liền kề (Non Adjacent Form) LAN Mạng cục bộ (Local Area Network) LC Tế bào logic (Logic Cell) LE Phần tử logic (Logic Element) MPPE Mã hóa điểm tới điểm (Microsoft Point to Point Encryption) viii OSI Mô hình tương tác giữa các hệ thống mở (Open Systems Interconnection ) SPN Mạng thay thế - hoán vị (Substitution Permutation Network) RSA Thuật toán mã khóa công khai của iv st, hamir và Adl man VPN Mạng riêng ảo (Virtual Private Network) VHDL Ngôn ngữ mô tả phần cứng (Verilog Hardware Description Language) ix Bảng . . o sánh kích thước khóa A và ECC với cùng độ an toàn ......... 30 Bảng 2. . Kết quả thống kê 2 giá trị của k .................................................. 52 Bảng 2.2. o sánh kết quả cứng hóa phép nhân điểm trên FPGA .................. 72 Bảng . . Độ dài khóa của AE ...................................................................... 82 Bảng .2. Danh sách đa thức nguyên thủy bậc 8 trên 2 ........................... 94 Bảng . . o sánh cài đặt các ma trận MD x bằng phần mềm ................. 98 Bảng . . ố điểm bất động của một số ma trận đang xét ............................ 100 Bảng .5. Tài nguyên sử dụng đối với ma trận đề xuất Cir( , 9, , ) ..... 101 Bảng .6. Kết quả cài đặt trên phần cứng FPGA của Xilinx ........................ 101 Bảng .7. o sánh kết quả cài đặt trên FPGA ............................................... 103 Bảng A. Các thông số kỹ thuật của kít Zynq-7000 ........................................ 4 DANH MỤC CÁC BẢNG x Hình . . Cấu trúc mạng truyền số liệu đa dịch vụ ........................................... 9 Hình 1.2. So sánh OSI và TCP/IP ................................................................... 15 Hình . . Mô hình bảo mật tại tầng IP ............................................................ 16 Hình . . Mô hình bảo mật thông tin cho mạng đa dịch vụ ........................... 20 Hình 1.5. IPSec trong mô hình TCP/IP ........................................................... 23 Hình . . Mối quan hệ giữa IKE và IP c ...................................................... 24 Hình .7. Gói tin E P của IP c ..................................................................... 24 Hình .8. Thuật toán mã khối làm việc ở chế độ CBC ................................... 25 Hình 1.9. Gói tin AH ....................................................................................... 26 Hình 1.10. o sánh mức độ bảo mật giữa ECC với A/D A ...................... 30 Hình . . Quá trình trao đổi khóa th o giao thức ECDH ............................. 32 Hình 2. . Đồ thị các hàm AAF(k, 07) (k), AAF(k,107)+ (k), log2(k) và log2(k)+ trong khoảng [ , 09 ]. .................................................... 54 Hình 2.2. Mô hình phân lớp thiết kế trên kit phát triển ZC70 của Xilinx .... 55 Hình 2. . ơ đồ thực hiện cứng hóa phép nhân điểm lliptic. ........................ 57 Hình 2.4. Giao diện modul cứng hóa phép nhân điểm trên FPGA. ............. 57 Hình 2.5. ơ đồ thực hiện cứng hóa phép cộng điểm lliptic. ........................ 59 Hình 2. . Giao diện modul thực hiện phép cộng điểm lliptic trên FPGA. .. 59 Hình 2.7. ơ đồ thực hiện cứng hóa phép nhân đôi điểm lliptic. .................. 60 Hình 2.8. Giao diện modul thực hiện phép nhân đôi điểm lliptic trên FPGA. ............................................................................................... 61 Hình 2.9. ơ đồ cứng hóa phép nhân th o thuật toán nhân đan x n. .............. 64 Hình 2. 0. Giao diện modul thực hiện phép nhân điểm trên FPGA. ............ 64 Hình 2.11. ơ đồ thực hiện cứng hóa phép chia/nghịch đảo GF(2m). ............ 68 Hình 2.12. Giao diện modul thực hiện phép chia/nghịch đảo trên FPGA. ... 68 Hình 2.13. Ch n bit 0 thực hiện phép bình phương thông thường. ................ 69 DANH MỤC CÁC HÌNH VẼ xi Hình 2. . ơ đồ cứng hóa phép bình phương trên trường GF(2m). .............. 71 Hình 2. 5. Giao diện modul thực hiện phép bình phương GF(2m) trên FPGA. ............................................................................................. 71 Hình 2. . Kết quả mô phỏng phép nhân điểm th o thuật toán nhị phân ...... 72 Hình 2. 7. Kết quả mô phỏng nhân điểm th o thuật toán NAF thông thường ........................................................................................... ... g ở 2 chế độ: chế độ thông thường và chế độ số học động. Với cấu trúc đặc trưng như vậy, chip Zynq của XILINX có khả năng thực hiện các bộ logic cộng, trừ với tốc độ rất cao, phù hợp với mục đích thiết kế và cứng hóa thuật toán mật mã. 4 Bảng .1 ác thông số kỹ thuật của kít Zynq-7000 Bộ xử lý ARM cortex A9: Bộ xử lý A M Cort x A9 là bộ xử lý nhúng do hãng Xilinx chế tạo dựa trên công nghệ FPGA giống như một bộ vi điều khiển hoặc một máy tính trên chíp bao gồm CPU, các thiết bị ngoại vi và bộ nhớ trên một chíp đơn. Bộ xử lý A M Cort x A9 cung cấp: - Thiết lập chỉ thị 2 bít, đường dẫn dữ liệu và không gian địa chỉ. - 2 thanh ghi mục đích chung. - 2 nguồn ngắt ngoài. - Bộ nhân đơn 2x 2 và chia kết quả 2 bit - Truy cập tới những ngoại vi khác nhau trên chíp, giao diện với bộ nhớ và ngoại vi ngoài chíp. - Môi trường phát triển phần mềm dựa trên công cụ GNU C/C++. 5 multiply data out register instruction decode & control incrementer register bank address register barrel shifter A[31:0] D[31:0] data in register ALU control P C PC A L U b u s A b u s B b u s register Hình A.3 ô tả các khối chức năng của bộ xử lý R 6 Design Entry Synthesis Implementation Mapping Place & Route Generate Prpgram. File System specification RTL(VHDL, Verilog, Schematic) Synthesis constraints Implementation constraints (pads and Timming) Netlist (edit, propietary) Netlist (propietary) Bitstream Back annotation Program Tool Behavioural Simulation Design Verification Functional Simulation Post Implementation Simulation Timmimg Simulation In-circuit Testing Hình A.4 Mô tả các bước thiết kế trên FPG A.2 Mã nguồn VHDL thực hiện phép nh n i m ------------------------------------------------------------------ ------------------------------------------------------------------ -- Company: CCYBTTM -- Engineer: HOANG VAN QUAN -- -- Create Date: 14:13:19 03/06/2015 -- Design Name: -- Module Name: nhan_diem - Structureal -- Project Name: -- Target Devices: -- Tool versions: -- Description: -- -- Dependencies: -- -- Revision: -- Revision 0.01 - File Created -- Additional Comments: -- ------------------------------------------------------------ 7 ------------------------------------------------------------ library IEEE; use IEEE.STD_LOGIC_1164.ALL; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; use work.ecc_pkg.all; --Library UNISIM; --use UNISIM.vcomponents.all; entity nhan_diem is port ( xP, yP, k: in STD_LOGIC_VECTOR (282 downto 0); clk, reset, start: in std_logic; xQ, yQ: out STD_LOGIC_VECTOR (282 downto 0); done: out std_logic); end nhan_diem; architecture Structure of nhan_diem is signal p_Yp, p_Yp0 : std_logic_vector (282 downto 0); signal a, next_a, a_add_carry, a_add_carry_div2: std_logic_vector(282 downto 0); signal xP0, yP0, next_xQ, next_yQ, New_XP0,New_YP0,New_XQ,New_YQ,yp0_tp: std_logic_vector(282 downto 0); signal P_en, Q_en, ab_en, load, sel_1, start_addition, addition_done, start_double, double_done, Q_infinity, aEqual1, ce_carry: std_logic; signal sel_2: std_logic_vector(1 downto 0); signal carry : integer range -1 to 1; subtype states is natural range 0 to 18; signal TT: states; signal xQ_tmp, yQ_tmp : std_logic_vector(282 downto 0); begin with sel_1 select yp0_tp <= yP0 when '0', p_Yp0 when others; with sel_2 select next_yQ <= New_YQ when "00", yP0 when "01", p_Yp0 when others; with sel_2 select next_xQ <= New_XQ when "00", xP0 when others; cong_diem: add_point port map( x1 => xP0, y1 => yp0_tp, x2 => xQ_tmp, y2 => yQ_tmp, clk => clk, reset => reset, start => start_addition, x3 => New_XQ, y3 => New_YQ, done => addition_done); nhan_doi: point_double port map( x1 => xP0, y1 => yP0, clk => clk, reset => reset, start => start_double, x3 => New_XP0, y3 => New_YP0, done => double_done); register_P: process(clk) 8 begin if clk' event and clk = '1' then if reset = '1' then xP0 '0'); yP0 '0'); elsif load = '1' then xP0 <= xP; yP0 <= yP; elsif P_en = '1' then xP0 <= New_XP0; yP0 <= New_YP0; end if; end if; end process; register_Q: process(clk) begin if clk' event and clk = '1' then if reset = '1' then xQ_tmp '0'); yQ_tmp '0'); elsif load = '1' then Q_infinity <= '1'; elsif Q_en = '1' then xQ_tmp <= next_xQ; yQ_tmp <= next_yQ; Q_infinity <= '0'; end if; end if; end process; a_add_carry <= a + carry; divide_by_2: for i in 0 to 283 generate a_add_carry_div2(i) <= a_add_carry(i+1); end generate; a_add_carry_div2(283) <= a_add_carry(283); next_a <= a_add_carry_div2; register_ab: process(clk) begin if clk' event and clk = '1' then if load = '1' then a <= ('0'&k); elsif ab_en = '1' then a <= next_a; end if; end if; end process; aEqual1 <= '1' when a = 1 else '0'; control_unit: process(clk, reset, TT, addition_done, aEqual1, Q_infinity, carry) begin case TT is when 0 => sel_1 <= '0'; sel_2 <= "00"; load <= '0'; P_en <= '0'; Q_en <= '0'; ab_en <= '0'; start_addition <= '0'; done <= '0'; start_double <= '0'; when 1 => sel_1 <= '0'; sel_2 <= "00"; load <= '1'; P_en <= '0'; Q_en <= '0'; ab_en <= '0'; start_addition <= '0'; done <= '0'; start_double <= '0'; 9 when 2 => sel_1 <= '0'; sel_2 <= "00"; load <= '0'; P_en <= '0'; Q_en <= '0'; ab_en <= '0'; start_addition <= '0'; done <= '0'; start_double <= '0'; when 3 => sel_1 <= '0'; sel_2 <= "00"; load <= '0'; P_en <= '0'; Q_en <= '0'; ab_en <= '1'; start_addition <= '0'; done <= '0'; start_double <= '1'; when 4 => sel_1 <= '0'; sel_2 <= "00"; load <= '0'; P_en <= '0'; Q_en <= '0'; ab_en <= '0'; start_addition <= '0'; done <= '0'; start_double <= '1'; when 5 => sel_1 <= '0'; sel_2 <= "00"; load <= '0'; P_en <= '1'; Q_en <= '0'; ab_en <= '0'; start_addition <= '0'; done <= '0'; start_double <= '1'; when 6 => sel_1 <= '0'; sel_2 <= "01"; load <= '0'; P_en <= '0'; Q_en <= '1'; ab_en <= '0'; start_addition <= '0'; done <= '0'; start_double <= '0'; when 7 => sel_1 <= '0'; sel_2 <= "00"; load <= '0'; P_en <= '0'; Q_en <= '1'; ab_en <= '0'; start_addition <= '1'; done <= '0'; start_double <= '0'; when 8 => sel_1 <= '0'; sel_2 <= "00"; load <= '0'; P_en <= '0'; Q_en <= '0'; ab_en <= '0'; start_addition <= '1'; done <= '0'; start_double <= '0'; when 9 => sel_1 <= '0'; sel_2 <= "00"; load <= '0'; P_en <= '0'; Q_en <= '0'; ab_en <= '0'; start_addition <= '1'; done <= '0'; start_double <= '0'; when 10 => sel_1 <= '0'; sel_2 <= "11"; load <= '0'; P_en <= '1'; Q_en <= '0'; ab_en <= '1'; start_addition <= '0'; done <= '0'; start_double <= '0'; when 11 => sel_1 <= '1'; sel_2 <= "00"; load <= '1'; P_en <= '0'; Q_en <= '0'; ab_en <= '0'; start_addition <= '1'; done <= '0'; start_double <= '1'; when 12 => sel_1 <= '1'; sel_2 <= "00"; load <= '0'; P_en <= '0'; Q_en <= '0'; ab_en <= '0'; start_addition <= '1'; done <= '0'; start_double <= '0'; when 13 => sel_1 <= '1'; sel_2 <= "00"; load <= '0'; P_en <= '1'; Q_en <= '1'; ab_en <= '0'; start_addition <= '1'; done <= '0'; start_double <= '0'; when 14 => sel_1 <= '0'; sel_2 <= "00"; load <= '0'; P_en <= '0'; Q_en <= '0'; ab_en <= '0'; start_addition <= '1'; done <= '0'; start_double <= '0'; when 15 => sel_1 <= '0'; sel_2 <= "00"; load <= '0'; P_en <= '0'; Q_en <= '0'; ab_en <= '0'; start_addition <= '1'; done <= '0'; start_double <= '0'; when 16 => sel_1 <= '0'; sel_2 <= "00"; load <= '0'; P_en <= '0'; Q_en <= '1'; ab_en <= '0'; start_addition <= '1'; done <= '0'; start_double <= '0'; when 17 => sel_1 <= '0'; sel_2 <= "01"; load <= '0'; P_en <= '0'; Q_en <= '1'; ab_en <= '0'; start_addition <= '0'; done <= '0'; start_double <= '0'; when 18 => sel_1 <= '0'; sel_2 <= "00"; load <= '0'; P_en <= '0'; Q_en <= '0'; ab_en <= '0'; start_addition <= '0'; done <= '1'; start_double <= '0'; 10 end case; if reset = '1' then TT <= 0; elsif clk'event and clk = '1' then case TT is when 0 => if start = '1' then TT <= 1; end if; when 1 => TT <= 2; when 2 => if ((aEqual1 = '1') and (Q_infinity = '0')) then TT <= 14; elsif ((aEqual1 = '1') and (Q_infinity = '1')) then TT <= 17; elsif (a(0) = '0') then TT <= 3; elsif ((a(1) = '0') and (Q_infinity = '0')) then TT <= 6; elsif ((a(1) = '1') and (Q_infinity = '0')) then TT <= 7; elsif ((a(1) = '1') and (Q_infinity = '1')) then TT <= 10; else TT <= 11; end if; when 3 => TT <= 4; when 4 => if (double_done = '1') then TT <= 5; end if; when 5 => TT <= 2; when 6 => TT <= 3; when 7 => TT <= 8; when 8 => if (addition_done = '1') then TT <= 9; end if; when 9 => TT <= 3; when 10 => TT <= 3; when 11 => TT <= 12; when 12 => if (addition_done = '1') then TT <= 13; end if; when 13 => TT <= 3 ; when 14 => TT <= 15; when 15 => if (addition_done = '1') then TT <= 16; end if; when 16 => TT <= 18; when 17 => TT <= 18; when 18 => if (start = '0') then TT <= 0; end if; end case; end if; end process; xQ <= xQ_tmp; yQ <= yQ_tmp; end Structure; 11 A.3. Chương tr nh iều khi n core mật mã nh n i m elliptic Như đã trình bày trong luận án về thực hiện cứng hóa mật mã elliptic. Chúng ta thấy rằng lõi mật mã elliptic được thiết kế cứng hóa với các cổng dữ liệu vào/ra, cổng điều khiển, cổng trạng thái. Cổng dữ liệu vào gồm: giá trị ngẫu nhiên k- 28 bit được đọc vào từ bộ sinh số ngẫu nhiên từ nguồn nhi u vật lý trên board, tham số bí mật cho mật mã lliptic (xP, yP) 283 bit. Cổng tín hiệu điều khiển start-1 bit, reset- bit, xung nhịp đồng bộ clk, cổng tín hiệu trạng thái done- bit. Cổng dữ liệu ra: tham số mật mã lliptic sau khi đã tính toán xong (xQ, yQ) 283 bit. Do bộ xử lý ARM 32 bit để thực hiện điều khiển, đọc/ghi dữ liệu cho lõi mật mã lliptic ta cần thực hiện các nội dung sau: - Thiết kế bus hệ thống kết nối lõi mật mã lliptic với A M cort x A9. - Thiết kế chương trình điều khiển quá trình đọc/ghi dữ liệu vào/ra trên lõi mật mã lliptic. - Thiết kế chương trình thực hiện tính toán trao đổi khóa ECDH. K(282:0) Xp(282:0) Yp(282:0) reset Xq(282:0) Yp(282:0) clk start done Nhân đi m ình .5 Lõi cứng hóa mật m elli tic thực hiện trên FPGA A.3.1 Thiết kế us hệ thống kết nối lõi mật mã và ARM cort x A9 Bus hệ thống dùng để kết nối lõi mật mã lliptic và A M cort x A9 bao gồm các khối sau: bus dữ liệu, khối giải mã địa chỉ, các thanh ghi dữ liệu vào/ra. Hệ thống bus này thiết kế để đảm bảo tương thích quá trình đọc/ghi dữ 12 liệu giữa lõi mật mã Elliptic (với các c ng dữ liệu vào/ra 283 bit) và A M cortex A9 2bit. Quá trình đọc/ghi một khối dữ liệu 28 bit vào lõi ECC như sau: Bước 1: A M ghi tín hiệu địa chỉ chọn thanh ghi (00... 08) tại port 0 . Bước 2: Bộ giải mã tín hiệu địa chỉ nhận địa chỉ --> giải mã --> chọn thanh ghi được ghi dữ liệu. Bước 3: A M ghi dữ liệu ra port 02 chuyển ra bus dữ liệu, dữ liệu này được chốt vào thanh ghi đã chọn (địa chỉ). Bước 4: Lặp lại quá trình từ bước đến đối với 9 khối dữ liệu 2 bit tiếp th o. Bước 5: au khi xuất đủ 288 bit ra 09 thanh ghi 2 bit, thực hiện chốt 28 bit dữ liệu cần nạp vào lõi mật mã Elliptic (thanh ghi 08 d ng 27 bit c n l i b 5 bit). Bước 6: Lúc này đã nạp đủ dữ liệu cho một cổng 28 bit trên lõi mật mã Elliptic. Lặp lại quá trình từ bước đến bước 5 cho các cổng khác của lõi mật mã. A.3.2. Chương tr nh ph n mềm iều khi n quá tr nh ọc/ghi dữ liệu trên lõi mật mã lliptic. Với thiết kế như trên, phần mềm điều khiển hoạt động của lõi mật mã Elliptic thực hiện 0 điều khiển quá trình cơ bản gồm có: điều khiển các tín hiệu điều khiển, điều khiển quá trình ghi dữ liệu đầu vào (tham số XP, tham số YP và hệ số nhân K) và điều khiển quá trình đọc/ghi dữ liệu vào/ra. Để xử lý 13 . Data (32 bit) Thanh ghi 08 (32 bit) Thanh ghi 07 (32 bit) Thanh ghi 01 (32 bit) Thanh ghi 00 (32 bit) Address (32 bit) Gi i mã đ a ch 27 bit 32 bit 32 bit 32 bit 32 bit Thanh ghi data_in (283 bit) Core M t mã Elliptic Q=k.P ARM cortex A9 Port 01 Port 02 ình .6 Bus hệ thống nối lõi mật m elli tic và R cortec A9 mỗi quá trình nêu trên, luận án xây dựng hàm điều khiển tương ứng gồm có: - void ECC_Start(XGpio *control, u8 mode) o Chức năng i u khi n bắt đầu và dừng ho t động của lõi mật mã Elliptic. o Tham số:-> control ịa chỉ c ng địa chỉ -> mode Lựa chọn ngừng ho t động lõi hay bắt đầu ho t động - void ECC_WriteData(XGpio *nonci, XGpio *control, u32* data, u8 type) o Chức năng Thực hiện quá trình ghi dữ liệu đầu vào vào các thanh ghi dữ liệu đầu vào của lõi mật mã Elliptic. 14 o Tham số:-> nonci ịa chỉ c ng dữ liệu -> control ịa chỉ c ng địa chỉ -> data ịa chỉ của dữ liệu muốn ghi vào -> type Lo i dữ liệu đầu vào - void ECC_ReadData(XGpio *resci, XGpio *control, u32 *data, u8 type) o Chức năng Thực hiện quá trình đọc dữ liệu đầu ra gồm có XQ và YQ. o Tham số:-> resci ịa chỉ c ng dữ liệu -> control ịa chỉ c ng địa chỉ -> data ịa chỉ chứa dữ liệu ra -> type Lo i dữ liệu đầu ra Start Ghi: K Ghi: Xp Ghi: Yp Tính K.P Đã tính xong? Đọc: Xq Đọc: Yq Kết thúc ình .7 Lưu đồ thuật toán chương trình đi u khi n lõi Ngoài các hàm điều khiển trên, phần mềm còn đọc dữ liệu trên cổng trạng thái status, để xác định được quá trình tính toán trên lõi lliptic đã hoàn 15 thành chưa. Nếu giá trị của bít thứ ba của cổng status là thì có ngh a là quá trình tính toán đã hoàn thành, ngược lại nếu giá trị 0 có ngh a là việc thực hiện phép tính chưa kết thúc. Dựa trên các hàm điều khiển cơ bản trên, cùng với thiết kế lõi đặc tả lõi mật mã lliptic, quá trình điều khiển lõi được thực hiện th o lưu đồ thuật toán được trình bày như Hình A7 Kết quả tính toán phép nhân điểm trên FPGA sẽ được đưa đến các thành phần để thực hiện giao thức trao đổi khóa ECDH, ECHQMV, thuật toán chữ ký số ECD A, GO T . 0-20 2
File đính kèm:
- luan_an_nghien_cuu_giai_phap_nang_cao_hieu_qua_bao_mat_thong.pdf