密码学专题 数据填充的方式|序列加密的方式

  • 电子密码本模式和加密分组链接模式的分组算法都要求加密输入的分组是固定长度 的,但是大多数输入明文可能都不是分组长度的整数倍,也就是说,最后一个分组一般来 说是不足一个分组长度的。为了使分组加密算法能够正常工作,通常使用填充技术对最后 一个分组进行填充以使该分组正好为一个分组的固定长度。
  • 不足的部分填充0或者1
  • OpenSSL中使用的填充方法。使用该分组不够的字节的数作为值填充各个要填充的字节,这 样,在解密恢复的时候,检查最后一个字节的值就知道要删除的填充字节的数目。但是为 了使这种方法能正确工作,即便最后一个分组是完整的,也要增加一个分组作为填充
  • 例 如分组长度位是8字节 (64位),最后一个分组长度为5个字节,那么需要填充的字节是3,那么就使用数值3填充最后的3个字节。

  •  分组长度也是8字节 (64位),但是最后一个分组长度是完整的填充示意图,填充的字节 长度就是8个字节,数值为8

  • 上述方法有一个缺点,就是经过填充后,密文长度跟明文长度不一样,这在很多应用 中是非常不方便的。为此提出了一种称为密文挪用的分组填充办法 

 

序列加密模式 

  • 分组加密模式每次对一组数据进行加密处理,而序列加密模式则不同,它每次对一位明文进行简单运算 (一般是异或运算)从而得到密文
  • 一个序列加密模式结构一般由密钥序列发生器、运算单元(进行上述的简单的运算,比如进行异或运算)、明文输入和密文输出组成
  • 假设密钥序列发生器的输出位序列为K 1,K2 ,K3 ......,明文输入为P 1,P2,P3......,密文输出用C1、C2、C3......表示,序列加密模式可以使用公式如下

  •  序列加密模式的安全性完全依赖密钥序列的安全性,也就是说,依赖密钥序列发生器 的安全性。假如密钥序列输出总是为0,那么相当于没有加密,该加密系统就没有任何存在的意义,如果密钥序列是完全随机不重复的,那么该加密系统的安全性相当于一次一乱 密码本方式,几乎是不可破译的。当然,实际上很难构造出输出完全随机的密钥序列发生器。
  • 密钥序列发生器的输出虽然应该看起来是随机的,但必须是确定的,也就是说应该是可以控制的,否则如果加密跟解密的输出密钥序列不一样,就不可能进行正确的数据 解密。
  • 密钥序列发生器的输出不能每次都相同,否则就非常容易破密,没有任何安全性。在 一个密钥序列发生器每次输出都是一样的情况下,攻击者如果有机会获得一份明文跟密文对应的数据,他就可以恢复出密钥,从而可以用该密钥来读取任何使用该序列加密算法加 密的数据,不仅仅是以后的数据,也可以包括以前有办法截取到的数据。所以,为了使密钥序列发生器每次输出不一样,我们需要设置其状态,使得其开始输出的状态都不同,这个初始化的向量就是密钥。这样就增加了攻击者攻击的难度,如果他有办法获得一个密钥,只要更换密钥,他就只好获得新的密钥,但是很可能也是徒劳。
  • 一个密钥序列发生器理论上可以抽象为三部分:内部状态、状态转移函数及输出函数,如图所示。内部状态描述了密钥序列发生器当前的内部状态,对于一个同样结构的密钥序列发生器,相同的内部状态应该输出相同的密钥序列,否则就不可能进行正确的 加密和解密。状态转移函数描述了从当前状态转移到下一个状态的规则,从而产生一个新的状态输出函数对内部状态进行计算等处理,从而输出密钥序列。在实际应用中,这些组件的划分有时候并非那么明确。对于密钥序列发生器来说,密钥可以看作是对其内部状 态进行初始化或重置的向量

 自同步序列加密模式

  • 自同步序列加密模式又称为密文自动密钥,它的主要思想是密钥序列跟以前一定数量 的密文位相关,即密钥序列是以前一定数量密文位的函数。如图所示是自同步序列加密模 式的加密和解密框架图。

  • 如图所示的自同步序列加密模式中,内部状态就是由以前密文的n 位组成,而 内部状态中的n位密文作为输出函数的输入,所以,输出的密钥序列的复杂性和安全性完全依赖于输出函数。输出函数通常可以有各种各样的形式,比如可以使用分组加密算法或 单向散列函数算法为主体构成。因为在自同步序列加密模式中,解密端的内部状态在从开 始到收到n位密文之后,自动跟密文序列进行同步的解密,所以称为自同步序列加密模式。
  • 在自同步序列加密模式中,不需要进行人工的同步,一般来说,可以在开始的n 位 (假设内部状态是n位密文的函数)之前,可以随便传送一些信息,这些解密一般是不正确的,在收到n位密文之后,就开始实现同步,能够进行信息的正确解密了。这种能够自动进行解密密钥同步的功能在某些应用中是很有用的。
  • 自同步序列加密模式事实上跟分组加密模式中的加密反馈模式很相似,同样存在错误扩散问题。也就是说,如果有一位密文发生了错误,那么随后的n位密文的解密都不能正确进行
  • 在密钥没有更换的情况下,自同步序列加密模式很容易受到回放攻击,攻击者可以将 记录下的密文重新发送给接收者,因为解密器能够自动进行同步,所以接收端会重复接收到正确的解密信息。这在一些电子交易应用中可能给攻击者带来巨大的利益。

