这篇文章讲述了在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 读书报告的更多相关文章

  1. Known plaintext attack

    When you find a ZIP/RAR file with password protected in the evidence, you may try dictionary attack ...

  2. 《读书报告 -- Elasticsearch入门 》--简单使用(2)

    <读书报告 – Elasticsearch入门 > ' 第四章 分布式文件存储 这章的主要内容是理解数据如何在分布式系统中存储. 4.1 路由文档到分片 创建一个新文档时,它是如何确定应该 ...

  3. 《读书报告 -- Elasticsearch入门 》-- 安装以及简单使用(1)

    <读书报告 – Elasticsearch入门 > 第一章 Elasticsearch入门 Elasticsearch是一个实时的分布式搜索和分析引擎,使得人们可以在一定规模上和一定速度上 ...

  4. 《精通CSS网页布局》读书报告 ----2016-12-5补充

    第一章:CSS布局基础 1.CSS的精髓是布局,而不是样式哦!  (定要好好的研究布局哦,尤其配合html5) 2. html标签的语义性,要好好的看看哦! 3.DTD:文档类型定义. 4.内联--& ...

  5. 《Write Optimized B-Trees》读书报告

    论文原作者:Goetz Graefe, Microsoft.我读完这篇论文后颇有收获,所以写了一篇论文报告,旨在更精炼准确地阐述论文核心思想. 摘要:论文提出了一种方法,这种方法可以优化B树索引写性能 ...

  6. 网络爬虫系统Heritrix的结构分析 (个人读书报告)

      摘要 随着网络时代的日新月异,人们对搜索引擎,网页的内容,大数据处理等问题有了更多的要求.如何从海量的互联网信息中选取最符合要求的信息成为了新的热点.在这种情况下,网络爬虫框架heritrix出现 ...

  7. 《读书报告 – Elasticsearch入门 》----Part II 深入搜索(2)

    第十三章 全文检索 这一章开始介绍 全文检索 :怎样对全文字段(full-text fields)进行检索以找到相关度最高的文档. 全文检索最重要的两个方面是: 相关度(Relevance) 根据文档 ...

  8. 《读书报告 – Elasticsearch入门 》----Part II 深入搜索(1)

    Part II 深入搜索 搜索不仅仅是全文本搜索:数据的很大部分是结构化的值例如日期.数字.这部分开始解释怎样以一种高效地方式结合结构化搜索和全文本搜索. 第十二章 结构化搜索 结构化搜索_ 是指查询 ...

  9. 前端学HTTP之摘要认证

    前面的话 上一篇介绍的基本认证便捷灵活,但极不安全.用户名和密码都是以明文形式传送的,也没有采取任何措施防止对报文的篡改.安全使用基本认证的唯一方式就是将其与SSL配合使用 摘要认证与基本认证兼容,但 ...

随机推荐

  1. 进程间通信之socketpair

    socketpair是进程间通信的一种方式. API: ]); DEMO: #include <stdio.h> #include <stdlib.h> #include &l ...

  2. D. Carousel(分类+构造)

    \(题目的要求似乎很低:只需要不同类的相邻元素不同色就行了.\) 下面的讨论的话,实际上最后一个点是关键,要想到怎么让最后一个点不开新的颜色就简单了. \(分情况讨论:\) \(\color{Red} ...

  3. mongodb cluster

    假设三台机器,ip分别为192.168.1.10,192.168.1.11,192.168.1.12,分别在每台电脑上下载并解压mongodb,关闭防火墙或者开放防火墙端口 一.安装shard 配置文 ...

  4. FPGA自计数六位共阳极数码管动态显示2(调用task的方法)

    `timescale 1ns/1ps module adc_dis( clk , rst_n , sm_seg , sm_bit ); input clk;//50HZ input rst_n; :] ...

  5. Vue2.0 + ElementUI 手写权限管理系统后台模板(一)——简述

    挤一下: 一开始以为没有多少人用就没建群,但是加我的人太多了,好多问题都是重复的,所以建个群大家互相沟通交流方便点,但是建的有点晚,错过了好多人所以群里人有点少,QQ群: 157216616 小提示 ...

  6. 热修复框架Tinker快速集成

    由于腾讯官方的demo对于刚接触的我来说,太过复杂,找不到核心配置,因此将tinker集成中最核心的东西抽取出来,整合到一个demo中. demo工程已经提交到github上,点击跳转 更多使用方法, ...

  7. 2020年腾讯实习生C++面试题&持续更新中(3)

    2020年腾讯实习生C++面试题&持续更新中(3) hello,大家好,我是好好学习,天天编程的天天. 来给大家大家分享腾讯实习生面经了. 天天希望大家看到面经后一定要做充分的准备,结合自己掌 ...

  8. 2、接口测试(Composer)

    前言 Fiddler最大的优势在于抓包,我们大部分使用的功能也在抓包的功能上,fiddler做接口测试也是非常方便的. 对应没有接口测试文档的时候,可以直接抓完包后,copy请求参数,修改下就可以了. ...

  9. 我的linux学习日记day1

    红帽考试 1.RHCSA ------>RHCE 210/300分 2015 RHEL7 2020 RHCE8 8月1改每个月25号 所以我如果想要在6月份考试,就要在 5月25前预约一个考场可 ...

  10. rabbitMQ基于spring-rabbitnq

    一.什么是MQ MQ全称为Message Queue,消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消息传递 ...