CN113285958A - 客户端认证方法 - Google Patents

客户端认证方法 Download PDF

Info

Publication number
CN113285958A
CN113285958A CN202110681276.0A CN202110681276A CN113285958A CN 113285958 A CN113285958 A CN 113285958A CN 202110681276 A CN202110681276 A CN 202110681276A CN 113285958 A CN113285958 A CN 113285958A
Authority
CN
China
Prior art keywords
authentication
certificate
server
client
random
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
Application number
CN202110681276.0A
Other languages
English (en)
Inventor
廖颜华
张俊麒
胡朝新
何凌峰
陈涛
苏小康
张开翔
范瑞彬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WeBank Co Ltd
Original Assignee
WeBank Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN202110681276.0A priority Critical patent/CN113285958A/zh
Publication of CN113285958A publication Critical patent/CN113285958A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3247Cryptographic 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

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

本发明公开了一种客户端认证方法,所述方法包括:客户端向认证中心发送身份认证请求,认证中心认证通过后确定目标服务器,至少根据目标服务器的服务器地址和预设失效时间生成凭证内容,采用公共私钥对凭证内容进行数字签名得到凭证签名,并将凭证内容和凭证签名作为认证凭证返回;客户端按照服务器地址将认证凭证发送给目标服务器;目标服务器采用公共公钥对认证凭证进行签名验证,以及根据预设失效时间验证认证凭证是否有效,并在确定签名验证正确和认证凭证有效时向客户端返回验证成功消息;当客户端接收到验证成功消息后与目标服务器进行服务数据交互。本发明客户端认证方法有效避免了服务器密钥泄露的问题。

Description

