带IV的分组加密下密文分散存储且存在混淆密文片段的多项式时间解密方案

news2025/1/13 9:41:04

在使用带IV的分组加密模式下,考虑这样一个场景:分组加密后,每组密文都被分散保存,且在恢复的时候,每组密文会和n个混淆的密文一起提供,此时,若想完整的恢复明文,需要一个多项式时间的方案来剔除所有混淆密文。本文提出了一种基于可密文前缀的方案,能够在多项式的时间内完成解密。
PS:文章的名字也太难取了,赶时间随便取了个。


文章目录

  • 1.背景
  • 2.Idea
  • 3.真实场景的问题
  • 4.应用场景


1.背景

使用非 E C B ECB ECB模式的分组加密(假设为 C B C CBC CBC),假设为加密算法为 A E S AES AES,初始向量为 I V IV IV,密钥为 k k k,明文为 M \mathcal M M,共分为了 n n n个组进行加密,加密后的密文为 C \mathcal C C

我们把密文分为 n n n个组,每组密文为 c 1 , c 2 . . . , c n c_{1},c_{2}...,c_{n} c1,c2...,cn,这 n n n组密文按顺序分散存储,且每组密文存在 t t t个混淆密文 c i 1 , c i 2 . . . , c i t c_{i_1},c_{i_2}...,c_{i_{t}} ci1,ci2...,cit

现在,按顺序的拿出所有密文分组(包含混淆密文分组),要恢复完整的明文 M \mathcal M M

2.Idea

所有分组的存储和给出都是按顺序进行的,所以难点在如何把 t t t个混淆密文去除。

想法:
1.对于第一个分组,可以很快速的确认出真实的密文片段 c 1 c_{1} c1,只需要将 c 1 1 , c 1 2 . . . , c 1 t c_{1_1},c_{1_2}...,c_{1_{t}} c11,c12...,c1t 依次放入解密中尝试解密即可 D e c ( c 1 i , k ) , i ∈ [ 1 , t + 1 ] Dec(c_{1_i}, k), i\in[1,t+1] Dec(c1i,k),i[1,t+1],由于 I V IV IV是确定的,所以只有真实的 c 1 c_{1} c1能够成功解密。

2.在确定了 c 1 c_{1} c1后,继续尝试 D e c ( c 1 + c j i , k ) , i ∈ [ 1 , t + 1 ] , j ∈ [ 2 , n ] Dec(c_{1} + c_{j_i}, k), i\in[1,t+1],j\in[2,n] Dec(c1+cji,k),i[1,t+1],j[2,n],从而可以确认 c j c_{j} cj

这样,通过一步步确认真实密文前缀的方式,能够区分开所有混淆密文,而且是在多项式的时间内。当然,前提条件是解密机能够准确判断是否解密成功。

3.真实场景的问题

在用JavaScript实现上述方案的时候,存在一个问题:如何判断解密机是否成功解密。

常见的思路是:加密之前会先对字符进行编码,密文解密后会进行解码,如果解码成功就意味着解密成功,解码出现异常就是解密失败。

这种思路在上文背景下,会有部分场景失效,考虑如下场景:一段中文字符经由UTF-8编码后,每个中文字符通常会占2-3个字节,假设分组的长度是32字节,那么一个密文分组解密后,很有可能会因为尾部存在一个不完整编码的中文字符而解码失败,导致解密机判断为解密失败。

解决上述问题的一个办法是,找一个能把需要使用到的各种字符都编码成不会被分组长度隔断的编码,例如,如果只存在中文,那么使用GB2312就可以完美解决这个问题,因为每个汉字占两个字节,不可能出现某个分组的尾部包含不完整编码的汉字。

但是这样的办法拓展性不强,如果需要用到各种各样字符的话,找一个合适的编码比较麻烦。于是有另一个思路:尝试去除(置0字节)解密后密文尾部的0-2个字节,即可完美的解决这个问题。例如,如果使用UTF-8编码汉字,某个分组尾部容易存在1-2不完整编码的字节,那么我们尝试去除尾部的0-2个字节,就可以保证所有情况都完整的考虑了。

使用其它的编码也类似,主要考虑某个分组尾部可能残留多少个不完整编码的字节。下面是一个JS实现的核心代码示例。

在这里插入图片描述

4.应用场景

如果我们需要把分组加密后的东西放入区块链中,每个交易或者每个块中放入一个分组,同时存在可能混淆的一些其它条件,那么这就是一个很明显的应用。目前该方案已经应用于一些项目中。


ATFWUS 2023-10-31

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

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

相关文章

新手尝试硬件买单片机还是树莓派?

今日话题,新手尝试硬件买单片机还是树莓派?对于硬件初学者,建议首先学习单片机,如51单片机或STM32等。这些平台有丰富的学习资源和示例项目,程序相对简单,更贴近硬件,使初学者能够轻松入门&…

RecyclerView在点击事件的处理上也优于ListView

主要是细节的支持,ListView直接提供setOnItemClickListener,而RecyclerView没有,是因为RV考虑的更细节,比如我要点击条目上的某个图标生效,使用ListView会很难实现,但是RV实现会很容易,直接在适配器中由Vie…

财务管理系统 财务管理软件

财务管理系统 财务管理软件 系统功能介绍: 1、预算管理系统 预算管理是一个承上启下的业务衔接系统,主要用于记录本单位的年度预算指标数据,可以通过接口从财政年度预算数据中导入,也可以根据自身管理控制需要录入…

前端移动web详细解析四

