Schwaemm Esch:使用Sparkle排列家族的轻量级认证加密哈希
SPARKLE
- `什么是Esch和Schwaemm?`
- 什么是Sparkle?
- 是什么保证了它们的效率
- Small State Size
- Extremely Lightweight Permutation
- Consistency Across Security Levels
- Even Higher Speed Through Parallelism
- 是什么保证了它们的安全性
- The Security of Sponges
- The Literature on Block Cipher Design
- Components Tailored for Their Use Cases
- 具有更高安全性的特征
随着物联网(IoT)的出现,无数设备为了交换信息而相互连接。这些信息必须得到保护。对称密码术可以确保这些设备共享的数据仍然是机密的,它经过了正确的身份验证,并且没有被篡改。由于这些对象几乎没有计算能力——对于信息安全而言更是如此——确保这些属性的算法成本必须尽可能低。为了满足这一需求,NIST要求设计经过验证的密码和哈希函数,以尽可能小的实现成本提供足够的安全级别。
在本文档中,将说明使用排列的Sparkle家族构建的轻量化哈希算法。经过身份验证的密码Schwaemm提供明文的机密性,以及明文和其他公共相关数据的完整性和身份验证。哈希函数Esch是具有单方向性和抗碰撞的。这个算法的目标是使用尽可能少的CPU周期来执行任务,同时保持强大的安全保证和较小的实现规模。这种速度将允许设备使用比当前所需的CPU周期更少的CPU周期来确保其数据的保护。为了给出这种增益的一个非常具体的应用,密码学对电池供电的微控制器的能量需求将会降低。
总之,目标是为所有平台提供快速的软件加密。
什么是Esch和Schwaemm?
这两种加密算法都被设计为在软件中是轻量级的(即,具有小的代码大小和低内存占用),并且仍然在广泛的8,16和32位微控制器上达到高性能。
这种方案是建立在充分理解的原则之上的,例如,NIST散列标准SHA-3也采用了这种密码学排列。我们的底层排列,Sparkle,遵循像SHA-2和Chacha/Salsa的ARX结构,但与大多数ARX结构不同,我们提供了关于微分和线性密码分析的安全保证,这要归功于长径策略(LTS)。它所施加的特殊结构也便于研究其他攻击(积分、不可能微分等),从而讨论我们的算法对它们的安全性。LTS是一种策略,首次用于设计轻量级分组密码Sparx,在ASIACRYPT 2016年[DPU+16]上提出。
Esch的主实例(即,提交哈希功能的主要成员)是Esch256,它产生一个256位摘要,相对于上面提到的安全目标,提供了一个128位的安全级别。它基于排列家族Sparkle384。我们还提供了基于排列家族Sparkle512的成员Esch384,它产生384位摘要,并提供192位的安全级别。这两个哈希函数都作为两个可扩展输出函数(XOFs)的基础:XOEsch256和XOEsch384。
Esch: Efficient, Sponge-based, and Cheap Hashing.
Schwaemm: 使用关联数据(AEAD)进行身份验证的加密方案接受一个固定长度的密钥和当前值,以及任意大小的消息和关联数据。加密过程输出消息的密文以及固定大小的身份验证标记。解密过程将密钥、关联数据、密文和标记作为输入,如果标记有效,则输出解密后的消息,否则将出现符号错误。AEAD方案应符合保密性和完整性的安全理念。用户不能重用nonce来处理固定键实例中的消息。
Sponge-based Cipher for Hardened but Weightless Authenticated Encryption on Many Microcontrollers
什么是Sparkle?
它是一个基于ARX设计的密码排列家族。它的名字来自于分组密码Sparx [DPU+16], Sparkle与此密切相关。Sparkle基本上是一个Sparx实例,具有更宽的块大小和固定键,因此得名:
我们提供了三个版本对应三个块大小,分别是Sparkle256、Sparkle384和Sparkle512。由于我们的设计方法不是封闭的,使用的步骤的数量随用例而变化
Schwaemm和Esch都采用了著名的海绵结构。底层的Sparkle系列排列是从零开始设计的,但基于众所周知和广泛接受的原则,以实现高安全性和高效率。下面两个小节将概述Schwaemm和Esch的主要特性。
是什么保证了它们的效率
在密码软件的上下文中,效率这个术语通常与快速执行时间、低运行时内存(即RAM)需求和小代码大小有关。然而,这三个指标是互斥的,因为提高性能的标准软件优化技术,例如循环展开或使用查找表来加速某些操作(例如,AES中的SubBytes),是以增加代码大小或增加RAM占用或两者同时增加为代价的。另一方面,当一个加密硬件实现实现小的硅面积和(取决于目标应用程序的要求)低功耗、低延迟或高吞吐量时,它被称为高效的,从而可以在牺牲其他指标的情况下对其中一个指标进行优化。
Small State Size
Schwaemm和Esch的特点都是状态大小相对较小,本文档中描述的最轻量级的Schwaemm实例只有256位(达到120位的安全级别),而最轻量级的Esch实例的状态大小为384位。由于几个原因,拥有一个小的状态对于轻量级密码系统来说是一个重要的资产。首先,状态的大小在很大程度上决定了对称算法的RAM消耗(在软件实现的情况下)和硅面积(在硬件实现时)。特别是软件的实现与小8和16位微控制器寄存器空间(例如,Atmel AVR或TI MSP430)可以从一个小州利润明显大小,因为它允许国家的大部分位于寄存器,这样可以减少加载和存储操作的数量。在32位微控制器上(例如,ARM Cortex-M系列),甚至可以在寄存器中保持完整的256位状态,从而消除几乎所有的负载和存储。在寄存器中保存整个状态的能力不仅有利于执行时间,而且还提供了一些针对侧通道攻击的内在保护[BDG16]。最后,由于Schwaemm和Esch由非常简单的算术/逻辑操作(在硬件上很便宜)组成,标准电池实现的整体硅面积主要由状态所需的存储空间决定。
Extremely Lightweight Permutation
轻量化:Sparkle排列是一个经典的ARX设计,对32位单词执行添加、旋转和异或操作。在8、16和32位平台上使用字大小为32位的软件可以实现高效率;较小的字大小(例如,16位)会影响32位平台上的性能,而64位字对于8位微控制器是有问题的。旋转量(16、17、24和31位)经过仔细选择,以最小化每次只支持一个位旋转的微控制器的执行时间和代码大小。ARM微控制器的Sparkle的实现可以利用它们的能力,将加法或XOR与旋转结合到一个延迟为一个时钟周期的单个指令中。另一方面,小范围的硬件实现可以利用只需要支持6种算术/逻辑操作的事实:32位的异或,对232的加法模,以及对16、17、24和31位的旋转。对于这六种操作,一个最小的32位算术/逻辑单元(ALU)可以很好地优化,以实现小的硅面积和低功耗。
Consistency Across Security Levels
跨安全级别的一致性:
Schwaemm和Esch被设计成在安全级别上保持一致,这有利于算法和底层排列Sparkle的参数化软件实现。Schwaemm和Esch的所有实例都可以使用Sparkle的单一实现,该实现根据块(即状态)的大小和步骤数量进行参数化。这样的参数化实现大大减少了软件开发的工作量,因为只需要实现和测试Sparkle的一个功能。
Even Higher Speed Through Parallelism
通过并行实现更高的速度:Schwaemm和Esch在带有向量引擎的处理器平台(例如,ARM NEON, Intel SSE/AVX)上的性能可以通过利用它们提供的simd级并行性显著提高,这是可能的,因为状态的所有32位字以相同的顺序执行相同的操作。硬件实现可以通过实例化几个并行工作的32位alu来交换性能。
是什么保证了它们的安全性
我们没有以安全换取效率。我们的详细安全发现,我们的算法在我们所知道的所有攻击面前都是安全的,具有一个舒适的安全边际。总的来说,我们的原语提供的安全级别与现代对称算法相当,但成本较低。我们的哈希函数是安全的对原图像,第二原图像和碰撞搜索。我们的认证密码提供机密性,完整性和认证。
The Security of Sponges
海绵的安全:我们的方案的安全性是基于底层密码排列的安全性和基于海绵模式的安全性,更准确地说,是基于海绵哈希模式和身份验证加密的甲虫模式(基于双工海绵)。基于海绵的方法受到了广泛的关注,因为它是最新的nist标准散列函数SHA-3所使用的方法。我们重用这种方法来利用它的低内存占用和密码学家为这些组件获得的信任。
The Literature on Block Cipher Design
分组密码设计文献:Sparkle系列排列的设计基于几十年前的SPN结构,这使我们可以将其分析分解为两个阶段:首先研究其替代层,然后研究其线性层。后者结合了自DES [DES77]发布以来一直使用的Feistel结构,以及具有高分支数的线性排列,就像大量的spn,如AES [AES01]。为了组合这两种类型的子组件,我们依赖于用于分组密码Sparx的设计策略:长尾策略。我们的替换层使用基于ARX的s盒操作64位分支,其中ARX支持(模块化)加法、旋转和异或。分组密码中模加法的微分和线性性质的研究可以追溯到90年代末。事实上,ARX组件(名为Alzette1 [BBCdS+20a]的ARX盒)的块大小被限制在64位,这意味着有可能使用计算机辅助方法彻底研究它。线性层的简单性和特殊形状使我们能够从64位ARX-box中推断出完整排列的性质。
Components Tailored for Their Use Cases
为它们的用例量身定制的组件:当在一种操作模式中使用排列时,有两种方法是可能的。我们可以使用一种封闭的方法(见[BDPVA11, Section 8.1.1]),这意味着在排列中不存在已知的区分符。然后,这种安全性直接传递到整个函数(例如,整个哈希函数或AEAD方案)。这种情况下的缺点是这种封闭策略需要昂贵的排列,在轻量级密码学环境中,这种排列可能太昂贵了。
相反,我们可以使用一种排列,它本身不能提供所需的属性。然后,通过排列和使用它的操作模式的耦合来提供安全性。例如,凯撒竞赛的获胜者Ascon [DEMS16]和第三轮凯撒候选密钥Ketje [BDP+16a]都使用了这种方法。这种情况下的优势是更高的效率,因为我们需要更少的回合排列。然而,在这种情况下,由于很难估计置换所需的强度,安全保证在先验上较弱。有必要仔细评估使用的特定排列的安全性,并了解其预期的操作模式。
Sparkle(Esch和Schwaemm),我们使用后一种方法:使用的排列有很多轮,可能允许一些辨义成分的存在(在这个意义上,我们并不认为会排列像人们期望的那样从randomly-drawn排列)。然而,使用建立的长跟踪策略的一个新应用,我们能够证明我们的算法对于最重要的攻击向量(差分攻击,即用于打破SHA-1 [SBK+17]的方法,以及线性攻击)是安全的,且具有良好的安全边际。因此,我们得到了两个世界的好处:我们没有密封方法的性能损失,但仍然获得了类似于密封设计的安全保证。
具有更高安全性的特征
随机Nonces下的安全:除Schwaemm128-128外,所有Schwaemm实例都允许nonce大于192位。因此,在执行292个加密之前,随机选择的nonce不会发生冲突。因此,当用户在每次加密过程中使用统一随机选择的加密方案时,不影响认证方案的安全性。
不限制伪造次数的完整性安全:操作的甲虫模式允许我们使用一个小的内部状态和一个高速率来确保完整性安全,而没有对对手的伪造尝试(解密查询)数量的生日限制。
Schwaemm Esch:使用Sparkle排列家族的轻量级认证加密哈希相关推荐
- 区块链与联邦学习综述
区块链与联邦学习综述 本期分享的论文是由Dinh C. Nguyen等人在2021年发表在IEEE Internet of Things Journal的文章<Federated Learnin ...
- SPARKLE的规格与加密算法
本文中会出现的特殊符号和标记法以及其意义如下,本文涉及到大量的密码学算法. 为了简单起见,我们没有区分集F2a+bF_2^{a+b}F2a+b和F2a×F2bF_2^a\times F_2^bF2a ...
- 检测器backbone和neck哪个更重要,达摩院新作有不一样的答案
论文名称<GIRAFFEDET:一种heavy-neck的物体检测新范式> 论文地址:https://arxiv.org/pdf/2202.04256.pdf 摘要 在传统的目标检测框架中 ...
- 基于表单的网站身份验证的权威指南[关闭]
基于表单的网站身份验证 我们认为Stack Overflow不仅应该是非常具体的技术问题的资源,而且还应该是关于如何解决常见问题变化的一般指导原则. "基于表单的网站身份验证"应该 ...
- java 二分搜索获得大于目标数的第一位_Java后端架构师技术图谱,你都了解多少?...
前言 欢迎工作一到五年的Java工程师朋友们加入我们,私信回复[资料]即可获取我们提供免费的Java架构学习资料(里面有高可用.高并发.高性能及分布式.Jvm性能调优.Spring源码, MyBati ...
- CISSP-AIO-快速提示内容梳理
第1章 安全和风险管理 安全的目标是为数据和资源提供可用性.完整性和机密性保护. 脆弱性是系统中的弱点,威胁主体利用脆弱性危害组织的安全性. 威胁主体是某人或某物可能有意或无意地利用脆弱性,并对资产造 ...
- 关于Go语言的底层,你想知道的都在这里!
文章目录 1. GoLang语言 1.1 Slice 1.2 Map 1.3 Channel 1.4 Goroutine 1.5 GMP调度 1.6 垃圾回收机制 1.7 其他知识点 2. Web框架 ...
- 全面了解Windows Server 2003 和 Windows XP 附带的系统服务
简介 系统服务的处理不同于其他设置,因为所有服务的漏洞.对策及潜在影响在本质上都一样.第一次安装 Microsoft Windows Server 2003 时,系统将在启动时创建并配置默认服务. ...
- WINDOWS系统服务详解
1 WINDOWS系统服务详解 -- WINDOWS系统服务详解 <P>1 Alerter 当系统发生故障时向管理员发送错误警报,除非电脑处于局域网,而且配有网络管理员,一 般不需 ...
最新文章
- [导入]Java线程的深入探讨
- centos7源码安装mysql报错_centos7.3源码安装mysql
- 晒加班晒熬夜……“晒勤奋”是一种病!
- git 使用详解(8)-- tag打标签
- 下面不是python合法标识符_哪个不是python合法标识符
- java消息头,Java网络编程从入门到精通:HTTP消息头字段
- vmstat命令列出的属性详解
- 前端学习(2853):简单秒杀系统学习之页面事件
- raspberry pi_Linux Foundation安全徽章,Raspberry Pi成功,白宫工具等
- 关于将vrep和matlab或者python结合的两种方法的比较
- LeetCode-----二维数组中的查找
- (超简单)Nginx状态统计模块
- scala----计数器zipWithIndex
- tableau选择计算_举个栗子!Tableau 技巧(100):吸睛又直观的 四瓣花图 怎么实现?...
- polkit启动失败_zabbix4.4 启动失败分析
- 移动互联网时代的创业机会
- win10修改用户名_电脑c盘组或用户名被误删导致进不去系统?解决办法来了
- 模拟幂律分布(附C语言代码)
- centos挂载u盘只读_centos挂载u盘只读_针对优盘在linux下文件只读的解决方案
- 【随笔感悟】以大多数人的努力程度之低,根本轮不到拼智商
热门文章
- C语言实现最大字段和(动态规划法和分治法)
- 数据结构-C语言 || 实现复数的四则运算(定义+代码)
- spring事务的隔离级别和传播特性详解(附实例)
- 坚持努力奋斗学习(有终身受益的重点)
- 狂雨小说CMS全插件系统_听书+百度推送+收费白色pc手机模板+3个采集规则+单本采集
- 微信分支付免押租借_小程序版本
- CodeMix使用教程:Emmet
- Oracle ERP 11i中英对照词汇表(转)
- 启动app android,android 启动App的三种方式
- RGB图像转灰度图像的原理