显示标签为“PKI”的博文。显示所有博文
显示标签为“PKI”的博文。显示所有博文

2007年8月19日星期日

加密技术及流行加密算法

深入浅出谈加密

  加密技术已经渗透进了整个信息时代,任何人都不可避免地要接触到——即使你根本不知道“加密”是什么。银行卡、登录计算机的口令、电子邮件的账号密码……无一例外地跟加密技术紧紧联系在一起。

  任何一个安全专家提起如今信息技术的安全保护措施,都不可避免要涉及一个词:加密(encrypt)。的确,纵观当今信息世界,加密离我们并不遥远,从小小的个人密码,到重要机密文件,无一不是经过加密后的产物。

  许多人一提起“加密”,都会有一种畏惧心理,以为加密技术绝对是“新手勿近”的尖端科技。其实不然,加密实际上一直陪伴在你一生的成长之中,回 忆一下小时候很多人都玩过的智力游戏:007收到遇害同事的字条,上面写着4FEFKKILJK81IP,根据事先约定,已知C=3、Q=H,问该同事要 传递什么信息给007?如果把这道题目放到信息技术领域来看待,就是一条经过简单替换字符算法加密的字符串,它把原始字符改为使用相对应的数字排序来替 代,从而产生了一组“没有意义”的字符组合,但是因为我们知道C=3等若干条件,所以稍加排序即可得到这样的句子:Do not trust Hary,这个过程也被称为“解密”(decrypt)。

  有些读者也许会不屑一顾,就这么简单的游戏也算加密?别忘了,我们是在已经知道“C=3”的前提下完成“解密”的,换句话说,也就是已经知道了“算法”,否则光凭以上一组不知所云的字符串,谁能解开其中的秘密?

  加密和解密

  “就不让你直接看到信息”——将与之相似的思路加以扩充,便成了“加密”的来由;而拓展“我偏要看到你不想让我看的信息”的思想,则发展出了“解密”技术。加密和解密从诞生之日起,就是一对不可分割的难兄难弟。

  加密作为保障数据安全的一种方式,很早就出现在人类的信息传递中,从远古时代开始,人们就已经在采用一种如今称为“编码”(Code)的方法用 于保护文字信息。最早影响全世界的加密技术诞生于战争年代,由德国人发明,用于传递情报信息;而最早影响全世界的解密技术,也诞生于战争年代,由英美人开 发出来用于破译德国人的情报信息。正是战争让加解密技术不断改进发展,直到现在,加密技术仍然在为信息时代的数据安全服务。

  说了这么多,也该为加密技术做一个较为准确而科学的概念了,所谓“加密”,就是对原内容为明文的文件或数据按某种算法进行处理,使其成为不可读 的代码,经过这样处理的数据通常称为“密文”,密文只能在经过相对应的反向算法处理后才能恢复原来的内容,通过这样的途径来达到保护数据不被非法窃取、阅 读的目的,而将该编码信息转化为其原来数据的过程,就是“解密”。

  无论哪一个国家,都会有专家专注于加密技术的研究,因此也就出现了形形色色的加密算法,这些加密算法按照生物界“弱肉强食”的定律发展并完善 着。其中,强度高(不容易被破解)的算法得以保留和继续发展,强度低的算法最终被时间淘汰。除了一些公开的加密算法之外,也存在着一部分未公开的私人加密 算法。通常我们提及加密技术时所说的“MD5加密”、“SHA-1加密”、“RSA加密”等,其实就是在说它们所采用的算法。

  算法:关键的抉择

  “我想要葡萄,还想要橙子,可是我只能选择其中一样,我该选哪个?”如果要为自己的数据加密,我们就不得不面对这样一个选择,因为世界上的算法 不止一个,究竟什么算法才是最适合的呢?于是,我们逐渐陷入一个选择的泥潭中。其实,在选择使用哪种算法作为你的加密基础前,如果能对各种常见算法的原理 有个大概的了解,相信你就不会感到那么迷茫了。

  基于“消息摘要”的算法

  “消息摘要”(Message Digest)是一种能产生特殊输出格式的算法,这种加密算法的特点是:无论用户输入什么长度的原始数据,经过计算后输出的密文都是固定长度的,这种算法 的原理是根据一定的运算规则对原数据进行某种形式的提取,这种提取就是“摘要”,被“摘要”的数据内容与原数据有密切联系,只要原数据稍有改变,输出的 “摘要”便完全不同,因此,基于这种原理的算法便能对数据完整性提供较为健全的保障。但是,由于输出的密文是提取原数据经过处理的定长值,所以它已经不能 还原为原数据,即消息摘要算法是“不可逆”的,理论上无法通过反向运算取得原数据内容,因此它通常只能被用来做数据完整性验证,而不能作为原数据内容的加 密方案使用,否则谁也无法还原。尽管如此,“消息摘要”算法还是为密码学提供了健全的防御体系,因为连专家也无法根据拦截到的密文还原出原来的内容。

  如今常用的“消息摘要”算法经历了多年验证发展而保留下来的算法已经不多,这其中包括MD2、MD4、MD5、SHA、SHA-1/256/383/512等,其中最广泛应用的是基于MD4发展而来的MD5算法。

  MD5算法

  MD5算法的全称是“消息摘要算法5”(Message-Digest Algorithm version.5),它是当前公认的强度最高的加密算法。出现在MD5之前的是MD2和MD4,虽然这三者的算法结构多少有点相似,但是由于MD2诞生 于8位计算的时代,因此它的设计与后来出现的MD4、MD5完全不同,因此不能进行简单的替代。然而,无论是MD2、MD4还是MD5,它们都是在获得一 个随机长度信息的基础上产生一个128位信息摘要的算法。

  MD2算法是Rivest在1989年开发的,它很慢(因为是为8位机器设计的),但相当安全。在这个算法中,首先要对信息进行数据补位,使信 息的字节长度是16的倍数。然后,以一个16位的检验和追加到信息末尾,并且根据这个新产生的信息计算出散列值(Hash),最终运算结果即为类似于 “d41d8cd98f00b204e9800998ecf8427e”的摘要,而且这个值是惟一的。

  为了加强算法的安全性,Rivest在1990年又开发出MD4算法。MD4算法同样需要填补信息以确保信息的字节长度加上448后能被512整除(信息字节长度除以512的余数为448)。然后,一个以64位二进制表示的信息的最初长度被添加进来。

加密算法与密钥管理

加密算法与密钥管理

文章作者: 文章来源:网络共享 发布时间:2005-05-06 00:11:55
密码系统的两个基本要素是加密算法和密钥管理。加密算法是一些公式和法则,它规定了明文和密文之间的变换方法。由于密码系统的反复使用,仅靠加密算法已难 以保证信息的安全了。事实上,加密信息的安全可靠依赖于密钥系统,密钥是控制加密算法和解密算法的关键信息,它的产生、传输、存储等工作是十分重要的。

----在 信息处理系统中,密码学的主要应用有两类:数据的通信保护和数据的存储保护。在这些应用领域,密码方法的使用与过去在军事、外交上的传统使用方法有很大的 区别。在传统应用中,双方所需的密钥通过另外的安全途径传送;而在信息处理系统中,密钥的某些信息必须放在机器中。如此一来,总有一些特权用户有机会存取 密钥,这对加密系统的安全是十分不利的。解决这一问题的方法之一是研制多级密钥管理体制。例如,在二级密钥管理体制中,一级密钥(也称主密钥)存储在安全 区域,用它对二级密钥信息加密生成二级密钥(也称为工作密钥),再用工作密钥对数据加密。当然,这些动作都应该是连贯的密箱操作。然而纯软件的加密系统难 以做到密箱操作。

----实际上,无论多么 高明的反跟踪技术也难以让人放心,因为软件跟踪高手会将整个程序分解、剖析。但如果把主密钥、加密算法等关键数据、程序固化在加密卡中,就能解决密箱操作 的难题。主程序将待加密的一组明文数据、一组二级密钥信息传给加密卡,加密卡则完成以下的工作:用主密钥和加密算法将取得的一组二级密钥信息加密成工作密 钥,再用该工作密钥和加密算法将明文数据加密并将所得密文经接口返回给主程序。

数据库密码

 

----应用于数据库加密的加密算法称为数据库密码。目前常用的加密算法可分为三类:

----1. 序列密码体制

----这种密码直接对当 前的字符进行变换,也就是说,以一个字符为单位进行加密变换。在这种加密体制中,每一字符数据的加密与报文的其他部分无关。例如,直接对明文加上一串同等 长度的乱码(也可看成是密钥),只要所用的乱码是随机数且不重复使用,就实现了“一次一密”的加密。从理论上讲,真正实现了“一次一密”的密码是可靠的密 码,原则上是不可破译的。这类密码的明文和密文长度一般不变,传递迅速、快捷;其缺点是密码破译人员比较容易得到明密对照双码,便于其进行密码分析,同时 乱码的产生和管理比较困难,难以真正做到“一次一密”。该类密码适用于通信领域。

----2. 分组密码体制

