LPN-based Attacks in the White-box Setting论文阅读


是对论文LPN-based attack in the white-box setting的阅读即理解,建议配合论文原文阅读。

基础知识

需要提前掌握对白盒密码的一些基础知识。例如trace是什么,窗口,选择函数,猜测密钥等等……

LPN问题

LPN(Learing Parties with Noise)
解一个带有噪声的在 F 2 F_2 F2上的线性方程组:
A x ⃗ + e ⃗ = [ a 1 , 1 ⋯ a 1 , k ⋮ ⋮ ⋮ a T , 1 ⋯ a T , k ] [ x 1 ⋮ x k ] + [ e 1 ⋮ e T ] = [ b 1 ⋮ b T ] \left.A\vec{x}+\vec{e}=\left[\begin{array}{ccc}a_{1,1}&\cdots&a_{1,k}\\\vdots&\vdots&\vdots\\a_{T,1}&\cdots&a_{T,k}\end{array}\right.\right]\begin{bmatrix}x_1\\\vdots\\x_k\end{bmatrix}+\begin{bmatrix}e_1\\\vdots\\e_T\end{bmatrix}=\begin{bmatrix}b_1\\\vdots\\b_T\end{bmatrix} Ax +e = a1,1aT,1a1,kaT,k x1xk + e1eT = b1bT
噪声e以一个恒定的噪声率 τ \tau τ等于1。

SEL掩码方案

定义SEL掩码方案:
P ℓ , d = x 1 + ⋯ + x ℓ + x ℓ + 1 x ℓ + 2 ⋯ x ℓ + d ∈ F 2 [ x 1 , ⋯   , x ℓ + d ] P_{\ell,d}=x_1+\cdots+x_\ell+x_{\ell+1}x_{\ell+2}\cdots x_{\ell+d}\in\mathbb{F}_2[x_1,\cdots,x_{\ell+d}] P,d=x1++x+x+1x+2x+dF2[x1,,x+d]
l l l是掩码方案的线性部分, d d d是掩码方案的非线性部分。
举个例子:
P 2 , 3 ( x 1 , x 2 , x 3 , x 4 , x 5 ) = x 1 ⊕ x 2 ⊕ x 3 x 4 x 5 P_{2,3}(x_{1},x_{2},x_{3},x_{4},x_{5})=x_{1}\oplus x_{2}\oplus x_{3}x_{4}x_{5} P2,3(x1,x2,x3,x4,x5)=x1x2x3x4x5
没有特殊说明的话,下文的“掩码方案”都是指不同 l , d l,d l,d的SEL掩码方案

防伪洗牌(dummy shuffling)

在[BU21]中提出的白盒环境下的防护手段之一。可以简单理解为:设置t个dummy slot和一个slot,dummy slot中运行随机函数,返回随机值,slot中运行真实的函数。

几种攻击方案

DCA(Differential Computation Analysis),针对白盒密码实现的一种较为高效的攻击手段。
HODCA(High-Order Differential Computation Analysis),针对线性掩码的攻击手段,遍历窗口内结点的异或(XOR)组合,把DCA攻击提升到高阶。
LDA(Linear Decoding Analysis),通过解线性方程组(其实就是窗口内结点的线性组合),可以把敏感变量解出来。
HDDA(Higher Degree Decoding Analysis),通过遍历窗口内结点的与(AND)组合,可以提高LDA攻击的次数。

把白盒问题抽象成LPN问题

掩码方案下

定义噪声率(noise rate) τ = P ( ⨁ m ∈ M m ( x ) = 1 ) \tau=\mathbb{P}(\bigoplus_{m\in\mathcal{M}}m(x)=1) τ=P(mMm(x)=1) M \mathcal{M} M是掩码方案中次数大于1的项的集合。
举个例子就比较好理解:
如果一个掩码方案是这样的:
P ( x 1 , x 2 , x 3 , x 4 , x 5 , x 6 ) = x 1 ⊕ x 2 x 3 ⊕ x 4 x 5 x 6 P(x_1,x_2,x_3,x_4,x_5,x_6)=x_1\oplus x_2x_3\oplus x_4x_5x_6 P(x1,x2,x3,x4,x5,x6)=x1x2x3x4x5x6
那么这个掩码方案的噪声率为:
τ = P ( x 2 x 3 ⊕ x 4 x 5 x 6 = 1 ) = P ( x 2 x 3 = 1 ) P ( x 4 x 5 x 6 = 0 ) + P ( x 2 x 3 = 0 ) P ( x 4 x 5 x 6 = 1 ) = 5 / 16 \begin{aligned}\tau & =\mathbb{P}(x_2x_3\oplus x_4x_5x_6=1)\\ & =\mathbb{P}(x_2x_3=1)\mathbb{P}(x_4x_5x_6=0)+\mathbb{P}(x_2x_3=0)\mathbb{P}(x_4x_5x_6=1)=5/16\end{aligned} τ=P(x2x3x4x5x6=1)=P(x2x3=1)P(x4x5x6=0)+P(x2x3=0)P(x4x5x6=1)=5/16

