密码学专题 相关概念的解析 对称算法|算法的安全性|非对称算法存在的问题|单向散列函数|数字签名的弊端|密钥交换

对称加密算法

  • 对称加密算法又可以分成流加密算法和块加密 算法。
  • 流加密算法又称为序列加密算法或序列密码,它每次只对明文中的单个位或单个字节 进行加密操作。这种算法的优点是能够实时进行数据传输和解密,缺点是抗攻击能力比 较弱。
  • 块加密算法又称为分组加密算法或分组密码,它每次对明文中的一组数据位进行加密 操作。现在使用的分组加密算法典型的分组长度是64位,因为经过密码学家们证明,这 个长度大到足以防止破译攻击,而又小到足以方便使用。块加密算法的优点是抗攻击能力 好,但是实时性稍微差一点。

算法的安全性

  • 唯密文攻击。密码分析者通过各种途径得到了使用同一算法加密的密文,密码分 析者通过分析这些密文得出部分或全部明文消息,有时候也能够得到加密密钥,这样就可 以用来解密别的密文。这种情况下一般要求有较多的密文作为攻击资料

  • 已知明文攻击。密码分析者在幸运的情况下,不但得到了密文,而且得到了这些 密文相应的明文。他们通过密文和明文的对照推导出加密的密钥或者设计一种新的算法, 使得使用相同密钥和算法加密的信息都能够被解密。

  • 选择明文攻击。密码分析者不但可以得到密文和相应的明文,并且在必要的时候 可以选择被加密的明文,这样,密码分析者能够获取更多的信息用来获得加密的密钥或者 设计一种新的算法,使得使用相同密钥和算法加密的信息都能够被解密。

  • 选择密文攻击。密码分析者可以选择不同的被加密的密文,而且能够得到相应的 明文,从而从这些信息中推导出密钥或设计新的解密算法。

  • 选择密钥攻击。事实上密码分析者并不能选择加密密钥,这里指他可能具有各种 密钥之间相互关系的一些专业知识,从而用这些专业知识达到破译目的。

  • 社会工程。事实上,很多情况下这是最有效的方法,就是通过欺骗、威胁、贿赂、 监视和其他非法手段对密钥持有人进行攻击,直到得到密钥为止。

上述的所有攻击手段 (除了最后一个)都可以作为我们评估一个算法安全性的参考依 据。事实上,没有一个算法可以宣称是绝对安全的,各种算法有不同层次的安全性。对算 法安全性的评估没有统一的标准,但基本上可以从以下几个方面考虑。

  • 价值代价。如果破译算法的代价大于加密数据的价值,算法可以算是安全的。
  • 时间代价。如果破译算法所需要的时间比加密数据需要保密的时间更长,算法可 以算是安全的
  • 可能性。如果使用该密钥加密的数据量远远小于破译该算法需要的数据量,算法 可以算是安全的。

根据破译算法程度的不同,可以将算法安全性分为五个等级,下面的安全性由低到高 列出。

  • 全部破译。能得到密钥,使得所有使用该密钥加密的密文都能被恢复成明文。
  • 全盘推导。通过分析,可以找到一个替代算法,在不知道密钥的情况下恢复出所 有该密钥加密的明文。
  • 局部推导。能够从得到的密文中计算出相应的明文。 信息推导。通过分析可以得到部分有关密钥或明文的信息。 不能破译。无论给出多少密文信息,都不能恢复出明文信息。事实上,只要使用蛮力攻击,几乎所有实际的算法都是可以破译的 (除了一次一乱密码)。 在实际使用中,我们只要考虑一个算法在计算上的安全性就可以了。也就是说,当一 个算法用当前所能得到的所有资源都不能破译的时候,就可以说这个算法是安全的。破译 算法的难易程度可以用攻击算法的复杂性来衡量。

