SHA-3算法学习笔记——day1_算法简介。

由于种种原因,对kyber算法的学习需要终止一阶段呜呜呜,现阶段学习SHA-3杂凑算法。SHA-3算法的优化等问题后续不知道还要不要学习,先学该算法的基本结构吧。

SHA-3算法是一种杂凑算法,其涉及到的数学专业知识不多,结构也相对简单,轮运算的5个变换是算法的核心也是难点。话不多说,首先了解算法的大致结构,而后再分解学习。

  • 算法概述

SHA-3算法学习笔记——day1_算法简介。_第1张图片

(一)符号定义

r是消息分组长度,即将输入分成若干长度为r的数据块,r也被称为外部数据位宽。

c表示冗余量,也称为内部数据宽度、容量。

根据SHA-3标准,定义b=r+c为中间状态位宽,即轮函数的输入输出位宽。在SHA-3算法中,b的长度固定为1600bit。

f为轮函数运算,也是该算法中最复杂、最主要的运算,后续拆分来学习。

(二)输出模式

SHA-3算法有4种输出摘要长度:244、256、384、512,每一种输出长度会对应不同的rc,其定义如下:

摘要长度

b

r

c

244

1600

1152

448

256

1600

1088

512

384

1600

832

768

512

1600

576

1024

分组长度是在选定摘要长度后确定的。

  • 吸收流程(Absorb)
  • 填充

算法输入进入轮运算前需要填充至r的整数倍。以输出摘要长度为256为例,算法输入M,填充时先在M结尾添“1”,而后添若干“0”,使填充“0”后的数据长度模256=(256-1),而后再次添加“1”即可完成填充。

  • 中间数据处理

在填充完成后,会进行如下结构的迭代。

SHA-3算法学习笔记——day1_算法简介。_第2张图片

轮函数f稍后学习。对于次轮函数迭代,输入输出均分为两部分,即低r比特部分和长度c部分,r部分会与输入的明文分组P进行异或与上一轮输出的c部分拼接作为本次迭代的输入。

轮函数使用次数与输入数据量有关,轮函数f包含24轮迭代运算,每轮迭代运算包括5步迭代,一般分别起名为θ、ρ、π、χ 和 ι。

      

今天先到此为止吧,明天继续~

你可能感兴趣的:(学习)