Ascon加解密算法分析

news2024/9/23 5:22:41

参数定义

在这里插入图片描述
在这里插入图片描述

加密架构图

在这里插入图片描述

  • 整个过程是在处理320bits的数据,所以在最开始需要对原始的数据进行一个初始化,获得320bits的数据块,
    图里看到的pa和pb都是在做置换(对320bits的数据进行一个置换)

  • 置换(Permutation)在加密和解密算法中是一种常用的操作,它指的是对序列中的元素重新排列,使得原来的元素顺序发生变化。在加解密中,置换操作通常用于将明文或密文中的字符或比特重新排列,使得原始信息变得难以阅读或理解。
    置换操作在加密和解密中通常具有以下特点:

    • 置换操作是不可逆的,即对序列进行置换后,无法通过置换操作还原原始序列。
    • 置换操作可能会影响信息的长度和复杂性,使得原始信息变得难以阅读或理解。
    • 置换操作可能会增加加密和解密算法的复杂性,使得攻击者更难以破解加密算法。
  • 在加解密中,置换操作通常由一个置换矩阵表示。例如,在密码学中,有一个著名的置换加密算法叫做培根密码(Bacon’s Cipher),它使用一个特殊的置换矩阵来加密和解密信息。在这个算法中,置换矩阵如下所示:

    A = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    B = [0, 5, 6, 7, 8, 9, 1, 2, 3, 4]
    
  • 对于一些运算符号如下约定
    在这里插入图片描述

  • 加解密伪代码实现
    在这里插入图片描述

前置知识

  • Ascon算法,整个加密解密过程实际上是在处理320bits的数据,通过a轮置换和b轮置换进行320bits的内容(简称S),S被分为两个部分,一个是外在部分Sr (r bits),内在部分Sc(c bits),其中r+c =320bits,在文档中r 代表rate,c代表capacity,应该是和算法的速度性能相关。
  • 320bits长度的S被分为5个64bits
    在这里插入图片描述

