Mã hóa đồng hình hoàn toàn (FHE) là gì
Nội dung bài9 phần
Độ khó: Nâng cao
Thông thường, muốn tính toán trên dữ liệu mã hóa, bạn phải giải mã trước. FHE (Fully Homomorphic Encryption, mã hóa đồng hình hoàn toàn) cho phép bên khác tính toán ngay trên bản mã, và kết quả khi giải mã khớp với kết quả tính trên dữ liệu gốc.
Nội dung chỉ nhằm giải thích kiến thức, không phải khuyến nghị đầu tư.
Điểm chính
- Craig Gentry mô tả sơ đồ FHE đầu tiên năm 2009, sau khi câu hỏi này được đặt ra từ 1978.
- Một số mã hóa cũ chỉ đồng hình một phần: RSA không đệm cho phép nhân, Paillier cho phép cộng.
- Vấn đề lớn là nhiễu tăng sau mỗi phép tính, được xử lý bằng bootstrapping.
- Chi phí tính toán là đánh đổi lớn: chính Gentry nhận xét cách xây dựng FHE đầu tiên rất tốn kém.
Ý tưởng: chiếc hộp có găng tay
Gentry kể một câu chuyện ví dụ. Alice làm đồ trang sức và sợ thợ lấy trộm kim cương, nên cho nguyên liệu vào các hộp khóa kín có gắn găng tay. Thợ đưa tay vào găng để lắp ráp, không lấy được gì ra ngoài, và chỉ Alice giữ chìa mở hộp.

Trong mật mã, nguyên liệu trong hộp là dữ liệu mã hóa, người thợ là bên tính toán, chìa khóa là khóa giải mã nằm ở chủ dữ liệu. Động lực ban đầu theo Gentry là điện toán đám mây: giao dữ liệu cho bên khác xử lý mà không phải đưa khóa.
Ví dụ số thứ nhất: nhân trên bản mã
RSA không đệm là mã hóa đồng hình một phần với phép nhân. Dùng số nhỏ để thấy nguyên lý, không an toàn thật: n = 33, khóa mã hóa e = 3, khóa giải mã d = 7. Mã hóa là m³ mod 33.
Bước | Tính | Kết quả |
|---|---|---|
Mã hóa 2 | 2³ mod 33 | 8 |
Mã hóa 3 | 3³ mod 33 | 27 |
Bên tính toán nhân hai bản mã | 8 × 27 = 216, 216 mod 33 | 18 |
Chủ dữ liệu giải mã | 18⁷ mod 33 | 6 |

Kết quả 6 đúng bằng 2 × 3. Bên tính toán chưa bao giờ biết 2 hay 3. Bản mã của 6 (6³ mod 33) cũng là 18, đúng như bản mã đã nhận.
Ví dụ số thứ hai: phép cộng
Một ví dụ khác dễ hình dung cho phép cộng. Mã hóa là cộng thêm khóa ngẫu nhiên rồi lấy phần dư khi chia 100.
Dữ liệu | Khóa | Bản mã | |
|---|---|---|---|
Số thứ nhất | 30 | 71 | (30 + 71) mod 100 = 1 |
Số thứ hai | 25 | 40 | (25 + 40) mod 100 = 65 |
Bên tính cộng hai bản mã: 1 + 65 = 66.
Chủ dữ liệu cộng hai khóa: 71 + 40 = 111, lấy dư 100 là 11. Giải mã: 66 − 11 = 55, đúng bằng 30 + 25. Đây chỉ là mô hình đồ chơi cho phép cộng, không phải FHE thật.
Từ một phép tính đến mọi phép tính
Hai ví dụ trên mỗi cái chỉ làm được một loại phép tính. Wikipedia tóm tắt các mức:
Mức | Làm được |
|---|---|
Partially homomorphic | Chỉ một loại phép, ví dụ chỉ cộng hoặc chỉ nhân |
Somewhat homomorphic | Hai loại phép, nhưng chỉ cho một số mạch tính |
Leveled fully homomorphic | Mọi mạch tính nhưng có giới hạn độ sâu |
Fully homomorphic | Mọi mạch tính, độ sâu không giới hạn |
Có cộng và nhân thì tính được mọi hàm, nên mục tiêu của FHE là cho phép cả hai không giới hạn. Rivest, Adleman và Dertouzos đã nêu bài toán này năm 1978, ngay sau khi RSA ra đời. Hơn 30 năm sau, năm 2009, Gentry mô tả sơ đồ khả thi đầu tiên dựa trên lưới lý tưởng (ideal lattices).
Nhiễu và bootstrapping
Trong cách tiếp cận của Gentry, mỗi bản mã mang một lượng nhiễu nhỏ. Cộng làm nhiễu tăng ít, nhân làm nhiễu tăng nhanh: tích của hai bản mã có nhiễu k1 bit và k2 bit sẽ có nhiễu khoảng k1 + k2 bit. Khi nhiễu quá lớn, bản mã không giải mã được nữa.
Ví dụ số: bản mã mới có nhiễu 8 bit. Sau một phép nhân là khoảng 16 bit, sau hai phép nhân liên tiếp là khoảng 32 bit. Chỉ vài lớp phép nhân là đủ khiến nhiễu vượt ngưỡng.

