2007年5月4日星期五

加密算法中私钥的安全性

  著名的Digg网站近期遭遇到了一次尴尬的事件,Digg不得不对文章进行了审查,并删除了一个帖子。因为那个帖子里包含有这样的字符串:09F911029D74E35BD84156C5635688C0。

  这个128位的字符串代表了什么含义呢?这串数字是HD-DVD破解密钥(HD-DVD processing key),可以使用户破解DRM(Digital Rights Management)而未经授权访问数字音像节目。

  DRM使用类似公钥加密的密码技术,在加密音像文件的时候,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。整个加密算法的关键就是私钥,保证私钥的安全性,才能保证整个加密体系的安全性。如果私钥被破解了,那唯一的办法就是更换私钥,或者采用另外一种更好的加密算法。

  目前的公钥加密技术主要算法是70年代诞生的RSA算法和近几年流行的ECC(椭圆曲线)算法,据说椭圆曲线具有更高的安全性、更快的运算速度,从理论上将只有密文和公钥,想要破解私钥是极其困难的,因为私钥决不可能对公众开放,仅仅在加密的时候被使用,甚至对其的操作也是在安全环境下执行的,如果你能够破解私钥,那的确是一件很了不起的事情。

  这里就引发了一个私钥安全性的问题,中国不少银行系统为了更安全的认证用户,使用一种USB Key的技术来确保用户私钥的安全,USB Key是用来存放证书和用户私钥并具有处理能力的一种带智能的芯片,形状类似于U盘,但成本比较低廉,目前在国内银行系统中广泛应用,我以前也曾经专门讨论过这种技术的安全性。

USB KEY

  USB Key之所有是较为安全的系统,是因为产生公私密钥对的程序是研制者直接烧制在芯片中的,公钥密码算法程序也是烧制在芯片中。公私密钥产生后,公钥可以导出到USB Key外,而私钥则存储于密钥区,不允许外部访问。进行数字签名时以及非对称解密运算时,有私钥参与的密码运算只在芯片内部即可完成。由于USB Key内部的CPU可以完成这些操作,全过程中私钥可以不出USB Key介质,因此目前最常用的电脑黑客程序就没有机会去截获私钥,因为整个运算都在Key中执行的。

  USB Key的私钥只要保证只有Key内部程序才能访问,因此这个密钥保护可谓相当不错,从理论上讲,只有破解者知道了USB Key的管理员PIN码,再烧制一段程序到Key中,才可能访问到Key内的私钥,这对于一般的破解者来说是极其困难的。

  对于一套公钥加密系统,如果系统的私钥被破解了,那么这一套加密系统就算是废了,任何开发商都不会允许这样的破解程序存在的,因此我也理解开发商对于这种密钥泄露和破解的敏感性。对于Digg的这次事件,我原先一直以为西方对于保护知识产权的态度是十分鲜明的,但是这次事件令我非常意外,对于破解程序的传播竟然可以做的这么明目张胆且毫无愧疚感,或许在他们看来,音像影视的知识产权也并非那么重要吧。