安全验证缺陷检测的方法、装置以及电子设备
技术领域
本公开提供了一种安全验证缺陷检测的方法、装置以及电子设备,涉及通信领域。
背景技术
一个设备或者应用程序(APP)可以调用许多软件包开发工具(SoftwareDevelopment Kit,SDK)模块实现其功能,模块与服务器之间可以基于传输层安全性协议(Transport Layer Security,TLS)或数据包传输层安全性协议(Datagram TransportLayer Security,DTLS)等建立加密连接进行通信,基于tls或dtls建立加密连接进行通信时可能存在安全验证缺陷。
目前,可以通过中间人攻击的方式来检测模块是否存在安全验证缺陷,具体可以通过模块与”中间人”之间的加密连接是否建立成功来判断模块是否存在安全验证缺陷,但是,由于应用程序所调用的各模块在运行上存在依赖关系,当某一模块与”中间人”的加密连接建立失败时,该“中间人”对于该模块而言是不受信任的,则该模块就无法通过”中间人”与服务器正常通信,那么该模块相依赖的另一个模块也无法启动运行,即使另一个模块存在安全验证缺陷,也无法检测到。
发明内容
提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
本公开的第一方面提供了安全验证缺陷检测的方法,包括:
接收客户端中功能模块发送的加密连接建立请求;
基于加密连接建立请求与功能模块建立加密连接,以检测功能模块是否存在安全验证缺陷;
若加密连接建立失败,则将功能模块与服务器之间的数据以透明传输的方式进行转发,以保证功能模块与服务器正常通信后,客户端中与功能模块在运行上相关联的其他功能模块启动运行进行安全验证缺陷的检测。
本公开第二方面提供了一种安全验证缺陷检测的装置,包括:
第一收发模块,用于接收客户端中功能模块发送的加密连接建立请求;
检测模块,用于基于加密连接建立请求与功能模块建立加密连接,以检测功能模块是否存在安全验证缺陷;
第二收发模块,用于若加密连接建立失败,则将功能模块与服务器之间的数据以透明传输的方式进行转发,以保证功能模块与服务器正常通信后,客户端中与功能模块在运行上相关联的其他功能模块启动运行进行安全验证缺陷的检测。本公开第三方面提供了一种安全验证缺陷检测的装置,包括:
本公开第三方面,提供了一种电子设备,该电子设备包括:
电子设备包括存储器和处理器;
存储器中存储有计算机程序;
处理器,用于在运行计算机程序时执行第一方面的方法。
本公开第四方面,提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时第一方面的方法。
本公开提供的技术方案带来的有益效果是:
接收客户端中功能模块发送的加密连接建立请求后,基于该加密连接建立请求可以与功能模块建立加密连接,以确定该功能模块是否存在安全验证缺陷,如果加密连接建立失败,则将该功能模块与服务器之间的数据以透明传输的方式进行转发,这样功能模块与服务器间的数据在数据链路上的传输是透明的,在加密连接建立失败时,即使“中间人”不受信任,也不会影响功能模块与服务器之间的正常通信,从而可以保证功能模块与服务器间的正常通信,进而与该功能模块在运行上相关联的其他功能模块可以启动运行进行安全验证缺陷的检测。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
图1(a)为本公开通信系统的结构示意图;
图1(b)为本公开安全验证缺陷检测的方法的一个实施例示意图;
图2为本公开客户端中模块与服务器的连接示意图;
图3为本公开安全验证缺陷检测的方法的另一个实施例示意图;
图4为本公开安全验证缺陷检测的装置的结构示意图;
图5为本公开电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对装置、模块或单元进行区分,并非用于限定这些装置、模块或单元一定为不同的装置、模块或单元,也并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
如上述,目前的方案,存在如下缺点:
1、客户端中应用程序运行时调用的各模块,从模块的运行流程上,模块之间是依次启动的,如果某一个模块与服务器无法正常通信,与该模块在运行上具有关联的其他模块也无法启动,那么其他模块即使存在安全验证缺陷也无法检测到。
2、目前,针对tls或dtls连接中的安全验证缺陷的检测一般是针对服务器一侧进行检测,或提取客户端与服务器间传输的链接后基于该链接进行安全验证缺陷的检测,而针对客户端一侧的安全验证缺陷的检测,只能粗略估计客户端所存在的安全验证缺陷,无法进行缺陷定位。
为解决上述问题,本公开提出了一种安全验证缺陷检测的方法、装置以及电子设备,首先,对本公开涉及到的几个术语进行解释说明:
传输层安全性协议(Transport Layer Security,TLS):其前身为安全套接层(Secure Sockets Layer,SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障,在各种应用程序中均广泛支持这个协议。主要的网站也以这个协议来创建安全连接,传输数据,目前已成为互联网上保密通信的工业标准。
数据包传输层安全性协议(Datagram Transport Layer Security,DTLS):TLS不能用来保证用户数据报协议(UDP,User Datagram Protocol)上传输的数据的安全,因此Datagram TLS在现存的TLS协议架构上提出扩展,使之支持UDP,即成为TLS的一个支持数据包传输的版本。
中间人攻击:(Man-in-the-middle attack,MITM)在密码学和计算机安全领域中是指攻击者与通讯的两端分别建立独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。
首先,对本公开的整体结构进行说明,本公开的安全验证缺陷检测的方法可以应用于通信系统,请参照图1(a),通信系统中包括客户端、tls或dtls缺陷检测装置(即检测设备)以及云端服务器,客户端中包括至少一个APP,各APP中包括至少一个功能模块,该检测设备为通信系统中独立于客户端和服务器之外的设备,该检测设备作为进行中间人攻击的攻击者,与客户端与服务器分别建立独立的tls或dtls连接,可以对客户端发送的每一条链接进行安全审计,并以全流量代理的方式转发其收到的链接(或数据),下述实施例中数据与链接表示的是同一概念。
本公开的安全验证缺陷检测的方法可以由检测设备执行,请参照图1(b),本公开的方法具体包括:
步骤S101、接收客户端中功能模块发送的加密连接建立请求;
检测设备可以接收客户端中功能模块发送的加密连接建立请求,具体的:当客户端中待检测的功能模块请求建立加密连接以连接到服务器时,检测设备发起中间人攻击,检测设备作为“中间人”,可以通过修改路由等方式劫持到该功能模块发送的该加密连接建立请求。
在本实施例中,加密连接包括tls或dtls连接,功能模块可以是SDK模块,SDK模块包括语音、图像、人工智能(Artificial Intelligence,AI)、安全、支付等功能性模块。
步骤S102、基于加密连接建立请求与功能模块建立加密连接,以检测功能模块是否存在安全验证缺陷;
检测设备劫持该加密连接建立请求后,可以基于该加密连接建立请求触发对功能模块进行安全验证缺陷的检测,该安全验证缺陷的检测是检测设备主动发起的、对功能模块而言是未知的,具体的:
检测设备可以通过检测设备与功能模块之间的加密连接建立是否成功来确定该功能模块是否存在安全验证缺陷,若加密连接建立成功,则证明该功能模块存在安全验证缺陷,若加密连接建立失败,则证明功能模块不存在安全验证缺陷(具体的证明方式将在后面的实施例中介绍)。
步骤S103、若加密连接建立失败,则将功能模块与服务器之间的数据以透明传输的方式进行转发,以保证功能模块与服务器正常通信后,客户端中与功能模块在运行上相关联的其他功能模块启动运行进行安全验证缺陷的检测。
当该功能模块确定检测设备并不是客户端最初请求通信的服务器,则客户端不会与检测设备建立加密连接,从而加密连接建立失败(即中间人攻击失败),这种情况下检测设备不能劫持该功能模块与服务器之间的链接(功能模块与服务器之间的链接也可以称之为功能模块与服务器之间的数据),检测设备作为“中间人”对于功能模块而言是不受信任的,后续若检测设备再收到功能模块与服务器间的数据,直接将该数据以透明传输的方式进行转发,保证功能模块与服务器正常通信,与该功能模块在运行上相关联的其他功能模块也可以启动运行进行安全验证缺陷的检测,其他功能模块进行安全验证缺陷检测的方式参照该功能模块进行安全验证缺陷检测的方式,也是通过确定检测设备与功能模块之间加密连接建立是否成功来确定功能模块是否存在安全验证缺陷的。
在本实施例中,功能模块与服务器之间的数据包括:功能模块发送给服务器的数据和/或服务器发送给功能模块的数据。
透明传输表示:功能模块与服务器间的数据在数据链路上的传输是透明的,检测设备只具有转发数据的功能,并不会对传输的数据进行处理,这样即使检测设备不受信任,功能模块与服务器依然可以通过该检测设备进行正常的通信。
在本实施例中,如图2所示,可以存在多个模块(即功能模块)请求连接到一个服务器,也可以存在一个模块请求连接到多个服务器,功能模块与服务器正常通信可以是:该功能模块与任意一个服务器正常通信,与功能模块在运行上相关联的其他功能模块可以是:与该功能模块连接到同一服务器或不同服务器的其他功能模块。当先启动运行的模块与服务器通信成功后,与该模块运行上相关联的其他模块才能启动运行,例如模块2需要模块1成功运行(即模块1与服务器成功通信)后才启动,模块3需要模块2成功运行后才启动,依次的,模块n要模块n-1成功运行才能启动,n为大于3的整数。
可见,本公开把进行安全验证缺陷检测的对象从客户端的维度直接细粒度到各模块与服务器之间的单个链接的维度(或者说单个模块的维度),采用智能自动化手段,对当前链接进行中间人攻击建立加密连接,基于加密连接是否建立成功从而检测客户端侧中当前链接对应的功能模块是否存在安全验证缺陷,同时,为避免客户端中某一个功能模块与检测设备间的加密连接建立失败时,与该功能模块在运行上相关联的其他功能模块无法进行安全验证缺陷检测,检测设备可以透明传输该功能模块与服务器间的数据,保证该功能模块与服务器之间的正常通信,这样就不会影响客户端中与当前测试的功能模块在运行上相互关联的其他功能模块进行安全验证缺陷检测。
在本实施例中,接收客户端中功能模块发送的加密连接建立请求后,基于该加密连接建立请求可以与功能模块建立加密连接,以确定该功能模块是否存在安全验证缺陷,如果加密连接建立失败,则将该功能模块与服务器之间的数据以透明传输的方式进行转发,这样功能模块与服务器间的数据在数据链路上的传输是透明的,在加密连接建立失败时,即使“中间人”不受信任,也不会影响功能模块与服务器之间的正常通信,从而可以保证功能模块与服务器间的正常通信,进而与该功能模块在运行上相关联的其他功能模块可以启动运行进行安全验证缺陷的检测。
可选的,将功能模块与服务器之间的数据以透明传输的方式进行转发,包括:
若接收到来自功能模块的数据,则将来自功能模块的数据以透明传输的方式发送给服务器;
若接收到来自服务器的数据,则将来自服务器的数据以透明传输的方式发送给功能模块。
在本实施例中,加密连接建立失败时,检测设备若接收到来自功能模块通过非加密连接发送的数据时,可以将该数据以透明传输的方式发送给服务器,检测设备若接收到来自服务器发送的数据时,也可以将该数据以透明传输的方式发送给该功能模块,从而保证功能模块与服务器之间的正常通信。
可选的,本实施例中,检测设备可以通过生成第一服务器证书与功能模块建立加密连接,以检测功能模块是否存在安全验证缺陷,具体的:
首先,需要说明的是:一般由第三方权威机构颁发的数字证书是受设备(服务器或客户端)信任的,这类数字证书内植于设备中,是受设备信任的根证书。
服务端证书实质上也是一种数字证书,在本公开实施例中所涉及的服务端证书可以是X.509数字证书,X.509数字证书中包括颁布者信息、持有者信息以及签名值(bit_string)等字段,其中,签名值字段对应的签名信息是由其他数字证书对该服务端证书进行验证得到的,如果其他数字证书是受信任的,则它所签名的签名信息受信任,反之亦然。
可选的,基于加密连接建立请求与功能模块建立加密连接,以检测功能模块是否存在安全验证缺陷,包括:
基于加密连接建立请求,生成第一服务端证书;
基于第一服务端证书,得到包含特定信息的第二服务端证书;
其中,特定信息包括不受信任的签名信息以及目标信息中任一项,目标信息中包括错误日期或错误域名;
基于第二服务端证书与功能模块建立加密连接,以检测功能模块是否存在安全验证缺陷。
检测设备接收到功能模块发送的加密连接建立请求后,为了对该功能模块进行安全验证缺陷的检测,可以生成第一服务端证书,本实施例中由检测设备生成第一服务端证书,即检测设备作为第一服务端证书的颁发机构,则第一服务端证书是不受信任的。
检测设备可以对第一服务端证书进行处理,得到包含特定信息的第二服务端证书,其中,特定信息包括:不受信任的签名信息或目标信息,第二服务端证书的签名信息不受信任,则签名信息必然验证失败;
目标信息包括以下任一项:
错误日期,可以是不同于当前日期的日期,具体的,第二服务端证书的日期不同于当前日期包括:第二服务端证书的起始日期为当前日期之后,和/或第二服务端证书的截止日期为当前日期之前,其中,当前日期指的是第二服务端证书的生成日期,即对第一服务端证书进行处理得到第二服务端证书的日期,可见,第二服务端证书的日期不同于当前日期必然验证失败。
错误域名,可以是基于为客户端提供服务的服务器的域名生成的、不同于该域名的域名,第二服务端证书的域名不同于功能模块所访问的服务器的域名,则第二服务端证书的域名必然验证失败。
检测设备可以将第二服务端证书发送给功能模块进行证书验证,功能模块对该第二服务端证书进行验证时,若第二服务端证书验证通过,功能模块可以与检测设备建立加密连接,若检测设备接收到功能模块基于该加密连接发送的、经过加密的数据,则检测设备可以确定加密连接建立成功,则该功能模块存在安全验证缺陷;若第二服务端证书验证失败,功能模块不会与检测设备建立加密连接,若检测设备接收到功能模块发送的加密连接建立失败消息,则检测设备可以确定功能模块不存在安全验证缺陷。
在本实施例中,若加密连接建立失败,则功能模块与服务器之间的数据对应的链接不可劫持,检测设备可以存储该链接的相关信息,具体包括功能模块端口地址、服务器端口地址以及服务端证书的域名,
可选的,在本实施例中,基于加密连接建立请求,生成第一服务端证书,包括以下任一项:
基于加密连接建立请求,依据为客户端提供服务的服务器的服务端证书,生成第一服务端证书;
基于加密连接建立请求中的特定字段,生成第一服务端证书。
一种可能的情况是,检测设备可以接收服务器发送的该服务器的服务端证书,并基于该服务端证书生成第一服务端证书,具体的:如上述当待检测的功能模块请求连接到服务器时,功能模块发送的请求被检测设备劫持,检测设备可以以该功能模块的身份请求连接到服务器,从而检测设备可以接收服务器下发该服务端证书,检测设备以该服务端证书为模板生成伪造的第一服务端证书。
另一种可能的情况是,检测设备也可以在劫持功能模块的加密连接建立请求后,直接基于该加密连接建立请求中的应用层协议协商(Application Layer ProtocolNegotiation,ALPN)字段和/或指定服务器域名((Server Name Indication,SNI)字段进行证书伪造,得到第一服务端证书。
在本实施例中,检测设备对任一功能模块进行安全验证缺陷的检测包括三个阶段:签名验证测试阶段、域名验证测试阶段以及日期验证测试阶段,其中对服务端证书的验证一般先验证服务端证书的签名信息,签名验证通过后才进行域名和/或日期验证,因此,域名验证测试阶段或日期验证测试阶段的测试需要在签名验证测试阶段之后进行,下面,对这三个阶段进行展开说明。
一、签名信息验证测试阶段
可选的,若安全验证缺陷包括签名信息验证缺陷,基于第一服务端证书,得到包含特定信息的第二服务端证书,包括:
基于不受功能模块信任的第一数字证书对第一服务端证书进行签名,得到包含不受信任的签名信息的第二服务端证书。
如上述检测设备接收到加密连接建立请求并生成第一服务端证书,检测设备还可以生成第一数字证书,即检测设备作为第一数字证书的颁发机构,则第一数字证书是不受信任的。
检测设备通过第一数字证书对第一服务端证书进行签名,得到包含签名信息的第二服务端证书,则由不受信任的第一数字证书签名得到的第二服务端证书的签名信息也是不受信任的,则第二服务端证书的签名信息必然验证失败。
检测设备将第二服务端证书发送给客户端,以使得客户端中的功能模块对包含签名信息的第二服务端证书进行验证,如上述一般功能模块对服务端证书的验证方式是先进行签名信息验证,签名验证通过后再进行服务端证书中其他信息的验证,若签名信息验证失败则第二服务端证书的验证也必然失败。
在本实施例中,无论第二服务端证书的签名信息是否受信任,实质上检测设备只给功能模块发送了第二服务端证书,而没有发送第一数字证书,进而功能模块根本无法进行签名信息的验证,则签名信息验证必然失败,第二服务端证书也必然验证失败,若检测设备接收到功能模块在第二服务端证书验证成功后基于加密连接发送的经过加密的数据时,则检测模块可以确定该功能模块、针对签名信息的验证机制存在问题或者说该功能模块中不存在签名信息的验证机制,检测设备保存证书签名信息验证测试阶段的相关记录。
同时,加密连接建立成功时,检测设备可以劫持功能模块发送的链接(即上述实施例中检测设备接收到的功能模块发送的经过加密的数据),检测设备可以对该链接进行修改再发送给服务器。
可见,本公开的方案可以直接对客户端侧的安全校验缺陷进行验证,可以确定客户端中功能模块中针对签名信息的验证机制是否存在问题,克服了现有的对客户端侧的安全验证缺陷无法定位的问题。
进一步的,在本实施例中,检测设备将包含签名信息的第二服务端证书发送给客户端时,可以将对第二服务端证书进行签名的第一数字证书也发送给客户端,具体而言:
检测设备可以向客户端发送包含签名信息的第二服务端证书以及第一数字证书,以使得客户端中的功能模块基于第一数字证书对签名信息进行验证,由于第一数字证书并不是受信任的证书,那么客户端基于第一数字证书对签名信息进行验证时必然验证失败,则第二服务端证书也必然验证失败,若检测设备接收到功能模块在第二服务端证书验证成功后基于加密连接发送的经过加密的数据时,则检测模块可以确定该功能模块、针对签名信息的验证机制存在问题或者说该功能模块中不存在签名信息的验证机制,检测设备保存证书签名信息验证测试阶段的相关记录。
进一步的,在本实施例中,若检测设备接收到功能模块发送的加密连接建立失败消息时,证明功能模块对包含签名信息的第二服务端证书验证失败,则功能模块中存在签名信息的验证机制或者说签名信息的验证机制不存在问题,则检测设备可以进一步测试功能模块中是否存在针对服务端证书中其他信息的验证机制,下面,将详细介绍检测设备对其他信息的安全验证缺陷的检测,其他信息的安全验证缺陷的检测包括域名验证验证测试和日期验证测试,具体的:
二、域名验证测试阶段以及日期验证测试阶段
可选的,若安全验证缺陷包括目标信息验证缺陷,基于第一服务端证书,得到包含特定信息的第二服务端证书,包括:
生成第二数字证书,并将第二数字证书发送给客户端,以使得客户端中的功能模块将第二数字证书作为受功能模块信任的根证书;
对第一服务端证书中的初始目标信息进行修改,并基于第二数字证书,对修改后的第一服务端证书进行签名,得到包含的目标信息以及签名信息的第二服务端证书;其中,由受信任的第二数字证书签名得到的第二服务端证书的签名信息是受信任的;
基于第二服务端证书与功能模块建立加密连接,以检测功能模块是否存在安全验证缺陷,包括:
向客户端发送第二服务端证书,第二服务端证书用于客户端中的功能模块基于第二数字证书、针对第二服务端证书进行签名信息验证,并在签名信息验证通过后进行目标信息的验证,目标信息验证通过后与检测设备建立加密连接;
其中,加密连接建立成功指示功能模块存在目标信息验证缺陷。
如上述一般功能模块对服务端证书的验证方式是先进行签名验证,签名验证通过后再进行服务端证书中其他信息的验证,检测设备为了测试功能模块针对域名或日期的验证是否存在安全验证缺陷,需要先保证签名信息验证通过。
如上述检测设备接收到加密连接建立请求并生成第一服务端证书,检测设备可以生成第二数字证书,第二数字证书是可以植入到客户端中的证书,第二数字证书可以是charles、burpsute、fiddler、mitmproxy中任一项证书,检测设备将该第二数字证书发送给客户端,以便于客户端对应的用户(即测试客户端侧安全验证缺陷的人员)将该第二数字证书植入到客户端中,植入证书的具体方式是,客户端基于用户的操作将第二数字证书存储于客户端的目标区域中,从而使得第二数字证书作为受客户端信任的、内置的根证书。
检测设备对第一服务端证书中的初始目标信息进行修改得到该目标信息,并利用第二数字证书,对包含目标信息的第一服务端证书进行签名,得到第二服务端证书,则第二服务端证书中包括签名信息以及目标信息,同时,第二数字证书是受客户端信任的根证书,则由第二服务端证书签名得到的签名信息是受客户端中功能模块信任的;
上述目标信息可以是域名信息以及日期信息中任一项,可以理解的是,若针对域名验证测试阶段,则目标信息为域名信息,若针对日期验证测试阶段,则目标信息为日期信息。
检测设备将包含签名信息以及目标信息的第二服务端证书发送给客户端,以使得客户端中的功能模块基于目标区域中第二数字证书对该第二服务端证书进行验证,或检测设备将第二数字证书以及该第二服务端证书发送给客户端,以使得客户端中的功能模块基于内置的第二数字证书对该包含第二服务端证书进行验证,可见,即使检测设备再次发送第二数字证书,功能模块也是使用预先存储于目标区域的第二数字证书验证第二服务端证书,再次发送第二数字证书的作用可以是防止预先存储于目标区域的第二数字证书过期,其中,功能功能对第二服务端证书的具体验证过程为:
功能模块重新启动客户端或功能模块所属应用程序,由于第二数字证书是受信任的数字证书,功能模块通过第二数字证书对第二服务端证书的签名信息进行验证将验证成功,签名信息验证成功后进行目标信息的验证,而基于上述论述可知目标信息必然验证失败,目标信息验证失败那么功能模块对包含该目标信息的第二服务端证书的验证也必然失败,若检测设备接收到客户端在证书验证成功后、基于加密连接发送的经过加密的数据时,则检测模块可以确定功能模块针对目标信息的验证机制存在问题或者说功能模块中不存在目标信息的验证机制,检测设备保存域名验证测试阶段或日期验证测试阶段的相关记录。
若检测设备接收到功能模块发送的加密连接建立失败消息时,证明功能模块对包含该第二服务端证书验证失败,则功能模块中存在目标信息的验证机制或者说目标信息的验证机制不存在问题。
可见,在本实施例中,检测设备可以进行域名验证测试,或进行日期验证测试,当然检测设备也可以既可以进行域名验证测试,也进行日期验证测试,但是需要分开进行,即将域名和日期分别作为目标信息,从而检测功能模块中是否存在对应的安全验证缺陷,相对于现有方案无法确定客户端侧在安全验证上所存在的具体问题,本公开的方案可以确定客户端侧在域名验证和日期验证上是否存在问题。
进一步的,该服务端证书的签名信息是否受信任,需要验证其上一级证书(例如本实施例中的第一数字证书或第二数字证书)是否受信任,上一级证书是否受信任,需要验证给该上一级证书签名的再上一级证书是否受信任,直至验证到证书链的根证书,这里的证书链包括服务端证书、服务端证书的上一级数字证书以及根证书,因此,针对上述两个阶段,检测设备将签名后的服务端证书(即实施例中的第二服务端证书)发送给客户端进行安全验证缺陷检测时,检测设备可以将签名后的服务器端证书与其对应的一个或多个之前级别的数字证书共同形成证书链发送给客户端进行安全验证缺陷的检测。
综上,本公开实施例的方案是由客户端、检测设备以及服务器交互实现的,下面,参照图3,从设备交互的角度对本公开的一种安全验证缺陷检测的方法进行说明:
检测设备先测试是否存在签名信息验证缺陷:
步骤S301、检测设备接收客户端中功能模块发送的加密连接建立请求;
步骤S302、检测设备基于该加密连接建立请求生成第一服务端证书;
步骤S303、检测设备生成第一数字证书,并通过第一数字证书对第一服务端证书进行签名,得到包含签名信息的服务端证书A;
步骤S304、检测设备将该服务端证书A发送给客户端,以与功能模块建立加密连接,基于加密连接建立是否成功确定功能模块是否存在签名信息验证缺陷;
若客户端中的功能模块针对包含签名信息的服务端证书A验证通过,则功能模块基于加密连接将经过加密的数据发送给检测设备,检测设备基于该数据,可以确定功能模块中针对签名信息的验证机制存在问题;
若功能模块针对包含签名信息的服务端证书A验证失败,则功能模块向检测设备发送加密连接建立失败消息,检测设备基于该加密连接建立失败消息,可以确定功能模块中针对签名信息的验证机制不存在问题。
步骤S305、若接收到功能模块发送的加密连接建立失败,则将功能模块与服务器之间的数据以透明传输的方式进行转发。
重启应用程序,检测设备再测试是否存在目标信息验证缺陷:
步骤S306、检测设备对第一服务端证书中的初始目标信息进行修改并通过第二数字证书对修改后的服务端证书进行签名,得到包含签名信息和目标信息的服务端证书B;
第二数字证书是检测设备生成的,并预先发送给客户端,以使得客户端将第二数字证书作为内置的根证书;
步骤S307、检测设备将包含该服务端证书B发送给客户端,以与功能模块建立加密连接,基于加密连接建立是否成功确定功能模块是否存在目标信息验证缺陷;
若客户端中的功能模块针对包含签名信息以及目标信息的服务端证书B验证通过,则功能模块将经过加密的数据发送给检测设备,检测设备基于该数据,可以确定功能模块中针对签名信息的验证机制存在问题;
若功能模块针对该服务端证书B验证失败,则功能模块向检测设备发送加密连接建立失败消息,检测设备基于该加密连接建立失败消息,可以确定功能模块中针对签名信息的验证机制不存在问题。
步骤S308、若接收到功能模块发送的加密连接建立失败,则将功能模块与服务器之间的数据以透明传输的方式进行转发。
需要说明的是,本实施例所示的该方法与前文中图1(b)中所示的方法在实质是相同的技术方案,因此,本实施例中所示的该方法及其可选实施例的方案,具体可以参见前文中对于图1(b)中所示的方法及其可选实施例中的方案的描述,在此不再赘述。
综上,本公开实施例主要具有如下有益效果:
1、把测试的对象从设备维度直接细粒度到单个功能模块,并且采用智能自动化手段,对当前功能模块进行签名信息验证、证书域名验证以及证书日期验证等的测试,如果加密连接建立失败,直接对该当前功能模块的链接进行透明转发,这样就不会影响与功能模块运行上相关联的其他功能模块,确保其他功能模块也可以被检测到,对app进行充分的测试;
2、使用两种数字证书,可以自动化进行测试,智能放行合格链接;
3、支持对TLS或DTLS两种加密协议中客户端侧的缺陷检测;
4、支持对单个链接的管理,检测设备根据返回的结果,决定继续劫持当前的加密链接,还是直接透明转发收到的链接;
5、可以自动化进行测试,智能放行绕过相关无缺陷的功能模块对应的链接。
6、支持多种检测,签名信息验证测试、域名验证测试、证书日期测试。
请参照图4,本公开又一实施例提供了一种安全验证缺陷检测的装置的结构示意图,本公开实施例的装置可以包括:
第一收发模块401,用于接收客户端中功能模块发送的加密连接建立请求;
检测模块402,用于基于加密连接建立请求与功能模块建立加密连接,以检测功能模块是否存在安全验证缺陷;
第二收发模块403,用于若加密连接建立失败,则将功能模块与服务器之间的数据以透明传输的方式进行转发,以保证功能模块与服务器正常通信后,客户端中与功能模块在运行上相关联的其他功能模块启动运行进行安全验证缺陷的检测。
可选的,第二收发模块403,具体用于:
若接收到来自功能模块的数据,则将来自功能模块的数据以透明传输的方式发送给服务器;
若接收到来自服务器的数据,则将来自服务器的数据以透明传输的方式发送给功能模块。
可选的,检测模块402,具体用于:
基于加密连接建立请求,生成第一服务端证书;
基于第一服务端证书,得到包含特定信息的第二服务端证书;
其中,特定信息包括不受信任的签名信息以及目标信息中任一项,目标信息中包括错误日期或错误域名;
基于第二服务端证书与功能模块建立加密连接,以检测功能模块是否存在安全验证缺陷。
可选的,若安全验证缺陷包括签名信息验证缺陷,检测模块402在基于第一服务端证书,得到包含特定信息的第二服务端证书时,具体用于:
基于不受功能模块信任的第一数字证书对第一服务端证书进行签名,得到包含不受信任的签名信息的第二服务端证书。
可选的,若安全验证缺陷包括目标信息验证缺陷,检测模块402在基于第一服务端证书,得到包含特定信息的第二服务端证书时,具体用于:
生成第二数字证书,并将第二数字证书发送给客户端,以使得客户端中的功能模块将第二数字证书作为受功能模块信任的根证书;
对第一服务端证书中的初始目标信息进行修改,并基于第二数字证书,对修改后的第一服务端证书进行签名,得到包含的目标信息以及签名信息的第二服务端证书;其中,由受信任的第二数字证书签名得到的第二服务端证书的签名信息是受信任的;
检测模块402在基于第二服务端证书与功能模块建立加密连接,以检测功能模块是否存在安全验证缺陷时,具体用于:
向客户端发送第二服务端证书,第二服务端证书用于客户端中的功能模块基于第二数字证书、针对第二服务端证书进行签名信息验证,并在签名信息验证通过后进行目标信息的验证,目标信息验证通过后与检测设备建立加密连接;
其中,加密连接建立成功指示功能模块存在目标信息验证缺陷。
可选的,检测模块402在基于加密连接建立请求,生成第一服务端证书时,具体用于执行以下任一项操作:
基于加密连接建立请求,依据为客户端提供服务的服务器的服务端证书,生成第一服务端证书;
基于加密连接建立请求中的特定字段,生成第一服务端证书。
下面参考图5,其示出了适于用来实现本公开实施例的电子设备(例如图1(b)中的检测设备)600的结构示意图。本公开实施例中的检测设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图5示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
电子设备包括:存储器以及处理器,其中,这里的处理器可以称为下文的处理装置601,存储器可以包括下文中的只读存储器(ROM)602、随机访问存储器(RAM)603以及存储装置608中的至少一项,具体如下所示:
如图5所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图5示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收客户端中功能模块发送的加密连接建立请求;基于加密连接建立请求与功能模块建立加密连接,以检测功能模块是否存在安全验证缺陷;若加密连接建立失败,则将功能模块与服务器之间的数据以透明传输的方式进行转发,以保证功能模块与服务器正常通信后,客户端中与功能模块在运行上相关联的其他功能模块启动运行进行安全验证缺陷的检测。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块或单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一收发模块还可以被描述为“接收客户端中功能模块发送的加密连接建立请求的模块”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
本公开的一个或多个实施例,提供了一种安全验证缺陷检测的方法,包括:
接收客户端中功能模块发送的加密连接建立请求;
基于加密连接建立请求与功能模块建立加密连接,以检测功能模块是否存在安全验证缺陷;
若加密连接建立失败,则将功能模块与服务器之间的数据以透明传输的方式进行转发,以保证功能模块与服务器正常通信后,客户端中与功能模块在运行上相关联的其他功能模块启动运行进行安全验证缺陷的检测。
可选的,将功能模块与服务器之间的数据以透明传输的方式进行转发,包括:
若接收到来自功能模块的数据,则将来自功能模块的数据以透明传输的方式发送给服务器;
若接收到来自服务器的数据,则将来自服务器的数据以透明传输的方式发送给功能模块。
可选的,基于加密连接建立请求与功能模块建立加密连接,以检测功能模块是否存在安全验证缺陷,包括:
基于加密连接建立请求,生成第一服务端证书;
基于第一服务端证书,得到包含特定信息的第二服务端证书;
其中,特定信息包括不受信任的签名信息以及目标信息中任一项,目标信息中包括错误日期或错误域名;
基于第二服务端证书与功能模块建立加密连接,以检测功能模块是否存在安全验证缺陷。
可选的,若安全验证缺陷包括签名信息验证缺陷,基于第一服务端证书,得到包含特定信息的第二服务端证书,包括:
基于不受功能模块信任的第一数字证书对第一服务端证书进行签名,得到包含不受信任的签名信息的第二服务端证书。
可选的,若安全验证缺陷包括目标信息验证缺陷,基于第一服务端证书,得到包含特定信息的第二服务端证书,包括:
生成第二数字证书,并将第二数字证书发送给客户端,以使得客户端中的功能模块将第二数字证书作为受功能模块信任的根证书;
对第一服务端证书中的初始目标信息进行修改,并基于第二数字证书,对修改后的第一服务端证书进行签名,得到包含的目标信息以及签名信息的第二服务端证书;其中,由受信任的第二数字证书签名得到的第二服务端证书的签名信息是受信任的;
基于第二服务端证书与功能模块建立加密连接,以检测功能模块是否存在安全验证缺陷,包括:
向客户端发送第二服务端证书,第二服务端证书用于客户端中的功能模块基于第二数字证书、针对第二服务端证书进行签名信息验证,并在签名信息验证通过后进行目标信息的验证,目标信息验证通过后与检测设备建立加密连接;
其中,加密连接建立成功指示功能模块存在目标信息验证缺陷。
可选的,基于加密连接建立请求,生成第一服务端证书,包括以下任一项:
基于加密连接建立请求,依据为客户端提供服务的服务器的服务端证书,生成第一服务端证书;
基于加密连接建立请求中的特定字段,生成第一服务端证书。
本公开的一个或多个实施例,提供了一种安全验证缺陷检测的装置,包括:
第一收发模块,用于接收客户端中功能模块发送的加密连接建立请求;
检测模块,用于基于加密连接建立请求与功能模块建立加密连接,以检测功能模块是否存在安全验证缺陷;
第二收发模块,用于若加密连接建立失败,则将功能模块与服务器之间的数据以透明传输的方式进行转发,以保证功能模块与服务器正常通信后,客户端中与功能模块在运行上相关联的其他功能模块启动运行进行安全验证缺陷的检测。
可选的,第二收发模块,具体用于:
若接收到来自功能模块的数据,则将来自功能模块的数据以透明传输的方式发送给服务器;
若接收到来自服务器的数据,则将来自服务器的数据以透明传输的方式发送给功能模块。
可选的,检测模块,具体用于:
基于加密连接建立请求,生成第一服务端证书;
基于第一服务端证书,得到包含特定信息的第二服务端证书;
其中,特定信息包括不受信任的签名信息以及目标信息中任一项,目标信息中包括错误日期或错误域名;
基于第二服务端证书与功能模块建立加密连接,以检测功能模块是否存在安全验证缺陷。
可选的,若安全验证缺陷包括签名信息验证缺陷,检测模块在基于第一服务端证书,得到包含特定信息的第二服务端证书时,具体用于:
基于不受功能模块信任的第一数字证书对第一服务端证书进行签名,得到包含不受信任的签名信息的第二服务端证书。
可选的,若安全验证缺陷包括目标信息验证缺陷,检测模块在基于第一服务端证书,得到包含特定信息的第二服务端证书时,具体用于:
生成第二数字证书,并将第二数字证书发送给客户端,以使得客户端中的功能模块将第二数字证书作为受功能模块信任的根证书;
对第一服务端证书中的初始目标信息进行修改,并基于第二数字证书,对修改后的第一服务端证书进行签名,得到包含的目标信息以及签名信息的第二服务端证书;其中,由受信任的第二数字证书签名得到的第二服务端证书的签名信息是受信任的;
检测模块在基于第二服务端证书与功能模块建立加密连接,以检测功能模块是否存在安全验证缺陷时,具体用于:
向客户端发送第二服务端证书,第二服务端证书用于客户端中的功能模块基于第二数字证书、针对第二服务端证书进行签名信息验证,并在签名信息验证通过后进行目标信息的验证,目标信息验证通过后与检测设备建立加密连接;
其中,加密连接建立成功指示功能模块存在目标信息验证缺陷。
可选的,检测模块在基于加密连接建立请求,生成第一服务端证书时,具体用于执行以下任一项操作:
基于加密连接建立请求,依据为客户端提供服务的服务器的服务端证书,生成第一服务端证书;
基于加密连接建立请求中的特定字段,生成第一服务端证书。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。