← Về danh sách
Bảo mật & Quyền riêng tư
#ECC#ECDSA#ECDH#Curve25519#공개키암호
Cập nhật lần cuối · 2026-11-04

Mật mã đường cong elliptic (ECC, Elliptic Curve Cryptography)

1. Khái quát

Định nghĩa: Mật mã đường cong elliptic (ECC) là hệ mật mã khóa công khai đặt tính an toàn vào độ khó tính toán của "Bài toán logarit rời rạc trên đường cong elliptic (ECDLP)", được xây dựng trên phép nhân vô hướng của nhóm abel (abelian group) tạo bởi các điểm của một đường cong elliptic xác định trên một trường hữu hạn.

Mật mã khóa công khai trở nên thực dụng sau khi Diffie và Hellman đưa ra khái niệm trao đổi khóa năm 1976 và RSA khai thác bài toán phân tích thừa số nguyên năm 1977. Tuy nhiên, RSA và logarit rời rạc trên trường hữu hạn (DH, DSA) cùng chung một giới hạn cấu trúc: muốn nâng tính an toàn thì phải tăng độ dài khóa một cách mạnh mẽ. Vì tồn tại các thuật toán chạy trong thời gian dưới hàm mũ (sub-exponential time) như Number Field Sieve, để nâng chi phí tấn công phải liên tục mở rộng modulus lên 2048, 3072, 4096 bit, điều này trực tiếp dẫn đến gánh nặng về khối lượng tính toán, băng thông và dung lượng lưu trữ.

ECC được Neal Koblitz và Victor Miller đề xuất độc lập vào năm 1985 chính là để giải quyết "tình thế tiến thoái lưỡng nan giữa độ dài khóa và hiệu năng" này. Cho đến nay chưa có thuật toán thời gian dưới hàm mũ nào được biết cho bài toán logarit rời rạc trên nhóm đường cong elliptic (ECDLP), và các tấn công tổng quát vẫn ở mức hàm mũ hoàn toàn (fully exponential, khoảng √n với nhóm kích thước n) như Pollard's rho. Nhờ đó, cùng một mức an toàn đạt được với khóa ngắn hơn rất nhiều — ví dụ, NIST SP 800-57 khuyến nghị ECC 256 bit cung cấp mức an toàn 128 bit tương đương với RSA khoảng 3072 bit.

Nhờ tính hiệu quả này, ECC đã trở thành tiêu chuẩn trên thực tế trong các môi trường bị ràng buộc như thẻ thông minh, IoT và di động, và nằm ở trung tâm của hạ tầng an toàn hiện đại gồm TLS 1.3, SSH, Bitcoin và chip điện tử hộ chiếu (ICAO). Bài trả lời này trình bày nền tảng toán học và cấu trúc nhóm của ECC, các nguyên thủy cốt lõi (ECDH và ECDSA) cùng quy trình hoạt động, so sánh với RSA và các tiêu chuẩn đường cong, cùng xu hướng mới nhất là chuyển đổi sang mật mã kháng lượng tử (PQC) và các điểm cần cân nhắc dưới góc nhìn Kỹ sư chuyên nghiệp.

2. Nền tảng toán học và cấu trúc tổng thể

2.1 Đường cong elliptic và cấu trúc nhóm của các điểm

Điểm xuất phát của ECC là một đường cong elliptic xác định trên một trường hữu hạn. Trên trường nguyên tố GF(p), người ta thường dùng dạng Weierstrass y² = x³ + ax + b (mod p), phải thỏa điều kiện biệt thức 4a³ + 27b² ≠ 0 để không có điểm kỳ dị. Nếu thêm một "điểm ở vô cực (point at infinity, O)" làm phần tử đơn vị vào tập hợp tất cả các điểm trên đường cong này, tập các điểm tạo thành một nhóm abel đóng dưới phép cộng và thỏa mãn tính kết hợp, có phần tử đơn vị và phần tử nghịch đảo.

Một trực giác quan trọng ở đây là tính an toàn của ECC đến không phải từ "bản thân đường cong" mà từ "cấu trúc phép cộng xác định trên nhóm này". Quy tắc hình học để cộng hai điểm P, Q (điểm thứ ba nơi đường thẳng qua chúng gặp đường cong, được phản chiếu qua trục x) được thay bằng số học modulo trên trường hữu hạn, và quy tắc này tạo ra tính bất đối xứng phân tách chiều "dễ" về mặt mật mã khỏi chiều "khó". Nghĩa là phép cộng điểm và phép nhân vô hướng được tính hiệu quả, nhưng phép nghịch đảo của chúng (logarit rời rạc) thực tế không giải được — tính một chiều này là nền tảng của hệ mật mã.