定义了噪声率之后,就可以按照相关的算法来解LPN问题了。

dummy shuffling下

在[BU21]中提出的Dummy Shuffling,假设使用t个dummy slot,和一个true slot,即一共t+1个槽(slot)。在随机的状况下,噪声率为 τ = t t + 1 ⋅ 1 2 \tau=\frac{t}{t+1}\cdot\frac{1}{2} τ=t+1t21;在论文中提到的一种中间函数,可以让噪声率下降到 1 4 \frac{1}{4} 41,也就是 τ = t t + 1 ⋅ 1 4 \tau=\frac{t}{t+1}\cdot\frac{1}{4} τ=t+1t41.
所以在dummy shuffling的情况下,噪声率有一个区间范围,即 [ t t + 1 ⋅ 1 4 , t t + 1 ⋅ 1 2 ] \left[\frac{t}{t+1}\cdot\frac{1}{4},\frac{t}{t+1}\cdot\frac{1}{2}\right] [t+1t41,t+1t21]
同样,定义了噪声率之后,就可以按照相关的算法来解LPN问题了。

需要做出的改进以及优化

确定使用池化高斯算法了,但是需要对该算法进行一定的优化,以适配白盒环境。
具体的池化高斯算法可以参考论文内容

其中τ表示噪声率; W \mathcal{W} W代表LPN问题的维度,实际应用中也就是窗口的大小; α , β \alpha,\beta α,β分别是第一类错误和第二类错误。

避免异或节点(XOR nodes)

在采集的trace中,如果存在异或的节点,(比如在窗口中存在n1,n2,n3三个节点的值,并存在n1=n2+n3的关系)说明这些节点不是我们需要的,故需要把这些节点排除掉,就可以用较小的时间成本来构建可逆矩阵 M s M_s Ms

添加停止条件

在实际编程过程中,需要添加停止条件,即添加找到可逆矩阵 M s M_s Ms的尝试次数 A \mathcal{A} A
设置找到可逆矩阵 M s M_s Ms的概率为 p n f m p_{nfm} pnfm,那么 p n f m = 1 − ( 1 − ( 1 − τ ) W ) A p_{\mathrm{nfm}}=1-(1-(1-\tau)^{\mathcal W})^{\mathcal A} pnfm=1(1(1τ)W)A,由此可以解得 A = ln ⁡ ( 1 − p n f m ) ln ⁡ ( 1 − ( 1 − τ ) W ) ≈ − ln ⁡ ( 1 − p n f m ) ( 1 − τ ) W \mathcal{A}=\frac{\ln(1-p_{\mathrm{nfm}})}{\ln(1-(1-\tau)^{\mathcal{W}})}\approx\frac{-\ln(1-p_{\mathrm{nfm}})}{(1-\tau)^{\mathcal{W}}} A=ln(1(1τ)W)ln(1pnfm)(1τ)Wln(1pnfm)
在论文提供的源码中,设置 p n f m = 0.999 p_{nfm}=0.999 pnfm=0.999,由此来计算 A \mathcal{A} A

处理假阳性问题(false-positive)

算法中的 β \beta β是接受错误方案的概率,也就是第二类错误。但是在白盒环境下的应用,需要遍历密钥空间 K \mathcal{K} K,所以相应的 β \beta β也需要做出相应的调整。
β = 1 K ∗ β \beta=\frac{1}{\mathcal{K}}*\beta β=K1β
用调整后的第二类错误概率带入算法进行运算。

所需的trace数量

PooledGauss算法中,需要W个方程进行运算,m个方程对运算结果进行验证。
所以在实际应用中需要的trace数量 T = m + W T=m+\mathcal{W} T=m+W。用 W \mathcal{W} W个trace来构建可逆矩阵并求解,用剩下的 T − W T-\mathcal{W} TW个trace来对解进行验证。

优化算法

抽象来说,就是把向量的计算转化成矩阵的运算。矩阵运算可以用优化算法来做,能够使用时间复杂度较小的算法来计算。
具体来说:
在这里插入图片描述拓展到整个密钥空间 K \mathcal{K} K上的话,就是:

