一种通信方法、装置、电子设备及存储介质与流程

文档序号:28417921发布日期:2022-01-08 03:47阅读:96来源:国知局
一种通信方法、装置、电子设备及存储介质与流程

1.本发明涉及通信领域,尤其是涉及一种通信方法、装置、电子设备及存储介质。


背景技术:

2.在互联网中,网络传输层协议通常使用的是传输控制协议(transmission control protocol/internet protocol,tcp/ip),所有传输层如tcp、用户数据报协议(user datagram protocol,udp)及其它传输层协议等的数据,都被直接封装为ip数据包进行传输。
3.然而,在使用tcp/ip协议的网络中传输数据时,攻击者可以通过ip地址欺骗目标主机,以便对目标主机进行拒绝服务攻击、伪造tcp连接、会话劫持、隐藏攻击主机地址等。对于通信双方需要进行交互的场景而言,任一方被攻击都会造成双方不能进行正常通信。
4.鉴于此,如何提高通信双方的通信安全,成为一个亟待解决的技术问题。


技术实现要素:

5.本发明提供一种通信方法、装置、电子设备及存储介质,用以解决现有技术中存在的通信双方的安全性较低的技术问题。
6.第一方面,为解决上述技术问题,本发明实施例提供的一种通信方法,应用于第一方,该方法的技术方案如下:
7.根据数据传输请求,生成包含第一签名、第一nlp地址、及第一临时公钥的密钥协商报文;其中,所述密钥协商报文用于所述第一方与所述第二方进行身份认证和密钥交换,所述第一签名是通过所述第一方的第一私钥生成的,所述第一nlp地址为所述第一方的第一公钥;
8.将所述密钥协商报文发送给所述第二方,使所述第二方用所述第一签名和所述第一nlp地址验证所述第一方的身份,并在验证成功后存储所述第一临时公钥,及生成包含第二签名、第二nlp地址及第二临时公钥的响应报文;其中,所述第二签名是通过所述第二方的第二私钥生成的,所述第二nlp地址为所述第二方的第二公钥,所述第二方使用的也是所述nlp协议栈;
9.接收所述响应报文,并用所述第二签名和所述第二nlp地址验证所述第二方的身份,在验证成功后,根据椭圆曲线迪菲-赫尔曼秘钥交换ecdh,对与所述第一临时公钥对应的第一临时私钥及所述第二临时公钥进行计算,得到共享密钥;在与所述第二方进行数据交互时,用所述共享密钥进行数据的加密传输。
10.一种可能的实施方式,生成包含第一签名、第一nlp地址以及第一临时公钥的密钥协商报文之前,还包括:
11.根据所述ecdh生成第一临时密钥对;
12.将所述第一临时密钥对中的公钥作为所述第一临时公钥;
13.将所述第一临时密钥对中的私钥作为所述第一临时私钥。
14.一种可能的实施方式,生成包含第一签名、第一nlp地址以及第一临时公钥的密钥协商报文之前,还包括:
15.随机生成所述第一私钥;
16.采用非对称加密算法和所述第一私钥生成所述第一公钥。
17.一种可能的实施方式,生成包含第一签名、第一nlp地址以及第一临时公钥的密钥协商报文,包括:
18.从所述数据传输请求中获取所述第二nlp地址;
19.对所述第二nlp地址进行解析,获得所述第二方的第二物理地址;
20.用所述第一私钥对所述密钥协商报文中至少包含所述第一临时公钥和时间戳的部分头部信息进行加密,获得所述第一签名;其中,所述时间戳用于验证所述密钥协商报文的时效性;
21.将所述第一签名、所述第一nlp地址、所述第一方的第一物理地址、所述第二nlp地址、所述第二物理地址以及所述第一临时公钥封装为所述密钥协商报文。
22.一种可能的实施方式,所述部分头部信息,包括:
23.所述密钥协商报文的nlp基本头部和nlp扩展头部;
24.或,所述nlp基本头部中的部分头部和所述nlp扩展头部。
25.一种可能的实施方式,用所述第二签名和所述第二nlp地址验证所述第二方的身份,包括:
26.用所述第二nlp地址验证所述第二签名;
27.若验证成功,则确定所述第二方的身份验证成功;
28.若用所述第二nlp地址验证所述第二签名失败,则确定所述第二方的身份验证失败,并丢弃所述响应报文。
29.一种可能的实施方式,在与所述第二方进行数据交互时,用所述共享密钥进行数据的加密传输,包括:
30.当向所述第二方发送待传输数据时,从所述数据传输请求中获取所述待传输数据;并用具有关联数据的认证加密aead性质的对称加密算法及所述共享密钥加密所述待传输数据,获得加密后的待传输数据;其中,所述待传输数据为得到所述第一方的nlp协议栈中网络层之上的多层数据;
31.将所述加密后的待传输数据封装在第一nlpsec报文中,并发送给所述第二方;
32.当接收到所述第二方发送的第二nlpsec报文后,用所述对称加密算法和所述共享密钥,对所述第二nlpsec报文中的加密数据进行解密及完整性校验,在校验成功后将解密后的数据传输给所述第一方的nlp协议栈中的传输层进行处理。
33.第二方面,本发明实施例提供了一种通信装置,包括:
34.生成单元,用于根据数据传输请求,生成包含第一签名、第一nlp地址、及第一临时公钥的密钥协商报文;其中,所述密钥协商报文用于所述第一方与所述第二方进行身份认证和密钥交换,所述第一签名是通过所述第一方的第一私钥生成的,所述第一nlp地址为所述第一方的第一公钥;
35.验证单元,用于将所述密钥协商报文发送给所述第二方,使所述第二方用所述第一签名和所述第一nlp地址验证所述第一方的身份,并在验证成功后存储所述第一临时公
钥,及生成包含第二签名、第二nlp地址及第二临时公钥的响应报文;其中,所述第二签名是通过所述第二方的第二私钥生成的,所述第二nlp地址为所述第二方的第二公钥,所述第二方使用的也是所述nlp协议栈;
36.传输单元,用于接收所述响应报文,并用所述第二签名和所述第二nlp地址验证所述第二方的身份,在验证成功后,根据椭圆曲线迪菲-赫尔曼秘钥交换ecdh,对与所述第一临时公钥对应的第一临时私钥及所述第二临时公钥进行计算,得到共享密钥;在与所述第二方进行数据交互时,用所述共享密钥进行数据的加密传输。
37.一种可能的实施方式,所述生成单元还用于:
38.根据所述ecdh生成第一临时密钥对;
39.将所述第一临时密钥对中的公钥作为所述第一临时公钥;
40.将所述第一临时密钥对中的私钥作为所述第一临时私钥。
41.一种可能的实施方式,所述生成单元还用于:
42.随机生成所述第一私钥;
43.采用非对称加密算法和所述第一私钥生成所述第一公钥。
44.一种可能的实施方式,所述生成单元还用于:
45.从所述数据传输请求中获取所述第二nlp地址;
46.对所述第二nlp地址进行解析,获得所述第二方的第二物理地址;
47.用所述第一私钥对所述密钥协商报文中至少包含所述第一临时公钥和时间戳的部分头部信息进行加密,获得所述第一签名;其中,所述时间戳用于验证所述密钥协商报文的时效性;
48.将所述第一签名、所述第一nlp地址、所述第一方的第一物理地址、所述第二nlp地址、所述第二物理地址以及所述第一临时公钥封装为所述密钥协商报文。
49.一种可能的实施方式,所述部分头部信息,包括:
50.所述密钥协商报文的nlp基本头部和nlp扩展头部;
51.或,所述nlp基本头部中的部分头部和所述nlp扩展头部。
52.一种可能的实施方式,所述验证单元还用于:
53.用所述第二nlp地址验证所述第二签名;
54.若验证成功,则确定所述第二方的身份验证成功;
55.若用所述第二nlp地址验证所述第二签名失败,则确定所述第二方的身份验证失败,并丢弃所述响应报文。
56.一种可能的实施方式,所述传输单元具体用于:
57.当向所述第二方发送待传输数据时,从所述数据传输请求中获取所述待传输数据;并用具有关联数据的认证加密aead性质的对称加密算法及所述共享密钥加密所述待传输数据,获得加密后的待传输数据;其中,所述待传输数据为得到所述第一方的nlp协议栈中网络层之上的多层数据;
58.将所述加密后的待传输数据封装在第一nlpsec报文中,并发送给所述第二方;
59.当接收到所述第二方发送的第二nlpsec报文后,用所述对称加密算法和所述共享密钥,对所述第二nlpsec报文中的加密数据进行解密及完整性校验,在校验成功后将解密后的数据传输给所述第一方的nlp协议栈中的传输层进行处理。
60.第三方面,本发明实施例还提供一种电子设备,包括:
61.至少一个处理器,以及
62.与所述至少一个处理器连接的存储器;
63.其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,执行如上述第一方面所述的方法。
64.第四方面,本发明实施例还提供一种可读存储介质,包括:
65.存储器,
66.所述存储器用于存储指令,当所述指令被处理器执行时,使得包括所述可读存储介质的装置完成如上述第一方面所述的方法。
附图说明
67.图1为本发明实施例提供的nlp数据包的封装结构示意图;
68.图2为本发明实施例提供的nlp数据包中nlp基本头部的结构示意图;
69.图3为本发明实施例提供的nlpkey扩展头部的结构示意图;
70.图4为本发明实施例提供的nlpsec扩展头部的结构示意图;
71.图5为本发明实施例提供的密钥协商数据包的结构示意图;
72.图6为本发明实施例提供的nlpsec数据包的结构示意图;
73.图7为本发明实施例提供的一种通信装置的流程图;
74.图8为本发明实施例提供的第一方与第二方交互的流程图;
75.图9为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
76.本发明实施列提供一种通信方法、装置、电子设备及存储介质,用以解决现有技术中存在的通信双方的安全性较低的技术问题。
77.为了更好的理解上述技术方案,下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。
78.在现有技术中,为了解决上述ip地址欺骗的问题,通常可以采用以下几种解决方案:
79.方案一、接入端监控,即接入交换机、路由器利用远程用户拨号认证服务(remote authentication dial in user service,radius)、动态主机配置协议(dynamic host configuration protocol,dhcp)、物理地址(media access control address,mac)和ip动态绑定等方式在接入端控制ip,使得主机不可仿冒为其它ip。但这种方案的缺点在于:运营商对接入端监控,只能解决一小部分用户(如家庭网络)的ip地址欺骗。
80.方案二、在边缘和核心网的路由器监控数据包,如单播反向路径检查(unicast reverse path forwarding,urpf),若数据包的单播反向路径检查失败,则说明该数据包的来源是仿冒的,不予通行。这种方案的缺点在于:只能解决一部分公网ip地址的冒用。
81.方案三、放弃源地址信任,建立基于密码的认证机制,加密传输和身份验证。如,
https的传输层安全(transport layer security,tls)机制、互联网协议安全(internetprotocolsecurity,ipsec)方案等。这种方案的缺点在于,需要较为复杂的上层协议来实现密码(密钥)的认证和加密传输(如tls、ipsec等),解决了ip欺骗造成的大部分安全隐患,但是不能解决ip地址认证的问题,仿冒者依然可以通过伪造ip地址嗅探到数据包,可以发起分布式拒绝服务攻击(distributed denial of service attack,ddos攻击)。
82.方案四、源地址验证体系(source address validation architecture,sava)架构,可以在接入网、域内和域间进行源地址验证。这种方案的缺点在于,域内验证只能约束域内用户行为,无法对外域攻击建立防御基础;域间验证方案存在带宽、计算资源开销过大等不足,影响数据传输性能,部分方案对第三方设施存在依赖。
83.上述方案都不能彻底解决ip地址欺骗的问题。这使得在要求高可靠性、时效要求不高的双边通信中,通信双方都存在被攻击的风险,一旦任一方被攻击都会造成通信双方不能正常通信,导致双方的通信安全性较低。
84.为解决上述方案,本发明提供一种通信方法、装置、电子设备及存储介质,本发明中的通信双方(第一方、第二方)都使用了发明人设计的新链网(new link protocol,nlp)协议栈,使通信双方可以使用公钥作为nlp地址进行网络通信。
85.为了是本领域的技术人员能充分理解本发明,现对nlp协议栈做一个简单的介绍。
86.请参见表1为本发明实施例提供的nlp协议栈的结构示意图。
87.表1
[0088][0089]
nlp协议栈相当于将传统ip协议栈中的网络层使用的ip协议改为nlp协议。在nlp协议栈通信双方使用的网络地址为nlp地址,该nlp地址为本地生成的32字节的公钥。varp是对arp协议的扩展,用于解析nlp地址和mac地址的映射关系。
[0090]
通过nlp协议栈生成的数据包被称之为nlp数据包,通过nlp协议栈生成的报文称之为nlp协议报文。
[0091]
请参见图1为本发明实施例提供的nlp数据包的封装结构示意图。
[0092]
nlp数据包包括以太头(占用14字节)、nlp基本头部(占用72字节)、nlp扩展头部(可有、可无,即可选)、传输层头部(占用字节长度可以跟实际需要设置,即不定长)、数据
(不定长)。
[0093]
请参见图2为本发明实施例提供的nlp数据包中nlp基本头部的结构示意图。
[0094]
nlp基本头部包括:
[0095]
版本(占用1字节),表示使用的nlp协议版本。
[0096]
服务(占用1字节),表示提供的服务类型,类似ip中的tos字段。
[0097]
流标签(占用2字节),标记报文的数据流类型,可用于质量服务。
[0098]
包长度(占用2字节,包含nlp基本头部的长度,nlp扩展头部的长度和数据的长度。
[0099]
下个头(占用1字节,下一个扩展头或者上层协议类型。
[0100]
跳数(占用1字节),限制nlp数据包被转发的次数。
[0101]
nlp源地址(占用32字节),发送方的nlp地址。
[0102]
nlp目的地址(占用32字节),接收方的nlp地址。
[0103]
上述nlp数据包中的nlp扩展头部包括nlpkey扩展头部、nlpsec扩展头部。
[0104]
请参见图3为本发明实施例提供的nlpkey扩展头部的结构示意图。
[0105]
nlpkey扩展头部:
[0106]
下个头(占用1字节),表示下一个扩展头或者上层协议类型。
[0107]
类型(占用1字节),表示nlp数据包是属于请求的类型,还是属于回复的类型,如主动连接方(发送方)发送的是请求,被动连接方(接收方)返回的是响应。
[0108]
保留(占用2字节),预留的位置,用于后续有需要时使用。
[0109]
时间戳(占用4字节),用于确认nlp数据包的时效性。
[0110]
临时公钥(占用32字节),在通信双方交互式临时生成的,用于与对端交换公钥,以计算共享密钥。
[0111]
数字签名(占用64字节),通常对扩展头部前40个字节进行加密签名,以认证身份,同时也可以保证扩展头内容的完整性。
[0112]
请参见图4为本发明实施例提供的nlpsec扩展头部的结构示意图。
[0113]
nlpsec扩展头部包括:
[0114]
下个头(占用1字节),表示下一个扩展头或者上层协议类型。
[0115]
保留(占用1字节),预留的位置,用于后续有需要时使用。
[0116]
加密数据长度(占用2字节),被加密的数据的长度。
[0117]
序列号(占用4字节),保证了即使是完全相同的原始数据传输(如重传),因为序列号的不同,而使得密文(加密数据)也不相同。
[0118]
请参见图5为本发明实施例提供的密钥协商数据包的结构示意图。
[0119]
密钥协商数据包即为nlp数据包不包含传输层头部和数据,且nlp扩展头部为nlpkey扩展头部,nlpkey扩展头部占用104字节。
[0120]
请参见图6为本发明实施例提供的nlpsec数据包的结构示意图。
[0121]
nlpsec数据包即为nlp数据包中nlp扩展头部为nlpsec扩展头部,nlpsec扩展头部占用8字节,且不包含传输层头部,而是将传输层头部的数据作为数据的一部分,一起进行加密,得到加密数据,加密数据是对nlp协议栈中三层(layer3)以上的数据进行加密。
[0122]
请参考图7,本发明实施例提供一种通信方法,应用于第一方,第一方使用的是nlp协议栈,该通信方法的处理过程如下。
[0123]
步骤701:根据数据传输请求,生成包含第一签名、第一nlp地址、及第一临时公钥的密钥协商报文;其中,密钥协商报文用于第一方与第二方进行身份认证和密钥交换,第一签名是通过第一方的第一私钥生成的,第一nlp地址为第一方的第一公钥。
[0124]
在步骤701中,数据传输请求可以使基于第一方中的上层应用生成的,在数据传输请求中可以包括待发送数据、第一方的第一nlp地址。
[0125]
在本发明提供的实施例中,第一方可以是主动发起连接的一方,也可以是被动连接的一方;当主动发起连接的一方向被动连接的一方发送数据时,主动发起连接的一方为第一方,被动连接的一方为第二方;当被动连接的一方向主动发起连接的一方返回数据时,被动连接的一方为第一方,主动发起连接的一方为第二方。
[0126]
若第一方还已经生成第一临时公钥,则可以直接使用;若第一方还没有生成第一临时公钥,则在生成包含第一签名、第一nlp地址以及第一临时公钥的密钥协商报文之前,还需要先生成第一临时公钥,具体可以通过下列方式实现:
[0127]
根据椭圆曲线迪菲-赫尔曼秘钥交换(elliptic curve diffie

hellman key exchange,ecdh)生成第一临时密钥对;将第一临时密钥对中的公钥作为第一临时公钥;将第一临时密钥对中的私钥作为第一临时私钥。
[0128]
在本发明提供的实施例中,通过根据ecdh生成第一临时密钥对,可以使第一方、第二方基于对方的临时公钥和己方的临时私钥生成相同的共享密钥,以确保通信双方使用相同的共享密钥基于对称加密算法对待传输数据进行加密传输,使通信双方能利用共享密钥解密接收到的加密数据(及加密后的待传输数据)。
[0129]
在本发明提供的实施例中,密钥协商报文采用的是密钥协商数据包的结构进行封装的。
[0130]
若第一方已经生成第一nlp地址,则可以直接执行在本步骤;若第一方没有生成第一nlp地址,则在生成包含第一签名、第一nlp地址以及第一临时公钥的密钥协商报文之前,还需要先生成第一nlp地址,具体采用下列方式实现:
[0131]
随机生成第一私钥;采用非对称加密算法和第一私钥生成第一公钥。
[0132]
非对称加密算法,例如可以是椭圆曲线算法ed25519。
[0133]
例如,第一方为用户1使用的电脑1,在电脑1中使用的是nlp协议栈,当前用户通过电脑1中的邮件(网页页面)向第二方(假设为用户2使用的电脑2)发送一封邮件,会生成对应的数据传输请求,在该数据传输请求中包括待发送数据(邮件内容)和第二方的第二nlp地址。
[0134]
但由于此电脑1为新装的电脑,其还没有设置nlp地址,因此需要先随机生成32字节的第一私钥,再用椭圆曲线算法ed25519(即非对称加密算法)和第一私钥,生成第一公钥,并将第一公钥作为电脑1的第一nlp地址。之后,电脑1便可将第一方签名、第一nlp地址、第一临时公钥封装为密钥协商报文,并发送给电脑2,以便进行密钥协商。
[0135]
一种可能的实施方式,生成包含第一签名、第一nlp地址以及第一临时公钥的密钥协商报文,包括:
[0136]
从数据传输请求中获取第二nlp地址;对第二nlp地址进行解析,获得第二方的第二物理地址;用第一私钥对密钥协商报文中至少包含第一临时公钥和时间戳的部分头部信息进行加密,获得第一签名;其中,时间戳用于验证密钥协商报文的时效性;将第一签名、第
一nlp地址、第一方的第一物理地址、第二nlp地址、第二物理地址以及第一临时公钥封装为密钥协商报文。
[0137]
其中,部分头部信息包括密钥协商报文的nlp基本头部和nlp扩展头部;或,nlp基本头部中的部分头部和nlp扩展头部。nlp扩展头部为nlpkey扩展头部。
[0138]
例如,第一方在获得第二nlp地址和第二物理地址后,时间戳设置为30分钟,部分头部信息为nlpkey扩展头部和部分nlp基本头部,用第一私钥对部分头部信息进行计算,得到第一签名;之后,按密钥协商数据包的结构对第一签名、第一nlp地址、第一方的第一物理地址、第二nlp地址、第二物理地址以及第一临时公钥进行封装,得到密钥协商报文,通过该密钥协商报文生成的共享密钥的有效时间为30分钟。
[0139]
在本发明提供的实施例中,利用密钥协商报文协商通信双方在通信的过程中使用的共享密钥,使得通过在密钥协商报文中设置通信双方生成的共享密钥的有效时间,可以防止共享密钥被非法盗用,提高通信双方的通信安全。第一方和第二方可以通过将各自生成的临时密钥对和共享秘钥绑定,结合设置的时间戳,为共享秘钥设置失效机制,当到达时间戳对应的失效时间时,强制双方重新协商生成新的共享秘钥进行数据传输。
[0140]
在第一方生成密钥协商报文后,便可执行步骤702。
[0141]
步骤702:将密钥协商报文发送给第二方,使第二方用第一签名和第一nlp地址验证第一方的身份,并在验证成功后存储第一临时公钥,及生成包含第二签名、第二nlp地址及第二临时公钥的响应报文;其中,第二签名是通过第二方的第二私钥生成的,第二nlp地址为第二方的第二公钥,第二方使用的也是nlp协议栈。
[0142]
第二方接收到密钥协商报文后,用第一nlp地址验证第一签名,以验证源地址(即第一nlp地址)的身份,在验证失败后,确定接收到的密钥协商报文是非法的,直接丢弃;若用第一nlp地址验证第一签名成功,则从密钥协商报文中获取并存储第一临时公钥,并根据ecdh对第一临时公钥和第二方生成的第二临时私钥进行计算,获得并存储共享密钥,以待后续进行数据传输时使用。
[0143]
同时,还会将第二方的第二临时公钥发送给第一方,以完成密钥协商(即生成相同的共享密钥),具体采用的方式为:
[0144]
将第二签名、第二nlp地址及第二临时公钥,按密钥协商数据包进行封装,生成密钥协商报文的响应报文,发送给第一方。
[0145]
需要说明的是,第二方生成第二临时密钥对(包含第二临时公钥、第二临时私钥)的方式与第一方生成第一临时密钥对的方式相同,故不再赘述。
[0146]
在第二方发送响应报文给第一方后,便可执行步骤703。
[0147]
步骤703:接收响应报文,并用第二签名和第二nlp地址验证第二方的身份,在验证成功后,根据椭圆曲线迪菲-赫尔曼秘钥交换ecdh,对与第一临时公钥对应的第一临时私钥及第二临时公钥进行计算,得到共享密钥;在与第二方进行数据交互时,用共享密钥进行数据的加密传输。
[0148]
第二方接收到响应报文后,需要用响应报文中携带的第二nlp地址验证第二签名,以验证第二方的身份,具体通过下列方式实现:
[0149]
用第二nlp地址验证第二签名;若验证成功,则确定第二方的身份验证成功;若用第二nlp地址验证第二签名失败,则确定第二方的身份验证失败,并丢弃响应报文。
[0150]
在第二nlp地址验证第二签名成功后,从响应报文中获取第二临时公钥,完成第一方与第二方的密钥交换;同时,根据ecdh对第一临时私钥及第二临时公钥进行计算,得到并存储共享密钥,完成第一方与第二方的密钥协商,之后,第一方和第二方便可利用双方协商好的共享密钥进行数据的加密传输。
[0151]
需要理解的是,由于第一方和第二方生成的共享密钥相同,因此在本发明提供的实施例中,并没有严格区分第一方生成的共享密钥和第二方生成的共享密钥。
[0152]
在本发明提供的实施例中,第一方与第二方完成密钥协商后,便可用协商得到的共享密钥进行数据交互,具体通过下列方式实现:
[0153]
当向第二方发送待传输数据时,从数据传输请求中获取待传输数据;并用具有关联数据的认证加密aead性质的对称加密算法及共享密钥加密待传输数据,获得加密后的待传输数据;其中,待传输数据为得到第一方的nlp协议栈中网络层之上的多层数据;
[0154]
将加密后的待传输数据封装在第一nlpsec报文中,并发送给第二方;
[0155]
当接收到第二方发送的第二nlpsec报文后,用对称加密算法和共享密钥,对第二nlpsec报文中的加密数据进行解密及完整性校验,在校验成功后将解密后的数据传输给第一方的nlp协议栈中的传输层进行处理。
[0156]
例如,继续以第一方为用户1使用的电脑1,向第二方(用户2使用的电脑2)发送邮件为例,在电脑1(第一方)通秘钥协商报文与电脑2(第二方)完成秘钥交换,并各自生成相同的共享秘钥后,电脑1便可利用生成的共享秘钥向电脑2发送邮件内容。
[0157]
电脑1从数据传输请求中获取邮件内容,并用具有aead性质的对称加密算法(如chacha20-poly1305算法)及共享秘钥加密本地nlp协议栈中网络层之上的多层数据(邮件内容包含在其中),获得加密后的待传输数据,并按照nlpsec数据包进行封装,生成第一nlpsec报文,将第一nlpsec报文发送给电脑2。
[0158]
电脑2接收到第一nlpsec报文后,在通过第一nlp地址验证其中携带的数字签名,并验证成功后,从第一nlpsec报文中获取加密后的待传输数据,用本地的共享秘钥解密加密后的待传输数据,得到待传输数据,从待传输数据中得到邮件内容。并且,电脑2向电脑1发送成功接收邮件内容的响应报文(即第二nlpsec报文),该响应报文是按nlpsec数据包封装的。
[0159]
电脑1接收到第二nlpsec报文(邮件内容的响应报文)后,用其中携带的第二nlp地址验证第二nlpsec报文中携带的数字签名成功后,获取其中携带的确认电脑2成功接收到邮件内容的确认信息,至此完成电脑1与电脑2的双边交互过程。
[0160]
在本发明提供的实施例中,在进行数据传输时,通过使用具有aead性质的对称加密算法和双方协商出的共享秘钥对待传输数据进行加密,可以同时保障待传输数据的机密性和nlpsec数据包的完整性,同时实现了安全认证从上层应用中解耦。
[0161]
请参见图8为本发明实施例提供的第一方与第二方交互的流程图。
[0162]
步骤801:第一方生成携带第一临时公钥的秘钥协商报文。
[0163]
第一方需要远程登录第二方的数据库,于是第二方的上层应用生成了包含数据传输请求登录数据库所需的用户名和密码以及第二方的第二nlp地址。并生成包含第一签名、第一nlp地址、及第一临时公钥的密钥协商报文。
[0164]
步骤802:第一方发送秘钥协商报文给第二方。
[0165]
步骤803:第二方在成功验证秘钥协商报文的来源后,生成包含第二临时公钥的响应报文,以及基于第一临时公钥和第二临时私钥生成并存储共享秘钥。
[0166]
第二方验证秘钥协商报文的来源,即用秘钥协商报文中携带的第一nlp地址验证第一签名。
[0167]
步骤804:第二方将响应报文发送给第一方。
[0168]
步骤805:第一方在成功验证响应报文的来源后,基于第一临时私钥和第二临时公钥生成共享秘钥。
[0169]
至此,第一方和第二方均获得了对方的临时公钥,完成秘钥交换,生成相同的共享秘钥。
[0170]
步骤806:第一方用共享秘钥加密待发送数据,并封装为第一nlpsec报文。
[0171]
待传输数据中包含登录数据库所需的用户名和密码,第一方用具有aead性质的对称加密算法和共享秘钥加密待传输数据。
[0172]
步骤807:第一方将第一nlpsec报文发送给第二方。
[0173]
步骤808:第二方在成功验证第一nlpsec报文的来源后,从第一nlpsec报文中获取用户名和密码,在确定用户名和密码正确后生成授权访问数据库的信息,并封装在第二nlpsec报文中。
[0174]
步骤809:第二方向第一方发送第二nlpsec报文。
[0175]
步骤810:第一方在成功验证第二nlpsec报文的来源后,获取授权访问数据库的信息,以访问第二方的数据库。
[0176]
基于同一发明构思,本发明一实施例中提供一种通信装置,该通信装置的通信方法的具体实施方式可参见方法实施例部分的描述,重复之处不再赘述,请参见图9,该通信装置包括:
[0177]
生成单元901,用于根据数据传输请求,生成包含第一签名、第一nlp地址、及第一临时公钥的密钥协商报文;其中,所述密钥协商报文用于所述第一方与所述第二方进行身份认证和密钥交换,所述第一签名是通过所述第一方的第一私钥生成的,所述第一nlp地址为所述第一方的第一公钥;
[0178]
验证单元902,用于将所述密钥协商报文发送给所述第二方,使所述第二方用所述第一签名和所述第一nlp地址验证所述第一方的身份,并在验证成功后存储所述第一临时公钥,及生成包含第二签名、第二nlp地址及第二临时公钥的响应报文;其中,所述第二签名是通过所述第二方的第二私钥生成的,所述第二nlp地址为所述第二方的第二公钥,所述第二方使用的也是所述nlp协议栈;
[0179]
传输单元903,用于接收所述响应报文,并用所述第二签名和所述第二nlp地址验证所述第二方的身份,在验证成功后,根据椭圆曲线迪菲-赫尔曼秘钥交换ecdh,对与所述第一临时公钥对应的第一临时私钥及所述第二临时公钥进行计算,得到共享密钥;在与所述第二方进行数据交互时,用所述共享密钥进行数据的加密传输。
[0180]
一种可能的实施方式,所述生成单元901还用于:
[0181]
根据所述ecdh生成第一临时密钥对;
[0182]
将所述第一临时密钥对中的公钥作为所述第一临时公钥;
[0183]
将所述第一临时密钥对中的私钥作为所述第一临时私钥。
[0184]
一种可能的实施方式,所述生成单元901还用于:
[0185]
随机生成所述第一私钥;
[0186]
采用非对称加密算法和所述第一私钥生成所述第一公钥。
[0187]
一种可能的实施方式,所述生成单元901还用于:
[0188]
从所述数据传输请求中获取所述第二nlp地址;
[0189]
对所述第二nlp地址进行解析,获得所述第二方的第二物理地址;
[0190]
用所述第一私钥对所述密钥协商报文中至少包含所述第一临时公钥和时间戳的部分头部信息进行加密,获得所述第一签名;其中,所述时间戳用于验证所述密钥协商报文的时效性;
[0191]
将所述第一签名、所述第一nlp地址、所述第一方的第一物理地址、所述第二nlp地址、所述第二物理地址以及所述第一临时公钥封装为所述密钥协商报文。
[0192]
一种可能的实施方式,所述部分头部信息,包括:
[0193]
所述密钥协商报文的nlp基本头部和nlp扩展头部;
[0194]
或,所述nlp基本头部中的部分头部和所述nlp扩展头部。
[0195]
一种可能的实施方式,所述验证单元902还用于:
[0196]
用所述第二nlp地址验证所述第二签名;
[0197]
若验证成功,则确定所述第二方的身份验证成功;
[0198]
若用所述第二nlp地址验证所述第二签名失败,则确定所述第二方的身份验证失败,并丢弃所述响应报文。
[0199]
一种可能的实施方式,所述传输单元903具体用于:
[0200]
当向所述第二方发送待传输数据时,从所述数据传输请求中获取所述待传输数据;并用具有关联数据的认证加密aead性质的对称加密算法及所述共享密钥加密所述待传输数据,获得加密后的待传输数据;其中,所述待传输数据为得到所述第一方的nlp协议栈中网络层之上的多层数据;
[0201]
将所述加密后的待传输数据封装在第一nlpsec报文中,并发送给所述第二方;
[0202]
当接收到所述第二方发送的第二nlpsec报文后,用所述对称加密算法和所述共享密钥,对所述第二nlpsec报文中的加密数据进行解密及完整性校验,在校验成功后将解密后的数据传输给所述第一方的nlp协议栈中的传输层进行处理。
[0203]
基于同一发明构思,本发明实施例中提供了一种电子设备,包括:至少一个处理器,以及
[0204]
与所述至少一个处理器连接的存储器;
[0205]
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,执行如上所述的通信方法。
[0206]
基于同一发明构思,本发明实施例还提一种可读存储介质,包括:
[0207]
存储器,
[0208]
所述存储器用于存储指令,当所述指令被处理器执行时,使得包括所述可读存储介质的装置完成如上所述的通信方法。
[0209]
本领域内的技术人员应明白,本发明实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面
的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0210]
本发明实施例是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0211]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0212]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0213]
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1