----应用这类密码时, 明文按固定长度分组,对各组数据用不同的密钥加密(或脱密)。这类密码按分组进行加密变换,一个字符数据不仅与密钥有关,而且还与其他字符数据有关,密码 分析的穷尽量很大。例如传统的64位分组法,它的穷尽量为264-1,这是一个20位的十进制数,即使用每秒运算万亿次以上的巨型计算机进行攻击,平均穷 尽时间也需要数年。当然这仅仅是理论数据,在攻击密码时还有其他约束条件,如文字、数据、环境、规律等信息,所以实际所需的攻击时间要短得多。

----在使用分组密码 时,对明文尾部不满一个整组的碎片通常采用填充随机数的办法将其扩充为一个整组,然后进行正常加密。由于尾组的扩充,使得密文的长度大于明文的长度。分组 密码可用于计算机存储加密,但因为数据库加密后的数据长度不能改变,所以必须改进分组加密算法的使用方法。

----3. 公开密钥体制

----这种体制的一个例子是RSA密码。这类密码的共同缺点是加/脱密速度较慢,据报道,这类密码的运算速率仅达到其他密码的千分之一到百分之一。公开密钥体制的密码目前常用于用户认证、数字签名以及密钥传输等,不能适应数据库加密的速度要求。

----序列密码和分组密码也称为对称性密码,这类密码加密时用某个密钥加密,脱密时还用这个密钥脱密。公开密钥密码也称非对称密码,这类体制的密码具有两个密钥:公钥和私钥,加密时用公钥加密,脱密时必须用私钥脱密。

----数据库加密系统对数据库密码的要求如下:

  • 数据库加密以后,数据量不应明显增加;
  • 某一数据加密后,其数据长度不变;
  • 加/脱密速度要足够快,数据操作响应时间应该让用户能够接受。

----改变对分组密码算法传统的应用处理方法,使其加密后密文长度不变,就能满足以上几点要求。这里以数据加密标准DES为例进行说明。

----DES是一种对二 进制数据进行加密的算法,数据分组长度、密钥长度和输出密文长度均为64位(现在有人主张使用128位),明文经过16轮的叠代、乘积变换、压缩变换等编 码过程输出密文。关于DES算法以及它对明文数据进行的复杂操作已经在很多著作中有过详细的描述,这里不再赘述。一个需要注意的问题是对尾部碎片的处理方 法。传统的做法是填充数据而使其成为一个整组,这种处理方法会使数据扩张,不适用于数据库加密。为此我们采用了“密码挪用法”来解决这个问题,如下图所 示:

----在该例中,待加密 数据的长度为13。第一整组(1~8 码)加密后截取第6~8码的密文与尾部(9~13码)组成一个整组进行加密,加密所得密码接在前一组的第5个密码之后。其中,第6~8码实际上进行了二次 加密,在脱密时也应该进行二次脱密。这种方案一方面保证了64位分组加密,同时又保证了数据库加密以后,数据长度不会变化。

----另外,关系数据库 中有些数据比较短,例如人事档案表中 “性别”字段,一般只定义一个汉字(16bit)。这类数据长度不到一个分组,如果不进行数据扩张,其密码强度会减弱,需要进行特殊处理。因此,当用户要 求对这类数据加密时,系统将自动检查并将其定义为二进制64分位定长数据类型,加密时,实际数据不足一组的部分用随机数填满。

----加密数据的数据类 型需要处理,否则数据库管理系统将会因加密后的数据不符合定义的数据类型而拒绝加载。解决方法之一是另外建立密文表用于存放密文。凡是需要加密的数据都定 义为计算机二进制数据类型。加密以后插入数据库的数据全部为二进制数据类型的数据,当用户检索时,加密系统自动脱密并转换成用户所需要的数据类型。

----加密系统为数据库用户提供了定义加密要求的手段。通过系统提供的用户界面,用户可以选择需要加密的数据库表,并确定该表需要加密的列数据。

----当应用系统输入一条数据库表记录时,系统查得该表的加密要求,如果需要加密,则对需要加密的列数据进行加密,然后将得到的密文插入到数据库表中。如果该表不需要加密,则将明文直接插入到数据库表中。

----当应用系统查得一条数据库表记录时,如果是明文(该表没有加密要求),则直接将明文记录交付给用户;如果有加密要求,则将每个需要脱密的列数据脱密,并将所得到的明文交付给用户。



密钥管理方法

 

----数据库加密需要实 行二级密钥管理。一级密钥为主密钥,二级密钥为工作密钥。主密钥的作用是对二级密钥信息加密生成工作密钥。工作密钥用于对数据库数据的加/脱密。工作密钥 信息的长度为64位,前56位是记录名,需要带校验地存储在数据库表中。后8位是数据库表的列(字段)信息(该字段在表中的某些特征),它们是临时生成 的。为了存储记录名数据,每个数据库表增加了一个记录名字段,在用户录入数据时,系统自动生成记录名数据,使每条记录都有一个记录名并做到各记录名数据互 不重复。

----设一个表有m列、n条记录,则对于每一个加密单位都有一个对应的二级密钥信息XiYj,组织方法如下:

----其中,Xi占56位(bit), X序列的周期为256-1≈7 ×1016。

----Yj占8位(bit),允许列编号0~255,即一个数据库表最多允许256列数据。

----XiYj的总长度为56+8=64位(bit)。在数据需要加/ 脱密时,将相应的64位二级密钥信息用主密钥进行加密即得到工作密钥,用工作密钥完成对数据的加/脱密。

----举例来说,如果一年需要1×109条记录,在足够长的时间内可提供不重复的X序列:

----(7×1016)÷(1×109)=7×107(年)。这在足够长的时间内保证了Xi信息的两两互异。目前Sybase DBMS规定,一个数据库表的列数不超过256列,这就保证了Yj信息的两两互异。由此保证了XiYj信息的两两互异,也就证明了工作密钥的唯一性。

----事实上,数据库加密系统中还需要其他一些密钥信息。例如对于多服务器、多数据库、多用户、多用户组等情况,还需要根据应用需求增添一些信息,其方法是将以上各类实体分别进行编码、存储并依据不同情况使用。

密钥的安全保护

 

----理论上讲,实现了“一次一密”密钥管理的密码是不可破译的,因此如何确保密钥管理系统的安全成为关键问题。本系统中,主密钥保护了工作密钥,工作密钥保护敏感信息,因而整个系统的安全依赖于主密钥的安全。

----主密钥的安全需要解决以下几个问题:

----1. 主密钥的生成

----本系统采用投币法产生64位二进制数据。

----2. 主密钥的存储

----主密钥经加密并存放于安全区域内,使用时由系统自动获取并脱密。本系统也可将主密钥注入加密卡中以利安全。

----3. 主密钥的更换

----在数据库加密课题 中,主密钥的更换是一个比较棘手的问题。主密钥更换以后,会造成工作密钥的全部更换。数据库中存储着海量数据,已经加密的数据需要用原来的密钥系统脱密, 而且脱密时间将会很长。为安全起见,密钥更换前,需对数据库系统进行全库备份,然后利用系统所提供的工具完成对数据库中密数据向明数据的转换。更换主密钥 后,再根据数据库加密要求进行明数据向密数据的转换。

----在大型数据库中, 这种明密数据的转换工作需要认真对待。首先应该制定计划,做好充分的准备工作。对所做的工作应做好登记,使密钥更换工作有条不紊地进行。事实上,由上面密 钥系统的应用分析可以知道,即使不变更主密钥,也可以在足够长的时间内保证Xi信息的两两互异,也就是说,在通常的数据库生存期内,不变更主密钥也能充分 保证加密系统密钥使用的“一次一密”。只要系统管理得当,密钥系统仅需数年更换一次,或者不必更换。

2007年8月17日星期五

PKI技术原理(收集 整理 归纳)

PKI技术原理(收集 整理 归纳)


2007-03-14 11:17:56
 标签:PKI 加密算法 

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://7layer.blog.51cto.com/57448/20430
对称加密 symmetric cryptographic
非对称加密 asymmetric cryptographic
密钥交换协议 key agreement/exchange
哈希算法 Hash
报文认证码 MAC
数字签名 digital signature
数字证书 digital ID/certificate
证书颁发机构 certificate authority
公钥架构 public key infrastructure
PK 公钥
SK 私钥
公钥加密技术
PKI是建立在公钥加密技术之上的,那么要了解PKI则 首先要看一下公钥加密技术。加密是保护数据的科学方法。加密算法在数学上结合了输入的文本数据和一个加密密钥,产生加密的数据(密文)。通过一个好的加密 算法,通过密文进行反向加密过程,产生原文就不是那么容易了,需要一个解密密钥来执行相应的转换。密码技术按照加解密所使用的密钥相同与否,分为对称密码 学和非对称密码学,前者加解密所使用的密钥是相同的,而后者加解密所使用的密钥是不相同的,即一个秘密的加密密钥(签字密钥)和一个公开的解密密钥(验证密钥)。 在传统密码体制中,用于加密的密钥和用于解密的密钥完全相同,通过这两个密钥来共享信息。这种体制所使用的加密算法比较简单,但高效快速,密钥简短,破译 困难。然而密钥的传送和保管是一个问题。例如,通讯双方要用同一个密钥加密与解密,首先,将密钥分发出去是一个难题,在不安全的网络上分发密钥显然是不合 适的;另外,任何一方将密钥泄露,那么双方都要重新启用新的密钥。
 
