对农行金e顺k令的一些猜测
手上有一个未激活的农行金e顺k令
开机后要求输入12位的激活码,随机输入多次,均告失败
花了点时间猜想k令的工作模式:
已知:
k令无法联网,出厂后除了输入激活码的机会外,无法获取任何信息
k令内部有时钟
k令功率极小,无法完成复杂运算
对工作原理的猜测:
每个k令均有唯一编号M
银行使用函数f(M,u)得到12位激活码N(u是一个随机数)
k令会检测M与N是否匹配,如果不匹配,则拒绝开机
激活后,k令会基于M和N生成随机数种子R
每次支付的时候,k令会调用内部时钟,得到当前时间T,支付金额为P
然后基于函数f(R,T,P),得到一个六位伪随机数Z
银行知道M,N,可以用同样的手段计算出R,然后得到Z,从而完成鉴权
推论:
激活码无法在另外一台k令上使用
k令的内部时钟需要保持准确,起码在出厂三年内误差不能超过一分钟
也许银行会计算出±1分钟内的所有Z值,用来减少用户输入错误的可能性