Bootstrapping giải quyết việc này. Ý tưởng là cho chính phép giải mã chạy bên trong lớp mã hóa, nhờ vậy tạo ra bản mã mới của cùng giá trị nhưng nhiễu thấp hơn. Sơ đồ phải đủ đơn giản để tự thực hiện được phép giải mã của chính nó, gọi là bootstrappable.
Giới hạn thực tế
Chính câu chuyện của Gentry có đoạn kết nói về giới hạn. Găng tay dày làm mỗi bước lắp ráp chậm đi nhiều, nên Alice chỉ dùng hộp cho những món chứa kim cương quý nhất.
Về kỹ thuật, ông viết rằng cách xây dựng FHE đã biết cho đến lúc đó tốn kém tính toán: phép giải mã phải được biểu diễn thành mạch tính, rồi mỗi bit của mạch bị thay bằng một bản mã lớn.
Bài này không nêu FHE chậm hơn bao nhiêu lần so với tính toán thường, vì con số đó phụ thuộc phiên bản và chưa kiểm được từ nguồn gốc.
Các điểm cần nhớ:
- Ai giữ khóa giải mã? Bên giữ khóa là bên nhìn thấy kết quả.
- Độ sâu phép nhân là giới hạn chính của hầu hết sơ đồ, theo Wikipedia.
- Từ khoảng 2011-2012, các sơ đồ thế hệ hai hiệu quả hơn nhiều. Năm 2017, nhà nghiên cứu từ IBM, Microsoft, Intel, NIST và nơi khác lập một liên minh duy trì chuẩn bảo mật cộng đồng cho lĩnh vực này.
FHE trong thế giới blockchain
Dữ liệu trên blockchain công khai, mà muốn tính toán trên dữ liệu bí mật thì cần công cụ như FHE. Vì thế có ý tưởng dùng FHE cho hợp đồng thông minh riêng tư. Bài này không đánh giá dự án cụ thể nào.
Công cụ | Làm gì |
|---|---|
Giữ bí mật dữ liệu khi truyền, hai đầu giải mã | |
FHE | Cho phép bên thứ ba tính trên dữ liệu vẫn đang mã hóa |
Giấu số tiền, nhưng vẫn cho mạng kiểm tra tổng cân bằng |
Giao dịch bí mật dùng một dạng đồng hình cộng. Còn nơi hợp đồng thông minh chạy là máy ảo, nơi tính toán công khai vẫn là mặc định. Bức tranh bảo mật chung ở blockchain bảo mật nhờ đâu.
Học tiếp trong khoá Crypto
Các bài học liên quan trong Khoá học Crypto của HODL.VN:
Câu hỏi thường gặp
FHE có thay thế mã hóa thông thường không?
Không. Mã hóa thông thường vẫn dùng để lưu trữ và truyền dữ liệu. FHE chỉ dùng khi cần bên khác tính toán mà không được thấy dữ liệu.
Vì sao FHE tốn kém tính toán?
Mỗi phép tính trên bản mã tạo nhiễu và cần xử lý bootstrapping. Cách xây dựng đầu tiên của Gentry tốn kém tính toán, như ông tự nhận trong bài.
FHE khác zero-knowledge proof thế nào?
FHE cho phép tính toán trên dữ liệu ẩn. Zero-knowledge proof cho phép chứng minh một mệnh đề đúng mà không lộ dữ liệu. Hai công cụ giải quyết hai bài toán khác nhau.
Người dùng bình thường có cần quan tâm FHE không?
Chưa cần thao tác gì. Nên hiểu khái niệm để đánh giá các dự án nói họ dùng FHE: hỏi ai giữ khóa giải mã và hệ thống đã được kiểm toán độc lập chưa.
Duyệt bởi Ban biên tập HODL.VN · Cập nhật 09/11/2026
Ứng dụng HODL
Tải app HODL
Bảng giá, cảnh báo giá và bài phân tích ngay trên điện thoại.