1.本技术涉及网络安全技术领域,尤其涉及一种访问服务器的方法以及装置、系统。
背景技术:2.软件定义边界(software defined perimeter,sdp)是一种网络安全技术。采用sdp技术可为服务器创建安全边界,以隔离不安全的网络,隐藏数据资源,达到网络安全的目的。
3.sdp网络包括sdp控制器、sdp发起主机、sdp接受主机。sdp控制器存储有sdp发起主机和sdp接受主机的身份等信息。具有访问sdp接受主机权限的sdp发起主机可以访问sdp接受主机。在sdp发起主机访问sdp接受主机时,sdp控制器可对sdp发起主机进行身份验证,如果sdp发起主机的身份验证通过,sdp控制器授权sdp发起主机访问sdp接受主机,从而sdp发起主机访问sdp接受主机。
4.然而,sdp架构中由sdp控制器集中管理sdp发起主机和sdp接受主机的身份等信息,一旦sdp控制器遭遇攻击,会导致所存储信息的泄露。另外,sdp控制器对sdp发起主机进行身份验证过程中的数据也可能被篡改,安全性较低。
技术实现要素:5.本技术提供一种访问服务器的方法,提高服务器访问的安全性。
6.第一方面,本技术提供了一种访问服务器的方法,该方法可用于包括客户端、凭证发放端、控制器的网络,通过该网络获取授权,获取授权后与服务器建立连接。以应用于客户端为例,该方法具体包括:
7.客户端向凭证发放端发送请求消息,该请求消息用于请求获取访问凭证,请求消息包括客户端的身份信息,访问凭证用于客户端申请访问服务器的访问权限。客户端接收凭证发放端发送的访问凭证,向控制器发送访问凭证,其中,访问凭证是基于区块链的智能合约生成的,客户端、凭证发放端和控制器均为区块链网络中的节点。之后,客户端接收控制器的授权信息,授权信息用于指示客户端是否能够访问服务器。若授权信息指示客户端能够访问所述服务器,客户端向服务器发送用于访问服务器的访问请求。在本技术实施例中,客户端、凭证发放端和控制器组成区块链网络,通过区块链网络承载信息,即使控制器被攻击,攻击者也无法获取客户端的身份信息,无法篡改区块链网络中的交互数据,使得访问过程具有很高安全性。
8.可选的,客户端向凭证发放端发送请求消息之前,所述方法还包括:客户端基于区块链的智能合约在区块链上注册身份信息,获得客户端的身份标识。可以理解的是,客户端生成身份标识时,区块链自动进行哈希运算,得到该身份标识的哈希值,并存储到区块链上。通过智能合约生成身份信息,使得客户端可以独自注册、管理自身的身份标识,同样基于区块链的防篡改特性,这种身份标识不可被篡改,在后续对该身份标识验证过程中,保证该身份标识的真实可靠。
9.可选的,客户端接收凭证发放端发送的访问凭证之后,所述方法还包括:客户端根据私钥对所接收的访问凭证添加签名,该签名用于控制器验证客户端的身份。其中,私钥是客户端注册身份信息时获得的,客户端向控制器发送的访问凭证是添加了签名的访问凭证。客户端用自身的私钥对访问凭证添加签名,便于后续验证该访问凭证时,验证该签名,进一步提高了信息交互过程中的安全可靠。
10.可选的,客户端向服务器发送用于访问所述服务器的访问请求之前,还包括:客户端生成随机数,并根据该随机数及授权信息生成访问报文,并向服务器发送访问报文。其中,访问报文包括随机数以及spa密钥,该spa密钥是根据随机数与授权信息生成的,因此,访问报文可用于客户端请求获取服务器的spa授权。
11.第二方面,本技术提供了一种访问服务器的方法,该方法可用于包括客户端、凭证发放端、控制器的网络,其中,客户端、控制器和凭证发放端均为区块链网络中的节点。通过该网络获取授权,获取授权后与服务器建立连接。以该方法应用于控制器为例,该方法具体包括:
12.控制器接收客户端发送的访问凭证,该访问凭证用于客户端申请服务器的访问权限,访问凭证是基于区块链的智能合约生成的。控制器基于区块链的智能合约验证所接收的访问凭证。若该访问凭证验证通过,控制器向客户端发送授权信息,以及向服务器发送授权同步信息。其中,授权信息用于指示客户端具有服务器的访问权限,授权同步信息用于服务器验证客户端的身份。由于客户端、凭证发放端和控制器组成区块链网络,通过区块链网络承载信息,即使控制器被攻击,攻击者也无法获取客户端的身份信息,无法篡改区块链网络中的交互数据,使得验证过程具有很高安全性。
13.可选的,控制器接收所述客户端发送的访问凭证之前,还包括:控制器基于区块链的智能合约在区块链上注册身份信息,获得控制器的身份标识。其中,控制器生成身份标识时,区块链自动进行哈希运算,得到该身份标识的哈希值,并存储到区块链上。控制器通过区块链网络注册身份信息,成为区块链网络的节点,并通过区块链网络进行验证授权,提高了服务器访问的安全性。
14.可选的,访问凭证包括客户端用私钥加密的签名,控制器基于区块链的智能合约验证访问凭证,包括:控制器从区块链获取客户端的公钥,并根据该公钥,基于区块链的智能合约对客户端的签名解密,其中,若能够解密,则访问凭证通过验证。
15.可选的,在控制器验证访问凭证之后,所述方法还包括:若访问凭证验证不通过,控制器向客户端发送指示信息,并记录客户端第n次出示访问凭证。其中,指示信息指示客户端没有访问服务器的权限。
16.可选的,控制器向客户端发送指示信息后,还包括:控制器获取记录信息,该记录信息指示客户端第n次出示所述访问凭证,当n大于预设阈值时,控制器将客户端从区块链上删除。通过设置预设阈值,控制器可将多次出示无效访问凭证的客户端从区块链网络中剔除,避免非法客户端的恶意攻击,进一步提高了网络的安全性。
17.第三方面,本技术提供一种客户端,该客户端和凭证发放端以及控制器为区块链网络中的节点。该客户端包括凭证获取模块、凭证出示模块、服务器访问模块。其中,凭证获取模块用于向凭证发放端发送请求消息,该请求消息用于请求获取访问凭证,请求消息包括客户端的身份信息,访问凭证用于客户端申请访问服务器的访问权限。
18.凭证出示模块用于接收凭证发放端发送的访问凭证,向控制器发送访问凭证,其中,访问凭证是基于区块链的智能合约生成的。
19.服务器访问模块用于接收控制器的授权信息,授权信息用于指示客户端是否能够访问服务器。若授权信息指示客户端能够访问服务器,服务器访问模块还用于向服务器发送用于访问服务器的访问请求。
20.可选的,凭证获取模块向凭证发放端发送请求消息之前,还用于基于区块链的智能合约在区块链上注册身份信息,获得客户端的身份标识。可以理解的是,客户端生成身份标识时,区块链自动进行哈希运算,得到该身份标识的哈希值,并存储到区块链上。
21.可选的,凭证出示模块接收凭证发放端发送的访问凭证之后,还用于根据私钥对所接收的访问凭证添加签名,该签名用于所述控制器验证客户端的身份。其中,私钥是客户端注册身份信息时获得的,凭证出示模块向控制器发送的访问凭证是添加了签名的访问凭证。
22.可选的,服务器访问模块向服务器发送用于访问服务器的访问请求之前,还用于生成随机数,并根据随机数及授权信息生成访问报文,并向服务器发送该访问报文。该访问报文包括随机数以及spa密钥,spa密钥是根据随机数与授权信息生成的,该访问报文用于客户端请求获取服务器的spa授权。
23.第四方面,本技术提供一种控制器。该控制器与客户端,凭证发放端均为区块链网络的节点。该控制器包括凭证接收模块、凭证验证模块、授权访问模块。其中,凭证接收模块用于接收客户端发送的访问凭证,该访问凭证用于客户端申请服务器的访问权限,且该访问凭证是基于区块链的智能合约生成的。凭证验证模块,基于区块链的智能合约验证访问凭证。授权访问模块用于若所述访问凭证验证通过,向客户端发送授权信息,以及向服务器发送授权同步信息。授权信息用于指示客户端具有服务器的访问权限,授权同步信息用于服务器验证客户端的身份。
24.可选的,凭证接收模块接收所述客户端发送的访问凭证之前,还用于:基于区块链的智能合约在区块链上注册身份信息,获得控制器的身份标识。可以理解的是,控制器生成身份标识时,区块链自动进行哈希运算,得到该身份标识的哈希值,并存储到区块链上。
25.可选的,访问凭证包括客户端用私钥加密的签名,凭证验证模块还用于:从区块链获取客户端的公钥,并根据该公钥,基于区块链的智能合约对客户端的签名解密。若能够解密,则访问凭证通过验证。
26.可选的,在凭证验证模块验证访问凭证之后,还用于:若访问凭证验证不通过,向客户端发送指示信息,并记录客户端第n次出示访问凭证。其中,指示信息指示客户端没有访问服务器的权限。
27.可选的,凭证验证模块向客户端发送指示信息后,还用于:获取记录信息,该记录信息指示客户端第n次出示访问凭证。当n大于预设阈值时,凭证验证模块将客户端从区块链上删除。
28.第五方面,本技术实施例提供一种通信系统,包括如上述第三方面中的客户端、第四方面中的控制器及凭证发放端和服务器。
29.第六方面,本技术实施例提供一种计算机存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,当程序指令被计算机执行时,使计算机执行如
前述第一方面或第二方面的步骤。
30.第七方面,本技术提供一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码被运行时,使得上述第一方面至第二方面中任意一方面的方法被执行。存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,当程序指令被计算机执行时,使计算机执行如前述第一方面或第二方面的步骤。
31.上述第三方面至第七方面及其实现方式的有益效果可以参考对第一方面至第二方面及其实现方式的有益效果的描述。
附图说明
32.图1为现有的sdp网络架构示意图;
33.图2为本技术实施例提供的sdp网络架构示意图;
34.图3为本技术实施例提供的身份标识示意图;
35.图4为本技术实施例提供的访问服务器的方法的流程示意图;
36.图5为本技术实施例提供的访问凭证示意图;
37.图6为本技术实施例提供的访问报文的示意图;
38.图7为本技术实施例提供的客户端的一种结构示意图;
39.图8为本技术实施例提供的控制器的一种结构示意图。
具体实施方式
40.为了更好地理解本技术实施例提供的方案,首先介绍本技术实施例所涉及的一些技术概念。
41.1)区块链,是由多个区块组成的链条,每一个区块可存储信息。这个链条被保存在区块链网络中的所有服务器中,即每个服务器存储区块链的所有信息。只要整个区块链网络中有一台服务器可以工作,整条区块链就是安全的,可以认为,区块链具有去中心化的特性。这些服务器在区块链系统中被称为节点,每个节点都可以查询区块链的信息。虽然每个节点都存储有区块链的信息,但是要修改区块链中的信息,必须得到超过半数以上节点的同意并修改所有节点中区块链的信息。由于这些节点通常掌握在不同的主体,例如有些节点在客户端,有些节点在云端,因此区块链中的信息难以篡改,较为安全。
42.2)智能合约,是一种可自动执行的计算机合约,可以看作是传统合约的数字版本。区块链的智能合约指的是写入区块链的代码中的合约。由于区块链具有中性化、防篡改的特性,因此,区块链的智能合约能在无中心授权的情况下允许用户匿名进行交易和协议。
43.3)公钥和私钥,是通过一种算法得到的一个密钥对。其中,公钥对外界公开,私钥由用户保留。使用密钥对可以实现非对称加密。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。通过这种算法得到的密钥对能保证是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。
44.4)分布式数字身份(decentralized identifiers,did)标识,是由字符串组成的标识符,用来代表一个数字身份,其注册不需要中央注册机构。在每个did标识生成时,会生
成与之关联的公钥及私钥对。did标识是一种去中心化的可验证数字标识符,基于区块链的did标识具有自主可控的特点。使用did标识的用户可自主完成did标识的注册、解析、更新或者撤销。
45.5)单包访问(single packet access,spa)授权,是一种访问机制。spa授权指的是,客户端与服务器建立连接之前,先发送一个数据包进行授权认证,如果认证通过,才允许客户端与服务器建立连接,可提高服务器的防护能力。
46.如上介绍了本技术实施例所涉及的一些技术概念,下面介绍与本技术实施例相关的技术方案。请参见图1,示出了一种sdp网络的架构。如图1所示,sdp网络包括sdp控制器(也称为验证端)、sdp发起主机(也就是客户端)、sdp接收主机(可以认为是网关),其中,sdp接收主机可获取数据中心的数据,该数据中心包括物理部署的数据中心,也包括云数据中心。
47.基于图1所示的架构,用户需要访问资源时,sdp发起主机向sdp控制器发起访问请求,在与sdp接收主机建立安全连接之前,先向sdp控制器提交身份验证申请,sdp控制器根据sdp发起主机的请求验证sdp发起主机的身份。sdp控制器对sdp发起主机的身份验证之后,向sdp发起主机反馈验证结果。如果该验证结果表示sdp发起主机的身份验证通过,sdp控制器还向sdp接收主机发送同步数据,用于通知sdp接收主机,sdp发起主机的身份验证通过。sdp发起主机接收sdp控制器发送的验证结果之后,向sdp接收主机发送携带spa的访问请求,以请求访问sdp接收主机。sdp接收主机接收sdp发起主机的访问请求,与sdp发起主机建立双向加密连接。
48.由于sdp接收主机默认不响应连接尝试,即只有sdp发起主机通过sdp控制器认证和授权后,才建立与sdp发起主机的连接。这样可避免为潜在的攻击者提供任何关于该端口是否正在被监听的信息,降低了服务器被攻击的风险。此外,sdp发起主机与sdp接收主机建立连接时采用spa授权,二者通过spa授权建立双向(transport layer security,tls)隧道,可实现对数据资源的安全访问。即使用户携带恶意代码,该恶意代码的攻击范围也因为与服务器建立访问隧道而攻击面很窄。
49.但是在如图1所示的sdp架构中,sdp发起主机的身份等信息以及sdp接受主机的信息由sdp控制器集中管理。如果sdp控制器被恶意攻击,那么sdp发起主机的身份等信息以及sdp接受主机的信息会造成泄露,身份验证授权过程中的数据容易被篡改,安全性较低。
50.为此,本技术实施例提供了一种基于区块链的分布式身份访问方法,在该方法中客户端根据区块链进行验证,获得控制器的授权,避免客户端身份信息集中于控制器带来的信息泄露的风险,使得基于新的网络架构下用户身份信息及网关信息更加安全。
51.请参见图2,为本技术实施例提供的sdp架构,该sdp架构包括客户端、凭证发放端、控制器及服务器。相较于图1所示的sdp架构,本技术实施例提供的sdp架构增加了凭证发放端。该凭证发放端可为客户端颁发用于客户端申请访问服务器的访问权限的访问凭证。凭证发放端为第三方数字证书颁发平台,可以签发凭证使得不同运营商的服务器能够互相信任以完成身份认证。具体的,客户端在访问服务器时,首先从凭证发放端获取访问凭证,再将该访问凭证发送给控制器,由控制器对该访问凭证进行验证,以对客户端的身份进行验证,从而确定是否授予客户端访问服务器的权限。控制器在确定客户端的身份验证通过后,给客户端授予访问服务器的权限,客户端只有在授权之后才能与服务器建立连接。
52.在图2所示的架构中,包括客户端、凭证发放端和控制器可以作为区块链网络中的节点,从而客户端、凭证发放端和控制器可以存储区块链上的所有信息,以达到去中心化管理,难以篡改身份验证过程的信息的目的。
53.客户端可以在区块链上注册身份信息,并获得客户端的身份标识,例如客户端的did标识。可以理解的是,客户端的did是基于区块链上的智能合约生成的。在本技术实施例中,智能合约可实现如下功能:数字身份创建功能、身份读取以及身份验证功能、数字凭证创建功能,以及凭证读取和验证功能。相应的,智能合约包括如下功能函数:与数字身份创建功能及对应的函数createdid、与身份读取以及验证功能及对应的函数verifydocument、与数字凭证创建功能及对应的函数createcredential,以及凭证读取和验证功能及对应的函数verifycredential。本技术实施例对函数createdid、函数verifydocument、函数createcredential和函数verifycredential的具体实现不作限制,只要能实现相应功能即可。
54.客户端可以调用智能合约中的调用createdid函数创建身份,生成身份标识,即did标识。请参见图3,该did标识包括did标识符及did文档。其中,did标识符包括字段:did、method_name、specific_string,did指示标识关键字,method_name指示客户端身份所在的域,specific_string指示唯一地址。did文档包括字段:@context、id、created、publickey、authentication,@context用于描述did文档的文档结构信息,id即did标识符用于did标识符的自描述,created用于记录该did文档的创建时间,publickey为客户端的公钥信息集,authentication为客户端的认证信息集。
55.另外,客户端调用智能合约的createdid函数生成身份标识时,区块链自动进行哈希运算,得到该身份标识的哈希值,并存储到区块链上。从而区块链网络中的任意节点可以获取客户端的身份标识的哈希值。由于区块链的去中性化特性,可以使得客户端独自注册、管理自身的身份标识。同样,基于区块链的防篡改特性,使得客户端使用该身份标识时达到真实可靠的目的。
56.需要说明的是,为了实现智能合约的上述功能,开发者将智能合约划分为数据合约、权限合约及逻辑合约三个层级进行设计。其中,数据合约用于定义数据结构,存储数据,规范接口的协议。权限合约用于判断节点的身份,并赋予节点不同的操作权限。逻辑合约负责数据的逻辑处理,并将处理结果返还数据合约。根据这三层级生成的上述功能的函数,可以使得智能合约具备逻辑清晰、结构完整、模块解耦及高安全性的特点,还可便于后续对合约的升级。因此,本技术实施中根据这种对智能合约的分层设计便于生成不同功能的函数,这些函数赋予客户端、控制器及凭证发放端不同的操作权限,赋予控制器该区块链的管理员权限,有权剔除未通过验证的非法客户端,对通过验证的客户端赋予访问权限,使得控制器实现访问控制功能,提高了该访问控制机制的安全性。
57.客户端在区块链上注册身份信息类似,控制器与凭证发放端也可以在区块链上注册身份信息。具体的,控制器与凭证发放端在区块链上注册身份信息可参考前述客户端在区块链上注册身份信息的方法,此处不再赘述。可以理解的是,控制器和凭证发放端也会将各自的身份标识的哈希值广播到区块链上。从而客户端、控制器与凭证发放端均可从区块链获取彼此的身份信息。
58.基于图2所示的sdp架构,本技术实施例提供了一种访问服务器的方法。请参见图
4,为本技术实施例提供的访问服务器的方法的流程示意图,具体的流程描述如下。
59.s401、客户端向凭证发放端发送请求消息,相应的,凭证发放端接收请求消息,该请求消息包括客户端的身份信息。
60.客户端在访问服务器时,可以向凭证发放端发送请求消息,该请求消息用于获取访问凭证。例如,该请求消息包括客户端的身份信息,例如客户端的did标识。凭证发放端接收到该请求消息,从请求消息获取客户端的身份信息,调用智能合约中的身份读取、验证函数verifydocument验证客户端发送的身份信息中的公钥信息集publickey,以验证客户端的身份信息。应理解,区块链上注册的客户端的身份信息是真实有效的,如果验证客户端发送的身份信息中的公钥信息集publickey通过,那么凭证发放端验证客户端的身份通过。
61.s402、凭证发放端向客户端发送访问凭证,相应的,客户端接收凭证发放端发送的访问凭证。
62.如果客户端的身份信息通过凭证发放端的验证,凭证发放端调用智能合约中的数字凭证创建函数createcredential为客户端创建访问凭证,并将访问凭证发送给客户端。
63.该访问凭证具体可包括did标识符及可验证声明(verifiable claim,vc)。例如,请参见图5,示出了访问凭证的具体格式。did标识符的定义如前述,vc包括如下字段:@context、id、issuer、issued、claim、proof。@context用于描述访问凭证结构信息,id即客户端did标识符,issuer包括凭证发放端的did标识符,issued用于记录访问凭证的创建时间,claim包括客户端的属性声明集,proof包括该访问凭证的签名集合。
64.客户端从凭证发放端获取访问凭证之后,可对访问凭证添加客户端的签名。由于客户端在生成身份标识时,基于智能合约的特性会生成用于加密和解密的密钥对。因此,客户端可利用密钥对中的私钥对访问凭证附加签名,便于控制器验证客户端的身份。签名的信息可储存在访问凭证vc的proof字段中。通过在访问凭证中签名,可进一步提高保证了信息交互过程中的安全可靠。
65.s403、客户端向控制器发送访问凭证,相应的,控制器接收客户端发送的访问凭证。
66.该访问凭证可用于向控制器获取服务器的访问权限。控制器接收该访问凭证,可对该访问凭证进行验证。由于访问凭证添加有客户端用私钥加密的签名,因此,控制器验证该访问凭证时,可从区块链上查询该客户端的公钥,基于区块链的智能合约对访问凭证的proof字段中的签名进行解密。如果使用客户端的公钥能够解密访问凭证中的签名,则访问凭证验证通过。如果使用客户端的公钥不能解密访问凭证中的签名,则访问凭证验证不通过。
67.s404、控制器向客户端发送授权信息,相应的,客户端接收授权信息。
68.s405、控制器确定访问凭证验证通过,向服务器发送授权同步信息,相应的,服务器接收授权同步信息。
69.控制器确定访问凭证验证通过,向客户端发送授权信息,该授权信息指示客户端具有对服务器的访问权限。控制器确定访问凭证验证不通过,向客户端发送授权信息,该授权信息指示客户端不具有对服务器的访问权限。
70.如果授权信息指示客户端具有对服务器的访问权限,那么授权信息可包括令牌、共享密钥及服务器的网关信息。令牌用于承载凭证的认证结果。共享密钥用于服务器验证
客户端的身份。网关信息包括客户端访问的服务器的网关的ip地址及端口信息。
71.如果控制器确定访问凭证验证通过,控制器还需要向服务器发送授权同步信息。授权同步信息与授权信息类似,可包括令牌、客户端的身份信息、与授权信息相同的共享密钥及用户可访问的服务列表等,用于服务器与客户端之间的身份验证。
72.客户端接收授权信息后,根据授权信息确定可以访问服务器,则向服务器发送访问请求,以访问该服务器。具体的,客户端接收到授权信息后,生成随机数nonce,并根据授权信息中的共享密钥与该随机数nonce生成spa密钥。spa密钥及随机数nonce可用于客户端的spa授权访问,服务器根据spa密钥及随机数nonce验证客户端的身份。客户端将spa密钥及随机数nonce、客户端的身份信息、令牌及服务器网关信息与客户端的时间戳生成访问报文,将访问报文发送至服务器网关,用于获取服务器的spa权限。访问报文格式具体参见图6,服务器网关信息具体包括目标ip及端口,即控制器在发送的授权信息携带服务器网关的ip地址,这样客户端便得知处于“隐身”状态网关的地址,通过获得spa授权进行访问。
73.在服务器接收到客户端发送的访问报文后,获取访问报文中的spa密钥及随机数nonce。由于服务器已经从控制器获得了授权同步信息,因此,服务器可以获取授权同步信息中的共享密钥。之后,服务器根据该共享密钥与访问报文中的随机数nonce生成一个spa密钥,与报文中的spa密钥进行对比,若两者相同,则证明客户端已经获得控制器授予的访问权限。服务器验证完客户端的身份后,打开服务端口,与客户端建立双向tls隧道连接。
74.在本技术实施例中,服务器网关默认不开放tcp端口,拒绝一切外部的tcp连接,不响应任何报文,因此,攻击者无法在未授权的情况下得知服务器网关的ip,无法扫描到服务器网关,从而提高了安全性。对于外部来说,服务器网关处于“隐身”的状态,有效保护了服务器的资源。
75.如果控制器验证客户端发送的访问凭证不通过,控制器可向客户端发送指示信息,该指示信息指示客户端不具有访问服务器的权限。在本技术实施例中,控制器还可以记录客户端出示访问凭证的次数,例如,记录第n次出示访问凭证。当控制器验证客户端发送的访问凭证不通过,控制器获取记录信息,确定客户端出示访问凭证的次数,例如n。当n大于预设阈值时,控制器可将客户端从区块链上删除。即如果一个客户端多次出示的访问凭证验证不通过,那么该客户端为非法客户端,这种情况下,控制器可以根据智能合约赋予的管理员权限将该客户端从区块链网络中删除。通过设置预设阈值,进一步提高了访问控制机制的安全性,有效阻止网络攻击。
76.在本技术实施例中,客户端、控制器和凭证发放端作为区块链网络中的节点,客户端、控制器和凭证发放端的身份信息等均可存储在区块链上。因此,即使控制器受到攻击,由于区块链上存储有客户端等的身份信息,还是可以身份信息等丢失。另外,还可以避免身份验证授权过程中的数据被篡改,安全性较高。
77.基于以上实施例,本技术实施例还提供了相应的设备,下面结合附图介绍本技术实施例所提供的多种设备。
78.请参见图7,基于同一发明构思,本技术实施例提供了一种客户端700,该客户端700、凭证发放端和控制器均为区块链网络中的节点。该客户端700包括凭证获取模块701、凭证出示模块702、服务器访问模块703。其中,凭证获取模块701用于向凭证发放端发送请求消息,该请求消息用于请求获取访问凭证,请求消息包括客户端700的身份信息。访问凭
证用于客户端700申请访问服务器的访问权限。凭证出示模块702用于接收凭证发放端发送的访问凭证,向控制器发送访问凭证,其中,访问凭证是基于区块链的智能合约生成的。服务器访问模块703用于接收控制器的授权信息,该授权信息用于指示客户端700是否能够访问服务器。若授权信息指示客户端700能够访问服务器,服务器访问模块703向服务器发送用于访问服务器的访问请求。
79.可选的,凭证获取模块701向凭证发放端发送请求消息之前,还用于基于区块链的智能合约在区块链上注册身份信息,获得客户端700的身份标识。可以理解的是,通信装置700生成身份标识时,区块链自动进行哈希运算,得到该身份标识的哈希值,并存储到区块链上。
80.可选的,凭证出示模块702接收凭证发放端发送的访问凭证之后,还用于根据私钥对所接收的访问凭证添加签名,该签名用于控制器验证客户端700的身份。其中,私钥是客户端700注册身份信息时获得的。凭证出示模块702向控制器发送的访问凭证是添加了签名的访问凭证。
81.可选的,服务器访问模块703向服务器发送用于访问服务器的访问请求之前,还用于生成随机数,并根据随机数及授权信息生成访问报文,然后向服务器发送访问报文。该访问报文用于客户端700请求获取服务器的spa授权。该访问报文包括随机数以及spa密钥,spa密钥是根据随机数与授权信息生成的。
82.请参见图8,基于同一发明构思,本技术实施例提供了一种控制器800,控制器800和客户端以及凭证发放端均为区块链网络中的节点。该控制器800包括凭证接收模块801、凭证验证模块802、授权访问模块803。其中,凭证接收模块801用于接收客户端发送的访问凭证,该访问凭证用于客户端申请服务器的访问权限,且该访问凭证是基于区块链的智能合约生成的。凭证验证模块802用于基于区块链的智能合约验证访问凭证。授权访问模块803用于若访问凭证验证通过,向客户端发送授权信息,以及向服务器发送授权同步信息。授权信息用于指示客户端具有服务器的访问权限。授权同步信息用于服务器验证客户端的身份。
83.可选的,凭证接收模块801接收客户端发送的访问凭证之前,还用于基于区块链的智能合约在区块链上注册身份信息,获得控制器800的身份标识,可以理解的是,通信装置800生成身份标识时,区块链自动进行哈希运算,得到该身份标识的哈希值,并存储到区块链上。
84.可选的,访问凭证包括客户端用私钥加密的签名,凭证验证模块802还用于从区块链获取客户端的公钥,并根据该公钥,基于区块链的智能合约对客户端的签名解密。其中,若能够解密,则访问凭证通过验证。
85.可选的,在凭证验证模块802验证所述访问凭证之后,还用于若访问凭证验证不通过,向客户端发送指示信息,并记录客户端第n次出示访问凭证。其中,该指示信息指示客户端没有访问服务器的权限。
86.可选的,凭证验证模块802向客户端发送指示信息后,还用于获取记录信息,该记录信息指示客户端第n次出示访问凭证。当n大于预设阈值时,凭证验证模块802将客户端从区块链上删除。
87.基于同一发明构思,本技术实施例还提供了一种通信系统,该通信系统包括如上
述客户端700、控制器800及凭证发放端、服务器。
88.本技术实施例还提供了一种计算机存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,当程序指令被计算机执行时,使计算机执行如上述实施例提供的访问服务器的方法的步骤。
89.本技术实施例还提供了一种计算机程序代码存储介质,当计算机程序代码在计算机上运行时,使得计算机执行如上述实施例提供的访问服务器的方法的步骤。
90.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
91.本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
92.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
93.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
94.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
技术特征:1.一种访问服务器的方法,其特征在于,包括:客户端向凭证发放端发送请求消息,所述请求消息用于请求获取访问凭证,所述请求消息包括所述客户端的身份信息,所述访问凭证用于所述客户端申请访问服务器的访问权限;所述客户端接收所述凭证发放端发送的所述访问凭证,向控制器发送所述访问凭证,其中,所述访问凭证是基于区块链的智能合约生成的,所述客户端、所述凭证发放端和所述控制器均为所述区块链网络中的节点;所述客户端接收所述控制器的授权信息,所述授权信息用于指示所述客户端是否能够访问所述服务器;若所述授权信息指示所述客户端能够访问所述服务器,所述客户端向所述服务器发送用于访问所述服务器的访问请求。2.如权利要求1所述的方法,其特征在于,所述客户端向凭证发放端发送请求消息之前,所述方法还包括:所述客户端基于区块链的智能合约在区块链上注册身份信息,获得所述客户端的身份标识。3.如权利要求2所述的方法,其特征在于,所述客户端接收所述凭证发放端发送的所述访问凭证之后,所述方法还包括:所述客户端根据私钥对所接收的所述访问凭证添加签名,所述签名用于所述控制器验证所述客户端的身份;其中,所述私钥是所述客户端注册身份信息时获得的,所述客户端向所述控制器发送的所述访问凭证是添加了所述签名的访问凭证。4.如权利要求3所述的方法,其特征在于,所述客户端向所述服务器发送用于访问所述服务器的访问请求之前,还包括:所述客户端生成随机数,并根据所述随机数及所述授权信息生成访问报文,所述访问报文包括所述随机数以及spa密钥,所述spa密钥是根据所述随机数与所述授权信息生成的,所述访问报文用于所述客户端请求获取所述服务器的spa授权;所述客户端向所述服务器发送所述访问报文。5.一种访问服务器方法,其特征在于,包括:控制器接收客户端发送的访问凭证,所述访问凭证用于所述客户端申请服务器的访问权限,所述访问凭证是基于区块链的智能合约生成的,所述客户端和所述控制器均为所述区块链网络中的节点;所述控制器基于区块链的智能合约验证所述访问凭证;若所述访问凭证验证通过,所述控制器向所述客户端发送授权信息,以及向所述服务器发送授权同步信息,所述授权信息用于指示所述客户端具有所述服务器的访问权限,所述授权同步信息用于所述服务器核对所述客户端的身份。6.如权利要求5所述的方法,其特征在于,所述控制器接收所述客户端发送的访问凭证之前,还包括:所述控制器基于区块链的智能合约在区块链上注册身份信息,获得所述控制器的身份标识。7.如权利要求6所述的方法,其特征在于,所述访问凭证包括所述客户端用私钥加密的
签名,所述控制器基于区块链的智能合约验证所述访问凭证,包括:所述控制器从所述区块链获取所述客户端的公钥,并根据所述公钥,基于所述区块链的智能合约对所述客户端的签名解密,其中,若能够解密,所述访问凭证通过验证。8.如权利要求7所述的方法,其特征在于,在所述控制器验证所述访问凭证之后,所述方法还包括:若所述访问凭证验证不通过,所述控制器向所述客户端发送指示信息,并记录所述客户端第n次出示所述访问凭证,其中,所述指示信息指示所述客户端没有访问所述服务器的权限。9.如权利要求8所述的方法,其特征在于,所述控制器向所述客户端发送指示信息后,还包括:所述控制器获取记录信息,所述记录信息指示所述客户端第n次出示所述访问凭证;当n大于预设阈值时,所述控制器将所述客户端从所述区块链上删除。10.一种客户端,其特征在于,包括:凭证获取模块,用于向凭证发放端发送请求消息,所述请求消息用于请求获取访问凭证,所述请求消息包括所述客户端的身份信息,所述访问凭证用于所述客户端申请访问服务器的访问权限;凭证出示模块,用于接收所述凭证发放端发送的所述访问凭证,向控制器发送所述访问凭证,其中,所述访问凭证是基于区块链的智能合约生成的,所述客户端、所述凭证发放端和所述控制器均为所述区块链网络中的节点;服务器访问模块,用于接收所述控制器的授权信息,所述授权信息用于指示所述客户端是否能够访问所述服务器;若所述授权信息指示所述客户端能够访问所述服务器,所述服务器访问模块还用于向所述服务器发送用于访问所述服务器的访问请求。11.如权利要求10所述的客户端,其特征在于,所述凭证获取模块向凭证发放端发送请求消息之前,还用于,基于区块链的智能合约在区块链上注册身份信息,获得所述客户端的身份标识。12.如权利要求11所述的客户端,其特征在于,所述凭证出示模块接收所述凭证发放端发送的所述访问凭证之后,还用于,根据私钥对所接收的所述访问凭证添加签名,所述签名用于所述控制器验证所述客户端的身份;其中,所述私钥是所述客户端注册身份信息时获得的,所述凭证出示模块向所述控制器发送的所述访问凭证是添加了所述签名的访问凭证。13.如权利要求12所述的客户端,其特征在于,所述服务器访问模块向所述服务器发送用于访问所述服务器的访问请求之前,还用于:生成随机数,并根据所述随机数及所述授权信息生成访问报文,所述访问报文包括所述随机数以及spa密钥,所述spa密钥是根据所述随机数与所述授权信息生成的,所述访问报文用于所述客户端请求获取所述服务器的spa授权;向所述服务器发送所述访问报文。14.一种控制器,其特征在于,包括:凭证接收模块,用于接收客户端发送的访问凭证,所述访问凭证用于所述客户端申请
服务器的访问权限,所述访问凭证是基于区块链的智能合约生成的,所述客户端和所述控制器均为所述区块链网络中的节点;凭证验证模块,基于区块链的智能合约验证所述访问凭证;授权访问模块,用于在所述访问凭证验证通过的情况下,向所述客户端发送授权信息,以及向所述服务器发送授权同步信息,所述授权信息用于指示所述客户端具有所述服务器的访问权限,所述授权同步信息用于所述服务器核对所述客户端的身份。15.如权利要求14所述的控制器,其特征在于,所述凭证接收模块接收所述客户端发送的访问凭证之前,还用于:基于区块链的智能合约在区块链上注册身份信息,获得所述控制器的身份标识。16.如权利要求15所述的控制器,其特征在于,所述访问凭证包括所述客户端用私钥加密的签名,所述凭证验证模块还用于:从所述区块链获取所述客户端的公钥,并根据所述公钥,基于所述区块链的智能合约对所述客户端的签名解密,其中,若能够解密,所述访问凭证通过验证。17.如权利要求16所述的控制器,其特征在于,在所述凭证验证模块验证所述访问凭证之后,还用于:若所述访问凭证验证不通过,向所述客户端发送指示信息,并记录所述客户端第n次出示所述访问凭证,其中,所述指示信息指示所述客户端没有访问所述服务器的权限。18.如权利要求17所述的控制器,其特征在于,所述凭证验证模块向所述客户端发送指示信息后,还用于:获取记录信息,所述记录信息指示所述客户端第n次出示所述访问凭证;当n大于预设阈值时,所述凭证验证模块将所述客户端从所述区块链上删除。19.一种通信系统,其特征在于,包括:如权利要求10-13中任一项所述的客户端、权利要求14-18中任一项所述的控制器及凭证发放端和服务器。
技术总结本申请涉及一种访问服务器的方法及装置,具体包括:客户端向凭证发放端发送请求消息,该请求消息用于请求获取访问凭证,请求消息包括客户端的身份信息,访问凭证用于客户端申请访问服务器的访问权限。然后,客户端接收凭证发放端发送的访问凭证,向控制器发送访问凭证,其中,访问凭证是基于区块链的智能合约生成的,客户端、凭证发放端和控制器均为区块链网络中的节点。客户端接收控制器的授权信息,授权信息用于指示客户端是否能够访问服务器。若所述授权信息指示客户端能够访问所述服务器,客户端向所述服务器发送用于访问所述服务器的访问请求。该方法有效避免了客户端身份信息集中于控制器带来泄露的风险,提高了服务器访问的安全性。访问的安全性。访问的安全性。
技术研发人员:李智科 刘文懋 李德全 吕亮
受保护的技术使用者:北京神州绿盟科技有限公司
技术研发日:2022.07.25
技术公布日:2022/11/1