CHƯƠNG 2 TÌNH HÌNH NGHIÊN CỨU TRONG VÀ NGOÀI NƯỚC
2.4 Một số đề tài nghiên cứu ngoài nước tham khảo cho luận văn
2.4.2 Khảo sát so sánh việc thực hiện các thuật toán mã hóa hiệu suất
Đề tài: K. Ja¨ rvinen, M. Tommiska and J. Skytta¨ (2005), “Comparative survey of high-performance cryptographic algorithm implementations on FPGAs”, Aalto Univeristy
2.4.2.1 Tóm tắt
Các tác giả trình bày một cuộc khảo sát để so sánh việc thực hiện thuật toán mật mã khóa riêng (private-key cryptographic) trên FPGA. Hiệu suất và độ linh hoạt của những thiết bị FPGAs làm cho chúng trở thành nền tảng lý tưởng trong việc triển khai các thuật toán mã hóa đã được nghiên cứu trong vài năm qua. Tuy nhiên, có những cuộc khảo sát đã được thực hiện nhưng chưa được trình bày trước đây.
Các tác giả phân tích các bài báo áp dụng thuật toán mã hóa trên FPGAs, được sử dụng rộng rãi nhất và so sánh về mặt tốc độ (speed), diện tích (area) và kỹ thuật (technique). Các thuật toán được nghiên cứu trong bài viết này bao gồm các thuật toán mã hóa riêng tư được nâng cấp từ mã hóa cơ bản (private-key cryptographic algorithms) và thuật toán mã hóa dữ liệu quốc tế (international data encryption) và thuật toán băm (certain hash). Các thuật toán đã được thực hiện cung cấp một cái nhìn tổng quan về thuật toán mã hóa riêng (private-key cryptographic algorithm).
2.4.2.2 Giới thiệu
Bài viết này trình bày một nghiên cứu chi tiết về tình hình áp dụng các thuật toán mã hóa riêng tư trên FPGAs. Khi các thuật toán mã hóa được sử dụng rộng rãi hơn, thì
các thuật toán đều có chung yêu cầu là phải thực hiện với tốc độ cao hơn. Việc triển khai các thuật toán mã hóa dựa trên phần mềm không hiệu quả trong nhiều ứng dụng, ví dụ:
trên các máy chủ có nhiều ứng dụng. Vì vậy, có một nhu cầu cấp thiết cho việc thực hiện các giải thuật mã hóa trên FPGA với tốc độ cao.
Phần cứng có thể lập trình lại gần như là lý tưởng cho việc thực hiện mã hóa bởi vì độ lợi sẽ không giảm đáng kể trong khi tốc độ có thể được cải thiện. Tính linh hoạt, có nghĩa là thiết kế có thể dễ dàng thay đổi hoặc sửa đổi được, đặc biệt quan trọng hơn trong việc triển khai mã hóa vì những lý do sau. Đầu tiên, một thuật toán mã hóa có thể
được bảo mật cho đến khi chúng được chứng minh bằng cách khác. Nếu tìm thấy một lỗ hổng nghiêm trọng trong thuật toán, thuật toán phải được thay thế bằng thuật toán khác an toàn hơn. Thứ hai, trong nhiều ứng dụng, một loạt các thuật toán khác nhau được sử dụng, và do đó, nó phải dễ thay đổi từ thực hiện một thuật toán này sang thuật toán khác.
Bài viết tập trung vào việc triển khai các tiêu chuẩn mã hóa tiên tiến (AES), thuật toán mã hóa dữ liệu quốc tế (IDEA) và các thuật toán băm (hash algorithms).
Các thuật toán này đại diện cho cả thuật toán mật mã khóa bí mật và thuật toán băm, do đó đề tài này đưa ra một cái nhìn tổng quan về tình hình thực hiện thuật toán mã hóa. Tất cả các thuật toán này đã được thực hiện bởi các tác giả trong phòng thí nghiệm “Signal Processing” tại Helsinki University of Technology, và các thiết kế ở đây được gọi là thiết kế SIG, ví dụ: SIG-AES.
17 Mặc dù việc thực hiện thuật toán mã hóa trên FPGA đã được nghiên cứu rộng rãi trong vài năm qua, đã có một vài nghiên cứu so sánh toàn diện về các phương pháp tiến hành đã được công bố nhưng chưa được trình bày, ít nhất là các kiến thức của các tác giả trong bài báo này. Bài bào của Wollinger cùng các cộng sự [30] bao gồm việc xem xét các cách thực hiện, và tập trung nhiều hơn vào các câu hỏi bảo mật của FPGA cũng như nền tảng cho việc triển khai thuật toán trên FPGA. Trong bài viết này, các thuật toán mật mã được so sánh về mặt tốc độ, diện tích và các kỹ thuật. Cuối cùng, đưa ra một số kết luận nhất định về triển khai thuật toán mã hóa trên FPGA.
2.4.2.3 Thuật toán mật mã khóa riêng (Private-key cryptographic algorithms) Việc thực hiện các thuật toán mật mã khóa riêng trên phần cứng lập trình lại (FPGA) đã được nghiên cứu rộng rãi trong nhiều năm qua. Mật mã khối rất phù hợp với việc triển khai phần cứng, bởi vì, tính tách (unrolling) và khái niệm đường ống (pipelinining) có thể được khai thác một cách hiệu quả.
Thông lượng có thể được tăng lên bằng cách pipelining một thiết kế chưa được kiểm soát và sau đó tính toán một mã mã hóa khác nhau trong mỗi giai đoạn pipeline. Tuy nhiên, pipeline, hạn chế việc sử dụng các chế độ mã hóa phản hồi và yêu cầu giá trị của bản mã trước đó trong quá trình tạo mã tiếp theo, ví dụ: chế độ chuỗi khối mật mã [31].
Tiêu chuẩn mã hóa dữ liệu (DES) và biến thể 3DES là mật mã khối phổ biến nhất trong nhiều thập kỷ. Một số bài báo gần đây nói về việc triển khai tiêu chuẩn DES đã được xuất bản, ví dụ [32] và [33]. Tuy nhiên, tiêu chuẩn DES hiện đang dần được thay thế bằng tiêu chuẩn AES, và vai trò của tiêu chuẩn DES sẽ bị ảnh hưởng trong tương lai. Do đó, tiêu chuẩn DES sẽ không được xem xét thêm trong tương lai.
Advanced encryption standard (AES)
Bảng 2.10 Thống kê việc thực thi AES trên dòng Xilin Virtex FPGAs
Authors Key Device Slice BRAM Area Throughput
(Gbps)
TPS (Mbps/slice)
TPA (Mbps/area) Chodowiec and coworkers [34],
[35] [Cho] Virtex 1000-6 12
600 80 22
840 12.16 0.965 0.532
Chodowiec et al. [34] [Cho] Virtex 1000-6 2 057 8 3 081 1.265 0.615 0.411
Chodowiec and coworkers [34],
[35] [Cho] Virtex 1000-6 2 507 0 2 507 0.414 0.165 0.165
Dandalis et al. [36] [Dan] Virtex -6 5 673 0 5 673 0.353 0.062 0.062
Elbirt et al. [37], [38] [Elb] Virtex 1000-4 10
992 0 10
992 1.938 0.176 0.176
Elbirt et al. [37], [38] [Elb] Virtex 1000-4 4 871 0 4 871 0.949 0.195 0.195
Gaj and Chodowiec [39] [Gaj] Virtex 1000-6 2 902 0 2 902 0.332 0.114 0.114
Hodjat and Verbauwhede [40] [Hod] Virtex-II VP20-7 9 446 0 9 446 21.64 2.291 2.291 Hodjat and Verbauwhede [40] [Hod] Virtex-II VP20-7 5 177 84 15
929 21.54 4.161 1.352
Ja¨ rvinen et al. [41] [Ja¨ r] Virtex-II 2000-5 10
750 0 10
750 17.8 1.656 1.656
Ja¨ rvinen et al. [41] [Ja¨ r] Virtex-E 1000-8 11
719 0 11
719 16.54 1.411 1.411
Labbe´ and Pe´rez [42] [Lab] Virtex 1000-4 2 151 4 2 663 0.394 0.183 0.148 Labbe´ and Pe´rez [42] [Lab] Virtex 1000-4 3 543 4 4 055 0.796 0.225 0.196 Labbe´ and Pe´rez [42] [Lab] Virtex 1000-4 8 767 4 9 279 1.911 0.218 0.206 McLoone and McCanny [43] [ML1] Virtex-E 3200-8 2 222 100 15
022 6.956 3.131 0.463
18
McLoone and McCanny [44] [ML2] Virtex-EM 812-8 2 000 244 33
232 12.02 6.010 0.362
McLoone and McCanny [45] [ML3] Virtex-EM 812-8 2 679 82 13
175 6.956 2.596 0.528
Pramstaller and Wolkerstrofer [46] [Pra] Virtex-E 1000-8 1 125 0 1 125 0.215 0.191 0.191 Rodr´ıquez-H et al. [47] [Rod] Virtex-E 2600 5 677 80 15
917 4.121 0.726 0.259
Rouvroy et al. [48] [Rou] Virtex-II 40-6 146 3 530 0.358 2.452 0.675
Saggese et al. [49] [Sag] Virtex-E 2000-8 2 778 100 15
578 8.9 3.204 0.571
Saggese et al. [49] [Sag] Virtex-E 2000-8 446 10 1 726 1 2.242 0.579
Saggese et al. [49] [Sag] Virtex-E 2000-8 5 810 100 18
610 20.3 3.494 1.091
Saggese et al. [49] [Sag] Virtex-E 2000-8 648 10 1 928 1.82 2.809 0.944
Saqib et al. [50] [Saq] Virtex-EM 812 2 744 0 2 744 0.259 0.094 0.094
Saqib et al. [50] [Saq] Virtex-EM 812 2 136 100 14
936 2.868 1.343 0.192
Standaert et al. [51] [St1] Virtex 1000-6 2 257 0 2 257 1.563 0.693 0.693
Standaert et al. [51] [St1] Virtex-E 3200-8 2 784 100 15
584 11.776 4.230 0.756
Standaert et al. [51] [St1] Virtex-E 3200-8 542 10 1 822 1.45 2.675 0.796
Standaert et al. [52] [St2] Virtex-E 3200-8 1 769 0 1 769 2.085 1.179 1.179 Standaert et al. [52] [St2] Virtex-E 3200-8 15
112 0 15
112 18.560 1.228 1.228
Wang and Ni [53] [Wan] Virtex-E 1000-8 1 857 0 1 857 1.604 0.864 0.864
Weaver and Wawrzynek [54] [Wea] Virtex-E 600-8 770 10 2 050 1.75 2.273 0.854
Zambreno et al. [55] [Zam] Virtex-II 4000 1 254 20 3 814 4.44 3.541 1.164
Zambreno et al. [55] [Zam] Virtex-II 4000 16
938 0 16
938 23.57 1.392 1.392
Zambreno et al. [55] [Zam] Virtex-II 4000 2 206 50 8 606 10.88 4.932 1.264
Zambreno et al. [55] [Zam] Virtex-II 4000 3 766 100 16
566 22.93 6.089 1.384
Zambreno et al. [55] [Zam] Virtex-II 4000 387 10 1 667 1.41 3.643 0.846
Zhang and Parhi [56] [Zha] Virtex 1000-6 11
014 0 11
014 16.032 1.456 1.456
Zhang and Parhi [56] [Zha] Virtex 800-6 9 406 0 9 406 9.184 0.976 0.976
Zhang and Parhi [56] [Zha] Virtex-E 1000-8 11
022 0 11
022 21.556 1.956 1.956
Zhang and Parhi [56] [Zha] Virtex-EM 812-8 9 406 0 9 406 11.965 1.272 1.272
19 Hình 2.6 Mối liên hệ giữa Throughput-slice trong thực hiện AES giữa các họ FPGA
Hình 2.7 Mối liên hệ throughput-area trong việc thực hiện AES giữa các họ FPGA
20 2.4.2.4 Thuật toán băm - Hash algorithms
Các thuật toán băm thường được sử dụng, ví dụ: MD5 [57] và thuật toán băm bảo mật (SHA) [58], không phù hợp với việc triển khai phần cứng tốc độ cao như hầu hết các thuật toán khóa riêng hoặc khóa công khai, chủ yếu là vì không thể sử dụng song song một cách hiệu quả. Các thuật toán băm có thể được triển khai hiệu quả trên phần mềm khi chúng sử dụng các phép cộng modulo phổ biến, dễ dàng và nhanh chóng để
thực hiện với các bộ vi xử lý truyền thống. Tuy nhiên, sự gia tăng tốc độ đáng kể từ 25 đến 31 lần đối với SHA-1 và SHA-512 đã được công bố [59].
Có một số ứng dụng nhất định không tăng tốc phần cứng. Ví dụ: nếu một lược đồ mã hóa yêu cầu tính băm, ví dụ: thuật toán chữ kí số [60], được thực hiện trên FPGA, nó là nền tảng để thực hiện một module băm trên chip. Một số tính toán băm đòi hỏi cao, ví dụ: chuỗi dài số vòng băm, không thể tăng tốc phần cứng [61]. Các thuật toán băm được trình bày trong [59] được xem xét ở đây.
Bảng 2.11 Kết quả thực hiện IDEA trên dòng Xilinx
Tác giả Thiết bị Slies Thông lượng
(Gbps)
TPS
(Mbps/slice)
Cheung [62] Virtex 1000-6 11602 524 0.452
Gonzalez [63] Virtex 600-6 6078 83 1.366
Hamalamen [64] Virtex E1000-6 9855 678 0.688
Leong [65] Virtex 300-6 2801 0.5 0.179
Mencer [66] XC4000 na 0.528 na
Pan [67] Virtex-II 1000-6 4221 6.0 1.421
* n.a Giá trị không có sẵn trong đề tài.
Bảng 2.12 Thuật toán hỗ trợ đã công bố và thực hiện trên FPGA của giải thuật băm
Tác giả MD
5
SHA -1
SHA- 256
SHA- 384
SHA- 512
RIPEM D
HAS- 160 Deepakumara et al. [68] ✓
Diez et al. [69] ✓
Diez et al. [69] ✓
Dominikus [70] ✓ ✓ ✓ ✓
Grembowski et al. [71] ✓
Grembowski et al. [71] ✓
Ja¨ rvinen et al. [61] ✓
Ja¨ rvinen et al. [72] ✓ ✓
Kang et al. [73] ✓ ✓ ✓
Lien et al. [59] ✓
Lien et al. [59] ✓
McLoone and McCanny [74]
✓ ✓
Ng et al. [75] ✓ ✓
Selimis et al. [76] ✓
Sklavos et al. [77] ✓ ✓
21
Ting et al. [78] ✓
Wang et al. [79] ✓ ✓ Zibin and Ning [80] ✓
Bảng 2.13 Hiệu suất và diện tích yêu cầu trong các công bố thực hiện giải thuật băm trên FPGA
Tác giả Device Giải thuật Slice
s
BlockRAMs Thông lượng (Mbps)
Deepakumara et al. [68] Virtex 1000-6 MD5 880 2 165
Deepakumara et al. [68] Virtex 1000-6 MD5 4 763 0 354
Diez et al. [69] Virtex-II 3000 MD5 1 369 0 467.3
Diez et al. [69] Virtex-II 3000 SHA-1 1 550 0 899.8
Dominikus [70] Virtex-E 300 MD5 1 004 0 146
Dominikus [70] Virtex-E 300 RIPEMD 1 004 0 89
Dominikus [70] Virtex-E 300 SHA-1 1 004 0 119
Dominikus [70] Virtex-E 300 SHA-256 1 004 0 77
Grembowski et al. [71] Virtex 1000-6 a a
Grembowski et al. [71] Virtex 1000-6 a a
Ja¨ rvinen et al. [61] Virtex-II 4000-6 MD5 1 325 0 607
Ja¨ rvinen et al. [61] Virtex-II 4000-6 MD5 5 732 0 2 395
Ja¨ rvinen et al. [61] Virtex-II 4000-6 MD5 11 498 10 5 857
Ja¨ rvinen et al. [72] Virtex-II 2000-6 MD5 1 882 0 602
Ja¨ rvinen et al. [72] Virtex-II 2000-6 SHA-1 1 882 0 485
Kang et al. [73] Apex 20K 1000-3 MD5 10 573 (LE) 0 142
Kang et al. [73] Apex 20K 1000-3 SHA-1 10 573 (LE) 0 114
Kang et al. [73] Apex 20K 1000-3 HAS-160 10 573 (LE) 0 160
Lien et al. [59] Virtex 1000-6 SHA-1 480 0 544
Lien et al. [59] Virtex 1000-6 SHA-1 1 480 0 1 024
Lien et al. [59] Virtex 1000-6 SHA-512 2 384 0 717
Lien et al. [59] Virtex 1000-6 SHA-512 3 521 0 929
McLoone and McCanny [74] Virtex-E 600-8 SHA-384/512 2 914 2 479
Ng et al. [75] Flex 50-1 MD5 1 964 (LE) 0 206
Ng et al. [75] Flex 50-1 RIPEMD 1 964 (LE) 0 84
Selimis et al. [76] Virtex 150 SHA-1 518 0 518
Sklavos et al. [77] Virtex-II 500 SHA-1 2 245 0 1 339
Sklavos et al. [77] Virtex-II 500 RIPEMD 2 245 0 1 656
Ting et al. [78] Virtex-E 300-8 SHA-256 1 261 0 693
Wang et al. [79] Apex 20K 1000-3 MD5 3 040 (LE) 1 (ESB) 178.6
Wang et al. [79] Apex 20K 1000-3 SHA-1 3 040 (LE) 1 (ESB) 143.3
Zibin and Ning [80] Acex 100-1 SHA-1 1 622 (LE) 0 268.99
2.4.2.5 Kết luận
Thấy rằng, FPGA có thể được sử dụng rất hiệu quả cho việc triển khai tốc độ cao các thuật toán mã hóa mật mã. Lĩnh vực này đã được nghiên cứu rộng rãi trong vài năm qua và các hướng thực thi đã mang lại sự hiệu quả được trình bày bằng nhiều thuật toán. Các phương pháp thiết kế tương tự được áp dụng cho tất cả các thuật toán được nghiên cứu trong khảo sát này. Chìa khóa để triển khai đạt tốc độ cao là xác định giải thuật hoạt động chính (critical operation), ví dụ: SubBytes trong AES, và thực hiện nó một cách hiệu quả. Nói chung, các hoạt động, ít nhất là các hoạt động quan trọng nên
22 được thực hiện ở mức thấp nhất để đảm bảo hiệu suất tối đa với nguồn tài nguyên ít nhất.
Mặc dù tất cả các thiết kế được xem xét ở đây đã được thực hiện trên FPGA, chỉ một trong số ít đặc biệt nhắm đến mục tiêu FPGA vì chúng chỉ là các triển khai phần cứng bước đầu để có thể tiến hành trên các ứng dụng cụ thể (ASIC) sau này. Khai thác các thuộc tính đặc biệt của FPGA chưa được nghiên cứu kĩ lưỡng, ngoại trừ việc sử dụng bộ nhớ nhúng. Tuy nhiên, khả năng bảo mật một phần đã được sử dụng trong việc thực hiện IDEA [63] như được thảo luận trong phần trước. Một số triển khai nhất định đã được tối ưu hóa cho cấu trúc slice đã được xuất bản, ví dụ [51].
Nhiều thuật toán mã hóa sử dụng các loại hoạt động tương tự nhau, vì vậy có thể
kết hợp một số thuật toán thành một thiết kế đơn giản một cách hiệu quả bằng các khai thác những điểm tương đồng này. Sự kết hợp của các thuật toán mã hóa chưa được nghiên cứu rộng rãi, ngoại trừ trong trường hợp thuật toán băm. Có tồn tại các khối nhúng chuyên dụng cho một số hoạt động thường được sử dụng trong các FPGA hiện đại, ví dụ: kiến trúc Altera Stratix-II bao gồm các khối dành riêng cho xử lý tín hiệu số (DSP) [81]. Các khối chuyên dụng cho mật mã chưa tồn tại trên thiết bị nào, nhưng nếu các khối như vậy được thực hiện, chúng có thể tăng tốc hiệu suất của các thuật toán mã hóa thay thế. Câu hỏi về cách thức các khối này nên được sắp xếp và những hoạt động nào nên được thực hiện là một vấn đề nghiên cứu mở.
Dựa trên các quan sát của chúng tôi, một số nghiên cứu có thể được nghiên cứu trong tương lai bao gồm:
- Kiến trúc cho các ràng buộc về mặt môi trường (constrained environments)
- Tăng tính tổng quát, mật mã tổng quát, kiến trúc triển khai một số mật mã cho các thuật toán trong một thiết kế đơn lẻ (MD5/SHA-1)
- Các khối dành riêng cho các hoạt động mã hóa vào FPGA (xem khối DSP) - Sử dụng hiệu quả tính năng của FPGA
Triển khai hiệu quả các thuật toán băm mạnh. Các nghiên cứu đã kết luận rằng bất kể thuật toán nếu được triển khai rất hiệu quả thì sẽ đạt được yêu cầu về tốc độ lẫn logic. Mặc dù thực hiện thuật toán mã hóa đã được nghiên cứu rộng rãi, một số vấn đề
mở vẫn còn tồn tại.
23
CHƯƠNG 3 CƠ SỞ LÝ THUYẾT
Trong thực tế có rất nhiều thuật toán để mã hóa được thông tin truyền đi là mã hóa bit và mã hóa khối. Vì trong mã hóa bit dễ bị thám mã hơn mà mã hóa khối nên chọn phương án mã hóa khối để mã hóa thông tin nhằm đảm bảo an toàn.