PGP的安全问题分析

PGP本身就是一个数据安全产品,它会有什么安全性问题呢?PGP的作者PhilZimmermann在PGP文档中说到:“没有哪个数据安全系统是牢不可破的。”PGP也不例外。我们研究它的安全漏洞就是为了让用户知道哪些事会降低PGP的安全性,以及如何避免它们。下面是这些漏洞:口令或私匙的泄密、公匙被篡改、你删除的文件被人恢复、病毒和特洛伊木马、物理安全受到侵犯(物理安全指计算机等物理资源的安全)、电磁泄露、暴露在多用户系统中、网络数据流分析,甚至会有可能被直接从密码学分析的角度被解密(这当然是可能性最小的了)。我们先分别看看PGP加密体系的四个关键部分的安全性问题。PGP是个杂合算法,所谓“杂合”
体现在它包含:一个对称加密算法(IDEA)、一个非对称加密算法(RSA)、一个单向散列算法(MD5)以及一个随机数产生器(从用户击键频率产生伪随机数序列的种子)。每种算法都是PGP不可分割的组成部分,对它们各有不同的攻击方式。◎IDEA的安全性问题IDEA是PGP密文实际上的加密算法,对于采用直接攻击法的解密者来说,IDEA是PGP密文的第一道防线。关于IDEA的原理请参见《PGP简介》,在这里我主要谈谈与安全性有关的部分。IDEA,一种由Lai和Massey在1992年完成的对64bit
大小的数据块的传统加密算法。IDEA是InternationalDataEncryptionAlgorithm的缩写。它基于“相异代数群上的混合运算”设计思想,它比DES在软件实现上快得多,和DES一样,它也支持“反馈加密(CFB)”和“链式加密(CBC)”两种模式,在PGP中采用IDEA的64-bitsCFB模式。IDEA比同时代的算法象:FEAL,REDOC-II,LOKI,Snefru和Khafre都要坚固,而且最近的证据表明即使是在DES上取得巨大成功的Biham和Shamir的微分密码分析法对IDEA也无能为力。Biham和Shamir曾对IDEA的弱点作过专门分析,但他们没有成功。直到目前没有任何关于IDEA的密码学分析攻击法的成果发表,据目前我接触到的文档中谈到无论是NSA还是hacker们都还没有办法对IDEA进行密码学分析,因此对IDEA的攻击方法就只有“直接攻击”或者说是“密匙穷举”一种了。那么对IDEA的直接攻击难度如何呢?我们知道IDEA的密匙空间(密匙长度)是128位,用十进制表示所有可能的密匙个数将是一个天文数字:340,282,366,920,938,463,463,374,607,431,768,211,456.为了试探出一个特定的密匙,平均要试探一半上面的可能性。即使你用了十亿台每秒钟能够试探十亿个密匙的计算机,所需的时间也比目前所知的宇宙的年龄要长,而即使是在当代制造每秒试探十亿个密匙的计算机还是不可能的。因此对IDEA进行明文攻击也是不可能的,更何况从PGP的原理看一个IDEA的密匙失密只会泄露一次加密的信息,对用户最重要的密匙——RSA密匙对的保密性没有什么影响。那么看来IDEA是没有什么问题了,因为你既不能从算法中找到漏洞又没法明文攻击实际上呢?漏洞还是有的,大家知道Netscape的安全性风波吧,就是因为
忽视了密匙随机生成的问题,Netscape的随机密匙生成算法生成的密匙很有“规律”,而且远远没有均布到整个密匙空间去,所以尽管Netscape的美国版采用128bits的密匙,还是被用很小的机时代价破掉了。那么PGP是不是也有这个毛病呢?我将在下面谈到随机数生成时再详细说,这里提到它是为了说明PGP各个部分之间的依存关系。当有人发现PGP实际上不是一种“纯粹的”RSA加密算法时,他们担心由于加密链中IDEA的弱点而被攻破。实际上这是由于一种误解:他们认为公匙加密生来就比传统加密安全得多。实际上密码分析专家计算过,穷举128-bitIDEA密匙和分解3100-bitRSA密匙的工作量相当,而实际上1024-bit的RSA密匙已被认为是机密级的,而且1024-bit的纯粹RSA加密要比128-bit的IDEA加密要慢4000多倍。RSA的长处在于它的
易用性而不是它的坚固性,相反加密链的弱点不在IDEA上而是在RSA上。当然这只是相对而言,我们马上会看到RSA对直接攻击的抵御也是足够强的。随便提一句,在PGP的未来版本中将提供密匙长度为112-bit的TripleDES加密算法作为用户选项。56-bit的标准DES密匙已经被证明是可以攻破的。◎RSA的安全性问题先看看RSA的基本原理,我们知道RSA的保密性基
于一个数学假设:对一个很大的合数进行质因数分解是不可能的。RSA用到的是两个非常大的质数的乘积,用目前的计算机水平是无法分解的。但是这说明不了什么,没有“证明”RSA的安全性。这既不说明分解这个大数是攻击RSA唯一的(或者说是最佳的)途径,也不能证明这种分解真的那么困难。RSA有可能存在一些密码学方面的缺陷,随着数论的发展也许会找到一种耗时以多项式方式增长的分解算法。
不过目前这还只是展望,甚至连发展的方向都还没有找到。有三种事物的发展会威胁到RSA的安全性:分解技术、计算机能力的提高和计算机造价的降低。特别是第一条对RSA的威胁最大,因为只要大数分解的问题不解决,做乘法总是比分解因数快得多,计算机能力强大了尽可以加长密匙来防御,因为那时加密也会快得多的。RSA的密匙生成步骤可以分为七步:-找到两个大质数p,q-做乘法n=p*q-选择一个数e,满足en,而且缺省的e值为17,如果不行再用19,23等等。●RSA的计时攻击法这是一种另辟蹊径的方法。是由PaulKocher发表的。大家可以发现,RSA的基本运算是乘方取模,这种运算的特点是耗费时间精确取决于乘方次数。这样如果A能够监视到RSA解密的过程,并对它计时,他就能算出d来。细节我就不复述了。我想说的是如何抵御它。Rivest说,最简单的方法就是使RSA在基本运算上花费均等的时间,而与操作数无关。其次在加密前对数据做一个变换(花费恒定时间),在解密端做逆变换,这样总时间就不再依赖于操作数了。至于PGP根本
不用担心计时攻击,因为PGP采用了中国余数理论的方法加速了运算,同时也使耗时与操作数无关。同时计时攻击对攻击者资源的要求太高,实时监视加密过程不是任何人都可能做到的。在这里提出这种攻击是因为:虽然它目前还不实用,但从理论上是一个崭新的思路,值得注意。●其他对RSA的攻击法还有一些对RSA的攻击,象公共模数攻击。它是指几个用户公用一个模数n,各自有自己的e和d,在几个用户之间公用n会使攻击者能够不用分解n而恢复明文。但是PGP是不会在用户之间公用模数的。最后谈谈RSA密匙长度的问题,多长的密匙是安全的。专家指出,任何预言都是不理智的,就目前的计算机水平用1024-bits的密匙是安全的,2048-bits是绝对安全的。但是他们并不指望这个局面延续到下世纪,他们只是指出:如果RSA象有些人说的那样脆弱,就不可能从1977年一直保持到现在还没有被攻破。◎MD5的安全性问题MD5是一种在PGP中被用来单向变换用户口令和对信息签名的单向散列算法。一种单向散列的强度体现在它能把任意的输入随机化到什么程度并且能产生唯一的输出。对单向散列的直接攻击可以分为普通直接攻击和“生日”攻击。●对MD5的普通直接攻击所谓直接攻击又叫野蛮攻击。攻击者为了找到一份和原始明文m散列结果相同的明文m',就是H(m)=H(m')。普通直接攻击,顾名思义就是穷举可能的明文去产生一个和H(m)相同的散列结果。对MD5来说散列结果为128-bits,就是说如果攻击者有一台每秒尝试1,000,000,000条明文的机器需要算约10^22年,同时兴许会同时发现m本身:))。●对MD5的生日攻击生日攻击实际上只是为了找到两条能产生同样散列结果的明文。记得那个有名的概率生日问题吗?在N个人中至少有两个人生日相同的概率是
多少?所谓生日攻击实际上只是用概率来指导散列冲突的发现,对于MD5来说如果尝试2^64条明文,那么它们之间至少有一对发生冲突的概率就是50%。仅此而已,对当今的科技能力来说,它也是不可能的。一台上面谈到的机器平均需要运行585年才能找到一对,而且并不能马上变成实际的攻击成果。因为码长和速度的关系,对crypt(3)的生日攻击就成功得多。●其他对MD5的攻击微分攻击被证明对MD5的一次循环是有效的,但对全部4次循环无效。(微分攻击是通过比较分析有特定区别的明文在通过加密后的变化传播情况来攻击加密体系的。)有一种成功的MD5攻击,不过它是对MD5代码本身做了手脚,是一种crack而不是hack更算不上cryptanalysis了。而且如果你做了PGP发行包的签名校验,是容易发现代码被替换过了的。●口令长度和信息论根据传统信息论,英语的每个8-bits字母的信息熵为1.3bits。如果口令足够长,MD5的结果就会足够随机。对128-bits的MD5输出来说,一个长达98个字符的口令将给出一个随机的密匙。(8/1.3)*(128/8)=98.46chars可是谁会用一个象下面这样长的口令呢?1234567890123456789012345678901234567890123567890123456789012345678901234567890123456781.3bits的信息熵来自于英语语法的规律性这个事实,字母出现概率的不等造成了熵的减小。如果2
6个拉丁字母出现的概率均等,信息熵将会增至log(26)/log(2)=4.7bits这样一个随机密匙所需口令长度就减为27.23chars了,如果再加上大小写和几个符号还可以减少。关于选择口令的问题可以参考任何关于安全性的书籍,它们都适用,上面是关于PGP本身特色的部分。◎随机数的安全性问题PGP使用两个伪随机数发生器(PRNG),一个是ANSIX9.17发生器,另一个是从用户击键的时间和序列中计算熵值从而引入随机性。ANSIX9.17PRNG使用IDEA而不是3DES来产生随机数种子。Randseed.bin文件最初是利用用户击键信息产生的,每次加密前后都会引入新的随机数,而且随机数种子本身也是加密存放的。●ANSIX9.17PRNG官方发布的ANSIX9.17标准使用的是TripleDES作为内核,这个很容易改用IDEA实现。X9.17需要randseed.bin中的24bytes的随机数,PGP把其他384bytes用来存放其他信息。X19.7工作过程大致如下:E()=IDEA加密函数,使用一个可复用的密匙(使用明文产生)。T=从randseed.bin文件中来的时间V=初始化向量R=生成的随机密匙(用来加密一次PGP明文)R=E[E(T)XORV]下一次的初始化向量计算如下:V=E[E(T)XORR]●用户击键引入随机性这是真正的随机数,没有什么好说的,只是尽量使击键无规则就行。输入的熵越大输出的随机数的熵就越大。●X9.17用MD5进行预洗所谓“洗”就是指象洗牌一样把数据打乱,加密前叫预洗,加密后为下一次加密的准备叫后洗。PGP的日常随机数产生器X19.7是用明文的MD5值来预洗的,它基于攻击者不知道明文这样一个假设。如果攻击者知道明文他就没有太大必要去攻击了,当然也有这种可能,不过这只是会削弱一点PRNG的随机性罢了。下面我们将看到还有后洗操作。●randseed.bin的后洗操作后洗操作被认为是更安全的。更多的随机字节被用来重新初始化randseed.bin文件,它们被用当前的随机临时PGP密匙来加密。同样如果攻击者知道这个密匙,他就不用攻击randseed.bin文件,相反他更关心randseed.bin文件当前的状态,因为可能从中获得下次加密的部分信息。因此对randseed.bin文件的保护和公匙环及私匙环文件同样重要。当然,如果不是密码专家这些文件都给他也没事。 给力(0票)动心(0票)废话(0票)专业(0票)标题党(0票)路过(0票) 原文:PGP的安全问题分析 返回网络安全首页