自同步加密模式的特点

  •  内部状态是前面n位固定长度密文的函数。
  • 算法的安全性依赖于输出函数的复杂性和安全性。
  • 会产生密文错误扩散,密文中一位发生错误,会导致其后n位密文不能正确解密。
  • 解密的时候具有密钥序列和密文自动同步的功能,具有同步错误自恢复功能。
  • 明文长度和密文长度相同。
  • 容易受到回放攻击。

 同步序列加密模式

  • 同步序列加密模式又称为密钥自动密钥加密,它的特点是密钥序列的产生跟处理的消息是不相关,相互独立的。如图所示是同步序列加密模式的加密和解密流程。

  • 在加密端,密钥序列发生器在使用密钥进行初始化后开始产生密钥序列,在解密端, 密钥序列发生器使用同样的密钥进行状态初始化从而产生同样的密钥序列,这样就能够开 始进行正确的加密和解密。一般来说,加密端和解密端的同步都是通过相同的密钥进行状 态初始化设置实现的。由于在加密和解密端必须产生相同的密钥,所以事实上同步序列加 密模式的密钥发生器产生的密钥必须是确定的,必须保证这些输出密钥序列在相当长的一 个范围内不能重复,否则安全性将得不到保证。当然,最好是不重复,但这基本上是不可 能做到的。
  • 如果在解密过程中同步状态被破坏了,比如增加或删除了一个密文位或者密钥序列发生器跳过了一个周期,那么必须重新进行同步,否则数据不可能进行正确的解密。所以同步序列加密模式对同步错误是没有办法恢复的。
  • 同步序列加密模式不会产生密文错误扩散,如果一个密文位发生了错误,它只会影响该位的正确解密,而不会对其他任何密文位的解密产生影响。因为同步序列加密模式不会对密钥和密文进行自动同步,所以能够一定程度上防止直接针对密文的一些攻击。比如在密文中插入或删除一位很容易被发现,这时候因为失去同 步,解密的可能都是乱码。在自同步序列加密模式下采用的简单回放攻击,对同步序列加密模式也是基本无效的。 

同步序列加密模式的特点

  • 密钥序列的产生跟明文和密文消息都无关。
  • 不会产生密文错误扩散,但是没有同步错误自动恢复功能。
  • 密文和明文长度相同。

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

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

相关文章

win10此电脑不见了_教程 | win10总提示“你要允许此应用对电脑的修改吗”,如何关闭?...

在使用电脑的时候,你是否曾遇到过这样的情况,点击打开软件的时候,系统总是提示我们“你要允许此应用对你的设备进行修改吗?”难道是软件中病毒了吗?,这其实上并没有什么用处,只是系统无法判断软…

密码学专题 加密模式的选择|传输数据加密

分组加密模式和序列加密模式。它们之间最大的区 别在于分组加密模式每次对一组数据进行加密运算处理,而序列加密模式则逐位对数据进 行加密运算处理。事实上,在实际设计应用的算法中,并没有那么严格的区别,它们有可能是相互结合的…

微信公众号数据2019_2019年9月原创公众号排行榜数据报告出炉

西瓜数据发布 2019 年 9 月原创公众号排行榜,分别从西瓜指数、原创文章占比、周期内公众号发文次数、发文篇数、总阅读数、头条平均阅读数等方面展示公众号数据。榜单说明1、涉及榜单本期月榜截取 ①财经、②教育、③娱乐、④科技、⑤体育、⑥游戏、⑦文化、⑧美食、…

密码学专题 OpenSSL专题

OpenSSL总体架构 软件包分为三个主要的功能部分:密码算法库 、 SSL协议库及应用程序 MacOS,MS,OS/2及 VMS这几个目录,包含了在不同的 平台编译时的环境变量配置文件,在安装编译完成之后,这几个目录就没有作…

java 华氏温度转换为摄氏温度

题目 小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。 它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。 公式:华氏温度(摄氏温度-32)/1.8 M…

hs控什么意思_凡尔赛文学 到底是什么?

点击蓝字关注我们XIE XIE NI DE XI HUAN|| 动漫 情头 耽美 闺蜜 男女头 句子控 壁纸 ||左句 凡尔赛文学野象:老是有人提知不知道凡尔赛文学,说实话我不太清楚网络时下流行的梗,也没有兴趣参与,我还是比较喜欢欧洲古典文学和后现…