1976年,美国的密码学专家DiffieHellman为解决上述密钥管理的难题,提出一种密钥交换协议,允许在不安全的媒体上双方交换信息,安全地获取相同的用于对称加密的密钥。在此新思想的基础上,很快出现了非对称密钥密码体制,即公钥密码体制(PKI)。自1976年第一个正式的公共密钥加密算法提出后,又有几个算法被相继提出。如Ralph Merkle猜谜法、Diffie-Hellman指数密钥交换加密算法、RSA加密算法、Merkle-Hellman背包算法等。目前,结合使用传统与现代加密算法的具体应用有很多,例如PGPRIPEM等加密软件,是当今应用非常广的加密与解密软件。公共密钥算法的基本特性是加密和解密密钥是不同的,其 中一个公共密钥被用来加密数据,而另一个私人密钥被用来解密数据。这两个密钥在数字上相关,但即便使用许多计算机协同运算,要想从公共密钥中逆算出对应的 私人密钥也是不可能的。这是因为两个密钥生成的基本原理根据一个数学计算的特性,即两个对位质数相乘可以轻易得到一个巨大的数字,但要是反过来将这个巨大 的乘积数分解为组成它的两个质数,即使是超级计算机也要花很长的时间。此外,密钥对中任何一个都可用于加密,其另外一个用于解密,且密钥对中称为私人密钥 的那一个只有密钥对的所有者才知道,从而人们可以把私人密钥作为其所有者的身份特征。根据公共密钥算法,已知公共密钥是不能推导出私人密钥的。最后使用公 钥时,要安装此类加密程序,设定私人密钥,并由程序生成庞大的公共密钥。使用者向与其联系的人发送公共密钥的拷贝,同时请他们也使用同一个加密程序。之后 他人就能向最初的使用者发送用公共密钥加密成密码的信息。仅有使用者才能够解码那些信息,因为解码要求使用者知道公共密钥的口令,那是惟有使用者自己才知 道的私人密钥。在这些过程当中,信息接受方获得对方公共密钥有两种方法:一是直接跟对方联系以获得对方的公共密钥;另一种方法是向第三方即可靠的验证机构 (如Certification AuthorityCA),可靠地获取对方的公共密钥。
现在,我们可以看PKI的定义:PKIPublic Key Infrastructure)是一个用非对称密码算法原理和技术来实现并提供安全服务的具有通用性的安全基础设施,是一种遵循标准的利用公钥加密技术为网上电子商务、电子政务的开展,提供一整套安全的基础平台。PKI,公钥基础设施,顾名思义,PKI技术就是利用公钥理论和技术建立的提供网络信息安全服务的基础设施。PKI管理平台能够为网络中所有需要采用加密和数字签名等密码服务的用户提供所需的密钥和证书管理,用户可以利用PKI平台提供的安全服务进行安全通信。
PKI公开密钥基础设施能够让应用程序增强自己的数据和资源的安全,以及与其他数据和资源交换中的安全。使用PKI安全基础设施像将电器插入墙上的插座一样简单。
 
PKI的内容
 
一个完整的PKI系统必须具备权威认证机构(CA)、数字证书库、密钥备份及恢复系统、证书作废系统和应用接口(API)等基本组成部分。
 
1、权威认证机构(Certificate Authority):权威认证机构简称CA,是PKI的核心组成部分,也称作认证中心。它是数字证书的签发机构。CAPKI的核心,是PKI应用中权威的、可信任的、公正的第三方机构。
 
2、数字证书库:在使用公钥体制的网络环境中,必须向公钥的使用者证明公钥的真实合法性。因此,在公钥体制环境中,必须有一个可信的机构来对任何一个主体的公钥进行公证,证明主体的身份以及它与公钥的匹配关系。目前较好的解决方案是引进证书(Certificate)机制。(1)证书。证书是公开密钥体制的一种密钥管理媒介。它是一种权威性的电子文档,形同网络环境中的一种身份证,用于证明某一主体的身份以及其公开密钥的合法性。(2)证书库。证书库是证书的集中存放地,是网上的一种公共信息库,供广大公众进行开放式查询。到证书库访问查询,可以得到想与之通信实体的公钥。证书库是扩展PKI系统的一个组成部分,CA的数字签名保证了证书的合法性和权威性。
 
3、密钥备份及恢复系统:如果用户丢失了密钥,会造成已经加密的文件无法解密,引起数据丢失,为了避免这种情况,PKI提供密钥备份及恢复机制。
 
4、证书作废系统:有时因为用户身份变更或者密钥遗失,需要将证书停止使用,所以提供证书作废机制。
 
5PKI应用接口系统: PKI应用接口系统是为各种各样的应用提供安全、一致、可信任的方式与PKI交互,确保所建立起来的网络环境安全可信,并降低管理成本。没有PKI应用接口系统,PKI就无法有效地提供服务。
 
整个PKI系统中,只有CA会和普通用户发生联系,其他所有部分对用户来说都是透明的。
为什么要使用非对称加密算法?
如 果你理解了对称加密算法的含义,你就理解了非对称加密算法的意思。你猜对了,非对称加密算法中的加密密钥和解密密钥是不一样的。要找到一种非对称加密算法 可不是一件容易的事,Ron Rivest, Adi Shamir 和Leonard Adleman终于在1978年提出了RSA公开密钥算法(以此三人姓名的首字母命名),是现在应用最广泛的一种非对称加密算法,这种算法的运算非常复 杂,速度也很慢,主要是利用数学上很难分解两个大素数的乘积的原理。RSA算法的可靠性没有得到过数学上的论证,但实践证明它是我们可以依赖的工具。
到底为什么我们需要这个笨重、复杂、缓慢的加密算法,在我们有了DES这样的高速算法的时候?
设 想你的朋友需要发送一些非常重要、非常机密的信息给你,而你跟外界的每一条通路都被监听了。那还不简单,你的朋友用DES对信息加密后传送给你不就行了, 没有密钥,就算被人监听,他也不知道什么意思呀。可是问题在于你也需要密钥才能查看这些信息!你必须要知道你的朋友给信息加密的密钥才能完成对信息的接 收!而你的朋友是没有一种安全的方法传递密钥给你的。如果说经常跟你通信的朋友还可以事先跟你约定好密钥,那么Internet上那么多人和机构是没有办 法跟你事先就约定好的。公开密钥系统(也就是非对称加密系统)的作用就在于,此时,你可以先将加密密钥正常传送给你的朋友,让你的朋友用这个加密密钥对信 息进行加密后传送给你,然后你再用解密密钥恢复信息的明文进行阅读,在这个过程中解密密钥不会以任何形式传送,只掌握在你的手中,也就是说你的朋友对信息 加密后,他自己也没办法再解开进行验证。监听者得到了加密密钥,却无法得出解密密钥,也就无法查看信息的明文
  加密密钥和解密密钥是相对的说法,如果用加 密密钥加密那么只有解密密钥才能恢复,如果用解密密钥加密则只有加密密钥能解密,所以它们被称为密钥对,其中的一个可以在网络上发送、公布,叫做公钥,而 另一个则只有密钥对的所有人才持有,叫做私钥,非对称公开密钥系统又叫做公钥系统,是我们现代金融业的基石。
DES
单钥密码体制:加密解密用同一把密钥;不足在于密钥的管理和传送
SHA和MD5
消息摘要:数据块生成一个数字指纹,不管数据块的大小长度。
RSA
公钥密码:公开的加密密钥,不公开的解密密钥。
数字签名DSA
对数字指纹进行RSA加密。两个优点,发送者不能抵赖(如何保证?),接受者可以验证正确性,因为加密密钥是公开的。
数字签名使用私钥来签名的。
PKI原理
PKI 即公共密钥体系。它利用公共密钥算法的特点,建立一套证书发放、管理和使用的体系,来支持和完成网络系统中的身份认证、信息加密、保证数据完整性和抗抵赖性。PKI 体系可以有多种不同的体系结构、实现方法和通信协议。
公共(非对称)密钥算法使用加密算法和一对密 钥:一个公共密钥(公钥,public key)和一个私有密钥(私钥,private key)。其基本原理是:由一个密钥进行加密的信息内容,只能由与之配对的另一个密钥才能进行解密。公钥可以广泛地发给与自己有关的通信者,私钥则需要十 分安全地存放起来。使用中,甲方可以用乙方的公钥对数据进行加密并传送给乙方,乙方可以使用自己的私钥完成解密。公钥通过电子证书与其拥有者的姓名、工作 单位、邮箱地址等捆绑在一起,由权威机构(CA, Certificate Authority)认证、发放和管理。把证书交给对方时就把自己的公钥传送给了对方。证书也可以存放在一个公开的地方,让别人能够方便地找到和下载。
公共密钥方法还提供了进行数字签名的办法:签字方对要发送的数据提取摘要并用自己的私钥对其进行加密;接收方验证签字方证书的有效性和身份,用签字方公钥进行解密和验证,确认被签字的信息的完整性和抗抵赖性。
公共密钥方法通常结合使用对称密钥(单密钥)方法,由计算效率高的对称密钥方法对文件和数据进行加密。
目前在 Internet 上主要使用 RSA 公共密钥方法,密钥长度 512 或 1024 位,是广泛使用的 SSL/TLS 和S/MIME 等安全通信协议的基础。
加密
 