时间: 2024-08-01 16:00:40

PGP的安全问题分析的相关文章

浏览器安全问题分析

事端 – 安全漏洞穿透用户桌面 2009年2月,微软发布了广受关注的MS09-002安全漏洞公告,并随之马上提供了针对该漏洞的更新补丁.当访问者使用IE 7浏览器访问特定规格的网页时,MS09-002漏洞会允许远程恶意代码执行,从而破坏访问者的计算机系统.这一问题的典型性在于,面向浏览器的恶意攻击已经成为过去一年当中增长最为迅猛的一类桌面安全威胁.同时,在该威胁发布后的,各大防病毒产品厂商都截获了大量基于该漏洞的攻击.甚至一些以前流行过的恶意软件,都开始集成针对MS09-002的攻击机制生成新变

智能硬件设备八大安全问题分析

目前,IoT 技术还处于起步阶段,与金融.电子商务等其他行业相比,安全性尚未得到充分理解和明确定义.开发一款IoT 产品时,不论是像可穿戴设备这样的小型产品,还是像油田传感器网络或全球配送作业这样的大型IoT部署,从一开始就必须考虑到安全问题.要了解安全的问题所在,就需要了解IoT 设备的攻击方法,通过研究攻击方法提高IoT产品的防御能力. 作为国内最早从事智能硬件安全攻防研究的团队,基于长期的智能硬件安全攻防实践,360攻防实验室对智能硬件设备的安全隐患进行了系统的分析和梳理,总结了智能硬件设

