Quá trình phát triển của mã hóa đồng cấu
Trên thực tế, các nhà mật mã học đã phải tốn khá nhiều công sức để loại bỏ tính năng đồng cấu từ các hệ mã hoá khoá công khai như Elgamal và RSA. Nếu không, cả hai hệ mã hoá đó đều đồng cấu với phép nhân (nghĩa là, khi nhân hai bản mã bất kỳ được mã hoá bằng Elgamal thì khi giải mã kết quả sẽ nhận được bản rõ là tích của hai bản rõ ban đầu).
Năm 1978, ngay sau khi công bố thuật toán RSA, Rivest, Adleman và Dertouzos đã xem xét thiết kế của một hệ mã hoá đồng cấu. Không may, tính bí mật đồng cấu của hệ mã này bị Brickell và Yacobi phá vỡ vào năm 1987.
Vấn đề mã hoá đồng cấu lại nhận được sự quan tâm vào năm 1991, khi Feigenbaum và Merritt đưa ra một câu hỏi quan trọng: liệu có tồn tại một hàm mã hoá (E) mà cả E(x + y) và E(x.y) đều có thể tính được dễ dàng từ E(x) và E(y)? Cho tới năm 2009, Craig Gentry mới công bố tài liệu chứng minh về mặt lý thuyết khả năng xây dựng một hệ mã hoá đồng cấu an toàn. Trong luận văn của mình, Gentry dùng hình ảnh một chủ tiệm trang sức quý để mô tả các hệ mã hoá đồng cấu. Hãy tưởng tượng Alice là chủ tiệm trang sức, thuê nhân viên lắp ghép các đồ trang sức từ nguyên liệu là kim cương và vàng. Lo ngại về khả năng nhân viên trộm đồ, Alice thiết kế những chiếc hộp gắn với những chiếc găng. Nhân viên có thể xỏ thay vào găng để lắp đồ trang sức ở bên trong hộp nhưng không thể lấy thứ gì ra khỏi hộp vì chỉ Alice mới có khoá. Hệ mã hoá đồng cấu của Gentry đưa nhiễu (noise) vào quá trình xử lý. Mỗi tác vụ mã hoá thành công sẽ đưa thêm nhiễu vào hệ thống khiến thiết kế ban đầu của ông không thể áp dụng trong thực tế. Việc sử dụng nhiễu buộc phải khởi động lại hệ thống sau một thời gian, vì nhiễu được thêm vào khiến toàn bộ hệ thống trở nên chậm.
Hãng IBM đã nghiên cứu về mã hoá đồng cấu trong một thời gian và phát hành phiên bản đầu tiên của thư viện Helib (viết bằng C++) từ năm 2015 nhưng nó chạy chậm hơn 100 nghìn tỷ lần so với các tác vụ xử lý bản rõ. Sau đó, khi nó được tăng tốc 2 triệu lần khi chạy trên máy chủ với CPU 16, IBM đã chuyển một phần kỹ thuật thành nguồn mở.
Năm 2016, Microsoft đã phát triển một mạng trí tuệ nhân tạo CryptoNets, có thể xử lý dữ liệu mã hoá mà không phải giải mã. Hệ thống nhận dạng dựa trên CryptoNets có thể đoán 51 nghìn ký tự mỗi giờ, với độ chính xác 99% khi nhận các hình ảnh mã hoá. Yếu tố căn bản trong cách tiếp cận của Microsoft là công tác tiền xử lý. Các nhà nghiên cứu cần biết trước độ phức tạp của các tác vụ toán sẽ áp dụng với dữ liệu để cấu trúc mạng nơ-ron phù hợp và khống chế lượng dữ liệu được nạp vào đủ nhỏ để máy tính không bị quá tải. Trước đó, vào tháng 11/2015, họ đã phát triển thư viện Simple Encrypted Arithmetic Library (SEAL) để phục vụ công việc và công bố thư viện đó.
Mới đây, IBM lại vừa công bố phiên bản mới của HElib trên GitHub. Phiên bản này được cải tiến để hoạt động nhanh hơn 15-75 lần. Trong tài liệu trình bày tại Hiệp hội quốc tế về nghiên cứu mật mã học (International Association for Cryptologic Research), hai nhà nghiên cứu Shai Halevi và Victor Shoup giải thích rằng, trong thuật toán biến đổi tuyến tính đang triển khai của HElib, phần lớn thời gian là để chuyển dữ liệu giữa các đoạn của véc-tơ mã hoá. Phiên bản mới của thư viện dùng một chiến lược mới để tính toán các thao tác toán học ánh xạ một đối tượng với chính nó và tăng tốc được 15-20 lần. Thêm nữa, các nhà nghiên cứu đã thay đổi rất nhiều và chuyển những tính toán ra ngoài vòng lặp chính của thư viện, nhờ đó tăng tốc được 6-8 lần.
Cách tạo khoá công khai cho mã hoá đồng cấu cũng khá phức tạp do các ma trận chuyển khoá đã đề cập ở trên. Mỗi ma trận thêm nhiều MB vào khoá công khai và trong HElib có thể có hàng trăm ma trận như vậy trong một khoá công khai. Các nhà nghiên cứu cho biết với những thao tác thông thường, họ có thể giảm kích cỡ của các ma trận khoảng 33-50%. Tuy nhiên, HElib vẫn chỉ là một dự án nghiên cứu.
Ứng dụng của mã hóa đồng cấu
Mã hoá đồng cấu có một số khả năng ứng dụng tức thời, chẳng hạn như bầu cử điện tử. Hệ mã hoá Paillier đồng cấu với phép cộng nên đã được dùng trong nhiều giao thức bầu cử điện tử. Mỗi người bỏ phiếu mã hoá phiếu bầu của mình như một con số và công bố nó với thế giới. Bất kỳ ai cũng có thể cộng các phiếu bầu để tạo nên kết quả cuối cùng (được mã hoá) khiến kẻ xấu khó có thể bỏ qua những phiếu bầu hợp lệ. Giải mã bản mã hoá kết quả cuối cùng sẽ chỉ cho biết tổng số phiếu bầu cho mỗi ứng viên nhưng không lộ phiếu bầu của từng cử tri. Khả năng ứng dụng của mã hoá đồng cấu còn rất lớn, nhất là với sự phổ biến của điện toán đám mây. Sau đây chúng ta sẽ xem xét một khả năng ứng dụng mã hoá đồng cấu trong một số ngành.
Ngành y tế
Trong một hệ lưu trữ đảm bảo bí mật trên đám mây, dữ liệu về lịch sử khám chữa bệnh của các bệnh nhân được các cơ sở y tế mã hoá trước khi đẩy lên đám mây. Bệnh nhân kiểm soát việc chia sẻ và truy cập hồ sơ của mình bằng cách chia sẻ khoá bí mật với những cơ sở khám chữa bệnh nhất định với các tính năng bao gồm cấu trúc phân cấp của hồ sơ, khả năng tìm kiếm dữ liệu mã hoá và các lựa chọn phân phối khoá. Tuy nhiên, hệ thống này chỉ cho phép đơn vị quản lý hệ thống lưu trữ tìm kiếm theo từ khoá chính xác hay tìm kiếm nội (conjunctive search). Khả năng mã hoá đồng cấu có thể cho phép nhà cung cấp dịch vụ đám mây tính toán trên dữ liệu mã hoá thay mặt bệnh nhân.
Hãy hình dung một tương lai khi các thiết bị giám sát có thể thay mặt bệnh nhân liên tục truyền dữ liệu lên đám mây. Với mã hoá đồng cấu, nhà cung cấp dịch vụ điện toán đám mây có thể tính các hàm trên dữ liệu mã hoá và gửi cho bệnh nhân các thông tin cập nhật, cảnh báo hay khuyến nghị dựa trên dữ liệu nhận được. Các hàm có thể tính toán trong kịch bản này có thể bao gồm tính giá trị trung bình, sai lệch chuẩn hay các hàm thống kê khác như hồi quy logistic để dự đoán khả năng mắc các chứng bệnh nguy hiểm, thay đổi hướng điều trị (ví dụ như thay đổi liều lượng thuốc). Dữ liệu mã hoá là đầu vào của các hàm đó có thể bao gồm huyết áp, nhịp tim hay chỉ số đường trong máu cùng với những thông tin về tuổi, cân nặng, giới tính,… của bệnh nhân.
Các hàm tính toán không cần giữ bí mật, mặt khác, những hàm thống kê đó có thể thực hiện trên những hệ mã hoá đồng cấu không hoàn toàn: tính giá trị trung bình không cần sử dụng, tính độ lệch chuẩn (standard deviation) chỉ cần một phép nhân, phân tích dự báo như hồi quy logistic chỉ cần một vài phép nhân (tuỳ theo mức độ chính xác cần có).
Ngành tài chính ngân hàng
Trong ngành tài chính có thể cần phải bảo vệ bí mật của cả dữ liệu và các hàm tính toán, như: dữ liệu về các doanh nghiệp, giá chứng khoán, hay các bảng cân đối kế toán. Các hàm xử lý dữ liệu có thể cũng cần được bảo mật. Các hàm này dựa trên những mô hình dự đoán mới về giá chứng khoán và những mô hình đó có thể là sản phẩm của quá trình nghiên cứu lâu dài, vì thế cần giữ kín để đảm bảo lợi thế cạnh tranh.
Với mã hoá đồng cấu đầy đủ, một số hàm có thể được tính toán một cách bí mật theo cách sau: khách hàng tải bản mã hoá của hàm lên đám mây, chẳng hạn như một chương trình mà một số phép tính liên quan tới các đầu vào mã hoá. Dữ liệu chuyển lên đám mây được mã hoá với khoá công khai của khách hàng. Dịch vụ đám mây thực hiện hàm bí mật bằng cách áp dụng bản mô tả được mã hoá của chương trình với đầu vào mã hoá mà họ nhận được. Sau khi xử lý, đám mây trả bản mã hoá của giá trị trả về cho khách hàng.
Sử dụng kỹ thuật mã hoá đồng cấu không chỉ giúp bảo vệ bí mật mà còn cho phép truy cập dữ liệu mã hoá trong chuỗi khối (blockchain) nhằm phục vụ yêu cầu kiểm toán và các mục đích khác. Nói cách khác, mã hoá đồng cấu cho phép lưu dữ liệu trên chuỗi khối công cộng sẽ đem lại những điều tốt nhất của cả chuỗi khối công cộng và riêng tư trong một gói duy nhất. Các ngân hàng không đánh giá cao những chuỗi khối thông thường vì chúng cho phép bất kỳ ai cũng có thể xem sổ sách của họ. Các chuỗi khối bí mật thích hợp hơn cho ngành tài chính và thúc đẩy việc ứng dụng chuỗi khối trong ngành này. Loại tiền Ethereum có thể là giải pháp cho vấn đề đó vì nó bao gồm cả hợp đồng thông minh (smart contract) và mã hoá đồng cấu.
Theo giải thích của Kobi Gurkan từ nền tảng an ninh chuỗi khối Shield128, một trong những khả năng ứng dụng của mã hoá đồng cấu với chuỗi khối là sử dụng hợp đồng thông minh Ethereum để quản lý chi phí cho nhân viên. Nếu các nhân viên không muốn đồng nghiệp biết về chi phí của mình, họ có thể mã hoá các chi tiết và gửi nó tới một hợp đồng thông minh. Khoản chi phí được mã hoá sẽ được cộng vào tổng chi phí, đến cuối kỳ, khi phòng kế toán của công ty muốn phân tích chi phí, họ có thể giải mã hợp đồng cuối để biết các chi tiết. Điều đó cũng giống như việc nhập chi tiết vào một sổ cái công cộng, nhưng chỉ những người có thẩm quyền mới có thể xem toàn bộ chi tiết, những người khác truy cập hợp đồng để thêm thông tin sẽ chỉ nhìn thấy các bút toán đã mã hoá.
Ngành quảng cáo
Có thể hình dung một công ty mỹ phẩm muốn sử dụng thông tin ngữ cảnh để gửi quảng cáo tới đúng những khách hàng tiềm năng thích hợp. Người tiêu dùng sử dụng điện thoại di động sẽ liên tục gửi thông tin ngữ cảnh về bản thân họ như vị trí, thời gian, các từ khoá trong thư điện tử và các hoạt động duyệt web. Thông tin tải lên còn có thể là hình ảnh thương hiệu, khuôn mặt, hay các thông tin định vị (như các đồ vật xung quanh, công sở, nhà riêng hay cửa hàng). Khi thông tin ngữ cảnh được tải lên đám mây, công ty mỹ phẩm có thể xử lý dữ liệu bằng một số hàm để xác định loại quảng cáo cần gửi tới điện thoại của khách hàng cụ thể đó. Các thông tin ngữ cảnh khác có thể là mức thu nhập, nghề nghiệp của khách, lịch sử mua sắm, lịch sử du lịch, địa chỉ nhà riêng,… Những thông tin đó mang tính riêng tư và việc thu thập chúng sẽ khiến khách hàng lo ngại. Nhưng mã hoá đồng cấu có thể mã hoá toàn bộ dữ liệu ngữ cảnh bằng khoá công khai của người dùng trước khi tải lên máy chủ; máy chủ tính toán trên dữ liệu mã hoá để xác định cần gửi đi loại quảng cáo nào (cũng được mã hoá bằng khoá công khai của người dùng); những hàm tính toán đó có thể bí mật hoặc công khai. Nếu nhà cung cấp dịch vụ đám mây không hợp tác với công ty muốn quảng cáo, mã hoá đồng cấu sẽ đảm bảo bí mật dữ liệu của người tiêu dùng dối với nhà cung cấp dịch vụ đám mây và các công ty quảng cáo.