林銮云
(瑞芯微电子股份有限公司,福建 福州 350000)
计算机网络在很大程度上改变了现代人的生活方式,但人们在使用计算机软件时经常会遇到个人信息泄露或重要文件被盗取等安全问题,数据加密技术的出现让这一问题得到了有效解决。数据加密技术是一种专门用来保护网络信息数据不被盗取或篡改的强有力安全措施,它通过特定的加密算法对文件赋予了超高的加密与解密能力,在很大程度上提高了密码被破译的难度。
计算机软件在使用的过程中,由于某些数据、命令或程序的入侵,会造成计算机软件无法正常运行,而入侵计算机系统导致系统瘫痪的这些数据、命令或程序就被称为计算机“病毒”。计算机“病毒”自身的特性有很多,包括潜伏性、针对性、隐蔽性、传染性、破坏性以及可执行性。计算机“病毒”实质上就是一种程序和指令,它们在计算机上可以大量自我复制,破坏性极强。
随着互联网技术与信息技术的高度发展,“黑客”集团所掌握的计算机技术水平远远高于普通用户,人们已经无法运用传统的计算机安全软件去抵御“黑客”的攻击。总的来看,“黑客”对网民的攻击往往存在着一定的目的性,他们不仅是要窃取用户的个人信息,更是为了盗取用户账户里的财产,对用户的经济利益造成了严重威胁。“黑客”攻击在情节严重时,甚至会波及整个局域网的安全系统,进而使更多的用户遭到攻击。
“木马”实质上也是一种程序,其性质与计算机病毒相类似,但在攻击方式上与计算机病毒有所不同。“木马”通常是伪装成对话框或者游戏来引诱用户点击进去,让用户完全没有任何防备。正是由于“木马”具有伪装性特点,才会导致用户一不小心就会将其误点。这时“木马”就会潜伏于一个计算机软件内,该软件会在用户打开计算机时自动启动[1]。启动过后,“木马”程序就会将用户的IP地址以及预先设定的端口告知给攻击者。攻击者一旦接收到这些信息,就会通过远程操控来修改计算机软件用户所设置的参数,从而暗自盗取用户电脑内的重要文件和数据。
数据加密标准(Data Eneryption Standard,DES)算法是一种非常典型的对称加密算法,其工作原理按照分组的方式进行,通过“替换”与“换位”这两种加密组块方法的循环使用,完成对计算机软件加密的过程。DES由于算法速度快,其密钥较为简短,因此成为当下使用广泛的一种加密标准。下面对DES算法的工作原理展开详细分析。
首先,DES加密算法将输入的明文划分为64位数据组块。其次,对其进行加密。密钥的长度为64位,其中,包含56位有效密钥,另外8位用于奇偶校验。DES加密算法的加密过程可表示为:64位明文→初始置换→16轮迭代变换→逆置换→64位密文。先将64位明文数据组块进行一个初始置换(记为IP);再将其平均分成左右两个部分,每一部分均为32位数据;最后在密钥的控制下,进入到16轮迭代变换中。在这一环节,所有轮次的迭代变换都要先将输入的右半部分32位数据扩展为48位,再与通过64位密钥而产生的48位的某一子密钥进行异或运算;利用S盒将所得到的48位数据结果压缩成为32位,对这32位数据进行置换,再与输入的左半部分32位数据展开异或运算,进而得出新一轮迭代变换的右半部分数据[2]。与此同时,将此轮迭代输入数据的右半部分作为该轮迭代输出数据的左半部分。这样一来,一轮的迭代过程就此完成。经过16轮的迭代变换后,会生成一个新的64位数据。值得注意的是,最后一轮迭代之后得到的结果其左半部分与右半部分不再进行变换。这是为了让加密与解密能够运用同一个算法。最后,对64位的新数据进行一次逆置换(记为IP-1),进而得到最终的64位密文。
综上所述,16轮迭代变换是DES算法的核心内容,其中每一轮迭代变换后的左、右半部输出为:
Li=Ri-1
Ri=Li-1⊕f(Ri-1,ki)
其中,i代表迭代轮次;⊕代表按位异或运算;f所表示的内容包括密钥产生、扩展变换E,S盒压缩置换运算P等在内的一系列加密运算。
运用数学符号可将整个DES算法的加密过程进行如下表示:
L0R0←IP(<64bit明文>)
Li←Ri-1
Ri←Li-1⊕f(Ri-1,ki)
<64bit密文>←IP-1(R16L16)
其中,i=1,2,3…16。
DES算法的解密与加密过程基本上没有明显的区别,其根本不同点就在于16轮的迭代变换中,解密过程所使用的子密钥正好与加密过程相反。也就是说,解密时第1轮迭代所使用的子密钥是加密时最后一轮的子密钥,第2轮迭代所使用的子密钥是加密时第15轮的子密钥,……最后一轮迭代所使用的子密钥是加密时的第1轮子密钥。
公开密钥的加密密钥与解密密钥是完全不相同的,无法在加密密钥的基础上得出解密密钥。公开密钥的加密密钥是公开可见的,可以通过相应的公开文档查找到,而解密密钥是保密的,必须拥有解密密钥权限才能破解密码。因此,加密密钥也叫做公钥(Public Key),解密密钥也叫做私钥(Private Key)。计算机用户只要将自己的私钥保存好就可以,无需对公钥进行保密。由于任何使用公钥的用户都可以通过公开渠道获得公钥,因此这里不会出现对称加密算法中的密钥传送问题。用户之间的通信采用多少公钥算法,就有多少密钥与之相对。公开密钥与对称加密算法相比,在管理上要更加简便。
2.2.1 RSA算法的工作原理
公开密钥中第一个被提出的就是RSA算法,它是目前功能最完善的一种公开密钥算法。RSA算法可以同时进行加密以及数宇签名,并且可以有效防止密码受到攻击,RSA算法可以作为公开密钥的数据加密标准[3]。RSA算法的基础非常简单,可以让两个质数自由地相乘。但由于当时就分解其乘积较为困难,因此将乘积公开设为加密密钥。RSA算法具有高度的安全性,它的公钥与私钥是一对质数的函数。从一个公钥和密文中将明文恢复的难度相当于分解这两个质数的乘积之难度。下面通过举例说明来分析RSA算法的基本工作原理。
用户任选两个质数,假设所选质数为u=7,v=17。计算得出n=u×v=7×17=119,将n的结果公开。
利用欧拉函数计算u的值:
Φ(n)=(u-1)×(v-1)=6×16=96
从1到Φ(n)之间任选一个与Φ(n)互质的数k作为公钥,此处将其设为5。
用j代表解密密钥,使得(j×k)modΦ(n)=1,则可得出j的值为77。
丢弃u=7和v=17,公开n=119和k=5,使其成为公钥;对j=77进行保密,将其作为私钥。如此一来,便可使用公钥将所传送的信息加密,若信息接收者有私钥,便可以让信息得以解密。
例:若所传信息为t=19,则可计算出如下相应密文:
e=tkmod(n)=195mod(119)=66
将密文66发送给接接受者,接收者可根据收到的密文信息用私钥将明文恢复:
t=ejmod(n)=6677mod(119)=19
上述,所举例子中的两个质数u与v的数值不是很大,但从中可以看出,通过u与v从而计算得出n值的过程并不复杂,通过n=119得出u=7,v=17则具有一定的困难。笔者在实际的应用过程中,所用到的u与v都会是较大的上百位的十进制质数,那样一来,从n找出u,v的值就会难上加难,几乎不可能破解。因此,该算法的运算过程其实是单方向的,这样的运算特性也让RSA算法具有了更高的安全性。
2.2.2 公开密钥算法在网络安全中的应用
(1)混合加密系统。公开密钥算法与对称加密算法相比之下的优势是无需对加密密钥与解密密钥同步进行保密,所以在保障网络安全中得到了更加广泛的应用。然而,RSA算法的公开密钥算法也存在一定的缺点,如公钥算法较为复杂[4]。在对信息进行加密与解密时,因为会涉及大数字的幂运算,其中的运算量通常会高过对称加密算法成百上千甚至上万倍,所以该算法的加密与解密在速度上要比对称加密算法慢得多。由此可以得出,用户通过网络上传信息时,尤其是信息量较大的时候,通常不需要使用公开密钥算法进行加密,而是建立混合加密系统来对信息进行加密。在混合加密系统中,运用对称加密算法(通常是DES算法)对需要传送的信息进行加密与解密;同时,运用公开密钥算法(通常是RSA算法)再为对称加密算法加一层密钥。如此一来,便可充分发挥这两种加密算法各自的优势。在综合两种加密算法的体系下,不仅提高了信息加密与解密的速度,也让对称加密算法对密钥能够进行有效管理与保存,这是当前解决网络信息传输安全问题非常有效且实用的一种方式。
(2)数字签名。用户通过互联网进行信息的传输不同于传统的纸质书信,不具有在其上面签名或加盖印章的功能。因此,人们经常会遇到以下这些情况:信息发送者对自己发送的信息不承认;信息接收者肆意篡改收到的信息或者伪造一份虚假文件,诬陷是对方传送的等。基于以上这些问题的频发,数字签名可以有效解决网络信息传送的身份验证问题。一个功能完备的数字签名系统应具备解决以下问题的功能:其一,信息接收者能够对信息发送者在文件上的签名加以核实,若双方对于签名的真伪存在异议,那么第三方应该可以通过进一步验证签名的真伪来确定事实;其二,信息发送者在文件发送完成后必须承认自己对文件的签名;其三,只有信息发送者可以签名,其他任何人皆不可伪造签名,当然更不能伪造或篡改传送的信息。数字签名技术必须同时满足以上三点内容,才能高效解决网络信息传输过程中产生的身份验证问题。
数字签名技术是基于密码技术而生成的,所以它的安全性取决于密码系统的安全性。现如今,用户广泛使用公钥加密算法(RSA算法)让数字签名得以实现[5]。数字签名技术的工作原理如下:
笔者设定M为信息发送者,他需要将一个文件A发送给信息接收者N,A通过私钥SKM对文件A进行解密运算,并对文件进行签名,而后将运算结果PSKM(A)发送给N。当接收者N收到来自M的PSKM(A)后,就可以运用已知M的公钥PKM对文件进行加密运算,从而得出D=(ESKM(A)),最后核实并签名。
下面对上述流程进一步分析:
(1)因为只有M知道自己的私钥SKM,其他人均不知,所以也只有M可以将PSKM(A)生成。因此,接收者N自然也就相信文件PSKM(A)是通过M的签名后所发送的。
(2)若M不承认文件A是自己传送给N的,则N可将文件A以及PSKM(A)展示给第三方。此时,第三方运用已知的M的公钥SKM就可以很容易地判断出文件A是否为M所发送。
(3)若接收者N想要窜改文件A或伪造一份虚假文件B,那么N将不能将PSKM(B)出示给第三方,此时就可以证明该文件是N伪造的。
以上整个过程只是信息发送者M对文件A进行数字签名的实现,并没有对文件A进行加密,倘若文件PSKM(A)被他人在途中截获,而且知悉了发送者M的身份,那么他通过查阅相关文档便可得到M的公钥,即PKM,进而获取到文件A的全部内容。
为了给文件A加密,用户可以通过以下模型来实现:在发送文件PSKM(A)前,需利用接收者N的公钥PKN给文件加密;当N接收到文件后,先用自己的私钥SKN解密文件,再对签名进行验证。由此一来,便可实现签名与加密的同步效果。
当前,我国计算机用户对数字签名技术的应用越来越普遍,尤其体现在一些大型的商业活动中。例如,在购物时运用电子数据交换,就会使用到数字签名技术。我国的一些国有银行系统中,数字签名技术也被广泛地应用,通过数字签名来验证用户的身份信息十分方便。如今,计算机网络已普及到千家万户,计算机软件的使用会不断增加,数字签名终将会成为人们日常生活不可缺少的一项技术。
随着数据加密技术在计算机软件用户中的不断普及,计算机“病毒”“黑客”“木马”等攻击造成的用户信息泄露、文件数据丢失等现象逐渐降低,也大大提高了互联网信息传输的效率。因此,人们在使用计算机常规软件或使用杀毒软件以及反病毒软件时,一定要对数据加密技术加以运用,为信息的传送创造一个安全、可靠的环境。