百度浏览器的隐私安全问题分析

主要发现 百度浏览器是微软和安卓平台上的一种网络浏览器,个人用户在向服务器传输数据时进行加密,就算加密了也很容易被解密.浏览器更新时可能很轻易地被中间攻击者利用,执行任意代码. 安卓版本的百度浏览器传输的个人可识别数据,包括用户的GPS坐标.搜索内容和访问时的URL,这些内容都是没有进行加密的.不仅如此,在传输用户的IMEI和附近无线网络列表时也只是使用了简单.易于破解的加密. Windows版的百度浏览器在传输个人可识别数据点的时候也没有进行加密,或者是进行了简单的加密.这些数据包括了用户的搜

关于asp+access的安全问题分析_应用技巧

众所周知,asp+access最大的安全隐患在于access数据库可以被别人    下载,而现在提供的很多asp空间都是只支持access数据库,这样一来,    asp+access的安全问题就显得很突出了.    1.Access数据库的存储隐患    在ASP+Access应用系统中,如果获得或者猜到Access数据库的存储路    径和数据库名,则该数据库就可以被下载到本地.    2.Access数据库的解密隐患    由于Access数据库的加密机制非常简单,所以即使数据库设置了密码

WebSocket通信协议应用安全问题分析

WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术.WebSocket通信协议于2011年被IETF定为标准RFC 6455,WebSocket API也被W3C定为标准,主流的浏览器都已经支持WebSocket通信. WebSocket协议是基于TCP协议上的独立的通信协议,在建立WebSocket通信连接前,需要使用HTTP协议进行握手,从HTTP连接升级为WebSocket连接.浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双

