Lattice-Crypto

Sage 中的格:從基 S 生成矩陣 A,使得 AS = 0 (mod q)

  • July 9, 2021

在 Sage 中有一個函式:gen_lattice() 可以生成一個基$$ S \in \mathbb{Z}^{m \times m}_q $$格子的$$ \Lambda^\bot_q(A) $$, 在哪裡$$ A \in \mathbb{Z}^{n \times m}_q $$是隨機的。

所以,$$ AS = 0 \pmod q. $$

問題是:有沒有什麼方法可以進一步得到一個矩陣$$ A \in \mathbb{Z}^{n \times m}_q. $$

(即 AP09 中的 TrapGen 算法

是的,這相對簡單。首先,Sage 似乎內置了這個(請參閱dual flag,雖然我沒有測試它)。我將描述繼續的“數學”方式,因為我認為它在概念上更有用。

對於有基礎的格子 $ B $ ,眾所周知(見定理 2),對偶有基:

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

隨之而來的是以下程式碼片段:

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

將產生所需的基礎。請注意,基通常不是整數矩陣 — 對於(隨機)矩陣 $ S $ 在 的執行中生成sage.crypto.gen_lattice(),我知道雙重基礎是:

[ 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]

(原始)基礎被選為 $ q $ -ary for $ q = 11 $ . 您可能會注意到,通過按比例放大 $ q = 11 $ ,我們得到一個整數矩陣。這通常成立,並且可以通過注意到 $ q $ 點陣 $ L $ 滿足:

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

這就是說,如果 $ q\mathbb{Z}^m\subseteq L\subseteq \mathbb{Z}^m $ , 那麼對偶格子 $ L^* $ 可能不包含在 $ q\mathbb{Z}^m $ 和 $ \mathbb{Z}^m $ ,縮放的對偶格子始終是。人們經常在論文中將其視為聲明:

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

事實上,在符號 $ \Lambda_q(A) $ 和 $ \Lambda_q^\perp(A) $ ,你只是在問,給定一個基礎 $ \Lambda_q(A) $ , 建構一個基礎 $ \Lambda_q^\perp(A) $ .

引用自:https://crypto.stackexchange.com/questions/91925