数据加密技术
现代社会对信息安全的需求大部分可以通过密码技术来实现。密码技术是信息安全技术中的核心技术,它主要由密码编码技术和密码分析技术两个分支组成。密码编码技术的主要任务是寻求产生安全性高的有效密码算法。以满足对消息进行加密或认证的要求。密码分析技术的主要任务是彼译密码或伪造认证码,实现窃取机密信息或进行诈骗破坏活动。这两个分支既相互对立,又相互依存。信息的安全性主要包括两个方面即信息的保密性和信息的认证性。保密的目的是防止对手破译系统中的机密信息,认证的目的是验证信息的发送者是真正的,而不是冒充的。验证信息的完整性,即验证信息在传送或存储过程中未被窜改、重放或延迟等。信息的保密性和信息的认证性是信息安全性的两个不同方面,认证不能自动地提供保密性,而保密也不能自然地提供认证功能。在用密码技术保护的现代信息系统的安全性主要取决于对密钥的保护,而不是依赖于对算法或硬件本身的保护,即密码算法的安全性完全寓于密钥之中。可见,密钥的保护和管理在数据系统安全中是极为重要的。人们目前特别关注的是密钥托管技术。
一、信息保密技术
信息的保密性是信息安全性的一个重要方面。保密的目的是防止对手破译信息系统中的机密信息。加密是实现信息保密性的一种重要手段,就是使用数学方法来重新组织数据,使得除了合法的接收者外,任何其他人要想恢复原先的"消息"(将原先的消息称作"明文")或读懂变化后的"消息"(将变化后的消息称作"密文")是非常困难的,将密文变换成明文的过程称作解密。可见,加密技术可使一些重要数据存储在一台不安全的计算机上,或可以在一个不安全的信道上传送,只有持有合法密钥的一方才能获得"明文"。所谓加密算法就是对明文进行加密时所采用的一组规则,解密算法就是对密文进行解密时所采用的一组规则。加密算法和解密算法的操作通常都是在一组密钥控制下进行的,分别称为加密密钥和解密密钥。根据加密密钥和解密密钥是否相同,可将现有的加密体制分为两种:一种是私钥或对称加密体制、这种体制的加密密钥和解密密钥相同,其典型代表是美国的数据加密标准(D E S):另一种是公钥或非对称加密体制,这种体制的加密密钥和解密密钥不相同并且从其中一个很难推出另一个。加密密钥可以公开,而解密密钥可由用户自己秘密保存,其典型代表是R S A体制。
根据明文加密方式的不同,又可将私钥加密体制分为两类:一类是流密码,在这类体制中,明文按字符逐位地被加密;另一类是分组密码,在这类体制中,先将明文分组(每组含有多个字符),然后逐组地进行加密。
从社会应用密码的需求来看,目前国际上最关心的加密技术有两种:一种是分组密码。另一种是公钥密码。
1. 分组密码技术
DES是日前研究最深入、应用最广泛的一种分组密码。己有长达20年的历史。DES的研究大大丰富了设计和分析分组密码的理论、技术和方法。针对DES,人们研制了各种各样的分析分组密码的方法,比如差分分析方法和线性分析方法,这些方法对DES的安全性有一定的威胁,但没有真正对16轮D E S的安全性构成威胁。自从DES公布之日起,人们就认为DES的密钥长度太短(只有56比特),不能抵抗最基本的攻击方法--穷搜索攻击。
目前,国际上公开的分组密码算法有100多种,比如,Lucifer、IDEA、SAFER,k-64、RC5、Skipjack、RC2、FEAL一N、REDOC一II、L0KI、CAST、Khuf u、Khafre、MMB、3一WAY、TEA、MacGuffin、SHARK、BEAR、LION、CA.1.1、CRAB、Biowfish、G0 ST、SQUARE和MISTY等。对这些算法感兴趣的读者可在Schneier所著的《Applied Cry ptography:Protocals,Algorithms,and Source CodeinC》一书和会议论文集《FastSoftware Encryption》中找到它们的详细讨论,也可以通过Internet查询到。美国目前正在制定和评估新的数据加密标准,替代1998年到期的DES。
2. 公钥加密技术
私钥密码体制的缺陷之一是通信双方在进行通信之前需通过一个安全信道事先交换密钥。这在实际应用中通常是非常困难的。而公钥密码体制可使通信双方无须事先交换密钥就可建立起保密通信。公钥算法要比私钥算法慢得多。在实际通信中,一般利用公钥密码体制来保护和分配(交换)密钥,而利用私钥密码体制加密消息。公钥密码体制主要用于认证(比如数字签名,身份识别等)和密钥管理等。公钥密码体制的出现为解决私钥密码体制的密钥分配开辟了一条广阔的道路。
值得一提的是,在有些文献中,公钥密码体制的含义很广,不仅包括公钥加密体制,而且还包括各种公钥协议比如数字签名、身份识别协议、密钥交换协议等,但我们这里所说的公钥密码体制,除了特别声明外,特指公钥加密体制。
目前国际上已经有许多种公钥密码体制,但比较流行的和被人们认可的公钥密码主要有两类,一类是基于大整数因子分解问题的,其中最典用的代表是RSA公钥密码体制:另--类是基于离散对数问题的,比如E lGamal公钥密码体制和椭圆曲线公钥密码体制。由于分解大整数的能力日益增强,所以对RSA公钥密码的安全带来了一定的威胁,512比特模长的RSA体制已经不安全。人们建议使用l024比特模长,要保证20年的安全就要选择1280比特模长,增大模长带来了实现上的难度。而基于离散对数问题的公钥密码在目前技术下有512比特模长;就能够保证其安全性。特别是椭圆曲线上的离散对数的计算要比有限域上的离散对数的计算更困难,能设计出密钥更短的公钥密码体制,因而受到了国际上广泛的关注,RSA等一些公司已经开发出了符合IEEEP l363标准的椭圆曲线公钥密码。
RSA算法的安全性是基于分解大整数的困难性。在RSA体制中使用了这样一条基本事实:一般地说,分解两个大素数之积是一利很困难的事情。
下面是A使用一个公钥密码体制发送信息给B的过程:
(1)A首先获得B的公钥。
(2)A用B的公钥加密信息,然后发送给B。
(3)B用自己的私钥解密A发送的信息。
已经制造出了许多不同的RSA加密芯片。RSA算法在美国已申请了专利,将于2000年9月20日到期。破译RSA的一个直接的方法是分解n,目前的分解能力大概为130位十进制数,但512比特(l54位十进制数)模长的RSA体制安全性已经受到一定的威胁,人们建议使时l024比特(308位十进制数)模长。关于RSA体制,也有一些别的分析方法,比如选择密文攻击、同模攻击和低指数攻击等。这些攻击告诫人们在选择RSA体制的参数和使用RSA体制时必须遵循一定的规则。
除了RSA外,还有一些别的公钥加密算法,比如E lGamal算法、Rabin算法、McEliece算法、Merkie一Hellman背包算法、Chor一Rivest背包算法、有限自动机公钥算法、椭圆曲线的密码算法、细胞自动机公钥密码算法、LU公钥密码算法、多重密钥的公钥密码算法和概率加密算法等。
二、信息认证技术
信息的认证性是信息安全性的另一个重要方面。认证的目的有两个:一是验证信息的发送者是真正的,而不是冒充的:二是验证信息的完整性.即验证信息在传送或存储过料中是否被窜改,重放或延迟等。
对密码系统的攻击主要有两类:一类是被动攻击,对手只是对截获的密文进行分析:另一类是主动攻击,对于通过采用删除、增添、重放和伪造等手段主动向系统注入假消息。认证是防止他人对系统进行主动攻击(如伪造,窜改信息等)的一种重要技术。
1. 数字签名技术
政治、军事、外交等活动中签署文件,商业上签定契约和合同以及日常生活中在书信、从银行取款等事务中的签字,传统上都采用手写签名或印鉴。签名起到认证、核准和生效作用。随着信息时代的来临,人们希望通过数字通信网络进行远距离的贸易合同的签名,数字签名应运而生,并开始时了商业通信系统,如电子邮递、电子转帐、办公室自动化等系统中。
一个数字签名算法主要由两个算法组成,即签名算法和验证算法。签名者能使用一个(秘密)签名算法签一个消息,所得的签名能通过一个公开的验证算法来验证。给定一个签名,验证算法根据签名是否真实来作出一个"真"或"假"的问答。
目前已有大量的数字签名算法,如RSA数字签名算法、EIGamal数字签名算法、Fiat一Shamir数字签名算法、Guillou一Quisquarter数字签名算法、Schnorr数字签名算法、0ng一Schnorr一Shamir数字签名算法、美国的数字签名标准/算法(D S S/D S A)、椭圆曲线数字签名算法和有限自动机数字签名算法等。
A使一个签名算法对消息x签名和B验证签名(x,y)的过程可描述为:
(l)A首先使用他的秘密密钥对x进行签名得y。
(2)A然后将(x,y)发送给B。
(3)最后B用A的公钥验证A的签名的合法性
DSA是美国国家标准技术学会(NIST)的一个标准,它是ElGamal数字签名算法的一个修改。当选择p为512比特的素数时,ElGamal数字签名的尺寸是1024比特,而在DSA中通过选择一个160比特的素数可将签名的尺寸降低为320比特,这就大大地减少了存储空间和传输带宽。关于DSA也有一些批评意见,但它已被人们广泛地接受和应用,它的确为数字签名技术的应用提供了一个适当的内核。
2. 身份识别技术
通信和数据系统的安全性常常取决于能否正确识别通信用户或终端的个人身份。比如银行的自动取款机(ATM)可将现款发放给经它正确识别的帐号持卡人。对计算机的访问和使用、安全地区的出入和放行、出入境等都是以准确的身份识别为基础的。身份识别技术能使识别者让对方识别到自己的真正身份,确保识别者的合法权益。但是从更深一层意义上来说,它是社会责任制的体现和社会管理的需要。
进入电子信息社会,虽然有不少学者试图使用电子化生物唯一识别信息(如指纹、掌纹、声纹、视网膜、脸形等),但由于代价高、准确性低、存储空间人和传输效率低,不适合计算机读取和判别,只能作为辅助措施应用。而使用密码技术,特别是公钥密码技术,能够设计出安全性高的识别协议,受到人们的青睐。
身份识别的常用方式主要有两种,一种是使用通行字的方式;另一种是使用持证的方式。通行字是使时最广泛的一种身份识别方式,比如中国古代调兵用的虎符和现代通信网的拔入协议等。通行字一般由数字、字母、特殊字符、控制字符等组成的长为5--8的字符串。其选择规则为:易记,难于被别人猜中或发现,抗分析能力强,还需要考虑它的选择方法、使用期、长度、分配、存储和管理等。通行字方式识别的办法是:识别者A先输入他的通行字,然后计算机确认它的正确性。A和计算机都知道这个秘密通行字,A每次登录时,计算机都要求A输入通行字。这样就要求计算机存储通行字,一旦通行字文件暴露,就可获得通行字。为了克服这种缺陷,人们建议采用单向函数。此时,计算机存储通行字的单项函数值而不是存储通行字。其认证过程为:
1.A将他的通行字传送给计算机。
2.计算机完成通行字的单向函数值的计算。
3.计算机把单向函数值和机器存储的值比较。
由了计算机不再存储每个人的有效通行字表,某些人侵入计算机也无法从通行字的单向函数值表中获得通行字。当然,这种保护也抵抗不住某些攻击。不过,它的确是一种简单而有效的识别方法。
持证(token)是一种个人持有物,它的作用类似于钥匙,用于启动电子设备。使用比较多的是一种嵌有磁条的塑料卡,磁条上记录有用于机器识别的个人信息。这类卡通常和个人识别号(PIN) 一起使用。这类卡易于制造,而且磁条上记录的数据也易于转录,因此要设法防止仿制。为了提高磁卡的安全性,人们建议使用一种被称作"智能卡"的磁卡来代替普通的磁卡,智能卡与普通的磁卡的主要区别在于智能卡带有智能化的微处理器和存储器。智能卡已成为目前身份识别的一种更有效、更安全的方法。智能卡仅仅为身份识别提供了一个硬件基础,要想得到安全的识别,还需要与安全协议配套使用。
从实用角度来讲,人们最关心的是设计简单而且能在一个智能卡上实现的安全识别协议。一个安全的身份识别协议至少应满足以下两个条件:
1.识别者A能向验证者B证明他的确是A。
2.在识别者A向验证者B证明他的身份后,验证者B没有获得任何有用的信息,B不能模仿A向第三方证明他是A。
目前已经设计出了许多满足这两个条件的识别协议。比如Schnorr身份识别协议、Okanmto身份识别协议、Guillou-Quisquater身份识别协议和基于身份的识别协议等.这些识别协议均为询问-应答式协议。询问-应答式协议的基本观点是:验证者提出问题(通常是随机选择一些随机数,称作口令),由识别者回答,然后验证者验证其真实性。另一类比较重要的识别协议是零知识身份识别协议。零知识的基本思想是:称为证明者的一方试图使被称为验证者的另一方相信某个论断是正确的,却又不向验证者提供任何有用的信息。Feige、Fiat和Shamir基于零知识的思想设计了第一个零知识身份识别协议,称为Feige-Fiat-Shamir零知识身份识别协议。
3. 杂凑技术和消息的完整性
杂凑函数(也称杂凑算法)就是把任意长的输入串变化成固定长的输出串的一种函数。因为杂凑函数是多对一的函数,所以一定将某些不同的输入变化成相同的输入。这就要求给定一个杂凑值,求其逆是比较难的,但给定的输入计算杂凑值必须是很容易的。
一个安全的杂凑函数应该至少满足以下几个条件:
1. 输入长度是任意的.
2. 输出长度是固定的,根据目前的计算技术应至少取128比特长,以便抵抗生日攻击。
3. 对每一个给定的输入,计算输出其杂凑值是很容易的。
4. 给定杂凑函数的描述,找到两个不同的输入消息杂凑到同一个值在计算上是不可行的,或给定杂凑函数的描述和一个随机选择的消息,找到另一个与该消息不同的消息使得它们杂凑到同一个值在计算上也是不可行的。
攻击杂凑函数的典型方法是生日攻击,生日攻击的基本观点来自于生日问题:在一个教室里最少有多少学生时,可使得在这个教室里至少有两个学生的生日在同一天的概率不小于50%?这个问题的答案是23。
目前已研制出适合于各种用途的杂凑算法,这些算法都是伪随机函数,任何杂凑值都是等可能的。输出并不以可辨别的方式依赖于输入。任何输入串中单个比特的变化,将会导致输出比特串中大约一般的比特发生变化。利用某些数学难题比如因子分解问题和离散对数问题等设计的杂凑函数有Davies-Price平方杂凑算法、CCITT建议、Juene man杂凑算法、Damgard平方杂凑算法、Damgard背包杂凑算法、Schnorr的FFT杂凑算法等。这些算法中有的已不安全,而有的仍然是安全的。利用某些私钥密码体制比如DES等设计的杂凑函数有Rabin杂凑算法、Winternitz杂凑算法、Quisquater-Girault杂凑算法、Merkle杂凑算法、N-Hash算法等,这种杂凑函数的安全性与所使用的基础密码算法有关。不基于任何假设和密码体制直接设计杂凑函数是当今比较流行的一种设计方法。美国的安全杂凑算法(SHA)就是这类算法,另外还有MD4、MD5、MD2、RIPE-MD、HAVAL等算法。
美国国家标准与技术局和美国国家安全局共同设计了一个与美国数字签名算法(DSA)一起使用的安全杂凑算法(SHA),标准是安全杂凑标准(SHS),SHA是用于该标准的算法。SHA的设计原则与MD4算法的设计原则极其相似,它很象是MD4算法的一种变形,但SHA的设计者没有公开SHA的详细设计决策。SHA输入的长度限制在2比特之内,输出长度为160比特。
消息认证是指使意定的接收者能够检验收到的消息是否真实的方法。检验的内容包括:证实消息的源和宿、消息的内容是否被窜改过(即消息的完整性)、消息的序号和时间性。可见,消息认证可使接收者识别消息的源和内容的真伪、时间性和意定的信宿。
消息的源和宿的认证可使用数字签名技术和身份识别技术,常用的方法有两种:一种方法是通信双方事先约定发送消息的数据加密密钥,接收者只需证实发送来的消息是否能用该密钥还原成明文就能鉴定发送者。如果双方使用同一个数据加密密钥,那么只需在消息中嵌入发送者的识别符即可。另一种方法是通信双方事先约定各自发送消息所使用的通行字,发送消息中含有此通行字并进行加密,接收者只需判别消息中解密的通行字是否等于约定的通行字就能鉴定发送者。为了安全起见,通行字应该是可变的。
消息的序号和时间性的认证主要是阻止消息的重放攻击。常用的方法有:消息的流水作业号、链接认证符,随机数认证法和时戳等。消息内容的认证即消息的完整性检验常用的方法是:消息发送者在消息中加入一个认证码并经加密后发送给接收者检验(有时只需加密认证码即可),接收者利用约定的算法对解密后的消息进行运算,将得到的认证码与收到的认证码进行比较,若二者相等,则接收,否则拒绝接收。目前实现这种方法的基本途径有两条:一条是采用消息认证码(MAC),另一条是采用窜改检测码(MDC)。MAC法利用函数f(x)(f(x)必须满足一定的条件)和密钥k将要发送的明文x或密文y变换成r比特的消息认证码f(x,k)或称其为认证符附加在x或y 之后发出,通常将f选为带密钥的杂凑函数。MDC法利用函数f(x)(f(x)必须满足一定的条件)将要发送的明文x变换成r比特的窜改检测码f(x)附加在x之后,在一起加密事先保密认证。当然,也可以只对窜改检测码f(x)加密。通常将f选为不带密钥的杂凑函数。接收者收到发送的消息后,按照发送这同样的方法对接收的数据或解密后的数据的前面部分进行计算,得到相应的r比特串,然后与接收恢复的r比特串逐位进行比较,若完全相同,则认为收到的消息未被窜改,否则,认为收到的消息已被窜改。
三,密钥管理技术
根据密码假设,一个密码系统的安全性取决于对密钥的保护,而不是对系统或硬件本身的保护。即使在密码体制公开或密码设备丢失的情况下,同一型号的密码机仍可继续使用。然而一旦密钥丢失或出错,不但合法用户不能提取信息,而且可能会是非法用户窃取信息。密钥的保密和安全管理在数据系统安全中是极为重要的 。
密钥管理包括密钥的产生、存储、装入、分配、保护、丢失、销毁等内容.其中密钥的分配和存储可能是最棘手的问题.密钥管理不仅影响系统的安全性,而且涉及到系统的可靠性、有效性和经济性。当然,密钥管理过程中也不可能避免物理上、人事上、规程上等一些问题。
1. 密钥分配协定
密钥分配协定是这样的一种机制:系统中的一个成员先选择一个秘密密钥,然后将它传送另一个成员或别的成员。传统的方法是通过邮递或信使护送密钥。这种方法的安全性完全取决于信使的忠诚和素质,当很难完全消除信使被收买的可能性。另外,这种方法的传输量和存储量都很大。人们希望能设计出满足以下两个条件的密钥分配协议:
1.传输量和存储量都比较小。
2.每一对用户U和V都能独立地计算一个秘密密钥K。
目前已经设计出了大量的满足上述两个条件的密钥分配协议,诸如Blom密钥分配协议,Diffie-Hellman密钥预分配协议、Kerboros 密钥分配协议、基于身份的密钥分配协议等。
密钥协定是一个协议,它通过两个或多个成员在一个公开的信道上通信联络建立一个秘密密钥。在一个密钥协定方案中,密钥的值是由两个成员提供的输入的一个函数。现有的密钥协定方案有Diffie-Hellman密钥交换协议、MTI密钥协定方案、Girault密钥协定方案等。
2. 秘密共享技术
存储在系统中所有密钥的安全性可能最终取决于一个主密钥。这样做存在两个明显的缺陷:一是若主密钥偶然或有意地被暴露,整个系统就易受攻击;二是若主密钥丢失或损坏,系统中的所有信息就不能用了。关于这个问题,Shamir于1979年提出了一种解决方法,称为门限法,实质上是一种秘密共享的思想。这种方法的基本观点是:讲一个密钥K按下述方式破成n个小片k1,k2,......,kn:
1.已知任意t个Ki的值易于计算出K。
2.已知任意t---1个或更少个Ki,则由于信息短缺而不能确定出k。
将n个小片分给n个用户。由于要重构密钥需要t个小片,故暴露一个小片或大到t-1个小片不会危及密钥,且少于t-1个用户不可能共谋到密钥,同时,若一个小片被丢失或损坏,认可恢复密钥(只要至少有t个有效的小片)。
人们基于拉格朗日内插多项式法、射影几何、线性代数、孙子定理等提出了许多秘密共享方案。
3. 密钥托管技术
加密技术既可以帮助守法公民和企业保密,又可以被犯罪分子用于掩护其犯罪事实,这就为政府管理社会,法律执行部门跟踪犯罪分子带来了一定的困难。从国家的利益考虑,应该能控制加密技术的使用。美国于1993年提出的密钥托管加密技术正符合这种要求。密钥托管有时也叫做密钥恢复。现在密钥托管已经是一些系统的派生术语,包括密钥恢复、受信任的第三方、特别获取、数据恢复等。近几年,密钥托管加密技术已成为密码技术研究和应用的焦点。
美国政府于1993年4月16日通过美国商业部颁布了具有密钥托管功能的加密标准(EES)。该标准规定使用专门授权制造的且算法(将该算法称之为Skipjack算法,目前已公布)不予公布的Clipper芯片实施商用加密。Clipper芯片是实现了EES标准的防窜扰芯片,它是由美国国家安全局(NSA)主持开发的硬件实现的密码部件。由于加密体制具有在法律许可时可以进行密钥合成的功能,所以政府在必要时无须花费巨大代价破译密码,而能够直接侦听。目前我们可以从网上搜集到近40种不同功能的密钥托管系统。