PHP魔术引号所带来的安全问题分析_php技巧

PHP通过提取魔术引号产生的"\"字符会带来一定的安全问题,例如下面这段代码片段: // foo.php?xigr='ryat function daddslashes($string, $force = 0) { !defined('MAGIC_QUOTES_GPC') && define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc()); if(!MAGIC_QUOTES_GPC || $force) { if(is_array

关于asp+access的安全问题分析

众所周知,asp+access最大的安全隐患在于access数据库可以被别人    下载,而现在提供的很多asp空间都是只支持access数据库,这样一来,    asp+access的安全问题就显得很突出了. 1.Access数据库的存储隐患    在ASP+Access应用系统中,如果获得或者猜到Access数据库的存储路    径和数据库名,则该数据库就可以被下载到本地. 2.Access数据库的解密隐患    由于Access数据库的加密机制非常简单,所以即使数据库设置了密码,    解

nodejs multer的安全问题分析

昨天备份本博客的时候发现,上传目录下多了几个奇怪的.asp和.php文件.这些文件并非我自己上传的,很可能是通过某个漏洞传到了服务器上.这会有什么危害呢?下面简单介绍一下. 假设某人把一个功能为删除站点下所有文件的evil.php通过漏洞传到了http://abc.com/upload/下,然后访问http://abc.com/upload/evil.php,那么: 如果该站点不支持php脚本,是没什么危害的: 如果该站点支持php脚本,它的全部文件就会被删除. 这里有两个关键点,一是主动访问该

SaaS企业云服务安全问题研究

SaaS企业云服务安全问题研究 吉林大学 张鑫 本文将针对SaaS企业云服务的安全问题进行深入研究,建立安全问题分析模型,设计安全问题分析系统,由此实现安全问题解决方案的自动生成.危害影响程度的评估,可缩短安全问题解决时间,较为准确地定位安全问题涉及到的用户,节省供应商的人力物力. 本文首先介绍了云计算的相关背景知识,为进一步的研究奠定理论基础.接着重点分析了SaaS企业云服务及其安全问题.通过分析SaaS企业云服务的服务流程.一般操作,发现了其与一般云服务的差异,并给出SaaS企业云服务的特征