2.2 Sơ đồ cấu trúc tổng thể của ECC

flowchart TB
  subgraph MATH["Nền tảng toán học"]
    FF["Trường hữu hạn GF(p) hoặc GF(2^m)"]
    EC["Đường cong elliptic y^2 = x^3 + ax + b"]
    GRP["Nhóm abel của các điểm(cộng·nghịch đảo·đơn vị O)"]
  end
  subgraph PARAM["Tham số miền"]
    CURVE["Hệ số đường cong a,b / số nguyên tố p"]
    BASE["Điểm cơ sở G(phần tử sinh)"]
    ORDER["Cấp n·cofactor h"]
  end
  subgraph HARD["Bài toán khó"]
    ECDLP["ECDLP: không thể khôi phục k từ Q=kG"]
  end
  subgraph PRIMS["Nguyên thủy mật mã"]
    ECDH["Trao đổi khóa ECDH"]
    ECDSA["Chữ ký số ECDSA"]
    ECIES["Mã hóa khóa công khai ECIES"]
  end
  FF --> EC --> GRP
  GRP --> BASE
  CURVE --> BASE --> ORDER
  ORDER --> ECDLP
  ECDLP --> ECDH
  ECDLP --> ECDSA
  ECDLP --> ECIES

Như sơ đồ cho thấy, hệ thống ECC gồm bốn tầng: (1) nền tảng toán học là nhóm đường cong elliptic trên trường hữu hạn, (2) các tham số miền được tất cả các bên chia sẻ (hệ số đường cong, số nguyên tố p, điểm cơ sở G, cấp n), (3) bài toán khó ECDLP, và (4) các nguyên thủy xây dựng bên trên như ECDH, ECDSA và ECIES. Đặc biệt, chất lượng của tham số miền quyết định tính an toàn: cấp n của điểm cơ sở G phải là số nguyên tố đủ lớn, cofactor h phải nhỏ, và các tham số phải được sinh một cách kiểm chứng được (verifiably random) để chứng minh chúng không bị can thiệp, loại bỏ lo ngại về cửa hậu.

2.3 Phép toán cốt lõi — phép nhân vô hướng và ECDLP

Mọi phép toán của ECC rốt cuộc quy về phép nhân vô hướng (scalar multiplication) Q = kG, tức cộng điểm cơ sở G với chính nó k lần. Phép toán này được tính trong O(log k) phép cộng điểm nhờ khai triển nhị phân và kỹ thuật "double-and-add", nên dù k có 256 bit cũng kết thúc trong vài trăm phép toán nhóm. Ngược lại, bài toán khôi phục vô hướng k khi chỉ biết điểm công khai Q và G chính là ECDLP, và ngay cả tấn công tổng quát tốt nhất cũng đòi hỏi cỡ √n ≈ 2^128 phép toán, khiến nó thực tế bất khả thi.

Biểu diễn bằng con số, tính bất đối xứng này rõ ràng đầy sức thuyết phục. Một đường cong 256 bit có cấp nhóm khoảng 2^256, và chi phí tấn công Pollard's rho vào khoảng 2^128, một khối lượng tính toán quy mô vũ trụ. Trái lại, phép nhân vô hướng của người dùng hợp lệ kết thúc trong vài micro giây với khoảng 256 bước double-and-add, nên cấu trúc lý tưởng của mật mã khóa công khai — "tính toán hợp lệ thì rẻ còn tấn công thì thiên văn" — được thỏa mãn.

3. Nguyên thủy cốt lõi và quy trình hoạt động

3.1 ECDH — Trao đổi khóa

ECDH (Elliptic Curve Diffie-Hellman) là giao thức theo đó hai bên thống nhất an toàn một bí mật chung qua kênh công khai. Mỗi bên tạo khóa riêng (vô hướng) a, b và khóa công khai A=aG, B=bG, chỉ trao đổi khóa công khai, rồi nhân khóa công khai của đối phương với khóa riêng của mình để đạt tới cùng một điểm, a·B = a(bG) = b(aG) = b·A = abG. Kẻ nghe lén thấy A, B và G nhưng để tính abG thì phải giải ECDLP, nên không thể biết bí mật chung.