密码学专题 openssl编译和安装

Configure 脚本文件 使得OpenSSL可以适应多种不同的系统平台和多达几十种不同的编译器。Configure指令还可以使OpenSSL在编译的时候具备组件的选择功能,比如可以选择支持或者不支持某种算法或者协议等,这使得OpenSSL具有很大的灵活性,比如在…

Python学习12 文件的读写

目标 文件的打开和关闭 mode缺省情况下表示只读r 文件的路径 前面加个r’,代表其中的转义字符不起作用 文件的打开方式 案例:实现文件拷贝的功能 将某一文件夹下的某一文件 保存在当前文件 所在目录。 import os #读取文件1 path./file.txt fileopen(path,…

密码学专题 openssl的基本概念

配置文件 配置文件是OpenSSL的一个基础结构组件,OpenSSL使用一组称为OpenSSLCONF的函数来读取OpenSSL配置文件的信息。OpenSSL提供的主配置文件是opensl.cnf,它集成了OpenSSL所要使用的配置文件选项的大部分内容。此外,OpenSSL还提供了其他一…

该工程中的宏被禁止_建筑劳务分包都能承担什么工程

来源:找法网建筑工程的承包单位,也就是总承包单位可以将部分建造工程分包给具有资质的施工单位,这是法律所允许的,但是禁止将建造工程进行转包。一、建筑劳务分包都能承担什么工程建筑劳务分包能承担什么工程要看分包单位的资质&a…

matlab用辛普森公式求积分_积分近似计算之辛普森公式

对于积分区间[a, b],若则成立辛普森公式辛普森公式可看作是改良的梯形公式。梯形公式是以直线逼近实际曲线,而辛普森公式则以二次曲线(即抛物线)逼近。以二次曲线逼近实际曲线根据辛普森公式可得各积分小区间内的积分值如下式所示:其中于是&a…

密码学专题 文件编码格式

OpenSSL中虽然使用PEM作为基本的文件编码格式,但是,由于不同的对象其封装的标准格式不太一样,所以经常会导致读者产生迷惑。此外,OpenSSL也支持DER编码和过时的Netscape编码格式(NET)OpenSSL的编码是基于ASN.1标准的,A…

echarts 折线图 设置y轴最小刻度_【硬货】vue全家桶+Echarts+百度地图,搭建数据可视化系统...

作者丨夙言来源丨前端大牛爱好者(Web-2017)https://segmentfault.com/a/1190000018993981本文章篇幅略长,内容有点多,大佬可根据目录选择性查阅,新人可一步步来阅读。1、 前言1.1 业务场景突然接到产品说要做一个数据监控的系统。有线图、柱状…

密码学专题 文本数据库

应用概述 文本数据库是跟OpenSSL的CA应用程序紧密结合在一起的,它以文本的方式记录CA已经签发的证书的状态和摘要信息。这些状态信息可以用于跟证书库相关的一些操作,比如使用ca指令生成CRL主要就是读取这个文本数据库的信息作为参考。文本数据库就是普…

Python学习13 异常处理机制

概括 常见的异常 异常处理机制 可以多个异常放在元组里面 一旦产生异常,try后面的语句不会继续执行,会做异常处理 异常使用场景1 close应该放在finally中 异常使用场景2 finally关键字 会执行except后面的,报错

java 布隆过滤器_牛逼哄哄的布隆过滤器,到底有什么用?

Java技术栈www.javastack.cn打开网站看更多优质文章作者:CodeBear的园子www.cnblogs.com/CodeBear/p/10911177.html本文是站在小白的角度去讨论布隆过滤器,如果你是科班出身,或者比较聪明,又或者真正想完全搞懂布隆过滤器的可以移…

Java web后端6 java Bean EL表达式

EL表达式和JSTL概述 java Bean规范 java中成员变量使用类Integer private Integer count; java Bean的创建 创建java Bean: BookTest.java package com.example.elandjstl.bean;public class BookTest {//java中成员变量使用类Integerprivate Integer count;private Boolean…

python根须系统斜杠_深入浅出Python中的os模块

「Author:Runsen」当初学Python的时候,把一些标准库和第三方开源库学的七零八落,不成系统,正好趁这个机会来系统的整理一下,先从Python常用的标准库os开始吧。osOS模块简单的来说它是一个Python的系统编程的操作模块&a…

Java web后端7JSTL

概括 下载jstl的jar包 官网&#xff1a;https://mvnrepository.com/ 网址1&#xff1a;https://search.maven.org/ 在pomxml中插入依赖&#xff1a; <dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1…

Python学习14 模块和包

模块 公共类、函数都可以放在独立的文件中&#xff0c;这样其他多个程序都可以使用&#xff0c;而不必把这些公共性的类、函数等在每个程序中复制一份&#xff0c;这样独立的文件就叫做模块&#xff0c;它们的扩展名为.py 标准库中的模块 使用help查看模块 代码&#xff1a; …