Mật mã đường cong elliptic là nền tảng toán học của hầu hết các giao thức bảo mật hiện đại, cho phép thiết lập khóa bí mật chung và tạo chữ ký số với kích thước khóa nhỏ gọn và mức bảo mật vượt trội so với RSA.
Giới thiệu
Mật mã đường cong elliptic (ECC – Elliptic Curve Cryptography) là hệ thống mật mã khóa công khai dựa trên cấu trúc đại số của các đường cong elliptic trên trường hữu hạn. Kể từ khi được Neal Koblitz (1948–) và Victor Miller (1947–) đề xuất độc lập vào năm 1985, ECC đã trở thành nền tảng kỹ thuật của hầu hết các giao thức bảo mật hiện đại – từ HTTPS đến Signal Protocol, từ blockchain đến hộ chiếu điện tử. Toàn bộ các thành phần cốt lõi của Signal Protocol – X3DH, Double Ratchet, XEdDSA và PQXDH – đều dựa trực tiếp vào ECC để thực hiện trao đổi khóa, ký số và xác thực danh tính.
Điểm khác biệt quan trọng nhất của ECC so với các hệ thống mật mã khóa công khai truyền thống như RSA là hiệu quả bảo mật trên mỗi bit khóa. Để đạt mức bảo mật 128 bit – tiêu chuẩn phổ biến hiện nay – RSA cần khóa 3072 bit trong khi ECC chỉ cần 256 bit. Sự khác biệt này không chỉ có ý nghĩa về lưu trữ: khóa nhỏ hơn đồng nghĩa với tính toán nhanh hơn, tiêu thụ điện năng ít hơn và băng thông truyền tải nhỏ hơn – những yếu tố cực kỳ quan trọng với các ứng dụng nhắn tin di động cần xử lý hàng tỷ phiên mã hóa mỗi ngày.
Bài viết này giải thích các khái niệm toán học cơ bản của ECC, cách xây dựng hệ thống trao đổi khóa Diffie–Hellman đường cong elliptic (ECDH), các đường cong cụ thể được Signal Protocol sử dụng (Curve25519 và Curve448), và tại sao độ khó của bài toán logarit rời rạc đường cong elliptic (ECDLP) là nền tảng bảo mật của toàn bộ hệ thống. Hiểu phần này là điều kiện tiên quyết để nắm bắt đầy đủ cách X3DH thiết lập khóa phiên, cách XEdDSA tạo và xác minh chữ ký, và tại sao PQXDH cần bổ sung thêm thành phần hậu lượng tử để chống lại mối đe dọa từ thuật toán Shor.
Nền tảng toán học
Mật mã đường cong elliptic không đòi hỏi người dùng phải là nhà toán học chuyên nghiệp, nhưng cần nắm vững bốn khối kiến thức nền: đường cong elliptic là gì và có cấu trúc đại số như thế nào; trường hữu hạn nơi các đường cong này hoạt động; phép cộng điểm tạo nên cấu trúc nhóm; và phép nhân vô hướng – phép toán một chiều tạo ra bảo mật mật mã.
Đường cong elliptic và cấu trúc nhóm
Một đường cong elliptic trên trường số thực được định nghĩa bởi phương trình dạng Weierstrass ngắn gọn:
y² = x³ + ax + b
trong đó a và b là các hằng số thỏa mãn điều kiện phi suy biến 4a³ + 27b² ≠ 0 – điều kiện này đảm bảo đường cong không có điểm nhọn hay điểm tự giao, tức là mỗi điểm trên đường cong có đúng một tiếp tuyến xác định. Tập hợp tất cả các điểm (x, y) thỏa mãn phương trình này, cùng với một điểm đặc biệt gọi là điểm vô cực hay điểm đơn vị (ký hiệu O hay I), tạo thành một cấu trúc đại số có tên là nhóm Abel.
Điều làm cho đường cong elliptic hữu ích trong mật mã là cấu trúc nhóm này cho phép định nghĩa một phép toán cộng hình học giữa các điểm. Cho hai điểm phân biệt P và Q trên đường cong, đường thẳng đi qua P và Q cắt đường cong tại điểm thứ ba R’. Phản chiếu R’ qua trục hoành cho điểm R, và ta định nghĩa P + Q = R. Nếu P = Q, ta dùng tiếp tuyến tại P thay vì đường nối P và Q. Điểm đơn vị O đóng vai trò phần tử trung lập: P + O = P với mọi điểm P. Phần tử đối của P = (x, y) là –P = (x, –y) vì đường nối P và –P là đường thẳng đứng cắt đường cong tại điểm vô cực O.
Cấu trúc nhóm này thỏa mãn đầy đủ các tiên đề: tính kết hợp (P + Q) + R = P + (Q + R), tồn tại phần tử đơn vị, tồn tại phần tử đối, và tính giao hoán P + Q = Q + P. Nhóm giao hoán (Abel) là nền tảng toán học cho toàn bộ mật mã đường cong elliptic.
Phép nhân vô hướng là phép toán trung tâm nhất trong ECC. Cho số nguyên k và điểm P, phép nhân vô hướng tính điểm kP = P + P + P + … + P (cộng k lần). Dù định nghĩa là cộng lặp lại, trong thực tế phép nhân vô hướng được tính hiệu quả bằng phương pháp bình phương và nhân (double-and-add): nhân đôi điểm theo từng bit của k, cộng vào kết quả chỉ khi bit tương ứng bằng 1. Thuật toán này tính kP trong thời gian O(log k) phép cộng điểm thay vì O(k) nếu cộng trực tiếp – giảm từ hàng tỷ phép tính xuống còn vài trăm với k 256 bit.
Trường hữu hạn và tính an toàn mật mã
Mật mã học không dùng đường cong elliptic trên số thực vì các phép tính số thực có sai số làm lệch kết quả và không đảm bảo tính toán nhất quán giữa các thiết bị khác nhau. Thay vào đó, ECC sử dụng đường cong elliptic trên trường hữu hạn – tập hợp số nguyên từ 0 đến p–1 với p là số nguyên tố lớn, trong đó mọi phép toán được thực hiện theo modulo p.
Trên trường hữu hạn GF(p), phương trình đường cong trở thành y² ≡ x³ + ax + b (mod p) và các điểm thỏa mãn phương trình này tạo thành một tập hữu hạn. Phép cộng điểm vẫn được định nghĩa theo cùng quy tắc hình học nhưng thực hiện theo modulo p, cho kết quả luôn là số nguyên trong khoảng [0, p–1]. Nhờ đó, phép tính hoàn toàn chính xác và nhất quán, không phụ thuộc vào kiến trúc phần cứng hay độ chính xác của phép tính số thực.
Số lượng điểm trên đường cong (ký hiệu #E(GF(p))) xấp xỉ p theo định lý Hasse: |#E(GF(p)) – (p+1)| ≤ 2√p. Các điểm này tạo thành một nhóm con có bậc q (số lượng phần tử) là số nguyên tố hoặc gần nguyên tố. Điểm cơ sở B được chọn sao cho qB = O (điểm đơn vị), nghĩa là mọi điểm kB với k từ 1 đến q đều khác nhau và tạo thành một nhóm vòng có bậc q.
Bảo mật mật mã xuất phát từ độ khó của bài toán logarit rời rạc đường cong elliptic (ECDLP): cho trước điểm cơ sở B, điểm công khai Q = kB và bậc nhóm q, hãy tìm số nguyên k. Dù phép nhân vô hướng tiến (k → kB) rất nhanh (vài mili giây trên phần cứng hiện đại), bài toán ngược (kB, B → k) cho đến nay không có thuật toán nào giải hiệu quả hơn tấn công brute-force theo căn bậc hai. Với nhóm bậc q có 256 bit, brute-force cần khoảng 2^128 phép tính – một số lớn hơn số nguyên tử trong vũ trụ quan sát được, hoàn toàn nằm ngoài khả năng tính toán của mọi siêu máy tính hiện có và trong tương lai gần.
Trao đổi khóa Diffie–Hellman đường cong elliptic (ECDH)
ECDH cho phép hai bên thiết lập khóa bí mật chung qua kênh không an toàn mà không cần trao đổi bí mật trực tiếp. Giao thức hoạt động như sau với Mỹ Anh và Đan Nguyên:
Hai bên thống nhất trước về đường cong elliptic, điểm cơ sở B và bậc nhóm q – tất cả thông tin này là công khai. Mỹ Anh chọn ngẫu nhiên một số nguyên a trong khoảng [1, q–1] làm khóa riêng, tính điểm A = aB làm khóa công khai và gửi A cho Đan Nguyên. Đan Nguyên tương tự chọn khóa riêng b, tính B_pub = bB và gửi cho Mỹ Anh. Mỹ Anh tính S = aB_pub = a(bB) = abB; Đan Nguyên tính S = bA = b(aB) = abB. Cả hai đạt được cùng điểm S = abB – đây là bí mật chung.
Tính an toàn của ECDH dựa hoàn toàn vào ECDLP: kẻ tấn công quan sát được A = aB và B_pub = bB nhưng không thể tính abB mà không biết a hay b. Nếu có thể giải ECDLP để tìm a từ A hay b từ B_pub, kẻ tấn công sẽ phá vỡ giao thức. Tuy nhiên, với các đường cong được chọn đúng cách và kích thước đủ lớn, ECDLP là bài toán không có lời giải hiệu quả đã biết trên máy tính cổ điển.
Trong Signal Protocol, ECDH xuất hiện dưới dạng hàm DH(PK1, PK2) trong đặc tả X3DH và Double Ratchet. Mỗi lần gọi hàm DH thực hiện đúng quy trình trên: một bên dùng khóa riêng của mình và khóa công khai của bên kia để tính điểm bí mật chung, rồi lấy tọa độ u (hay x) của điểm đó làm đầu ra. Giao thức X3DH kết hợp ba hoặc bốn phép tính DH song song để đạt đồng thời xác thực lẫn nhau và bảo mật chuyển tiếp – một bài toán phức tạp hơn nhiều so với ECDH đơn thuần.
Bài toán ECDLP và cơ sở bảo mật
Bài toán logarit rời rạc đường cong elliptic (ECDLP) phát biểu như sau: cho điểm cơ sở B, bậc nhóm q (số nguyên tố) và điểm Q = kB với k là một số nguyên bí mật trong [1, q–1], hãy xác định k.
Không có thuật toán đa thức nào được biết để giải ECDLP cho các đường cong tổng quát. Thuật toán hiệu quả nhất hiện có là phương pháp Pohlig–Hellman kết hợp với Baby-step giant-step hay Pollard’s rho, cả hai đều có độ phức tạp khoảng O(√q) – nghĩa là cần khoảng 2^128 phép tính với nhóm bậc q có 256 bit. Đây là lý do tại sao các đường cong ECC 256 bit cung cấp bảo mật tương đương RSA 3072 bit: độ khó của ECDLP tăng trưởng theo căn bậc hai của bậc nhóm, trong khi bài toán phân tích nhân tử RSA tăng trưởng dưới hàm mũ theo độ dài khóa.
Một điều kiện quan trọng cho bảo mật ECC là đường cong được chọn phải không bị ảnh hưởng bởi các cuộc tấn công đặc biệt áp dụng cho một số lớp đường cong nhất định. Tấn công MOV (Menezes–Okamoto–Vanstone) có thể áp dụng khi hệ số nhúng (embedding degree) của đường cong nhỏ, đưa ECDLP về bài toán logarit rời rạc trên trường mở rộng dễ giải hơn. Tấn công Pohlig–Hellman trở nên hiệu quả khi bậc nhóm có nhiều thừa số nhỏ, cho phép giải ECDLP theo từng thừa số rồi kết hợp bằng định lý số dư Trung Hoa. Đường cong anomalous (bậc nhóm bằng p) bị tấn công bởi thuật toán Semaev–Smart–Satoh–Araki. Chính vì các điểm yếu đặc thù này mà việc chọn đường cong an toàn – thay vì tự thiết kế – là yêu cầu bắt buộc trong thực tiễn.
Curve25519 và Curve448
Signal Protocol sử dụng hai đường cong cụ thể: Curve25519 cho hầu hết các trường hợp và Curve448 khi cần mức bảo mật cao hơn. Cả hai đều thuộc họ đường cong Montgomery – một dạng đặc biệt có nhiều ưu điểm kỹ thuật so với dạng Weierstrass ngắn gọn truyền thống.
Curve25519 – đường cong được thiết kế để an toàn
Curve25519 được Daniel Bernstein (1971–) thiết kế và công bố năm 2006 với triết lý bảo mật qua thiết kế minh bạch (security through transparency): toàn bộ các quyết định thiết kế đều được ghi lại và giải thích công khai, không có thông số nào được chọn theo cách bí ẩn có thể ẩn chứa cửa hậu. Đây là phản ứng trực tiếp trước lo ngại rằng một số đường cong NIST (đặc biệt là đường cong P-256) có thể đã bị thiết kế có chủ đích để yếu hơn bề ngoài – lo ngại được củng cố bởi vụ rò rỉ Snowden năm 2013 về chương trình can thiệp của NSA vào các tiêu chuẩn mật mã.
Phương trình đường cong Montgomery của Curve25519 là y² = x³ + 486662x² + x trên trường GF(2²⁵⁵ – 19). Số nguyên tố p = 2²⁵⁵ – 19 được chọn vì hai lý do kỹ thuật: thứ nhất, dạng số Mersenne gần cho phép giảm modulo cực kỳ hiệu quả bằng cách dùng phép dịch bit thay vì phép chia thực sự; thứ hai, các phần tử trường 256 bit vừa khít với các thanh ghi 64 bit của CPU hiện đại, cho phép tối ưu hóa phần mềm tối đa. Hằng số A = 486662 được chọn là giá trị nhỏ nhất (trong danh sách ứng viên nhất định) đảm bảo đường cong không có các điểm yếu đã biết và hệ số nhúng đủ lớn.
Curve25519 có bậc nhóm n = 8q với q là số nguyên tố 252 bit, và hệ số cofactor c = 8. Việc n có thừa số nhỏ (bằng 8) đòi hỏi cẩn thận: các điểm có bậc thấp (bậc 1, 2, 4, 8) tạo thành nhóm con nhỏ, và một số tấn công nhóm con nhỏ có thể được thực hiện nếu không lọc chúng ra. Trong thực tế, phép nhân vô hướng trong X25519 tự động xử lý điều này bằng cách luôn nhân số vô hướng k với hệ số 8 trước khi tính – kỹ thuật này gọi là clamping và đảm bảo kết quả luôn nằm trong nhóm con bậc nguyên tố q. Bảo mật 128 bit của Curve25519 xuất phát từ bậc q có 252 bit: tấn công Pollard’s rho cần khoảng 2^126 phép tính để giải ECDLP.
Ưu điểm nổi bật nhất của Curve25519 là hiệu suất triển khai phần mềm. Phép tính X25519 (ECDH trên Curve25519) được tối ưu đặc biệt: thuật toán Montgomery ladder tính nhân vô hướng chỉ cần tọa độ u của điểm (không cần tọa độ v), tránh hoàn toàn phép tính căn bậc hai và phép chia modulo tốn kém. Kết quả là X25519 nhanh hơn khoảng 10 lần so với ECDH trên đường cong P-256 khi triển khai phần mềm thuần túy, và có khả năng chống tấn công kênh thời gian tự nhiên vì số lượng phép tính không phụ thuộc vào giá trị của số vô hướng k.
Trong đặc tả Signal Protocol, Curve25519 xuất hiện dưới hai dạng: dạng Montgomery trong hàm X25519 phục vụ Diffie–Hellman, và dạng Edwards xoắn (twisted Edwards) trong thuật toán Ed25519 phục vụ chữ ký số. Hai dạng này tương đương song hữu tỷ với nhau – có thể chuyển đổi qua lại bằng phép biến đổi Möbius đơn giản – và đây chính là nền tảng cho XEdDSA: cùng một cặp khóa Montgomery dùng cho cả DH lẫn ký số, không cần duy trì hai cặp khóa riêng biệt.
Curve448 – bảo mật cấp độ cao hơn
Curve448 được Mike Hamburg thiết kế và công bố năm 2015. Tên gọi xuất phát từ số nguyên tố trường p = 2⁴⁴⁸ – 2²²⁴ – 1 – còn gọi là số nguyên tố Goldilocks vì cấu trúc đặc biệt của nó. Phương trình đường cong Montgomery là y² = x³ + 156326x² + x trên GF(p).
Curve448 cung cấp khoảng 224 bit bảo mật – cao hơn đáng kể so với 128 bit của Curve25519. Sự khác biệt này có ý nghĩa thực tiễn trong hai ngữ cảnh: các ứng dụng cần bảo vệ dữ liệu trong thời gian rất dài (hàng chục năm), và các ngữ cảnh lo ngại về máy tính lượng tử. Thuật toán Grover của máy tính lượng tử giảm mức bảo mật về bình phương: 128 bit cổ điển → 64 bit lượng tử (không đủ an toàn); 224 bit cổ điển → 112 bit lượng tử (vẫn đạt tiêu chuẩn NIST Level 3). Đây là lý do PQXDH cung cấp Curve448 như một lựa chọn bên cạnh Curve25519 cho các triển khai cần biên an toàn lớn hơn trước mối đe dọa lượng tử.
Curve448 có hệ số cofactor c = 4 (so với 8 của Curve25519) và bậc nhóm n = 4q với q là số nguyên tố 446 bit. Kỹ thuật clamping tương tự Curve25519 được áp dụng để đảm bảo phép tính ECDH luôn hoạt động trong nhóm con bậc nguyên tố q. Số nguyên tố Goldilocks p = 2⁴⁴⁸ – 2²²⁴ – 1 có cấu trúc đặc biệt cho phép biểu diễn phần tử trường dưới dạng hai limb 224 bit, tối ưu hóa cho việc tính modulo trên CPU 64 bit mà không cần phép chia.
Đánh đổi của Curve448 so với Curve25519 là hiệu suất thấp hơn và kích thước dữ liệu lớn hơn: khóa công khai X448 là 56 byte (so với 32 byte của X25519), chữ ký XEd448 là 114 byte (so với 64 byte), và tốc độ tính toán chậm hơn khoảng 3–4 lần. Trong thực tế, Signal Protocol và hầu hết các ứng dụng hiện tại chọn Curve25519 làm mặc định; Curve448 được cung cấp như tùy chọn cho các ngữ cảnh đặc biệt.
Các dạng đường cong trong Signal Protocol
Một điểm tinh tế quan trọng là Signal Protocol sử dụng không phải một mà là hai dạng toán học của đường cong elliptic: dạng Montgomery cho trao đổi Diffie–Hellman và dạng Edwards xoắn cho chữ ký số.
Đường cong Montgomery và thuật toán ladder
Đường cong Montgomery có phương trình dạng By² = x³ + Ax² + x với các hằng số A và B đặc trưng. Dạng này đặc biệt phù hợp cho phép tính Diffie–Hellman vì thuật toán Montgomery ladder chỉ cần tọa độ x (hay u trong ký hiệu của Signal Protocol) để tính nhân vô hướng, không cần tọa độ y. Điều này có hai lợi ích thực tiễn: khóa công khai có thể biểu diễn bằng một số 32 byte thay vì 64 byte (một điểm đầy đủ), và phép tính không bao giờ cần xác định căn bậc hai modulo p – phép tính tốn kém nhất trong ECC.
Montgomery ladder là thuật toán nhân vô hướng đặc biệt cho dạng Montgomery. Thay vì theo dõi một điểm và nhân đôi hay cộng tùy theo từng bit của số vô hướng (như trong thuật toán double-and-add tiêu chuẩn), Montgomery ladder theo dõi đồng thời hai điểm liên tiếp và thực hiện một phép nhân đôi và một phép cộng cho mỗi bit bất kể giá trị của bit đó là 0 hay 1. Nhờ đó, thuật toán có số lượng phép tính hoàn toàn cố định và không phụ thuộc vào giá trị của số vô hướng – đây là tính chất thời gian cố định (constant-time) bảo vệ chống tấn công kênh thời gian.
Đường cong Edwards xoắn và phép cộng thống nhất
Đường cong Edwards xoắn có phương trình dạng ax² + y² = 1 + dx²y² với a ≠ d. Khi a = –1, dạng này được gọi là đường cong Edwards xoắn (twisted Edwards) và là dạng Signal Protocol dùng cho chữ ký Ed25519 và XEdDSA. Dạng Edwards có ưu điểm quan trọng: luật cộng điểm là thống nhất (unified) – cùng một công thức áp dụng cho tất cả các cặp điểm, kể cả cộng một điểm với chính nó (nhân đôi). Điều này đơn giản hóa triển khai và loại bỏ các trường hợp đặc biệt tiềm ẩn lỗi.
Phép cộng điểm trên đường cong Edwards xoắn có dạng tường minh:
(x₁, y₁) + (x₂, y₂) = ((x₁y₂ + y₁x₂) / (1 + dx₁x₂y₁y₂), (y₁y₂ – ax₁x₂) / (1 – dx₁x₂y₁y₂))
Điểm đơn vị là (0, 1). Phần tử đối của (x, y) là (–x, y). Tính thống nhất của luật cộng – không cần trường hợp đặc biệt – là lý do Ed25519 được ưa chuộng cho chữ ký số: triển khai đơn giản hơn đồng nghĩa ít điểm lỗi tiềm ẩn hơn.
Phép chuyển đổi song hữu tỷ
Điểm tinh tế kỹ thuật quan trọng nhất trong thiết kế của XEdDSA là phép chuyển đổi song hữu tỷ giữa dạng Montgomery và dạng Edwards xoắn. Hai dạng này về bản chất mô tả cùng một đường cong đại số – chỉ khác nhau về cách biểu diễn tọa độ – và có thể chuyển đổi lẫn nhau bằng công thức đơn giản. Với Curve25519, phép chuyển đổi từ tọa độ Montgomery (u) sang tọa độ Edwards (y) là:
y = (u – 1) × inv(u + 1) (mod p)
Đây là phép biến đổi Möbius (phân tuyến) cổ điển, cho phép XEdDSA thực hiện calculate_key_pair: nhân khóa riêng Montgomery k với điểm cơ sở Edwards B để được điểm E = kB trên đường cong Edwards, rồi lấy tọa độ y và điều chỉnh khóa riêng nếu bit dấu của E bằng 1. Kết quả là cặp khóa Edwards (A, a) có tính chất bit dấu của A luôn bằng 0, đảm bảo phép chuyển đổi từ khóa công khai Montgomery sang Edwards là một-một và xác định.
Tính song hữu tỷ (birational equivalence) giữa hai dạng đảm bảo rằng bảo mật được bảo toàn qua phép chuyển đổi: nếu ai đó có thể giải ECDLP trên dạng Edwards, họ cũng có thể giải trên dạng Montgomery và ngược lại. Nhờ đó, XEdDSA có thể cam kết rằng chữ ký XEd25519 có mức bảo mật chính xác bằng X25519, không hơn không kém.
Tại sao ECC dễ bị phá bởi máy tính lượng tử
Mọi bảo mật của ECC đều dựa trên giả định rằng không có thuật toán hiệu quả nào giải được ECDLP. Giả định này đúng với máy tính cổ điển nhưng sai với máy tính lượng tử đủ mạnh.
Thuật toán Shor và mối đe dọa lượng tử
Năm 1994, Peter Shor (1959–) phát minh một thuật toán lượng tử giải bài toán tìm chu kỳ trong thời gian đa thức, và chứng minh rằng cả bài toán phân tích nhân tử RSA lẫn bài toán logarit rời rạc (bao gồm ECDLP) đều quy về bài toán tìm chu kỳ. Điều này có hệ quả trực tiếp: một máy tính lượng tử đủ lớn và ít lỗi có thể chạy thuật toán Shor để giải ECDLP trong thời gian đa thức, phá vỡ hoàn toàn bảo mật của ECC.
Để giải ECDLP cho đường cong 256 bit, thuật toán Shor cần khoảng 2330 qubit lý tưởng (không có lỗi). Với qubit thực tế có tỷ lệ lỗi, ước tính cần khoảng 3 triệu đến 20 triệu qubit vật lý để chạy thuật toán Shor đủ độ tin cậy trên Curve25519. So sánh: máy tính lượng tử lớn nhất hiện tại (2024) của IBM có khoảng 1100 qubit vật lý nhưng chưa đủ chất lượng để chạy Shor cho mã hóa thực tế. Khoảng cách giữa thực tế và ngưỡng phá vỡ ECC 256 bit vẫn còn rất lớn, nhưng tốc độ phát triển của điện toán lượng tử buộc cộng đồng mật mã phải chuẩn bị trước.
Chiến lược thu thập trước, giải mã sau (harvest now, decrypt later) là lý do tại sao mối đe dọa lượng tử đã hiện hữu ngay từ bây giờ: kẻ tấn công có thể ghi lại toàn bộ lưu lượng mã hóa hiện tại – kể cả các phiên ECDH và X3DH – và chờ đến khi máy tính lượng tử đủ mạnh để giải ECDLP trong tương lai. Toàn bộ lịch sử liên lạc được bảo vệ bằng ECC thuần túy đều có thể bị giải mã hồi tố. Đây chính là động lực ra đời của PQXDH: bằng cách bổ sung thành phần CRYSTALS-Kyber dựa trên Module-LWE – bài toán mà thuật toán Shor không thể giải – PQXDH đảm bảo rằng ngay cả khi ECDLP bị phá vỡ trong tương lai, SK của các phiên hiện tại vẫn bảo mật.
Giới hạn của giải pháp hậu lượng tử
Dù PQXDH giải quyết mối đe dọa lượng tử đối với tính bí mật, vẫn còn một khoảng trống quan trọng: tính xác thực. Trong PQXDH, xác thực lẫn nhau vẫn dựa trên các phép tính DH liên quan đến khóa định danh đường cong elliptic – thành phần này dễ bị phá bởi Shor. Một đối thủ lượng tử chủ động có thể tính khóa riêng từ khóa công khai định danh và giả mạo hoàn toàn danh tính của bất kỳ bên nào. PQXDH phiên bản hiện tại chỉ chống lại đối thủ lượng tử thụ động (chỉ ghi lại, không can thiệp). Xác thực lẫn nhau hậu lượng tử có khả năng phủ nhận là bài toán mở mà Signal Foundation và cộng đồng mật mã đang tích cực nghiên cứu.
Triển khai an toàn ECC trong thực tế
Hiểu lý thuyết ECC là chưa đủ – triển khai không đúng có thể phá vỡ bảo mật hoàn toàn dù thuật toán về lý thuyết là an toàn. Phần này trình bày các nguyên tắc triển khai không thể bỏ qua.
Bảo mật thời gian cố định
Phép nhân vô hướng trong ECC phải được triển khai theo thời gian cố định (constant-time): số lượng phép tính và mẫu truy cập bộ nhớ không được phụ thuộc vào giá trị của số vô hướng k (khóa riêng). Nếu không, kẻ tấn công có thể đo thời gian thực thi của nhiều lần ký hay DH để suy ra bit khóa riêng thông qua phân tích thống kê – đây là tấn công kênh thời gian (timing side-channel attack).
Thuật toán Montgomery ladder tự nhiên có thời gian cố định vì mỗi bit của k đều dẫn đến đúng hai phép tính (một phép nhân đôi và một phép cộng) bất kể giá trị của bit đó. Tuy nhiên, các bước khác trong triển khai – đặc biệt là phép tính nghịch đảo modulo và phép kiểm tra điều kiện – có thể vô tình tạo ra rò rỉ thời gian nếu dùng câu lệnh if hay vòng lặp phụ thuộc vào dữ liệu. Các thư viện mật mã chuyên nghiệp như libsodium và HACL* giải quyết vấn đề này bằng cách dùng phép chọn thời gian cố định (constant-time select, hay cmov) thay vì câu lệnh if, và kiểm tra nghiêm ngặt bằng công cụ phân tích tĩnh.
Xóa an toàn và quản lý vòng đời khóa
Khóa riêng ECC phải được lưu trữ an toàn và xóa ngay khi không còn cần. Xóa thông thường bằng cách giải phóng bộ nhớ là không đủ: dữ liệu có thể vẫn tồn tại trong bộ nhớ cho đến khi bị ghi đè bởi dữ liệu khác, và trong thời gian đó có thể bị khai thác qua tấn công cold boot hay phân tích swap file. Giải pháp là dùng hàm xóa an toàn (secure_memset hay memzero_explicit) ghi đè vùng bộ nhớ bằng các giá trị ngẫu nhiên hay toàn số 0 trước khi giải phóng.
Khóa riêng tạm thời (như EKA trong X3DH) phải bị xóa ngay sau khi hoàn tất phép tính DH. Khóa tiền một lần OPKB phải bị xóa khi nhận được tin nhắn sử dụng chúng. Nguyên tắc là khóa sống ngắn nhất có thể – càng ít thời gian khóa tồn tại trong bộ nhớ, càng ít cơ hội để kẻ tấn công truy xuất. Đây là điều kiện kỹ thuật cho tính bảo mật chuyển tiếp: nếu khóa tiền EKA không thực sự bị xóa sau khi dùng, bảo mật chuyển tiếp chỉ là tính chất lý thuyết không được đảm bảo trong thực tế.
Chọn đường cong an toàn và không dùng đường cong tự thiết kế
Nguyên tắc quan trọng nhất trong triển khai ECC là không bao giờ tự thiết kế đường cong. Việc thiết kế đường cong elliptic an toàn đòi hỏi kiểm tra hàng chục điều kiện kỹ thuật – từ hệ số nhúng đến cấu trúc nhóm đến khả năng chống các cuộc tấn công đặc biệt – mà ngay cả các chuyên gia mật mã giàu kinh nghiệm cũng có thể bỏ sót. Thay vào đó, chỉ nên dùng các đường cong đã được cộng đồng mật mã kiểm tra kỹ lưỡng: Curve25519 và Curve448 của Bernstein/Hamburg; các đường cong NIST P-256, P-384, P-521 (dù có một số lo ngại về nguồn gốc các hằng số).
Signal Protocol lựa chọn Curve25519 và Curve448 thay vì các đường cong NIST vì hai lý do: triết lý thiết kế minh bạch (các hằng số được giải thích công khai, không phải số ngẫu nhiên bí ẩn) và hiệu suất triển khai phần mềm vượt trội. Quyết định này phản ánh một nguyên tắc quan trọng trong bảo mật hệ thống: không chỉ thuật toán phải an toàn, mà toàn bộ quá trình từ thiết kế đến triển khai đều phải có thể kiểm chứng độc lập.
Kết luận
Mật mã đường cong elliptic là thành tựu toán học và kỹ thuật nổi bật của thế kỷ XX – khai thác cấu trúc đại số phong phú của đường cong elliptic để tạo ra hệ thống mật mã khóa công khai vượt trội về hiệu quả so với RSA. Hai đường cong Curve25519 và Curve448 không chỉ là lựa chọn kỹ thuật của Signal Protocol mà còn là chuẩn mực được cộng đồng mật mã quốc tế chấp nhận rộng rãi sau nhiều năm phân tích và kiểm tra độc lập.
Hiểu ECDH và ECDLP là điều kiện để nắm bắt đầy đủ cách X3DH kết hợp ba phép DH để đạt xác thực lẫn nhau và bảo mật chuyển tiếp, cách Double Ratchet dùng các bước tăng DH để phục hồi bảo mật sau xâm phạm, và tại sao PQXDH cần bổ sung CRYSTALS-Kyber để chống lại mối đe dọa lượng tử. ECC là ngôn ngữ chung của toàn bộ series kỹ thuật mật mã này.
Giới hạn cơ bản của ECC – tính dễ tổn thương trước thuật toán Shor – không phủ nhận tầm quan trọng của nó trong hiện tại và tương lai gần. Trong nhiều thập kỷ tới, ECC kết hợp với các cơ chế hậu lượng tử như trong PQXDH sẽ là kiến trúc lai (hybrid) phổ biến nhất: kế thừa toàn bộ tính chất bảo mật và hiệu suất của ECC cho đối thủ cổ điển, đồng thời bổ sung bảo vệ hậu lượng tử cho đối thủ lượng tử thụ động. Đây là cách tiếp cận thực dụng và đúng đắn trong bối cảnh máy tính lượng tử đủ mạnh còn chưa xuất hiện nhưng mối đe dọa từ chiến lược thu thập trước giải mã sau đã hiện hữu ngay từ bây giờ.

bao-mat (10)
mat-ma-hoc (10)
signal-protocol (9)
duong-cong-elliptic (2)
ecc (1)
elliptic-curve-cryptography (1)
curve25519 (2)
curve448 (2)
ecdh (1)
ecdlp (1)
montgomery-curve (2)
edwards-curve (2)
nhom-abel (1)
nhan-vo-huong (1)
scalar-multiplication (1)
forward-secrecy (8)
post-quantum (2)
ma-hoa-khoa-cong-khai (1)
logarit-roi-rac (1)