数据加密技术从技术上的实现分为在软件和硬件两方面。按作用不同,数据加密技术主要分为数据传输、数据存储、数据完整性的鉴别以及密钥管理技术这四种。
 
在网络应用中一般采取两种加密形式:对称密钥和公开密钥,采用何种加密算法则要结合具体应用环境和系统,而不能简单地根据其加密强度来作出判断。因为除了加密算法本身之外,密钥合理分配、加密效率与现有系统的结合性,以及投入产出分析都应在实际环境中具体考虑。
 
对 于对称密钥加密。其常见加密标准为DES等,当使用DES时,用户和接受方采用64位密钥对报文加密和解密,当对安全性有特殊要求时,则要采取IDEA和 三重DES等。作为传统企业网络广泛应用的加密技术,秘密密钥效率高,它采用KDC来集中管理和分发密钥并以此为基础验证身份,但是并不适合 Internet环境。
 
在Internet中使用更多的是公钥系统。即公开密钥加密,它的加密密钥和解密密钥是不同的。一般对于每个用 户生成一对密钥后,将其中一个作为公钥公开,另外一个则作为私钥由属主保存。常用的公钥加密算法是RSA算法,加密强度很高。具体作法是将数字签名和数据 加密结合起来。发送方在发送数据时必须加上数据签名,做法是用自己的私钥加密一段与发送数据相关的数据作为数字签名,然后与发送数据一起用接收方密钥加 密。当这些密文被接收方收到后,接收方用自己的私钥将密文解密得到发送的数据和发送方的数字签名,然后,用发布方公布的公钥对数字签名进行解密,如果成 功,则确定是由发送方发出的。数字签名每次还与被传送的数据和时间等因素有关。由于加密强度高,而且并不要求通信双方事先要建立某种信任关系或共享某种秘 密,因此十分适合Internet网上使用。
 
 
 
常规密钥密码体制
 
所谓常规密钥密码体制,即加密密钥与解密密钥是相同的。
 
在早期的常规密钥密码体制中,典型的有代替密码,其原理可以用一个例子来说明:
 
将字母a,b,c,d,…,w,x,y,z的自然顺序保持不变,但使之与D,E,F,G,…,Z,A,B,C分别对应(即相差3个字符)。若明文为student则对应的密文为VWXGHQW(此时密钥为3)。
 
由于英文字母中各字母出现的频度早已有人进行过统计,所以根据字母频度表可以很容易对这种代替密码进行破译。
 
数据加密标准DES
 
DES算法原是IBM公司为保护产品的机密于1971年至1972年研制成功的,后被美国国家标准局和国家安全局选为数据加密标准,并于1977年颁布使用。ISO也已将DES作为数据加密标准。
 
DES对64位二进制数据加密,产生64位密文数据。使用的密钥为64位,实际密钥长度为56位(有8位用于奇偶校验)。解密时的过程和加密时相似,但密钥的顺序正好相反。
  
DES的保密性仅取决于对密钥的保密,而算法是公开的。DES内部的复杂结构是至今没有找到捷径破译方法的根本原因。现在DES可由软件和硬件实现。美国AT&T首先用LSI芯片实现了DES的全部工作模式,该产品称为数据加密处理机DEP。
 
公开密钥密码体制
 
公开密钥(public key)密码体制出现于1976年。它最主要的特点就是加密和解密使用不同的密钥,每个用户保存着一对密钥 公开密钥PK和秘密密钥SK,因此,这种体制又称为双钥或非对称密钥密码体制。
 
在这种体制中,PK是公开信息,用作加密密钥,而SK需要由用户自己保密,用作解密密钥。加密算法E和解密算法D也都是公开的。虽然SK与PK是成对出现,但却不能根据PK计算出SK。公开密钥算法的特点如下:
 
1、用加密密钥PK对明文X加密后,再用解密密钥SK解密,即可恢复出明文
写为:DSK(EPK(X))=X  
2、加密密钥不能用来解密,即DPK(EPK(X))≠X
3、在计算机上可以容易地产生成对的PK和SK。
4、从已知的PK实际上不可能推导出SK。
5、加密和解密的运算可以对调,即:EPK(DSK(X))=X
 
在公开密钥密码体制中,最有名的一种是RSA体制。它已被ISO/TC97的数据加密技术分委员会SC20推荐为公开密钥数据加密标准。
 
数字签名
 
数字签名技术是实现交易安全的核心技术之一,它的实现基础就是加密技术。在这里,我们介绍数字签名的基本原理。
 
以往的书信或文件是根据亲笔签名或印章来证明其真实性的。但在计算机网络中传送的报文又如何盖章呢?这就是数字签名所要解决的问题。数字签名必须保证以下几点:
 
接收者能够核实发送者对报文的签名;发送者事后不能抵赖对报文的签名;接收者不能伪造对报文的签名。
  
现在已有多种实现各种数字签名的方法,但采用公开密钥算法要比常规算法更容易实现。下面就来介绍这种数字签名。
 
发 送者A用其秘密解密密钥SKA对报文X进行运算,将结果DSKA(X)传送给接收者B。B用已知的A的公开加密密钥得出EPKA(DSKA(X))=X。 因为除A外没有别人能具有A的解密密钥SKA,所以除A外没有别人能产生密文DSKA(X)。这样,报文X就被签名了。 用私钥加密发送给对方。对方只能用自己的公钥打开。以实现核实发送者对报文的签名。
 
假 若A要抵赖曾发送报文给B。B可将X及DSKA(X)出示给第三者。第三者很容易用PKA去证实A确实发送消息X给B。反之,如果是B将X伪造成X',则 B不能在第三者面前出示DSKA(X')。这样就证明B伪造了报文。可以看出,实现数字签名也同时实现了对报文来源的鉴别。
  
但是上述 过程只是对报文进行了签名。对传送的报文X本身却未保密。因为截到密文DSKA(X)并知道发送者身份的任何人,通过查问手册即可获得发送者的公开密钥 PKA,因而能够理解报文内容。则可同时实现秘密通信和数字签名。SKA和SKB分别为A和B的秘密密钥,而PKA和PKB分别为A和B的公开密钥。
 
密钥的管理
 
对 称密钥加密方法致命的一个弱点就是它的密钥管理十分困难,因此它很难在电子商务的实践中得到广泛的应用。在这一点上,公开密钥加密方法占有绝对的优势。不 过,无论实施哪种方案,密钥的管理都是要考虑的问题。当网络扩得更大、用户增加更多时尤其如此。一家专门从事安全性咨询的公司Cypress Consulting的总裁CyArdoin说:“在所有加密方案中,都必须有人来管理密钥。”
 
目前,公认的有效方法是通过密钥分配中心KDC来管理和分配公开密钥。每个用户只保存自己的秘密密钥和KDC的公开密钥PKAS。用户可以通过KDC获得任何其他用户的公开密钥。
 
首 先,A向KDC申请公开密钥,将信息(A,B)发给KDC。KDC返回给A的信息为(CA,CB),其中,CA=DSKAS(A,PKA,T1),CB= DSKAS(B,PKB,T2)。CA和CB称为证书(Certificate),分别含有A和B的公开密钥。KDC使用其解密密钥SKAS对CA和CB 进行了签名,以防止伪造。时间戳T1和T2的作用是防止重放攻击。
 
  最后,A将证书CA和CB传送给B。B获得了A的公开密钥PKA,同时也可检验他自己的公开密钥PKB。
