Mã hóa đồng cấu (Homomorphic Encryption)
1. Tổng quan
A. Định nghĩa
Là kỹ thuật mã hóa mà kết quả của việc thực hiện phép tính trực tiếp trên bản mã mà không giải mã sẽ trùng khớp với kết quả của việc mã hóa sau khi tính toán trên bản rõ. Vì có thể xử lý dữ liệu ngay trong trạng thái đã mã hóa (processing on encrypted data), nên có thể phân tích và khai thác dữ liệu mà không để lộ bản gốc cho bên xử lý.
Tên gọi của mã hóa đồng cấu bắt nguồn từ phép đồng cấu (homomorphism) trong đại số học. Phép đồng cấu là ánh xạ (map) bảo toàn cấu trúc phép toán giữa hai cấu trúc đại số, nghĩa là hàm mã hóa Enc "bảo toàn và chuyển" cấu trúc phép cộng và phép nhân của không gian bản rõ sang không gian bản mã. Nói cách khác, vì phép cộng và phép nhân trên bản rõ được ánh xạ nguyên vẹn thành các phép toán tương ứng trên bản mã, nên phép tính vẫn thành lập trên bản mã mà không cần đưa ngược về bản gốc.
Điểm khác biệt căn bản của mã hóa đồng cấu so với các kỹ thuật mã hóa khác là "đạt được đồng thời cả bảo vệ và khai thác". Mã hóa truyền thống khi khóa dữ liệu lại thì không dùng được, muốn dùng thì phải mở khóa. Mã hóa đồng cấu phá vỡ logic trắng-đen này và cung cấp một trạng thái thứ ba là "vẫn tính toán được ngay cả khi bị khóa". Đặc tính này trở thành vũ khí đặc biệt mạnh mẽ trong thời đại giao dữ liệu cho hạ tầng của người khác xử lý như đám mây và AI.
Các đặc điểm chính của mã hóa đồng cấu có thể tóm tắt như sau. Thứ nhất, tính toán không để lộ bản gốc, khiến bên xử lý không biết cả dữ liệu lẫn kết quả. Thứ hai, tính an toàn dựa trên lưới (lattice) giúp nó được kỳ vọng đủ mạnh trước cả máy tính lượng tử. Thứ ba, tính vạn năng, về lý thuyết FHE có thể tính bất kỳ hàm nào. Thứ tư, cái giá phải trả cho tất cả các ưu điểm này là chi phí tính toán cao. Tìm điểm cân bằng của bốn đặc điểm này chính là bản chất của việc thiết kế ứng dụng mã hóa đồng cấu.
B. Bối cảnh ra đời và sự cần thiết
Mã hóa truyền thống chỉ bảo vệ dữ liệu khi lưu trữ (at rest) và khi truyền tải (in transit), còn muốn tính toán thì nhất định phải giải mã, nên tại thời điểm xử lý (in use) bản gốc lộ nguyên vẹn trong bộ nhớ. Trong ba giai đoạn bảo vệ dữ liệu (lưu trữ, truyền tải, xử lý), giai đoạn cuối cùng là "bảo vệ khi đang xử lý" đã bị bỏ trống trong thời gian dài.
Khoảng trống này lập tức trở thành rủi ro ngay khi ủy thác tính toán ra bên ngoài. Muốn đưa dữ liệu lên đám mây để giao phần phân tích thì chủ sở hữu dữ liệu phải tin tưởng vô điều kiện nhà cung cấp đám mây, mà với những thông tin nhạy cảm như dữ liệu chẩn đoán y tế hay lịch sử giao dịch tài chính, chính tiền đề tin tưởng này trở thành mầm mống của vi phạm quy định và xâm phạm quyền riêng tư. Ví dụ, để bệnh viện gửi dữ liệu bộ gen của bệnh nhân cho AI bên ngoài phân tích thì phải giao bản gốc, và ngay lúc đó phát sinh trách nhiệm theo Luật bảo vệ thông tin cá nhân và Luật y tế.
Mã hóa đồng cấu giải quyết trực diện tình thế tiến thoái lưỡng nan "từ bỏ bảo vệ để khai thác" này. Nếu đưa dữ liệu lên đám mây ở trạng thái đã mã hóa, giao luôn cả phần tính toán, rồi chỉ mang kết quả về giải mã, thì bên xử lý chỉ làm thay việc tính toán mà không hề biết cả bản gốc lẫn kết quả. Vì vậy mã hóa đồng cấu được chú ý như kỹ thuật nền tảng của phân tích dữ liệu bảo toàn quyền riêng tư (Privacy-Preserving Data Analysis) và PET (Công nghệ tăng cường bảo vệ quyền riêng tư, Privacy Enhancing Technology), đồng thời được đánh giá là giải pháp thay thế "có thể bảo vệ bản gốc mà không cần ẩn danh hóa" trong bối cảnh quy định dữ liệu ngày càng siết chặt như bộ ba luật dữ liệu và GDPR.
2. Nguyên lý hoạt động
A. Luồng xử lý tổng thể
flowchart LR
D["Bản rõ m1, m2"] -->|"Mã hóa Enc"| E["Bản mã c1, c2"]
E -->|"Phép tính f trên trạng thái bản mã"| R["Bản mã đã tính f(c1,c2)"]
R -->|"Giải mã Dec"| O["Kết quả tính trên bản rõ f(m1,m2)"]
K["Khóa bí mật sk"] -.-> D
K -.-> O
Cốt lõi là tính chất đồng cấu Dec(f(Enc(m1), Enc(m2))) = f(m1, m2). Khi chủ sở hữu dữ liệu mã hóa bản rõ m1, m2 bằng khóa công khai rồi gửi lên máy chủ, máy chủ thực hiện hàm f (về bản chất là tổ hợp của phép cộng và phép nhân) giữa các bản mã mà hoàn toàn không biết bản rõ, và chỉ chủ sở hữu có khóa bí mật mới giải mã bản mã kết quả để thu được f(m1, m2). Sức mạnh của cấu trúc này nằm ở chỗ thứ máy chủ nhìn thấy chỉ là bản mã trông giống nhiễu ngẫu nhiên, và không thể biết cả giá trị đầu vào lẫn kết quả tính toán.
Nếu xét ranh giới tin cậy (trust boundary) trong luồng này thì giá trị bảo mật của mã hóa đồng cấu càng rõ rệt. Khóa bí mật chỉ có ở riêng chủ sở hữu dữ liệu, còn máy chủ chỉ được nhận khóa công khai và khóa đánh giá (evaluation key) cần cho việc tính toán. Do đó, dù máy chủ hành động ác ý hay bị xâm nhập thì thứ bị rò rỉ cũng chỉ là bản mã không thể giải mã. Chính tính chất "có thể giao việc tính toán cho máy chủ mà không cần tin tưởng máy chủ" này mới là điểm khác biệt quyết định của mã hóa đồng cấu trong tính toán ủy thác trên đám mây.
Vì mọi phép tính bất kỳ rốt cuộc đều biểu diễn được bằng tổ hợp phép cộng và phép nhân (mạch số học) hoặc tổ hợp AND·XOR (mạch Boole), nên nếu hỗ trợ đồng cấu cả hai phép toán thì về lý thuyết có thể tính bất kỳ hàm nào ở trạng thái bản mã. Ví dụ, trung bình, phương sai, tích vô hướng, phép nhân ma trận đều chỉ cấu thành từ phép cộng và phép nhân, và phần lớn suy luận học sâu (tích chập, lớp kết nối đầy đủ) nếu được biểu diễn bằng xấp xỉ đa thức thì cũng có thể thực hiện bằng phép toán đồng cấu.
B. Cấu trúc dựa trên lưới và vấn đề nhiễu
flowchart TD
P["Bản rõ m"] --> ADD["Thêm nhiễu nhỏ e vào bản rõ<br/>(dựa trên LWE/RLWE)"]
ADD --> C0["Bản mã c (lượng nhiễu nhỏ)"]
C0 --> OP1["Tính 1 lần (cộng/nhân)"]
OP1 --> C1["Nhiễu tăng lên"]
C1 --> OP2["Lặp lại phép tính"]
OP2 --> LIMIT{"Nhiễu > ngưỡng?"}
LIMIT -->|"Không"| C1
LIMIT -->|"Có"| FAIL["Không thể giải mã"]
C1 -->|"Bootstrapping"| RESET["Đặt lại nhiễu<br/>(mã hóa lại without giải mã)"]
RESET --> C0
Đa số mã hóa đồng cấu hoàn toàn hiện đại đặt tính an toàn vào độ khó của mã hóa dựa trên lưới (lattice-based), cụ thể là bài toán LWE (Learning With Errors) và phiên bản trên vành (ring) của nó là RLWE. Trong phương thức này, để bảo mật, người ta cố ý trộn nhiễu nhỏ (sai số, error) vào bản rõ khi mã hóa, và chính nhiễu này là căn cứ của bài toán lưới khó giải ngay cả với máy tính lượng tử, đồng thời là lý do mã hóa đồng cấu được xem là ứng viên kháng lượng tử (Post-Quantum).
Vấn đề là nhiễu này tích lũy và khuếch đại khi lặp lại phép tính. Đặc biệt phép nhân làm nhiễu tăng đột ngột, nên nếu cứ tiếp tục tính mà không có biện pháp nào thì ngay khi vượt qua một ngưỡng nhất định, bản rõ sẽ bị chôn vùi trong nhiễu và không thể giải mã. Do đó, "kiểm soát nhiễu như thế nào để đảm bảo độ sâu tính toán (độ sâu mạch, depth)" là bài toán khó cốt lõi trong triển khai mã hóa đồng cấu, và Bootstrapping sẽ đề cập ở sau chính là lời giải căn bản cho vấn đề này.
Nhiều kỹ thuật phụ trợ để xử lý nhiễu cũng đã phát triển. Chuyển đổi modulus (modulus switching) làm giảm kích thước hệ số của bản mã để làm chậm tốc độ tăng nhiễu, còn tái tuyến tính hóa (relinearization) đưa bậc bản mã đã phình to sau phép nhân về như cũ để cho phép các phép tính tiếp theo. Nhờ những kỹ thuật này mà ngay cả không có bootstrapping cũng có thể tính toán ở độ sâu đáng kể, và hiệu năng thực tế được cải thiện rõ rệt. Điều này cho thấy tối ưu hóa thuật toán quan trọng đến mức nào trong quá trình mã hóa đồng cấu chuyển từ "khả năng lý thuyết" sang "công cụ thực dụng".
C. Bootstrapping
Bootstrapping là khái niệm do Gentry đề xuất năm 2009, là kỹ thuật "đặt lại" nhiễu bên trong bản mã bằng cách mã hóa lại mà không giải mã bản mã. Về mặt trực quan, đó là việc chạy chính hàm giải mã như một phép toán đồng cấu trên bản mã để thay bằng "bản mã mới có ít nhiễu". Qua đó, nhiễu được hạ xuống định kỳ trước khi chạm ngưỡng, giúp thực hiện được phép tính có độ sâu không giới hạn. Tuy nhiên, vì bản thân bootstrapping là phép tính rất nặng, nên trong thực tế người ta dùng kèm FHE phân mức (leveled) vốn chỉ tính đến độ sâu định trước mà không cần bootstrapping, để dung hòa giữa hiệu năng và chức năng.
Có thể hiểu bootstrapping rõ ràng qua phép ẩn dụ "ngân sách nhiễu (noise budget)". Bản mã khi mới tạo ra được cấp một ngân sách nhiễu nhất định, phép cộng tiêu tốn ngân sách chút một, còn phép nhân tiêu tốn lớn. Chỉ cần kết thúc tính toán trước khi cạn ngân sách là được, nhưng nếu cần tính sâu hơn thì phải nạp lại ngân sách bằng bootstrapping. Do đó, người thiết kế mạch cân bằng giữa việc tối ưu "giảm độ sâu phép nhân để kết thúc mà không cần bootstrapping" và lựa chọn "chấp nhận bootstrapping nặng để đảm bảo tính vạn năng".
D. Ví dụ khái niệm đơn giản
Có thể lấy trực giác từ Paillier vốn có tính đồng cấu phép cộng. Sau khi mã hóa riêng hai giá trị lương m1=300, m2=200 để thu được c1, c2, nếu máy chủ tính c1 × c2 (phép nhân bản mã) thì kết quả giải mã sẽ là m1 + m2 = 500. Máy chủ chỉ làm thay "phép tính tính tổng" mà không hề biết cả 300, 200 lẫn 500. Kịch bản trong thực tế như thống kê lương hay tổng hợp khảo sát, nơi chỉ thu được tổng cộng mà không để lộ từng phản hồi riêng lẻ, được hiện thực hóa bằng nguyên lý này. FHE mở rộng điều này bằng cách thêm cả phép nhân không giới hạn, để vượt qua phép tính tổng và thực hiện được cả những phân tích phức tạp như hồi quy, phân loại ở trạng thái bản mã.
3. Phân loại
Mã hóa đồng cấu chia thành ba cấp độ tùy theo loại và số lần phép toán được hỗ trợ, và lịch sử phát triển này chính là lịch sử của "kiểm soát nhiễu đến đâu". Mỗi cấp độ không chỉ đơn thuần là cải thiện hiệu năng mà là quá trình mở rộng chính phạm vi các hàm biểu diễn được.
| Loại | Phép toán hỗ trợ | Phương thức tiêu biểu |
|---|---|---|
| Đồng cấu bộ phận (PHE) | Chỉ một loại phép cộng hoặc phép nhân, không giới hạn | RSA (nhân), Paillier (cộng), ElGamal (nhân) |
| Bán đồng cấu (SWHE) | Cả cộng và nhân, nhưng số lần giới hạn | BGN (cộng không giới hạn + nhân 1 lần) |
| Đồng cấu hoàn toàn (FHE) | Phép toán bất kỳ, số lần bất kỳ | Gentry (2009), BGV·BFV, CKKS, TFHE |
Đồng cấu bộ phận (PHE, Partially Homomorphic Encryption) chỉ hỗ trợ một loại phép toán không giới hạn. Paillier có tính đồng cấu phép cộng nên khi nhân các bản mã sẽ ra tổng của bản rõ, do đó được dùng thực tế trong bỏ phiếu điện tử (cộng dồn các phiếu đã mã hóa mà không giải mã) hay thống kê bảo toàn quyền riêng tư. RSA·ElGamal có tính đồng cấu phép nhân. PHE tính toán nhanh và triển khai đã chín muồi, nhưng có hạn chế là các phép tính biểu diễn được cực kỳ giới hạn. Điểm thú vị là RSA kiểu sách giáo khoa (c = m^e mod n) đã sẵn có tính đồng cấu phép nhân, điều này cho thấy bản thân tính chất đồng cấu không phải phát minh đặc biệt, mà "hỗ trợ đồng thời cả phép cộng và phép nhân không giới hạn" mới là bài toán khó chưa có lời giải suốt hơn 30 năm qua. Lý do sự ra đời của FHE là sự kiện lớn đến vậy nằm ở đây.
Bán đồng cấu (SWHE, Somewhat Homomorphic Encryption) hỗ trợ cả phép cộng và phép nhân nhưng do ngưỡng nhiễu nên chỉ tính được các phép tính có độ sâu mạch nông. Tiêu biểu là BGN (Boneh-Goh-Nissim) cho phép cộng không giới hạn nhưng chỉ cho nhân đúng một lần. Bản thân SWHE có thể dùng cho thống kê, phân loại nông, nhưng chưa đạt được tính vạn năng thực sự.
Đồng cấu hoàn toàn (FHE, Fully Homomorphic Encryption) là "chén thánh" có thể thực hiện phép toán bất kỳ với số lần bất kỳ. Năm 2009, Craig Gentry lần đầu hiện thực hóa bằng cách đưa vào bootstrapping dựa trên lưới lý tưởng (ideal lattice) (thế hệ 1), sau đó phát triển thành BGV·BFV dựa trên LWE/RLWE (thế hệ 2, mạnh về phép tính số nguyên), TFHE hỗ trợ bootstrapping nhanh (mạnh về mạch Boole, phép so sánh), và CKKS (thế hệ 4) chuyên về phép tính xấp xỉ số thực, số phức. Đặc biệt CKKS là phương thức do nhóm nghiên cứu Hàn Quốc (nhóm GS Cheon Jung Hee, Đại học Quốc gia Seoul) đề xuất năm 2017, và vì là phép tính xấp xỉ cho phép sai số nên đã trở thành chuẩn mực trên thực tế trong các lĩnh vực cần tính toán số dấu phẩy động khối lượng lớn như học máy.
Việc lựa chọn scheme phụ thuộc vào "tính toán cái gì" là điểm quan trọng về mặt thực tiễn. Thống kê và đếm số nguyên thì BGV·BFV có lợi, suy luận học máy nơi phép tính vectơ, ma trận số thực chiếm ưu thế thì CKKS có lợi, còn logic có nhiều so sánh, rẽ nhánh, phép bit thì TFHE với bootstrapping nhanh có lợi. Vì không một scheme nào là tối ưu cho mọi khối lượng công việc, nên việc kiến trúc sư phân tích trước tính chất của phép toán mục tiêu để chọn scheme và tham số chính là cốt lõi của việc đảm bảo hiệu năng.
4. So sánh ưu nhược điểm và kỹ thuật liên quan
A. Ưu nhược điểm
Quyền riêng tư mạnh mẽ của mã hóa đồng cấu được đánh đổi bằng chi phí tính toán khổng lồ. Hiểu được sự đánh đổi này là điểm khởi đầu của việc áp dụng thực tế.
| Ưu điểm | Nhược điểm |
|---|---|
| Phân tích ở trạng thái mã hóa → không lộ bản gốc, quyền riêng tư mạnh | Gánh nặng khối lượng tính toán, hiệu năng rất lớn (FHE gấp hàng nghìn đến hàng triệu lần so với bản rõ) |
| Thực hiện an toàn tính toán trên đám mây, ủy thác bên ngoài | Dung lượng tăng vọt do phình bản mã (ciphertext expansion) |
| Đáp ứng quy định dữ liệu (bảo vệ bản gốc mà không cần ẩn danh) | Độ khó triển khai cao như quản lý nhiễu, thiết kế mạch |
| Dựa trên lưới → kỳ vọng kháng lượng tử | Chuẩn hóa đang tiến hành nên khả năng tương tác, kiểm chứng chưa chín muồi |
Gánh nặng hiệu năng là rào cản thực tế lớn nhất. Một phép cộng đơn giản có thể đòi hỏi thời gian gấp hàng nghìn lần phép tính trên bản rõ, và nếu bao gồm cả bootstrapping thì khoảng cách càng nới rộng. Phình bản mã cũng là vấn đề, khi một số nguyên vài byte phình thành bản mã vài KB đến vài chục KB làm tăng chi phí lưu trữ, truyền tải. Do đó, nguyên tắc của mã hóa đồng cấu không phải là "mã hóa mọi phép tính" mà là áp dụng có chọn lọc vào những điểm có độ nhạy cảm cao và tần suất tính toán thấp.
Một điểm cần lưu ý nữa là mã hóa đồng cấu yếu về căn bản đối với các phép toán điều khiển như so sánh, rẽ nhánh. Ở trạng thái bản mã, không thể phán đoán "giá trị này có lớn hơn 0 không" để rẽ nhánh (vì bản thân việc phán đoán đòi hỏi thông tin bản rõ), nên các thuật toán có nhiều câu điều kiện phải đi vòng bằng xấp xỉ đa thức hoặc masking, và trong quá trình này phát sinh tổn thất về độ chính xác, hiệu năng. Vì vậy, việc thiết kế lại thuật toán thành "thân thiện với đồng cấu (HE-friendly)" là chi phí ẩn của việc áp dụng, và ví dụ tiêu biểu là dùng hàm kích hoạt đa thức thay cho ReLU trong học sâu.
B. Quan hệ với MPC, học liên kết, quyền riêng tư vi phân
Mã hóa đồng cấu không cạnh tranh với các PET khác mà ở quan hệ bổ trợ lẫn nhau. Vì đối tượng bảo vệ và mô hình tin cậy của mỗi kỹ thuật khác nhau.
| Kỹ thuật | Ý tưởng cốt lõi | Quan hệ với mã hóa đồng cấu |
|---|---|---|
| MPC (tính toán đa bên) | Nhiều bên cùng tính hàm chung trong khi che giấu đầu vào của mình | Lợi về giảm lưu lượng truyền, phân tán tính toán; HE lợi cho tính toán ủy thác không cần truyền → kết hợp (HE+MPC) |
| Học liên kết (FL) | Chỉ chia sẻ cập nhật mô hình mà không thu gom bản gốc | Mã hóa chính giá trị cập nhật bằng HE để ngăn máy chủ suy luận |
| Quyền riêng tư vi phân (DP) | Thêm nhiễu vào kết quả để ngăn nhận diện cá nhân | HE bảo vệ quá trình tính toán, DP bảo vệ kết quả đầu ra → kết hợp phân tầng |
MPC do nhiều tổ chức vừa truyền thông vừa chia nhau tính toán nên chi phí truyền lớn nhưng tính toán tương đối nhẹ, còn mã hóa đồng cấu do chỉ cần giao dữ liệu một lần là máy chủ tự tính mà không cần truyền nên phù hợp với kịch bản ủy thác. Trong học liên kết, chỉ với gradient mà mỗi bên tham gia gửi đi cũng có thể suy ngược ra bản gốc, nên người ta mã hóa chúng bằng mã hóa đồng cấu (Secure Aggregation) để chặn máy chủ nhìn thấy từng giá trị riêng lẻ. Quyền riêng tư vi phân thêm nhiễu vào "kết quả" tính toán để che giấu cá nhân, trong khi mã hóa đồng cấu che giấu "quá trình" tính toán, nên nếu dùng cả hai theo phân tầng thì có thể bảo vệ cả quá trình lẫn kết quả.
Mặt khác, tính toán bảo mật dựa trên môi trường thực thi tin cậy phần cứng (TEE, ví dụ: Intel SGX) xử lý bản rõ trong vùng cách ly bên trong CPU nên hiệu năng nhanh hơn nhiều so với mã hóa đồng cấu, nhưng có khác biệt về giả định tin cậy là phải tin tưởng nhà sản xuất phần cứng và có thể bị lộ trước tấn công kênh phụ. Mã hóa đồng cấu chỉ đặt tính an toàn vào bài toán khó về mặt toán học nên không cần tin cậy phần cứng nhưng bù lại thì chậm. Do đó, điểm mấu chốt của thiết kế là bố trí hai kỹ thuật này theo quan điểm "lấy gì làm nền tảng tin cậy" chứ không phải "nhanh đến đâu".
5. Chuyên sâu: Xu hướng mới nhất và ứng dụng thực tế
Mã hóa đồng cấu từ lâu bị đánh giá là "đẹp về mặt lý thuyết nhưng chậm nên không dùng được", nhưng vài năm gần đây việc thực dụng hóa đang tiến triển nhanh trên ba trục tăng tốc phần cứng, chín muồi thư viện, và chuẩn hóa. FHE đầu tiên của Gentry mất vài chục phút cho một phép tính đơn giản, nhưng nhờ cải tiến thuật toán và đóng gói SIMD mà chỉ trong vài năm đã nhanh hơn hàng nghìn lần, đây là điều tượng trưng cho dòng chảy này.
Thứ nhất, sự chín muồi của hệ sinh thái thư viện. SEAL của Microsoft, HElib của IBM, và OpenFHE (dòng PALISADE) tích hợp nhiều dự án, Lattigo dựa trên Go, HEAAN là bản tham chiếu CKKS, v.v. đã được công khai mã nguồn mở, giúp cả người không phải chuyên gia mật mã cũng có thể chọn dùng BGV·BFV·CKKS·TFHE. Chúng hỗ trợ đóng gói SIMD (batching) vốn chứa vectơ trong một bản mã để xử lý song song, nâng cao đáng kể hiệu năng thực tế của tính toán khối lượng lớn.
Thứ hai, tăng tốc phần cứng chuyên dụng. Nút thắt cổ chai của FHE phần lớn nằm ở phép nhân đa thức (phép toán NTT) và bootstrapping, và người ta liên tục thử tăng tốc chúng bằng GPU·FPGA·ASIC. Chương trình DPRIVE của DARPA (Mỹ) đặt mục tiêu tăng tốc mạnh mẽ phép tính bằng bộ xử lý chuyên dụng cho FHE, và nhiều doanh nghiệp như Intel, Samsung đang nghiên cứu phần cứng liên quan. Khi việc tăng tốc này chín muồi, khoảng cách vốn gấp hàng nghìn lần so với bản rõ được kỳ vọng sẽ thu hẹp về mức khả thi trong thực tế.
Thứ ba, chuẩn hóa. Hiệp hội HomomorphicEncryption.org đã tổng hợp chuẩn về tham số, mức độ bảo mật, và ở cấp ISO/IEC cũng đang tiến hành chuẩn hóa FHE (ISO/IEC 28033, v.v.). Chuẩn hóa cho phép khả năng tương tác giữa các thư viện, tổ chức khác nhau và lựa chọn tham số an toàn, nên trở thành tiền đề cho việc lan tỏa trong công nghiệp. Ví dụ, cùng là CKKS nhưng cách ghi tham số, giá trị mặc định lại khác nhau tùy thư viện nên khó kiểm chứng lẫn nhau, mà khi tập tham số chuẩn được xác lập thì sẽ hình thành sự đồng thuận "tham số này thỏa mãn bảo mật 128 bit", giúp việc kiểm toán, cấp chứng nhận dễ dàng. Chuẩn hóa cũng là trục cốt lõi để đảm bảo niềm tin của công nghiệp ngang với hiệu năng.
Về trường hợp ứng dụng thực tế, tiêu biểu là nghiên cứu thực hiện thống kê, dự đoán bệnh trên dữ liệu bộ gen đã mã hóa bằng mã hóa đồng cấu tại iDASH - cuộc thi phân tích bộ gen y tế, và trong ngành tài chính, nhiều tổ chức đang thử áp dụng vào đánh giá tín dụng bảo toàn quyền riêng tư, phát hiện giao dịch bất thường mà không để lộ dữ liệu của mỗi bên. Tại Hàn Quốc, dịch vụ suy luận học máy ở trạng thái mã hóa sử dụng CKKS cũng đang bước vào giai đoạn thương mại hóa.
Cụ thể hóa kịch bản như sau. Khi bệnh viện mã hóa các chỉ số xét nghiệm của bệnh nhân bằng CKKS rồi đưa lên đám mây, mô hình hỗ trợ chẩn đoán trên đám mây chạy mạng nơ-ron được xấp xỉ bằng đa thức trên bản mã để chỉ sinh ra bản mã "xác suất có dấu hiệu bất thường". Bệnh viện giải mã điều này để chỉ xác nhận kết quả, còn nhà cung cấp đám mây hoàn toàn không biết cả chỉ số xét nghiệm gốc lẫn kết quả chẩn đoán. Cấu trúc này đáng chú ý ở chỗ là giải pháp hiếm hoi thỏa mãn đồng thời "chủ quyền dữ liệu" và "khai thác AI" trong các ngành nhạy cảm về quy định phải gửi dữ liệu lên đám mây nước ngoài. Tuy nhiên, cân nhắc tổn thất độ chính xác và độ trễ do xấp xỉ đa thức, cách tiếp cận thực tế là áp dụng trước từ các mục đích không thời gian thực như sàng lọc (chọn lọc sơ bộ).
Hướng ra đề dự kiến cũng đáng để tổng hợp cùng. Trong kỳ thi Kỹ sư chuyên nghiệp, mã hóa đồng cấu có xu hướng được ra đề dưới dạng kết hợp với chủ đề khác như "so sánh các kỹ thuật bảo toàn quyền riêng tư (HE·MPC·DP·học liên kết)", "phương án bảo vệ dữ liệu trong môi trường đám mây", "quan hệ với mật mã kháng lượng tử" hơn là dạng định nghĩa đơn lẻ. Do đó, trong bài làm không nên dừng ở định nghĩa, nguyên lý mà nên triển khai luận điểm theo ba trục "tại sao cần bây giờ (khoảng trống bảo vệ khi xử lý)", "kết hợp với cái gì (chồng PET)", "cái gì là trở ngại (hiệu năng, chuẩn hóa)" thì sẽ nâng cao độ hoàn thiện của một bài làm chuyên sâu.
6. Điểm cân nhắc và ý nghĩa
Theo quan điểm Kỹ sư chuyên nghiệp, mã hóa đồng cấu không phải giải pháp vạn năng mà nên được xử lý như một lựa chọn trong thiết kế kiến trúc.
- Chiến lược áp dụng có chọn lọc: Cân nhắc chi phí hiệu năng của FHE, ưu tiên áp dụng vào các phép tính mang tính lô (batch) ít nhạy với độ trễ và có độ nhạy cảm cao (ví dụ: thống kê ban đêm, suy luận trên bản mã), và không dùng gượng ép vào giao dịch thời gian thực, tần suất cao. Thực tế là "chỉ mã hóa đoạn nhạy cảm" chứ không phải "mã hóa toàn tuyến".
- Quản lý tham số, mức độ bảo mật: Với mã hóa dựa trên lưới, việc lựa chọn tham số quyết định luôn cả mức độ bảo mật và hiệu năng. Cần đảm bảo bảo mật từ 128 bit trở lên theo chuẩn (khuyến nghị của HomomorphicEncryption.org), đồng thời cần chuyên môn để tinh chỉnh tham số phù hợp với yêu cầu về độ sâu mạch, độ chính xác.
- Kiến trúc kết hợp: Nên thiết kế mô hình tin cậy bằng cách kết hợp phân tầng với MPC·học liên kết·quyền riêng tư vi phân·tính toán bảo mật (TEE) thay vì dùng mã hóa đồng cấu đơn lẻ. Ví dụ, bảo vệ gradient của học liên kết bằng HE và thêm nhiễu DP vào đầu ra cuối cùng.
- Phù hợp với lộ trình kháng lượng tử: Mã hóa đồng cấu dựa trên LWE/RLWE chia sẻ nền tảng toán học với ứng viên kháng lượng tử, nên nếu xem xét cùng với lộ trình chuyển đổi PQC (mật mã kháng lượng tử) của tổ chức thì có thể nâng cao hiệu quả đầu tư chuẩn bị cho tương lai.
- Liên kết quy định, quản trị: Từ quan điểm đáp ứng Luật bảo vệ thông tin cá nhân, GDPR, nên định vị mã hóa đồng cấu như "giải pháp thay thế hoặc bổ sung cho bí danh hóa, ẩn danh hóa", và khi áp dụng cần có hệ thống quản trị đánh giá đồng thời cả hiệu năng, chi phí, khả năng kiểm chứng (kiểm toán).
- Quản lý khóa và tính toàn vẹn: Mã hóa đồng cấu đảm bảo tính bảo mật của phép tính nhưng không tự động đảm bảo luôn cả việc máy chủ "có thực hiện trung thực phép tính đã cam kết hay không" (tính toàn vẹn). Do đó, cần thiết kế cùng với việc kết hợp tính toán kiểm chứng được (verifiable computation) hoặc chứng minh không tiết lộ tri thức, cùng với chính sách lưu trữ, luân chuyển an toàn khóa bí mật thì mới đối phó được với mô hình mối đe dọa thực tế.
- Lộ trình áp dụng từng bước: Nên áp dụng theo các giai đoạn thí điểm (thống kê phi thời gian thực, sàng lọc) → thương mại hóa bộ phận (tính toán lô nhạy cảm) → mở rộng, và mở rộng phạm vi áp dụng trong khi theo dõi mức độ chín muồi của tăng tốc phần cứng, chuẩn hóa là con đường thực tế giúp giảm rủi ro.
Tài liệu tham khảo
- Gentry, C. "A Fully Homomorphic Encryption Scheme" (PhD thesis, Stanford, 2009): https://crypto.stanford.edu/craig/craig-thesis.pdf
- Cheon, Kim, Kim, Song. "Homomorphic Encryption for Arithmetic of Approximate Numbers (CKKS)": https://eprint.iacr.org/2016/421
- Microsoft SEAL: https://github.com/microsoft/SEAL
- OpenFHE: https://www.openfhe.org/
- Hiệp hội chuẩn hóa HomomorphicEncryption.org: https://homomorphicencryption.org/
Tóm tắt một câu: Mã hóa đồng cấu là kỹ thuật dựa trên lưới có thể thực hiện phép tính ở trạng thái bản mã mà không cần giải mã, đã phát triển thành PHE·SWHE·FHE (hiện thực hóa FHE bằng bootstrapping của Gentry năm 2009, thực dụng hóa phép tính số thực bằng CKKS), tuy gánh nặng hiệu năng lớn nhưng đang được thực dụng hóa nhờ tăng tốc phần cứng, chuẩn hóa và là kỹ thuật PET cốt lõi giúp khai thác dữ liệu bảo toàn quyền riêng tư trong thời đại đám mây, AI.