加密并不像我们认为的那样强健。但我们仍有一些方法可以减少与加密有关的已知漏洞。本文介绍了强化加密安全性的几个技巧。
在安全领域,加密永远是无休止的话题。特别是在斯诺登揭露美国安局的监控丑闻后,许多人对加密产品产生了很多怀疑,企业对如何保护数据安全的渴望更是与日俱增。
我们不知道为了访问加密数据,美国国安局如何在加密系统中建立后门,但是在加密过程中,随机数生成器非常重要,因为其在创建数字证书时扮演着重要角色。如果随机数生成器产生的数字是可预测的,或并不是真正的随机,那么攻击者就可以更容易地预测企业的私钥,而且可以读取使用这些密钥加密的任何消息。
更糟的是,由此,两个企业更有可能生成同样的私钥。这里的问题是,每个私钥都有一个唯一匹配的公钥,所以在理论上黑客有可能查阅公钥数据库,如果发现与黑客的公钥相匹配,那么他们就会知道私钥也同样匹配。
当然,这是不太可能的一种情况,但却表明:加密并不像我们认为的那样强健。幸运的是,我们仍有一些方法可以减少与加密有关的已知漏洞。下面的技巧可强化加密的安全性:
1.不要使用老的加密算法
企业应当停止使用DES等老的加密算法,也不要使用其亲戚3DES(三重数据加密标准)。
2.使用企业支持的最长的加密密钥
建议企业尽可能使用最大长度的密钥,这可以使那些无法访问后门的企业难以破解企业的加密。当今,AES 128可谓强健,但如果可能,不妨使用AES 512 或更长的密钥。
3.多层加密
建议企业尽可能地利用多层加密,这可以增加攻击者的困难。如果有可能,不妨对数据库的每个字段、每个表以及整个数据库都进行加密。
4.安全存储加密密钥
企业面临的最大问题可能并不是加密算法被美国的国安局留下后门,而是密码本身仅仅是加密方案的一部分。对于基础架构的其它要素,如密钥管理系统,企业也必须保证其安全。攻击者都愿意对付安全系统的最薄弱环节。如果攻击者很容易就可以窃取密钥,为什么还会费力破解加密算法呢?
有的企业将保护其数据的密钥给第三方,尤其是在企业将数据存储在公共云中并由云供应商加密和保护时。这里的问题是,企业无法控制密钥,而是必须相信云供应商的雇员会安全地保存密钥。
如果企业可以实施一种可以将密钥控制在云中的加密系统,就会安全得多。自动处理加密的云加密网关可以帮助公司实现这种安全。
5.确保正确实施加密
事实上,实施加密系统并非易事,因为它有许多动态部件,任何一个部件都有可能成为一个薄弱环节。你必须进行大量调查,确保正确实施加密。
在实施加密过程中,哪些方面容易出错?除了密钥容易遭受攻击,还有CBC(密码分组链接)的实施方式。使用CBC,可以用同样长度的随机文本块(也称为初始化向量)对纯文本进行异或运算,然后对其进行加密,产生一个加密文本块。然后,将前面产生的密文块作为一个初始化向量对下一个纯文本块进行异或运算。
CBC的正确实施要求在开始每个过程时都有一个新的初始化向量。一个常见的错误是用一个不加改变的静态初始化向量来实施CBC。如果正确实施了CBC,那么,如果我们在两个不同的场合加密了文本块,所生产的密文块就不会相同。
6.不要忽视外部因素
公司几乎无法控制的外部因素有可能破坏加密系统的安全性。例如,SSL依赖于数字证书,而且这些因素依赖于嵌入在浏览器(如IE、火狐、Chrome等)中的根证书颁发机构的完整性。但是,我们如何知道其是否可信,或者这些证书颁发机构不是某外国情报机构的幌子?你是否觉得这听起来牵强附会,但却有可能是事实。
此外,DNS也是不得不重视的弱点。只要DNS被攻克,攻击者就可以使用钓鱼技术绕过加密。
当然,这里强调的是加密问题的各种可能性。一个正确实施的加密系统只能在一种情况下被攻克,即测中密钥,在短时间内猜对密钥并非不可能,但其可能性微乎其微。
但是,如果不正确实施加密,选择了不恰当的密码和密钥长度,再加上其它因素(如随机数生成器中的漏洞)就可能意味着加密未必是可靠的。所以,企业必须重视从多方面强化加密系统,绝不可以偏概全。