PKI的主要目的是通过自动管理密钥跟证书,可以为用户建立起一个安全的网络运行环境,使用户可以在多种应用环境下方便的使用加密和数字签名技术,从而保证网上数据的机密性,完整性,有效性。
数据的机密性是指数据在传输过程中不能被非授权者偷看
数据的完整性是指数据在传输过程中不能被非法的窜改
数据的有效性是指数据不能被随便否认
一个有效的PKI系统必须是安全的,透明的,用户在获得加密和数字签名服务时,是不需要详细了解PKI怎样管理证书和密钥的。
密钥是一种用来加密或解密信息的值,即使算法是公开的,也不会破坏其安全性,因为数据如果没有密钥则无法读取。
PKI 是一种新的安全技术,它由公钥加密技术,数字证书,证书发放机构(CA),注册权威机构(RA)等基本成分共同组成。
数字证书用于internet intranet extranet 上的用户身份验证
CA是一个可信任的实体,它根据CA颁发策略负责发布,更新和吊销证书
注册权威机构RA 接受用户的请求,负责将用户的有关申请信息存档备案,并存储在数据库中,等待审核,并将审核通过的证书请求发送给证书颁发机构。RA分担了CA的部分任务,管理更方便。
比较成熟的对称加密 DES 3DES IDEA
非对称加密的特点
密钥是成对出现的,这两个密钥互不相同,两个密钥可以互相机密和解密
不能根据一个密钥来推算得出另一个密钥
公钥对外公开,私钥只有私钥的持有人才知道
私钥应该由密钥的持有人妥善保管
接收方生成一对密钥(公钥和私钥),并将公钥向外传递公开
得到该公钥的发送方使用接收方的公钥,对信息进行加密后,再发送给接受方
接受方受到信息后,再用自己的私钥对信息进行解密
非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要,但加密和解密花费时间长,速度慢,它不适合对文件加密,而只适合用于少量数据进行加密。因为,在实际应用中,将非对称加密和对称加密混合使用。
发送方用对称加密的方法,将文件加密后传给对方
发送方再将对称密钥(即发送方和接受方应该共同拥有的密钥)通过非对称加密的方法加密后传给对方
接收方使用私钥解密得到对称密钥
用对称密钥解密去解读对称加密的密文,从而得到明文信息
公认的非对称加密算法是 RSA 算法
我发给的人。确保不被别人所得到。是利用加密算法
给我的人。我确定是这个人发的。用的是数字签名。有不可抵赖性
HASH算法也称为杂凑算法,这是一个简单的不可逆过程。HASH算法在确保文件的完整性和不可更改性上也有和好的用途。
输入一个长度不固定的字符串,返回一串固定长度的字符串,又称为HASH值,通常也称为杂凑值(HASH Value)
每一个消息输入单项杂凑函数中,将产生一个杂凑值,这个杂凑值可以保证输入消息的唯一性(不同杂凑值表示不同输入消息)
如果通过一个不安全的传输通道的消息在传输前的杂凑值和消息经传输后的杂凑值相同,那么可以认为接受到的信息在很高的概率上与发送消息是相同的,从而可以保证传输消息的完整性
在某一特定的时间内,无法查找经HASH操作后生成特定HASH值的原报文。
也无法查找两个经HASH操作后生成相同HASH值的不同报文
HASH 算法常用的有SHA 和 MD5
数据加密只能保证所发送的数据的机密性,确不能完全保证数据的完整性和不可抵赖性,即不能保证数据在传递过程中不被人篡改和不被人冒名顶替发送。
数字签名提供了身份验证和数据完整性,使接受方可确认该发送方的身份标识,并证实消息在传递过程中内容没有被篡改。这样可以防止某个消息的发送方试图通过替换另一个用户的身份发送消息。
消息有签发者即发送方自己签名发送,签名者不能否认或难以否认
消息自签发到接受这段过程中未曾做过修改,签发的消息是真实的。
数 字签名页可以用于时间戳,即可以同时签署消息发送的时间。用户可以用他的私钥签名消息和生成时间戳,证实该消息在某一段时间中存在。数字签名同样可以用来 确认某一公钥属于某人。因为对消息进行数字签名时,可以产生一个代表该消息的消息摘要。该消息摘要通过发送方的私钥加密的,接受方可以使用发送方的公钥进 行解密。
发送方签名某个消息时,将创建一个消息摘要(用HASH算法)
发送方用自己的私钥加密消息摘要
将消息摘要做为消息的附件和消息一起发送给接收方
当接收方收到消息后,就用该发送方的公钥解密此消息摘要
同时,接受方再用发送方的公钥解密消息,然后用同样的算法创建出一个新的消息摘要,并将他与解密的消息摘要进行比较。
如果两个消息摘要互相匹配,则可保证完整性,签名就会认为是有效的。
过程
发送方
1 原文+随机密钥(对称)--用随机密钥加密原文
2 原文+HASH 算法--消息摘要
3 随机密钥(对称)+接受方的公钥--只有接受方的私钥才能打开取得对称密钥
4 消息摘要+发送方私钥--接受方用发送方公钥解开取得摘要消息
以上四个过程最后生成了 加密数据和加密的摘要消息
接受方
1 首先用自己的私钥解开发送过来的加密的对称密钥
2 取得对称密钥就可以解开加密的原文
3 用发送方的公钥解开加密的消息摘要
4 用解开的原文用同样的HASH算法算出一个消息摘要
5 对比传过来的在发送方的消息摘要和现在接受的文章的消息摘要是否匹配。匹配则说明信息没有被改动过。
其中使用了对称密钥 非对称的公钥 私钥 还有HASH 算法
数 据经过了加密。如果想解开数据就必须有接受方的私钥。可是私钥是不传输的。所以很难破解数据。但是这个加密是使用接受方的公钥加密的。而公钥是公开的。所 以有人可以采用接受方的公钥再伪造数据部分。这样和数据摘要一起发给接受方。因为是采用接受方公钥所加密的。所以接受方可以打开被篡改的数据。可是这种篡 改的数据再经过HASH算法无法跟发送过来的消息摘要相同。从而被证明是篡改的或被有损的。而因为消息摘要是用发送方的私钥来加密的。如果要伪造就必须有 发送方的私钥。而发送方的私钥也是不在网络上传送的。这样只有得到双方的私钥才能伪造。
数 字签名一般不采用非对称加密算法 RSA等。而是发送方对整个数据进行变换,得到一个值,将其作为消息摘要和签名,接受者使用发送者的公钥对消息摘要进行解密运算。如果其结果与原摘要一 致,则此数字签名有效,证明对方的身份是真实的。一般数字签名中使用的加密算法有HASH算法,安全的HASH算法等。再HASH算法中,目前比较多的是 MD5。
接受方还必须有一个机制,以确保密钥对是属于真正的发送者的。而不是属于没个发送方的模仿者的。这是通过受信任的第三方颁发的证书来完成的,该证书证实了公钥所有者的身份标识。

加密概念和PKI基础知识

加密概念和PKI基础知识


2007-05-23 12:28:44
 标签:PKI 加密概念 

