密码算法是安全的吗?

如果您刚了解密码学,那肯定觉得这个问题答案是“必须安全啊,不安全的密码算法还能用吗?”但如果您看了前面的文章,就会发现每种算法都有它的不足和缺陷,都有被破解的风险。那是不是说明它们都是不安全的呢?其实,安全不是个简单的概念,要回答这个问题,我觉得应从以下几个方面分析。

首先,从算法本身讲,现代密码算法的安全性都来源于数学上的某个或多个难题,如果难题被攻破了,算法也就被攻破了。像前面介绍的RSA算法安全性来源于大质数乘积难以分解问题,而ECC算法安全性则基于椭圆曲线离散对数的计算难题(其实到现在我也不懂这个原理,就是知道它比大质数乘积分解更难)。迄今为止,这两个算法所基于的数学难题还没有被解决,所以算法的理论仍然是安全的,对算法的攻击行为仍然是基于暴力破解,当然攻击者会辅以明文、密文分析等方法加快暴力破解的速度。所以,目前来看,算法本身安全性的挑战来源于计算机算力的发展和提高。摩尔定律虽然已经失效,但云计算的兴起和量子计算机的应用会使现在的难题以后不再那么“难”了。去年,谷歌宣布其研发的量子计算机8小时可以破解2048位RSA加密密钥。8小时,已经是完全可以接受的解密时限了。

其次,如何应用算法也是影响算法安全性的重要因素,正确的使用密码算法才能发挥密码的作用。这一点对于做应用系统开发的我们尤其关键。一般应用开发中,常见的问题有:1,没有选择正确的算法。比如应该用非对称算法的地方,选择使用了对称算法;2.没有采用安全的密钥存储方式。最常见的就是用软实现的方式存储密钥;3.虽然算法选择和密钥存储方式没有问题,但程序的逻辑设计有漏洞,可以让攻击者绕过系统的安全功能防护。这一点的情况更复杂,举个例子,有些业务系统的电子签章功能采取印章图片+数字签名的方式,如果签名验证成功,图片正常显示;签名验证失败,图片显示失败的标记。这种方式下图片的显示和验证结果本身是分离的,它们是通过程序功能关联的。那攻击者就有可能跳过这种关联,使验证结果失败,图片仍然正常显示。

最后,从信息安全的更高维度看,安全本身就是一个系统的概念,它不是光靠算法或技术就能实现的,还得有正确的制度和方法,以及有能力、有责任心、能够严格遵守制度的人。从信息安全的专业术语讲,就是从技术体系、管理体系和组织体系来共同构建信息安全的整体。

总结一下,**密码算法本身目前还是安全的,但在实际应用中需要正确使用以及完善的体系才能发挥它们的安全作用。**要注意的是,绝对安全的算法是不存在的,任何算法理论上都是会被破解的;但一方面,绝对安全的算法也是不必要的,因为信息安全是需要投入成本的。在信息安全行业里,有这样一条潜规则:信息安全的合理成本的区间,应该是它所保护信息价值的10%到100%之间。不超过100%很好理解,如果信息安全投入的成本超过了它所保护信息本身的价值,则这样的投入是没有意义的。而不低于10%是行业经验总结,低于这个下限的投入一般来讲是不够的,不足以保护你宝贵的信息资产。

你可能感兴趣的:(信息安全,密码学)