专利名称:一种智能密钥设备与应用软件的通讯方法和系统的制作方法
技术领域:
本发明涉及数据通讯领域,特别涉及一种智能密钥设备与应用软件的通讯 方法和系统。
背景技术:
智能密钥设备可以包括智能卡、USBKey等。智能密钥装置是一种带有处理 器和存储器的小型硬件装置,主要用于身份认证、软件保护等领域。它通过计 算机的数据通讯接口与计算机连接,并具有密钥生成功能,可安全存储密钥, 预置加密算法。智能密钥装置与密钥相关的运算完全在装置内部运行,且智能 密钥装置具有抗攻击的特性,安全性极高。USBKey是一种USB接口的智能密 钥装置,它内置单片机或智能卡芯片,可以存储用户的密钥或数字证书。其中,智能卡(SmartCard)也可以称为IC (Integrate Circuit,集成电路) 卡,是一种带有微处理器和存储器等微型集成电路芯片的卡片。智能卡根据装 载芯片类型的不同可以分为存储式卡片、微处理卡片等,根据信息通信方式的 不同,可以分为接触式卡片、非接触式卡片和双界面卡片,根据用途不同,可 以分为金融卡、加油卡、社保卡、SAM卡等。智能卡具有标准规格,因此需要 遵循一套标准,如IS07816或者IS014443。其中,IS07816是接触式读写器的 标准,IS014443是非接触式读写器的标准。IS014443制定了专门用于非接触式 卡的通讯协议规范的标准,定义非接触方式的收发与识别。USB Key是一种USB 接口的智能密钥装置,它内置单片机或智能卡芯片,可以存储用户的密钥或数 字证书。现有技术中,智能密钥设备与应用软件之间的通讯方法一般为以下三种中 的一种1、 通ifl凄W居为明文,或者明文+MAC (Message Authentication Code,消息 鉴别码),只是对于敏感数据如PIN码和密钥的安装使用密文,或者密文+MAC;2、 通讯数据为明文,或者明文+MAC,对于密钥的安装使用密文,或者密文+MAC,同时取消PIN码,使用外部认证方式进行PIN码的验证或对PIN码 进行一系列杂乱、散列或加密;
3、通讯数据为密文,进行通讯时,首先从智能卡中获耳又加密所用的过程密 钥,获取到的内容是使用非对称密钥的加密密钥进行加密后的密文,应用软件 使用自身拥有的非对称密钥的解密密钥进行解密得到过程密钥。以后的通讯数 据使用过程密钥进行加密。为了进一步保证安全,往往智能卡每次上电都更换 过程密钥。
在实现本发明的过程中,发明人发现现有技术至少存在以下缺点
1、 第l种方式加密密钥必然要放到应用软件中,攻击者可以静态或动态分 析应用软件找到该密钥对PIN码、密钥及应用进行攻击;
2、 第2种方式虽然保护了在认证的过程中攻击者无法拿到认证密钥,但是 对于密钥安装和更新仍然存在和第1种情况相类似的隐患,并且同时对于其他 通讯数据不进行保护;
3、 第3种方式过程密钥的解密密钥存在于软件代码中,静态或动态分析到 解密密钥或者编写一个应用合法通讯去获取过程密钥都是可以破解通讯数据 的。
发明内容
为了保证智能密钥设备与应用软件之间的通讯安全,本发明实施例提供了 一种智能密钥设备与应用软件的通讯方法和系统。所述^t术方案如下 一种智能密钥设备与应用软件的通讯方法,所述方法包括 智能密钥设备与应用软件建立连接;
所述智能密钥设备与所述应用软件之间建立单独会话并且约定过程密钥, 所述单独会话的会话号与所述过程密钥相对应;
所述应用软件使用所述过程密钥对通讯数据进行加密,并向所述智能密钥 设备发送指令,所述指令包括所述单独会话的会话号和已加密的通讯数据;
所述智能密钥设备根据所述单独会话的会话号,使用与所述会话号相对应 的过程密钥对所述已加密的通讯数据进行解密,得到明文通讯数据;
所述智能密钥设备根据所述明文通讯数据执行操作,得到响应数据;
使用所述过程密钥对所述响应数据进行加密,并将已加密的响应数据发送给所述应用软件;所述应用软件接收到所述已加密的响应数据,使用所述过程密钥对接收到 的所述已加密的响应数据进行解密,得到所述响应数据。所述智能密钥设备与所述应用软件之间建立单独会话并且约定过程密钥, 具体包括所述智能密钥设备接收所述应用软件发送的建立单独对话的指令,根据所 述指令选择会话号,并将所述会话号发送给所述应用软件;所述应用软件按照与所述智能密钥设备预先约定的方式生成与所述会话号 对应的过程密钥,并使用预先保存的公钥对所述过程密钥进行加密;所述应用软件将所述已加密的过程密钥和所述会话号发送给所述智能密钥 设备;所述智能密钥设备使用预先保存的私钥对所述已加密的过程密钥进行解密。所述智能密钥设备与所述应用软件之间建立单独会话并且约定过程密钥, 具体包括所述应用软件按照与所述智能密钥设备预先约定的方式生成过程密钥,并 使用预先保存的公钥对所述过程密钥进行加密;所述智能密钥设备接收所述应用软件发送的建立单独会话的指令和已加密 的过程密钥,根据所述建立单独会话的指令选择与所述过程密钥相对应的会话号;所述智能密钥设备使用预先保存的私钥对所述已加密的过程密钥进行解密,并保存所述过程密钥与所述会话号的对应关系;所述智能密钥设备将所述会话号发送给所述应用软件。 所述智能密钥设备与所述应用软件之间建立单独会话并且约定过程密钥,具体包括所述应用软件^狯照预先约定的方法计算第一约定参数,将所述第一约定参 数、获取过程密钥和建立单独会话的指令发送给所述智能密钥设备; 所述智能密钥设备按照所述预先约定的方法计算第二约定参数; 根据所述建立单独会话的指令选择会话号,并根据所述会话号选择过程密钥;10根据接收到的所述第 一约定参数计算第 一密钥; 使用所述第 一密钥对所述过程密钥进行加密;将所述第二约定参数、.已加密的过程密钥和所述会话号发送给所述应用软件;所述应用软件根据接收到的所述第二约定参数计算第二密钥; 使用所述第二密钥对所述已加密的过程密钥进行解密,得到所述过程密钥。 所述智能密钥设备根据所述单独会话的会话号,使用所述过程密钥对所述 已加密的通讯数据进行解密,得到明文通讯数据,具体包括所述智能密钥设备根据所述单独会话的会话号,通过查询自身保存的所述 过程密钥与所述会话号的对应关系,得到所述会话号对应的所述过程密钥,使 用所述过程密钥对所述已加密的通讯数据进行解密,得到明文通讯数据。 所述方法还包才舌所述应用软件向所述智能密钥设备发送结束会话指令,所述结束会话指令 经过所述过程密钥加密;相应地,所述智能密钥设备接收到所述结束会话指令,使用所述过程密钥 对所述结束会话指令进行解密,并销毁所述过程密钥。一种智能密钥设备与应用软件的通讯系统,所述系统包括主机和智能密 钥设备;所述主机包括接口模块,用于所述主机与所述智能密钥设备建立连接;约定模块,用于所述主机中的应用软件与所述智能密钥设备之间建立单独会话并且约定过程密钥,所述单独会话的会话号与所述过程密钥相对应;加密模块,用于所述主机中的应用软件使用所述过程密钥对通讯数据进行加密;发送模块,用于所述主机中的应用软件向所述智能密钥设备发送指令,所 述指令包括所述单独会话的会话号和已加密的通讯数据;接收模块,用于接收所述智能密钥设备发送的已加密的响应数据;解密模块,用于所述主机中的应用软件使用所述过程密钥对所述已加密的 响应数据进行解密,得到所述响应数据。所述智能密钥设备包括ii接口模块,用于所述智能密钥设备与所述主机建立连接;
约定模块,用于所述智能密钥设备与所述主机中的应用软件之间建立单独 会话并且约定过程密钥,所述单独会话的会话号与所述过程密钥相对应;
解密模块,用于所述智能密钥设备根据所述单独会话的会话号,使用所述 过程密钥对所述已加密的通讯数据进行解密,得到明文通讯数据;
操作模块,用于所述智能密钥设备根据所述明文通讯数据执行操作,得到 响应数据;
加密模块,用于所述智能密钥设备使用所述过程密钥对由所述响应数据进
行力口密;
接收模块,用于所述智能密钥设备接收所述主机中的应用软件发送的指令, 所述指令包括所述单独会话的会话号和已加密的通讯数据;
发送模块,用于将已加密的响应数据发送给所述应用软件。
所述主机中的约定模块具体包括
第一接收单元,用于接收智能密钥设备发送的会话号;
密钥生成单元,用于按照与所述智能密钥设备预先约定的方式生成过程密
钥;
第一加密单元,用于使用预先保存的公钥对所述过程密钥进行力口密; 第一发送单元,用于将所述已加密的过程密钥和所述会话号发送给所述智 能密钥设备。
所述智能密钥设备中的约定模块具体包括
第二接收单元,用于接收所述主机中的应用软件发送的建立单独对话的指
令;
第二选择单元,用于根据所述接收单元接收到的所述指令选择会话号; 第二发送单元,用于将所述选择单元选择的会话号发送给所述主机中的应 用软件;
所述第二接收单元还用于接收所述主机中的应用软件发送的已加密的过程 密钥和所述会话号;
第二解密单元,用于使用预先保存的私钥对所述已加密的过程密钥进行解
密;
保存单元,用于保存所述过程密钥与所述会话号的对应关系。所述主机中的约定模块具体包括
第三计算单元,用于按照预先约定的方法计算第一约定参数; 第三发送单元,用于将所述第一约定参数、获取过程密钥和建立单独会话
的指令发送给所述智能密钥设备;
第三接收单元,用于接收所述智能密钥设备发送的第二约定参数、已加密
的过程密钥和所述会话号;
所述第三计算单元还用于#4居接收到的所述第二约定参数计算第二密钥; 第三解密单元,用于使用所述第二密钥对所述已加密的过程密钥进行解密,
得到所述过程密钥。
所述智能密钥设备中的约定才莫块具体包括
第四接收单元,用于接收所述主机中的应用软件发送的所述第一约定参数、 获取过程密钥和建立单独会话的指令;
第四计算单元,用于按照所述预先约定的方法计算第二约定参数; 第四选择单元,用于根据所述建立单独会话的指令选择会话号,并根据所
述会话号选择过程密钥;
所述第四计算单元还用于4艮据接收到的所述第一约定参数计算第一密钥; 第四加密单元,使用所述第一密钥对所述过程密钥进行加密; 第四发送单元,用于将所述第二约定参数、已加密的过程密钥和所述会话
号发送给所述主机中的应用软件。
所述智能密钥设备中的解密模块具体用于
根据所述单独会话的会话号,通过查询自身保存的所述过程密钥与所述会 话号的对应关系,得到所述会话号对应的所述过程密钥,使用所述过程密钥对 所述已加密的通讯数据进行解密,得到明文通讯数据。
所述主机的约定模块还用于向所述智能密钥设备发送结束会话指令,所 述结束会话指令经过所述过程密钥加密;
相应地,所述智能密钥设备还用于接收所述结束会话指令,使用所述过程 密钥对所述结束会话指令进行解密,并销毁所述过程密钥。 本发明实施例提供的技术方案带来的有益效果是
通过在智能密钥设备和应用软件之间建立单独会话并使用双方共同约定的 密钥对通讯数据进行加密后再进行传输,解决了目前软件和智能密钥设备之间
13明文传输或者使用静态密钥的问题,使通讯数据不再有被破解的危险,并且, 由于每次会话的过程密钥不同,即使攻击者模拟合法应用软件也只是获得其自 身通讯所使用的会话号对应的过程密钥,无法得到其他会话的密钥。
图1是本发明实施例1中提供的智能密钥设备与应用软件的通讯方法流程
图2是本发明实施例2中提供的智能密钥设备与应用软件的通讯方法流程
图3是本发明实施例3中提供的智能密钥设备与应用软件的通讯方法流程
图4是本发明实施例4中提供的智能密钥设备与应用软件的通讯系统的一 种结构示意图5是发明实施例4中提供的智能密钥设备与应用软件的通讯系统的另一 种结构示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明 实施方式作进一步地详细描述。
实施例1
在本实施例中,以智能密钥设备为智能卡进行说明,其中公钥保存在应用 软件中,私钥保存在智能卡中,公钥和私钥是预先生成的,其中私钥是在智能 卡进行初始化时通过秘密途径保存在智能卡中的,公钥是直接内置在应用软件 中的;或者,公钥和私钥是根据需要在智能卡中生成的,私钥直接保存在智能 卡中,公钥在应用软件和智能卡约定过程密钥之前由应用软件从智能卡中获得。
参见图1 ,本实施例4是供了 一种智能卡与应用软件的通讯方法,该方法包括 101:应用软件通过调用函数SCardConnect ()与智能卡建立连接; 102:应用软件按照与智能卡预先约定的要求随机生成一个过程密钥Skeyl, 并用自身保存的公钥对过程密钥Skeyl进行加密;其中,预先约定的要求可以指应用软件与智能卡之间预先约定过程密钥的 长度。
在本实施例中,应用软件自身保存的公钥是1024位的RSA算法的公钥。
103:应用软件通过调用函数SCardTransmit ()将操作指令发送给智能卡, 并且该才喿作指令是一个APDU (Application Protocol Data Unit,应用协议数据单 元)指令,其格式为APDU指令头+APDU指令参数+APDU指令数据;
在本实施例中,上述APDU操作指令包含有建立单独会话的指令和对过程 密钥Skeyl进行加密后的数据,该APDU操作指令可以表示为
80 FC 00 00 80 BB F8 2F 09 06 82 CE 9C 23 38 AC 2B 9D A8 71 F7 36 8D 07 EE D4 10 43 A4 40 D6 B6 FO 74 54 F5 IF B8 DF BA AF 03 5C 02 AB 61 EA48 CE EB 6F CD 48 76 ED 52 0D 60 El EC 46 19 71 9D 8A 5B 8B 80 7F AF B8 E0 A3 DF C7 37 72 3E E6 B4 B7 D9 3A 25 84 EE 6A 64 9D 06 09 53 74 88 34 B2 45 45 98 39 4E E0 AA Bl 2D 7B 61 A5 IF 52 7A 9A 41 F6 Cl 68 7F E2 53 72 98 CA 2A 8F 59 46 F8 E5 FD 09 1DBD CB。
104:智能卡接收到包含有建立单独会话的指令和对过程密钥Skeyl加密后 的数据的指令,并使用自身保存的私钥对接收到的对过程密钥Skeyl进行加密 后的数据进行解密,并保存解密得到的过程密钥Skeyl;
105:智能卡为与应用软件的本次会话选择会话号SessionIDl,并将该会话 号Session IDl发送给应用软件,并在智能卡中维护该会话号Session IDl和过程 密钥Skeyl之间的对应关系;
其中,可以建立会话号与过程密钥之间的对应关系表,以方便查询。
106:本实施例步骤103中调用的函凄t SCardTransmit ()返回一个APDU 响应数据,返回的响应数据中包含会话号SessionIDl,并且应用软件将上述会话 号SessionIDl进行保存;
其中,上述APDU响应数据可以表示为01 9000, 01为会话号,90 00表 示该APDU成功执4亍。
107:在通讯过程中,应用软件向智能卡发送加密后的数据;
其中,加密后的数据包括使用过程密钥Skeyl进^f亍加密后的通讯数据和应 用软件与智能卡之间的会话号Session IDl;
108:智能卡接收到应用软件发送的加密后的数据,根据接收到的会话号
15Session ID1查找与该会话号Session ID1对应的过程密钥Skeyl;
109:智能卡使用查找得到的过程密钥Skeyl对接收到的加密后的数据中的 密文通讯数据进行解密,得到明文通讯数据;
110:智能卡根据解密得到的明文通讯数据执行相应的操作,并将操作完成 后得到的响应数据使用过程密钥Skeyl进行加密,再发给应用软件;
lll:应用软件使用过程密钥Skeyl对接收到的加密后的响应数据进行解密, 得到明文响应凄史据;
112:不再进行通讯时,应用软件向智能卡发送使用过程密钥Skeyl加密后 的结束会话指令;
113:智能卡接收到结束会话指令,并用过程密钥Skeyl进行解密,然后智 能卡销毁所维护的该会话号SessionID1对应的过程密钥Skeyl;
在智能卡以后的通讯过程中,该会话号Session ID1还可以继续为另一个会 话所使用。
本发明实施例通过在智能卡和应用软件之间建立单独会话并使用双方共同 约定的密钥对通讯数据进行加密后再进行传输,解决了目前软件和智能卡之间 明文传输或者使用静态密钥进行传输的问题,使通讯密文数据不再有被破解的 危险,并且,由于每次会话的过程密钥不同,即使攻击者模拟合法应用软件也 只是获得其自身通讯所使用的会话号对应的过程密钥,无法得到其他会话的密 钥。
实施例2
在本实施例中,以智能密钥设备为智能卡进行说明,智能卡和应用软件在 进行初始化时,公钥就被保存在应用软件中,私钥被保存在智能卡中。参见图2, 本发明实施例提供了一种智能卡与应用软件的通讯方法,该方法与实施例1中 提供的方法不同之处在于,应用软件与智能卡之间首先建立单独会话后,再进 行密钥的约定。该方法包括
201:应用软件通过调用函数SCardCo皿ect ()与智能卡建立连接; 202:应用软件通过调用函数SCardTransmit()向智能卡发送一个操作指令, 并且该操作指令是一个APDU指令,其格式为APDU指令头+ APDU指令参 数+APDU指令数据;在本实施例中,上述APDU操作指令为建立单独会话的指令,该APDU操 作指令可以表示为80 EE 00 00。
203:智能卡接收应用软件发送的操作指令,选择本次会话要使用的会话号 Session ID2 ,并将该会话号Session ID2发送给应用软件;
204:本实施例步骤202中调用的函数SCardTransmit ()返回一个APDU 响应数据,返回的响应数据中包含有会话号Session ID2,并且应用软件将上述 会话号Session ID2进行保存,然后应用软件按照预先与智能卡约定的要求随机 生成一个过程密钥SKey2;
在本实施例步-骤204中,上述APDU响应凄t据可以表示为01 90 00,其中 01为会话号,卯00表示该APDU成功执行;
其中,预先约定的要求可以指应用软件与智能卡之间预先约定过程密钥的 长度。
205:应用软件将生成的过程密钥SKey2用自身保存的公钥进行加密,并通 过调用函数SCardTransmit ()将操作指令发送给智能卡,并且该操作指令是一 个APDU指令,其格式为APDU指令头+APDU指令参数+APDU指令数据;
在本实施例中,在本实施例中,应用软件自身保存的公钥是1024位的RSA 算法的公铜;
并且上述APDU操作指令中包含有对过程密钥SKey2进行加密后的数据和 会话号Session ID2,上述APDU操作指令可以表示为
80 EE 01 01 80 5F 60 2F OA 26 7F 53 5E 23 9A 06 09 09 ID BD CB 09 53 53 74 71 F7 36 8D 07 EE D4 10 43 A4 40 A5 34 B2 45 45 98 2D 7B IF 52 7A9AF5 IF B841 F6 Cl 68 7F 02 42 6B 45 7C BC 23 B4 48 76 ED 52 0D 3C 60 39 4E E0 AA Bl El EC 46 19 71 9D 8A 5B 8B 80 7F 0D 3C 60 El DF C7 37 72 3A 25 84 EE 6A 64 3E E6 B4 B7 D9 9D 06 74 88 61 E2 53 72 98 CA A5 IF 52 7A 9A 41 F6 Cl 68 7F 2A8F 59 46 F8 E5 FD
206:智能卡用自身保存的私钥对接收到的对过程密钥SKey2进行加密后的 数据进行解密,保存解密得到的过程密钥SKey2,并且智能卡维护会话号Session ID2和过程密钥SKey2的对应关系;
其中,会话号与过程密钥之间的对应关系可以使用对应关系表,方便查询。
207:本地实施例步骤205中调用的函数SCardTransmit ()返回一个APDU
17在本实施例步骤207中,上述APDU响应数据可以表示为90 00, 90 00表示该APDU成功执行;
208:在通讯过程中,应用软件向智能卡发送加密后的数据;
其中,加密后的数据包括使用过程密钥SKey2进行加密后的通讯数据和应用软件与智能卡之间的会话号Session ID2;
209:智能卡接收到应用软件发送的加密后的数据,根据接收到的会话号Session ID2查找与该会话号Session ID2对应的过程密钥SKey2;
210:智能卡使用查找得到的过程密钥SKey2对接收到的加密后的数据中的密文通讯数据进行解密,得到明文通讯数据;
211:智能卡根据解密得到的明文通讯数据执行相应的操作,并对操作完成后得到的响应数据使用过程密钥Skey2进行加密,再发送给应用软件;
212:应用软件再用过程密钥Skey2对接收到的加密后的响应数据进行解密,得到明文响应数据;
213:不再进行通讯时,应用软件向智能卡发送使用过程密钥SKey2加密后的结束会话指令;
214:智能卡接收加密后的结束会话指令,并用过程密钥SKey2进行解密,然后智能卡销毁所维护的该会话号Session ID2对应的过程密钥SKey2。
在智能卡以后的通讯过程中,该会话号Session ID2还可以继续为另 一个会话所使用。
本发明实施例通过在智能卡和应用软件之间建立单独会话并使用双方共同约定的密钥对通讯数据进行加密后再进行传输,解决了目前软件和智能卡之间明文传输或者使用静态密钥进行传输的问题,使通讯密文数据不再有被破解的危险,并且,由于每次会话的过程密钥不同,即使攻击者模拟合法应用软件也只是获得其自身通讯所使用的会话号对应的过程密钥,无法得到其他会话的密钥。
实施例3
参见图3,本发明实施例提供了一种智能密钥设备与应用软件之间的通讯方法,以智能密钥i殳备为USB Key为例,该方法与实施例l、实施例2之间的区
18别在于,本实施例的过程密钥的保护密钥是应用软件和USB Key通过安全约定的方法得到的。该方法包括
301:应用软件通过调用函数CreateFile ()与USB Key建立连接,并且双方进行约定,双方都保存lt A和数B;
其中,数A和数B都是整数,其中数A是一个质数,并且数B、数B的平
方、数B的三次方........数B的(A-1)次方分别对数A取余后的结果都是
不相同的。
在本实施例中,凄tA可以为ll,数B可以为2。302:应用软件生成一个随机数数C,并根据该随机数数C计算数D;其中,应用软件生成的随机数数C是一个小于数A的整数;根据随机数数C计算数D的方法可以为先计算数B的C次方,再将数B的C次方对数A取余,得到的结果即为数D;在本实施例中,数C可以为3,数D为3。
303:应用软件通过调用函数SetFeature ()向USB Key发送一个APDU操作指令,并且该操作指令是一个APDU指令,其格式为APDU指令头+APDU指令参数+ APDU指令数据;
在本实施例中,上述APDU操作指令包含有获取过程密钥和建立单独会话的指令以及数D,该APDU才喿作指令可以表示为
80EF00 00 01 03。
304: USBKey接收应用软件发送的获取过程密钥和建立单独会话指令,并保存数D;
305: USB Key生成一个随机数数E,并根据该随机数数E计算数F;其中,USB Key生成的随机数数E是一个小于数A的整数;根据随冲几数数E计算数F的方法可以为先计算数B的E次方,再将数B的E次方对数A取余,得到的结果即为数F;在本实施例中,数E可以为4,数F为5。
306: USBKey为与应用软件的本次会话选择会话号Session ID3,根据该会话号Session ID3随才几生成一个过程密钥SKey3,并且USB Key维护会话号Session ID3和过程密钥SKey3的对照关系;
其中,为每个会话产生的过程密钥是根据该会话的会话号产生的,可以是随机的,也可以是从同一个翁:据派生出来的;
会话号与过程密钥之间的对照关系,可以通过对照关系表进行维护。
307: USB Key根据数A、数D和数E计算密钥Kl ,并用该密钥Kl对过
程密钥SKey3进行加密,得到密文Ms;
其中,根据数A、数D和数E计算密钥Kl的方法为先计算数D的E次
方,再将数D的E次方对数A取余,得到的结果即为密钥Kl。
在本实施例中,根据数A、数D和数E计算得出的密钥Kl为4;
308: USB Key将数F 、密文Ms和会话号Session ID3发送给应用软件;
309:应用软件通过调用函数GetFeature ()接收USB Key返回的APDU指
令数据,并且应用软件对上述数据进行保存,再根据数A、数C和数F计算密
钥K2;
在本实施例步骤309中,上述APDU数据中包含有数F、密文Ms和会话号Session ID3,该APDU指令可以表示为01 05 01 01 01 04 90 00;
其中,根据数A、数C.和数F计算密钥K2的具体方法为先计算数F的C次方,再将数F的C次方对数A取余,得到的结果即为密钥K2;
在本实施例中,根据数A、数C和数F计算得出的密钥K2为4。
在本实施例中,根据307中计算密钥Kl的方法和309中计算密钥K2的方法可以知道密钥Kl与密钥K2是相等的。
310:应用软件使用密钥K2对密文Ms进行解密,得到过程密钥SKey3;
311:在通讯过程中,应用软件向USB Key发送包含有会话号Session ID3和使用过程密钥SKey3加密后的通讯数据;
312: USB Key接收到上述密文通讯数据,并根据会话号Session ID3从对照关系中查找与该会话号SessionID3对应的过程密钥SKey3;
313: USB Key用查找得到的过程密钥SKey3对接收到的加密后的通讯数据进行解密,得到明文通讯数据;
314: USBKey根据解密得到的明文通讯数据执行相应的操作,并将操作完成后得到的响应数据使用过程密钥Skey3进行加密,再发给应用软件;
315:应用软件再用过程密钥Skey3对接收到的加密后的响应数据进行解密,得到明文响应数据;316:不再进行通讯时,应用软件向USB Key发送4吏用过程密钥SKey3加密后的结束会话指令;
317: USB Key接收到该指令并用查找得到的过程密钥SKey3对该指令进行解密,然后USBKey销毁所维护的该会话号Session ID3对应的过程密钥SKey3,同时该会话号Session ID3可以继续作为下一个通讯过程使用。
本发明实施例通过在USB Key和应用软件之间建立单独会话并使用相同的算法进行密钥的约定,解决了目前软件和USB Key之间明文传输或者使用静态密钥的问题,使通讯数据不再有被破解的危险,并且,由于每次会话的过程密钥不同,即使攻击者模拟合法应用软件也只是获得其自身通讯所使用的会话号对应的过程密钥,无法得到其他会话的密钥。
实施例四
参见图4,本发明实施例提供了一种智能密钥设备与应用软件的通讯系统,包括主机401和智能密钥设备402;主机401包括
接口模块401 A,用于主机401中的应用软件与智能密钥设备402建立连接;约定模块401B,用于主机401中的应用软件与智能密钥设备402之间建立
单独会话并且约定过程密钥,单独会话的会话号与约定过程密钥对应;
加密模块401C,用于主机401中的应用软件使用过程密钥对通讯数据进行
加密;
发送模块401D,用于主机401中的应用软件向智能密钥设备402发送指令,该指令包括单独会话的会话号和已加密的通讯数据;
接收模块401E,用于接收智能密钥设备402发送的已加密的响应数据;
解密4莫块401F,用于主冲几401中的应用软件使用过程密钥对已加密的响应数据进行解密,得到响应数据。
智能密钥设备402包括
接口模块402A,用于智能密钥设备402与主机401中的应用软件建立连接;约定模块402B,用于智能密钥设备402与主机401的应用软件之间建立单独会话并且约定过程密钥,单独会话的会话号与约定过程密钥相对应;
解密模块402C,用于智能密钥设备402根据单独会话的会话号,使用过程
21密钥对已加密的通讯数据进行解密,得到明文通讯数据;
操作模块402D,用于智能密钥设备402根据明文通讯数据执行操作,得到响应数据;
接收模块402E,用于接收主机401中的应用软件发送的指令,上述指令包括单独会话的会话号和已加密的通讯数据;
加密模块402F,用于智能密钥设备402使用过程密钥对由响应数据进行加
密;
发送模块402G,用于将已加密的响应数据发送给主机401中的应用软件。其中, 一种实施方式下,主机401中的约定模块401B具体包括第一接收单元401B1,用于接收智能密钥设备402发送的会话号;密钥生成单元401B2,用于按照与智能密钥设备402预先约定的方式生成过程密钥;
第一加密单元401B3 ,用于使用预先保存的公钥对过程密钥进行加密;第一发送单元401B4,用于将已加密的过程密钥和会话号发送给智能密钥设备402。
智能密钥设备402中的约定模块402B具体包括
第二接收单元402B1 ,用于接收主机401中的应用软件发送的建立单独对话
的指令;
第二选择单元402B2,用于根据接收单元402B1接收到的指令选择会话号;第二发送单元402B3,用于将会话号发送给主机401中的应用软件;第二接收单元402B1还用于接收主机401中的应用软件发送的已加密的过程密钥和会话号;
第二解密单元402B4,用于使用预先保存的私钥对已加密的过程密钥进行解
密;
保存单元402B5,用于保存过程密钥与会话号的对应关系。
参见图5,另一种实施方式下,主机401中的约定模块401B具体包括第三计算单元401B1 ,用于按照预先约定的方法计算第一约定参数;第三发送单元401B2,用于将第一约定参数、获取过程密钥和建立单独会话的指令发送给智能密钥i殳备402;第三接收单元401B3,用于接收智能卡402发送的第二约定参数、已加密的
过程密钥和会话号;
第三计算单元401B1还用于根据接收到的第二约定参数计算第二密钥; 第三解密单元401B4,用于使用第二密钥对已加密的过程密钥进行解密,得
到过程密钥。
智能密钥设备402中的约定模块402B具体包括
第四接收单元402B1,用于接收主机401中的应用软件发送的第一约定参
数、获取过程密钥和建立单独会话的指令;
第四计算单元402B2,用于按照预先约定的方法计算第二约定参数; 第四选择单元402B3,用于根据建立单独会话的指令选择会话号,并根据会
话号选择过程密钥;
第四计算单元402B1还用于根据接收到的第一约定参数计算第一密钥; 第四加密单元402B4,使用第一密钥对过程密钥进行加密; 第四发送单元402B5,用于将第二约定参数、已加密的过程密钥和会话号发
送给主机401中的应用软件。 解密模块402C具体用于
根据单独会话的会话号,通过查询自身保存的过程密钥与会话号的对应关 系,得到会话号对应的过程密钥,使用过程密钥对已加密的通讯数据进行解密, 得到明文通讯数据。
主机401的约定模块401B还用于向智能密钥设备402发送结束会话指令, 该结束会话指令经过过程密钥加密;
相应地,智能密钥设备402还用于接收结束会话指令,使用过程密钥对结 束会话指令进行解密,并销毁过程密钥。
本发明实施例通过在智能密钥设备和主机中的应用软件之间建立单独会话 并使用相同的算法进行密钥的约定,解决了目前软件和智能密钥设备之间明文 传输或者使用静态密钥的问题,使通讯数据不再有被破解的危险,并且,由于 每次会话的过程密钥不同,即使攻击者模拟合法应用软件也只是获得其自身通 讯所使用的会话号对应的过程密钥,无法得到其他会话的密钥。
以上对本发明所提供的 一种智能密钥设备和应用软件之间进行密文通讯的方法与系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方 式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思
想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限 制,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均 应包含在本发明的保护范围之内。
权利要求
1、一种智能密钥设备与应用软件的通讯方法,其特征在于,所述方法包括智能密钥设备与应用软件建立连接;所述智能密钥设备与所述应用软件之间建立单独会话并且约定过程密钥,所述单独会话的会话号与所述过程密钥相对应;所述应用软件使用所述过程密钥对通讯数据进行加密,并向所述智能密钥设备发送指令,所述指令包括所述单独会话的会话号和已加密的通讯数据;所述智能密钥设备根据所述单独会话的会话号,使用与所述会话号相对应的过程密钥对所述已加密的通讯数据进行解密,得到明文通讯数据;所述智能密钥设备根据所述明文通讯数据执行相应操作,构造相应的响应数据;所述智能密钥设备使用所述过程密钥对所述响应数据进行加密,并将已加密的响应数据发送给所述应用软件;所述应用软件接收到所述已加密的响应数据,使用所述过程密钥对接收到的所述已加密的响应数据进行解密,得到所述响应数据。
2、 如权利要求1所述的智能密钥设备与应用软件的通讯方法,其特征在于, 所述智能密钥设备与所述应用软件之间建立单独会话并且约定过程密钥,具体 包括所述智能密钥设备接收所述应用软件发送的建立单独对话的指令,根据所 述指令选择会话号,并将所述会话号发送给所述应用软件;所述应用软件按照与所述智能密钥设备预先约定的方式生成与所述会话号 对应的过程密钥,并使用预先保存的公钥对所述过程密钥进行加密;所述应用软件将所述已加密的过程密钥和所述会话号发送给所述智能密钥 设备;所述智能密钥设备使用预先保存的私钥对所述已加密的过程密钥进行解 密,并保存所述过程密钥与所述会话号的对应关系。
3、 如权利要求1所述的智能密钥设备与应用软件的通讯方法,其特征在于,所述智能密钥设备与所述应用软件之间建立单独会话并且约定过程密钥,具体包括所述应用软件按照与所述智能密钥设备预先约定的方式生成过程密钥,并 使用预先保存的公钥对所述过程密钥进行加密;所述智能密钥设备接收所述应用软件发送的建立单独会话的指令和已加密 的过程密钥,根据所述建立单独会话的指令选4奪与所述过程密钥相对应的会话 号;所述智能密钥设备使用预先保存的私钥对所述已加密的过程密钥进行解密;所述智能密钥设备将所述会话号发送给所述应用软件。
4、 如权利要求1所述的智能密钥设备与应用软件的通讯方法,其特征在于, 所述智能密钥设备与所述应用软件之间建立单独会话并且约定过程密钥,具体 包括所述应用软件按照预先约定的方法计算第一约定参数,将所述第一约定参 数、获取过程密钥和建立单独会话的指令发送给所述智能密钥设备; 所述智能密钥i殳备按照所述预先约定的方法计算第二约定参数; 根据所述建立单独会话的指令选择会话号,并根据所述会话号选择过程密钥;根据接收到的所述第 一约定参数计算第 一密钥; 使用所述第 一密钥对所述过程密钥进行加密;将所述第二约定参数、已加密的过程密钥和所述会话号发送给所述应用软件;所述应用软件才艮据接收到的所述第二约定参数计算第二密钥;使用所述第二密钥对所述已加密的过程密钥进行解密,得到所述过程密钥。
5、 如权利要求2至4中任一权利要求所述的智能密钥设备与应用软件的通 讯方法,其特征在于,所述智能密钥设备根据所述单独会话的会话号,使用所 述过程密钥对所述已加密的通讯数据进行解密,得到明文通讯数据,具体包括所述智能密钥设备根据所述单独会话的会话号,通过查询自身保存的所述过程密钥与所述会话号的对应关系,得到所述会话号对应的所述过程密钥,使 用所述过程密钥对所述已加密的通讯数据进行解密,得到明文通讯数据。
6、 如权利要求1所述的智能密钥设备与应用软件的通讯方法,其特征在于, 所述方法还包括所述应用软件向所述智能密钥设备发送结束会话指令,所述结束会话指令 经过所述过程密钥加密;相应地,所述智能密钥设备接收到所述结束会话指令,使用所述过程密钥 对所述结束会话指令进行解密,并销毁所述过程密钥。
7、 一种智能密钥设备与应用软件的通讯系统,其特征在于,所述系统包括 主机和智能密钥设备;所述主机包括接口模块,用于所述主机与所述智能密钥设备建立连接;约定模块,用于所述主机中的应用软件与所述智能密钥设备之间建立单独会话并且约定过程密钥,所述单独会话的会话号与所述过程密钥相对应;加密模块,用于所述主机中的应用软件使用所述过程密钥对通讯数据进行加密;发送模块,用于所述主机中的应用软件向所述智能密钥设备发送指令,所 述指令包括所述单独会话的会话号和已加密的通讯数据;接收模块,用于接收所述智能密钥设备发送的已加密的响应数据;解密模块,用于所述主机中的应用软件使用所述过程密钥对所述已加密的 响应数据进行解密,得到所述响应数据;所述智能密钥设备包括接口模块,用于所述智能密钥设备与所述主机建立连接;约定模块,用于所述智能密钥设备与所述主机中的应用软件之间建立单独 会话并且约定过程密钥,所述单独会话的会话号与所述过程密钥相对应;解密模块,用于所述智能密钥设备根据所述单独会话的会话号,使用所述 过程密钥对所述已加密的通讯数据进行解密,得到明文通讯数据;操作模块,用于所述智能密钥设备根据所述明文通讯数据执行操作,得到响应数据;接收模块,用于所述智能密钥设备接收所述主机中的应用软件发送的指令, 所述指令包括所述单独会话的会话号和已加密的通讯数据;加密模块,用于所述智能密钥设备使用所述过程密钥对所述响应数据进行 加密;发送模块,用于将已加密的响应数据发送给所述应用软件。
8、如权利要求7所述的智能密钥设备与应用软件的通讯系统,其特征在 于,所述主^L中的约定模块具体包括第一接收单元,用于接收智能密钥设备发送的会话号;密钥生成单元,用于按照与所述智能密钥设备预先约定的方式生成过程密钥;第一加密单元,用于使用预先保存的公钥对所述过程密钥进行加密; 第一发送单元,用于将所述已加密的过程密钥和所述会话号发送给所述智 能密钥设备。
9、 如权利要求8所述的智能密钥设备与应用软件的通讯系统,其特征在于, 所述智能密钥设备中的约定模块具体包括第二接收单元,用于接收所述主机中的应用软件发送的建立单独对话的指令;第二选择单元,用于根据所述接收单元接收到的所述指令选择会话号; 用软件;所述第二接收单元还用于接收所述主机中的应用软件发送的已加密的过程 密钥和所述会话号;第二解密单元,用于使用预先保存的私钥对所述已加密的过程密钥进行解密;保存单元,用于保存所述过程密钥与所述会话号的对应关系。
10、 如权利要求7所述的智能密钥设备与应用软件的通讯系统,其特征在于,所述主机中的约定才莫块具体包括第三计算单元,用于按照预先约定的方法计算第一约定参数; 第三发送单元,用于将所述第一约定参数、获取过程密钥和建立单独会话的指令发送给所述智能密钥设备;第三接收单元,用于接收所述智能密钥设备发送的第二约定参数、已加密的过程密钥和所述会话号;所述第三计算单元还用于根据接收到的所述第二约定参数计算第二密钥; 第三解密单元,用于使用所述第二密钥对所述已加密的过程密钥进行解密,得到所述过程密钥。
11、 如权利要求IO所述的智能密钥设备与应用软件的通讯系统,其特征在 于,所述智能密钥设备中的约定模块具体包括第四接收单元,用于接收所述主机中的应用软件发送的所述第一约定参数、获取过程密钥和建立单独会话的指令;第四计算单元,用于按照所述预先约定的方法计算第二约定参数; 第四选择单元,用于根据所述建立单独会话的指令选择会话号,并根据所述会话号选择过程密钥;所述第四计算单元还用于根据接收到的所述第 一约定参数计算第 一密钥; 第四加密单元,使用所述第一密钥对所述过程密钥进行加密; 第四发送单元,用于将所述第二约定参数、已加密的过程密钥和所述会话号发送给所述主机中的应用软件。
12、 如权利要求7至11中任一权利要求所述的智能密钥设备与应用软件的 通讯系统,其特征在于,所述智能密钥设备中的解密模块具体用于根据所述单独会话的会话号,通过查询自身保存的所述过程密钥与所述会 话号的对应关系,得到所述会话号对应的所述过程密钥,使用所述过程密钥对 所述已加密的通讯数据进行解密,得到明文通讯数据。
13、 如权利要求7所述的智能密钥设备与应用软件的通讯系统,其特征在 于,所述主机的约定模块还用于向所述智能密钥设备发送结束会话指令,所述结束会话指令经过所述过程密钥加密;相应地,所述智能密钥设备还用于接收所述结束会话指令,使用所述过程 密钥对所迷结束会话指令进行解密,并销毁所述过程密钥。
全文摘要
本发明公开了一种智能密钥设备与应用软件的通讯方法和系统,属于数据通讯领域。所述方法包括智能密钥设备与应用软件建立连接;智能密钥设备与应用软件建立单独会话并且约定过程密钥;应用软件使用所述过程密钥对通讯数据进行加密,并将单独会话的会话号和已加密的通讯数据发送给智能密钥设备;智能密钥设备根据所述单独会话的会话号,使用与所述会话号相对应的过程密钥对所述已加密的通讯数据进行解密,得到明文通讯数据。所述系统包括主机和智能密钥设备。通过在智能密钥设备和应用软件之间建立单独会话并使用双方共同约定的密钥对通讯数据进行加密后再进行传输,解决了目前软件和智能密钥设备之间明文传输或者使用静态密钥进行传输的问题。
文档编号H04L9/32GK101540675SQ200810247458
公开日2009年9月23日 申请日期2008年12月31日 优先权日2008年12月31日
发明者于华章, 舟 陆 申请人:北京飞天诚信科技有限公司