双工结构(duplex construction)

参考文献:

  1. [BDPV11] Bertoni G, Daemen J, Peeters M, et al. Duplexing the sponge: single-pass authenticated encryption and other applications[C]//Selected Areas in Cryptography: 18th International Workshop, SAC 2011, Toronto, ON, Canada, August 11-12, 2011, Revised Selected Papers 18. Springer Berlin Heidelberg, 2012: 320-337.
  2. 海绵结构:Hash as RO

文章目录

  • Padding Rules
  • Duplex Construction
  • Applications

Padding Rules

在海绵结构中,变换 f f f 的宽度是 b = c + r b=c+r b=c+r,容量是 c c c,比率是 r r r

在这里插入图片描述

对于变长的输入 M M M,需要做一定的填充,使得它的长度是 r r r 的倍数。填充规则记为 p a d [ r ] ( ∣ M ∣ ) pad[r](|M|) pad[r](M),应当满足一些条件,使得海绵函数是安全的。

在这里插入图片描述

根据 [BDPV11],一个充分条件是:填充可逆、填充后长度大于零、最后一个区块不是零。

  • simple reversible padding:定义为 p a d 1 0 ∗ [ r ] ( x ) , ∀ x ≥ 0 pad10^*[r](x), \forall x\ge0 pad10[r](x),x0,其中 0 ∗ 0^* 0 的长度是 [ − x − 1 ] r ∈ [ 0 , r − 1 ] [-x-1]_r \in [0,r-1] [x1]r[0,r1]
  • multi-rate padding:定义为 p a d 1 0 ∗ 1 [ r ] ( x ) , ∀ x ≥ 0 pad10^*1[r](x), \forall x\ge0 pad101[r](x),x0,其中 0 ∗ 0^* 0 的长度是 [ − x − 2 ] r ∈ [ 0 , r − 2 ] [-x-2]_r \in [0,r-2] [x2]r[0,r2]

注意到填充长度大于零,即使 ∣ M ∣ |M| M 恰好是 r r r 的倍数,也必须添加上一个新的区块。

Duplex Construction

[BDPV11] 提出了双工结构,它是带状态的,其输入流/输出流的速率相同。如图所示:

在这里插入图片描述

假设已经确定了某个 padding rule,定义 maximum duplex rate
ρ m a x ( p a d , r ) = min ⁡ { x ∣ x + p a d [ r ] ( x ) > r } − 1 \rho_{max}(pad,r) = \min\{x \mid x+pad[r](x) > r \}-1 ρmax(pad,r)=min{xx+pad[r](x)>r}1
容易验证, ρ m a x ( p a d 1 0 ∗ , r ) = r − 1 \rho_{max}(pad10^*,r) = r-1 ρmax(pad10,r)=r1 以及 ρ m a x ( p a d 1 0 ∗ 1 , r ) = r − 2 \rho_{max}(pad10^*1,r) = r-2 ρmax(pad101,r)=r2

双工结构的算法为:

在这里插入图片描述

如果 σ i = ∅ \sigma_i=\empty σi=,称之为 blank call(空的);如果 l i = 0 l_i=0 li=0,称之为 mute call(哑的)

双工结构的每一次调用,都等价于如下的海绵结构:

在这里插入图片描述

具体来说,海绵结构本身对 M M M 有个 pading,那么有
Z i = S p o n g e ( σ 0 ∥ p a d 0 ∥ ⋯ ∥ σ i − 1 ∥ p a d i − 1 ∥ σ i , l i ) Z_i = Sponge(\sigma_0\|pad_0\|\cdots\|\sigma_{i-1}\|pad_{i-1}\|\sigma_i,\,\, l_i) Zi=Sponge(σ0pad0σi1padi1σi,li)
并且 σ 0 ∥ σ i → σ 0 ∥ p a d 0 ∥ ⋯ ∥ σ i − 1 ∥ p a d i − 1 ∥ σ i \sigma_0\|\sigma_i \to \sigma_0\|pad_0\|\cdots\|\sigma_{i-1}\|pad_{i-1}\|\sigma_i σ0σiσ0pad0σi1padi1σi 是单射,因此可以将双工结构的安全性归约为海绵结构的安全性

Applications

[BDPV11] 给出了双工结构的一些应用:

  • authenticated encryption,带身份验证的加密,提供隐私性和认证性
  • key wrapping,密钥打包,提供隐私性和完整性
  • reseedable PRG,重新播种的PRG,将新的种子和当前状态组合
  • overwrite functions,当前输入覆盖了部分的状态,而非和当前的状态异或

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/826997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mybatis创建入门流程体验

mysql数据库中建表 drop table if exists tb_user;create table tb_user(id int primary key auto_increment,username varchar(20),password varchar(20),gender char(1),addr varchar(30) );INSERT INTO tb_user VALUES (1, zhangsan, 123, 男, 北京); INSERT INTO tb_user …

星域社区原版APP源码/社区交友App源码/动态圈子群聊php源码

简介 初始版本是由RuleAPP规则之树开发的,而星域社区则是在此基础上进行了二次开发和美化。作者花了近一年的时间来打磨它,现在即将推出Pro版。如果你只想免费使用的话,可以使用原始的RuleAPP版本。但是,如果你想要获得更好的美观…

【YOLOv9】实战二:手把手教你使用TensorRT实现YOLOv9实时目标检测(含源码)

