目前跨平台应用程序装载主密钥普遍做法是采用多个管理员各拿一组密钥分量key part,在Pinpad密码键盘上分别输入,最后通过应用程序异或运算得到主密钥,再调用WFS_CMD_PIN_IMPORT_KEY命令装载到密码键盘。
在CEN/XFS 3.0x下,这个过程有两处容易造成主密钥泄露:
一、管理员输入key part过程调用的是明文WFS_CMD_PIN_GET_DATA,SP和应用程序都可以知道输入内容;
二、最后异或运算结果WFS_CMD_PIN_IMPORT_KEY命令装载到密码键盘,这个是由应用程序计算得到,SP和应用程序都可以知道内容。
CEN/XFS 3.0x升级到3.1,更新了不少安全内容,Pinpad部分提供了WFS_CMD_PIN_IMPORT_KEYBLOCK,管理员输入key part过程用了密文,这样SP和应用程序都不能知道输入内容,最后Import命令也由硬件内部完成异或运算装载到密码键盘,这样就做到了安全。这种方式虽然做到了安全,但还是不方便,往往分多个管理员输入key part,管理成本还很高,而且一旦要升级到3.1,需要升级所以密码键盘硬件模块,成本更高。
另外一种是远程主密钥装载,利用公开密钥算法RSA对主密钥进行加解密传输,到密码键盘对其解密后装载,这种方式最大的好处是既安全又便捷,升级的话只要厂商提供升级密码键盘的firmware,但是主要在国外用的比较多,目前国内还很少用到,对应XFS3.0命令如下:
WFS_CMD_PIN_EXPORT_RSA_ISSUER_SIGNED_ITEM
WFS_CMD_PIN_IMPORT_RSA_PUBLIC_KEY
WFS_CMD_PIN_START_KEY_EXCHANGE
WFS_CMD_PIN_IMPORT_RSA_SIGNED_DES_KEY