一种获取对称密钥的方法及设备与流程

文档序号:16511554发布日期:2019-01-05 09:22阅读:204来源:国知局
一种获取对称密钥的方法及设备与流程

本发明涉及通信安全领域,尤其涉及一种获取对称密钥的方法及设备。



背景技术:

在两个支持对称密钥体系的设备之间进行交易信息传输时,需要用对称密钥等敏感数据对交易信息等信息进行加密及校验数据完整性,但首先需要将对称密钥等敏感数据存储在设备内部以便对交易信息进行加密和校验。现有技术中,普遍的方法是使用专用设备将对称密钥等敏感数据以明文或者简单加密的方式注入到设备;如果用户想要更新或者升级设备的对称密钥,就必须将设备进行返厂(让生产商对对称密钥更新或者升级),过程十分繁琐;此外用户是可以用非专用设备更新或者升级设备的对称密钥,但是此时对称密钥等敏感数据极容易被窃取,安全性低。



技术实现要素:

为解决现有技术中存在的问题,本发明提出了一种获取对称密钥的方法及设备。

实现本发明采用的技术方案如下:

本实施例提供一种获取对称密钥的方法,包括以下步骤:

步骤s1:设备接收上位机发送的密钥传输指令,解析所述密钥传输指令得到密钥块数据;

步骤s2:所述设备获取预设的保护密钥;根据所述保护密钥、第一预设数据和第二预设数据得到第一密钥;

步骤s3:所述设备根据所述保护密钥、所述第一密钥、第三预设数据、第四预设数据和第五预设数据得到加密密钥;根据所述保护密钥、所述第一密钥、第六预设数据、第七预设数据和第八预设数据得到mac密钥;

步骤s4:所述设备根据所述加密密钥、密钥块数据域和密钥块mac值得到第一明文数据;根据所述mac密钥、所述第一明文数据、密钥块头域和第二密钥得到第二mac值;

步骤s5:当所述第二mac值和所述密钥块mac值相同时,从所述第一明文数据中获取对称密钥并存储,向上位机返回密钥传输成功响应;

所述步骤s1与所述步骤s4之间,还包括:

所述设备解析所述密钥块数据得到密钥块头域、密钥块数据域和密钥块mac值;

所述根据所述mac密钥、所述第一明文数据、密钥块头域和第二密钥得到第二mac值之前,所述设备获取预设的保护密钥之后,还包括:

所述设备根据所述保护密钥、第九预设数据和第十预设数据进行计算得到第二密钥;

本实施例又提供一种获取对称密钥的设备,包括接收模块、第一解析模块、第二解析模块、第一获取模块、第一得到模块、第二得到模块、第三得到模块、第四得到模块、第五得到模块、第六得到模块、第二获取模块、存储模块和发送模块;

所述接收模块,用于接收上位机发送的密钥传输指令;

所述第一解析模块,用于解析所述接收模块接收的所述密钥传输指令得到密钥块数据;

所述第二解析模块,用于解析所述第一解析模块解析得到的所述密钥块数据得到密钥块头域、密钥块数据域和密钥块mac值;

所述第一获取模块,用于获取预设的保护密钥;

所述第一得到模块,用于根据所述第一获取模块获取的所述保护密钥、第一预设数据和第二预设数据得到第一密钥;

所述第二得到模块,用于根据所述第一获取模块获取的所述保护密钥、第九预设数据和第十预设数据进行计算得到第二密钥;

所述第三得到模块,用于根据所述第一获取模块获取的所述保护密钥、所述第一得到模块得到的所述第一密钥、第三预设数据、第四预设数据和第五预设数据得到加密密钥;

所述第四得到模块,用于根据所述第一获取模块获取的所述保护密钥、所述第一得到模块得到的所述第一密钥、第六预设数据、第七预设数据和第八预设数据得到mac密钥;

所述第五得到模块,用于根据所述第三得到模块得到的所述加密密钥、所述第二解析模块解析得到的密钥块数据域和所述第二解析模块解析得到的密钥块mac值得到第一明文数据;

所述第六得到模块,用于根据所述第四得到模块得到的所述mac密钥、所述第五得到模块得到的所述第一明文数据、所述第二解析模块解析得到的密钥块头域和所述第二得到模块得到的第二密钥得到第二mac值;

所述第二获取模块,用于当所述第六得到模块得到的所述第二mac值和所述第二解析模块解析得到的所述密钥块mac值相同时,从所述第五得到模块得到的所述第一明文数据中获取对称密钥;

所述存储模块,用于存储所述第二获取模块获取的对称密钥;

所述发送模块,用于向上位机返回密钥传输成功响应。

本发明的有益效果在于:用户可以不将设备返厂而直接安全地更新或者升级对称秘密,当设备接收到上位机发送的密钥传输指令时,设备解析密钥传输指令得到密钥块数据,对密钥块数据进行解密得到对称密钥等敏感数据,可以方便快捷地更新或者升级对称密钥等敏感数据,增强了传输对称密钥等敏感数据过程的安全性。

附图说明

图1是实施例二提供的一种获取对称密钥的方法流程图;

图2是实施例三提供的一种获取对称密钥的设备方框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

本实施例一提供了一种获取对称密钥的方法,包括以下步骤:

步骤101:设备接收上位机发送的密钥传输指令,解析密钥传输指令得到密钥块数据;

步骤102:设备获取预设的保护密钥;根据保护密钥、第一预设数据和第二预设数据得到第一密钥;

可选地,步骤102中,根据保护密钥、第一预设数据和第二预设数据得到第一密钥,具体为:

设备根据保护密钥对第一预设数据进行计算得到第一数据,根据第一数据和第二预设数据得到第一密钥;

进一步地,设备根据保护密钥对第一预设数据进行计算得到第一数据,根据第一数据和第二预设数据得到第一密钥,具体为:

