PGP 简介
时间:04-14
来源:
点击:
本文主要简介PGP的历史,PGP的工作流程,以及PGP用到的加密、解密算法,最后简要介绍PGP的密钥管理机制。
PGP(Pretty Good Privacy),是一个基于RSA公匙加密体系的邮件加密软件。可以用它对邮件保密以防止非授权者阅读,它还能对邮件加上数字签名从而使收信人可以确认邮件的发送者,并能确信邮件没有被篡改。它可以可以提供一种安全的通讯方式,而事先并不需要任何保密的渠道用来传递密匙。它采用了一种RSA和传统加密的杂合算法,用于数字签名的邮件文摘算法,加密前压缩等,还有一个良好的人机工程设计。它的功能强大,有很快的速度。而且它的源代码是免费的。
实际上PGP的功能还包括: PGP可以用来加密文件,还可以用PGP代替UUencode 生成RADIX 64 格式(就是MIME 的 BASE 64格式)的编码文件。
PGP 的创始人是美国的 Phil Zimmermann。他的创造性在于他把RSA公匙体系的方便和传统加密体系的高速度结合起来,并且在数字签名和密匙认证管理机制上有巧妙的设计。因此PGP成为几乎最流行的公匙加密软件包。
1.首先简要介绍PGP加密系统的流程。
PGP加密系统是采用公开密钥加密与传统密钥加密相结合的一种加密技术。它使用一对数学上相关的钥匙,其中一个(公钥)用来加密信息,另一个(私钥)用来解密信息。
PGP采用的传统加密技术部分所使用的密钥称为"会话密钥"(sek)。每次使用时,PGP都随机产生一个128位的IDEA会话密钥,用来加密报文。公开密钥加密技术中的公钥和私钥则用来加密会话密钥,并通过它间接地保护报文内容。
PGP中的每个公钥和私钥都伴随着一个密钥证书。它一般包含以下内容:
密钥内容(用长达百位的大数字表示的密钥)
密钥类型(表示该密钥为公钥还是私钥)
密钥长度(密钥的长度,以二进制位表示)
密钥编号(用以唯一标识该密钥)
创建时间
用户标识 (密钥创建人的信息,如姓名、电子邮件等)
密钥指纹(为128位的数字,是密钥内容的提要表示密钥唯一的特征)
中介人签名(中介人的数字签名,声明该密钥及其所有者的真实性,包括中介人的密钥编号和标识信息)
PGP把公钥和私钥存放在密钥环(KEYR)文件中。PGP提供有效的算法查找用户需要的密钥。
PGP在多处需要用到口令,它主要起到保护私钥的作用。由于私钥太长且无规律,所以难以记忆。PGP把它用口令加密后存入密钥环,这样用户可以用易记的口令间接使用私钥。
PGP的每个私钥都由一个相应的口令加密。PGP主要在3处需要用户输入口令:
需要解开受到的加密信息时,PGP需要用户输入口令,取出私钥解密信息
当用户需要为文件或信息签字时,用户输入口令,取出私钥加密
对磁盘上的文件进行传统加密时,需要用户输入口令
2.以上介绍了PGP的工作流程,下面将简介与PGP相关的加密、解密方法以及PGP的密钥管理机制。
PGP是一种供大众使用的加密软件。电子邮件通过开放的网络传输,网络上的其他人都可以监听或者截取邮件,来获得邮件的内容,因而邮件的安全问题就比较突出了。保护信息不被第三者获得,这就需要加密技术。还有一个问题就是信息认证,如何让收信人确信邮件没有被第三者篡改,这就需要数字签名技术。RSA公匙体系的特点使它非常适合用来满足上述两个要求:保密性(Privacy)和认证性(Authentication)。
RSA(Rivest-Shamir-Adleman)算法是一种基于大数不可能质因数分解假设的公匙体系。简单地说就是找两个很大的质数,一个公开即公钥,另一个不告诉任何人,即私钥。这两个密匙是互补的,就是说用公匙加密的密文可以用私匙解密,反过来也一样。
假设甲要寄信给乙,他们互相知道对方的公匙。甲就用乙的公匙加密邮件寄出,乙收到后就可以用自己的私匙解密出甲的原文。由于没别人知道乙的私匙,所以即使是甲本人也无法解密那封信,这就解决了信件保密的问题。另一方面由于每个人都知道乙的公匙,他们都可以给乙发信,那么乙就无法确信是不是甲的来信。这时候就需要用数字签名来认证。
在说明数字签名前先要解释一下什么是"邮件文摘"(message digest)。邮件文摘就是对一封邮件用某种算法算出一个最能体现这封邮件特征的数来,一旦邮件有任何改变这个数都会变化,那么这个数加上作者的名字(实际上在作者的密匙里)还有日期等等,就可以作为一个签名了。PGP是用一个128位的二进制数作为"邮件文摘"的,用来产生它的算法叫MD5(message digest 5)。 MD5是一种单向散列算法,它不像CRC校验码,很难找到一份替代的邮件与原件具有同样的MD5特征值。
回到数字签名上来,甲用自己的私匙将上述的128位的特征值加密,附加在邮件后,再用乙的公匙将整个邮件加密。这样这份密文被乙收到以后,乙用自己的私匙将邮件解密,得到甲的原文和签名,乙的PGP也从原文计算出一个128位的特征值来和用甲的公匙解密签名所得到的数比较,如果符合就说明这份邮件确实是甲寄来的。这样两个安全性要求都得到了满足。
PGP还可以只签名而不加密,这适用于公开发表声明时,声明人为了证实自己的身份,可以用自己的私匙签名。这样就可以让收件人能确认发信人的身份,也可以防止发信人抵赖自己的声明。这一点在商业领域有很大的应用前途,它可以防止发信人抵赖和信件被途中篡改。
PGP用的实际上是RSA和传统加密的杂合算法。因为RSA算法计算量极大在速度上不适合加密大量数据,PGP实际上用来加密的不是RSA本身,而是采用了一种叫IDEA的传统加密算法。传统加密,一般说来说就是用一个密匙加密明文,然后用同样的密匙解密。这种方法的代表是DES,也就是乘法加密,它的主要缺点就是密匙的传递渠道解决不了安全性问题,不适合网络环境邮件加密需要。IDEA的加(解)密速度比RSA快得多,所以实际上PGP是以一个随机生成密匙(每次加密不同)用IDEA算法对明文加密,然后用RSA算法对该密匙加密。这样收件人同样是用RSA解密出这个随机密匙,再用IDEA解密邮件本身。这样的链式加密就做到了既有RSA体系的保密性,又有IDEA算法的快捷性。PGP利用这种链式加密,既保证了保密性,又保证了加密的速度。
PGP最核心的功能是:文件加密、通信加密和数字签名。下面将简介一些PGP辅助功能,它们虽然不是整个加密系统的核心,但却起到了协调各部分和方便用户的作用。这儿主要介绍PGP的密钥管理机制。
一个成熟的加密体系必然要有一个成熟的密匙管理机制配套。公匙体制的提出就是为了解决传统加密体系的密匙分配过程难以保密的缺点。如果密匙是通过网络传送,那么网络上其他人就可以通过监听得到。举个例子:Novell Netware 的老版本中,用户的密码是以明文在线路中传输的,这样监听者轻易就获得了他人的密码。当然 Netware 4.1 中数据包头的用户密码现在是加密的了。对PGP来说公匙本来就要公开,就没有防监听的问题。但公匙的发布中仍然存在安全性问题,例如公匙的被篡改(Public Key Tampering),这可能是公匙密码体系中最大的漏洞。必须有一种机制保证用户所得到的公钥是正确的,而不是别人伪造的。下面举一个例子来说明这个问题,以及如何正确地用PGP堵住这个漏洞。
假设Mike想给Alice发封信,那他必须有Alice的公匙。该用户从BBS上下载了Alice的公匙,并用它加密了信件用BBS的Email功能发给了Alice。但是,另一个用户叫Charlie的用户潜入BBS,把他自己用Alice的名字生成的密匙对中的公匙替换了Alice的公匙,而参与通信的这两个人都不知道。那么Mike用来发信的公匙就不是Alice的而是Charlie的,一切看来都很正常。于是Charlie就可以用他手中的私匙来解密Mike给Alice的信,甚至他还可以用Alice真正的公匙来转发Mike给Alice的信,这样谁都不会起疑心,他如果想改动Mike给Alice的信也没问题。甚至他还可以伪造Alice的签名给Mike或其他人发信,因为这些用户手中的公匙是伪造的,他们会以为真是Alice的来信。
防止这种情况出现的最好办法是避免让任何其他人有机会篡改公匙,比如直接从Alice手中得到她的公匙,然而这在很多情况下是比较困难的。PGP发展了一种公匙介绍机制来解决这个问题。举例来说:如果Mike和Alice有一个共同的朋友David,而David知道他手中的Alice的公匙是正确的(关于如何认证公匙,PGP还有一种方法,后面会谈到,这里假设David已经和Alice认证过她的公匙)。这样David可以用他自己的私匙在Alice的公匙上签名,表示他担保这个公匙属于Alice。当然Mike需要用David的公匙来校验他给出的Alice的公匙,同样David也可以向Alice认证Mike的公匙,这样David就成为Mike和Alice之间的"介绍人"。这样Alice或David就可以放心地把David签过字的Alice的公匙上载到BBS上让Mike去拿,没人可能去篡改它而不被发现,即使是BBS的管理员。这就是从公共渠道传递公匙的安全手段。
那么怎么能安全地得到David的公匙呢,确实有可能Mike拿到的David的公匙也是假的,但这就要求这个伪造密钥的人参与这整个过程,他必须对这三个人都很熟悉,还要策划很久,这一般不可能。当然,PGP对这种可能也有预防的建议,那就是由一个大家普遍信任的人或机构担当这个角色,即所谓的"密匙侍者"或"认证权威"(认证中心),每个由他签字的公匙都被认为是真的,这样大家只要有一份他的公匙就行了,认证这个人的公匙是方便的,因为他广泛提供这个服务,假冒他的公匙是很极困难的,因为他的公匙流传广泛。这样的"权威"适合由非个人控制组织或政府机构充当,现在已经有等级认证制度的机构存在。
对于那些非常分散的人们,PGP更赞成使用私人方式的密匙转介方式,因为这样有机的非官方途径更能反映出人们自然的社会交往,而且人们也能自由地选择信任的人来介绍。总之和不认识的人们之间的交往一样。每个公匙有至少一个"用户名"(User ID),最好再加上本人的Email地址,以免混淆。
PGP(Pretty Good Privacy),是一个基于RSA公匙加密体系的邮件加密软件。可以用它对邮件保密以防止非授权者阅读,它还能对邮件加上数字签名从而使收信人可以确认邮件的发送者,并能确信邮件没有被篡改。它可以可以提供一种安全的通讯方式,而事先并不需要任何保密的渠道用来传递密匙。它采用了一种RSA和传统加密的杂合算法,用于数字签名的邮件文摘算法,加密前压缩等,还有一个良好的人机工程设计。它的功能强大,有很快的速度。而且它的源代码是免费的。
实际上PGP的功能还包括: PGP可以用来加密文件,还可以用PGP代替UUencode 生成RADIX 64 格式(就是MIME 的 BASE 64格式)的编码文件。
PGP 的创始人是美国的 Phil Zimmermann。他的创造性在于他把RSA公匙体系的方便和传统加密体系的高速度结合起来,并且在数字签名和密匙认证管理机制上有巧妙的设计。因此PGP成为几乎最流行的公匙加密软件包。
1.首先简要介绍PGP加密系统的流程。
PGP加密系统是采用公开密钥加密与传统密钥加密相结合的一种加密技术。它使用一对数学上相关的钥匙,其中一个(公钥)用来加密信息,另一个(私钥)用来解密信息。
PGP采用的传统加密技术部分所使用的密钥称为"会话密钥"(sek)。每次使用时,PGP都随机产生一个128位的IDEA会话密钥,用来加密报文。公开密钥加密技术中的公钥和私钥则用来加密会话密钥,并通过它间接地保护报文内容。
PGP中的每个公钥和私钥都伴随着一个密钥证书。它一般包含以下内容:
密钥内容(用长达百位的大数字表示的密钥)
密钥类型(表示该密钥为公钥还是私钥)
密钥长度(密钥的长度,以二进制位表示)
密钥编号(用以唯一标识该密钥)
创建时间
用户标识 (密钥创建人的信息,如姓名、电子邮件等)
密钥指纹(为128位的数字,是密钥内容的提要表示密钥唯一的特征)
中介人签名(中介人的数字签名,声明该密钥及其所有者的真实性,包括中介人的密钥编号和标识信息)
PGP把公钥和私钥存放在密钥环(KEYR)文件中。PGP提供有效的算法查找用户需要的密钥。
PGP在多处需要用到口令,它主要起到保护私钥的作用。由于私钥太长且无规律,所以难以记忆。PGP把它用口令加密后存入密钥环,这样用户可以用易记的口令间接使用私钥。
PGP的每个私钥都由一个相应的口令加密。PGP主要在3处需要用户输入口令:
需要解开受到的加密信息时,PGP需要用户输入口令,取出私钥解密信息
当用户需要为文件或信息签字时,用户输入口令,取出私钥加密
对磁盘上的文件进行传统加密时,需要用户输入口令
2.以上介绍了PGP的工作流程,下面将简介与PGP相关的加密、解密方法以及PGP的密钥管理机制。
PGP是一种供大众使用的加密软件。电子邮件通过开放的网络传输,网络上的其他人都可以监听或者截取邮件,来获得邮件的内容,因而邮件的安全问题就比较突出了。保护信息不被第三者获得,这就需要加密技术。还有一个问题就是信息认证,如何让收信人确信邮件没有被第三者篡改,这就需要数字签名技术。RSA公匙体系的特点使它非常适合用来满足上述两个要求:保密性(Privacy)和认证性(Authentication)。
RSA(Rivest-Shamir-Adleman)算法是一种基于大数不可能质因数分解假设的公匙体系。简单地说就是找两个很大的质数,一个公开即公钥,另一个不告诉任何人,即私钥。这两个密匙是互补的,就是说用公匙加密的密文可以用私匙解密,反过来也一样。
假设甲要寄信给乙,他们互相知道对方的公匙。甲就用乙的公匙加密邮件寄出,乙收到后就可以用自己的私匙解密出甲的原文。由于没别人知道乙的私匙,所以即使是甲本人也无法解密那封信,这就解决了信件保密的问题。另一方面由于每个人都知道乙的公匙,他们都可以给乙发信,那么乙就无法确信是不是甲的来信。这时候就需要用数字签名来认证。
在说明数字签名前先要解释一下什么是"邮件文摘"(message digest)。邮件文摘就是对一封邮件用某种算法算出一个最能体现这封邮件特征的数来,一旦邮件有任何改变这个数都会变化,那么这个数加上作者的名字(实际上在作者的密匙里)还有日期等等,就可以作为一个签名了。PGP是用一个128位的二进制数作为"邮件文摘"的,用来产生它的算法叫MD5(message digest 5)。 MD5是一种单向散列算法,它不像CRC校验码,很难找到一份替代的邮件与原件具有同样的MD5特征值。
回到数字签名上来,甲用自己的私匙将上述的128位的特征值加密,附加在邮件后,再用乙的公匙将整个邮件加密。这样这份密文被乙收到以后,乙用自己的私匙将邮件解密,得到甲的原文和签名,乙的PGP也从原文计算出一个128位的特征值来和用甲的公匙解密签名所得到的数比较,如果符合就说明这份邮件确实是甲寄来的。这样两个安全性要求都得到了满足。
PGP还可以只签名而不加密,这适用于公开发表声明时,声明人为了证实自己的身份,可以用自己的私匙签名。这样就可以让收件人能确认发信人的身份,也可以防止发信人抵赖自己的声明。这一点在商业领域有很大的应用前途,它可以防止发信人抵赖和信件被途中篡改。
PGP用的实际上是RSA和传统加密的杂合算法。因为RSA算法计算量极大在速度上不适合加密大量数据,PGP实际上用来加密的不是RSA本身,而是采用了一种叫IDEA的传统加密算法。传统加密,一般说来说就是用一个密匙加密明文,然后用同样的密匙解密。这种方法的代表是DES,也就是乘法加密,它的主要缺点就是密匙的传递渠道解决不了安全性问题,不适合网络环境邮件加密需要。IDEA的加(解)密速度比RSA快得多,所以实际上PGP是以一个随机生成密匙(每次加密不同)用IDEA算法对明文加密,然后用RSA算法对该密匙加密。这样收件人同样是用RSA解密出这个随机密匙,再用IDEA解密邮件本身。这样的链式加密就做到了既有RSA体系的保密性,又有IDEA算法的快捷性。PGP利用这种链式加密,既保证了保密性,又保证了加密的速度。
PGP最核心的功能是:文件加密、通信加密和数字签名。下面将简介一些PGP辅助功能,它们虽然不是整个加密系统的核心,但却起到了协调各部分和方便用户的作用。这儿主要介绍PGP的密钥管理机制。
一个成熟的加密体系必然要有一个成熟的密匙管理机制配套。公匙体制的提出就是为了解决传统加密体系的密匙分配过程难以保密的缺点。如果密匙是通过网络传送,那么网络上其他人就可以通过监听得到。举个例子:Novell Netware 的老版本中,用户的密码是以明文在线路中传输的,这样监听者轻易就获得了他人的密码。当然 Netware 4.1 中数据包头的用户密码现在是加密的了。对PGP来说公匙本来就要公开,就没有防监听的问题。但公匙的发布中仍然存在安全性问题,例如公匙的被篡改(Public Key Tampering),这可能是公匙密码体系中最大的漏洞。必须有一种机制保证用户所得到的公钥是正确的,而不是别人伪造的。下面举一个例子来说明这个问题,以及如何正确地用PGP堵住这个漏洞。
假设Mike想给Alice发封信,那他必须有Alice的公匙。该用户从BBS上下载了Alice的公匙,并用它加密了信件用BBS的Email功能发给了Alice。但是,另一个用户叫Charlie的用户潜入BBS,把他自己用Alice的名字生成的密匙对中的公匙替换了Alice的公匙,而参与通信的这两个人都不知道。那么Mike用来发信的公匙就不是Alice的而是Charlie的,一切看来都很正常。于是Charlie就可以用他手中的私匙来解密Mike给Alice的信,甚至他还可以用Alice真正的公匙来转发Mike给Alice的信,这样谁都不会起疑心,他如果想改动Mike给Alice的信也没问题。甚至他还可以伪造Alice的签名给Mike或其他人发信,因为这些用户手中的公匙是伪造的,他们会以为真是Alice的来信。
防止这种情况出现的最好办法是避免让任何其他人有机会篡改公匙,比如直接从Alice手中得到她的公匙,然而这在很多情况下是比较困难的。PGP发展了一种公匙介绍机制来解决这个问题。举例来说:如果Mike和Alice有一个共同的朋友David,而David知道他手中的Alice的公匙是正确的(关于如何认证公匙,PGP还有一种方法,后面会谈到,这里假设David已经和Alice认证过她的公匙)。这样David可以用他自己的私匙在Alice的公匙上签名,表示他担保这个公匙属于Alice。当然Mike需要用David的公匙来校验他给出的Alice的公匙,同样David也可以向Alice认证Mike的公匙,这样David就成为Mike和Alice之间的"介绍人"。这样Alice或David就可以放心地把David签过字的Alice的公匙上载到BBS上让Mike去拿,没人可能去篡改它而不被发现,即使是BBS的管理员。这就是从公共渠道传递公匙的安全手段。
那么怎么能安全地得到David的公匙呢,确实有可能Mike拿到的David的公匙也是假的,但这就要求这个伪造密钥的人参与这整个过程,他必须对这三个人都很熟悉,还要策划很久,这一般不可能。当然,PGP对这种可能也有预防的建议,那就是由一个大家普遍信任的人或机构担当这个角色,即所谓的"密匙侍者"或"认证权威"(认证中心),每个由他签字的公匙都被认为是真的,这样大家只要有一份他的公匙就行了,认证这个人的公匙是方便的,因为他广泛提供这个服务,假冒他的公匙是很极困难的,因为他的公匙流传广泛。这样的"权威"适合由非个人控制组织或政府机构充当,现在已经有等级认证制度的机构存在。
对于那些非常分散的人们,PGP更赞成使用私人方式的密匙转介方式,因为这样有机的非官方途径更能反映出人们自然的社会交往,而且人们也能自由地选择信任的人来介绍。总之和不认识的人们之间的交往一样。每个公匙有至少一个"用户名"(User ID),最好再加上本人的Email地址,以免混淆。
RSA 相关文章:
- 集成晶体的可编程时钟可提供多种设计优势而无性能折衷(07-10)
- 非对称密钥RSA加密算法及其密钥产生(08-27)