Các giải pháp về phần cứng sử dụng công nghệ thiết kế số FPGA (Field Programmable Gate Arrays - Mảng cổng có thể lập trình trường) cách thức thực hiện thuật toán bảo mật LTR khóa[r]
Trang 1NGHIÊN CỨU ỨNG DỤNG MONTGOMERY MULTIPLICATION
TRONG THUẬT TOÁN BẢO MẬT LTR TRÊN FPGA
Ninh Văn Thọ *
Trường Đại học Kinh tế Kỹ thuật Công nghiệp
TÓM TẮT
Bài báo đề cập đến các phương án bảo mật dựa trên công nghệ thiết kế số FPGA Việc đảm bảo an toàn thông tin, tránh mọi nguy cơ bị thay đổi, sao chép hoặc mất mát dữ liệu trong các ứng dụng trên mạng luôn là vấn đề được nhiều người quan tâm Các giải pháp về phần cứng sử dụng công nghệ thiết kế số FPGA (Field Programmable Gate Arrays - Mảng cổng có thể lập trình trường) cách thức thực hiện thuật toán bảo mật LTR khóa mật mã trên FPGA sử dụng ngôn ngữ
mô tả phần cứng VHDL, với độ dài của khóa là 1024 bit Phần cứng sử dụng chip Cyclone II EP2C35F672C6 của ALTERA kết hợp với bộ vi xử lý nhúng Nios II mang lại những hiệu quả rất lớn trong bảo mật kênh thông tin
Từ khóa LTR, FPGA, bảo mật hệ thống, nhân Montgomery, thuật toán, phần mềm
MỞ ĐẦU*
Lĩnh vực bảo mật hiện nay trở nên
cấp thiết hơn bao giờ hết trong hệ thống thông
tin Giải pháp thực hiện bằng phần cứng
thường được lựa chọn nhiều hơn là phần
mềm Các phương án bảo mật dựa
trên công nghệ thiết kế số FPGA với việc ứng
dụng kỹ thuật nhân của Montgomery [5,7]
(Montgomery Multiplication – MM) Kỹ
thuật MM cho phép thực hiện rất hiệu quả các
hệ thống mật mã khóa đối xứng sử dụng phép
toán cộng modul thực hiện các phép tính phức
tạp trên sẽ được tính toán dựa trên các bộ
cộng modul
Bài báo có cấu trúc như sau, sau phần mở đầu
là phần giới thiệu về dòng thiết bị FPGA lựa
chọn để thực hiện thuật toán bảo mật mã
LTR, phần 3 trình bày phương pháp nhân
Montgomery, phần 4 trình bày thuật toán mã
hóa kênh LTR, phần 5 trình bày thiết kế của
LTR trên FPGA và so sánh kết quả thực hiện
cuối cùng là kết luận
GIỚI THIỆU CẤU TRÚC CƠ BẢN CỦA FPGA
Cơ bản kiến trúc của FPGA có thể sử dụng để
tạo ra một thiết kế tối ưu hóa trong FPGA để
thực hiện cứng hóa thuật toán LTR trên
FPGA, nghiên cứu lựa chọn phần cứng có khả
năng phù hợp nhất đó là họ Cyclone của
* Tel: 0914 770072, Email: Thodtu.nd@gmail.com
Altera, cụ thể là bảng mạch phát triển DE2-70 của Altera với chip Cyclone II
EP2C35F672C6 tích hợp bộ xử lý nhúng Nios
II [2], vì linh kiện này cung cấp các bộ xử lý
số học chuyên dụng tốc độ cao và tài nguyên
bộ nhớ trong lớn
Cấu trúc chip Cyclone II EP2C35F672C6 [3]
có cấu trúc tích hợp mật độ cao với 672 chân vào ra và 33.216 Logic Element, ngoài ra nó còn cung cấp:
- 105 khối nhớ nhúng M4K, 4096 bit nhớ/ khối;
- 483.840 bit RAM;
- 34.548 thanh ghi;
- Hoạt động với tần số xung nhịp tới 250 MHz;
- 04 bộ mạch vòng khóa pha PLL nhúng;
Hình 1 Sơ đồ bộ xử lý nhúng MK4
Trang 2Thành phần cơ bản chip Cyclone II gồm logic
element (LE) Về cơ bản LE là một bảng tra
(lookup table-LUT) với 4 đầu vào trên cơ sở
cấu trúc SRAM và thanh ghi trạng thái, bất kỳ
sự kết hợp nào với một hàm logic của 4 đầu
vào đều được lưu giữ và ghi lại trong LE Mỗi
một LE có thể hoạt động ở 2 chế độ: chế độ
hoạt động thông thường và chế độ hoạt động
toán học động
Chế độ hoạt động thường (Normal Mode)
Trong chế độ này, LE thích hợp cho những
ứng dụng logic thông thường và các hàm
logic tổ hợp Mỗi một LE có vai trò như một
LUT và kết nối với nhau theo chuỗi đầu ra
(chain output) của LUT này là đầu vào dữ
liệu thứ 4 của LUT tiếp theo Việc định tuyến
cục bộ sẽ cung cấp các tín hiệu điều khiển
thanh ghi và thanh ghi có thể tải tín hiệu
không đồng bộ
Chế độ hoạt động toán học động (Dynamic
Arithmetic Mode)
Trong chế độ này, LE được tối ưu cho việc
thực hiện các bộ cộng, bộ đếm và các bộ lưu
trữ Một LE được phân chia thành 4 LUT có
2 đầu vào hiện các chức năng khác nhau Đầu
tiên 2 LUT được dùng để tính 2 tổng dựa trên
các đầu vào nhớ 0 và 1 Hai LUT khác có
chức năng tạo ra các đầu ra nhớ để điều khiển
định tuyến cục bộ Kỹ thuật này được gọi là
thuật toán lựa chọn nhớ (carry-select) Chế độ
này cũng được dùng để điều khiển kích hoạt
bộ đếm, bộ cộng, lựa chọn bộ trừ và tái thiết
lập cho thanh ghi
Bộ xử lý Nios II
Bộ xử lý Nios II là bộ xử lý nhúng do hãng
Altera chế tạo dựa trên công nghệ FPGA
giống như một bộ vi điều khiển trên chip bao
gồm CPU, các thiết bị ngoại vi và bộ nhớ trên
một chip đơn Bộ xử lý Nios II cung cấp:
- Thiết lập chỉ thị 32 bit, đường dẫn dữ liệu và
không gian địa chỉ
- 32 thanh ghi sử dụng chung
- 32 nguồn ngắt ngoài
- Bộ nhân đơn 32 x 32 và chia kết quả 32 bit
- Truy cập tới các thiết bị ngoại vi khác nhau trên chip, giao diện với bộ nhớ và thiết bị ngoại vi
Hình 2 Bộ xử lý Nios II của bo mạch DE2-70 Atera
ỨNG DỤNG NHÂN MONTGOMERY MULTIPLICATION
Multiplication của MM được sử dụng và áp dụng tối ưu hóa thuật toán Phần cốt lõi nhất của thuật toán LTR là sử dụng phép toán mũ hóa modular – ME mod N Để nâng cao hiệu
quả phép toán này trên phần cứng ta áp dụng phương pháp bình phương và nhân [1], [5] phương pháp này là dựa trên cơ sở biểu diễn nhị phân của số mũ được mô tả như sau:
Số mũ e được biểu diễn:
);
1 , 0 (
; 2 e
n 0 i
e
trong đó n là kích thước của e (khi biểu diễn
nhị phân) Khi đó phép toán mũ hóa modular
sẽ trở thành:
0 i
e 2 2
e
n
0 i
i i
) (K K
N mod K C
như vậy chúng ta chỉ cần bình phương mỗi lần
lặp và chỉ nhân nếu bit thứ i của số mũ là 1
Lợi thế của thuật toán LTR đó là không cần thêm biến cho các kết quả trung gian Điều này rất quan trọng cho việc thực hiện trên phần cứng do sẽ tiết kiệm được các thanh ghi (register) trong FPGA Để thực hiện thuật
toán LTR ở trên phép nhân modular C.K mod N là cần phải tính toán Thông thường
Trang 3trong phép nhân modular C.K sẽ được tính
trước sau đó sẽ thực hiện bước mod N
Phương pháp thực hiện phép nhân
Montgomery:
Z = MM(L,R) = L.R.r-1mod K
trong đó: L, R < K<r; r = 2n
và GCD(K,r)=1,
r-1 là nghịch đảo của (r modular K)
Phép nhân MM thực hiện việc ánh xạ số
nguyên L trong miền Z thành số L~ trong miền
Montgomery và ngược lại sử dụng phép ánh
xạ một - một:
K mod L.r K mod r L.r )
r
MM(L,
~
K mod r.1.r L K mod 1.r L )
r
,
L
MM(
~ 1
~ 2
~
K
mod
L
trong đó
~
L gọi là thặng dư K của L
Để thực hiện phép nhân modular của 2 số L
và R thì đầu tiên 2 số này sẽ được biến đổi
sang miền Montgomery, sau đó phép nhân sẽ
được áp dụng, tiếp theo kết quả sẽ được
chuyển đổi ngược lại trong miền Z:
K mod R.r K mod r R.r )
r
MM(R,
R
K mod L.r K mod r L.r )
r
MM(L,
L
1 2 2
~
1 2 2
~
Để thực hiện phép nhân modular trong thuật
toán LTR, S = L.R mod K trong đó:
;
2
l
n
0
i
i
n 0 i i
K n k 2i;
0 i i
li, ri, ki (0,1);
Các số được biểu diễn nhị phân với cơ số 2 cơ
số trong thuật toán Montgomery là n hoặc 2n
, trong bài viết này sử dụng cơ số 2n
với n = 1)
Thuật toán nhân Montgomery
MM(L,R,K )
Input: L, R, K
Output: S = L.R mod K
1 S0= 0
2 For i = 0 to n-1 loop
3 qi = (Si + liR) mod 2
4 If ( qi =1) then
5 Si+1 = (Si+ liR +K)/2
6 Else
7 Si+1 = (Si+ liR )/2
8 End if
9 End for
10 Return S
THUẬT TOÁN BẢO MẬT LTR
Thuật toán LTR lưu đồ hoạt động
Thuật toán tạo mã trong LTR đầu vào của LTR là khối độ dài 64 bits, đầu ra 64 bits và khóa là 56 bits Qua sơ đồ cho thấy LTR được cấu tạo bởi 16 bước lặp với bước lặp cơ sở gọi hàm chuyển đổi phi tuyến f, 16 bước lặp này được kẹp vào giữa hai toán tử giao hoán
P và P-1
Hình 3 Sơ đồ thuật toán bảo mật LTR
Hàm cơ sở f là quá trình thực hiện bảo mật trong thuật toán LTR này Sự lặp lại nhiều lần các bước lặp với tác dụng của f là nhằm tăng cường tính bảo mật đã có trong f
Thuật toán tạo khóa
Hình 4 Sơ đồ thuật toán tạo khóa
Trang 4Qua sơ đồ thuật toán tạo khóa có thể thấy
rằng thực sự chỉ có 56 bit của khóa được sử
dụng, 8 bit còn lại là mã kiểm tra chẵn lẻ
(parity bits) và bị lọc ra ở biến đổi PC1 Các
bộ biến đổi PC1 và PC2 đơn giản là các bộ
vừa chọn lọc vừa hoán vị (PC = permuted
choice = lựa chọn có hoán vị) Các biến đổi R1
và R2 tương ứng là các phép dịch sang trái 1 và
2 vị trí Cấu trúc vòng lặp LTR mỗi vòng lặp
của LTR thực hiện trên cơ sở công thức sau:
(Li,Ri) = (Ri-1,Li-1 f (Ri-1,Ki))
trong đó, (Li,Ri) là 2 nửa trái và phải thu được
từ biến đổi của vòng lặp thứ i Ta cũng có thể
viết lại
(Li,Ri) = T o F(Ri-1,Ki))
Trong đó F là thay thế Li-1 bằng Li-1f(R
i-1,Ki), còn T là phép đổi chỗ hai thành phần L
và R Tức là biến đổi vòng lặp của LTR có
thể coi là một tích hàm số của F và T (trừ
vòng cuối không có T)
Ta có thể viết lại toàn bộ thuật toán sinh mã
LTR dưới dạng công thức tích hàm số như sau:
LTR = P-1 o F1 o T o F15 o T o o F2 o T o F1 o P
Thuật toán giải mã LTR được xây dựng giống
như thuật toán sinh mã nhưng có các khóa
con được sử dụng theo thứ tự ngược lại, tức là
dùng khóa K16cho vòng lặp 1, khóa K15 cho
vòng lặp 2 Vì vậy, thuật toán giải mã có thể
được viết lại dưới dạng công thức sau:
LTR-1 = P-1 o F1 o T o F2 o T o o F15 o T o F1 o P
Bây giờ chú ý rằng mỗi hàm T hoặc F đều là các
hàm có tính chất đối hợp (f=f-1
, hay f(f(x) =x)
Do đó khi thực hiện phép tích hàm LTR
-1
oLTR hay LTRoLTR-1 thì sẽ thu được phép
đồng nhất Điều đó giải thích tại sao thuật
toán giải mã lại giống như sinh mã chỉ có
khác về thứ tự trong chuỗi khóa con
Cấu trúc cụ thể hàm f là
Trước hết 32 bits của thành phần Ri-1 được mở
rộng thành 48 bits thông qua biến đổi mở
rộng với sự lặp lại một số bit rồi đem XOR
với 48 bits của khóa Ki Các vòng lặp của
LTR cùng thực hiện với hàm f nhưng với các
tham số khóa khác nhau Tất cả 16 khóa khác
nhau này, được gọi là khóa con, cùng sinh ra
từ khóa chính của LTR bằng một thuật toán tạo khóa con Trong thuật toán tạo khóa con quá trình thực hiện khóa chính K, 64 bits đi qua 16 bước biến đổi, tại mỗi bước này một khóa con được tạo ra với độ dài 48 bits QUY TRÌNH CỨNG HÓA LTR TRÊN FPGA
Để thực hiện thuật toán LTR trên FPGA cần phải thực hiện cả các modular sinh khóa, với kích thước khóa là 1024 bit thì cần phải thực hiện việc sinh khóa trên NIOS Phần nhân của LTR, phép toán mũ hóa modular, sẽ được thực hiện trên FPGA Cyclone II EP2C35F672C6
Khi áp dụng thuật toán MM cho sơ đồ LTR phép tính mũ hóa modular của LTR sẽ được thực hiện bằng cách cộng và dịch vòng trong FPGA Cộng là một phép tính cơ bản được sử dụng trong tất cả các phép toán khác, tốc độ của việc thực hiện phép cộng có một vai trò quan trọng trong toàn bộ hệ thống Trong thiết kế này sử dụng thiết bị của Altera đó là
bộ cộng trừ 32-bit (addsub-32) và thực hiện
bộ cộng 1024 bằng cách kết nối 32 bộ cộng 32-bit tương ứng do core của Altera đã được tối ưu hóa về tốc độ
Như vậy phần tính toán mũ hóa modular của thuật toán mã hóa LTR đã được thực hiện bằng ngôn ngữ mô tả phần cứng VHDL, sử dụng công cụ phần mềm của Altera là Quartus II 9.0 và Nios II 9.0 Thực hiện cả hai chức năng mã hóa và giải mã tùy theo yêu cầu Cụ thể bộ mũ hóa modular chiếm tới 30.975 LE, nhưng bù lại nó có tốc độ tính toán rất nhanh so với một số nghiên cứu trước
đó [8], [9] Bảng dưới đây liệt kê so sánh một
số nghiên cứu cứng hóa LTR trên FPGA với cùng độ dài khóa 1024 bit về tài nguyên, tần
số xung nhịp, thời gian thực hiện:
LTR 1024 30.975 250 10,25
Trong đó LTR 64, LTR 128 được xây dựng dựa trên các bộ mũ hóa modular 64 bits, 128
Trang 5bits [9] sử dụng lặp lại nhiều lần để đạt được
kích thước khóa 1024 bits
KẾT LUẬN
Trong bài báo này tác giả đã sử dụng phương
pháp thực hiện thuật toán LTR trên phần cứng
mở rộng Montgomery nhân trong hệ thống
nhúng trên FPGA của Altera Phương pháp
mới này chỉ sử dụng một phần nhỏ tài nguyên
bộ nhớ FPGA nhúng cần thiết cho việc thực
hiện thuật toán dựa trên bộ cộng có nhớ tiết
kiệm thời gian thực hiện Các phương pháp
thực hiện đề xuất này có thể được áp dụng
dựa trên khối được xây dựng sẵn có trong
FPGA Cả hai biến thể của nhân Montgomery
là áp dụng thành công trong việc triển khai hệ
thống của thuật toán LTR và nhờ vào khả năng
mở rộng của MM triển khai là rất linh hoạt, do
phải xử lý đồng thời cho các khóa có độ dài
1024 bits nên nó chiếm tài nguyên khá lớn
nhưng bù lại thời gian tính toán nhanh hơn
TÀI LIỆU THAM KHẢO
1 Batina, L.-Muurling, G.: Montgomery in
Practice: How to Do It More Efficiently in
Hardware Proceedings of RSA 2002
Cryptographers’ Track, B Preneel,498 N
Mentens, S B Ors, B Preneel, J Vandewalle Ed., San Jose, USA, February 18–22, 2002, Number
2271 in Lecture Notes in Computer Science, pp 40–52, Springer-Verlag
2 Data Document, “Nios Development Board Cyclone II Edition Reference Manual” Altera Corporation, 5-2007…
3 Data sheet, “Cyclone II Device Handbook”, Altera Corporation, 1-2008
4 G Miller, "Riemann's Hypothesis and Tests for Primality." Proceeding sof the 7th Annual ACM Symposium on the Theory of Computing, May 1975
5 Montgomery, P.: “Modular Multiplication without Trial Division Mathematics of Computation”, Vol 44, 1985, pp 519–521
6 Freking, W L.-Parhi, K K.: Performance-Scalable Array Architectures for Modular Multiplication Proceedings of the IEEE International Conference on Application-Specific Systems, Architectures, and Processors 2000, pp 149–160, IEEE
7 Ors,S B.-Batina, L.-Preneel, B.-Vandewalle, J.: Hardware Implementation of a Montgomery Modular Multiplier in a Systolic Array The 10 th Reconfigurable Architectures Workshop (RAW), Nice, France, April 22, 2003
8 William Stallings, "Cryptography and Network Security: Principles and Practices."3rd edition, 2003
9 John Fry, Martin Langhammer, “RSA & Public Key Cryptography in FPGAs”, Altera Corporation, 2004
SUMMARY
APPLIED RESEARCH IN MONTGOMERY MULTIPLICATION LTR
SECURITY ALGORITHM ON FPGA
Ninh Van Tho *
University of Economic and Technical Industries
This paper will address the security plan based on technology the design of FPGA The safety information, to avoid any risk of changing, copying, or loss of data in the applications on the network is always a problem is many people are interested These solutions use technology hardware design of FPGA (Field Programmable Gate Arrays - programmable gate array field) how
to implement algorithm encryption security key LTR channels on FPGA using descriptive language section VHDL hardware, with the length of the key is 1024 bits Hardware used chip of Altera Cyclone II EP2C35F672C6 combined with Nios embedded processor II brought enormous efficiency in information security channel
Keywords: LTR, FPGA, security system, the Montgomery, algorithms, software
* Tel: 0914 770072, Email: Thodtu.nd@gmail.com