攻击算法的复杂性从下面三个方面衡量。

  • 数据复杂性。即攻击时需要的数据量。
  • 计算复杂性。完成攻击计算所需要的时间或计算量。
  • 存储量需求。进行攻击所需要的最大存储空间。

一般来说,攻击的复杂性值等同于这三个因素中最小的值。

  • 复杂性一般用数量级来表示,比如一个算法的计算复杂性是2^128,那么破译这个算法 就需要2128次运算。这可能用最好的计算机也要花费1015年以上的时间才能完成计算,这 在实际中是不可行的,那么该算法也就是安全的。当然,现在的计算机速度快速发展,目 前看起来不可能破解的算法过几年或几十年可能就能轻而易举地被破解。但是没有必要担 心,只要你使用的算法在最近的几年或几十年是安全的,那么就是一个计算上安全的算 法。以后计算能力增强了,自然会出现更强大的加密算法

非对称算法的存在的问题

  • 公开密钥算法比对称加密算法慢
  • 公开密钥算法抵抗选择明文攻击的能力较低。这是因为公开密钥算法的加密密钥 是公开的,攻击者可以尝试加密各种明文以跟获取的密文相对照来确定明文。如果明文的 取值范围是有限的,这种攻击就很有效。而对称加密算法因为密钥都是秘密的,所以不容 易受到这种攻击。

单向散列函数

  • 单向散列函数结合了单向函数和散列函数的特点,是指在一个方向上工作的散列函 数。也就是说,从输入值得到散列值很容易,但使散列值等于某一个值却是非常困难的事 情。好的单向散列函数应该具备无冲突的特点。所谓无冲突,并非真正意义上的无冲突, 它实际上是指两个不同的输入产生相同散列值的可能性非常小。一般来说,一个好的单向 散列函数如果其输入值有一位改变,那么将引起其散列值一半数据位的改变。所以,已知 一个散列值,要找到一个输入值,使得其散列值等于已知散列值在计算上是不可能的。
  • 单向散列函数在密码学中的应用非常广泛,基本上来说可以分为不加密散列值和加密 散列值的应用。不加密的散列值一般用作文件指纹或数据指纹。
  • 加密的散列值一般称为消息鉴别码 (MAC),它的功能跟单向散列函数基本一样,只有拥有解密密钥的人才能验证该信息。单向散列函数还应用在数字签名中以提高运算 的速度。

数字签名的弊端

  • 数字签名的抗抵赖功能时,基于一个隐性前提,即私钥跟签名者个人是 绝对等同的,但是私钥和其使用者是两个不可以等同的实体,因此 使用者完全可以声明私钥丢失造成数据的泄露。
  • 增加限制的措施,比如将私钥隐藏在不能读出的硬件模块 中,用于密码用途的智能卡就是这样的设备。
  • 采用时间标记也可以一定程度上限制这种抵 赖行为,至少可以确保以前旧的签名依然有效。事实上,时间标记在实际的数字签名应用 中经常采用,它可以防止签名重用和信息重放等攻击。

多重签名

  • 多重签名也是实际应用中可能经常遇到的问题,一般都使用单向散列函数,多个签名 者可以分别对文件的散列值进行签名,然后再一起发给接收者。如果不使用单向散列函 数,问题会麻烦得多。一种可能的方案是签名者分别对原来的文件签名,这样得到的签名 文件内容将是原来的n倍,n等于签名者的个数;另一种可能方案是后一个签名者在前一 个签名者的签名基础上继续进行签名,直到所有签名者都完成签名,但是这样同样带来一 个问题,即验证的时候必须先验证最后一个签名者的签名,然后往前类推,这带来了应用 上的限制。

高级密钥交换协议

