简介
Siphash是一类针对短消息设计的伪随机函数族,可用于消息认证,即作为MAC算法使用,它由Jean-Philippe Aumasson等人于2012年设计(Jean-Philippe Aumasson是SHA3竞赛中第三轮候选算法BLAKE的设计者)。
Siphash从整体结构上看属于ARX算法,设计时参考并结合了BLAKE、Skein、JH三个SHA3候选算法的特点。
密钥和MAC长度
密钥长度128比特;MAC长度64比特。
算法描述
通常具体的Siphash算法表示为:Siphash-c-d,其中整数参数c和d分别表示压缩轮数和终结轮数。压缩轮与终结轮的轮函数相同,称为SipRound。给定128位密钥k和(可能为空)字节字符串m,SipHash-c-d返回64位值SipHash-c-d(k, m)。
初始化阶段
4个64位的内部状态字v_1,v_2,v_3,v_4初始化为:
其中k_0和k_1是密钥k小端编码的64位字,初始状态的常数对应于大端编码的ASCII字符串“Somepseudorandomlygeneratedbytes”。
压缩轮
SipHash-c-d通过将b字节的字符串m解析为w=⌈(b+1)/8⌉>0个64位的小端编码字m_0,m_1,⋯,m_(w-1),来处理b字节字符串m。
注意:m_(w-1)包括m的一些比特、“0”字符串,以及一个用来表示b mod 256的字节。
1.压缩轮的SipRound运算之前,计算:
2. 进行c轮SipRound运算;
3. 然后计算:
终结轮
- 终结轮的SipRound运算之前,计算:
- 进行d轮SipRound运算。
SipHash-2-4算法步骤图示:
SipRound
SipRound是ARX结构。图示为:
即:
算法优点
- 安全。(SipHash-2-4达到密码学上强PRF的定义)
- 快速。
- 密钥简洁。(不需扩展)
- 简单。
- 自给自足。(不需调用其他基础算法,如AES)
- 小状态。
- 开销小。(认证消息仅比原始信息长8个字节)
安全性分析
截至目前,对Siphash算法的分析文章有:
- Dobraunig, C., Mendel, F., Schl¨affer, M.: Differential cryptanalysis of SipHash. In: Joux, A., Youssef, A. (eds.) SAC 2014. LNCS, vol. 8781, pp. 165–182. Springer, Cham (2014).
- Siddappa, S.K., Kaminsky, A.: SAT based attacks on SipHash. Rochester Institute of Technology (2014).
- 邹明. 自动化搜索ARX型密码差分-线性特征的模型及应用[D]. 山东大学, 2017.
- Xin W , Liu Y , Sun B , et al. Improved Cryptanalysis on SipHash. CANS 2019, LNCS 11829, pp. 61–79, 2019.