参考文献:
- [BDPV11] Bertoni G, Daemen J, Peeters M, et al. Duplexing the sponge: single-pass authenticated encryption and other applications[C]//Selected Areas in Cryptography: 18th International Workshop, SAC 2011, Toronto, ON, Canada, August 11-12, 2011, Revised Selected Papers 18. Springer Berlin Heidelberg, 2012: 320-337.
- 海绵结构:Hash as RO
文章目录
- Padding Rules
- Duplex Construction
- Applications
Padding Rules
在海绵结构中,变换 f f f 的宽度是 b = c + r b=c+r b=c+r,容量是 c c c,比率是 r r r
对于变长的输入 M M M,需要做一定的填充,使得它的长度是 r r r 的倍数。填充规则记为 p a d [ r ] ( ∣ M ∣ ) pad[r](|M|) pad[r](∣M∣),应当满足一些条件,使得海绵函数是安全的。
根据 [BDPV11],一个充分条件是:填充可逆、填充后长度大于零、最后一个区块不是零。
- simple reversible padding:定义为 p a d 1 0 ∗ [ r ] ( x ) , ∀ x ≥ 0 pad10^*[r](x), \forall x\ge0 pad10∗[r](x),∀x≥0,其中 0 ∗ 0^* 0∗ 的长度是 [ − x − 1 ] r ∈ [ 0 , r − 1 ] [-x-1]_r \in [0,r-1] [−x−1]r∈[0,r−1]
- multi-rate padding:定义为 p a d 1 0 ∗ 1 [ r ] ( x ) , ∀ x ≥ 0 pad10^*1[r](x), \forall x\ge0 pad10∗1[r](x),∀x≥0,其中 0 ∗ 0^* 0∗ 的长度是 [ − x − 2 ] r ∈ [ 0 , r − 2 ] [-x-2]_r \in [0,r-2] [−x−2]r∈[0,r−2]
注意到填充长度大于零,即使 ∣ M ∣ |M| ∣M∣ 恰好是 r r r 的倍数,也必须添加上一个新的区块。
Duplex Construction
[BDPV11] 提出了双工结构,它是带状态的,其输入流/输出流的速率相同。如图所示:
假设已经确定了某个 padding rule,定义 maximum duplex rate:
ρ m a x ( p a d , r ) = min { x ∣ x + p a d [ r ] ( x ) > r } − 1 \rho_{max}(pad,r) = \min\{x \mid x+pad[r](x) > r \}-1 ρmax(pad,r)=min{x∣x+pad[r](x)>r}−1
容易验证, ρ m a x ( p a d 1 0 ∗ , r ) = r − 1 \rho_{max}(pad10^*,r) = r-1 ρmax(pad10∗,r)=r−1 以及 ρ m a x ( p a d 1 0 ∗ 1 , r ) = r − 2 \rho_{max}(pad10^*1,r) = r-2 ρmax(pad10∗1,r)=r−2
双工结构的算法为:
如果 σ i = ∅ \sigma_i=\empty σi=∅,称之为 blank call(空的);如果 l i = 0 l_i=0 li=0,称之为 mute call(哑的)
双工结构的每一次调用,都等价于如下的海绵结构:
具体来说,海绵结构本身对 M M M 有个 pading,那么有
Z i = S p o n g e ( σ 0 ∥ p a d 0 ∥ ⋯ ∥ σ i − 1 ∥ p a d i − 1 ∥ σ i , l i ) Z_i = Sponge(\sigma_0\|pad_0\|\cdots\|\sigma_{i-1}\|pad_{i-1}\|\sigma_i,\,\, l_i) Zi=Sponge(σ0∥pad0∥⋯∥σi−1∥padi−1∥σi,li)
并且 σ 0 ∥ σ i → σ 0 ∥ p a d 0 ∥ ⋯ ∥ σ i − 1 ∥ p a d i − 1 ∥ σ i \sigma_0\|\sigma_i \to \sigma_0\|pad_0\|\cdots\|\sigma_{i-1}\|pad_{i-1}\|\sigma_i σ0∥σi→σ0∥pad0∥⋯∥σi−1∥padi−1∥σi 是单射,因此可以将双工结构的安全性归约为海绵结构的安全性。
Applications
[BDPV11] 给出了双工结构的一些应用:
- authenticated encryption,带身份验证的加密,提供隐私性和认证性
- key wrapping,密钥打包,提供隐私性和完整性
- reseedable PRG,重新播种的PRG,将新的种子和当前状态组合
- overwrite functions,当前输入覆盖了部分的状态,而非和当前的状态异或