• Vulnerability of SSL to ChosenPlaintext Attack 读书报告


    这篇文章讲述了在SSL上的选择明文攻击。我想分四个部分讲讲我对这篇文章的理解。

    1.CPA的定义;

    2.文章讲述SSL相关基本概念漏洞;

    3.SSLCPA攻击的过程;

    4.实现这种攻击的可能性以及问题的解决。

     

    CPA

        CPA,即Chosen Plaintext Attack,选择明文攻击。Wiki上的解释是:在这种攻击模式中,攻击者可以实现任意选择一定数量的明文,让被攻击的加密算法加密,并得到相应的密文。攻击者的目标是通过这一过程获得关于加密算法的一些信息,以利于攻击者在将来更有效的破解由同样的加密算法(以及相关密钥)加密的信息。在最坏的情况下,攻击者可以直接获得解密用的密钥。

     

    SSL

        SSL,即Secure Sockets Layer

    文章描述的攻击是依赖于以下事实的:

        SSL标准可以用于对称密码系统,而文章所讨论的漏洞只限于使用分组密码。在文章中,漏洞主要是针对SSL加密的模式和使用的初始向量提出的。当一个加密报文的长度大于一个分组的长度时,就要使用加密工作模式,SSL使用的是CBC(Cipher Block Chaining)模式。

        在CBC模式中,第一块明文块要与一个初始向量(IV)异或,此后的明文块都与前一个产生的密文块异或。可以知道,在SSL中,只有在初始握手阶段中产生的一个初始向量(IV)()随机的,紧接在后的报文加密所使用的IV都是可以预测的,因为挑选的就是紧挨在前面的报文。这个事实在实现选择明文攻击中是重要的。

     

    SSLCPA攻击过程

    概述

        实际上,攻击者可能会提前知道用户要加密下一个报文所使用的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*)

                  

    我们想要测试的明文分组PjCj = Fsk(Pj Cj-1)中,CjCj-1都假设已知(通过截获密文得知),若C'= Cj 即有 P*=Pj。因此,目的达到,可以列举P*的可能值来判断明文分组Pj的值。

     

    在以上的攻击过程中需要满足一下要求:

    1.知道明文分组j包含的一些预期信息,比如传送http报文的格式;

    2.知道Cj-1

    3.知道加密下一条报文所使用的IV值;

    4.插入明文分组到下一条报文中,这是整个攻击过程中最富挑战的环节。

     

    实现攻击的可能性以及问题解决

        这里实现攻击的可能性主要是解决插入明文分组的问题,而相对于欺骗用户安装木马软件,让用户安装浏览器插件会更容易实现。首先,插件显得轻巧便携;其次,安装插件非常方便,安装浏览器插件也是常有的事。至于利用插件来实现插入明文分组的功能,应该是编写插件代码时要考虑的,在这篇文章中没有具体讲,文章中讨论的是实现的可能性。

        最后是解决这种漏洞的方法,很显然,经过以上的讨论,解决的办法有两个:一个是使用(伪)随机的IV,每次加密新的报文都是用随机的IV,而不是使用上一个报文;二个是改变加密的工作模式,比如使用计数器模式。



    如有错漏,恳请指教

  • 相关阅读:
    抽象类存在的意义
    抽象类的特征
    抽象类的使用
    抽象类的概述
    引用类型作为方法参数和返回值
    继承的特点
    目前Java水平以及理解自我反思---01
    继承后- 构造器的特点
    指针函数
    C数组灵活多变的访问形式
  • 原文地址:https://www.cnblogs.com/sevenr/p/3899949.html
Copyright © 2020-2023  润新知