Câu trả lời là "có" và các sửa đổi tương đối đơn giản đối với các chuyên gia (đó là lý do tại sao bạn có thể không thấy nó thường xuyên).
Có khoảng ba loại sửa đổi, tôi sẽ cố gắng đề cập ngắn gọn tất cả chúng.
Xuyên suốt, tôi sẽ đề cập đến lược đồ mã hóa "kiểu Regev" tiêu chuẩn
$$\mathsf{Enc}_s(m) = (A, As + e + (q/2)m),\qquad \mathsf{Dec}(A, b) = \lfloor b - As\rceil_2$$
chức năng ở đâu $\lsàn x\rceil_p = p\lsàn x/p\rceil$ vòng $x$ đến bội số nguyên gần nhất của $p$ (và $\lsàn x\rceil$ là hàm "làm tròn đến số nguyên gần nhất" tiêu chuẩn).
Đầu tiên, có một cách tiêu chuẩn để đi từ một không gian tin nhắn của $\mathbb{Z}/2\mathbb{Z}$ đến $(\mathbb{Z}/2\mathbb{Z})^n$, cụ thể là thông qua "sơ đồ mã hóa ma trận".
ý tưởng là có $n$ khóa độc lập $s_1, s_2,\dots, s_n$.
Bạn có thể thu thập chúng thành một ma trận $\mathbf{S} = [s_1,\dots,s_n]$, và sau đó mã hóa với
$$\mathsf{Enc}_{\mathbf{S}}(\vec m) = (A, A\mathbf{S} + \vec e + (q/2)\vec m)$$
Thực tế, chúng tôi đang "tái sử dụng" $A$ băng qua $n$ mã hóa khác nhau. Như $A$ là phần lớn nhất (quy mô khôn ngoan) của chương trình, đây là một khoản tiết kiệm kha khá. Các phím tăng theo hệ số nhân $n$ Tuy nhiên. Tôi tin rằng sự tối ưu hóa này được đề cập trong PVW08 (có thể là "Chức năng cửa sập thất thoát và các ứng dụng của chúng"?), nhưng không biết liệu đây có phải là lần đầu tiên nó xuất hiện hay không.
Một cách khác để đi từ một không gian tin nhắn của $\mathbb{Z}/2\mathbb{Z}$ đến $(\mathbb{Z}/2\mathbb{Z})^n$ là sử dụng các vòng tổng quát hơn, tức là sử dụng RLWE. Điều này hơi không tầm thường về mặt toán học, vì vậy tôi sẽ đưa ra một cái nhìn tổng quan ở cấp độ cao.
Bản mã bây giờ có dạng $(a, as + e + (q/2)m)$, bây giờ đang ở đâu $a, s, e, m$ là tất cả đa thức bằng cấp $n$.
Đặc biệt, người ta nhận được mã hóa cho các vectơ bit trong $(\mathbb{Z}/2\mathbb{Z})^n$ "miễn phí", cụ thể là không có phải tăng kích thước của khóa bí mật. Đây là một trong những cách hiệu quả hơn để vượt qua mã hóa bit và cực kỳ phổ biến trong thực tế (ví dụ: mọi giải pháp NIST đều sử dụng một số phiên bản này, tức là RLWE, MLWE hoặc nội dung NTRU không nguyên, ngoại trừ FrodoKEM, cố ý không vì lý do bảo mật).
Nếu bạn không thích sự xuất hiện của $\mathbb{Z}/2\mathbb{Z}$ mọi nơi?
Những câu chuyện trên đều có thể khái quát để có không gian nhắn $\mathbb{Z}p/\mathbb{Z}$ (chứ không phải là trường hợp cụ thể của $p = 2$) bằng cách đổi số hạng $(q/2)m$ đến $(q/p)m$ (trong trường hợp đầu tiên, chúng tôi chọn $q$ như vậy mà $2\trung q$.
Sau khi khái quát hóa, chúng tôi muốn $p\mid q$).
Điều này mang lại mã hóa với không gian tin nhắn $\mathbb{Z}/p\mathbb{Z}$hoặc sau hai lần tối ưu hóa mà tôi đã đề cập $(\mathbb{Z}/p\mathbb{Z})^n$.
Lưu ý rằng điều này không miễn phí --- nói một cách đại khái, thuật ngữ $(q/2)m$ được sử dụng để đảm bảo giữ đúng quá trình giải mã và hoạt động khi có lỗi $|e| < q/4$ trong mỗi tọa độ.
Đối với chung $p$, giới hạn này thắt chặt và người ta phải có lỗi $|e| < q/2p$ trong mỗi tọa độ.
Lỗi nhỏ hơn này dẫn đến các chương trình kém an toàn hơn.
Người ta có thể giải quyết vấn đề này thông qua việc tham số hóa lại mọi thứ, nhưng vấn đề là việc chuyển đổi từ $\mathbb{Z}/2\mathbb{Z}\mapsto \mathbb{Z}/p\mathbb{Z}$ không đến "miễn phí".
Đối với câu hỏi cập nhật của bạn, điều đáng nói là có các lược đồ mã hóa dựa trên LWE (thậm chí cả FHE!!) với hệ số mở rộng bản mã (tối ưu tiệm cận), xem