设备根据保护密钥使用第一算法对第一预设数据进行计算得到第一数据,判断第一数据是否需要更新,是则根据第二预设数据更新第一数据,记更新后的第一数据为第一密钥;否则记第一数据为第一密钥。

步骤103:设备根据保护密钥、第一密钥、第三预设数据、第四预设数据和第五预设数据得到加密密钥;根据保护密钥、第一密钥、第六预设数据、第七预设数据和第八预设数据得到mac密钥;

可选地,步骤103中,根据保护密钥、第一密钥、第三预设数据、第四预设数据和第五预设数据得到加密密钥,具体为:

设备使用保护密钥和第一密钥分别对第三预设数据、第四预设数据和第五预设数据进行计算分别得到第一部分加密数据、第二部分加密数据和第三部分加密数据,并根据第一部分加密数据、第二部分加密数据和第三部分加密数据组成加密密钥;

进一步地,设备使用保护密钥和第一密钥分别对第三预设数据、第四预设数据和第五预设数据进行计算分别得到第一部分加密数据、第二部分加密数据和第三部分加密数据,并根据第一部分加密数据、第二部分加密数据和第三部分加密数据组成加密密钥,具体为:

设备根据第一密钥和第三预设数据得到第一中间数据,根据保护密钥和第一中间数据得到第一部分加密数据;根据第一密钥和第四预设数据得到第二中间数据,根据保护密钥和第二中间数据得到第二部分加密数据;根据第一密钥和第五预设数据得到第三中间数据,根据保护密钥和第三中间数据得到第三部分加密数据;根据第一部分加密数据、第二部分加密数据和第三部分加密数据组成加密密钥。

可选地,步骤103中,根据保护密钥、第一密钥、第六预设数据、第七预设数据和第八预设数据得到mac密钥,具体为:

设备使用保护密钥和第一密钥分别对第六预设数据、第七预设数据和第八预设数据进行计算分别得到第一部分mac数据、第二部分mac数据和第三部分mac数据,并根据第一部分mac数据、第二部分mac数据和第三部分mac数据组成mac密钥;

进一步地,设备使用保护密钥和第一密钥分别对第六预设数据、第七预设数据和第八预设数据进行计算分别得到第一部分mac数据、第二部分mac数据和第三部分mac数据,并根据第一部分mac数据、第二部分mac数据和第三部分mac数据组成mac密钥,具体为:

设备根据第一密钥和第六预设数据得到第四中间数据,根据保护密钥和第四中间数据得到第一部分mac数据;根据第一密钥和第七预设数据得到第五中间数据,根据保护密钥和第五中间数据得到第二部分mac数据;根据第一密钥和第八预设数据得到第六中间数据,根据保护密钥和第六中间数据得到第三部分mac数据;根据第一部分mac数据、第二部分mac数据和第三部分mac数据组成mac密钥。

步骤104:设备根据加密密钥、密钥块数据域和密钥块mac值得到第一明文数据;根据mac密钥、第一明文数据、密钥块头域和第二密钥得到第二mac值;

可选地,步骤104中,设备根据加密密钥、密钥块数据域和密钥块mac值得到第一明文数据,具体为:

设备将密钥块数据域等分为四部分;使用加密密钥分别对密钥块数据域的四部分进行计算,将计算得到的第一计算结果、第二计算结果、第三计算结果和第四计算结果分别与密钥块mac值进行计算,根据计算得到的第二明文数据至第五明文数据得到第一明文数据;

进一步地,设备将密钥块数据域等分为四部分;使用加密密钥分别对密钥块数据域的四部分进行计算,将计算得到的第一计算结果、第二计算结果、第三计算结果和第四计算结果分别与密钥块mac值进行计算,根据计算得到的第二明文数据至第五明文数据得到第一明文数据,具体为:

设备将密钥块数据域等分为第一密钥数据、第二密钥数据、第三密钥数据和第四密钥数据;根据加密密钥使用第一算法对第一密钥数据进行计算得到第一计算结果,并使用第二算法将第一计算结果和密钥块mac值进行计算得到第二明文数据;根据加密密钥使用第一算法对第二密钥数据进行计算得到第二计算结果,并使用第二算法对第二计算结果和密钥块mac值进行计算得到第三明文数据;根据加密密钥使用第一算法对第三密钥数据进行计算得到第三计算结果,并使用第二算法对第三计算结果和密钥块mac值进行计算得到第四明文数据;根据加密密钥使用第一算法对第四密钥数据进行计算得到第四计算结果,并使用第二算法对第四计算结果和密钥块mac值进行计算得到第五明文数据;使用第三算法对第二明文数据至第五明文数据进行计算得到第一明文数据。

可选地,步骤104中,根据mac密钥、第一明文数据、密钥块头域和第二密钥得到第二mac值,具体为:

设备对第一明文数据和密钥块头域进行计算得到第一重组数据;将第一重组数据等分为第二重组数据至第七重组数据六部分;使用mac密钥对第二重组数据进行计算得到第一加密数据;使用mac密钥对第三重组数据和第一加密数据进行计算得到第二加密数据;使用mac密钥对第四重组数据和第二加密数据进行计算得到第三加密数据;使用mac密钥对第五重组数据和第三加密数据进行计算得到第四加密数据;使用mac密钥对第六重组数据和第四加密数据进行计算得到第五加密数据;使用mac密钥对第七重组数据、第五加密数据和第二密钥进行计算得到第二mac值。

步骤105:当第二mac值和密钥块mac值相同时,从第一明文数据中获取对称密钥并存储,向上位机返回密钥传输成功响应;

可选地,步骤105中,还包括:设备判断第二mac值和密钥块mac值是否相同,是则从第一明文数据中获取对称密钥并存储,向上位机返回密钥传输成功响应,否则向上位机返回错误码。

步骤101与步骤104之间,还包括:

设备解析密钥块数据得到密钥块头域、密钥块数据域和密钥块mac值;

