|
数据加密与鉴别技术
编辑:无 ,
出处:无
一.加密技术
加密技术是将明文消息变换成第三方难以理解的密文的技术。明文变成密文的过程称为加密,由密文还原成明文的过程称为解密,加密和解密的规则称密码算法,加密和解密的过程中,由加密者和解密者使用的加解密可变参数叫做密钥,一个算法可以使用的密钥的数目取决于密钥的比特位数,如40位长的密钥可以有约1×1012个密钥。对同样的明文,不同的加密算法或相同加密算法但使用不同的密钥会得出不同的密文。
一个加密算法是安全的,当且仅当它的安全性仅仅取决于密钥的长度,而不取决于加密算法的保密、密文的不可存取或其它因素,这时第三方为了对密文进行非法解密,唯一可行的办法就是蛮力攻击,即用所有可能的密钥进行尝试,直至找到那个真正的密钥,因此当密钥空间足够大时,即使蛮力攻击,对安全算法来说也是不可行的。
常见的密码算法体制分为对称密码算法体制和非对称密码算法体制。加密时所用的密钥和解密时所用的密钥相同时,称为对称密码算法体制,这时的密钥称为对称密钥;加密时所用的密钥和解密时所用的密钥不同时,称作非对称密码算法体制,此时可将其中的一个密钥公开,故也称为公开密钥密码体制。
设E为加密过程,D为解密过程,X为明文信息,Y为密文信息,Ke为加密密钥,Kd为解密密钥:
加密:EKe(X)→Y 解密:DKd(Y)=DKd(EKe(X))→X
对于对称密码算法体制,有 Ke = Kd 为通信双方共享的秘密密钥(对称密钥);对于非对称密码算法体制,则Ke 不等于 Kd且两者之一是公开的,称为公开密钥,同时另一个为秘密的,称为秘密密钥(至于用户选择公开密钥还是秘密密钥用于加密,取决于用户加密的目的)。
1. 公开密钥密码体制
公开密钥密码体制基于密钥对的概念,密钥对中的任何一个可用于加密明文,而所得的密文只有密钥对中的另外一个才能对其解密,这个密钥对仅仅只由一个用户所有,且其中的一个密钥只有该用户本人知道,即非公开的,称为秘密密钥,而密钥对中的另外一个可以公开,称为公开密钥。
公开密钥密码体制的优点:
①增加了安全:秘密密钥无需传输给任何人,不需要在通信双方交换,从而保证了秘密密钥安全。
②提供了一种源鉴别(通过数字签名)的方法,从而能对密文的发方进行鉴别,公开密钥密码体制用于数字签名的原理见2.4.3节。
公开密钥密码体制的主要缺点是其加密算法一般速度较慢,特别是用于大批量数据加密时。因此,人们一般把公开密钥密码体制和对称密码算法体制在大批量数据加密过程中结合使用,发挥二者的长处和优点,达到提高效率的目的。
RSA算法已经成为事实上的公开密钥密码算法标准,得到了广泛使用。
2. 对称密码算法体制和公开密钥密码体制的结合运用
对大批量数据进行加密保护,最好的办法是将对称密码算法体制和公开密钥密码体制结合起来使用,取长补短,这时的加解密过程如下:
加密方(或发方):
①生成明文;
②用密钥生成算法生成特定长度的对称密钥;
③使用对称密钥加密算法和该对称密钥对明文进行加密,形成密文;
④用收方公开密钥加密对称密钥;
⑤把加密后的对称密钥和密文一同发送给收方。
解密方(或收方):
①用收方的秘密密钥解密收到的已加密的密钥,得到未加密的对称密钥;
②用①中得到的对称密钥解密密文,得到明文
可以看出,把两者结合起来使用,不但使得对称密码算法体制中的密钥管理(通信双方密钥交换)大大减化,而且能在加密中做到对应一个明文使用一个密钥,且每个密钥仅仅使用一次,通信双方也不再有必要去验证密钥是否泄露或失效。既使在某一次传输中密钥不慎泄露,它也只影响本次传输,对其后的传输不会有任何影响。
3. 密钥管理
密钥管理是加密技术的重要一环,密钥管理的重点是确保密钥的安全性(真实性和有效性)。密钥管理分为对称密钥算法体制的密钥管理和公开密钥密码体制的密钥管理。
①对称密码算法体制
正如前述,单纯的对称密码算法体制中存在着密钥管理的困难,密钥在通信各方分发和存储时都存在泄露的危险,一旦密钥泄露,其安全性便不再有保障。
通常对称密钥分发和存储的安全管理可借助于公开密钥密码体制。在分发时,首先用收方公开密钥加密该对称密钥,然后再传送给收方,因为只有收方才拥有用以解密的秘密密钥,从而才能解密并安全地获得共享的对称密钥;对称密钥的存储可采用类似的方法,用户使用自己的公开密钥加密对称密钥,并进行存储,由于只有用户本身可对该加密后的对称密钥解密,从而保证了对称密钥的安全。
②公开密钥密码体制
公开密钥密码体制密钥管理主要解决两个问题:秘密密钥的保护和公开密钥及其所有者身份的确认。
秘密密钥的保护,这由用户内部所采取的安全策略加以保护,一般用口令或存取权限等访问控制策略进行保护。
公开密钥及其所有者身份的确认,目前一般根据X.509建议,由命名为"签证机构(CA-Certification Authorities)"的脱机可信实体来完成。CA为每一个用户颁发其签发的证书(Certificate),证书中有该用户的公开密钥和该用户的身份信息(如区别名等),从而不同用户就可以通过交换证书来确认其公开密钥和身份。
在这种方式中,每个用户必须选定一个可信的CA。与用户一样,每一个CA也必须有一对公开和秘密密钥。
用户与CA以下列方式交换公开密钥:彼此都相信收到的密钥的有效性和对方的身份,比如可以由用户和CA的操作者当面交换含有相关密钥的磁盘等方式建立这种信任;然后CA用其秘密密钥对包括CA名、用户名、用户的公开密钥及其有效期的数据集等进行数字签名(数字签名见2.4.3节),并将该签名附在上述数据集的后面,构成用户的证书。当用户分别使用不同的CA服务时 ,不同的CA要为其所属的每个用户建立一个证书且各个CA之间要能够相互验证,只要保证每个CA都是可信赖的,用户之间公开密钥和其身份的确认就可以得到保证。
二.报文内容完整性检查
报文内容完整性检查(MIC)用以确保报文内容的完整性,即报文在传输中没有受到任何篡改,报文完整性检查通过给发送的报文附加一个报文完整性检查值(亦称为MIC)来实现。通常该完整性检查值可通过对报文进行摘录或散列得到。对报文进行摘录或散列的算法叫做单向散列函数。单向散列函数设计成对于任何两个不同的报文,其散列值相同的概率为无穷小,从单向散列函数得到的报文完整性检查值一般为112~160个比特,该完整性检查值(MIC)位数越多,则该算法越安全。
通信双方必须使用相同的单向散列函数,发方用单向散列函数计算出报文的MIC,这个值对该报文来说是唯一的;然后,附接在报文之后发送给收方;收方使用相同的单向散列函数计算出接收到报文的MIC,若这两个值相同,则可断定报文没有任何改变,若第三方企图修改报文,则由单向散列函数计算出的新的MIC一定不同于原来的MIC,从而可确保报文的内容完整性。
SHA-1(安全散列算法)是美国国家安全局开发的单向散列函数,其散列值长为160比特,使得对其的任何蛮力攻击都是不可行的。
MD5 (报文摘录算法),是另一个单向散列函数,其散列值长为128比特,目前在 Internet 电子邮件系统安全服务中有着广泛应用。
三.数字签名
数字签名技术广泛应用于源鉴别和发方不可否认服务中,收方不可否认服务也需结合数字签名技术予以实现。
数字签名的基础是密码技术,目前较多使用公开密钥密码体制实现数字签名。利用公开密钥密码体制进行数字签名的原理如下:
公开密钥密码体制的要求之一就是:密钥对中任何一个都可用于加密,其另外一个此时可用于解密,且密钥对中称为秘密密钥的那一个只有密钥对的所有者才知道,从而我们可把秘密密钥作为其所有者的身份特征。发方可用该秘密密钥对要传送的文件进行加密,将加密后的文件作为该文件的签名发送,收方只有用发方的公开密钥进行解密运算,如果能还原出明文来,则可证明发送来的明文是经过发方签名了的。收方和第三方不能伪造签名的文件。因为只有发方才持有自己的秘密密钥。其余的人也只能使用对应的公开密钥进行验证。根据公开密钥算法,已知公开密钥是不能推导出秘密密钥的。这就符合了签名的唯一性、不可仿冒和不可否认三大特征。
由于公开密钥密码算法速度较慢,因此对选用什么信息用作数字签名的对象还要进行仔细考虑。我们知道,用于报文内容完整性检查的完整性检查值(MIC),通常较小,一般为112-160个比特。因此,选择完整性检查值(MIC)进行数字签名,是一个很自然的选择,这样不仅其可用于签名、提供源鉴别和发方不可否认服务,还可确认报文的完整性。目前,用于数字签名的公开密钥密码算法,一般选用RSA算法。
|