移动 Web 第四天 01-vw适配方案 vw和vh基本使用 vw和vh是相对单位,相对视口尺寸计算结果 vw:viewport width(1vw 1/100视口宽度 ) vh:lviewport height ( 1vh 1/100视口高度 ) vw布局 vw单位的尺寸 px 单位数…

神经网络的解释方法之CAM、Grad-CAM、Grad-CAM++、LayerCAM

原理优点缺点GAP将多维特征映射降维为一个固定长度的特征向量①减少了模型的参数量;②保留更多的空间位置信息;③可并行计算,计算效率高;④具有一定程度的不变性①可能导致信息的损失;②忽略不同尺度的空间信息CAM利用…

Allegro如何恢复器件的丝印,位号

在用Allegro Layout的过程中,有时候会无意间删除掉器件的丝印,位号等,那怎么恢复呢? 被无意删除的电容丝印框,如下图。 首先点击菜单Place 点击Update Symbols...(更新器件) 跳出下面的对话框,找到对应的封装类型打勾。 然后下面四项打勾,然后点击恢复按钮即可。 恢复…

国标GB28181安防视频平台EasyGBS显示设备无法注册是什么原因?该如何解决?

国标GB28181协议视频平台EasyGBS,是基于国标GB28181协议的视频云服务平台,支持多路设备同时接入,并对多平台、多终端分发出RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。平台可提供视频监控直播、云端录像、云存储、检索回放、智能告警、语音…

三维场景视图加载cgcs2000坐标系数据

需求: 高程服务:2000坐标系 底图:天地图2000坐标系 三维模型:2000坐标系 效果图: 测试数据: 链接:https://pan.baidu.com/s/1cJbMfzkMalY06wOrmXStSQ 提取码:uz2a 高程服务…

Xcode中如何操作Git

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…

Tips:关于自己电脑重装python的流程

新换电脑,记录下安装python环境的流程。 1.先安装python 网上随便找教程 2.再安装pycharm https://blog.csdn.net/thefg/article/details/128881507?loginfrom_csdnhttps://blog.csdn.net/thefg/article/details/128881507?loginfrom_csdn3.再修改默认的pip为…

BI零售数据分析,告别拖延症,及时掌握一线信息

在日常的零售数据分析中,经常会因为数据量太大,分析指标太多且计算组合多变而导致数据分析报表难产,零售运营决策被迫拖延症。随着BI数据可视化分析技术的发展,智能化、可视化、自助分析的BI数据分析逐渐成熟,形成一套…

UG\NX二次开发 获取图层所在的图层类别

文章作者:里海 来源网站:《里海NX二次开发3000例专栏》 感谢粉丝订阅 感谢 大熊猫小竹子 订阅本专栏,非常感谢。 简介 获取图层所在的图层类别,比如获取20层所在的图层类别。已经封装好函数。 效果 代码 #include "me.hpp"using namespace std;//获取图层所在的…

JAVA毕业设计107—基于Java+Springboot+Vue的民宿酒店预订管理系统(源码+数据库)

基于JavaSpringbootVue的民宿酒店预订管理系统(源码数据库)107 一、系统介绍 本系统前后端分离 本系统分为用户、前台、管理员三种角色(角色菜单可以自行分配) 前台: 登录、注册、民宿浏览、民宿评价、民宿酒店下单预订、密码修改、个人信息修改。 管理后台&…

云计算助力史上首届“云上亚运”圆满成功!

201金,魔幻的BGM,以及崛起的中国科技,让杭州亚运会成功出圈。 很多网友表示太震撼了!开幕式很漂亮,杭州为了奥运造新城真豪横,看完一整个文化自信住! 赛场内外除了无数个令人感动的瞬间&#…

ReuseAndDiffuse笔记

https://arxiv.org/pdf/2309.03549.pdf https://mp.weixin.qq.com/s/pbSK4KOO2hqQU1-uwQzjBA 数据集: BLIP-2、MiniGPT4 等多模态大语言模型,对Moments-In-Time、Kinetics-700 和 VideoLT等数据集进行自动标注; Image-text datasets:平移缩…

多亏了iOS 17.2!现在自定义Action按钮,让iPhone 15秒变翻译器

iPhone 15 Pro和iPhone 15 Pro Max在发布时的头条功能之一是“Action”按钮,它取代了iPhone从一开始就存在的熟悉的静音切换按钮。 Action按钮是一个多用途的自定义按钮,可以分配给各种功能(包括静音!)。事实上,由于它可以被指定为快捷方式,所以可能性是无限的。 苹果…

同步盘简介及功能解析:了解同步盘是什么及其实用性

数字化时代,办公中用户对于文件协同的需求越来越高。同步盘无疑是近几年最热门的文件协同工具。什么是同步盘?同步盘有什么用? 什么是同步盘? 同步盘是一种可以将文件存储至云端,然后同步至用户的各个设备的文件存储协…

Pod资源限制与探针

目录 资源限制 资源限制概述 资源单位 示例 示例1 示例2 探针 探针的三种规则 Probe支持三种检查方法 示例 示例1:exec方式 示例2:httpGet方式 示例3:tcpSocket方式 示例4:就绪检测 示例5:就绪检测2 …

vue-resource发送数据请求

vue-resource是Vue用于发送数据请求的一个插件库,在Vue1.0版本时使用比较频繁,现在Vue作者更支持使用axios进行数据发送。 一、安装vue-resource库 npm i vue-resource 二、使用vue-resource插件 使用插件之前需要先对插件进行引入 三、使用$http发送…