客户端认证方法
技术领域
本发明涉及安全技术领域,尤其涉及一种客户端认证方法。
背景技术
当前,客户端与提供远程桌面服务的服务器通过RFB远程控制协议进行远程桌面服务数据的交互。RFB支持vnc密码认证模式,客户端将用户输入的密码(服务器密钥)作为key加密随机串发送给服务器,服务器通过本地的密钥验证随机串,实现用户权限认证。由于远程桌面服务是部署在批量生成的远程桌面服务器上的,因此需要每个用户向每台服务器进行密钥交换,极大地增加了服务器密钥的泄露风险。
发明内容
本发明的主要目的在于提供一种客户端认证方法,旨在解决现有的客户端权限认证模式服务器密钥泄露风险大的技术问题。
为实现上述目的,本发明提供一种客户端认证方法,所述方法应用于客户端,所述方法包括以下步骤:
向认证中心发送身份认证请求,以供所述认证中心对所述身份认证请求进行认证通过后从对接的服务器中确定目标服务器,至少根据所述目标服务器的服务器地址和预设失效时间生成凭证内容,采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名,并将所述凭证内容和所述凭证签名作为认证凭证返回给所述客户端;
从所述认证中心接收到所述认证凭证后,按照所述认证凭证中的所述服务器地址将所述认证凭证发送给所述目标服务器,以供所述目标服务器采用与所述公共私钥对应的公共公钥对所述认证凭证进行签名验证,以及根据所述预设失效时间验证所述认证凭证是否有效,并在确定签名验证正确和所述认证凭证有效时向所述客户端返回验证成功消息;
当接收到所述验证成功消息后,与所述目标服务器进行服务数据交互。
可选地,所述认证中心还根据所述目标服务器的服务器公钥生成所述凭证内容,所述与所述目标服务器进行服务数据交互的步骤包括:
生成第一随机数组,并采用从所述认证凭证中提取到的所述服务器公钥对所述第一随机数组加密得到第一加密随机数组;
将所述第一加密随机数组发送给所述目标服务器,以供所述目标服务器采用与所述服务器公钥对应的服务器私钥对所述第一加密随机数组进行解密得到所述第一随机数组;
接收所述目标服务器发送的第二加密随机数组,并采用所述服务器公钥对所述第二加密随机数组进行解密得到第二随机数组,其中,所述目标服务器生成所述第二随机数组并采用所述服务器私钥对所述第二随机数组加密得到所述第二加密随机数组;
将所述第一随机数组和所述第二随机数组合并得到对称密钥,并与所述目标服务器采用所述对称密钥通过对称加密通道进行服务数据交互,其中,所述目标服务器采用与所述客户端相同的合并方式将所述第一随机数组和所述第二随机数组合并得到所述对称密钥。
可选地,所述将所述第一随机数组和所述第二随机数组合并得到对称密钥的步骤包括:
将所述第一随机数组和所述第二随机数组进行拼接得到拼接数组;
计算得到所述拼接数组的摘要,并对所述摘要进行编码得到对称密钥。
可选地,所述按照所述认证凭证中的所述服务器地址将所述认证凭证发送给所述目标服务器的步骤之前,还包括:
从所述认证中心接收到所述认证凭证后,提取所述认证凭证中的凭证内容;
对所述凭证内容采用预设编解码算法进行解码得到所述服务器地址、所述预设失效时间和所述服务器公钥,其中,所述认证中心至少将所述服务器地址、所述预设失效时间和所述服务器公钥采用所述预设编解码算法进行编码得到所述凭证内容。
为实现上述目的,本发明还提供一种客户端认证方法,所述方法应用于认证中心,所述方法包括以下步骤:
接收客户端发送的身份认证请求并对所述身份认证请求进行认证;
当认证通过后从对接的服务器中确定目标服务器,并至少根据所述目标服务器的服务器地址和预设失效时间生成凭证内容;
采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名;
将所述凭证内容和所述凭证签名作为认证凭证返回给所述客户端,以供所述客户端按照所述认证凭证中的所述服务器地址将所述认证凭证发送给所述目标服务器,所述目标服务器采用与所述公共私钥对应的公共公钥对所述认证凭证进行签名验证,以及根据所述预设失效时间验证所述认证凭证是否有效,并在确定签名验证正确和所述认证凭证有效时与所述客户端进行服务数据交互。
可选地,所述采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名的步骤之前,还包括:
获取其他认证中心的公钥,并将本端的公钥传递给所述其他认证中心;
生成本端随机数组并采用其他认证中心的公钥将所述本端随机数组通过加密方式发送给所述其他认证中心;
获取所述其他认证中心的他端随机数组,其中,所述其他认证中心生成所述他端随机数组并采用本端的公钥将所述他端随机数组通过加密方式发送给本端;
获取随机序列,其中,所述随机序列由本端或其他认证中心随机生成;
采用预设随机排列算法按照所述随机序列对拼接数组进行随机排列得到公共随机数组,其中,本端和所述其他认证中心采用相同的拼接方式分别将所述本端随机数组和所述他端随机数组拼接得到所述拼接数组;
采用预设密钥生成算法以所述公共随机数组为种子生成本端和所述其他认证中心共用的所述公共公钥和所述公共私钥,其中,所述其他认证中心采用所述预设随机排列算法按照所述随机序列对所述拼接数组进行随机排列得到所述公共随机数组,并采用所述预设密钥生成算法以所述公共随机数组为种子生成所述公共公钥和所述公共私钥。
可选地,所述获取其他认证中心的公钥,并将本端的公钥传递给所述其他认证中心的步骤包括:
将本端的公钥上传至区块链,以供其他认证中心从所述区块链上获取本端的公钥;
从所述区块链上获取所述其他认证中心的公钥,其中,所述其他认证中心将他端的公钥上传至所述区块链;
所述采用预设密钥生成算法以所述公共随机数组为种子生成本端和所述其他认证中心共用的所述公共公钥和所述公共私钥的步骤之后,还包括:
将所述公共公钥上传所述区块链,并调用智能合约验证本端和所述其他认证中心上传的公共公钥是否相同;
若相同则确定上链成功,以供本端对接的各个服务器从所述区块链中同步上链成功的所述公共公钥。
可选地,所述获取随机序列,其中,所述随机序列由本端或其他认证中心随机生成的步骤包括:
将所述本端随机数组转换得到的第一数值与所述他端随机数组转换得到的第二数值进行大小比较;
当所述第一数值大于所述第二数值时,生成随机序列并采用本端的私钥对所述随机序列进行数字签名得到签名结果,将所述随机序列和所述签名结果采用所述其他认证中心的公钥进行加密得到加密序列,将所述加密序列发送给所述其他认证中心,以供所述其他认证中心采用他端的私钥对所述加密序列进行解密得到所述随机序列和所述签名结果,并在采用本端的公钥对所述随机序列和所述签名结果进行验证通过后确认获得所述随机序列;
当所述第一数值小于或等于所述第二数值时,接收所述其他认证中心发送的加密序列,采用本端的私钥对所述加密序列进行解密得到随机序列和签名结果,并在采用所述其他认证中心的公钥对所述随机序列和所述签名结果进行验证通过后确认获得所述随机序列,其中,所述其他认证中心生成所述随机序列并采用所述其他认证中心的私钥对所述随机序列进行数字签名得到所述签名结果,将所述随机序列和所述签名结果采用本端的公钥进行加密得到所述加密序列。
为实现上述目的,本发明还提供一种客户端认证方法,所述方法应用于服务端,所述方法包括以下步骤:
接收客户端发送的认证凭证,其中,认证中心对所述客户端发送的身份认证请求认证通过后,至少根据所述服务器的地址和预设失效时间生成凭证内容,采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名,并将所述凭证内容和所述凭证签名作为所述认证凭证发送给所述客户端,所述客户端根据所述认证凭证中所述服务器的地址将所述认证凭证发送给所述服务器;
采用与所述公共私钥对应的公共公钥对所述认证凭证进行签名验证,以及根据所述预设失效时间验证所述认证凭证是否有效;
若确定签名验证正确以及确定所述认证凭证有效,则与所述客户端进行服务数据交互。
可选地,所述认证中心还根据所述目标服务器的服务器公钥生成所述凭证内容,所述与所述客户端进行服务数据交互的步骤包括:
接收所述客户端发送的第一加密随机数组,并采用与所述服务器公钥对应的服务器私钥对所述第一加密随机数组进行解密得到第一随机数组,其中,所述客户端生成所述第一随机数组,并采用从所述认证凭证中提取到的所述服务器公钥对所述第一随机数组加密得到所述第一加密随机数组;
生成第二随机数组并采用所述服务器私钥对所述第二随机数组加密得到第二加密随机数组;
将所述第二加密随机数组发送给所述客户端,以供所述客户端采用所述服务器公钥对所述第二加密随机数组进行解密得到所述第二随机数组;
将所述第一随机数组和所述第二随机数组合并得到对称密钥,并与所述客户端采用所述对称密钥通过对称加密通道进行服务数据交互,其中,所述客户端采用与所述服务器相同的合并方式将所述第一随机数组和所述第二随机数组合并得到所述对称密钥。
为实现上述目的,本发明还提供一种客户端认证装置,所述装置部署于客户端,所述装置包括:
第一发送模块,用于向认证中心发送身份认证请求,以供所述认证中心对所述身份认证请求进行认证通过后从对接的服务器中确定目标服务器,至少根据所述目标服务器的服务器地址和预设失效时间生成凭证内容,采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名,并将所述凭证内容和所述凭证签名作为认证凭证返回给所述客户端;
第二发送模块,用于从所述认证中心接收到所述认证凭证后,按照所述认证凭证中的所述服务器地址将所述认证凭证发送给所述目标服务器,以供所述目标服务器采用与所述公共私钥对应的公共公钥对所述认证凭证进行签名验证,以及根据所述预设失效时间验证所述认证凭证是否有效,并在确定签名验证正确和所述认证凭证有效时向所述客户端返回验证成功消息;
第一交互模块,用于当接收到所述验证成功消息后,与所述目标服务器进行服务数据交互。
为实现上述目的,本发明还提供一种客户端认证装置,所述装置部署于认证中心,所述装置包括:
第一接收模块,用于接收客户端发送的身份认证请求并对所述身份认证请求进行认证;
生成模块,用于当认证通过后从对接的服务器中确定目标服务器,并至少根据所述目标服务器的服务器地址和预设失效时间生成凭证内容;
签名模块,用于采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名;
返回模块,用于将所述凭证内容和所述凭证签名作为认证凭证返回给所述客户端,以供所述客户端按照所述认证凭证中的所述服务器地址将所述认证凭证发送给所述目标服务器,所述目标服务器采用与所述公共私钥对应的公共公钥对所述认证凭证进行签名验证,以及根据所述预设失效时间验证所述认证凭证是否有效,并在确定签名验证正确和所述认证凭证有效时与所述客户端进行服务数据交互。
为实现上述目的,本发明还提供一种客户端认证装置,所述装置部署于服务器,所述装置包括:
第二接收模块,用于接收客户端发送的认证凭证,其中,认证中心对所述客户端发送的身份认证请求认证通过后,至少根据所述服务器的地址和预设失效时间生成凭证内容,采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名,并将所述凭证内容和所述凭证签名作为所述认证凭证发送给所述客户端,所述客户端根据所述认证凭证中所述服务器的地址将所述认证凭证发送给所述服务器;
验证模块,用于采用与所述公共私钥对应的公共公钥对所述认证凭证进行签名验证,以及根据所述预设失效时间验证所述认证凭证是否有效;
第二交互模块,用于若确定签名验证正确以及确定所述认证凭证有效,则与所述客户端进行服务数据交互。
为实现上述目的,本发明还提供一种客户端认证设备,所述客户端认证设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的客户端认证程序,所述客户端认证程序被所述处理器执行时实现如上所述的客户端认证方法的步骤。
此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有客户端认证程序,所述客户端认证程序被处理器执行时实现如上所述的客户端认证方法的步骤。
本发明中,通过向认证中心发送身份认证请求,由认证中心对身份认证请求进行认证通过后从对接的服务器中确定目标服务器,至少根据目标服务器的服务器地址和预设失效时间生成凭证内容,采用预设的认证中心的公共私钥对凭证内容进行数字签名得到凭证签名,并将凭证内容和凭证签名作为认证凭证返回给客户端;客户端在接收到认证凭证后,根据认证凭证中的服务器地址将认证凭证发送给目标服务器,由目标服务器采用与该公共私钥对应的公共公钥对认证凭证进行签名验证,以及根据该预设失效时间验证认证凭证是否有效,在确定签名验证正确以及认证凭证有效时向客户端返回验证成功消息;客户端在接收到验证成功消息后与目标服务器进行服务数据交互。由于客户端是在认证中心进行身份认证,由认证中心生成一个认证凭证,客户端凭借认证凭证向服务器请求服务,客户端无需通过服务器密钥向服务器请求服务,从而不会存在服务器密钥泄露的问题。并且通过认证中心根据预设失效时间生成凭证内容,服务器根据该预设失效时间验证认证凭证的有效性,使得认证凭证具备时效性,进一步提高通过认证凭证请求服务器服务的安全性。又通过认证中心采用公共私钥对凭证内容进行数字签名,服务器采用该公共私钥对应的公共公钥对认证凭证进行签名验证,使得认证凭证具备防伪性,进一步提高通过认证凭证请求服务器服务的安全性。
附图说明
图1为本发明实施例方案涉及的硬件运行环境的结构示意图;
图2为本发明客户端认证方法第一实施例的流程示意图;
图3为本发明客户端认证方法第三实施例的流程示意图;
图4为本发明客户端认证方法第四实施例的流程示意图;
图5为本发明实施例涉及的一种认证中心、客户端和服务器的整体架构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
需要说明的是,本发明实施例客户端认证设备可以是智能手机、个人计算机和服务器等设备,在此不做具体限制。
如图1所示,该客户端认证设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的设备结构并不构成对客户端认证设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及客户端认证程序。操作系统是管理和控制设备硬件和软件资源的程序,支持客户端认证程序以及其它软件或程序的运行。
在图1所示的设备中,当所述设备是客户端时,用户接口1003主要用于与客户端进行数据通信;网络接口1004主要用于与服务器和认证中心建立通信连接;而处理器1001可以用于调用存储器1005中存储的客户端认证程序,并执行以下操作:
向认证中心发送身份认证请求,以供所述认证中心对所述身份认证请求进行认证通过后从对接的服务器中确定目标服务器,至少根据所述目标服务器的服务器地址和预设失效时间生成凭证内容,采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名,并将所述凭证内容和所述凭证签名作为认证凭证返回给所述客户端;
从所述认证中心接收到所述认证凭证后,按照所述认证凭证中的所述服务器地址将所述认证凭证发送给所述目标服务器,以供所述目标服务器采用与所述公共私钥对应的公共公钥对所述认证凭证进行签名验证,以及根据所述预设失效时间验证所述认证凭证是否有效,并在确定签名验证正确和所述认证凭证有效时向所述客户端返回验证成功消息;
当接收到所述验证成功消息后,与所述目标服务器进行服务数据交互。
进一步地,所述认证中心还根据所述目标服务器的服务器公钥生成所述凭证内容,所述与所述目标服务器进行服务数据交互包括:
生成第一随机数组,并采用从所述认证凭证中提取到的所述服务器公钥对所述第一随机数组加密得到第一加密随机数组;
将所述第一加密随机数组发送给所述目标服务器,以供所述目标服务器采用与所述服务器公钥对应的服务器私钥对所述第一加密随机数组进行解密得到所述第一随机数组;
接收所述目标服务器发送的第二加密随机数组,并采用所述服务器公钥对所述第二加密随机数组进行解密得到第二随机数组,其中,所述目标服务器生成所述第二随机数组并采用所述服务器私钥对所述第二随机数组加密得到所述第二加密随机数组;
将所述第一随机数组和所述第二随机数组合并得到对称密钥,并与所述目标服务器采用所述对称密钥通过对称加密通道进行服务数据交互,其中,所述目标服务器采用与所述客户端相同的合并方式将所述第一随机数组和所述第二随机数组合并得到所述对称密钥。
进一步地,所述将所述第一随机数组和所述第二随机数组合并得到对称密钥的包括:
将所述第一随机数组和所述第二随机数组进行拼接得到拼接数组;
计算得到所述拼接数组的摘要,并对所述摘要进行编码得到对称密钥。
进一步地,所述按照所述认证凭证中的所述服务器地址将所述认证凭证发送给所述目标服务器之前,处理器1001还可以用于调用存储器1005中存储的客户端认证程序,执行以下操作:
从所述认证中心接收到所述认证凭证后,提取所述认证凭证中的凭证内容;
对所述凭证内容采用预设编解码算法进行解码得到所述服务器地址、所述预设失效时间和所述服务器公钥,其中,所述认证中心至少将所述服务器地址、所述预设失效时间和所述服务器公钥采用所述预设编解码算法进行编码得到所述凭证内容。
在图1所示的设备中,当所述设备是认证中心时,用户接口1003主要用于与客户端进行数据通信;网络接口1004主要用于与服务器建立通信连接;而处理器1001可以用于调用存储器1005中存储的客户端认证程序,并执行以下操作:
接收客户端发送的身份认证请求并对所述身份认证请求进行认证;
当认证通过后从对接的服务器中确定目标服务器,并至少根据所述目标服务器的服务器地址和预设失效时间生成凭证内容;
采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名;
将所述凭证内容和所述凭证签名作为认证凭证返回给所述客户端,以供所述客户端按照所述认证凭证中的所述服务器地址将所述认证凭证发送给所述目标服务器,所述目标服务器采用与所述公共私钥对应的公共公钥对所述认证凭证进行签名验证,以及根据所述预设失效时间验证所述认证凭证是否有效,并在确定签名验证正确和所述认证凭证有效时与所述客户端进行服务数据交互。
进一步地,所述采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名之前,处理器1001还可以用于调用存储器1005中存储的客户端认证程序,执行以下操作:
获取其他认证中心的公钥,并将本端的公钥传递给所述其他认证中心;
生成本端随机数组并采用其他认证中心的公钥将所述本端随机数组通过加密方式发送给所述其他认证中心;
获取所述其他认证中心的他端随机数组,其中,所述其他认证中心生成所述他端随机数组并采用本端的公钥将所述他端随机数组通过加密方式发送给本端;
获取随机序列,其中,所述随机序列由本端或其他认证中心随机生成;
采用预设随机排列算法按照所述随机序列对拼接数组进行随机排列得到公共随机数组,其中,本端和所述其他认证中心采用相同的拼接方式分别将所述本端随机数组和所述他端随机数组拼接得到所述拼接数组;
采用预设密钥生成算法以所述公共随机数组为种子生成本端和所述其他认证中心共用的所述公共公钥和所述公共私钥,其中,所述其他认证中心采用所述预设随机排列算法按照所述随机序列对所述拼接数组进行随机排列得到所述公共随机数组,并采用所述预设密钥生成算法以所述公共随机数组为种子生成所述公共公钥和所述公共私钥。
进一步地,所述获取其他认证中心的公钥,并将本端的公钥传递给所述其他认证中心包括:
将本端的公钥上传至区块链,以供其他认证中心从所述区块链上获取本端的公钥;
从所述区块链上获取所述其他认证中心的公钥,其中,所述其他认证中心将他端的公钥上传至所述区块链;
所述采用预设密钥生成算法以所述公共随机数组为种子生成本端和所述其他认证中心共用的所述公共公钥和所述公共私钥的步骤之后,还包括:
将所述公共公钥上传所述区块链,并调用智能合约验证本端和所述其他认证中心上传的公共公钥是否相同;
若相同则确定上链成功,以供本端对接的各个服务器从所述区块链中同步上链成功的所述公共公钥。
进一步地,所述获取随机序列,其中,所述随机序列由本端或其他认证中心随机生成包括:
将所述本端随机数组转换得到的第一数值与所述他端随机数组转换得到的第二数值进行大小比较;
当所述第一数值大于所述第二数值时,生成随机序列并采用本端的私钥对所述随机序列进行数字签名得到签名结果,将所述随机序列和所述签名结果采用所述其他认证中心的公钥进行加密得到加密序列,将所述加密序列发送给所述其他认证中心,以供所述其他认证中心采用他端的私钥对所述加密序列进行解密得到所述随机序列和所述签名结果,并在采用本端的公钥对所述随机序列和所述签名结果进行验证通过后确认获得所述随机序列;
当所述第一数值小于或等于所述第二数值时,接收所述其他认证中心发送的加密序列,采用本端的私钥对所述加密序列进行解密得到随机序列和签名结果,并在采用所述其他认证中心的公钥对所述随机序列和所述签名结果进行验证通过后确认获得所述随机序列,其中,所述其他认证中心生成所述随机序列并采用所述其他认证中心的私钥对所述随机序列进行数字签名得到所述签名结果,将所述随机序列和所述签名结果采用本端的公钥进行加密得到所述加密序列。
在图1所示的设备中,当所述设备是服务器时,用户接口1003主要用于与客户端进行数据通信;网络接口1004主要用于与认证中心建立通信连接;而处理器1001可以用于调用存储器1005中存储的客户端认证程序,并执行以下操作:
接收客户端发送的认证凭证,其中,认证中心对所述客户端发送的身份认证请求认证通过后,至少根据所述服务器的地址和预设失效时间生成凭证内容,采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名,并将所述凭证内容和所述凭证签名作为所述认证凭证发送给所述客户端,所述客户端根据所述认证凭证中所述服务器的地址将所述认证凭证发送给所述服务器;
采用与所述公共私钥对应的公共公钥对所述认证凭证进行签名验证,以及根据所述预设失效时间验证所述认证凭证是否有效;
若确定签名验证正确以及确定所述认证凭证有效,则与所述客户端进行服务数据交互。
进一步地,所述认证中心还根据所述目标服务器的服务器公钥生成所述凭证内容,所述与所述客户端进行服务数据交互包括:
接收所述客户端发送的第一加密随机数组,并采用与所述服务器公钥对应的服务器私钥对所述第一加密随机数组进行解密得到第一随机数组,其中,所述客户端生成所述第一随机数组,并采用从所述认证凭证中提取到的所述服务器公钥对所述第一随机数组加密得到所述第一加密随机数组;
生成第二随机数组并采用所述服务器私钥对所述第二随机数组加密得到第二加密随机数组;
将所述第二加密随机数组发送给所述客户端,以供所述客户端采用所述服务器公钥对所述第二加密随机数组进行解密得到所述第二随机数组;
将所述第一随机数组和所述第二随机数组合并得到对称密钥,并与所述客户端采用所述对称密钥通过对称加密通道进行服务数据交互,其中,所述客户端采用与所述服务器相同的合并方式将所述第一随机数组和所述第二随机数组合并得到所述对称密钥。
基于上述的结构,提出客户端认证方法的各个实施例。
参照图2,图2为本发明客户端认证方法第一实施例的流程示意图。
本发明实施例提供了客户端认证方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。在本实施例中,本发明客户端认证方法应用于客户端。所述客户端认证方法包括:
步骤S10,向认证中心发送身份认证请求,以供所述认证中心对所述身份认证请求进行认证通过后从对接的服务器中确定目标服务器,至少根据所述目标服务器的服务器地址和预设失效时间生成凭证内容,采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名,并将所述凭证内容和所述凭证签名作为认证凭证返回给所述客户端;
在本实施例中,设置一个认证中心来对接多个服务器(或称服务端),客户端需要向服务器请求服务时,先向认证中心发送身份认证请求,认证中心对身份认证请求认证通过后,给客户端发送认证凭证,客户端将认证凭证发送给服务器,服务器对认证凭证进行验证通过后,即可与客户端进行服务数据的交互。其中,服务器和客户端可以是远程桌面服务器和客户端,在其他应用场景中,也可以是提供其他服务的服务器和应用其他服务的客户端,在本实施例中并不做限制,以下以远程桌面服务为例。在这个过程中,客户端是在认证中心进行身份认证,由认证中心生成一个认证凭证,客户端凭借认证凭证向服务器请求服务,客户端无需通过服务器密钥(用于身份认证)向服务器请求服务,因此也不会存在服务器密钥泄露的问题。
具体地,在一实施方式中,客户端向认证中心发送身份认证请求,身份认证请求中可携带用于身份认证的信息,例如,用户密码或用户密码的摘要,认证中心对信息进行认证确认是否为合法客户端用户,例如认证中心预先保存正确的用户密码或用户密码摘要,通过信息比对确认是否为合法客户端用户。其他实施方式中,认证中心对客户端的身份认证方式可采用常用的网页登录认证方式。客户端和认证中心的传输过程使用的是可信通道,如https。
在一实施方式中,认证中心在接收到身份认证请求后,对身份认证请求进行认证通过后,从其对接的各个服务器中确定目标服务器,根据具体应用场景不同,目标服务器可以是一个或多个,以下以一个目标服务器为例进行说明。认证中心可以是从各个服务器中选取一个服务器作为目标服务器,例如随机选取一个或从空闲的服务器中随机选取一个作为目标服务器;或者,也可以是客户端在身份认证请求中携带有目的服务器的相关信息,例如编号、链接地址等,认证中心将身份认证请求中服务器信息所对应的服务器作为目标服务器;或者,在其他实施方式中,也可以采用其他可行的方式确定目标服务器。
在一实施方式中,认证中心在确定目标服务器后,至少根据目标服务器的服务器地址和预设失效时间生成凭证内容。其中,服务器地址可以是服务器的IP地址,或者其他能够用于与服务器建立连接的地址。认证中心存储有其对接的各个服务器的服务器地址,或者可以通过其他可行途径获取到其对接的各个服务器的服务器地址。预设失效时间可以是认证中心生成凭证内容时的时间戳,对应地,验证认证凭证是否失效时,根据该时间戳即可确定认证凭证是多久之前生成的,通过验证该时间戳距离当前时刻的时长是否超过了预先设置的一个有效时长,即可确定认证凭证是否失效;或者,预设失效时间也可以是认证中心将生成凭证内容时的时间戳加上一个预先设置的有效时长得到的一个时间点,对应地,验证认证凭证是否失效时,将当前时刻与该时间点进行比较,若早于或等于该时间点,即可确定认证凭证未失效,若晚于该时间点,即可确定认证凭证已失效;或者,在其他实施方式中,预设失效时间也可以是其他可以用于验证认证凭证是否失效的时间。认证中心至少根据服务器地址和预设失效时间生成凭证内容,也即,在服务器地址和预设失效时间基础上,还可以根据其他信息生成凭证内容,例如,身份认证请求中携带的用户标识,认证凭证协议(用于规定认证凭证的生成规则和验证规则的协议)的版本等。认证中心根据各项信息生成凭证内容的方式可以是直接将各项信息作为凭证内容,也可以是将各项信息进行编码后作为凭证内容,具体在本实施例中不做限制。
在一实施方式中,认证中心在生成凭证内容后,可以采用认证中心的公共私钥对凭证内容进行数字签名得到凭证签名。在一实施方式中,只有一个认证中心时,该公共公钥即该认证中心的私钥,私钥只在该认证中心本地存储,不会外发,与该私钥对应的公钥则可以预先发送给其对接的各个服务器,由各个服务器保存,用于对认证凭证进行验证。在另一实施方式中,可能设置有多个认证中心,例如远程桌面服务部署于多个服务商的服务器中,那么每个服务商可以设置一个认证中心,用于对接各自的服务器;此时,公共私钥是各个认证中心共用的私钥,也即,各个认证中心的私钥相同,该私钥只在各个认证中心中分别存储,不会外发;对应地也有一个各个认证中心共用的公共公钥,该公共公钥同样可以预先发送给各自对接的服务器;公共私钥和公共公钥可以是由各个服务商预先协商确定后设置在认证中心中,也可以是由各个认证中心协商生成的,例如,由其中一个认证中心生成后发送给其他认证中心,具体在本实施例中对公共公钥和公共私钥的生成或设置方式并不做限制。认证中心在得到凭证签名后,可将凭证内容和凭证签名作为认证凭证返回给客户端。
在一实施方式中,若认证中心对身份认证请求认证不通过,则可以向客户端返回认证失败的结果。
步骤S20,从所述认证中心接收到所述认证凭证后,按照所述认证凭证中的所述服务器地址将所述认证凭证发送给所述目标服务器,以供所述目标服务器采用与所述公共私钥对应的公共公钥对所述认证凭证进行签名验证,以及根据所述预设失效时间验证所述认证凭证是否有效,并在确定签名验证正确和所述认证凭证有效时向所述客户端返回验证成功消息;
客户端接收认证中心返回的认证凭证,并在接收到认证凭证后,按照认证凭证中的服务器地址将认证凭证发送给目标服务器。具体地,客户端从认证凭证中提取出服务器地址,按照该服务器地址将认证凭证发送给对应的服务器,而该服务器地址所指向的就是目标服务器。目标服务器接收到认证凭证后,对认证凭证进行验证。
在一实施方式中,目标服务器可以对认证凭证进行签名验证和时效验证。具体地,目标服务器预先存储有认证中心的公共公钥,也即,与上述公共私钥对应的公共公钥,采用该公共公钥对认证凭证进行签名验证,验证方法可参照常用的签名验证方法,在此不进行详细赘述。目标服务器从认证凭证中提取预设失效时间,根据该预设失效时间验证认证凭证是否有效,验证方法可参照上述对预设失效时间解释时所列举的验证方法,在此不进行赘述。若目标服务器确定签名验证正确,并确定该认证凭证有效,则可向客户端返回验证成功消息,以通知客户端验证成功。
在一实施方式中,目标服务器可以先进行签名验证或先进行时效验证,其中一项不通过时,不再进行另一项验证,以节省计算资源。可选地,目标服务器在验证不通过时,可以向客户端返回验证失败的消息,以通知客户端验证失败。
步骤S30,当接收到所述验证成功消息后,与所述目标服务器进行服务数据交互。
在接收到验证成功消息后,客户端可以与目标服务器进行服务数据交互。也即,接收到验证成功消息表示目标服务器对客户端的身份验证已通过,客户端与服务器进行后续服务数据的交互,以实现相应的服务。服务数据即服务器向客户端提供服务时需要在客户端和服务器之间交互的相关数据,例如,在远程桌面服务场景,客户端向服务端发送对桌面帧的操作数据,服务端向客户端发送桌面帧图像数据。
在本实施例中,通过向认证中心发送身份认证请求,由认证中心对身份认证请求进行认证通过后从对接的服务器中确定目标服务器,至少根据目标服务器的服务器地址和预设失效时间生成凭证内容,采用预设的认证中心的公共私钥对凭证内容进行数字签名得到凭证签名,并将凭证内容和凭证签名作为认证凭证返回给客户端;客户端在接收到认证凭证后,根据认证凭证中的服务器地址将认证凭证发送给目标服务器,由目标服务器采用与该公共私钥对应的公共公钥对认证凭证进行签名验证,以及根据该预设失效时间验证认证凭证是否有效,在确定签名验证正确以及认证凭证有效时向客户端返回验证成功消息;客户端在接收到验证成功消息后与目标服务器进行服务数据交互。由于客户端是在认证中心进行身份认证,由认证中心生成一个认证凭证,客户端凭借认证凭证向服务器请求服务,客户端无需通过服务器密钥向服务器请求服务,从而不会存在服务器密钥泄露的问题。并且通过认证中心根据预设失效时间生成凭证内容,服务器根据该预设失效时间验证认证凭证的有效性,使得认证凭证具备时效性,进一步提高通过认证凭证请求服务器服务的安全性。又通过认证中心采用公共私钥对凭证内容进行数字签名,服务器采用该公共私钥对应的公共公钥对认证凭证进行签名验证,使得认证凭证具备防伪性,进一步提高通过认证凭证请求服务器服务的安全性。并且,认证凭证可以由客户端独立向服务器请求验证,减少了客户端与认证中心的网络交互和网络压力。
进一步地,基于上述第一实施例,提出本发明客户端认证方法第二实施例,在本实施例中,所述步骤S20中与所述目标服务器进行服务数据交互的步骤包括:
步骤S201,生成第一随机数组,并采用从所述认证凭证中提取到的所述服务器公钥对所述第一随机数组加密得到第一加密随机数组;
在本实施例中,认证中心还根据目标服务器的服务器公钥生成凭证内容,也即,认证中心至少根据预设失效时间、目标服务器的服务器地址和服务器公钥生成凭证内容。认证中心对接的各个服务器可以预先采用密钥生成算法生成各自的公钥和私钥,将各自的公钥发送给认证中心,私钥则本地保存不外发。客户端可在接收到认证凭证后或需要使用服务器公钥时,从认证凭证中提取出目标服务器的服务器公钥。
客户端可生成一个随机数组(以下称为第一随机数组以示区分),数组的长度可以预先设置,数组中的数值是随机生成的,具体采用的随机数生成算法在本实施例中不做限制。客户端采用从认证凭证中提取到的服务器公钥对第一随机数组进行加密,以下将加密得到的结果称为第一加密随机数组以示区分,加密算法可以采用常用的非对称加密算法,在本实施例中不做限制。
步骤S202,将所述第一加密随机数组发送给所述目标服务器,以供所述目标服务器采用与所述服务器公钥对应的服务器私钥对所述第一加密随机数组进行解密得到所述第一随机数组;
客户端将第一加密随机数组发送给目标服务器。目标服务器在接收到第一加密随机数组后,采用本地保存的服务器私钥对该第一加密随机数组进行解密得到该第一随机数组,目标服务器可采用与客户端的加密算法对应的解密算法来进行解密。
可选地,在一实施方式中,客户端可以对第一随机数组进行编码后再进行加密,对应地,目标服务器对第一加密随机数组进行解密后再进行解码得到第一随机数组。客户端和目标服务器所使用的编解码算法在此不做限制。
步骤S203,接收所述目标服务器发送的第二加密随机数组,并采用所述服务器公钥对所述第二加密随机数组进行解密得到第二随机数组,其中,所述目标服务器生成所述第二随机数组并采用所述服务器私钥对所述第二随机数组加密得到所述第二加密随机数组;
目标服务器也生成一个随机数组(以下称为第二随机数组以示区分),数组的长度同样可以预先设置,数组中的数值也是随机生成的,具体采用的随机数生成算法在本实施例中不做限制。目标服务器将第二随机数组采用本地的服务器私钥进行加密,以下将加密得到的结果称为第二加密随机数组以示区分。目标服务器将第二加密随机数组发送给客户端。
客户端接收目标服务器发送的第二加密随机数组,并采用服务器公钥对第二加密随机数组进行解密得到该第二随机数组。至此,客户端和目标服务器都获取到了第一随机数组和第二随机数组。并且在交互随机数组的过程中通过服务器公钥和私钥进行了加密,保证了随机数组不会泄露。
步骤S204,将所述第一随机数组和所述第二随机数组合并得到对称密钥,并与所述目标服务器采用所述对称密钥通过对称加密通道进行服务数据交互,其中,所述目标服务器采用与所述客户端相同的合并方式将所述第一随机数组和所述第二随机数组合并得到所述对称密钥。
客户端将第一随机数组和第二随机数组进行合并,目标服务器也采用与客户端相同的合并方式将第一随机数组和第二随机数组进行合并,由于合并的对象是相同的,合并的方式也是相同的,所以合并得到的结果也是相同,客户端和目标服务器可以将各自合并得到的结果作为对称密钥。客户端与目标服务器采用该对称密钥通过对称加密通道进行服务数据交互;也即,客户端采用该对称密钥对需要交互的服务数据进行加密后发送给目标服务器,目标服务器采用该对称密钥解密还原得到服务数据;目标服务器也采用该对称密钥对需要交互的服务数据进行加密后发送给客户端,客户端采用该对称密钥解密还原得到该服务数据。
将第一随机数组和第二随机数组进行合并得到对称密钥的方式有多种,例如可以直接将两个数组拼接得到的数组作为对称密钥,也可以是将两个数组拼接得到的数组进行截取或计算摘要后作为对称密钥,具体在本实施例中不做限制。
在本实施例中,目标服务器与客户端采用对称密钥通过对称加密通道进行服务数据的交互,保证了服务数据的安全性,避免服务数据中携带的用户隐私数据被泄露。客户端和目标服务器各自生成随机数组,通过将随机数组合并的方式生成对称密钥,使得客户端与目标服务器每次通信时所采用的对称密钥都不同,增加了对对称密钥破解的难度,进一步提高了客户端与服务器通信的数据安全性。通过认证中心根据目标服务器的服务器公钥生成凭证内容,客户端在认证凭证中提取服务器公钥,客户端和目标服务器采用服务器公钥和私钥通过加密方式交换随机数组,避免了用于生成对称密钥的随机数组泄露导致对称密钥泄露的情况发生,进一步地提高了客户端与服务器通信的数据安全性。
进一步地,在一实施方式中,所述步骤S204中将所述第一随机数组和所述第二随机数组合并得到对称密钥的步骤包括:
步骤S2041,将所述第一随机数组和所述第二随机数组进行拼接得到拼接数组;
客户端可以将第一随机数组和第二随机数组进行拼接得到拼接数组,拼接可以是将第一随机数组放在前面也可以是将第二随机数组放在前面,或者是采用插空的方式将第二随机数组中各个数值插入第一随机数组中。得到的拼接数组的长度是第一随机数组和第二随机数组的长度之和。目标服务器也采用与客户端同样的拼接方式将第一随机数组和第二随机数组进行拼接得到拼接数组,由于拼接方式相同,客户端得到的拼接数组与目标服务器得到的拼接数组是相同的。
步骤S2042,计算得到所述拼接数组的摘要,并对所述摘要进行编码得到对称密钥。
客户端在得到拼接数组后,计算拼接数组的摘要。具体可采用摘要算法计算拼接数组的摘要,具体采用哪一种摘要算法在本实施例中不做限制,例如可采用SHA256,具体。在计算得到摘要后,客户端对摘要进行编码,将编码结果作为对称密钥。其中,编码可以是采用常用的编码算法,例如base64,具体在本实施例中不做限制。目标服务器在得到拼接数组后,采用与客户端相同的摘要算法计算拼接数组的摘要,再采用与客户端相同的编码方式对摘要进行编码,将编码结果作为对称密钥。
进一步地,在一实施方式中,所述步骤S20中按照所述认证凭证中的所述服务器地址将所述认证凭证发送给所述目标服务器的步骤之前,还包括:
步骤S40,从所述认证中心接收到所述认证凭证后,提取所述认证凭证中的凭证内容;
步骤S50,对所述凭证内容采用预设编解码算法进行解码得到所述服务器地址、所述预设失效时间和所述服务器公钥,其中,所述认证中心至少将所述服务器地址、所述预设失效时间和所述服务器公钥采用所述预设编解码算法进行编码得到所述凭证内容。
认证中心可以是将不要包含到凭证内容中的各个信息项采用预设编解码算法进行编码,将编码结果作为凭证内容。其中,预设编解码算法可以是预设设置的编解码算法,例如base58,具体在本实施例中不做限制。在一实施方式中,认证中心可以至少将服务器地址、预设失效时间和服务器公钥采用预设编解码算法进行编码得到凭证内容。
客户端从认证中心接收到认证凭证后,可提取认证凭证中的凭证内容,对凭证内容采用与认证中心相同的编解码算法进行解码,得到各个信息项,例如服务器地址、预设失效时间和服务器公钥。
在本实施例中,通过认证中心将需要包含到凭证内容中的各个信息项进行编码,客户端对凭证内容进行解码还原得到各个信息项的方式,一方面由于信息项被编码,必须采用相应的算法解码才能获得信息内容,提高了凭证内容在传输过程中的安全性,避免信息泄露。
进一步地,基于上述第一和/或第二实施例,提出本发明客户端认证方法第三实施例,在本实施例中,本发明客户端认证方法应用于认证中心,所述客户端认证方法包括:
步骤A10,接收客户端发送的身份认证请求并对所述身份认证请求进行认证;
步骤A20,当认证通过后从对接的服务器中确定目标服务器,并至少根据所述目标服务器的服务器地址和预设失效时间生成凭证内容;
步骤A30,采用预先生成的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名;
步骤A40,将所述凭证内容和所述凭证签名作为认证凭证返回给所述客户端,以供所述客户端按照所述认证凭证中的所述服务器地址将所述认证凭证发送给所述目标服务器,所述目标服务器采用与所述公共私钥对应的公共公钥对所述认证凭证进行签名验证,以及根据所述预设失效时间验证所述认证凭证是否有效,并在确定签名验证正确和所述认证凭证有效时与所述客户端进行服务数据交互。
本实施例中步骤A10~A40的具体实施方式可参照上述第一和/或第二实施例中步骤S10~S30的具体实施方式,在此不做详细赘述。需要说明的是,可以是向客户端发送验证成功消息后再与客户端进行服务数据交互,在另一实施方式中,目标服务器也可以是在确定签名验证正确和认证凭证有效时,直接与客户端进行服务数据交互。
进一步地,在一实施方式中,当有多个认证中心时,各个认证中心可以协商生成公共公钥和公共私钥,具体地,所述方法还包括:
步骤B10,获取其他认证中心的公钥,并将本端的公钥传递给所述其他认证中心;
在本实施例中,从一个认证中心(以下将该认证中心称为“本端”)的角度进行说明,除该认证中心外的认证中心称为其他认证中心,其他认证中心可以有一个或多个。
本端获取其他认证中心的公钥,并把本端的公钥也传递给其他认证中心。也即,各个认证中心分别获取到除自己以外其他的认证中心的公钥。需要说明的是,各个认证中心可以预先各自在本地生成自己的公钥和私钥。
步骤B20,生成本端随机数组并采用其他认证中心的公钥将所述本端随机数组通过加密方式发送给所述其他认证中心;
本端生成一个随机数组,为示区分以下称为本端随机数组,数组的长度可以预先设置,数组中的数值是随机生成的,具体采用的随机数生成算法在本实施例中不做限制。本端采用其他认证中心的公钥将本端随机数组通过加密方式发送给其他认证中心。具体地,在一实施方式中,本端可以直接采用其他认证中心的公钥将本端随机数组进行加密,将加密后的本端随机数组发送给其他认证中心,由其他认证中心采用自己的私钥对加密后的本端随机数组进行解密得到本端随机数组,从而实现将本端随机数组以加密方式发送给其他认证中心。在其他实施方式中,本端也可以先采用本端的私钥对本端随机数组进行数字签名,再将签名和本端随机数组采用其他认证中心的公钥进行加密,将加密结果发送给其他认证中心,由其他认证中心采用自己的私钥对加密结果进行解密,再采用本端的公钥对签名进行验证,若验证成功,则确认解密到的本端随机数组是未被篡改的,从而实现将将本端随机数组以加密方式发送给其他认证中心。
需要说明的是,当有多个其他认证中心时,本端分别采用各个其他认证中心对应的公钥对本端随机数组进行加密,再发送给对应的其他认证中心。
步骤B30,获取所述其他认证中心的他端随机数组,其中,所述其他认证中心生成所述他端随机数组并采用本端的公钥将所述他端随机数组通过加密方式发送给本端;
其他认证中心也生成随机数组,为示区分以下称为他端随机数组,数组的长度同样可以预先设置,数组中的数值也是随机生成的,具体采用的随机数生成算法在本实施例中不做限制。其他认证中心采用本端的公钥将他端随机数组通过加密方式发送给本端,同样地,其他认证中心可以是直接采用本端的公钥进行加密后发送给本端,也可以是先采用自己的私钥进行签名再采用本端的公钥进行加密后发送给本端。
需要说明的是,当有多个其他认证中心时,多个其他认证中心之间也互相通过对方的公钥将自己的随机数组通过加密方式发送给对方,也即,各个认证中心都获取到除自己外的其他的认证中心的随机数组。当有多个其他认证中心时,本端获取到的他端随机数组也有多个,是分别从多个其他认证中心获取到的。
步骤B40,获取随机序列,其中,所述随机序列由本端或其他认证中心随机生成;
步骤B50,采用预设随机排列算法按照所述随机序列对拼接数组进行随机排列得到公共随机数组,其中,本端和所述其他认证中心采用相同的拼接方式分别将所述本端随机数组和所述他端随机数组拼接得到所述拼接数组;
本端可获取一个随机序列,该随机序列可由本端或其他认证中心随机生成。在一实施方式中,可以预先默认由其中一个认证中心来随机生成随机序列;如果本端是默认的生成随机序列的认证中心,则由本端生成随机序列,将随机序列直接发送给其他认证中心,或加密发送给其他认证中心;如果其他认证中心是默认的生成随机序列的认证中心,则由其他认证中心生成随机序列,将随机序列直接发送给本端,或加密发送给本端。需要说明的是,当其他认证中心有多个时,若其中一个是默认的生成随机序列的认证中心,则该认证中心需要将随机序列发送给本端,也有发送给除他自己和本端外的其他的认证中心。
本端在获取到本端随机数组和他端随机数组后,将本端随机数组和他端随机数组拼接得到拼接数组,其他认证中心在获取到本端随机数组和他端随机数组后,也采用与本端相同的拼接方式将本端随机数组和他端随机数组拼接得到拼接数组。由于拼接对象和拼接方式都相同,所以本端和其他认证中心拼接得到的拼接数组是相同的。
本端采用预设随机排列算法按照获取到的随机序列对拼接数组进行随机排列,将排列后的数组称为公共随机数组。其中,预设随机排列算法可以是预先设置的一种随机排列算法,具体在本实施例中不做限制,例如可采用Fisher Yates算法(一种随机排列生成算法,可以将一个有限集合生成一个随机排列。这个算法生成的随机排列时等概率的)。具体地,随机序列可以是一个随机生成的用于表示拼接数组中各个元素应当排列的位置的序列,根据该随机序列对拼接数组中的元素进行排列,使得排列后的数组中各元素的位置相对于排列前的位置具有随机性。进一步地,在一实施方式中,随机序列中包括与拼接数组中元素个数相同数量的多个随机数,也即,随机序列中的每个随机数对应数组中的一个元素,该随机数用于限定对应的元素在随机排列时应当排在数组中哪一个位置,每个随机数是从对应数组元素的各个可选排列位置中随机选取的,从而实现对拼接数组中的元素进行随机排列。更进一步地,在一实施方式中,随机序列中的第一个数对应拼接数组中的第一个元素,第二个数对应第二个元素,依次类推;拼接数组的元素个数是N,从1~N中随机选取一个数作为随机序列中的第一个数,表示第一个元素在应当排列的位置,再从1~N中除该第一个数以外的数中随机选取一个数作为第二个数,表示第二个元素应当排列的位置,依次类推,最后1~N中剩余一个数未被选取,将该数作为最后一个元素应当排列的位置。另一实施方式中,可先从1~N中随机选取一个数作为随机序列的第一个数,表示拼接数组中排在该第一个数对应位置的元素应当排在排列后的数组中的最后一个位置;将剩余的元素重新标序为1~N-1,从1~N-1中随机选取一个数作为随机序列的第二个数,表示剩余元素中排在该第二个数对应位置的元素应当排在排列后的数组中的倒数第二个位置;再将剩余的元素重新标序为1~N-2,从1~N-2中随机选取一个数作为随机序列的第三个数,表示剩余元素中排在该第三个数对应位置的元素应当排在排列后的数组中的倒数第三个位置;依次类推,最后剩余一个序号为1的元素,将1作为随机序列的最后一个数,表示最后剩余的该元素应当排在排列后的数组中的第一个位置。
步骤B60,采用预设密钥生成算法以所述公共随机数组为种子生成本端和所述其他认证中心共用的所述公共公钥和所述公共私钥,其中,所述其他认证中心采用所述预设随机排列算法按照所述随机序列对所述拼接数组进行随机排列得到所述公共随机数组,并采用所述预设密钥生成算法以所述公共随机数组为种子生成所述公共公钥和所述公共私钥。
本端在排列得到公共随机数组后,采用预设密钥生成算法以该公共随机数组为种子生成公钥和私钥。其他认证中心也采用与本端相同的随机排列算法按照与本端相同的随机序列对拼接数组进行随机排列得到排列后的数组,由于排列的方式和对象相同,所以排列得到的数组也与本端排列得到的数组相同,也即,其他认证中心也得到了与本端相同的公共随机数组;其他认证中心采用与本端相同的密钥生成算法以该公共随机数组为种子生成公钥和私钥。由于本端与其他认证中心采用的是相同的密钥生成算法和相同的种子,所以生成了相同的公钥和相同的私钥,那么该公钥和私钥就可作为供本端和其他认证中心公用的公共公钥和公共私钥。
在本实施例中,实现了多个认证中心协商生成公共公私钥,并且一次生成可以多地安全使用。在协商生成公共公私钥的过程中,各个认证中心并没有直接传输公共公私钥,而是通过传输用于生成公共公私钥的随机数组,且通过加密方式传输随机数组,避免了随机数组泄露导致公共公私钥被破解。在生成密钥的种子时,并不是直接传输种子,而是传输用于生成种子的随机序列,进一步地避免了因种子泄露导致公共公私钥被破解,提高了各个认证中心协商生成公共公私钥的安全性。
进一步地,在一实施方式中,所述步骤B10包括:
步骤B101,将本端的公钥上传至区块链,以供其他认证中心从所述区块链上获取本端的公钥;
步骤B102,从所述区块链上获取所述其他认证中心的公钥,其中,所述其他认证中心将他端的公钥上传至所述区块链;
本端获取其他认证中心的公钥的方式可以是由其他认证中心将他端的公钥上传至区块链,本端从区块链上获取其他认证中心的公钥。本端也可将本端的公钥上传至区块链,由其他认证中心从区块链上获取本端的公钥。通过上传区块链的方式避免公钥被篡改,也避免各认证中心的公钥被泄露。
进一步地,在一实施方式中,所述方法还包括:
步骤B70,将所述公共公钥上传所述区块链,并调用智能合约验证本端和所述其他认证中心上传的公共公钥是否相同;
步骤B80,若相同则确定上链成功,以供本端对接的各个服务器从所述区块链中同步上链成功的所述公共公钥。
本端在生成公共公钥和公共私钥后,可将公共公钥上传至区块链,并调用智能合约验证本端上传的公共公钥和其他认证中心上传的公共公钥是否相同。其中,其他认证中心也在生成公共公钥和公共私钥后,将公共公钥上传至区块链。
若确定本端和其他认证中心上传的公共公钥是相同的,则确定上链成功,也即,表示本端和其他认证中心协商生成的公共公钥是相同的。公共公钥上链成功后,本端所对接的各个服务器可从区块链中同步该公共公钥,同样地,其他认证中心所对接的各个服务器也可从区块链中同步该公共公钥。通过公共公钥上链的方式,可以保证在安全地将公共公钥传递给各个服务器,以使得各个服务器可以采用公共公钥对认证凭证进行签名验证。
进一步地,在一实施方式中,所述步骤B40包括:
步骤B401,将所述本端随机数组转换得到的第一数值与所述他端随机数组转换得到的第二数值进行大小比较;
各个认证中心可以通过将各个随机数组比较大小的方式来确定由谁生成随机序列,例如,由最大的随机数组对应的认证中心来生成随机序列,或者由最小的随机数组对应的认证中心来生成随机序列。通过这种方式,各个认证中心可以临时确定由谁来生成随机序列。
在一实施方式中,本端在获取到本端随机数组和他端随机数组后,可以将本端随机数组转换为数值形式,得到第一数值,将他端随机数组也转换为数值形式得到第二数值。具体地,将数组转换为数值的方式可以将数组中的元素按照字节拼接成一个大数,例如,一个数组包括元素246和150,两个元素拼接转换得到的数值是146150。本端将第一数值和第二数值进行大小比较。
其他认证中心也同样地在获取到本端随机数组和他端随机数组后,将两个数组转换为数值进行比较大小。
步骤B402,当所述第一数值大于所述第二数值时,生成随机序列并采用本端的私钥对所述随机序列进行数字签名得到签名结果,将所述随机序列和所述签名结果采用所述其他认证中心的公钥进行加密得到加密序列,将所述加密序列发送给所述其他认证中心,以供所述其他认证中心采用他端的私钥对所述加密序列进行解密得到所述随机序列和所述签名结果,并在采用本端的公钥对所述随机序列和所述签名结果进行验证通过后确认获得所述随机序列;
当第一数值大于第二数值时,确定由本端生成随机序列。也即,由最大的随机数组对应的认证中心生成随机序列。
本端生成随机序列后,可以采用本端的私钥对随机序列进行数字签名得到签名结果,将随机序列和签名结果采用其他认证中心的公钥进行加密,以下将加密得到的结果称为加密序列,将加密序列发送给其他认证中心;其他认证中心在接收到加密序列后,采用他端的私钥对加密序列进行解密得到随机序列和签名结果,并在采用本端的公钥对随机序列和签名结果进行验证通过后确定获得了该随机序列。也即只有验证通过时才表示获取到的随机序列没有被篡改,后续可以使用该随机序列进行随机排列。
步骤B403,当所述第一数值小于或等于所述第二数值时,接收所述其他认证中心发送的加密序列,采用本端的私钥对所述加密序列进行解密得到随机序列和签名结果,并在采用所述其他认证中心的公钥对所述随机序列和所述签名结果进行验证通过后确认获得所述随机序列,其中,所述其他认证中心生成所述随机序列并采用所述其他认证中心的私钥对所述随机序列进行数字签名得到所述签名结果,将所述随机序列和所述签名结果采用本端的公钥进行加密得到所述加密序列。
当第一数值小于或等于第二数值时,确定由其他认证中心生成随机序列。其他认证中心生成随机序列后,可以采用他端的私钥对随机序列进行数字签名得到签名结果,将随机序列和签名结果采用本端的公钥进行加密,以下将加密得到的结果称为加密序列,将加密序列发送给本端;本端在接收到加密序列后,采用本端的私钥对加密序列进行解密得到随机序列和签名结果,并在采用其他认证中心的公钥对随机序列和签名结果进行验证通过后确定获得了该随机序列。也即只有验证通过时才表示获取到的随机序列没有被篡改,后续可以使用该随机序列进行随机排列。
进一步地,在一实施方式中,当有超过2个认证中心,且各个认证中心的随机数组转换得到的数值都相等时,也可以采用各个认证中心的设备编号大小来确定由谁生成随机序列,例如,有设备编号最大的认证中心生成随机序列。
在本实施例中,通过比较各个认证中心的随机数组的大小的方式来临时确定由谁生成随机序列,提高了公共公私钥生成过程中的随机性,从而进一步地增加了公共公私钥被破解的难度。通过将随机序列采用签名和加密的方式传输给其他认证中心,降低了随机序列泄露的风险,进一步增加了公共公私钥被破解的难度。
进一步地,基于上述第一、第二和/或第三实施例,提出本发明客户端认证方法第四实施例,在本实施例中,本发明客户端认证方法应用于服务器,所述客户端认证方法包括:
步骤C10,接收客户端发送的认证凭证,其中,认证中心对所述客户端发送的身份认证请求认证通过后,至少根据所述服务器的地址和预设失效时间生成凭证内容,采用预先生成的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名,并将所述凭证内容和所述凭证签名作为所述认证凭证发送给所述客户端,所述客户端根据所述认证凭证中所述服务器的地址将所述认证凭证发送给所述服务器;
步骤C20,采用与所述公共私钥对应的公共公钥对所述认证凭证进行签名验证,以及根据所述预设失效时间验证所述认证凭证是否有效;
步骤C30,若确定签名验证正确以及确定所述认证凭证有效,则与所述客户端进行服务数据交互。
本实施例中步骤C10~C30的具体实施方式可参照上述第一和/或第二实施例中步骤S10~S30的具体实施方式,在此不做详细赘述。需要说明的是,可以是向客户端发送验证成功消息后再与客户端进行服务数据交互,在另一实施方式中,目标服务器也可以是在确定签名验证正确和认证凭证有效时,直接与客户端进行服务数据交互。
进一步地,在一实施方式中,所述认证中心还根据所述目标服务器的服务器公钥生成所述凭证内容,所述步骤C30中与所述客户端进行服务数据交互的步骤包括:
步骤C301,接收所述客户端发送的第一加密随机数组,并采用与所述服务器公钥对应的服务器私钥对所述第一加密随机数组进行解密得到第一随机数组,其中,所述客户端生成所述第一随机数组,并采用从所述认证凭证中提取到的所述服务器公钥对所述第一随机数组加密得到所述第一加密随机数组;
步骤C302,生成第二随机数组并采用所述服务器私钥对所述第二随机数组加密得到第二加密随机数组;
步骤C303,将所述第二加密随机数组发送给所述客户端,以供所述客户端采用所述服务器公钥对所述第二加密随机数组进行解密得到所述第二随机数组;
步骤C304,将所述第一随机数组和所述第二随机数组合并得到对称密钥,并与所述客户端采用所述对称密钥通过对称加密通道进行服务数据交互,其中,所述客户端采用与所述服务器相同的合并方式将所述第一随机数组和所述第二随机数组合并得到所述对称密钥。
本实施例中步骤C301~C304的具体实施方式可参照上述第二实施例中步骤S201~S204的具体实施方式,在此不做详细赘述。
在一实施方式中,认证中心、客户端和服务器可按照图5所示的架构部署,其中,图中只是示意性地画出了各个模块的数量,在实际应用中,各个模块的数量可以根据需要增加或减少。在远程桌面服务的应用场景中,客户端用于编解码协议内容,图像信息的绘制,获取前端用户操作,编码生成操作编码。认证中心集群负责客户端用户身份认证和认证凭证生成。认证中心集群由多个认证中心组成,每个认证中心对接多个服务器。不同的认证中心可能分属于不同的服务机构,分别部署在不同的云服务。不同机构为了将资源进行共享,需要协商生成公私钥,同时使用该公私钥生成并分发认证凭证。服务器负责编解码协议内容,提供远程控制服务,对认证凭证进行具体的认证操作等。
以下举例说明认证中心协商生成公共公钥和公共私钥的过程:
假设有三个机构的认证中心A、B和C。首先每个认证中心生成一个本地的公私钥,将自己的明文公钥上传到链上,保证各个认证中心能够看到其他认证中心的公钥。
1、假设由认证中心A发起公钥生成流程,A在本地生成一个长度为X的随机字节数组Ra。
2、认证中心A使用自己的私钥PrivateA对Ra进行数字签名,将Ra和数字签名使用对应认证中心的公钥加密后,分别发送到B和C。如发送到认证中心B的内容使用认证中心B的公钥PublicB进行加密。
3、其他节点收到信息后,按照步骤1和步骤2,生成和分发对应的随机字节数组Rb,Rc。
4、认证中心收到其他认证中心的随机字节数组后,将其转换为大数进行对比,由最大值对应的认证中心作为下一步的发起方(如果对比值相同则使用名称标识排序A>B>C)。
5、假如认证中心B为该步骤的发起方。认证中心B将Ra、Rb和Rc拼接得到长度为3X的随机字节数组RK,认证中心B生成随机序列SEQ,根据该序列使用Fisher-Yates算法对RK进行随机排列得到Seed。
6、将Seed作为种子,使用密钥生成算法生成公共私钥private1和公共公钥public1。
7、认证中心B使用步骤2的方法将随机序列SEQ发送到A和C,并且调用智能合约申请将公共公钥public1上链。
8、认证中心A和认证中心C收到认证中心B的请求,分别使用自己的私钥进行内容解密获得随机序列SEQ,在本机生成公共私钥和公共公钥。并分别调用智能合约进行公共公钥public1上链。
9、智能合约将A、B和C生成的公钥进行对比,如果所有的公钥相同,则实现公钥上链。
多个云服务机构的认证中心采用上述方式协商生成公共公钥和公共私钥,并将公共公钥上链,起到一次生成,多地安全使用的效果。
以下举例说明认证中心生成认证凭证的过程:
认证凭证主要分为两个部分,第一个部分为数据段(也即凭证内容),第二个部分为签名段(也即凭证签名),两段之间使用点号连接(.)。
1、构造数据内容,数据内容的格式可使用YAML(一个可读性高,用来表达数据序列化的格式)进行格式化。主要字段可以包括但不限于version、user、expire、pkey、address,其中,version为认证凭证的协议版本,user为用户标识,expire为失效时间,address为对应的服务器ip地址,pkey为对应服务器的公钥。
2、将数据内容进行编码(例如采用base58格式编码)生成数据段。
3、使用公共私钥对数据段计算数字签名,得到签名段;
4、将第3步骤生成的数据段和第4步骤生成的签名段组合成认证凭证。
此外,本发明实施例还提出一种客户端认证装置,所述装置部署于客户端,所述装置包括:
第一发送模块,用于向认证中心发送身份认证请求,以供所述认证中心对所述身份认证请求进行认证通过后从对接的服务器中确定目标服务器,至少根据所述目标服务器的服务器地址和预设失效时间生成凭证内容,采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名,并将所述凭证内容和所述凭证签名作为认证凭证返回给所述客户端;
第二发送模块,用于从所述认证中心接收到所述认证凭证后,按照所述认证凭证中的所述服务器地址将所述认证凭证发送给所述目标服务器,以供所述目标服务器采用与所述公共私钥对应的公共公钥对所述认证凭证进行签名验证,以及根据所述预设失效时间验证所述认证凭证是否有效,并在确定签名验证正确和所述认证凭证有效时向所述客户端返回验证成功消息;
第一交互模块,用于当接收到所述验证成功消息后,与所述目标服务器进行服务数据交互。
进一步地,所述认证中心还根据所述目标服务器的服务器公钥生成所述凭证内容,所述第一交互模块包括:
第一生成单元,用于生成第一随机数组,并采用从所述认证凭证中提取到的所述服务器公钥对所述第一随机数组加密得到第一加密随机数组;
第一发送单元,用于将所述第一加密随机数组发送给所述目标服务器,以供所述目标服务器采用与所述服务器公钥对应的服务器私钥对所述第一加密随机数组进行解密得到所述第一随机数组;
第一接收单元,用于接收所述目标服务器发送的第二加密随机数组,并采用所述服务器公钥对所述第二加密随机数组进行解密得到第二随机数组,其中,所述目标服务器生成所述第二随机数组并采用所述服务器私钥对所述第二随机数组加密得到所述第二加密随机数组;
第一合并单元,用于将所述第一随机数组和所述第二随机数组合并得到对称密钥,并与所述目标服务器采用所述对称密钥通过对称加密通道进行服务数据交互,其中,所述目标服务器采用与所述客户端相同的合并方式将所述第一随机数组和所述第二随机数组合并得到所述对称密钥。
进一步地,所述合并单元包括:
拼接单元,用于将所述第一随机数组和所述第二随机数组进行拼接得到拼接数组;
计算单元,用于计算得到所述拼接数组的摘要,并对所述摘要进行编码得到对称密钥。
进一步地,所述装置还包括:
提取模块,用于从所述认证中心接收到所述认证凭证后,提取所述认证凭证中的凭证内容;
解码模块,用于对所述凭证内容采用预设编解码算法进行解码得到所述服务器地址、所述预设失效时间和所述服务器公钥,其中,所述认证中心至少将所述服务器地址、所述预设失效时间和所述服务器公钥采用所述预设编解码算法进行编码得到所述凭证内容。
此外,本发明实施例还提供一种客户端认证装置,所述装置部署于认证中心,所述装置包括:
第一接收模块,用于接收客户端发送的身份认证请求并对所述身份认证请求进行认证;
生成模块,用于当认证通过后从对接的服务器中确定目标服务器,并至少根据所述目标服务器的服务器地址和预设失效时间生成凭证内容;
签名模块,用于采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名;
返回模块,用于将所述凭证内容和所述凭证签名作为认证凭证返回给所述客户端,以供所述客户端按照所述认证凭证中的所述服务器地址将所述认证凭证发送给所述目标服务器,所述目标服务器采用与所述公共私钥对应的公共公钥对所述认证凭证进行签名验证,以及根据所述预设失效时间验证所述认证凭证是否有效,并在确定签名验证正确和所述认证凭证有效时与所述客户端进行服务数据交互。
进一步地,所述装置还包括:
第一获取模块,用于获取其他认证中心的公钥,并将本端的公钥传递给所述其他认证中心;
第三发送模块,用于生成本端随机数组并采用其他认证中心的公钥将所述本端随机数组通过加密方式发送给所述其他认证中心;
第二获取模块,用于获取所述其他认证中心的他端随机数组,其中,所述其他认证中心生成所述他端随机数组并采用本端的公钥将所述他端随机数组通过加密方式发送给本端;
第三获取模块,用于获取随机序列,其中,所述随机序列由本端或其他认证中心随机生成;
排列模块,用于采用预设随机排列算法按照所述随机序列对拼接数组进行随机排列得到公共随机数组,其中,本端和所述其他认证中心采用相同的拼接方式分别将所述本端随机数组和所述他端随机数组拼接得到所述拼接数组;
所述生成模块还用于采用预设密钥生成算法以所述公共随机数组为种子生成本端和所述其他认证中心共用的所述公共公钥和所述公共私钥,其中,所述其他认证中心采用所述预设随机排列算法按照所述随机序列对所述拼接数组进行随机排列得到所述公共随机数组,并采用所述预设密钥生成算法以所述公共随机数组为种子生成所述公共公钥和所述公共私钥。
进一步地,所述第一获取模块包括:
上传单元,用于将本端的公钥上传至区块链,以供其他认证中心从所述区块链上获取本端的公钥;
获取单元,用于从所述区块链上获取所述其他认证中心的公钥,其中,所述其他认证中心将他端的公钥上传至所述区块链;
所述装置还包括:
上传模块,用于将所述公共公钥上传所述区块链,并调用智能合约验证本端和所述其他认证中心上传的公共公钥是否相同;
确定模块,用于若相同则确定上链成功,以供本端对接的各个服务器从所述区块链中同步上链成功的所述公共公钥。
进一步地,所述第三获取模块包括:
转换单元,用于将所述本端随机数组转换得到的第一数值与所述他端随机数组转换得到的第二数值进行大小比较;
第二生成单元,用于当所述第一数值大于所述第二数值时,生成随机序列并采用本端的私钥对所述随机序列进行数字签名得到签名结果,将所述随机序列和所述签名结果采用所述其他认证中心的公钥进行加密得到加密序列,将所述加密序列发送给所述其他认证中心,以供所述其他认证中心采用他端的私钥对所述加密序列进行解密得到所述随机序列和所述签名结果,并在采用本端的公钥对所述随机序列和所述签名结果进行验证通过后确认获得所述随机序列;
第二接收单元,用于当所述第一数值小于或等于所述第二数值时,接收所述其他认证中心发送的加密序列,采用本端的私钥对所述加密序列进行解密得到随机序列和签名结果,并在采用所述其他认证中心的公钥对所述随机序列和所述签名结果进行验证通过后确认获得所述随机序列,其中,所述其他认证中心生成所述随机序列并采用所述其他认证中心的私钥对所述随机序列进行数字签名得到所述签名结果,将所述随机序列和所述签名结果采用本端的公钥进行加密得到所述加密序列。
此外,本发明实施例还提供一种客户端认证装置,所述装置部署于服务器,所述装置包括:
第二接收模块,用于接收客户端发送的认证凭证,其中,认证中心对所述客户端发送的身份认证请求认证通过后,至少根据所述服务器的地址和预设失效时间生成凭证内容,采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名,并将所述凭证内容和所述凭证签名作为所述认证凭证发送给所述客户端,所述客户端根据所述认证凭证中所述服务器的地址将所述认证凭证发送给所述服务器;
验证模块,用于采用与所述公共私钥对应的公共公钥对所述认证凭证进行签名验证,以及根据所述预设失效时间验证所述认证凭证是否有效;
第二交互模块,用于若确定签名验证正确以及确定所述认证凭证有效,则与所述客户端进行服务数据交互。
进一步地,所述认证中心还根据所述目标服务器的服务器公钥生成所述凭证内容,所述第二交互模块包括:
第三接收单元,用于接收所述客户端发送的第一加密随机数组,并采用与所述服务器公钥对应的服务器私钥对所述第一加密随机数组进行解密得到第一随机数组,其中,所述客户端生成所述第一随机数组,并采用从所述认证凭证中提取到的所述服务器公钥对所述第一随机数组加密得到所述第一加密随机数组;
第三生成单元,用于生成第二随机数组并采用所述服务器私钥对所述第二随机数组加密得到第二加密随机数组;
第二发送单元,用于将所述第二加密随机数组发送给所述客户端,以供所述客户端采用所述服务器公钥对所述第二加密随机数组进行解密得到所述第二随机数组;
第二合并单元,用于将所述第一随机数组和所述第二随机数组合并得到对称密钥,并与所述客户端采用所述对称密钥通过对称加密通道进行服务数据交互,其中,所述客户端采用与所述服务器相同的合并方式将所述第一随机数组和所述第二随机数组合并得到所述对称密钥。
本发明客户端认证装置的具体实施方式的拓展内容与上述客户端认证方法各实施例基本相同,在此不做赘述。
此外,本发明实施例还提出一种计算机可读存储介质,所述存储介质上存储有客户端认证程序,所述客户端认证程序被处理器执行时实现如下所述的客户端认证方法的步骤。
本发明客户端认证设备和计算机可读存储介质各实施例,均可参照本发明客户端认证方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种客户端认证方法,其特征在于,所述方法应用于客户端,所述方法包括以下步骤:
向认证中心发送身份认证请求,以供所述认证中心对所述身份认证请求进行认证通过后从对接的服务器中确定目标服务器,至少根据所述目标服务器的服务器地址和预设失效时间生成凭证内容,采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名,并将所述凭证内容和所述凭证签名作为认证凭证返回给所述客户端;
从所述认证中心接收到所述认证凭证后,按照所述认证凭证中的所述服务器地址将所述认证凭证发送给所述目标服务器,以供所述目标服务器采用与所述公共私钥对应的公共公钥对所述认证凭证进行签名验证,以及根据所述预设失效时间验证所述认证凭证是否有效,并在确定签名验证正确和所述认证凭证有效时向所述客户端返回验证成功消息;
当接收到所述验证成功消息后,与所述目标服务器进行服务数据交互。
2.如权利要求1所述的客户端认证方法,其特征在于,所述认证中心还根据所述目标服务器的服务器公钥生成所述凭证内容,所述与所述目标服务器进行服务数据交互的步骤包括:
生成第一随机数组,并采用从所述认证凭证中提取到的所述服务器公钥对所述第一随机数组加密得到第一加密随机数组;
将所述第一加密随机数组发送给所述目标服务器,以供所述目标服务器采用与所述服务器公钥对应的服务器私钥对所述第一加密随机数组进行解密得到所述第一随机数组;
接收所述目标服务器发送的第二加密随机数组,并采用所述服务器公钥对所述第二加密随机数组进行解密得到第二随机数组,其中,所述目标服务器生成所述第二随机数组并采用所述服务器私钥对所述第二随机数组加密得到所述第二加密随机数组;
将所述第一随机数组和所述第二随机数组合并得到对称密钥,并与所述目标服务器采用所述对称密钥通过对称加密通道进行服务数据交互,其中,所述目标服务器采用与所述客户端相同的合并方式将所述第一随机数组和所述第二随机数组合并得到所述对称密钥。
3.如权利要求2所述的客户端认证方法,其特征在于,所述将所述第一随机数组和所述第二随机数组合并得到对称密钥的步骤包括:
将所述第一随机数组和所述第二随机数组进行拼接得到拼接数组;
计算得到所述拼接数组的摘要,并对所述摘要进行编码得到对称密钥。
4.如权利要求2或3任一项所述的客户端认证方法,其特征在于,所述按照所述认证凭证中的所述服务器地址将所述认证凭证发送给所述目标服务器的步骤之前,还包括:
从所述认证中心接收到所述认证凭证后,提取所述认证凭证中的凭证内容;
对所述凭证内容采用预设编解码算法进行解码得到所述服务器地址、所述预设失效时间和所述服务器公钥,其中,所述认证中心至少将所述服务器地址、所述预设失效时间和所述服务器公钥采用所述预设编解码算法进行编码得到所述凭证内容。
5.一种客户端认证方法,其特征在于,所述方法应用于认证中心,所述方法包括以下步骤:
接收客户端发送的身份认证请求并对所述身份认证请求进行认证;
当认证通过后从对接的服务器中确定目标服务器,并至少根据所述目标服务器的服务器地址和预设失效时间生成凭证内容;
采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名;
将所述凭证内容和所述凭证签名作为认证凭证返回给所述客户端,以供所述客户端按照所述认证凭证中的所述服务器地址将所述认证凭证发送给所述目标服务器,所述目标服务器采用与所述公共私钥对应的公共公钥对所述认证凭证进行签名验证,以及根据所述预设失效时间验证所述认证凭证是否有效,并在确定签名验证正确和所述认证凭证有效时与所述客户端进行服务数据交互。
6.如权利要求5所述的客户端认证方法,其特征在于,所述采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名的步骤之前,还包括:
获取其他认证中心的公钥,并将本端的公钥传递给所述其他认证中心;
生成本端随机数组并采用其他认证中心的公钥将所述本端随机数组通过加密方式发送给所述其他认证中心;
获取所述其他认证中心的他端随机数组,其中,所述其他认证中心生成所述他端随机数组并采用本端的公钥将所述他端随机数组通过加密方式发送给本端;
获取随机序列,其中,所述随机序列由本端或其他认证中心随机生成;
采用预设随机排列算法按照所述随机序列对拼接数组进行随机排列得到公共随机数组,其中,本端和所述其他认证中心采用相同的拼接方式分别将所述本端随机数组和所述他端随机数组拼接得到所述拼接数组;
采用预设密钥生成算法以所述公共随机数组为种子生成本端和所述其他认证中心共用的所述公共公钥和所述公共私钥,其中,所述其他认证中心采用所述预设随机排列算法按照所述随机序列对所述拼接数组进行随机排列得到所述公共随机数组,并采用所述预设密钥生成算法以所述公共随机数组为种子生成所述公共公钥和所述公共私钥。
7.如权利要求6所述的客户端认证方法,其特征在于,所述获取其他认证中心的公钥,并将本端的公钥传递给所述其他认证中心的步骤包括:
将本端的公钥上传至区块链,以供其他认证中心从所述区块链上获取本端的公钥;
从所述区块链上获取所述其他认证中心的公钥,其中,所述其他认证中心将他端的公钥上传至所述区块链;
所述采用预设密钥生成算法以所述公共随机数组为种子生成本端和所述其他认证中心共用的所述公共公钥和所述公共私钥的步骤之后,还包括:
将所述公共公钥上传所述区块链,并调用智能合约验证本端和所述其他认证中心上传的公共公钥是否相同;
若相同则确定上链成功,以供本端对接的各个服务器从所述区块链中同步上链成功的所述公共公钥。
8.如权利要求6或7任一项所述的客户端认证方法,其特征在于,所述获取随机序列,其中,所述随机序列由本端或其他认证中心随机生成的步骤包括:
将所述本端随机数组转换得到的第一数值与所述他端随机数组转换得到的第二数值进行大小比较;
当所述第一数值大于所述第二数值时,生成随机序列并采用本端的私钥对所述随机序列进行数字签名得到签名结果,将所述随机序列和所述签名结果采用所述其他认证中心的公钥进行加密得到加密序列,将所述加密序列发送给所述其他认证中心,以供所述其他认证中心采用他端的私钥对所述加密序列进行解密得到所述随机序列和所述签名结果,并在采用本端的公钥对所述随机序列和所述签名结果进行验证通过后确认获得所述随机序列;
当所述第一数值小于或等于所述第二数值时,接收所述其他认证中心发送的加密序列,采用本端的私钥对所述加密序列进行解密得到随机序列和签名结果,并在采用所述其他认证中心的公钥对所述随机序列和所述签名结果进行验证通过后确认获得所述随机序列,其中,所述其他认证中心生成所述随机序列并采用所述其他认证中心的私钥对所述随机序列进行数字签名得到所述签名结果,将所述随机序列和所述签名结果采用本端的公钥进行加密得到所述加密序列。
9.一种客户端认证方法,其特征在于,所述方法应用于服务端,所述方法包括以下步骤:
接收客户端发送的认证凭证,其中,认证中心对所述客户端发送的身份认证请求认证通过后,至少根据所述服务器的地址和预设失效时间生成凭证内容,采用预设的认证中心的公共私钥对所述凭证内容进行数字签名得到凭证签名,并将所述凭证内容和所述凭证签名作为所述认证凭证发送给所述客户端,所述客户端根据所述认证凭证中所述服务器的地址将所述认证凭证发送给所述服务器;
采用与所述公共私钥对应的公共公钥对所述认证凭证进行签名验证,以及根据所述预设失效时间验证所述认证凭证是否有效;
若确定签名验证正确以及确定所述认证凭证有效,则与所述客户端进行服务数据交互。
10.如权利要求9所述的客户端认证方法,其特征在于,所述认证中心还根据所述目标服务器的服务器公钥生成所述凭证内容,所述与所述客户端进行服务数据交互的步骤包括:
接收所述客户端发送的第一加密随机数组,并采用与所述服务器公钥对应的服务器私钥对所述第一加密随机数组进行解密得到第一随机数组,其中,所述客户端生成所述第一随机数组,并采用从所述认证凭证中提取到的所述服务器公钥对所述第一随机数组加密得到所述第一加密随机数组;
生成第二随机数组并采用所述服务器私钥对所述第二随机数组加密得到第二加密随机数组;
将所述第二加密随机数组发送给所述客户端,以供所述客户端采用所述服务器公钥对所述第二加密随机数组进行解密得到所述第二随机数组;
将所述第一随机数组和所述第二随机数组合并得到对称密钥,并与所述客户端采用所述对称密钥通过对称加密通道进行服务数据交互,其中,所述客户端采用与所述服务器相同的合并方式将所述第一随机数组和所述第二随机数组合并得到所述对称密钥。
CN202110681276.0A 2021-06-18 2021-06-18 客户端认证方法 Pending CN113285958A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110681276.0A CN113285958A (zh) 2021-06-18 2021-06-18 客户端认证方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110681276.0A CN113285958A (zh) 2021-06-18 2021-06-18 客户端认证方法