sequenceDiagram
  participant A as Alice
  participant N as "Kênh công khai(có thể nghe lén)"
  participant B as Bob
  A->>A: chọn khóa riêng a, tính khóa công khai A=aG
  B->>B: chọn khóa riêng b, tính khóa công khai B=bG
  A->>N: gửi khóa công khai A
  N->>B: chuyển A
  B->>N: gửi khóa công khai B
  N->>A: chuyển B
  A->>A: điểm chung S=a*B=abG
  B->>B: điểm chung S=b*A=abG
  Note over A,B: suy ra khóa phiên từ cùng S qua KDF

Trong thực tế, ECDHE — dùng cặp khóa tạm thời (ephemeral) cho mỗi phiên — là tiêu chuẩn, nhằm cung cấp tính bí mật chuyển tiếp (Forward Secrecy). Nghĩa là dù khóa riêng dài hạn của máy chủ rò rỉ về sau, các khóa tạm thời của các phiên quá khứ đã bị hủy, nên không thể giải mã lưu lượng quá khứ. Một trường hợp tiêu biểu là TLS 1.3, vốn loại bỏ trao đổi khóa RSA tĩnh và DH tĩnh và trên thực tế bắt buộc ECDHE; đây cũng là một phòng thủ trước mối đe dọa "Harvest Now, Decrypt Later".

3.2 ECDSA — Chữ ký số

ECDSA (Elliptic Curve Digital Signature Algorithm) là phương thức chữ ký chuyển DSA sang nhóm đường cong elliptic. Người ký tính R=kG từ băm thông điệp e và số ngẫu nhiên tạm thời k, lấy tọa độ x của nó làm r, tính s = k⁻¹(e + r·d) (mod n), và xuất ra (r, s) làm chữ ký (d là khóa riêng). Người xác minh tái dựng R từ khóa công khai Q=dG và (r, s) và kiểm tra tọa độ x có khớp với r hay không.

Cạm bẫy thực tế chí mạng nhất trong ECDSA là việc tái sử dụng hoặc đoán được số ngẫu nhiên tạm thời k. Nếu dùng cùng một k trong hai chữ ký khác nhau, khóa riêng d bị lộ trực tiếp qua hệ phương trình; thực tế, năm 2010 Sony PlayStation 3 đã dùng một hằng số cố định cho k, khiến khóa riêng ký bị trích xuất và việc ký mã tùy ý trở nên khả thi. Vì lý do này, hiện nay người ta khuyến nghị RFC 6979, vốn suy ra k một cách tất định từ thông điệp và khóa riêng, hoặc EdDSA (Ed25519), vốn loại bỏ lỗ hổng số ngẫu nhiên ngay từ thiết kế.

3.3 Tiêu chuẩn đường cong và tham số

Tính an toàn và hiệu năng của ECC khác nhau đáng kể tùy vào việc dùng đường cong nào. Các tiêu chuẩn tiêu biểu được liệt kê dưới đây, và không chỉ hiệu năng thuần túy mà cả "tính an toàn triển khai (phép toán thời gian hằng có dễ không)" và "độ tin cậy tham số (có phải ngẫu nhiên kiểm chứng được không)" trở thành tiêu chí lựa chọn.

Đường cong Mức an toàn(xấp xỉ) Đặc điểm·công dụng Điểm cân nhắc
NIST P-256(secp256r1) 128 bit Tiêu chuẩn TLS·PKI, hỗ trợ phần cứng dồi dào Tranh cãi về tính minh bạch khi sinh tham số
secp256k1 128 bit Chữ ký Bitcoin·Ethereum Cấu trúc phi tiêu chuẩn, có thể tối ưu riêng
Curve25519 128 bit Trao đổi khóa X25519, triển khai nhanh·an toàn Thiết kế thời gian hằng·kháng lỗi
Ed25519 128 bit Chữ ký EdDSA, loại bỏ lỗ hổng số ngẫu nhiên Lan rộng trong SSH·giao thức hiện đại
P-384 / Curve448 192 bit trở lên An toàn cao·bí mật dài hạn Chi phí hiệu năng tăng

