这篇文章讲述了在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. js获取session对象

  2. Golang 实现 Redis(5): 用跳表实现SortedSet

    本文是使用 golang 实现 redis 系列的第五篇, 将介绍如何使用跳表实现有序集合(SortedSet)的相关功能. 跳表(skiplist) 是 Redis 中 SortedSet 数据结构 ...

  3. python 矢量数据转栅格数据

    from osgeo import gdal,osr,ogr#定义投影sr = osr.SpatialReference('LOCAL_CS["arbitrary"]')#在内存中 ...

  4. Directory类和DirectoryInfo类

    1.Directory类 Directory类公开了用于创建.移动.枚举.删除目录和子目录的静态方法 2.DirectoryInfo类 DirectoryInfo和Directory类的区别可以参看F ...

  5. 【Kafka】实时看板案例

    目录 项目需求 项目模型 实现步骤 项目需求 快速计算双十一当天的订单量和销售金额 项目模型 实现步骤 一.创建topic bin/kafka-topics.sh --create --topic i ...

  6. What?废柴, 模拟登陆,代码控制滑动验证真的很难吗?Are you kidding???

    1.简介 在前边的python接口自动化的时候,我们由于博客园的登录机制的改变,没有用博客园的登录测试接口.那么博客园现在变成了滑动验证登录,而且现在绝大多数的登录都变成这种滑动验证和验证码的登录验证 ...

  7. ThinkPad BIOS

    ThinkPad-BIOS    如有问题指出 ~谢谢

  8. Mybatis 快速入门(XML方式)第一天

    导读 架构原理图 说明 mybatis配置文件 SqlMapConfig.xml,此文件为mybatis的全局配置文件,配置了mybatis的运行环境等信息 XXXMapper.xml,此文件作为my ...

  9. 简单mysql存储过程

    直接上代码: CREATE DEFINER=`root`@`localhost` PROCEDURE `sos`( ) BEGIN -- 创建一个临时表 DROP TABLE IF EXISTS fi ...

  10. C#如何给WinForm的button等控件添加快捷键

    网上有三种方法来设置快捷键,经本人验证后得出最优方法   Alt+*(按钮快捷键) 在大家给button.label.menuStrip等控件设置Text属性时在后边加&键 名就可以了,比如b ...