Siphash算法

简介

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初始化为:
Siphash算法_第1张图片
其中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. 然后计算:
在这里插入图片描述

终结轮

  1. 终结轮的SipRound运算之前,计算:
    在这里插入图片描述
  2. 进行d轮SipRound运算。

SipHash-2-4算法步骤图示:
Siphash算法_第2张图片

SipRound

SipRound是ARX结构。图示为:
Siphash算法_第3张图片
即:
Siphash算法_第4张图片

算法优点

  1. 安全。(SipHash-2-4达到密码学上强PRF的定义)
  2. 快速。
  3. 密钥简洁。(不需扩展)
  4. 简单。
  5. 自给自足。(不需调用其他基础算法,如AES)
  6. 小状态。
  7. 开销小。(认证消息仅比原始信息长8个字节)

安全性分析

截至目前,对Siphash算法的分析文章有:

  1. 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).
  2. Siddappa, S.K., Kaminsky, A.: SAT based attacks on SipHash. Rochester Institute of Technology (2014).
  3. 邹明. 自动化搜索ARX型密码差分-线性特征的模型及应用[D]. 山东大学, 2017.
  4. Xin W , Liu Y , Sun B , et al. Improved Cryptanalysis on SipHash. CANS 2019, LNCS 11829, pp. 61–79, 2019.

你可能感兴趣的:(密码,安全)