根据mac密钥、第一明文数据、密钥块头域和第二密钥得到第二mac值之前,设备获取预设的保护密钥之后,还包括:

设备根据保护密钥、第九预设数据和第十预设数据进行计算得到第二密钥;

可选地,设备根据保护密钥、第九预设数据和第十预设数据进行计算得到第二密钥,具体为:

设备根据保护密钥对第九预设数据进行计算得到第二数据,根据第二数据和第十预设数据得到第二密钥;

进一步地,设备根据保护密钥对第九预设数据进行计算得到第二数据,根据第二数据和第十预设数据得到第二密钥,具体为:

设备根据保护密钥使用第一算法对第九预设数据进行计算得到第二数据,判断第二数据是否需要更新,是则根据第十预设数据更新第二数据,记更新后的第二数据为第二密钥;否则记第二数据为第二密钥。

本实施例提供了一种获取对称密钥的方法,用户可以不将设备返厂而直接安全地更新或者升级对称秘密,当设备接收到上位机发送的密钥传输指令时,设备解析密钥传输指令得到密钥块数据,对密钥块数据进行解密得到对称密钥等敏感数据,可以方便快捷地更新或者升级对称密钥等敏感数据,增强了传输对称密钥等敏感数据过程的安全性。

实施例二

本实施例二提供了一种获取对称密钥的方法,本方法可以不使用专用设备而直接在公共网络环境下进行;方法如图2所示,包括以下步骤:

步骤201:设备接收上位机发送的密钥传输指令,解析密钥传输指令得到密钥块数据;

例如,密钥块数据为423030433050305445303045303030303643383542463234373833333939384432303946433743413739314531464141353433394337353030393739464131324639433639373345393736393543463230413731374232323131373738384437;

步骤202:设备根据预设长度判断接收到的密钥块数据的总长度是否合法,是则执行步骤203,否则向上位机返回错误码;

具体地,设备判断接收到的密钥块数据的总长度是否等于预设长度,是则密钥块数据的总长度合法,执行步骤203,否则返回错误码;

例如,预设长度为96字节;

步骤203:设备解析密钥块数据得到密钥块头域、密钥块数据域和密钥块mac值;

具体地,设备解析密钥块数据,获取前16字节的数据作为密钥块头域,获取中间64字节的数据作为密钥块数据域,获取最后16字节的数据作为密钥块mac值;

例如,密钥块头域为42303043305030544530304530303030;

密钥块数据域为36433835424632343738333339393844323039464337434137393145314641413534333943373530303937394641313246394336393733453937363935434632;

密钥块mac值为30413731374232323131373738384437;

进一步的,本步骤还包括将密钥块数据域和密钥块mac值转换为hex格式,转换后的密钥块数据域长度为32字节,密钥块mac值的长度为8字节;

例如,转换为hex格式之后的密钥块数据域为0x6c85bf247833998d209fc7ca791e1faa5439c7500979fa12f9c6973e97695cf2;

密钥块mac值为0x0a717b22117788d7;

步骤204:设备判断密钥块头域的各个组成字段是否均合法,是则执行步骤205,否则向上位机返回错误码;

具体地,密钥块头域中包含有用于标识传输的对称密钥的用途、算法、版本等信息的字段;例如,密钥块长度字段、密钥用途字段、密钥算法字段、密钥使用方法字段、密钥版本号字段、密钥输出能力字段、密钥块可选块数量字段和密钥块预留字段;

优选地,密钥块头域的组成字段包括密钥块版本id(第1字节)、密钥块长度字段(第2-5字节)、密钥用途字段(第6、7字节)、密钥算法字段(第8字节)、密钥使用方法字段(第9字节)、密钥版本号字段(第10、11字节)、密钥输出能力字段(第12字节)、密钥块可选块数量字段(第13、14字节)和密钥块预留字段(第15、16字节);

具体地,设备判断密钥块头域的各个组成字段是否均合法包括:

1)设备判断密钥块版本id是否为0x42,是则密钥块版本id合法,否则不合法;

2)设备判断密钥块长度字段是否为0x30304330,是则密钥块长度字段合法,否则不合法;

3)设备判断密钥用途字段是否为0x4430或0x4b30或0x4d31或0x5030,是则密钥用途字段合法,否则不合法;(其中,密钥用途说明如下:0x4430表示用于数据加密;0x4b30表示用于对传递的密钥进行加密;0x4d31表示使用iso9797-1mac算法加密;0x5030表示用于pin码加密);

4)设备判断密钥算法字段是否为0x41或0x54,是则密钥算法字段合法,否则不合法;(其中,0x41表示支持aes;0x54表示支持3des);

5)设备判断密钥使用方法字段是否为0x42或0x43或0x45,是则密钥使用方法字段合法,否则不合法;(其中,0x42表示用于加密或解密,0x43表示用于计算mac,0x45表示只用于加密);

6)设备判断密钥版本号字段是否为0x3030,是则密钥版本号字段合法,否则不合法;

7)设备判断密钥输出能力字段是否为0x45,是则密钥输出能力字段合法,否则不合法;

8)设备判断密钥块可选块数量字段是否为0x3030,是则密钥块可选块数量字段合法,否则不合法;

9)设备判断密钥块预留字段是否为二级密钥的索引值,是则密钥块预留字段合法,否则不合法;(说明:本实施例中,此索引值合法范围在0-f之间);

可选地,步骤202至步骤204可以位于步骤209之前的任意位置;

步骤205:设备获取预设的保护密钥,根据保护密钥对第一预设数据进行计算得到第一数据,根据第一数据和第二预设数据得到第一密钥;

具体地,设备获取预设的保护密钥,根据保护密钥使用第一算法对第一预设数据进行计算得到第一数据,判断第一数据是否需要更新,是则根据第二预设数据更新第一数据,记更新后的第一数据为第一密钥,执行步骤206;否则记第一数据为第一密钥,执行步骤206;

