Điểm:1

Lưới trong Sage: Tạo ma trận A từ cơ sở S sao cho AS = 0 (mod q)

lá cờ co

Trong Sage, có một hàm: gen_lattice() có thể tạo cơ sở $$S \in \mathbb{Z}^{m \times m}_q $$ của một mạng tinh thể $$\Lambda^\bot_q(A)$$, ở đâu $$A \in \mathbb{Z}^{n \times m}_q$$ là một ngẫu nhiên.

Vì vậy, $$AS = 0 \pmod q.$$

Câu hỏi đặt ra là: có phương pháp nào có thể thu được thêm ma trận $$A \in \mathbb{Z}^{n \times m}_q.$$

(nghĩa là thuật toán TrapGen trong AP09.)

Điểm:4
lá cờ ng

Vâng, điều này là tương đối đơn giản. Đầu tiên, có vẻ như Sage đã tích hợp sẵn tính năng này (xem cờ kép, mặc dù tôi đã không kiểm tra nó). Tôi sẽ mô tả cách tiến hành "toán học", vì tôi nghĩ nó hữu ích hơn về mặt khái niệm.

Đối với một mạng có cơ sở $B$, nó được nhiều người biết đến (xem định lý 2) mà đối ngẫu có cơ sở:

$$D = B (B^t B)^{-1}$$

Theo sau đó là đoạn mã sau:

S = sage.crypto.gen_lattice()
D = S * (S.T * S).inverse()

sẽ tạo ra cơ sở mong muốn. Lưu ý rằng cơ sở không phải là ma trận số nguyên nói chung --- đối với ma trận (ngẫu nhiên) $S$ được tạo ra trong một lần thực hiện sage.crypto.gen_lattice(), tôi hiểu rằng cơ sở kép là:

[ 1/11     0     0     0 -4/11 -3/11  2/11     0]
[    0  1/11     0     0 -5/11  1/11 -3/11     0]
[    0     0  1/11     0     0  5/11 -4/11 -5/11]
[    0     0     0  1/11 -2/11  4/11  4/11 -5/11]
[    0     0     0     0     1     0     0     0]
[    0     0     0     0     0     1     0     0]
[    0     0     0     0     0     0     1     0]
[    0     0     0     0     0     0     0     1]

Cơ sở (sơ cấp) được chọn là $q$-ary cho $q = 11$. Bạn có thể nhận thấy rằng bằng cách nhân rộng mọi thứ bằng cách $q = 11$, ta được một ma trận số nguyên. Điều này nói chung đúng, và có thể thấy được bằng cách lưu ý rằng một $q$mạng tinh thể $L$ đáp ứng:

\begin{align*} q\mathbb{Z}^m&\subseteq L\subseteq \mathbb{Z}^m\ \iff (q\mathbb{Z}^m)^*&\supeteq L^* \supseteq \mathbb{Z}^m\ \iff \frac{1}{q}\mathbb{Z}^m&\supeteq L^*\supeteq \mathbb{Z}^m\ \iff \mathbb{Z}^m &\supeteq qL^*\supeteq q\mathbb{Z}^m \end{align*}

Điều này muốn nói rằng nếu $q\mathbb{Z}^m\subseteq L\subseteq \mathbb{Z}^m$, sau đó trong khi mạng kép $L^*$ có thể không được chứa giữa $q\mathbb{Z}^m$$\mathbb{Z}^m$, các thu nhỏ mạng tinh thể kép luôn là. Người ta thường thấy điều này trong các bài báo như một tuyên bố:

$$\Lambda_q(A)^* = \frac{1}{q}\Lambda_q^\perp(A)$$

Trên thực tế, trong ký hiệu của $\Lambda_q(A)$$\Lambda_q^\perp(A)$, bạn chỉ đơn giản là hỏi, đưa ra một cơ sở cho $\Lambda_q(A)$, để làm cơ sở cho $\Lambda_q^\perp(A)$.

Zi-Yuan Liu avatar
lá cờ co
Ngoài ra, sau khi chạy mã của bạn, có vẻ như A*S không thể nhận được 0. Cảm ơn
Mark avatar
lá cờ ng
Tôi đã quên một chuyển vị, trong ký hiệu của câu trả lời, nó ghi rằng $(qD)^t S = q D^t S\equiv 0 \bmod q$.
Zi-Yuan Liu avatar
lá cờ co
Cảm ơn. Tôi hiểu rôi!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.