流程详解

  • 初始化
    320bits的数据是如何生成的?

    • 第一步:构建IV初始向量
      IV=k||r||a||b||补0,此处的k是密钥的长度,r是rate段的长度,初始轮和最终轮数a和b的大小,以及中间轮数b大小(都是8bit 的int型数据),最后补0,个数为160-k
      在这里插入图片描述
    • 第二步:得到S,这个时候S就是320bits长
      S = IV ||密钥K||随机数N
      在这里插入图片描述
    • 第三步:处理S
      经过a轮的p置换后,和密钥K进行异或(此时密钥k不足320bits,需要补0凑320bits)
      在这里插入图片描述
    • 初始化结束,注明:初始化阶段,没有处理AD和plaintext,是把Key,Nonce,以及一些长度、轮数的数值用来生成初始的S块(320bits)
  • 处理相关数据

    • 如果存在关联数据AD(前面说过,AD的数据长度是没有要求的,如果AD数据长度很大,就需要进行切割处理)
    • Ascon处理关联数据,是把它分为r bits一块(block),一共有s块
      如果AD的位数不足r bits或者不是r bits的倍数,需要填充1||0…0
      在这里插入图片描述
      之后,执行s次:从A1到As
      将每一块Ai,都和S里的前r位数据进行异或,异或之后和Sc拼接成320bits数据,进行b轮permutation
    • 此处的permutation执行了b*s次
      在这里插入图片描述
      如果不存在 s=0 ,暂不处理
    • 最后统一处理:
      S和 0…01进行异或(319个0)
      在这里插入图片描述
  • 处理明文过程—两个过程,填充分块和加密

    • 因为plaintext的长度是任意的,所以可能位数不满足r bits,或者不是r bits的倍数,所以需要填充1||0…0
    • 然后将plaintext分为t个block,每个block占r bits(注意:这个地方如果为了满足r bits的倍数进行填充,之后的密文位数就和明文不一致了,所以关于最后一个明文块会进行一个特殊的处理)
      在这里插入图片描述
    • 从第一个block开始处理一直到第t个(这个地方和处理关联数据的方式很相似)
      比如:第i个Block的处理:
    • 首先获取Blocki 对应的密文,将Blocki与此时的Sr(也就是此时320bits大数据块的前r位)进行异或,获得密文块Ci
      在这里插入图片描述
    • 再进行置换运算P(Ci||Sc),进行b轮,得到一个新的S
      进行下一个Block的处理…
      在这里插入图片描述
    • 最后一个Block不进行置换处理,直接获取密文Ct后,将最后一个密文块 Ct 截断为未填充的最后一个明文块片段的长度,使其长度在 0 和 r - 1 位之间,密文 C 的总长度与原始明文 P 的总长度完全相同。
      在这里插入图片描述
  • 解码对应过程

    • 在除最后一次迭代之外的每次迭代中,明文块Pi都是通过用内部状态的第一个r位Sr来表示密文块Ci来计算的。然后,将内部状态的第一个位位Sr替换为Ci。最后,对于除最后一个密文块外的每个密文块,内部状态由b轮排列pb进行置换
      在这里插入图片描述
    • 对于最后一个具有0≤`<r位的截断密文块˜Ct,过程不同
      在这里插入图片描述
  • 结尾处理

    • 最后的收尾工作,会生成一个128bits的tag,用于解密时做验证
    • 解密模式下,如果计算的tag错误,则不会返回明文,仅返回错误标记⊥
    • 在最终确定的过程中,密钥K被转换到内部状态,并通过使用一轮的排列pa进行状态转换。标记T由状态的最后一个(最不重要的)128位和键K的最后128位组成
      在这里插入图片描述
    • 加密算法返回标签T和密文C1k…k˜Ct。解密算法只有当计算出的标记值与接收到的标记值匹配时,才返回明文P1 k … k˜Pt。
  • 置换处理

    • Ascon的重要组成部分就是这个320bits的置换,该置换迭代的应用了基于SPN结构的轮变换(round transformation),置换可以分为3步,Pc->Ps->PL,其实这个过程把混淆和扩散都做了。(不是像AES里简单的p盒置换)
    • 之前算法结构图里提到的Pa和Pb,其实只是轮数的不同,一个是a轮,一个是b轮,实际permutation结构上是一样的,并且a,b是一个可以调整的参数。
      置换步骤
      1)先把320bits划分为5个
      在这里插入图片描述
      2)X2异或一个常数Cr—Cr取值如下
      在这里插入图片描述
      在这里插入图片描述
      3)按5bit位单位做替换
      在这里插入图片描述
      4)分别对x0/x1/x2/x3/x4进行移位、异或
      在这里插入图片描述
  • 扩散和混淆
    Diffusion 扩散
    P盒的作用是扩散(Diffusion),目的是让明文和密钥的影响迅速扩散到整个密文中。即1位的明文或密钥的改变会影响到密文的多个比特。
    Confusion 混淆
    我们常说的S盒的作用是混淆(Confusion),主要增加密钥和密文之间的复杂度(包括非线性度等)。
    混淆能够很好的隐藏密文和密钥的关系,一比特密钥的改变,密文会受到很大程度变动

博客参考了这篇大佬的作品

声明,算法图解部分均来自官方文档

在这里插入图片描述

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

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

相关文章

04|提示工程(上):用少样本FewShotTemplate和ExampleSelector创建应景文案

04&#xff5c;提示工程&#xff08;上&#xff09;&#xff1a;用少样本FewShotTemplate和ExampleSelector创建应景文案 当你用 print 语句打印出最终传递给大模型的提示时&#xff0c;一切就变得非常明了。 您是一位专业的鲜花店文案撰写员。 对于售价为 50 元的 玫瑰 &…

c++使用强制转换类型

对于c中的强制转换&#xff0c;这里主要是讲解的是父类与子类之间的类型强制转换。对于以下的代码中&#xff0c;主要是父类Monkey和子类Man之间的成员函数的调用。 // 这是父类 class Monkey { public&#xff1a; // 定义一个纯虚函数 virtual void printFunc() { qDeb…

udp多播/组播那些事

多播与组播 多播&#xff08;multicast&#xff09;和组播&#xff08;groupcast&#xff09;是相同的概念&#xff0c;用于描述在网络中一对多的通信方式。在网络通信中&#xff0c;单播&#xff08;unicast&#xff09;是一对一的通信方式&#xff0c;广播&#xff08;broad…

智能优化算法应用:基于食肉植物算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于食肉植物算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于食肉植物算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.食肉植物算法4.实验参数设定5.算法结果6.…

算法学习系列(十一):KMP算法

目录 引言一、算法概念二、题目描述三、思路讲解三、代码实现四、测试 引言 这个KMP算法就是怎么说呢&#xff0c;就是不管算法竞赛还是找工作笔试面试&#xff0c;都是非常爱问爱考的&#xff0c;其实也是因为这个算法比较难懂&#xff0c;其实就是很难&#xff0c;所以非常个…

不同参数规模大语言模型在不同微调方法下所需要的显存总结

原文来自DataLearnerAI官方网站&#xff1a; 不同参数规模大语言模型在不同微调方法下所需要的显存总结 | 数据学习者官方网站(Datalearner)https://www.datalearner.com/blog/1051703254378255 大模型的微调是当前很多人都在做的事情。微调可以让大语言模型适应特定领域的任…

Vue在页面上添加水印

第一步&#xff1a;在自己的项目里创建一个js文件&#xff1b;如图所示我在在watermark文件中创建了一个名为waterMark.js文件。 waterMark.js /** 水印添加方法 */ let setWatermark (str1, str2) > {let id 1.23452384164.123412415if (document.getElementById(id) …

数据库01_增删改查

1、什么是数据&#xff1f;什么是数据库&#xff1f; 数据&#xff1a;描述事物的符号记录称为数据。数据是数据库中存储的基本对象。数据库&#xff1a;存放数据的仓库&#xff0c;数据库中可以保存文本型数据、二进制数据、多媒体数据等数据 2、数据库的发展 第一阶段&…

H266/VVC帧内预测编码技术概述

预测编码技术 预测编码&#xff08;Prediction Coding&#xff09;是指利用已编码的一个或多个样本值&#xff0c;根据某种模型或方法&#xff0c;对当前的样本值进行预测&#xff0c;并对样本真实值和预测值之间的差值进行编码。 视频中的每个像素看成一个信源符号&#xff…

MFC读取文件数据,添加信息到列表并保存到文件

打开并读取文件信息 添加&#xff1a; BOOL infoDlg::OnInitDialog() {CDialogEx::OnInitDialog();// TODO: 在此添加额外的初始化AfxMessageBox("欢迎查看学生信息");SetList();return TRUE; // return TRUE unless you set the focus to a control// 异常: OCX 属…

Node 源项目定制化、打包并使用全过程讲解

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是全栈工…

分布式面试题-理论部分(十二道)

文章目录 分布式面试题&#xff08;十二道&#xff09;分布式理论1. 说说CAP原理2. 为什么CAP不可兼得呢&#xff1f;3. CAP对应的模型和应用&#xff1f;4. BASE理论了解吗&#xff1f; 分布式锁5. 有哪些分布式锁的实现方案呢&#xff1f;**5.1 MySQL分布式锁如何实现呢&…

[2023-年度总结]凡是过往,皆为序章

原创/朱季谦 2023年12月初&#xff0c;傍晚&#xff0c;在深圳的小南山看了一场落日。 那晚我们坐在山顶的草地上&#xff0c;拍下了这张照片——仿佛在秋天的枝头上&#xff0c;结出一颗红透的夕阳。 这一天很快就会随着夜幕的降临&#xff0c;化作记忆的碎片&#xff0c;然…

PoE交换机传输距离是多少?100米?250米?

你们好&#xff0c;我的网工朋友。 今天和你聊聊PoE交换机&#xff0c;之前有系统地给你讲解过一篇&#xff0c;可以先回顾一下哈&#xff1a;《啥样的交换机才叫高级交换机&#xff1f;这张图告诉你》 为什么都说PoE交换机好&#xff1f;它最显著的特点就是&#xff1a; 可…

openGauss学习笔记-173 openGauss 数据库运维-备份与恢复-导入数据-对表执行VACUUM

文章目录 openGauss学习笔记-173 openGauss 数据库运维-备份与恢复-导入数据-对表执行VACUUM openGauss学习笔记-173 openGauss 数据库运维-备份与恢复-导入数据-对表执行VACUUM 如果导入过程中&#xff0c;进行了大量的更新或删除行时&#xff0c;应运行VACUUM FULL命令&…

【2024 行人重识别最新进展】ReID3D:首个关注激光雷达行人 ReID 的工作!

【2024 行人重识别最新进展】ReID3D&#xff1a;首个关注激光雷达行人 ReID 的工作&#xff01; 摘要&#xff1a;数据集&#xff1a;方法模型&#xff1a;多任务预训练&#xff1a;ReID Network&#xff1a; 实验结果&#xff1a;结论&#xff1a; 来源&#xff1a;Arxiv 2023…

Jenkins的特殊操作定时自动执行任务以及测试报告调优

java -Dhudson.model.DirectoryBrowserSupport.CSP -jar Jenkins.war 测试报告 不美丽 执行上面的代码 重启jenkins 就好了

Ensp dhcp全局地址池(配置命令 + 实例)

使用DHCP的好处&#xff1a;减少管理员的工作量、避免输入错误的可能、避免ip冲突 DHCP报文类型&#xff1a; DHCP DISCOVER:客户端用来寻找DHCP服务器 DHCP OFFER:DHCP服务器用来响应DHCP DISCOVER报文&#xff0c;此报文携带了各种配置信息 DHCP REQUEST:客户端配置请求确…

8+WGCNA+免疫+实验,干湿结合的经典生信思路,可冲

今天给同学们分享一篇生信文章“Identifying the key genes of Epstein-Barr virus-regulated tumour immune microenvironment of gastric carcinomas”&#xff0c;这篇文章发表在Cell Prolif期刊上&#xff0c;影响因子为8.5。 结果解读&#xff1a; EBV感染改变了胃癌中的…

【Java注解的作用是什么?】

&#x1f341;Java注解的作用是什么&#xff1f; &#x1f341;典型解析&#x1f341;扩展知识仓&#x1f341;什么是元注解&#x1f341;Retention&#x1f341;Target&#x1f341;Documented&#x1f341;Inherited &#x1f341;典型解析 Java 注解用于为 Java 代码提供元数…