更具体地,设备获取预设的保护密钥,根据保护密钥使用第一算法对第一预设数据进行计算得到第一数据,判断第一数据的第一预设位的数值是否为第一预设值,是则记第一数据为第一密钥,执行步骤206;否则将第一数据向左偏移第二预设值个比特位,用第三预设值填充偏移后的第一数据中空出的比特位,使用第二算法对填充后的第一数据和第二预设数据进行计算得到第一密钥,执行步骤206;

例如,金融设备获取预设的保护密钥;根据保护密钥对第一预设数据进行3dse运算得到第一数据;判断第一数据的最高字节是否为0x00,是则记第一数据为第一密钥,执行步骤206;否则将第一数据向左偏移1个比特位,用0填充偏移后的第一数据最后的一个比特位,将填充后的第一数据和第二预设数据进行异或得到第一密钥,执行步骤206;第一数据的最高字节一般为从左向右顺序的第一个字节;

例如,保护密钥为0xa8bf12c8cd1b3194c91c28a5e38d712c;

第一预设数据为0x0000000000000000;

第二预设数据为0x0000000000000001b;

第一数据为0x3131114fc8db13e6;

第一密钥为0x6262229f91b627d7;

步骤206:设备使用保护密钥和第一密钥分别对第三预设数据、第四预设数据和第五预设数据进行计算分别得到第一部分加密数据、第二部分加密数据和第三部分加密数据,并根据第一部分加密数据、第二部分加密数据和第三部分加密数据组成加密密钥;

具体地,设备根据第一密钥和第三预设数据得到第一中间数据,根据保护密钥和第一中间数据得到第一部分加密数据;根据第一密钥和第四预设数据得到第二中间数据,根据保护密钥和第二中间数据得到第二部分加密数据;根据第一密钥和第五预设数据得到第三中间数据,根据保护密钥和第三中间数据得到第三部分加密数据;根据第一部分加密数据、第二部分加密数据和第三部分加密数据组成加密密钥;

更具体地,设备根据第一密钥使用第二算法对第三预设数据进行计算得到第一中间数据,根据保护密钥使用第一算法对第一中间数据进行计算得到第一部分加密数据;根据第一密钥使用第二算法对第四预设数据进行计算得到第二中间数据,根据保护密钥使用第一算法对第二中间数据进行计算得到第二部分加密数据;根据第一密钥使用第二算法对第五预设数据进行计算得到第三中间数据,根据保护密钥使用第一算法对第三中间数据进行计算得到第三部分加密数据;使用第三算法对第一部分加密数据、第二部分加密数据和第三部分加密数据进行计算得到加密密钥;

例如,设备根据第一密钥对第三预设数据进行异或得到第一中间数据,根据保护密钥对第一中间数据进行3des运算得到第一部分加密数据;根据第一密钥对第四预设数据进行异或得到第二中间数据,根据保护密钥对第二中间数据进行3des运算得到第二部分加密数据;根据第一密钥对第五预设数据进行异或得到第三中间数据,根据保护密钥对第三中间数据进行3des运算得到第三部分加密数据;将第一部分加密数据、第二部分加密数据和第三部分加密数据进行顺序拼接得到24字节的加密密钥;

例如,第三预设数据为0x0100000000000080;

第四预设数据为0x0200000000000080;

第五预设数据为0x0300000000000080;

第一中间数据为0x6362229f91b62757;

第二中间数据为0x6062229f91b62757;

第三中间数据为0x6162229f91b62757;

第一部分加密数据为0xe4f5a9555f78dfa1;

第二部分加密数据为0x83cf8cea8079d995;

第三部分加密数据为0x3a2946a841fcee7e;

加密密钥为0xe4f5a9555f78dfa183cf8cea8079d9953a2946a841fcee7e;

步骤207:设备使用保护密钥和第一密钥分别对第六预设数据、第七预设数据和第八预设数据进行计算分别得到第一部分mac数据、第二部分mac数据和第三部分mac数据,并根据第一部分mac数据、第二部分mac数据和第三部分mac数据组成mac密钥;

具体地,设备根据第一密钥和第六预设数据得到第四中间数据,根据保护密钥和第四中间数据得到第一部分mac数据;根据第一密钥和第七预设数据得到第五中间数据,根据保护密钥和第五中间数据得到第二部分mac数据;根据第一密钥和第八预设数据得到第六中间数据,根据保护密钥和第六中间数据得到第三部分mac数据;根据第一部分mac数据、第二部分mac数据和第三部分mac数据组成mac密钥;

更具体地,设备根据第一密钥使用第二算法对第六预设数据进行计算得到第四中间数据,根据保护密钥使用第一算法对第四中间数据进行计算得到第一部分mac数据;根据第一密钥使用第二算法对第七预设数据进行计算得到第五中间数据,根据保护密钥使用第一算法对第五中间数据进行计算得到第二部分mac数据;根据第一密钥使用第二算法对第八预设数据进行计算得到第六中间数据,根据保护密钥使用第一算法对第六中间数据进行计算得到第三部分mac数据;使用第三算法对第一部分mac数据、第二部分mac数据和第三部分mac数据进行计算得到mac密钥;

例如,设备根据第一密钥对第六预设数据进行异或得到第四中间数据,根据保护密钥对第四中间数据进行3des运算得到第一部分mac数据;根据第一密钥对第七预设数据进行异或得到第五中间数据,根据保护密钥对第五中间数据进行3des运算得到第二部分mac数据;根据第一密钥对第八预设数据进行异或得到第六中间数据,根据保护密钥对第六中间数据进行3des运算得到第三部分mac数据;将第一部分mac数据、第二部分mac数据和第三部分mac数据进行顺序拼接得到24字节的mac密钥;

例如,第六预设数据为0x0100010000000080;

第七预设数据为0x0200010000000080;

