Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 43 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
43
Dung lượng
793,95 KB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HỒ CHÍ MINH BÁO CÁO TIỂU LUẬN MÔN HỌC Tìm hiểu về mật mã trên đường cong Elliptic Môn học: Mã hoá và thám mã Ngành: CÔNG NGHỆ THÔNG TIN Giảng viên: TS Vũ Thanh Hiền Nhóm học viên thực hiện MSHV Họ và Tên Lớp 2241860006 Trương Lâm Hữu Lộc 22SCT11 2241860001 Trần Minh Duyệt 22SCT11 Tháng 10 - 2022 Mật mã trên đường cong Elliptic MỤC LỤC Danh mục hình ảnh .3 Chương 1: Hệ mật mã khóa công khai .4 1.1 Giới thiệu 4 1.2 Lý thuyết số 7 1.2.1 Một số khái niệm .7 1.2.2 Định lý Fermat 9 1.2.3 Phép logarit rời rạc 10 1.3 Bảo mật, Chứng thực và Chống chối bỏ 11 1.4 Trao đổi khóa 12 1.4.1 Trao đổi khóa công khai 12 1.4.2 Dùng mã hóa công khai để trao đổi khóa bí mật .14 1.5 Phương pháp trao đổi khóa Diffie - Hellman 14 Chương 2: Hệ mật đường cong Elliptic 17 2.1 Đường cong Elliptic 17 2.1.1 Định nghĩa .17 2.1.2 Cộng các điểm trên đường cong Elliptic 18 2.1.2.1 Trường hợp 2 điểm không trùng nhau .20 2.1.2.2 Trường hợp 2 điểm trùng nhau 20 2.1.3 Nhân vô hướng các điểm trên đường cong Elliptic 21 2.1.4 Nhóm (+) của các điểm trên đường cong Elliptic 23 2.1.5 Đường cong Elliptic trên trường hữu hạn 26 2.1.5.1 Trường hữu hạn 26 2.1.5.2 Tổng số điểm của đường cong Elliptic trên trường hữu hạn Fq 28 2 2.2 Mật mã trên đường cong Elliptic 31 2.2.1 Thiết lập cơ sở 31 2.2.1 Bài toán lô ga rít rời rạc (DLP) trên đường cong elliptic 31 Bài toán lô-ga-rít rời rạc trên đường cong Elliptic (ECDLP) .32 2.2.2 Trao đổi khóa 32 2.2.2.1 Trao đổi khóa Diffie-Hellman ECDH .32 2.2.2.2 Tạo khóa bí mật chia sẻ ECMQV .33 2.2.3 Mã hóa - Giải mã .34 2.2.3.1 Mã hóa Massey-Omura .34 2.2.3.2 Mã hóa ElGamal .35 2.2.3.3 Mã hóa ECIES 35 2.2.4 Các hệ chữ ký trên đường cong Elliptic: 37 2.2.4.1 Sơ đồ chữ ký số Elgamal Elliptic .37 2.2.4.2 Chuẩn chữ ký số Elliptic (ECDSA) 37 2.3 Nhúng số vào điểm trên đường cong Elliptic 38 2.3.1 Chuyển thông báo thành số nguyên thuộc Fp 38 2.3.2 Nhúng bản rõ 39 2.4 Độ an toàn của hệ mật trên đường cong Elliptic 40 Tài liệu tham khảo 42 3 Danh mục hình ảnh Hình 1 Mô hình mã hóa đối xứng .5 Hình 2 Bảng giá trị modulo với n = 19 .11 Hình 3 Mô hình bảo mật với mã hóa công khai .12 Hình 4 Mô hình chống chối bỏ với mã hóa công khai .12 Hình 5 Mô hình kết hợp bảo mật, chúng thực và chống chối bỏ 13 Hình 6 Trao đổi khóa công khai tự phát 13 Hình 7 Trao dổi khóa công khai dùng trung tâm chứng thực 14 Hình 8 Thiết lập khóa phiên bí mật bằng mã hóa khóa công khai 15 Hình 9 Tấn công Man in the middle với phương pháp Diffie - Hellman 16 Hình 10 Bảo vệ khóa Diffie – Hellman bằng khóa công khai 17 Hình 11 Phép cộng trên đường cong Elliptic 20 Hình 12 Ví dụ về tính chất kết hợp trên đường cong Elliptic 23 4 Chương 1: Hệ mật mã khóa công khai 1.1 Giới thiệu Xét mô hình mật mã cổ điển với Alice (người gửi) và Bob (người nhận), chọn một khóa bí mật K Sau đó dùng K để mã hóa e K và luật giải mã dK Trong hệ mật này dK hoặc giống eK hoặc dễ dàng được phân tích từ eK (ví dụ trong hệ mật DES quá trình giải mã hoàn toàn tương tự với quá trình mã hóa nhưng với trình tự ngược lại) Các hệ mật như thế này được gọi là hệ mật khóa bí mật, nếu để lộ key thì tính an toàn của hệ thống sẽ không còn được đảm bảo Nhược điểm của hệ mật này được thể hiện ở hai khía cạnh sau: ● Vấn đề trao đổi khóa giữa người gửi và người nhận: Cần phải có một kênh an toàn để trao đổi khóa sao cho khóa phải được giữ bí mật chỉ có người gửi và người nhận biết Điều này rất không hợp lý khi mà ngày nay, khối lượng thông tin luân chuyển trên khắp thế giới là rất lớn Việc thiết lập một kênh an toàn như thế sẽ tốn kém về mặt chi phí và chậm trễ về mặt thời gian ● Tính bí mật của khóa: Không có cơ sở quy trách nhiệm nếu mà khóa bị tiết lộ Dựa trên cơ sở đó vào năm 1976 Whitfield Diffie và Martin Hellman đã tìm ra một phương pháp mã hóa khác mà có thể giải quyết được vấn đề trên, đó là mã hóa khóa công khai (public key cryptography) hay còn được gọi là mã hóa bất đối xứng (asymmetric cryptography) Đây có thể xem là một bước đột phá quan trọng nhất trong lĩnh vực mã hóa Xét lại mô hình mã hóa đối xứng: Hình 1 Mô hình mã hóa đối xứng 5 Để khắc phục điểm yếu của mã hóa đối xứng người ta tập trung vào nghiên cứu theo hướng: có phương pháp nào để việc mã hóa và giải mã dùng hai khóa khác nhau hay không? Có nghĩa là C = E(P, K1) và P = D(C, K2) Nếu thực hiện được như vậy thì chúng ta sẽ có hai phương án tiến hành: ● Phương án 1: Người nhận (Bod) giữ bí mật khóa K2, còn khóa K1 thì công khai cho tất cả mọi người biết Alice muốn gửi dữ liệu cho Bob thì dùng khóa K1 để mã hóa Bob dùng khóa K2 để giải mã Giả sử có một người là Charlie là kẻ tấn công, hắn biết khóa K1 nhưng lại không thể dùng chính K1 để giải mã mà phải dùng K2 Do đó chỉ có duy nhất Bob mới có thể giải mã được Điều này đảm bảo tính bí mật của quá trình truyền dữ liệu Ưu điểm của phương pháp này là không cần phải truyền khóa K1 trên kênh an toàn ● Phương án 2: Người gửi (Alice) giữ khóa bí mật K1, còn khóa K2 thì công khai cho tất cả mọi người biết Alice muốn gửi dữ liệu cho Bob thì dùng khóa K1 để mã hóa Bob dùng K2 để giải mã Ở đây Charlie cũng biết khóa K2 nên hắn cũng có thể giải mã được Do đó phương pháp này không đảm bảo tính bí mật Tuy nhiên tính chất chứng thực và tính chống chối bỏ lại được đảm bảo Vì chỉ có duy nhất Alice biết được khóa K1, nên nếu Bob dùng K2 để giải mã bản tin, thì điều đó có nghĩa là Alice là người gửi bản mã Nếu Charlie cũng có khóa K1 để gửi bản mã thì Alice sẽ bị quy trách nhiệm làm lộ khóa K1 Trong phương án này cũng không cần phải truyền K2 trên kênh an toàn Nhận thấy nếu kết hợp phương án 1 và phương án 2 thì mô hình đề xuất có thể khắc phục được toàn bộ nhược điểm của mã hóa đối xứng Trong hai phương án, một khóa được giữ bí mật chỉ một người biết, còn khóa kia được công khai Do đó mô hình mã hóa trên được gọi là mã hóa khóa công khai (hay mã hóa bất đối xứng) Để thuận tiện ta quy ước lại các ký hiệu như sau: ● Khóa bí mật hay private key trong mô hình trên sẽ được ký hiệu là KS ● Khóa công khai hay public key được ký hiệu là KP ● Bản rõ ký hiệu là M còn bản mã giữ nguyên ký hiệu là C ● Phương án 1 viết lại thành: C = E (M, KS) M = D (C, KP) ● Phương án 2 viết lại thành: C = E (M, KP) M = D (C, KS) Vấn đề còn lại ở đây là liệu có tồn tại một mô hình mã hóa và giải mã dùng hai khóa khác nhau như vậy không? Dĩ nhiên là K P và KS không thể nào hoàn toàn 6 độc lập với nhau Phải có một mối quan hệ giữa hai khóa thì chúng ta mới có thể tiến hành mã hóa và giải mã được Có nghĩa là K S = f(KP) Tuy nhiên, một yêu cầu rất quan trọng là việc tính KS = f(KP) phải là bất khả thi về mặt thời gian Nếu nguyên tắc này bị vi phạm thì việc giữ bí mật khóa KS không còn ý nghĩa nữa vì từ khóa công khai KP có thể lần lại khóa KS Để có được cạp khóa KS và KP thỏa mãn, người ta thường dùng các hàm một chiều (one way function) Các hàm một chiều có tính chất là hàm nghịch đảo của chúng rất khó thực hiện Sau đây là ví dụ về hàm một chiều: Việc sinh ra hai số nguyên p, q và tính tích N = pq thì thực hiện dễ dàng Tuy nhiên nếu chỉ cho trước N và thực hiện phân tích N để tìm lại hai số nguyên p, q là việc hoàn toàn bất khả thi về mặt thời gian Có rất nhiều phương pháp mã hóa thuộc loại mã hóa công khai: ● Hệ mật RSA: Độ bảo mật của hệ RSA dựa trên độ khó của việc phân tích ra thừa số nguyên lớn ● Hệ mật Merkle - Hellman: Dựa trên tính khó giải của bài toán tổng các tập con (bài toán này là bài toán NP đầy đủ - là một lớp khá lớn các bài toán không có giải thuật được biết trong thời gian đa thức) Tuy nhiên tất cả các hệ mật xếp ba lô khác nhau đều bị chứng minh là không an toàn (Ngoại trừ Chor-Rivest) ● Hệ mật McEliece: Dựa trên lý thuyết mật mã đại số và vẫn được coi là an toàn McEliece giải mã cho các mã tuyến tính (Cũng là một bài toán NP đầy đủ) ● Hệ mật ElGamal: Dựa trên tính khó giải của toán logarithm rời rạc trên các trường hữu hạn ● Hệ mật Chor-Rivest: Cũng được coi một hệ mật xếp ba lô Tuy nhiên nó vẫn được coi là an toàn ● Hệ mật trên đường cong Elliptic: Các hệ mật này là biến tướng của hệ mật khác (Hệ mật ElGamal), chúng làm việc trên các đường cong Elliptic chứ không phải là trên các trường hữu hạn Hệ mật này đảm bảo độ mật với số khóa nhỏ hơn các hệ mật khóa công khai khác Một chút ý quan trọng là một hệ mật khóa công khai không bao giờ có thể đảm bảo được độ mật tuyệt đối (an toàn vô điều kiện) Sở dĩ như vậy là khi nghiên cứu một bản mã, y có thể mã lần lượt các bản tin rõ bằng luật mã hóa công khai eK cho tới khi tìm được bản rõ duy nhất x đảm bảo y = e K (x) Bản rõ này chính là kết quả giải mã của y Bởi vậy ta chỉ nghiên cứu độ mật về mặt tính toán của các hệ mật này Khi nghiên cứu về hệ mật khóa công khai có một khái niệm cần phải tìm hiểu đó là hàm cửa sập một chiều (one way trapdoor functions) Ta sẽ định nghĩa 7 khái niệm này một cách không hình thức Hàm mã hóa công khai e K của Bob phải là một hàm dễ tính toán Song việc tìm hàm ngược (hàm giả mã) rất khó khăn (đối với bất kỳ ai không phải là Bob) Đặc tính này thường được gọi là đặc tính một chiều Bởi vậy điều kiện cần thiết là eK phải là hàm một chiều Các hàm một chiều rất quan trọng trong mật mã học, chúng rất quan trọng trong các hệ mật khóa công khai và trong nhiều lĩnh vực khác Đáng tiếc là mặc dù có rất nhiều hàm được coi là hàm một chiều nhưng cho đến nay vẫn không tồn tại một hàm nào có thể chứng minh được là hàm một chiều Sau đây là một ví dụ về một hàm được coi là hàm một chiều Giả sử n là tích của hai số nguyên tố p và q, giả sử b là một số nguyên dương Khi đó ta xác định ánh xạ f: Z n ⟶ Zn là f(x) = xb mod n (với b và n đã được chọn thích hợp thì đây chính là hàm mã RSA) Để xây dựng một hệ mật khóa công khai thì việc tìm được một hàm một chiều vẫn chưa đủ Ta không muốn eK là hàm một chiều đối với Bob vì anh ta phải có khả năng giải mã các bản tin nhận được một cách hiệu quả Điều cần thiết là Bob phải có một cửa sập chứa thông tin bí mật cho phép dễ dàng tìm hàm của eK Như vậy Bob có thể giải mã một cách hiệu quả vì anh ta có một thông tin tuyệt mật về khóa Bởi vậy một hàm được gọi là cửa sập một chiều (one way trapdoor functions) nếu nó là hàm một chiều và nó trở nên dễ tính ngược nếu biết một cửa sập nhất định 1.2 Lý thuyết số 1.2.1 Một số khái niệm Phép chia modulo Phép chia modulo là phép chia lấy phần dư Ví dụ: 27 mod 8 = 3 35 mod 9 = 8 Một cách tổng quát: a mod n = r với a ≥ 0; n > 0; 0 ≤ r ≤ n-1 Nếu hai số a, b có cùng số dư trong phép chia cho n thì ta nói rằng a và b là đồng dư trong phép chia modulo n, phép so sánh đồng dư được ký hiệu bằng dấu: a ≡ b (mod n) hay viết tắt là a ≡ b mod n 8 Có thể thấy phép toán modulo phân hoạch tập số tự nhiên N thành n lớp tương đương đồng dư ứng với các giá trị của r trong tập {0, 1, 2, 3…,n1} Ví dụ với n = 4 ta có 4 lớp tương đương sau: {0, 4, 8, 12, 16 } {1, 5, 9, 13, 17 } {2, 6, 10, 14, 18…} {3, 7, 11, 15, 19…} Tính chất của phép modulo Cho a, b và n là các số nguyên, phép modulo có các tính chất: (a + b) mod n = [(a mod n) + (b mod n)] mod n (a - b) mod n = [(a mod n) - (b mod n)] mod n (a � b) mod n = [(a mod n) � (b mod n)] mod n Ước số Nếu a mod n = 0 (viết cách khác của a ≡ 0 mod n) thì có nghĩa là a chia hết cho n, hay n là ước số của a Ước số chung lớn nhất của hai số: ký hiệu là gcd(a, b) Để tìm UCLN của hai số a, b chúng ta có thể sử dụng thuật toán Euclid Số nguyên tố Một số p được gọi là số nguyên tố nếu p chia hết cho 1 và chính nó, ngoài ra không chia hết cho số nào khác từ 2 đến p - 1 Số nguyên tố cùng nhau Hai số nguyên a, b được gọi là nguyên tố cùng nhau nếu UCLN của a và b là 1 Ký hiệu: a⏊b Ví dụ: 3⏊8, 7⏊9 Hai số 20 và 15 không nguyên tố cùng nhau vì UCLN của chúng là 5 Phần tử nghịch đảo trong phép nhân modulo Nếu hai số nguyên a và n nguyên tố cùng nhau, thì tổn tại một số nguyên w sao cho: a.w ≡ 1 mod n Ta gọi w là phần tử nghịch đảo của a trong phép modulo cho n và ký hiệu là a-1 Ví dụ: n = 10, a = 7 là hai số nguyên tố cùng nhau, do đó tìm được a -1 = 3 (21 ≡ 1 mod 10) n = 10, a = 2 không phải là hai số nguyên tố cùng nhau, ta có bảng phép nhân Trong bảng trên không tồn tại số a-1 sao cho a.a-1 đồng dư 1 mod 10 Vậy không tồn tại phần tử nghịch đảo Để tính a -1 có thể dùng thuật toán Euclid mở rộng 9 Tính chất phần tử sinh của có phần tử sinh nếu và chỉ nếu n = 2, 4, p k hoặc 2pk, trong đó p là một số nguyên tố lẻ và k ≥ 1 Đặc biệt, nếu p là một số nguyên tố thì có phần tử sinh Nếu là một phần tử sinh của thì: Giả sử rằng là một phần tử sinh của khi đó cũng là một phần từ của nếu và chỉ nếu Từ đó ta rút ra rằng là cyclic thí số cá phần tử sinh là là một phần của nếu và chỉ nếu đối với mỗi nguyên tố p của 1.2.2 Định lý Fermat Định lý: Nếu p là số nguyên tố và a là số nguyên không chia hết cho p thì a p-1 ≡ 1 mod p Chứng minh: Xét tập X gồm p-1 phần tử: X = {a mod p, 2a mod p, …, (n-1)a mod p} Ta có hai nhận định sau: - Không có phần tử nào của tập X bằng 0 vì a nguyên tố cùng nhau với p - Không tồn tại hai phần tử thứ i và thứ j (i ≠ j) sao cho: ia mod p = ja mod p Vì a nguyên tố cùng nhau với p nên tồn tại a -1 trong phép modulo p Do đó nếu ia ≡ ja mod p thì iaa-1 ≡ jaa-1 mod p nghĩa là i ≡ j mod p Điều này trái với giả thiết i ≠ j Từ hai nhận xét trên ta suy ra các phần tử của X sẽ là một hoán vị các giá trị {1, 2, 3…, p-1} Do đó: a � 2a � …(p-1)a ≡ [1 � 2 � … (p-1)] mod n a � a � … � a = ap-1 ≡ 1 mod n (ĐPCM) Sau đây là một sốt ví dụ của Fermat p = 5, a = 74 => 49.49 = 2401, 2401 ≡ 1 mod 5 p = 7, a = 46 => 64.64 = 4096, 4096 ≡ 1 mod 5 1.2.3 Phép logarit rời rạc Ta định nghĩa phép lũy thừa modulo như hình, để tính y từ a, x từ n và các số nguyên: y = ax mod n = (a.a…a) mod với x số a nhân với nhau 10 en(S, T1 + T2) = en(S, T1)en(S, T2) Chứng minh có thể xem trong [7] Giả thiết {T1, T2} là cơ sở của E[n], mỗi phần tử trong E[n]đều có thể biểu diễn dưới dạng tổ hợp tuyến tính m1T1 + m2T2 α là một tự đồng cấu trong E[n], n là một số nguyên không chia hết bởi char(K) Tồn tại các số a, b, c, d ∈ Z sao cho: Do đó mỗi tự đồng cấu α đều có thể được biểu diễn bởi ma trận 2 × 2: Bổ đề 6 α là một tự đồng cấu trong E[n], n là một số nguyên không chia hết bởi char(K) khi đó det(αn) ≡ deg(α) mod n Chứng minh Đặt ζ = en(T1, T2), theo bổ đề 1.6.5 ta có: ζdeg(α) = en(α(T1), α(T2)) = en(aT1 + cT2, bT1 + dT2) = en(T1, T1)aben(T1, T2)aden(T2, T1)cben(T2, T2)cd = ζad−bc = ζdet(αn) Nếu α, β là 2 tự đồng cấu trên E, và a, b là các số nguyên thì tự đồng cấu aα+bβ được định nghĩa như sau: (aα + bβ)(P ) = aα(P ) + bβ(P ) Bổ đề 7 deg(aα + bβ) = a2 deg α + b2 deg β + ab(deg(α + β) − deg α − deg β) Chứng minh Biểu diễn các tự đồng cấu α, β bằng các ma trận αn, βn (với một số cơ sở trong E[n]), theo đó aα + bβ sẽ được biểu diễn bằng aαn + bβn Áp dụng công thức (1.40) ta có: det(aαn + bβn) = a2 det(αn) + b2 det(βn) + ab(det(αn + βn) − det(αn) − det(βn)) Theo bổ đề 1.6.6 chúng ta sẽ có: deg(aα + bβ) = a2 deg(α) + b2 deg(β) + ab(deg(α + β) − deg(α) − deg(β)) Định lý 1.6.8 (Hasse) Nếu E là đường cong Elliptic trên trường , và # E() là tổng số điểm trên đường cong đó thì: q + 1 − 2≤ #E() ≤ q + 1 + 2 Chứng minh Trước tiên xét ánh xạ Probenius được định nghĩa như sau: →, Có thể viết một cách khác: φq(x, y) = (xq, yq), 29 φq(∞) = ∞ Khi thay các giá trị xq, yq vào phương trình (1.1) dễ thấy (x, y) cũng nằm trên đường cong E Ánh xạ φq là một tự đồng cấu và có thể biểu diễn bằng hàm đa thức hữu tỷ có bậc là q Đạo hàm của xq là qxq−1 sẽ bằng 0 bởi vì q = 0 trong trường Do đạo hàm bằng 0 nên φq là khả tách (separable) Bởi vì φq là tự đồng cấu trong E do đó φ2 = φq ◦ φq cũng là tự đồng cấu và φn cũng là tự đồng cấu trong E Phép nhân với −1 cũng là tự đồng cấu do đó tổng φn – 1 là đồng cấu trong E φq là khả tách (separable) nhưng φq − 1 sẽ là bất khả tách do đó bậc của nó sẽ bằng số phần tử của hạch φq − 1 có nghĩa là số điểm trên đường cong E sẽ là: #E() = deg(φq − 1) Với các số nguyên r, s, áp dụng bổ đề 1.6.7 ta có: deg(rφq − s) = r2 deg(φq) + s2 deg(−1) + rs(deg(φq − 1) − deg(φq) − deg(−1)) Bởi vì deg(−1) = 1 và deg(φq) = q nên: deg(rφq − s) = r2q + s2 + rs(deg(φq − 1) − q − 1)) Đặt a = −(deg(φq − 1) − q − 1) = q + 1 − #E(), bởi vì vì deg(rφq − s) ≥ 0 suy ra r2 q + s2 + rsa ≥ 0 hay với mọi r, s ta có: Do đó ∆ = a2 − 4q ≤ 0 hay là cũng có nghĩa là và đó là điều phải chứng minh 2.2 Mật mã trên đường cong Elliptic 2.2.1 Thiết lập cơ sở Alice muốn gửi một văn bản, thường được gọi là bản rõ (Plaintext), tới Bob Cô ấy mã hóa văn bản để thu được bản mã (Ciphertext) Để mã hóa văn bản, Alice sử dụng một khóa mã hóa (Encryption key) Bob sử dụng một khóa giải mã (Decryption key) để giải mã bản mã nhận được Có hai cách mã hóa cơ bản Trong mật mã đối xứng (Symmetric Encryption), khóa mã hóa và khóa giải mã là như nhau Một dạng khác của mã hóa là mật mã khóa công khai (Public Key Encryption), hoặc mật mã không đối xứng (Asymmetric Encryption) 2.2.1 Bài toán lô ga rít rời rạc (DLP) trên đường cong elliptic Định nghĩa : Giả sử G là một nhóm cyclic hữu hạn có cấp n Gọi là phần tử sinh của G và là một phần tử cũng thuộc G Khi đó Lô-ga-rít rời rạc của 30 theo cơ sở trên G, được ký hiệu là log, là một số nguyên duy nhất x với 0 x n - 1 sao cho = x Trên mọi cấu trúc nhóm cyclic nếu biết trước và x mà cần tính = x thì đây là một việc dễ và được thực hiện trong thời gian đa thức Ngược lại biết , mà tính x thì đây là một việc nói chung là khó và được thực hiện trong thời gian hàm mũ Độ khó của bài toán Lô-ga-rít cũng phụ thuộc vào cấu trúc đại số mà trên đó nó được xác định Giả sử P là một điểm có bậc hữu hạn trên đường cong elliptic, khi đó tập với phép công điểm là nhóm cyclic với P là phần tử sinh Người ta chứng minh được rằng, nếu số điểm trên đường cong elliptic là số nguyên tố N thì mọi điểm P trên nó đều là phần tử sinh của nó, nghĩa là P có bậc N Bài toán lô-ga-rít rời rạc trên đường cong Elliptic (ECDLP) Cho trước một đường cong Elliptic E xác định trên trường hữu hạn GF(q) Giả sử P là một điểm có bậc n và Q là một điểm của E Hãy xác định số nguyên k, 0 k n - 1 sao cho Q = kP nếu số nguyên k như vậy tồn tại Còn hai bài toán liên quan nữa là bài toán Diffie-Hellman Elliptic ( ECDHP) và bài toán quyết định Diffie-Hellman Elliptic (ECDDHP) Bài toán ECDHP: Cho trước các điểm P, aP và bP của E trên GF(q) Hãy tính abP Rõ ràng bài toán này có thể giải được nếu bài toán ECDLP là giải được Bài toán ECDDHP: Cho trước P, aP và bP của E trên GF(q) và cho trước điểm Q E Hãy xác định xem Q = abP hay không? M1:= Bài toán lô-ga-rít rời rạc trên đường cong Elliptic ( ECDLP) trên trường hữu hạn GF(q) được sử dụng để xây dựng các thuật toán mật mã có độ an toàn cao nhất hiện nay vì người ta chưa tìm được các thuật toán có thời gian tiểu hàm mũ tấn công được bài toán này 2.2.2 Trao đổi khóa Trong các mục còn lại, chuyên đề sẽ đề cập đến một số thuật toán ứng dụng trong trao đổi khóa, mã hóa và ký số cơ bản Chuẩn do công ty Certicom xây dựng [1] mô tả chi tiết việc triển khai ứng dụng ECC Tác giả D Hankerson [2] phân tích việc triển khai ECC bằng phần mềm, trong khi đó 31 tác giả L Cao [3] phân tích thực hiện các giao thức cơ bản của ECC bằng phần cứng 2.2.2.1 Trao đổi khóa Diffie-Hellman ECDH Năm 1998, Laurie và cộng sự đề xuất giao thức trao đổi khóa dựa trên ECC [4] Sau đó giao thức này đã được đưa vào các tiêu chuẩn ANSI X9.42, ANSI X9.63 và IEEE P1363 Hai bên A và B cần tạo khóa phiên bí mật trao đổi trong một kênh truyền công khai, hai bên cùng thỏa thuận điểm cơ sở P trên E Bên A tạo khóa bí mật dA và gửi giá trị dAP cho bên B, ngược lại bên B tạo khóa bí mật dB nhân với P sau đó gửi lại cho A Khi đó khóa phiên của bên A sẽ là KA = dAdBP, và của bên B sẽ là KB = dBdAP Dễ dàng nhận thấy KA = KB, khóa này chỉ riêng hai bên A và B có thể tính được Xem sơ đồ dưới đây: Bên A Bên B dA dAP dAP dBP dBP KA = dAdBP dB KB = dBdAP Đánh giá bảo mật: Để tìm được khóa chia sẻ KA hoặc KB, Hacker buộc phải tìm được cả 2 khóa bí mật d A, dB, trong khi chỉ có thể bắt được thông tin trên đường truyền là d AP và dBP, khi biết P, Hacker buộc phải giải bài toán Logarithm rời rạc dA = logP(dAP) và dB = logP(dBP) và đây là bài toán khó không giải được trong thời gian đa thức 2.2.2.2 Tạo khóa bí mật chia sẻ ECMQV Tên đầy đủ của giao thức là Elliptic Curve Menezes-Qu-Vanstone Thuật toán đã được đưa vào trong các chuẩn ANSI X9.63, IEEE 13632000, và ISO/IEC 15946-3 Theo các tiêu chuẩn này điểm cơ sở được ký hiệu là G thay vì là P như thường gặp Lược đồ này thường được sử dụng khi các bên A và B có cặp khóa công khai và bí mật cố định, tương ứng là (a, aG) và (c, cG) Bên A sinh cặp số ngẫu nhiên (b,bG) và bên B tương ứng sinh cặp số ngẫu (d,dG), và trao đổi 2 cặp nay cho nhau giá trị bG và dG Kí hiệu hàm x:E⏊N, lấy giá trị x của một điểm trên đường cong E Thuật toán: Tạo khóa bí mật chia sẻ ECMQV 32 INPUT: Các tham số của hệ mật (K, E, q, h, G), các số a, b, aG, bG, cG, dG OUTPUT: Khóa bí mật chia sẻ Q (chia sẻ với với đối tượng có khóa công khai cG) 1: n ← \log2(#k) 1/2 2: u← (x(bG)(mod 2n) + 2n 3: s ← b + ua((mod q) 4: v← (x(dG)(mod 2n) + 2n 5: Q ← s(dG + v(cG)) 6: if Q = ∞ then 7: Quay lại bưóc 1 8: end if 9: Trả về khóa Q Bên B có thể tính ra cùng số Q bằng cách thay (a, b, c, d) trong thuật toán trên bằng (c, d, a, b) Bên A sẽ có các giá trị uA, vA, sA và bên B sẽ có uB, vB , sB Dễ dàng nhận thấy [5]: uA = vB uB = vA QA = sA(dG + vA(cG)) = sA(d + vAc)G = sA(d + uBc)G = sAsBG QB = sB(bG + vB(aG)) = sB(b + vBa)G = sB(b + uAa)G = sBsAG QA = QB =Q Đánh giá bảo mật: Để hack được khóa chia sẻ, Hacker cần phải tính được các giá trị a, b, c, d, muốn vậy Hacker phải giải các bài toán Logarithm rời rạc a = logG(aG), b = logG(bG), c = logG(cG), d = logG(dG) Đây là các bài toán khó không thể giải được trong thời gian đa thức 2.2.3 Mã hóa - Giải mã Mô hình mã hóa dữ liệu sử dụng đường cong elliptic (Elliptic Curve Encryption Scheme - ECES) bao gồm 2 thao tác: mã hóa và giải mã Trước khi thực hiện việc mã hóa dữ liệu với Elliptic Curve, người gởi và người nhận cần phải sở hữu một cặp khóa công khai – khóa riêng Các giá trị sau được quy ước chung giữa người gởi và người nhận, gọi là các tham số chung của hệ thống mã hóa: • Đường cong elliptic curve E • Điểm P, P ∈ E Điểm P có bậc n (n × P = ∞) Quá trình tạo khóa được thực hiện như sau: • Chọn một số nguyên bất kỳ d, d ∈ [2, n − 2] Đây chính là khóa riêng • Tính giá trị của điểm Q = d × P ∈ E Đây chính là khóa công khai 33 2.2.3.1 Mã hóa Massey-Omura Massey-Omura là hai tác giả đề xuất lược đồ mã hóa được mô tả trong Patent vào năm 1986 Lược đồ mã hóa này ít được sử dụng trong thực tế nhưng nó lại có ý nghĩa về mặt lịch sử Bên A Bên B Biểu diễn thông điệp như M ∈ E (�II) Chọn mA | M1 = mAM M1 gcd(mA, N) = 1 M2 M 2 = m BM 1 Chọn mB | gcd(mB, N) = 1 Tính mA-1 ∈ �N M3 = mA-1 M2 M3 M = mB-1 M3 Dễ dàng nhận thấy: mB-1 mA-1mB mAM = M Đánh giá bảo mật: Muốn phá khóa trong lược đồ này, Hacker phải tìm được giá trị mA và mB để tìm các giá trị này Hacker lần lượt phải giải hai bài toán Logarithm rời rạc mA = logMM1 và mB = log M1M2, và đây là hai bài toán chưa giải được trong thời gian đa thức 2.2.3.2 Mã hóa ElGamal Trên cơ sở hệ mật ElGamal, lược đồ mã hóa được phát triển như sau: Bên A Bên B Thông điệp M ∈ E (�II) Chọn cặp khóa (xB, YB) | YB = xBP Chọn k, tính M1 = kP Tính M2 = M + kYB M1, M2 M1, M2 M = M2 - xBM1 Chứng minh tính đúng đắn của lược đồ mã hóa: M = M2 - xBM1 = M + kYB - xBM1 = M + k(xBP) - xB(kP) = M Đánh giá bảo mật: Để giải mã được văn bản M, Hacker buộc phải tìm được k và xB, do đó Hacker cần phải giải 2 bài toán Logarithm rời rạc k = logPM1 và xB = logPYB, và đây là hai bài toán khó 2.2.3.3 Mã hóa ECIES ECIES (The Elliptic Curve Integrated Encryption System) do Bellare và Rogaway đề xuất và là một biến thể của mã hóa dùng hệ mật ElGamal, 34 sau đó thuật toán này được đưa vào chuẩn ANSI X9.63 và ISO/IEC 15946-3, IEEE P1363a Tham số D = (q, FR, S, a, b, P, n, h) được chọn tương tự như với ECDSA Ở đây cần lựa chọn thêm các hàm mã hóa/giải mã đối xứng ký hiệu là eK(m) và dK(c) Trong đó m là bản rõ cần mã hóa, c là bản đã được mã Thuật toán mã hóa đối xứng được chọn ở đây để phục vụ quá trình mã hóa/giải mã được dễ dàng hơn và nhanh hơn so với các thuật toán bất đối xứng Ngoài ra thay vì sử dụng hàm băm đơn giản, ECIES sẽ sử dụng hai hàm băm sau: Message authentication code MACk (c): MAC: {0, 1}n � {0, 1}* ⟶ {0, 1}n Key derivation function K D(T, l): KD: E � N ⟶ {0, 1}* l là độ dài khóa (k1|| k2) {0, 1} là chuỗi bit có giá trị 0, 1 có độ dài n hoặc không xác định (*) Người nhận có cặp khóa công khai/bí mật là (Y, x) trong đó Y = xP Mã hóa ECIES INPUT: Văn bản cần mã hóa m, khóa công khai Y OUTPUT: Văn bản đã được mã hóa (U, c, r) 1: Chọn k ∈ [1, q-1] 2: U ⟵ kP 3: T ⟵ kY 4: (k1|| k2) ⟵ KD(T, l) 5: Mã hóa văn bản, c ⟵ Ek1(m) 6: Tính giá trị MAC cho văn bản mã hóa r = MACk2 (C) 7: Trả về return (U, c, r) Bên giải mã sẽ nhận được tập hợp (U, c, r) gồm các thành phần sau: U cần thiết để tính khóa phiên Diffie - Hellman T c là bản đã được mã hóa r được dùng để xác thực mã văn bản Giải mã ECIES INPUT: Văn bản mã hóa U, c, r, khóa bí mật x OUTPUT: Văn bản đã giải mã m hoặc thông báo “văn bản mã không hợp lệ” 1: T ⟵ xU 2: (k1|| k2) ⟵ KD(T, l) 3: Giải mã văn bản, m ⟵ Dk1(c) 4: If r ≠ MACk2(C) then 5: Xuất thông báo “văn bản không hợp lệ” 6: End if 35 7: Trả về văn bản đã được giải mã m Khóa phiên T sau khi được tính trong phần giải mã sẽ có giá trị giống như trong phần mã hóa, thật vậy: Đánh giá bảo mật: Để phá khóa được lược đồ này Hacker cần phải tìm được khóa bí mật x hoặc giá trị k bằng cách giải bài toán x = logPY và k = logPU, và đây là hai bài toán toán khó chưa giải được trong thời gian đa thức 2.2.4 Các hệ chữ ký trên đường cong Elliptic: 2.2.4.1 Sơ đồ chữ ký số Elgamal Elliptic Pha chuẩn bị: Alice chọn đường cong Elliptic E trên trường hữu hạn GF(q) sao cho bài toán ECDLP là khó trên E Alice chọn điểm A E (thường thì bậc N của điểm A là một số nguyên tố lớn), số nguyên bí mật a và tính B = aA Alice cũng chọn hàm : f : E Z Hàm f không cần có tính chất đặc biệt ngoại trừ ảnh của nó nên là lớn và chỉ có một số nhỏ các đầu vào có thể tạo ra một đầu ra bất kỳ cho trước Ví dụ: Nếu xét E trên GF(p) với p nguyên tố thì có thể lấy f(x,y) = x Thông tin công khai của Alice là E, GF(q), f, A và B Alice giữ a bí mật Số nguyên dương N cũng không nên được công bố công khai Alice tạo chữ ký số: 1 Alice biểu diễn thông báo là số nguyên m Nếu m > N thì chọn đường cong lớn hoặc sử dụng hàm băm cho m 2 Alice chọn số nguyên dương ngẫu nhiên k với (k,N) = 1 và tính R = kA 3 Alice tính s k-1(m - af(R)) (mod N) và thông báo cùng chữ ký là (m, R, s) Kiểm tra chữ ký số: 1 Bob lấy thông tin công khai của Alice 2 Bob tính V1 = f(R)B + sR và V2 = mA 3 Nếu V1 = V2 thì Bob tin tưởng chữ ký là hợp lệ Tính đúng đắn: 36 Chúng ta có sk m - af(R) (mod N) và do đó sk = m - af(R) + zN đối với một số nguyên z nào đó Bởi vậy skA = (m - af(R))A + zNA = (m af(R))A + O = (m - af(R))A Thế thì V 1 = f(R)B + sR = f(R)aA + skA = f(R)aA + (m - af(R)) = mA = V2 2.2.4.2 Chuẩn chữ ký số Elliptic (ECDSA) Chuẩn bị: Alice muốn ký thông báo m là một số nguyên dương thì Alice chọn đường cong Elliptic E trên trường hữu hạn GF(q) sao cho số điểm của E trên GF(q) là fr với r là số nguyên tố lớn và f là số nguyên dương nhỏ để cho thuật toán hiệu quả Alice chọn điểm cơ sở G của E trên GF(q) có bậc r Cuối cùng Alice chọn số nguyên dương a và tính Q = aG Alice công bố công khai thông tin sau đây: GF(q), E, r, G, Q Alice tạo chữ ký số: 1 Alice chọn số nguyên dương ngẫu nhiên k với 1 k < r và tính R = kG = (x,y) 2 Alice tính s = k-1(m + ax) (mod r) và tài liệu ký là (m, R, s) Bob kiểm tra chữ ký số: 1 Bob tính u1 = s-1m (mod r) và u2 =s-1x (mod r) 2 Bob tính V = u1G + u2Q 3 Bob tuyên bố chữ ký số hợp lệ nếu V = R Tính đúng đắn: Nếu thông báo được ký đúng thì đẳng thức kiểm tra đúng: V = u1G + u2Q = s-1mG + s-1xQ = s-1(mG + xaG) kG = R Sự khác nhau cơ bản của ECDSA và sơ đồ chữ ký số Elgamal Elliptic là thủ tục kiểm tra chữ ký số Trong sơ đồ Elgamal đẳng thức kiểm tra f(R)B + sR = mA đòi hỏi ba phép tính với một số nguyên lần một điểm và đây là những phần tốn kém nhất, trong khi đó ECDSA chỉ đòi hỏi hai phép tính như vậy Cải tiến này là nâng cao hiệu quả của ECDSA một khi cần nhiều lần kiểm tra chữ ký số và rất có giá trị trên thực tế 2.3 Nhúng số vào điểm trên đường cong Elliptic Ta biết rằng đối với mật mã khóa công khai, nếu Alice muốn gửi một thông báo cho Bob thì trước hết cô ấy phải chuyển nó vào một tập các số nguyên, sau đó dùng một kiểu biến đổi nào đó để mã hóa nó 37 Đối với mật mã trên đường cong elliptic, chúng ta làm việc với các dạng bao gồm các điểm trên đường cong Do đó vấn đề khởi đầu là nghiên cứu các phương pháp để đưa bản rõ về dạng điểm P trên đường cong elliptic Cần chú ý rằng ở giai đoạn này, ta không coi việc chuyển nói trên là một phép mã hóa để giữ bí mật 2.3.1 Chuyển thông báo thành số nguyên thuộc Fp Có nhiều phương pháp để thực hiện việc này Đây là một trong những phương pháp đó và nó được giới thiệu cũng nhằm làm rõ việc chuyển đổi một số thành điểm trên đường cong elliptic Xét việc chuyển đoạn thông báo gồm 3 ký tự thành một phần tử của trường F31013 cho (m1,m2,m3) là đơn vị thông báo như vậy, miZ27 (ký hiệu khoảng cách nhận giá trị 0) Tính x= m1.272 +m2 27+m3 Khi đó, x Fp nếu p ≥ 26.272 +26 27+26 = max{x : miZ27 , i=1 3} = 19682 Giả sử p = 41113, và thông báo LETS GET SEAFOOD cần được chuyển thành các phần tử của Fp Nó được tách thành những đoạn gồm 3 ký tự Kết quả như sau: Bản rõ (m1,m2,m3) PM = m1.272 +m2 27+m3 LET (12,5,20) 8903 SGE (19,7,5) 14045 TSE (20,19,5) 15098 AFO (1,6,15) 906 OD_ (15,4,0) 11043 2.3.2 Nhúng bản rõ Cách trực quan nhất để ánh xạ số nguyên x tới điểm P E(Fp) là tìm điểm P này có hoành độ là x Ví dụ, với đường cong y 2 = x3+2x-1 trên F41113 và phải nhứng từ CAT = 3(27)2+1.27+20 = 2234 Ta thấy điểm cần tìm là P = (2234,23945) E(F41113 ) Từ P, dễ dàng tìm lại CAT Người ta thấy có khoảng một nửa những giá trị x Fp là hoành độ của những điểm trên đường cong elliptic này Chẳng hạn, Map = 13.27 2 + 1.27+16 = 9520 không là thặng dư bậc 2 theo modulo 41113 nên không có điểm nào trên đường cong nhận 9520 làm hoành độ Cũng có khoảng một nửa x như vậy Ta thử làm như sau Khi x tăng dần x lên mỗi đơn vị cho đến khi được điểm P nhận giá trị mới đó làm hoành độ Ta có (9527) là điểm đầu tiên đạt tiêu chuẩn đó Thế thì MAP ↪(9527, 2121) Tuy nhiên, nếu chuyển 9527 về 38 cơ số 27 thì lại được 9527 = 13.27 2 + 1.27+23 = MAW Như thế , MAP, MAQ, MAR, …, MAW↪(9527, 2121) Ta có thể dễ dàng làm đúng đắn điều này bằng cách sử dụng ánh xạ x↪lx với số nguyên lớn l rồi sau đó nhúng lx Cần phải kiểm tra rằng trường của ta vẫn còn đủ lớn, nghĩa là max{lx} = l.19682 < p để có thể tìm lại lx duy nhất Khi đó ta thấy rằng x được ánh xạ tới duy nhất một điểm của E(F p) miễn là một trong các số f(lx), f(lx+1), …, f(lx+l-1) là thặng dư bậc 2 Xác suất để điều này thất bại, nghĩa là không tìm được duy nhất lx với x đã cho, là 1/2l Số nguyên l được gọi là tham số nhúng Ví dụ Vẫn đường cong nói trên nhưng trên trường F910307, và lấy l=32 Khi đó có xấp xỉ 1 trên 5000 triệu cơ hội sao cho không có số nào trong các số f(lx), f(lx+1), …, f(lx+31) là thặng dư bậc 2 Giả sử ta muốn nhúng YOU HAVE TWO HOURS trên đường cong elliptic này Bảng sau minh họa quá trình lặp Ta có thể thấy rằng chỉ có duy nhất một điểm đối vddieemrootj trong các giá trị rõ x Bản rõ X lx=32.x YOU 18651 596832 -1 ETW 4208 134656 -1 OHU 11166 357312 -1 ORS 15184 506048 -1 -1 -1 1 1 -1 -1 -1 HAV 5881 188192 1 1 -1 1 32x+i 596837 188192 134659 357313 506049 y tương ứng 678400 655701 728528 457834 833712 Giả sử đã biết tham số nhúng l, ta có thể dễ dàng chuyển một điểm trên đường cong elliptic trở về số nguyên x một cách duy nhất Giả sử ta có điểm P= (xp, yp) và cần tìm x Với l đủ lớn có thể giả thiết rằng xp = lx +m, với 0 ≤ m < l Khi đó , 39 và theo giả thiết nói trên thì m/l < 1 Vì thế x = Cần chú ý rằng ta có xác suất (1/2 l) để bất đẳng thức 0 ≤ m < l là không đúng 2.4 Độ an toàn của hệ mật trên đường cong Elliptic Sức mạnh ECC nằm ở sự phức tạp đối với thám mã khi mà phải xác định số ngẫu nhiên bí mật k từ kP và P Phương pháp nhanh nhất để giải bài toàn này là phương pháp phân tích S – Pollard Để pahs ECC độ phức tạp tính toán khi dùng phương pháp S – Pollard là 3,8.10 10 MIPS – năm với kích thước khóa 150 bit (Đây là số năm cần thiết với một hệ thống tính toán có tốc độc hàng triệu lệnh/giây) Để so sánh với phương pháp nhanh nhất phá RSA (là phương pháp sàng trường số để phân tích hợp số n thành tích của 2 số nguyên tố p và q) ta thấy rằng với n có kích thước 768 bit độ phức tạp tính toán là 2.10 8 MIPS – năm, với n có kích thước là 1024 bit, độ phức tạp tính toán là 3.10 11 năm Nếu độ dài khóa của RSA tăng lên tới 2048 bit thì cần 3.10 20 MIPS – năm, trong khi đó với ECC chỉ cần độ dài khóa là 235 bit đã yêu cầu tới 1,6.1028 MIPS - năm 40 Tài liệu tham khảo [1] C Research, Standards For Efficient Cryptography, SEC 1: Elliptic Curve Cryptography Certicom Corp, 2000 [2] D Hankerson, J L Hernandez, and A Menezes, “Software Implementation of Elliptic Curve Cryptography over Binary Fields,” CHES2000, vol 1965, pp.243–267, 2000 [3] L Gao, S Shrivastava, and G E Sobelman, “Elliptic Curve Scalar Multiplier Design Using FPGAs,” CHES’99, vol 1717, pp 257–268, 1999 [4] L Laurie, M Alfred, Q Minghua, S Jerry, and V Scott, “An Efficient Protocol for Authenticated Key Agreement,” Designs Codes and Cryptography, vol 28, no 2, 1998 [5] I F Blake, G Seroussi, and N P Smart, Advances in Elliptic Curve Cryptography Cambridge University Press, 2005 [6] D Hankerson, A Menezes, and S Vanstone, Guide to Elliptic Curve Cryptography Springer-Verlag, 2004 [7] L C Washington, Elliptic Curves Number Theory and Cryptography, Second Edition CRC Press, 2008 41 ... hệ mật xếp ba lô Tuy nhiên coi an tồn ● Hệ mật đường cong Elliptic: Các hệ mật biến tướng hệ mật khác (Hệ mật ElGamal), chúng làm việc đường cong Elliptic trường hữu hạn Hệ mật đảm bảo độ mật. .. Cộng điểm đường cong Elliptic Xét hai điểm đường cong Elliptic E Phép cộng hai điểm đường cong E định nghĩa sau: Trong , điểm giao điểm đường cong E đường thẳng qua Vì điểm nằm đường cong E nên... điểm đường cong Elliptic 21 2.1.4 Nhóm (+) điểm đường cong Elliptic 23 2.1.5 Đường cong Elliptic trường hữu hạn 26 2.1.5.1 Trường hữu hạn 26 2.1.5.2 Tổng số điểm đường cong Elliptic