CN114065179A - 认证方法、装置、服务器、客户端及可读存储介质 - Google Patents
认证方法、装置、服务器、客户端及可读存储介质 Download PDFInfo
- Publication number
- CN114065179A CN114065179A CN202111335051.6A CN202111335051A CN114065179A CN 114065179 A CN114065179 A CN 114065179A CN 202111335051 A CN202111335051 A CN 202111335051A CN 114065179 A CN114065179 A CN 114065179A
- Authority
- CN
- China
- Prior art keywords
- authentication
- client
- data
- server
- message
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 114
- 238000012795 verification Methods 0.000 claims abstract description 42
- 150000003839 salts Chemical class 0.000 claims description 37
- 238000009938 salting Methods 0.000 claims description 24
- 238000013524 data verification Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 36
- 230000002457 bidirectional effect Effects 0.000 abstract description 12
- 238000004891 communication Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
- G06F21/445—Program or device authentication by mutual authentication, e.g. between devices or programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
- G06F21/46—Structures or tools for the administration of authentication by designing passwords or checking the strength of passwords
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种认证方法、装置、服务器、客户端及可读存储介质,属于通信技术领域。该认证方法包括:接收客户端发送的连接请求;在认证方式校验通过的情况下,向客户端发送第一认证报文;接收客户端发送的第二认证报文;根据第一客户端认证数据校验第一客户端认证报文数据;在第一客户端认证报文数据校验通过的情况下,确定客户端认证通过;向客户端发送连接回复报文。在服务端认证客户端通过后发送认证报文给客户端,以使客户端认证服务端,实现客户端与服务端的双向认证,客户端与服务端的连接验证更加完善,并且服务端与客户端采用相同的认证方式进行相互认证,可以使得认证过程更加安全可靠。
Description
技术领域
本申请属于通信技术领域,具体涉及一种认证方法、装置、服务器、客户端及可读存储介质。
背景技术
消息队列遥测传输(Message Queuing Telemetry Transport,MQTT)是一个通用的物联网协议,在MQTT5新增了认证报文。在基于用户密码这种简单认证模型的协议中,客户端和服务器端都知道一个用户名对应一个密码。在不对信道进行加密的前提下,无论是直接使用明文传输用户名和密码,还是直接对密码做哈希运算都不安全。
在一些MQTT认证方法中,都是提供了客户端的身份认证,实现方式是在服务器端生成认证密钥,然后通过指定哈希算法进行加密,而客户端向服务器发起连接请求时通过同样的算法对密钥进行加密作为认证口令,如果此时能够与服务器上的口令能够匹配上,则服务器接受客户端的连接请求,但是这种认证方法安全性较低。
发明内容
本申请实施例提供一种认证方法、装置、服务器、客户端及可读存储介质,能够解决现有技术中只对客户端的身份进行认证导致认证安全性较低的问题。
第一方面,提供了一种认证方法,应用于服务端,包括:
接收客户端发送的连接请求,所述连接请求携带认证方式和认证数据;
在所述认证方式校验通过的情况下,向所述客户端发送第一认证报文,所述第一认证报文用于所述客户端进行服务端认证;
接收所述客户端发送的第二认证报文,所述第二认证报文携带第一客户端认证报文数据;
根据第一客户端认证数据校验所述第一客户端认证报文数据,所述第一客户端认证数据为根据所述认证数据确定的;
在所述第一客户端认证报文数据校验通过的情况下,确定所述客户端认证通过;
向所述客户端发送连接回复报文,所述连接回复报文携带第一服务端认证报文数据,所述连接回复报文用于所述客户端进行服务端认证。
第二方面,提供了一种认证方法,应用于客户端,包括:
向服务端发送连接请求,所述连接请求携带认证方式和认证数据;
接收所述服务端在所述认证方式校验通过的情况下发送的第一认证报文,所述第一认证报文携带所述服务端生成的唯一编号和加盐值;
向所述服务端发送第二认证报文,所述第二认证报文携带第一客户端认证报文数据,所述第一客户端认证报文数据用于所述服务端进行客户端认证;
接收所述服务端在确定所述客户端认证通过的情况下发送的连接回复报文,所述连接回复报文携带第一服务端认证报文数据;
根据第二服务端认证数据校验所述第一服务端认证报文数据,所述第二服务端认证数据为根据所述服务端生成的唯一编号和所述加盐值确定的;
在所述第一服务端认证报文数据校验通过的情况下,确定所述服务端认证通过,以及与所述服务端建立连接关系。
第三方面,提供了一种认证装置,应用于服务端,包括:
接收模块,用于接收客户端发送的连接请求,所述连接请求携带认证方式和认证数据;
第一发送模块,用于在所述认证方式校验通过的情况下,向所述客户端发送第一认证报文,所述第一认证报文用于所述客户端进行服务端认证;
接收模块,用于接收所述客户端发送的第二认证报文,所述第二认证报文携带第一客户端认证报文数据;
第一校验模块,用于根据第一客户端认证数据校验所述第一客户端认证报文数据,所述第一客户端认证数据为根据所述认证数据确定的;
第一确定模块,用于在所述第一客户端认证报文数据校验通过的情况下,确定所述客户端认证通过;
第二发送模块,用于向所述客户端发送连接回复报文,所述连接回复报文携带第一服务端认证报文数据,所述连接回复报文用于所述客户端进行服务端认证。
第四方面,提供了一种认证装置,应用于客户端,包括:
第三发送模块,用于向服务端发送连接请求,所述连接请求携带认证方式和认证数据;
第四发送模块,用于接收所述服务端在所述认证方式校验通过的情况下发送的第一认证报文,所述第一认证报文携带所述服务端生成的唯一编号和加盐值;
第五发送模块,用于向所述服务端发送第二认证报文,所述第二认证报文携带第一客户端认证报文数据,所述第一客户端认证报文数据用于所述服务端进行客户端认证;
第六发送模块,用于接收所述服务端在确定所述客户端认证通过的情况下发送的连接回复报文,所述连接回复报文携带第一服务端认证报文数据;
第二校验模块,用于根据第二服务端认证数据校验所述第一服务端认证报文数据,所述第二服务端认证数据为根据所述服务端生成的唯一编号和所述加盐值确定的;
第二确定模块,用于在所述第一服务端认证报文数据校验通过的情况下,确定所述服务端认证通过,以及与所述服务端建立连接关系。
第五方面,提供了一种服务器,该服务器包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
第六方面,提供了一种客户端,该客户端包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第二方面所述的方法的步骤。
第七方面,提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤,或者实现如第二方面所述的方法的步骤。
第八方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法的步骤,或者实现如第二方面所述的方法的步骤。
在本申请实施例中,在服务端接收到客户端的连接请求时,对客户端发送的连接请求携带的认证方式进行校验,若是校验通过,则向客户端发送用于客户端进行服务端认证的第一认证报文,然后对客户端发送的第二认证报文中的第一客户端认证报文数据进行校验,校验通过,则确定客户端认证通过,将用于客户端进行服务端认证的第一服务端认证报文数据发送给客户端,让客户端认证服务端,通过服务端认证客户端,以及客户端认证服务端,实现了客户端与服务端的双向认证,使得客户端与服务端的连接验证更加完善,安全性更高,并且服务端与客户端采用相同的认证方式进行相互认证,可以使得认证过程更加安全可靠。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请的一个实施例提供的一种认证方法的流程图;
图2是本申请的一个实施例提供的另一种认证方法的流程图;
图3是本申请的一个实施例提供的认证方法的交互示意图;
图4是本申请的一个实施例提供的一种认证装置的示意图;
图5是本申请的一个实施例提供的另一种认证装置的示意图;
图6是本申请的一个实施例提供的服务器的结构示意图;
图7是本申请的一个实施例提供的客户端的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的认证方法、装置、服务器、客户端及可读存储介质进行详细地说明。
如图1所示,本申请实施例提供了一种认证方法,应用于服务端,该认证方法可以包括S101至S106所示的内容。
在S101中,接收客户端发送的连接请求。
其中,连接请求携带认证方式和认证数据。
值得说明的是,客户端在需要与服务端进行连接时,可以向服务端发送连接请求,该连接请求中携带有认证方式以及一些认证数据,在服务端可以采用同样的认证方式进行认证的情况下,才可以进行后续的认证流程,使得认证过程更加安全可靠。
其中,认证方式可以是带有SM3算法的加盐挑战响应认证机制(Salted ChallengeResponse Authentication Mechanism-SM3,SCRAM-SM3),也可以是其他的双向认证机制,本申请实施例中不一一列举,以实际应用为准。
认证数据可以包括设备唯一编号(deviceKey)和一个随机字符串(nonce)。
在S102中,在认证方式校验通过的情况下,向客户端发送第一认证报文。
其中,第一认证报文用于客户端进行服务端认证。
在本实施例中,服务端在接收到客户端发送的连接请求的情况下,验证是否支持连接请求中携带的认证方式,若是验证后支持该认证方式,则说明该认证方式校验通过,可以进行后续的认证过程,否则若校验不通过,无法进行后续的认证过程。
若是支持上述的认证方式,服务端校验认证数据中的随机字符串nonce是否使用过,若是未被使用过,则向客户端发送第一认证报文,以告知客户端本端可以采用上述认证方式,并且把本端的认证数据发送给客户端,其中,认证数据包括服务端生成的唯一编号(serviceKey)和加盐值,以便后续的认证过程中客户端认证服务端。
其中,加盐值是服务端在为deviceKey对应的密码(password)进行加盐处理时随机生成的字符串(salt),也即加盐值。
在S103中,接收客户端发送的第二认证报文。
其中,第二认证报文携带第一客户端认证报文数据。
在S104中,根据第一客户端认证数据校验第一客户端认证报文数据。
其中,第一客户端认证数据为根据认证数据确定的。
在本实施例中,服务端接收客户端发送的第二认证报文,并校验其中携带的第一客户端认证报文数据是否正确,若是正确,则说明服务端对客户端的认证通过,否则,认证不通过,不能进行连接。
在S105中,在第一客户端认证报文数据校验通过的情况下,确定客户端认证通过。
在S106中,向客户端发送连接回复报文。
其中,连接回复报文携带第一服务端认证报文数据,连接回复报文用于客户端进行服务端认证。
在服务端对客户端认证通过后,服务端生成第一服务端认证报文数据,发送至客户端,让客户端进行认证,以实现客户端与服务端的双向认证,使得连接更加安全。
在本申请实施例中,在服务端接收到客户端的连接请求时,对客户端发送的连接请求携带的认证方式进行校验,若是校验通过,则向客户端发送用于客户端进行服务端认证的第一认证报文,然后对客户端发送的第二认证报文中的第一客户端认证报文数据进行校验,校验通过,则确定客户端认证通过,将用于客户端进行服务端认证的第一服务端认证报文数据发送给客户端,让客户端认证服务端,通过服务端认证客户端,以及客户端认证服务端,实现了客户端与服务端的双向认证,使得客户端与服务端的连接验证更加完善,安全性更高,并且服务端与客户端采用相同的认证方式进行相互认证,可以使得认证过程更加安全可靠。
在本申请的一个可能的实施方式中,根据第一客户端认证数据校验第一客户端认证报文数据之前,该认证方法还可以包括下述步骤。
根据认证数据查询客户端的设备密码;对设备密码进行加盐处理,得到第一加盐密码;利用SM3算法对第一加盐密码进行加密处理,得到第一加密加盐密码;利用带有SM3的哈希消息认证码算法,对第一加密加盐密码和服务端生成的唯一编号进行处理得到第一服务端认证数据,以及对第一加密加盐密码和设备唯一编号进行处理得到第一客户端认证数据,认证数据包括设备唯一编号。
具体地,先通过认证数据中的设备唯一编号deviceKey查询出设备对应的密码password,然后对password进行加盐处理,即在原有的password的末端填充生成的随机字符串salt,得到第一加盐密码(password+salt),再对password+salt使用SM3算法进行加密处理,得到第一加密加盐密码,一个32字节的字符串password[h],即password[h]=SM3(password+salt)。
进一步地,确定出第一服务端认证数据(key[s])和第一客户端认证数据(key[c])。
具体地,利用password[h]分别与设备唯一编号(deviceKey)和服务端生成的唯一编号(serviceKey)做使用SM3作为哈希算法的哈希消息认证码(Hash-based MessageAuthentication Code,HMAC)摘要算法(HMAC-SM3),得到key[s]和key[c],即key[s]=HMAC-SM3(password[h],serviceKey),key[c]=HMAC-SM3(password[h],deviceKey)。
本申请实施例中采用SM3算法作为哈希算法,使得认证过程更加安全可靠。
在本申请的一个可能的实施方式中,根据第一客户端认证数据校验第一客户端认证报文数据,可以包括以下步骤。
步骤一、利用SM3算法对第一客户端认证数据进行加密处理,得到第一加密客户端认证数据。
也就是说,利用SM3算法对上述得到的key[c]进行加密处理,得到第一加密客户端认证数据H(key[c])。
其中,H(key[c])为一个32字节字符串。
步骤二、利用带有SM3的哈希消息认证码算法,对第一加密客户端认证数据、服务端生成的唯一编号和设备唯一编号进行数据处理,得到第一客户端证明数据,认证数据包括设备唯一编号。
具体地,对H(key[c])与deviceKey和serviceKey做HMAC-SM3计算,可以得到第一客户端证明数据proof,即proof=HMAC-SM3(H(key[c],auth),其中,auth=deviceKey,serviceKey。
步骤三、将第一客户端证明数据与第一客户端认证报文数据进行异或处理,得到第二客户端认证数据。
也就是说,将proof与第一客户端认证报文数据proof[c]进行异或计算,得到第二客户端认证数据key[c]’。
步骤四、利用SM3算法对第二客户端认证数据进行加密处理,得到第二加密客户端认证数据。
也就是说,利用SM3算法对key[c]’进行加密处理,得到第二加密客户端认证数据H(key[c])’。
步骤五、在第二加密客户端认证数据与第一加密客户端认证数据一致的情况下,确定第一客户端认证报文数据校验通过。
将上述得到的H(key[c])’与服务端的第一加密客户端认证数据H(key[c])进行比较,若是一致,确定第一客户端认证报文数据校验通过,否则校验不通过。
校验通过,则说明服务端对客户端的认证通过,否则认证不通过,服务端不与客户端连接。
在本实施例中,通过约定的认证方式对客户端发送的数据进行处理,然后判断其是否验证通过,即使用相同的认证方式进行认证的过程,可以使得整个认证过程更加安全。
在本申请的一个可能的实施方式中,向客户端发送连接回复报文之前,该认证方法还可以包括以下步骤。
利用SM3算法对第一服务端认证数据进行加密处理,得到第一加密服务端认证数据;利用带有SM3的哈希消息认证码算法,对第一加密服务端认证数据、服务端生成的唯一编号和设备唯一编号进行数据处理,得到第一服务端证明数据;将第一服务端证明数据与第一服务端认证数据进行异或处理,得到第一服务端认证报文数据。
具体地,先利用SM3算法对key[s]进行加密处理,得到H(key[s]),然后对H(key[s])与deviceKey和serviceKey做HMAC-SM3计算,可以得到第一服务端证明数据proof,即proof=HMAC-SM3(H(key[s]),auth),最后将proof与key[s]进行异或处理,得到第一服务端认证报文数据proof[s],即proof[s]=key[s]XOR HMAC-SM3(H(key[s]),auth)。
本实施例采用与上述过程相同的计算过程,可以使得认证过程更加安全,提升认证的安全性。
值得说明的是,为了使得认证更加便捷、迅速,可以简化第一服务端认证报文数据的生成过程,即直接对key[s]与deviceKey和serviceKey做HMAC-SM3计算,得到proof[s],即proof[s]=HMAC-SM3(key[s],auth)。
在本实施例中,在服务端认证客户端通过的情况下,服务端需要同样生成认证报文数据,向客户端表明自己的身份,以便客户端对服务端进行认证,以实现客户端与服务端的双向认证,使得连接验证过程更加完善。
需要说明的是,本申请实施例提供的认证方法,执行主体可以为认证装置,或者认证装置中的执行认证方法的控制模块。本申请实施例中以认证装置执行认证方法为例,说明本申请实施例提供的认证装置。
如图2所示,本申请实施例提供了一种认证方法,应用于客户端,该认证方法可以包括S201至S206所示的内容。
在S201中,向服务端发送连接请求。
其中,连接请求携带认证方式和认证数据。
值得说明的是,客户端在需要与服务端进行连接时,可以向服务端发送连接请求,该连接请求中携带有认证方式以及一些认证数据,在服务端可以采用同样的认证方式进行认证的情况下,才可以进行后续的认证流程,使得认证过程更加安全可靠。
其中,认证方式可以是SCRAM-SM3,也可以是其他的双向认证机制,本申请实施例中不一一列举,以实际应用为准。
认证数据可以包括设备唯一编号deviceKey和一个随机字符串nonce。
在S202中,接收服务端在认证方式校验通过的情况下发送的第一认证报文。
其中,第一认证报文携带服务端生成的唯一编号和加盐值。
在S203中,向服务端发送第二认证报文。
其中,第二认证报文携带第一客户端认证报文数据,第一客户端认证报文数据用于服务端进行客户端认证。
服务端发送的第二认证报文是指,通知客户端服务端支持上述认证方式,可以继续后续认证过程。
加盐值是服务端在为deviceKey对应的password进行加盐处理时随机生成的字符串salt。
在S204中,接收服务端在确定客户端认证通过的情况下发送的连接回复报文。
其中,连接回复报文携带第一服务端认证报文数据。
在S205中,根据第二服务端认证数据校验第一服务端认证报文数据。
其中,第二服务端认证数据为根据服务端生成的唯一编号和加盐值确定的。
也就是,在服务器认证客户端通过后,会想客户端发送连接回复报文,以实现与客户端的连接,此时,客户端需要根据服务端发送的第一服务端认证报文数据来认证服务端的身份,以便在服务端认证通过后,建立连接关系。
在S206中,在第一服务端认证报文数据校验通过的情况下,确定服务端认证通过,以及与服务端建立连接关系。
在本申请实施例中,在服务端认证客户端通过后可以发送认证报文给客户端,客户端可以根据该认证报文认证服务端,实现了客户端与服务端的双向认证,使得客户端与服务端的连接验证更加完善,安全性更高,并且服务端与客户端采用相同的认证方式进行相互认证,可以使得认证过程更加安全可靠。
在本申请的一个可能的实施方式中,在接收服务端在认证方式校验通过的情况下发送的第一认证报文之后,该认证方法还可以包括以下步骤。
根据加盐值对设备密码进行处理,得到第二加盐密码,设备密码为客户端的设备密码;利用SM3算法对第二加盐密码进行加密处理,得到第二加密加盐密码;利用带有SM3的哈希消息认证码算法,对第二加密加盐密码和服务端生成的唯一编号进行处理得到第二服务端认证数据,以及对第二加密加盐密码和设备唯一编号进行处理得到第三客户端认证数据,认证数据包括设备唯一编号。
具体地,客户端根据加盐值salt对设备密码password进行加盐处理,即将从服务端返回的salt填充至password末端得到第二加盐密码(password+salt),再使用和服务端同样的算法计算出password[h],即对password+salt使用SM3算法进行加密处理,得到第二加密加盐密码password[h],再使用和服务端同样的算法计算出第二服务端认证数据和第三客户端认证数据。
利用password[h]分别与deviceKey和serviceKey做HMAC-SM3计算,得到第二服务端认证数据key[s]和第三客户端认证数据key[c]。
本实施例中,采用与服务端同样的算法,可以使得认证的过程更加安全。
在本申请的一个可能的实施方式中,在向服务端发送第二认证报文之前,该认证方法还可以包括以下步骤。
利用SM3算法对第三客户端认证数据进行加密处理,得到第三加密客户端认证数据;利用带有SM3的哈希消息认证码算法,对第三加密客户端认证数据、服务端生成的唯一编号和设备唯一编号进行数据处理,得到第二客户端证明数据;将第二客户端证明数据与第三客户端认证数据进行异或处理,得到第一客户端认证报文数据。
具体地,利用SM3算法对key[c]进行加密处理,得到第三加密客户端认证数据H(key[c]),然后对H(key[c])与deviceKey和serviceKey做HMAC-SM3计算,可以得到第二客户端证明数据proof,最后将proof与key[c]进行异或处理,得到第一客户端认证报文数据。
在本实施例中,在服务端表明可以采用同样的认证方式进行认证的情况下,客户端需要生成报文数据,以向服务端表明自己的身份,以便服务端对客户端进行认证,采用SM3算法进行数据的处理,使得计算过程更加安全。
在本申请的一个可能的实施方式中,根据第二服务端认证数据校验第一服务端认证报文数据,可以包括以下步骤。
步骤一、利用SM3算法对第二服务端认证数据进行加密处理,得到第二加密服务端认证数据。
也就是说,利用SM3算法对上述得到的key[s]进行加密处理,得到第二加密服务端认证数据H(key[c])。其中,H(key[c])为一个32字节字符串。
步骤二、利用带有SM3的哈希消息认证码算法,对第二加密服务端认证数据、服务端生成的唯一编号和设备唯一编号进行数据处理,得到第二服务端证明数据。
具体地,对H(key[c])与deviceKey和serviceKey做HMAC-SM3计算,可以得到第二服务端证明数据proof。
步骤三、将第二服务端证明数据与第二服务端认证数据进行异或处理,得到第二服务端认证报文数据。
也就是说,将proof与key[s]进行异或处理,得到proof[s]’。
步骤四、在第二服务端认证报文数据与第一服务端认证报文数据一致的情况下,确定第一服务端认证报文数据校验通过。
将上述得到的proof[s]’与服务端发送的第一服务端认证报文数据proof[s]进行比较,若是一致,第一服务端认证报文数据校验通过,否则校验不通过。
校验通过,则说明客户端对服务端的认证通过,客户端与服务端建立连接,否则认证不通过,客户端不与服务端连接。
在本实施例中,通过约定的认证方式对服务端发送的数据进行处理,得到一个服务端认证报文数据,然后将该数据与服务端发送的数据进行比较,若是相同说明客户端对服务端的认证通过,实现客户端与服务端的双向认证,同时采用相同的认证方式进行认证的过程,可以使得整个认证过程更加安全。
需要说明的是,本申请实施例提供的认证方法,执行主体可以为认证装置,或者认证装置中的执行认证方法的控制模块。本申请实施例中以认证装置执行认证方法为例,说明本申请实施例提供的认证装置。
如图3所示,为本申请认证方法的交互示意图。客户端在需要与服务端连接时,向服务端发起连接请求,也就是发送CONNECT报文,并将认证方式和认证数据发送至服务端。服务端接收到连接请求后,校验认证方式,若是校验通过,则根据认证数据得到服务端生成的唯一编号和加盐值,并将服务端生成的唯一编号和加盐值以第一认证报文的形式发送至客户端,也就是向客户端发送AUTH报文。客户端接收到服务端的第一认证报文后,根据服务端发送的数据得到第一客户端认证报文数据,并以第二认证报文的形式发送至服务端,也就是向服务端发送AUTH报文。服务端接收到客户端发送的第二认证报文后,校验第一客户端认证报文数据是否正确,若校验正确,则确定客户端认证通过,然后生成第一服务认证报文数据,并以连接回复报文的形式发送至客户端,也就是向客户端发送CONNECT ACK报文。客户端接收到服务端发送的连接回复报文后,校验第一服务认证报文数据,若是校验通过,则确定服务端认证通过,可以建立与服务端的连接。
本申请实施例,在服务端认证客户端通过后可以发送认证报文给客户端,客户端根据该认证报文认证服务端,实现了客户端与服务端的双向认证,使得客户端与服务端的连接验证更加完善,并且服务端与客户端采用相同的认证方式进行相互认证,可以使得认证过程更加安全可靠。
如图4所示,本申请实施例还提供了一种认证装置,应用于服务端,该认证装置可以包括:接收模块401、第一发送模块402、接收模块403、第一校验模块404、第一确定模块405和第二发送模块406。
具体地,接收模块401,用于接收客户端发送的连接请求,连接请求携带认证方式和认证数据;第一发送模块402,用于在认证方式校验通过的情况下,向客户端发送第一认证报文,第一认证报文用于客户端进行服务端认证;接收模块403,用于接收客户端发送的第二认证报文,第二认证报文携带第一客户端认证报文数据;第一校验模块404,用于根据第一客户端认证数据校验第一客户端认证报文数据,第一客户端认证数据为根据认证数据确定的;第一确定模块405,用于在第一客户端认证报文数据校验通过的情况下,确定客户端认证通过;第二发送模块406,用于向客户端发送连接回复报文,连接回复报文携带第一服务端认证报文数据,连接回复报文用于客户端进行服务端认证。
在本申请实施例中,在服务端接收到客户端的连接请求时,对客户端发送的连接请求携带的认证方式进行校验,若是校验通过,则向客户端发送用于客户端进行服务端认证的第一认证报文,然后对客户端发送的第二认证报文中的第一客户端认证报文数据进行校验,校验通过,则确定客户端认证通过,将用于客户端进行服务端认证的第一服务端认证报文数据发送给客户端,让客户端认证服务端,通过服务端认证客户端,以及客户端认证服务端,实现了客户端与服务端的双向认证,使得客户端与服务端的连接验证更加完善,安全性更高,并且服务端与客户端采用相同的认证方式进行相互认证,可以使得认证过程更加安全可靠。
本申请实施例中的认证装置可以是装置,也可以是服务器中的部件、集成电路、或芯片。
本申请实施例提供的认证装置能够实现图1的方法实施例实现的各个过程,为避免重复,这里不再赘述。
如图5所示,本申请实施例还提供了一种认证装置,应用于客户端,该认证装置可以包括:第三发送模块501、第四发送模块502、第五发送模块503、第六发送模块504、第二校验模块505和第二确定模块506。
具体地,第三发送模块501,用于向服务端发送连接请求,连接请求中携带有认证方式和认证数据;第四发送模块502,用于接收服务端在认证方式校验通过的情况下发送的第一认证报文,第一认证报文携带服务端生成的唯一编号和加盐值;第五发送模块503,用于向服务端发送第二认证报文,第二认证报文携带第一客户端认证报文数据,第一客户端认证报文数据用于服务端进行客户端认证;第六发送模块504,用于接收服务端在确定客户端认证通过的情况下发送的连接回复报文,连接回复报文携带第一服务端认证报文数据;第二校验模块505,用于根据第二服务端认证数据校验第一服务端认证报文数据,第二服务端认证数据为根据服务端生成的唯一编号和加盐值确定的;第二确定模块506,用于在第一服务端认证报文数据校验通过的情况下,确定服务端认证通过,以及与服务端建立连接关系。
在本申请实施例中,在服务端认证客户端通过后可以发送认证报文给客户端,客户端可以根据该认证报文认证服务端,实现了客户端与服务端的双向认证,使得客户端与服务端的连接验证更加完善,安全性更高,并且服务端与客户端采用相同的认证方式进行相互认证,可以使得认证过程更加安全可靠。
本申请实施例中的认证装置可以是装置,也可以是客户端中的部件、集成电路、或芯片。
本申请实施例提供的认证装置能够实现图2的方法实施例实现的各个过程,为避免重复,这里不再赘述。
可选地,如图6所示,本申请实施例还提供一种服务器600,包括处理器601,存储器602,存储在存储器602上并可在所述处理器601上运行的程序或指令,该程序或指令被处理器601执行时实现上述认证方法的实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
可选地,如图7所示,本申请实施例还提供一种客户端700,包括处理器701,存储器702,存储在存储器702上并可在所述处理器701上运行的程序或指令,该程序或指令被处理器701执行时实现上述认证方法的实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本申请实施例还提供了一种可读存储介质,可读存储介质上存储程序或指令,程序或指令被处理器执行时实现如上述任一实施例提供的认证方法的实施例的各个过程。且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述实施例提供的认证方法的实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (13)
1.一种认证方法,其特征在于,应用于服务端,所述认证方法包括:
接收客户端发送的连接请求,所述连接请求携带认证方式和认证数据;
在所述认证方式校验通过的情况下,向所述客户端发送第一认证报文,所述第一认证报文用于所述客户端进行服务端认证;
接收所述客户端发送的第二认证报文,所述第二认证报文携带第一客户端认证报文数据;
根据第一客户端认证数据校验所述第一客户端认证报文数据,所述第一客户端认证数据为根据所述认证数据确定的;
在所述第一客户端认证报文数据校验通过的情况下,确定所述客户端认证通过;
向所述客户端发送连接回复报文,所述连接回复报文携带第一服务端认证报文数据,所述连接回复报文用于所述客户端进行服务端认证。
2.根据权利要求1所述的认证方法,其特征在于,所述根据第一客户端认证数据校验所述第一客户端认证报文数据之前,所述方法还包括:
根据所述认证数据查询所述客户端的设备密码;
对所述设备密码进行加盐处理,得到第一加盐密码;
利用SM3算法对所述第一加盐密码进行加密处理,得到第一加密加盐密码;
利用带有SM3的哈希消息认证码算法,对所述第一加密加盐密码和所述服务端生成的唯一编号进行处理得到第一服务端认证数据,以及对所述第一加密加盐密码和设备唯一编号进行处理得到第一客户端认证数据,所述认证数据包括所述设备唯一编号。
3.根据权利要求1所述的认证方法,其特征在于,所述根据第一客户端认证数据校验所述第一客户端认证报文数据,包括:
利用SM3算法对第一客户端认证数据进行加密处理,得到第一加密客户端认证数据;
利用带有SM3的哈希消息认证码算法,对所述第一加密客户端认证数据、所述服务端生成的唯一编号和设备唯一编号进行数据处理,得到第一客户端证明数据,所述认证数据包括所述设备唯一编号;
将所述第一客户端证明数据与所述第一客户端认证报文数据进行异或处理,得到第二客户端认证数据;
利用SM3算法对所述第二客户端认证数据进行加密处理,得到第二加密客户端认证数据;
在所述第二加密客户端认证数据与所述第一加密客户端认证数据一致的情况下,确定所述第一客户端认证报文数据校验通过。
4.根据权利要求2所述的认证方法,其特征在于,所述向所述客户端发送连接回复报文之前,所述方法还包括:
利用SM3算法对所述第一服务端认证数据进行加密处理,得到第一加密服务端认证数据;
利用带有SM3的哈希消息认证码算法,对所述第一加密服务端认证数据、所述服务端生成的唯一编号和所述设备唯一编号进行数据处理,得到第一服务端证明数据;
将所述第一服务端证明数据与所述第一服务端认证数据进行异或处理,得到第一服务端认证报文数据。
5.一种认证方法,其特征在于,应用于客户端,所述认证方法包括:
向服务端发送连接请求,所述连接请求携带认证方式和认证数据;
接收所述服务端在所述认证方式校验通过的情况下发送的第一认证报文,所述第一认证报文携带所述服务端生成的唯一编号和加盐值;
向所述服务端发送第二认证报文,所述第二认证报文携带第一客户端认证报文数据,所述第一客户端认证报文数据用于所述服务端进行客户端认证;
接收所述服务端在确定所述客户端认证通过的情况下发送的连接回复报文,所述连接回复报文携带第一服务端认证报文数据;
根据第二服务端认证数据校验所述第一服务端认证报文数据,所述第二服务端认证数据为根据所述服务端生成的唯一编号和所述加盐值确定的;
在所述第一服务端认证报文数据校验通过的情况下,确定所述服务端认证通过,以及与所述服务端建立连接关系。
6.根据权利要求5所述的认证方法,其特征在于,在所述接收所述服务端在所述认证方式校验通过的情况下发送的第一认证报文之后,所述方法还包括:
根据所述加盐值对设备密码进行处理,得到第二加盐密码,所述设备密码为所述客户端的设备密码;
利用SM3算法对所述第二加盐密码进行加密处理,得到第二加密加盐密码;
利用带有SM3的哈希消息认证码算法,对所述第二加密加盐密码和所述服务端生成的唯一编号进行处理得到第二服务端认证数据,以及对所述第二加密加盐密码和设备唯一编号进行处理得到第三客户端认证数据,所述认证数据包括所述设备唯一编号。
7.根据权利要求6所述的认证方法,其特征在于,在所述向所述服务端发送第二认证报文之前,所述方法还包括:
利用SM3算法对所述第三客户端认证数据进行加密处理,得到第三加密客户端认证数据;
利用带有SM3的哈希消息认证码算法,对所述第三加密客户端认证数据、所述服务端生成的唯一编号和所述设备唯一编号进行数据处理,得到第二客户端证明数据;
将所述第二客户端证明数据与所述第三客户端认证数据进行异或处理,得到第一客户端认证报文数据。
8.根据权利要求6所述的认证方法,其特征在于,所述根据第二服务端认证数据校验所述第一服务端认证报文数据,包括:
利用SM3算法对第二服务端认证数据进行加密处理,得到第二加密服务端认证数据;
利用带有SM3的哈希消息认证码算法,对所述第二加密服务端认证数据、所述服务端生成的唯一编号和所述设备唯一编号进行数据处理,得到第二服务端证明数据;
将所述第二服务端证明数据与所述第二服务端认证数据进行异或处理,得到第二服务端认证报文数据;
在所述第二服务端认证报文数据与所述第一服务端认证报文数据一致的情况下,确定所述第一服务端认证报文数据校验通过。
9.一种认证装置,其特征在于,应用于服务端,所述认证装置包括:
接收模块,用于接收客户端发送的连接请求,所述连接请求携带认证方式和认证数据;
第一发送模块,用于在所述认证方式校验通过的情况下,向所述客户端发送第一认证报文,所述第一认证报文用于所述客户端进行服务端认证;
接收模块,用于接收所述客户端发送的第二认证报文,所述第二认证报文携带第一客户端认证报文数据;
第一校验模块,用于根据第一客户端认证数据校验所述第一客户端认证报文数据,所述第一客户端认证数据为根据所述认证数据确定的;
第一确定模块,用于在所述第一客户端认证报文数据校验通过的情况下,确定所述客户端认证通过;
第二发送模块,用于向所述客户端发送连接回复报文,所述连接回复报文携带第一服务端认证报文数据,所述连接回复报文用于所述客户端进行服务端认证。
10.一种认证装置,其特征在于,应用于客户端,所述认证装置包括:
第三发送模块,用于向服务端发送连接请求,所述连接请求携带认证方式和认证数据;
第四发送模块,用于接收所述服务端在所述认证方式校验通过的情况下发送的第一认证报文,所述第一认证报文携带所述服务端生成的唯一编号和加盐值;
第五发送模块,用于向所述服务端发送第二认证报文,所述第二认证报文携带第一客户端认证报文数据,所述第一客户端认证报文数据用于所述服务端进行客户端认证;
第六发送模块,用于接收所述服务端在确定所述客户端认证通过的情况下发送的连接回复报文,所述连接回复报文携带第一服务端认证报文数据;
第二校验模块,用于根据第二服务端认证数据校验所述第一服务端认证报文数据,所述第二服务端认证数据为根据所述服务端生成的唯一编号和所述加盐值确定的;
第二确定模块,用于在所述第一服务端认证报文数据校验通过的情况下,确定所述服务端认证通过,以及与所述服务端建立连接关系。
11.一种服务器,其特征在于,所述服务器包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-4任一项所述的方法的步骤。
12.一种客户端,其特征在于,所述客户端包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求5-8任一项所述的方法的步骤。
13.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1-4任一项所述的方法的步骤,或者实现如权利要求5-8任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111335051.6A CN114065179B (zh) | 2021-11-11 | 2021-11-11 | 认证方法、装置、服务器、客户端及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111335051.6A CN114065179B (zh) | 2021-11-11 | 2021-11-11 | 认证方法、装置、服务器、客户端及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114065179A true CN114065179A (zh) | 2022-02-18 |
CN114065179B CN114065179B (zh) | 2024-07-02 |
Family
ID=80275635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111335051.6A Active CN114065179B (zh) | 2021-11-11 | 2021-11-11 | 认证方法、装置、服务器、客户端及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114065179B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105306211A (zh) * | 2014-08-01 | 2016-02-03 | 成都天钥科技有限公司 | 一种客户端软件的身份认证方法 |
CN110519300A (zh) * | 2019-09-24 | 2019-11-29 | 杭州字节信息技术有限公司 | 基于口令双向认证的客户端密钥安全存储方法 |
CN110933018A (zh) * | 2018-09-20 | 2020-03-27 | 马上消费金融股份有限公司 | 网络认证方法、装置以及计算机存储介质 |
CN111031074A (zh) * | 2020-01-09 | 2020-04-17 | 中国信息通信研究院 | 一种认证方法、服务器和客户端 |
CN113556321A (zh) * | 2021-06-22 | 2021-10-26 | 杭州安恒信息技术股份有限公司 | 口令认证方法、系统、电子装置和存储介质 |
-
2021
- 2021-11-11 CN CN202111335051.6A patent/CN114065179B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105306211A (zh) * | 2014-08-01 | 2016-02-03 | 成都天钥科技有限公司 | 一种客户端软件的身份认证方法 |
CN110933018A (zh) * | 2018-09-20 | 2020-03-27 | 马上消费金融股份有限公司 | 网络认证方法、装置以及计算机存储介质 |
CN110519300A (zh) * | 2019-09-24 | 2019-11-29 | 杭州字节信息技术有限公司 | 基于口令双向认证的客户端密钥安全存储方法 |
CN111031074A (zh) * | 2020-01-09 | 2020-04-17 | 中国信息通信研究院 | 一种认证方法、服务器和客户端 |
CN113556321A (zh) * | 2021-06-22 | 2021-10-26 | 杭州安恒信息技术股份有限公司 | 口令认证方法、系统、电子装置和存储介质 |
Non-Patent Citations (2)
Title |
---|
徐军: ""基于口令的身份认证方案安全性分析及其改进"", 山东理工大学学报(自然科学版), 8 March 2019 (2019-03-08), pages 19 - 22 * |
李祉岐;孙磊;闻凯;: "基于服务器私人密钥轻量级的身份验证协议", 计算机工程与设计, no. 11, 16 November 2018 (2018-11-16), pages 3374 - 3379 * |
Also Published As
Publication number | Publication date |
---|---|
CN114065179B (zh) | 2024-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10979427B2 (en) | Method and device for authenticating based on authenticating device | |
CN110380852B (zh) | 双向认证方法及通信系统 | |
CN109729523B (zh) | 一种终端联网认证的方法和装置 | |
CN107579991B (zh) | 一种对客户端进行云端防护认证的方法、服务器和客户端 | |
US8527762B2 (en) | Method for realizing an authentication center and an authentication system thereof | |
TW201706900A (zh) | 終端的認證處理、認證方法及裝置、系統 | |
CN107612889B (zh) | 防止用户信息泄露的方法 | |
TW200810465A (en) | Mutual authentication between two parties using two consecutive one-time passwords | |
CN108322416B (zh) | 一种安全认证实现方法、装置及系统 | |
CN106453352B (zh) | 一种单系统多平台身份验证方法 | |
CN107517194B (zh) | 一种内容分发网络的回源认证方法和装置 | |
CN111783068A (zh) | 设备认证方法、系统、电子设备及存储介质 | |
CN111010363B (zh) | 信息认证方法及其系统、认证模块以及用户终端 | |
CN111800377B (zh) | 一种基于安全多方计算的移动终端身份认证系统 | |
CN111371725A (zh) | 一种提升会话机制安全性的方法、终端设备和存储介质 | |
CN111800378A (zh) | 一种登录认证方法、装置、系统和存储介质 | |
CN113852681B (zh) | 一种网关认证方法、装置及安全网关设备 | |
US9038143B2 (en) | Method and system for network access control | |
JP5614465B2 (ja) | 暗号通信装置、代行サーバ、暗号通信装置プログラム及び代行サーバプログラム | |
CN116647345A (zh) | 权限令牌的生成方法以及装置、存储介质、计算机设备 | |
CN102694779B (zh) | 组合认证系统及认证方法 | |
CN111148275A (zh) | 基于设备码的通信方法、装置及系统 | |
CN114679276B (zh) | 基于时间的一次性密码算法的身份认证方法和装置 | |
CN114158046B (zh) | 一键登录业务的实现方法和装置 | |
CN114500074B (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 | ||
GR01 | Patent grant |