CN110365482A - 一种数据通信方法和装置 - Google Patents
一种数据通信方法和装置 Download PDFInfo
- Publication number
- CN110365482A CN110365482A CN201910708697.0A CN201910708697A CN110365482A CN 110365482 A CN110365482 A CN 110365482A CN 201910708697 A CN201910708697 A CN 201910708697A CN 110365482 A CN110365482 A CN 110365482A
- Authority
- CN
- China
- Prior art keywords
- responder
- key
- originating end
- ciphertext
- data
- 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.)
- Granted
Links
Classifications
-
- 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
- H04L9/0863—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
-
- 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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3226—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Communication Control (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种数据通信方法和装置,方法包括:向响应端发送数据通信请求;接收响应端临时公钥PB;利用Edwards椭圆曲线算法与响应端协商过程密钥和加密密钥;若密钥协商成功,安全通道开启,则向响应端请求发送数据;接收响应端对待发送数据Mdata进行加密获得的第二密文;利用发起端加密密钥EnKA对所述第二密文进行认证;若认证成功,则对所述第二密文进行解密,得到明文数据。本发明中Edwards椭圆曲线具有高效统一的加法公式,不仅运算效率高,而且不论他们进行运算的数值是多少,他们所花的时间是相同的,因此,时间旁路攻击就对他们无效。
Description
技术领域
本发明涉及通信领域,具体地,涉及数据通信方法和装置。
背景技术
在数据的通信传输领域,为了保证关键数据的安全性,通常会对被传输的数据进行加密处理。在现有技术中,经常使用的加密算法有对称加密算法和非对称加密算法两大类。
对称加密算法的加密和解密使用相同的密钥,它要求通信双方在安全通信之前,商定一个共享密钥,以保证只有通信双方才有资格解密出传输的真实内容。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息进行解密,所以密钥的保密性对通信的安全性至关重要。
非对称加密算法具有公开密钥(public key)和私有密钥(private key)两种。一般是用公开密钥对数据进行加密,然后用对应的私有密钥进行解密。
然而现有技术中的加密通信方法存在以下技术问题:
1、数据加密采用des或者aes算法,密钥安全系数不够,容易被破解;
2、RSA算法本身无法防范中间人攻击,需要搭配数字认证使用;
3、动态密钥交换多采用传统ecc算法,但是传统ecc算法是基于威尔斯特拉斯(Weierstrass)曲线,运算时间与密钥具有较强的依赖性,容易被旁路攻击;
4、传统的通过组合方式来实现加密和认证算法方案是存在安全问题的。
发明内容
本发明的目的在于提供一种数据通信方法和装置,避免动态密钥交换过程中被旁路攻击,提高安全性。
为达到上述目的,本发明提供了一种数据通信方法,包括:向响应端发送数据通信请求;接收响应端利用Edwards椭圆曲线算法生成的响应端临时公钥PB;利用Edwards椭圆曲线算法与响应端协商过程密钥和加密密钥,包括:利用响应端临时公钥PB和发起端临时私钥dA通过Edwards椭圆曲线算法获得发起端过程密钥skA,并利用密钥派生函数推导出发起端加密密钥EnKA;随机生成测试信息M0,将发起端临时公钥PA和所述测试信息M0发送给响应端;接收响应端利用Edwards椭圆曲线算法和密钥派生函数生成的响应端加密密钥对所述测试消息M0进行加密获得的第一密文C0;利用发起端加密密钥EnKA对所述第一密文C0解密获得解密消息M1,并对比测试消息M0与解密消息M1;若测试消息与解密消息相同,则密钥协商成功,安全通道开启,则向响应端请求发送数据;接收响应端对待发送数据Mdata进行加密获得的第二密文;利用发起端加密密钥EnKA对所述第二密文进行认证;若认证成功,则对所述第二密文进行解密,得到明文数据。
进一步地,其中,通过Jubjub椭圆曲线算法,利用下述公式获得发起端过程密钥skA:
skA=Agree(dA,PB)=[hJ*dA]PB
PB=[dB]B
其中,dA为发起端随机产生的临时私钥;dB为响应端随机产生的临时私钥;B为Jubjub椭圆曲线基点;[dB]B表示[dB]和B进行标量乘运算;Agree为密钥协商函数;hJ为Jubjub椭圆曲线的余因子;[hJ*dA]表示hJ*dA的标量;[hJ*dA]PB表示[hJ*dA]和PB进行标量乘运算。
进一步地,其中,采用BLAKE2b-256算法,利用如下公式推导发起端加密密钥EnKA:
EnKA=BLAKE2b-256(“personalization”,kdfinput)
Kdfinput=skA||PB
其中,skA||PB表示skA和PB拼接在一起;personalization为任何个性化字符串。
进一步地,其中,第二密文为待发送数据的加密数据Cdata和认证数据tag拼接后的数据Cdata||tag;采用AEAD_Chacha20-Ploy1305算法,利用如下公式对第二密文进行解密得到明文数据:
Mdata=AEAD_Chacha20-Ploy1305_Decrypto(Cdata||tag,EnKA)
本发明还提供了一种数据通信方法,包括:接收发起端发送的数据通信请求,随机生成响应端临时私钥dB,利用Edwards椭圆曲线算法生成响应端临时公钥PB;将响应端临时公钥PB发送给发起端;利用Edwards椭圆曲线算法与发起端协商过程密钥和加密密钥,包括:接收发起端临时公钥PA和测试消息M0;利用响应端临时私钥dB和发起端临时公钥PA通过Edwards椭圆曲线算法生成响应端过程密钥skB,并利用密钥派生函数推导出响应端加密密钥EnKB;利用响应端加密密钥EnKB对测试消息M0进行加密,得到第一密文C0,将第一密文C0发送给发起端;接收发起端对第一密文的验证结果;若第一密文验证成功,则密钥协商成功,安全通道开启,则接收发起端的发送数据请求;利用响应端加密密钥EnKB对待发送数据Mdata进行加密处理,获得第二密文,并发送给发起端;接收发起端对第二密文的认证结果;若认证成功,则待发送数据发送成功。
进一步地,其中,通过Jubjub椭圆曲线算法,利用下述公式获得响应端过程密钥skB:
skB=Agree(dB,PA)=[hJ*dB]PA
PA=[dA]B
其中,dA为发起端随机产生的临时私钥;dB为响应端随机产生的临时私钥;B为Jubjub椭圆曲线基点;[dA]B表示[dA]和B进行标量乘运算;Agree为密钥协商函数;hJ为Jubjub椭圆曲线的余因子;[hJ*dB]表示hJ*dB的标量;[hJ*dB]PA表示[hJ*dB]和PA进行标量乘运算。
进一步地,其中,采用BLAKE2b-256算法,利用如下公式推导响应端加密密钥EnKB:
EnKB=BLAKE2b-256(“personalization”,kdfinput)
Kdfinput=skB||PB
其中,skB||PB表示skB和PB拼接在一起;personalization为任何个性化字符串。
进一步地,其中,采用AEAD_Chacha20-Ploy1305算法,利用如下公式对待发送数据Mdata进行加密处理,获得第二密文Cdata||tag:
Cdata||tag=AEAD_Chacha20-Ploy1305_Encrypto(Mdata,EnKB)
Cdata||tag表示Cdata和tag拼接在一起。
本发明还提供了一种数据通信装置,包括发送模块、接收模块、过程密钥生成模块、加密密钥生成模块、随机生成模块、解密模块、比较模块;发送模块,用于向响应端发送数据通信请求、发起端临时公钥PA以及所述测试信息M0、向响应端请求发送数据;接收模块,用于接收响应端利用Edwards椭圆曲线算法生成的响应端临时公钥PB、接收响应端利用Edwards椭圆曲线算法和密钥派生函数生成的响应端加密密钥对所述测试消息M0进行加密获得的第一密文C0以及接收响应端对待发送数据Mdata进行加密获得的第二密文;过程密钥生成模块,用于利用响应端临时公钥PB和发起端临时私钥dA通过Edwards椭圆曲线算法获得发起端过程密钥skA;加密密钥生成模块,用于利用密钥派生函数推导出发起端加密密钥EnKA;随机生成模块,用于随机生成发起端临时私钥dA以及测试信息M0;解密模块,用于利用发起端加密密钥EnKA对所述第一密文C0解密获得解密消息M1,并利用发起端加密密钥EnKA对所述第二密文进行认证并解密,得到明文数据;比较模块,用于对比测试消息M0与解密消息M1。
本发明还提供了一种数据通信装置,包括接收模块、随机生成模块、临时公钥生成模块、过程密钥生成模块、加密密钥生成模块、加密模块、发送模块;接收模块,用于接收发起端发送的数据通信请求、接收发起端临时公钥PA和测试消息M0、接收发起端对第一密文的验证结果、接收发起端的发送数据请求以及接收发起端对第二密文的认证结果;随机生成模块,用于随机生成响应端临时私钥dB;临时公钥生成模块,用于利用Edwards椭圆曲线算法生成响应端临时公钥PB;过程密钥生成模块,用于利用响应端临时私钥dB和发起端临时公钥PA通过Edwards椭圆曲线算法生成响应端过程密钥skB;加密密钥生成模块,用于利用密钥派生函数推导出响应端加密密钥EnKB;加密模块,用于利用响应端加密密钥EnKB对测试消息M0进行加密,得到第一密文C0,并利用响应端加密密钥EnKB对待发送数据Mdata进行加密处理,获得第二密文;发送模块,用于将响应端临时公钥PB发送给发起端、将第一密文C0和第二密文发送给发起端。
本发明具有以下有益效果:
1、本发明中,Jubjub椭圆曲线具有高效统一的加法公式,不仅运算效率高,而且不论他们进行运算的数值是多少,他们所花的时间是相同的,因此,时间旁路攻击就对他们无效。另外,现有技术的威尔斯特拉斯曲线传递的公钥为64字节,而Jubjub椭圆曲线的公钥为32字节,节省了传递成本。
2、本发明中,Jubjub椭圆曲线的基点通过GroupHash函数生成,GroupHash函数使用了BLAKE2s-256算法,引入了个性化参数,因此可以针对不同的协商对象设置不同的个性化参数,生成不同的基点。
3、本发明中,AEAD_Chacha20-Ploy1305避开了现有发现的所有安全漏洞和攻击;其针对移动端设备大量使用的ARM芯片做了优化,能够充分利用ARM向量指令,使加解密速度更快更省电;另外,AEAD_Chacha20-Ploy1305带有ploy1305消息认证码mac运算,不必分散多个密钥,也不用单独计算mac和验证mac,简化了验证流程。
4、本发明中,本申请中的KDF函数采用BLAKE2b-256算法,此算法与常用的SHA2类算法相比,安全性增加,并且引入了个性化参数,可以对同一组数据,针对推导密钥的不同用途引入相对应的个性化参数,从而推导出不同的密钥。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例提供的数据通信方法的流程图;
图2是根据本发明实施例提供的数据通信***的结构示意图;
图3是根据本发明实施例提供的发起端数据通信装置的结构示意图;
图4是根据本发明实施例提供的响应端数据通信装置的结构示意图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本申请提供了一种数据通信方法,用于发起端和响应端之间的数据通信。作为一个实施例,发起端可以是手机APP,响应端可以是安全芯片SE。
如图1所示,该方法包括如下步骤:
S110:发起端向响应端发送数据通信请求。
S120:响应端接收到数据通信请求后,基于Jubjub椭圆曲线算法,随机产生响应端临时私钥dB,并产生响应端临时公钥PB。响应端保留响应端临时私钥dB,将响应端临时公钥PB返回给发起端。
Jubjub椭圆曲线算法是一种已知的Edwards椭圆曲线算法,Jubjub椭圆曲线方程EJ表示如下:
aJ·u2+v2=1+dJ·u2·v2 (1)
其中,椭圆曲线上的点坐标用(u,v)表示,该曲线的零点坐标为(0,1)。该曲线上的点的群阶为hJ·rJ。
系数aJ:=-1,
系数dJ:=-10240/10241(mod qJ),
模qJ:=
73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001
阶rJ:=
0E7DB4EA6533AFA906673B0101343B00A6682093CCC81082D0970E5ED6F72CB7
其中,qJ和rJ都是素数;mod表示求模运算,余因子hJ:=8。
作为一个实施例,Jubjub椭圆曲线的基点B是不固定的,通过GroupHash函数生成基点B,GroupHash函数表示如下:
GroupHash(D,M)
其中,D为个性化参数,M为输入数据;
具体如下:
1)H=BLAKE2s-256(D,M||[i]) (2)
其中,i从0累加,直到返回有效点
2)P=abstJ(H) (3)
其中,abstJ表示将数据H转化为Jubjub椭圆曲线上的点;
若P为无效点,则返回1),i加1;
若P为有效点,计算Q=[hJ]P,若Q为零点,则返回1),i加1;否则返回Q,将Q作为椭圆曲线的基点B;
其中,[hJ]表示hJ的标量,[hJ]P表示[hJ]和P的标量乘运算。
GroupHash函数使用了公知的BLAKE2s-256算法,引入了个性化参数D,因此可以针对不同的协商对象(即不同的发起端和响应端)设置不同的个性化参数D,生成不同的基点。
作为另一个实施例,Jubjub椭圆曲线的基点B可以是固定的。
本申请中,利用下述公式产生响应端临时公钥PB:
PB=[dB]B; (4)
其中,[dB]B表示[dB]和B进行标量乘运算。
发起端自身也生成了发起端临时公私钥对(dA,PA),即基于Jubjub椭圆曲线算法,发起端随机产生发起端临时私钥dA,并利用下述公式产生发起端临时公钥PA:
PA=[dA]B; (5)
其中,[dA]B表示[dA]和B进行标量乘运算。
在接收到响应端临时公钥PB后,发起端与响应端通过Jubjub算法进行密钥协商,完成双方身份认证,具体过程如下:
S130:发起端利用发起端临时私钥(dA)和响应端临时公钥(PB),以及上述Jubjub椭圆曲线的相关参数,利用如下公式(6)生成发起端过程密钥skA,并利用密钥派生函数(KDF函数)(请见公式(7)和(8))推导出发起端加密密钥EnKA,随机生成测试信息M0,并向响应端返回发起端临时公钥PA和测试消息M0。
skA=Agree(dA,PB)=[hJ*dA]PB (6)
其中,Agree为密钥协商函数;hJ为Jubjub椭圆曲线的余因子;[hJ*dA]表示hJ*dA的标量;[hJ*dA]PB表示[hJ*dA]和PB进行标量乘运算。
EnKA=KDF(skA,PB)=BLAKE2b-256(“personalization”,kdfinput)
(7)
Kdfinput=skA||PB (8)
其中,BLAKE2b-256为一种公知的算法,skA||PB表示skA和PB拼接在一起;personalization为任何个性化字符串,可以根据需要输入标注性信息。
S140:响应端接收到发起端临时公钥PA后,利用响应端临时私钥dB和发起端临时公钥PA,以及上述Jubjub椭圆曲线的相关参数信息,利用下述公式(9)生成响应端过程密钥skB,并利用KDF函数(请见公式(10)和(11))推导出响应端加密密钥(EnKB),然后利用响应端加密密钥EnKB对测试消息M0进行加密,得到第一密文C0并将其返回给发起端。
skB=Agree(dB,PA)=[hJ*dB]PA (9)
其中,Agree为密钥协商函数;hJ为Jubjub椭圆曲线的余因子;[hJ*dB]表示hJ*dB的标量;[hJ*dB]PA表示[hJ*dB]和PA进行标量乘运算。
EnKB=BLAKE2b-256(“personalization”,kdfinput) (10)
Kdfinput=skB||PB (11)
其中,skB||PB表示skB和PB拼接在一起;personalization为任何个性化字符串,可以根据需要输入标注性信息。
S150:发起端利用发起端加密密钥EnKA对第一密文C0解密得到解密消息M1,并将M1和M0进行比较。
如果M1和M0相同,则密钥协商成功,至此安全通道开启,后续发起端与响应端之间的通信数据将在过程密钥的保护下进行传输;如果二者不同,则密钥协商失败,需要重新申请建立安全通道,即返回S110。
S160:发起端收到安全通道开启的信息后,向响应端发起发送待发送数据Mdata的请求;
S170:响应端收到发送待发送数据的请求后,利用响应端加密密钥EnKB通过AEAD_Chacha20-Ploy1305算法根据公式(12)对待发送消息Mdata进行加密处理,得到第二密文Cdata||tag,该第二密文包括加密数据Cdata和认证数据tag。然后响应端将第二密文发送给发起端。
AEAD(Authenticated Encryption with Associated Data)是一种公知的同时具备保密性、完整性和可认证性的加密形式,其特点是在一个算法内部同时实现加密和认证。Chacha20-Ploy1305就是一种常见的AEAD算法。Chacha20为流密码运算,Ploy1305为消息认证码运算,AEAD_Chacha20-Ploy1305算法是将二者组合起来使用的一种算法。
本申请中,利用AEAD_Chacha20-Ploy1305算法加密数据时,输入数据至少包括:明文数据Mdata、加密密钥EnKB、随机码nonce;还可以包括附加认证数据aad;输出数据包括:加密数据Cdata、认证数据tag。
作为一个实施例,本申请中:
采用空的附加认证数据aad;
随机码nonce采用12字节的0,即“000000000000000000000000”;
加密密钥EnKB和EnKA是32字节长度;
认证数据tag是16字节长度。
Cdata||tag=AEAD_Chacha20-Ploy1305_Encrypto(Mdata,EnKB) (12)
Cdata||tag表示Cdata和tag拼接在一起。
S180:发起端收到第二密文后,利用发起端加密密钥EnKA通过AEAD_Chacha20-Ploy1305算法根据下述公式(13)对第二密文中的认证数据tag进行认证,并对加密数据Cdata进行解密,得到明文数据Mdata。具体地,若认证成功,则发起端对加密数据Cdata进行解密。否则,发起端向响应端发送认证失败结果。
本申请中,利用AEAD_Chacha20-Ploy1305算法解密数据时,输入数据包括:第二密文Cdata||tag、附加认证数据aad、随机码nonce、加密密钥EnKA;输出数据包括:若认证数据tag验证通过,则输出明文数据Mdata;若认证数据tag验证不通过,则报错,即输出认证失败结果。
Mdata=AEAD_Chacha20-Ploy1305_Decrypto(Cdata||tag,EnKA) (13)
实施例2
本申请还提供了一种与上述方法相应的数据通信***,如图2所示,数据通信***200包括发起端数据通信装置210和响应端数据通信装置220。
如图3所示,发起端数据通信装置210包括发送模块2101、接收模块2102、过程密钥生成模块2103、加密密钥生成模块2104、随机生成模块2105、解密模块2106、比较模块2107以及临时公钥生成模块2108。
发送模块2101与随机生成模块2105和临时公钥生成模块2108连接,用于向响应端发送数据通信请求、发起端临时公钥PA以及所述测试信息M0、向响应端请求发送数据。
接收模块2102与过程密钥生成模块2103和解密模块2106连接,用于接收响应端利用Edwards椭圆曲线算法生成的响应端临时公钥PB、接收响应端利用Edwards椭圆曲线算法和密钥派生函数生成的响应端加密密钥对所述测试消息M0进行加密获得的第一密文C0以及接收响应端对待发送数据Mdata进行加密获得的第二密文。
过程密钥生成模块2103与接收模块2102连接,用于利用响应端临时公钥PB和发起端临时私钥dA通过Edwards椭圆曲线算法获得发起端过程密钥skA。
加密密钥生成模块2104与过程密钥生成模块2103和解密模块2106连接,用于利用密钥派生函数推导出发起端加密密钥EnKA。
随机生成模块2105与发送模块2101和临时公钥生成模块2108连接,用于随机生成发起端临时私钥dA以及测试信息M0。
解密模块2106与比较模块2107和发送模块2101连接,用于利用发起端加密密钥EnKA对所述第一密文C0解密获得解密消息M1,并利用发起端加密密钥EnKA对所述第二密文进行认证并解密,得到明文数据。
比较模块2107与发送模块2101连接,用于对比测试消息M0与解密消息M1。
临时公钥生成模块2108与随机生成模块2105和发送模块2101连接,用于利用Edwards椭圆曲线算法生成发起端临时公钥PA。
如图4所示,响应端数据通信装置220包括接收模块2201、随机生成模块2202、临时公钥生成模块2203、过程密钥生成模块2204、加密密钥生成模块2205、加密模块2206、发送模块2207;
接收模块2201与随机生成模块2202、加密模块2206以及发送模块2207连接,用于接收发起端发送的数据通信请求、接收发起端临时公钥PA和测试消息M0、接收发起端对第一密文的验证结果、接收发起端的发送数据请求以及接收发起端对第二密文的认证结果。
随机生成模块2202与接收模块2201连接,用于随机生成响应端临时私钥dB。
临时公钥生成模块2203与随机生成模块2202连接,用于利用Edwards椭圆曲线算法生成响应端临时公钥PB。
过程密钥生成模块2204与接收模块2201和随机生成模块2202连接,用于利用响应端临时私钥dB和发起端临时公钥PA通过Edwards椭圆曲线算法生成响应端过程密钥skB;
加密密钥生成模块2205与过程密钥生成模块2204连接,用于利用密钥派生函数推导出响应端加密密钥EnKB;
加密模块2206与加密密钥生成模块2205和发送模块2207连接,用于利用响应端加密密钥EnKB对测试消息M0进行加密,得到第一密文C0,并利用响应端加密密钥EnKB对待发送数据Mdata进行加密处理,获得第二密文;
发送模块2207与临时公钥生成模块2203、加密模块2206连接,用于将响应端临时公钥PB发送给发起端、将第一密文C0和第二密文发送给发起端。
本发明具有以下有益效果:
1、Jubjub椭圆曲线具有高效统一的加法公式,不仅运算效率高,而且不论他们进行运算的数值是多少,他们所花的时间是相同的,因此,时间旁路攻击就对他们无效。另外,现有技术的威尔斯特拉斯曲线传递的公钥为64字节,而Jubjub椭圆曲线的公钥为32字节,节省了传递成本。
2、Jubjub椭圆曲线的基点通过GroupHash函数生成,GroupHash函数使用了BLAKE2s-256算法,引入了个性化参数,因此可以针对不同的协商对象设置不同的个性化参数,生成不同的基点。
3、AEAD_Chacha20-Ploy1305避开了现有发现的所有安全漏洞和攻击;其针对移动端设备大量使用的ARM芯片做了优化,能够充分利用ARM向量指令,使加解密速度更快更省电;另外,AEAD_Chacha20-Ploy1305带有ploy1305消息认证码mac运算,不必分散多个密钥,也不用单独计算mac和验证mac,简化了验证流程。
4、本申请中的KDF函数采用BLAKE2b-256算法,此算法与常用的SHA2类算法相比,安全性增加,并且引入了个性化参数,可以对同一组数据,针对推导密钥的不同用途引入相对应的个性化参数,从而推导出不同的密钥。
虽然当前申请参考的示例被描述,其只是为了解释的目的而不是对本发明的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本发明的范围。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种数据通信方法,其特征在于,包括:
向响应端发送数据通信请求;
接收响应端利用Edwards椭圆曲线算法生成的响应端临时公钥PB;
利用Edwards椭圆曲线算法与响应端协商过程密钥和加密密钥,包括:
利用响应端临时公钥PB和发起端临时私钥dA通过Edwards椭圆曲线算法获得发起端过程密钥skA,并利用密钥派生函数推导出发起端加密密钥EnKA;
随机生成测试信息M0,将发起端临时公钥PA和所述测试信息M0发送给响应端;
接收响应端利用Edwards椭圆曲线算法和密钥派生函数生成的响应端加密密钥对所述测试消息M0进行加密获得的第一密文C0;
利用发起端加密密钥EnKA对所述第一密文C0解密获得解密消息M1,并对比测试消息M0与解密消息M1;
若测试消息与解密消息相同,则密钥协商成功,安全通道开启,则向响应端请求发送数据;
接收响应端对待发送数据Mdata进行加密获得的第二密文;
利用发起端加密密钥EnKA对所述第二密文进行认证;
若认证成功,则对所述第二密文进行解密,得到明文数据。
2.根据权利要求1所述的方法,其特征在于,通过Jubjub椭圆曲线算法,利用下述公式获得发起端过程密钥skA:
skA=Agree(dA,PB)=[hJ*dA]PB
PB=[dB]B
其中,dA为发起端随机产生的临时私钥;dB为响应端随机产生的临时私钥;B为Jubjub椭圆曲线基点;[dB]B表示[dB]和B进行标量乘运算;Agree为密钥协商函数;hJ为Jubjub椭圆曲线的余因子;[hJ*dA]表示hJ*dA的标量;[hJ*dA]PB表示[hJ*dA]和PB进行标量乘运算。
3.根据权利要求2所述的方法,其特征在于,采用BLAKE2b-256算法,利用如下公式推导发起端加密密钥EnKA:
EnKA=BLAKE2b-256(“personalization”,kdfinput)
Kdfinput=skA||PB
其中,skA||PB表示skA和PB拼接在一起;personalization为任何个性化字符串。
4.根据权利要求1所述的方法,其特征在于,第二密文为待发送数据的加密数据Cdata和认证数据tag拼接后的数据Cdata||tag;
采用AEAD_Chacha20-Ploy1305算法,利用如下公式对第二密文进行解密得到明文数据:
Mdata=AEAD_Chacha20-Ploy1305_Decrypto(Cdata||tag,EnKA)。
5.一种数据通信方法,其特征在于,包括:
接收发起端发送的数据通信请求,随机生成响应端临时私钥dB,利用Edwards椭圆曲线算法生成响应端临时公钥PB;
将响应端临时公钥PB发送给发起端;
利用Edwards椭圆曲线算法与发起端协商过程密钥和加密密钥,包括:
接收发起端临时公钥PA和测试消息M0;
利用响应端临时私钥dB和发起端临时公钥PA通过Edwards椭圆曲线算法生成响应端过程密钥skB,并利用密钥派生函数推导出响应端加密密钥EnKB;
利用响应端加密密钥EnKB对测试消息M0进行加密,得到第一密文C0,将第一密文C0发送给发起端;
接收发起端对第一密文的验证结果;
若第一密文验证成功,则密钥协商成功,安全通道开启,则接收发起端的发送数据请求;
利用响应端加密密钥EnKB对待发送数据Mdata进行加密处理,获得第二密文,并发送给发起端;
接收发起端对第二密文的认证结果;若认证成功,则待发送数据发送成功。
6.根据权利要求5所述的方法,其特征在于,通过Jubjub椭圆曲线算法,利用下述公式获得响应端过程密钥skB:
skB=Agree(dB,PA)=[hJ*dB]PA
PA=[dA]B
其中,dA为发起端随机产生的临时私钥;dB为响应端随机产生的临时私钥;B为Jubjub椭圆曲线基点;[dA]B表示[dA]和B进行标量乘运算;Agree为密钥协商函数;hJ为Jubjub椭圆曲线的余因子;[hJ*dB]表示hJ*dB的标量;[hJ*dB]PA表示[hJ*dB]和PA进行标量乘运算。
7.根据权利要求6所述的方法,其特征在于,采用BLAKE2b-256算法,利用如下公式推导响应端加密密钥EnKB:
EnKB=BLAKE2b-256(“personalization”,kdfinput)
Kdfinput=skB||PB
其中,skB||PB表示skB和PB拼接在一起;personalization为任何个性化字符串。
8.根据权利要求5所述的方法,其特征在于,采用AEAD_Chacha20-Ploy1305算法,利用如下公式对待发送数据Mdata进行加密处理,获得第二密文Cdata||tag:
Cdata||tag=AEAD_Chacha20-Ploy1305_Encrypto(Mdata,EnKB)
Cdata||tag表示Cdata和tag拼接在一起。
9.一种数据通信装置,其特征在于,包括发送模块、接收模块、过程密钥生成模块、加密密钥生成模块、随机生成模块、解密模块、比较模块;
发送模块,用于向响应端发送数据通信请求、发起端临时公钥PA以及所述测试信息M0、向响应端请求发送数据;
接收模块,用于接收响应端利用Edwards椭圆曲线算法生成的响应端临时公钥PB、接收响应端利用Edwards椭圆曲线算法和密钥派生函数生成的响应端加密密钥对所述测试消息M0进行加密获得的第一密文C0以及接收响应端对待发送数据Mdata进行加密获得的第二密文;
过程密钥生成模块,用于利用响应端临时公钥PB和发起端临时私钥dA通过Edwards椭圆曲线算法获得发起端过程密钥skA;
加密密钥生成模块,用于利用密钥派生函数推导出发起端加密密钥EnKA;
随机生成模块,用于随机生成发起端临时私钥dA以及测试信息M0;
解密模块,用于利用发起端加密密钥EnKA对所述第一密文C0解密获得解密消息M1,并利用发起端加密密钥EnKA对所述第二密文进行认证并解密,得到明文数据;
比较模块,用于对比测试消息M0与解密消息M1。
10.一种数据通信装置,其特征在于,包括接收模块、随机生成模块、临时公钥生成模块、过程密钥生成模块、加密密钥生成模块、加密模块、发送模块;
接收模块,用于接收发起端发送的数据通信请求、接收发起端临时公钥PA和测试消息M0、接收发起端对第一密文的验证结果、接收发起端的发送数据请求以及接收发起端对第二密文的认证结果;
随机生成模块,用于随机生成响应端临时私钥dB;
临时公钥生成模块,用于利用Edwards椭圆曲线算法生成响应端临时公钥PB;
过程密钥生成模块,用于利用响应端临时私钥dB和发起端临时公钥PA通过Edwards椭圆曲线算法生成响应端过程密钥skB;
加密密钥生成模块,用于利用密钥派生函数推导出响应端加密密钥EnKB;
加密模块,用于利用响应端加密密钥EnKB对测试消息M0进行加密,得到第一密文C0,并利用响应端加密密钥EnKB对待发送数据Mdata进行加密处理,获得第二密文;
发送模块,用于将响应端临时公钥PB发送给发起端、将第一密文C0和第二密文发送给发起端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910708697.0A CN110365482B (zh) | 2019-08-01 | 2019-08-01 | 一种数据通信方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910708697.0A CN110365482B (zh) | 2019-08-01 | 2019-08-01 | 一种数据通信方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110365482A true CN110365482A (zh) | 2019-10-22 |
CN110365482B CN110365482B (zh) | 2023-05-16 |
Family
ID=68222935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910708697.0A Active CN110365482B (zh) | 2019-08-01 | 2019-08-01 | 一种数据通信方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110365482B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116961906A (zh) * | 2023-09-19 | 2023-10-27 | 长春吉大正元信息技术股份有限公司 | 一种网络通信方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009095491A1 (en) * | 2008-02-01 | 2009-08-06 | Thomson Licensing | A device, method and a computer program product for calculating additions of points on elliptic curves in edwards form |
CN102546162A (zh) * | 2010-12-29 | 2012-07-04 | 北京数字太和科技有限责任公司 | 一种数据安全处理方法 |
CN105162583A (zh) * | 2015-07-15 | 2015-12-16 | 北京江南天安科技有限公司 | 一种单个、单级和多级密钥对分散方法及其*** |
CN107040369A (zh) * | 2016-10-26 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 数据传输方法、装置及*** |
WO2017163434A1 (ja) * | 2016-03-25 | 2017-09-28 | 中国電力株式会社 | 情報処理方法及び情報処理システム |
CN108306734A (zh) * | 2017-12-28 | 2018-07-20 | 飞天诚信科技股份有限公司 | 一种通信链路保护方法及装置 |
-
2019
- 2019-08-01 CN CN201910708697.0A patent/CN110365482B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009095491A1 (en) * | 2008-02-01 | 2009-08-06 | Thomson Licensing | A device, method and a computer program product for calculating additions of points on elliptic curves in edwards form |
CN102546162A (zh) * | 2010-12-29 | 2012-07-04 | 北京数字太和科技有限责任公司 | 一种数据安全处理方法 |
CN105162583A (zh) * | 2015-07-15 | 2015-12-16 | 北京江南天安科技有限公司 | 一种单个、单级和多级密钥对分散方法及其*** |
WO2017163434A1 (ja) * | 2016-03-25 | 2017-09-28 | 中国電力株式会社 | 情報処理方法及び情報処理システム |
CN107040369A (zh) * | 2016-10-26 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 数据传输方法、装置及*** |
CN108306734A (zh) * | 2017-12-28 | 2018-07-20 | 飞天诚信科技股份有限公司 | 一种通信链路保护方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116961906A (zh) * | 2023-09-19 | 2023-10-27 | 长春吉大正元信息技术股份有限公司 | 一种网络通信方法、装置、设备及存储介质 |
CN116961906B (zh) * | 2023-09-19 | 2023-12-15 | 长春吉大正元信息技术股份有限公司 | 一种网络通信方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110365482B (zh) | 2023-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103986583B (zh) | 一种动态加密方法及其加密通信*** | |
JP2019533384A (ja) | データ伝送方法、装置およびシステム | |
CN103546289B (zh) | 一种基于USBKey的安全传输数据的方法及*** | |
US20140192976A1 (en) | Method and system for id-based encryption and decryption | |
CN108347419A (zh) | 数据传输方法和装置 | |
EP1905186A2 (en) | Cryptographic authentication, and/or establishment of shared cryptographic keys, using a signing key encrypted with a non-one-time-pad encryption, including (but not limited to) techniques with improved security against malleability attacks | |
CN104901935A (zh) | 一种基于cpk的双向认证及数据交互安全保护方法 | |
CN109800588B (zh) | 条码动态加密方法及装置、条码动态解密方法及装置 | |
CN104901803A (zh) | 一种基于cpk标识认证技术的数据交互安全保护方法 | |
EP3664360A1 (en) | Certificateless public key encryption using pairings | |
CN106685969A (zh) | 一种混合加密的信息传输方法及传输*** | |
CN110120939A (zh) | 一种基于异构***的可否认认证的加密方法和*** | |
CN109194474A (zh) | 一种数据传输方法及装置 | |
CN105554031A (zh) | 加密方法、加密装置、解密方法、解密装置和终端 | |
CN109600725A (zh) | 一种基于sm9算法的短信加密方法 | |
CN110113150A (zh) | 基于无证书环境的可否认认证的加密方法和*** | |
CN101808089A (zh) | 基于非对称加密算法同态性的秘密数据传输保护方法 | |
CN106713349B (zh) | 一种能抵抗选择密文攻击的群组间代理重加密方法 | |
CN110138795A (zh) | 一种通信过程中的多步混合加解密方法 | |
CN110611572A (zh) | 基于量子随机数的非对称密码终端、通信***及方法 | |
JP2020532177A (ja) | データの高度なセキュリティ、高速暗号化および、伝送のためのコンピュータ実装システムおよび方法 | |
CN113676448B (zh) | 一种基于对称秘钥的离线设备双向认证方法和*** | |
CN108718237A (zh) | 一种基于对称密钥池的改进型aka身份认证***和方法 | |
CN109274663A (zh) | 基于sm2动态密钥交换与sm4数据加密的通信方法 | |
CN106209384B (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230420 Address after: 212355 Hengtang Industrial Zone, Danyang City, Zhenjiang City, Jiangsu Province Applicant after: HENGBAO Corp. Address before: Hengtang Industrial Park, Yunyang town, Danyang City, Zhenjiang City, Jiangsu Province Applicant before: JIANGSU HENGBAO INTELLIGENT SYSTEM TECHNOLOGY Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |