详细讲解HTTP 的安全问题( 二 )


3.1 密钥长度与枚举攻击在很多情况下,编 / 解码算法都是众所周知的,因此密 钥就是唯一保密的东西了 。
好的加密算法会迫使攻击者试遍每一个可能的密钥,才能破解代码 。用暴力去尝试所有的密钥值称为枚举攻击(enumeration attack) 。如果只有几种可能的密钥值,居心不良的人通过暴力遍历所有值,就能最终破解代码了 。但如果有大量可能的密钥值,他可能就要花 费数天、数年,甚至无限长的时间来遍历所有的密钥,去查找能够破解密码的那一个 。
可用密钥值的数量取决于密钥中的位数,以及可能的密钥中有多少是有效的 。
8 位的密钥只有 256 个可能的密钥值, 40 位的密钥可以有 240 个可能的密钥值(大约是一万亿个密钥),128 位的密钥可以产生 大约 340 000 000 000 000 000 000 000 000 000 000 000 000 个可能的密钥值 。
但是也有例外,并不是所有的加密技术中的密钥值都是全部有效果的,比如,在最知名的非对称加密算法 RSA 中,有效密钥 必须以某种方式与 质数相关 。可能的密钥值中只有少量密钥具备此特性 。
在传统的对称密钥加密技术中,对小型的、不太重要的事务来说,40 位的密钥就足够安 全了 。但现在的高速工作站就可以将其破解,这些工作站每秒可以进行数十亿次计算 。相比之下,对于对称密钥加密技术,128 位的密钥被认为是非常强大的 。
实际上,长密钥对密码安全有着非常重要的影响,美国政府甚至对使用长密钥的加密软件实施了出口控制,以防止潜在的敌对组织创建出美国国家安全局(National Security Agency,NSA)自己都无法破解的秘密代码 。
Applied Cryptography 这本书中有一个表,记录了1995年的通过猜测所有的密钥来破解一个 DES 密码所需的时间进行了描述 。
 

详细讲解HTTP 的安全问题

文章插图
 
 
可能这个数据并不是很适用现在,计算机的速度在成倍数的增长,但是这个图,我们也可以乘以相对应的倍数,那还是比较有参考价值的哈 。
对称密钥加密技术的缺点之一就是发送者和接收者在互相对话之前,一定要有一个共享的保密密钥 。
比如你想要和淘宝卖家建立私密的对话的话,那么在安全下单之前,需要和淘宝网建立一个私有的保密密钥,你需要一种产生保密密钥并将其记住的方式,如果全网的人都是这样的,那就可能记住太多的东西了,这就是噩梦般的存在呀 。于是就出现了后边的内容,请看下边:
4.公开密钥加密公开密钥加密技术没有为每对主机使用单独的加密 / 解密密钥,而是使用了两个非对称密钥:一个用来对主机报文编码,另一个用来对主机报文解码 。编码密钥是众所周知的(这 也是公开密钥加密这个名字的由来),但只有主机才知道私有的解密密钥 。
每个人都能找到某个特定主机的公开密钥,密钥的建立变得更加简单 。但解码密钥是保密的,因此只有接收端才能对发送给它的报文进行解码 。
详细讲解HTTP 的安全问题

文章插图
 
公开密钥加密技术是非对称的,为编码和解码使用了不同的密钥 。
那我们就需要把对称密钥加密和公开密钥加密来做个对比了 。
 
详细讲解HTTP 的安全问题

文章插图
 
 
所有公开密钥非对称加密系统所面临的共同挑战是:
  • 公开密钥(是公有的,所有人都可以获得);
  • 一小片拦截下来的密文(可通过对网络的嗅探获取);
  • 一条报文及与之相关的密文(对任意一段文本运行加密器就可以得到) 。
就算你知道这三个条件,也无法计算出保密的私有密钥,这就是公开密钥非对称加密系统所要面临的挑战 。
RSA 算法就是一个满足了所有这些条件的流行的公开密钥加密系统,关于RSA算法,本文先不深究,之后在我看完密码学这本书之后,然后再给大家进行解读 。
5.数字签名前面我们已经说了对称和非对称密钥加 / 解密,下面我们来说数字签名是什么意思 。
百度百科:数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明 。它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法 。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证 。数字签名是非对称密钥加密技术与数字摘要技术的应用 。


推荐阅读