SPARKLE的规格与加密算法
本文中会出现的特殊符号和标记法以及其意义如下,本文涉及到大量的密码学算法。
为了简单起见,我们没有区分集F2a+bF_2^{a+b}F2a+b和F2a×F2bF_2^a\times F_2^bF2a×F2b,解读这些是相同的。唯一的区别是,将第二个集合的元素写成元组,而第一个集合的成员是位字符串,对应于元组中两个元素的串联。空的位串ξ\xiξ来标示。算法假设字节顺序是小端序的。我们用“+”表示对232取模的加法,用“⊕”表示两个相同大小的位串的异或。
我们的认证加密和散列方案使用排列族Sparkle,我们在下面详细说明。特别是,SPARKLE由排列
Esch
Sparkle256n,Sparkle384n和Sparkle512n块大小为256,384,和512位。参数n指步骤的数量和排列可以定义为任何n∈N排列构建使用以下主要组件。
ARX-box Alzette [BBCdS+20a] (简称A),即具有32位密钥的64位块密码
排列的高级结构分别在算法2.1、2.2和2.3中给出。它是一个经典的取代-置换网络(SPN)结构,除了在每个分支中发挥s盒作用的功能不同。更具体地说,置换族的每个成员在不同的、分支相关的常数ci下迭代Alzette的并行应用。这个小的64位分组密码在2.1.1节中指定。接下来是Cnb的应用,一个在所有分支上运行的线性排列;具体请参见章节2.1.2。我们把这种Alzette的并行应用,后面跟着线性层称为一个步骤。步骤的高级结构如图2.1所示。在每一步之前,一个稀疏阶跃相关常数与密码的状态(即与y0和y1)异或。
SPARKLE排列的自包含的C实现,参数化的分支的数量ns和步骤的数量ns,可以在附录A中找到。实现使用单个阵列的uint32_t类型的状态,包含2nb元素来表示状态。更准确地说,状态[0]= To,状态[1]= y0,状态[2]= T1,状态[3]= y1,state [2nb-2] = Tnb-1, and state [2nb-1] = ynb-1。每个32位字以小端顺序包含4个状态字节。更准确地说,如果(nE联网a_1) E F2, nE(256、384、512),是一个sparkle的输入实例,它映射到状态词通过国家[k] =
逆映射用于将状态字转换回bitstring
在接下来的内容中,我们依靠下面给出的定义来简化我们的描述。
Sparkle排列被定义为4、6和8个分支以及任意数量的步骤。与其他海绵算法(如SHA-3)不同,我们使用了两种不同的排列形式,它们的差别仅在于所使用的步骤数。更准确地说,我们使用了一个小的和一个大的Sparkle实例。表2.1给出了所有Sparkle实例的精简版和大版。
The ARX-box Alzette
Alzette,简写为A,是一个64位分组密码。它在算法2.4中指定,如图2.2所示。它可以理解为四个回合的迭代分组密码,每个回合的轮换量不同。在每一轮之后,32位的常量(即键)与左字异或。注意,由于Alzette有一个简单的类feistel结构,其逆的计算是直接的。
它的目的是为整个排列提供非线性,并确保在每个分支内快速扩散,而分支之间的扩散则由线性层保证(第2.1.2节)。它的圆形常数保证了每个分支的计算是相互独立的,从而打破了我们所选择的排列结构的对称性。由于轮数本身是不同的(因为不同的旋转量),我们不依赖轮数常数来提供Alzette轮数之间的独立性。关于更多细节,我们在3.3节中提供了在选择该组件时所做的设计选择的完整描述。
The Diffusion Layer
扩散层的结构很大程度上借鉴了SPARX-128 [DPU+16]中使用的结构。我们记作Cnt。它是一个Feistel轮,有一个线性Feistel函数Mh,排列,其中hb =n/2。Mhb的更正式的定义如下。
然后扩散层Cnt应用相应的Feistel函数Mh,并交换左分支和右分支。但是,在交换分支之前,我们将右边的分支向左旋转一个分支。这个过程如图2.1所示。在算法2.5,2.6和2.7中给出了描述我们排列中使用的三个扩散层的算法。我们选择这些线性层的基本原理见第3.4节。
hash的主要成员是EscH256。它们采用了著名的海绵结构,以SPARKLE排列实例化,并由速率r和容量c参数化。在吸收和挤压过程中都使用了薄版。大的是在这两个阶段之间。表2.2给出了相应海绵使用参数的概述。最大长度被选为r x 2c/2位,其中c是容量和摘要大小。表2.2:哈希实例及其安全级别(以位表示)与碰撞抵抗和(第二)原图像抵抗以及以字节表示的消息大小限制。对于XOFs的安全级别,我们假设t小于允许的数据限制。第一行是我们的主成员,即EscH256。
Specification of the Hash Functions
EsCH256和ESCH384中速率r固定为128。这意味着消息M必须被填充,使其位长度变为128的倍数。为此,我们使用简单的填充规则追加10*。它在算法2.8中被形式化,描述了一个长度严格小于r的块如何变成一个长度为r的块,
通过海绵中不同的排列大小,得到不同的消化大小和相应的安全级别,EsCH256为SPARKLE3847和SPARKLE38411, EscH384为SPARKLE512g和SPARKLE51212。算法在算法2.9和2.10中正式规定,分别如图2.3和图2.4所示。请注意,128位的消息块是间接注入的,也就是说,它们首先被填充为0,然后通过EsCH256中的M3进行转换。 EscH384中的M4,生成的图像在该状态最左边的分支上是xor的。我们强调,这个调整仍然可以用常规的海绵模式来表达。与通过Mhb注入消息不同,可以使用一种等效表示,在这种表示中,消息像往常一样注入,排列是通过将Mhs置于前面并附加来定义的一次to SPARKLEnь为了生成摘要,我们使用简单的截断函数trunc,它返回内部状态最左边的t位。长度为r的倍数的消息不进行填充。为了防止微小的碰撞,我们借用了[Hir16]和xor Constm中引入的技术到内部部分,其中Constm根据消息是否被填充而不同。
Schwaemm
我们提出四个实例验证加密的相关数据,例如SCHWAEMM128128, schwaemm256 - 128, schwaemm192 - 192和schwaemm256 - 256,对于一个给定的密钥K和nonce N允许过程相关数据和任意长度的信息和输出密文C(C和M的模相等),还有标签T。一个身份验证标记给 (N, K,C, T),如果标记T有效,解密过程返回C的解密M,否则返回错误符号L.我们家族的主要成员是SCHWAEMM256-128。所有实例都使用(略微不同于)[CDNY18]中提供的BEETLE操作模式,该模式基于著名的SPONGEWRAP AEAD模式[BDPA11]。实例之间的区别是底层的SPARKLE排列(因此速率和容量是不同的)和身份验证标记的大小。作为命名约定,我们使用了SCHWAEMMr-c,其中r表示速率的大小,c表示以位为单位的容量大小。与散列类似,我们使用大版本的SPARKLE进行初始化、分离相关数据和秘密消息的处理和结束,而瘦版本的SPARKLE则用于更新中间状态。表2.3给出了SCHWAEMM实例参数的概述。除了高安全性的SCHWAEMM256-256是r x 2128位之外,数据限制对应于264个r位块,以2为最接近的幂。
涉及机密性和完整性,以及要处理的数据(以字节表示)的限制。第一行是我们的主要成员,即Schwaemm256-128。
甲虫模式和双工海绵模式的主要区别是使用组合反馈p来区分密文块和状态的外部部分。这个组合反馈是通过将函数FeistelSwap应用到状态的外部部分来创建的,状态的外部部分计算为
FeistelSwap(S)=S2∣∣(S2⊕S1)FeistelSwap(S) = S2||(S2⊕S1)FeistelSwap(S)=S2∣∣(S2⊕S1)
其中S∈F2r,S1∣∣S2=S,∣S1∣=∣S2∣=r2S∈F_2^r, S_1||S_2=S, |S_1|=|S_2|=\frac{r}{2}S∈F2r,S1∣∣S2=S,∣S1∣=∣S2∣=2r。反馈函数ρ(S,D)=(ρ1(S,D),ρ2(S,D))ρ(S,D)=(ρ_1(S,D),ρ_2(S,D))ρ(S,D)=(ρ1(S,D),ρ2(S,D)),也被定义为(F2r×F2r)→(F2r×F2r)(F_2^r\times F_2^r)→(F_2^r \times F_2^r)(F2r×F2r)→(F2r×F2r)
其中
ρ1:(S,D)→FeistelSwap(S)⊕Dρ_1:(S,D)→FeistelSwap(S)⊕Dρ1:(S,D)→FeistelSwap(S)⊕D
ρ2:(S,D)→S⊕Dρ_2:(S,D)→S⊕Dρ2:(S,D)→S⊕D
对于解密,我们必须使用反反馈函数ρ′:(F2r×F2r)→(F2r×F2r)ρ':(F_2^r\times F_2^r)→(F_2^r \times F_2^r)ρ′:(F2r×F2r)→(F2r×F2r)
ρ1′:(S,D)→FeistelSwap(S)⊕S⊕Dρ_1':(S,D)→FeistelSwap(S)⊕S⊕Dρ1′:(S,D)→FeistelSwap(S)⊕S⊕D
ρ2′:(S,D)→S⊕Dρ_2':(S,D)→S⊕Dρ2′:(S,D)→S⊕D
每个应用程序后p和域分离常数的增加,也就是说,每次调用前SPARKLE排列除了一个用于初始化,我们预先考虑速度层xor的价值r (SR),SR表示相对应的内部状态的内在部分。对于r = c的SCHWAEMM实例,我们定义we,r: FS→F为恒等式(也就是说,我们只异或内部部分到外部部分)。对于SCHWAEMM256-128,我们定义W128,256(x,y)=(x,y,x,y),x,y∈F264W_{128,256}(x,y)=(x,y,x,y), x,y∈F_2^{64}W128,256(x,y)=(x,y,x,y),x,y∈F264。请注意,这个调整仍然可以在甲虫框架中描述,因为预先的速率白化可以被认为是底层排列定义的一部分。图2.5描述了我们的主要成员SCHWAEMM256-128的模式。算法2.13-2.20给出了这四个族成员的加密和解密过程的形式化规范。
下面是算法
SPARKLE的规格与加密算法相关推荐
- 物联网安全解决方案_如何设计具有安全性的自制物联网解决方案
物联网安全解决方案 You are a tinkerer. You want to build things, which you do at home in your garage. You dre ...
- SSL证书过期怎么办?只需几步就能轻松解决!
要知道,SSL证书是有时效的,特别是2020年之前SSL证书,最高有效期也只有1年,因此,我们更加要注意一下SSL证书是否过期了.那么,SSL证书过期怎么办呢?下面就让摩杜云小杜来跟大家详细的介绍,希 ...
- 密码技术--对称加密算法及Go语言应用
对称加密算法 DES Data Encryption Standard (数据加密标准)是1977年美国联邦信息处理标准(FIPS)中所采用的一种对称密码.DES一直以来被美国以及其他国家的政府和银行 ...
- 金融数据密码机、通用数据密码机、签名验证服务器规格
这里写自定义目录标题 金融数据密码机EVSM 功能描述 接口规范 加密算法 性能参考 通用数据密码机GVSM 功能描述 接口规范 加密算法 性能参考 签名验证服务器SVSM 功能描述 接口规范 加密算 ...
- 软件工程-团队项目-班级网站软件需求规格说明书
目录 一. 引言... 2 1.1 定位与目标... 2 1.2 对象... 2 1.3 软件需求分析理论... 2 1.4 软件需求分析目标... 3 二. 需求概述... 4 2.1 项目背景.. ...
- Schwaemm Esch:使用Sparkle排列家族的轻量级认证加密哈希
SPARKLE `什么是Esch和Schwaemm?` 什么是Sparkle? 是什么保证了它们的效率 Small State Size Extremely Lightweight Permutati ...
- Oracle SPARC T7-2 服务器:硬件规格
下面是Oracle T7-2服务器硬件规格,有需要可联系13410851886 处理器 数量 两个 SPARC M7 32 核 4.133GHz 处理器 中央处理器 每个处理器最多 256 个线程(每 ...
- 【软件需求规格说明书】苏科大校园app软件需求规格说明书
掌上苏科 软件需求规格说明书 作者:戚春阳 时间:2018-3-20 目录 一. 引言 1 1.1 编写目的 1 1.2 项目背景 1 1.3 定义 1 1 ...
- aes加密算法简单说明
AES加密有三种规格,如下所示 分组长度的意思是,每次只能加密指定长度,比如AES-128,则每次只能加密16个字节,分若干次加密. 下面按照128位密钥进行说明 下面说明下aes的加密过程,如下所示 ...
最新文章
- Linux日常运维--6
- 【转】Linux root修改密码失败
- python 神经网络中隐藏层的作用是什么?
- python程序的基本结构知识点总结_Python知识点总结
- mysql insert 失败_mysql insert语句出错
- 发布会不用开了?三星Galaxy Note 10 Plus完整规格泄露
- phalcon index.php,Phalcon环境搭建与项目开发
- 11.12 Ext JS 的Uncaught (in promise) Error: Cannot load package问题和解决分析
- callback 模式
- Windows 8 开发者预览版下载及简体中文语言包下载
- VTD学习记录——八大进程概括(一)
- STM32F103学习笔记(7)——ISP串口下载程序
- linux下安装zmap和zgrab
- python爬虫--看看虎牙女主播中谁最“顶”
- IE 打开速度慢的解决方法
- 爬取网易严选某种衣服商品数据,实现可视化,结论有点吓人
- MongoDB LBS经纬度查询操作
- FPS类游戏的逆向分析通用方法与C++逆向功能开发详解
- python实现base64解码_Python实现base64编码解码
- 如何设置 IntelliJ IDEA 主题和字体
热门文章
- ug区域轮廓铣没有重叠距离_多年大型模具加工经验总结,UG和PM数控加工各方面的优劣势...
- 两平面平行但不重合的条件是_____对于不重合的两个平面α与β,给定下列条件:①存在平面γ,使得α,β都平行于γ ②存在平面γ,使得α,β都垂直于γ; ③α内...
- 机载雷达导论-学习笔记
- 全球区块链第19周看点 | 币安被盗 富达入场
- 外包到上海兴业银行怎么样。
- 基于ROS2开发的点云栅格化
- 大数据下的帝都魔都的爱恨情仇
- Oracle ERP 11i中英对照词汇表
- 面试官:唠唠 Activity 的生命周期
- 虹科案例 | 虹科Dimetix激光测距传感器可实现无接触式监测采矿设备健康状况!