在这里插入图片描述整理一下变成矩阵的形式,把结果赋给矩阵E(这里的E不是单位矩阵)。
在这里插入图片描述
利用这个优化,就可以把矩阵计算的时间复杂度从O(n3)降低到O(n2.7)左右。

应用池化高斯算法(PooledGauss)解决白盒的LPN问题

结合PooledGauss算法和白盒密码的概况,提出了一种新的攻击手段WBLPN,具体算法如下:
在这里插入图片描述由此可见,WBLPN对PooledGauss算法进行了一定的改进,以适配白盒环境。该算法的时间复杂度计算较为简单,不做说明。

与其他攻击方式的对比

与HDDA的对比

WBLPN依赖于噪声率的大小,而噪声率的大小依赖于掩码方案的高次项,即非线性项;HDDA需要遍历窗口内节点的高次组合的AND操作,以得到高次项掩码相与的值;故WBLPN和HDDA都依赖于掩码方案的非线性项,可以直接做对比。
在这里插入图片描述

τ = 1 2 \tau=\frac{1}{2} τ=21的时候,LPN问题几乎不能解,所以时间复杂度较高; τ = 1 4 \tau=\frac{1}{4} τ=41的时候,WBLPN的效率就比HDDA要好,但是由于噪声率较高,其实效果也不好。从 τ = 1 8 \tau=\frac{1}{8} τ=81开始,WBLPN就表现得比较好。

与HODCA的对比

但是HODCA依赖于掩码方案的线性部分,WBLPN依赖于非线性部分,所以不能按照同样的掩码次数或者阶数来作对比。所以论文直接把HODCA不同阶数的花费时间和WBLPN中掩码不同次数放在一张图里进行对比了。
在这里插入图片描述

若试图找到一种掩码方案使得两种攻击方案都不太好的话,从图中可以较为直观的看到:阶数和次数都为3的掩码方案,时间成本都不是特别好。即 P 3 , 3 P_{3,3} P3,3的掩码方案。

其他内容

抵抗WBLPN

上面提到的dummy shuffling方案,可以抽象为噪声率在 [ t t + 1 ⋅ 1 4 , t t + 1 ⋅ 1 2 ] \left[\frac{t}{t+1}\cdot\frac{1}{4},\frac{t}{t+1}\cdot\frac{1}{2}\right] [t+1t41,t+1t21]。但t趋向于无穷大时,噪声率在 [ 1 4 , 1 2 ] \left[\frac{1}{4},\frac{1}{2}\right] [41,21],通过实验可知,WBLPN在这个噪声率下的效率极低。故dummy shuffling是抵抗WBLPN的一周较为有效的手段,只需要增加dummy slot的个数即可。

想要抵抗WBLPN,主要思想就是提高掩码方案的噪声率(dummy shuffling也是这种思想)。所以有两种较为通用的方式提高噪声率:
先线性再非线性
先非线性再线性
这两种方式都可以通过提高掩码方案的噪声率来达到抵抗WBLPN的效果。

高阶WBLPN(HO-WBLPN)

然后针对有不同次数的掩码方案,提出了高阶的攻击方案。从WBLPN派生出HO-WBLPN的过程,跟从LDA派生出HDDA的效果一样,需要遍历窗口内的所有列的组合,把这些组合做AND操作,以在窗口中产生高次项的值。具体派生过程不再叙述。
重新定义了 O \mathcal{O} O阶的WBLPN的噪声率:
τ O = P x ∈ F 2 n ( ⨁ m ∈ M O m ( x ) = 1 ) \tau_{\mathcal{O}}=\mathbb{P}_{x\in\mathbb{F}_{2}^{n}}(\bigoplus_{m\in\mathcal{M}_{\mathcal{O}}}m(x)=1) τO=PxF2n(mMOm(x)=1)。类似的, M O \mathcal{M}_{\mathcal{O}} MO是高于 O \mathcal{O} O阶的掩码方案中的项数的集合,这些项异或起来等于1的概率,就是 O \mathcal{O} O阶WBLPN的噪声率。
具体算法如下:
在这里插入图片描述把遍历其实用了一个trade-off,扩大窗口来降低时间复杂度。
HO-WBLPN的时间复杂度也不细说,仅仅是把时间复杂度中的O( W \mathcal{W} W)换成O( W O \mathcal{W}^{\mathcal{O}} WO)即可。

总结

本篇论文把白盒密码抽象成了LPN问题,进而套用解LPN问题的方法,提出了一种新的攻击白盒密码实现的手段,在某些情况下比DCA和LDA的高阶形式效果要好。

参考论文

[SEL21]https://tches.iacr.org/index.php/TCHES/article/view/8788
[BU21]https://www.iacr.org/cryptodb/data/paper.php?pubkey=30823

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值