连锁密钥交换协议

  • 连锁密钥交换协议是解决中间人攻击的一个巧妙的协议,当然不是一个能够完全防止 中间人攻击的协议,只是增加了中间人攻击的难度。它基于这样一种技术,即拥有加密消息的一半是没有意义的,不能进行解密。这种技术是存在的,最简单的例子就是分组加密算法,因为分组加密算法中消息的解密依赖初始向量,后面部分消息的解密要依靠前面的 消息,所以可以先发送后面部分的消息,然后再发送前面部分的消息,这样,即使先得到 消息的后面部分也是不能解密信息的。
  • 连锁密钥交换协议的基本步骤如下。

  • 连锁协议最重要的特点是,双方发送消息的时候是相互连锁的,也就是说,通信一方只有收到另一方发送的消息的一部分后才会继续协议,否则就会等待或终止协议。这样的 信息发送连锁,使得中间的攻击者没有办法进行窃听式的中间人攻击。
  • 攻击者可以在通信中截获通信双方的公钥,并用自己的公钥替代通信双方的公开密 钥。但是当攻击者在第2步截获到消息的时候,虽然该消息是用他的公钥加密的,但是因 为只有一半,所以至少暂时没有办法解密,同时因为协议是连锁的,所以他这时候只有两 个选择,要么伪造一个假消息给Jim,要么终止攻击行为,我们假设他有勇气继续碰运 气。在第3步的时候,他存在同样的困难选择,只好再伪造一个假消息。这样,当他在后 续的两步收到可以解密的全部消息时,他已经没有办法修改以前伪造的消息。当然,这样 他还可以用伪造的消息假装跟通信双方继续进行交谈,但是这样显然比窃听获取有用的信 息更加困难。因为 他不使用自己的公钥替换通信双方的公钥,一旦分组第一块成功之后,就没有机会解密双方通信的内容;但是一旦替换了,就只能一直替换下去,就无法完成窃听的功能。

使用证书的密钥交换协议

  • 基于公钥算法的密钥交换协议 之所以被中间人进行攻击是因为无法将公钥和个人的身份证明相互关联。所以攻击者可以随意地用任何公开密钥替代通 信双方的公开密钥。假设我们使得公开密钥跟身份证明是紧紧联系在一起的,那么攻击者 就难以通过简单的替换公开密钥的方式冒充通信任一方。数字证书或者说数字签名技术可 以将公开密钥跟某个人的身份证明关联在一起。
  • 在这种高级密钥交换协议中,需要一个可信任的第三方,这个第三方能够验证任何想 通过验证的用户,他是绝对可信的。他用自己的私钥对一个用户的公钥和用户个人信息进 行签名,形成一个数字证书。可信任的第三方自己的公钥是任何用户都可以取得的,这样 任何用户都可以通过验证这个第三方的数字签名来确定通信对方发送过来的公钥是不是真 的是他自己的公钥。这样,攻击者想要冒充第三方就很困难,因为他没有可信任的第三方 的私钥,没有办法伪造他的签名。
  • 当然,这种使用证书的密钥交换协议很依赖可信任的第三方,如果可信任的第三方受 到攻击,整个通信系统的安全性将面临威胁,但是这种攻击显然比中间人攻击难得多。事实上,即便攻击者取得了对第三方私钥的控制权,也难以对以前签发的公钥证书进行更方便的攻击。

 不需要密钥交换协议的安全通信

 

 

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

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

相关文章

java 交换两个数的值(临时变量,加减,异或)

临时变量 开发中一般使用此方式 加减 第二种写法: //3.使用加减d1d1d2;d2d1-d2;d1d1-d2;System.out.println("d1"d1"\td2"d2);异或(位运算符) 原理 ^异或:相同为0,不同为1 总代码 class ExchangeNumber {public st…

51单片机下载完程序后不亮_程序如何下载到单片机中?单片机常用的四种烧写程序方式介绍...

单片机是一种可编程控制器,搭好硬件电路后,可以利用程序实现很多非常复杂的逻辑功能,与纯硬件电路相比,简化了硬件外围的设计、方便了逻辑的设计、丰富了逻辑的输出。不同厂家的单片机需要不同编程IDE来实现编程。在学习单片机之前…

