目前的互联网系统中,黑客常用的典型攻击方式有扫描、监听、密码分析、软件漏洞、恶意代码、拒绝服务,而常见的安全防御技术有信息加密、CA认证、存取控制、监控、审计和扫描(针对恶意代码)。其中密码分析与信息加密是攻击与防御的核心技术。提及信息安全,我们往往首先联想到密码技术。密码技术的重要性在网络安全领域是不可取代的。

一、密码技术及安全标准

密码技术是对传输或存储中的数据进行重新编码,以防止第三方窃取、篡改数据的一门技术。它结合了数学、通信学、计算机科学等多种学科于一体,通过数据加密、数字签名、身份认证等方式,在纷繁复杂的网络环境下对信息进行保护,保证其机密性、完整性和可用性。

1、加密算法的种类

数据加密算法种类繁多,究其发展史,经历了古典算法、对称密钥算法以及公开密钥算法三个阶段。古典算法中有替换加密、代码加密、变位加密等,该类算法简单易行,但已不能满足当下的安全性要求,逐渐淡出应用。

对称密钥加密算法又称为单密钥算法,该算法加密与解密使用同一个密钥,或者从其中一个密钥可以轻易推出另一个。目前著名的对称加密算法有美国数据加密标准DES、高级加密标准AES和欧洲数据加密标准IDEA等。对称密码从加密方式上又可以分为分组密码和序列密码两种。

公开密钥加密算法又可以称作非对称密钥算法。该算法中,加密密钥和解密密钥是不同的,加密密钥公开,解密密钥私下保存。在得到公钥的情况下,想要推导出私钥理论上是不可能的。该类算法的设计往往来自复杂的数学难题。代表性算法有基于大数分解的RSA,基于离散对数的DSA,基于椭圆曲线离散对数的ECC。

2、 加密算法的安全判定标准

安全性是衡量一个加密算法优劣的首要因素。失去了安全保证,再完善的密码系统也没有意义。要保证安全性,一个加密算法应做到以下三点:在明文和加密密钥已知的前提下,可以轻易算出密文;密文和解密密钥已知的情况下,可轻易算出明文;解密密钥未知时,由密文推导出明文理论上是不可能的。

关于加密信息的安全性定义,Shannon提出了通信中的理论安全与实际安全两个概念。理论安全要求在解密密钥未知的情况下,无论得到多少数量的密文,由此推测出明文的可能性与直接猜测明文是一样的。Shannon证明要实现理论安全,必须让加密密钥的长度不小于明文,这在进行大规模数据加密时是难以实现的。实际安全是指密文已知而解密密钥未知的前提下,对于计算能力与可用资源有限的破解者,即使使用最佳的破译算法,也无法在他所需要的有效时间内破解出明文和密码。我们目前应用的加密标准,都是基于实际安全设计的。

二、 几种代表性加密算法

我们在两类加密体系中,试举几种代表性的加密算法,通过对其特点的比较,解析其优点与安全漏洞所在,在此基础上提出一些解决方案与新的加密思路。

1、对称密钥加密

对称密钥加密算法中最具代表性的是DES算法,该算法的优势在于机制简单,加密解密迅速,算法公开,可以对大批量传输的数据进行加密操作;缺点是密钥较短(仅有56位),保密系数不高,且因算法公开,其安全保障主要取决于密钥的保密程度,因此必须有可靠的信道来传送密钥,在有大量用户的情况下密钥的分发和管理会变得异常复杂,且不能实现数字签名,因此不适合在开放的网络环境中单独使用。

二十多年来DES算法广泛应用于全球贸易、金融等民用领域,如智能卡(IC卡)与POS机之间的双向认证、信用卡持卡方PIN的加密传输等。如今该算法的许多缺陷慢慢变得不容忽视,针对它的解密方法也日渐有效化。针对该算法密钥短的缺陷,相关组织曾经提出80位密钥、双密钥(究其效果相当于双倍密钥长度)以及三重DES算法。DES在安全性上尽管较为脆弱,但由于芯片的大量生产目前仍在继续使用。长远而言,AES将会取代它,成为新一代的加密标准。

IDEA算法是在1990年公布的一种迭代密码分组算法,类似于三重DES,密钥长度为128位,若干年内在并非高度保密的领域仍可适用。由于它只使用逐位异或和模运算,因此具有使用软件实现和硬件实现一样迅速的优势。

2、公开密钥加密

我们知道,公钥加密算法的设计都是基于复杂难解的数学难题,其安全性取决于一种特殊函数:单向陷门函数。这是一种单向函数,在一个方向上容易计算,但逆向求值却异常困难。但如果它的陷门已知,则反向求值也会十分容易。在公钥体系中,这个陷门即是用来解密的私有密钥。符合以上条件且目前被公认为是安全有效的公钥加密算法有RSA、DSA以及ECC。

RSA是公开密钥体系中最具典型意义的算法,它的安全性依赖于大数因子分解的极度困难。RSA加密采用的公钥和私钥都是两个大素数的函数,大素数均要大于100个十进制位,得到密钥后应将两个素数丢弃。RSA也可用于数字签名,其公私钥的使用与加密刚好相反。RSA算法思路简洁,易于使用,安全性好,缺点在于产生密钥较为麻烦,受到大素数选取的限制,很难做到一次一密,且加密速度太慢,较对称密钥算法要慢上几个数量级。选取合适的大数是保障安全性的关键。但是目前还无法从理论上证明破译RSA的难度与大数分解等价,也无法确定大数分解是NPC问题。随着计算机计算能力的扩大以及大数分解方法的进步,对素数位数的要求会越来越高。RSA实验室认为个人应用要768比特位,公司应用要1024比特位以上才有安全保证。

DSA算法基于离散对数的数字签名标准。它仅仅对于数字签名有用,不能对数据进行加密运算。

ECC算法基于椭圆曲线离散对数运算,较之RSA、DSA安全强度更高,在解密和签名上的计算速度要快得多,且对存储空间和带宽的要求都较低,将会在IC卡与无线网络领域获得广泛应用。一般认为,ECC技术一旦被广泛掌握,ECC算法将会代替RSA,成为新一代通用的公钥加密算法。

在以上三种数学方法之外,多种数学理论被引入公钥加密算法的研究。如混沌理论,因其蝴蝶效应(即对初始状态的极端敏感性)、伪随机性、拓朴性,与加密系统有着天然的相似度与联系,非常适合应用于一次一密的公钥体系。然而,目前多数混沌密码算法发布不久就被破解,亟待找到更合适的应用思路和更优良的运算模型。

知识点:

对称密钥加密又叫专用密钥加密,即发送和接收数据的双方必使用相同的密钥对明文进行加密和解密运算。对称密钥加密算法主要包括:DES、3DES、IDEA、FEAL、BLOWFISH等。