月光博客

青青子衿, 悠悠我心, 但为君故, 沉吟至今

« 微软正式推出Windows Live SuitePanoramio和Google Earth同步照片数据 »

中国网上银行的USB Key安全评测

  USB Key是一种USB接口的硬件存储设备。USB Key的模样跟普通的U盘差不多,不同的是它里面存放了单片机或智能卡芯片,USB Key有一定的存储空间,可以存储用户的私钥以及数字证书,利用USB Key内置的公钥算法可以实现对用户身份的认证。目前USB Key被广泛应用于国内的网上银行领域,是公认的较为安全的身份认证技术。

  USB Key在网上银行中,被用作客户数字证书和私有密钥的载体,在网络上鉴别用户身份处于极其关键的地位。而网上银行首要的关键问题就是安全,安全是所有一切的基础,没有安全的网银还不如没有网银。一些新闻报道的国内某某银行几十万资金通过网银被盗,都给网上银行带来巨大的负面影响,让人对于USB Key的网上银行认证的安全性产生怀疑和顾虑。

  本文将从技术的角度出发,详细论述一下目前中国网上银行使用的USB Key的安全性以及可能存在的风险和漏洞。当然,一个网银系统的安全,涉及到的理论知识非常多,不仅仅要懂得大学课程《密码学》的全面知识,还要知道最新加密锁和USB Key的产品动态,进行全面的网银评测并不是那么简单的事情。本文也仅仅起个抛砖引玉的作用,欢迎各方高手继续补充和讨论。

  行业安全专家基本都公认USB Key是安全可靠的,那么USB Key为什么是安全的呢?目前有几个重要的性能指标能够说明USB Key的安全性。

  1、硬件PIN码保护

  黑客需要同时取得用户的USB Key硬件以及用户的PIN码,才可以登录系统。即使用户的PIN码被泄漏,只要用户持有的USB Key不被盗取,合法用户的身份就不会被仿冒;如果用户的USB Key遗失,拾到者由于不知道用户PIN码,也无法仿冒合法用户的身份。

  2、安全的存储介质

  USB Key的密钥存储于安全的介质之中,外部用户无法直接读取,对密钥文件的读写和修改都必须由USB Key内的程序调用。从USB Key接口的外面,没有任何一条命令能够对密钥区的内容进行读出、修改、更新和删除。

  3、公钥密码体制

  公钥密码体制和数字证书从密码学的角度上保证了USB Key的安全性,在USB Key初始化的时候,先将密码算法程序烧制在ROM中,然后通过产生公私密钥对的程序生成一对公私密钥,公私密钥产生后,公钥可以导出到USB Key外,而私钥则存储于密钥区,不允许外部访问。进行数字签名时以及非对称解密运算时,有私钥参与的密码运算只在芯片内部即可完成,全过程中私钥可以不出USB Key介质,以此来保证以USB Key为存储介质的数字证书认证在安全上无懈可击。

  4、硬件实现加密算法

  USB Key内置CPU或智能卡芯片,可以实现数据摘要、数据加解密和签名的各种算法,加解密运算在USB Key内进行,保证了用户密钥不会出现在计算机内存中。

  以上几点是USB Key在理论上安全性的技术保证,但是从技术角度分析,这些安全性能指标往往也存在一些容易被忽视的漏洞。

  1、硬件PIN码就绝对安全吗?

  目前的大多数银行使用的USB Key的PIN吗都是从电脑上输入的,因此黑客可以通过木马程序直接拦截到USB Key的PIN码,这也是目前大多数USB Key存在的一个漏洞。知道了PIN码后,如果用户忘记将USB Key从电脑上取出,那么黑客还可以进一步通过PIN码来操作USB Key.一个非常极端的情况,当个人用户的电脑已经完全被黑客远程控制,并且所有键盘和屏幕的操作都会被拦截的时候,目前的USB Key是否还能保证安全交易呢?我看未必,因为此时USB Key的PIN码已经完全可能会被黑客拦截,当用户操作完一次USB Key后,假如没有立即拔出USB Key,那么黑客完全可能在这个间歇期伪造一次交易,而此时USB Key以及PIN码都可以验证通过。

  2、外部真的无法读取Key内部的密钥吗?

  USB Key的密钥从“理论”上讲是无法从外部直接读取的,这个“理论”上指的是设计上要绝对安全,如果设计和编写USB Key操作系统COS的人在COS上留了后门,那么这个人就可以从外部读取Key内部的密钥。

  3、数字证书

  公钥密码体制的确是很安全的,通过复杂的证书管理体系来增加破解的难度,但是数字证书是否是第三方CA机构发放的呢?有些银行的数字证书竟然是银行自己发放的,这就让PKI安全认证大打折扣了。

  4、如何保证通讯安全

  虽然USB Key内置CPU或智能卡芯片可以完成加密运算,但是数据从电脑上传入USB Key的过程中还是有可能被拦截和修改,USB Key内置的CPU只能保证自身的运算安全,却难以保证数据传入前不被修改。

  那么,理想中安全的USB Key应该是什么样子的呢?

  1、针对现有USB Key的键盘输入PIN码的漏洞,可以使用生物技术(例如个人指纹)来替换键盘录入PIN码。

  也就是说,交易时候接入USB Key,我们不需要再到键盘录入PIN码来验证身份,我们只需要在USB Key的设备上按一下指纹,就能自动验证个人身份,这种身份验证机制带来的安全性和实用性是一种跨时代的提高,用户不可能再忘记密码了,只需要验证指纹即可,指纹的验证实在外部设备上进行的,电脑即使被黑客完全控制也无法截取到用户的指纹,从而保证了PIN码的唯一性和安全性。

  2、通过管理或者审计防止COS在设计上留有后门。

  3、数字证书应该由独立于用户和银行以外的权威的第三方安全认证机构CA发放,不能由银行自己发放。

  4、交易金额从USB Key上录入,以防止数据在传入USB Key之前被篡改。

  如果采用了以上我所说的这些安全措施,那么USB Key的安全就可以说达到了“无懈可击”的地步了,实际的安全性可以得到本质上的提高。

  当然我也知道,更加安全的USB Key必然会导致其成本的上升,不利于大规模的推广应用,目前智能卡的USB KEY成本已经超过50元,商业银行发布给最终客户的USB Key的价格则会更高,比如招商银行的USB Key需要88元的费用,而工商银行的USB Key需要76元的费用,增加这些新的安全措施带来的成本还是相当大的,在实际应用中需要低成本的替代方案才是现实可行的。

  那么,对于现有USB Key,如何更安全的操作呢?我的建议如下:

  1、和银行确认存在USB Key中的数字证书是唯一的,用户应该把USB Key随身携带。

  2、经常扫描一下电脑是否有木马病毒或者被远程控制。

  3、没事不要在电脑接入USB Key,只有在交易的时候接入。

  4、交易的时候接入USB Key,输入PIN码交易完成后,立即取走USB Key。

  如果用户使用招行和工行的USB Key时候能够像我建议的这样操作,那么也可以在现有的硬件基础上,安全性会得到进一步提高。

  总而言之,目前的USB Key的主要优点是具有CPU,类似加密锁加密狗,能够进行RSA等加密算法运算,私钥无法读取,成本上有一定优势,因此在网络认证等领域得到广泛的应用,越来越多的人将会采用USB Key作为日常理财或进行其它网络交易的工具,而作为国内在此领域应用最早、最成熟且最具潜力的网上银行应用,在技术和应用方面都应该先人一步,及时找到USB Key潜在安全漏洞的补救方法。



