Ascon加解密算法分析

参数定义

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

加密架构图

在这里插入图片描述

  • 整个过程是在处理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),主要增加密钥和密文之间的复杂度(包括非线性度等)。
    混淆能够很好的隐藏密文和密钥的关系,一比特密钥的改变,密文会受到很大程度变动

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

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

不可能得到的最短骰子序列

说在前面 &#x1f388;不知道大家对于算法的学习是一个怎样的心态呢&#xff1f;为了面试还是因为兴趣&#xff1f;不管是出于什么原因&#xff0c;算法学习需要持续保持。 题目描述 给你一个长度为 n 的整数数组 rolls 和一个整数 k 。你扔一个 k 面的骰子 n 次&#xff0c;…

Vue 封装echarts饼状图(Pie)组件

目的&#xff1a;减少重复代码&#xff0c;便于维护 效果显示&#xff1a; 组件代码 <template><div class"ldw-data-content-box"><div class"ldw-chilren-box"><div class"title"><div>{{ title }}</div>…

【隐私保护】使用Python从文本中删除个人信息:第一部分

自我介绍 做一个简单介绍&#xff0c;酒架年近48 &#xff0c;有20多年IT工作经历&#xff0c;目前在一家500强做企业架构&#xff0e;因为工作需要&#xff0c;另外也因为兴趣涉猎比较广&#xff0c;为了自己学习建立了三个博客&#xff0c;分别是【全球IT瞭望】&#xff0c;【…

Flowable-升级为7.0.0.M2-第一节

目录 升级jdk升级springboot到3.1.3升级数据库连接池druid-spring-boot-3-starter到1.2.20升级mybatis-plus到3.5.3.2升级flowable到7.0.0.M2 最近有些读者一直问flowable如何升级到7.0.0.M2&#xff0c;接下来我就一步步的把flowable升级到7.0.0.M2 升级jdk flowable7.x采用的…

《PySpark大数据分析实战》-19.NumPy介绍ndarray介绍

&#x1f4cb; 博主简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是wux_labs。&#x1f61c; 热衷于各种主流技术&#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员&#xff08;PCTA&#xff09;、TiDB数据库专家&#xff08;PCTP…

微信小程序合集更更更之echarts雷达图!

实现效果 写在最后&#x1f352; 更多相关内容&#xff0c;关注&#x1f365;苏苏的bug&#xff0c;&#x1f361;苏苏的github&#xff0c;&#x1f36a;苏苏的码云~

VMware17Pro虚拟机安装Linux CentOS 7.9(龙蜥)教程(超详细)

目录 1. 前言2. 下载所需文件3. 安装VMware3.1 安装3.2 启动并查看版本信息3.3 虚拟机默认位置配置 4. 安装Linux4.1 新建虚拟机4.2 安装操作系统4.2.1 选择 ISO 映像文件4.2.2 开启虚拟机4.2.3 选择语言4.2.4 软件选择4.2.5 禁用KDUMP4.2.6 安装位置配置4.2.7 网络和主机名配置…

OpenAI换血大震动始末:“ChatGPT之父”奥特曼,缘何被“扫地出门”?

近期&#xff0c;AI业界发生了一场“大地震”。作为聊天机器人ChatGPT的开发者&#xff0c;OpenAI无疑是最受关注的人工智能公司之一。就是这家公司的联合创始人、CEO、有“ChatGPT之父”之称的阿尔特曼在“疯狂的5天”里&#xff0c;经历了被闪电免职、加入微软、最终又官复原…

微服务架构<2>

在电商项目中&#xff0c;我们针对一些核心业务&#xff0c;比较复杂的业务需要做一些设计以及优化的过程首先我们针对于订单的模块拆分了2个子模块1.order-curr实时下单业务 2.order-his 做一些历史的订单归档我们的订单业务 >商品添加至购物车 >购物车结算--> 订单…

SpringBoot整合JWT+Spring Security+Redis实现登录拦截(二)权限认证

上篇博文中我们已经实现了登录拦截&#xff0c;接下来我们继续补充代码&#xff0c;实现权限的认证 一、RBAC权限模型 什么事RBAC权限模型&#xff1f; RBAC权限模型&#xff08;Role-Based Access Control&#xff09;即&#xff1a;基于角色的权限访问控制。在RBAC中&#x…

