交互型智能密码钥匙指的是带有输入输出部件,除了通过USB口与主机通信之外,还能与使用者进行交互的智能密码钥匙。目前,智能密码钥匙只能以被动方式响应主机下发的指令,对主机下发的数据进行操作,而主机下发的数据对智能密码钥匙来说是透明的,无法判断它的有效性。因此,一旦主机被攻击者控制,一般的智能密码钥匙就容易被攻击者冒用。与一般的智能密码钥匙相比,交互型智能密码钥匙一方面增加了输入/输出功能,另一方面增加了判断逻辑,在执行关键操作或处理关键数据时强制转入交互流程,直到交互完成后才执行相应的操作,能有效地避免攻击者用远程控制的方式冒用智能密码钥匙,也使得用户能够及时发觉冒用的情况并进行处理。
与一般的智能密码钥匙相同的是,目前的交互型智能密码钥匙仍用PIN码来验证使用者的身份。PIN码从本质上说是位数有限的静态密码,其脆弱程度早已被证明。
动态口令也叫一次性口令,动态口令的基本原理是客户端和验证端分别用预先共享的密钥和同步变化的非重复动态因子进行单向变换,将变换结果映射为口令字符,作为一次性的身份验证凭证。通常在客户端用内置算法的脱机设备存储共享密钥与动态因子,生成动态口令,称为动态口令令牌。动态口令卡是动态口令令牌的另外一种形式。动态口令卡通常印有以矩阵方式排列的一系列口令,这些口令是以所在坐标及卡序列号作非重复因子进行变换得到的。
动态口令可以有效地抵御大量静态口令的攻击,提高安全强度的同时与传统的验证机制的使用流程兼容,适合用于替代传统的静态口令验证。把动态口令应用在交互型智能密码钥匙的用户身份验证,可有效地改善交互型智能密码钥匙的安全短板,提高整体安全性。
某型号交互型智能密码钥匙带有液晶屏幕和确认按键,能根据内置的预定义过滤器检查操作数据,显示敏感数据并要求用户按键确认。以该型号交互型智能密码钥匙为基础,引进动态口令卡,设计一种改进的型验证机制。具体方案如下:
在生产阶段,将动态口令生成算法固化在设备内部,并写入生成密钥和以及一张已有的动态口令卡的序列号,生成密钥的访问权限设为不可从外部访问。设动态口令卡的矩阵大小为M×M,则设备预设的坐标范围为(M+n)×M,n>0。序列号写入后,设备枚举范围内的坐标值,利用生成密钥和序列号生成(M+n)×M个口令,其中M×M个口令与动态口令卡上的口令相同。至此,设备与动态口令卡完成绑定,动态口令卡随设备一同出厂。
在使用过程中,当设备接收到验证PN码的指令时,在MM的范围内随机选择一个坐标,通过液晶屏幕显示给用户。用户由坐标值刮开动态口令卡的对应位置,获取口令,作为本次验证的PIN码。设备接收用户输入的PIN码,与内部生成的口令比对,完成用户验证。验证成功后,本次用的口令在设备内部销毁,不再使用,下次验证PIN码时不再选择该坐标。
设备可与别的动态口令卡重新绑定。重新绑定分为两种情况,一种是设备内部存在可用的口令,另一种是设备内部的M×M个口令均被销毁或设备进入锁定状态。为使表述更清晰,将在后一种情况下的重新绑定称为解锁。
如果设备内部存在可用的口令,设备接到重新绑定的指令后,首先在M×M的坐标范围内随机选择一个可用的坐标,通过液晶屏幕显示给用户,用户用原有的动态口令卡验证。验证通过后,设备在M×M的坐标范围内再选择一个坐标值,通过液晶屏幕显示给用户,用户根据新坐标值刮开新口令卡的相应位置,获取口令,把新卡的序列号与口令发给设备。设备根据新卡的序列号与新坐标值生成口令,和用户下发的口令比对。若比对结果一致,则保存新卡的序列号,并在(M+m)×M,n>0的坐标范围内枚举坐标值,生成新的口令矩阵,将此前验证过的口令销毁,完成重新绑定。
如果设备内部的M×M个口令均被销毁或者设备进入锁定状态,则设备接到重新绑定的指令后进入解锁流程。此时,设备在n×M的坐标范围内随机选择一个坐标,通过液晶屏幕显示给用户。该坐标不在动态口令卡坐标范围之内,因此对应的口令对用户来说是未知的。用户将该坐标值和原动态口令卡的序列号提交给设备销售管理方,查询对应的绑定口令。管理方根据序列号和坐标值计算出口令,发给用户。这一过程可通过电话、邮件、网络等方式远程进行。管理方也可在此过程中对用户实行进一步的身份验证。取得绑定口令后,用户将绑定口令发给设备。设备验证绑定口令后进入重新绑定流程,结束后进入正常使用状态。