Nghiên cứu khoa học công nghệ<br />
<br />
MỘT PHƯƠNG PHÁP HIỆU QUẢ THỰC HIỆN PHÉP NHÂN ĐIỂM<br />
TRÊN ĐƯỜNG CONG ELLIPTIC SỬ DỤNG THUẬT TOÁN NAF<br />
Hoàng Văn Quân1*, Nguyễn Biên Cương2, Lều Đức Tân2<br />
<br />
Tóm tắt: Trong vài năm trở lại đây, mật mã đường cong Elliptic đã được sử<br />
dụng khá rộng rãi trong nhiều lĩnh vực. Một trong số những phép tính phức tạp<br />
trong thực hiện mật mã đường cong elliptic là phép tính nhân điểm. Trong nội<br />
dung bài báo này, chúng tôi đề xuất một phương pháp thực hiện phép nhân điểm<br />
trên đường cong Elliptic trên trường hữu hạn theo thuật toán NAF (Non Adjacent<br />
Form) để khai triển một số nguyên. Thuật toán được cài đặt trực tiếp trên phần<br />
cứng FPGA mà không cần tính toán trước như thuật toán nhân điểm sử dụng NAF<br />
thông thường.<br />
Từ khóa: Thuật toán NAF, Thuật toán nhân điểm, Mật mã, Cứng hóa ECC trên FPGA.<br />
<br />
1. MỞ ĐẦU<br />
Phép tính cơ bản và quan trọng nhất trong thuật toán mật mã elliptic là phép<br />
nhân vô hướng một điểm trên đường cong elliptic với một số nguyên dương (k.P<br />
với k là số nguyên dương, P là một điểm trên đường cong Elliptic). Trong những<br />
năm gần đây, đã có nhiều thuật toán lý thuyết được công bố để thực hiện tăng tốc<br />
cho phép tính này. Trong số những thuật toán trên thì thuật toán nhân điểm dựa<br />
trên khai triển một số nguyên theo thuật toán NAF là một trong những phương<br />
pháp tính toán hiệu quả cho cài đặt trên phần cứng FPGA [1,2,4].<br />
Thuật toán đơn giản nhất sử dụng cho tính toán phép nhân điểm là thuật toán<br />
nhị phân. Tuy nhiên, thuật toán này hoạt động khá chậm vì cần nhiều số lượng<br />
phép tính cộng điểm và nhân đôi elliptic [1,3]. Thuật toán nhân điểm dựa trên khai<br />
triển một số nguyên theo NAF đã có những cải tiến đáng kể khi giảm được số<br />
lượng phép cộng điểm từ w-1 xuống 2*(w-1)/3 (với w là số bit 1 trong biểu diễn<br />
nhị phân của k). Thuật toán nhân điểm theo NAF dựa trên ý tưởng phép cộng điểm<br />
và phép trừ điểm có hiệu quả tính toán tương đương nhau, nên sử dụng khai triển<br />
theo NAF(k) thay vì sử dụng biểu diễn nhị phân của k. Bài báo này trình bày<br />
phương pháp triển khai một số nguyên theo NAF tính toán trực tiếp trong thực hiện<br />
phép nhân điểm, với phương pháp này cho ta hiệu quả về thời gian tính toán và tài<br />
nguyên sử dụng khi thực hiện phép nhân điểm trên phần cứng.<br />
<br />
2. MỘT SỐ THUẬT TOÁN TÍNH TOÁN PHÉP NHÂN ĐIỂM ELLIPTIC<br />
<br />
Phép nhân vô hướng giữa một điểm trên đường cong E với một số nguyên<br />
dương k, được xác định như sau: Q=k.P, P là một điểm trên đường cong E và 1 ≤<br />
k < ord(E) (2.1)<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 217<br />
Công nghệ thông tin & Khoa học máy tính<br />
<br />
Thuật toán đơn giản nhất dùng để tính phép nhân vô hướng là thuật toán nhị<br />
phân hay còn gọi là thuật toán nhân đôi và cộng.<br />
2.1. Thuật toán 1: Nhân điểm theo phương pháp nhị phân [1]<br />
l 1<br />
Đầu vào: Điểm P, số nguyên k có kích thước l bit k k j 2 j ; k j 0,1 .<br />
j 0<br />
Đầu ra: Q = k.P<br />
Bước 1: Q ← O<br />
Bước 2: vòng lặp j l 1 đến 0<br />
Bước 2.1: Q 2.Q<br />
Bước 2.2: nếu k j 1 thì Q Q P<br />
Bước 3: Kết thúc vòng lặp<br />
Bước 4: Trả về giá trị Q.<br />
Thuật toán nhân điểm theo phương pháp nhị phân yêu cầu l-1 phép nhân đôi và<br />
w-1 phép cộng điểm; trong đó l: chiều dài chuỗi bit trong biểu diễn nhị phân của số<br />
nguyên k, w-1 là số các bit ‘1’ có trong chuỗi bit.<br />
2.2. Thuật toán 2: Nhân điểm theo phương pháp biểu diễn m-ary [1]<br />
Thuật toán này sử dụng biểu diễn m-ary của số nguyên k, trong đó m 2 r , với<br />
r 1 . Thuật toán nhị phân là trường hợp đặc biệt của m-ary khi r = 1.<br />
Đầu vào: điểm P, số nguyên k có kích thước l bit và có biểu diễn m-ary là<br />
d 1<br />
k j 0 k j 2 j ; k j 0,1,..., m 1; d l / r .<br />
Đầu ra: Q k .P .<br />
Tính toán trước:<br />
Bước 1: P1 P<br />
Bước 2: vòng lặp i 2 đến m 1 thực hiện : Pi Pi 1 P .<br />
Kết thúc vòng lặp.<br />
Bước 3: Q O<br />
Bước 4: vòng lặp chính: j d 1 đến 0 thực hiện :<br />
Bước 2.1: Q m .Q<br />
Bước 2.2: Q Q Pk j<br />
Bước 5: Kết thúc vòng lặp chính.<br />
Bước 6: Trả về giá trị Q.<br />
Thuật toán nhân điểm theo m-ary yêu cầu d 1 r phép nhân đôi và m 2<br />
l<br />
phép cộng điểm với d . Như vậy, số phép nhân đôi của thuật toán m-ary lớn<br />
r<br />
nhất là r 1 l 1 của thuật toán nhị phân.<br />
2.3. Thuật toán nhân điểm dựa trên khai triển một số nguyên theo NAF [1]<br />
<br />
<br />
<br />
218 H.V.Quân, N. B.Cương, L.Đ. Tân, “Một phương pháp hiệu quả … thuật toán NAF.”<br />
Nghiên cứu khoa học công nghệ<br />
<br />
Phép cộng điểm và trừ điểm có hiệu quả tương đương nhau trên trường hữu<br />
hạn. Trên GF ( p ), p 3 nếu P ( x , y ) p thì P ( x , y ) p , với<br />
GF(2n) thì P ( x, x y ) 2n do vậy tính toán phép cộng điểm và trừ điểm<br />
<br />
có hiệu quả tương đương nhau trên GF ( p) , GF (2n ) . Với thuật toán NAF ta có thể<br />
biểu diễn một số nguyên dương k theo dạng các số có dấu<br />
l 1<br />
k i 0 ki 2i ki 0, 1 ; trong đó hai số ki liên tiếp khác không.<br />
Thuật toán 3: Khai triển một số nguyên dương theo NAF<br />
Đầu vào: số nguyên dương k;<br />
Đầu ra: NAF(k);<br />
Thực hiện:<br />
Bước 1: Đặt c:=k ;<br />
Bước 2: Gán tập S := ;<br />
Bước 3: Trong khi c > 0 thực hiện vòng lặp:<br />
3.1. Nếu c lẻ thì:<br />
đặt u := 2 - (c mod 4);<br />
đặt c := c – u;<br />
3.2. Còn không thì:<br />
u:= 0;<br />
3.3. Kết thúc Nếu;<br />
Bước 4: Thêm u vào tập S;<br />
Bước 5: Đặt c := c/2;<br />
Bước 6: Kết thúc vòng lặp;<br />
Trả về tập S;<br />
Tính chất của khai triển một số nguyên theo NAF.<br />
a. Với một số nguyên dương k, khai triển NAF(k) là duy nhất.<br />
b. NAF(k) có số chữ số khác không ít nhất trong tất cả các biểu diễn có dấu<br />
của k.<br />
c. Chiều dài của dãy NAF(k) lớn hơn 1 so với chiều dài dãy biểu diễn nhị<br />
phân của k.<br />
l l 1<br />
d. Nếu l là chiều dài dãy NAF(k) thì 2 k 2<br />
3 3<br />
e. Mật độ số chữ số khác không trong biểu diễn NAF của một số có chiều dài<br />
l bit xấp xỉ l/3.<br />
Thuật toán 4 : Nhân điểm Elliptic dựa trên triển khai theo NAF [1,4]<br />
Đầu vào: điểm P, số nguyên k có kích thước l bit ,<br />
l 1 j<br />
k k j 2 k j 0 , 1 , k 0 ;<br />
j0<br />
Đầu ra: Q = k.P<br />
Thực hiện:<br />
Bước 1: Sử dụng thuật toán 3 để tính khai triển một số nguyên dương;<br />
Bước 2: Q ← O<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 219<br />
Công nghệ thông tin & Khoa học máy tính<br />
<br />
Bước 3: vòng lặp i = l-1 tới 0 thực hiện<br />
3.1. Q ← 2Q<br />
3.2. Nếu ki = 1 thì Q ← Q + P<br />
3.3. Nếu ki = -1 thì Q ← Q - P<br />
Bước 4: Kết thúc vòng lặp;<br />
Trả về kết quả Q;<br />
Với tính chất thứ (e) của khai triển một số nguyên theo NAF ta có thể thấy với<br />
một số k có biểu diễn nhị phân với chiều dài l, giả sử số bit 1 tương đương số bit 0<br />
là l/2 thì biểu diễn theo NAF(k) có số bit khác không là l/3, như vậy khi sử dụng<br />
nhân điểm dựa trên NAF số phép tính cộng điểm sẽ là l/3, trong khi sử dụng thuật<br />
toán nhân điểm theo phương pháp nhị phân số phép tính cộng điểm cần sử dụng là<br />
l/2. Điều này chứng tỏ thuật toán NAF hiệu quả hơn thuật toán nhị phân về tốc độ<br />
tính toán.<br />
Ngoài ra, còn một số thuật toán khác sử dụng cho phép nhân điểm vô hướng:<br />
thuật toán Sliding Window, thuật toán Montgomery…<br />
3. ĐỀ XUẤT THUẬT TOÁN NHÂN ĐIỂM ELLIPTIC DỰA TRÊN<br />
TRIỂN KHAI MỘT SỐ NGUYÊN THEO NAF TÍNH TOÁN TRỰC TIẾP<br />
Trong thuật toán 4, Bước 1 cần tính khai triển một số nguyên dương theo thuật<br />
toán 3. Các giá trị của NAF(k) cần được lưu lại sau đó thực hiện thuật toán nhân<br />
điểm theo thuật toán 4. Quá trình này khiến thuật toán không được tính toán trực<br />
tiếp và cần không gian bộ nhớ để lưu các giá trị sinh ra từ NAF(k), các giá trị này<br />
không có ý nghĩa trong tính toán thuật toán nhân điểm vì kết quả cuối cùng cần<br />
tính là kết quả Q= k.P.<br />
Trong nội dung bài báo này chúng tôi đề xuất thuật toán nhân điểm dựa trên<br />
NAF (Thuật toán 5) và có thể tính toán trực tiếp mà không cần lưu trước các tham<br />
số biểu diễn NAF của k (bỏ qua Bước 1 trong Thuật toán 4)<br />
<br />
Thuật toán 5: Nhân điểm Elliptic dựa trên NAF thực hiện tính toán trực tiếp<br />
l 1<br />
j<br />
Đầu vào: điểm P, số nguyên k có kích thước l bit , k j 0 k j 2 k j 0,1 ,k 0 ;<br />
Đầu ra: Q = k.P;<br />
Thực hiện:<br />
Bước 1: Đặt c:= k;<br />
Bước 2: Đặt Q = O;<br />
Bước 3: Trong khi c > 0 thực hiện vòng lặp:<br />
3.1 Nếu c0=1 thì:<br />
3.1 .1 Nếu c1 = 0 thì :<br />
c= c - 1;<br />
Q := Q + P;<br />
3 .1.2 Còn không (c1 = 1 )thì:<br />
<br />
<br />
220 H.V.Quân, N. B.Cương, L.Đ. Tân, “Một phương pháp hiệu quả … thuật toán NAF.”<br />
Nghiên cứu khoa học công nghệ<br />
<br />
c := c + 1;<br />
Q := Q - P;<br />
3.1.3 Kết thúc Nếu;<br />
3.2 Kết thúc Nếu;<br />
Bước 4: Q:= 2Q<br />
Bước 5: c := c/2;<br />
Bước 6: Kết thúc vòng lặp;<br />
Trả về giá trị: Q;<br />
<br />
Khẳng định 1. Nếu bỏ qua các bước tính liên quan đến điểm Q, thì Thuật toán 5<br />
chính là triển khai NAF của số nguyên k.<br />
Chứng minh:<br />
Dễ thấy Bước 1 của Thuật toán 5 chính là Bước 1 của Thuật toán 3. Bước 2 của<br />
Thuật toán 3 chỉ để lưu biểu diễn theo NAF của k.<br />
Ta cần chỉ rõ Bước 3 của Thuật toán 5 chính là Bước 3 của Thuật toán 3. Thật<br />
vậy, dựa trên tính chất của phép modulo có dạng sau: b = a mod 2n , với:<br />
l 1 j n 1 j<br />
a a j 2 , a j 0 , 1 , khi đó nếu l>n thì b j 0 a j 2 ,a j 0, 1 (3.1)<br />
j0<br />
<br />
Áp dụng tính chất (c) của biểu diễn theo NAF, ta có: c mod 4 = c1c0, trong đó<br />
c0 là bit có trọng số bé nhất của biểu diễn nhị phân của c. Thay vào bước 3.1 của<br />
thuật toán 3 ta có: c lẻ => c0 = 1, do vậy u := 2 - (c mod 4) = 2 - {01,11} ={1,- 1}<br />
=> c ={c-1, c+1} tương ứng với bước 3.1.1 và 3.1.2 của Thuật toán 5.<br />
Bỏ qua Bước 4 của Thuật toán 3 (lưu giá trị vào tập S), bước 5 của hai thuật<br />
toán là như nhau. Như vậy, nếu bỏ qua các phép toán liên quan đến điểm Q, Thuật<br />
toán 5 chính là triển khai theo NAF của số nguyên k theo Thuật toán 3.<br />
Khẳng định 2. Kết quả thực hiện Thuật toán 5 chính là thực hiện phép nhân điểm<br />
theo Thuật toán 4 mà không cần tập S để lưu biểu diễn theo NAF của số nguyên k.<br />
Với thuật toán 5 mà bài báo đề xuất, quá trình tính toán phép nhân điểm không<br />
cần tính toán trước NAF(k). Việc tính toán NAF(k) được thực hiện song song với<br />
quá trình tính toán phép nhân điểm. Quá trình khai triển NAF được thực hiện thông<br />
qua việc kiểm tra các bit số 0 (bit có trọng số nhỏ nhất LSB) và bit số 1 trong biểu<br />
diễn nhị phân của k. Với thuật toán 5, việc thiết kế thuật toán trên phần cứng hoàn<br />
toàn có thể thực hiện trực tiếp, không cần tính toán trước biểu diễn theo NAF của<br />
số nguyên k, đồng thời không cần sử dụng thêm bộ nhớ để lưu biểu diễn NAF(k)<br />
(tập S trong Thuật toán 3). Điều này vừa hạn chế được tài nguyên thiết kế khối<br />
nhân điểm trên phần cứng, vừa tăng tốc độ quá trình tính toán phép nhân điểm.<br />
<br />
4. CỨNG HÓA PHÉP NHÂN ĐIỂM<br />
THEO THUẬT TOÁN ĐỀ XUẤT<br />
4.1. Lựa chọn đường cong Elliptic<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 221<br />
Công nghệ thông tin & Khoa học máy tính<br />
<br />
Trong rất nhiều các đường cong Elliptic, không phải đường cong nào cũng có<br />
tính chất mật mã tốt. Trong bài báo này, đường cong elliptic trên trường GF(2n)<br />
theo khuyến nghị của NIST [6] được lựa chọn với các tham số như sau:<br />
- Tham số cho đường cong trên GF(2n).<br />
- Đa thức bất khả quy: F ( x) x 283 x12 x 7 x5 1<br />
- Điểm cơ sở G ( x G , y G ) trong đó:<br />
xG =503213f78ca44883f1a3b8162f188e553cd265f23c1567a16876913b0c2ac2458492836<br />
yG 1ccda380f1c9e318d90f95d07e5426fe87e45c0e8184698e45962364e34116177dd2259<br />
- Bậc của điểm G (là số nguyên tố):<br />
<br />
n = 3885337784451458141838923813647037813284811733793061324295874997529815829704422603873<br />
Đồng thừa số (cofactor): h = 4.<br />
k= 3F00000FFFFFFFF800003800F8000E0000E000000FFFFFFE00000FFFFFFC0007E000000<br />
Công cụ được lựa chọn cho cứng hóa là FPGA trên kít chip Znq7Z045FFG900-<br />
3 của Xilinx.<br />
4.2. Mô hình thiết kế và kết quả thực hiện<br />
Mô hình thực hiện cứng hóa phép nhân điểm trên trường hữu hạn GF(2n) dựa<br />
trên khai triển một số nguyên theo thuật toán NAF tính toán trực tiếp được thể hiện<br />
như trên hình 1, ta có thể thấy module cứng hóa phép nhân điểm cần sử dụng các<br />
module cộng điểm elliptic, module nhân đôi và module thực hiện khai triển theo<br />
NAF(k). Kết quả thực hiện giao diện mức trên cùng bằng công nghệ FPGA được<br />
thể hiện trong hình 2.<br />
<br />
Bảng 1. So sánh tham số cứng hóa phép nhân điểm trên FPGA.<br />
Tham số Thuật toán nhân điểm Thuật toán đề xuất sử dụng<br />
sử dụng NAF (TT4) NAF tính toán trực tiếp (TT5)<br />
Number of Slice 6920 6629<br />
Registers:<br />
Number of Slice LUTs 7746 7093<br />
Number of LUT Flip 9457 8814<br />
Flop pairs used<br />
Thời gian tính toán 2583s 2575s<br />
Frequency 100 MHz 100 MHz<br />
<br />
5. KẾT LUẬN<br />
Đóng góp chính của bài báo là việc đề xuất một thuật toán nhân điểm hiệu quả<br />
về mặt thời gian tính toán và tài nguyên sử dụng so với thuật toán nhân điểm theo<br />
NAF thông thường. Cài đặt thực hành cũng cho thấy những kết quả phù hợp với lý<br />
thuyết, tốc độ tính toán phép nhân điểm theo thuật toán đề xuất (thuật toán 5)<br />
nhanh hơn và sử dụng ít tài nguyên hơn so với thuật toán nhân điểm sử dụng NAF<br />
<br />
<br />
<br />
222 H.V.Quân, N. B.Cương, L.Đ. Tân, “Một phương pháp hiệu quả … thuật toán NAF.”<br />
Nghiên cứu khoa học công nghệ<br />
<br />
truyền thống (thuật toán 4) trên trường GF(2n). Đây là yếu tố rất quan trọng để<br />
thực hiện cứng hóa mật mã đường cong elliptic như giao thức trao đổi khóa<br />
ECDH, ECHQMV, thuật toán chữ ký số ECDSA, GOST R34.10-2012 [5]… nhằm<br />
tiết kiệm thời gian tính toán và tài nguyên của thiết bị xử lý trung tâm tại các nút<br />
mạng khi phải thực hiện đồng thời nhiều kết nối tại cùng một thời điểm (nghĩa là<br />
phải thực hiện nhiều phép nhân điểm đồng thời) trong thực tế khi các mạng truyền<br />
số liệu làm việc ở tốc độ cao, băng thông lớn, đa dịch vụ và yêu cầu thời gian thực.<br />
<br />
<br />
<br />
<br />
Hình 1. Mô hình thực hiện cứng Hình 2. Kết quả thực hiện phép<br />
hóa phép nhân điểm elliptic trên nhân điểm elliptic GF(2n) trên<br />
GF(2n). FPGA<br />
TÀI LIỆU THAM KHẢO<br />
[1]. Darrel Hankerson, Alfred Menezes, Scott Vanstone, “Guide to Elliptic Curve<br />
Cryptography”, Springer – 2004.<br />
[2]. Francisco Rodri’guez – Henri’quez, N.A.Saqib, A.Di’az-Pe`rez.<br />
“Cryptopraphic Algorithms on Reconfigurable Hardware”. Springer, 2007.<br />
[3]. Jerome, A.Solinas,“Efficient Arithmetic on Koblitz Curves”. Centre for<br />
Applied Cryptographic Research, University of Waterloo, 2000.<br />
[4]. Jean-Piere Deschamps, Ge’ry Jean Antoine Bioul, Gustavo D.Stuter,<br />
“Hardware Implementation of Finite-Field Arthmetic”, Mc Graw Hill Press,<br />
2009.<br />
[5]. Н а ц и о н а л ь н ы й с т а н д а р т р о с с и й с к о й ф е д е р а ц и и гост<br />
р 34.10 ─ 2012<br />
[6]. National Institute for Standards and Technology (NIST), “Recommended<br />
Elliptic Curve for Federal Government Use”, July 1999.<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 223<br />
Công nghệ thông tin & Khoa học máy tính<br />
<br />
ABSTRACT<br />
<br />
AN EFFECTIVE METHOD IMPLEMENTATION POINT MULTIPLICATON<br />
ON ELLIPTIC CURVE ALGORITHM USING NAF<br />
<br />
<br />
In recent years, Elliptic curve cryptosystems have used popularly in many<br />
fields. One of complicated operators in elliptic curve cryptosystem is scalar<br />
point-multiplication. In this paper we outline a solution to implement scalar<br />
point-multiplication for Elliptic curve on finite field based on NAF (Non<br />
Adjacent Form) algorithm. Our design can be implemented directly in FPGA<br />
and without any pre-computations as in traditional NAF.<br />
<br />
Keywords: Algorithms NAF, Point multiplication, Cryptography, Hardened Elliptic Curve Cryptography in<br />
FPGA.<br />
<br />
<br />
<br />
Nhận bài ngày 21 tháng 07 năm 2015<br />
Hoàn thiện ngày 10 tháng 08 năm 2015<br />
Chấp nhận đăng ngày 07 tháng 09 năm 2015<br />
<br />
<br />
<br />
1<br />
Địa chỉ: Cục Cơ yếu – BTTM;<br />
*<br />
Email: hoangvanquan@gmail.com ;<br />
2<br />
Viện KHCN Mật mã/Ban Cơ yếu Chính phủ<br />
<br />
<br />
<br />
<br />
224 H.V.Quân, N. B.Cương, L.Đ. Tân, “Một phương pháp hiệu quả … thuật toán NAF.”<br />