Vulnerability of SSL to Chosen-Plaintext Attack 读书报告
这篇文章讲述了在SSL上的选择明文攻击。我想分四个部分讲讲我对这篇文章的理解。
1.CPA的定义;
2.文章讲述SSL相关基本概念漏洞;
3.对SSL的CPA攻击的过程;
4.实现这种攻击的可能性以及问题的解决。
CPA
CPA,即Chosen Plaintext Attack,选择明文攻击。Wiki上的解释是:在这种攻击模式中,攻击者可以实现任意选择一定数量的明文,让被攻击的加密算法加密,并得到相应的密文。攻击者的目标是通过这一过程获得关于加密算法的一些信息,以利于攻击者在将来更有效的破解由同样的加密算法(以及相关密钥)加密的信息。在最坏的情况下,攻击者可以直接获得解密用的密钥。
SSL
SSL,即Secure Sockets Layer。
文章描述的攻击是依赖于以下事实的:
SSL标准可以用于对称密码系统,而文章所讨论的漏洞只限于使用分组密码。在文章中,漏洞主要是针对SSL加密的模式和使用的初始向量提出的。当一个加密报文的长度大于一个分组的长度时,就要使用加密工作模式,SSL使用的是CBC(Cipher Block Chaining)模式。
在CBC模式中,第一块明文块要与一个初始向量(IV)异或,此后的明文块都与前一个产生的密文块异或。可以知道,在SSL中,只有在初始握手阶段中产生的一个初始向量(IV)是(伪)随机的,紧接在后的报文加密所使用的IV都是可以预测的,因为挑选的就是紧挨在前面的报文。这个事实在实现选择明文攻击中是重要的。
对SSL的CPA攻击过程
概述
实际上,攻击者可能会提前知道用户要加密下一个报文所使用的IV,因为攻击者可以截获密文。基于以上事实,攻击者可以发动一个选择明文攻击来验证一个特定明文分组的可能值。还有一个重要的条件就是如何让用户加密攻击者想要验证的明文分组,但是,在现在开放的网络浏览器插件环境下,要实现也是相对容易的,例如欺骗用户安装一个有问题的插件,以此来插入明文字符串让用户加密。
公式、记号:
- Fsk(X) 用密钥sk加密分组X
- P1,.....,Pn 明文,Pi的长度是密文分组的长度
- C1,.....,Cn 密文
在CBC模式中有
- Ci = Fsk(Pi ⊕ Ci-1)
- Pi = Fsk-1(Ci) ⊕ Ci-1
接下来演示选择明文攻击的过程
前提: 1.观察得到密文C1,.....,Cn
2.知道加密下一个报文的IV(etc.Cn
)目的: 测试串P*是否与明文分组Pj相等
步骤: 令 P1' = Cj-1 ⊕ Cn ⊕ P*
则 C' = Fsk(P1' ⊕ Cn)
= Fsk(Cj-1 ⊕ Cn ⊕ P*
⊕ Cn)= Fsk(Cj-1
⊕ P*)我们想要测试的明文分组Pj在Cj = Fsk(Pj
⊕ Cj-1)中,Cj和Cj-1都假设已知(通过截获密文得知),若C'=
Cj 即有 P*=Pj。因此,目的达到,可以列举P*的可能值来判断明文分组Pj的值。在以上的攻击过程中需要满足一下要求:
1.知道明文分组j包含的一些预期信息,比如传送http报文的格式;
2.知道Cj-1;
3.知道加密下一条报文所使用的IV值;
4.插入明文分组到下一条报文中,这是整个攻击过程中最富挑战的环节。
实现攻击的可能性以及问题解决
这里实现攻击的可能性主要是解决插入明文分组的问题,而相对于欺骗用户安装木马软件,让用户安装浏览器插件会更容易实现。首先,插件显得轻巧便携;其次,安装插件非常方便,安装浏览器插件也是常有的事。至于利用插件来实现插入明文分组的功能,应该是编写插件代码时要考虑的,在这篇文章中没有具体讲,文章中讨论的是实现的可能性。
最后是解决这种漏洞的方法,很显然,经过以上的讨论,解决的办法有两个:一个是使用(伪)随机的IV,每次加密新的报文都是用随机的IV,而不是使用上一个报文;二个是改变加密的工作模式,比如使用计数器模式。
如有错漏,恳请指教。
Vulnerability of SSL to Chosen-Plaintext Attack 读书报告的更多相关文章
- Known plaintext attack
When you find a ZIP/RAR file with password protected in the evidence, you may try dictionary attack ...
- 《读书报告 -- Elasticsearch入门 》--简单使用(2)
<读书报告 – Elasticsearch入门 > ' 第四章 分布式文件存储 这章的主要内容是理解数据如何在分布式系统中存储. 4.1 路由文档到分片 创建一个新文档时,它是如何确定应该 ...
- 《读书报告 -- Elasticsearch入门 》-- 安装以及简单使用(1)
<读书报告 – Elasticsearch入门 > 第一章 Elasticsearch入门 Elasticsearch是一个实时的分布式搜索和分析引擎,使得人们可以在一定规模上和一定速度上 ...
- 《精通CSS网页布局》读书报告 ----2016-12-5补充
第一章:CSS布局基础 1.CSS的精髓是布局,而不是样式哦! (定要好好的研究布局哦,尤其配合html5) 2. html标签的语义性,要好好的看看哦! 3.DTD:文档类型定义. 4.内联--& ...
- 《Write Optimized B-Trees》读书报告
论文原作者:Goetz Graefe, Microsoft.我读完这篇论文后颇有收获,所以写了一篇论文报告,旨在更精炼准确地阐述论文核心思想. 摘要:论文提出了一种方法,这种方法可以优化B树索引写性能 ...
- 网络爬虫系统Heritrix的结构分析 (个人读书报告)
摘要 随着网络时代的日新月异,人们对搜索引擎,网页的内容,大数据处理等问题有了更多的要求.如何从海量的互联网信息中选取最符合要求的信息成为了新的热点.在这种情况下,网络爬虫框架heritrix出现 ...
- 《读书报告 – Elasticsearch入门 》----Part II 深入搜索(2)
第十三章 全文检索 这一章开始介绍 全文检索 :怎样对全文字段(full-text fields)进行检索以找到相关度最高的文档. 全文检索最重要的两个方面是: 相关度(Relevance) 根据文档 ...
- 《读书报告 – Elasticsearch入门 》----Part II 深入搜索(1)
Part II 深入搜索 搜索不仅仅是全文本搜索:数据的很大部分是结构化的值例如日期.数字.这部分开始解释怎样以一种高效地方式结合结构化搜索和全文本搜索. 第十二章 结构化搜索 结构化搜索_ 是指查询 ...
- 前端学HTTP之摘要认证
前面的话 上一篇介绍的基本认证便捷灵活,但极不安全.用户名和密码都是以明文形式传送的,也没有采取任何措施防止对报文的篡改.安全使用基本认证的唯一方式就是将其与SSL配合使用 摘要认证与基本认证兼容,但 ...
随机推荐
- ubuntu 和 centos 如何区分系统
Ubuntu Ubuntu有着漂亮的用户界面,完善的包管理系统,强大的软件源支持,丰富的技术社区,Ubuntu还对大多数硬件有着良好的兼容性,包括最新的图形显卡等等.这一切让Ubuntu越来越向大众化 ...
- idea配置tomcat运行参数,防止中文乱码和内存问题
点击选择 Edit Configurations... 修改 VM options ,参数在最后可直接复制 -Xms550m -Xmx1250m -Dfile.encoding=UTF-8
- Dynamics 365 基于 Sql Server 2017 安装 报表 问题
如果使用SQL2017 安装D365 会发现 SSRS与AD不能在同一台服务器上,因为无法安装SSRS,而无SSRS 则D365是无法继续安装的. 所以解决方法有二个: 1.另外准备一台服务器,不需要 ...
- python 读hdf4文件,再转写成一个tif文件
1.安装pyhdf包 (1)通过此链接查找并下载pyhdf包:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame(根据自己的系统及python版本选择 ...
- MySQL基础总结(三)
ORDER BY排序 ORDER BY默认是ASC(升序),降序是DESC LIMIT限制查询结果显示条数 LIMIT显示条数 LIMIT偏移量,显示条数 到目前为止有关查询数据的操作(DQL) 更新 ...
- Spring IOC使用详解
SpringIOC使用详解 一.IOC简介 IOC(Inversion of Control):控制反转,即对象创建的问题.通俗地讲就是把创建对象的代码交给了Spring的配置文件来进行的.这样做的优 ...
- SORM框架01
架构图 Query接口:负责查询(对外提供的核心服务类) QueryFactory类:负责根据配置信息创建Query对象 TypeConvertor接口:类型转换 TableContext类:负责获取 ...
- [hihoCoder1236 Scores 2015BeijingOnline]简单粗暴的分块+简单粗暴的bitset
题意:50000个5维向量,50000次询问每一维都不大于某一向量的向量个数,强制在线. 思路:做完这题才知道bitset效率这么高,自己本地测试了下1s可以操作1010个bit,orz简单粗暴 令S ...
- [hdu1085]生成函数
题意:给a个1.b个2.c个5,求不能构成最小的数 思路: 先求1能构成的所有数,2能构成的所有数,5能构成的所有数,它们的方法数显然都是1,现在考虑把3者结合在一起,由于结果为和的形式,而又是循环加 ...
- python 基础知识3-列表元祖
1.列表增. # append 追加,给列表的最后面追加一个元素 li = ['alex','wufa','太白','大白'] li.append('教师') li.append(1) print(l ...