支付宝登陆,加密还是编码?

支付宝登陆认证安全性分析


支付宝登陆认证的安全性主要依赖HTTPS的保密通信,其本身的登陆认证设计存在安全漏洞——使用固定的口令加密密钥,口令密文永远不变。一旦HTTPS被截获解密,用户名和口令或者口令密文就泄漏了,这将被用于恶意重放攻击。然而遗憾的是HTTPS中的数据是可以被截获的。密文永远不变的加密,严格上不叫加密,顶多就是编码。形如支付宝这样的大厂商实在不应该出现如此错误啊。

文章所做的实验基于支付宝控件2.5。实验结果通过乌云平台通知了支付宝厂商:http://www.wooyun.org/bugs/wooyun-2010-05209。厂商回复:“支付宝登录时密码被加密后使用HTTPS传输,保障在传输过程中不被窃取,在安全性足够保障用户账户安全。对于其中加密设计的部分细节,新版本做了进一步加强更新至最新版本即可”。貌似最新版本(3.0)的口令密文任然永远不变。既然他说HTTPS保障传输过程不被窃取,那就拿出来分析分析。

1.       截获HTTPS明文数据

HTTPS中的数据本身是通过安全套接字密文传输,密钥是动态协商的,其本身是很安全的。HTTPS的通信原理图:

所以通过Wireshark之类的嗅探工具抓取的数据都是密文,无法从中得出有用的信息。然而通过设置浏览器HTTPS代理的方法很容易获取HTTPS中的明文数据。HTTPS代理示意图:

 

设置代理后,浏览器实际在与代理服务器进行加密通信,代理服务器收到数据后加密,然后再与真正的服务器通信。代理服务器转发来自浏览器和服务器的所有数据包,不影响正常通信,同时代理服务器可以看到所有来自浏览器和服务器的明文数据。Burp proxy就是一款很好的代理软件。开启Burp以后,默认监听端口是8080,设置好IE的代理服务器IP和端口,Burp中看到所有的HTTPS网络数据。

黑客怎样窃取HTTPS登陆数据呢?可能用到一些方法:

1)      万能的社会工程学,修改身边朋友同事的浏览器设置。

2)      形如网吧等地的公共计算机。

3)      路由器管理员可以将任意数据流劫持到指定主机,盗取数据,没有商量。

4)      利用病毒木马技术修改IE浏览器设置。相关注册表键:ProxyEnableProxyServerHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet 
Settings

2.       支付宝登陆数据分析

淘宝和支付宝的登陆认证基本相同,不同是支付宝必须使用安全控件,淘宝可以用或者不用安全控件。通过上面的方法截取淘宝和支付宝登陆数据包,其关键的数据包只有一个Request

淘宝非控件登陆数据:

可以看到淘宝非安全控件登陆是口令123qwe是明文传输的,暴露无遗,安全漏洞!

支付宝控件登陆数据:

可以看到用户名是明文,口令密文。据分析口令密文十六进制形式,长度是16的整数倍字节。如果输入密码1234567812345678,得到的密文是32字节,且前后16字节相等。很显然这是个8 byte的分组密码加密算法,符合3des加密算法的推测。既然是加密,肯定要有密钥。但是可以看到登陆前没密钥协商或密钥分配的过程,那么密钥要么在登陆数据中,要么就是固定密钥。经过不同时间不同多次发现口令密文永远不变,那么支付宝安全控件登陆将无法避免重放攻击。

3.       支付宝登陆的重放攻击

不用去研究复杂的加密算法,不用去寻找解密密钥。只要把password参数的值替换成成功登陆时的口令密文,就能骗过认证服务器正确登陆了。

攻击方法使用Burp proxyintercept功能,收到浏览器登陆请求包后修改相应字段数据,然后再forward给服务器。

省略重放攻击截图演示过程……

4.       安全建议

任何信息安全相关的东西,不能依靠实现方法(算法)的保密性来保证安全,而是需要在实现方法和算法都公开的情况还依然能够保证其安全。

对登陆认证实现的建议:

1)      一次一密的公钥对

每次登陆都由服务器生成一公钥对(private_key, public_key),浏览器从服务器获取public_key,用它加密口令。这样口令密文每次都在变,只有拥有私钥的服务器才能解密口令。韩国某知名游戏的网页登陆采用过这种登陆方法。

2)      RSA公钥加密

学习SSL,由客户端生成随机密钥Key,此key用服务器的公钥加密后发送到服务器,服务器用私钥解密得到密钥key。服务器和浏览器通过这个随机密钥key来保护登陆口令。

3)      动态协商密钥

据说RSA受专利保护,使用要交专利费。为了绕开RSA专利,可以使用Diffie-Hellman协商一个加密密钥key,服务器和浏览器通过这个key来保护登陆口令。

 

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值