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:
Hệ mật mã khóa công khai
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), trong đó một khóa bí mật K được dùng để mã hóa eK và giải mã dK; trong hệ mật này, dK thường giống với eK hoặc có thể dễ dàng được suy ra từ eK (ví dụ như DES, quá trình giải mã gần như ngược lại với quá trình mã hóa) Các hệ mật như vậy được gọi là hệ mật khóa bí mật và nếu khóa bị lộ thì tính an toàn của hệ thống sẽ bị phá vỡ 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 đòi hỏi một kênh an toàn để đảm bảo khóa được giữ bí mật và chỉ có người gửi lẫn người nhận mới biết Tuy nhiên, khi khối lượng thông tin luân chuyển trên toàn cầu ngày càng lớn, việc thiết lập và duy trì một kênh trao đổi khóa an toàn như vậy trở nên tốn kém về chi phí và gây chậm trễ về 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ở đó, năm 1976 Whitfield Diffie và Martin Hellman đã giới thiệu một phương pháp mã hóa mới có thể giải quyết các vấn đề trước đó, đó 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 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:
Để khắc phục nhược điểm của mã hóa đối xứng, người ta tập trung nghiên cứu xem liệu có thể dùng hai khóa khác nhau cho quá trình mã hóa và giải mã hay không Ý tưởng là C = E(P, K1) và P = D(C, K2) Nếu có thể thực hiện được, sẽ có hai phương án tiến hành được xem xét.
Phương án 1 thiết lập sự bảo mật dựa trên khóa công khai và khóa riêng: Bob giữ bí mật khóa K2, trong khi khóa K1 được công khai cho mọi người Khi Alice gửi dữ liệu cho Bob, cô ấy mã hóa bằng khóa K1 và Bob giải mã bằng khóa K2 Nếu Charlie – kẻ tấn công – biết khóa K1 nhưng không thể dùng khóa K2 để giải mã, dữ liệu vẫn an toàn trước xâm nhập Đây là mô hình mã hóa khóa công khai–khóa riêng, cho phép truyền tải thông tin an toàn ngay cả khi khóa công khai bị tiết lộ.
Để giải mã dữ liệu, hệ thống yêu cầu dùng khóa K2 để giải mã khóa K1, nên chỉ Bob mới có thể giải mã được và tính bí mật của quá trình truyền dữ liệu được đảm bảo Ưu điểm của phương pháp này là không cần phải truyền khóa K1 qua kênh an toàn, giúp tăng cường bảo mật cho thông tin được trao đổi.
● Phương án 2: Người gửi (Alice) giữ khóa bí mật K 1 , còn khóa K 2 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 K 1 để mã hóa Bob dùng K 2 để giải mã Ở đây Charlie cũng biết khóa K 2 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 K 1 , nên nếu Bob dùng K 2 để 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 K 1 để gửi bản mã thì Alice sẽ bị quy trách nhiệm làm lộ khóa K 1 Trong phương án này cũng không cần phải truyền K 2 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.
Mô hình mã hóa được mô tả ở trên là mã hóa khóa công khai (hay còn gọi là mã hóa bất đối xứng) Để thuận tiện, ta quy ước lại các ký hiệu và các khái niệm liên quan 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:
● Phương án 2 viết lại thành:
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à KP và KS không thể hoàn toàn độ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à KS = 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ì từ khóa công khai KP có thể lộ 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, có tính chất là nghịch đảo của chúng rất khó thực hiện Ví dụ minh họa là việc sinh hai số nguyên p, q và tính N = pq; việc tạo N dễ dàng, nhưng phân tích N để tìm lại p và q lại hoàn toàn bất khả thi về 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.
Merkle-Hellman là một hệ mật dựa trên tính khó của bài toán tổng các tập con, tức bài toán knapsack, vốn được xem là NP-đầy đủ và chưa có giải thuật thời gian đa thức cho mọi trường hợp Tuy nhiên, hầu hết các hệ mật knapsack đều đã được 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 đủ), từ đó tăng cường tính bảo mật của hệ nhờ tính phức tạp của quá trình giải mã và sự khó khăn khi tấn công các mã tuyến tính nà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 (ECC) là biến thể của hệ ElGamal, hoạt động trên các đường cong Elliptic chứ không phải trên các trường hữu hạn Nhờ đặc trưng này, hệ mật Elliptic đạt được độ bảo mật tương đương với các hệ mật khóa công khai khác nhưng với kích thước khóa nhỏ hơn nhiều, tối ưu hóa cả hiệu suất mã hóa và lưu trữ khóa.
Trong một hệ mật khóa công khai, việc đạt được độ bảo mật tuyệt đối (an toàn vô điều kiện) là không thể, bởi kẻ tấn công có thể thử mã hóa tuần tự các thông điệp rõ bằng khóa công khai eK cho tới khi tìm được bản rõ x sao cho y = eK(x); bản rõ này chính là kết quả giải mã của bản mã y Vì vậy, chúng ta chỉ có thể đánh giá độ bảo mật ở khía cạnh tính toán, dựa trên chi phí và khả năng thực hiện các cuộc tấn công tính toán để đo lường mức độ an toàn của hệ mật.
Trong nghiên cứu hệ mật khóa công khai, một khái niệm quan trọng là hàm cửa sập một chiều (one way trapdoor function) Ta định nghĩa khái niệm này một cách không hình thức: hàm mã hóa công khai eK của Bob phải dễ tính toán, trong khi việc tìm hàm ngược để giải mã lại rất khó đối với bất kỳ ai ngoài Bob Tính chất này gọi là đặc tính một chiều Vì vậy, điều kiện cần thiết là eK phải là một hàm một chiều để đảm bảo an toàn cho việc giải mã chỉ có thể thực hiện bởi chủ thể có cửa sập.
Lý thuyết số
Phép chia modulo là phép chia lấy phần dư
Một cách tổng quát: a mod n = r với a ≥ 0; n > 0; 0 ≤ r ≤ n-1
Trong số học, nếu hai số a và b cho cùng dư sau phép chia cho n thì ta nói chúng đồng dư modulo n Phép so sánh đồng dư được ký hiệu bằng dấu ≡, cụ thể là a ≡ b (mod n) và hay viết tắt là a ≡ b mod n.
Phép toán modulo phân hoạch tập số tự nhiên N thành n lớp đồng dư, mỗi lớp tương ứng với một dư r thuộc tập {0, 1, 2, , n−1} Mỗi lớp đồng dư chứa các số tự nhiên có cùng phần dư khi chia cho n và khác với các lớp còn lại Ví dụ với n = 4, ta có 4 lớp đồng dư: lớp dư 0 gồm các số 0, 4, 8, ; lớp dư 1 gồm 1, 5, 9, ; lớp dư 2 gồm 2, 6, 10, ; lớp dư 3 gồm 3, 7, 11,
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 Ước số
Khi a mod n = 0 (hay a ≡ 0 mod n) nghĩa là a chia hết cho n, tức n là ước số của a Ở hai số a và b, ước số chung lớn nhất được ký hiệu là gcd(a, b) Để tìm UCLN của hai số này, ta có thể sử dụng thuật toán Euclid, một phương pháp hiệu quả giúp xác định gcd nhanh chóng.
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 và b được coi là nguyên tố cùng nhau khi ước chung lớn nhất của chúng là 1 Ký hiệu cho hiện tượng này là a ⏊ b Ví dụ điển hình cho hai số nguyên tố cùng nhau là 3 ⏊ 8 và 7 ⏊ 9 Ngược lại, hai số 20 và 15 không phải là nguyên tố cùng nhau vì UCLN(20, 15) bằng 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) ≡ 1 (mod 10), nên phần tử a không có nghịch đảo modulo 10 Để tính a^(-1) khi nó tồn tại, có thể dùng thuật toán Euclid mở rộng (Extended Euclidean Algorithm) để tìm nghiệm của phương trình a·x ≡ 1 (mod 10).
Tính chất phần tử sinh của z n ¿
Z_n có phần tử sinh nếu và chỉ khi n = 2, 4, p^k hoặc 2p^k, với p là số nguyên tố lẻ và k ≥ 1; đây là các trường hợp n mà nhóm (Z/nZ)× có một phần tử sinh.
Nếu α là một phần tử sinh của z n ¿ thì: z n ¿ ={ α ⅈ mod n |0 ≤ ⅈ≤ ϕ (n)−1}
Giả sử α là phần tử sinh của Z_n^*, khi đó b = α^i mod n cũng là một phần tử của Z_n^* và b là một phần tử sinh nếu và chỉ nếu gcd(i, φ(n)) = 1 Từ đó ta rút ra rằng Z_n^* là cyclic và số phần tử sinh của nó bằng φ(φ(n)).
α ∈ Z n ¿ là một phần của z n ¿ nếu và chỉ nếu α Φ( n) ∕ p ≠ 1 ( mod n) đối với mỗi nguyên tố p của ϕ ( n).
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
Xét tập X gồm p-1 phần tử:
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.
Trong modulo p, giả sử tồn tại hai phần tử thứ i và thứ j (i ≠ j) thỏa mãn i a ≡ j a (mod p) Vì a và p nguyên tố cùng nhau nên tồn tại nghịch đảo của a modulo p, gọi là a^{-1} Nhờ đó nhân hai vế với a^{-1} ta được i ≡ j (mod p), mâu thuẫn với i ≠ j Do đó không tồn tại hai phần tử khác nhau i và j sao cho i a ≡ j a (mod p).
≡ 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
Sau đây là một sốt ví dụ của Fermat p = 5, a = 7 4 => 49.49 = 2401, 2401 ≡ 1 mod 5 p = 7, a = 4 6 => 64.64 = 4096, 4096 ≡ 1 mod 5
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 = a x mod n = (a.a…a) mod với x số a nhân với nhau
Ta chỉ xét trường hợp n là số nguyên tố Bảng minh hoặc các giá trị của phép lũy thừa modulo với n = 19, a và x từ 1 đến 18.
Hình 2 Bảng giá trị modulo với n = 19
Nhìn vào bảng trên, ta thấy rằng không phải hàng nào cũng có giá trị từ 1 đến 18 Xét hàng a = 11, ta có:
Do đó hang a = 11 (tương ứng với dãy 11 1 , 11 2 , , 11 18 ) chỉ có ba giá trị 11,
7, 1 được lặp theo chu kỳ.
Trong bảng đã cho, chỉ các giá trị a = 2, 3, 10, 13, 14, 15 mới làm cho dãy a^1, a^2, , a^18 khi chia dư cho 19 lần lượt chứa đầy đủ các số từ 1 đến 18 Nói cách khác, với những giá trị a này, các lũy thừa modulo 19 sinh ra mọi phần tử từ 1 đến 18, nên chúng là các lũy thừa tối thượng (primitive roots) modulo 19 Các giá trị còn lại của a không tạo ra dãy lũy thừa bao phủ đầy đủ các phần tử modulo 19 và do đó không phải là primitive roots modulo 19.
Trong trường hợp tổng quát với mỗi n chỉ có một trường hợp của a thì phép lũy thừa là khả nghịch Lúc này a được gọi là primitive root của n.
Và cũng tương tự như số thực, nếu biết y, a và n, muốn tìm lại x thì ta cũng dùng làm logarit, được gọi là logarit rời rạc. x = d log a, n y
Khác với logarit trên tập số thực, logarit rời rạc được chứng minh là tốn thời gian tính toán và khi tham số trở nên lớn, nó có thể trở nên bất khả thi Vì vậy, phép lũy thừa modulo được xem như một hàm một chiều và đóng vai trò quan trọng trong các giao thức trao đổi khóa, điển hình Diffie-Hellman.
Bảo mật, Chứng thực và Chống chối bỏ
Giả sử Alice muốn gửi dữ liệu cho Bob bằng mã hóa công khai Để đảm bảo an toàn, Alice và Bob sẽ chọn cặp khóa gồm khóa bí mật và khóa công khai: cặp khóa của Alice là KPA (khóa bí mật) và KSA (khóa công khai), còn cặp khóa của Bob là KPB (khóa công khai) và KSB (khóa bí mật) Để gửi dữ liệu bí mật cho Bob, Alice sẽ mã hóa dữ liệu bằng khóa công khai KPB của Bob, và Bob sẽ giải mã bằng khóa bí mật KSB.
Hình 3 trình bày mô hình bảo mật với mã hóa công khai Để đảm bảo tính xác thực và Alice không thể chối bỏ trách nhiệm gửi dữ liệu, phương án 2 được áp dụng: Alice mã hóa dữ liệu bằng khóa riêng KSA, và Bob dùng khóa công khai KPA của Alice để giải mã.
Hình 4 Mô hình chống chối bỏ với mã hóa công khai
Giả định bài toán cho rằng thông điệp là một dãy bit có cấu trúc và nếu Bob giải mã bản mã C thành công thì chứng tỏ Alice là người gửi vì chỉ Alice mới nắm khóa bí mật KSA; giống như mã hóa đối xứng, Charlie có thể can thiệp chỉnh sửa bản mã và khiến Bob giải mã ra một bản rõ vô nghĩa, tuy nhiên nếu Charlie nắm được khóa bí mật KSA thì Alice có thể bị cho là lộ khóa Tuy vậy mô hình này vẫn chưa đảm bảo bí mật, vì không chỉ Bob mà cả Charlie đều biết khóa công khai KPA của Alice, từ đó cho phép Charlie giải mã bản mã C và đọc nội dung bản rõ M Để giải quyết vấn đề, người ta kết hợp tính bí mật, chứng thực và chống chối bỏ bằng một mô hình tích hợp các yếu tố như bí mật truyền thông, xác thực nguồn gốc và không thể phủ nhận, nhằm đảm bảo toàn vẹn dữ liệu và an toàn truyền tin.
Hình 5 Mô hình kết hợp bảo mật, chúng thực và chống chối bỏ
Trao đổi khóa
1.4.1 Trao đổi khóa công khai
Để truyền dữ liệu theo phương pháp mã hóa khóa công khai, hai bên trước tiên phải trao đổi khóa công khai với nhau Vì đây là khóa công khai nên việc trao đổi không cần bí mật và có thể diễn ra trên kênh truyền bình thường Alice và Bob, hoặc bất kỳ người dùng nào khác, có thể công bố rộng rãi khóa công khai của mình để mọi người có thể sử dụng khi mã hóa dữ liệu gửi cho họ.
Hình 6 Trao đổi khóa công khai tự phát
Vấn đề chứng thực trong việc trao đổi khóa công khai: làm sao Alice có thể đảm bảo rằng KPB là khóa công khai của Bob mà không bị Charlie mạo danh bằng KPC của Charlie; vì vậy hình thành khái niệm chứng chỉ khóa công khai (public key certificate) và một tổ chức cấp chứng chỉ gọi là trung tâm chứng thực (Certificate Authority - CA); các bước cấp chứng chỉ cho Alice đi theo hướng sau: Alice tạo cặp khóa công khai/riêng và gửi yêu cầu cấp chứng chỉ (CSR) kèm thông tin nhận dạng cho CA; CA kiểm tra tính xác thực của Alice và dữ liệu liên quan; CA cấp cho Alice một chứng chỉ khóa công khai, chứa khóa công khai của Alice và các thông tin nhận dạng, được ký bằng khóa riêng của CA; chứng chỉ này được phát hành và có thể được phân phối cho các bên liên quan; các bên nhận diện có thể xác thực tính hợp lệ của chứng chỉ bằng cách tra cứu khóa công khai của CA và kiểm tra chữ ký số trên chứng chỉ, từ đó xác nhận rằng K_A thuộc Alice và ngăn chặn mạo danh như Charlie.
➔ Alice gửi định danh IDa và khóa công khai KPA của mình đến trung tâm chứng thực.
➔ Trung tâm chứng nhận kiểm tra tính hợp lệ của Alice, ví dụ nếu IDa là
“Microsoft”, thì Alice phải có bằng chứng chứng tỏ mình thực sự là công ty Microsoft.
Trung tâm chứng thực cấp chứng chỉ CA để xác nhận mối liên hệ giữa khóa công khai KPA và IDa, đảm bảo rằng khóa công khai KPA tương ứng với IDa Chứng chỉ được ký xác thực bằng khóa riêng của trung tâm chứng thực, nhằm đảm bảo nội dung chứng chỉ do chính CA ban hành.
➔ Alice công khai chứng chỉ CA.
Bob muốn trao đổi thông tin với Alice, nên sẽ xác thực chứng chỉ CA bằng khóa công khai của trung tâm chứng thực để lấy khóa công khai KPA của Alice Vì Bob tin tưởng trung tâm chứng thực, anh ấy sẽ tin rằng khóa công khai KPA là tương ứng với IDa, tức là tương ứng với Alice.
Hình 7 Trao dổi khóa công khai dùng trung tâm chứng thực
Như vậy có thể nhận thấy rằng nếu Bob muốn gửi thông điệp cho Alice,David, thì Bob không cần phải tin tưởng vào khóa công khai của Alice,
David hay bất kỳ ai Bob chỉ cần tin tưởng vào trung tâm xác thực và khóa công khai của trung tâm chứng thực là đủ.
Hiện nay mô hình chứng chỉ khóa công khai được áp dụng rộng rãi, với chuẩn X.509 làm nền tảng cho cấp phát và xác thực chứng chỉ Trên thế giới có khoảng 80 tổ chức chứng thực chứng chỉ khóa công khai, đóng vai trò thiết yếu trong việc phát hành, quản lý và tái ký chứng chỉ nhằm đảm bảo an toàn cho các hệ thống và giao dịch kỹ thuật số.
1.4.2 Dùng mã hóa công khai để trao đổi khóa bí mật
Mã hóa khóa công khai có đặc điểm toán học khiến tốc độ mã hóa và giải mã chậm hơn so với mã hóa đối xứng Vì vậy, trong thực tế, để đảm bảo tính bảo mật và hiệu quả, người ta vẫn ưu tiên sử dụng mã hóa đối xứng cho phần dữ liệu chính Tuy nhiên, mã hóa khóa công khai được dùng để thiết lập khóa bí mật cho mỗi phiên trao đổi dữ liệu, và khóa bí mật này được gọi là khóa phiên Các phiên trao đổi dữ liệu khác nhau sẽ dùng các khóa phiên khác nhau.
Hình 8 Thiết lập khóa phiên bí mật bằng mã hóa khóa công khai
Trong cơ chế trao đổi khóa, Alice tạo một khóa phiên KS và mã hóa KS bằng khóa bí mật của Alice, rồi mã hóa tiếp KS bằng khóa công khai của Bob Bob giải mã KS bằng khóa bí mật của mình và xác thực bằng khóa công khai của Alice để kiểm tra tính xác thực của KS Nhờ tính bí mật, chỉ có Bob mới biết KS, và nhờ tính chống chối bỏ, Bob có thể khẳng định KS được sinh ra bởi Alice vì KS được ký bằng khóa riêng của Alice Do đó KS có thể dùng làm khóa đối xứng để mã hóa dữ liệu giữa Alice và Bob Sau khi trao đổi dữ liệu, KS được hủy bỏ nên khóa bí mật này ít có khả năng bị lộ Lúc này vai trò của mã hóa công khai không phải bảo mật dữ liệu mà là bảo đảm tính bí mật của khóa đối xứng, để chỉ có Alice và Bob nắm giữ KS.
Phương pháp trao đổi khóa Diffie - Hellman
Phương pháp trao đổi khóa Diffie-Hellman cho phép thiết lập một khóa bí mật giữa người gửi và người nhận mà không cần dùng mã hóa công khai như RSA Phương pháp này dựa trên một hàm một chiều liên quan đến logarit rời rạc, cho phép hai bên đồng thuận một khóa bí mật bất kể sự giám sát của bên thứ ba Diffie-Hellman không có ý nghĩa về mặt mã hóa giống RSA; nó chỉ là cơ chế trao đổi khóa để sau đó các dữ liệu được mã hóa bằng khóa bí mật đã tạo ra.
Đầu tiên Alice và Bob thỏa thuận dùng một số nguyên tố p và một cơ số g nhỏ hơn p, là primitive root của p (đảm bảo g có thể sinh ra mọi phần tử trong nhóm nghịch đảo modulo p) Hai tham số này không cần được giữ bí mật Tiếp theo, Alice chọn bí mật a và giữ kín nó, trong khi Bob chọn bí mật b và cũng giữ kín Alice tính và gửi cho Bob giá trị g^a mod p, còn Bob gửi cho Alice giá trị g^b mod p Từ đó, họ có thể tính được khóa chung s = (g^b)^a mod p = (g^a)^b mod p = g^{ab} mod p, đây chính là nguyên lý của trao đổi khóa Diffie-Hellman cho phép thiết lập một khóa bảo mật trên kênh công khai.
Do đó Alice và Bob có chung giá trị g ab mod p Giá trị này có thể dùng làm khóa cho phép mã hóa đối xứng Như vậy, kẻ phá mã Charlie có thể có được g, p, g a và g b Muốn tính được g ab mod p, Charlie không thể dùng cách: g a g b mod p = g a+b mod p khác g ab mod p Muốn tính được g ab mod p, Charlie phải tính được a hoặc b Tuy nhiên việc tính a hay b theo công thức: a = d log g, p g a b = d log g, p g b Điều này là không khả thi do tính phức tạp của logarit rời rạc Vậy Charlie không thể nào tính được giá trị g ab mod p Hay nói cách khác, khóa dùng chung được trao đổi bí mật giữa Alice và Bob Tuy nhiên, thuật toán Diffie - Hellman lại thất bại đối với kiểu tấn công Man in the middle Trong phương pháp tấn công này, Charlie đứng giữa Alice và Bob Charlie chặn các thông điệp giữa Alice và Bob, giả mạo các thông điệp mà Alice và Bob không hay biết Alice vẫn nghĩ là nhận dữ liệu từ Bob và ngược lại Do đó, Charlie có thể thiết lập khóa Diffie - Hellman g ac mod p với Alice và khóa g bc mod p với Bob Khi Alice gửi dữ liệu, Charlie giải mã bằng khóa g ac mod p sau đó mã hóa lại bằng g bc mod p và gửi cho Bob Như vậy Alice và Bob không hay biết còn Charlie thì xem được dữ liệu.
Hình 9 trình bày tấn công Man-in-the-Middle bằng phương pháp Diffie-Hellman Để bảo mật, quá trình thiết lập khóa Diffie-Hellman phải được xác thực và bảo vệ bằng một khóa công khai hoặc chữ ký số nhằm ngăn kẻ tấn công giả mạo phía đối thoại Có câu hỏi đặt ra là nếu kết nối đã được bảo vệ bằng khóa riêng, liệu có cần dùng Diffie-Hellman hay không Tuy nhiên, trong một số trường hợp mà tấn công Man-in-the-Middle không thể thực hiện được, Diffie-Hellman vẫn rất hữu ích vì nó cho phép hai bên đồng nhất khóa phiên một cách an toàn, miễn là xác thực khóa được thực hiện đúng đắn.
Trong mô hình thiết lập khóa phiên bằng mật mã khóa công khai, Charlie có thể ghi nhận toàn bộ các trao đổi giữa Alice và Bob; sau này nếu Charlie phát hiện được khóa bí mật KSA và KSB của hai bên, hắn có thể khôi phục khóa đối xứng KS và từ đó giải mã các bản rõ được mã hóa bằng KS Bây giờ ta xét mô hình tiếp theo, đó là Diffie-Hellman được bảo vệ bằng mã hóa khóa công khai và phân tích xem liệu cơ chế này còn chịu rủi ro khi có thể khai thác từ khóa công khai và khóa bí mật.
Hình 10 Bảo vệ khóa Diffie – Hellman bằng khóa công khai
Trong mô hình Diffie-Hellman, dù kẻ nghe trộm có thể nắm được khóa bí mật KSA và KSB của Alice và Bob, đồng thời biết cả các giá trị công khai ga mod p và gb mod p, thì vẫn không thể khôi phục được khóa bí mật gab mod p Vì vậy, không có cách để giải mã các bản rõ giữa Alice và Bob dựa trên những thông tin này Đây là ý nghĩa cốt lõi của phương pháp Diffie-Hellman: cho phép hai bên thiết lập khóa bí mật chung qua trao đổi trên kênh công khai mà không tiết lộ khóa riêng, từ đó bảo mật quá trình trao đổi khóa và dữ liệu.
Hệ mật đường cong Elliptic
Đường cong Elliptic
Dạng phổ biến của đường cong Elliptic E là đồ thị của phương trình Weierstrass y^2 = x^3 + Ax + B, trong đó A và B là các hằng số Ta cần xác định A, B và x thuộc tập nào, và thông thường chúng được lấy từ một trường hữu hạn hoặc từ các trường số thực, phức hay hữu tỉ Q, đặc biệt từ các trường F_p (Z/pZ) với p là số nguyên tố, hoặc từ các trường hữu hạn F_q với q = p^k (k ≥ 1) Có thể nói đây là những trường phổ biến nhất được dùng trong nghiên cứu mật mã học trên đường cong Elliptic.
Giả sử K là một trường và A, B ∈ K; ta nói rằng đường cong Elliptic E được xác định trên K Ta quy ước rằng E và K là ký hiệu cho đường cong Elliptic và trường mà E được xác định trên đó, với A và B là các điểm thuộc K.
Nếu ta muốn xét các điểm có các tọa độ thuộc một trường L ⊇ K thì ta viết E(L) Theo định nghĩa tập này luôn luôn có điểm ∞ được định nghĩa :
Đường cong Elliptic E được định nghĩa trên trường L bởi E(L) = {∞} ∪ {(x, y) ∈ L × L | y^2 = x^3 + Ax + B} Để có cái nhìn trực quan về đường cong Elliptic, ta thực hiện vài nghiên cứu sơ bộ trên trường số thực R Hai dạng cơ bản của đường cong y^2 = x^3 + Ax + B cho thấy: y^2 = x^3 − x (A = −1, B = 0) có ba nghiệm thực phân biệt, trong khi y^2 = x^3 + x (A = 1, B = 0) có duy nhất một nghiệm thực Nếu có nghiệm lặp thì đường cong sẽ bị singular, nên ta giả thiết 4A^3 + 27B^2 ≠ 0 để đảm bảo đường cong không có nghiệm lặp và duy trì tính phi trơn của đường cong Elliptic trên các trường.
Nếu đường bậc 3 có các nghiệm r1, r2, r3 thì có thể chứng minh rằng biệt thức của đường cong này là (( r 1 −r 2 ) ( r 1 − r 3 )( r 2 −r 3 )) 2 =−(4 A 3 + 27 B 2 ) a y 2 =x 3 − x b y 2 = x 3 + x
Trong lý thuyết đường cong Elliptic, các nghiệm (điểm) của đường cong phải khác nhau; tuy nhiên, trường hợp nghiệm trùng lặp vẫn có ý nghĩa riêng và sẽ không được đề cập ở phần này Dạng tổng quát của phương trình Weierstrass cho đường cong Elliptic được biểu diễn như sau: y^2 + a1xy + a3y = x^3 + a2x^2 + a4x + a6.
Trong đó a1, …, a6 là các hằng số Dạng tổng quát của công thức này rất hữu ích khi làm việc với trường đặc số 2 và 3 (chap(K)); nếu đặc số của trường khác 2 hoặc 3, công thức sẽ được điều chỉnh cho phù hợp với đặc tính của trường.
2 thì có thể chia cho 2 và biến đổi về dạng:
Hay có thể viết nó như sau y 1 2 =x 3 +a 2 ' x 2 ⊢ a 4 ' x+ a 6 '
, a 6 ' Khi K có đặc số bằng 3 hay khác
3 ta có thể dùng phép thế x 1 = x + a 2
Để xử lý kỹ thuật và tối ưu hóa tính toán trên đường cong Elliptic, người ta bổ sung một điểm ở vô cùng cho đường cong Điểm vô cực được xem như một ký hiệu đơn giản là ∞, hoặc đôi khi được hình dung ở đỉnh của trục y dưới dạng (∞, ∞), và được dùng để đóng khung đường cong vào hệ thống tính toán Trong ngữ cảnh đại số và hình học, ∞ được quy ước như một ký hiệu thỏa mãn các quy tắc tính toán nhất định và đóng vai trò là phần tử nhận phép cộng trên đường cong, giúp các định lý và thuật toán hoạt động một cách nhất quán Chẳng hạn, một đường thẳng được coi là đi qua điểm ∞ khi nó là trục thẳng đứng, tức là x cố định và y thay đổi; đây là cách diễn giải hướng của đường thẳng trong không gian vô cực và có tác dụng trong việc xác định giao điểm và phép cộng trên đường cong Elliptic Nhờ có mặt của điểm vô cực, lý thuyết và thực nghiệm về đường cong Elliptic trở nên gắn kết hơn và dễ áp dụng cho các bài toán về số học và mật mã học.
Việc đưa điểm ∞ vào mô hình toán học mang lại lợi ích rõ ràng vì cho phép ta xem hai đầu của trục y như gặp nhau tại điểm ∞, đồng thời giữ được tính nhất quán khi xét cả đỉnh và đáy trục Tuy nhiên, cách diễn giải này có thể khiến ta thấy lạ, đặc biệt khi làm việc trên các trường khác với số thực, như trường hữu hạn, nơi việc sắp xếp thứ tự và phân biệt đỉnh, đáy của trục y không còn ý nghĩa Trong các trường hợp đó, các đầu của trục y sẽ mất ý nghĩa trước khi giới thiệu các tọa độ xạ ảnh, và vì vậy nên xem ∞ là một ký hiệu hình thức có các tính chất định trước Cũng vì vậy, ta cần sắp xếp để hai đường thẳng đứng gặp nhau ở điểm ∞, từ đó mô hình hóa một cách tổng quát hơn bằng hình học dự phóng.
Theo tính đối xứng, nếu chúng gặp nhau ở đỉnh của trục y thì chúng cũng gặp nhau ở đáy của nó Nhưng hai đường thẳng phải cắt nhau ở một điểm duy nhất, do đó “đỉnh ∞” và “đáy ∞” phải là một Trong mọi trường hợp, điều này sẽ là một tính chất có lợi của ∞.
2.1.2 Cộng các điểm trên đường cong Elliptic
Xét hai điểm P 1 =( x 1 , y 1 ) và P 2 =( x 2 , y 2 )trên đường cong Elliptic E y 2 +a 1 xy +a 3 y= x 3 +a 2 x 2 + a 4 x+ a 6
Phép cộng giữa hai điểm trên đường cong E được định nghĩa như sau:
( x 3 , y 3 ' )là giao điểm của đường cong E và đường thẳng đi qua P 1 và P 2 Vì 2 điểm P 3( x 3 , y 3 )và − P 3 '
( x 3 , y 3 ' )đều nằm trên đường cong E nên ( x 3 , y 3 )và ( x 3 , y 3 ' )phải thỏa mãn phương trình (1.2). Công thức để tính các giá trị ( x 3 , y 3 )sẽ được chứng minh ở dưới đây
Hình 11 Phép cộng trên đường cong Elliptic
Trong các tài liệu cơ bản và nâng cao tham chiếu nhiều về đường cong Elliptic như [3, 7, 8], vẫn chưa có sự dẫn giải rõ ràng và chứng minh tổng quát cho các giá trị (x^3, y^3); do đó phần công thức liên quan sẽ được chứng minh chi tiết trong tài liệu này Đường thẳng đi qua hai điểm P1 và P2 trên đường cong có phương trình y = λx + μ, trong đó λ là hệ số góc được tính từ độ dốc giữa hai điểm và μ là hằng số tự do Việc thiết lập mối quan hệ này giúp phân tích giao điểm của đường thẳng với đường cong Elliptic và từ đó làm cơ sở cho phép cộng hai điểm trên đường cong một cách nhất quán.
Trong đó λx là hệ số góc của đường thẳng đi qua P 1 , P 2 Ta có: y 1 =λx x 1 + μ y =λx x + μ y 3 ' = λx x 3 + μ
2.1.2.1 Trường hợp 2 điểm không trùng nhau P 1 ≠ P 2
Từ (1.5) và (1.6) suy ra: y 1 − y 2 = x ( x 1 − x 2 ), khi P 1 ≠ P 2 , nghĩa là x 1 ≠ x 2 ta có công thức: λx= y 1 − y 2 x 1 − x 2 μ= y 1 − λx x 1 = y 1 − y 1 − y 2 x 1 − x 2 × x 1 = x 1 y 2 − x 2 y 1 x 1 − x 2
Tiếp theo thay y ở (1.4) vào phương trình (1.2) ta có:
Từ đó dẫn đến phương trình r ( x )=0 với: r ( x )= x 3 + ( a 2 − λx 2 −a 1 λx ) x 2 + ( a 4 −2 λxμ−a 3 λx− a 1 μ ) x +a 6 − μ 2 − a 3 μ Biết rằng r(x) có
Ba nghiệm phân biệt của r(x) nên được viết dưới dạng r(x) = (x − x1)(x − x2)(x − x3) Việc đồng nhất các hệ số x2 của r(x) ở hai phương trình (*) và (**) cho ta x1 + x2 + x3 = −( a2 − λ x2 − a1 λ x ) Từ đây có thể tính được x3 theo công thức x3 = λ x2 + a1 λ x − a2 − x1 − x2 Đến đây cần tiếp tục tính giá trị y3; khi x3 đã được tính xong nên có thể coi là hằng số, có thể viết lại (1.2) thành dạng sau: y^2 + ( a1 x3 + a3 ) y − x3^3. -**Support Pollinations.AI:**🌸 **Quảng cáo** 🌸 Đơn giản hóa viết lại các bài toán nghiệm với Pollinations.AI API miễn phí – [Ủng hộ chúng tôi](https://pollinations.ai/redirect/kofi) để AI luôn sẵn sàng cho cộng đồng sáng tạo toán học!
Phương trình bậc 2 này có 2 nghiệm là: y 3 , y 3 ' = −( a 1 x 3 + a 3) ± √ Δ
Cộng 2 nghiệm này ta sẽ có y 3 ' + y 3 =−a 1 x 3 − a 3 , mặt khác do y 3 ' nằm trên đường thẳng P 1 , P 2 nên y 3 ' = λx x 3 + μ Từ đây có thể tính được y 3 theo công thức: y 3 =− λx x 3 −μ− a 1 x 3 − a 3
Thay à từ (1.9) ta cú thể tớnh y3 dưới dạng sau: y 3 = λx ( x 1 −x 3 ) − y 1 −a 1 x 3 −a 3
2.1.2.2 Trường hợp 2 điểm trùng nhau P 1 =P 2
Khi x1 = x2 và y1 = y2, công thức tính λx ở (1.9) không sử dụng được do xuất hiện phép chia cho 0; trong trường hợp này λx chính là hệ số góc của đường thẳng tiếp tuyến của đường cong E tại P1 hoặc P2 Hệ số góc của tiếp tuyến E là dy/dx, được xác định bằng cách áp dụng quy tắc đạo hàm của tích và hàm hợp, và sau đó lấy đạo hàm hai vế của phương trình (1.2) theo dx Ta có d(y^2 + a1 x y + a3 y)/dx = d(x^3 + a2 x^2 + a4 x + a6)/dx, tức là 2y dy/dx + a1 (x dy/dx + y) + a3 dy/dx = 3x^2 + 2a2 x + a4 Do đó dy/dx = (3x^2 + 2a2 x + a4 - a1 y) / (2y + a1 x + a3), đây là hệ số góc của tiếp tuyến tại điểm trên đường cong E.
2 y dy dx + a 1 ( y + x dy dx ) + a 3 dy dx ¿ 3 x 2 +2 a 2 x +a 4
Như vậy với điểm P 1 =( x 1 , y 1 ) ta có: λx= 3 x 1 2 +2 a 2 x 1 +a 4 −a 1 y 1
Trong tất cả các trường hợp điểm P 3 là tổng của 2 điểm P 1 , P 2 sẽ là điểm có tọa độ là:
Với đường cong E dạng (1.1), khi đó a 1 =a 3 =a 2 = 0 và P 3 sẽ được tính theo công thức:
P 3 ( x 3 , y 3 ) =¿ ) Trong trường hợp P 1 = P 2 , (1.18) sẽ được biến đổi thành: λx= 3 x 1 2 +a 4
2.1.3 Nhân vô hướng các điểm trên đường cong Elliptic
Với n ∈ N ∖ { 0 }định nghĩa phép nhân vô hướng của điểm P nằm trên đường cong E là phép cộng n lần chính bản thân điểm P:
Để tối ưu phép nhân vô hướng, ta có thể sử dụng phương pháp Nhân đôi và cộng Bước đầu là biểu diễn số n theo dạng nhị phân: n = n0 + 2 n1 + 2^2 n2 + … + 2^m nm, với các ni thuộc tập {0,1} Tiếp theo, áp dụng thuật toán Nhân đôi và cộng bằng cách duyệt các bit của n rồi nhân đối tượng bằng 2 và cộng khi bit tương ứng bằng 1, nhằm giảm số lần nhân và tối ưu hiệu suất tính toán.
Thuật toán 1.1 Phương pháp Nhân đôi và cộng
Ngoài phương pháp Nhân đôi-và-cộng, có thể sử dụng phương pháp Trượt cửa sổ để thực hiện nhân vô hướng một cách tối ưu Hai phương pháp này giúp giảm số phép toán và tăng hiệu suất tính toán bằng cách tối giản các bước cộng và nhân, từ đó cải thiện tốc độ xử lý trên nhiều hệ thống Lưu ý của người viết: sự lựa chọn giữa Nhân đôi-và-cộng và Trượt cửa sổ phụ thuộc vào đặc thù dữ liệu và yêu cầu hiệu năng, nên cân nhắc kỹ lưỡng để đạt được hiệu quả tối ưu.
• Không tồn tại phép nhân 2 điểm trên đường cong E, có nghĩa là không tồn tại P × Q với P, Q ∈ E
Không tồn tại một thuật toán chia vô hướng Q = nP có thời gian đa thức để xác định n từ Q và P Khi biết Q = nP, bài toán Logarit rời rạc trên đường cong elliptic là một bài toán khó: thường phải thử lần lượt n = 1, 2, , cho đến khi tổng các điểm P bằng Q, dù có một số thuật toán tối ưu hơn nhưng vẫn chưa thể giải được trong thời gian đa thức Chính độ khó này làm nền tảng cho mật mã dựa trên đường cong Elliptic (Elliptic Curve Cryptography - ECC), được ứng dụng rộng rãi trong các giao thức mã hóa, xác thực và trao đổi khóa nhờ hiệu suất cao và kích thước khóa nhỏ hơn so với các hệ mật truyền thống.
Hình 12 Ví dụ về tính chất kết hợp trên đường cong Elliptic
2.1.4 Nhóm (+) của các điểm trên đường cong Elliptic
Xét đường cong Elliptic E được định nghĩa bởi phương trình y 2 = x 3 + Ax +
B Xét 3 điểm nằm trên đường cong E là P1, P2, P3 lần lượt có các tọa độ là (x1, y1), (x2, y2), (x3, y3). Để các điểm trên đường cong Elliptic tạo thành nhóm (+), “điểm vô cùng” (∞) sẽ được thêm vào đường cong, kí hiệu là O, điểm này sẽ nằm ở trên cùng và dưới cùng của trục y Một trong những thuộc tính quan trọng nhất của đường cong Elliptic là tồn tại nhóm các điểm với phép cộng nằm trên đường cong. Định lý 1.5.1 Phép cộng với các điểm P, P1, P2, P3 trên đường cong E thỏa mãn các tính chất của nhóm:
3 (Điểm nghịch đảo): Tồn tại P’ của P sao cho P + P’ = ∞;
Mật mã trên đường cong Elliptic
Alice muốn gửi một văn bản, thường được gọi là bản rõ (Plaintext), tới Bob.
Trong hệ thống mã hóa, Alice mã hóa văn bản để tạo ra bản mã (Ciphertext) Để thực hiện quá trình mã hóa, Alice sử dụng một khóa mã hóa (Encryption key) Bob nhận được bản mã và dùng một khóa giải mã (Decryption key) để giải mã và khôi phục nội dung ban đầu.
Có hai cách mã hóa cơ bản để bảo vệ dữ liệu: mật mã đối xứng, nơi khóa mã hóa và khóa giải mã là như nhau, và mật mã bất đối xứng (hay mật mã khóa công khai), là dạng mã hóa sử dụng một cặp khóa công khai và khóa bí mật để mã hóa và giải mã.
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 a là phần tử sinh của G và b là một phần tử cũng thuộc G Khi đó Lô-ga-rít rời rạc của b theo cơ sở a trên G, được ký hiệu là logab, là một số nguyên duy nhất x với 0 £ x £ n - 1 sao cho b = a x
Trong mọi nhóm cyclic, nếu đã biết trước a và x để tính b = a^x, bài toán là dễ và có thể thực hiện trong thời gian đa thức Ngược lại, khi chỉ có a và b để tìm x, bài toán này nói chung là khó và yêu cầu thời gian tính toán theo hàm mũ Độ khó của bài toán Lô-ga-rít (logarit rời rạc) còn phụ thuộc vào cấu trúc đại số 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
Trong nhóm các điểm của đường cong elliptic, phép cộng điểm được ký hiệu kP với k ∈ Z và nhóm này là cyclic với P là phần tử sinh Người ta chứng minh rằng nếu số điểm của đường cong elliptic là N và N là số nguyên tố, thì mọi điểm P khác điểm vô cực trên nhóm đều có bậc N, tức là P là phần tử sinh của nhóm.
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, bài toán là xác định một số nguyên k sao cho 0 ≤ k ≤ n−1 và Q = kP, nếu tồn tại số k như vậy Đây là bài toán logarithm trên đường cong elliptic (ECDLP), có ý nghĩa trong mật mã học vì độ khó của việc tìm k từ Q và P khi n lớn, từ đó làm nền tảng cho các hệ khóa công khai dựa trên đường cong elliptic.
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).
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.
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?
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 xem là nền tả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ì cho tới nay chưa có các thuật toán có thời gian tiểu hàm mũ (subexponential) để tấn công bài toán này.
Trong phần còn lại của chuyên đề, chúng ta sẽ giới thiệu 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] được mô tả chi tiết về cách triển khai ứng dụng ECC (Elliptic Curve Cryptography), giúp người đọc hiểu rõ hiệu quả và thực tế của công nghệ này Tác giả D.
Hankerson phân tích triển khai ECC bằng phần mềm, trong khi L Cao phân tích việc 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
Vào năm 1998, Laurie và các đồng sự đã đề xuất một giao thức trao đổi khóa dựa trên ECC (Elliptic Curve Cryptography) Giao thức này sau đó được đưa vào các tiêu chuẩn ANSI X9.42, ANSI X9.63 và IEEE P1363.
Trong mô hình trao đổi khóa qua kênh công khai, hai bên A và B đồng ý sử dụng một điểm cơ sở P trên đường cong E làm tham chiếu để tạo khóa phiên bí mật Bên A sinh khóa bí mật dA và gửi cho bên B giá trị dA P, trong khi bên B sinh khóa bí mật dB và gửi lại cho A giá trị dB P Khi nhận được, khóa phiên của bên A là KA = dA(dB P) = (dA dB)P, còn khóa phiên của bên B là KB = dB(dA P) = (dA dB)P; KA bằng KB, đây là khóa phiên riêng tư chỉ hai bên A và B có thể tính ra được Dưới đây là sơ đồ minh họa:
Bên A Bên B dA dAP dAP dBP dBP dB
Đá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 dA, dB, trong khi chỉ có thể bắt được thông tin trên đường truyền là dAP 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 1363-
Theo tiêu chuẩn năm 2000 và ISO/IEC 15946-3, điểm cơ sở được ký hiệu bằng G thay vì P như thông thường Lược đồ này thường được áp dụng khi các bên A và B có cặp khóa công khai và khóa bí mật cố định, với các tham số 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:EN, 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
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).
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
Nhúng số vào điểm trên đường cong Elliptic
Trong mật mã khóa công khai, khi Alice muốn gửi một thông báo cho Bob, cô ấy phải chuyển thông điệp thành một tập các số nguyên và sau đó áp dụng một biến đổi để mã hóa Với mật mã dựa trên đường cong elliptic, ta làm việc với các điểm trên đường cong thay vì chỉ với các chuỗi hay số nguyên Do đó, vấn đề khởi đầu là nghiên cứu các phương pháp biến bản rõ thành dạng điểm P trên đường cong elliptic Cần lưu ý rằng ở giai đoạn này, quá trình chuyển đổi nói trên chưa được xem như 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 F p
Có nhiều phương pháp để thực hiện quá trình này Trong số đó, đây là một phương pháp tiêu biểu được giới thiệu nhằm làm rõ cách chuyển đổi một số thành các đ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.27 2 +m2 27+m3.
Khi đó, x Fp nếu p ≥ 26.27 2 +26 27+26 = max{x : miZ27 , i=1 3} 19682.
Giả sử p = 41113 và thông điệp LETS GET SEAFOOD được chuyển thành các phần tử của trường số hữu hạn Fp bằng cách tách thành các khối 3 ký tự Mỗi khối gồm 3 ký tự được quy đổi theo một quy tắc ánh xạ thành một phần tử của Fp, tạo thành một dải các phần tử modulo p Quá trình này biến chuỗi ký tự thành một đại diện số học trong Fp, cho phép lưu trữ và xử lý an toàn hơn, đồng thời vẫn có thể ghép nối lại các khối để khôi phục thông điệp gốc khi cần thiết Kết quả hiện lên như một tập các khối ký tự được chia theo từng nhóm 3 và một chuỗi các phần tử tương ứng trong Fp, cung cấp một mô hình mã hóa tối giản và phù hợp cho các mục tiêu bảo mật và mã hóa chuỗi chữ cái LETS GET SEAFOOD.
Bản rõ LET SGE TSE AFO OD_
Cách trực quan nhất để ánh xạ số nguyên x tới một điểm P thuộc E(F_p) là tìm điểm có hoành độ bằng x trên đường cong elliptic E: y^2 = x^3 + 2x − 1 Ví dụ trên đường cong này được định trên trường F_41113: tính CAT = 3(27)^2 + 1·27 + 20 = 2234, và ta thấy điểm cần tìm là P = (2234, 23945) ∈ E(F_41113) Từ P có thể dễ dàng lấy lại CAT.
Trong trường hữu hạn F_p với p = 41113, khoảng một nửa các giá trị x thuộc F_p có thể là hoành độ của một điểm trên đường cong elliptic Ví dụ, với x = 9520, sau khi kiểm tra xem giá trị này có phải thặng dư bậc hai modulo 41113 hay không, ta thấy 9520 không phải thặng dư bậc hai, nên không có điểm nào trên đường cong nhận 9520 làm hoành độ Nói cách khác, cũng có khoảng một nửa các giá trị x như vậy không tương ứng với hoành độ của bất kỳ điểm nào trên đường cong elliptic.
Ta thử làm như sau: tăng dần x từng đơn vị cho đến khi hoành độ của điểm P nhận được giá trị mới; điểm đầu tiên thỏa mãn tiêu chuẩn đó là (9527, 2121), do đó MAP ↪ (9527, 2121) Tuy nhiên, khi chuyển 9527 sang cơ số 27 ta được 9527 = 13·27^2 + 1·27 + 23 = MAW, như vậy dãy ký hiệu MAP, MAQ, MAR, …, MAW cũng đồng thời ánh xạ tới (9527, 2121).
Ta có thể làm điều này một cách đúng đắn bằng cách ánh xạ x tới lx với một số nguyên l lớn và sau đó nhúng lx vào E(Fp) Cần 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 đó x được ánh xạ tới duy nhất một điểm của E(Fp) miễn là một trong các giá trị f(lx), f(lx+1), …, f(lx+l−1) là dư bậc 2 Xác suất để thất bại, tức là không tìm được lx duy nhất cho x đã cho, là 1/(2l) Số nguyên l được gọi là tham số nhúng.
Ví dụ này dùng đường cong elliptic trên trường hữu hạn F910307 với tham số l2 Có xấp xỉ 1 trên 5×10^9 cơ hội để không có số nào trong các giá trị f(lx), f(lx+1), …, f(lx+31) là thặng dư bậc hai (quadratic residue) Giả sử ta muốn nhúng chuỗi "YOU HAVE TWO HOURS" lên đường cong elliptic này Bảng minh hoạ cho thấy quá trình lặp diễn ra và chỉ có một điểm duy nhất phù hợp xuất hiện trong các giá trị x được xét Kết luận rút ra từ ví dụ cho thấy cách phân tích xác suất và cấu trúc các điểm trên đường cong elliptic khi thực hiện việc nhúng chuỗi ký tự, đồng thời minh hoạ cách vòng lặp xử lý dữ liệu giúp xác định điểm phù hợp duy nhất với điều kiện đã cho.
Bản rõ YOU HAV ETW OHU ORS
Giả sử ta đã biết tham số nhúng l, ta có thể chuyển một điểm trên đường cong elliptic về số nguyên x một cách duy nhất Xét một điểm P = (x_p, y_p) và mục tiêu tìm x, khi l đủ lớn ta có thể giả thiết x_p = l x + m với 0 ≤ m < l Điều này có nghĩa x_p chia thành phần thương x và phần dư m, cho phép xác định x bằng công thức x = (x_p − m)/l Với mỗi giá trị m trong phạm vi [0, l−1], sẽ có một giá trị x tương ứng duy nhất, đảm bảo tính định danh của phép nhúng Phương pháp này tối ưu hóa quá trình ánh xạ và tái tạo x từ tọa độ x_p, tăng tính nhất quán và hiệu quả của việc nhúng dữ liệu lên đường cong elliptic.
Khi đó x p l = x + m l , và theo giả thiết nói trên thì m/l < 1 Vì thế x = ⌊ x p l ⌋ 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.
Độ an toàn của hệ mật trên đường cong Elliptic
Các sức mạnh của ECC nằm ở sự phức tạp của bài toán giải tích logarit rời rạc trên đường cong elliptic, khi phải xác định số k từ kP và P Phương pháp nhanh nhất để giải bài toán này là phân tích S – Pollard Độ phức tạp tính toán khi dùng phương pháp S – Pollard cho ECC là khoảng 3,8×10^10 MIPS-năm với kích thước khóa 150 bit So sánh với phương pháp phá RSA nhanh nhất (phân tích hợp số n thành tích của hai số nguyên tố bằng sàng trường số), ta thấy với n có kích thước 768 bit độ phức tạp là 2×10^8 MIPS-năm, với n 1024 bit độ phức tạp là 3×10^11 MIPS-năm Nếu độ dài khó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×10^28 MIPS-năm.