原创文章如转载,请注明:转载自月光博客 [ http://www.williamlong.info/ ]

本文链接地址:http://www.williamlong.info/archives/1129.html
  • 文章排行:
  • 2.fivestone
  • http://blog.fivestone.cn/
  • 其实只需在USB key上加个小液晶屏,输密码的同时输入key上显示的随机码,就可以避免被木马拦截的情况。很简单的设计,安全性应该能提高很多,除非是被人用枪指着头转账了
  • 2007-11-9 3:12:49
  • 5.tonson
  • williamlong大哥的提议很不错。顶!有漏洞才会有发展,才能不断地进步.不知道大哥是做什么的,怎么懂这么多啊。呵呵
  • 2007-11-9 8:10:12
  • 15.不是俺
  • http://www.butwho.net
  • 俺用的是密码卡,类似是没收世界的密码保护卡。

    用的时候需要银行的证书,没有证书或者没有卡都不能付款。除非电脑有摄像头,而且黑客正好从摄像头中看到了密码卡的内容,一般情况下是安全的。
  • 2007-11-9 12:36:25
  • 17.asalei
  • http://www.krazychinese.com
  • 我见过paypal和一些邮件系统有一个密码生成器,有一个小液晶屏幕,一分钟显示一个密码,用这个密码就可以登录,同时还有用户的帐号密码。似乎比USB key还要安全一些。USB key如果被木马窃取了信息,总是有办法破解的。
  • 2007-11-9 12:58:26
  • 19.云风
  • http://blog.codingnow.com
  • 银行用的 usb key 要增强安全性,可做如下改进:(居然已经有类似产品了)

    在 usb key 上加上显示屏和一个硬的确认键。

    交易信息用 usb key 加上数字签名即可。交易信息被 usb key 解密后,显示在 key 的显示屏上,用户确认后对这段文字签名。因为用户是看到了交易信息才主动确认签名,且每一次交易必须有一次确认。这样才可保证安全。

    只是要求用户交易完毕后拔下 key 是不保证理论安全的,而且因为现有 usb key 自身无法显示信息,所以理论上不能避免数据不被篡改。
  • 2007-11-9 15:04:27
  • 25.williamlong
  • http://www.williamlong.info/
  • 楼上有一个人说我的USB Key论述是误导,我可以再说明一下,国内做USB KEY很强的几个主要的USB Key我这里都有其产品和开发API,并且也实际测试使用过,我的论述是经过我测试使用后的一些感受,如有不同意见,大家可以详细从技术上说明原因,不要泛泛而谈,如果原因不便说明,可以发送其到我的电子信箱中。
  • 2007-11-9 23:23:44
  • 31.ray
  • http://www.iwigi.com
  • 安盟的身份认证令牌就如楼上哥们说的类似PAYPAL的那种,缺点就是价格太高不适合国内普通用户,企业用户倒是非常适合。提供此类产品的企业还有国内的支付公司快钱公司的快钱盾。USB Key应该属于个人初级安全产品,无法满足真正意义上的企业商用。
  • 2007-11-10 18:38:14
  • 32.2
  • 呵,有几点不是技术问题,一,开发usbkey时的后门问题,这个技术上没办法解决的,呵,证书问题,银行提供证书不如第三方证书有些搞笑,你是说银行不能提供更安全的保证,或他们私营无比,出现问题时从技术上进行处理拒绝承认责任?
  • 2007-11-12 0:02:30
  • 33.2
  • ◇ 27.least
    http://www.leastchou.cn
    国人无信用,导致都在密码上下功夫,文明落后的表现
    -----------------------------------------------
    楼上这个观点很赞同
    ======================================
    不同意,国外盗卡的也是很多的,不要枉自菲bo!
  • 2007-11-12 0:05:06
  • 36.fiNAL.Y
  • 国人无信用,导致都在密码上下功夫,文明落后的表现
    ------------------------------------------------


    我用HangSeng e-Banking, 就只有密碼驗證, 很安全, paypal 也是, 還有像 amazon, apple store 直接把信用卡號碼存在那裡也不怕
  • 2007-11-12 16:46:08
  • 39.lele
  • 用USB KEY不是自寻烦恼吗...
    各银行都推行用口令卡就很安全了..
    即使送你网银密码..你没有口令卡..绝对拿不了钱..

    USB KEY只不过是为了生产厂家赚钱..银行从中提成..
  • 2007-11-14 12:21:31
  • 40.SUNNY
  • 我以前也是用口令卡,觉得很方便。自己不方便上网的时候,可以在电话里让朋友帮忙操作网银。无奈口令卡有交易金额的限制,并且这里的银行周日全部歇业,只好去领个USB KEY。U盾在自己手里,不方便上网的时候,一点办法都没有。
  • 2007-11-15 8:41:40
  • 41.Sucirst
  • http://www.sucirst.com
  • 3个问题,希望博主能给予解答,今天刚看到您的blog :)

      1、针对现有USB Key的键盘输入PIN码的漏洞,可以使用生物技术(例如个人指纹)来替换键盘录入PIN码。

    我并不认为生物技术真的在任何意义上都优于其他传统数字形式的密码。要知道获得一个人的指纹可比获得他头脑中的密码容易的多。其他诸如虹膜、声纹等也都可以通过社会工程学的方法进行比破译密码更容易地copy。


    2、数字证书应该由独立于用户和银行以外的权威的第三方安全认证机构CA发放,不能由银行自己发放。

    这个没看明白,区别何在能否简单介绍下?

    3、交易的时候接入USB Key,输入PIN码交易完成后,立即取走USB Key。

    以我自己目前在使用的U盾和招行Key来说。输入pin码通过验证后并不能立即取走。也许我们对“交易”这个词理解不同,如果你认为的交易就是输入金额付款前后的活动,那这是不行的。在支付宝、网上银行、专业版等等界面中,大部分查询、打开新功能界面的操作一定要读取key容器的。 只能说,在使用usbkey相关的程序前插入,使用完程序后取走。
  • 2007-11-16 11:43:58
  • 42.moxien
  • 網銀反對只支持IE,應加強對firefox的支持。
    理論上說沒有絕對安全的加密技術,呵呵。
  • 2007-11-16 14:46:00
  • 44.身份认证KEY1000
  • http://www.javada.cn
  • iKey身份认证(U KEY)原理

    iKey内置有MD5算法芯片,以特有的挑战—响应式方法来实现网络身份认证。他的实现原理如下图,参与运算的数有两个:一个可以是随机数,另一个是事先预设的算法因子(分别存放在服务器的用户数据库和iKey硬件内部的存储器)。MD5 Hash算法可以保证两个运算数哪怕只发生一位数字的变化,运算结果也会变得完全不一样。因为每次验证运算的其中一个运算数是随机数,所以每次的运算结果也是随机变化的。由此保证运算结果在传输中不怕被截获。步骤:
    1.服务器或客户端取得随机数,并将之发给对方。
    2.取出各自存储的算法因子。
    3.对这两个数进行运算。
    4.看运算结果是否一致。 如果一致,说明两端的算法因子是一致的(因为随机数是共用的,影响结果的只能是算法因子)。进而推出客户端的算法因子是约定的数---客户是合法的用户。

    现在的典型用户有:福建建设信息中心、春兰集团、上海建设信息中心,中国联通,广州铁道,中国石油公司

    www.javada.cn-----销售彩虹天地(safenet)软件加密安全产品:加密狗,加密锁,电脑安全锁,身份认证(网络登陆安全认证产品I KEY1000,I KEY2032)
    深圳市兆威达科技有限公司
    深圳市福田区燕南路88号中泰燕南名庭二期D座1505室
    联系电话:0755-33220618 13590374654
    联系人:黄芸 QQ群号:4426107
    E –MAIL:hudie6249@126.com
    QQ:124381143 MSN:hudie6249@hotmail.com
  • 2007-11-29 15:08:03
  • 45.狂鱼
  • http://www.madfish.cn
  • 有点吹毛求疵了,usb-key基本上还是能保证安全的,即使有能开发出这种盗号工具的人,也不会有勇气冒这个风险。中国人民银行已经牵头组织CFCA了,以后证书都是会经由这个第三方的。
  • 2007-12-4 23:43:08

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 通过Google订阅本站
  • 通过鲜果订阅本站
  • 通过抓虾订阅本站
  • 通过电子邮件订阅本站

站内搜索


热文排行

最新评论及回复

最近发表

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循“署名-非商业用途-保持一致”的创作共用协议.

This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.