Professional Documents
Culture Documents
Với a,b ∈ GF(p) và 4 a3 +27 b 2 ≠ 0, điêm Pi ∈ E, chúng ta có thể tính toán cặp (x,y) thuộc
đường cong E. Dựa trên tập hợp các điểm được xác định trên đường cong E này, thuật
toán ECC xác định phép cộng P3=P1+P2 của hai điểm P1, P2 sử dụng quy tắc tiếp tuyến-
dây cung làm phép toán chính.
Hơn nưa, công thức cho các phép tính này khác nhau đối với biểu diễn tọa độ trong
không gian afin và tọa độ ánh xạ, tức là phương trình đường cong cho các tọa độ ánh xạ
sẽ được giải phóng bằng cách đưa ra một biến Z. Việc sử dụng tọa độ ánh xạ cho phép
tránh sự nghịch đảo module gây tốn kém cho một phép toán trên điểm với chi phí của
phép nhân module bổ sung.
Hầu hết các hệ thống mã hóa dựa trên ECC dựa vào bài toán logarit rời rác trên đường
cong Elliptic- ECDLP( Elliptic Curve Discrete Logarithm Problem ) và như vậy việc
dùng phép nhân điểm k.P như nguyên hàm mã hóa nghĩa là k lần lặp lại phép cộng một
điểm gốc P. ECDPL là bài toán mã hóa cơ bản được sử dụng trong các giao thức và các
chương trình mã hóa như trao đổi khóa Diffie- Hellman, lược đồ mã hóa ElGamal và
thuật toán chữ kí số Elliptic Curve- ECDSA(Elliptic Curve Digital Signature Algorithm).
Lưu ý rằng tất cả các hệ thống mật mã này chỉ sử dụng tạo độ Afin để đảm bảo các giải
pháp duy nhất, tức là trong các trường hợp sử dụng tọa độ ánh xạ nhanh hơn được sử
dụng cho các phép tính trung gian, cần phải thực hiện nghịch đảo module cuối cùng để
chuyển đổi từ tọa độ ánh xạ về tọa độ Afin
Ta sẽ tập trung vào trao đổi khóa Diffie-Hellman dựa trên đường cong elip đặc biệt
Curve25519 mà các đặc điểm được đưa ra trong phần sau.
Curve25519 được dựa trên một trường nguyên tố với số nguyên tố gần với lũy thừa của 2
(số nguyên tố Pseudo Mersenne ) và được định nghĩa như sau:
E : y 2=x 3 +486662 x 2+ x mod 2255 −19
Giả sử một điểm P gốc với Q=(Xi,Yi,,Zi). Theo dõi 2 điểm trung gian Q , Q’ và sai số Q-
Q’ dựa trên P, Curve25519 định nghĩa một điểm kép liên hợp và hàm cộng điểm như một
bước của thang Montgomery với 4 phép lấy căn, 5 phép nân chung, 1 phép nhân (A-2)/4
và 8 phép cộng hoặc trừ. Thêm một lợi ích của hàm Curve25519 đó là chỉ cần có tọa độ
x của các điểm trong tính toán sao cho tọa độ y có thể bỏ qua hoàn toàn trong các công
thức. Do đó, phép nhân điểm chỉ dựa vào tọa độ x và z của hai điểm Q và Q0. Cuối
cùng, một bước liên hợp được tính bằng:
2
x 1=( x 2−z 2 ) =( x−z )2 ( x + z )2
z 2=4 xz (u ¿ ¿ 2+ Axz + z 2) ¿
x 3=4(xx ¿ ¿ ' −z z ' ) ¿
z 3=4(xz ¿ ¿ ' −z x ' ) x 1 ¿
Việc triển khai lõi đơn Curve25519 được thiết kế để hỗ trợ mã hóa không đối xứng, như
một hàm bổ sung và tiết kiệm hầu hết các logic FPGA cho ứng dụng chính. Lõi mã hóa
có khả năng thực hiện phép nhân điểm đối với tọa độ ánh xạ. Để có thể sử dụng với các
giao thức mã hóa thì lõi này phải thực hiện một phép nghịch đảo ở cuối để chuyển đổi
đầu ra có tọa độ ánh xạ thành tọa độ afin. Do đó, bộ vi xử lý số học hỗ trợ hai chế độ hoạt
động cơ bản: hàm nhân đôi và cộng liên hợp hoặc phép nhân modul đơn. Việc truy cập
vào lệnh nhân mô-đun được yêu cầu cho nghịch đảo cuối cùng dựa trên định lý nhỏ
Fermat, tức là, nghịch đảo một phần tử a∈Fp bằng cách tính p − 2 mod p. Để ngăn chặn
các cuộc tấn công timing attack, giải thuật số học thực hiện phép nhân điểm chạy tổng
cộng 255 phép tính đôi và cộng và 266 phép nhân lặp cho nghịch đảo cả trong thời gian
liên tục.
Mỗi phép cộng hoặc trừ luôn được theo sau bởi một phép nhân và tiếp theo là lặp lai một
phép cộng hoặc trừ khác. Điều này dẫn đến thiết kế được trình bày trong Hình 2 sử dụng
hai BRAM hai cổng trong cấu hình bướm. Chính xác hơn, lần đầu tiên BRAM chỉ nhận
được kết quả của phép cộng hoặc trừ và cung cấp đầu vào cho phép nhân trong khi
BRAM thứ hai lưu trữ kết quả phép nhân và cấp đầu vào cho đơn vị cộng. Bằng cách
này, sự cân bằng song song được kích hoạt và các hệ thống đường ống thông qua tải và
ghi lại có thể tránh được với chỉ một ít chi phí.
Khối cộng module: Trung tâm của khối cộng và trừ mô-đun c = a ± b mod p là hai khối
DSP hỗ trợ phép nhân 25x18-bit và phép cộng, trừ hoặc tích lũy 48 bit. Khối DSP đầu
tiên luôn thực hiện phép toán chính (nghĩa là phép trừ hoặc cộng c’ = a ± b) trong khi
khối DSP thứ hai tính dự đoán cho kết quả giảm xuống bằng c’’ = c’ ∓p. Cả hai, c’ và c’’
được lưu trữ trong BRAM đầu tiên và được phân biệt bằng một cờ có được từ lần mang /
mượn trước đó trong các hoạt động dự đoán cho biết trong đó đăng ký kết quả chính xác
được lưu trữ. Tổng cộng lại phép cộng hoặc trừ mô-đun có 10 chu kỳ clock có thể được
thực thi song song với bất kỳ phép nhân nào. Do đó, khai thác luồng vận hành xen kẽ như
trên thì độ trễ của phép cộng hoặc trừ module được hấp thụ hoàn toàn trong độ trễ của
phép nhân module hoạt động động thời.
Khối nhân module: Thành phần lớn nhất của giải thuật là khối nhân và dựa trên 18 khối
DSP, 15 khối được sử dụng để tính toán từng phần, tiền giảm phân và hai khôi cho việc
giảm module cuối cùng. Một phép nhân modul có thể được tính toán trong 55 chu kỳ
clock, trong đó có 34 chu kỳ để thực hiện phép nhân thực tế và các chu kì còn lại để tải
và lưu trữ dữ liệu. Do thiết kế mô-đun thể hiện trong hình 3, tính toán của một phần sản
phẩm (giai đoạn 1) có thể được xen kẽ với bước giảm (giai đoạn 2) trong kiểu đường ống.
Vì vậy, phép toán nhân tiếp theo có thể đã được khởi động lại ngay khi giai đoạn đầu tiên
(một phần sản phẩm) đã hoàn thành phép nhân trước đó, chỉ có phép nhân đầu tiên có chu
kỳ 55 đồng hồ đầy đủ, mỗi phép nhân tiếp theo sẽ có sẵn với độ trễ 17 chu kỳ clock. Vì
các phụ thuộc dữ liệu cũng cần phải được tính đến, bước nhân đôi và cộng liên hợp cho
Curve25519 cuối cùng có tổng cộng 255 chu kỳ.
1Hình 3. Kiến trúc của khối nhân
5.2. Kiên trúc đa lõi
Một cảnh báo chính với kiến trúc lõi đơn là nghịch đảo chậm. Trong đề tài nay, ta tăng
cường thiết kế lõi được mô tả trước đó với một mạch chuyển đổi chuyên dụng và chia sẻ
nó giữa một số lõi để tạo ra sự cân bằng hiệu suất chi phí tối ưu. Số lõi trên mỗi chuyển
đổi được giới hạn trên bởi các tài nguyên có sẵn trên thiết bị tương ứng cũng như mối
quan hệ của số chu kỳ của mỗi phép nhân điểm với một nghịch đảo cuối cùng. Vì số này
trực tiếp tương ứng với các tài nguyên có sẵn trên một FPGA nhất định, chúng tôi đã
triển khai thiết kế một cách tổng quát để cho phép khả năng mở rộng và linh hoạt tối đa
đối với các thiết bị khác. Hình 4 cho thấy giao diện giao tiếp và bộ điều khiển bổ sung để
phân phối các gói dữ liệu đến giữa các lõi Curve25519. Không giống như phần cứng
được giới thiệu ở trên, tất cả các lõi của kiến trúc này chỉ hỗ trợ chức năng bước (phép
nhân đôi và cộng) nhưng không còn nghịch đảo module nữa. Nghịch đảo cuối cùng được
thực hiện bởi một khối nghịch đảo chuyên dụng được chia sẻ bởi tất cả các lõi trong bước
tiếp theo.
Khối nghịch đảo chuyên dụng: Trong nhiều trường hợp, phép chia module là phép tính
tốn kém nhất đòi hỏi một phép nghịch đảo modlue và ít nhất một phép nhân. Trong
phương pháp tiếp cận đơn lõi, chúng tôi nhận thấy phép nghịch đảo dựa trên Định lý nhỏ
Fermat là không hiệu quả vì phép nghịch đảo yêu cầu khoảng 20% toàn bộ thời gian tính
toán Curve25519. Do đó, ta đã triển khai module chuyển đổi dựa trên Thuật toán Euclide
mở rộng nhị phân dưới dạng phần mở rộng cho các lõi hiện có. Đối với phương pháp tiếp
cận thiết kế đa lõi, bộ chuyển đổi nhận X và Z làm đầu vào, và tính kết quả cuối cùng X /
Z trong một thời gian không đổi. Vì bộ chuyển đổi này nhanh hơn đáng kể so với phép
nhân điểm. Khối chuyển đổi có thể phục vụ như là đơn vị đảo ngược tiếp theo cho một
số nhân nhân điểm (xem Phần 6)
Cân bằng tải: Do hoạt động đồng thời của từng lõi, chúng tôi đã triển khai một lược đồ
phân phối dữ liệu đến các lõi khả dụng khi chúng có sẵn. Sơ đồ này về cơ bản là một sơ
đồ tải dựa trên vòng xoay nơi mà khối điều khiển theo dõi hoạt động gần nhất và lõi sẵn
có tiếp theo. Quá trình tải tiếp tục cho đến khi tất cả các lõi bận. Ngay sau khi một lõi
báo cáo kết quả, nó được chuyển đến khối nghịch đảo và lõi được đánh dấu đã sẵn sàng
và có thể được nạp với một bộ tham số tiếp theo.
Phân tách trên miền clock: lõi thực hiện phép nhân điểm có thể hoạt động ở tần số xung
nhịp 200MHz. Tuy nhiên, vì bộ nghịc đảo chuyên dụng thực hiện các bộ cộng và bộ trừ
rộng 256-bit logic nên nó chỉ hỗ trợ tần số xung nhịp tối đa khoảng 130MHz. Để duy trì
hoạt động ở tốc độ tối đa, ta sử dụng các miền clock khác nhau cho lõi nhân điểm trên
một mặt (200 MHz) và bộ điều khiển và bộ đảo ngược mặt khác (100 MHz).
Trong Bảng 1 cung cấp mức tiêu thụ tài nguyên cho thiết kế lõi đơn và đa lõi thiết kế
Cách tiếp cận đơn lõi chỉ sử dụng một phần nhỏ của thiết bị Xilinx nhỏ (tương đối), tức là
7% của Slices và 9% của DSP slice. Các thành phần thiết bị còn lại có sẵn cho bất kỳ
chức năng hoặc ứng dụng nào khác cần được triển khai.
Kiến trúc đơn lõi của thiết kế này có tần số hoạt động tối đa 200MHz và cần khoảng
80.000 chu kỳ clock để thực hiện thao tác Curve25519 trong đó khoảng 20% chu kỳ
clock để tính toán nghịch đảo cuối cùng. Tất cả trong tất cả, lõi có thể thực hiện khoảng
2500 điểm nhân trên giây. Lõi có thể thực hiện 2500 phép nhân điểm mỗi giây.
Kịch bản đa lõi của chúng tôi rõ ràng cắt giảm cho hiệu suất cao nhất bằng cách sử dụng
một FPGA lớn vừa phải. Do sự phân tách miền clock, kiến trúc đa lõi có thể tính toán
một phép nhân điểm trong khoảng 34.000 chu kỳ ở tần số 100MHz. Ngoài ra, có thể thực
hiện tối đa 11 phép tính trong song song với độ trễ ban đầu là 1667 chu kỳ đồng hồ, đó là
thời gian cần thiết cho phép nghịch đảo. Điều này dẫn đến một thông lượng cuối cùng
của hơn 32.000 phép tính Curve25519 mỗi giây.
Trong Bảng 2 một số kết quả triển khai khác thực hiện ECC trên một mức độ bảo mật
tương đương với Curve25519. Tuy nhiên, lưu ý rằng do công nghệ thay đổi của các thế
hệ FPGA khác nhau nên việc so sánh công bằng thực sự là không chính xác. Đường cong
chuẩn NIST P-256 được thực hiện bằng cách sử dụng phương pháp tương tự trên Virtex
Xilinx 4. Các tác giả báo cáo rằng thiết kế để thực hiện các phép tính điểm đòi hỏi nhiều
tài nguyên hơn với hiệu suất khoảng 2.000 phép nhân điểm trên giây. Chúng tôi cũng
muốn làm nổi bật kết quả phần mềm mà chúng tôi thu được, ví dụ: từ dự án eBATS của
ECRYPT. Theo kết quả được báo cáo, Intel Core i3 có thể thực hiện khoảng 10.810 phép
nhân điểm mỗi giây sử dụng chức năng Curve25519 và bộ xử lý AMD Bulldozer FX-
4170, chạy ở tốc độ 4,2 GHz có thể tính 14,285 hoạt động Curve25519 mỗi giây.
Mặc dù so sánh phần mềm và phần cứng có thể gây hiểu lầm, nhưng chúng tôi vẫn muốn
nhấn mạnh rằng Zynq 7020 FPGA lớn vừa phải và khá rẻ có thể hoạt động tốt hơn một số
bộ vi xử lý hiệu suất cao gần đây như AMD Bulldozer và Intels Core i3. Điều này hơi
ngạc nhiên vì mã hóa đường cong elip trên các trường nguyên tố thường được coi là một
lĩnh vực bị chi phối bởi việc triển khai phần mềm liên quan đến hiệu năng thuần túy.
Chương 7- Kết luận
Trong bài báo này, chúng tôi đề xuất hai kiến trúc mới cho Elliptic Curve Cryptography
sử dụng Curve25519 hỗ trợ thỏa thuận khóa Diffie-Hellman và các hệ mã hóa cơ bản
khác. Cả hai kiến trúc cung cấp một mức độ bảo mật có thể so sánh với AES-128 và xử
lý dữ liệu ở thời gian không đổi. Chúng tôi đã chỉ ra rằng thiết kế có thể hoạt động tốt
hơn nhiều sản phẩm được trình bày gần đây trong phần cứng và phần mềm chỉ sử dụng
các yêu cầu tài nguyên vừa phải.