月光博客

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

« 腾讯QQ拼音输入法试用Flickr测试新版上传工具 »

网站登录的加密传输安全

  刚才看到了两篇文章,分别是“QQ网站登录的RSA加密传输缺陷分析”和“RSA非对称加密的一些非常规应用”,我这里谈一下我的一些看法。

  我以前曾经写过一篇文章“网站的安全登录认证设计”,对于QQ登录使用RSA进行加密传输,的确是一种低成本的替代SSL的方法,因为SSL本身需要数字证书颁发机构(CA)的介入,还需要一定费用,因此对于安全程度不高的系统使用RSA加密进行“网络传输”上的加密安全也是一种选择。

  然而,不使用SSL带来的后果就是安全性的降低,相当于网站自己当CA,自己颁发数字证书。数字证书颁发机构(CA)在互联网安全生态链中扮演一个非常重要的角色,因为CA充当可信任的第三方在验证申请者的真实身份后才颁发SSL证书。因此,CA从一定程度上保护了最终用户的信息安全,并预防了网站自己“内鬼”从中窃取用户信息的可能性。因此,使用RSA并不能完全替代SSL的作用。

  不过如果黑客通过arp欺骗的方法伪造的RSA密钥的话,我觉得也不一定能窃取用户的密码。因为用户验证密码并非将客户端用户的密码传到服务器上进行验证,通常情况下只要客户端用户密码的“消息摘要算法(Hash function)”和服务器端的一致即可,因此,验证的方法可以这样进行:客户端将用户密码的HASH数值(MD5或者SHA1)使用服务器端生成的公钥进行RSA加密,并传输到服务器端,服务器端接收到以后,使用私钥进行解谜,解密出HASH码后和数据库中计算出的HASH码进行比较,从而进行认证。

  这样,即使黑客使用arp欺骗窃取了用户传输的数据,也仅仅窃取了用户密码的HASH值,并不是用户的密码明文,而从密码的HASH值反推用户密码则是十分困难的,详见“密码学基础”一文,因此得到的数据也没有多大用处。

  总的来说,增强QQ登录密码的安全强度的方法还有很多种,最安全的方法可以使用类似网上银行的USB Key进行登录验证,那样的安全性就基本达到了相当高的程度了,不过使用成本也达到很高的程度了。



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

本文链接地址:http://www.williamlong.info/archives/1146.html
  • 文章排行:
  • QQ登录的加密传输安全(引用)
  • 过门网 blog
  • 安全技术团队PST有一篇文章《QQ网站登录的RSA加密传输缺陷分析》,内容大概是QQ登录密码使用了低成本的RSA进行加密传输,从而让黑客有可乘之机,使其可以通过伪造RSA密钥的方法获得QQ密码...
  • 2007-11-26 1:11:18
  • 12.nolog
  • 你把RSA和SSL的概念混淆了
    RSA只是一个算法,SSL似乎是个协议,我不太确定,但是如果把两个东西并列绝对是个错误。
    通常SSL里面会用RSA的256 bit以上的密钥。
    SSL如果没记错,规定了会话步骤,算法等。
  • 2007-11-25 8:35:46
  • 13.GoMain
  • http://www.gomain.net
  • 我看了一下原文,作者好像是要重新伪造一对密钥。

    攻击过程如下:
    1. 攻击者通过MIM(比如arp欺骗等)劫持server与客户端浏览器之间的http包
    2. 攻击者生成一对伪造的RSA密钥: fake public key/fake private key
    3. 攻击者将js文件中的public key替换为fake public key,并传输给客户端浏览器
    4. 客户端浏览器用 fake public key加密敏感数据,比如密码,并将加密后的数据传输给攻击者
    5. 攻击者用fake private key解密,获得明文密码等
    6. 攻击者用server的public key加密明文数据,并传送给server
  • 2007-11-25 9:08:18
  • 14.GoMain
  • http://www.gomain.net
  • 或者直接修改加密程序。

    比如,如果是用js在做加密,则修改js,如果是用flash或java applert做加密,则替换flash或applet,直接去掉这种加密机制,捕获明文密码。
  • 2007-11-25 9:10:26
  • 15.有图
  • http://www.utosee.com
  • 估计以后的方向是第三方加密认证机构统一给申请者发放不同的密钥,算法可以一样,也可以根据申请者自己定制,而客户端则只需从网上下载一个软件使用即可。
    申请者的密钥是可以随时更换的,这样可以免遭crack,而客户端在每次启动的时候自动升级密钥以达到和服务端一致。当然最顶级的还是像《黄金眼》里面随时间随机变化,只要时间同步(好像很容易实现),即可同步密钥。
    如果这样,这个机构就可以做到long tail所说的集合器了,谁来承担这个角色?
  • 2007-11-25 10:20:45
  • 17.iridiumcao
  • (不好意思,以此为准,麻烦把我前面两条留言删掉)
    “QQ网站登录的RSA加密传输缺陷分析”里不是说的很清楚吗?先截获server传向client(browser)的public key并用fake public key替代之,client用fake public key加密后,传给它,它用fake private key解密,获得密码,同时,它再用public key加密这个密码并传给server。

    中间人攻击 (man-in-the-middle)就是这个过程啊。

    ......publik key..................fake public key
    server -------------> fake server ----------------> client

    .......password encrypted ...........password encrypted
    .......by fake publik key ...........by public key
    client ------------------->fake server ------------- > server
    ......................(unencrypt password
    .......................by fake private key
    .......................and encrypt it by
    ........................public key)

    用小点站位,不然排版把内容变乱了。
  • 2007-11-25 11:22:13
  • 20.Gomain
  • http://www.gomain.net
  • 月光的意思好像是使用了“消息摘要算法(Hash function)”,
    返回的"password encrypted by fake publik key"就不完整,
    所以不能"unencrypt password by fake private key"了。

    这种思路其实挺好的。
  • 2007-11-25 14:02:19
  • 26.Ghoul
  • http://www.ghoul.cn/
  • 提到的先生成一个hash,然后把hash进行可逆非对称加密(RSA或ECC等),算是使用了两次加密,即使第一重加密被突破,黑客得到的仍然是一个不可逆的hash,但是实际上知道这个hash就已经足够了,因为服务器也是使用这个hash来判断用户身份的。所以实质上并没有提高多大的安全性。

    我觉得原文提出的中间人攻击的思路还是不错的。SSL始终是经过多年和广泛考虑到加密体系,考虑得完善得多。
  • 2007-11-26 9:39:08
  • 30.评论
  • nolog的说法是对的, ssl是安全套接层加密协议, 他可以选择使用dsa, rsa, Diffie-Hellman中的任意一个的加密算法. LZ这篇文章视乎没有将问题说清楚.
  • 2007-11-27 4:28:41
  • 34.mator
  • 这篇文章才是“滥竽充数”,本身你就不懂加密的技术,在这里YY个啥!
    人家腾讯那么大的公司,会在乎申请一个CA证书的费用???
    楼主不懂装懂
  • 2008-1-9 17:33:36

发表评论:

◎声明:转载本文时请务必以超链接形式标明文章原始出处和作者,本文严禁商业网站转载。

订阅博客

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

站内搜索


热文排行

最新评论

最近发表

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

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