第八预设数据为0x0300010000000080;

第四中间数据为0x6362239f91b62757;

第五中间数据为0x6062239f91b62757;

第六中间数据为0x6162239f91b62757;

第一部分mac数据为0xc1ee1f1b6e15bb4c;

第二部分mac数据为0x095233380ccb4766;

第三部分mac数据为0x1096be7de22d4185;

mac密钥为0xc1ee1f1b6e15bb4c095233380ccb47661096be7de22d4185;

步骤208:设备根据保护密钥对第九预设数据进行计算得到第二数据,根据第二数据和第十预设数据得到第二密钥;

具体地,设备根据保护密钥使用第一算法对第九预设数据进行计算得到第二数据,判断第二数据是否需要更新,是则根据第十预设数据更新第二数据,记更新后的第二数据为第二密钥,执行步骤209;否则记第二数据为第二密钥,执行步骤209;

更具体地,设备根据保护密钥使用第一算法对第九预设数据进行计算得到第二数据,判断第二数据的第二预设位的数值是否为第四预设值,是则记第二数据为第二密钥,执行步骤209;否则第二数据向左偏移第五预设值个比特位,用第六预设值填充偏移后的第二数据中空出的比特位,使用第二算法对填充后的第二数据和第十预设数据进行计算得到第二密钥,执行步骤209;

例如,金融设备获取预设的保护密钥;根据保护密钥对第九预设数据进行3dse运算得到第二数据;判断第二数据的最高字节是否为0x00,是则记第二数据为第二密钥,执行步骤209;否则将第二数据向左偏移1比特位,用0填充偏移后的第二数据最后的一个比特位,将填充后的第二数据和第十预设数据进行异或得到第二密钥,执行步骤209;第二数据的最高字节一般为从左向右顺序的第一个字节;

例如,保护密钥为0xc1ee1f1b6e15bb4c095233380ccb47661096be7de22d4185;

第九预设数据为0x0000000000000000;

第十预设数据为0x0000000000000001b;

第二数据为0x17eebb7fb49e8aaf;

第二密钥为0x2fdd76ff693d1545;

可选地,步骤208可以位于步骤205之后和步骤211之前的任何位置;

步骤209:设备根据加密密钥、密钥块数据域和密钥块mac值得到第一明文数据;

具体地,设备将密钥块数据域等分为四部分;使用加密密钥分别对密钥块数据域的四部分进行计算,将计算得到的第一计算结果、第二计算结果、第三计算结果和第四计算结果分别与密钥块mac值进行计算,根据计算得到的第二明文数据至第五明文数据得到第一明文数据;

更具体地,设备将密钥块数据域等分为第一密钥数据、第二密钥数据、第三密钥数据和第四密钥数据;根据加密密钥使用第一算法对第一密钥数据进行计算得到第一计算结果,并使用第二算法将第一计算结果和密钥块mac值进行计算得到第二明文数据;根据加密密钥使用第一算法对第二密钥数据进行计算得到第二计算结果,并使用第二算法对第二计算结果和密钥块mac值进行计算得到第三明文数据;根据加密密钥使用第一算法对第三密钥数据进行计算得到第三计算结果,并使用第二算法对第三计算结果和密钥块mac值进行计算得到第四明文数据;根据加密密钥使用第一算法对第四密钥数据进行计算得到第四计算结果,并使用第二算法对第四计算结果和密钥块mac值进行计算得到第五明文数据;使用第三算法对第二明文数据至第五明文数据进行计算得到第一明文数据;

例如,设备分密钥块数据域的前8个字节为第一密钥数据、第9-16个字节为第二密钥数据、第17-24个字节为第三密钥数据和第25-32个字节为第四密钥数据;根据加密密钥对第一密钥数据进行3des运算得到第一计算结果,将第一计算结果和密钥块mac值进行异或得到第二明文数据;根据加密密钥对第二密钥数据进行3des运算得到第二计算结果,将第二计算结果和密钥块mac值进行异或得到第二明文数据;根据加密密钥对第三密钥数据进行3des运算得到第三计算结果,将第三计算结果和密钥块mac值进行异或得到第四明文数据;根据加密密钥对第四密钥数据进行3des运算得到第四计算结果,将第四计算结果和密钥块mac值进行异或得到第五明文数据;将第二明文数据至第五明文数据进行顺序拼接得到第一明文数据;

例如,密钥块数据域为0x6c85bf247833998d209fc7ca791e1faa5439c7500979fa12f9c6973e97695cf2;

第一密钥数据为0x6c85bf247833998d;

第二密钥数据为0x209fc7ca791e1faa;

第三密钥数据为0x5439c7500979fa12;

第四密钥数据为0xf9c6973e97695cf2;

第二明文数据为0x00c0111213141516

第三明文数据为0x1718090a0b0c0d0e;

第四明文数据为0x1011202122232425;

第五明文数据为0x26274b0d3a093802;

第一明文数据为0x00c01112131415161718090a0b0c0d0e101120212223242526274b0d3a093802;

本实施例中,密钥块数据域的数据格式可具体为:对称密钥长度值(2个字节)+解密数据(30个字节),其中,解密数据的组成格式为:对称密钥数据(24个字节)+填充数据(6个字节);

步骤210:设备对第一明文数据和密钥块头域进行计算得到第一重组数据;

具体地,金融设备根据第三算法对密钥块头域和第一明文数据进行计算得到第一重组数据;

更具体地,金融设备将16个字节的密钥块头域和32个字节的第一明文数据进行顺序拼接得到48个字节的第一重组数据;

例如,第一重组数据为0x4230304330503054453030453030303000c01112131415161718090a0b0c0d0e101120212223242526274b0d3a093802

步骤211:设备使用mac密钥对第一重组数据和第二密钥进行计算得到第二mac值;

