CN117014144A - 网络通信方法、装置、电子设备及存储介质 - Google Patents
网络通信方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117014144A CN117014144A CN202210470812.7A CN202210470812A CN117014144A CN 117014144 A CN117014144 A CN 117014144A CN 202210470812 A CN202210470812 A CN 202210470812A CN 117014144 A CN117014144 A CN 117014144A
- Authority
- CN
- China
- Prior art keywords
- algorithm
- target
- native
- signature algorithm
- ssl module
- 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.)
- Pending
Links
- 230000006854 communication Effects 0.000 title claims abstract description 101
- 238000004891 communication Methods 0.000 title claims abstract description 91
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000007246 mechanism Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 abstract description 7
- 238000013473 artificial intelligence Methods 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 12
- 230000002093 peripheral effect Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000012550 audit Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012954 risk control Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- 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/16—Implementing security features at a particular protocol layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- 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/3247—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 involving digital signatures
-
- 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/3263—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 involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/72—Signcrypting, i.e. digital signing and encrypting simultaneously
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)
- Storage Device Security (AREA)
Abstract
本公开提供了一种网络通信方法、装置、电子设备及存储介质,可应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景。所述方法包括:将目标加密算法的代码和目标签名算法的代码加载到原生SSL模块可调用的Java类中;通过原生SSL模块调用Java类,识别目标加密算法和目标签名算法;基于原生SSL模块识别出的目标加密算法和目标签名算法进行网络通信。本公开通过将目标加密算法的代码和目标签名算法的代码加载到原生SSL模块可调用的Java类中,从而使得原生SSL模块能够识别出目标加密算法和目标签名算法,由于无需对原生SSL模块的源代码进行更改,提高了网络通信时原生SSL模块的易用性。
Description
技术领域
本公开涉及互联网技术领域,特别涉及一种网络通信方法、装置、电子设备及存储介质。
背景技术
在互联网技术领域,netty作为Java语言网络通信底层框架,被广泛应用于Java客户端与服务器的网络通信中。由于Java通用的国际SSL(Secure Sockets Layer,安全套接字层)安全性能较低,为了更好地保护Java客户端与服务器的网络通信安全,在Java客户端与服务器通信过程中通常采用国密算法进行加密。
国密算法为一种非国际通用性密码算法,包含对称算法、非对称算法、摘要等算法。然而,Java的原生netty SSL模块并不支持国密算法,为了能够支持国密算法,相关技术会对原生netty SSL模块的源代码进行更改,得到支持国密算法的netty SSL模块。在网络通信过程中,相关技术从更改后的netty SSL模块中识别并解析出国密算法的私钥、证书、国密签名算法等,然后基于netty-tcnative机制,通过国密算法的OpenSSL提供安全通信能力。
然而,相关技术需要对原生netty SSL模块的源代码进行改动,Java层需要集成更改后的netty SSL模块,netty-tcnative层才能调用国密算法OpenSSL实现网络通信,在实现网络通信时易用性较差。
发明内容
本公开实施例提供了一种网络通信方法、装置、电子设备及存储介质,能够提高基于目标加密算法和目标签名算法进行网络通信时原生SSL模块的易用性。所述技术方案如下:
第一方面,提供了一种网络通信方法,所述方法包括:
将目标加密算法的代码和目标签名算法的代码加载到原生安全套接字层SSL模块可调用的Java类中,所述目标加密算法和所述目标签名算法为所述原生SSL模块不支持的算法;
通过所述原生SSL模块调用所述Java类,识别所述目标加密算法和所述目标签名算法;
基于所述原生SSL模块识别出的所述目标加密算法和所述目标签名算法进行网络通信。
第二方面,提供了一种网络通信装置,所述装置包括:
加载模块,用于将目标加密算法的代码和目标签名算法的代码加载到原生安全套接字层SSL模块可调用的Java类中,所述目标加密算法和所述目标签名算法为所述原生SSL模块不支持的算法;
识别模块,用于通过所述原生SSL模块调用所述Java类,识别所述目标加密算法和所述目标签名算法;
通信模块,用于基于所述原生SSL模块识别出的所述目标加密算法和所述目标签名算法进行网络通信。
第三方面,提供了一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行,以实现如第一方面所述的网络通信方法。
第四方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现如第一方面所述的网络通信方法。
第五方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机程序代码,所述计算机程序代码存储在计算机可读存储介质中,电子设备的处理器从所述计算机可读存储介质读取所述计算机程序代码,所述处理器执行所述计算机程序代码,使得所述电子设备执行如第一方面所述的网络通信方法。
本公开实施例提供的技术方案带来的有益效果是:
在基于安全性较强而原生SSL模块不支持的目标加密算法和目标签名算法进行网络通信时,无需通过更改原生SSL模块的源代码的方式,定制一个能够识别出目标加密算法和目标签名算法的SSL模块,而是将目标加密算法的代码和目标签名算法的代码加载到原生SSL模块可调用的Java类中,这样原生SSL模块通过调用该Java类,即可识别出目标加密算法和目标签名算法,由于原生SSL模块在网络通信中的主要作用是识别出设备所支持的算法而不是直接与其他设备进行通信,因而采用该种将代码加载到类的方式不仅能够实现网络通信,且在实现网络通信的前提下,提高了网络通信时原生SSL模块的易用性。
附图说明
为了更清楚地说明本公开实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本公开实施例提供的一种网络通信方法所涉及的实施坏境的示意图;
图2是本公开实施例提供的一种区块链中各个节点的示意图;
图3是本公开实施例提供的一种网络通信方法的流程图;
图4是本公开实施例提供的另一种网络通信方法的流程图;
图5是本公开实施例提供的另一种网络通信方法的流程图;
图6是本公开实施例提供的另一种网络通信方法的流程图;
图7是本公开实施例提供的一种网络通信装置的结构示意图;
图8示出了本公开一个示例性实施例提供的一种电子设备的结构框图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
可以理解,本公开实施例所使用的术语“每个”、“多个”及“任一”等,多个包括两个或两个以上,每个是指对应的多个中的每一个,任一是指对应的多个中的任意一个。举例来说,多个词语包括10个词语,而每个词语是指这10个词语中的每一个词语,任一词语是指10个词语中的任意一个词语。
本公开所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
请参考图1,其示出了本公开实施例提供的网络通信方法所涉及的实施环境,参见图1,该实施环境包括:终端101和服务器102。终端101通过网络103进行通信,该网络103可以为有线网络,也可以为无线网络。
其中,终端101可以是诸如智能手机、平板电脑、笔记本电脑、台式计算机、电子书阅读器、多媒体播放设备、可穿戴设备、PC(Personal Computer,个人计算机)、智能家电、车载终端、智能语音交互设备等电子设备。终端101中安装有目标应用程序的客户端,该目标应用程序的客户端以Java netty为网络通信底层框架,且需要采用目标加密算法和目标签名算法进行网络通信。
服务器102可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。该服务器102以Java netty为网络通信底层框架,且需要采用目标加密算法和目标签名算法进行网络通信。
本公开实施例提供的方法能够为网络通信中涉及的https、grpcs等相关协议和底层框架,提供基于目标加密算法和目标签名算法的网络安全通信能力,可应用于单独的终端101和服务器102的网络通信过程中,更为典型的,可应用于区块链中。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括对象管理、基础服务、智能合约等处理模块。其中,对象管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及对象真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
本公开实施例涉及的系统可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、对象终端)通过网络通信的形式连接形成的分布式系统。
以分布式系统为区块链系统为例,参见图2,图2是本公开实施例提供的分布式系统200应用于区块链系统的一个可选的结构示意图,由多个节点201(接入网络中的任意形式的计算设备,如服务器、对象终端)和客户端202形成,节点之间形成组成的点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission ControlProtocol)协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
参见图2示出的区块链系统中各节点的功能,涉及的功能包括:
1)路由,节点具有的基本功能,用于支持节点之间的通信。
节点除具有路由功能外,还可以具有以下功能:
2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链系统中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币。
2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链系统中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。
本公开实施例提供了一种网络通信方法,可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等各种场景。以电子设备执行本公开实施例为例,该电子设备可以为终端101,也可以为服务器102。参见图3,本公开实施例提供的方法流程包括:
301.将目标加密算法的代码和目标签名算法的代码加载到原生安全套接字层SSL模块可调用的Java类中。
其中,目标加密算法和目标签名算法并非原生SSL模块所支持的通用算法,而是为了满足某一国家、地区或公司等内部通信需求所开发的新算法,虽然该目标加密算法和目标签名算法通用性较差,但是该目标加密算法和目标签名算法更难破译,基于该目标加密算法和目标签名算法进行网络通信时,相比于原生SSL模块所支持的通用算法的安全性能要高,能够更好地保护网络通信过程中的信息安全。
302.通过原生SSL模块调用Java类,识别目标加密算法和目标签名算法。
由于不同的Java类中加载了不同的代码,原生SSL模块通过调用加载目标加密算法的代码的Java类,可识别出目标加密算法;原生SSL模块通过调用加载目标签名算法的代码的Java类,可识别出目标签名算法。
303.基于原生SSL模块识别出的目标加密算法和目标签名算法进行网络通信。
原生SSL模块位于Java层,当原生SSL模块识别出目标加密算法和目标签名算法,响应于从Java层的原生SSL模块中识别出的目标加密算法和目标签名算法,电子设备触发tcnative层从通用算法库中获取目标加密算法和目标签名算法,进而基于tcnative层获取的目标加密算法和目标签名算法进行网络通信。其中,通用算法库用于存储包括目标加密算法和目标签名算法在内的实现网络通信的多种算法,该通用算法库可以为Openssl等,该Openssl为计算机中一个开放源代码的软件库包,客户端可以使用该软件库包中的算法进行网络通信,避免信息泄漏,同时能够确认通信对端的身份,有效地保护网络通信过程中信息安全。
本公开实施例提供的方法,在基于安全性较强而原生SSL模块不支持的目标加密算法和目标签名算法进行网络通信时,无需通过更改原生SSL模块的源代码的方式,定制一个能够识别出目标加密算法和目标签名算法的SSL模块,而是将目标加密算法的代码和目标签名算法的代码加载到原生SSL模块可调用的Java类中,这样原生SSL模块通过调用该Java类,即可识别出目标加密算法和目标签名算法,由于原生SSL模块在网络通信中的主要作用是识别出设备所支持的算法而不是直接与其他设备进行通信,因而采用该种将代码加载到类的方式不仅能够实现网络通信,且在实现网络通信的前提下,提高了网络通信时原生SSL模块的易用性。
本公开实施例提供了一种网络通信方法,可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等各种场景。以电子设备执行本公开实施例为例,该电子设备可以为终端101,也可以为服务器102。参见图4,本公开实施例提供的方法流程包括:
401.电子设备将目标加密算法的代码加载到原生SSL模块可调用的第一Java中。
其中,第一Java类为以原生SSL模块可调用的加密算法库为实例化对象的类。在计算机领域,类是一类事物的抽象概念,相当于一个模型。对象是由类这个模型所创造出的实例,创建对象的过程也叫实例化对象。以原生SSL模块可调用的加密算法库为实例化对象的类可以为sun.security.ec.CurveDB等。
在本公开实施例中,目标加密算法的代码被加载到原生SSL模块可调用的第一Java的时机可以为网络通信之前的运行环境初始化阶段,该运行环境初始化阶段为终端与服务器握手之前。如果电子设备为终端,当该终端想要与服务器进行通信,终端会对运行环境进行初始化操作;如果电子设备为服务器,当接收到终端发送的通信请求,服务器在与终端进行握手之前,会对运行环境进行初始化操作。
具体地,在运行环境初始化阶段,电子设备基于Java反射机制,构建以原生SSL模块可调用的加密算法库为实例化对象的第一Java类,进而在第一Java类的成员变量oidMap为map类型的情况下,以目标加密算法的对象标识为key、目标加密算法的算法曲线为value,将目标加密算法的代码加载到第一Java类中。其中,Java反射机制为java语言的提供的一种动态获取信息以及动态调用对象的方法的功能,在运行状态中,对于任意一个类,基于Java反射机制能够确定出该类的所有属性和方法;对于任意一个对象,基于Java反射机制能够调用该对象的任意一个方法和属性。SSL模块可调用的加密算法库中存储有SSL模块能够识别出的各种加密算法。目标加密算法的算法曲线可以为椭圆曲线,该椭圆曲线的参数包括p、a、b、n、Gx以及Gy等,其中,p、a、b为用来确定椭圆曲线的参数,G为椭圆曲线的基点,n为点G的阶数。
以目标加密算法为国密算法SM2为例,在运行环境初始化阶段,国密算法SM2的加载过程可以为:
以国密算法SM2的对象标识1.2.156.10197.1.301为key、以sun.security.ec.NamedCurve类的实例化对象(即国密算法的算法曲线)为value,将国密算法SM2注入到sun.security.ec.CurveDB成员变量oidMap中,该oidMap的类型为map类型。
402.电子设备将目标签名算法的代码加载到原生SSL模块可调用的第二Java类中。
其中,第二Java类为以原生SSL模块的本地签名列表为实例化对象的类。以原生SSL模块的本地签名列表为实例化对象的类可以为io.netty.handler.ssl.ExtendedOpenSslSession等。
在本公开实施例中,目标签名算法的代码被加载到原生SSL模块可调用的第二Java类的时机可以为在网络通信之前的运行环境初始化阶段。具体地,在运行环境初始化阶段,电子设备基于Java反射机制,构建以原生SSL模块的本地签名列表为实例化对象的第二Java类,进而将目标签名算法的代码加载到第二Java类中。其中,原生SSL模块的本地签名列表用于存储原生SSL模块所能识别出的签名算法。
以目标签名算法为国密签名算法SM3with SM2为例,在运行环境初始化阶段,国密签名算法SM3withSM2的加载过程可以为:
将国密签名算法SM3withSM2加载到io.netty.handler.ssl.ExtendedOpensslSession的LOCAL_SUPPORTED_SIGNATUR_ALGORITHMS签名签名列表中。
403.电子设备将目标签名算法的标识信息的代码加载到第三Java类。
其中,签名算法的标识信息包括签名算法的算法名称、对象标识等。第三Java类为以原生SSL模块的数字证书库为实例化对象的类,该数字证书库用于存储原生SSL模块可识别的签名算法标识与哈希算法之间的对应关系,该数字证书可以为x509等,该x509为密码学中证书的标准格式。
在本公开实施例中,目标签名算法的标识信息的代码被载到第三Java类的时机可以为在网络通信之前的运行环境初始化阶段。具体地,在运行环境初始化阶段,电子设备基于Java反射机制,构建第三Java类,进而在第三Java类的成员变量nameTable为map类型的情况下,以目标签名算法的对象标识为key、目标签名算法的算法名称为value,将目标签名算法的标识信息的代码加载到第三Java类。
以目标签名算法为国密签名算法SM3withSM2为例,在运行环境初始化阶段,国密签名算法SM3withSM2的标识信息的加载过程可以为:
以国密签名算法的对象标识1.2.156.10197.1.501为key、SM3withSM2的签名算法名称为value,将国密签名算法SM3withSM2加载到sun.security.x509.AlgorithmId类的成员变量nameTable中,该nameTable的类型为map类型。
需要说明的是,上述步骤401至步骤403只是为了便于说明目标加密算法的代码、目标签名算法的代码以及目标签名算法的标识信息的代码加载到原生SSL模块可调用的Java类中的过程,并不用来限定本公开实施例的具体执行顺序,在实际应用过程中,目标加密算法的代码、目标签名算法的代码及目标签名算法的标识信息的代码可以按照先后顺序进行加载,也可以同步加载,本公开不对目标加密算法的代码、目标签名算法的代码及目标签名算法的标识信息的代码的加载顺序进行限定。
404.电子设备通过原生SSL模块调用Java类,识别目标加密算法、目标签名算法及目标签名算法相关的目标数字证书。
基于Java类中所加载的目标加密算法的代码、目标签名算法的代码及目标签名算法的标识信息的代码,电子设备可在原生SSL模块的上下文初始化阶段,通过原生SSL模块调用Java类,识别目标加密算法、目标签名算法及目标签名算法相关的目标数字证书。具体地,基于第一Java类中所加载的目标加密算法的代码,电子设备通过原生SSL模块调用第一Java类,识别目标加密算法;基于第二Java类中所加载的目标签名算法的代码,电子设备通过原生SSL模块调用第二Java类,识别目标签名算法;基于第三Java类中所加载的目标签名算法的标识信息的代码,通过原生SSL模块调用第三Java类,识别目标签名算法的标识信息,进而基于该目标签名算法的标识信息,从数字证书库中获取该目标签名算法的标识信息对应的哈希算法,进而基于目标签名算法的标识信息对应的哈希算法,生成目标签名算法相关的目标数字证书。
405.电子设备基于原生SSL模块识别出的目标加密算法、目标签名算法及目标数字证书进行网络通信。
基于原生SSL模块识别出的目标加密算法、目标签名算法及目标数字证书,电子设备触发tcnative层从通用算法库中获取目标加密算法和目标签名算法,并基于目标加密算法、目标签名算法及目标数字证书,通过握手过程协商网络通信时所使用的算法,进而在完成握手后基于目标加密算法、目标签名算法及目标数字证书进行网络通信。在网络通信过程中,目标加密算法用于对传输的数据进行加密,目标签名算法用于对加密后的数据进行签名,数字证书用于对彼此的身份进行确认。其中,握手过程是指客户端与服务器确认彼此的身份,以及协商双方通信时所使用的加密算法、签名算法及相关密钥的过程,为确保数据传输安全,在传输应用程序的数据之前,客户端与服务器需执行握手过程。
本公开实施例中,由于netty-tcnative底层依赖于OpenSSL进行通信,能够自动匹配主机操作系统和体系架构,对硬件环境并不依赖,因此,在跨平台通信过程中,只要物理机上安装Java虚拟机即可正常工作。
在本公开的另一个实施例中,原生SSL模块与netty具体版本强相关,当原生SSL模块所依赖的netty版本升级之后,原生SSL模块也需要升级。在网络通信过程中,响应于对原生SSL模块的升级操作,电子设备对原生SSL模块进行升级,得到升级后的原生SSL模块。由于该升级后的原生SSL模块能够识别出目标加密算法和目标签名算法,因而无需重新识别目标加密算法和目标签名算法,电子设备基于升级后的原生SSL模块识别出的目标加密算法和目标签名算法即可进行网络通信。本公开实施例通过将原生SSL模块与算法进行解耦,从而使得电子设备能够更方便的应用原生SSL模块,提高了网络通信过程中的数据安全,避免导入的netty版本与原生SSL模块版本不匹配时,容易出现程序不稳定,甚至存在安全漏洞的风险,降低了维护成本。
本公开实施例在运行环境初始化阶段,通过将目标加密算法的代码、目标签名算法的代码及目标签名算法的标识信息的代码加载到原生SSL模块可调用的Java类中,实现了原生SSL模块对目标加密算法和目标签名算法的识别,除了采用该种方式外,还可在运行环境初始化阶段,将目标加密算法的代码、目标签名算法的代码及目标签名算法的代码封装成一个jar包,然后将这个jar包导入到Java程序中。其中,jar包是一种与Java相关但与平台无关的文件格式,可将多个文件合成一个文件。
图5为本公开实施例提供的一种网络通信方法的流程图,参见图5,在Java应用的运行环境初始化阶段,采用Java反射机制,将国密算法的代码加载到第一Java类(sun.security.ec.CurveDB)中、将国密签名算法的代码加载到第二Java类(原生SSL模块的本地签名列表)中、将国密签名算法的标识信息的代码加载到第三Java类(sun.security.x509)中,原生netty SSL模块通过调用第一Java类、第二Java类及第三Java类,识别出国密算法、国密签名算法及国密签名算法相关的数字证书,进而触发netty-tcnative层从国密Openssl中获取国密算法、国密签名算法,从而基于netty-tcnative层获取的国密算法、国密签名算法进行网络通信。
图6为本公开实施例提供的另一种网络通信方法的流程图,参见图6,在国密环境初始化阶段,采用Java反射机制注入国密算法、国密签名算法等,在原生SSL模块上下文初始化阶段,识别出国密算法、国密签名算法等,进而基于所识别出的国密算法和国密签名算法等,通过执行国密SSL协议进行网络通信。
本公开实施例提供的方法,在基于安全性较强而原生SSL模块不支持的目标加密算法和目标签名算法进行网络通信时,无需通过更改原生SSL模块的源代码的方式,定制一个能够识别出目标加密算法和目标签名算法的SSL模块,而是将目标加密算法的代码和目标签名算法的代码加载到原生SSL模块可调用的Java类中,这样原生SSL模块通过调用该Java类,即可识别出目标加密算法和目标签名算法,由于原生SSL模块在网络通信中的主要作用是识别出设备所支持的算法而不是直接与其他设备进行通信,因而采用该种将代码加载到类的方式不仅能够实现网络通信,且在实现网络通信的前提下,提高了网络通信时原生SSL模块的易用性。
参见图7,本公开实施例提供了一种网络通信装置,该装置包括:
加载模块701,用于将目标加密算法的代码和目标签名算法的代码加载到原生安全套接字层SSL模块可调用的Java类中,该目标加密算法和目标签名算法为原生SSL模块不支持的算法;
识别模块702,用于通过原生SSL模块调用Java类,识别目标加密算法和目标签名算法;
通信模块703,用于基于原生SSL模块识别出的目标加密算法和目标签名算法进行网络通信。
在本公开的另一个实施例中,加载模块701,用于在运行环境初始化阶段,基于Java反射机制,构建以原生SSL模块可调用的加密算法库为实例化对象的第一Java类;在第一Java类的成员变量oidMap为map类型的情况下,以目标加密算法的对象标识为key、目标加密算法的算法曲线为value,将目标加密算法的代码加载到第一Java类中。
在本公开的另一个实施例中,加载模块701,用于在运行环境初始化阶段,基于Java反射机制,构建以原生SSL模块的本地签名列表为实例化对象的第二Java类;将目标签名算法的代码加载到第二Java类中。
在本公开的另一个实施例中,加载模块701,用于响应于从Java层的原生SSL模块中识别出的目标加密算法和目标签名算法,触发tcnative层从通用算法库中获取目标加密算法和目标签名算法,通用算法库用于存储包括目标加密算法和目标签名算法在内的实现网络通信的多种算法;基于tcnative层获取的目标加密算法和目标签名算法进行网络通信。
在本公开的另一个实施例中,该装置还包括:
识别模块702,还用于通过原生SSL模块调用第三Java类,识别目标签名算法的标识信息,该第三Java类为以原生SSL模块的数字证书库为实例化对象的类,该数字证书库用于存储原生SSL模块可识别的签名算法标识与哈希算法之间的对应关系;
生成模块,用于基于目标签名算法的标识信息对应的哈希算法,生成目标签名算法相关的目标数字证书;
通信模块703,还用于基于目标数字证书进行网络通信。
在本公开的另一个实施例中,该装置还包括:
构建模块,用于在运行环境初始化阶段,基于Java反射机制,构建第三Java类;
加载模块701,还用于在第三Java类的成员变量nameTable为map类型的情况下,以目标签名算法的对象标识为key、目标签名算法的算法名称为value,将目标签名算法的标识信息的代码加载到第三Java类。
在本公开的另一个实施例中,该装置还包括:
升级模块,用于在网络通信过程中,响应于对原生SSL模块的升级操作,对原生SSL模块进行升级,升级后的原生SSL模块能够识别出目标加密算法和目标签名算法;
通信模块703,还用于基于升级后的原生SSL模块识别出的目标加密算法和目标签名算法进行网络通信。
综上所述,本公开实施例提供的装置,在基于安全性较强而原生SSL模块不支持的目标加密算法和目标签名算法进行网络通信时,无需通过更改原生SSL模块的源代码的方式,定制一个能够识别出目标加密算法和目标签名算法的SSL模块,而是将目标加密算法的代码和目标签名算法的代码加载到原生SSL模块可调用的Java类中,这样原生SSL模块通过调用该Java类,即可识别出目标加密算法和目标签名算法,由于原生SSL模块在网络通信中的主要作用是识别出设备所支持的算法而不是直接与其他设备进行通信,因而采用该种将代码加载到类的方式不仅能够实现网络通信,且在实现网络通信的前提下,提高了网络通信时原生SSL模块的易用性。
图8示出了本公开一个示例性实施例提供的一种电子设备800的结构框图。通常,电子设备800包括有:处理器801和存储器802。
处理器801可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器801可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器801也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器801可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器801还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器802可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器802还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器802中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器801所执行以实现本公开中方法实施例提供的网络通信方法。
在一些实施例中,电子设备800还可选包括有:外围设备接口803和至少一个外围设备。处理器801、存储器802和外围设备接口803之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口803相连。具体地,外围设备包括:电源804。
外围设备接口803可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器801和存储器802。在一些实施例中,处理器801、存储器802和外围设备接口803被集成在同一芯片或电路板上;在一些其他实施例中,处理器801、存储器802和外围设备接口803中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
电源804用于为电子设备800中的各个组件进行供电。电源804可以是交流电、直流电、一次性电池或可充电电池。当电源804包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
本领域技术人员可以理解,图8中示出的结构并不构成对电子设备800的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器,上述指令可由电子设备800的处理器执行以完成网络通信方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是CD-ROM(Compact Disc Read-Only Memory,只读光盘)、ROM、RAM(Random AccessMemory,随机存取存储器)、磁带、软盘和光数据存储设备等。
本公开实施例提供的电子设备,在基于安全性较强而原生SSL模块不支持的目标加密算法和目标签名算法进行网络通信时,无需通过更改原生SSL模块的源代码的方式,定制一个能够识别出目标加密算法和目标签名算法的SSL模块,而是将目标加密算法的代码和目标签名算法的代码加载到原生SSL模块可调用的Java类中,这样原生SSL模块通过调用该Java类,即可识别出目标加密算法和目标签名算法,由于原生SSL模块在网络通信中的主要作用是识别出设备所支持的算法而不是直接与其他设备进行通信,因而采用该种将代码加载到类的方式不仅能够实现网络通信,且在实现网络通信的前提下,提高了网络通信时原生SSL模块的易用性。
本公开实施例提供了一种计算机可读存储介质,该存储介质中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行,以实现上述网络通信方法。
本公开实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序代码,该计算机程序代码存储在计算机可读存储介质中,电子设备的处理器从该计算机可读存储介质读取该计算机程序代码,该处理器执行该计算机程序代码,使得该电子设备执行上述网络通信方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本公开的可选实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (11)
1.一种网络通信方法,其特征在于,所述方法包括:
将目标加密算法的代码和目标签名算法的代码加载到原生安全套接字层SSL模块可调用的Java类中,所述目标加密算法和所述目标签名算法为所述原生SSL模块不支持的算法;
通过所述原生SSL模块调用所述Java类,识别所述目标加密算法和所述目标签名算法;
基于所述原生SSL模块识别出的所述目标加密算法和所述目标签名算法进行网络通信。
2.根据权利要求1所述的方法,其特征在于,所述将目标加密算法的代码加载到原生安全套接字层SSL模块可调用的Java类中,包括:
在运行环境初始化阶段,基于Java反射机制,构建以所述原生SSL模块可调用的加密算法库为实例化对象的第一Java类;
在所述第一Java类的成员变量oidMap为map类型的情况下,以所述目标加密算法的对象标识为key、所述目标加密算法的算法曲线为value,将所述目标加密算法的代码加载到所述第一Java类中。
3.根据权利要求1所述的方法,其特征在于,所述将目标签名算法的代码加载到原生安全套接字层SSL模块可调用的Java类中,包括:
在运行环境初始化阶段,基于Java反射机制,构建以所述原生SSL模块的本地签名列表为实例化对象的第二Java类;
将所述目标签名算法的代码加载到所述第二Java类中。
4.根据权利要求1所述的方法,其特征在于,所述基于所述原生SSL模块识别出的所述目标加密算法和所述目标签名算法进行网络通信,包括:
响应于从Java层的所述原生SSL模块中识别出的所述目标加密算法和所述目标签名算法,触发tcnative层从通用算法库中获取所述目标加密算法和所述目标签名算法,所述通用算法库用于存储包括所述目标加密算法和所述目标签名算法在内的实现网络通信的多种算法;
基于tcnative层获取的所述目标加密算法和所述目标签名算法进行网络通信。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过所述原生SSL模块调用第三Java类,识别所述目标签名算法的标识信息,所述第三Java类为以所述原生SSL模块的数字证书库为实例化对象的类,所述数字证书库用于存储所述原生SSL模块可识别的签名算法标识与哈希算法之间的对应关系;
基于所述目标签名算法的标识信息对应的哈希算法,生成所述目标签名算法相关的目标数字证书;
基于所述目标数字证书进行网络通信。
6.根据权利要求5所述的方法,其特征在于,所述通过所述原生SSL模块调用第三Java类,识别所述目标签名算法的标识信息之前,还包括:
在运行环境初始化阶段,基于Java反射机制,构建所述第三Java类;
在所述第三Java类的成员变量nameTable为map类型的情况下,以所述目标签名算法的对象标识为key、所述目标签名算法的算法名称为value,将所述目标签名算法的标识信息的代码加载到所述第三Java类。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
在网络通信过程中,响应于对所述原生SSL模块的升级操作,对所述原生SSL模块进行升级,所述升级后的原生SSL模块能够识别出所述目标加密算法和所述目标签名算法;
基于所述升级后的原生SSL模块识别出的所述目标加密算法和所述目标签名算法进行网络通信。
8.一种网络通信装置,其特征在于,所述装置包括:
加载模块,用于将目标加密算法的代码和目标签名算法的代码加载到原生安全套接字层SSL模块可调用的Java类中,所述目标加密算法和所述目标签名算法为所述原生SSL模块不支持的算法;
识别模块,用于通过所述原生SSL模块调用所述Java类,识别所述目标加密算法和所述目标签名算法;
通信模块,用于基于所述原生SSL模块识别出的所述目标加密算法和所述目标签名算法进行网络通信。
9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行,以实现如权利要求1至7中任一项所述的网络通信方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现如权利要求1至7中任一项所述的网络通信方法。
11.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序代码,所述计算机程序代码存储在计算机可读存储介质中,电子设备的处理器从所述计算机可读存储介质读取所述计算机程序代码,所述处理器执行所述计算机程序代码,使得所述电子设备执行如权利要求1至7中任一项所述的网络通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210470812.7A CN117014144A (zh) | 2022-04-28 | 2022-04-28 | 网络通信方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210470812.7A CN117014144A (zh) | 2022-04-28 | 2022-04-28 | 网络通信方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117014144A true CN117014144A (zh) | 2023-11-07 |
Family
ID=88573226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210470812.7A Pending CN117014144A (zh) | 2022-04-28 | 2022-04-28 | 网络通信方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117014144A (zh) |
-
2022
- 2022-04-28 CN CN202210470812.7A patent/CN117014144A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3721603B1 (en) | System and method for creating decentralized identifiers | |
CN105391840B (zh) | 自动创建目标应用程序 | |
US11621855B2 (en) | Electronic device and method for managing blockchain address using the same | |
EP3465516B1 (en) | Cryptographic applications for a blockchain system | |
WO2022001418A1 (zh) | 数据处理方法、装置、计算机程序及存储介质 | |
US20200265418A1 (en) | Electronic device and method for providing digital signature service of block chain using the same | |
CN111095865A (zh) | 用于发布可验证声明的系统和方法 | |
CN111095327A (zh) | 用于验证可验证声明的系统和方法 | |
CN112003858B (zh) | 基于区块链的平台对接的方法、电子装置和存储介质 | |
US10270757B2 (en) | Managing exchanges of sensitive data | |
CN111066047A (zh) | 实现基于区块链的工作流 | |
CN111131412B (zh) | 实现5g移动端计算的方法、系统、移动端及云端服务器 | |
CN110601896B (zh) | 一种基于区块链节点的数据处理方法以及设备 | |
CN110750488B (zh) | 在fpga中实现外部调用的方法及装置 | |
CN103561006A (zh) | 基于安卓系统的应用认证方法和装置及应用认证服务器 | |
CN117501731A (zh) | 安全的传感器数据分发 | |
Garcia Bringas et al. | BlockChain platforms in financial services: current perspective | |
CN113221165B (zh) | 一种基于区块链的用户要素认证方法及装置 | |
CN112860805A (zh) | 一种区块链数据交互方法及系统 | |
US8904508B2 (en) | System and method for real time secure image based key generation using partial polygons assembled into a master composite image | |
CN116451280A (zh) | 基于区块链的资产管理方法和装置 | |
CN116975901A (zh) | 基于区块链的身份验证方法、装置、设备、介质及产品 | |
CN115913734A (zh) | 应用于联盟链的用户权限管理方法、装置及设备 | |
CN117014144A (zh) | 网络通信方法、装置、电子设备及存储介质 | |
CN117882416A (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 |