密码学是一门古老而深奥的学科,对一般人来说是非常陌生的。长期以来,只在很小的范围内使用,如军事、外交、情报等部门。据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在1997年,美国国家保准局公布实施了“美国数据加密标准(DES)”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES、RSA、SHA等。随着对加密强度的不断提高,近期又出现了AES、ECC等。
计算机密码学是研究计算机信息加密、解密及其变换的科学,是数学和计算机的交叉学科,也是一门新兴的学科。随着计算机网络和计算机通信技术的发展,计算机密码学得到前所未有的重视并迅速普及和发展起来。在国内外,它已成为计算机安全主要的研究方向。
一般来说,由于传输中的公共信道和存储在磁盘、光盘上的文件比较脆弱,因此它们很容易遭受到非法攻击。其攻态形式分为主动攻击和被动攻击两种;从传输信道上截取信息或从磁盘上偷窃或复制信息称为被动攻击,其结果是导致信息的非法泄露和对私有权的侵犯;对传输的信息或对存储的数据进行非法更改、删除或插入的攻击称为主动攻击。其结果可能引起数据或文件的出错或造成混乱,严重时可能导致信息处理系统失控或瘫痪。因此,除法律保护、行政管理和人员教育之外,还需要合适的保护措施。密码技术就是实现这种保护的有效方法。
密码学主要研究通信保密,主要用于计算机及其保密通信,它的基本思想就是伪装信息,使未授权者不能理解它的含义。所谓伪装,就是对传输的信息——计算机中的指令和数据进行一组可逆的数字变换。伪装前的原始信息称为明文(Plaintext),伪装后信息称为密文(Cippertext),伪装的过程称为加密(Encryption),加密要在加密密钥(Key)的控制下进行:用于对信息进行加密的一组数学变换称为加密算法。发信者将明文数据加密成密文,然后将密文数据送入计算机网络或存入计算机文件。授权的接收者收到密文数据之后、进行与加密相逆的变换,去掉密文的伪装,恢复明文,这个过程称为解密(Decryption)。解密是在解密密钥的控制下进行的,用于解密的一组数学变换称为解密算法。加密和解密组成加密系统,明文和密文统称为报文。
加密就是利用密码学的方法对信息进行变换,使得未授权者不能识别和理解其真正的含义,也不能伪造、篡改和破坏数据。密码学还有效地用于信息鉴别、数字签名,以防止电子欺骗。一个加密系统由哪几部分构成呢?以最简单的恺撒密码为例,如果用数字0、1、2、24、25分别表示字母A、B、C、…、Y、Z相对应。则密文字母σ可以用明文字母φ表示如下:
σ=φ+(3mod26) (式6-1)
例如,明文字母为Y,即φ=24时,σ=1。(σ=24+3=27mod26=1),因此,密文字母为B。同样的道理,如果知道密文字母,就可以推导出对应的明文字母。式6-1是恺撒密码的数学形式,也表示一种算法。恺撒密码系统由式6-1和其中的密钥3组成。我们不知道当时恺撒为什么偏爱数字3。其实可以选择1~25之间的任何一个数字作为密钥。但是,如果选样0为密钥,则密文等于明文,实际上没有加密。因此,从式6-1可以推广成:
ф=θ+K[mod26] (式6-2)
这里的K取值范围是K={1,2,3,…,24,25}
由上面的例子可以看出,任何一个加密系统,无论形式多么复杂,都至少应包含以下5个部分:(www.xing528.com)
(1)明文空间M,是待加密的全体报文的集合。
(2)密文空间C,是加密后全体报文的集合。
(3)密钥空间K,是全体密钥的集合,可以是数字、字符、单词或语句。其中,每一个密钥,均由加密密钥Ke和解密密钥组成Kd,即Ki=(Ke,Kd)。
(4)加密算法E,是一组由M到C的加密变换。
(5)解密算法D,是一组由C到M的解密变换。
一个密码系统由算法以及所有可能的明文、密文和密钥(分别称为明文空间、密文空间和密钥空间)组成。信息以密文形式存储在计算机的文件中,或在通信网络中传输,即使被未授权者非法窃取,或因系统故障、人为操作失误造成信息泄露,未授权者也不能识别和理解其真正的含义,从而达到保密的目的。同样,未授权者也不能伪造合理的报文,因而不能篡改和破坏数据,从而达到确保数据真实性的目的。
对于每一确定的密钥K=(Ke,Kd),加密算法将确定一个具体的加密变换,解密算法将确定一个具体的解密变换,而且解密变换是加密变换的逆过程。明文空间M中的每一个明文,加密算法在加密密钥Ke的控制下,将M加密成密文C。
C=E(M,Ke)而解密算法在解密密钥Kd的控制下,从密文C中解出同一个明文M。M=D(C,Kd)=D[E(M,Ke),Kd]算法是相对稳定的,在一个密码系统中不可能经常改变加密算法,在这种意义上可以把算法视为常量。反之,密钥则是一个变量。可以根据事前约定好的安排,改变用过若干次后的密钥,或者每过一段时间后更换一次密钥等。为了密码系统的安全,有必要频繁更换密钥。由于种种原因,算法往往不能够保密,因此,常常假定算法是公开的,真正需要保密的是密钥。所以,在分发和存储密钥时应特别小心。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。