CN114884736A - 一种防爆破攻击的安全防护方法及装置 - Google Patents
一种防爆破攻击的安全防护方法及装置 Download PDFInfo
- Publication number
- CN114884736A CN114884736A CN202210511640.3A CN202210511640A CN114884736A CN 114884736 A CN114884736 A CN 114884736A CN 202210511640 A CN202210511640 A CN 202210511640A CN 114884736 A CN114884736 A CN 114884736A
- Authority
- CN
- China
- Prior art keywords
- code
- attack
- explosion
- verification
- security
- 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
- 238000004880 explosion Methods 0.000 title claims abstract description 150
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000012795 verification Methods 0.000 claims abstract description 197
- 230000004044 response Effects 0.000 claims abstract description 40
- 230000002265 prevention Effects 0.000 claims description 12
- 230000000977 initiatory effect Effects 0.000 claims description 5
- 230000007123 defense Effects 0.000 abstract description 3
- 238000005422 blasting Methods 0.000 description 16
- 230000007246 mechanism Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 150000003839 salts Chemical class 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 210000001503 joint Anatomy 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1483—Countermeasures against malicious traffic service impersonation, e.g. phishing, pharming or web spoofing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0863—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
Abstract
本发明公开一种防爆破攻击的安全防护方法及装置,涉及软件安全防护技术领域。该方法包括以下步骤:设置在业务系统的客户端的防爆破攻击客户端安全组件将减少用户验证码输入的防爆破攻击安全参数添加到登录请求中,并发送至业务系统的服务端;设置在业务系统的服务端的防爆破攻击服务端安全组件在服务端收到所述登录请求后,对已添加减少用户验证码输入的防爆破攻击安全参数的所述登录请求进行减少用户验证码输入的防爆破攻击安全验证,并根据防爆破攻击安全验证结果,向所述客户端发送登录响应。采用本发明可以在减少用户验证码输入的同时,对爆破攻击实现更有效的安全防御。
Description
技术领域
本发明涉及软件安全防护技术领域,尤其涉及一种防爆破攻击的安全防护工具。
背景技术
爆破攻击(BruteForceAttacks)是指利用大量猜测和穷举的方式来尝试获取用户口令(简称口令)的攻击方式或者发送一个目的主机已接收过的包,来达到欺骗系统的目的,其主要原理分别如下:
如图1a所示,攻击者主机A一直枚举用户口令,给服务器主机B发送数据请求,由于爆破成功和失败的响应数据包的内容是不一样的,因而攻击者主机A通过检测来自服务器主机B响应数据包可以很好的判断是否爆破成功。
如图1b所示,主机A要给服务器主机B发送数据请求,攻击者C利用网络监听等方式盗取主机A的数据请求,再将该数据请求重发给服务器。
目前防爆破攻击的解决方案一般有两种:
一种是验证码机制,通过设置验证码,确保验证码一次有效,每次发起请求时更新新的验证码。该方式适用于登录过程、修改密码过程及其他涉及口令的操作过程。优点是简单易实现,缺点是每次都需要用户输入验证码,影响用户使用。
一种是随机数机制(挑战与应答的机制),客户端请求服务器时,服务器生成一个随机数返回给客户端,客户端携带所述随机数访问服务器,服务器比对生成的所述随机数和客户端携带的所述随机数,若相同则说明请求正常,不是爆破攻击。但是,该方案可通过如下方式进行爆破攻击:客户端将获取随机数的请求和正常数据请求放到请求集合中,并设置全局变量。客户端将服务器响应返回的随机数赋值给全局变量,然后再将全局变量的值赋值给数据请求,从而可保证每个请求均携带有效的随机数。通过重放该请求集合,达到爆破攻击的目的。因此该方案的缺点是不能有效防止爆破攻击。
发明内容
本发明实施例提供一种防爆破攻击的安全防护方法及装置,旨在解决已有爆破攻击解决方案中出现的验证码机制影响用户使用、随机数机制不能有效防护爆破攻击的问题。
本发明实施例提供了一种防爆破攻击的安全防护方法,所述方法包括以下步骤:设置在业务系统的客户端的防爆破攻击客户端安全组件将减少用户验证码输入的防爆破攻击安全参数添加到登录请求中,并发送至业务系统的服务端;设置在业务系统的服务端的防爆破攻击服务端安全组件在服务端收到所述登录请求后,对已添加减少用户验证码输入的防爆破攻击安全参数的所述登录请求进行减少用户验证码输入的防爆破攻击安全验证,并根据防爆破攻击安全验证结果,向所述客户端发送登录响应。
优选地,所述减少用户验证码输入的防爆破攻击安全参数包括:随机验证码code和加密验证码签名;所述防爆破攻击客户端安全组件将减少用户验证码输入的防爆破攻击安全参数添加到登录请求中,并发送至业务系统的服务端包括:所述防爆破攻击客户端安全组件在查询到本地有免验证码标识字符串code_key时,随机生成所述code;根据本地存储的随机字符串c_nonce,生成浏览器指纹;对用户发起所述登录请求时输入的口令进行加密,得到加密口令;利用所述code_key、所述code、所述浏览器指纹和所述加密口令,生成验证码签名并进行加密,得到加密验证码签名;将所述code和所述加密验证码签名拼接到所述登录请求中,从而与用户发起所述登录请求时输入的用户名、所述加密口令一并发送到所述业务系统的服务端。
优选地,所述防爆破攻击服务端安全组件在服务端收到所述登录请求后,对已添加减少用户验证码输入的防爆破攻击安全参数的所述登录请求进行减少用户验证码输入的防爆破攻击安全验证包括:所述防爆破攻击服务端安全组件从所述登录请求中获取用户名、code、加密口令、加密验证码签名;首先解密验证码签名,然后根据所述用户名,查询本地保存的浏览器指纹和code_key;根据查询到的所述浏览器指纹和所述code_key以及从所述登录请求中获取的所述code和所述加密口令,生成验证码签名;将已生成的验证码签名和从所述登录请求中获取的解密后验证码签名进行比对,若一致,则对所述加密口令进行解密处理,得到口令;若所述口令有效,则确定防爆破攻击安全验证通过。
优选地,所述减少用户验证码输入的防爆破攻击安全参数包括加密浏览器指纹;所述防爆破攻击客户端安全组件将减少用户验证码输入的防爆破攻击安全参数添加到登录请求中,并发送至业务系统的服务端包括:所述防爆破攻击客户端安全组件在未查询到本地有免验证码标识字符串code_key时,向所述业务系统的服务端请求验证码,以在用户发起登录请求前提示用户输入验证码;所述防爆破攻击客户端安全组件生成新的c_nonce,并存储所述新的c_nonce;根据所述新的c_nonce,生成新的浏览器指纹,并对所述新的浏览器指纹进行加密,得到加密浏览器指纹;对用户发起所述登录请求时输入的口令进行加密,得到加密口令;将所述加密浏览器指纹拼接到所述登录请求中,从而与用户发起所述登录请求时输入的用户名、所述加密口令、用户输入的验证码一并发送到所述业务系统的服务端。
优选地,所述防爆破攻击服务端安全组件在服务端收到所述登录请求后,对已添加减少用户验证码输入的防爆破攻击安全参数的所述登录请求进行减少用户验证码输入的防爆破攻击安全验证包括:所述防爆破攻击服务端安全组件从所述登录请求中获取用户名、验证码、加密口令、加密浏览器指纹;首先对所述验证码进行验证,验证通过后对所述加密口令进行解密处理,得到口令,并对所述口令进行验证;如果对所述口令和所述验证码均验证通过,则确定防爆破攻击安全验证通过;对所述加密浏览器指纹进行解密,并将解密得到的所述新的浏览器指纹存储在本地,以用于后续的减少用户验证码输入的防爆破攻击安全验证。
优选地,所述浏览器指纹包括canvas指纹,所述防爆破攻击客户端安全组件根据本地存储的c_nonce生成浏览器指纹包括:获取所述c_nonce,通过canvas生成含有所述c_nonce的图片;根据含有所述c_nonce的图片,生成所述canvas指纹。
优选地,所述浏览器指纹还包括基本信息指纹和/或显卡信息指纹;所述防爆破攻击客户端安全组件根据本地存储的c_nonce生成浏览器指纹还包括:所述防爆破攻击客户端安全组件获取浏览器基本信息,并根据浏览器基本信息,生成所述基本信息指纹;和/或,获取显卡信息,并根据显卡信息,生成所述显卡信息指纹;将所述基本信息指纹和/或所述显卡信息指纹与所述canvas指纹拼接在一起。
优选地,所述根据防爆破攻击安全验证结果,向所述客户端发送登录响应包括:所述防爆破攻击服务端安全组件在对所述登录请求的防爆破攻击安全验证通过时,生成新code_key,并存储所述新code_key;对所述新code_key进行加密处理,得到加密后的新code_key;将携带所述加密后的新code_key的登录成功的响应消息发送至所述业务系统的客户端,以便设置在业务系统的客户端的所述防爆破攻击客户端安全组件在获取所述加密后的新code_key后,解密得到所述新code_key,并存储在本地,以用于在下次登录时减少用户验证码输入。
优选地,所述根据防爆破攻击安全验证结果,向所述客户端发送登录响应还包括:所述防爆破攻击服务端安全组件在对所述登录请求的防爆破攻击安全验证不通过时,删除本地保存的所述用户名对应的code_key和浏览器指纹,并向所述业务系统的客户端发送登录失败的响应信息,以便在所述业务系统的客户端收到登录失败的响应信息后,所述防爆破攻击客户端安全组件删除本地保存的c_nonce和code_key,使用户以输入验证码的方式登录。
本发明实施例提供了一种防爆破攻击的安全防护装置,所述装置包括设置在业务系统的客户端的防爆破攻击客户端安全组件和设置在所述业务系统的服务端的防爆破攻击服务端安全组件,其中:防爆破攻击客户端安全组件,用于将用于减少用户验证码输入的防爆破攻击安全参数添加到登录请求中,并发送至业务系统的服务端;防爆破攻击服务端安全组件,用于在服务端收到所述登录请求后,对已添加减少用户验证码输入的防爆破攻击安全参数的所述登录请求进行减少用户验证码输入的防爆破攻击安全验证,并根据防爆破攻击安全验证结果,向所述客户端发送登录响应。
本发明实施例提供了一种防爆破攻击的安全防护方法及装置,设置在业务系统的客户端的防爆破攻击客户端安全组件将减少用户验证码输入的防爆破攻击安全参数添加到登录请求中,并发送至业务系统的服务端;设置在业务系统的服务端的防爆破攻击服务端安全组件在服务端收到所述登录请求后,对已添加减少用户验证码输入的防爆破攻击安全参数的所述登录请求进行减少用户验证码输入的防爆破攻击安全验证,并根据防爆破攻击安全验证结果,向所述客户端发送登录响应,可以在减少用户输入验证码的同时,对爆破攻击实现更有效的安全防御。
附图说明
图1a和图1b是爆破攻击示意图;
图2是本发明实施例提供的一种防爆破攻击的安全防护方法的示意性流程框图;
图3是本发明实施例提供的一种防爆破攻击的安全防护装置的结构示意图;
图4是本发明实施例提供的客户端侧的工作流程图;
图5是本发明实施例提供的服务端侧的工作流程图;
图6是本发明实施例提供的浏览器指纹和code_key的生成和交互流程图。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特有的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
实施例一
图2是本发明实施例提供的一种防爆破攻击的安全防护方法的示意性流程框图,如图2所示,包括以下步骤:
步骤S101:设置在业务系统的客户端的防爆破攻击客户端安全组件将减少用户验证码输入的防爆破攻击安全参数添加到登录请求中,并发送至业务系统的服务端。
步骤S102:设置在业务系统的服务端的防爆破攻击服务端安全组件在服务端收到所述登录请求后,对已添加减少用户验证码输入的防爆破攻击安全参数的所述登录请求进行减少用户验证码输入的防爆破攻击安全验证,并根据防爆破攻击安全验证结果,向所述客户端发送登录响应。
本实施例提供的一种防爆破攻击的安全防护方法,通过在登录请求中添加的安全参数,在减少用户输入验证码的同时,对爆破攻击实现更有效的安全防御。
上述用于减少用户输入验证码的防爆破攻击安全参数包括:随机验证码code和加密验证码签名。
在第一实施方式中,所述步骤S101包括:所述防爆破攻击客户端安全组件在查询到本地有免验证码标识字符串code_key时,随机生成所述code;根据本地存储的随机字符串c_nonce,生成浏览器指纹;对用户发起所述登录请求时输入的口令进行加密,得到加密口令;利用所述code_key、所述code、所述浏览器指纹和所述加密口令,生成验证码签名并进行加密,得到加密验证码签名;将所述code和所述加密验证码签名拼接到所述登录请求中,从而与用户发起所述登录请求时输入的用户名、所述加密口令一并发送到所述业务系统的服务端。相应地,所述步骤S102包括:所述防爆破攻击服务端安全组件从所述登录请求中获取用户名、code、加密口令、加密验证码签名;解密所述加密验证码签名,得到验证码签名;根据所述用户名,查询本地保存的浏览器指纹和code_key;根据查询到的所述浏览器指纹和所述code_key以及从所述登录请求中获取的所述code和所述加密口令,生成验证码签名;将已生成的验证码签名和解密得到的验证码签名进行比对,若一致,则对所述加密口令进行解密处理,得到口令;若所述口令有效,则确定防爆破攻击安全验证通过,此时,所述防爆破攻击服务端安全组件生成新code_key,并存储所述新code_key;对所述新code_key进行加密处理,得到加密后的新code_key;将携带所述加密后的新code_key的登录成功的响应消息发送至所述业务系统的客户端,以便在业务系统的客户端收到登录成功的响应消息后,所述防爆破攻击客户端安全组件从响应消息中获取所述加密后的新code_key后,解密得到所述新code_key,并存储在本地,以用于在下次登录时减少用户验证码输入。若验证码签名比对不一致或者口令无效,则确定防爆破攻击安全验证不通过,此时,所述防爆破攻击服务端安全组件删除本地保存的所述用户名对应的code_key和浏览器指纹,并向所述业务系统的客户端发送登录失败的响应信息,以便在所述业务系统的客户端收到登录失败的响应信息后,所述防爆破攻击客户端安全组件删除本地保存的c_nonce和code_key,使用户以输入验证码的方式登录。
在第二实施方式中,所述步骤S101包括:所述防爆破攻击客户端安全组件在未查询到本地有免验证码标识字符串code_key时,向所述业务系统的服务端请求验证码,以在用户发起登录请求前提示用户输入验证码;所述防爆破攻击客户端安全组件生成新的c_nonce,并存储所述新的c_nonce;根据所述新的c_nonce,生成新的浏览器指纹,并对所述新的浏览器指纹进行加密,得到加密浏览器指纹;对用户发起所述登录请求时输入的口令进行加密,得到加密口令;将所述加密浏览器指纹拼接到所述登录请求中,从而与用户发起所述登录请求时输入的用户名、所述加密口令、用户输入的验证码一并发送到所述业务系统的服务端。相应地,所述步骤S102包括:所述防爆破攻击服务端安全组件从所述登录请求中获取用户名、验证码、加密口令、加密浏览器指纹;首先进行验证码验证,通过验证后对所述加密口令进行解密处理,得到口令;在对所述口令验证通过后,确定防爆破攻击安全验证通过,此时,所述防爆破攻击服务端安全组件对所述加密浏览器指纹进行解密,并将解密得到的所述新的浏览器指纹存储在本地,以用于后续的减少用户验证码输入的防爆破攻击安全验证,另外,所述防爆破攻击服务端安全组件生成新code_key,并存储所述新code_key;对所述新code_key进行加密处理,得到加密后的新code_key;将携带所述加密后的新code_key的登录成功的响应消息发送至所述业务系统的客户端,以便在业务系统的客户端收到登录成功的响应消息后,所述防爆破攻击客户端安全组件从响应消息中获取所述加密后的新code_key后,解密得到所述新code_key,并存储在本地,以用于在下次登录时减少用户验证码输入。在所述口令无效或者所述验证码验证不通过时,如果本地保存有所述用户名对应的code_key和浏览器指纹,则删除本地保存的所述用户名对应的code_key和浏览器指纹,并向所述业务系统的客户端发送登录失败的响应信息,以便在所述业务系统的客户端收到登录失败的响应信息后,所述防爆破攻击客户端安全组件在收到登录失败的响应信息后,所述防爆破攻击客户端安全组件在本地保存有c_nonce和code_key的情况下,删除本地保存的c_nonce和code_key,使用户以输入验证码的方式登录。
上述第一实施方式通常发生在上次登录成功,服务端保存有最新code_key和浏览器指纹,客户端保存有c_nonce和最新code_key的场景。上述第二实施方式通常发生在第一次登录或上次登录失败或客户端本地保存有c_nonce但code_key缺失的场景。
其中,所述浏览器指纹可以包括:canvas指纹,相应地,所述防爆破攻击客户端安全组件根据本地存储的c_nonce生成浏览器指纹可以包括:获取所述c_nonce,通过canvas生成含有所述c_nonce的图片;根据含有所述c_nonce的图片,生成所述canvas指纹。另外,所述浏览器指纹还包括基本信息指纹和/或显卡信息指纹,相应地,所述防爆破攻击客户端安全组件根据本地存储的c nonce生成浏览器指纹还可以包括:所述防爆破攻击客户端安全组件获取浏览器基本信息,并根据浏览器基本信息,生成所述基本信息指纹,和/或,获取显卡信息,并根据显卡信息,生成所述显卡信息指纹;将所述基本信息指纹和/或所述显卡信息指纹与所述canvas指纹拼接在一起。
可见,本实施例的防爆破攻击服务端安全组件和防爆破攻击客户端安全组件通过浏览器指纹+code_key+code+加密后口令的验证码签名验证机制进行防爆破攻击的安全防护,可大量减少用户输入验证码,并有效防止爆破攻击。
实施例二
图3是本发明实施例提供的一种防爆破攻击的安全防护装置的结构示意图,如图3所示,所述装置(或称安全防护工具)包括设置在业务系统的客户端的防爆破攻击客户端安全组件(或称防爆破攻击安全组件客户端)和设置在所述业务系统的服务端的防爆破攻击服务端安全组件(或称防爆破攻击安全组件服务端),其中:
防爆破攻击客户端安全组件,用于将用于减少用户验证码输入的防爆破攻击安全参数添加到登录请求中,并发送至业务系统的服务端;
防爆破攻击服务端安全组件,用于在服务端收到所述登录请求后,对已添加减少用户验证码输入的防爆破攻击安全参数的所述登录请求进行减少用户验证码输入的防爆破攻击安全验证,并根据防爆破攻击安全验证结果,向所述客户端发送登录响应。
本实施例提供的一种防爆破攻击的安全防护装置,通过在请求中添加的安全参数,实现在减少用户输入验证码的同时,对爆破攻击实现更有效的安全防御。
具体地说,防爆破攻击的安全防护工具通过浏览器指纹+验证码认证标识code_key+随机验证码code+加密后口令的验证码签名验证机制来防止爆破攻击。客户端发起请求时,防爆破攻击安全组件客户端获取当前的code_key,基于随机的字符串c_nonce获得浏览器指纹,然后计算验证码签名,签名是为了防止会话被劫持,请求中的参数被篡改。防爆破攻击安全组件服务端对验证码签名进行验证,一致则确认为有效请求,然后再进行口令校验,通过后防爆破攻击安全组件服务端为用户生成新的验证码认证标识code_key,存储在缓存中,并在登录成功的响应信息里面加密返回code_key。如果不一致则视为无效请求,服务端不生成code_key,并且强制用户输入验证码。防爆破攻击安全组件客户端接收到code_key后,解密并存储在本地。其中,浏览器指纹作为计算验证码签名的盐值,是有效解决防爆破攻击的关键,因此浏览器指纹的生成机制尤为重要。同样code_key作为计算验证码签名的盐值的一部分,是校验验证码签名的关键,因此code_key只能使用一次,不论校验结果如何,用完即删除,如果校验不通过,则强制用户输入验证码,以确保安全性。
以下结合图4至图6,对图3的安全防护工具进行详细说明。
为解决目前爆破攻击解决方案中出现的影响用户使用、不能有效防止爆破攻击的问题,本实施例提供一种如图3所示的通过浏览器指纹+验证码认证标识code_key+随机验证码code+加密后口令的验证码签名验证机制进行防爆破攻击的安全防护工具,通过该安全防护工具的使用,可大量减少用户输入验证码并有效解决爆破攻击。
用户访问客户端页面,完成秘钥交换操作,交换的秘钥用于加解密处理。然后该安全防护工具的客户端侧的工作流程图如图4所示,客户端安全组件的详细解决方案如下:
步骤S202-步骤S203:用户输入用户名和口令后,进行登录操作。此时,客户端检测本地是否有code_key,如果有code_key,则不需要请求验证码。客户端随机生成字符串作为验证码code。
步骤S204:客户端根据c_nonce生成浏览器指纹。
步骤S205:客户端计算验证码签名client_code_sign=md5(浏览器指纹+code_key+code+加密后的口令,做签名计算是为了防止code和加密后的口令被篡改,code_key字段不随请求发送以防止中间人劫持。然后对验证码签名加密,得到加密后的验证码签名。
步骤S206:客户端将加密后的验证码签名,自动生成的随机验证码、拼接到已包含用户名和加密后的口令的请求中,随请求一起发送到服务端。
该安全防护工具的服务端侧的工作流程如图5所示,服务端安全组件的详细解决方案如下:
步骤S301:服务端收到请求后,读取参数值:用户账号(或称用户名),code、加密后的口令、加密的验证码签名client_code_sign。
步骤S302:根据用户账号,查询出用户的浏览器指纹和code_key。
步骤S303:计算验证码签名。
服务端调用签名生成算法,得到server_code_sign=md5(浏览器指纹+code_key+code+加密后的口令)。
步骤S304:验证client_code_sign参数。
验证server_code_sign是否等于client_code_sign,若一致,说明参数未被篡改,请求有效,此时直接执行步骤S305。
若不一致,说明参数被篡改,请求无效,删除该用户的浏览器指纹和code_key,然后给客户端返回特定响应码。客户端删除本地code_key,重新随机生成c_nonce以及基于c_nonce的浏览器指纹,要求用户输入验证码。
需要指出的是,无论验证结果如何,服务端都要删除缓存中的code_key,以保证code_key的一次有效性,防止攻击者多次使用。
步骤S305:校验口令。
解密客户端口令,校验客户端口令是否有效,如果口令有效,则请求有效,服务端为用户生成新的随机字符串code_key,存储在缓存中,并在响应信息里面加密返回code_key。
如果口令无效,则请求无效,服务端不生成code_key,给客户端返回特定响应码。客户端删除本地code_key,重新随机生成c_nonce和浏览器指纹,要求用户输入验证码。
步骤S306:客户端接收到code_key后,解密并存储在本地。
需要指出的是,如果客户端本地没有code_key,则需要向服务端请求验证码,并显示在表单中,要求用户输入验证码,客户端不需要生成随机验证码code;客户端随机生成c_nonce,一方面将该c_nonce保存在本地,另一方面基于该c_nonce生成浏览器指纹,并将该浏览器指纹加密后拼接到登录请求中,从而与用户输入的用户名、加密口令、用户输入的验证码一并发送至服务端。相应地,服务端在对验证码和解密后的口令验证通过后,进一步通过解密得到登录请求中携带的浏览器指纹,并保存该浏览器指纹;服务端还会生成一次性的code_key,并将该code_key加密后携带于登录成功的响应消息中发送至客户端,使客户端通过解密得到并保存code_key。这样客户端与服务端之间实现了基于c_nonce的浏览器指纹和code_key的交互,使得用户在下次登录时,可以在减少验证码输入的同时,更安全有效地防御爆破攻击。
需要说明的是,服务端在验证码签名不一致或口令无效的情况下,会给客户端返回特定响应码,客户端在收到该特定响应码后,具体处理内容与客户端在本地没有code_key时的处理过程相同,不再赘述。
本实施例涉及的参数及说明如表1所示。
表1.
浏览器指纹和code_key的生成和交互流程如图6所示,具体如下:
步骤S401:用户访问系统后,客户端获取浏览器基本信息,如硬件类型、操作系统、用户代理、系统字体、语言、浏览器插件、浏览器扩展、浏览器设置、时区差等。然后计算浏览器基本信息hash,即hash(浏览器基本信息),得到基本信息指纹。
步骤S402:通过Webgl对象获取到用户的显卡信息,比如显卡名称、显卡型号、显卡制造商等。然后计算显卡信息hash,即hash(显卡信息),得到显卡信息指纹。
步骤S403:随机生成字符串c_nonce,并存储在本地。
步骤S404:通过canvas生成含有随机字符串c_nonce的图片,然后计算图片hash,即hash(图片),得到canvas指纹。
步骤S405:计算浏览器指纹。
拼接基本信息指纹、显卡信息指纹和canvas指纹,形成浏览器指纹。
需要说明的是,c_nonce随机生成,不同客户端的浏览器信息、显卡信息有区别以及canvas引擎渲染存在差异,所以不同客户端生成的浏览器指纹是不同的,同一个客户端,只要c_nonce不变,每次生成的浏览器指纹都是相同的。
步骤S406:用户首次登录系统时,本地不存在code_key,所以需要输入用户名、口令和验证码,在用户登录请求中,客户端会将浏览器指纹加密并放入请求中,与用户信息一并发送到服务端,认证通过后,服务端保存浏览器指纹信息,并生成code_key,加密返回给客户端,客户端接收到code_key后,解密并存储在本地。
具体实施时,可以将本发明的方法封装为防爆破攻击安全组件,并在业务系统引入防爆破攻击安全组件。具体地说,防爆破攻击安全组件包括防爆破攻击客户端安全组件和防爆破攻击服务端安全组件,在业务系统的客户端引入防爆破攻击客户端安全组件,在业务系统服务端引入防爆破攻击服务端安全组件。业务系统在开启防爆破功能后,服务端在收到爆破攻击请求时,会给客户端反馈相关错误信息(错误码:474,错误提示:非法请求)。在开发过程中使用时,具体包括业务系统的客户端和业务系统的服务端的使用步骤。其中,业务系统客户端在开发时的使用步骤包括:(1)引入安全组件js包;(2)开启防爆破攻击配置,客户端直接调用安全组件提供的防爆破攻击的方法来发送请求,即可与安全组件服务端对接,具备防爆破攻击的功能。业务系统服务端在开发时的使用步骤包括:(1)集成安全组件,具体包括:引入安全组件jar包;将安全组件加入到扫描路径;将SpringContext赋值给SecurityAPI;将安全组件配置文件ESAPI.properties放到resource目录下;(2)开启会话组件,具体包括:启用安全组件服务端提供的SessionToolFilter;根据业务微服务选择的是session还是token认证机制,在ESAPI.properties中配置ESAPI.sessionToolHelper所使用的安全组件提供的具体的会话组件帮助类;(3)开启防爆破功能,启用安全组件服务端提供的BruteForceAttackFilter;(4)指定防爆破攻击接口。
综上所述,本发明具有以下优点:
1、本发明综合考虑了浏览器指纹、防止中间人劫持,可保证每个用户登录的code_key及签名均不同,且无法伪造;
2、通过浏览器指纹和code_key的生成和交互机制,结合随机验证码,验证码签名,不仅可有效解决爆破攻击,并且能减少用户输入验证码的次数,提高用户的系统使用体验;
3、通过封装成防爆破攻击客户端安全组件和防爆破攻击服务端安全组件,业务系统引入该安全组件后,可降低开发难度、开发工作量以及减少了业务人员的相关操作。
以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。本领域技术人员不脱离本发明的范围和实质内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。
Claims (10)
1.一种防爆破攻击的安全防护方法,其特征在于,所述方法包括以下步骤:
设置在业务系统的客户端的防爆破攻击客户端安全组件将减少用户验证码输入的防爆破攻击安全参数添加到登录请求中,并发送至业务系统的服务端;
设置在业务系统的服务端的防爆破攻击服务端安全组件在服务端收到所述登录请求后,对已添加减少用户验证码输入的防爆破攻击安全参数的所述登录请求进行减少用户验证码输入的防爆破攻击安全验证,并根据防爆破攻击安全验证结果,向所述客户端发送登录响应。
2.根据权利要求1所述的方法,其特征在于,所述减少用户验证码输入的防爆破攻击安全参数包括:随机验证码code和加密验证码签名;
所述防爆破攻击客户端安全组件将减少用户验证码输入的防爆破攻击安全参数添加到登录请求中,并发送至业务系统的服务端包括:
所述防爆破攻击客户端安全组件在查询到本地有免验证码标识字符串code_key时,随机生成所述code;
根据本地存储的随机字符串c_nonce,生成浏览器指纹;
对用户发起所述登录请求时输入的口令进行加密,得到加密口令;
利用所述code_key、所述code、所述浏览器指纹和所述加密口令,生成验证码签名并进行加密,得到加密验证码签名;
将所述code和所述加密验证码签名拼接到所述登录请求中,从而与用户发起所述登录请求时输入的用户名、所述加密口令一并发送到所述业务系统的服务端。
3.根据权利要求2所述的方法,其特征在于,所述防爆破攻击服务端安全组件在服务端收到所述登录请求后,对已添加减少用户验证码输入的防爆破攻击安全参数的所述登录请求进行减少用户验证码输入的防爆破攻击安全验证包括:
所述防爆破攻击服务端安全组件从所述登录请求中获取用户名、code、加密口令、加密验证码签名;
对所述加密验证码签名进行解密,得到验证码签名;
根据所述用户名,查询本地保存的浏览器指纹和code_key;
根据查询到的所述浏览器指纹和所述code_key以及从所述登录请求中获取的所述code和所述加密口令,生成验证码签名;
将已生成的验证码签名和解密得到的验证码签名进行比对,若一致,则对所述加密口令进行解密处理,得到口令;
若所述口令有效,则确定防爆破攻击安全验证通过。
4.根据权利要求1所述的方法,其特征在于,所述防爆破攻击客户端安全组件将减少用户验证码输入的防爆破攻击安全参数添加到登录请求中,并发送至业务系统的服务端包括:
所述防爆破攻击客户端安全组件在未查询到本地有免验证码标识字符串code_key时,向所述业务系统的服务端请求验证码,以在用户发起登录请求前提示用户输入验证码;
所述防爆破攻击客户端安全组件生成新的c_nonce,并存储所述新的c_nonce;
根据所述新的c_nonce,生成新的浏览器指纹,并对所述新的浏览器指纹进行加密,得到加密浏览器指纹;
对用户发起所述登录请求时输入的口令进行加密,得到加密口令;
将所述加密浏览器指纹拼接到所述登录请求中,从而与用户发起所述登录请求时输入的用户名、所述加密口令、用户输入的验证码一并发送到所述业务系统的服务端。
5.根据权利要求4所述的方法,其特征在于,所述防爆破攻击服务端安全组件在服务端收到所述登录请求后,对已添加减少用户验证码输入的防爆破攻击安全参数的所述登录请求进行减少用户验证码输入的防爆破攻击安全验证包括:
所述防爆破攻击服务端安全组件从所述登录请求中获取用户名、验证码、加密口令、加密浏览器指纹;
对所述验证码进行验证,并在验证通过后,对所述加密口令进行解密处理,得到口令;
对所述口令进行验证,并在验证通过后,确定防爆破攻击安全验证通过;
对所述加密浏览器指纹进行解密,并将解密得到的所述新的浏览器指纹存储在本地,以用于后续的减少用户验证码输入的防爆破攻击安全验证。
6.根据权利要求1-5任意一项所述的方法,其特征在于,所述浏览器指纹包括canvas指纹,所述防爆破攻击客户端安全组件根据本地存储的c_nonce生成浏览器指纹包括:
获取所述c_nonce,通过canvas生成含有所述c_nonce的图片;
根据含有所述c_nonce的图片,生成所述canvas指纹。
7.根据权利要求6所述的方法,其特征在于,所述浏览器指纹还包括基本信息指纹和/或显卡信息指纹;
所述防爆破攻击客户端安全组件根据本地存储的c_nonce生成浏览器指纹还包括:
所述防爆破攻击客户端安全组件获取浏览器基本信息,并根据浏览器基本信息,生成所述基本信息指纹;和/或,获取显卡信息,并根据显卡信息,生成所述显卡信息指纹;
将所述基本信息指纹和/或所述显卡信息指纹与所述canvas指纹拼接在一起。
8.根据权利要求3或5所述的方法,其特征在于,所述根据防爆破攻击安全验证结果,向所述客户端发送登录响应包括:
所述防爆破攻击服务端安全组件在对所述登录请求的防爆破攻击安全验证通过时,生成新code_key,并存储所述新code_key;
对所述新code_key进行加密处理,得到加密后的新code_key;
将携带所述加密后的新code_key的登录成功的响应消息发送至所述业务系统的客户端,以便设置在业务系统的客户端的所述防爆破攻击客户端安全组件在获取所述加密后的新code_key后,解密得到所述新code_key,并存储在本地,以用于在下次登录时减少用户验证码输入。
9.根据权利要求8所述的方法,其特征在于,所述根据防爆破攻击安全验证结果,向所述客户端发送登录响应还包括:
所述防爆破攻击服务端安全组件在对所述登录请求的防爆破攻击安全验证不通过时,删除本地保存的所述用户名对应的code_key和浏览器指纹,并向所述业务系统的客户端发送登录失败的响应信息,以便在所述业务系统的客户端收到登录失败的响应信息后,所述防爆破攻击客户端安全组件删除本地保存的c_nonce和code_key,使用户以输入验证码的方式登录。
10.一种防爆破攻击的安全防护装置,其特征在于,所述装置包括设置在业务系统的客户端的防爆破攻击客户端安全组件和设置在所述业务系统的服务端的防爆破攻击服务端安全组件,其中:
防爆破攻击客户端安全组件,用于将用于减少用户验证码输入的防爆破攻击安全参数添加到登录请求中,并发送至业务系统的服务端;
防爆破攻击服务端安全组件,用于在服务端收到所述登录请求后,对已添加减少用户验证码输入的防爆破攻击安全参数的所述登录请求进行减少用户验证码输入的防爆破攻击安全验证,并根据防爆破攻击安全验证结果,向所述客户端发送登录响应。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210511640.3A CN114884736B (zh) | 2022-05-11 | 2022-05-11 | 一种防爆破攻击的安全防护方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210511640.3A CN114884736B (zh) | 2022-05-11 | 2022-05-11 | 一种防爆破攻击的安全防护方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114884736A true CN114884736A (zh) | 2022-08-09 |
CN114884736B CN114884736B (zh) | 2024-04-09 |
Family
ID=82676069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210511640.3A Active CN114884736B (zh) | 2022-05-11 | 2022-05-11 | 一种防爆破攻击的安全防护方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114884736B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080148404A1 (en) * | 2006-12-19 | 2008-06-19 | International Business Machines Corporation | Method, system, and program product for characterizing computer attackers |
CN103944900A (zh) * | 2014-04-18 | 2014-07-23 | 中国科学院计算技术研究所 | 一种基于加密的跨站请求攻击防范方法及其装置 |
WO2015101036A1 (en) * | 2013-12-30 | 2015-07-09 | Tencent Technology (Shenzhen) Company Limited | Methods and systems for verifying a transaction |
US20170257358A1 (en) * | 2016-03-04 | 2017-09-07 | ShoCard, Inc. | Method and System for Authenticated Login Using Static or Dynamic Codes |
US20170308901A1 (en) * | 2016-04-21 | 2017-10-26 | Samsung Electronics Co., Ltd | Device for performing security login service and method |
US10038715B1 (en) * | 2017-08-01 | 2018-07-31 | Cloudflare, Inc. | Identifying and mitigating denial of service (DoS) attacks |
CN111786971A (zh) * | 2020-06-19 | 2020-10-16 | 杭州安恒信息技术股份有限公司 | 主机爆破攻击的防御方法、装置和计算机设备 |
US20200351263A1 (en) * | 2019-05-01 | 2020-11-05 | Salesforce.Com, Inc. | Dynamic user id |
CN112711759A (zh) * | 2020-12-28 | 2021-04-27 | 山东鲁能软件技术有限公司 | 一种防重放攻击漏洞安全防护的方法及系统 |
CN113612797A (zh) * | 2021-08-23 | 2021-11-05 | 金陵科技学院 | 一种基于国密算法的Kerberos身份认证协议改进方法 |
CN114124441A (zh) * | 2021-09-29 | 2022-03-01 | 上海欧冶金融信息服务股份有限公司 | 一种基于jwt的客户端认证方法及系统 |
CN114422248A (zh) * | 2022-01-20 | 2022-04-29 | 深信服科技股份有限公司 | 一种攻击处理方法、系统、网络安全设备及存储介质 |
-
2022
- 2022-05-11 CN CN202210511640.3A patent/CN114884736B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080148404A1 (en) * | 2006-12-19 | 2008-06-19 | International Business Machines Corporation | Method, system, and program product for characterizing computer attackers |
WO2015101036A1 (en) * | 2013-12-30 | 2015-07-09 | Tencent Technology (Shenzhen) Company Limited | Methods and systems for verifying a transaction |
CN103944900A (zh) * | 2014-04-18 | 2014-07-23 | 中国科学院计算技术研究所 | 一种基于加密的跨站请求攻击防范方法及其装置 |
US20170257358A1 (en) * | 2016-03-04 | 2017-09-07 | ShoCard, Inc. | Method and System for Authenticated Login Using Static or Dynamic Codes |
US20170308901A1 (en) * | 2016-04-21 | 2017-10-26 | Samsung Electronics Co., Ltd | Device for performing security login service and method |
US10038715B1 (en) * | 2017-08-01 | 2018-07-31 | Cloudflare, Inc. | Identifying and mitigating denial of service (DoS) attacks |
US20200351263A1 (en) * | 2019-05-01 | 2020-11-05 | Salesforce.Com, Inc. | Dynamic user id |
CN111786971A (zh) * | 2020-06-19 | 2020-10-16 | 杭州安恒信息技术股份有限公司 | 主机爆破攻击的防御方法、装置和计算机设备 |
CN112711759A (zh) * | 2020-12-28 | 2021-04-27 | 山东鲁能软件技术有限公司 | 一种防重放攻击漏洞安全防护的方法及系统 |
CN113612797A (zh) * | 2021-08-23 | 2021-11-05 | 金陵科技学院 | 一种基于国密算法的Kerberos身份认证协议改进方法 |
CN114124441A (zh) * | 2021-09-29 | 2022-03-01 | 上海欧冶金融信息服务股份有限公司 | 一种基于jwt的客户端认证方法及系统 |
CN114422248A (zh) * | 2022-01-20 | 2022-04-29 | 深信服科技股份有限公司 | 一种攻击处理方法、系统、网络安全设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114884736B (zh) | 2024-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7681037B2 (en) | Network connection system | |
CN109361668A (zh) | 一种数据可信传输方法 | |
CN112711759A (zh) | 一种防重放攻击漏洞安全防护的方法及系统 | |
CN106453361B (zh) | 一种网络信息的安全保护方法及系统 | |
JPH09128337A (ja) | コンピュータ・ネットワークにおけるマスカレード・アタック保護方法及びその装置 | |
CN112261012A (zh) | 一种浏览器、服务器以及网页访问方法 | |
KR102137122B1 (ko) | 보안 체크 방법, 장치, 단말기 및 서버 | |
CN110505055B (zh) | 基于非对称密钥池对和密钥卡的外网接入身份认证方法和系统 | |
CN110071937B (zh) | 基于区块链的登录方法、系统及存储介质 | |
CN112861089A (zh) | 授权认证的方法、资源服务器、资源用户端、设备和介质 | |
CN111130799B (zh) | 一种基于tee进行https协议传输的方法及系统 | |
US9954853B2 (en) | Network security | |
CN105516135A (zh) | 用于账号登录的方法和装置 | |
CN110855624A (zh) | 基于web接口的安全校验方法及相关设备 | |
CN112968910B (zh) | 一种防重放攻击方法和装置 | |
US10122755B2 (en) | Method and apparatus for detecting that an attacker has sent one or more messages to a receiver node | |
CN114244508A (zh) | 数据加密方法、装置、设备及存储介质 | |
CN112699374A (zh) | 一种完整性校验漏洞安全防护的方法及系统 | |
CN109981677B (zh) | 一种授信管理方法及装置 | |
CN114844644A (zh) | 资源请求方法、装置、电子设备及存储介质 | |
CN112055008A (zh) | 一种身份验证方法、装置、计算机设备和存储介质 | |
CN115473655B (zh) | 接入网络的终端认证方法、装置及存储介质 | |
CN106850592A (zh) | 一种信息处理方法、服务器及终端 | |
US8261088B2 (en) | Secret authentication system | |
CN114884736B (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 | ||
GR01 | Patent grant |