Trong bảng này, sự tương phản giữa NIST P-256 và Curve25519 đặc biệt quan trọng. Cả hai đều cung cấp mức an toàn 128 bit, nhưng P-256 bị chỉ trích vì quá trình sinh của nó có một hằng số không được giải thích (seed) không loại trừ hoàn toàn khả năng cửa hậu, trong khi Curve25519 và Ed25519 có căn cứ sinh minh bạch và dùng dạng Montgomery/twisted Edwards, giúp triển khai thời gian hằng và kháng kênh phụ dễ dàng nên giành được sự tin cậy. Kết quả là các giao thức hiện đại như Signal, WireGuard, OpenSSH và TLS 1.3 có xu hướng chọn họ Curve25519 làm lựa chọn ưu tiên.

4. So sánh với RSA và các trường hợp ứng dụng

ECC và RSA đều là hệ mật mã khóa công khai, nhưng căn cứ an toàn và đặc tính hiệu quả của chúng khác nhau về căn bản. RSA dựa trên bài toán phân tích thừa số và, khi khóa lớn lên, bị truy đuổi bởi các tấn công dưới hàm mũ, trong khi ECC dựa trên ECDLP khó theo hàm mũ, nên tính an toàn của nó tăng dốc so với sự tăng của khóa.

Phân loại RSA ECC Vì sao có sự khác biệt
Bài toán nền tảng Phân tích thừa số(IFP) Logarit rời rạc đường cong elliptic(ECDLP) Không có thuật toán dưới hàm mũ cho ECDLP
Độ dài khóa cho an toàn 128 bit khoảng 3072 bit khoảng 256 bit Khác biệt về độ phức tạp thuật toán tấn công
Tốc độ tạo chữ ký Chậm Nhanh Khóa ngắn·ít phép toán
Tốc độ xác minh chữ ký Nhanh Tương đối chậm Số mũ e của RSA nhỏ(65537)
Băng thông·lưu trữ Lớn Nhỏ Kích thước khóa·chữ ký nhỏ
Độ khó triển khai Tương đối đơn giản Phức tạp(lưu ý kênh phụ) Cần phép toán nhóm·triển khai thời gian hằng

Hàm ý thực tế của so sánh này là "điểm tối ưu khác nhau theo trường hợp sử dụng". Chẳng hạn, một API gateway nơi máy chủ thực hiện xác minh JWT hàng loạt có thể hưởng lợi từ RSA với việc xác minh nhanh, nhưng một môi trường nơi nhiều thiết bị di động mỗi cái tự tạo và trao đổi chữ ký thì ưu thế áp đảo thuộc về ECC với việc tạo nhanh và kích thước truyền nhỏ. Thực tế, các chip an toàn di động như Apple Secure Enclave và Android StrongBox, xác thực chủ động trong hộ chiếu điện tử (ICAO Doc 9303), và ký giao dịch Bitcoin (secp256k1) đã chọn ECC vì điểm chung là môi trường bị ràng buộc và giao dịch hàng loạt. Các trường hợp đo lường TLS cũng cho thấy tổ hợp ECDHE+ECDSA hạ đáng kể độ trễ bắt tay và mức dùng CPU so với trao đổi khóa RSA (con số cụ thể thay đổi theo môi trường).

5. (Chuyên sâu) Chuyển đổi sang mật mã kháng lượng tử và xu hướng mới nhất

Mối đe dọa cấu trúc lớn nhất đối với ECC là máy tính lượng tử. Một khi xuất hiện máy tính lượng tử chịu lỗi đủ lớn, thuật toán Shor sẽ giải ECDLP trong thời gian đa thức, nên ECC, cùng với RSA, bị vô hiệu hóa về căn bản. Thậm chí có phân tích cho rằng ECC, với khóa ngắn, có thể bị tấn công với ít qubit hơn RSA, nên dưới góc độ mối đe dọa lượng tử ECC có thể bị phá trước.

Theo đó, NIST đã hoàn tất các tiêu chuẩn mật mã kháng lượng tử (PQC) FIPS 203 (ML-KEM), FIPS 204 (ML-DSA) và FIPS 205 (SLH-DSA) vào năm 2024, và lộ trình chuyển đổi của họ (bản dự thảo NIST IR 8547, v.v.) đề xuất đẩy dần các thuật toán dễ bị lượng tử như RSA và ECC ra — khuyến nghị loại bỏ vào khoảng 2030 và không cho phép vào khoảng 2035 (chi tiết cần đối chiếu với nguồn gốc). Tuy nhiên, vì lo ngại rằng PQC chưa được kiểm chứng đủ, trước mắt một phương pháp lai (hybrid) đang tự khẳng định mình là giải pháp thực tế. Ví dụ, trao đổi khóa X25519MLKEM768 trong TLS, vốn kết hợp X25519 và ML-KEM, được thiết kế sao cho tổng thể vẫn an toàn miễn là một trong hai an toàn, chuẩn bị cho mối đe dọa lượng tử trong khi vẫn giữ tương thích với hệ sinh thái ECC hiện có — Google, Cloudflare và những bên khác đã triển khai nó ở quy mô lớn.

