今天听人说,因为用Authenticator App做亚马逊两步验证造成了帐号关联……
我给大家解释一下Authenticator的实现原理,作为计算机专业科班出身的我,此次从各方面了解并经过自己亲测。已证实:用Authenticator App做亚马逊两步验证造成关联的说法确实不成立!
在说Authenticator原理之前,我先科普下亚马逊的关联原则:除了账户信息资料(身份证明、信用卡、收款帐号、电话号码、地址等)和 产品信息内容等关联因素之外,登录帐号的设备的IP地址、网卡MAC地址、浏览器Cookie等也会被亚马逊识别。
另外关联又分为强关联和弱关联,单纯的因为IP或其他某一个点相同一般不会即刻把你的店铺关闭,很多时候帐号被冻结都是日积月累的问题造成的。所以,当你的账户被告知关联的时候可能是你之前的一些操作行为造成的。
通俗地讲,Authenticator的实现原理就跟我们熟悉的网银的实体动态口令牌的原理差不多。简单来说,Authenticator的实现原理是基于服务器端(Amazon)随机生成的密钥,客户端(Authentictor)使用服务器端的密钥和时间戳通过算法生成动态验证码。该验证码的生成只跟密钥和时间戳有关,客户端在飞行模式下都是可以运行的,跟网络等无关,所以就不用担心这个关联问题了。
那么,我再说一下复杂的口令原理:
一、用户需要开启Amazon Authenticator服务时,
1.服务器随机生成一个类似于『DPI45HKISEXU6HG7』的密钥,并且把这个密钥保存在数据库中。
2.在页面上显示一个二维码,内容是一个URI地址(otpauth://totp/账号?secret=密钥)
3.客户端扫描二维码,把密钥『DPI45HKISEXU6HG7』保存在客户端。
二、用户需要登陆时
1.客户端每30秒使用密钥『DPI45HKISEXU6HG7』和时间戳通过一种『算法』生成一个6位数字的一次性密码,如『401651』。
2.用户登陆时输入一次性密码『401651』。
3.服务器端使用保存在数据库中的密钥『DPI45HKISEXU6HG7』和时间戳通过同一种『算法』生成一个6位数字的一次性密码。大家都懂控制变量法,如果算法相同、密钥相同,又是同一个时间(时间戳相同),那么客户端和服务器计算出的一次性密码是一样的。服务器验证时如果一样,就登录成功了。
原理就是这么简单,这种验证方式,比手机方便多了,特别是账号多的情况下。