通信方法、装置、系统、电子设备及计算机可读存储介质
技术领域
本公开涉及安全技术领域,具体地,涉及一种通信方法、装置、系统、电子设备及计算机可读存储介质。
背景技术
SDP(software defined perimeter,软件定义边界)为一种可动态按需配置的网络安全隔离框架,用于为应用和服务所有者提供一种可配置的安全逻辑边界,将需保护的网络和服务与不安全的网络环境隔离以抵御各种网络攻击,并替换传统的物理隔离设施或设备。
参见图1,为相关技术中的SDP系统的示意图。SDP系统100包括:控制器(Controller)101、接收主机(Accepting Host,AH)102和启动主机(Initiating Host,IH)103。
其中,控制器101是一个中心化的主控设备,用于进行主机认证和策略下发,决定哪些AH和IH可以相互通信。AH 102以物理或逻辑门卫式的方式部署在需保护的网络或服务之前,在通过控制器101的SPA认证前,拒绝所有网络连接,并且不作任何连接响应。IH 101部署在需访问服务的终端或应用上,并向控制器101申请能访问的服务信息,在得到控制器的审批前,IH 101将无法获知也无法访问任何受保护的服务。
相关技术中,SDP系统中的,控制器101控制了IH的可访问服务列表,以及AH的IP地址、连接参数(例如,端口号等)等信息。而由于控制器101是中心化设备,其被暴露在网络中,其IP地址等信息是公开的,容易遭受网络攻击,例如,DDoS(Distributed Denial ofService,分布式拒绝服务)攻击等。若控制器101遭受了网络攻击,将会导致整个通信系统无法正常运行,IH将无法进行任何数据访问。
发明内容
本公开的目的是提供一种通信方法、装置、系统、电子设备及计算机可读存储介质,以解决相关技术中存在的问题。
为了实现上述目的,第一方面,本公开提供一种通信方法,应用于启动主机,所述方法包括:
确定待连接的接收主机,其中,所述接收主机被设置为与提供数据访问的服务器连接,用于为所述服务器提供数据访问保护;
确定待连接的接收主机,其中,所述接收主机被设置为与提供数据访问的服务器连接,用于为所述服务器提供数据访问保护;
从区块链中获取所述接收主机的公钥和通信地址信息;
根据所述接收主机的公钥和所述启动主机自身的私钥,生成待验证信息;
根据所述通信地址信息,将所述待验证信息,发送给所述接收主机;以及
根据所述通信地址信息,向所述接收主机发送通信连接请求,与所述接收主机建立通信连接,所述通信连接用于供所述启动主机从所述服务器获取受所述数据访问保护的数据中属于所述启动主机的数据访问权限内的数据。
第二方面,提供一种通信方法,应用于接收主机,其特征在于,所述接收主机被设置为与提供数据访问的服务器连接,用于为所述服务器提供数据访问保护;
所述方法包括:
接收启动主机发送的待验证信息;
从区块链中获取所述启动主机的公钥;
根据所述启动主机的公钥和所述接收主机自身的私钥,对所述待验证信息进行验证;以及
当所述待验证信息被验证通过后,接收所述启动主机发送的通信连接请求,以与所述启动主机建立通信连接;
根据所述区块链中存储的所述启动主机的数据访问权限,控制所述启动主机通过所述通信连接从受所述数据访问保护的数据中获取所述数据访问权限内的数据。
第三方面,提供一种通信装置,应用于启动主机,其特征在于,所述装置包括:
确定模块,被配置为确定待连接的接收主机,其中,所述接收主机被设置为与提供数据访问的服务器连接,用于为所述服务器提供数据访问保护;
第一信息获取模块,被配置为从区块链中获取所述接收主机的公钥和通信地址信息;
验证信息生成模块,被配置为根据所述接收主机的公钥和所述启动主机自身的私钥,生成待验证信息;
发送模块,被配置为根据所述通信地址信息,将所述待验证信息发送给所述接收主机;
第一连接建立模块,被配置为根据所述通信地址信息,向所述接收主机发送通信连接请求,与所述接收主机建立通信连接,所述通信连接用于供所述终端从所述服务器获取受所述数据访问保护的数据中属于所述启动主机的数据访问权限内的数据。
第四方面,提供一种通信装置,应用于接收主机,所述接收主机被设置为与提供数据访问的服务器连接,用于为所述服务器提供数据访问保护;
所述装置包括:
接收模块,被配置为接收启动主机发送的待验证信息;
第二信息获取模块,被配置为从区块链中获取所述启动主机的公钥;
验证模块,被配置为根据所述启动主机的公钥和所述接收主机自身的私钥,对所述待验证信息进行验证;
第二连接建立模块,被配置为在所述待验证信息被验证通过后,接收所述启动主机发送的通信连接请求,以与所述启动主机建立通信连接;
访问控制模块,被配置为根据所述区块链中存储的所述启动主机的数据访问权限,控制所述启动主机通过所述通信连接从受所述数据访问保护的数据中获取所述数据访问权限内的数据。
第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面所述方法的步骤。
第六方面,提供一种电子设备,包括:
上述第五方面所述的计算机可读存储介质;以及
一个或者多个处理器,用于执行所述计算机可读存储介质中的程序。
第七方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第二方面所述方法的步骤。
第八方面,提供一种电子设备,包括:
上述第七方面所述的计算机可读存储介质;以及
一个或者多个处理器,用于执行所述计算机可读存储介质中的程序。
第九方面,提供一种通信系统,包括:
上述第六方面所述的电子设备,作为启动主机,以及
上述第八方面所述的电子设备,作为接收主机;
所述启动主机的数据访问权限和公钥,以及所述接收主机的通信地址信息和公钥均被存储到区块链中。
通过上述技术方案,通过区块链实现软件定义边界(SDP),将IH的数据访问权限和公钥,AH的通信地址信息和公钥等存储到区块链的区块中,由此,可利用区块链去中心化的特点和安全特性(例如,不可更改、不可伪造和完全可追溯等),提高通信系统的抗风险、抗攻击等能力,提高通信安全性。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是相关技术中的SDP系统的框图;
图2是本公开一实施例的通信系统的示意图;
图3是本公开一实施例的启动主机的结构示意图;
图4是本公开一实施例的接收主机的结构示意图;
图5是本公开一实施例的区块链中的区块的数据结构示意图;
图6是本公开一实施例的通过发布交易进行信息存储的示意图;
图7是本公开一实施例的应用于启动主机的通信方法的流程示意图
图8是本公开一实施例的应用于接收主机的通信方法的流程示意图;
图9是本公开一实施例的验证流程示意图;
图10是本公开一实施例的握手协议的流程示意图;
图11是本公开一实施例中启动主机与接收主机间的VPN连接流程示意图;
图12是本公开一实施例的通信装置的框图;
图13是本公开另一实施例的通信装置的框图;
图14是本公开另一实施例的通信系统的示意图;
图15是本公开实施例的启动主机与接收主机的交互示意图;
图16是本公开一实施例的应用场景图;
图17是本公开另一实施例的应用场景图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
本公开实施例,基于区块链技术对SDP系统进行改进,以解决相关技术中存在的问题。
在对本公开提供的通信方法、装置、系统、电子设备及计算机可读存储介质进行说明之前,先对本公开各个实施例所涉及的区块链进行介绍。区块链是由区块链网络中所有节点共同参与维护的去中心化分布式数据库系统,它是由一系列基于密码学方法产生的数据块组成,每个数据块即为区块链中的一个区块。根据产生时间的先后顺序,区块被有序地链接在一起,形成一个数据链条,被形象地称为区块链。下面对区块链网络的一些概念进行介绍。
区块链节点:区块链网络中的节点可以称为区块链节点,其中区块链网络基于P2P(Peer to Peer,对等网络)网络,每个参与交易和区块存储、验证、转发的P2P网络节点都是一个区块链网络中的节点。
用户身份:区块链中的用户身份使用公钥表示,公钥所对应的私钥由用户掌握而不发布到网络。在一些实施例中,公钥通过哈希和编码后成为“地址”,“地址”即为账户地址,代表了用户,并可随意发布。用户身份和区块链节点不存在一一对应关系,用户可以在任意一个区块链节点上使用自己的私钥。
区块链数据写入:区块链节点通过向区块链网络发布“交易”(Transaction)实现向区块链写入数据。交易中包含用户使用自己私钥对交易的签名,以证明用户的身份。交易被“矿工”(执行PoW共识竞争机制的区块链节点)记录入产生的新区块,然后发布到区块链网络,并被其他区块链节点验证通过和接受后,交易数据即被写入区块链。
参见图2,本公开一示例性实施例的通信系统包括:多个区块链节点。接收主机201和启动主机202均为该多个区块链节点中的节点。接收主机201设置在需要进行数据访问保护的服务器前,并与服务器连接。这里的“连接”可为物理连接或通信连接。启动主机202为发起连接或数据访问请求的客户端,可为移动电话、智能电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、导航装置等电子设备。
应理解,作为区块链节点的接收主机201和启动主机202之间可建立P2P(point topoint,点对点)连接,也可不建立P2P连接。接收主机201和启动主机202的数量可为任意的,本公开对此不作限制。
根据本公开下述实施例,接收主机201和启动主机202间通过建立通信连接,例如,VPN连接,使得二者可进行安全的数据访问通道,启动主机202可从与接收主机201连接的服务器进行数据访问。
参见图3,在本公开的实施例中,启动主机202至少包括:处理器310、存储器311和通信组件312。其中,存储器311用于存储操作系统,各种类型的数据以支持在该启动主机202的操作,这些数据的例如可以包括用于在启动主机202上操作的任何应用程序或方法的指令,以及应用程序相关的数据。
在一些实施例中,存储器311还存储有完整区块链或存储有区块链的区块头。
处理器310用于控制该启动主机202的整体操作,进行信息处理等。在本公开的一实施例中,处理器310可控制区块链中的区块中的智能合约的运行。
在一实施例中,智能合约中存储有的设备信息、权限信息等。其中,设备信息包括:启动主机的公钥、启动主机的数据访问权限、接收主机的通信地址信息(例如,IP地址、端口号等)、接收主机的公钥等。权限信息包括:区块链账户的账户信息以及该账户所对应的权限。权限包括:对前述设备信息的读取权限、对前述设备信息的修改权限、对前述设备信息的替换权限、对前述设备信息的删除权限等更改权限。账户信息可为账户地址或账户名等。账户地址即前述由公钥转换成的“地址”,账户名可为设备名、设备编号等。
通信组件312用于该启动主机202与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G、4G或5G,或它们中的一种或几种的组合,因此相应的该通信组件312可以包括:Wi-Fi模块,蓝牙模块,NFC模块,2G模块,3G模块,4G模块或5G模块,或它们中的一种或几种的组合。
在本公开的实施例中,通过通信组件312,启动主机202可与接收主机201建立通信连接。
此外,启动主机202还可包括多媒体组件(例如,触摸屏、麦克风、扬声器等)和输入/输出接口等,以实现相应的功能。
参见图4,为本公开一实施例的接收主机201的结构示意图。接收主机201包括:处理器410、存储器411和通信组件412等。其中,处理器410、存储器411和通信组件412的功能与前述的处理器310、存储器411和通信组件412的功能相似,在此不再赘述。在一个实施例中,由于接收主机201被设置为与提供数据访问的服务器连接,用于为该服务器提供数据访问保护。应理解,接收主机201可设置在网关中、路由器等网络设备中,或直接设置在服务器中,或作为独立的设备存在。当接收主机201被设置在网关、路由器、服务器等包括处理器、存储器和通信组件的设备中时,接收主机201的功能可由其所在的设备的相应模块实现。
应理解,启动主机202和接收主机201也可不为区块链节点,而与区块链节点进行通信连接,以从区块链节点获取相应的信息和实现相应的功能。
本公开的一实施例中,将软件定义边界(SDP)的控制器功能基于区块链来实现,将IH(启动主机)可以访问的服务列表(即启动主机202的数据访问权限)和公钥,AH(接收主机)的通信地址信息(例如,IP地址、端口号等)和公钥存储到区块链中,由此,可利用区块链去中心化的特点和安全特性(例如,不可更改、不可伪造和完全可追溯等),提高通信系统的抗风险、抗攻击等能力,提高通信安全性。
另一方面,省去了启动主机和接收主机与控制器进行交互获取设备信息以及注册、认证等过程,提高了设备的通信效率和性能。
在本公开的一实施例中,可通过智能合约的方式,实现启动主机和接收主机的相关信息的存储。
参见图5,为本公开一实施例的区块链中的区块的数据结构示意图。区块链中的区块500包括:区块头501和区块主体502。区块主体502记录前一段时间内的所有交易信息。区块头501包括:父区块哈希值、默克尔树根、时间戳、随机数等字段。
其中,默克尔树根的值是对整棵树上保存的数据进行哈希(hash)计算得出的。以默克尔树根为根节点的一叶节点用于存储账户信息上。
参见图5,叶节点510即为一存储账户信息的账户节点,每个账户节点中包括:交易数字段、账户余额字段、代码哈希字段、存储根字段等。其中,交易数字段用于记录从账户发起的交易数。账户余额字段用于记录该账户的账户余额。代码哈希字段用于记录智能合约的代码哈希值,并指向合约代码。如果账户不是合约账户,则代码哈希字段为空。存储根字段是用于另一颗树的根节点,该树为智能合约账户的内部数据存储空间。
智能合约可被绑定了合约账户的区块链节点部署在区块链上,部署好的智能合约会在区块链上拥有“自己的地址”。部署智能合约的过程,即区块链节点将编译好的智能合约字节码通过发布交易的形式写入到区块链上的一区块中的过程。参见图5及前述描述,智能合约被部署后,将被存储到相应的区块中,存储智能合约的区块的地址即为前述的智能合约在区块链上拥有的“自己的地址”。
在本公开的实施例中,智能合约中存储有前述的设备信息、权限信息等。当启动主机(或接收主机)为区块链中的节点,存储有完整的区块链或区块头时,启动主机(或接收主机)确定智能合约的存储区块后(例如,通过查询的方式确定智能合约的存储区块),通过时间或事件驱动(例如,执行相应的指令消息),可激活智能合约,由此,读取到智能合约中存储的相关信息。
在一个实施例中,可设置管理员账户,用于对启动主机和接收主机的信息进行维护、更改,以及智能合约的部署。
本公开的一实施例中,智能合约中存储的信息可被更改,例如,修改、替换和删除等。对智能合约中数据的更改通过“交易”的方式实现。如前所述,智能合约中存储了权限信息,只有具有相应权限的账户才能对智能合约中存储的信息进行更改。
对于智能合约的读权限控制可采用如下方式实现:区块链账户请求读取智能合约中存储的信息时,提供签名。该签名可在智能合约中进行验证,验证通过,才执行智能合约返回相应信息。
同时,还可以叠加采用私有链或许可链作为智能合约的区块链基础平台,进一步提高读权限的控制。即只有绑定有经过许可或认证的账户的节点才能组成区块链网络,形成私有链或许可链,从而进一步保证了智能合约中存储信息的安全性,提高网络安全性。
此外,本公开的另一实施例中的也可不通过智能合约的方式实现启动主机和接收主机的相关信息的存储,而直接通过发布交易-产生新区块的方式实现。
参见图6,一区块链节点110向区块链网络发布交易,交易中包括:上述设备信息和权限信息等。当区块链节点110发布的包括有设备信息和权限信息的交易被“矿工”写入到区块后,启动主机和接收主机的相关信息即被存储到了区块链的一区块中。
进一步的,由于权限信息被存储到了区块链中,可对信息的读写进行权限控制。读写权限的控制可根据权限信息进行,例如,当接收到一账户进行设备信息的读取请求时,根据权限信息中的对应关系,确定该账户是否具有读取设备信息的权限;并仅在该账户具有读取设备信息的权限时,返回或输出相关设备信息。对设备信息进行替换、删除、修改的“写”操作,也可按照相似的方式进行。
基于上述存储有启动主机和接收主机的设备信息、权限信息的区块链,参见图7,在本公开一实施例中,接收主机201和启动主机202采用如下通信方法进行通信:
在步骤S71中,启动主机确定待连接的接收主机。
启动主机可选择从一个或多个接收主机进行数据访问,根据其数据访问需求,可确定一待连接的接收主机。
在步骤S72中,启动主机从区块链中获取接收主机的公钥和通信地址信息。区块链即为如上所述,存储有设备信息和/或权限信息的区块链。
当启动主机不为区块链中的节点时,可通过与区块链节点进行通信,向区块链节点请求获取接收主机的公钥。当区块链采用的是智能合约存储设备信息/或权限信息时,启动主机为区块链节点,并存储有完整区块链或仅存储有区块头时,启动主机可直接从区块链中获取接收主机的公钥。当区块链采用将设备信息/或权限信息直接存储到区块的方式时,若启动主机为区块链节点,并存储有完整区块链,则启动主机可直接从区块链中获取接收主机的公钥;若启动主机为区块链节点,并仅存储有有区块头(例如,启动主机为轻节点)时,可通过与区块链中的全节点进行通信,从而请求获取接收主机的公钥。
在步骤S73中,启动主机根据接收主机的公钥和启动主机自身的私钥,生成待验证信息。
在一个实施例中,根据接收主机的公钥和启动主机的私钥,获取第一共享秘密;并根据第一共享秘密,生成待验证信息。
在步骤S74中,启动主机根据通信地址信息,将待验证信息,发送给接收主机。
在一个实施例中,从区块链中获取接收主机的通信地址信息;并根据通信地址信息,将待验证信息发送给接收主机。
在步骤S75中,根据通信地址信息,向接收主机发送通信连接请求,以在待验证信息被所述接收主机验证通过后,与接收主机建立通信连接。该通信连接用于供启动主机从服务器获取受数据访问保护的数据中属于启动主机的数据访问权限内的数据。
需要指出的是,虽然本实施例中,描述的是将待验证信息和通信连接请求在不同的步骤中进行发送的情形,但是在实际应用中,“根据通信地址信息,将待验证信息,发送给接收主机”和“根据通信地址信息,向接收主机发送通信连接请求”也可以在同一步骤中执行,比如将待验证信息携带在通信连接请求一起发送给接收主机,接收主机在接收到通信连接请求后,对其中的待验证信息首先进行验证,在验证通过之后,进行相应的连接过程。相应的技术方案也应落入本公开的保护范围。
参见图8,在接收主机端:
在步骤S81中,接收启动主机发送的待验证信息。
在步骤S82中,从区块链中获取启动主机的公钥。
在步骤S83中,根据启动主机的公钥和接收主机自身的私钥,对待验证信息进行验证。
在步骤S84中,当待验证信息被验证通过后,接收启动主机发送的通信连接请求,以与启动主机建立通信连接。
在步骤S85中,根据区块链中存储的启动主机的数据访问权限,控制启动主机通过通信连接从受数据访问保护的数据中获取数据访问权限内的数据。
参见图9,在本公开的一实施例中,上述步骤S73和步骤S83的验证流程包括:
在步骤S91中,启动主机根据待连接接收主机的公钥和自身的私钥,获取第一共享秘密。
在一个实施例中,采用椭圆曲线密码编码学(Elliptic Curves Cryptography,ECC)点乘的方式,获取第一共享秘密(Share Secret),参见式(1)。
ShareSecret1=PrivateKeyIH·PublicKeyAH (1)
其中,ShareSecret1为第一共享秘密,PrivateKeyIH为启动主机的私钥,PublicKeyAH为接收主机的公钥,“·”表示ECC点乘。
在步骤S92中,启动主机根据获取到的第一共享秘密,计算并组包得到单分组授权包(SPA包)。单分组授权包即上述的待验证信息。在一些实施例中,可通过RFC4226中规定的OTP(One Time Password)计算方法得到该单分组授权包。
在步骤S93中,启动主机根据接收主机的通信地址信息,将单分组授权包发送给接收主机。
在步骤S94中,接收主机根据启动主机的公钥和自身的私钥,获取第二共享秘密。
参见式(2),第二共享秘密为:
ShareSecret2=PrivateKeyAH·PublicKeyIH (2)
其中,ShareSecret2为第二共享秘密,PrivateKeyAH为接收主机的私钥,PublicKeyIH为启动主机的公钥,“·”表示ECC点乘。
在步骤S95中,接收主机利用第二共享秘密对接收到的单分组授权包进行验证。
根据ECC点乘的特性,第一共享秘密和第二共享秘密相同,即ShareSecret1==ShareSeccret2。由此,当接收主机检测到第一共享秘密与第二共享秘密相同,则接收主机确定接收到的单分组授权包合法,验证通过。
由此,通过本公开实施例,启动主机和接收主机之间的共享秘密无需预置,而采用椭圆曲线密码编码学点乘方式产生,因此,无需对预置的共享秘密进行复杂的运维管理,减低系统运维复杂度,提高系统的管理效率。
在本公开的一实施例中,当接收主机对待验证信息验证通过后,启动主机和接收主机间可通过进行握手、密钥协商等建立虚拟专用网络(Virtual Private Network,VPN)连接。
在本公开的一个实施例中,启动主机和接收主机间的VPN,可基于预设VPN协议,例如,IPSec(Internet Protocol Security,网络协议安全)VPN、Open VPN、SSL(SecureSockets Layer安全套接层)VPN等实现。
本公开实施例基于区块链中记录的启动主机的公钥和接收主机的公钥进行双向挑战认证的方式,来实现上述IPSec VPN、Open VPN、SSL VPN等预设VPN协议的握手协议的认证阶段。参见图10,本公开实施例的握手协议包括:
在步骤S1001中,当待验证信息被接收主机验证通过后,接收主机接受通信连接请求,并产生一第一随机数,发送给启动主机;
在步骤S1002中,启动主机使用自身的私钥对收接到的第一随机数进行签名;
在步骤S1003中,启动主机将签名结果发送给接收主机;
在步骤S1004中,接收主机利用从区块链中获取的启动主机的公钥对签名结果进行解签;
在步骤S1005中,接收主机比较解签结果和第一随机数是否相同,相同则对启动主机的认证通过,可执行后续的密钥协商步骤;
另一方面,在步骤S1006中,启动主机产生一第二随机数,发送给接收主机;
在步骤S1007中,接收主机使用自身的私钥对接收到的第二随机数进行签名后发送给启动主机;
在步骤S1008中,启动主机利用从区块链中获取的接收主机的公钥对签名结果进行解签;
在步骤S1009中,启动主机比较解签结果和第二随机数是否相同,相同则接收主机的认证通过,可执行后续的密钥协商步骤。
由此,当接收主机和启动主机的双向验证通过时,进行密钥协商阶段。应理解,密钥协商阶段是用于协商对数据进行加密的主密钥,该阶段可采用惯常的方式进行,在此不再赘述。本公开实施例中,由于将启动主机的公钥和接收主机的公钥存储到了区块链中,在上述认证阶段,启动主机和接收主机无需进行公钥证书的交换和验证等过程,提高了握手的效率,进而提高了VPN连接的效率。
参见图11,在本公开的另一实施例中,可通过以下方式实现启动主机与接收主机间的VPN连接:
在步骤S1101中,当待验证信息被验证通过后,接收主机生成包括启动主机的公钥的第一证书和包括接收主机的公钥的第二证书。第一证书用于供启动主机在建立与接收主机间的VPN连接时证明自己的身份,第二证书用于供接收主机在建立与启动主机间的VPN连接时证明自身的身份。启动主机的公钥是接收主机从区块链中获取到的。在该实施例中,接收主机设置有证书生成模块,用于生成包括启动主机的公钥的证书。在一些实施例中,启动主机也可临时生成一组公钥和私钥,并将公钥发送给接收主机,由接收主机根据该公钥生成第一证书,以实现后续的身份验证。
在步骤S1102中,将第一证书发送给启动主机。
由此,当启动主机与接收主机进行握手协议时,可采用接收主机生成的证书,启动主机可将自己的第一证书发送给接收主机,由接收主机对其进行验证,同样的,接收主机可将自己的第二证书发送的启动主机,由启动主机对其进行验证。由此,无需依赖可信的第三方进行证书的生成和发放,可提高系统的效率。
若存在多个接收主机,则同一启动主机访问不同接收主机时,需要从相应的接收主机获得不同的证书,并使用该证书与对应的接收主机建立VPN连接。
启动主机与接收主机间建立了VPN连接后,接收主机根据区块链中存储的启动主机的访问权限,允许启动主机访问权限内的资源。
本公开实施例的通信方法,利用区块链去中心化的特点和安全特性(例如,不可更改、不可伪造和完全可追溯等),提高通信系统的抗风险、抗攻击等能力,提高通信安全性。另一方面,省去了启动主机和接收主机与控制器进行交互获取设备信息以及注册、认证等过程,提高了设备的通信效率和性能。且启动主机和接收主机之间的共享秘密无需预置,而采用椭圆曲线密码编码学点乘方式产生,因此,无需对预置的共享秘密进行复杂的运维管理,提高启动主机和接收主机的系统效率。
参见图12,本公开实施例还提供一种通信装置,应用于启动主机,该装置1200包括:
确定模块1201,被配置为确定待连接的接收主机,其中,所述接收主机被设置为与提供数据访问的服务器连接,用于为所述服务器提供数据访问保护;
第一信息获取模块1202,被配置为从区块链中获取所述接收主机的公钥和通信地址信息;
验证信息生成模块1203,被配置为根据所述接收主机的公钥和所述启动主机自身的私钥,生成待验证信息;
发送模块1204,被配置为根据所述通信地址信息,将所述待验证信息发送给所述接收主机;
第一连接建立模块1205,被配置为根据所述通信地址信息,向所述接收主机发送通信连接请求,与所述接收主机建立通信连接,所述通信连接用于供所述启动主机从所述服务器获取受所述数据访问保护的数据中属于所述启动主机的数据访问权限内的数据。
参见图13,本公开实施例还提供一种通信装置,应用于接收主机,所述接收主机被设置为与提供数据访问的服务器连接,用于为所述服务器提供数据访问保护;所述装置1300包括:
接收模块1301,被配置为接收启动主机发送的待验证信息;
第二信息获取模块1302,被配置为从区块链中获取所述启动主机的公钥;
验证模块1303,被配置为根据所述启动主机的公钥和所述接收主机自身的私钥,对所述待验证信息进行验证;
第二连接建立模块1304,被配置为在所述待验证信息被验证通过后,接收所述启动主机发送的通信连接请求,以与所述启动主机建立通信连接;
访问控制模块1305,被配置为根据所述区块链中存储的所述启动主机的数据访问权限,控制所述启动主机通过所述通信连接从受所述数据访问保护的数据中获取所述数据访问权限内的数据。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本公开实施例还提供,一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述应用于启动主机的通信方法的步骤。
本公开实施例还提供,一种电子设备,包括:上述的实现应用于启动主机的通信方法的计算机可读存储介质;以及一个或者多个处理器,用于执行所述计算机可读存储介质中的程序。
本公开实施例还提供,一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述应用于接收主机的通信方法的步骤。
本公开实施例还提供,一种电子设备,包括:上述的实现应用于接收主机的通信方法的计算机可读存储介质;以及一个或者多个处理器,用于执行所述计算机可读存储介质中的程序。
相应的,参见图14,本公开实施例还提供一种通信系统,包括:
上述作为启动主机的启动主机,以及
上述作为接收主机的接收主机;
所述启动主机的数据访问权限和公钥,以及所述接收主机的通信地址信息和公钥均被存储到区块链中。
在一个实施例中,所述启动主机用于从所述区块链中获取所述接收主机的公钥,根据自身的私钥和所述接收主机的公钥,获取第一共享秘密,并根据所述第一共享秘密生成待验证信息;
所述接收主机用于从所述区块链中获取所述启动主机的公钥,并根据自身的私钥和所述启动主机的公钥,获取第二共享秘密,以及利用所述第二共享秘密对所述待验证信息进行验证。
在一个实施例中,所述区块链中包括有存储智能合约的第一区块;
所述智能合约中存储有所述启动主机的数据访问权限和公钥,以及所述接收主机的通信地址信息和公钥;
所述第一区块由一第一区块链节点通过发布包括所述智能合约的交易的方式创建。
在一个实施例中,所述区块链中包括有存储所述启动主机的数据访问权限和公钥,以及所述接收主机的通信地址信息和公钥的第二区块;
所述第二区块由一第二区块链节点通过发布包括所述启动主机的数据访问权限和公钥,以及所述接收主机的通信地址信息和公钥的交易的方式创建。
在一个实施例中,所述系统还包括:
一个或多个区块链节点;
所述区块链节点用于在其所绑定的区块链账户具有信息更改权限,且满足预设更改条件时,通过发布交易的方式,对以下信息中的至少一者进行更改:
所述启动主机的数据访问权限、所述启动主机的公钥、所述接收主机的通信地址信息和所述接收主机的公钥。
在本公开的实施例中,通信系统中可以有任意多个AH和IH,AH可以采用分布式部署,共同利用存储到区块链中的设备信息。
参见图15,本公开实施例作为IH的启动主机和作为AH的接收主机,利用区块链中存储的设备信息和权限信息等,实现SPA验证过程和VPN连接建立过程,且接收主机利用存储在区块链中的启动主机的数据访问权限对其进行数据访问的控制,可利用区块链去中心化的特点和安全特性(例如,不可更改、不可伪造和完全可追溯等),提高通信系统的抗风险、抗攻击等能力,提高通信安全性。另一方面,省去了启动主机和接收主机与控制器进行交互获取设备信息以及注册、认证等过程,提高了设备的通信效率和性能。
参见图16和图17为本公开实施例的两个应用场景。在图16中,可通过本公开实施例的方法,在互联网/特定局域网/特定内网的环境下,在提供数据访问和服务的服务器前部署上述的接收主机,实现SDP,进行网络接入保护,从而实现数据和服务的安全访问。在图17中,可在提供数据访问和服务的云服务器前部署上述的接收主机,进行云服务接入保护,从而实现数据和服务的安全访问。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
流程图中或在本公开的实施例中以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本公开实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本公开的实施例所述技术领域的技术人员所理解。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。