« 为路由器申请证书关闭路由器不需要的服务 »

密码学的基本概念

加密过程

  1. 发送方随机产生一个对称密钥(DES,3DES等)
  2. 发送方用对称密钥(Diffie-Hellman,RSA等)加密数据
  3. 发送方接受对端发送过来的公钥
  4. 发送方用公钥对对称密钥进行加密
  5. 发送方将加密后的密钥和数据打包,发出

 解密过程

  1. 接收方接收对端发送过来的数据
  2. 接收方用自己的私钥对接收到的密钥进行进行解密,得出对称密钥
  3. 接收方用对称密钥对接收到的数据进行解密,获得数据


带数字签名的加密过程

  1. 发送方随机产生一个对称密钥(DES,3DES等)
  2. 发送方用对称密钥(Diffie-Hellman,RSA等)加密要发送的数据
  3. 发送方接受对端发送过来的公钥
  4. 发送方用公钥对对称密钥进行加密
  5. 发送方将加密后的密钥和数据打包
  6. 发送方用散列函数,如MD5(128),SHA(160)等对打包的数据进行计算,获得摘要(散列值)
  7. 将加密的数字签名附在要发送的数据之后
  8. 利用发送方自己的私钥对数字签名进行加密(签名)后,发出

 带数字签名的解密过程

  1. 接收方接收对端发送过来的数据
  2. 接收方用公钥对加密的数据进行解密,获得发送方的数据和摘要
  3. 接收方用散列函数,如MD5(128),SHA(160)等对数据进行计算,获得摘要(散列值)
  4. 将自己计算得到的摘要和从发送方接收的摘要进行比较,如果相同则数据有效,不同则数据无效
  5. 如果数据有效,则接收方用自己的私钥对接收到的密钥进行进行解密,得出对称密钥
  6. 接收方用对称密钥对接收到的数据进行解密,获得要接收的数据

注意:对接收者来说,只有在确认发送者身份后,才决定要不要对收到的数据进一步处理,这和看信的道理差不多。另外从数据处理角度考虑,签名是用于保证数据的完整性,如果接收者对收到的数据的完整性也不做检查,就去解密,很有可能对自己的系统造成破坏。 因此,对于接收者,肯定要先验证签名,然后再决定是否解密,对于发送者而言,当然就必须先加密,然后对加密后的数据签名。


公钥基础设施PKI的作用

在这个数据的交换过程中唯一的不安全性,就是公钥在因特网上的传输,为了确保用户的身份及他所持有密钥的正确匹配,公开密钥系统需要一个值得信赖而且独立的第三方机构充当认证中心(Certification Authority,CA),来确认公钥拥有人的真正身份。认证中心利用CA本身的私钥为数字证书加上数字签名。任何想发放自己公钥的用户,可以去认证中心申请自己的证书。认证中心在鉴定该人的真实身份后,想外颁发包含用户公钥的数字证书。其他用户只要通过前面的数字验证来验证证书是真实的,并且信任颁发证书的认证中心,就可以确认用户的公钥。

在这其中最重要的是CA 自己的一对密钥的管理,它必须确保其高度的机密性,防止其他人伪造证书。CA 的公钥在网上公开,因此整个网络系统必须保证完整性。CA 的数字签名保证了证书(实质是持有者的公钥)的合法性和权威性。

用户的公钥有两种产生的方式:

  1. 用户自己生成密钥队,然后将公钥以安全的方式传送给CA,该过程必须保证用户公钥的验证性和完整性。
  2. CA 替用户生成密钥队,然后将其以安全的方式传送给用户,该过程必须确保密钥对的机密性,完整性和可验证性。该方式下由于用户的私钥为CA 所产生,所以对CA 的可信性有更高的要求。CA 必须在事后销毁用户的私钥。

散列函数

散列函数是一种加密形式,它可在获取明文输入后将其转换为固定长度的加密输出(称为“消息摘要”)。此摘要是一组固定长度的位,这些位用作原始消息的惟一“数字指纹”。如果原始消息发生变化,并且重新用散列函数来处理,则会产生不同的签名,因此散列函数可用于检测文档是否已经过更改和经过仿造。散列函数可保证消息的完整性,从而向接收方保证消息的内容没有经过更改或破坏。

散列函数是单向的,也就是说,计算消息摘要比较容易,但将消息摘要再转换回原始明文(比如设想要将打碎的南瓜再完全恢复为它原来的面目)就是非常困难的。下面列出了散列函数的各个特征:

  • 散列函数应不可能使两个不同的消息产生同样的消息摘要,即散列是防冲突的。只要在一个消息中改变一个数字,就会产生一个完全不同的消息摘要,这称之为雪崩效应。
  • 散列函数应不可能产生具有某些预想或预先定义的输出的消息(目标消息摘要)。
  • 散列函数的结果应不可能反转。这一点是可能的,因为一个消息摘要可能由几乎无数个消息产生。
  • 散列算法本身不需要保密,它可向公众公开,它的安全性是来源于能够产生单向散列值这一点的。
  • 所产生的消息摘要是固定长度的。一个很短的消息的散列值与一整套百科全书的散列值将产生长度相等的摘要。

散列函数类型:

  • MD-5 它是由RSA公钥加密方案发明人之一Ron Rivest设计的一个散列函数。MD-5可以把不同长度的数据块进行暗码运算成一个128位的数值。目前人们已经了解到MD—5具有一些缺点(指能够通过破解,使得对于一个产生的哈希值,能够推算出他的明文,但这个明文不一定就是原先那个,但是产生的哈希值确实一样的),因此应尽量避免使用它。通常建议使用SHA-1。
  • SHA-1 (安全散列算法-1) SHA-1是一种类似于MD—5的算法,该算法旨在与数字签名标准(DSS)配合使用。美国的两个机构NIST(国家标准和技术研究所)和NSA(国家安全局)负责SHA-1。 SHA-1可接纳一个和多个512位(64字节)的数据块,并生成一个160位(20字节)的散列结果,这种较长的输出一般视为比MD-5更安全。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最近发表

Powered By Z-Blog 1.8 Spirit Build 80722

Copyright 2007-2008 John Winning`s WebSite. All Rights Reserved.