Falcon算法:Chapter 2 设计原理 (入门级讲解)(2)FALCON的NTRU简介与快速傅里叶采样

前文内容提过不再赘述,如术语未解释的一部分可以查看:
Falcon算法:Chapter 1 简介 (入门级讲解)
Falcon算法:Chapter 2 设计原理 (入门级讲解)(1)FALCON的GPV框架简介

2.3 NTRU格

为了紧凑型,我们使用NTRU格,且该格经过20年沉淀,安全性很靠谱。

2.3.1 NTRU格简介

给定 ϕ = x n + 1 , n = 2 k , q ∈ N ∗ \phi=x^n+1, n=2^k,q\in \mathbb{N}^* ϕ=xn+1,n=2k,qN。NTRU秘密集包含四个多项式 f , g , F , G ∈ Z [ x ] / ( ϕ ) f,g,F,G\in \mathbb{Z}[x]/(\phi) f,g,F,GZ[x]/(ϕ),他们满足等式: f G − g F = q   m o d ϕ fG-gF=q \ mod \phi fGgF=q modϕ
f f f可逆时,给出 h = g ⋅ f − 1   m o d   q h=g\cdot f^{-1}\ mod \ q h=gf1 mod q。(h,f,g,F,G都是整数环上的多项式,但是h是系数还要模q)。
通常 h h h是公钥, f , g , F , G f,g,F,G f,g,F,G是私钥。
我们可以判断矩阵 [ 1 h 0 q ] \left[\begin{array}{c|c} 1&h\\ \hline 0&q \end{array}\right] [10hq] [ f g F G ] \left[\begin{array}{c|c} f&g\\ \hline F&G \end{array}\right] [fFgG]生成相同的格(后者化阶梯行矩阵可以得到前者)。前者是大多项式,后者是小多项式(前者是坏格基,后者是好格基,好格基才能求出能用的近向量,也就是前文的GPV中的v向量)。
在实践中,即使f,g都很小,得到的h也很难找到另一对f’和g’满足 h = g ′ ⋅ f ′ − 1   m o d   q h=g'\cdot f'^{-1}\ mod \ q h=gf1 mod q。这个困难性构成了NTRU假设。

2.3.2 GPV实例化

  • 公共基 A = [ 1 h ∗ ] \textbf{A}=\left[\begin{array}{c|c} 1&h^*\\ \end{array}\right] A=[1h](作者理解 h ∗ h^* h为h的共轭转置)。
  • 秘密基 B = [ g − f G − F ] \textbf{B}=\left[\begin{array}{c|c} g&-f\\ \hline G&-F \end{array}\right] B=[gGfF],可以判断 B × A ∗ = 0   m o d   q \textbf{B}\times\textbf{A}^*=0\ mod \ q B×A=0 mod q
  • 消息m的签名加盐r后是由一对多项式 ( s 1 , s 2 ) (s_1,s_2) (s1,s2)组成,即 s 1 + s 2 h = H ( r ∣ ∣ m ) s_1+s_2h=H(r||m) s1+s2h=H(r∣∣m),由于已知其他可以推出 s 1 s_1 s1,所以我们只将 ( r , s 2 ) (r,s_2) (r,s2)作为签名。

2.3.3 选择最优参数

我们的陷门采样器采样的签名的范数与 ∣ ∣ B ∣ ∣ G S ||\textbf{B}||_{GS} ∣∣BGS成比例,这个 ∣ ∣ B ∣ ∣ G S ||\textbf{B}||_{GS} ∣∣BGS表示 ∣ ∣ B ∣ ∣ ||\textbf{B}|| ∣∣B∣∣的Gram-Schmidt范数。(第三章有定义,指的是 B \textbf{B} B做施密特正交化后的正交基中范数最大的那一个的范数(欧几里得范数))。
先前工作通过启发式和实验的结果表明 ∣ ∣ B ∣ ∣ G S ||\textbf{B}||_{GS} ∣∣BGS ∣ ∣ ( f , g ) ∣ ∣ ≈ 1.17 q ||(f,g)||\approx1.17\sqrt{q} ∣∣(f,g)∣∣1.17q 时去最小。因此我们在 Z n [ x ] / ( ϕ ) \mathbb{Z}_n[x]/(\phi) Zn[x]/(ϕ)中以0为中心按离散高斯分布生成f,g,这样f,g的期望能满足在 1.17 q 1.17\sqrt{q} 1.17q 附近,一旦如此 ∣ ∣ B ∣ ∣ G S ||\textbf{B}||_{GS} ∣∣BGS将非常容易求,当f,g超过该值则重新生成。
准优化. d e t ( B ) = f G − g F = q det(B)=fG-gF=q det(B)=fGgF=q,所以理论下界为 q \sqrt{q} q

2.4 快速傅里叶采样

GPV实例化的另一个部分是陷门采样器,这个东西输入是矩阵 A \textbf{A} A,陷门T,目标c,输出一个向量满足 s A t = c   m o d   q sA^t=c\ mod \ q sAt=c mod q。由2.2节可知这等价于找一个 c 0 c_0 c0的最近向量,所以陷门采样器可以指这两个的算法的随意一个。
现在给出以往的陷门采样器,这东西有俩指标,一个当然是效率,另一个则是向量越短(近)越好(短指的是s,近指的是v)。

  • [Kle00]将矩阵 B \textbf{B} B做为陷门,输出向量s的范数与 ∣ ∣ B ∣ ∣ G S ||\textbf{B}||_{GS} ∣∣BGS成比例,这个短够安全,但是时空复杂度为 O ( m 2 ) O(m^2) O(m2)
  • [Pei10]和前面那个一样,对舍入算法做了一个随机化,这个好处是跟FALCON一样做了一个环上的 B \textbf{B} B,时空复杂度 O ( m l o g m ) O(mlogm) O(mlogm),但他与 ∣ ∣ B ∣ ∣ 2 ||\textbf{B}||_2 ∣∣B2成比例(没正交化的范数),因此安全性不行。
  • [MP12]提出新颖方法,简单有效,但是与NTRU不兼容。
  • [DP16]提出环上最近平面算法的变体,用了一个递归的方法,与快速傅里叶变换类似,他们称之为快速傅里叶最近平面,这个又快又好又兼容NTRU。

