读书笔记-《第六章-非对称加密和混合加密》

书籍信息

书名:《深入浅出密码学》

作者:[ 美 ] 戴维 • 王(David Wong)

译者:韩露露 ,谢文丽 ,杨雅希


(1)在第四章中我们学习的对称密码学中的认证加密算法(AES-CBC-HMAC, AES-GCM和ChaCha20-Poly1305),这类算法在使用上具有一定的局限性。其局限性体现在通信双方必须共享同一个密钥,问题是这个共享的同一密钥通信双方怎么在保证安全的前提下获取到呢?

(2)使用非对称加密技术可以消除认证加密算法这一局限性。非对称加密算法有一对公私钥;非对称加密算法可以在不知道对方解密密钥的情况下,使用(对方)加密密钥对发送给对方的数据进行加密,并确保对方可以解密。

(3)但是非对称加密算法也有其自身的局限性,主要表现为非对称加密算法允许加密的数据长度有限且加密效率不高(效率不高的原因是对称加密的操作是面向比特的,所以加密效率高,而非对称加密的操作常涉及大量复杂的数学运算)。使用非对称加密和认证加密技术结合起来形成的混合加密(Hybird Encryptoin)可以消除这两类算法各自的缺点。

(4)非对称加密也称为公钥加密(Public Key Encryption)

(5)非对称加密允许任何知道我们公钥的人向我们发送加密邮件。然而只有拥有私钥者才能完成解密,即只有我们可以解密已加密的邮件。

(6)在非对称加密算法初始化时,首先需要使用密钥生成算法产生一个密钥对。与密码算法的其他初始化函数一样,密钥生成算法也以安全参数为输入。安全参数的含义是密钥尺寸有多大(就理解成密钥的长度),一般来讲,密钥越长,密码算法就越安全。密钥生成算法生成的密钥对由两部分组成,即允许公开的公钥和必须保密的公钥。

(7)非对称加密的两种主要用途:

  • 密钥交换——使用非对称加密技术进行密钥交换是非常自然的;
  • 混合加密——非对称加密可加密的消息长度严重限制了它的实际用途。为了加密更长的消息,应该使用更有价值的混合加密算法。

(8)非对称加密可以用于密钥交换。执行密钥交换时,首先生成一个对称密钥,然后用Alice的公钥加密该对称密钥(该过程称为密钥封装),Alice收到密文后,通过解密密文来获得对称密码密钥,之后我们和Alice之间便有了共享密钥。(但是,这里面存在一个致命的问题:你怎么确定你所用的公钥就是Alice的公钥的呢?万一是中间人的呢?这就需要第七章的数字签名了解决信任问题了),具体流程如下图:

(9)在许多网络协议中,RSA算法是利用非对称加密进行密钥交换的常用算法。如今使用RSA算法进行密钥交换的协议越来越少。取而代之的是使用基于椭圆曲线的ECDH协议进行密钥交换。这主要是因为基于RSA算法的密钥交换协议标准及其实现存在诸多漏洞,以及ECDH算法的参数尺寸相对较小。(ECDH算法可以与不同的曲线结合使用,如常用的曲线 P-256, Curve25519, P-512, Curve448,SM2-P-256等,如ECDH和Curve25519曲线结合形成X25519密钥交换算法) 

(10)非对称加密和对称(认证)加密结合形成混合加密:非对称加密算法仅能加密长度不超过特定上限的消息,如RSA算法允许加密的明文长度取决于密钥生成期间设定的安全参数(即密钥长度),比如4096位的RSA算法允许加密的消息最大长度大约为500个ASCII字符(这是一条相当短的消息),因此应用中一般会采用混合加密技术,它允许加密的最大消息长度等价于认证加密算法的消息长度上限。并且混合加密和非对称加密有着一致的接口,我们还是使用公钥加密消息,拥有该公钥对应的私钥的人可以解密密文。两类加密方式的主要区别在于允许加密的消息长度上限。

(11)混合加密就是非对称加密和对称加密的组合,混合加密相当于先与消息接收者执行非交互式的密钥交换协议,然后使用认证加密算法对消息进行加密和认证。

