CN113541947B - 工作密钥生成方法、装置及计算机可读存储介质 - Google Patents

工作密钥生成方法、装置及计算机可读存储介质 Download PDF

Info

Publication number
CN113541947B
CN113541947B CN202111083495.5A CN202111083495A CN113541947B CN 113541947 B CN113541947 B CN 113541947B CN 202111083495 A CN202111083495 A CN 202111083495A CN 113541947 B CN113541947 B CN 113541947B
Authority
CN
China
Prior art keywords
key
data
value
length
working
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111083495.5A
Other languages
English (en)
Other versions
CN113541947A (zh
Inventor
陆舟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN202111083495.5A priority Critical patent/CN113541947B/zh
Publication of CN113541947A publication Critical patent/CN113541947A/zh
Application granted granted Critical
Publication of CN113541947B publication Critical patent/CN113541947B/zh
Priority to PCT/CN2022/101736 priority patent/WO2023040410A1/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本申请提供了一种工作密钥生成方法、装置及计算机可读存储介质,属于信息安全技术领域。该方法包括:终端接收上位机发送的操作指令,根据操作指令获取工作密钥用途和工作密钥算法,所述终端设置工作密钥用途为第一用途,根据所述第一用途、所述主密钥标识、所述第一数值和所述主密钥算法生成派生数据,根据所述工作密钥算法确定工作密钥的长度,获取工作密钥缓冲区中的数据作为密钥,根据所述密钥和所述派生数据生成符合工作密钥长度的工作密钥,根据所述操作指令和所述工作密钥执行相应的操作,将操作结果返回给上位机。采用本申请提供的方法,较现有技术中的加密方案更安全、适用范围也更广泛。

Description

工作密钥生成方法、装置及计算机可读存储介质
技术领域
本申请涉及信息安全技术领域,尤其涉及一种工作密钥生成方法、装置及计算机可读存储介质。
背景技术
终端设备与上位机进行数据交互过程中,需要对传输数据采用加密方案,尤其是对敏感数据进行加密处理;目前,采用的加密方案较为简单,例如,终端设备出厂时导入固定密钥,交互过程中使用固定密钥进行加密,一旦终端设备的固定密钥泄露,则该终端设备的用户将会面临重大损失,所以采用固定密钥对数据进行加密的方案会严重降低终端设备的安全性,此外,现有技术中还采用通过终端设备中的固定密钥派生工作密钥的方式,但这种方式需要依附固定密钥的算法,对后续工作密钥的使用有很大的局限性。
发明内容
为了解决现有技术中存在的问题,本申请提供了一种工作密钥生成方法、装置及计算机可读存储介质。
其中,本申请提供的一种工作密钥生成方法包括:
步骤S1、终端接收上位机发送的操作指令,根据所述操作指令中的密钥索引获取主密钥值、主密钥计数器值和主密钥算法;
步骤S2、所述终端将所述主密钥计数器值按照第一预设算法进行处理得到主密钥标识和第一数值;
步骤S3、所述终端初始化工作密钥缓冲区,将所述主密钥值存入所述工作密钥缓冲区,设置工作密钥计数值,初始化移位寄存器,设定移位寄存器当前位;
步骤S4、所述终端判断第一数值中与移位寄存器当前位对应的位的值是否等于第二预设值,若是则执行步骤S5,否则执行步骤S8;
步骤S5、所述终端根据当前移位寄存器的值和工作密钥计数值进行计算得到第一结果,将工作密钥计数值更新为所述第一结果,执行步骤S6;
步骤S6、所述终端根据所述主密钥标识、更新后的工作密钥计数值和所述主密钥算法生成第一派生数据;
步骤S7、所述终端根据所述主密钥算法确定派生密钥的长度,获取工作密钥缓冲区中的数据作为第一密钥,根据所述第一密钥和所述第一派生数据生成符合派生密钥长度的数据,将工作密钥缓冲区中的数据更新为所述符合派生密钥长度的数据,执行步骤S8;
步骤S8、所述终端判断所述移位寄存器当前位是否为所述移位寄存器的最后一位,若是则执行步骤S9,否则控制所述移位寄存器按照预设方向移位,更新移位寄存器当前位,返回步骤S4;
步骤S9、所述终端根据所述操作指令设置工作密钥用途为第一用途,根据所述第一用途、所述主密钥标识、所述第一数值和所述主密钥算法生成第二派生数据,执行步骤S10;
步骤S10、所述终端根据所述操作指令获取工作密钥算法,根据所述工作密钥算法确定工作密钥的长度,获取工作密钥缓冲区中的数据作为第二密钥,根据所述第二密钥和所述第二派生数据生成符合工作密钥长度的工作密钥,根据所述操作指令和所述工作密钥执行相应的操作,将操作结果返回给上位机。
其中,本申请提供的一种工作密钥生成装置包括:
接收模块,用于接收上位机发送的操作指令;
获取模块,用于根据操作指令中的密钥索引获取主密钥值、主密钥计数器值和主密钥算法;
处理模块,用于将所述主密钥计数器值按照第一预设算法进行处理得到主密钥标识和第一数值;
设置模块,用于初始化工作密钥缓冲区,将所述主密钥值存入所述工作密钥缓冲区,设置工作密钥计数值,初始化移位寄存器,设定移位寄存器当前位;
第一判断模块,用于判断第一数值中与移位寄存器当前位对应的位的值是否等于第二预设值;
计算模块,用于根据当前移位寄存器的值和工作密钥计数值进行计算得到第一结果,将工作密钥计数值更新为第一结果;
生成模块,用于根据所述主密钥标识、更新后的工作密钥计数值和所述主密钥算法生成第一派生数据;
所述生成模块,还用于根据所述主密钥算法确定派生密钥的长度,获取工作密钥缓冲区中的数据作为第一密钥,根据所述第一密钥和所述第一派生数据生成符合派生密钥长度的数据,将工作密钥缓冲区中的数据更新为所述符合派生密钥长度的数据;
第二判断模块,用于判断当前位是否为移位寄存器的最后一位;
控制模块,用于所述第二判断模块判断当前位不为移位寄存器的最后一位时,控制移位寄存器按照预设方向移位,更新移位寄存器当前位;
所述生成模块,还用于根据所述操作指令设置工作密钥用途为第一用途,根据所述第一用途、所述主密钥标识、所述第一数值和所述主密钥算法生成第二派生数据;
所述生成模块,还用于根据所述操作指令获取工作密钥算法,根据所述工作密钥算法确定工作密钥的长度,获取工作密钥缓冲区中的数据作为第二密钥,根据所述第二密钥和所述第二派生数据生成符合工作密钥长度的工作密钥;
执行模块,用于根据所述操作指令和所述工作密钥执行相应的操作,将操作结果返回给上位机。
其中,本申请提供了一种电子设备包括:存储器,用于存储计算机可读指令;以及处理器,用于运行所述计算机可读指令,使得所述计算机可读指令被所述处理器执行时实现本申请涉及的工作密钥生成方法。
其中,本申请提供了一种计算机可读存储介质,用于存储计算机可读指令,当所述计算机可读指令由计算机执行时,使得所述计算机执行本申请涉及的工作密钥生成方法。
本申请提供的技术方案的有益效果是:本申请根据上位机下发的操作指令确定工作密钥的算法和工作密钥用途,并根据不同的工作密钥算法和工作密钥用途生成不同的工作密钥,在生成工作密钥的过程中根据移位寄存器对工作密钥缓冲区中的数据进行迭代更新,以确保每次操作过程中生成的工作密钥都是唯一的,采用本申请提供的方法,较现有技术中,依据固定密钥和固定密钥算法生成与固定密钥相同算法的工作密钥的加密方案更安全、适用范围也更广泛。
附图说明
图1是本申请实施例1提供的一种工作密钥生成方法流程图;
图2、图3、图4是本申请实施例2提供的一种工作密钥生成方法流程图;
图5是本申请实施例3提供的一种工作密钥生成装置框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例1
本申请实施例1提供了一种工作密钥生成方法,如图1所示,该方法包括:
步骤101、终端接收上位机发送的操作指令,根据操作指令中的密钥索引获取主密钥值、主密钥计数器值和主密钥算法标识;
在本实施例中,操作指令具体包括:数据加密指令、数据解密指令、PIN码加密指令、Mac校验值生成指令或验证指令等;
在本实施例中,根据操作指令中的密钥索引获取主密钥值、主密钥计数器值、主密钥算法标识具体包括:根据操作指令中的密钥索引获取主密钥,根据主密钥获取主密钥值、主密钥计数器值、主密钥算法标识;
可选地,根据操作指令中的密钥索引获取主密钥具体为:终端获取操作指令中的密钥索引,在密钥容器中通过密钥索引查找与密钥索引对应的数据,将查找到的数据作为主密钥;
例如,主密钥值为:FEDCBA9876543210F1F1F1F1F1F1F1F101020304050607080807060504030201;
主密钥计数器值为:0FFFF9876543210E00010004;
主密钥算法标识为0x06。
步骤102、终端将主密钥计数器值按照第一预设算法进行处理得到主密钥标识和第一数值;
在本实施例中,主密钥计数器值具体为12字节的数据;
步骤102具体为:终端将主密钥计数器值分解为两部分,将前8个字节作为主密钥标识,将后4字节作为第一数值;
例如,主密钥计数器值为:0FFFF9876543210E00010004;
主密钥标识为:0FFFF9876543210E;
第一数值为:00010004。
步骤103、终端初始化工作密钥缓冲区,将主密钥值存入工作密钥缓冲区,设置工作密钥计数值,初始化移位寄存器,设定移位寄存器当前位;
在本实施例中,初始化移位寄存器当前位具体为:设定移位寄存器的最高位为当前位;
例如,移位寄存器值为:0x80000000;
工作密钥计数值为:0x00000000。
步骤104、终端判断第一数值中与移位寄存器当前位对应的位的值是否等于第二预设值,若是则执行步骤105,否则执行步骤108;
在本实施例中,终端判断第一数值中与移位寄存器当前位对应的位的值是否等于第二预设值具体为:终端获取移位寄存器当前位的值和第一数值中与移位寄存器当前位对应的位的值,根据第二预设算法对移位寄存器当前位的值和第一数值中与移位寄存器当前位对应的位的值进行计算得到第二数值,判断第二数值是否大于第三预设值,若是则第一数值中与移位寄存器当前位对应的位的值等于第二预设值,执行步骤106,否则第一数值中与移位寄存器当前位对应的位的值不等于第二预设值;
具体地,第二预设算法具体为与运算;第三预设值为0;第二预设值为1,移位寄存器当前位的值为1;
举例说明,若移位寄存器当前位为第2位,则第一数值中与移位寄存器当前位对应的位也是第2位。
步骤105、终端根据当前移位寄存器的值和工作密钥计数值进行计算得到第一结果,将工作密钥计数值更新为第一结果,执行步骤106;
在本实施例中,终端根据当前移位寄存器的值和工作密钥计数值进行计算得到第一结果具体为:终端按照第三预设算法根据当前移位寄存器的值和工作密钥计数值进行计算得到第一结果;
其中,第三预设算法具体为或运算;
当前移位寄存器的值为:0x 80 00 00 00;
工作密钥计数值为:0x 00 00 00 00;
第一结果为:0x 80 00 00 00。
步骤106、终端根据主密钥标识、更新后的工作密钥计数值和主密钥算法生成第一派生数据;
在本实施例中,终端根据主密钥标识、更新后的工作密钥计数值和主密钥算法生成派生数据具体包括:终端根据密钥派生用途、主密钥标识、更新后的工作密钥计数值和主密钥算法生成第一派生数据;
根据密钥派生用途、主密钥标识、更新后的工作密钥计数值和主密钥算法生成第一派生数据具体为:终端根据第四预设值、密钥派生用途、主密钥算法对应的值、主密钥标识的预设字节值、更新后的工作密钥计数值顺序拼接得到预设长度的数据;
具体地,预设长度为16字节;
终端根据第四预设值、密钥派生用途、主密钥算法对应的值、主密钥标识的预设字节值、更新后的工作密钥计数值顺序拼接得到预设长度的数据具体为:终端将第一、第二字节初始化为第四预设值,将密钥派生用途对应的值作为第三和第四字节,将主密钥算法对应的值作为第五、第六、第七、第八字节,将主密钥标识的后4个字节作为第九、第十、第十一、第十二字节,将更新后的工作密钥计数值作为第十三、第十四、第十五、第十六字节;
在本实施例中,第四预设值为:0x01 0x01;
在本实施例中,密钥派生用途具体为一个数值,用于表示密钥用途是密钥派生,所对应的值例如为:0x80 0x00;
具体地,主密钥算法包括AES-128、AES-192、AES-256,主密钥算法对应的值为:0x00 0x02 0x00 0x80、0x00 0x03 0x00 0x00、0x00 0x04 0x01 0x00;
在本实施例中,主密钥算法具体以AES-256为例;
主密钥标识为:0FFFF9876543210E;
主密钥计数值的后4个字节为00010004;
第一次更新后的工作密钥计数值为:0x10000;
第一次生成的第一派生数据为:01 01 80 00 00 04 01 00 65 43 21 0e 00 0100 00;
第二次更新后的工作密钥计数值为:0x10004;
第二次生成的第一派生数据为:01 01 80 00 00 04 01 00 65 43 21 0e 00 0100 04。
步骤107、终端根据主密钥算法确定派生密钥的长度,获取工作密钥缓冲区中的数据作为第一密钥,根据第一密钥和第一派生数据生成符合派生密钥长度的数据,将工作密钥缓冲区中的数据更新为符合派生密钥长度的数据,执行步骤108;
在本实施例中,步骤107之前还包括:终端设置派生密钥算法为主密钥算法;
在本实施例中,可选地,根据第一密钥和第一派生数据生成符合派生密钥长度的数据,具体为:将符合派生密钥长度的数据作为目标密钥,确定目标密钥长度与第一派生数据长度的倍数,根据倍数和第一派生数据生成第一派生数据组,根据第一密钥对第一派生数据组进行加密得到符合派生密钥长度的数据;
优选的,当倍数为整数倍时,根据倍数和第一派生数据生成第一派生数据组,根据第一密钥对第一派生数据组进行加密得到符合派生密钥长度的数据具体包括:根据第一派生数据生成包含整数倍个数据单元的派生数据组,根据第一密钥对派生数据组的每个数据单元进行加密,所得密文顺次拼接得到符合派生密钥长度的数据;
优选的,当倍数为非整数倍时,根据倍数和第一派生数据生成第一派生数据组,根据第一密钥对第一派生数据组进行加密得到符合派生密钥长度的数据具体包括:将非整数倍向上取整得到整数倍,根据第一派生数据生成包含整数倍个数据单元的派生数据组,根据第一密钥对派生数据组的每个数据单元进行加密,所得密文顺次拼接,从拼接后的密文中截取长度等于目标密钥长度的数据作为符合派生密钥长度的数据。
进一步优选的,根据第一派生数据生成包含整数倍个数据单元的派生数据组具体包括:
步骤P1、初始化当前数据单元序号,将第一派生数据作为派生数据组的一个数据单元;
步骤P2、判断派生数据组中数据单元的个数是否等于整数倍,是则生成过程结束,否则执行步骤P3;
步骤P3、更新当前数据单元序号,将第一派生数据的预设字节修改为当前数据单元序号,将修改后的派生数据作为派生数据组的一个数据单元,返回执行步骤P2。
举例说明,派生密钥的算法是主密钥算法,即派生密钥算法为AES-256;
在本实施例中,第一次循环得到工作密钥的计数值为:0x10000;
派生数据为:01 01 80 00 00 04 01 00 65 43 21 0e 00 01 00 00;
其中,目标密钥长度为32字节,确定目标密钥长度32字节与第一派生数据长度16字节的倍数为2,根据第一派生数据生成包含整数倍个(即2个)数据单元的派生数据组0101 80 00 00 04 01 00 65 43 21 0e 00 01 00 00、01 02 80 00 00 04 01 00 65 43 210e 00 01 00 00,根据第一密钥FEDCBA9876543210F1F1F1F1F1F1F1F101020304050607080807060504030201对派生数据组的每个数据单元进行加密,所得密文5d 05 a2 f3 a6 4ddc c9 57 93 81 c6 a4 e2 79 6d、34 18 fa f8 e0 54 3b ca 42 af bc 80 5a 56 58 4d顺次拼接得到符合派生密钥长度的数据5d 05 a2 f3 a6 4d dc c9 57 93 81 c6 a4 e279 6d 34 18 fa f8 e0 54 3b ca 42 af bc 80 5a 56 58 4d;
在本实施例中,第二次循环得到工作密钥的计数值为:0x10004;
派生数据为:01 01 80 00 00 04 01 00 65 43 21 0e 00 01 00 04;
通过第一密钥对派生数据组的第一个数据单元进行加密得到密文为:78 bc fac1 46 e1 98 82 5f fd 68 98 b3 63 9f 68;
通过第一密钥对派生数据组的第二个数据单元进行加密得到密文为:d4 f3 1dde dd 84 8a 1f b7 19 ad 18 19 2f b4 69;
将密文顺次拼接得到符合派生密钥长度的数据为:78 bc fa c1 46 e1 98 82 5ffd 68 98 b3 63 9f 68 d4 f3 1d de dd 84 8a 1f b7 19 ad 18 19 2f b4 69。
步骤108、终端判断移位寄存器当前位是否为移位寄存器的最后一位,若是则执行步骤109,否则控制移位寄存器按照预设方向移动预设位,更新移位寄存器的当前位,返回步骤104;
在本实施例中,具体地,预设方向可以是向右,也可以是向左,还可以从高位到低位;预设位具体为一位。
步骤109、终端根据操作指令设置工作密钥用途为第一用途,根据第一用途、主密钥标识、第一数值和主密钥算法生成第二派生数据,执行步骤110;
在本实施例中,根据第一用途、主密钥标识、第一数值和主密钥算法生成第二派生数据具体为:终端根据第四预设值、第一用途、主密钥算法对应的值、主密钥标识的预设字节值、第一数值顺序拼接得到预设长度的数据;
在本实施例中,工作密钥用途包括:密钥加密、PIN码加密、Mac生成、Mac验证、Mac生成且验证、数据加密、数据解密、数据加解密、密钥派生,工作密钥用途所对应的值为:0x00 0x02、0x10 0x00、0x20 0x00、0x20 0x01、0x20 0x02、0x30 0x00、0x30 0x01、0x300x02、0x80 0x00;
在本实施例中,第一用途具体以PIN码加密举例说明;
例如,PIN码加密所对应的值为:0x10 0x00;
主密钥标识为:0FFFF9876543210E;
第一数值为:00010004;
主密钥算法为:AES-256;
生成的第二派生数据为:01 01 10 00 00 04 01 00 65 43 21 0e 00 01 00 04。
步骤110、终端根据操作指令获取工作密钥算法,根据工作密钥算法确定工作密钥的长度,获取工作密钥缓冲区中的数据作为第二密钥,根据第二密钥和第二派生数据生成符合工作密钥长度的工作密钥,根据操作指令和工作密钥执行相应的操作,将操作结果返回给上位机。
在本实施例中,以PIN码加密为例,终端收到的操作指令为:25 21 00 00 00 1300 01 30 00 06 01 00 00 02;
具体地,终端根据操作指令解析得到工作密钥用途、工作密钥算法标识;
其中,操作指令中第1-2字节为命令类别和命令码,用于标识数据加密/解密命令;操作指令中第3字节为操作码,例如,00代表加密;01代表解密;操作指令中第4字节为固定值;操作指令中第5-6字节为数据长度,高字节在前,低字节在后,假设为0字节;操作指令中第7-8字节为主密钥索引,例如0001;操作指令中第9-10字节为工作密钥用途,例如3000;操作指令中第11字节为工作密钥算法标识,例如06,表示AES-256算法;操作指令中第12字节为算法模式,例如01,代表ECB模式;操作指令中第13-14字节为初始向量长度,不使用,例如0000;操作指令中第15字节为填充模式,例如为02;
工作密钥算法可以包括:AES-128、AES-192、AES-256、3DES128、3DES192;例如,工作密钥算法为AES-128时,工作密钥算法标识为0x04,工作密钥算法为AES-192时,工作密钥算法标识为0x05 ,工作密钥算法为AES-256时,工作密钥算法标识为0x06 ;
在本实施例中,若工作密钥算法为AES-128或3DES128时,工作密钥的长度为16字节,若工作密钥算法为AES-192或3DES192时,工作密钥的长度为24字节,若工作密钥算法为AES-256时,工作密钥的长度为32字节;
在本实施例中,若操作指令为PIN码加密时,根据操作指令和工作密钥缓冲区中的数据执行相应的操作,将操作结果返回给上位机具体为:终端获取PIN码,获取工作密钥缓冲区中的数据作为密钥,按照预设加密算法根据密钥对PIN码进行加密得到PIN码密文,将PIN码密文发送给上位机;
在本实施例中,可选地,根据第二密钥和第二派生数据生成符合工作密钥长度的工作密钥,具体为:将工作密钥作为目标密钥,确定目标密钥长度与第二派生数据长度的倍数,根据倍数和第二派生数据生成第二派生数据组,根据第二密钥对第二派生数据组进行加密得到符合工作密钥长度的工作密钥;
优选的,当倍数为整数倍时,根据倍数和第二派生数据生成第二派生数据组,根据第二密钥对第二派生数据组进行加密得到符合工作密钥长度的工作密钥具体包括:根据第二派生数据生成包含整数倍个数据单元的派生数据组,根据第二密钥对派生数据组的每个数据单元进行加密,所得密文顺次拼接得到符合工作密钥长度的工作密钥;
优选的,当倍数为非整数倍时,根据倍数和第二派生数据生成第二派生数据组,根据第二密钥对第二派生数据组进行加密得到符合工作密钥长度的工作密钥具体包括:将非整数倍向上取整得到整数倍,根据第二派生数据生成包含整数倍个数据单元的派生数据组,根据第二密钥对派生数据组的每个数据单元进行加密,所得密文顺次拼接,从拼接后的密文中截取长度等于目标密钥长度的数据作为符合工作密钥长度的工作密钥。
进一步优选的,根据第二派生数据生成包含整数倍个数据单元的派生数据组具体包括:
步骤P1、初始化当前数据单元序号,将第二派生数据作为派生数据组的一个数据单元;
步骤P2、判断派生数据组中数据单元的个数是否等于整数倍,是则生成过程结束,否则执行步骤P3;
步骤P3、更新当前数据单元序号,将第二派生数据的预设字节修改为当前数据单元序号,将修改后的派生数据作为派生数据组的一个数据单元,返回执行步骤P2。
实施例2
本申请实施例2提供了一种工作密钥生成方法,如图2、图3、图4所示,该方法包括:
步骤201、终端接收上位机发送的操作指令;
在本实施例中,操作指令具体包括:数据加密指令、数据解密指令、Mac校验值生成指令或验证指令等。
步骤202、终端根据操作指令中的密钥索引获取主密钥,根据主密钥获取主密钥值、主密钥计数器值、主密钥算法标识、主密钥类型标识;
在本实施例中,终端根据操作指令中的密钥索引获取主密钥具体为:终端获取操作指令中的密钥索引,在密钥容器中通过密钥索引查找与密钥索引对应的数据,将查找到的数据作为主密钥;
在本实施例中,主密钥计数器值是根据上位机下发的指令可以进行变化的;
例如,终端接收到上位机下发的一条"KSN递增"的命令后, 将主密钥计数器值的计数器部分增加。
例如,主密钥算法标识为:0x06;
主密钥值为:FEDCBA9876543210F1F1F1F1F1F1F1F101020304050607080807060504030201;
主密钥计数器值为:0FFFF9876543210E00010004。
步骤203、终端根据主密钥类型标识判断主密钥类型是否为第一类型,若是则执行步骤204,否则结束;
在本实施例中,第一类型为初始写入的可加密PIN的密钥。
步骤204、终端根据主密钥算法标识判断主密钥算法是否为第一算法,若是则执行步骤205,否则结束;
在本实施例中,第一算法可以为AES算法、SM4算法;
具体地,本实施例中具体以第一算法为AES-256进行举例说明。
步骤205、终端将主密钥计数器值按照第一预设算法进行处理得到主密钥标识和第一数值;
在本实施例中,主密钥计数器值具体为12字节的数据;
步骤205具体为:终端将主密钥计数器值分解为两部分,将前8个字节作为主密钥标识,将后4字节作为第一数值;
例如,主密钥计数器值为:0FFFF9876543210E00010004;
主密钥标识为:0FFFF9876543210E;
第一数值为:00010004。
步骤206、终端初始化工作密钥缓冲区,将主密钥值存入工作密钥缓冲区;
步骤207、终端设置工作密钥计数值,初始化移位寄存器,设定移位寄存器当前位;
在本实施例中,设定移位寄存器当前位具体为:设定移位寄存器的最高位为当前位;
例如,移位寄存器的值和工作密钥计数值均为4字节的数值,移位寄存器的值为:0x80000000;
工作密钥计数值为:0x00000000。
步骤208、终端判断当前移位寄存器中的值是否大于第一预设值,若是则执行步骤209,否则执行步骤216;
在本实施例中,当前移位寄存器的值为:0x80000000;
第一预设值具体为0;
步骤209、终端获取移位寄存器当前位的值和第一数值中与移位寄存器当前位对应的位的值,根据第二预设算法对移位寄存器当前位的值和第一数值中与移位寄存器当前位对应的位的值进行计算得到第二数值,判断第二数值是否大于第三预设值,若是则执行步骤211,否则执行步骤210;
在本实施例中,第二预设算法具体为与运算;
移位寄存器当前位的值为1,第一数值中与移位寄存器当前位对应的位的值为1时,第三预设值为0。
步骤210、终端判断当前位是否为移位寄存器的最后一位,若是则执行步骤216,否则控制移位寄存器按照预设方向移动预设位,更新移位寄存器的当前位,返回步骤208;
可选地,预设方向可以是向右,也可以是向左,还可以从高位到低位;
具体地,本实施例中控制移位寄存器向右移动1位。
步骤211、终端根据第三预设算法对当前移位寄存器的值和工作密钥计数值进行计算得到第一结果,将工作密钥计数值更新为第一结果,执行步骤212;
在本实施例中,第三预设算法具体为或运算;
当前移位寄存器的值为:0x 80 00 00 00;
工作密钥计数值为:0x 00 00 00 00;
第一结果为:0x 80 00 00 00。
步骤212、终端设置密钥用途为密钥派生,根据密钥用途、主密钥标识、更新后的工作密钥计数值和主密钥算法生成第一派生数据;
在本实施例中,根据密钥用途、主密钥标识、更新后的工作密钥计数值和主密钥算法生成第一派生数据具体为:终端根据第四预设值、密钥派生用途、主密钥算法对应的值、主密钥标识的预设字节值、更新后的工作密钥计数值顺序拼接得到预设长度的数据;
具体地,生成的第一派生数据的长度具体为16字节;
具体地,终端根据第四预设值、密钥派生用途、主密钥算法对应的值、主密钥标识的预设字节值、更新后的工作密钥计数值顺序拼接得到预设长度的数据具体为:终端将第一、第二字节初始化为第四预设值,将工作密钥用途对应的值作为第三和第四字节,将主密钥算法对应的值作为第五、第六、第七、第八字节,将主密钥标识的后4个字节作为第九、第十、第十一、第十二字节,将更新后的工作密钥计数值作为第十三、第十四、第十五、第十六字节;
在本实施例中,第四预设值为:0x01 0x01;
在本实施例中,密钥用途包括:密钥加密、PIN码加密、Mac生成、Mac验证、Mac生成且验证、数据加密、数据解密、数据加解密、密钥派生,工作密钥用途所对应的值为:0x000x02、0x10 0x00、0x20 0x00、0x20 0x01、0x20 0x02、0x30 0x00、0x30 0x01、0x30 0x02、0x80 0x00;
具体地,主密钥算法包括AES-128、AES-192、AES-256,主密钥算法对应的值为:0x00 0x02 0x00 0x80、0x00 0x03 0x00 0x00、0x00 0x04 0x01 0x00;
在本实施例中,主密钥算法具体以AES-256为例;
主密钥标识为:0FFFF9876543210E;
主密钥计数器值的后4个字节为00010004;
第一次更新后的工作密钥计数值为:0x10000;
第一次生成的第一派生数据为:01 01 80 00 00 04 01 00 65 43 21 0e 00 0100 00;
第二次更新后的工作密钥计数值为:0x10004;
第二次生成的第一派生数据为:01 01 80 00 00 04 01 00 65 43 21 0e 00 0100 04。
步骤213、终端根据主密钥算法确定派生密钥的长度,确定派生密钥长度与第一派生数据长度的倍数,若倍数为整数倍,则执行步骤214,若倍数为非整数倍,则执行步骤215;
在本实施例中,若派生密钥长度为16字节,第一派生数据的长度也为16字节,则派生密钥长度与第一派生数据长度的倍数为1;若派生密钥长度为24字节,第一派生数据的长度为16字节,则派生密钥长度与第一派生数据长度的倍数为1.5;若派生密钥长度为32字节,第一派生数据的长度为16字节,则派生密钥长度与第一派生数据长度的倍数为2。
步骤214、终端根据第一派生数据生成包含整数倍个数据单元的派生数据组,获取工作密钥缓冲区中的数据作为第一密钥,根据第一密钥对派生数据组的每个数据单元进行加密,所得密文顺次拼接得到符合派生密钥长度的数据,将工作密钥缓冲区中的数据更新为符合派生密钥长度的数据,返回步骤210;
在本实施例中,根据第一派生数据生成包含整数倍个数据单元的派生数据组具体包括:
步骤P1、初始化当前数据单元序号,将第一派生数据作为派生数据组的一个数据单元;
步骤P2、判断派生数据组中数据单元的个数是否等于整数倍,是则生成过程结束,否则执行步骤P3;
步骤P3、更新当前数据单元序号,将第一派生数据的预设字节修改为当前数据单元序号,将修改后的派生数据作为派生数据组的一个数据单元,返回执行步骤P2;
步骤215、终端将非整数倍向上取整得到整数倍,根据第一派生数据生成包含整数倍个数据单元的派生数据组,获取工作密钥缓冲区中的数据作为第一密钥,根据第一密钥对派生数据组的每个数据单元进行加密,所得密文顺次拼接,从拼接后的密文中截取长度等于派生密钥长度的数据作为符合派生密钥长度的数据,将工作密钥缓冲区中的数据更新为符合派生密钥长度的数据,返回步骤210;
在本实施例中,派生密钥的算法是主密钥算法,即派生密钥算法为AES-256;
在本实施例中,第一次循环得到工作密钥的计数值为:0x10000;
第一派生数据为:01 01 80 00 00 04 01 00 65 43 21 0e 00 01 00 00;
其中,目标密钥长度为32字节,确定目标密钥长度32字节与第一派生数据长度16字节的倍数为2,根据第一派生数据生成包含整数倍个(即2个)数据单元的派生数据组0101 80 00 00 04 01 00 65 43 21 0e 00 01 00 00、01 02 80 00 00 04 01 00 65 43 210e 00 01 00 00,根据第一密钥FEDCBA9876543210F1F1F1F1F1F1F1F101020304050607080807060504030201对派生数据组的每个数据单元进行加密,所得密文5d 05 a2 f3 a6 4ddc c9 57 93 81 c6 a4 e2 79 6d、34 18 fa f8 e0 54 3b ca 42 af bc 80 5a 56 58 4d顺次拼接得到符合派生密钥长度的数据5d 05 a2 f3 a6 4d dc c9 57 93 81 c6 a4 e279 6d 34 18 fa f8 e0 54 3b ca 42 af bc 80 5a 56 58 4d;
在本实施例中,第二次循环得到工作密钥的计数值为:0x10004;
派生数据为:01 01 80 00 00 04 01 00 65 43 21 0e 00 01 00 04;
通过第一密钥对派生数据组的第一个数据单元进行加密得到密文为:78 bc fac1 46 e1 98 82 5f fd 68 98 b3 63 9f 68;
通过第一密钥对派生数据组的第二个数据单元进行加密得到密文为:d4 f3 1dde dd 84 8a 1f b7 19 ad 18 19 2f b4 69;
将密文顺次拼接得到符合派生密钥长度的数据为:78 bc fa c1 46 e1 98 82 5ffd 68 98 b3 63 9f 68 d4 f3 1d de dd 84 8a 1f b7 19 ad 18 19 2f b4 69。
步骤216、终端根据操作指令设置工作密钥用途为第一用途,根据第一用途、主密钥标识、第一数值和主密钥算法生成第二派生数据,执行步骤217;
在本实施例中,工作密钥用途包括:密钥加密、PIN码加密、Mac生成、Mac验证、Mac生成且验证、数据加密、数据解密、数据加解密、密钥派生,工作密钥用途所对应的值为:0x00 0x02、0x10 0x00、0x20 0x00、0x20 0x01、0x20 0x02、0x30 0x00、0x30 0x01、0x300x02、0x80 0x00;
在本实施例中,第一用途具体以PIN码加密举例说明;
例如,PIN码加密所对应的值为:0x10 0x00;
主密钥标识为:0FFFF9876543210E;
第一数值为:00010004;
主密钥算法为:AES-256;
生成的第二派生数据为:01 01 10 00 00 04 01 00 65 43 21 0e 00 01 00 04。
步骤217、终端根据操作指令获取工作密钥的算法,根据工作密钥算法确定工作密钥的长度,确定工作密钥长度与第二派生数据长度的倍数,若倍数为整数倍,则执行步骤218,若倍数为非整数倍,则执行步骤219;
在本实施例中,若工作密钥长度为16字节,第二派生数据的长度也为16字节,则工作密钥长度与第二派生数据长度的倍数为1;若工作密钥长度为24字节,第二派生数据的长度为16字节,则工作密钥长度与第二派生数据长度的倍数为1.5;若工作密钥长度为32字节,第二派生数据的长度也16字节,则工作密钥长度与第二派生数据长度的倍数为2;
在本实施例中,工作密钥算法可以包括:AES-128、AES-192、AES-256、3DES128、3DES192;
在本实施例中,若工作密钥算法为AES-128或3DES128时,工作密钥的长度为16字节,若工作密钥算法为AES-192或3DES192时,工作密钥的长度为24字节,若工作密钥算法为AES-256时,工作密钥的长度为32字节。
步骤218、终端根据第二派生数据生成包含整数倍个数据单元的派生数据组,获取工作密钥缓冲区中的数据作为第二密钥,根据第二密钥对派生数据组的每个数据单元进行加密,所得密文顺次拼接得到符合工作密钥长度的数据,将工作密钥缓冲区中的数据更新为工作密钥,执行步骤220;
在本实施例中,根据第二派生数据生成包含整数倍个数据单元的派生数据组具体包括:
步骤P1、初始化当前数据单元序号,将第二派生数据作为派生数据组的一个数据单元;
步骤P2、判断派生数据组中数据单元的个数是否等于整数倍,是则生成过程结束,否则执行步骤P3;
步骤P3、更新当前数据单元序号,将第二派生数据的预设字节修改为当前数据单元序号,将修改后的派生数据作为派生数据组的一个数据单元,返回执行步骤P2;
本实施例中,以工作密钥算法为AES-128举例说明时,
第二密钥为:78 bc fa c1 46 e1 98 82 5f fd 68 98 b3 63 9f 68 d4 f3 1dde dd 84 8a 1f b7 19 ad 18 19 2f b4 69;
第二派生数据为:01 01 10 00 00 02 00 80 65 43 21 0e 00 01 00 04;
其中,工作密钥长度为16字节,确定目标密钥长度16字节与第二派生数据长度16字节的倍数为1,根据第二派生数据生成包含整数倍个(即1个)数据单元的派生数据组0101 10 00 00 02 00 80 65 43 21 0e 00 01 00 04,根据第二密钥78 bc fa c1 46 e1 9882 5f fd 68 98 b3 63 9f 68 d4 f3 1d de dd 84 8a 1f b7 19 ad 18 19 2f b4 69对派生数据组的数据单元进行加密,所得密文b9 61 1c 8a 12 ee 0e 60 5f 5e dd 8d 8200 48 58,该密文就是符合工作密钥长度的工作密钥;
本实施例中,以工作密钥算法为3DES128举例说明时,
第二密钥为:78 bc fa c1 46 e1 98 82 5f fd 68 98 b3 63 9f 68 d4 f3 1dde dd 84 8a 1f b7 19 ad 18 19 2f b4 69;
第二派生数据为:01 01 10 00 00 00 00 80 65 43 21 0e 00 01 00 04;
其中,工作密钥长度为16字节,确定目标密钥长度16字节与第二派生数据长度16字节的倍数为1,根据第二派生数据生成包含整数倍个(即1个)数据单元的派生数据组0101 10 00 00 00 00 80 65 43 21 0e 00 01 00 04,根据第二密钥78 bc fa c1 46 e1 9882 5f fd 68 98 b3 63 9f 68 d4 f3 1d de dd 84 8a 1f b7 19 ad 18 19 2f b4 69对派生数据组的数据单元进行加密,所得密文22 bf 4a 3b a1 bd de 17 ab 5c 77 fa cf7d 84 34,就是符合工作密钥长度的工作密钥;
本实施例中,以工作密钥算法为AES-256举例说明时,
第二密钥为:78 bc fa c1 46 e1 98 82 5f fd 68 98 b3 63 9f 68 d4 f3 1dde dd 84 8a 1f b7 19 ad 18 19 2f b4 69;
第二派生数据为:01 01 10 00 00 04 01 00 65 43 21 0e 00 01 00 04;
其中,工作密钥长度为32字节,确定工作密钥长度32字节与第二派生数据长度16字节的倍数为2,根据第二派生数据生成包含整数倍个(即2个)数据单元的派生数据组为:01 01 10 00 00 04 01 00 65 43 21 0e 00 01 00 04、01 02 10 00 00 04 01 00 65 4321 0e 00 01 00 04,根据第二密钥78 bc fa c1 46 e1 98 82 5f fd 68 98 b3 63 9f 68d4 f3 1d de dd 84 8a 1f b7 19 ad 18 19 2f b4 69对派生数据组的每个数据单元进行加密,所得密文0b da ce 08 8f 7c 42 2a 1a e7 e9 5a 84 d8 0f af、90 bf 6f d7 6b04 78 b0 e5 9c ec d5 ed 89 a9 b5顺次拼接得到符合工作密钥长度的工作密钥0b dace 08 8f 7c 42 2a 1a e7 e9 5a 84 d8 0f af 90 bf 6f d7 6b 04 78 b0 e5 9c ec d5ed 89 a9 b5。
步骤219、终端将非整数倍向上取整得到整数倍,根据第二派生数据生成包含整数倍个数据单元的派生数据组,获取工作密钥缓冲区中的数据作为第二密钥,根据第二密钥对派生数据组的每个数据单元进行加密,所得密文顺次拼接,从拼接后的密文中截取长度等于工作密钥长度的数据作为工作密钥,将工作密钥缓冲区中的数据更新为工作密钥,执行步骤220;
本实施例中,以工作密钥算法为AES-192举例说明时,
第二密钥为:78 bc fa c1 46 e1 98 82 5f fd 68 98 b3 63 9f 68 d4 f3 1dde dd 84 8a 1f b7 19 ad 18 19 2f b4 69;
第二派生数据为:01 01 10 00 00 03 00 c0 65 43 21 0e 00 01 00 04;
其中,工作密钥长度为24字节,确定工作密钥长度24字节与第二派生数据长度16字节的倍数为1.5,将非整数倍1.5向上取整得到整数倍2,根据第二派生数据生成包含整数倍个(即2个)数据单元的派生数据组01 01 10 00 00 03 00 c0 65 43 21 0e 00 01 0004、01 02 10 00 00 03 00 c0 65 43 21 0e 00 01 00 04,根据第二密钥78 bc fa c1 46e1 98 82 5f fd 68 98 b3 63 9f 68 d4 f3 1d de dd 84 8a 1f b7 19 ad 18 19 2f b469对派生数据组的每个数据单元进行加密,所得密文4a e1 03 5d 2a 41 e8 6d 43 88 608e 75 20 89 1d、e0 f2 04 22 bc bf 4f c9 f0 71 8e 98 39 a6 5d 78顺次拼接得到4ae1 03 5d 2a 41 e8 6d 43 88 60 8e 75 20 89 1d e0 f2 04 22 bc bf 4f c9 f0 71 8e98 39 a6 5d 78,从拼接后的密文中截取长度等于工作密钥长度的数据4a e1 03 5d 2a41 e8 6d 43 88 60 8e 75 20 89 1d e0 f2 04 22 bc bf 4f c9作为工作密钥;
本实施例中,以工作密钥算法为3DES192举例说明时,
第二密钥为:78 bc fa c1 46 e1 98 82 5f fd 68 98 b3 63 9f 68 d4 f3 1dde dd 84 8a 1f b7 19 ad 18 19 2f b4 69;
第二派生数据为:01 01 10 00 00 01 00 c0 65 43 21 0e 00 01 00 04;
其中,工作密钥长度为24字节,确定工作密钥长度24字节与第二派生数据长度16字节的倍数为1.5,将非整数倍1.5向上取整得到整数倍2,根据第二派生数据生成包含整数倍个(即2个)数据单元的派生数据组01 01 10 00 00 01 00 c0 65 43 21 0e 00 01 0004、01 02 10 00 00 01 00 c0 65 43 21 0e 00 01 00 04,根据第二密钥78 bc fa c1 46e1 98 82 5f fd 68 98 b3 63 9f 68 d4 f3 1d de dd 84 8a 1f b7 19 ad 18 19 2f b469对派生数据组的每个数据单元进行加密,所得密文ce c4 a2 88 55 84 57 2b 31 24 3104 f0 92 6f dc、40 30 78 db 14 e0 6f ae 2f b1 63 f7 7f 07 6f 17顺次拼接得到cec4 a2 88 55 84 57 2b 31 24 31 04 f0 92 6f dc 40 30 78 db 14 e0 6f ae 2f b1 63f7 7f 07 6f 17,从拼接后的密文中截取长度等于工作密钥长度的数据ce c4 a2 88 5584 57 2b 31 24 31 04 f0 92 6f dc 40 30 78 db 14 e0 6f ae作为工作密钥。
步骤220、终端根据操作指令和工作密钥执行相应的操作,将操作结果返回给上位机。
在本实施例中,工作密钥缓冲区中的数据包括: PIN码加密密钥、Mac校验值生成密钥、Mac校验值验证密钥、数据加密密钥、数据解密密钥、数据加解密密钥、密钥派生密钥等;
在本实施例中,以数据加密为例,终端收到的操作指令为:25 20 00 00 00 13 0001 30 00 06 01 00 00 00 08 01 02 03 04 05 06 07 08 02;
具体地,终端根据操作指令解析得到工作密钥用途、工作密钥算法标识、待加密数据长度、待加密数据;
其中,操作指令中第1-2字节为命令类别和命令码,用于标识数据加密/解密命令;操作指令中第3字节为操作码,例如,00代表加密;01代表解密;操作指令中第4字节为固定值;操作指令中第5-6字节为数据长度,高字节在前,低字节在后,假设为19字节;操作指令中第7-8字节为主密钥索引,例如0001;操作指令中第9-10字节为工作密钥用途,例如3000;操作指令中第11字节为工作密钥算法标识,例如06,表示AES-256算法;操作指令中第12字节为算法模式,例如01,代表ECB模式;操作指令中第13-14字节为初始向量长度,不使用,例如0000;操作指令中第15-16字节为数据长度,例如0008;操作指令中第17-24字节为数据内容,例如0102030405060708;操作指令中第25字节为填充模式,例如为02;
在本实施例中,若操作指令为数据加密时,根据操作指令和工作密钥缓冲区中的数据执行相应的操作,将操作结果返回给上位机具体为:终端获取操作指令中的待加密数据,获取工作密钥缓冲区中的数据作为密钥,按照预设加密算法根据密钥对待加密数据进行加密得到数据密文,将数据密文发送给上位机。
本申请根据上位机下发的操作指令确定工作密钥的算法和工作密钥用途,并根据不同的工作密钥算法和工作密钥用途生成不同的工作密钥,在生成工作密钥的过程中根据移位寄存器对工作密钥缓冲区中的数据进行迭代更新,以确保每次操作过程中生成的工作密钥都是唯一的,采用本申请提供的方法,较现有技术中,依据主密钥和主密钥算法生成与主密钥相同算法的工作密钥的加密方案更安全、适用范围也更广泛。
实施例3
基于上述本申请所提供的一种工作密钥生成方法的技术方案,本申请对应提供了一种工作密钥生成装置的结构示意图,如图5所示,本申请的一种工作密钥生成装置300可以包括:
接收模块301,用于接收上位机发送的操作指令;
获取模块302,用于根据操作指令中的密钥索引获取主密钥值、主密钥计数器值和主密钥算法;
处理模块303,用于将主密钥计数器值按照第一预设算法进行处理得到主密钥标识和第一数值;
设置模块304,用于初始化工作密钥缓冲区,将主密钥值存入工作密钥缓冲区,设置工作密钥计数值,初始化移位寄存器,设定移位寄存器的当前位;
第一判断模块305,用于判断第一数值中与移位寄存器当前位对应的位的值是否等于第二预设值;
计算模块306,用于根据当前移位寄存器的值和工作密钥计数值进行计算得到第一结果,将工作密钥计数值更新为第一结果;
生成模块307,用于根据主密钥标识、更新后的工作密钥计数值和主密钥算法生成第一派生数据;
生成模块307,还用于根据主密钥算法确定派生密钥的长度,获取工作密钥缓冲区中的数据作为第一密钥,根据第一密钥和第一派生数据生成符合派生密钥长度的数据,将工作密钥缓冲区中的数据更新为符合派生密钥长度的数据;
第二判断模块308,用于判断当前位是否为移位寄存器的最后一位;
控制模块309,用于第二判断模块判断当前位不为移位寄存器的最后一位时,控制移位寄存器按照预设方向移位,更新移位寄存器的当前位;
生成模块307,还用于根据操作指令设置工作密钥用途为第一用途,根据第一用途、主密钥标识、第一数值和主密钥算法生成第二派生数据;
生成模块307,还用于根据操作指令获取工作密钥算法,根据工作密钥算法确定工作密钥的长度,获取工作密钥缓冲区中的数据作为第二密钥,根据第二密钥和第二派生数据生成符合工作密钥长度的工作密钥;
执行模块310,用于根据操作指令和工作密钥执行相应的操作,将操作结果返回给上位机。
本申请实施例提供了一种电子设备,包括:存储器,用于存储计算机可读指令;以及处理器,用于运行所述计算机可读指令,使得所述计算机可读指令被所述处理器执行时实现本申请中的工作密钥生成方法。
本申请提供了一种计算机可读存储介质,用于存储计算机可读指令,当所述计算机可读指令由计算机执行时,使得所述计算机执行本申请中的工作密钥生成方法。
本申请提供的计算机可读存储介质,适用于上述的工作密钥生成方法的任一实施例,在此不再赘述。
以上对本申请所提供的一种工作密钥生成方法、装置及计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。

Claims (16)

1.一种工作密钥生成方法,其特征在于,所述方法包括:
步骤S1、终端接收上位机发送的操作指令,根据所述操作指令中的密钥索引获取主密钥值、主密钥计数器值和主密钥算法;
步骤S2、所述终端将所述主密钥计数器值按照第一预设算法进行处理得到主密钥标识和第一数值;
步骤S3、所述终端初始化工作密钥缓冲区,将所述主密钥值存入所述工作密钥缓冲区,设置工作密钥计数值,初始化移位寄存器,设定移位寄存器当前位;
步骤S4、所述终端判断第一数值中与移位寄存器当前位对应的位的值是否等于第二预设值,若是则执行步骤S5,否则执行步骤S8;
步骤S5、所述终端根据当前移位寄存器的值和工作密钥计数值进行计算得到第一结果,将工作密钥计数值更新为所述第一结果,执行步骤S6;
步骤S6、所述终端根据所述主密钥标识、更新后的工作密钥计数值和所述主密钥算法生成第一派生数据;
步骤S7、所述终端根据所述主密钥算法确定派生密钥的长度,获取工作密钥缓冲区中的数据作为第一密钥,根据所述第一密钥和所述第一派生数据生成符合派生密钥长度的数据,将工作密钥缓冲区中的数据更新为所述符合派生密钥长度的数据,执行步骤S8;
步骤S8、所述终端判断所述移位寄存器当前位是否为所述移位寄存器的最后一位,若是则执行步骤S9,否则控制所述移位寄存器按照预设方向移位,更新移位寄存器当前位,返回步骤S4;
步骤S9、所述终端根据所述操作指令设置工作密钥用途为第一用途,根据所述第一用途、所述主密钥标识、所述第一数值和所述主密钥算法生成第二派生数据,执行步骤S10;
步骤S10、所述终端根据所述操作指令获取工作密钥算法,根据所述工作密钥算法确定工作密钥的长度,获取工作密钥缓冲区中的数据作为第二密钥,根据所述第二密钥和所述第二派生数据生成符合工作密钥长度的工作密钥,根据所述操作指令和所述工作密钥执行相应的操作,将操作结果返回给上位机。
2.根据权利要求1所述的方法,其特征在于,所述步骤S2具体为:所述终端将所述主密钥计数器值分解为两部分,将第一预设字节作为主密钥标识,将第二预设字节作为第一数值。
3.根据权利要求1所述的方法,其特征在于,所述终端根据当前移位寄存器的值和工作密钥计数值进行计算得到第一结果具体为:所述终端按照第三预设算法对当前移位寄存器的值和工作密钥计数值进行计算得到第一结果。
4.根据权利要求1所述的方法,其特征在于,所述终端根据所述主密钥标识、更新后的工作密钥计数值和所述主密钥算法生成第一派生数据具体包括:所述终端根据密钥派生用途、所述主密钥标识、更新后的工作密钥计数值和所述主密钥算法生成第一派生数据;所述密钥派生用途具体为一个数值,用于表示密钥用途是密钥派生。
5.根据权利要求4所述的方法,其特征在于,所述终端根据密钥派生用途、所述主密钥标识、更新后的工作密钥计数值和所述主密钥算法生成第一派生数据具体为:
所述终端根据第四预设值、所述密钥派生用途、所述主密钥算法对应的值、所述主密钥标识的预设字节值、所述更新后的工作密钥计数值顺序拼接得到预设长度的数据。
6.根据权利要求1所述的方法,其特征在于,所述根据所述第一密钥和所述第一派生数据生成符合派生密钥长度的数据,具体为:将符合派生密钥长度的数据作为目标密钥,确定目标密钥长度与所述第一派生数据长度的倍数,根据所述倍数和所述第一派生数据生成第一派生数据组,根据所述第一密钥对所述第一派生数据组进行加密得到符合派生密钥长度的数据。
7.根据权利要求6所述的方法,其特征在于,当所述倍数为整数倍时,所述根据所述倍数和所述第一派生数据生成第一派生数据组,根据所述第一密钥对所述第一派生数据组进行加密得到符合派生密钥长度的数据具体包括:根据所述第一派生数据生成包含所述整数倍个数据单元的派生数据组,根据所述第一密钥对派生数据组的每个数据单元进行加密,所得密文顺次拼接得到符合派生密钥长度的数据。
8.根据权利要求6所述的方法,其特征在于,当所述倍数为非整数倍时,所述根据所述倍数和所述第一派生数据生成第一派生数据组,根据所述第一密钥对所述第一派生数据组进行加密得到符合派生密钥长度的数据具体包括:将所述非整数倍向上取整得到整数倍,根据所述第一派生数据生成包含所述整数倍个数据单元的派生数据组,根据所述第一密钥对派生数据组的每个数据单元进行加密,所得密文顺次拼接,从拼接后的密文中截取长度等于目标密钥长度的数据作为符合派生密钥长度的数据。
9.根据权利要求1所述的方法,其特征在于,所述步骤S9中,所述根据所述第一用途、所述主密钥标识、所述第一数值和所述主密钥算法生成第二派生数据具体为:
所述终端根据第四预设值、所述第一用途、所述主密钥算法对应的值、所述主密钥标识的预设字节值、所述第一数值顺序拼接得到预设长度的数据。
10.根据权利要求1所述的方法,其特征在于,所述根据所述第二密钥和所述第二派生数据生成符合工作密钥长度的工作密钥,具体为:确定工作密钥长度与所述第二派生数据长度的倍数,根据所述倍数和所述第二派生数据生成第二派生数据组,根据所述第二密钥对所述第二派生数据组进行加密得到符合工作密钥长度的工作密钥。
11.根据权利要求10所述的方法,其特征在于,当所述倍数为整数倍时,所述根据所述倍数和所述第二派生数据生成第二派生数据组,根据所述第二密钥对所述第二派生数据组进行加密得到符合工作密钥长度的工作密钥具体包括:根据所述第二派生数据生成包含所述整数倍个数据单元的派生数据组,根据所述第二密钥对派生数据组的每个数据单元进行加密,所得密文顺次拼接得到符合工作密钥长度的工作密钥。
12.根据权利要求10所述的方法,其特征在于,当所述倍数为非整数倍时,所述根据所述倍数和所述第二派生数据生成第二派生数据组,根据所述第二密钥对所述第二派生数据组进行加密得到符合工作密钥长度的工作密钥具体包括:将所述非整数倍向上取整得到整数倍,根据所述第二派生数据生成包含所述整数倍个数据单元的派生数据组,根据所述第二密钥对派生数据组的每个数据单元进行加密,所得密文顺次拼接,从拼接后的密文中截取长度等于工作密钥长度的数据作为符合工作密钥长度的工作密钥。
13.根据权利要求1所述的方法,其特征在于,所述终端判断第一数值中与移位寄存器当前位对应的位的值是否等于第二预设值具体为:所述终端根据第二预设算法对所述移位寄存器当前位的值和所述第一数值中与移位寄存器当前位对应的位的值进行计算,根据计算结果判断第一数值中与移位寄存器当前位对应的位的值是否等于第二预设值。
14.一种工作密钥生成装置,其特征在于,所述装置包括:
接收模块,用于接收上位机发送的操作指令;
获取模块,用于根据所述操作指令中的密钥索引获取主密钥值、主密钥计数器值和主密钥算法;
处理模块,用于将所述主密钥计数器值按照第一预设算法进行处理得到主密钥标识和第一数值;
设置模块,用于初始化工作密钥缓冲区,将所述主密钥值存入所述工作密钥缓冲区,设置工作密钥计数值,初始化移位寄存器,设定移位寄存器当前位;
第一判断模块,用于判断第一数值中与移位寄存器当前位对应的位的值是否等于第二预设值;
计算模块,用于根据当前移位寄存器的值和工作密钥计数值进行计算得到第一结果,将工作密钥计数值更新为第一结果;
生成模块,用于根据所述主密钥标识、更新后的工作密钥计数值和所述主密钥算法生成第一派生数据;
所述生成模块,还用于根据所述主密钥算法确定派生密钥的长度,获取工作密钥缓冲区中的数据作为第一密钥,根据所述第一密钥和所述第一派生数据生成符合派生密钥长度的数据,将工作密钥缓冲区中的数据更新为所述符合派生密钥长度的数据;
第二判断模块,用于判断当前位是否为移位寄存器的最后一位;
控制模块,用于所述第二判断模块判断当前位不为移位寄存器的最后一位时,控制移位寄存器按照预设方向移位,更新移位寄存器当前位;
所述生成模块,还用于根据所述操作指令设置工作密钥用途为第一用途,根据所述第一用途、所述主密钥标识、所述第一数值和所述主密钥算法生成第二派生数据;
所述生成模块,还用于根据所述操作指令获取工作密钥算法,根据所述工作密钥算法确定工作密钥的长度,获取工作密钥缓冲区中的数据作为第二密钥,根据所述第二密钥和所述第二派生数据生成符合工作密钥长度的工作密钥;
执行模块,用于根据所述操作指令和所述工作密钥执行相应的操作,将操作结果返回给上位机。
15.一种电子设备,其特征在于,包括:存储器,用于存储计算机可读指令;以及处理器,用于运行所述计算机可读指令,使得所述计算机可读指令被所述处理器执行时实现权利要求1到13中任意一项所述的工作密钥生成方法。
16.一种计算机可读存储介质,其特征在于,用于存储计算机可读指令,当所述计算机可读指令由计算机执行时,使得所述计算机执行权利要求1到13中任意一项所述的工作密钥生成方法。
CN202111083495.5A 2021-09-16 2021-09-16 工作密钥生成方法、装置及计算机可读存储介质 Active CN113541947B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111083495.5A CN113541947B (zh) 2021-09-16 2021-09-16 工作密钥生成方法、装置及计算机可读存储介质
PCT/CN2022/101736 WO2023040410A1 (zh) 2021-09-16 2022-06-28 工作密钥生成方法、装置及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111083495.5A CN113541947B (zh) 2021-09-16 2021-09-16 工作密钥生成方法、装置及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN113541947A CN113541947A (zh) 2021-10-22
CN113541947B true CN113541947B (zh) 2021-11-26

Family

ID=78123197

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111083495.5A Active CN113541947B (zh) 2021-09-16 2021-09-16 工作密钥生成方法、装置及计算机可读存储介质

Country Status (2)

Country Link
CN (1) CN113541947B (zh)
WO (1) WO2023040410A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113541947B (zh) * 2021-09-16 2021-11-26 飞天诚信科技股份有限公司 工作密钥生成方法、装置及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108573176A (zh) * 2018-03-22 2018-09-25 福建师范大学 一种密钥派生加密的移动终端数据安全删除的方法及系统
CN111625791A (zh) * 2020-04-28 2020-09-04 郑州信大捷安信息技术股份有限公司 一种基于软件密码模块的密钥管理方法及系统
CN113094765A (zh) * 2019-12-23 2021-07-09 爱思开海力士有限公司 存储器以及存储系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6287785B2 (ja) * 2014-11-28 2018-03-07 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
US20170163417A1 (en) * 2015-12-08 2017-06-08 Qualcomm Incorporated Apparatus and method for key provisioning
US11586760B2 (en) * 2019-06-24 2023-02-21 Main Sequence Technology, Inc. System and method for associating multiple logins to a single record in a database
CN113541947B (zh) * 2021-09-16 2021-11-26 飞天诚信科技股份有限公司 工作密钥生成方法、装置及计算机可读存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108573176A (zh) * 2018-03-22 2018-09-25 福建师范大学 一种密钥派生加密的移动终端数据安全删除的方法及系统
CN113094765A (zh) * 2019-12-23 2021-07-09 爱思开海力士有限公司 存储器以及存储系统
CN111625791A (zh) * 2020-04-28 2020-09-04 郑州信大捷安信息技术股份有限公司 一种基于软件密码模块的密钥管理方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种改进DUKPT密钥管理系统的单片机设计;陈章余;《电子器件》;20150420(第02期);全文 *

Also Published As

Publication number Publication date
WO2023040410A1 (zh) 2023-03-23
CN113541947A (zh) 2021-10-22

Similar Documents

Publication Publication Date Title
US5231666A (en) Cryptographic method for updating financial records
CN111131278B (zh) 数据处理方法及装置、计算机存储介质、电子设备
RU2683853C1 (ru) Способ улучшения ключа системы gprs, устройство sgsn, пользовательское устройство, hlr/hss и система gprs
CN105184566B (zh) 一种智能密钥设备的工作方法
US10547449B2 (en) Protection against relay attacks in a white-box implementation
KR20070122491A (ko) 키 재료 생성 방법
CN109560931A (zh) 一种基于无证书体系的设备远程升级方法
US20130039495A1 (en) Secure key management
CN113541947B (zh) 工作密钥生成方法、装置及计算机可读存储介质
US8675871B2 (en) Protecting a control vector in an optional block of a standard key block
CN105007157A (zh) 基于设备生成的密钥来生成和管理多个基密钥
CN111199047B (zh) 数据加密方法、解密方法、装置、设备及存储介质
CN106778285A (zh) 用于对设备进行升级的方法、装置
CN109413084A (zh) 一种口令更新方法、装置及系统
CN115242514B (zh) 基于国密的隐私集合求交方法、系统、电子设备及存储介质
CN109687966A (zh) 加密方法及其系统
CN102801529A (zh) 一种卡片安全通讯的方法
CN109815666A (zh) 基于fido协议的身份认证方法、装置、存储介质和电子设备
US8619992B2 (en) Secure key creation
CN104618380A (zh) 一种适用于物联网的密钥更新方法
CN109756451B (zh) 一种信息交互方法及装置
CN109451504A (zh) 物联网模组鉴权方法及系统
CN113452705A (zh) 一种加密通信方法、装置、电子设备和存储介质
CN117579294A (zh) 一种防御型数据安全通信方法
US20240214193A1 (en) Method and Apparatus for Generating Working Key, and Computer-Readable Storage Medium

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant