仿新浪微盾客户端项目简介三

上节我们说到,关于opt算法的说明,也说到这个项目是使用TOTP(基于时间)方法。  

这节讲的主要把它怎么整合项目中。整合项目中,此算法需要注意这么几点。

1. 与服务器端统一的准确时间
由于是使用totp算法,客户端与服务器端的算法是必须要保存一致的。

对时接口,获取服务器端准确时间,返回{“svr_time”:1319512158},以秒为单位的时间戳。时间偏移量 = 本地时间 – 服务器端时间, 将时间偏移量保存在地SharePreference中,供计算动态密码时读取服务器端时间 = 本地时间 - 时间偏移量使用时间偏移量的好处是:只需要从服务器获取一次时间,以后都可以离线使用微盾。

2. 静态密钥。
加密后静态密钥保存在本地,加密算法为DES,一种对称加密算法,支持加密解密密钥 = 固定字符串 + 设备IMEI号码
这个解密的密钥有什么作用了,是用于微盾两边安全性的提升了。这就引出一个话题,密钥的作用。公钥加密,保存在客户端 很多个,用户知道。私钥解密,保存在服务器 只有一个,只有服务器知道。这种不对称加密的方式,大大的提升了破解难度。至于大家认为,设备的IMEI号是不是多此一举,在以后我会专门用一篇文章论述,这里,就不做过多的赘述了。
有了这两点的分析,我们有了一个完美的设计方案:
有了准确的服务器时间和静态密钥,就能计算出正确的6位动态密码
当用户输入动态密码登录时,服务器会使用同样的时间和密钥算出6位密码进行比对。
服务器做了容错处理,会计算出在某个时刻前1分钟和后一分钟的所有6位密码,只要用户输入正确了其中一个,就算通过.
至于这个方法具体代码,我准备是在Google一个开源项目Google Authenticator 修改。
下面的课程,我们将进入具体的源代码的说明。
用了3节的篇幅,说明了微盾概要设计和技术实现,不知道大家明白没,请给予反馈。
posted on 2014-03-03 07:58  laozhu1124  阅读(1675)  评论(3编辑  收藏  举报

淘宝免费计数器