‍‍🏡博客主页: virobotics(仪酷智能):LabVIEW深度学习、人工智能博主 🎄所属专栏:『LabVIEW深度学习实战』 📑上期文章:『【YOLOv9】实战一:在 Windows 上使用LabVIEW OpenVINO工具…

CTF工具处理(2)--HackBar报错

来源:HackBar插件绕许可_hackbar许可证-CSDN博客 报错页面: 工具报错原因: 版本升级,需要收费。 破解: 1.下载文件(去网上找破解HackBar) 2.添加附件: 3.重启: 按F12就…

引领4G拾音新时代:DuDuTalk双定向拾音设备上市,助力现场管理步入智能化

近日,继DuDuTalk的4G智能拾音工牌(挂牌和胸牌)之后,赛思云科技在线下沟通场景智能语音采集方案领域的又一突破性产品4G双定向桌面拾音终端全新上市。 该产品是面向营业网点、市政大厅、医疗诊室、售票窗口、贵宾室等环境的柜台服…

【工具-pip】

工具-pip ■ pip-工具■ pip-安装■ pip-卸载■ pip-帮助■ pip- 批量安装库■ 批量卸载库■ 提高pip下载速度 ■ pip-工具 pip 是 Python 标准库中的一个包,这个包是用来管理 Python 第三方库。 通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、…

cesium 动态线效果

一、扩展材质 function PolylineTrailMaterial(options) {options Cesium.defaultValue(options, Cesium.defaultValue.EMPTY_OBJECT);this._definitionChanged new Cesium.Event();// 变量初始化this.color Cesium.defaultValue(options.color && new Cesium.Colo…

基于区间预测的调度方法

《基于区间预测的光伏发电与蓄电池优化调度方法》 为了应对县级市光伏发电与用电需求之间的最优调度问题,提出一种面向蓄电池和光伏发电机的区间预测调度优化方法。该方法分别对发电功率调度、充电/放电功率调度和荷电状态调度进行决策从而获得最优调度的精确范围。…

Python Flask Web框架快速入门

Flask 入门Demo Flask 开发环境搭建,执行如下指令: pip install flask # 第一节: Flask 快速入门from flask import Flask app Flask(__name__)app.route(/flask) def hello_flask():return Hello Flaskapp.run() 核心代码剖析: 从 fla…

RTSP/Onvif视频监控平台EasyNVR如何提高匿名用户的用户名和密码安全性?

EasyNVR安防视频云平台是旭帆科技TSINGSEE青犀旗下支持RTSP/Onvif协议接入的安防监控流媒体视频云平台。平台具备视频实时监控直播、云端录像、云存储、录像检索与回看、告警等视频能力,能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、W…

Nginx+Lua+OpenResty(详解及使用)

一、 Nginx简介 Nginx是一个高性能的Web服务器和反向代理的软件。 Web服务器:就是运行我们web服务的容器,提供web功能,还有tomcat也提供类似的功能。 代理是软件架构和网络设计中,非常重要的一个概念。 二、Nginx的反向代理&…

flutter 谷歌的苹果系统消息推送

flutter firebase 云消息通知教程 (android-安卓、ios-苹果) Android、ReactNative、Flutter集成Firebase推送注意事项 Android:Firebase 凭据 iOS:基于 p8 令牌的 APN 连接 iOS:p12 生成证书 Flutter之对接国外推送onesignal踩坑笔记&a…

0.C++入门(专栏前言)

目录 1.什么是C 2.C的发展史 3.C的重要性 应用: 4.如何学习C 5.关于本专栏 1.什么是C 20世纪80年代,计算机界提出oop(object oriented programming:面向对象)思想,支持面向对象的程序设计应运而生。 1982年,本…

Java实现文件分片上传、大文件秒传

Java实现文件分片上传、大文件秒传,大文件如何做断点续传?JAVAWEB 文件上传及下载,JAVA大文件上传,大文件下载解决方案,JAVA实现文件分片上传并且断点续传,JAVA大文件分片上传/多线程上传功能,超…

JS-47-Node.js06-fs模块-读写文件

Node.js内置的fs模块就是文件系统模块,负责读写文件。 和所有其它JavaScript模块不同的是,fs模块同时提供了异步和同步的方法。 一、回顾:异步方法VS同步方法 1-1、异步方法 因为JavaScript的单线程模型,执行IO操作时&#xff…

STP学习的第一篇

1.STP的基本概念:根桥 (1)STP的主要作用之一是在整个交换网络中计算出一棵无环的“树”(STP树)。 (2)根桥是一个STP交换网络中的“树根”。 (3)STP开始工作后&#xf…

【C++类和对象】初始化列表与隐式类型转换

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

《C语言深度解剖》(8):一篇文章彻底学会Visual Studio 调试技巧,新手必看!

🤡博客主页:醉竺 🥰本文专栏:《C语言深度解剖》 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多数据结构与算法点击专栏链接查看&am…

MySQL 基础语法(2)

文章目录 创建表查看表修改表表数据插入 本文为表结构相关的基础语言库相关的基础语句 创建表 CREATE TABLE table_name ( field1 datatype comment xxx, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;CREATE TABLE&#xff1…

NLP(2)--搭建简单的模型(nn)

前言 仅记录学习过程,有问题欢迎讨论 可能使用到的包 可以通过Anaconda直接install,不行就PIP install xxx PythonTorchTransformersScikit-learnNumpyGensimPandas 我的版本: 可以用 conda list 查看 代码 如果有包导入不进来&…