具体地,设备将第一重组数据等分为第二重组数据至第七重组数据六部分;使用mac密钥对第二重组数据进行计算得到第一加密数据;使用mac密钥对第三重组数据和第一加密数据进行计算得到第二加密数据;使用mac密钥对第四重组数据和第二加密数据进行计算得到第三加密数据;使用mac密钥对第五重组数据和第三加密数据进行计算得到第四加密数据;使用mac密钥对第六重组数据和第四加密数据进行计算得到第五加密数据;使用mac密钥对第七重组数据、第五加密数据和第二密钥进行计算得到第二mac值;

更具体地,设备将第一重组数据等分为第二重组数据至第七重组数据六部分;使用mac密钥对第二重组数据进行计算得到第一加密数据;将第一加密数据和第三重组数据进行计算,使用mac密钥对计算结果进行计算得到第二加密数据;将第二加密数据和第四重组数据进行计算,使用mac密钥对计算结果进行计算得到第三加密数据;将第三加密数据和第五重组数据进行计算,使用mac密钥对计算结果进行计算得到第四加密数据;将第四加密数据和第六重组数据进行计算,使用mac密钥对计算结果进行计算得到第五加密数据;将第五加密数据、第二密钥和第七重组数据进行计算,使用mac密钥对计算结果进行计算得到第二mac值;

更进一步地,设备将第一重组数据等分为第二至第七重组数据六部分;使用mac密钥根据第一算法对第二重组数据进行计算得到第一加密数据;使用第二算法对第一加密数据和第三重组数据进行计算,使用mac密钥根据第一算法对计算结果进行计算得到第二加密数据;使用第二算法对第二加密数据和第四重组数据进行计算,使用mac密钥根据第一算法对计算结果进行计算得到第三加密数据;使用第二算法对第三加密数据和第五重组数据进行计算,使用mac密钥根据第一算法对计算结果进行计算得到第四加密数据;使用第二算法对第四加密数据和第六重组数据进行计算,使用mac密钥根据第一算法对计算结果进行计算得到第五加密数据;使用第二算法对第七重组数据和第二密钥进行计算,使用第二算法对计算结果和第五加密数据进行计算,使用mac密钥根据第一算法对计算结果进行计算得到第二mac值;

例如,设备分第一重组数据的前8个字节为第二重组数据,第9-16个字节为第三重组数据,第17-24个字节为第四重组数据,第25-32个字节为第五重组数据,第33-40个字节为第六重组数据,第41-48个字节为第七重组数据;使用mac密钥对第二重组数据进行3des运算得到第一加密数据;将第一加密数据和第三重组数据进行异或,使用mac密钥对异或结果进行3des运算得到第二加密数据;将第二加密数据和第四重组数据进行异或,使用mac密钥对异或结果进行3des运算得到第三加密数据;将第三加密数据和第五重组数据进行异或,使用mac密钥对异或结果进行3des运算得到第四加密数据;将第四加密数据和第六重组数据进行异或,使用mac密钥对异或结果进行3des运算得到第五加密数据;将第七重组数据和第二密钥进行异运算,根据异或结果和第五加密数据进行第二次异运算,使用mac密钥对第二次的异或结果进行3des运算得到第二mac值;

例如,第二重组数据为0x4230304330503054;

第三重组数据为0x4530304530303030;

第四重组数据为0x00c0111213141516;

第五重组数据为0x1718090a0b0c0d0e;

第六重组数据为0x1011202122232425;

第七重组数据为0x26274b0d3a093802;

第一加密数据为0x77242933621cc091;

第二加密数据为0xb7b56cf039fb1145;

第三加密数据为0xd609503aa7631e0a;

第四加密数据为0xa1eb8c2cafdd6e63;

第五加密数据为0xb0a7739de1ff43e3;

第二mac值为0x0a717b22117788d7;

步骤212:设备判断第二mac值和密钥块mac值是否相同,是则向上位机返回密钥传输成功响应,执行步骤213,否则向上位机返回错误码;

步骤213:设备根据对称密钥长度值从第一明文数据中获取对称密钥并存储;

具体地,设备根据24字节的对称密钥长度值从第一明文数据中获取第3至26字节的数据作为对称密钥;

可选地,步骤213之后还包括:设备验证存储的对称密钥,当验证成功时,对称密钥获取成功,否则对称密钥获取失败;

具体地,设备获取存储的对称密钥,判断存储的对称密钥是否与从第一明文数据中获取的对称密钥相同,是则对称密钥获取成功,否则对称密钥获取失败;

例如,从第一明文数据中获取的对称密钥为0x1112131415161718090a0b0c0d0e10112021222324252627;

本实施例提供了一种获取对称密钥的方法,用户可以不将设备返厂而直接安全地更新或者升级对称秘密,当设备接收到上位机发送的密钥传输指令时,设备解析密钥传输指令得到密钥块数据,对密钥块数据进行解密得到对称密钥等敏感数据,可以方便快捷地更新或者升级对称密钥等敏感数据,增强了传输对称密钥等敏感数据过程的安全性。

实施例三

本实施例三提供了一种获取对称密钥的设备,包括接收模块301、第一解析模块302、第二解析模块303、第一获取模块304、第一得到模块305、第二得到模块306、第三得到模块307、第四得到模块308、第五得到模块309、第六得到模块310、第二获取模块311、存储模块312和发送模块313;

接收模块301,用于接收上位机发送的密钥传输指令;

第一解析模块302,用于解析接收模块301接收的密钥传输指令得到密钥块数据;

第二解析模块303,用于解析第一解析模块302解析得到的密钥块数据得到密钥块头域、密钥块数据域和密钥块mac值;

第一获取模块304,用于获取预设的保护密钥;

第一得到模块305,用于根据第一获取模块304获取的保护密钥、第一预设数据和第二预设数据得到第一密钥;

可选地,第一得到模块305包括第一计算子模块和第一得到子模块;

相应地,第一计算子模块,用于根据第一获取模块304获取的保护密钥对第一预设数据进行计算得到第一数据;

