1. Trang chủ
  2. » Giáo án - Bài giảng

Về một thuật toán nhân điểm an toàn của hệ mật Elliptic

9 55 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Bài báo này sẽ giới thiệu, phân tích các thuật toán nhân điểm đã biết và đề xuất một thuật toán an toàn và hiệu quả, có khả năng chống lại các tấn công phân tích năng lượng. Mời các bạn cùng tham khảo nội dung chi tiết.

JOURNAL OF SCIENCE OF HNUE FIT., 2013, Vol 58, pp 131-139 This paper is available online at http://stdb.hnue.edu.vn VỀ MỘT THUẬT TỐN NHÂN ĐIỂM AN TỒN CỦA HỆ MẬT ELLIPTIC Nguyễn Hữu Hùng Ban Cơ yếu Chính phủ Email: nhhung@ca.gov.vn Tóm tắt Phép nhân điểm thủ tục thường xuyên phải thực hệ mật Elliptic Nó đặc biệt nhạy cảm thực phép nhân khóa bí mật với điểm công khai Các phương pháp cơng phân tích lượng khám phá khóa bí mật sử dụng phép nhân điểm thơng thường (như nhị phân) Bài báo giới thiệu, phân tích thuật tốn nhân điểm biết đề xuất thuật tốn an tồn hiệu quả, có khả chống lại cơng phân tích lượng Từ khóa: Phép nhân điểm, hệ mật Elliptic, khóa bí mật, phân tích lượng Giới thiệu Hệ mật Elliptic trở thành phần quan trọng mật mã khóa cơng khai thực tế người ta đạt mức độ bảo mật RSA với độ dài khóa ngắn hơn, dung lượng lưu trữ Điều làm cho hệ mật dễ dàng sử dụng hệ thống thiết bị nhỏ gọn, nhớ hạn chế điện thoại di động, thiết bị cầm tay Đây lí đường cong elliptic chủ đề nghiên cứu quan trọng mật mã Các công kênh kề [2] dựa việc tiêu thụ lượng thời gian độ phức tạp tính tốn cần thiết để thực phép nhân điểm cài đặt hệ mật Elliptic Phép nhân điểm có dạng: Q = dP đó, P điểm cơng khai đường cong d thường khóa bí mật Nếu sử dụng phép nhân điểm thông thường, nhị phân chẳng hạn, cơng phân tích lượng phân biệt bít khóa bí mật d thực phép nhân điểm Để chống lại kiểu cơng này, nhiều phép nhân điểm an tồn đưa [4] Sau đây, giới thiệu thuật tốn nhân điểm an tồn phân tích tính hiệu khả cài đặt thực hành thuật toán 131 Nguyễn Hữu Hùng 2.1 Nội dung nghiên cứu Một số phương pháp nhân điểm 2.1.1 Phép cộng điểm Xét dạng Weierstrass đường cong elliptic trường hữu hạn Fp với p > nguyên tố: E : y = x3 + ax + b với a, b ∈ Fp ; 4a3 + 27b2 = 0(mod p) Tập tất điểm P (x, y) thoả mãn E, với điểm vơ cực ∞, kí hiệu E(Fp ), tạo nên nhóm Abelian Gọi #E cấp E(Fp ) Để cho hệ mật elliptic an toàn, thường chọn #E số nguyên tố Bài báo xét đến trường hợp cấp đường cong nguyên tố Ta kí hiệu x(P ) y(P ) tương ứng toạ độ x toạ độ y điểm P Giả sử P1 = (x1 , y1 ) P2 = (x2 , y2 ) hai điểm E(Fp ) khác ∞ Tổng P3 = P1 + P2 = (x3 , y3 ) tính x3 = λ(P1 , P2 )2 − x1 − x2 , y3 = λ(P1 , P2 )(x1 − x2 ) − y1 , λ(P1 , P2 ) = (3x21 + a)/(2y1 ) P1 = P2 (phép nhân đôi điểm - ECDBL) λ(P1 , P2 ) = (y2 − y1 )/(x2 − x1 ) P1 ∈ / ±P2 (phép cộng điểm - ECADD) Cả hai cơng thức cần phép tính nghịch đảo Fp , cần nhiều thời gian so với phép nhân Fp Người ta thường chuyển toạ độ affine (x, y) thành toạ độ khác mà phép cộng khơng cần nghịch đảo, tọa độ Jacobian ví dụ Trong toạ độ Jacobian, đặt x = X/Z y = Y /Z cho ta phương trình EJ = Y = X +aXZ +bZ Khi đó, hai điểm (X : Y : Z) (r X : r Y : rZ) coi điểm với r ∈ Fp∗ Đặt P1 = (X1 : Y1 : Z1 ), P2 = (X2 : Y2 : Z2 ) P3 = P1 + P2 = (X3 : Y3 : Z3 ) Phép cộng phép nhân đơi biểu diễn sau: Bảng Phép cộng điểm toạ độ Jacobian ECDBLJ X3 = T, Y3 = −8Y14 + M (S − T ), Z3 = 2Y1 Z1 S = 4X1 Y12 , M = 3X12 + aZ14 , T = −2S + M ECADDJ X3 = −H − 3U1 H2 + R2 , Y3 = −S1 H + R(U1 H − X3 ), Z3 = Z1 Z2 H U1 = X1 Z22 , U2 = X2 Z12 , S1 = Y1 Z23 , S2 = Y2 Z13 , H = U2 − U1 , R = S2 − S1 2.1.2 Phép nhân điểm Trong hệ mật Elliptic cần phải tính dP , với P ∈ E(Fp ) d số nguyên n-bít Các phương pháp để thực phép nhân mô tả [5] Đơn giản để tính dP phương pháp nhị phân Thuật toán 1: Nhân điểm theo phương pháp nhị phân Input: d = (dn−1 d1 d0 )2 , P ∈ E(Fp ), (dn−1 = 1) Output: dP 132 Về thuật toán nhân điểm an toàn hệ mật elliptic Q ← P Cho i = (n − 2) giảm đến thực hiện: 2.1 Q ← ECDBL(Q) 2.2 Nếu (di == 1) Q ← ECADD(Q, P ) Trả Q Phương pháp cửa sổ: Trong phương pháp này, ta lựa chọn độ lớn cửa sổ w tính trước 2w giá trị kP với k = 0, 1, 2, , 2w − Thuật toán sử dụng biểu diễn khóa bí mật dạng d = d0 + 2w d1 + 2w d2 + + 2mw dm : Thuật toán 2: Nhân điểm sử dụng phương pháp cửa sổ Input: w, P ∈ E(Fp ), d = d0 + 2w d1 + 2w d2 + + 2mw dm Output: dP Q ← ∞ Cho i = đến m thực hiện: 2.1 Q ← 2w Q (sử dụng lặp lại phép toán nhân đổi điểm ECDBL) 2.2 Nếu di > Q ← ECADD(Q, di P ) Trả Q[0] Thuật tốn có lợi so với phương pháp nhị phân sử dụng phép cộng điểm Thông thường, đề nghị NIST, giá trị tốt cho độ lớn cửa sổ w = Độ phức tạp tổng thể thuật toán với d số n-bít (n + 1) phép n ECDBL 2w − + phép ECADD w Phương pháp cửa sổ NAF: Phương pháp dựa vào biểu diễn NAF - Non-Adjacent Form số nguyên Một số nguyên d biểu diễn dạng NAF cửa sổ có độ lớn w theo thuật tốn sau: Thuật toán 3: Biểu diễn wNAF số nguyên Input: Độ lớn cửa sổ w, số nguyên d độ dài n-bít Output: Biểu diễn wNAF d : (di−1 , di−2, , d0 ) i ← Trong (d > 0) thực hiện: 2.1 Nếu (d mod 2) == (di ← d mods 2w ; d ← d − di ); Cịn khơng di ← 2.2 d ← d/2; i ← i + Trả (di−1 , di−2, , d0 ) Trong hàm mods định nghĩa là: - Nếu d > 2w−1 trả (dmod 2w ) − 2w cịn khơng trả (dmod 2w ) Thuật toán nhân điểm kiểu cửa sổ NAF yêu cầu tính trước dãy điểm {1, 3, 5, , 2w−1 − 1}P điểm đối chúng (điểm đối P (x, y) −P (x, −y)) Thuật toán nhân điểm sau: Thuật toán 4: Nhân điểm theo phương pháp cửa sổ NAF 133 Nguyễn Hữu Hùng Input: (di−1 , di−2 , , d0 ), P ∈ E(Fp ) Output: dP Q ← ∞ Cho j = (i − 1) giảm đến thực hiện: 2.1 Q ← ECDBL(Q) 2.2 Nếu (dj ! = 0) Q ← ECADD(Q, dj P ) Trả Q Phương pháp yêu cầu tính trước phép ECDBL w −1 phép ECADD Sau n phép ECADD Như vậy, độ phức tạp tổng thể thuật toán yêu cầu n phép ECDBL w+1 n thuật tốn, khơng kể phép biểu diễn NAF, (n + 1) phép ECDBL w − + w+1 phép ECADD Phương pháp ln-cộng nhân đơi: Thuật tốn 5: Nhân điểm sử dụng phương pháp luôn-cộng nhân đôi Input: d = (dn−1 d1 d0 )2 , P ∈ E(Fp ), (dn−1 = 1) Output: dP Q[0] ← P Cho i = (n − 2) giảm đến thực hiện: 2.1 Q[0] ← ECDBL(Q[0]) 2.2 Q[1 − di ] ← ECADD(Q[0], P ) Trả Q[0] Độ phức tạp thuật toán (n − 1) phép ECDBL (n − 1) phép ECADD Rõ ràng thuật tốn khơng để lộ bít thơng tin khóa bí mật thực phép nhân Thuật toán Montgomery-bậc thang: Thuật toán 6: Nhân điểm sử dụng phương pháp Montgomery-bậc thang Input: P ∈ E(Fp ), d = d0 + 21 d1 + 22 d2 + + 2n dn Output: dP R0 ← ∞, R1 ← P Cho i = đến n thực hiện: 2.1 Nếu (di == 0) thì: - R1 ← ECADD(R0 , R1 ) - R0 ← ECDBL(R0 ) 2.2 Cịn khơng thì: - R0 ← ECADD(R0 , R1 ) - R1 ← ECDBL(R1 ) Trả R0 Độ phức tạp thời gian chạy thuật toán tương đương với phương pháp 134 Về thuật toán nhân điểm an tồn hệ mật elliptic nhân điểm ln-cộng nhân đôi Phương pháp tiếp cận cách nhân điểm theo khoảng thời gian cố định Điều có hiệu việc chống lại công kênh kề, kẻ cơng khám phá bít khóa bí mật cách đo chênh lệch lượng thời gian thực bước thuật tốn 2.2 Các cơng phân tích lượng hệ mật Elliptic 2.2.1 SPA phương pháp kháng SPA SPA theo dõi việc tiêu thụ lượng thiết bị, phát khác thao tác sử dụng khố bí mật Các Thuật toán 1, bị công SPA Phép nhân vô hướng tính cơng thức cộng, cụ thể ECDBL ECADD, dựa bít khố bí mật vơ hướng Thao tác ECADD thuật tốn tính bít sở 1, ECDBL ln ln tính Cơng thức cộng tập hợp phép toán trường xác định Có nhiều điều khác phép toán sở phép ECDBL phép ECADD Vì vậy, SPA phát bít bí mật Phương pháp kháng SPA: Với mục đích kháng lại SPA, phải loại bỏ mối liên quan thông tin bít phép cộng chúng Phương pháp đơn giản đề xuất Coron [1] thể Thuật toán Trong thuật tốn này, ln ln thực tính ECADD bít khóa bí mật hay Như vậy, kẻ công đốn bít thơng tin khóa bí mật phương pháp SPA 2.2.2 DPA phương pháp kháng DPA Tấn cơng phân tích lượng vi sai theo dõi việc tiêu thụ lượng phân tích thông tin với công cụ thống kê tinh vi Một phương pháp an toàn chống lại SPA khơng an tồn DPA Kẻ cơng DPA cố gắng đốn phép tính cP với số nguyên c thực phép nhân vô hướng Anh ta nhận lượng tiêu thụ cho việc tính cPi với i = 1, 2, , phát đỉnh xuất từ hàm tương quan dựa bít cụ thể cPi DPA áp dụng với Thuật tốn dãy điểm tạo từ thuật toán tất định DPA tìm mối tương quan bít cụ thể Phương pháp kháng DPA Coron: Coron [1] cần thiết để chèn số ngẫu nhiên q trình tính dP để chống lại DPA Dựa ngẫu nhiên hoá toạ độ Jacobian (hoặc toạ độ xạ ảnh) Để chống lại DPA, chuyển P = (x, y) hệ toạ độ affine thành P = (r x : r y : r) hệ toạ độ Jacobian với giá trị ngẫu nhiên r ∈ K ∗ Giá trị ngẫu nhiên tạo tính ngẫu nhiên biểu diễn điểm làm ngẫu nhiên việc tiêu thụ lượng phép nhân vô hướng dP 2.2.3 ZVP phương pháp kháng ZVP Tấn cơng phân tích lượng Goubin: Goubin [3] đề xuất phương pháp phân tích lượng sử dụng điểm mà không ngẫu nhiên 135 Nguyễn Hữu Hùng phương pháp kháng DPA mô tả Goubin tập trung vào điểm (x, 0) (0, y) Các điểm biểu diễn tương ứng (X : : Z) (0 : Y : Z) toạ độ Jacobian Ngay điểm ngẫu nhiên hố toạ độ khơng, cụ thể (r X : : rZ) (0 : r Y : rZ) số nguyên ngẫu nhiên r ∈ K ∗ Như vậy, kẻ cơng phát điểm (x, 0) (0, y) sử dụng phép nhân vô hướng sử dụng DPA Kẻ cơng khám phá khố bí mật sử dụng điểm sau: Đối với giá trị vô hướng c cho, ln tạo điểm P thoả mãn P = (c−1 #E)(0, y), ta xét với bậc đường cong #E nguyên tố Nếu kẻ công chọn P điểm sở cho phép nhân vơ hướng, DPA phát cP có tính hay khơng q trình nhân vơ hướng Khi kẻ cơng nhận tồn khố bí mật cách áp dụng đệ quy trình từ bit cao Tấn công điểm giá trị-không [2] (ZPA - Zero-value Point Attack): Tấn công Goubin mô tả trường hợp riêng Mục đích cơng điểm giá trị-khơng (Zero-Point Attack - ZPA) khám phá khố bí mật việc chọn thích ứng điểm sở P Ta giả sử phép nhân vơ hướng tính theo Thuật tốn Kẻ cơng khám phá khố bí mật từ bít cao Bít có ý nghĩa thứ hai dn−2 khám phá cách kiểm tra phép tính ECDBL(2Q), ECADD(2Q, Q), ECDBL(3Q) ECADD(3Q, Q) thực Rõ ràng rằng, bít dn−2 = Thuật tốn thực hai phép tính ECDBL(2Q) ECADD(2Q, Q) Bít dn−2 = Thuật tốn thực phép tính ECDBL(3Q) ECADD(3Q, Q) Nếu tồn ghi giá trị-không thực phép tính kẻ cơng phát phép tính cách đo lượng tiêu thụ sụt giảm Tương tự cho bít Như vậy, muốn tìm điểm P mà nhận ghi giá trị-khơng ECDBL, ta sử dụng điểm sở Q = (c−1 mod #E)P với số ngun c cho cơng Đối với phép cộng ECADD, phải tìm điểm sở Q cho tạo ghi giá trị-không thực ECADD(cQ, Q) Tóm lại, kẻ cơng phải tìm điểm Q mà tạo ghi giá trị-khơng ECDBL(cQ) ECADD(cQ, Q) số c cho Ta gọi điểm điểm giá trị-không (Zero-Value Point - ZVP) Phương pháp kháng ZPA: Điểm sở P (x0 , y0 ) đường cong elliptic E trường hữu hạn FP xác định y = x3 + ax + b phải thỏa mãn số tính chất x0 = 0, 3x20 + a = 5x40 + 2ax20 − 4bx0 + a2 = 2.3 Đề xuất thuật toán an tồn hiệu 2.3.1 Thuật tốn kết hợp phương pháp cửa sổ phương pháp luôn-cộng nhân đơi Từ phân tích cơng SPA, DPA ZPA trên, kết hợp Thuật toán Thuật toán để đưa thuật tốn đảm bảo an tồn kháng lại 136 Về thuật tốn nhân điểm an tồn hệ mật elliptic cơng phân tích lượng biết, đồng thời mang tính hiệu thực tế Trong thuật tốn này, giống phương pháp mơ tả Thuật tốn 4, u cầu tính trước dãy điểm {1, 3, 5, , 2w−1 − 1}P điểm đối chúng (điểm đối P (x, y) −P (x, −y)), biểu diễn wNAF d di−1 , di−2, ,d0 Thuật toán 7: Nhân điểm sử dụng kết hợp hai phương pháp cửa sổ wNAF Input: biểu diễn wNAF khóa bí mật d = (di−1 , di−2 , , d0), P ∈ E(Fp ) Output: dP Q ← ∞ Cho j = (i − 1) giảm đến thực hiện: 2.1 Q ← ECDBL(Q) 2.2 Nếu (dj > 0) thì: Q ← Q + dj P Q[1] ← Q + (−|dj |P ); Cịn khơng thì: Q ← Q + (−|dj |P ) Q[1] ← Q + (|dj |P ) Trả Q Phân tích tính đắn độ phức tạp thuật tốn: Rõ ràng thuật toán tương đương với Thuật toán - phương pháp cửa sổ NAF bước 2.2 bỏ bước tính Q[1], việc thực thêm bước tính khơng làm ảnh hưởng hay thay đổi đầu thuật tốn, mà ý tưởng Thuật tốn phương pháp ln-cộng nhân đơi để làm cho khơng có khác biệt thời gian lượng tiêu thụ vòng lặp Như vậy, độ phức tạp tổng thể thuật toán 2n n (n + 1) phép ECDBL w − + phép ECADD, tức nhiều w+1 w+1 phép ECADD so với Thuật toán So với Thuật toán 6, số phép cộng ECADD 3n − phép toán ECADD chọn độ lớn cửa sổ (n − 1) thuật tốn cỡ w = 2.3.2 Một số kết thực nghiệm Dựa thư viện tính tốn Elliptic Miracl [6], chúng tơi thực việc cài đặt Thuật toán 1, 4, để thực việc so sánh tốc độ tính tốn kiểm tra tính đắn thuật toán đề xuất Kết sau: Cài đặt Thuật toán - Phép nhân theo kiểu nhị phân (Ngôn ngữ C++): void PhepNhan_NhiPhan(Big *d, ECn *P, ECn *Q){ int i, n; n = logb2(d->getbig()); /* Ham lay so bit cua khoa bi mat*/ *Q = *P; for(i=n-2; i>=0; i–){ *Q+=*Q; if (mr_testbit(d->getbig(),i)==1) *Q+=*P; /* Ham kiem tra bit */ } } 137 Nguyễn Hữu Hùng Thuật tốn - Mã nguồn có sẵn Phương pháp cửa sổ NAF (Ngôn ngữ C): void ecurve_mult(_MIPD_ big e,epoint *pa,epoint *pt){ nb=logb2(d); /*So bit cua khoa bi mat */ for (i=nb-2;i>=1;) { /* Tinh windows naf */ n=mr_naf_window(h, d, i, &nbs, &nzs, WINDOWS_SZ); // h = 3d for (j=0;j0) ecurve_add(table[n/2],pt); if (ngetbig()); Q0 = *P; for(i=n-2; i>=0; i–){ Q0+=Q0; if (mr_testbit(d->getbig(),i)==1) Q0+=*P; else {Q1=Q0; Q1+=*P;} } *Q=Q0; } Cài đặt Thuật toán - Phương pháp kết hợp (Ngôn ngữ C): void PhepNhan_Kethop(Big *d, ECn *P, ECn *Q){ epoint_copy(pa,pt); nb=logb2(d); for (i=nb-2;i>=1;) { n=mr_naf_window(h, d, i, &nbs, &nzs, WINDOWS_SZ); for (j=0;j0) {ecurve_add(table[n/2],pt); epoint_copy(pt,Q1); ecurve_sub(table[n/2],Q1);} if (n

Ngày đăng: 13/11/2020, 09:28

Xem thêm:

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN