密码学海绵函数:原理、安全分析与应用
1. 海绵函数的比特率与独立性
在使用海绵函数时,我们可以自由选择比特率 ( r ),甚至可以为不同的应用定义多个比特率。设 ( r_{max} ) 表示函数 ( h ) 支持的最大比特率,而 ( r )(其中 ( 0 < r \leq r_{max} ))表示较小的比特率。
当使用 ( 10^ 1 ) 填充时,所有 ( 0 < r \leq r_{max} ) 的函数 ( Sponge[h, pad10^ 1, r] ) 是相互独立的,因为它们具有唯一的后缀。使用 ( pad10^*1 ) 填充时,填充消息的最后一位是 ( 1 ),且该位位于位置 ( r )。对于由 ( \ell ) 个块组成的消息 ( m ),填充后吸收阶段最后一次 ( h ) 评估的输入为:
( (s_{\ell} \oplus m_{\ell}) \parallel \hat{s} {\ell} = s {\ell} \oplus (m_{\ell} \parallel 0^c) = s_{\ell} \oplus (m_{\ell}[1..(r - 1)] \parallel 1 \parallel 0^{width - r}) )
其中,( width - r ) 恰好是海绵的容量,它取决于固定宽度下的比特率。
对于两个不同的比特率 ( 0 < r < r’ \leq r_{max} ) 以及任何两个填充后分别由 ( \ell ) 和 ( \ell’ ) 个块组成的消息 ( m ) 和 ( m’ ),填充后有:
( m_{\ell}[1..(r - 1)] \para
超级会员免费看
订阅专栏 解锁全文
2701

被折叠的 条评论
为什么被折叠?