相应地,第一得到子模块,用于根据第一计算子模块计算得到的第一数据和第二预设数据得到第一密钥;

进一步地,第一得到子模块包括第一判断单元、第一更新单元、第一记为单元和第二记为单元;

相应地,第一计算子模块,具体用于根据第一获取模块304获取的保护密钥使用第一算法对第一预设数据进行计算得到第一数据;

相应地,第一判断单元,用于判断第一计算子模块计算得到的第一数据是否需要更新;

相应地,第一更新单元,用于当第一判断单元判断为是时,根据第二预设数据更新第一计算子模块计算得到的第一数据;

相应地,第一记为单元,用于记第一更新单元更新后的第一数据为第一密钥;

相应地,第二记为单元,用于当第一判断单元判断为否时,记第一计算子模块计算得到的第一数据为第一密钥。

第二得到模块306,用于根据第一获取模块304获取的保护密钥、第九预设数据和第十预设数据进行计算得到第二密钥;

可选地,第二得到模块306包括第十二计算子模块和第二得到子模块;

相应地,第十二计算子模块,用于根据第一获取模块304获取的保护密钥对第九预设数据进行计算得到第二数据;

相应地,第二得到子模块,用于根据第十二计算子模块计算得到的第二数据和第十预设数据得到第二密钥;

进一步地,第二得到子模块包括第二判断单元、第二更新单元、第三记为单元和第四记为单元;

相应地,第十二计算子模块,具体用于根据第一获取模块304获取的保护密钥使用第一算法对第九预设数据进行计算得到第二数据;

相应地,第二判断单元,用于判断第十二计算子模块计算得到的第二数据是否需要更新;

相应地,第二更新单元,用于当第二判断单元判断为是时,根据第十预设数据更新第十二计算子模块计算得到的第二数据;

相应地,第三记为单元,用于记第二更新单元更新后的第二数据为第二密钥;

相应地,第四记为单元,用于记第十二计算子模块计算得到的第二数据为第二密钥。

第三得到模块307,用于根据第一获取模块304获取的保护密钥、第一得到模块305得到的第一密钥、第三预设数据、第四预设数据和第五预设数据得到加密密钥;

可选地,第三得到模块307包括第二计算子模块、第三计算子模块、第四计算子模块和第一组成子模块;

相应地,第二计算子模块,用于使用第一获取模块304获取的保护密钥和第一得到模块305得到的第一密钥对第三预设数进行计算得到第一部分加密数据;

相应地,第三计算子模块,用于使用第一获取模块304获取的保护密钥和第一得到模块305得到的第一密钥对第四预设数进行计算得到第二部分加密数据;

相应地,第四计算子模块,用于使用第一获取模块304获取的保护密钥和第一得到模块305得到的第一密钥对第五预设数进行计算得到第三部分加密数据;

相应地,第一组成子模块,用于根据第二计算子模块计算得到的第一部分加密数据、第三计算子模块计算得到的第二部分加密数据和第四计算子模块计算得到的第三部分加密数据组成加密密钥;

进一步地,第二计算子模块,具体用于根据第一得到模块305得到的第一密钥和第三预设数据得到第一中间数据,根据第一获取模块304获取的保护密钥和第一中间数据得到第一部分加密数据;

相应地,第三计算子模块,具体用于根据第一得到模块305得到的第一密钥和第四预设数据得到第二中间数据,根据第一获取模块304获取的保护密钥和第二中间数据得到第二部分加密数据;

相应地,第四计算子模块,具体用于根据第一得到模块305得到的第一密钥和第五预设数据得到第三中间数据,根据第一获取模块304获取的保护密钥和第三中间数据得到第三部分加密数据。

第四得到模块308,用于根据第一获取模块304获取的保护密钥、第一得到模块305得到的第一密钥、第六预设数据、第七预设数据和第八预设数据得到mac密钥;

可选地,第四得到模块308包括第五计算子模块、第六计算子模块、第七计算子模块和第二组成子模块;

相应地,第五计算子模块,用于使用第一获取模块304获取的保护密钥和第一得到模块305得到的第一密钥对第六预设数进行计算得到第一部分mac数据;

相应地,第六计算子模块,用于使用第一获取模块304获取的保护密钥和第一得到模块305得到的第一密钥对第七预设数进行计算得到第二部分mac数据;

相应地,第七计算子模块,用于使用第一获取模块304获取的保护密钥和第一得到模块305得到的第一密钥对第八预设数进行计算得到第三部分mac数据;

相应地,第二组成子模块,用于根据第五计算子模块计算得到的第一部分mac数据、第六计算子模块计算得到的第二部分mac数据和第七计算子模块计算得到的第三部分mac数据组成mac密钥;

进一步地,第五计算子模块,具体用于根据第一得到模块305得到的第一密钥和第六预设数据得到第四中间数据,根据第一获取模块304获取的保护密钥和第四中间数据得到第一部分mac数据;

相应地,第六计算子模块,具体用于根据第一得到模块305得到的第一密钥和第七预设数据得到第五中间数据,根据第一获取模块304获取的保护密钥和第五中间数据得到第二部分mac数据;

相应地,第七计算子模块,具体用于根据第一得到模块305得到的第一密钥和第八预设数据得到第六中间数据,根据第一获取模块304获取的保护密钥和第六中间数据得到第三部分mac数据。

第五得到模块309,用于根据第三得到模块307得到的加密密钥、第二解析模块303解析得到的密钥块数据域和第二解析模块303解析得到的密钥块mac值得到第一明文数据;

可选地,第五得到模块309包括第一等分子模块、第八计算子模块、第九计算子模块、第十计算子模块、第十一计算子模块和第三组成子模块;

相应地,第一等分子模块,用于将第二解析模块303解析得到的密钥块数据域等分为四部分;