java 使用三元运算符和if-else获取两个和三个数中的最大值

三元运算符格式 三元运算符:获取两个数中最大值 三元运算符:获取三个数中最大值 三元运算符:总代码 //案例1:获取两个数中最大的数int num178;int num256;int max1(num1>num2)?num1:num2;System.out.println("max1"max1);//max178//案例2:…

密码学专题 鉴别协议|实际应用的混合协议

鉴别是指确定一个人的身份,即确定一个人是否是他所宣称的身份 基于口令的鉴别协议 口令是最常用和最常见的鉴别协议。当登录一台重要的计算机时,它会要求输入用户 名和密码,用户名代表你的身份,口令起鉴别作用,如果你…

如何用texstudio下载ctex_公众号素材库视频如何下载,用这种方法就可以哦

随着微信的不断崛起,它现在不仅仅是一个交流软件还包含着很多功能,其中里面就有各种微信公众号,我们可以在公众号上找到许多有用的视频,今天拓途数据就告诉大家公众号素材库视频如何下载吧。 如何下载微信公众号里的视频文件 复制…

java 进制转换 十进制转二,八,十六进制

十进制转其他进制 因为在java中位运算符是直接对数值的二进制数进行操作的 并且 写的是二进制数在输出和操作时是以十进制数的形式; 所以十进制转二,八,十六进制;就已经实现了二进制,八进制,十进制&#x…

密码学专题 密钥生成|分组加密的模式 ECB|CBC|CFB|OFB

密钥生成 如何安全地生成密钥。即如何生成可信任的密钥,保证用户得到的密钥是安全的, 生成密钥的机器或程序是可信的。如何生成安全的密钥。安全的密钥没有统一准确的定义,但一般来说是指密钥抗 猜测和抗穷举等针对密钥攻击的能力。涉及密钥…

excel高级筛选怎么用_Excel表格中高级筛选的优点以及常用方法介绍

在Excel表格中普通的数据筛选只能满足一些基本的筛选要求,这篇文章为朋友们总结一下高级筛选的优点以及常用方法。一.与普通筛选相比,高级筛选可以使用比较运算符。在下图中要筛选性别为男并且评分大于90的人员。如果使用普通筛选需要一个个的勾选成绩大…

STL源码剖析 第二次温习 细节审核

临时对象的产生 临时对象也叫做 无名对象,(使用pass by value的方式会引发copy的操作,于是产生一个临时的对象),造成效率的负担,但是可以可以制造一些临时对象在型别的后面 直接加上() 并可以指定初始数值,相当于调用…

java 彩票游戏

题目 Math.random()获取随机数 Math.random()返回的是一个[0.0,1.0)的doule类型的数 所以,获取0-9:(int)Math.random()*10–> [0,10) 获取0-10:(int)Math.random()*101–> [0,11) 获取10-99:(int)Math.random()9010–> […

python异常处理_Python入门 断言与异常处理

一、断言断言,可以理解为判断是否断开的预言。assert 表达式 , 描述表达式为我们的预期结果,当表达式的结果为False时,抛出 AssertionError 异常,如无异常捕获程序遇到异常时直接结束运行。反之,表达式结果为True 程序…

百度关键词排名查询源码_章丘百度霸屏总部,关键词排名腾沃云

上海保沃腾沃云为您详细解读URiIr章丘百度霸屏总部的相关知识与详情,做网站SEO优化文章内容优化效果已经十分明显。内容的量量关于网站的整体量量很重要。通过关键字阐发,陈某们晓得需要环绕关键字编写网页。使您的内容的重要根底是您对网页筹算描述的卖…

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

电子密码本模式和加密分组链接模式的分组算法都要求加密输入的分组是固定长度 的,但是大多数输入明文可能都不是分组长度的整数倍,也就是说,最后一个分组一般来 说是不足一个分组长度的。为了使分组加密算法能够正常工作,通常使用…

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具有很大的灵活性,比如在…