混合加密技术原理:(1)如果要加密一个发给Alice的消息,首先要生成一个对称密钥,并把该密钥当作认证加密算法的密钥,之后用认证加密算法加密要发送的消息,如下图:

         (2)即使Alice收到了加密的消息,在没有对称密钥的情况下,她也无法解密消息。我们该如何向Alice提供这个对称密钥呢?答案是使用非对称加密技术,即用Alice的公钥加密该对称密钥。如下图所示:

        (3)最终,我们可以将这两个密文都发送给Alice,分别是:

                (a)用非对称加密算法加密的对称密钥;【常称这一部分的非对称加密算法为密钥封装机制(Key Encapsulation Mechanism, KEM)】

                (b)用对称加密算法加密的消息。【第二部分中的对称加密算法为数据封装机制(Data Encapsulation Mechanism, DEM)】

        (4)收到上面两个密文后,Alice通过私钥解密获得对称密钥,再用对称密钥解密已加密的消息,这个过程如下图所示:

  (12) 不要使用原生的RSA算法——不安全!

(13)不要使用PKCS#1 v1.5标准中的RSA算法 :PKCS#1标准实际上是第一个基于RSA算法的标准,该标准属于RSA公司在20世纪90年代初编写的公钥加密标准(PKCS)系列文档的一部分。

(14)非对称加密RSA-OAEP:1998年,PKCS#1标准的2.0版本正式发布,该标准中包含一个称为最优非对称加密填充(Optimal Asymmetric Encryption Padding, OAEP)的RSA算法填充方法。与PKCS#1 v1.5标准不同,此版本中的OAEP方案不易受百万消息攻击。因此,该版本指定的RSA算法标准更加安全。(但是后来发现了针对OAEP方案的时许攻击方法,这个攻击方法奏效的前提是OAEP方案没有正确实现时才有效)

(15)在OAEP方案之后,密码学家相继构造出一些更好的方案,并且也对它们进行了标准化。如RSA-KEM算法就属于其中之一,该算法具有更高的安全性,而且其安全实现也更加简单。原理如下图所示:

        针对上图,当Alice接收到<非对称密文>和<对称密文>该如何解密呢?首先Alice使用自己的私钥解密<非对称密钥>得到随机数,然后使用相同的KDF算法,获取对称密钥,然后通过对称密钥解密<对称密文>。注意:这里的KDF(Key Derivation Function , KDF) 是密钥派生函数,在第8章会深入学习。

(16) 如今许多协议和应用仍在使用不安全的PKCS#1 v1.5方案或安全的OAEP方案。(注意在上述的第11点中介绍混合加密时,不是需要使用非对称加密算法加密对称密钥嘛?这里使用的非对称加密算法就可以是 PKCS#1 v1.5或 RSA-OAEP或RSA-KEM,这就就解释了什么是 <基于RSA的混合加密方案>)。但是,越来越多的协议不再使用基于RSA算法的非对称加密算法,它们更倾向于使用ECDH密钥交换算法和混合加密算法。原因是ECDH算法的公钥尺寸更小,该协议的安全实现也相对简单

(17)基于椭圆曲线的混合加密标准(Elliptic Curve Integrated Encryption Scheme, ECIES):

        目前密码学家提出了许多混合加密方案,其中ECIEC是应用最为广泛的方案之一。ECIES方案指定ECDH算法为密钥交换协议,ECIES方案的工作原理类似于上面的< 11-(4) >,两个混合加密方案的不同之处在于KEM(Key Encapsulation Mechanism, 密钥封装机制)部分的实现,上面提到混合加密方案使用非对称加密(如基于RSA的混合加密方案)算法进行密钥交换,而ECIES方案使用ECDH算法进行密钥交换。ECIES方案的详细执行过程如下:

(17.1)首先,在加密消息前,需要运行ECDH算法完成密钥交换,即使用Alice的公钥和己方的私钥生成一个临时共享密钥。之后,将共享密钥当作AES-GCM这类AEAD型认证加密算法的密钥,对发向Alice的消息进行加密,如下图:

(17.2)加密完消息后,将临时公钥和密文(注意,共享密钥不发送)一起发送给Alice。Alice首先用收到的临时公钥和自己的私钥进行密钥交换,生成共享密钥。然后用这个共享密钥解密密文,恢复出原始消息。如果消息在传输过程中遭到篡改,解密就会出现错误。如下图是要给完整的ECIES方案示意图:

 

(18)上图就是ECIES方案的工作原理,把其中的ECDH密钥交换协议改成DH,就得到了该算法的变种IES,其工作原理与ECIES方案一样,但很少有人使用IES混合加密方案。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值