加密概念
加 密是通过Intranet、Extranet和Internet进行安全的信息交换的基础。从业务的角度来看,通过加密实现的安全功能包括:身份验证,使 收件人确信发件人就是他或她所声明的那个人;机密性,确保只有预期的收件人能够阅读邮件;以及完整性,确保邮件在传输过程中没有被更改。从技术的角度来 看,加密是利用数学方法将邮件转换为不可读格式从而达到保护数据的目的的一门科学。
本文将介绍下列加密概念:
对称密钥加密:一个密钥
公钥加密:两个密钥
单向散列算法
数字签名:结合使用公钥与散列
密钥交换:结合使用对称密钥与公钥
对称密钥加密:一个密钥
对称密钥加密,也叫做共享密钥加密或机密密钥加密,使用发件人和收件人共同拥有的单个密钥。这种密钥既用于加密,也用于解密,叫做机密密钥(也称为对称密钥或会话密钥)。对称密钥加密是加密大量数据的一种行之有效的方法。
对 称密钥加密有许多种算法,但所有这些算法都有一个共同的目的---可以还原的方式将明文(未加密的数据)转换为暗文。暗文使用加密密钥编码,对于没有解密 密钥的任何人来说它都是没有意义的。由于对称密钥加密在加密和解密时使用相同的密钥,所以这种加密过程的安全性取决于是否有未经授权的人获得了对称密钥。 这就是它为什么也叫做机密密钥加密的原因。希望使用对称密钥加密通信的双方,在交换加密数据之前必须先安全地交换密钥。
衡量对称算法优劣的主 要尺度是其密钥的长度。密钥越长,在找到解密数据所需的正确密钥之前必须测试的密钥数量就越多。需要测试的密钥越多,破解这种算法就越困难。有了好的加密 算法和足够长的密钥,如果有人想在一段实际可行的时间内逆转转换过程,并从暗文中推导出明文,从计算的角度来讲,这种做法是行不通的。
公钥加密:两个密钥
公 钥加密使用两个密钥:一个公钥和一个私钥,这两个密钥在数学上是相关的。为了与对称密钥加密相对照,公钥加密有时也叫做不对称密钥加密。在公钥加密中,公 钥可在通信双方之间公开传递,或在公用储备库中发布,但相关的私钥是保密的。只有使用私钥才能解密用公钥加密的数据。使用私钥加密的数据只能用公钥解密。 与对称密钥加密相似,公钥加密也有许多种算法。然而,对称密钥和公钥算法在设计上并无相似之处。您可以在程序内部使用一种对称算法替换另一种,而变化却不 大,因为它们的工作方式是相同的。而另一方面,不同公钥算法的工作方式却完全不同,因此它们不可互换。公钥算法是复杂的数学方程式,使用十分大的数字。公 钥算法的主要局限在于,这种加密形式的速度相对较低。实际上,通常仅在关键时刻才使用公钥算法,如在实体之间交换对称密钥时,或者在签署一封邮件的散列时 (散列是通过应用一种单向数学函数获得的一个定长结果,对于数据而言,叫做散列算法)。将公钥加密与其它加密形式(如对称密钥加密)结合使用,可以优化性 能。公钥加密提供了一种有效的方法,可用来把为大量数据执行对称加密时使用的机密密钥发送给某人。也可以将公钥加密与散列算法结合使用以生成数字签名。
将公钥加密用于数字签名
数字签名是邮件、文件或其它数字编码信息的发件人将他们的身份与信息绑定在一起(即为信息提供签名)的方法。对 信息进行数字签名的过程,需要将信息与由发件人掌握的秘密信息一起转换为叫做签名的标记。数字签名用于公钥环境中,它通过验证发件人确实是他或她所声明的 那个人,并确认收到的邮件与发送的邮件完全相同,来帮助确保电子商务交易的安全。通常,数字签名用于以明文(如电子邮件)分发数据的情形。在这种情况下, 当邮件本身的敏感性可能无法保证加密的安全性时,确保数据处于其原始格式且并非由假冒者发送,是非常重要的。
常用公钥算法
下面是三种最常用的公钥算法:
RSA -适用于数字签名和密钥交换。Rivest-Shamir-Adleman (RSA) 加密算法是目前应用最广泛的公钥加密算法,特别适用于通过 Internet 传送的数据。这种算法以它的三位发明者的名字命名:Ron Rivest、Adi Shamir 和 Leonard Adleman。RSA 算法的安全性基于分解大数字时的困难(就计算机处理能力和处理时间而言)。在常用的公钥算法中,RSA 与众不同,它能够进行数字签名和密钥交换运算。
DSA-仅适用于数字签名。数字签名算法 (Digital Signature Algorithm, DSA) 由美国国家安全署 (United States National Security Agency, NSA) 发明,已经由美国国家标准与技术协会 (National Institute of Standards and Technology, NIST) 收录到联邦信息处理标准 (Federal Information Processing Standard, FIPS) 之中,作为数字签名的标准。DSA 算法的安全性源自计算离散算法的困难。这种算法仅用于数字签名运算(不适用于数据加密)。
Diffie-Hellman -仅适用于密钥交换。 Diffie-Hellman 是发明的第一个公钥算法,以其发明者 Whitfield Diffie 和 Martin Hellman 的名字命名。Diffie-Hellman 算法的安全性源自在一个有限字段中计算离散算法的困难。Diffie-Hellman 算法仅用于密钥交换。
单向散列算法
散列-也称为散列值或消息摘要,是一种与基于密钥(对称密钥或公钥)的加密不同的数据转换类型。 散列就是通过把一个叫做散列算法的单向数学函数应用于数据,将任意长度的一块数据转换为一个定长的、不可逆转的数字。所产生的散列值的长度应足够长,因此 使找到两块具有相同散列值的数据的机会很少。发件人生成邮件的散列值并加密它,然后将它与邮件本身一起发送。而收件人同时解密邮件和散列值,并由接收到的 邮件产生另外一个散列值,然后将两个散列值进行比较。如果两者相同,邮件极有可能在传输期间没有发生任何改变。
常用的单向散列函数
下面是两个最常用的散列函数:
MD5。 MD5 是由 Ron Rivest 设计的可产生一个 128 位的散列值的散列算法。MD5设计经过优化以用于Intel处理器。这种算法的基本原理已经泄露,这就是为什么它不太受欢迎的原因。
SHA-1。与 DSA 公钥算法相似,安全散列算法1(SHA-1)也是由NSA设计的,并由NIST将其收录到 FIPS 中,作为散列数据的标准。它可产生一个 160 位的散列值。SHA-1是流行的用于创建数字签名的单向散列算法。
数字签名:结合使用公钥与散列算法
可以结合使用公钥技术与散列算法来创建数字签名。数字签名可用作数据完整性检查并提供拥有私钥的凭据。签署和验证数据(由启用PKI的应用程序如Microsoft Outlook完成)的步骤如下:
发件人将一种散列算法应用于数据,并生成一个散列值。
发件人使用私钥将散列值转换为数字签名。
然后,发件人将数据、签名及发件人的证书发给收件人。
收件人将该散列算法应用于接收到的数据,并生成一个散列值。
收件人使用发件人的公钥和新生成的散列值验证签名。
对用户而言这一过程是透明的。
散列算法处理数据的速度比公钥算法快得多。散列数据还缩短了要签名的数据的长度,因而加快了签名过程。当创建或验证签名时,公钥算法必须且只需转换散列值(128或160位的数据)。创建签名和验证签名的详细步骤取决于所采用的公钥算法。
密钥交换:结合使用对称密钥与公钥
对称密钥算法非常适合于快速并安全地加密数据。但其缺点是,发件人和收件人必须在交换数据之前先交换机密密钥。结合使用加密数据的对称密钥算法与交换机密密钥的公钥算法可产生一种既快速又灵活的解决方案。
基于公钥的密钥交换步骤如下:
发件人获得收件人的公钥。
发件人创建一个随机机密密钥(在对称密钥加密中使用的单个密钥)。
发件人使用机密密钥和对称密钥算法将明文数据转换为暗文数据。
发件人使用收件人的公钥将机密密钥转换为暗文机密密钥。
发件人将暗文数据和暗文机密密钥一起发给收件人。
收件人使用其私钥将暗文机密密钥转换为明文。
收件人使用明文机密密钥将暗文数据转换为明文数据。
同样,这些步骤是由启用PKI的应用程序(如Microsoft Outlook)来完成的,并且对用户来说是透明的。
公钥基本结构的概念
术 语公钥基本结构(PKI)用于描述管制或操纵证书与公钥及私钥的策略、标准和软件。实际上,PKI 是指由数字证书、证书颁发机构(CA) 以及对电子交易所涉及各方的合法性进行检查和验证的其它注册机构组成的一套系统。PKI的有关标准仍处于不断发展之中,即使这些标准已被作为电子商务的要 素而广泛实施。
PKI一般包括:
证书
证书颁发机构 (CA)
不可更改的CA层次结构
注册
证书登记
证书吊销
证书链验证
证书
公 钥证书,通常简称为证书,用于在 Internet、Extranet 和 Intranet 上进行身份验证并确保数据交换的安全。证书的颁发者和签署者就是众所周知的证书颁发机构 (CA)。颁发证书的实体是证书的主体。公钥证书是以数字方式签名的声明,它将公钥的值与持有相应私钥的主体(个人、设备和服务)的身份绑定在一起。通过 在证书上签名,CA 可以核实与证书上公钥相应的私钥为证书所指定的主体所拥有。可以为各种目的颁发证书,如 Web 用户身份验证、Web 服务器身份验证、使用安全/多用途 Internet 邮件扩充协议 (Secure/Multipurpose Internet Mail Extensions, S/MIME) 的安全电子邮件、IP 安全性 (IP Security)、安全套接字协议层/事务层安全性 (Secure Sockets Layer/Transaction Layer Security, SSL/TLS) 和代码签名。如果在一个组织内部使用 Windows 2000 企业证书颁发机构,证书可用于登录到 Windows 2000 域。证书还可以由一个 CA 颁发给另一个 CA,以建立证书层次结构。
可以通过多个名称来识别主体,如用户主要名称(用于最终用户证书)、目录名、电子邮件名称和 DNS 域名等。证书还应包含下列信息:
证书的有效期。
证书的序列号,CA 应保证该序列号是唯一的。
CA 的名称以及用于签署该证书的密钥。
CA 所遵循的用来确定证书主体身份的策略的标识符(稍后将详细介绍 CA 策略)。
在证书中标识的密钥对(公钥及相关的私钥)的用法。
证书吊销列表 (CRL) 的位置,这是一个由 CA 维护并发布的列出已被吊销的证书的文档。为确保其完整性,CRL 是用 CA 的私钥签署的。
证 书提供了一个在公钥和拥有相应私钥的实体之间建立关系的机制。目前最常用的证书格式通过 ITU-T X.509 版本 3 (X.509v3) 国际标准定义。RFC 2459 是 X.509v3 的一个配置文件,进一步阐明了 X.509v3 中定义的字段。 Windows 2000 PKI 采用 X.509v3 标准。Windows 证书是按照 RFC 2459 中的说明编程的,但仍然叫做 X.509v3 证书。 ITU-T X.509 并非证书的唯一格式。例如,Pretty Good Privacy (PGP) 安全电子邮件依赖 PGP 所独有的一种证书。
证书颁发机构
证书颁发机构 (CA) 是一个向个人、计算机或任何其它申请实体颁发证书的可信实体。CA 受理证书申请,根据该 CA 的策略验证申请人的信息,然后使用它的私钥把其数字签名应用于证书。然后,CA 将该证书颁发给该证书的主体,作为 PKI 内部的安全凭据。由于不同的 CA 使用不同的方法验证公钥与主体之间的绑定,在选择信任该颁发机构之前,理解该 CA 的策略是非常重要的。
CA 可以是远程的第三方机构,如 VeriSign。作为选择,也可以是您创建的供您所在组织使用的 CA,例如,通过安装 Windows 2000 证书服务即可创建一个 CA。每个 CA 对证书申请人可能有完全不同的身份凭据要求,如 Windows 2000 域帐户、职员标记、驾驶执照、公证请求或实际住址。
CA 策略
CA 根据也已确立的一套标准向申请人颁发证书。CA 在受理证书请求(以及颁发证书、吊销证书和发布 CRL)时所采用的一套标准被称为 CA 策略。通常,CA 以一种叫做证书惯例声明 (Certification Practice Statement, CPS) 的文档发布其策略。
证书颁发机构的类型
CA 的类型包括以下三种:
自签名 CA。在自签名 CA 中,证书中的公钥和用于验证证书的密钥是相同的。一些自签名 CA 是根 CA
从属 CA。在从属 CA 中,证书中的公钥和用于核实证书的密钥是不同的。一个 CA 向另一个 CA 颁发证书的过程叫做交叉认证。
根 CA。根 CA 是一种特殊的 CA,它受到客户无条件地信任,位于证书层次结构的最高层。所有证书链均终止于根 CA。根颁发机构必须对它自己的证书签名,因为在证书层次结构中再也没有更高的认证机构了。
所有自签名 CA 都是根 CA,因为到自签名 CA 时证书链就终止了。
不可更改的 CA 层次结构
管理员可以创建 CA 的层次结构,从根 CA 证书开始,然后添加中级 CA,每一个 CA 都可以为其从属 CA 颁发证书。当 CA 向最终实体(用户)颁发证书时,证书链就终止了。
根 CA 证书的分发费用最高,因为如果您开始改变根证书,就必须重建整个PKI。如果根证书改变了,就必须吊销组织内所有客户端的旧的根证书,并添加新的根证书。 另外,必须重新颁发由根 CA 颁发的、再由从属 CA 颁发给最终实体的所有证书。因此,在部署 CA 层次结构时,使用少量的长寿命根CA可提供最经济的解决方案。根CA非常重要-因为它们被无条件地信任,因为它们是证书链的顶点-因此,在分发证书时要有 一个圈外的身份验证。也就是说,由于根 CA 是自签名的,所以必须有人来证明根证书是真品。
因为最终实体要比 CA 多得多,所以向最终实体颁发证书的 CA 使用私钥在大量的数据上签名。用来对数据签名的密钥使用得越频繁,加密数据受到攻击的可能性就越大。因此,为了保持安全,向最终实体颁发证书的联机 CA 必须经常更换其签名密钥。
向 最终实体颁发证书的 CA 具有的吊销证书列表,要比中级或根 CA 的列表大得多(这些 CA 仅向其它 CA,更多的是从属 CA 颁发证书)。其部分原因是因为最终实体要比 CA 证书多得多。另外,有许多理由可以解释为什么必须吊销最终实体的证书,如职员改变了工作或离开了公司。
CA 发布吊销证书列表(CRL),其中列出了不应再使用的证书。被吊销证书的有关条目将一直保留在 CRL 列表中,直至证书的有效期 结束之后,CA 才可将该证书从列表中删除。CRL 中的条目越多,CRL 就越大,其下载时间就越长。通常,只有使用较慢的网络链路(如拨号连接)的用户才会遇到下载时间问题。CA 还可以管理 CRL 列表的大小。一种方法是维护多个列表,称为分区 CRL。另一种方法是,缩短已颁发证书的有效期,从而加快 CA 从列表中删除吊销证书的速度。
许多应用程序必须能够查明证书最近的吊销状态信息。只有一个联机 CA 能够发布有关证书状态的当前信息。由脱机CA公布的吊销状态,必须使用圈外的方法发布到联机位置。
大 多数容易受到攻击的 CA 都是处于联机状态的、物理安全措施较差并签署了大量证书的 CA。因此,建立根 CA和从属CA时,应该平衡一下安全性和可用性。通常,建议采用三级层次结构,即一个脱机的独立根 CA、一个脱机的独立从属策略 CA 和一个联机从属颁发企业 CA。
脱机根CA。 在设计 CA 的层次结构时,根CA的安全级别应设为最高。根CA应以脱机状态保存在安全的位置,并且用它只签署少量证书。可能的话,应该将CA和密钥保存在专门的保管 库中,并且至少同时有两位操作员进入该保管库,一位执行规定的操作,另一位审核其操作。(在 Windows 2000 网络中,设计了独立的 CA,以便它们脱机运行。)
脱机中级CA。在一个根CA下面可以有一个或多个从属CA。将中级从属CA设为脱机的机器,可以提高该 CA 的安全性。
联 机颁发CA。 CA 链中最后一级的 CA 必须处于联机状态,因此可用于受理来自众多客户机的证书申请。根 CA下面的联机 CA 也可以经常发布最新的吊销状态信息。管理员可以频繁地更改这种 CA 的密钥,因为颁发新证书的开销(管理方面的开销)是最低的。从属 CA 并不完全是可任意使用的,但通过攻击从属 CA 并不能得到多少有价值的东西,而且高级 CA 通过吊销证书即可轻而易举地阻挡这种攻击。
注册
注 册 就是主体向 CA 自我介绍的过程。在申请证书时,注册可以是隐含的,或通过为主体提供担保的另一个可信实体(如智能卡登记站)来完成,或者在收到来源可信(如来自域管理 员)的信息时自动完成。一旦向 CA 进行了注册,只要符合按照 CA 策略建立的标准,证书即被颁发给该主体。
证书登记
证书登记 就是最终实体进行证书申请并从 CA 接收证书的过程。证书申请就是向 CA 提供身份信息,该信息随后将成为所颁发证书的一部分。 CA 根据一套标准受理申请,该标准可能要求进行脱机的、非自动的身份验证(圈外的身份验证)。如果申请被成功受理,CA 随后将向该用户颁发证书。
通过注册机构进行证书登记
一 种特殊的证书登记可通过注册机构 (Registration Authority, RA) 来完成,RA 可为 CA 提供担保,以便将公钥与预期的证书持有人的身份及属性绑定在一起。RA 是拥有特殊证书的主体。这种特殊的证书包含有可以向CA表明主体身份的信息。通常,RA 在公钥和主体之间建立绑定,然后在主体生成的申请上签名,以便向 CA 提供该 RA 即将为绑定担保的证据。本质上,使用 RA 是管理委派的一种形式-CA 委派 RA 执行验证公钥和实体之间绑定的任务。
RA 生成在主体和公钥之间建立的牢固绑定的证书。在 Windows 2000 操作系统中,证书服务使用域身份验证来识别申请大多数类型证书的用户身份。创建智能卡登录证书的 Windows 2000 智能卡登记站由 RA 使用。RA 可验证智能卡收件人的身份,同时提供比域身份验证单独完成的主体与公钥之间的绑定更加牢固的绑定。
证书吊销
证 书具有一个指定的寿命,但 CA 可通过称为证书吊销的过程来缩短这一寿命。CA 发布一个证书吊销列表 (CRL),列出被认为不能再使用的证书的序列号。CRL 指定的寿命通常比证书指定的寿命短得多。CA 也可以在 CRL 中加入证书被吊销的理由。它还可以加入被认为这种状态改变所适用的起始日期。
可将下列情况指定为吊销证书的理由:
泄露密钥
泄露 CA
从属关系改变
被取代
业务终止
证书持有(这是唯一让您能够改变被吊销证书状态的理由码,在证书状态有问题的情况下非常有用)
由 CA吊销证书意味着,CA 在证书正常到期之前撤销其允许使用该密钥对的有关声明。在吊销的证书到期之后,CRL 中的有关条目被删除,以缩短 CRL 列表的大小。
在验证签名期间,应用程序可以检查 CRL,以确定给定证书和密钥对是否仍然可信。如果不可信,应用程序可以判断吊销的理由或日期对使用有疑问证书是否有影响。如果该证书被用来验证签名,且签名的日期早于 CA 吊销该证书的日期,那么该签名仍被认为是有效的。
应用程序获得 CRL 之后,由客户机缓存 CRL ,在它到期之前客户机将一直使用它。如果 CA 发布了新的 CRL,拥有有效 CRL 的应用程序并不使用新的 CRL,直到应用程序拥有的 CRL 到期为止。
证书链确认
Microsoft CryptoAPI 提供了一个标准的框架,应用程序可用此框架来获得加密服务和数字证书服务。除了 CryptoAPI 为 Windows 95、Windows 98、Windows NT 和 Windows 2000 提供的标准服务以外,第三方供应商可开发并销售他们自己的插件模块,提供附加的加密服务。
在 Windows 网络中,为新证书生成一个请求时,该请求中的信息首先被从请求程序传递给 CryptoAPI。然后,CryptoAPI 把相应的数据传递给一个称为加密服务提供程序 (CSP)的程序,该程序安装在您的计算机上,或安装在您的计算机可以访问的某种设备(如智能卡)上。 CSP 是一个执行诸如机密密钥交换、数据的数字签名以及公钥身份验证之类的加密操作的独立软件模块。