Publications (1)

Publication Number Publication Date
CN113285958A true CN113285958A (zh) 2021-08-20

Family

ID=77284997

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110681276.0A Pending CN113285958A (zh) 2021-06-18 2021-06-18 客户端认证方法

Country Status (1)

Country Link
CN (1) CN113285958A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113904873A (zh) * 2021-11-29 2022-01-07 统信软件技术有限公司 一种认证方法、装置、计算设备及存储介质
CN115996126A (zh) * 2022-12-02 2023-04-21 北京深盾科技股份有限公司 信息交互方法、应用设备、辅助平台及电子设备
US20230229743A1 (en) * 2022-01-19 2023-07-20 Sony Group Corporation Re-encryption-based digital rights management

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113904873A (zh) * 2021-11-29 2022-01-07 统信软件技术有限公司 一种认证方法、装置、计算设备及存储介质
US20230229743A1 (en) * 2022-01-19 2023-07-20 Sony Group Corporation Re-encryption-based digital rights management
CN115996126A (zh) * 2022-12-02 2023-04-21 北京深盾科技股份有限公司 信息交互方法、应用设备、辅助平台及电子设备
CN115996126B (zh) * 2022-12-02 2023-11-03 北京深盾科技股份有限公司 信息交互方法、应用设备、辅助平台及电子设备

