带误差学习(LWE)
《应用后量子密码学》本章的全部代码:共 4 段,其中 4 段可在此运行。编辑任意单元格,然后点击运行。
书中的代码片段在一章之内层层相依,但 Sage Cell 内核每次只运行一个单元格,运行后不保留任何状态,因此每个单元格都会用 apqc_book 重放此前的代码。这一调用是在书中原有代码之外唯一添加的内容。
代码 1:Sage 实验
获得直觉的最快途径,是亲手构造一个小实例,观察误差如何把一个容易的方程组变成一个困难的方程组。先固定模数和维数。
代码 2:Sage 实验
选择一个秘密向量和一批随机行。
代码 3:Sage 实验
没有噪声时,b=As 是一个精确的方程组,直接求解即可恢复 s。
代码 4:Sage 实验
现在加入一个短误差。在 𝔽₁₇ 中,值 16 表示 -1,因此这个向量的分量取自 {-1,0,1}。