省流:[DP16]最好,就用这个快速傅里叶最近平面算法。下面附原文对比图。
在这里插入图片描述
选择标准差. 采样器的标准差 σ \sigma σ是一个重要参数, σ \sigma σ太低采样器会泄露信息( σ \sigma σ=0直接就为攻击敞开大门), σ \sigma σ太高则生成的向量不好(不够近或者不够短)导致方案安全性差。
我们的快速傅里叶采样器与[Kle00]的有很多相似之处,其中包括 σ \sigma σ的最优值(足够小的 σ \sigma σ,但不会导致泄露信息)。当 σ ≤ 1.312 ∣ ∣ B ∣ ∣ G S \sigma \leq1.312||\textbf{B}||_{GS} σ1.312∣∣BGS满足NIST的安全等级和查询次数( q s q_s qs)的要求。在我们这可以转换为 σ ≤ 1.55 q \sigma \leq1.55\sqrt{q} σ1.55q

2.5 安全性

本章暂时不看了,与算法本身无关,后续如有机会再补上。

2.6 参数总结

本章给出参数相互关系,最终参数选择过程在源文件Supporting_Documentation/additional/parameters.py
里(在falcon官网有除原文外其他内容),该文件还给出了密钥恢复和伪造的核心SVP难度。

查询数 Q s Q_s Qs,目标安全等级 λ \lambda λ,环的指数n. 根据[NIS16], Q s = 2 64 Q_s=2^{64} Qs=264,对于NIST等级I,使用 λ = 512 \lambda=512 λ=512,对于NIST等级V,使用 λ = 1024 \lambda=1024 λ=1024

模整数q. q=12*1024+1=12289

Gram-Schmidt范数 ∣ ∣ B ∣ ∣ G S ||\textbf{B}||_{GS} ∣∣BGS. ∣ ∣ B ∣ ∣ G S ≤ 1.17 q ||\textbf{B}||_{GS} \leq1.17\sqrt{q} ∣∣BGS1.17q ,为满足这个条件,f,g的系数由离散高斯分布采样,标准差为 σ { f , g } = 1.17 q / 2 n \sigma_{\{f,g\}}=1.17\sqrt{q/2n} σ{f,g}=1.17q/2n

签名标准差 σ \sigma σ. 签名使用快速傅里叶采样算法按离散高斯分布采样得到(按基为 B \textbf{B} B,标准差 σ \sigma σ)。只需满足 ϵ ≤ 1 / Q s / λ \epsilon\leq 1/\sqrt{Q_s/\lambda} ϵ1/Qs/λ
σ = 1 π ⋅ l o g ( 4 n ( 1 + 1 / ϵ ) ) 2 ⋅ 1.17 ⋅ q ≥ η ϵ ( Z 2 n ) ⋅ ∣ ∣ B ∣ ∣ G S \begin{align*} \sigma &= \frac{1}{\pi}\cdot\sqrt{\frac{log(4n(1+1/\epsilon))}{2}}\cdot1.17\cdot\sqrt{q} \\ &\geq \eta_\epsilon(\mathbb{Z}^{2n})\cdot ||\textbf{B}||_{GS}\\ \end{align*} σ=π12log(4n(1+1/ϵ)) 1.17q ηϵ(Z2n)∣∣BGS
(这块没解释这些 η \eta η ϵ \epsilon ϵ的含义,后面章节可能再到这块的细节会解释)

签名最大范数 β \beta β. ( s 1 , s 2 ) (s_1,s_2) (s1,s2)必须满足 ∣ ∣ ( s 1 , s 2 ) ∣ ∣ 2 ≤ ⌊ β 2 ⌋ ||(s_1,s_2)||^2\leq\lfloor\beta^2\rfloor ∣∣(s1,s2)2β2,具体为 β = τ S I G ⋅ σ 2 n τ S I G = 1.1 \beta=\tau_{SIG}\cdot\sigma\sqrt{2n}\quad\tau_{SIG}=1.1 β=τSIGσ2n τSIG=1.1我们称 τ S I G \tau_{SIG} τSIG为签名尾部切割率(tailcut rate)。因为 ∣ ∣ ( s 1 , s 2 ) ∣ ∣ ||(s_1,s_2)|| ∣∣(s1,s2)∣∣的期望是 σ 2 n \sigma\sqrt{2n} σ2n ,比 τ S I G ⋅ σ 2 n \tau_{SIG}\cdot\sigma\sqrt{2n} τSIGσ2n 大的都会被拒收。

2.7 优势和局限性。

不展开了,主要就是:
优势:紧凑型,快速的签名生成和验证,在ROM(随机预言机)和QROM(量子随机预言机)上安全,模块化(NTRU格和快速傅里叶采样都是在必要或特殊需求时可以替换的模块),消息恢复模式(有时有用),转换成IBE,极简验签。
局限性:复杂的实现设计,浮点运算(FALCON用53位浮点,对于某些受限设备会不太合适)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值