官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
历经四个阶段,跨越两千年的时间线,现代密码学发展成型并不断进化,在保证信息的机密性、保证信息的真实性、保证数据的完整性,以及保证行为不可否认性上起到重要作用。尤其是在信息技术飞速发展的当下,密码的重要性与日俱增,构建高安全性的密码系统越来越受到各行各业的重视。
在明朝万达数据安全专家看来,影响密码系统安全性的基本因素包括密码算法复杂度、密钥机密性和密钥长度等。所使用密码算法本身的复杂程度或保密强度取决于密码设计水平、破译技术等,它是密码系统安全性的保证。
一、密钥机密性
对于密码系统的安全性,特别是密钥的机密性,早在1883年,科克霍夫在其著作《军事密码学》中就提出了下述原则:密码系统中的算法即使被密码分析人员所知,也应该无助于用来推导出明文或密钥。这一原则已被后人广泛接受,称为科克霍夫原则,并成为密码系统设计的重要原则之一。
换言之,科克霍夫原则是指在评定一个密码体制的安全性时,假设攻击方知道所有目前已使用的密码学方法。系统的保密性不依赖于对加密体制或算法的保密,而依赖于密钥。这是因为攻击者可能通过逆向工程分析的方法最终获得密码算法;攻击者通过收集大量的明文/密文对来分析、破解密码算法;在密码算法实际使用过程中也不能排除多少了解一些算法内部机理的人有意无意泄漏算法原理。
由于现代密码技术都依赖于密钥,因此密钥的安全管理是密码技术应用中非常重要的环节。只有密钥安全,不容易被敌手得到或破获,才能保障实际通信或加密数据的安全。密钥管理主要研究如何在不安全的环境中,为用户分发密码信息,使得密钥能够安全并有效地使用,在安全策略的指导下处理密钥自产生到最终销毁的整个过程,包括密钥的产生、存储、备份/恢复、装入、分配、保护、更新、泄漏、撤销、销毁等。密钥管理本身是一个很复杂的问题,而且是保证密码安全的关键。密码管理方法因所使用的密码体制而异。
二、密码算法复杂度
密码算法的复杂性是保证密码安全的一个基本条件。如果一个密码系统使用的密码算法不够复杂,或者看起来似乎很复杂,但实际存在体制上的弱点,那么就容易被攻击者利用,在不需要尝试所有密钥的情况下能轻松地破解得到明文。单表代换密码是最容易攻破的密码算法之一,在这种密码体制中,尽管可能达到的密钥数量是26!~4×10^26,但是密码专家已经可以在几分钟之内破解该算法。
三、密钥长度
除了密码算法的复杂性外,密钥长度也是保证密码系统安全性的基本因素。最简单的破解密钥的方式就是尝试各种可能的密钥,看哪一个是实际使用的密钥。在这种攻击中,要尝试的密码数量和将要检索的整个密钥空间紧密相关,也就是与秘密的长度紧密相关。
如果密钥是16位长,那么就有2^16=65535个可能的密钥,而在DES算法中密钥长56位,就有2^56=7.2×10^16个可能的密钥。1977年,Whitfield Diffie和Martin Hellman假设了一种专门用于破译DES的机器,如果每秒能尝试一百万个密钥,需要花费约2285年时间才能尝试完56位的所有密钥。而如果某种算法使用了64位长的密钥,这种机器需要585000年来尝试所有的密钥。
四、密码系统安全性评估方法
评估密码系统安全性主要有3种方法:
对于实际使用的密码系统而言,由于至少存在一种破译方法,即暴力攻击法,因此都不能满足无条件安全性,只能达到计算安全性。密码系统要达到实际安全,就要满足以下准则。
如果一个密码系统能满足以上准则之一,就可以认为是实际安全的。