Một xu hướng khác là tăng cường tính an toàn triển khai của chính ECC. Vì ngay cả ECC an toàn về mặt toán học cũng liên tục chịu rò rỉ khóa riêng do tấn công kênh phụ (phân tích điện năng/thời gian) hoặc lỗ hổng số ngẫu nhiên, phép toán thời gian hằng, số ngẫu nhiên tất định (RFC 6979), áp dụng EdDSA, và lựa chọn đường cong an toàn (Curve25519) đã nổi lên như cốt lõi của "quản trị triển khai". Nói cách khác, nhận thức rằng "triển khai như thế nào" quyết định tính an toàn thực tế không kém gì lựa chọn thuật toán đang chín muồi.

6. Điểm cần cân nhắc và hàm ý (góc nhìn Kỹ sư chuyên nghiệp)

  • Chiến lược chuyển đổi (tính linh hoạt mật mã): Vì mối đe dọa lượng tử gần như chắc chắn, không nên hardcode ECC khắp mã nguồn mà trước hết thiết lập tính linh hoạt mật mã (Crypto-Agility) giúp thuật toán có thể thay thế qua chính sách và cấu hình. Thực tế là nên kiểm kê việc dùng ECC bằng CBOM và áp dụng trao đổi khóa lai theo từng giai đoạn trước.
  • Đánh đổi: ECC có ưu điểm khóa ngắn, băng thông thấp và tạo chữ ký nhanh, nhưng phép toán nhóm của nó phức tạp khiến nó dễ bị lỗi triển khai và tấn công kênh phụ, còn xác minh chữ ký có thể chậm hơn RSA. Một thiết kế kết hợp có chọn lọc RSA, ECC và PQC theo trường hợp sử dụng (xác minh hàng loạt so với thiết bị bị ràng buộc) là điều đáng mong muốn.
  • Rủi ro triển khai·vận hành: Vì tái sử dụng số ngẫu nhiên tạm thời k trong ECDSA dẫn thẳng đến lộ toàn bộ khóa riêng, nên áp dụng chữ ký tất định (RFC 6979) hoặc EdDSA và cô lập khóa bằng mô-đun an toàn phần cứng (HSM) hoặc Secure Enclave. Khi chọn đường cong, hãy đánh giá không chỉ hiệu năng mà cả độ tin cậy tham số và sự dễ dàng triển khai thời gian hằng (họ Curve25519).
  • Tuân thủ tiêu chuẩn·quy định: Tuân thủ các đường cong được phê duyệt của NIST SP 800-57·FIPS 186 và quy định của từng quốc gia, nhưng xét lộ trình chuyển đổi PQC (2030/2035), nên đẩy sớm việc chuyển đổi lai cho các tài sản đòi hỏi bí mật dài hạn.
  • Triển vọng và công nghệ liên quan: ECC trong ngắn hạn sẽ cùng tồn tại như một trục của PQC lai rồi được thay bằng ML-KEM·ML-DSA trong trung và dài hạn, nhưng nhờ ưu thế khóa ngắn, dự kiến nó sẽ duy trì vị trí cốt lõi trong thời gian trước mắt ở các môi trường bị ràng buộc như IoT và blockchain. Nó gắn chặt với xác thực workload của zero-trust, DID (danh tính phi tập trung) và TLS 1.3.

Tài liệu tham khảo


Tóm tắt một câu: ECC là hệ mật mã khóa công khai dùng phép nhân vô hướng của nhóm đường cong elliptic trên trường hữu hạn và bài toán khó ECDLP để đạt cùng mức an toàn với khóa ngắn hơn RSA rất nhiều; nó tạo nên xương sống của TLS, di động và blockchain thông qua ECDH và ECDSA, nhưng một cuộc chuyển đổi PQC lai đang diễn ra để ứng phó với mối đe dọa máy tính lượng tử.