智能密码钥匙是以安全芯片做核心,由USB接口和主机通信的小型硬件设备。用智能卡芯片内置的安全机制与算法,智能密码钥匙可进行密钥生成和安全存储、数据加密及等功能。和密钥有关的运算均在设备内部执行,只输出运算结果。
智能密码钥匙有“密钥不离开设备”的特性,基本可以满足密钥存储的保密性要求,在网上银行等安全性要求较高的应用广泛。然而,在几乎全部的应用场景中,智能密码钥匙始终处于被动响应的地位,操作指令与数据均是由连接智能密码钥匙的主机下发的。对普通的智能密码钥匙而言,主机下发的数据是透明的。以计算数字签名为例,只要主机被攻击者控制,对智能密码钥匙下发被篡改的非法数据,普通的智能密码钥匙就可能没有区别地给非法数据生成合法的数字签名。对普通智能密码钥匙,能避免被冒用的唯一途径是内置的权限控制机制。然而,权限控制靠的PIN码也是用户由主机输入后下发到智能密码钥匙的。显然,一旦主机被攻击者控制,智能密码钥匙的权限控制机制也有风险,能否有效阻止冒用的发生有疑问。
为改善智能密码钥匙的安全性,避免可能出现的冒用,提出复核型智能密码钥匙。复核型智能密码钥匙是一类有交互功能的智能密码钥匙。从硬件角度而言,与普通智能密码钥匙相比,复核型智能密码钥匙增加了输入与输出部件,从而给用户与复核型智能密码钥匙直接交互给出了硬件基础。更重要的是,在这个基础上,复核型智能密码钥匙实现了扫描、分析传入的数据,提取关键信息的功能;复核型智能密码钥匙引进了运算前输出关键数据供用户复核,用户按键确认后才走完运算的交互流程。扫描分析传入的数据,输出关键数据让用户复核,是复核型智能密码钥匙和普通智能密码钥匙不一样的最大特征。扫描分析功能的实现,使复核型智能密码钥匙在一定程度上能“分辨”传入的数据;交互流程的引入,使得用户能在运算完成前复核数据,进而有机会阻断冒用的发生。复核型智能密码钥匙做到了“所见即所签”的效果,使用户能及时发现攻击者的冒用并将其阻断,从而有效地提高了智能密码钥匙应用流程的整体安全性。
目前还有一种按键Key,即在普通智能密码钥匙的基础上增加按键,让用户确认用。因按键Key无独立的输出部件,缺少可信的输出关键数据让用户复核的途径,复核无从谈起。相应地,对数据进行扫描、分析等内在功能也被省略。因此,按键Key无复核特征,其安全效果也与复核型智能密码钥匙不同,不属于复核型智能密码钥匙范畴。
即使复核型智能密码钥匙可有效提高智能密码钥匙应用流程的整体安全性,但在实际应用中有一定的障碍,影响了复核型智能密码钥匙的推广。
如前所述,扫描分析传进的数据是复核型智能密码钥匙的一大特征。由此可知,进行数字签名时,传进复核型智能密码钥匙的为待签名的数据自身,是复核型 智能密码钥匙发挥功用的前提。然而,在现行的智能密码钥匙操作接口中,往往支持片内散列与片外散列两种签名模式。片内散列指的是传入接口的是待签名数据本身,智能密码钥匙接收数据后计算散列,并得到最终的签名;片外散列指的是传入接口的是用第三方工具对数据计算散列,把散列结果传入接口,智能密码钥匙接收到的是散列结果,直接对此计算签名。
对普通智能密码钥匙而言,待签名数据是透明的,因此片内散列和片外散列两种模式均能支持。从通信效率角度来说,片外散列比片内散列还要高些。然而,复核型智能密码钥匙的数据分析扫描功能只能在片内散列模式下发挥作用。不仅如此,为了防止攻击者用片外散列模式传入非法数据的散列值,绕过复核环节进行冒用,复核型智能密码钥匙不应支持片外散列模式。因此,从安全性的角度考虑,复核型 智能密码钥匙应该只支持片内散列模式。遗憾的是,现有的智能密码钥匙应用并非全部用片内散列模式。若只支持片内散列模式,复核型智能密码钥匙就无法在这些应用中使用。反过来说,并非全部的智能密码钥匙应用都须经过用户复核。例如,通过Firefox浏览器申请证书,该流程使用的是片外散列模式,但其中的待签名数据并不用用户复核。如果不支持片外散列模式,复核型智能密码钥匙就无法通过Firefox申请证书,后面的签名等应用则无从谈起。由此可见,过度强调复核型 智能密码钥匙的安全要求,会造成复核型智能密码钥匙的适用面变窄,兼容性变低,因此对复核型智能密码钥匙的推广应用形成障碍。