CN111565206B - 一种安全传输密钥的方法及终端 - Google Patents
一种安全传输密钥的方法及终端 Download PDFInfo
- Publication number
- CN111565206B CN111565206B CN202010687464.XA CN202010687464A CN111565206B CN 111565206 B CN111565206 B CN 111565206B CN 202010687464 A CN202010687464 A CN 202010687464A CN 111565206 B CN111565206 B CN 111565206B
- Authority
- CN
- China
- Prior art keywords
- key
- data
- plaintext data
- module
- ciphertext
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
- H04L63/0435—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明涉及一种安全传输密钥的方法和终端,包括:终端接收并解析密钥块数据获取密文密钥、密钥块头域以及第一MAC值,终端获取自身保存的保护密钥和初始向量,使用保护密钥对初始向量进行加密得到子密钥,根据子密钥得到数据块数据密钥、数据块消息密钥、第三密钥和第四密钥;根据数据块数据密钥、数据块消息密钥、第一MAC值、第三密钥以及第四密钥获得明文数据包和第二MAC值,根据第一MAC值验证第二MAC值,如果第二MAC值验证成功,则从明文数据包中获取有效长度的密钥注入密钥容器;本发明技术方案,通过分散保护密钥的方式,保证了密钥传输过程中的安全性。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种安全传输密钥的方法。
背景技术
在两个支持对称密钥体系的设备之间进行敏感数据传输时,需要用对称密钥等对敏感数据等信息进行加密及校验数据完整性。采用密钥对敏感数据进行加密是目前比较通用的一种方式。敏感数据被加密后,在网络上传输的接口报文内容将会由明文内容变为密文内容,保证敏感数据的安全性。
但是,由于目前采用的密钥为对称密钥,在传输过程中不安全,因此如何保证密钥在传输过程中的安全性成为了亟待解决的问题。
发明内容
根据本发明一方面,提供一种安全传输密钥的方法,包括:
步骤a:终端接收密钥块数据,解析密钥块数据获取密钥块头域、密文密钥以及第一MAC值;
步骤b:终端获取自身保存的保护密钥和初始向量,使用保护密钥对初始向量进行加密得到子密钥,根据子密钥得到数据块数据密钥、数据块消息密钥、第三密钥和第四密钥;
步骤c:终端根据预设长度将密文密钥分组,将第一组密文密钥作为当前组密文密钥,使用数据块数据密钥解密当前组密文密钥得到第一解密值,根据第一解密值和第一MAC值得到当前组明文数据,判断是否存在下一组密文密钥,如果是,执行步骤d;否则,获得密文密钥的明文数据,执行步骤e;
步骤d:终端将下一组密文密钥作为当前组密文密钥,使用数据块数据密钥解密当前组密文密钥得到第二解密值,根据第二解密值和前一组密文密钥得到当前组密文密钥的明文数据,判断是否存在下一组密文密钥,如果是,执行步骤d;否则,获得密文密钥的明文数据,执行步骤e;
步骤e:终端将密文密钥的明文数据和密钥块头域组成明文数据包,判断明文数据包长度是否符合预设条件,如果是,根据数据块消息密钥、明文数据包以及第三密钥得到第二MAC值,执行步骤f;否则,填充明文数据包使明文数据包长度符合预设条件,根据数据块消息密钥、明文数据包以及第四密钥得到第二MAC值,执行步骤f;
步骤f:终端根据第一MAC值验证第二MAC值是否正确,如果是,从明文数据包中获取有效长度的密钥注入密钥容器,结束;否则,报错,退出。
根据本发明另一方面,提供一种安全传输密钥的终端,包括:
接收模块,用于接收密钥块数据;
解析模块,用于解析接收模块接收的密钥块数据获取密钥块头域、密文密钥以及第一MAC值;
第一获取模块,用于获取终端自己保存的保护密钥和初始向量;
加密模块,用于使用第一获取模块获取的保护密钥对第一获取模块获取的初始向量进行加密得到子密钥;
第二获取模块,用于根据加密模块得到的子密钥得到数据块数据密钥、第三密钥和第四密钥;
解密模块,用于根据预设长度将解析模块获取的密文密钥分组,将第一组密文密钥作为当前组密文密钥,使用第二获取模块获取的数据块数据密钥解密当前组密文密钥得到第一解密值;
第二获取模块还用于根据解密模块得到的第一解密值和解析模块获取的第一MAC值得到当前组密文密钥的明文数据;
第一判断模块,用于当第二获取模块获取到当前组密文密钥的明文数据时,判断是否存在下一组密文密钥;
解密模块还用于当第一判断模块判断出存在下一组密文密钥时,将下一组密文密钥作为当前组密文密钥,使用第二获取模块获取的数据块数据密钥解密当前组密文密钥得到第二解密值;
第二获取模块还用于根据解密模块得到的第二解密值和前一组密文密钥得到当前组密文密钥的明文数据;并在第一判断模块判断出不存在下一组密文密钥时,获得密文密钥的明文数据;
第二判断模块,用于将第二获取模块获得的密文密钥的明文数据和密钥块头域组成明文数据包,判断明文数据包长度是否符合预设条件;
第二获取模块还用于当第二判断模块判断出明文数据包长度符合预设条件时,根据数据块消息密钥、明文数据包以及第三密钥得到第二MAC值;
填充模块,用于当第二判断模块判读出明文数据包长度不符合预设条件时,填充明文数据包使明文数据包长度符合预设条件,触发第二获取模块;
第二获取模块还用于当填充模块填充明文数据包使明文数据包长度符合预设条件后,根据数据块消息密钥、明文数据包以及第四密钥得到第二MAC值;
验证模块,用于根据第一MAC值验证第二MAC值是否正确;
注入模块,用于当验证模块根据第一MAC值验证出第二MAC值正确时,从明文数据包中获取有效长度的密钥注入密钥容器;
报错模块,用于当验证模块验根据第一MAC值验证出第二MAC值不正确时,报错。
本发明技术方案,通过分散保护密钥的方式,保证了密钥传输过程中的安全性。
附图说明
图1为根据本发明实施例一提供的一种安全传输密钥的方法的流程图;
图2为根据本发明实施例二提供的一种安全传输密钥的方法的流程图;
图3为根据本发明实施例三提供一种安全传输密钥的终端的方框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
根据本发明实施例一,提供一种安全传输密钥的方法,如图1所示,该方法包括:
步骤a:终端接收密钥块数据,解析密钥块数据获取密钥块头域、密文密钥以及第一MAC值;
步骤b:终端获取自身保存的保护密钥和初始向量,使用保护密钥对初始向量进行加密得到子密钥,根据子密钥得到数据块数据密钥、第三密钥和第四密钥;
步骤c:终端根据预设长度将密文密钥分组,将第一组密文密钥作为当前组密文密钥,使用数据块数据密钥解密当前组密文密钥得到第一解密值,根据第一解密值和第一MAC值得到当前组明文数据,判断是否存在下一组密文密钥,如果是,执行步骤d;否则,获得密文密钥的明文数据,执行步骤e;
步骤d:终端将下一组密文密钥作为当前组密文密钥,使用数据块数据密钥解密当前组密文密钥得到第二解密值,根据第二解密值和前一组密文密钥得到当前组密文密钥的明文数据,判断是否存在下一组密文密钥,如果是,执行步骤d;否则,获得密文密钥的明文数据,执行步骤e;
步骤e:终端将密文密钥的明文数据和密钥块头域组成明文数据包,判断明文数据包长度是否符合预设条件,如果是,根据数据块消息密钥、明文数据包以及第三密钥得到第二MAC值,执行步骤f;否则,填充明文数据包使所述明文数据包长度符合预设条件,根据数据块消息密钥、明文数据包以及第四密钥得到第二MAC值,执行步骤f;
步骤f:终端根据第一MAC值验证第二MAC值是否正确,如果是,从明文数据包中获取有效长度密钥注入密钥容器,结束;否则,报错,退出。
可选地,步骤b具体包括:
步骤b-1:终端获取自身保存的保护密钥和初始向量,使用保护密钥对初始向量进行AES加密得到子密钥,根据子密钥得到第一密钥,根据第一密钥得到第二密钥;
步骤b-2:终端获取自身保存的临时向量,根据临时向量、第一密钥、第二密钥得到数据块消息密钥和数据块数据密钥;
步骤b-3:终端使用数据块消息密钥对初始向量进行AES加密生成消息密钥子密钥,根据消息密钥子密钥得到第三密钥,根据第三密钥得到第四密钥。
可选地,步骤b-1中根据子密钥得到第一密钥具体为:
终端判断子密钥是否符合第一预设条件,如果是,将子密钥左移一位得到第一密钥;否则,将子密钥左移一位,取最低字节与第一预设向量进行异或运算得到第一密钥。
可选地,终端判断子密钥是否符合第一预设条件具体为:
终端判断子密钥最高位是否为0,如果是,则子密钥符合第一预设条件;如果否,则子秘钥不符合第一预设条件。
可选地,步骤b-1中根据第一密钥生成第二密钥具体为:
终端判断第一密钥是否符合第二预设条件,如果是,将第一密钥左移一位得到第二密钥;否则,将第一密钥左移一位,取最低字节与第一预设向量进行异或运算得到第二密钥。
可选地,终端判断第一密钥是否符合第二预设条件具体为:
终端判断第一密钥的最高位是否为0,如果是,则第一密钥符合第二预设条件,如果否,则第一密钥不符合第二预设条件。
可选地,步骤b-2具体包括:
步骤b-21:终端获取自身保存的临时向量,根据保护密钥获取第二预设向量,用第二预设向量赋值临时向量;
步骤b-22:终端判断临时向量的长度是否等于AES分组长度,如果是,将临时向量与第一密钥进行异或运算获得第一异或结果,执行步骤b-24;否则,执行步骤b-23;
步骤b-23:当临时向量小于AES分组长度时,终端对临时向量进行填充得到填充后的临时向量,用填充后的临时向量与第二密钥进行异或运算得到第一异或结果,执行步骤b-24;
步骤b-24:终端对第一异或结果进行AES加密生成数据块数据密钥;
步骤b-25:终端根据保护密钥获取第三预设向量,用第三预置向量赋值临时向量;
步骤b-26:终端判断临时向量的长度是否等于AES分组长度,如果是,将临时向量与第一密钥进行异或运算获得第二异或结果,执行步骤b-28;否则,执行步骤b-27;
步骤b-27:当临时向量小于分组长度时,终端对临时向量进行填充,填充之后的临时向量与第二密钥进行异或运算得到第二异或结果,执行步骤b-28;
步骤b-28:终端对第二异或结果进行AES加密得到数据块消息密钥。
可选地,步骤b-3具体包括:
步骤b-31:终端使用数据块消息密钥对初始向量进行AES加密生成消息密钥子密钥,判断消息密钥子密钥是否符合第三预设条件,如果是,将消息密钥子密钥左移一位得到第三密钥,执行步骤b-32;否则,将消息密钥子密钥左移一位,取最低字节与第一预设向量进行异或运算得到第三密钥,执行步骤b-32;
步骤b-32:终端判断第三密钥是否符合第四预设条件,如果是,将第三密钥左移一位得到第四密钥;否则将第三密钥左移一位,取最低字节与第一预设向量进行异或运算得到第四密钥。
可选地,步骤b-31中判断消息密钥子密钥是否符合第三预设条件具体为:终端判断消息密钥子密钥最高位是否为0,如果是,则消息密钥子密钥符合第三预设条件,如果否,则消息密钥子秘钥不符合第三预设条件。
可选地,步骤b-32中终端判断第三密钥是否符合第四预设条件具体为:终端判断第三密钥的最高位是否为0,如果是,则第三密钥符合第四预设条件,如果否,则第三密钥不符合第四预设条件。
可选地,步骤c中获取密文密钥的明文数据具体为:
将获得的密文密钥的每组明文数据拼接得到密文密钥的明文数据。
可选地,步骤d中获得密文密钥的明文数据具体为:将获得的密文密钥的每组明文数据拼接得到密文密钥的明文数据。
可选地,步骤e具体包括:
步骤e1:终端将密文密钥的明文数据和密钥块头域组成明文数据包,判断明文数据包长度是否可以被分组长度整除,如果是,将明文数据包分组,将最后一组明文数据与第三密钥进行异或,将异或结果替换最后一组明文数据组成新的数据包,将第一组明文数据作为当前组明文数据,使用数据块消息密钥对当前组明文数据进行AES加密得到当前组密文数据,执行步骤e2;否则,填充明文数据包,将明文数据包分组,将最后一组明文数据与第四密钥进行异或,将异或结果替换最后一组明文数据组成新的数据包,将第一组明文数据作为当前明文数据,使用数据块消息密钥对当前组明文数据进行AES加密得到当前组密文数据,执行步骤e4;
步骤e2:终端将下一组明文数据作为当前组明文数据,将当前组密文数据和当前组明文数据进行异或运算得到第一运算结果,使用数据块消息密钥对第一运算结果进行AES加密得到下一组密文数据,将下一组密文数据作为当前组密文数据;判断是否还存下一组明文数据,如果是,执行步骤e2;否则,执行步骤e3;
步骤e3:终端将当前组明文数据与第三密钥进行异或运算得到第二运算结果,将第二运算结果与前一组密文数据进行异或得到第三运算结果,用数据块消息密钥对第三运算结果进行AES加密得到第二MAC值,执行步骤f;
步骤e4:终端将下一组明文数据作为当前组明文数据,将当前组密文数据和当前组明文数据进行异或得到第四运算结果,使用数据块消息密钥对第四运算结果进行AES加密得到下一组密文数据,将下一组密文数据作为当前组密文数据,判断是否还存在下一组明文数据,如果是,执行步骤e4;否则,执行步骤e5;
步骤e5:终端将当前组明文数据与第四密钥进行异或运算得到第五运算结果,将第五运算结果与前一组密文数据进行异或运算得到第六运算结果,用数据块消息密钥对第六运算结果进行AES加密得到第二MAC值,执行步骤f。
实施例二
根据本发明实施例二,提供一种安全传输密钥的方法,如图2所示,该方法包括:
步骤201:终端接收并解析密钥块数据,判断密钥块数据中是否存在保护密钥,如果是,执行步骤202;否则,退出并返回错误码;
可选地,密钥块数据具体包括:密钥块的头域、加密的密钥以及MAC数据;
例如:密钥块数据为0x42, 0x30, 0x31, 0x32, 0x30, 0x44, 0x30, 0x41,0x4e, 0x30, 0x30, 0x45, 0x30, 0x31, 0x30, 0x30, 0x4b, 0x53, 0x30, 0x38, 0x30,0x34, 0x31, 0x30, 0x31, 0x39, 0x35, 0x39, 0x34, 0x38, 0x44, 0x41, 0x37, 0x44,0x37, 0x37, 0x32, 0x45, 0x31, 0x31, 0x44, 0x36, 0x38, 0x44, 0x42, 0x31, 0x30,0x46, 0x35, 0x34, 0x46, 0x37, 0x33, 0x43, 0x36, 0x30, 0x43, 0x39, 0x42, 0x31,0x42, 0x45, 0x39, 0x44, 0x44, 0x31, 0x46, 0x36, 0x36, 0x41, 0x37, 0x46, 0x32,0x37, 0x33, 0x44, 0x41, 0x33, 0x42, 0x45, 0x44, 0x34, 0x32, 0x38, 0x32, 0x37,0x35, 0x37, 0x43, 0x34, 0x42, 0x30, 0x34, 0x35, 0x39, 0x35, 0x41, 0x39, 0x46,0x30, 0x31, 0x30, 0x44, 0x35, 0x39, 0x42, 0x41, 0x43, 0x43, 0x45, 0x33, 0x44,0x43, 0x37, 0x37, 0x42, 0x31, 0x39, 0x45, 0x36;
步骤202:终端获取密钥块的保护密钥,判断是否获取成功,如果是,执行步骤203;否则,退出并返回错误码;
步骤203:终端根据密钥块的头域获取并储存密钥块信息、解密密钥信息以及可选块信息;
可选地,密钥块信息包括:密钥块序号、密钥块长度;解密密钥信息包括:密钥用途、密钥算法、密钥算法用途、密钥版本号;可选块信息包括:可选块数量、可选块序号、可选块长度以及可选块数据。
步骤204:终端判断解密密钥信息是否合法,如果是,执行步骤205;否则,退出并返回错误码;
优选地,步骤204包括:
步骤s204-1:终端判断解密密钥用途字段是否合法,如果是,执行步骤s204-2;否则,退出并返回错误码;
步骤s204-2:终端判断解密密钥算法字段是否合法,如果是,执行步骤s204-3;否则,退出并返回错误码;
步骤s204-3:终端判断解密密钥算法用途字段是否合法,如果是,解密密钥信息合法,执行步骤205;否则,退出并返回错误码。
步骤205:终端从可选块信息中获取可选块数量和可选块数据;
步骤206:终端根据密钥块长度以及可选块数量分析密文密钥数据区和MAC区的数据,将密文密钥数据区和MAC区的数据转化为预设格式并保存;
优选地,将密钥密文数据区和MAC区的数据转化为预设格式具体为:将密钥密文数据区和MAC区的数据转化为HEX格式的数据;
步骤207:终端获取第一预设向量,使用保护密钥对初始向量进行AES加密,生成子密钥,判断子密钥的最高字节是否为0,如果是,子密钥左移一位得到第一密钥K1,执行步骤208;否则,子密钥左移一位,取最低字节与第一预设向量进行异或运算得到第一密钥K1,执行步骤208;
优选地,本实施例中,初始向量为0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x000x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00;第一预设向量具体为0x87;第一预设向量具体为0x87;
步骤208:终端判断第一密钥K1的最高位是否为0,如果是,第一密钥K1左移一位得到第二密钥K2,执行步骤209;否则,第一密钥K1左移一位,取最低字节与第一预设向量进行异或运算得到第二密钥K2,执行步骤209;
步骤209:终端根据保护密钥获取第二预置向量,用第二预置向量赋值临时向量;
优选地,第二预设向量具体为协议预置向量;
步骤210:终端判断临时向量的长度是否等于AES分组长度,如果是,将临时向量和第一密钥K1进行异或运算得到异或运算结果,执行步骤212;否则,执行步骤211;
步骤211:当临时向量小于分组长度时,终端对临时向量进行填充得到的填充之后的临时向量,填充之后的临时向量与第二密钥K2进行异或运算得到异或运算结果,执行步骤212;
可选地,当临时向量小于分组长度时,报错;
优选地,终端对临时向量进行填充具体为:起始为0x80+(分组长度-临时向量长度)的字节的00;
步骤212:终端对异或运算结果进行AES加密生成数据块数据密钥;
步骤213:终端根据保护密钥获取第三预设向量,用第三预设向量赋值临时向量;
可选地,第三设置向量为协议预置向量;
步骤214:终端判断临时向量的长度是否等于AES分组长度,如果是,将临时向量与第一密钥K1进行异或运算得到异或运算结果,执行步骤216;否则,执行步骤215;
步骤215:当临时向量小于分组长度时,终端对临时向量进行填充,填充之后的临时向量与第二密钥K2进行异或运算得到异或运算结果,执行步骤216;
可选地,当临时向量小于分组长度时,报错;
步骤216:终端对异或运算结果进行AES加密得到数据消息密钥;
步骤217:终端使用数据块消息密钥对初始向量进行AES加密,生成数据块消息密钥子密钥,判断数据块消息密钥子密钥的高字节是否为0,如果是,数据块消息密钥子密钥左移一位得到第三密钥KM1,执行步骤218;否则,数据块消息密钥子密钥左移一位,取最低字节与第一预设向量进行异或运算得到第三密钥KM1,执行步骤218;
步骤218:终端判断第三密钥KM1最高位是否为0,如果是,第三密钥KM1左移一位得到第四密钥KM2,执行步骤219;否则,第三密钥KM1左移一位,取最低字节与第一预设向量进行异或运算得到第四密钥KM2,执行步骤219;
步骤219:终端将密文密钥分组,将第一组密文密钥作为当前组密文密钥,并用数据块数据密钥对当前组密文密钥进行AES解密得到第一解密值,第一解密值和密文密钥的第一MAC值进行异或运算得到当前组明文数据;判断是否存在下一组密文密钥,如果是,执行步骤220;否则,执行步骤221;
步骤220:终端将下一组密文密钥作为当前组密文密钥,使用数据块数据密钥对当前组密文密钥进行AES解密得到第二解密值,第二解密值和上一组密文密钥进行异或运算得到当前组密文密钥的明文数据,判断是否存在下一组密文密钥,如果是,继续执行步骤220;否则,执行步骤221;
步骤221:终端将密文密钥的明文数据和密钥块头域组成明文数据包,将明文数据包分组,判断明文数据包是否可以被分组长度整除,如果是,将最后一组明文数据与第三密钥KM1进行异或,将异或结果替换最后一组明文数据组成新的数据包,将第一组明文数据作为当前组明文数据,使用数据块消息密钥对当前组明文数据进行AES加密得到当前组密文数据,执行步骤222;否则,填充明文数据包至可以被分组长度整除,取最后一组明文数据与第四密钥KM2进行异或运算,将异或结果替换最后一组明文数据组成新的数据包,将第一组明文数据作为当前组明文数据,使用数据块消息密钥对当前组明文数据进行AES加密得到当前组密文数据,执行步骤224;
步骤222:终端将下一组明文数据作为当前组明文数据,当前组密文数据和当前组明文数据进行异或运算得到第一运算结果,使用数据块消息密钥对第一运算结果进行AES加密得到下一组密文密钥,将下一组密文数据作为当前组密文数据;判断是否还存下一组明文数据,如果是,继续执行步骤222;否则,执行步骤223;
步骤223:终端将当前组明文数据包与第三密钥KM1进行异或运算得到第二运算结果,将第二运算结果与前一组密文密钥进行异或得到第三运算结果,用数据块消息密钥对第三运算结果进行AES加密得到第二MAC值,执行步骤226;
步骤224:终端将下一组明文数据作为当前组明文数据,当前组密文数据和当前组明文数据进行异或运算得到第四运算结果,使用数据块消息密钥对第四运算结果进行AES加密得到下一组密文密钥,将下一组密文数据作为当前组密文数据,判断是否还存在下一组明文数据,如果是,继续执行步骤224;否则,执行步骤225;
步骤225:终端将当前组明文数据与第四密钥进行异或运算得到第五运算结果,将第五运算结果与前一组密文数据进行异或运算得到第六运算结果,用数据块消息密钥对第六运算结果进行AES加密得到第二MAC值,执行步骤226;
步骤226:终端判断第一MAC值和第二MAC值是否相同,如果是,从明文数据包中获取有效长度的AES密钥,并将AES密钥注入密钥容器,结束;否则,报错,退出。
实施例三
根据本发明实施例三,提供一种安全传输密钥的终端,如图3所示,包括:
接收模块301,用于接收密钥块数据;
解析模块302,用于解析接收模块301接收的密钥块数据获取密钥块头域、密文密钥以及第一MAC值;
第一获取模块303,用于获取终端自己保存的保护密钥和初始向量;
加密模块304,用于使用第一获取模块303获取的保护密钥对第一获取模块303获取的初始向量进行加密得到子密钥;
第二获取模块305,用于根据加密模块304得到的子密钥得到数据块数据密钥、数据块消息密钥、第三密钥和第四密钥;
解密模块306,用于根据预设长度将解析模块302获取的密文密钥分组,将第一组密文密钥作为当前组密文密钥,使用第二获取模块305获取的数据块数据密钥解密当前组密文密钥得到第一解密值;
第二获取模块305还用于根据解密模块306得到的第一解密值和解析模块302获取的第一MAC值得到当前组密文密钥的明文数据;
第一判断模块307,用于当第二获取模块305获取到当前组密文密钥的明文数据时,判断是否存在下一组密文密钥;
解密模块306还用于当第一判断模块307判断出存在下一组密文密钥时,将下一组密文密钥作为当前组密文密钥,使用第二获取模块305获取的数据块数据密钥解密当前组密文密钥得到第二解密值;
第二获取模块305还用于根据解密模块306得到的第二解密值和前一组密文密钥得到当前组密文密钥的明文数据;并在第一判断模块307判断出不存在下一组密文密钥时,获得密文密钥的明文数据;
第二判断模块308,用于将第二获取模块305获得的密文密钥的明文数据和密钥块头域组成明文数据包,判断明文数据包长度是否符合预设条件;
第二获取模块305还用于当第二判断模块308判断出明文数据包长度符合预设条件时,根据数据块消息密钥、明文数据包以及第三密钥得到第二MAC值;
填充模块309,用于当第二判断模块308判断出明文数据包长度不符合预设条件时,填充明文数据包使明文数据包长度符合预设条件,触发第二获取模块305;
第二获取模305块还用于当填充模块309填充明文数据包使明文数据包长度符合预设条件后,根据数据块消息密钥、明文数据包以及第四密钥得到第二MAC值;
验证模块310,用于根据第一MAC值验证第二MAC值是否正确;
注入模块311,用于当验证模块310根据第一MAC值验证出第二MAC值正确时,从明文数据包中获取有效长度的密钥注入密钥容器;
报错模块312,用于当验证模块310根据第一MAC值验证出第二MAC值不正确时,报错。
可选地,加密模块304具体用于使用第一获取模块303获取的保护密钥对第一获取模块303获取的初始向量进行AES加密得到子密钥;
第二获取模块305包括:
第一获取子模块,用于根据加密模块得到的子密钥得到第一密钥;
第二获取子模块,用于根据第一获取子模块获取到的第一密钥获取第二密钥;
第一获取模块303还用于获取自身保存的临时向量;
第三子获取模块,用于根据第一获取模块303获取的临时向量、第一密钥、第二密钥得到数据块消息密钥和数据块数据密钥;
加密模块304还用于使用数据块消息密钥对初始向量进行AES加密生成消息密钥子密钥;
第四子获取模块,用于根据消息密钥子密钥得到第三密钥,根据第三密钥得到第四密钥。
可选地,第一获取子模块包括:
第一判断单元,用于判断子密钥是否符合第一预设条件;
第一获取子模块具体用于当第一判断单元判断出子密钥符合第一预设条件时,将子密钥左移一位得到第一密钥;
第一获取子模块还具体用于当第一判断模块判断出子密钥不符合预设条件时,将子密钥左移一位,取最低字节与第一预设向量进行异或运算得到第一密钥。
可选地,第一判断单元具体用于判断子密钥最高位是否为0。
可选地,第二获取子模块包括:
第二判断单元,用于判断第一密钥是否符合第二预设条件;
第二获取子模块具体用于当第二判断单元判断出第一密钥符合第二预设条件时,将第一密钥左移一位得到第二密钥;还具体用于当第二判断单元判断出第一密钥不符合第二预设条件时,将第一密钥左移一位,取最低字节与第一预设向量进行异或运算得到第二密钥。
可选地,第二判断单元具体用于判断第一密钥的最高位是否为0。
可选地,第三子获取模块还用于根据保护密钥获取第二设置向量,用第二预设向量赋值临时向量;
第三子获取模块包括:
第三判断单元用于当第三子获取模块用第二预设向量赋值临时向量时,判断临时向量的长度是否等于AES分组长度;
第一异或单元,用于当第三判断单元判断出临时向量的长度等于AES分组长度时,将临时向量和第一密钥进行异或运算获得第一异或结果;还用于当第三判断单元判断出临时向量的长度小于AES分组长度时,对临时向量进行填充得到填充后的临时向量,用填充后的临时向量与第二密钥进行异或运算得到第一异或结果;
第一加密单元,用于对第一异或结果进行AES加密生成所述数据块数据密钥;
第三子获取模块,还用于根据保护密钥获取第三预设向量,用第三预设向量赋值临时向量;
第四判断单元,用于当第三子获取模块用第三预设向量赋值临时向量时,判断临时向量的长度是否等于AES分组长度;
第二异或单元,用于当第四判断单元判断出临时向量的长度等于AES分组长度时,将临时向量与第一密钥进行异或运算获得第二异或结果;还用于当第四判断单元判断出临时向量的长度小于AES分组长度时,对临时向量进行填充,将填充之后的临时向量与第二密钥进行异或运算得到第二异或结果;
第二加密单元,用于对第二异或结果进行AES加密得到数据块消息密钥。
可选地,第四子获取模块包括:
第五判断单元,用于当加密模块使用数据块消息密钥对初始向量进行AES加密生成消息密钥子密钥时,判断消息密钥子密钥是否符合第三预设条件;
获取单元,用于当第五判断单元判断出消息密钥子密钥符合第三预设条件时,将消息密钥子密钥左移一位得到第三密钥;还用于当第五判断单元判断出消息密钥子密钥不符合第三预设条件时,将消息密钥子密钥左移一位,取最低字节与第一预设向量进行异或运算得到第三密钥;
第五判断单元还用于当获取单元获取到第三密钥后,判断第三密钥是否符合第四预设条件;
获取单元还用于当第五判断单元判断出第三密钥符合第四预设条件时,将第三密钥左移一位得到第四密钥;还用于当第五判断单元判断出第三密钥不符合第四预设条件时,将第三密钥左移一位,取最低字节与第一预设向量进行异或运算得到第四密钥。
可选地,第五判断单元具体用于当加密模块使用数据块消息密钥对初始向量进行AES加密生成消息密钥子密钥时,判断消息密钥子密钥最高位是否为0。
可选地,第五判断单元具体还用于当获取单元获取到第三密钥后,判断第三密钥的最高位是否为0。
可选地,第二获取模块还用于将获得的密文密钥的每组明文数据拼接得到密文密钥的明文数据。
可选地,第二判断模块具体用于将密文密钥的明文数据和密钥块头域组成明文数据包,判断明文数据包长度是否可以被AES分组长度整除;
加密模块304还用于当第二判断模块308判断出明文数据包长度可以被分组长度整除时,将明文数据包分组,将最后一组明文数据与第三密钥进行异或,将异或结果替换最后一组明文数据组成新的数据包,将第一组明文数据作为当前组明文数据,使用数据块消息密钥对当前组明文数据进行AES加密得到当前组密文数据;还用于当第二判断模块308判断出明文数据包长度不可以被分组长度整除时,填充明文数据包,将明文数据包分组,将最后一组明文数据与第四密钥进行异或,将异或结果替换最后一组明文数据组成新的数据包,将第一组明文数据作为当前明文数据,使用保护密钥对当前组明文数据进行AES加密得到当前组密文数据;
加密模块304还用于当得到当前组密文数据后,将下一组明文数据作为当前组明文数据,将当前组密文数据和当前组明文数据进行异或运算得到第一运算结果,使用数据块消息密钥对第一运算结果进行AES加密得到下一组密文数据,将下一组密文数据作为当前组密文数据;
终端还包括:
第二判断模块308,用于判断是否存在下一组明文数据;
加密模块304还用于当第二判断模块判断出存在下一组明文数据时,将下一组明文数据作为当前组明文数据,将当前组密文数据和当前组明文数据进行异或运算得到第一运算结果,使用数据块消息密钥对第一运算结果进行AES加密得到下一组密文数据,将下一组密文数据作为当前组密文数据;
异或模块还用于当第二判断模块判断出不存在下一组明文数据时,将当前组明文数据与第三密钥进行异或运算得到第二运算结果,将第二运算结果与前一组密文数据进行异或得到第三运算结果;
加密模块304还用于用数据块消息密钥对第三运算结果进行AES加密得到第二MAC值;
异或模块还用于当第二判断模块308判断出明文数据包长度不可以被分组长度整除时,将下一组明文数据作为当前组明文数据,将加密模块304得到的当前组密文数据和当前组明文数据进行异或得到第四运算结果;
加密模块304还用于使用数据块消息密钥对异或模块得到的第四运算结果进行AES加密得到下一组密文数据,将下一组密文数组作为当前组密文数据;
第二判断模块308还用于当加密模块304得到当前组密文数据时,判断是否还存在下一组明文数据;
异或模块还用于当第二判断模块308判断出不存在下一组明文数据时,将当前组明文数据与第四密钥进行异或运算得到第五运算结果,将第五运算结果与前一组密文数据进行异或运算得到第六运算结果;
加密模块304还用于用数据块消息密钥对第六运算结果进行AES加密得到第二MAC值。
Claims (23)
1.一种安全传输密钥的方法,其特征在于,包括:
步骤a:终端接收密钥块数据,解析所述密钥块数据获取密钥块头域、密文密钥以及第一MAC值;
步骤b:所述终端获取自身保存的保护密钥和初始向量,使用所述保护密钥对所述初始向量进行加密得到子密钥,根据所述子密钥得到数据块数据密钥、数据块消息密钥、第三密钥和第四密钥;
步骤c:所述终端根据预设长度将所述密文密钥分组,将第一组密文密钥作为当前组密文密钥,使用所述数据块数据密钥解密所述当前组密文密钥得到第一解密值,根据所述第一解密值和所述第一MAC值得到当前组明文数据,判断是否存在下一组密文密钥,如果是,执行步骤d;否则,获得密文密钥的明文数据,执行步骤e;
步骤d:所述终端将下一组密文密钥作为当前组密文密钥,使用所述数据块数据密钥解密所述当前组密文密钥得到第二解密值,根据所述第二解密值和前一组密文密钥得到当前组密文密钥的明文数据,判断是否存在下一组密文密钥,如果是,执行步骤d;否则,获得密文密钥的明文数据,执行步骤e;
步骤e:所述终端将所述密文密钥的明文数据和所述密钥块头域组成明文数据包,判断所述明文数据包长度是否符合预设条件,如果是,根据所述数据块消息密钥、所述明文数据包以及所述第三密钥得到第二MAC值,执行步骤f;否则,填充所述明文数据包使所述明文数据包长度符合预设条件,根据所述数据块消息密钥、所述明文数据包以及所述第四密钥得到第二MAC值,执行步骤f;
步骤f:所述终端根据所述第一MAC值验证所述第二MAC值是否正确,如果是,从所述明文数据包中获取有效长度的密钥注入密钥容器,结束;否则,报错,退出;
所述步骤b包括:
步骤b-1:所述终端获取自身保存的保护密钥和初始向量,使用所述保护密钥对所述初始向量进行AES加密得到子密钥,根据所述子密钥得到第一密钥,根据所述第一密钥得到第二密钥;
步骤b-2:所述终端获取自身保存的临时向量,根据所述临时向量、所述第一密钥、所述第二密钥得到数据块消息密钥和所述数据块数据密钥;
步骤b-3:所述终端使用所述数据块消息密钥对所述初始向量进行AES加密生成消息密钥子密钥,根据所述消息密钥子密钥得到所述第三密钥,根据所述第三密钥得到所述第四密钥。
2.如权利要求1所述的方法,其特征在于,所述步骤b-1中所述根据所述子密钥得到第一密钥具体为:
所述终端判断所述子密钥是否符合第一预设条件,如果是,将所述子密钥左移一位得到所述第一密钥;否则,将所述子密钥左移一位,取最低字节与第一预设向量进行异或运算得到第一密钥。
3.如权利要求2所述的方法,其特征在于,所述终端判断所述子密钥是否符合第一预设条件具体为:
所述终端判断所述子密钥最高位是否为0,如果是,则所述子密钥符合第一预设条件;如果否,则所述子密钥不符合第一预设条件。
4.如权利要求1所述的方法,其特征在于,所述步骤b-1中所述根据所述第一密钥得到第二密钥具体为:
所述终端判断所述第一密钥是否符合第二预设条件,如果是,将所述第一密钥左移一位得到所述第二密钥;否则,将所述第一密钥左移一位,取最低字节与第一预设向量进行异或运算得到所述第二密钥。
5.如权利要求4所述的方法,其特征在于,所述终端判断所述第一密钥是否符合第二预设条件具体为:
所述终端判断所述第一密钥的最高位是否为0,如果是,则所述第一密钥符合第二预设条件,如果否,则所述第一密钥不符合第二预设条件。
6.如权利要求1所述的方法,其特征在于,所述步骤b-2具体包括:
步骤b-21:所述终端获取自身保存的临时向量,根据所述保护密钥获取第二预设向量,用所述第二预设向量赋值所述临时向量;
步骤b-22:所述终端判断所述临时向量的长度是否等于AES分组长度,如果是,将所述临时向量与所述第一密钥进行异或运算获得第一异或结果,执行步骤b-24;否则,执行步骤b-23;
步骤b-23:当所述临时向量的长度小于AES分组长度时,所述终端对所述临时向量进行填充得到填充后的临时向量,用所述填充后的临时向量与所述第二密钥进行异或运算得到第一异或结果,执行步骤b-24;
步骤b-24:所述终端对所述第一异或结果进行AES加密生成所述数据块数据密钥;
步骤b-25:所述终端根据所述保护密钥获取第三预设向量,用所述第三预设向量赋值临时向量;
步骤b-26:所述终端判断所述临时向量的长度是否等于AES分组长度,如果是,将所述临时向量与所述第一密钥进行异或运算获得第二异或结果,执行步骤b-28;否则,执行步骤b-27;
步骤b-27:当所述临时向量的长度小于AES分组长度时,所述终端对所述临时向量进行填充,填充之后的临时向量与所述第二密钥进行异或运算得到第二异或结果,执行步骤b-28;
步骤b-28:所述终端对所述第二异或结果进行AES加密得到所述数据块消息密钥。
7.如权利要求1所述的方法,其特征在于,所述步骤b-3具体包括:
步骤b-31:所述终端使用所述数据块消息密钥对所述初始向量进行AES加密生成消息密钥子密钥,判断所述消息密钥子密钥是否符合第三预设条件,如果是,将所述消息密钥子密钥左移一位得到所述第三密钥,执行步骤b-32;否则,将所述消息密钥子密钥左移一位,取最低字节与第一预设向量进行异或运算得到所述第三密钥,执行步骤b-32;
步骤b-32:所述终端判断所述第三密钥是否符合第四预设条件,如果是,将所述第三密钥左移一位得到所述第四密钥;否则将所述第三密钥左移一位,取最低字节与所述第一预设向量进行异或运算得到所述第四密钥。
8.如权利要求7所述的方法,其特征在于,所述步骤b-31中所述判断所述消息密钥子密钥是否符合第三预设条件具体为:所述终端判断所述消息密钥子密钥最高位是否为0,如果是,则所述消息密钥子密钥符合第三预设条件,如果否,则所述消息密钥子密钥不符合第三预设条件。
9.如权利要求7所述的方法,其特征在于,所述步骤b-32中所述终端判断所述第三密钥是否符合第四预设条件具体为:所述终端判断所述第三密钥的最高位是否为0,如果是,则所述第三密钥符合第四预设条件,如果否,则所述第三密钥不符合第四预设条件。
10.如权利要求1所述的方法,其特征在于,所述步骤c中所述获得密文密钥的明文数据具体为:
将获得的所述密文密钥的每组明文数据拼接得到所述密文密钥的明文数据。
11.如权利要求1所述的方法,其特征在于,所述步骤d中所述获得密文密钥的明文数据具体为:将获得的所述密文密钥的每组明文数据拼接得到密文密钥的明文数据。
12.如权利要求1所述的方法,其特征在于,所述步骤e具体包括:
步骤e1:所述终端将所述密文密钥的明文数据和所述密钥块头域组成明文数据包,判断所述明文数据包长度是否可以被AES分组长度整除,如果是,将所述明文数据包分组,将最后一组明文数据与所述第三密钥进行异或,将异或结果替换所述最后一组明文数据组成新的数据包,将第一组明文数据作为当前组明文数据,使用所述数据块消息密钥对所述当前组明文数据进行AES加密得到当前组密文数据,执行步骤e2;否则,填充所述明文数据包,将所述明文数据包分组,将最后一组明文数据与所述第四密钥进行异或,将异或结果替换所述最后一组明文数据组成新的数据包,将第一组明文数据作为当前明文数据,使用所述数据块消息密钥对所述当前组明文数据进行AES加密得到当前组密文数据,执行步骤e4;
步骤e2:所述终端将下一组明文数据作为当前组明文数据,将当前组密文数据和所述当前组明文数据进行异或运算得到第一运算结果,使用所述数据块消息密钥对所述第一运算结果进行AES加密得到下一组密文数据,将所述下一组密文数据作为当前组密文数据;判断是否还存下一组明文数据,如果是,执行步骤e2;否则,执行步骤e3;
步骤e3:所述终端将所述当前组明文数据与所述第三密钥进行异或运算得到第二运算结果,将所述第二运算结果与前一组密文数据进行异或得到第三运算结果,用所述数据块消息密钥对所述第三运算结果进行AES加密得到第二MAC值,执行步骤f;
步骤e4:所述终端将下一组明文数据作为当前组明文数据,将当前组密文数据和所述当前组明文数据进行异或得到第四运算结果,使用所述数据块消息密钥对所述第四运算结果进行AES加密得到下一组密文数据,将所述下一组密文数据作为当前组密文数据,判断是否还存在下一组明文数据,如果是,执行步骤e4;否则,执行步骤e5;
步骤e5:所述终端将当前组明文数据与所述第四密钥进行异或运算得到第五运算结果,将所述第五运算结果与前一组密文数据进行异或运算得到第六运算结果,用所述数据块消息密钥对所述第六运算结果进行AES加密得到所述第二MAC值,执行步骤f。
13.一种安全传输密钥的终端,其特征在于,包括:
接收模块,用于接收密钥块数据;
解析模块,用于解析所述接收模块接收的所述密钥块数据获取密钥块头域、密文密钥以及第一MAC值;
第一获取模块,用于获取所述终端自己保存的保护密钥和初始向量;
加密模块,用于使用所述第一获取模块获取的所述保护密钥对所述第一获取模块获取的所述初始向量进行加密得到子密钥;
第二获取模块,用于根据所述加密模块得到的所述子密钥得到数据块数据密钥、数据块消息密钥、第三密钥和第四密钥;
解密模块,用于根据预设长度将所述解析模块获取的所述密文密钥分组,将第一组密文密钥作为当前组密文密钥,使用所述第二获取模块获取的所述数据块数据密钥解密所述当前组密文密钥得到第一解密值;
所述第二获取模块还用于根据所述解密模块得到的所述第一解密值和所述解析模块获取的所述第一MAC值得到当前组密文密钥的明文数据;
第一判断模块,用于当所述第二获取模块获取到所述当前组密文密钥的明文数据时,判断是否存在下一组密文密钥;
所述解密模块还用于当所述第一判断模块判断出存在下一组密文密钥时,将所述下一组密文密钥作为当前组密文密钥,使用所述第二获取模块获取的所述数据块数据密钥解密所述当前组密文密钥得到第二解密值;
所述第二获取模块还用于根据所述解密模块得到的所述第二解密值和前一组密文密钥得到当前组密文密钥的明文数据;并在所述第一判断模块判断出不存在下一组密文密钥时,获得所述密文密钥的明文数据;
第二判断模块,用于将所述第二获取模块获得的所述密文密钥的明文数据和所述密钥块头域组成明文数据包,判断所述明文数据包长度是否符合预设条件;
所述第二获取模块还用于当所述第二判断模块判断出所述明文数据包长度符合所述预设条件时,根据所述数据块消息密钥、所述明文数据包以及所述第三密钥得到第二MAC值;
填充模块,用于当所述第二判断模块判断出所述明文数据包长度不符合所述预设条件时,填充所述明文数据包使所述明文数据包长度符合预设条件,触发所述第二获取模块;
所述第二获取模块还用于当所述填充模块填充所述明文数据包使所述明文数据包长度符合所述预设条件后,根据所述数据块消息密钥、所述明文数据包以及所述第四密钥得到第二MAC值;
验证模块,用于根据所述第一MAC值验证所述第二MAC值是否正确;
注入模块,用于当所述验证模块根据所述第一MAC值验证出所述第二MAC值正确时,从所述明文数据包中获取有效长度的密钥注入密钥容器;
报错模块,用于当所述验证模块根据所述第一MAC值验证出所述第二MAC值不正确时,报错;
所述加密模块具体用于使用所述第一获取模块获取的所述保护密钥对所述第一获取模块获取的所述初始向量进行AES加密得到子密钥;
所述第二获取模块包括:
第一获取子模块,用于根据所述加密模块得到的所述子密钥得到第一密钥;
第二获取子模块,用于根据所述第一获取子模块获取到的所述第一密钥获取第二密钥;
所述第一获取模块还用于获取自身保存的临时向量;
第三子获取模块,用于根据所述第一获取模块获取的临时向量、所述第一密钥、所述第二密钥得到所述数据块消息密钥和所述数据块数据密钥;
所述加密模块还用于使用所述数据块消息密钥对所述初始向量进行AES加密生成消息密钥子密钥;
第四子获取模块,用于根据所述消息密钥子密钥得到所述第三密钥,根据所述第三密钥得到所述第四密钥。
14.如权利要求13所述的终端,其特征在于,所述第一获取子模块包括:
第一判断单元,用于判断所述子密钥是否符合第一预设条件;
所述第一获取子模块具体用于当所述第一判断单元判断出所述子密钥符合第一预设条件时,将所述子密钥左移一位得到所述第一密钥;
所述第一获取子模块还具体用于当所述第一判断模块判断出所述子密钥不符合所述预设条件时,将所述子密钥左移一位,取最低字节与第一预设向量进行异或运算得到第一密钥。
15.如权利要求14所述的终端,其特征在于,所述第一判断单元具体用于判断所述子密钥最高位是否为0。
16.如权利要求13所述的终端,其特征在于,第二获取子模块包括:
第二判断单元,用于判断所述第一密钥是否符合第二预设条件;
第二获取子模块具体用于当所述第二判断单元判断出所述第一密钥符合所述第二预设条件时,将所述第一密钥左移一位得到所述第二密钥;还具体用于当所述第二判断单元判断出所述第一密钥不符合所述第二预设条件时,将所述第一密钥左移一位,取最低字节与第一预设向量进行异或运算得到所述第二密钥。
17.如权利要求16所述的终端,其特征在于,所述第二判断单元具体用于判断所述第一密钥的最高位是否为0。
18.如权利要求13所述的终端,其特征在于,第三子获取模块还用于根据所述保护密钥获取第二预设向量,用所述第二预设向量赋值所述临时向量;
所述第三子获取模块包括:
第三判断单元用于当所述第三子获取模块用所述第二预设向量赋值所述临时向量时,判断所述临时向量的长度是否等于AES分组长度;
第一异或单元,用于当所述第三判断单元判断出所述临时向量的长度等于AES分组长度时,将所述临时向量和所述第一密钥进行异或运算获得第一异或结果;还用于当所述第三判断单元判断出所述临时向量的长度小于AES分组长度时,对所述临时向量进行填充得到填充后的临时向量,用所述填充后的临时向量与所述第二密钥进行异或运算得到第一异或结果;
第一加密单元,用于对所述第一异或结果进行AES加密生成所述数据块数据密钥;
所述第三子获取模块,还用于根据所述保护密钥获取第三预设向量,用所述第三预设向量赋值临时向量;
第四判断单元,用于当所述第三子获取模块用所述第三预设向量赋值临时向量时,判断所述临时向量的长度是否等于AES分组长度;
第二异或单元,用于当所述第四判断单元判断出所述临时向量的长度等于AES分组长度时,将所述临时向量与所述第一密钥进行异或运算获得第二异或结果;还用于当所述第四判断单元判断出所述临时向量的长度小于AES分组长度时,对所述临时向量进行填充,将所述填充之后的临时向量与所述第二密钥进行异或运算得到第二异或结果;
第二加密单元,用于对所述第二异或结果进行AES加密得到所述数据块消息密钥。
19.如权利要求13所述的终端,其特征在于,所述第四子获取模块包括:
第五判断单元,用于当所述加密模块使用所述数据块消息密钥对所述初始向量进行AES加密生成消息密钥子密钥时,判断所述消息密钥子密钥是否符合第三预设条件;
获取单元,用于当所述第五判断单元判断出所述消息密钥子密钥符合第三预设条件时,将所述消息密钥子密钥左移一位得到所述第三密钥;还用于当所述第五判断单元判断出所述消息密钥子密钥不符合第三预设条件时,将所述消息密钥子密钥左移一位,取最低字节与第一预设向量进行异或运算得到所述第三密钥;
所述第五判断单元还用于当所述获取单元获取到所述第三密钥后,判断所述第三密钥是否符合第四预设条件;
所述获取单元还用于当所述第五判断单元判断出所述第三密钥符合所述第四预设条件时,将所述第三密钥左移一位得到所述第四密钥;还用于当所述第五判断单元判断出所述第三密钥不符合第四预设条件时,将所述第三密钥左移一位,取最低字节与所述第一预设向量进行异或运算得到所述第四密钥。
20.如权利要求19所述的终端,其特征在于,
所述第五判断单元具体用于当所述加密模块使用所述数据块消息密钥对所述初始向量进行AES加密生成消息密钥子密钥时,判断所述消息密钥子密钥最高位是否为0。
21.如权利要求19所述的终端,其特征在于,
所述第五判断单元具体还用于当所述获取单元获取到所述第三密钥后,判断所述第三密钥的最高位是否为0。
22.如权利要求13所述的终端,其特征在于,所述第二获取模块还用于将获得的所述密文密钥的每组明文数据拼接得到所述密文密钥的明文数据。
23.如权利要求13所述的终端,其特征在于,所述第二判断模块具体用于将所述密文密钥的明文数据和所述密钥块头域组成明文数据包,判断所述明文数据包长度是否可以被AES分组长度整除;
所述加密模块还用于当所述第二判断模块判断出所述明文数据包长度可以被分组长度整除时,将所述明文数据包分组,将最后一组明文数据与所述第三密钥进行异或,将异或结果替换所述最后一组明文数据组成新的数据包,将第一组明文数据作为当前组明文数据,使用所述数据块消息密钥对所述当前组明文数据进行AES加密得到当前组密文数据;还用于当所述第二判断模块判断出所述明文数据包长度不可以被AES分组长度整除时,填充所述明文数据包,将所述明文数据包分组,将最后一组明文数据与所述第四密钥进行异或,将异或结果替换所述最后一组明文数据组成新的数据包,将第一组明文数据作为当前明文数据,使用所述保护密钥对所述当前组明文数据进行AES加密得到当前组密文数据;
所述加密模块还用于当得到所述当前组密文数据后,将下一组明文数据作为当前组明文数据,将当前组密文数据和所述当前组明文数据进行异或运算得到第一运算结果,使用所述数据块消息密钥对所述第一运算结果进行AES加密得到下一组密文数据,将所述下一组密文数据作为当前组密文数据;
所述终端还包括:
第二判断模块,用于判断是否存在下一组明文数据;
所述加密模块还用于当所述第二判断模块判断出存在下一组明文数据时,将下一组明文数据作为当前组明文数据,将当前组密文数据和所述当前组明文数据进行异或运算得到第一运算结果,使用所述数据块消息密钥对所述第一运算结果进行AES加密得到下一组密文数据,将所述下一组密文数据作为当前组密文数据;
异或模块用于当所述第二判断模块判断出不存在下一组明文数据时,将所述当前组明文数据与所述第三密钥进行异或运算得到第二运算结果,将所述第二运算结果与前一组密文数据进行异或得到第三运算结果;
所述加密模块还用于用所述数据块消息密钥对所述第三运算结果进行AES加密得到第二MAC值;
所述异或模块还用于当所述第二判断模块判断出所述明文数据包长度不可以被分组长度整除时,将下一组明文数据作为当前组明文数据,将所述加密模块得到的当前组密文数据和所述当前组明文数据进行异或得到第四运算结果;
所述加密模块还用于使用所述数据块消息密钥对异或模块得到的所述第四运算结果进行AES加密得到下一组密文数据,将所述下一组密文数组作为当前组密文数据;
所述第二判断模块还用于当所述加密模块得到当前组密文数据时,判断是否还存在下一组明文数据;
所述异或模块还用于当所述第二判断模块判断出不存在下一组明文数据时,将当前组明文数据与所述第四密钥进行异或运算得到第五运算结果,将所述第五运算结果与前一组密文数据进行异或运算得到第六运算结果;
所述加密模块还用于用所述数据块消息密钥对所述第六运算结果进行AES加密得到所述第二MAC值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010687464.XA CN111565206B (zh) | 2020-07-16 | 2020-07-16 | 一种安全传输密钥的方法及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010687464.XA CN111565206B (zh) | 2020-07-16 | 2020-07-16 | 一种安全传输密钥的方法及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111565206A CN111565206A (zh) | 2020-08-21 |
CN111565206B true CN111565206B (zh) | 2020-10-16 |
Family
ID=72075442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010687464.XA Active CN111565206B (zh) | 2020-07-16 | 2020-07-16 | 一种安全传输密钥的方法及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111565206B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112231743B (zh) * | 2020-12-17 | 2021-03-16 | 飞天诚信科技股份有限公司 | 一种数据加密存储的实现方法及装置 |
CN112671788B (zh) * | 2020-12-30 | 2023-04-28 | 四川巧夺天工信息安全智能设备有限公司 | 一种基于tcp的可扩展的物联网安全通信方法 |
CN118075037B (zh) * | 2024-04-25 | 2024-07-12 | 安徽华云安科技有限公司 | 数据加密方法、装置、设备以及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6523115B1 (en) * | 1998-02-18 | 2003-02-18 | Matsushita Electric Industrial Co., Ltd. | Encryption device, decryption device, encryption method, decryption method, cryptography system, computer-readable recording medium storing encryption program, and computer-readable recording medium storing decryption program which perform error diagnosis |
CN101741565A (zh) * | 2009-12-18 | 2010-06-16 | 北京握奇数据系统有限公司 | 一种ic卡应用数据传输的方法及系统 |
CN101783789A (zh) * | 2009-01-16 | 2010-07-21 | 深圳市维信联合科技有限公司 | 网络数据包传输处理方法、设备及系统 |
CN105634730A (zh) * | 2015-12-29 | 2016-06-01 | 中国建设银行股份有限公司 | 一种金融ic卡密钥管理系统 |
CN105897748A (zh) * | 2016-05-27 | 2016-08-24 | 飞天诚信科技股份有限公司 | 一种对称密钥的传输方法及设备 |
CN106453318A (zh) * | 2016-10-14 | 2017-02-22 | 北京握奇智能科技有限公司 | 一种基于安全模块的数据传输系统及方法 |
CN109150510A (zh) * | 2018-08-15 | 2019-01-04 | 飞天诚信科技股份有限公司 | 一种获取对称密钥的方法及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2011299647B2 (en) * | 2010-09-10 | 2014-09-11 | Lg Electronics Inc. | Method and apparatus of cipher communication for management frame using quality of service mechanism in wireless local area network system |
-
2020
- 2020-07-16 CN CN202010687464.XA patent/CN111565206B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6523115B1 (en) * | 1998-02-18 | 2003-02-18 | Matsushita Electric Industrial Co., Ltd. | Encryption device, decryption device, encryption method, decryption method, cryptography system, computer-readable recording medium storing encryption program, and computer-readable recording medium storing decryption program which perform error diagnosis |
CN101783789A (zh) * | 2009-01-16 | 2010-07-21 | 深圳市维信联合科技有限公司 | 网络数据包传输处理方法、设备及系统 |
CN101741565A (zh) * | 2009-12-18 | 2010-06-16 | 北京握奇数据系统有限公司 | 一种ic卡应用数据传输的方法及系统 |
CN105634730A (zh) * | 2015-12-29 | 2016-06-01 | 中国建设银行股份有限公司 | 一种金融ic卡密钥管理系统 |
CN105897748A (zh) * | 2016-05-27 | 2016-08-24 | 飞天诚信科技股份有限公司 | 一种对称密钥的传输方法及设备 |
CN106453318A (zh) * | 2016-10-14 | 2017-02-22 | 北京握奇智能科技有限公司 | 一种基于安全模块的数据传输系统及方法 |
CN109150510A (zh) * | 2018-08-15 | 2019-01-04 | 飞天诚信科技股份有限公司 | 一种获取对称密钥的方法及设备 |
Non-Patent Citations (1)
Title |
---|
一个数据传输加密方案的设计与实现;马雪英;《计算机应用研究 》;20050510;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111565206A (zh) | 2020-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111565206B (zh) | 一种安全传输密钥的方法及终端 | |
CN108965218B (zh) | 一种控制器区域网总线安全通信方法、装置及系统 | |
CN1421080A (zh) | 会话密钥的同步 | |
KR101032016B1 (ko) | 제약된 암호 키 | |
KR102609221B1 (ko) | 카운터 기반의 암호 시스템들에서 개선된 인증형 암호화를 위한 방법들 및 시스템들 | |
EP2595082B1 (en) | Method and authentication server for verifying access identity of set-top box | |
CN102437910A (zh) | 数据加/解密校验方法及其系统 | |
EP3476078B1 (en) | Systems and methods for authenticating communications using a single message exchange and symmetric key | |
CN104284208B (zh) | 通过aes‑cbc算法进行并行加密的方法及系统 | |
US20030026430A1 (en) | Encrypting conversion apparatus, decrypting conversion apparatus, cryptographic communication system, and electronic toll collection apparatus | |
CN111756523A (zh) | 数据传输方法及装置 | |
CN108075879B (zh) | 一种数据加密和解密的方法、装置及系统 | |
CN105897748B (zh) | 一种对称密钥的传输方法及设备 | |
CN111211888A (zh) | 数据发送方法、数据接收方法、发送端及接收端 | |
CN102648625B (zh) | 广播业务分组的实现方法、装置和系统 | |
Xiao et al. | Session key distribution made practical for CAN and CAN-FD message authentication | |
CN112383522A (zh) | 函数参数数据传输加密方法、系统、装置及可读存储介质 | |
US7406595B1 (en) | Method of packet encryption that allows for pipelining | |
CN115065843A (zh) | 安全认证下的视频加密解密处理方法及系统 | |
CN101667912B (zh) | 一种网络信息传输方法和系统 | |
CN116975875A (zh) | 基于国密算法的固件传输认证保护方法及系统 | |
CN108615155B (zh) | 一种鉴别交易信息完整性的方法 | |
CN110677238A (zh) | 广播加密方法和装置 | |
CN114826748A (zh) | 基于rtp、udp及ip协议的音视频流数据加密方法和装置 | |
CN109150510B (zh) | 一种获取对称密钥的方法及设备 |
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 |