请注意,本文编写于 544 天前,最后修改于 543 天前,其中某些信息可能已经过时。
SipHash算法是一种针对短消息设计的伪随机函数族,可用于消息认证和作为MAC算法使用。它由Jean-Philippe Aumasson等人于2012年设计,结合了BLAKE、Skein和JH等算法的特点[1]。
算法描述
通常具体的SipHash算法表示为SipHash-c-d,其中c和d分别表示压缩轮数和终结轮数。SipHash算法的步骤如下:
初始化阶段
- 初始化四个64位的内部状态字v0, v1, v2, v3,其中v0=k0⊕736f6d6570736575,v1=k1⊕646f72616e646f6d,v2=k0⊕6c7967656e657261,v3=k1⊕7465646279746573。这里的k0和k1是密钥k的小端编码的64位字,初始状态的常数对应于大端编码的ASCII字符串“Somepseudorandomlygeneratedbytes”。
压缩轮
- 将输入的消息m解析为64位的小端编码字m0, m1, ..., mw-1,其中w=⌈(b+1)/8⌉>0,b是消息m的字节数。
- 在压缩轮的SipRound运算之前,计算v3⊕=mi。
- 进行c轮SipRound运算。
- 然后计算v0⊕=mi。
终结轮
- 在终结轮的SipRound运算之前,计算v2⊕=ff。
- 进行d轮SipRound运算。
算法优点
SipHash算法具有以下优点:
- 安全性高,达到密码学上强PRF的定义。
- 快速。
- 密钥简洁,不需要扩展。
- 简单。
- 自给自足,不需要调用其他基础算法。
- 小状态。
- 开销小,认证消息仅比原始信息长8个字节[1]。
安全性分析
对SipHash算法的安全性进行了一些分析,包括差分密码分析、SAT攻击等。这些分析有助于验证SipHash算法的安全性。
Learn more:
- Siphash算法-CSDN博客
- SipHash 算法流程-CSDN博客
- 简述SipHash算法 - 夏冰加密软件技术博客
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA
许可协议。转载请注明出处!