博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

PGP的密匙和口令的安全性问题

Posted on 2007-07-05 14:08  懒人ABC  阅读(1076)  评论(0编辑  收藏  举报
作者: 出处:清华大学  ( 9 ) 砖  ( 10 ) 好  评论 ( 0 ) 条  进入论坛
更新时间:2005-12-19 02:41
关 键 词:安全
阅读提示:最简单的失密方式就是你让你的口令写在某处,又无法保证除你之外没有其他人能看到。如果别人得到你的口令和你的私匙文件,整个加密体系就无密可言了。

最简单的失密方式就是你让你的口令写在某处,又无法保证除你之外没有其他人能看到。如果别人得到你的口令和你的私匙文件,整个加密体系就无密可言了。



另一个古老的话题就是口令不要太简单,注意PGP用的是“口令”passphase,而不是“密码”password就是说可以在口令中包含多个词和空格。一个老谋深算的攻击者可能会用一本名言录来寻找你的口令。因此为了得到好记又难猜的口令,你可以生造一些句子或者找些非常生僻的文学篇章中的句子。我个人推荐的办法是采用一句话中的首字母的序列,然后在其中加入几个符号,如“.”,“-”,“;”等,长度最好大于等于8个字符,同时也可夹杂大小写。由于有被人在旁边窥探你的击键动作的可能,最好不用空格键,因为敲它的声音很特殊。同样,需要手指伸得很远的数字键也可不用。例如:

从“Youcan'tgetitwithoutmypassphase”可以得到“yCgi.wyp”这个口令,用穷举法试探出这个口令的可能性微乎其微,因为它用到了大小写字母和符号。平均要试探约50^8次才可能成功,以IDEA的速度,这在一般大型计算机上也不是轻而易举的事。因此短的口令只要足够随机,一样很安全,而且输入口令时间越短,被窥探的可能也越小。



公匙的篡改和冒充可说是PGP的最大威胁,在《PGP简介中》我已经讲得比较详细了,

要点就是:当你用别人的公匙时,确信它是直接从对方处得来或是由另一个可信的人签

名认证过的。确信没有人可以篡改你自己的公匙环文件。保持你对自己密匙环文件的

物理控制权,尽量存放在自己的个人电脑里而不是一个远程的分时系统里。备份自己

的密匙环文件。

 

◎没有完全删除的文件

一般的操作系统在删除文件时都并没有彻底删除文件的数据,当你加密明文后将明

文删除,可是没有从物理上把明文的数据清除。一些有经验的攻击者可能从你的磁盘数

据块中恢复明文。当然象碎纸机一样,也有从物理上销毁文件的办法,它们是一些工具

软件,如果没有,最简单的办法是用无用的信息将明文文件覆盖。在PGP后加上-w参

数也可以达到这一目的。不过即使你覆盖了所有明文曾占用的磁盘空间,仍然会有微小

的剩磁留在磁盘上,专用的设备可以恢复这些数据,只是一般人没有这个条件。



对于你使用的密匙环文件同样存在这个问题,特别是私匙环文件,直接关系到你的

私匙的安全。因此除了你专用的个人电脑,最好不要将密匙环拷入其他机器,让它们留

在软盘上或许是个安全的办法。

 

◎物理安全性



这是PGP所不能赋予你的。如果政府要调查你的话,它蛮可以直接去物理侵犯你的隐

私,就象在水门事件中一样。而且这种攻击比密码学分析要便宜得多。PGP无法在一个不

保密的环境中保护你的未加密的明文。当然物理安全性也包括对PGP数据的物理安全保护

象防火、防水、防雷等等,可是这都不如防人来得难办。

 

◎多用户系统下的泄密



PGP最初是为MS-DOS设计的,它假设本身在用户的直接物理控制下。可是随着PGP的

普及,多用户系统上也出现了PGP,这样暴露明文和密匙或口令的可能就增大了。例如:

如果你在Unix系统下在PGP的命令行中使用自己的口令,其他用户将能用ps命令直接看

到它。同样的问题在连上局域网的MS-DOS机器上也有。我并不是说在Unix上就不能用

PGP,有人将Unix系统装在笔记本电脑上,你当然可以用PGP而不用担心其他用户。多

用户系统也有安全的,它们禁得起所有入侵者所能获得的手段的攻击,或者是它的用户

都是可以信赖的,要不就是根本没有感兴趣的入侵者。正如下面将要谈到的现实的PGP

攻击中谈到的,在多用户系统中泄密的风险要大得多。对此PGP作者的建议是:尽量在

一个孤立的单用户系统里使用PGP,而且保证系统处于你的直接物理控制之下。

 

◎PGP的时间标戳可靠性



PGP签名上的时间标戳是不可信的,因为任何想伪造一个“错误”的时戳的人都可以

通过修改系统时间达到目的。而在商业上又有这种利用PGP签名的时间来确认责任的需要,

这样第三方的时间公证体系就被建立了。很明显,只要公证方在邮件上签上标准的时间,

就解决了这个问题。实际上这个问题对于手写的签名也存在,签字时需要一个公证人,

用以证明签名的时间,数字签名也一样。PGP作者设想的模式是让第三方提供公证服务,

服务器对每个送来的签名自动加上自己的签名后发回,同时留下一份记录,这份记录是

公开的,需要仲裁的人可以去查阅。

 

◎流量分析



虽然攻击者无法阅读密文的真实内容,但他至少可以通过观察邮件从哪儿来、到

哪儿去、邮件大小以及邮件发送的时间等等而获得一些有用的信息,就象他可以查阅

你的长途电话费单,但是他不知道你谈话的内容一样。这就叫流量分析。单独靠PGP

是无法阻止流量分析的,借助一些网络通讯协议可以防止这些信息的暴露,甚至可以

采用另一些加密通讯体系的协助。

 

◎现实的PGP攻击

上面所说的都是一些对一般攻击者不可能或者太费事的攻击方法。实际上有一些

“可行的”PGP攻击,它们不是攻击PGP密码体系本身(刚才的论述证明它是牢固的),

而是PGP的实现系统。



先看被动攻击:

●击键窥探

一种非常有效的被动攻击方法;简单地说就是记录用户的击键从中获得口令。攻击

者通过键盘记录器窥探用户的击键序列,具体方法因不同系统而异。在DOS下的PGP实现

在这方面是最脆弱的,而且它拥有最多的键盘记录器程序。而且攻击者甚至可以从网络

上远程启动和停止记录器,在DOS下有些引导区病毒也可以完成这一工作。目前已经出现

了至少一种Windows下的记录器,这就对基于Windows的PGP外壳产生了威胁。对UNIX环境

下的键盘记录有点复杂,因为需要root权限,除非被攻击者是在X-Windows环境下输入口

令的,X-Windows下的记录器不用root权限。



防止这种攻击,一句话,对工作环境要仔细检查,同时作好私匙环文件的保存。



●电磁泄露窥探

这很好懂,任何计算机设备尤其是显示器都有电磁泄露,通过合适的设备可以收到

目标显示器上的信息,那么你的明文显示时就无密可言了。我这里有一个FBI通过类似

装置监听到一个间谍的显示器和键盘信号的案例:他们通过偷偷设置在嫌疑犯计算机里

的发射器,远程接收信号,然后通过NSA专用的FFT芯片去除噪音,完成了取证工作。射

频信号大约22MHz,在接收端加上27KHz的水平同步信号和59.94Hz的垂直同步信号

就可以得到清晰的图象。至于键盘用的是串行单片机通讯接口,信号更容易稳定。



加装一个射频信号干扰器可以有效防止显示器信号泄露。键盘信号传不远,只要

没人在你计算机里安“耳朵”就不怕泄露。



●内存空间窥探

在UNIX这样的多用户系统中,只要有合适的权限谁都可以检查机器的物理内存。和

分解一个巨大的合数相比,打开/dev/kmem这个系统虚存交换文件,找到用户的页面,直

接读出e,d来不是省心得多吗?



●磁盘缓存窥探

在Windows这样的多任务操作系统中,系统有把内存中的内容交换到磁盘的习惯,而

且这些交换文件是对用户透明的。更坏事的是,这些内容并不会很快被清除,有可能在

磁盘上保留很久。如果在网络环境中,可能连用户自己都感觉不到,就被人偷走了这些

信息。



●报文嗅探

在网络环境下,信息是以报文的形式在线路中传输的。如果你是通过网络远程使用

PGP,那么就有可能被人从报文传输途中监听到。如果信息是以明文的形式存放在报文中

你的口令也就被攻击者知道了。



使用一些加密联机的通讯程序,象SSH,DESlogin或者干脆使用有加密性能的网络

协议栈(点到点或端到端),可以防止网络嗅探的攻击。因为嗅探者要处理大量的信息,

如果不是明文,他们一般没有兴趣去研究。



再看看主动攻击:

●特洛伊木马

木马是个古老的计谋,关于特洛伊木马应该所有人都不陌生。我不想给它下个定义。

下面是一个虚拟的现代PGP木马:



一些精英程序员开发了一个崭新的PGP的Windows外壳。所有新手都FTP到了

一份拷贝。它工作得太棒了,有各种按钮和滚动条,甚至它还提供了一堆WAV

文件,还支持SoundBlasterAWE32的音效,因此你可以一边加密文件一边

欣赏着16位CD音质的音响。它占用很少的内存,编程精练,功能强大,而且

它还能截获操作系统的中断,从而阻止它把重要信息交换到磁盘去而泄密。

了不起吧?可问题在于,这个程序里有那么几行恶意布置的代码记录了你的

口令,并且当它发现机器上装了一个Modem,它会向Modem发出一条atm0命令

(关闭Modem的蜂鸣器),然后向天知道什么地方拨号并且传出了你的口令

和密匙......



有意思吗?这就是特洛伊木马。避开它需要谨慎,谨慎,再谨慎。



●篡改PGP代码

●篡改PGP代码

●特洛伊木马

●报文嗅探

●磁盘缓存窥探

●内存空间窥探

●电磁泄露窥探

●击键窥探

PGP代码是公开的,因此也会有被人篡改的可能。因此校验你得到的PGP发行包的完

整性,是非常重要的,在上面的例子里我们可以看到,把计算机的控制权交给不可靠的

程序是一件可怕的事。当然有人会把MD5程序crack了,让对篡改过的文件它报告一个正

确的散列结果。这时找到一份已知完好的拷贝对照一下是最可靠的。

 

◎结语

我只是在这里提供了各种材料,结论得要你自己下。我们不能因为谣言而放弃一种

加密方法,同样我们也不能仅仅因为风闻就信赖一种方法。总之,在计算机安全领域,

小心谨慎总会有报偿的,但是缺乏情报和无必要的偏执是没有好结果的。