Similar Documents

Publication Publication Date Title
CN110380852B (zh) 双向认证方法及通信系统
CN108390851B (zh) 一种用于工业设备的安全远程控制系统及方法
CN113285958A (zh) 客户端认证方法
CN100581097C (zh) 在两计算机间传输数据的系统和方法
CN111556025A (zh) 基于加密、解密操作的数据传输方法、系统和计算机设备
CN108566381A (zh) 一种安全升级方法、装置、服务器、设备和介质
CN111435913B (zh) 一种物联网终端的身份认证方法、装置和存储介质
KR101239297B1 (ko) 정보 보호 시스템 및 방법
US9473308B2 (en) Method and system for implementing digital signature in mobile operating system
CN110912684A (zh) 基于设备指纹的认证加密的系统和方法
CN101103630A (zh) 授权多媒体组播的方法和系统
CN105491073B (zh) 一种数据下载方法、装置及系统
CN108809907B (zh) 一种证书请求消息发送方法、接收方法和装置
CN108809633B (zh) 一种身份认证的方法、装置及系统
EP2979420B1 (en) Network system comprising a security management server and a home network, and method for including a device in the network system
CN109525565B (zh) 一种针对短信拦截攻击的防御方法及系统
CN104836784A (zh) 一种信息处理方法、客户端和服务器
US11811739B2 (en) Web encryption for web messages and application programming interfaces
KR20180054775A (ko) 모바일 장치와 장치의 최초 접촉 확립에 대해 보안을 제공하는 방법 및 시스템
CN112689014B (zh) 一种双全工通信方法、装置、计算机设备和存储介质
CN104579657A (zh) 身份认证方法及装置
CN113411187A (zh) 身份认证方法和系统、存储介质及处理器
CN113993127A (zh) 一键登录业务的实现方法和装置
CN114390524A (zh) 一键登录业务的实现方法和装置
CN112053477B (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