数字签名原理

数字签名原理

数字签名是一种确保数据完整性和原始性的方法。数字签名可以提供有力的证据,表明自从数据被签名以来数据尚未发生更改,并且它可以确认对数据签名的人或实体的身份。数字签名实现了“完整性”和“认可性”这两项重要的安全功能,而这是实施安全电子商务的基本要求。
当数据以明文或未加密形式分发时,通常使用数字签名。在这种情况下,由于消息本身的敏感性无法保证加密,因此必须确保数据仍然保持其原来的格式,并且不是 由冒名者发送的。因为在分布式计算环境中,网络上具有适当访问权的任何人,无论是否被授权都可以很容易读取或改变明文文本。
数字签名主要是为了证明发件人身份,就像我们来看到的某文件签名一样。但现在要说的签名是采取电子数字签名的方式。这种签名还可以防止别人仿签,因为经过加密过的签名会变得面目全非,别人根本不可能看到真正的签名样子。在第9.5.2节 介绍了在文件传输和邮件发送中利用文件加密方式来阻止非法用户打开的原理,其实仅用了文件加密方式还不足以保证邮件传输的真正安全,因为邮件内容还可能被 非法用户替换,尽管这些非法用户不能查看原邮件中的真正内容。这就涉及到如何确保自己收到的邮件就是自己希望的用户发来的问题了,此时就需要用到数字签名 技术。但是在邮件传输中,通常又不是单独使用文件加密或者数字签名,而是一起结合起来使用,它们两者一起作用就可取到非常好的安全保护了。下面仍以第9.5.2节实例为例进行介绍,不同的只是在此封邮件发送中同时采用了文件加密和数字签名,实施双重保护。具体步骤如下。
n AliceBob互换公钥。
n Alice用自己的私钥对TXT文件进行数字签名。
n AliceBob的公钥对TXT文件进行加密。
n Alice把经过数字签名和加密的文件TXT,通过邮件或其他传输途径,如QQMSN等)传给Bob
n Bob在收到签名并加密的邮件后首先用Bob自己的私钥进行文件加密的解密,然后再用Alice的公钥进行数字签名解密。
同样,在这个过程中Cinda也可以获取BobAlice的公钥和签名并加密的标书文件TXT。同时因无Bob的私钥而无法打开邮件。同时由于Alice在发送文件前已用自己的私钥进行了数字签名,所以当Bob在收到邮件后完全可以证实自己收到的就是Alice发来的邮件,而不可能是其他用户的。试想如果Cinda非法用户想要改变邮件,冒充AliceBob发送邮件,因Cinda没有Alice的私钥,所以在用其他用户的私钥进行数字签名时就不可能再以Alice的公钥来解密数字签名了。

