Trong kỷ nguyên số, dữ liệu là tài sản vô giá. Làm thế nào chúng ta có thể khai thác giá trị từ dữ liệu mà không làm lộ những thông tin nhạy cảm bên trong? Bài viết này mình xin giới thiệu Tính toán Đa bên Bảo mật (Multi-Party Computation - MPC) và Mã hóa Đồng cấu (Homomorphic Encryption) như là một giải pháp.
Về cốt lõi, MPC là một lĩnh vực của mật mã học giải quyết bài toán sau:
Làm thế nào để một nhóm các bên (người, công ty, tổ chức) có thể cùng nhau tính toán một hàm số dựa trên các đầu vào riêng tư của họ, sao cho kết quả cuối cùng được tiết lộ cho mọi người, nhưng không một thông tin riêng tư nào bị rò rỉ trong suốt quá trình?
Ví dụ kinh điển là "Bài toán Lương trung bình": An, Bình, và Chi muốn biết mức lương trung bình của cả ba, nhưng không ai muốn nói cho người khác biết mình kiếm được bao nhiêu. MPC chính là giao thức cho phép họ tìm ra con số trung bình mà vẫn giữ kín tuyệt đối thu nhập cá nhân.
Hệ mã Paillier là một hệ mã bất đối xứng nổi tiếng với một đặc tính cực kỳ hữu ích: Tính đồng cấu cộng (Additively Homomorphic).
Tính chất này có thể được mô tả bằng một công thức kỳ diệu:
Nếu bạn có bản mã của hai thông điệp m1, m2 ký hiệu là E(m1) và E(m2), bạn có thể nhân hai bản mã này lại với nhau để có được bản mã tổng của hai số đó
Đây chính là chìa khóa để giải quyết bài toán tính lương trung bình. Mọi người sẽ mã hóa lương của mình, gửi các bản mã đến một nơi để nhân lại với nhau, và kết quả sẽ là bản mã của tổng lương, sẵn sàng để được giải mã.
Chọn hai số nguyên tố
Tính
Tính là bội số chung nhỏ nhất của , nghĩa là . Trường hợp đơn giản:
Chọn : Một cách chọn đơn giản và phổ biến là
Tính : được tính bằng , trong đó
Khóa công khai , khóa bí mật
Mã hóa
Để mã hóa một thông điệp thành bản mã
Chọn số ngẫu nhiên
Tính bản mã
Sự tồn tại của nhằm đảm bảo mỗi lần mã hóa cùng một tin nhắn sẽ tạo ra một bản mã khác nhau.
Giải mã
Để giải mã, ta tính
Bản mã:
Khóa bí mật: ,
Như vậy:
Khi tính theo , tất cả các số hạng chứa đều bằng . Do đó:
Tiếp tục, đối với thành phần ta có
Theo định lý Carmichael (một dạng mở rộng của định lý Fermat nhỏ), với mọi nguyên tố cùng nhau với và , thì :
Đây là một tính chất nâng cao của nhóm nhân
Tiếp tục, tính :
Áp dụng các kết quả thu được ta có:
Vậy:
Xét hàm với ta có:
Tương tự:
Mà , do đó:
Đây là lý do tại sao công thức giải mã lại như vậy.
Trong quy trình cơ bản trên, có một điểm yếu: người nắm giữ Khóa Bí mật có thể giải mã mọi thứ. Để xây dựng một hệ thống thực sự an toàn, chúng ta cần phân tán khóa thành nhiều phần.
Tạo Khóa Phân tán (Distributed Key Generation - DKG)
Thay vì một người tạo và giữ toàn bộ Khóa Bí mật, tất cả các bên sẽ cùng tham gia vào một giao thức:
Tạo ra một Khóa công khai chung cho cả nhóm
Phân chia Khóa bí mật. Ví dụ, sẽ được chia ra thành các "mảnh" sao cho mỗi người sẽ chỉ giữ khóa của riêng mình và không hề biết các mảnh của người khác.
Lúc này không một cá nhân nào có đủ thông tin để tự mình giải mã.
Giải mã Ngưỡng (Threshold Decryption)
Tính toán trên bản mã: Giống như trước, các bản mã của từng người được nhân lại với nhau trong không gian công khai để có được bản mã của tổng:
Giải mã cục bộ: Mỗi người thứ sẽ lấy bản mã tổm và dùng mảnh khóa bí mật của mình để tính một "mảnh giải mã cục bộ"
Kết hợp để giải mã: Các mảnh giải mã cục bộ này được công khai và nhân lại với nhau. Phép toán này có một kết quả toán học rất đẹp:
Giá trị chính là là bước tính toán cốt lõi trong công thức giải mã Paillier. Từ đây, bất kỳ ai cũng có thể áp dụng các bước cuối cùng của công thức giải mã để tìm ra tổng lương cuối cùng.
Bằng cách này, "bí mật" về tổng lương đã được tính toán thành công mà không một cá nhân nào có đủ quyền năng để xem trộm dữ liệu riêng tư của người khác. Đây chính là bản chất của một hệ thống MPC an toàn và không cần tin tưởng.
No comments yet. Be the first to comment!