使用智能密码钥匙自行生成的公钥加密PIN,加密过程有智能密码钥匙生成的随机数参与,有“一次一密”“一钥一密”的效果;解密在智能密码钥匙内部完成,所用私钥及解密过程被安全芯片妥善保护。
步骤1:智能密码钥匙与主机建立连接,智能密码钥匙初始化清空随机数缓冲区。
步骤2:智能密码钥匙等待主机下发指令。
步骤3:智能密码钥匙判断主机发出的指令类型,如果是获取随机数指令,执行步骤4,如果是获取RSA公钥指令,执行步骤6,如果是验证PIN码指令,执行步骤9。
主机发送给智能密码钥匙的验证PIN码指令是经过主机加扰和加密操作后的密文指令,智能密码钥匙在未进行处理前是不能识别和执行的。其他指令的加扰与加密过程是在主机中完成的,这个加扰与加密的过程是本实例下面将叙述的过程的逆过程,主机先利用本实例步骤5中智能密码钥匙返回给主机的随机数,对将要发送给智能密码钥匙的指令进行加扰操作,再利用步骤7中智能密码钥匙返回给主机的公钥进行加密,得到加密后的指令并传送给智能密码钥匙。以下步骤是智能密码钥匙对主机发送的其他指令解密和后续处理的过程。
步骤4:智能密码钥匙生成随机数并把随机数保存在随机数缓冲区。智能密码钥匙生成的随机数可以是8位的,但并不局限于8位。
步骤5:智能密码钥匙把生成的随机数返回给主机,返回步骤2,等待主机下发新的指令。智能密码钥匙每次返回的随机数不同,目的是防止攻击者的重复攻击,重复攻击是攻击者对主机和接收设备之间通信的信息进行截取,并二次利用截取到的信息进行欺骗操作。智能密码钥匙将生成的随机数返回给主机,是为了实现主机对明文指令进行随机数处理也就是加扰操作的过程。
步骤6:智能密码钥匙检查密钥存储区是否存在密钥,如果密钥存储区存在密钥,执行步骤7,否则执行步骤8。
步骤7:将RSA公钥发送给主机,返回步骤2,等待主机下发新的指令。
在本实施例步骤7中,RSA密钥对的产生可在智能密码钥匙初始化时生成或写入,也可在主机下发获取密钥匙指令时生成。
步骤8:智能密码钥匙生成RSA密钥对,执行步骤7。
在本实施例步骤8中,智能密码钥匙生成的密钥为RSA非对称密钥对,密钥对包括公钥和私钥,其中公钥发送给主机,用于实现主机对指令的加密过程,私钥存储在智能密码钥匙中,用于实现智能密码钥匙对主机发送的密文指令进行解密操作。
步骤9:读取随机数缓冲区和密钥存储区,如果所述随机数缓冲区为空,执行步骤10,若密钥存储区为空,执行步骤10,若随机数缓冲区和密钥存储区都不空,执行步骤11。
步骤10:智能密码钥匙的随机数缓冲区为空,智能密码钥匙无法读取随机数,不能对主机发送给智能密码钥匙的其他指令进行去扰操作,智能密码钥匙返回错误,无法执行主机发送的其他指令;智能密码钥匙的密钥存储区为空,智能密码钥匙无法读取私钥,不能对主机发送给智能密码钥匙的其他指令解密,智能密码钥匙返回错误。
步骤11:智能密码钥匙的随机数缓冲区和密钥存储区都不为空,智能密码钥匙读取随机数和私钥,智能密码钥匙用私钥对主机传送的验证PIN码的指令解密。
步骤12:智能密码钥匙使用步骤9中读取的随机数对解密后的指令进行去扰操作,得到明文形式的验证PIN码的指令。
步骤13:智能密码钥匙清空随机数缓冲区。
步骤14:智能密码钥匙解析步骤12中得到的验证PIN码指令,根据解析结果进行操作并返回步骤2,等待主机下发新的指令。