Công nghệ lượng tử sẽ thay đổi tương lai như thế nào? PHẦN 4: MÃ HÓA HẬU LƯỢNG TỬ
Nếu đã đọc xong PHẦN 2 - CƠ BẢN NÊN ĐỌC hoặc bạn đã có sẵn kiến thức cơ bản về lượng tử, hẳn bạn đã hiểu tại sao các thuật toán lượng tử đặc biệt nguy hiểm với bảo mật. Và thế giới đã chuẩn bị ráo riết tìm các biện pháp chống lại mối đe dọa từ máy tính lượng tử.
Mốc thời gian liên quan:
1994: Peter Shor công bố thuật toán Shor.
2010 - nay: nhiều chính phủ triển khai mạng QKD.
16/8/2016: Trung Quốc phóng vệ tinh Micius - vệ tinh lượng tử đầu tiên trên thế giới (QKD).
12/2016: NIST (Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ) chọn PQC và bắt đầu thi tuyển PQC.
NIST quan trọng ở đây, vì dù là cơ quan quy định các tiêu chuẩn cho Mỹ, nhưng sau đó gần như cả thế giới bắt chước theo.
2024: NIST công bố 3 chuẩn PQC.
2030: Toàn bộ chính phủ Mỹ hoàn thành chuyển đổi hết sang PQC.
QKD và PQC
Còn một số hướng khác cũng kháng lượng tử, như hàm băm (SHA-3, SHA-256), mô hình lai (kết hợp thuật toán cổ điển với PQC), chuỗi bí mật dùng một lần (OTP) - vốn là các phương pháp đã biết. Tôi sẽ không đề cập ở đây nữa.
QKD (Quantum Key Distribution - Kỹ thuật phân phối khóa lượng tử)
- Tại Alice (người gửi): Gửi photon (kèm thông tin lượng tử) qua kênh lượng tử.
- Tại Bob (người nhận): Bộ lọc ngẫu nhiên đo photon.
- Sàng lọc - So sánh qua kênh công khai để giữ lại các thông tin hợp lệ: Đúng khóa bí mật => kết quả khớp. Sai khóa bí mật (tỷ lệ lỗi > 11%) => hủy khóa và thử lại.
- Ước lượng và sửa lỗi: phát hiện can thiệp từ bên ngoài và hiệu chỉnh các sai sót.
- Khuếch đại private: loại bỏ hoàn toàn thông tin rò rỉ (nếu có) và tạo khóa bảo mật cuối cùng.
- Phân phối khóa rời rạc: Mã hóa thông tin trên các trạng thái lượng tử rời rạc, chẳng hạn như trạng thái phân cực của các photon đơn.
- Giao thức BB84 (Bennett và Brassard phát minh năm 1984): đây là giao thức QKD đầu tiên và phổ biến nhất. Các photon được phân cực ngẫu nhiên theo 4 trạng thái (dọc/ngang hoặc hai đường chéo).
- Giao thức E91 (Artur Ekert phát minh năm 1991): Cặp hạt vướng víu được phát ra. Alice và Bob mỗi người nhận một hạt và đo lường chúng.
- Giao thức B92 (Bennett đề xuất, là phiên bản đơn giản hóa của BB84): Sử dụng hai trạng thái lượng tử không trực giao (non-orthogonal) để mã hóa 0 và 1.
- Giao thức DI (Device Independent): Dựa trên đo lường các trạng thái rời rạc (phân cực của photon...), nó dùng để kiểm tra bất đẳng thức Bell, không cần tin tưởng vào thiết bị.
- Giao thức MDI (Measurement-Device Independent): Cả hai bên gửi photon tới một bên thứ ba (không cần tin cậy). Phương pháp này đảm bảo an toàn tuyệt đối dù thiết bị có bị xâm nhập hay không tin cậy.
- Phân phối khóa liên tục: Mã hóa thông tin trên các đại lượng vật lý biến thiên liên tục của trường ánh sáng (như biên độ và pha), tương tự như truyền thông quang học cổ điển.
- Giao thức GMCS: đây là giao thức được dùng nhiều. Phía Alice điều chế ngẫu nhiên các trạng thái kết hợp của laser theo phân phối Gaussian. Phía Bob sử dụng kỹ thuật tách sóng đồng pha (homodyne) hoặc đa pha (heterodyne) để đo các đại lượng bậc thang (quadratures) của ánh sáng.
- Giao thức DMCS
- Giao thức MDI: giao thức này xài được cả cho phân phối khóa rời rạc lẫn liên tục.
PQC (Post-Quantum Cryptography - Mật mã hậu lượng tử)
- Lattice-based (bài toán lưới): ví dụ, trong lưới 1000+ chiều, tìm vector ngắn nhất.
- Hash-based (hàm băm): ví dụ, giá trị hàm băm SHA-256 của từ "hello" là 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
- Code-based (mã sửa lỗi): dựa trên bài toán giải mã tổng quát của hệ mật mã McEliece 1978 với các mã Goppa nhị phân cổ điển - đến nay vẫn chưa bị phá hoàn toàn.
- Giao thức trao đổi khóa: để thiết lập kênh liên lạc an toàn.
- ML-KEM: dùng bài toán khó của lý thuyết lưới (lattice-based). Đây là tiêu chuẩn vàng để chống lại máy tính lượng tử.
- HQC: dựa trên hàm băm.
- Giao thức chữ ký số: để xác thực danh tính.
- ML-DSA: dùng bài toán của lý thuyết lưới, nên được coi là giải pháp hoàn hảo.
- SLH-DSA: chữ ký số không trạng thái dựa trên hàm băm.
- FN-DSA: chữ ký số dựa trên lưới đa thức.
QKD hay PQC tốt hơn?
Các nhà khoa học đã đánh giá và cho rằng cần cả hai.
QKD bảo mật hoàn hảo cho ít người. PQC bảo mật tốt cho mọi người.
Harvest Now, Decrypt Later (HNDL)
Ba chuẩn mật mã PQC được NIST công bố tháng 8/2024
1. CRYSTALS-Kyber (ML-KEM)
Nó bảo vệ kênh trao đổi khóa bí mật (KEM), thay thế RSA/ECC/ECDH trong HTTPS, TLS, SSH, VPN.
Thuật toán này sử dụng bài toán lưới (lattice-based): Học có lỗi trên mạng module tinh thể (Module Learning With Errors).
Cho A và b = A·s + e, tìm s
Trong đó: b công khai - là đa thức tuyến tính lớn, A - ma trận đa chiều lớn công khai, s - khóa bí mật, e - nhiễu.
Khóa công khai: A, b. Khóa bí mật: s.
Khi không có nhiễu, có thể giải ngay bằng đại số tuyến tính. Nhưng nếu có nhiễu, không có thuật toán hiệu quả nào để tìm s, kể cả máy lượng tử. Dù máy lượng tử có thể tính căn bậc n, cũng quá chậm để giải.
Thuật toán CRYSTALS-Kyber có lợi thế: nhanh (tổng thời gian tạo khóa, mã hóa, giải mã dưới 1ms), kích thước khóa nhỏ (1.184 byte với Kyber768), hiệu suất tương đương RSA.
Bất lợi của thuật toán này là nó còn mới. Do mới, nên chưa có nhiều thời gian để được phân tích chuyên sâu bởi cộng đồng khoa học và đặc biệt giới mã hóa. Nếu lưới tinh thể (lattice) bị phá, thì toàn bộ thuật toán bị phá. Nó cũng cần một trình sinh số ngẫu nhiên đủ tốt.
Google Chrome đã áp dụng chuẩn này từ năm 2023.
2. CRYSTALS-Dilithium (ML-DSA)
ML-DSA là viết tắt của Module-Lattice-Based Digital Signature Algorithm. Tên gốc của nó là CRYSTALS-Dilithium, được phát triển bởi 1 nhóm các nhà mật mã học hàng đầu thế giới hiện nay trong dự án CRYSTALS (Cryptographic Suite for Algebraic Lattices). Các tác giả chính bao gồm:
- Vadim Lyubashevsky (IBM Research)
- Damien Stehlé (ENS Lyon)
- Léo Ducas (CWI Amsterdam)
- Chris Peikert (Đại học Michigan / Algorand)
- Eike Kiltz và Peter Schwabe (Đại học Ruhr Bochum)
- Sébastien Bai (TNO)
Nó dùng cho Chữ ký số (DSA) - bảo vệ tính xác thực và toàn vẹn của dữ liệu - làm sao Alice chứng minh "tôi đã ký văn bản này". Nó thay thế RSA/ECDSA trong certificate TLS, code signing.
Thuật toán này cũng sử dụng bài toán lưới (lattice-based), tận dụng độ khó của việc tìm vector rất ngắn trong một cấu trúc lưới tinh thể đa chiều:
Bài toán 1 (Bảo vệ khóa bí mật khi ký): Học có lỗi trên mạng module tinh thể (Module Learning With Errors).
Cho A·s + e = t (công khai) → Tìm s (bí mật ký)
Trong đó: A - ma trận đa chiều lớn công khai, t - ma trận đa chiều công khai, e - nhiễu, s - vector bí mật.
Chừng nào không giải được thì khóa bí mật s vẫn an toàn.
Bài toán 2 (Xác thực, giả mạo chữ ký): Module Shortest Integer Solution.
Cho A (công khai), tìm vector z nhỏ sao cho A·z = 0 (mod q)
Trong đó: A - ma trận đa chiều lớn công khai, z - vector bí mật.
Nếu không giải được thì không thể giả mạo chữ ký.
Trong khi ứng dụng thuật toán này, còn có bước rejection sampling - nếu chữ ký trông có vẻ liên quan tới khóa bí mật, sẽ bị hủy và cho ký lại để đảm bảo chữ ký không rò rỉ thông tin khóa bí mật. Đây là điểm khác biệt so với RSA. Nhờ khả năng này, thuật toán có thể bảo vệ khỏi các cuộc tấn công từ các kênh phụ.
Thuật toán này cũng có ưu điểm khác là: thời gian kiểm tra nhỏ (dưới 0,05ms), khối lượng chữ ký nhỏ (2,4KB), cùng nền tảng với ML-KEM.
Bất lợi là khối lượng chữ ký vẫn lớn hơn ECDSA (64B) nhiều. Và do là bài toán mới, dựa trên lưới tinh thể, nên nếu lattice bị phá thì thuật toán cũng bị phá hoàn toàn.
3. SPHINCS+(SLH-DSA)
SLH-DSA là viết tắt của Stateless Hash-Based Digital Signature Algorithm. Thuật toán này được phát triển bởi một nhóm các nhà mật mã học quốc tế vào năm 2015, bao gồm: Jean-Philippe Aumasson, Daniel J. Bernstein, Ward Beullens, Christoph Dobraunig, Maria Eichlseder, Scott Fluhrer, Stefan-Lukas Gazdag, Andreas Hülsing, Panos Kampanakis, Stefan Kölbl, Tanja Lange, Martin M. Lauridsen, Florian Mendel, Ruben Niederhagen, Christian Rechberger, Joost Rijneveld, Peter Schwabe và Bas Westerbaan.
Nó dùng làm dự phòng cho chữ ký số (vì cả ML-KEM và ML-DSA đều dựa trên lattice, nếu lattice bị phá, cả hai cùng sụp đổ, cần phải có 1 phương pháp độc lập khác đảm bảo).
Thuật toán này thay thế RSA/ECDSA trong certificate.
Dùng hàm băm (hash-based) - tức là bài toán 1 chiều, không thể đảo ngược, vốn an toàn với cả máy tính cổ điển lẫn máy tính lượng tử nếu đầu ra đủ dài.
Ví dụ: hàm băm SHA-256 cho từ "Hello World" là chuỗi
h=a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e
Cho h. Tìm từ gốc của chuỗi đó.
Khi xây dựng chữ ký từ hash, thuật toán chạy theo cây Merkle.
Ưu điểm của thuật toán là chỉ dựa trên hàm băm - đã được minh chứng là an toàn lâu nhất với máy cổ điển. Với máy lượng tử, thuật toán Shor cũng bó tay (vì hàm băm không có cấu trúc toán học để Shor khai thác), thuật toán Grover tìm kiếm dù giảm một nửa (2^128) thì vẫn là con số rất lớn.
Bất lợi của nó là kích thước chữ ký lớn 7,8-49,9KB, thời gian lâu (1-100ms).
Nhận xét
Đăng nhận xét