相应地,第八计算子模块,用于使用第三得到模块307得到的加密密钥对第一等分子模块等分得到的第一部分进行计算得到第一计算结果,将第一计算结果和第二解析模块303解析得到的密钥块mac值进行计算得到第二明文数据;

相应地,第九计算子模块,用于使用第三得到模块307得到的加密密钥对第一等分子模块等分得到的第二部分进行计算得到第二计算结果,将第二计算结果和第二解析模块303解析得到的密钥块mac值进行计算得到第三明文数据;

相应地,第十计算子模块,用于使用第三得到模块307得到的加密密钥对第一等分子模块等分得到的第三部分进行计算得到第三计算结果,将第三计算结果和第二解析模块303解析得到的密钥块mac值进行计算得到第四明文数据;

相应地,第十一计算子模块,用于使用第三得到模块307得到的加密密钥对第一等分子模块等分得到的第四部分进行计算得到第四计算结果,将第四计算结果和第二解析模块303解析得到的密钥块mac值进行计算得到第五明文数据;

相应地,第三组成子模块,用于根据第八计算子模块计算得到的第二明文数据、第九计算子模块计算得到的第三明文数据、第十计算子模块计算得到的第四明文数据和第十一计算子模块计算得到的第五明文数据得到第一明文数据;

进一步地,第一等分子模块,具体用于将第二解析模块303解析得到的密钥块数据域等分为第一密钥数据、第二密钥数据、第三密钥数据和第四密钥数据四部分;

相应地,第八计算子模块,具体用于根据第三得到模块307得到的加密密钥使用第一算法对第一等分子模块等分得到的第一密钥数据进行计算得到第一计算结果,并使用第二算法对第一计算结果和第二解析模块303解析得到的密钥块mac值进行计算得到第二明文数据;

相应地,第九计算子模块,具体用于根据第三得到模块307得到的加密密钥使用第一算法对第一等分子模块等分得到的第二密钥数据进行计算得到第二计算结果,并使用第二算法对第二计算结果和第二解析模块303解析得到的密钥块mac值进行计算得到第三明文数据;

相应地,第十计算子模块,具体用于根据第三得到模块307得到的加密密钥使用第一算法对第一等分子模块等分得到的第三密钥数据进行计算得到第三计算结果,并使用第二算法对第三计算结果和第二解析模块303解析得到的密钥块mac值进行计算得到第四明文数据;

相应地,第十一计算子模块,具体用于根据第三得到模块307得到的加密密钥使用第一算法对第一等分子模块等分得到的第四密钥数据进行计算得到第四计算结果,并使用第二算法对第四计算结果和第二解析模块303解析得到的密钥块mac值进行计算得到第五明文数据。

第六得到模块310,用于根据第四得到模块308得到的mac密钥、第五得到模块309得到的第一明文数据、第二解析模块303解析得到的密钥块头域和第二得到模块306得到的第二密钥得到第二mac值;

可选地,第六得到模块310包括第十三计算子模块、第二等分子模块、第十四计算子模块、第十五计算子模块、第十六计算子模块、第十七计算子模块、第十八计算子模块和第十九计算子模块;

相应地,第十三计算子模块,用于对第二获取模块311获取的第一明文数据和第二解析模块303解析得到的密钥块头域进行计算得到第一重组数据;

相应地,第二等分子模块,用于将第十三计算子模块计算得到的第一重组数据等分为第二重组数据至第七重组数据六部分;

相应地,第十四计算子模块,用于使用第四得到模块308得到的mac密钥对第二等分子模块等分得到的第二重组数据进行计算得到第一加密数据;

相应地,第十五计算子模块,用于使用第四得到模块308得到的mac密钥对第二等分子模块等分得到的第三重组数据和第一加密数据进行计算得到第二加密数据;

相应地,第十六计算子模块,用于使用第四得到模块308得到的mac密钥对第二等分子模块等分得到的第四重组数据和第二加密数据进行计算得到第三加密数据;

相应地,第十七计算子模块,用于使用第四得到模块308得到的mac密钥对第二等分子模块等分得到的第五重组数据和第三加密数据进行计算得到第四加密数据;

相应地,第十八计算子模块,用于使用第四得到模块308得到的mac密钥对第二等分子模块等分得到的第六重组数据和第十七计算子模块计算得到的第四加密数据进行计算得到第五加密数据;

相应地,第十九计算子模块,用于使用第四得到模块308得到的mac密钥对第二等分子模块等分得到的第七重组数据、第十八计算子模块计算得到的第五加密数据和第二得到模块306得到的第二密钥进行计算得到第二mac值。

第二获取模块311,用于当第六得到模块310得到的第二mac值和第二解析模块303解析得到的密钥块mac值相同时,从第五得到模块309得到的第一明文数据中获取对称密钥;

存储模块312,用于存储第二获取模块311获取的对称密钥;

发送模块313,用于向上位机返回密钥传输成功响应;

可选地,本实施例中的设备还包括判断模块;

相应地,判断模块,用于判断第六得到模块310得到的第二mac值和第二解析模块303解析得到的密钥块mac值是否相同;

相应地,第二获取模块311,具体用于当判断模块判断第六得到模块310得到的第二mac值和第二解析模块303解析得到的密钥块mac值相同时,从第五得到模块309得到的第一明文数据中获取对称密钥;

相应地,发送模块313,还用于当判断模块判断第六得到模块310得到的第二mac值和第二解析模块303解析得到的密钥块mac值不相同时,向上位机返回错误码。

本实施例提供了一种获取对称密钥的设备,用户可以不将设备返厂而直接安全地更新或者升级对称秘密,当设备接收到上位机发送的密钥传输指令时,设备解析密钥传输指令得到密钥块数据,对密钥块数据进行解密得到对称密钥等敏感数据,可以方便快捷地更新或者升级对称密钥等敏感数据,增强了传输对称密钥等敏感数据过程的安全性以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1