本文中会出现的特殊符号和标记法以及其意义如下,本文涉及到大量的密码学算法。

为了简单起见,我们没有区分集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的规格与加密算法相关推荐

  1. 物联网安全解决方案_如何设计具有安全性的自制物联网解决方案

    物联网安全解决方案 You are a tinkerer. You want to build things, which you do at home in your garage. You dre ...

  2. SSL证书过期怎么办?只需几步就能轻松解决!

    要知道,SSL证书是有时效的,特别是2020年之前SSL证书,最高有效期也只有1年,因此,我们更加要注意一下SSL证书是否过期了.那么,SSL证书过期怎么办呢?下面就让摩杜云小杜来跟大家详细的介绍,希 ...

  3. 密码技术--对称加密算法及Go语言应用

    对称加密算法 DES Data Encryption Standard (数据加密标准)是1977年美国联邦信息处理标准(FIPS)中所采用的一种对称密码.DES一直以来被美国以及其他国家的政府和银行 ...

  4. 金融数据密码机、通用数据密码机、签名验证服务器规格

    这里写自定义目录标题 金融数据密码机EVSM 功能描述 接口规范 加密算法 性能参考 通用数据密码机GVSM 功能描述 接口规范 加密算法 性能参考 签名验证服务器SVSM 功能描述 接口规范 加密算 ...

  5. 软件工程-团队项目-班级网站软件需求规格说明书

    目录 一. 引言... 2 1.1 定位与目标... 2 1.2 对象... 2 1.3 软件需求分析理论... 2 1.4 软件需求分析目标... 3 二. 需求概述... 4 2.1 项目背景.. ...

  6. Schwaemm Esch:使用Sparkle排列家族的轻量级认证加密哈希

    SPARKLE `什么是Esch和Schwaemm?` 什么是Sparkle? 是什么保证了它们的效率 Small State Size Extremely Lightweight Permutati ...

  7. Oracle SPARC T7-2 服务器:硬件规格

    下面是Oracle T7-2服务器硬件规格,有需要可联系13410851886 处理器 数量 两个 SPARC M7 32 核 4.133GHz 处理器 中央处理器 每个处理器最多 256 个线程(每 ...

  8. 【软件需求规格说明书】苏科大校园app软件需求规格说明书

          掌上苏科       软件需求规格说明书           作者:戚春阳 时间:2018-3-20 目录 一. 引言 1 1.1 编写目的 1 1.2 项目背景 1 1.3 定义 1 1 ...

  9. aes加密算法简单说明

    AES加密有三种规格,如下所示 分组长度的意思是,每次只能加密指定长度,比如AES-128,则每次只能加密16个字节,分若干次加密. 下面按照128位密钥进行说明 下面说明下aes的加密过程,如下所示 ...

最新文章

  1. Linux日常运维--6
  2. 【转】Linux root修改密码失败
  3. python 神经网络中隐藏层的作用是什么?
  4. python程序的基本结构知识点总结_Python知识点总结
  5. mysql insert 失败_mysql insert语句出错
  6. 发布会不用开了?三星Galaxy Note 10 Plus完整规格泄露
  7. phalcon index.php,Phalcon环境搭建与项目开发
  8. 11.12 Ext JS 的Uncaught (in promise) Error: Cannot load package问题和解决分析
  9. callback 模式
  10. Windows 8 开发者预览版下载及简体中文语言包下载
  11. VTD学习记录——八大进程概括(一)
  12. STM32F103学习笔记(7)——ISP串口下载程序
  13. linux下安装zmap和zgrab
  14. python爬虫--看看虎牙女主播中谁最“顶”
  15. IE 打开速度慢的解决方法
  16. 爬取网易严选某种衣服商品数据,实现可视化,结论有点吓人
  17. MongoDB LBS经纬度查询操作
  18. FPS类游戏的逆向分析通用方法与C++逆向功能开发详解
  19. python实现base64解码_Python实现base64编码解码
  20. 如何设置 IntelliJ IDEA 主题和字体

热门文章

  1. ug区域轮廓铣没有重叠距离_多年大型模具加工经验总结,UG和PM数控加工各方面的优劣势...
  2. 两平面平行但不重合的条件是_____对于不重合的两个平面α与β,给定下列条件:①存在平面γ,使得α,β都平行于γ ②存在平面γ,使得α,β都垂直于γ; ③α内...
  3. 机载雷达导论-学习笔记
  4. 全球区块链第19周看点 | 币安被盗 富达入场
  5. 外包到上海兴业银行怎么样。
  6. 基于ROS2开发的点云栅格化
  7. 大数据下的帝都魔都的爱恨情仇
  8. Oracle ERP 11i中英对照词汇表
  9. 面试官:唠唠 Activity 的生命周期
  10. 虹科案例 | 虹科Dimetix激光测距传感器可实现无接触式监测采矿设备健康状况!