intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Nghiên cứu xây dựng kiến trúc hệ mật IDEA trên FPGA

Chia sẻ: Thi Thi | Ngày: | Loại File: PDF | Số trang:8

70
lượt xem
5
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Trong bài báo này, xin trình bày một giải pháp thực hiện hệ mật IDEA xây dựng trên chip FPGA Spartan6, so sánh với các kiến trúc thực hiện trên các phần cứng khác đã được công bố trên thế giới và đưa ra những kết luận quan trọng để có thể ứng dụng kiến trúc này trong thực tế. Mục tiêu bài báo tập trung vào hướng ứng dụng kỹ thuật điện tử hiện đại, nền công nghệ và nguồn linh kiện trong nước để sử dụng phần cứng thực thi một trong những bài toán mã hóa, làm cơ sở nghiên cứu tiếp theo.

Chủ đề:
Lưu

Nội dung Text: Nghiên cứu xây dựng kiến trúc hệ mật IDEA trên FPGA

Kỹ thuật điện tử<br /> <br /> NGHIÊN CỨU XÂY DỰNG KIẾN TRÚC HỆ MẬT<br /> IDEA TRÊN FPGA<br /> <br /> Phạm Thành Công1*, Nguyễn Ngọc Thái1,<br /> Phùng Thị Thu Phương1, Bùi Văn Tuân2<br /> <br /> Tóm tắt: IDEA là một thuật toán mã hóa khối lặp đi lặp lại với dữ liệu có chiều<br /> dài 64-bit bằng khóa có chiều dài 128-bit. IDEA kết hợp nhiều yếu tố để tăng độ an<br /> toàn và khả năng thực hiện. Từ khi được công bố đến nay, thuật toán này luôn là đối<br /> tượng nghiên cứu của các nhà phân tích, thám mã và tính đến thời điểm hiện tại,<br /> không ai có thể khẳng định độ chắc chắn của mã cũng như sự thành công của quá<br /> trình tấn công thám mã. Quá trình mã hóa qua tám vòng có cấu trúc phức tạp. Giải<br /> mã được thực hiện theo cách thức giống như mã hóa một lần với khóa giải mã được<br /> tính toán từ những khóa mã.<br /> Việc hiện thực hóa cấu trúc IDEA trên phần cứng đáp ứng được cho các ứng<br /> dụng yêu cầu thông lượng cao đang là một trong những lĩnh vực được tích cực<br /> nghiên cứu ở nhiều cơ sở nghiên cứu khoa học lớn trên thế giới. Trong bài báo này,<br /> chúng tôi xin trình bày một giải pháp thực hiện hệ mật IDEA xây dựng trên chip<br /> FPGA Spartan6, so sánh với các kiến trúc thực hiện trên các phần cứng khác đã<br /> được công bố trên thế giới và đưa ra những kết luận quan trọng để có thể ứng dụng<br /> kiến trúc này trong thực tế.Mục tiêu bài báo tập trung vào hướng ứng dụng kỹ thuật<br /> điện tử hiện đại, nền công nghệ và nguồn linh kiện trong nước để sử dụng phần cứng<br /> thực thi một trong những bài toán mã hóa, làm cơ sở nghiên cứu tiếp theo.<br /> Từ khóa: Mã hóa, IDEA, FPGA Spartan6.<br /> <br /> 1. ĐẶT VẤN ĐỀ<br /> Trong nội dung bài báo này, ta nghiên cứu kiến trúc của hệ mật IDEA, phân tích<br /> các thành phần và đưa ra các giải pháp thực thi trên phần cứng. Cấu trúc của hệ<br /> mật IDEA như sau: Các vòng trong thuật toán IDEA sử dụng 3 phép toán chính:<br /> <br /> <br /> <br /> <br /> Hình 1. Kiến trúc PIPELINE cho 1 vòng mã hóa.<br /> <br /> <br /> <br /> 266 P.T.Công, N.N.Thái, P.T.T.Phương, B.V.Tuân, “Nghiên cứu xây dựng … trên FPGA.”<br /> Thông tin khoa học công nghệ<br /> <br /> <br /> Phép XOR theo bit ký hiệu là<br /> Phép cộng hai số nguyên lấy modulo 2^16(65536) với đầu vào và các đầu ra là<br /> số nguyên không dấu 16 bít ký hiệu là<br /> Phép nhân hai số nguyên lấy modulo 2^16+1 với đầu vào và các đầu ra là số<br /> nguyên không dấu 16 bít ký hiệu là<br /> Các phép toán này đều thỏa mãn các tính chất sau:<br /> Không có 2 phép toán nào thỏa mãn luật phân phối:<br /> a ( b c ) ≠ (a b) (b c)<br /> Không có 2 phép toán nào thỏa mãn luật kết hợp<br /> a ( b c ) ≠ (a b) c<br /> Sử dụng 3 phép toán này tạo nên sự biến đổi phức tạp từ dữ liệu đầu vào làm<br /> cho việc thăm dò, thống kê, thám mã trở nên khó khăn so với việc chỉ sử dụng 1<br /> phép toán đơn lẻ.<br /> IDEA sử dụng khóa 128 bit(có độ dài gấp đôi kích thước khóa của mã DES) vì<br /> vậy, nó có khả năng chống các cuộc tấn công tốt hơn DES rất nhiều. IDEA sử<br /> dụng phép toán đại số hoàn toàn và như vậy tránh được việc sử dụng bất kỳ các<br /> bảng tra cứu hoặc S-boxes. Điểm mấu chốt tạo nên sức mạnh của IDEA chính là<br /> các phép toán nhân modulo của nó.<br /> Các bước thực hiện mã hóa IDEA như sau: Bản tin 64-bit được chia thành 4<br /> phần (mỗi phần có kích thước 16 bit), ký hiệu là P1 đến P4. Như vậy, P1 đến P4 là<br /> đầu vào cho các vòng đầu tiên của thuật toán, có 8 vòng như vậy. Trong mỗi vòng,<br /> có 6 khóa nhỏ (mỗi khóa nhỏ có kích thước 16 bit) đều được tạo ra từ khóa nguồn<br /> 128 bit ban đầu. Những khóa nhỏ được áp dụng cho 4 khối đầu vào P1 đến P4.<br /> Như vậy, cho vòng 1 có 6 khóa nhỏ từ K1 đến K6.<br /> <br /> <br /> <br /> <br /> Hình 2. Cấu trúc một vòng mã hóa sử dụng các khóa nhỏ<br /> (Các khóa được kí hiệu dưới dạng toán tử).<br /> Cho vòng 2, có các khóa K7 đến K12. Cuối cùng, chúng ta sẽ sử dụng những<br /> khoá từ K43 đến K48. Bước cuối cùng bao gồm một bộ chuyển đổi đầu ra sử dụng<br /> 4 khóa nhỏ. Vấn đề đặt ra là phải nhúng được toàn bộ cấu trúc phức tạp này vào<br /> một phần cứng để có thể đáp ứng được những dịch vụ có thông lượng cao. Trên<br /> <br /> <br /> <br /> Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san Viện Điện tử, 10 - 2015 267<br /> Kỹ thuật điện tử<br /> <br /> thế giới đã có nhiều nghiên cứu ứng dụng, thực hiện bài toán này trên nhiều hệ<br /> phần cứng và cho ra rất nhiều kết quả xuất sắc. Nội dung nghiên cứu của chúng tôi<br /> là thực thi bài toán này với phần cứng tự thiết kế chế tạo để minh chứng khả năng<br /> thực hiện với điều kiện trong nước. Tức là, nội dung tập trung nghiên cứu ở đây trình<br /> bày nhằm đưa ra giải pháp phù hợp giữa kỹ thuật, công nghệ và kinh phí với những<br /> yêu cầu cụ thể để đáp ứng một dịch vụ sử dụng hệ mật thông lượng cao.<br /> <br /> <br /> <br /> <br /> Hình 3. Cấu trúc hệ mã hóa IDEA.<br /> 2. BÀI TOÁN VÀ ĐIỂM MẤU CHỐT TÁC ĐỘNG TỚI THÔNG LƯỢNG<br /> Ở đây chúng ta tiếp tục phân tách các bước trong việc thực hiện các vòng mã và<br /> giải mã thành các kiến trúc nhỏ để thực hiện trên các lõi core và làm cơ sở để kiến<br /> trúc phần cứng FPGA, từ đó đưa ra điểm mấu chốt trong kiến trúc phần cứng ảnh<br /> hưởng đến thông lượng của thiết bị sau khi được xây dựng.<br /> 6 khóa nhỏ ban đầu K1 đến K6 được tạo ra từ khóa 128 bit ban đầu. Kể từ khi<br /> khóa nhỏ gồm 16 bit mỗi, trên 128 bit ban đầu, 96 bit đầu tiên được sử dụng cho<br /> các vòng đầu tiên. Như vậy, ở cuối của vòng đầu tiên, bit 97-128 của khóa nguồn<br /> không được dùng. Tại vòng hai, 32 bit chưa sử dụng của vòng đầu tiên được sử<br /> dụng. Để tạo ra các phần còn lại của khóa nhỏ cho vòng thứ hai, bắt buộc phải sử<br /> dụng hơn 64 bit. Điều này đạt được bằng cách thay đổi các khóa ban đầu còn tròn<br /> 25 bit. Còn lại, khóa điều chỉnh - khóa biến đổi đầu ra sử dụng để tạo ra các phần<br /> còn lại của 4 khóa con tương tụ như cách như các khóa tròn đầu tiên được tạo ra.<br /> <br /> KHÓA NGUỒN<br /> <br /> <br /> <br /> <br /> K1(bits1- K2(bits17- K6(bits81- CD(bits97-<br /> 16) 32) 96) 128)<br /> <br /> <br /> Hình 4. Phân tách khóa nguồn thành các khóa con.<br /> <br /> <br /> 268 P.T.Công, N.N.Thái, P.T.T.Phương, B.V.Tuân, “Nghiên cứu xây dựng … trên FPGA.”<br /> Thông tin khoa học công nghệ<br /> <br /> Trong mỗi vòng của 8 vòng thuật toán, các chuỗi sự kiện sau được thực hiện:<br /> 1. Nhân * P1 và K1<br /> 2. Cộng * P2 và K2<br /> 3. Cộng * P3 và K3<br /> 4. Nhân * P4 và K4<br /> 5. XOR kết quả của bước 1 và bước 3<br /> 6. XOR kết quả của bước 2 và bước 4<br /> 7. Nhân * kết quả của bước 5 với K5<br /> 8. Cộng * kết quả của bước 6 và bước 7<br /> 9. Nhân * kết quả của bước 8 với K6<br /> 10.Cộng * kết quả của bước 7 và bước 9<br /> 11. XOR kết quả của bước 1 và bước 9<br /> 12. XOR các kết quả ở bước 3 và bước 9<br /> 13. XOR kết quả của bước 2 và bước 10<br /> 14. XOR kết quả của bước 4 và bước 10<br /> Chuỗi các sự kiện tiếp theo trong bước biến đổi đầu ra:<br /> 1. Hợp * R1 và K1<br /> 2. Thêm * R2 và K2<br /> 3. Thêm * R3 và K3<br /> 4. Hợp * R4 và K4 Hình 5. Các chi tiết của mỗi vòng.<br /> Như vậy, ở đây ta thấy rằng, quá trình mã và giải mã đều trải qua nhiều vòng<br /> với cấu trúc tuy lặp lại nhưng lại rất tốn thời gian thực hiện, và chính điều này đã<br /> dẫn tới làm giảm thông lượng đường truyền khi thực hiện trên các hệ vi xử lý<br /> thông thường. Toàn bộ hệ mật thuật toán đều rất rõ ràng và căn bản, tức là ko thể<br /> tìm ra những giải thuật về mặt lập trình phần cứng để tăng tốc độ tính toán, như<br /> vậy, mấu chốt ở đây là lựa chọn phần cứng để nhúng toàn bộ cấu trúc này vào.<br /> 3. KẾT QUẢ THỰC HIỆN<br /> Trong phần nghiên cứu này, nhóm thiết kế và chế tạo phần cứng sử dụng phần<br /> mềm thiết kế mạch Altium Designer, phần mềm lập trình ISE của Xilinx và phần<br /> mềm theo dõi và giả lập đường truyền tự viết trên ngôn ngữ C++ chạy trên nền<br /> Window với máy tính thông thường. Trung tâm tính toán lựa chọn Chip Spartan 6<br /> để thực hiện, toàn bộ phần truyền thông được truyền tải trên giao diện Ethernet với<br /> phương án thử nghiệm như sau:<br /> <br /> <br /> <br /> Thiết Thiết<br /> bị 1 bị 2<br /> Máy tính Máy tính<br /> 1 2<br /> Ethernet Ethernet Ethernet<br /> Hình 6. Phương án thử nghiệm đánh giá.<br /> <br /> <br /> Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san Viện Điện tử, 10 - 2015 269<br /> Kỹ thuật điện tử<br /> <br /> Phương án thử nghiệm đánh giá là sử dụng hai máy tính thông thường chạy một<br /> ứng dụng trao đổi thông tin trên đường ethernet. Ở giữa hai máy tính là hai thiết bị<br /> mã và giải mã IDEA. Quá trình truyền thông sử dụng kết quả thu nhận trên phần<br /> mềm để lưu lại thông lượng của đường truyền làm cơ sở đánh giá kết quả thiết kế.<br /> Các thiết kế phần cứng cụ thể như sau:<br /> 3V3<br /> <br /> U1B<br /> R1 105 A13<br /> IO_L1P_1 U1A<br /> U1C 10K<br /> 70 CCLK 104 A14 144 HSW 10K R2<br /> IO_L1P_CCLK_2 IO_L1N_VREF_1 IO_L1P_HSWAPEN_0<br /> 143 A7<br /> 69 M0 R3 4K7 102 D3 IO_L1N_VREF_0<br /> IO_L1N_M0_CMPMISO_2<br /> 67 PC18<br /> 3V3<br /> R4 IO_L32P_1 142 A8<br /> IO_L2P_CMPCLK_2 101 D2 IO_L2P_0<br /> 66 PC17 10K IO_L32N_1 141 A9 GND<br /> IO_L2N_CMPMOSI_2 100 PB19 IO_L2N_0<br /> IO_L3P_D0_DIN_MISO_MISO1_2<br /> 65 MISO IO_L33P_1 140 OE<br /> 64 MOSI 99 PB18 IO_L3P_0<br /> BANK 1<br /> IO_L33N_1<br /> BANK 2<br /> <br /> <br /> <br /> <br /> IO_L3N_MOSI_CSI_B_MISO0_2 139 D6<br /> <br /> <br /> <br /> <br /> BANK 0<br /> 62 PC16 98 PB17 IO_L3N_0<br /> IO_L12P_D1_MISO2_2<br /> 61 PC15 GND IO_L34P_1 138 D7<br /> IO_L12N_D2_MISO3_2 97 PB16 IO_L4P_0<br /> 60 M1 R5 4K7 IO_L34N_1 137 A4<br /> IO_L13P_M1_2 GND 95 PB15 IO_L4N_0<br /> 59 PC14 IO_L40P_GCLK11_1 134 A3<br /> IO_L13N_D10_2 IO_L34P_GCLK19_0<br /> 58 PC13 94 PB14 133 A2<br /> IO_L14P_D11_2<br /> 57 PC12 IO_L40N_GCLK10_1 IO_L34N_GCLK18_0<br /> 132 A1<br /> IO_L14N_D12_2 93 PB13 IO_L35P_GCLK17_0<br /> 56 PC11 IO_L41P_GCLK9_IRDY1_1 131 A0<br /> IO_L30P_GCLK1_D13_2<br /> 55 PC10 92 PB12 IO_L35N_GCLK16_0<br /> IO_L30N_GCLK0_USERCCLK_2 IO_L41N_GCLK8_1 127 CE1<br /> 51 PC9 88 PB11 IO_L36P_GCLK15_0<br /> IO_L31P_GCLK31_D14_2<br /> 50 CLK50M IO_L42P_GCLK7_1 126 WE<br /> IO_L31N_GCLK30_D15_2 87 PB10 IO_L36N_GCLK14_0<br /> 48 PC7 IO_L42N_GCLK6_TRDY1_1 IO_L37P_GCLK13_0<br /> 124 CE2<br /> IO_L48P_D7_2<br /> 47 PC6<br /> 85 PB9 123 A19<br /> IO_L48N_RDWR_B_VREF_2 IO_L43P_GCLK5_1 IO_L37N_GCLK12_0<br /> 46 PC5 84 PB8 121 A18<br /> IO_L49P_D3_2 IO_L43N_GCLK4_1 IO_L62P_0<br /> IO_L49N_D4_2<br /> 45 PC4 3V3 83 PB7 120 A17<br /> 44 PC3 IO_L45P_1 IO_L62N_VREF_0<br /> IO_L62P_D5_2 82 PB6 119 A16<br /> IO_L62N_D6_2<br /> 43 PC2 IO_L45N_1 IO_L63P_SCP7_0<br /> 118 A15<br /> 41 PC1 R6 81 PB5 IO_L63N_SCP6_0<br /> IO_L64P_D8_2 IO_L46P_1 117 D0<br /> IO_L64N_D9_2<br /> 40 PC0 10K 80 PB4 IO_L64P_SCP5_0<br /> 39 INIT_B IO_L46N_1 116 D1<br /> IO_L65P_INIT_B_2 79 PB3 IO_L64N_SCP4_0<br /> 38 CSO_B IO_L47P_1 115 A20<br /> IO_L65N_CSO_B_2 78 PB2 IO_L65P_SCP3_0<br /> IO_L47N_1 IO_L65N_SCP2_0<br /> 114 A10<br /> XC6SLX9-3TQG144C C1 75 PB1 112 A11<br /> 10uF IO_L74P_AWAKE_1 IO_L66P_SCP1_0<br /> 74 PB0 111 A12<br /> R7 IO_L74N_DOUT_BUSY_1 IO_L66N_SCP0_0<br /> 10K<br /> XC6SLX9-3TQG144C XC6SLX9-3TQG144C<br /> <br /> 3V3<br /> GND<br /> <br /> <br /> <br /> <br /> Hình 7. Sơ đồ nguyên lý những khối chính trong mạch xử lý trung tâm.<br /> Trong phần này chỉ mô tả sơ bộ thiết kế, trọng tâm chủ yếu là kết quả đạt được<br /> so sánh với các kiến trúc tương đương đã được thực hiện. Kết quả có thể chưa đạt<br /> được những thông số xuất sắc, nhưng là cơ sở để khẳng định khả năng thực thi các<br /> bài toán tương tự.<br /> 2<br /> 1<br /> 80<br /> <br /> <br /> <br /> 79<br /> <br /> <br /> <br /> <br /> 1<br /> <br /> <br /> <br /> 2<br /> 1<br /> 2<br /> <br /> <br /> <br /> <br /> 5<br /> <br /> <br /> <br /> <br /> 4<br /> 6<br /> <br /> <br /> <br /> <br /> 3<br /> 78<br /> <br /> <br /> <br /> 77<br /> <br /> <br /> <br /> <br /> 3<br /> <br /> <br /> <br /> 4<br /> 4<br /> 7<br /> <br /> <br /> <br /> <br /> 2<br /> <br /> <br /> <br /> <br /> 1<br /> <br /> <br /> <br /> <br /> 2<br /> <br /> <br /> <br /> <br /> 2<br /> 76<br /> <br /> <br /> <br /> 75<br /> <br /> <br /> <br /> <br /> 5<br /> <br /> <br /> <br /> 6<br /> 8<br /> <br /> <br /> <br /> <br /> 1<br /> <br /> <br /> <br /> <br /> 2<br /> <br /> <br /> <br /> <br /> 1<br /> <br /> <br /> <br /> <br /> 1<br /> 74<br /> <br /> <br /> <br /> 73<br /> <br /> <br /> <br /> <br /> 7<br /> <br /> <br /> <br /> 8<br /> 1<br /> <br /> <br /> <br /> <br /> 4<br /> <br /> <br /> <br /> <br /> 2<br /> 72<br /> <br /> <br /> <br /> 71<br /> <br /> <br /> <br /> <br /> 10<br /> 9<br /> 1<br /> <br /> <br /> <br /> 2<br /> <br /> <br /> <br /> 3<br /> 1<br /> 70<br /> <br /> <br /> <br /> 69<br /> <br /> <br /> <br /> <br /> 11<br /> <br /> <br /> <br /> 12<br /> 68<br /> <br /> <br /> <br /> 67<br /> <br /> <br /> <br /> <br /> 13<br /> <br /> <br /> <br /> 14<br /> 2<br /> <br /> <br /> <br /> <br /> 3<br /> 1<br /> <br /> <br /> <br /> <br /> 1<br /> <br /> <br /> <br /> <br /> 2<br /> <br /> <br /> <br /> <br /> 2<br /> <br /> <br /> <br /> <br /> 2<br /> 1<br /> <br /> <br /> <br /> <br /> 1<br /> <br /> <br /> <br /> <br /> 1<br /> 66<br /> <br /> <br /> <br /> 65<br /> <br /> <br /> <br /> <br /> 15<br /> <br /> <br /> <br /> 16<br /> 1<br /> <br /> <br /> <br /> <br /> 1<br /> <br /> <br /> <br /> <br /> 1<br /> 2<br /> <br /> <br /> <br /> <br /> 2<br /> <br /> <br /> <br /> <br /> 1<br /> <br /> <br /> <br /> <br /> 1<br /> <br /> <br /> <br /> <br /> 1<br /> 2<br /> <br /> <br /> <br /> <br /> 2<br /> <br /> <br /> <br /> <br /> 2<br /> <br /> <br /> <br /> <br /> 2<br /> 1<br /> <br /> <br /> <br /> <br /> 2<br /> <br /> <br /> <br /> <br /> 2<br /> 64<br /> <br /> <br /> <br /> 63<br /> <br /> <br /> <br /> <br /> 17<br /> <br /> <br /> <br /> 18<br /> 1<br /> 2<br /> 62<br /> <br /> <br /> <br /> 61<br /> <br /> <br /> <br /> <br /> 19<br /> <br /> <br /> <br /> 20<br /> 2<br /> 1<br /> <br /> <br /> <br /> <br /> 1<br /> 60<br /> <br /> <br /> <br /> 59<br /> <br /> <br /> <br /> <br /> 2<br /> <br /> <br /> <br /> <br /> 21<br /> <br /> <br /> <br /> 22<br /> 2<br /> 58<br /> <br /> <br /> <br /> 57<br /> <br /> <br /> <br /> <br /> 23<br /> <br /> <br /> <br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2