在 这里要注意文件加密和数字签名的先后顺序,一定是先签名再加密,这样加密技术就可以同时保证邮件中的数字签名了。如果先加密,而后签名,非法用户在得到邮 件后就可通过获取的公钥破解数字签名了,因为公钥是可以公开的,很容易被一些别有用心的人得到。数字签名破解后很可能签名被替换。当然邮件中的内容在没有 收件人私钥的情况下还是无法打开的。
以上介绍的是利用公钥和私钥进行文件加密和数字签名的原理,其实在实际应用中,这些公钥和私钥用户是不用具体关心它们的组成,而是由证书颁发机构或者软件 自己生成。就拿公钥来说吧,那么长的代码,看起来都怕,而且随着密钥位置的增加,代码长度也随之增加,当然破解难度也将增加,也就越安全。但在一定程度上 对使用有一些影响。

非对称加密用私钥还是公钥进行加密

非对称加密用私钥还是公钥进行加密[原创]
经常看到类似的说法:公钥[私钥]一般用来加密,私钥[公钥]一般用来解密。也一直没有仔细去考虑,只是留下了一个用于加密,另外一个用于解密的印象。用公钥加密的数据,只有用私钥才能解密。用私钥加密的数据,也只有公钥才能解密。

昨天看书时,又遇到了这个问题,仔细思考之后,才发现公钥与私钥都可以用来加密,他们的应该场景同样都很常见和很重要,它们公别用于加密与签名。

1)公钥用于加密(私钥解密)。
这种场景是向特定的人发送秘密信息,所以消息加密后,只有私钥的拥有者才能解密。

2)公钥用于解密(私钥加密)。
这种场景是向公众发布一个签名。要求任何人都可以对加密之后的信息进行解密,所以要使用公钥来进行解密,解密之后的数据如果符合预期则证明私钥拥有者处理过了签名数据。

----------------------------------------------
存在即是被搜索!

BLOG => http://www.OpenJ.cn

发贴IP:*.*.*.*" align="absmiddle" border="0" height="15" width="13"> 2006-8-27 9:40:00
鲜花(0) 鸡蛋(0)

admin 帅哥哟,离线,有人找我吗?


威望:9
头衔:W3CHINA站长
等级:研三(收到微软亚洲研究院的Offer了)(管理员)
文章:4332
积分:14448
门派:W3CHINA.ORG
院校:(无权查看)
注册:2003-10-5
兴趣:
*XML相关技术
*资料收集
*Ontology Engineering
*Web架构
*SW Implementation
给admin发送一个短消息 把admin加入好友 查看admin的个人资料 搜索admin在『 XML安全 』的所有贴子 点击这里发送电邮给admin 访问admin的主页 引用回复这个贴子 回复这个贴子 查看admin的博客2

发贴心情
是的。前者用于信息保密(即只有私钥持有者可以看到被加密的信息),后者用于身份验证(可以确认,信息是否来自私钥持有者,而不是别人伪造的)

----------------------------------------------
screen.width-500)this.width=screen.width-500" border="0">
特惠价购买
W3China官方翻译团队招募译者
Eric Newcomer博客中文版

发贴IP:*.*.*.*" align="absmiddle" border="0" height="15" width="13"> 2006-8-27 23:51:00



sduzzx 帅哥哟,离线,有人找我吗?


等级:大一(猛啃高等数学)
文章:5
积分:122
门派:XML.ORG.CN
院校:(无权查看)
注册:2006-4-18
给sduzzx发送一个短消息 把sduzzx加入好友 查看sduzzx的个人资料 搜索sduzzx在『 XML安全 』的所有贴子 引用回复这个贴子 回复这个贴子 查看sduzzx的博客3

发贴心情
公钥和私钥都是固定长度的二进制比特串(如目前常用的RSA公私钥长度为1024比特),从性质上来讲,他们都可以加解密,只是人们根据使用的方式不同,将他们进行了区分,有些称为私钥,有些称为公钥。

另外,根据公私钥使用方式的不同,它们在数据加密和签名时的管理方式也不一样。

(1)数字签名
一个用户拥有一个数字证书(签名证书),里面包括一对密钥(公钥和私钥),私钥用于签名,公钥用于验证签名。如果私钥被攻击者知道,就可以用你的私钥伪造 你的签名,所以私钥的安全性要求较高,不允许进行备份(包括CA中心),私钥丢失时,只能重新生成密钥对,旧的签名可以用备份的公钥进行验证。另外,用户 可以自己生成密钥对,在证书注册时提交给CA中心即可。

(2)加解密
一个用户也拥有一个数字证书(加密证书),里面也包括一对密钥(公钥和私钥),私钥用于解密信息,公钥用于加密信息。当用户A给用户B传送数据时,用户A 以外带的方式(如从CA中心)获取用户B的公钥,并用其加密,加密后的数据传送给用户B,用户B收到后用私钥解密。加解密私钥要进行备份,否则,当私钥丢 失时,以前加密的数据将无法解密。另外,密钥对只能在注册时由CA中心产生,这个是国家安全政策的原因,国家必须能解密每个用户加密的所有信息。

注:加解密证书和签名证书虽然在本质上一样(密钥对的产生方式及结果一样,即从数学算法的角度考虑一样),但因其用途的不同导致其安全策略的不同,所以不能混用。

发贴IP:*.*.*.*" align="absmiddle" border="0" height="15" width="13"> 2006-9-15 16:17:00



flyfoxs 帅哥哟,离线,有人找我吗?


威望:5
等级:研一(Artificial Intelligence期期不放过)
文章:548
积分:3918
门派:XML.ORG.CN
院校:(无权查看)
注册:2005-1-8
兴趣:
*XML基础
*XML相关技术
*XML编程
*问题与解答
*资料收集
给flyfoxs发送一个短消息 把flyfoxs加入好友 查看flyfoxs的个人资料 搜索flyfoxs在『 XML安全 』的所有贴子 引用回复这个贴子 回复这个贴子 查看flyfoxs的博客4

发贴心情
楼上的文采真不错,汉一个。

比我理解的深刻,讲的也清楚多了。

----------------------------------------------
存在即是被搜索!

BLOG => http://www.OpenJ.cn

发贴IP:*.*.*.*" align="absmiddle" border="0" height="15" width="13"> 2006-9-18 7:39:00



yongjieguo 帅哥哟,离线,有人找我吗?


等级:大一新生
文章:7
积分:82
门派:XML.ORG.CN
院校:(无权查看)
注册:2007-3-30
给yongjieguo发送一个短消息 把yongjieguo加入好友 查看yongjieguo的个人资料 搜索yongjieguo在『 XML安全 』的所有贴子 引用回复这个贴子 回复这个贴子 查看yongjieguo的博客5

发贴心情
发贴IP:*.*.*.*" align="absmiddle" border="0" height="15" width="13"> 2007-4-18 16:39:00



Qr 帅哥哟,离线,有人找我吗?


威望:9
等级:博士一年级(版主)
文章:3084
积分:20470
门派:XML.ORG.CN
院校:(无权查看)
注册:2004-5-15
兴趣:
*样式表技术(XSL, XSLT, XSL-FO, CSS)
*XML文档存取技术(DOM, SAX)
*XML & .NET,C#
*XML一般性问题
给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 XML安全 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Qr的博客6

发贴心情
呵呵,非对称加密早已应用到偶的XML相关系统中,效果不错。

----------------------------------------------
screen.width-500)this.width=screen.width-500" border="0">
真的很讨厌XSL的递归
blog:http://Qr.blogger.org.cn

发贴IP:*.*.*.*" align="absmiddle" border="0" height="15" width="13"> 2007-5-18 11:42:00



mengchen 美女呀,离线,快来找我吧!狮子座1984-8-17


等级:大一新生
文章:5
积分:72
门派:W3CHINA.ORG
院校:(无权查看)
注册:2007-2-2
给mengchen发送一个短消息 把mengchen加入好友 查看mengchen的个人资料 搜索mengchen在『 XML安全 』的所有贴子 引用回复这个贴子 回复这个贴子 查看mengchen的博客7

发贴心情
不过,非对称加密主要用在完成身份识别以便建立会话密钥,
真正的数据保密还是通过会话密钥,利用对称加密算法实现

----------------------------------------------
记得所有的好,是对自己过去的肯定,是对未来的期许。