Score:1

Lattice ใน Sage: สร้างเมทริกซ์ A จากพื้นฐาน S ซึ่ง AS = 0 (mod q)

ธง co

ใน 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.$$

(กล่าวคืออัลกอริทึม TrapGen ใน AP09.)

Score:4
ธง ng

ใช่ มันค่อนข้างตรงไปตรงมา ประการแรก ดูเหมือนว่า Sage จะมีสิ่งนี้ในตัว (ดูที่ ธงคู่แม้ว่าฉันจะไม่ได้ทดสอบก็ตาม) ฉันจะอธิบายวิธีดำเนินการ "ทางคณิตศาสตร์" เนื่องจากฉันคิดว่ามีประโยชน์ในเชิงแนวคิดมากกว่า

สำหรับโครงตาข่ายที่มีฐาน $B$เป็นที่รู้จักกันดี (ดู ทฤษฎีบท 2) ที่คู่มีพื้นฐาน:

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

เป็นไปตามที่ข้อมูลโค้ดต่อไปนี้:

S = sage.crypto.gen_lattice()
D = S * (S.T * S).ผกผัน()

จะสร้างพื้นฐานที่ต้องการ โปรดทราบว่าพื้นฐานไม่ใช่เมทริกซ์จำนวนเต็มโดยทั่วไป --- สำหรับเมทริกซ์ (สุ่ม) $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 = 11$. คุณอาจสังเกตได้จากการปรับขนาดสิ่งต่างๆ $q = 11$เราได้เมทริกซ์จำนวนเต็ม สิ่งนี้ถือโดยทั่วไปและสามารถเห็นได้โดยสังเกตว่าก $คิว$- ตาข่าย $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{จัดตำแหน่ง*}

คือว่าถ้า $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)$.

Zi-Yuan Liu avatar
co flag
นอกจากนี้ หลังจากรันโค้ดของคุณแล้ว ดูเหมือนว่า A*S ไม่สามารถรับ 0 ได้ ขอบคุณ
Mark avatar
ng flag
ฉันลืมทรานสโพส ในสัญกรณ์คำตอบถือว่า $(qD)^t S = q D^t S\equiv 0 \bmod q$
Zi-Yuan Liu avatar
co flag
ขอบคุณ. ฉันเข้าใจมัน!

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา