词条 | 密钥密码体系 |
释义 | 背景简介直到现代以前,密码学几乎专指加密算法:将普通信息(明文)转换成难以理解的资料(密文)的过程;解密算法则是其相反的过程:由密文转换回明文;密码机(cipher或cypher)包含了这两种算法,一般加密即同时指称加密与解密的技术。 密码机的具体运作由两部分决定:一个是算法,另一个是钥匙。钥匙是一个用于密码机算法的秘密参数,通常只有通讯者拥有。历史上,钥匙通常未经认证或完整性测试而被直接使用在密码机上,密钥来源于密码技术领域。 在汉语口语中,电脑系统或网络使用的个人帐户口令 (password)也常被以密码代称,虽然口令亦属密码学研究的范围,但学术上口令与密码学中所称的钥匙并不相同,即使两者间常有密切的关连。 密钥的定义密钥 正确读音【mi yue】统一四声 密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的数据. 密钥的发展对于普通的对称密码学,加密运算与解密运算使用同样的密钥。通常,使用的加密算法比较简便高效,密钥简短,破译极其困难,由于系统的保密性主要取决于密钥的安全性,所以,在公开的计算机网络上安全地传送和保管密钥是一个严峻的问题。正是由于对称密码学中双方都使用相同的密钥,因此无法实现数据签名和不可否认性等功能。此即为对称密钥体系,又称通用密钥体系。 20世纪70年代以来,一些学者提出了公开密钥体制,即运用单向函数的数学原理,以实现加、解密密钥的分离。加密密钥是公开的,解密密钥是保密的。这种新的密码体制,引起了密码学界的广泛注意和探讨,不像普通的对称密码学中采用相同的密钥加密、解密数据,此即为非对称密钥体系,又称公用密钥体系。 密钥密码体系的分类密钥分为两种:对称密钥与非对称密钥,所以密钥密码体系就分为两个领域,通用密钥体系和公用密钥体系。 对称密钥加密对称密钥加密,又称私钥加密,即信息的发送方和接收方用一个密钥去加密和解密数据。它的最大优势是加/解密速度快, 适合于对大数据量进行加密,但密钥管理困难。 非对称密钥加密系统非对称密钥加密,又称公钥密钥加密。它需要使用一对密钥 来分别完成加密和解密操作,一个公开发布,即公开密钥,另一 个由用户自己秘密保存,即私用密钥。信息发送者用公开密钥去 加密,而信息接收者则用私用密钥去解密。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。 通用密钥体系通用密钥密码体系的加密密钥Ke和解密密钥Kd是通用的,即发送方和接收方使用同样密钥的密码体制,也称之为“传统密码体制”。 例如,人类历史上最古老的“恺撒密码”算法,是在古罗马时代使用的密码方式。由于无论是何种语言文字,都可以通过编码与二进制数字串对应,所以经过加密的文字仍然可变成二进制数字串,不影响数据通信的实现。 现以英语为例来说明使用恺撒密码方式的通用密钥密码体系原理。 例如:恺撒密码的原理是,对于明文的各个字母,根据它在26个英文字母表中的位置,按某个固定间隔n变换字母,即得到对应的密文。这个固定间隔的数字n就是加密密钥,同时也是解密密钥。例cryptograsphy是明文,使用密钥n=4,加密过程如图所示: 明文: C R Y P T O G R A P H Y | | | | |................. | 密钥:n=4 | | | 密文: F U B S W R J U D S K B 明文的第一个字母C在字母表中的位置设为1,以4为间隔,往后第4个字母是F,把C置换为F;同样,明文中的第二个字母R的位置设为1,往后第4个字母是U,把R置换为U;依此类推,直到把明文中的字母置换完毕,即得到密文。密文是意思不明的文字,即使第三者得到也毫无意义。通信的对方得到密文之后,用同样的密文n=4,对密文的每个字母,按往前间隔4得到的字母进行置换的原则,即可解密得到明文。 恺撒密码方式的密钥只有26种,只要知道了算法,最多将密钥变换26次做试验,即可破解密码。因此,恺撒密码的安全性依赖于算法的保密性。 在通用密码体制中,目前得到广泛应用的典型算法是DES算法。DES是由“转置”方式和“换字”方式合成的通用密钥算法,先将明文(或密文)按64位分组,再逐组将64位的明文(或密文),用56位(另有8位奇偶校验位,共64位)的密钥,经过各种复杂的计算和变换,生成64位的密文(或明文),该算法属于分组密码算法。 DES算法可以由一块集成电路实现加密和解密功能。该算法是对二进制数字化信息加密及解密的算法,是通常数据通信中,用计算机对通信数据加密保护时使用的算法。DES算法在1977年作为数字化信息的加密标准,由美国商业部国家标准局制定,称为“数据加密标准”,并以“联邦信息处理标准公告”的名称,于1977年1月15日正式公布。使用该标准,可以简单地生成DES密码。 公用密钥体系1976年提出公共密钥密码体制,其原理是加密密钥和解密密钥分离。加密技术采用一对匹配的密钥进行加密、解密,具有两个密钥,一个是公钥一个是私钥,它们具有这种性质:每把密钥执行一种对数据的单向处理,每把的功能恰恰与另一把相反,一把用于加密时,则另一把就用于解密。用公钥加密的文件只能用私钥解密,而私钥加密的文件只能用公钥解密。 公共密钥是由其主人加以公开的,而私人密钥必须保密存放。为发送一份保密报文,发送者必须使用接收者的公共密钥对数据进行加密,一旦加密,只有接收方用其私人密钥才能加以解密。 相反地,用户也能用自己私人密钥对数据加以处理。换句话说,密钥对的工作是可以任选方向的。这提供了"数字签名"的基础,如果要一个用户用自己的私人密钥对数据进行了处理,别人可以用他提供的公共密钥对数据加以处理。由于仅仅拥有者本人知道私人密钥,这种被处理过的报文就形成了一种电子签名----一种别人无法产生的文件。 数字证书中包含了公共密钥信息,从而确认了拥有密钥对的用户的身份。 这样,一个具体用户就可以将自己设计的加密密钥和算法公诸于众,而只保密解密密钥。任何人利用这个加密密钥和算法向该用户发送的加密信息,该用户均可以将之还原。公共密钥密码的优点是不需要经安全渠道传递密钥,大大简化了密钥管理。它的算法有时也称为公开密钥算法或简称为公钥算法。 公钥本身并没有什么标记,仅从公钥本身不能判别公钥的主人是谁。 在很小的范围内,比如A和B这样的两人小集体,他们之间相互信任,交换公钥,在互联网上通讯,没有什么问题。这个集体再稍大一点,也许彼此信任也不成问题,但从法律角度讲这种信任也是有问题的。如再大一点,信任问题就成了一个大问题。 证书互联网络的用户群决不是几个人互相信任的小集体,在这个用户群中,从法律角度讲用户彼此之间都不能轻易信任。所以公钥加密体系采取了另一个办法,将公钥和公钥的主人名字联系在一起,再请一个大家都信得过有信誉的公正、权威机构确认,并加上这个权威机构的签名。这就形成了证书。 由于证书上有权威机构的签字,所以大家都认为证书上的内容是可信任的;又由于证书上有主人的名字等身份信息,别人就很容易地知道公钥的主人是谁。 1978年提出公共密钥密码的具体实施方案,即RSA方案。 1991年提出的DSA算法也是一种公共密钥算法,在数字签名方面有较大的应用优势 公开密钥密码体制是现代密码学的最重要的发明和进展。 在公钥体制中,加密密钥不同于解密密钥。人们将加密密钥公之于众,谁都可以使用;而解密密钥只有解密人自己知道。迄今为止的所有公钥密码体系中,RSA系统是最著名、使用最广泛的一种。 CA(Certificate Authority)电子签证机关(即CA)。CA也拥有一个证书(内含公钥),当然,它也有自己的私钥,所以它有签字的能力。网上的公众用户通过验证CA的签字从而信任CA,任何人都应该可以得到CA的证书(含公钥),用以验证它所签发的证书。 如果用户想得到一份属于自己的证书,他应先向CA提出申请。在CA判明申请者的身份后,便为他分配一个公钥,并且CA将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给那个用户(申请者)。 如果一个用户想鉴别另一个证书的真伪,他就用CA的公钥对那个证书上的签字进行验证(如前所述,CA签字实际上是经过CA私钥加密的信息,签字验证的过程还伴随使用CA公钥解密的过程),一旦验证通过,该证书就被认为是有效的。 CA除了签发证书之外,它的另一个重要作用是证书和密钥的管理。 由此可见,证书就是用户在网上的电子个人身份证,同日常生活中使用的个人身份证作用一样。CA相当于网上公安局,专门发放、验证身份证。 公开密钥算法RSA公开密钥算法是在1976年由当时在美国斯坦福大学的迪菲(Diffie)和赫尔曼(Hellman)两人首先发明的(论文"New Direction in Cryptography")。但目前最流行的RSA是1977年由MIT教授Ronald L.Rivest,Adi Shamir和Leonard M.Adleman共同开发的,分别取自三名数学家的名字的第一个字母来构成的。 1976年提出的公开密钥密码体制思想不同于传统的对称密钥密码体制,它要求密钥成对出现,一个为加密密钥(e),另一个为解密密钥(d),且不可能从其中一个推导出另一个。自1976年以来,已经提出了多种公开密钥密码算法,其中许多是不安全的, 一些认为是安全的算法又有许多是不实用的,它们要么是密钥太大,要么密文扩展十分严重。多数密码算法的安全基础是基于一些数学难题, 这些难题专家们认为在短期内不可能得到解决。因为一些问题(如因子分解问题)至今已有数千年的历史了。 公钥加密算法也称非对称密钥算法,用两对密钥:一个公共密钥和一个专用密钥。用户要保障专用密钥的安全;公共密钥则可以发布出去。公共密钥与专用密钥是有紧密关系的,用公共密钥加密的信息只能用专用密钥解密,反之亦然。由于公钥算法不需要联机密钥服务器,密钥分配协议简单,所以极大简化了密钥管理。除加密功能外,公钥系统还可以提供数字签名。 公钥加密算法中使用最广的是RSA。RSA使用两个密钥,一个公共密钥,一个专用密钥。如用其中一个加密,则可用另一个解密,密钥长度从40到2048bit可变,加密时也把明文分成块,块的大小可变,但不能超过密钥的长度,RSA算法把每一块明文转化为与密钥长度相同的密文块。密钥越长,加密效果越好,但加密解密的开销也大,所以要在安全与性能之间折衷考虑,一般64位是较合适的。RSA的一个比较知名的应用是SSL,在美国和加拿大SSL用128位RSA算法,由于出口限制,在其它地区(包括中国)通用的则是40位版本。 RSA算法研制的最初理念与目标是努力使互联网安全可靠,旨在解决DES算法秘密密钥的利用公开信道传输分发的难题。而实际结果不但很好地解决了这个难题;还可利用RSA来完成对电文的数字签名以抗对电文的否认与抵赖;同时还可以利用数字签名较容易地发现攻击者对电文的非法篡改,以保护数据信息的完性。 公用密钥的优点就在于,也许你并不认识某一实体,但只要你的服务器认为该实体的CA是可靠的,就可以进行安全通信,而这正是Web商务这样的业务所要求的。例如信用卡购物。服务方对自己的资源可根据客户CA的发行机构的可靠程度来授权。目前国内外尚没有可以被广泛信赖的CA。美国Natescape公司的产品支持公用密钥,但把Natescape公司作为CA。由外国公司充当CA在我国是一件不可想象的事情。 公共密钥方案较保密密钥方案处理速度慢,因此,通常把公共密钥与专用密钥技术结合起来实现最佳性能。即用公共密钥技术在通信双方之间传送专用密钥,而用专用密钥来对实际传输的数据加密解密。另外,公钥加密也用来对专用密钥进行加密。 在这些安全实用的算法中,有些适用于密钥分配,有些可作为加密算法,还有些仅用于数字签名。多数算法需要大数运算,所以实现速度很慢,不能用于快的数据加密。以下将介绍典型的公开密钥密码算法-RSA。 RSA算法很好的完成对电文的数字签名以抗对数据的否认与抵赖;利用数字签名较容易地发现攻击者对电文的非法篡改,以保护数据信息的完整性。目前为止,很多种加密技术采用了RSA算法,比如PGP(PrettyGoodPrivacy)加密系统,它是一个工具软件,向认证中心注册后就可以用它对文件进行加解密或数字签名,PGP所采用的就是RSA算法。由此可以看出RSA有很好的应用。 密钥的产生1. 选择两个大素数,p 和q 。 2. 计算: n = p * q (p,q分别为两个互异的大素数,p,q 必须保密,一般要求p,q为安全素数,n的长度大于512bit ,这主要是因为RSA算法的安全性依赖于因子分解大数问题)。有欧拉函数 (n)=(p-1)(q-1)。 3. 然后随机选择加密密钥e,要求 e 和 ( p - 1 ) * ( q - 1 ) 互质。 4. 最后,利用Euclid 算法计算解密密钥d, 满足de≡1(mod φ(n))。其中n和d也要互质。数e和n是公钥,d是私钥。两个素数p和q不再需要,应该丢弃,不要让任何人知道。 加密与解密 1. 加密信息 m(二进制表示)时,首先把m分成等长数据块 m1 ,m2,..., mi ,块长s,其中 2^s <= n, s 尽可能的大。 2. 对应的密文是:ci ≡mi^e ( mod n ) ( a ) 3. 解密时作如下计算:mi ≡ci^d ( mod n ) ( b ) RSA 可用于数字签名,方案是用 ( a ) 式签名, ( b )式验证。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。