pgp加密软件:PGP加密原理

来源:安全中国

PGP是个基于RSA公匙加密体系邮件加密软件Software可以用它对你邮件保密以防止非授权者阅读它还能对你邮件加上数字签名从而使收信人可以确信邮件是你发来它让你可以安全地和你从未见过人们通讯事先并不需要任何保密渠道用来传递密匙它采用了:审慎密匙管理种RSA和传统加密杂合算法用于数字签名邮件文摘算法加密前压缩等还有个良好人机工程设计功能强大有很快速度而且它源代码是免费
实际上PGP功能还不止上面说:;PGP可以用来加密文件还可以用PGP代替UUencode;生成;RADIX;64;格式(就是MIME;;BASE;64格式)编码文件 
PGP;创始人是美国;Phil;Zimmermann创造性在于他把RSA公匙体系方便和传统加密体系高速度结合起来并且在数字签名和密匙认证管理机制上有巧妙设计因此PGP成为几乎最流行公匙加密软件Software包
PGP是种供大众使用加密软件Software加密是为了安全私密权是种基本人权在现代社会里电子邮件和网络上文件传输已经成为生活部分邮件安全问题就日益突出了大家都知道在Internet上传输数据是不加密如果你自己不保护自己信息第 3者就会轻易获得你隐秘;还有个问题就是信息认证如何让收信人确信邮件没有被第 3者篡改就需要数字签名技术RSA公匙体系特点使它非常适合用来满足上述两个要求:
保密性(Privacy)和认证性(Authentication) 
RSA(Rivest-Shamir-Adleman)算法是种基于大数不可能质因数分解假设公匙体系简单地说就是找两个很大质数个公开给世界个不告诉任何人个称为“公匙”个叫“私匙”(Public;key;&;Secretkey;or;Private;key)这两个密匙是互补就是说用公匙加密密文可以用私匙解密反过来也假设甲要寄信给乙他们互相知道对方公匙甲就用乙公匙加密邮件寄出乙收到后就可以用自己私匙解密出甲原文由于没别人知道乙私匙所以即使是甲本人也无法解密那封信这就解决了信件保密问题方面由于每个人都知道乙公匙他们都可以给乙发信那么乙就无法确信是不是甲来信认证问题就出现了这时候数字签名就有用了 
在介绍说明数字签名前先要解释下什么是“邮件文摘”(message;digest)单地讲就是对封邮件用某种算法算出个能体现这封邮件“精华”数来旦邮件有任何改变这个数都会变化那么这个数加上作者名字(实际上在作者密匙里)还有日期等等就可以作为个签名了确切地说PGP是用个128位 2进制数作为“邮件文摘”用来产生它算法叫MD5(message;digest;5)MD5提出者是Ron;RivestPGP中使用代码是由Colin;Plumb编写MD5本身是公用软件Software所以PGP法律条款中没有提到它MD5是种单向散列算法它不像CRC校验码很难找到份替代邮件而和原件具有“精华” 
回到数字签名上来甲用自己私匙将上述128位“精华”加密附加在邮件上再用乙公匙将整个邮件加密这样这份密文被乙收到以后乙用自己私匙将邮件解密得到甲原文和签名PGP也从原文计算出个128位 “精华”来再用甲公匙解密签名得到数比较如果符合就介绍说明这份邮件确实是甲寄来这样两个要求都得到了满足 
PGP还可以只签名而不加密这适用于公开发表声明时声明人为了证实自己身份(在网络上只能如此了)可以用自己私匙签名这样就可以让收件人能确认发信人身份也可以防止发信人抵赖自己声明点在商业领域有很大应用前途它可以防止发信人抵赖和信件被途中篡改 
那么为什么说PGP用是RSA和传统加密杂合算法呢?RSA算法计算量极大在速度上不适合加密大量数据所以PGP实际上用来加密不是RSA本身而是采用了种叫IDEA传统加密算法我先解释下什么叫传统加密简单地说就是用个密匙加密明文然后用同样密匙解密这种思路方法代表是DES(US;Fed eral;DataEncryption;Standard)也就是乘法加密主要缺点就是密匙传递渠道解决不了安全性问题不适合网络环境邮件加密需要
IDEA;是个有专利算法专利持有者是ETH和个瑞士公司:Ascom-Tech;AG
非商业用途IDEA实现不用向他们交纳费用IDEA加(解)密速度比RSA快得多所以实际上PGP是用个随机生成密匙(每次加密区别)用IDEA算法对明文加密然后用RSA算法对该密匙加密这样收件人同样是用RSA解密出这个随机密匙再用IDEA解密邮件本身这样链式加密就做到了既有RSA体系保密性又有IDEA算法快捷性PGP创意有半就在这点上了为什么RSA体系70年代就提出来直没有推广应用呢?速度太慢!那么PGP创意半在哪儿呢?下面我再谈PGP密匙管理
个成熟加密体系必然要有个成熟密匙管理机制配套公匙体制提出就是为了解决传统加密体系密匙分配难保密缺点比如网络hacker们常用手段的就是“监听”如果密匙是通过网络传送就太危险了举个例子:NovellNetware;老版本中用户密码是以明文在线路中传输这样监听者轻易就获得了他人密码当然;Netware;4.1;中数据包头用户密码现在是加密对PGP来说公匙本来就要公开就没有防监听问题但公匙发布中仍然存在安全性问题例如公匙被篡改(Public;Key;Tampering)这可能是公匙密码体系中最大漏洞大多数新手不能很快发现这你必须确信你拿到公匙属于它看上去属于那个人为了把这个问题说清楚我举个例子然后再说如何正确地用PGP堵住这个漏洞
以你和Alice通信为例假设你想给Alice发封信那你必须有Alice公匙你从BBS上下载了Alice公匙并用它加密了信件用BBSEmail功能发给了Alice不幸地你和Alice都不知道个用户叫Charlie用户潜入BBS把他自己用Alice名字生成密匙对中公匙替换了Alice公匙那你用来发信公匙就不是Alice而是Charlie切看来都很正常你拿到公匙用户名是“Alice”于是Charlie就可以用他手中私匙来解密你给Alice甚至他还可以用Alice真正公匙来转发你给Alice这样谁都不会起疑心他如果想改动你给Alice信也没问题更有甚者他还可以伪造Alice签名给你或 
其他人发信你们手中公匙是伪造你们会以为真是Alice来信 
防止这种情况出现最好办法是避免让任何其他人有机会篡改公匙比如直接从Alice手中得到她公匙然而当她在千里的外或无法见到时这是很困难PGP发展了种公匙介绍机制来解决这个问题举例来说:如果你和Alice有个共同朋友David而David知道他手中Alice公匙是正确(有关如何认证公匙PGP还有种思路方法后面会谈到这里假设David已经和Alice认证过她公匙)这样David可以用他自己私匙在Alice公匙上签名(就是用上面讲签名思路方法)表示他担保这个公匙属于Alice当然你需要用David公匙来校验他给你Alice公匙同样David也可以向Alice认证你公匙这样David就成为你和Alice的间“介绍人”这样Alice或David就可以放心地把David签过字Alice公匙上载到BBS上让你去拿没人可能去篡改它而不被你发现即使是BBS管理员 这就是从公共渠道传递公匙安全手段
有人会问:那你如何安全地得到David公匙呢这不是个先有鸡还是先有蛋问题吗?确实有可能你拿到David公匙也是假但这就要求这个捣蛋者参和这整个过程他必须对你们 3人都很熟悉还要策划很久般不可能当然PGP对这种可能也有预防建议那就是由个大家普遍信任人或机构担当这个角色他被称为“密匙侍者”或“认证权威”每个由他签字公匙都被认为是真这样大家只要有份他公匙就行了认证这个人公匙是方便他广泛提供这个服务假冒他公匙是很极困难公匙流传广泛 这样“权威”适合由非个人控制组织或政府机构充当现在已经有等级认证制度机构存在
对于那些非常分散人们PGP更赞成使用私人方式密匙转介方式这样有机非官方更能反映出人们自然社会交往而且人们也能自由地选择信任人来介绍总的和不认识人们见面每个公匙有至少个“用户名”(User;ID)请尽量用自己全名最好再加上本人Email地址以免混淆
注意!你所必须遵循条规则是:在你使用任何个公匙的前定要首先认证它!!!无论你受到什么诱惑当然会有这种诱惑你都不要绝对不要 直接信任个从公共渠道(由其是那些看起来保密)得来公匙记得要用熟人介绍公匙或者自己和对方亲自认证同样你也不要随便为别人签字认证他们公匙就和你在现实生活中家里房门钥匙你是只会交给信任 
下面我讲讲如何通过电话认证密匙每个密匙有它们自己标识(keyID)keyID是个 8位十 6进制数两个密匙具有相同keyID可能性是几十亿分的 
而且PGP还提供了种更可靠标识密匙思路方法:“密匙指纹”(key"s;fingerpr)每个密匙对应串数字(十 6个 8位十 6进制数)这个数字重复可能就更微乎其微了而且任何人无法指定生成个具有某个指纹密匙密匙是随机生成从指纹也无法反推出密匙来这样你拿到某人公匙后就可以和他在电话上核对这个指纹从而认证他公匙如果你无法和Alice通电话你可以和David通电话认证David公匙从而通过David认证了Alice公匙这就是直接认证和间接介绍结合 
这样又引出种思路方法就是把具区别人签名自己公匙收集在发送到公共场合这样可以希望大部分人至少认识其中个人从而间接认证了你公匙同样你签了朋友公匙后应该寄回给他这样就可以让他可以通过你被你其他朋友认证有点意思吧和现实社会中人们交往PGP会自动为你找出你拿到公匙中有哪些是你朋友介绍来那些是你朋友朋友介绍来哪些则是朋友朋友朋友介绍……它会帮你把它们分为区别信任级别让你参考决定对它们信任程度你可以指定某人有几层转介公匙能力这种能力是随着认证传递而递减 
转介认证机制具有传递性这是个有趣问题PGP作者Phil;Zimmermann 
有句话:;“;信赖不具有传递性;我有个我相信决不撒谎朋友可是他是个认定总统不撒谎傻瓜可很显然我并不认为总统决不撒谎” 
有关公匙安全性问题是PGP安全核心我在这里就不细说了和传统单密匙体系私匙保密也是决定性相对公匙而言私匙不存在被篡改问题但存在泄露问题RSA私匙是很长个数字用户不可能将它记住PGP办法是让用户为随机生成RSA私匙指定个口令(pass;phase)只有通过给出口令才能将私匙释放出来使用用口令加密私匙思路方法保密程度和PGP本身是所以私匙安全性问题实际上首先是对用户口令保密当然私匙文件本身失密也很危险破译者所需要只是用穷举法试探出你口令了虽说很困难但毕竟是损失了层安全性在这里只用简单地记住要像任何隐私样保藏你私匙不要让任何人有机会接触到它 
PGP在安全性问题上精心考虑体现在PGP各个环节比如每次加密实际密匙是个随机数大家都知道计算机是无法产生真正随机数PGP对随机数产生是很审慎关键随机数像RSA密匙产生是从用户瞧键盘时间间隔上取得随机数种子对于磁盘上;randseed.bin;文件是采用和邮件同样强度加密这有效地防止了他人从你randseed.bin文件中分析出你加密实际密匙规律来 
在这里我提下PGP加密前预压缩处理PGP内核使用PKZIP算法来压缩加密前明文方面对电子邮件而言压缩后加密再经过7bits编码密文有可能比明文更短这就节省了网络传输时间方面明文经过压缩实际上相当于经过次变换信息更加杂乱无章对明文攻击抵御能力更强PGP中使用PKZIP算法是经过原作者同意PKZIP算法是个公认压缩率和压缩速度都相当 
压缩算法在PGP中使用是PKZIP;2.0版本兼容算法 
好了有关PGP安全性问题我会在PGP安全性文中专门介绍我上面讲了这么多只是为了让大家知道PGP会是非常安全只要你自己遵循正确使用思路方法有关PGP安装和使用请参考PGP;2.6.3i安装和使用如果在看英文文档时有些不太明白词汇请试试能不能从PGP名词解释文中找到线索PGP;2.6.3i是我推荐大家使用PGP版本有关这个版本详细问题请参见PGPi;问答集 
在今天Internet上随处可见用PGP签名文章PGP版本也在飞快地更新据说PGP;3.0;再有几个月就要推出了世界上越来越多人们在使用PGP我们中国人也应该重视保护自己合法私密权我翻译整理这几篇文章就是为了在国内宣传推广PGP使用尽管它还是个新生事物可是我们要看到在网际空间(CyberSpace)中它肯定能迅速成长起来中国虽然起步晚但比美国也差不太多我们应该迎头赶上

  • 篇文章: 简单不求人 轻松让你击破ATA硬盘密码

  • 篇文章: 突破网吧Winpcap安装限制——权限魔术
  • Tags:  pgp硬盘加密 pgp原理及应用 pgp加密 pgp加密软件

    延伸阅读

    最新评论

    发表评论