视频
当前应用广泛的高级加密标准(AES)是一个已经应用于大量硬件和软件系统的、具有重大意义的算法。由于通过大量的密码分析来研究AES,人们通常认为包含有AES的系统是安全的。但这一假设并非永远正确——在本文中,我们将研究三种可能会导致出现问题的情形。
如同所有加密系统和算法一样,AES也依赖密钥。如果攻击者获得了密钥,他或她能够冒充真正的密钥所有者,解密所有的网络信息,而且通常会消除系统安全性的各个方面。然而,仅有少数系统具有较大的存储密钥区,能够真正地避免攻击。随着联网系统的通用性日益增强,像Heartbleed等软件错误能够轻而易举地找到钥匙,尽管这些密钥被认为已经处于很小心的保护之下。如果你对Heartbleed还不是很了解,可以从XKCD阅读有关它的漫画,XKCD很好地对其做出了阐述。
如同所有的加密算法,AES的运用方式多种多样。由于选用了不恰当的模式、协议或程序,许多系统已经被破解。下图显示了在一些情况下,AES模式是正确的选择——但绝不是这一种!
最后一点比较复杂。当利用AES加密某些东西时,大多数模式都需要一个初始化向量(IV)。初始化向量不得重复,且在一些模式下,初始化向量必须随机。重复的初始化向量会引发两个问题:(1)如果攻击者发现第一条信息的纯文本,那么他就能确定第二条信息的内容;并且(2)如果同样的信息利用相同的初始化向量发送,那么两次的密文也将会是相同的,其本身可能是非常重要的信息。
然而,问题在于生成随机数存在一定的难度。一个著名的随机数值发生器采用熔岩灯图像的杂凑值——多年来,在线网站(lavarand)受硅谷图形公司支持,提供在线数值。
假设你的系统没有熔岩灯或相机,那么你可能想采用‘随机’按键、信号线上的噪音、精确到毫秒的时间或一些其他类似的事物。但问题在于,虽然结果数值看似随机,却通常选择有限。鉴于现代计算机快速的执行速度,攻击者能够在几秒内毫不夸张地尝试数以百万计的可能性,最终猜出你的随机数值!
许多设计师利用专用硬件加密设备来帮助解决这一问题。总而言之,他们针对上述三点提供了解决方案:
· 防护性较强的加密密钥,能够抵御软件错误、恶意软件或其他具侵略性的攻击;
· 设备内部进行的操作采用恰当的模式和协议;以及
· 依靠随机物理现象并通过严格的测试的高质量随机数发生器
猜猜怎么着?爱特梅尔的CryptoAuthentication设备提供囊括上述三种方案的、低成本的小型综合解决方案。