MySQL——进阶篇

二、进阶篇&#x1f6a9; 1. 存储引擎&#x1f346; 1.1 MSQL体系结构 连接层&#xff1a; 连接处理&#xff0c;连接认证&#xff0c;每个客户端的权限 服务层&#xff1a; 绝大部分核心功能&#xff0c;可跨存储引擎 可插拔存储引擎&#xff1a; 需要的时候可以添加或拔掉…

代码随想录算法训练营第二十七天|组合总和等

77 组合 1 描述 给定两个整数 n 和 k&#xff0c;返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 2 代码 class Solution:def combine(self, n: int, k: int) -> List[List[int]]:path []rst…

新型智慧城市解决方案:PPT全文56页,附下载

关键词&#xff1a;智慧城市解决方案&#xff0c;智慧城市管理技术&#xff0c;智慧城市建设&#xff0c;数字城市建设 一、智慧城市宏观形势 1、政策支持&#xff1a;出台了一系列政策&#xff0c;鼓励和支持智慧城市的发展。这些政策为智慧城市的建设提供了政策保障和资金支…

网络安全法规和模型

基础 ISO信息安全&#xff1a;为数据处理系统建立和采取技术、管理的安全保护&#xff0c;保护计算机硬件、软件、数据不因偶然的或恶意的原因而受到破坏、更改、泄露 信息安全属性&#xff1a; CIA三元组&#xff1a;保密性、完整性、可用性 其他属性&#xff1a;真实性、不…

2023-12-25 事业-代号s-shein分析

前阵子SHEIN看的比较多,几乎把市面上的报告和趋势都研究了下,总结了这篇关于SHEIN的一切,从0开始全面的了解下SHEIN,比较通俗易懂,可以看看。 如果你还不了解SHEIN这家公司,想知道知道,可以翻看下,快速get这家公司的点如果你想了解下这家公司怎么发展和快速提升的,可以…

16路彩灯控制器 FPGA-Verilog

#16路彩灯控制器 FPGA-Verilog# 1、Verilog代码编写 1.1输入输出信号确定 题目要求多路彩灯控制器通过对应的开关按钮&#xff0c;能够控制多个彩灯的输出状态&#xff0c;组合多种变幻的灯光效果。 彩灯控制器的功能描述为&#xff1a; 设计一个多路彩灯控制器&#xff0…

Word-表格法对齐公式(手把手教学,公式格式从此不再愁)

新建word文件 1&#xff09;鼠标点击【插入】—>【表格】,选择31列的表格 2&#xff09;鼠标置于中间表格&#xff0c;快捷键输入Alt&#xff0c;进入公式编辑器中&#xff0c;输入任意字母&#xff0c;如&#xff1a;A&#xff0c;点击居中即可。 3&#xff09;第三列表…

飞天使-k8s知识点7-kubernetes升级

文章目录 验证新版本有没有问题需要安装的版本微微 1.20.6.0kubeadm upgrade plan 验证新版本有没有问题 查看可用版本的包 现有的状态 查看版本 yum list kubeadm --showduplicates |grep 1.20 yum list kubelet --showduplicates |grep 1.20 yum list kubectl --showduplic…

代码随想录第四十天(一刷C语言)|单词拆分

创作目的&#xff1a;为了方便自己后续复习重点&#xff0c;以及养成写博客的习惯。 单词拆分 思路&#xff1a;参考carl文档 动规五部曲分析如下&#xff1a; 1、确定dp数组以及下标的含义&#xff1a;dp[i] : 字符串长度为i的话&#xff0c;dp[i]为true&#xff0c;表示可…

DG报错ORA-01111、ORA-01110、ORA-01111备库不同步

刚同步好没多久的dg备库&#xff0c;过两天查看同步状态发现备库数据不同步&#xff0c;重新开启同步也不能正常同步。 查看alert日志&#xff0c;查看报错如下&#xff1a; MRP0: Background Media Recovery terminated with error 1111 Errors in file D:\APP\ADMINISTRATOR…