CN111695152A - 一种基于安全代理的MySQL数据库防护方法 - Google Patents
一种基于安全代理的MySQL数据库防护方法 Download PDFInfo
- Publication number
- CN111695152A CN111695152A CN202010459152.3A CN202010459152A CN111695152A CN 111695152 A CN111695152 A CN 111695152A CN 202010459152 A CN202010459152 A CN 202010459152A CN 111695152 A CN111695152 A CN 111695152A
- Authority
- CN
- China
- Prior art keywords
- user
- agent
- authentication
- sql
- password
- 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
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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- 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/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0823—Network architectures or network communication protocols for network security for authentication of entities using certificates
-
- 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/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
- H04L63/0838—Network architectures or network communication protocols for network security for authentication of entities using passwords using one-time-passwords
-
- 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/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0884—Network architectures or network communication protocols for network security for authentication of entities by delegation of authentication, e.g. a proxy authenticates an entity to be authenticated on behalf of this entity vis-à-vis an authentication entity
-
- 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/32—Cryptographic 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/3226—Cryptographic 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 using a predetermined code, e.g. password, passphrase or PIN
- H04L9/3228—One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
-
- 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/32—Cryptographic 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/3263—Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2463/00—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
- H04L2463/082—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying multi-factor authentication
-
- 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/32—Cryptographic 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/3236—Cryptographic 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 using cryptographic hash functions
- H04L9/3239—Cryptographic 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 using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- 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/32—Cryptographic 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/3236—Cryptographic 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 using cryptographic hash functions
- H04L9/3242—Cryptographic 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 using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于安全代理的MySQL数据库防护方法,包括以下步骤:S1.用户发起注册请求,代理端初始化,用户根据代理端的证书的有效性决定是否继续注册,代理端根据注册结果决定是否允许用户注册;S2.注册成功的用户发起登录请求,代理端对用户进行双因子认证,若通过认证,允许用户执行SQL语句,否则,认证失败,客户端中止认证过程;S3.对于通过双因子认证的用户执行SQL命令,安全代理处理SQL语句,返回执行结果或拦截SQL语句。本发明采取安全代理技术,提供了MySQL数据库的安全防护机制,保障了MySQL数据库的安全。
Description
技术领域
本发明涉及一种基于安全代理的MySQL数据库防护方法,属于信息安全技术领域。
背景技术
MySQL数据库面临的安全威胁主要来自于三个方面:第三方组件、数据库自身系统和人为因素。第三方组件和数据库自身系统的漏洞属于产品的缺陷,通常依赖于厂商和组件提供方发布补丁来修复。人为因素通常是数据库安全研究的重点。人为因素的安全性体现在身份认证和SQL语句执行上。
MySQL数据库使用身份认证技术来保证用户是数据库的合法使用者。用户通过输入口令来完成身份认证过程。在数据库的身份认证过程中,容易遭受以下三类安全攻击:①监听:非法用户通过网络监听来获取用户口令;②口令猜测:非法用户利用从系统中截获的用户信息,或是利用社会工程学获取的用户信息来猜测用户口令;③重放攻击:非法用户获得已通过认证的用户认证包,并将其再发送一次来达到欺骗系统的目的。
除了身份认证过程之外,MySQL数据库在SQL语句执行过程中也容易遭受威胁。这种威胁来自于SQL语句本身,包括SQL注入和SQL高危操作。SQL高危操作主要来自于数据库的合法使用者,比如恶意删除用户数据、非法操作导致数据库服务器宕机等。SQL注入是MySQL在SQL语句执行过程中容易遭受的另一安全威胁。即使目前已有许多针对SQL注入的防御方法,但是随着网络技术的不断发展,攻击手段也在不断进化。同时,程序员素质的参差不齐,安全意识和经验也各不一样,所以仍然会有许多系统存在着SQL注入漏洞。
因此,本领域的技术人员致力于开发一种基于安全代理的MySQL数据库防护方法,通过多重保护,为MySQL数据库提供全方位的安全。
发明内容
发明目的:本发明提供一种基于安全代理的MySQL数据库防护方法,该方法在以安全代理的方式提高MySQL数据库的安全性。
技术方案:本发明所述的一种基于安全代理的MySQL数据库防护方法,包括以下步骤:
S1.用户发起注册请求,代理端初始化,用户根据代理端的证书的有效性决定是否继续注册,代理端根据注册结果决定是否允许用户注册;
S2.注册成功的用户发起登录请求,代理端对用户进行双因子认证,若通过认证,允许用户执行SQL语句,否则,认证失败,客户端中止认证过程;
S3.对于通过双因子认证的用户执行SQL命令,安全代理处理SQL语句,返回执行结果或拦截SQL语句。
进一步地,步骤S1的具体方法如下:
S11.用户发起注册请求;
S12.代理端初始化,将代理端包含代理端公钥KPR的证书传输给客户端;
S13.客户端接收到代理端传输的证书后,验证证书的有效性,若证书无效,则终止认证过程;否则,客户端生成用于在注册和认证阶段和代理端通信的会话密钥KC,并使用代理端公钥KPR加密传输用户名username、密码哈希值SHA(password)、在注册和认证阶段和代理端通信的会话密钥KC和设备识别码deviceID;
S14.代理端使用代理端私钥KPS解密客户端消息得到用户名username、密码哈希值SHA(password)和在注册和认证阶段和代理端通信的会话密钥KC,将其存储至MySQL服务端,并将用户名username和二次哈希值SHA(SHA(password))存储至用户列表,使该用户为MySQL服务端合法用户;
S15.若服务端发现已存在该用户则向安全代理返回错误消息,否则返回成功消息表示存储成功;
S16.代理端根据服务端的返回信息,向客户端返回注册结果,若注册成功,则根据设备识别码deviceID生成一次性口令算法使用密钥KT,存储在代理端,然后使用在注册和认证阶段和代理端通信的会话密钥KC加密一次性口令算法使用密钥KT和起始时间戳T0并发送给客户端,客户端收到后使用在注册和认证阶段和代理端通信的会话密钥KC解密得到一次性口令算法使用密钥KT和起始时间戳T0并存储;
进一步地,步骤S2的具体方法如下:
S21.客户端发起登录请求,并发送代理端公钥KPR加密的随机数RNUM、用户名username、密码哈希值SHA(passwoed)和命令执行阶段的会话密钥KS;
S22.代理端使用代理端私钥KPS解密客户端消息得到随机数、用户名和密码哈希值,并使用该用户的用户名向服务端发起查询请求,查询该用户的信息;
S23.服务端接收代理端的查询请求,返回该用户的用户名username、二次哈希值SHA(SHA(password))和在注册和认证阶段和代理端通信的会话密钥KC;
S24.代理端接收服务端的查询结果,进行密码校验,若密码一致,则返回消息要求客户端输入一次性口令,否则返回认证失败,同时,向客户端返回使用命令执行阶段的会话密钥KS加密的随机数RNUM,返回的整个消息使用在注册和认证阶段和代理端通信的会话密钥KC加密;
S25.客户端使用在注册和认证阶段和代理端通信的会话密钥KC解密代理端的数据,获得消息和加密的RNUM,使用命令执行阶段的会话密钥KS解密得到随机数RNUM′与加密的随机数RNUM比较,若不一致则停止认证过程;若一致,则根据下列公式计算一次性口令TOTP:
TOTP=HOTP(KT,T)
其中HMAC、HOTP和T为计算使用的中间函数与参数:
HOTP(K,C)=Truncate(HMAC(K,C))mod 10d
HMAC(K,m)=H((K′XOR opad)||H((K′XOR ipad)||m))
式中K表示所使用的密钥,m表示要加密的消息,K′表示当使用SHA-1、MD5等散列函数而K长度不足时在K尾部补0后得到的值,XOR表示异或运算,ipad和opad分别表示内外层HASH填充值,C表示输入的参数值,Truncate表示将HMAC值转换为32位无符号整数的函数,d表示HOTP口令的位数,T表示时间计数器值,用于表示当前的时间戳,floor表示向下取整函数,unixtime为时间戳函数,now表示当前时间,T0表示约定的起始时间戳,TX表示哈希值的有效期,KT表示一次性口令算法所使用的密钥。
同时,客户端生成用于下一次认证过程客户端与服务端的会话密钥K′C用于下一次认证,然后发送使用代理端公钥KPR加密的一次性口令TOTP和用于下一次认证过程客户端与服务端的会话密钥K′C至代理端;
S26.代理端根据步骤S25.中的公式和下列公式计算当前时间前后各三个共计七个一次性口令:
式中T表示时间计数器值,用于表示当前的时间戳,floor表示向下取整函数,unixtime为时间戳函数,now表示当前时间,T0表示约定的起始时间戳,TX表示哈希值的有效期,offset表示当前时间漂移值。
并与客户端发送的一次性口令TOTP逐一比对,若存在一致的一次性口令,则更新时间漂移值offset、在注册和认证阶段和代理端通信的会话密钥KC,并返回认证成功;否则,返回认证失败,并记录错误次数,当达到错误次数的阈值时,禁止该用户登录。
进一步地,步骤S3的具体方法如下:
S31.将主机IP与IP地址黑名单中的IP地址进行匹配,如果匹配上,则丢弃该来源所有请求,若没有匹配上,则转步骤S32;
S32.预处理SQL语句;
S33.判断字符串的长度sLen是否合法,若sLen=0则拦截该查询,否则转步骤S34;
S34.计算SQL语句特征码:初始化sql_state变量,该变量包含tokenvec、fingerprint,tokenvec是一个对象数组,存储SQL语句中每一个字符对应的类型type、长度len和值val,fingerprint变量存储的值即为最终生成的特征码值;然后,执行sqli_fingerprint函数,对SQL语句进行词法分析和语法分析,根据SQL语句中每一个字符的类型给sql_state.tokenvec赋值;再根据词法与语法分析转换表,将SQL语句转换为特征码,并记录在变量sql_state.fingerprint中;最后,执行sqli_fold函数,对特征码进行折叠,最终生成5位SQL特征码,覆盖变量sql_state_fingerprint;
S35.将sql_state.fingerprint的值与特征库中存储的SQL注入特征语句进行比对,若存在该指纹,则拦截该语句,否则转步骤S36;
S36.将SQL语句与SQL黑名单中的语句一一比对,若匹配成功,则拦截该语句,否则,放行该语句并返回执行结果。
有益效果:
相对于现有技术,本发明具有以下优点:
1.结合安全代理和双因子认证技术,增强了MySQL数据库身份认证的安全性,能够有效抵御身份认证过程中的口令猜测攻击、重放攻击等安全攻击;
2.使用SQL特征库以及SQL黑名单过滤SQL语句,增强了MySQL数据库在SQL语句执行过程中的安全性,能够有效过滤SQL注入语句和SQL高危操作。
附图说明
图1为本发明具体实施方式的流程图。
图2为主机IP地址黑名单过滤流程。
图3为双因子认证过程。
图4为SQL语句过滤流程。
具体实施方式
下面将结合附图对本发明作进一步描述。
图1描述了本发明具体执行步骤。
本发明所述的一种基于安全代理的MySQL数据库防护方法,包括以下步骤:
S1.用户发起注册请求,代理端初始化,用户根据代理端的证书的有效性决定是否继续注册,代理端根据注册结果决定是否允许用户注册;
S2.注册成功的用户发起登录请求,代理端对用户进行双因子认证,若通过认证,允许用户执行SQL语句,否则,认证失败,客户端中止认证过程;
S3.对于通过双因子认证的用户执行SQL命令,安全代理处理SQL语句,返回执行结果或拦截SQL语句。
非法用户在对MySQL进行攻击时,该用户的IP对数据库端口的访问频率会很高。建立IP地址黑名单来过滤一些有着异常行为的主机,这能够对可能存在的攻击行为进行初步过滤。代理识别数据包中的主机IP地址,若该主机IP存在于管理员配置的主机IP地址黑名单中,则丢弃该来源的数据包。管理员通过修改配置文件来进行主机IP地址黑名单的管理。
具体执行过程如图2所示。
步骤S1的具体方法如下:
S11.用户发起注册请求;
S12.代理端初始化,将代理端包含代理端公钥KPR的证书传输给客户端;
S13.客户端接收到代理端传输的证书后,验证证书的有效性,若证书无效,则终止认证过程;否则,客户端生成用于在注册和认证阶段和代理端通信的会话密钥KC,并使用代理端公钥KPR加密传输用户名username、密码哈希值SHA(password)、在注册和认证阶段和代理端通信的会话密钥KC和设备识别码deviceID;
S14.代理端使用代理端私钥KPS解密客户端消息得到用户名username、密码哈希值SHA(password)和在注册和认证阶段和代理端通信的会话密钥KC,将其存储至MySQL服务端,并将用户名username和二次哈希值SHA(SHA(password))存储至用户列表,使该用户为MySQL服务端合法用户;
S15.若服务端发现已存在该用户则向安全代理返回错误消息,否则返回成功消息表示存储成功;
S16.代理端根据服务端的返回信息,向客户端返回注册结果,若注册成功,则根据设备识别码deviceID生成一次性口令算法使用密钥KT,存储在代理端,然后使用在注册和认证阶段和代理端通信的会话密钥KC加密一次性口令算法使用密钥KT和起始时间戳T0并发送给客户端,客户端收到后使用在注册和认证阶段和代理端通信的会话密钥KC解密得到一次性口令算法使用密钥KT和起始时间戳T0并存储;
双因子认证的流程如图3所示,具体认证步骤如下:
S21.客户端发起登录请求,并发送代理端公钥KPR加密的随机数RNUM、用户名username、密码哈希值SHA(password)和命令执行阶段的会话密钥KS;
S22.代理端使用代理端私钥KPS解密客户端消息得到随机数、用户名和密码哈希值,并使用该用户的用户名向服务端发起查询请求,查询该用户的信息;
S23.服务端接收代理端的查询请求,返回该用户的用户名username、二次哈希值SHA(SHA(password))和在注册和认证阶段和代理端通信的会话密钥KC;
S24.代理端接收服务端的查询结果,进行密码校验,若密码一致,则返回消息要求客户端输入一次性口令,否则返回认证失败,同时,向客户端返回使用命令执行阶段的会话密钥KS加密的随机数RNUM,返回的整个消息使用在注册和认证阶段和代理端通信的会话密钥KC加密;
S25.客户端使用在注册和认证阶段和代理端通信的会话密钥KC解密代理端的数据,获得消息和加密的RNUM,使用命令执行阶段的会话密钥KS解密得到随机数RNUM′与加密的随机数RNUM比较,若不一致则停止认证过程;若一致,则根据下列公式计算一次性口令TOTP:
TOTP=HOTP(KT,T)
其中HMAC、HOTP和T为计算使用的中间函数与参数:
HOTP(K,C)=Truncate(HMAC(K,C))mod 10d
HMAC(K,m)=H((K′XOR opad)||H((K′XOR ipad)||m))
式中K表示所使用的密钥,m表示要加密的消息,K′表示当使用SHA-1、MD5等散列函数而K长度不足时在K尾部补0后得到的值,XOR表示异或运算,ipad和opad分别表示内外层HASH填充值,C表示输入的参数值,Truncate表示将HMAC值转换为32位无符号整数的函数,d表示HOTP口令的位数,T表示时间计数器值,用于表示当前的时间戳,floor表示向下取整函数,unixtime为时间戳函数,now表示当前时间,T0表示约定的起始时间戳,TX表示哈希值的有效期,KT表示一次性口令算法所使用的密钥。
同时,客户端生成用于下一次认证过程客户端与服务端的会话密钥K′C用于下一次认证,然后发送使用代理端公钥KPR加密的一次性口令TOTP和用于下一次认证过程客户端与服务端的会话密钥K′C至代理端;
S26.代理端根据步骤S25.中的公式和下列公式计算当前时间前后各三个共计七个一次性口令:
式中T表示时间计数器值,用于表示当前的时间戳,floor表示向下取整函数,unixtime为时间戳函数,now表示当前时间,T0表示约定的起始时间戳,TX表示哈希值的有效期,offset表示当前时间漂移值。
并与客户端发送的一次性口令TOTP逐一比对,若存在一致的一次性口令,则更新时间漂移值offset、在注册和认证阶段和代理端通信的会话密钥KC,并返回认证成功;否则,返回认证失败,并记录错误次数,当达到错误次数的阈值时,禁止该用户登录。
SQL语句过滤流程如图4所示:
S31.将主机IP与IP地址黑名单中的IP地址进行匹配,如果匹配上,则丢弃该来源所有请求,若没有匹配上,则转步骤S32;
S32.预处理SQL语句;
S33.判断字符串的长度sLen是否合法,若sLen=0则拦截该查询,否则转步骤S34;
S34.计算SQL语句特征码:初始化sql_state变量,该变量包含tokenvec、fingerprint,tokenvec是一个对象数组,存储SQL语句中每一个字符对应的类型type、长度len和值val,fingerprint变量存储的值即为最终生成的特征码值;然后,执行sqli_fingerprint函数,对SQL语句进行词法分析和语法分析,根据SQL语句中每一个字符的类型给sql_state.tokenvec赋值;再根据词法与语法分析转换表,将SQL语句转换为特征码,并记录在变量sql_state.fingerprint中;最后,执行sqli_fold函数,对特征码进行折叠,最终生成5位SQL特征码,覆盖变量sql_state_fingerprint;
S35.将sql_state.fingerprint的值与特征库中存储的SQL注入特征语句进行比对,若存在该指纹,则拦截该语句,否则转步骤S36;
S36.将SQL语句与SQL黑名单中的语句一一比对,若匹配成功,则拦截该语句,否则,放行该语句并返回执行结果。
SQL黑名单基于SQL注入过滤中使用的特征提取算法,维护一张SQL语句黑名单,该黑名单可以是数据库系统的管理员手动添加具体的SQL语句模板。同时,考虑到数据库运行效率以及敏感数据泄漏的问题,对于执行时间过长以及查询频率过高的SQL语句也需要加入黑名单。
Claims (4)
1.一种基于安全代理的MySQL数据库防护方法,其特征在于,该方法包括以下步骤:
S1.用户发起注册请求,代理端初始化,用户根据代理端的证书的有效性决定是否继续注册,代理端根据注册结果决定是否允许用户注册;
S2.注册成功的用户发起登录请求,代理端对用户进行双因子认证,若通过认证,允许用户执行SQL语句,否则,认证失败,客户端中止认证过程;
S3.对于通过双因子认证的用户执行SQL命令,安全代理处理SQL语句,返回执行结果或拦截SQL语句。
2.根据权利要求1所述的基于安全代理的MySQL数据库防护方法,其特征在于,步骤S1的具体方法如下:
S11.用户发起注册请求;
S12.代理端初始化,将代理端包含代理端公钥KPR的证书传输给客户端;
S13.客户端接收到代理端传输的证书后,验证证书的有效性,若证书无效,则终止认证过程;否则,客户端生成用于在注册和认证阶段和代理端通信的会话密钥KC,并使用代理端公钥KPR加密传输用户名username、密码哈希值SHA(password)、在注册和认证阶段和代理端通信的会话密钥KC和设备识别码deviceID;
S14.代理端使用代理端私钥KPS解密客户端消息得到用户名username、密码哈希值SHA(password)和在注册和认证阶段和代理端通信的会话密钥KC,将其存储至MySQL服务端,并将用户名username和二次哈希值SHA(SHA(password))存储至用户列表,使该用户为MySQL服务端合法用户;
S15.若服务端发现已存在该用户则向安全代理返回错误消息,否则返回成功消息表示存储成功;
S16.代理端根据服务端的返回信息,向客户端返回注册结果,若注册成功,则根据设备识别码deviceID生成一次性口令算法使用密钥KT,存储在代理端,然后使用在注册和认证阶段和代理端通信的会话密钥KC加密一次性口令算法使用密钥KT和起始时间戳T0并发送给客户端,客户端收到后使用在注册和认证阶段和代理端通信的会话密钥KC解密得到一次性口令算法使用密钥KT和起始时间戳T0并存储。
3.根据权利要求1所述的基于安全代理的MySQL数据库防护方法,其特征在于,步骤S2的具体方法如下:
S21.客户端发起登录请求,并发送代理端公钥KPR加密的随机数RNUM、用户名username、密码哈希值SHA(password)和命令执行阶段的会话密钥KS;
S22.代理端使用代理端私钥KPS解密客户端消息得到随机数、用户名和密码哈希值,并使用该用户的用户名向服务端发起查询请求,查询该用户的信息;
S23.服务端接收代理端的查询请求,返回该用户的用户名username、二次哈希值SHA(SHA(password))和在注册和认证阶段和代理端通信的会话密钥KC;
S24.代理端接收服务端的查询结果,进行密码校验,若密码一致,则返回消息要求客户端输入一次性口令,否则返回认证失败,同时,向客户端返回使用命令执行阶段的会话密钥KS加密的随机数RNUM,返回的整个消息使用在注册和认证阶段和代理端通信的会话密钥KC加密;
S25.客户端使用在注册和认证阶段和代理端通信的会话密钥KC解密代理端的数据,获得消息和加密的RNUM,使用命令执行阶段的会话密钥KS解密得到随机数RNUM′与加密的随机数RNUM比较,若不一致则停止认证过程;若一致,则根据下列公式计算一次性口令TOTP:
TOTP=HOTP(KT,T)
其中HMAC、HOTP和T为计算使用的中间函数与参数:
HOTP(K,C)=Truncate(HMAC(K,C))mod 10d
HMAC(K,m)=H((K′XOR opad)||H((K′XOR ipad)||m))
式中K表示所使用的密钥,m表示要加密的消息,K′表示当使用SHA-1、MD5等散列函数而K长度不足时在K尾部补0后得到的值,XOR表示异或运算,ipad和opad分别表示内外层HASH填充值,C表示输入的参数值,Truncate表示将HMAC值转换为32位无符号整数的函数,d表示HOTP口令的位数,T表示时间计数器值,用于表示当前的时间戳,表示向下取整函数,unixtime为时间戳函数,now表示当前时间,T0表示约定的起始时间戳,TX表示哈希值的有效期,KT表示一次性口令算法所使用的密钥。
同时,客户端生成用于下一次认证过程客户端与服务端的会话密钥K′C用于下一次认证,然后发送使用代理端公钥KPR加密的一次性口令TOTP和用于下一次认证过程客户端与服务端的会话密钥K′C至代理端;
S26.代理端根据步骤S25.中的公式和下列公式计算当前时间前后各三个共计七个一次性口令:
式中T表示时间计数器值,用于表示当前的时间戳,floor表示向下取整函数,unixtime为时间戳函数,now表示当前时间,T0表示约定的起始时间戳,TX表示哈希值的有效期,offset表示当前时间漂移值。
并与客户端发送的一次性口令TOTP逐一比对,若存在一致的一次性口令,则更新时间漂移值offset、在注册和认证阶段和代理端通信的会话密钥KC,并返回认证成功;否则,返回认证失败,并记录错误次数,当达到错误次数的阈值时,禁止该用户登录。
4.根据权利要求1所述的基于安全代理的MySQL数据库防护方法,其特征在于,步骤S3的具体方法如下:
S31.将主机IP与IP地址黑名单中的IP地址进行匹配,如果匹配上,则丢弃该来源所有请求,若没有匹配上,则转步骤S32;
S32.预处理SQL语句;
S33.判断字符串的长度sLen是否合法,若sLen=0则拦截该查询,否则转步骤S34;
S34.计算SQL语句特征码:初始化sql_state变量,该变量包含tokenvec、fingerprint,tokenvec是一个对象数组,存储SQL语句中每一个字符对应的类型type、长度len和值val,fingerprint变量存储的值即为最终生成的特征码值;然后,执行sqli_fingerprint函数,对SQL语句进行词法分析和语法分析,根据SQL语句中每一个字符的类型给sql_state.tokenvec赋值;再根据词法与语法分析转换表,将SQL语句转换为特征码,并记录在变量sql_state.fingerprint中;最后,执行sqli_fold函数,对特征码进行折叠,最终生成5位SQL特征码,覆盖变量sql_state_fingerprint;
S35.将sql_state.fingerprint的值与特征库中存储的SQL注入特征语句进行比对,若存在该指纹,则拦截该语句,否则转步骤S36;
S36.将SQL语句与SQL黑名单中的语句一一比对,若匹配成功,则拦截该语句,否则,放行该语句并返回执行结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010459152.3A CN111695152B (zh) | 2020-05-26 | 2020-05-26 | 一种基于安全代理的MySQL数据库防护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010459152.3A CN111695152B (zh) | 2020-05-26 | 2020-05-26 | 一种基于安全代理的MySQL数据库防护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111695152A true CN111695152A (zh) | 2020-09-22 |
CN111695152B CN111695152B (zh) | 2023-05-12 |
Family
ID=72478406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010459152.3A Active CN111695152B (zh) | 2020-05-26 | 2020-05-26 | 一种基于安全代理的MySQL数据库防护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111695152B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112398861A (zh) * | 2020-11-18 | 2021-02-23 | 国网电力科学研究院武汉能效测评有限公司 | web组态化系统中敏感数据的加密系统及方法 |
CN113127520A (zh) * | 2021-05-11 | 2021-07-16 | 中国电信股份有限公司江西分公司 | 一种基于代理模式的分布式数据库sql审核拦截方法及装置 |
CN113630387A (zh) * | 2021-07-21 | 2021-11-09 | 北京景安云信科技有限公司 | 基于代理实现对MySQL协议认证过程中用户名和密码替换的方法 |
CN113660239A (zh) * | 2021-08-10 | 2021-11-16 | 中电积至(海南)信息技术有限公司 | 一种基于加盐与前端waf防护耦合的防sql注入系统 |
CN113765893A (zh) * | 2021-08-13 | 2021-12-07 | 成都安恒信息技术有限公司 | 一种应用于MySQL系统的协议代理密码穿透认证方法 |
US20230148036A1 (en) * | 2021-01-19 | 2023-05-11 | Visa International Service Association | System, Method, and Apparatus for Authenticating a User Device |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107046467A (zh) * | 2017-05-22 | 2017-08-15 | 广东工业大学 | 一种基于读写器、标签和数据库的三方验证方法及系统 |
CN109286627A (zh) * | 2018-10-10 | 2019-01-29 | 四川长虹电器股份有限公司 | 基于双因子认证的身份认证方法 |
CN110069918A (zh) * | 2019-04-11 | 2019-07-30 | 苏州同济区块链研究院有限公司 | 一种基于区块链技术的高效双因子跨域认证方法 |
CN110149212A (zh) * | 2019-05-31 | 2019-08-20 | 杭州安恒信息技术股份有限公司 | 一种数据库安全加固方法、装置及电子设备 |
-
2020
- 2020-05-26 CN CN202010459152.3A patent/CN111695152B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107046467A (zh) * | 2017-05-22 | 2017-08-15 | 广东工业大学 | 一种基于读写器、标签和数据库的三方验证方法及系统 |
CN109286627A (zh) * | 2018-10-10 | 2019-01-29 | 四川长虹电器股份有限公司 | 基于双因子认证的身份认证方法 |
CN110069918A (zh) * | 2019-04-11 | 2019-07-30 | 苏州同济区块链研究院有限公司 | 一种基于区块链技术的高效双因子跨域认证方法 |
CN110149212A (zh) * | 2019-05-31 | 2019-08-20 | 杭州安恒信息技术股份有限公司 | 一种数据库安全加固方法、装置及电子设备 |
Non-Patent Citations (1)
Title |
---|
齐浩政: ""基于安全代理的MySQL数据库防护技术研究"", 《CNKI》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112398861A (zh) * | 2020-11-18 | 2021-02-23 | 国网电力科学研究院武汉能效测评有限公司 | web组态化系统中敏感数据的加密系统及方法 |
US20230148036A1 (en) * | 2021-01-19 | 2023-05-11 | Visa International Service Association | System, Method, and Apparatus for Authenticating a User Device |
US11811519B2 (en) * | 2021-01-19 | 2023-11-07 | Visa International Service Association | System, method, and apparatus for authenticating a user device |
CN113127520A (zh) * | 2021-05-11 | 2021-07-16 | 中国电信股份有限公司江西分公司 | 一种基于代理模式的分布式数据库sql审核拦截方法及装置 |
CN113127520B (zh) * | 2021-05-11 | 2023-07-21 | 中国电信股份有限公司江西分公司 | 一种基于代理模式的分布式数据库sql审核拦截方法及装置 |
CN113630387A (zh) * | 2021-07-21 | 2021-11-09 | 北京景安云信科技有限公司 | 基于代理实现对MySQL协议认证过程中用户名和密码替换的方法 |
CN113660239A (zh) * | 2021-08-10 | 2021-11-16 | 中电积至(海南)信息技术有限公司 | 一种基于加盐与前端waf防护耦合的防sql注入系统 |
CN113765893A (zh) * | 2021-08-13 | 2021-12-07 | 成都安恒信息技术有限公司 | 一种应用于MySQL系统的协议代理密码穿透认证方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111695152B (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111695152B (zh) | 一种基于安全代理的MySQL数据库防护方法 | |
CN108418691B (zh) | 基于sgx的动态网络身份认证方法 | |
Chuang et al. | An anonymous multi-server authenticated key agreement scheme based on trust computing using smart cards and biometrics | |
US7752320B2 (en) | Method and apparatus for content based authentication for network access | |
CN109155784B (zh) | 区分纵向暴力攻击与良性错误 | |
CA2913444C (en) | System and method for user authentication | |
CN113553558A (zh) | 经由内部网络监视来检测使用泄漏证书的攻击 | |
WO2019085531A1 (zh) | 一种终端联网认证的方法和装置 | |
Karuppiah et al. | A secure lightweight authentication scheme with user anonymity for roaming service in ubiquitous networks | |
WO2019095856A1 (zh) | 一种网络身份认证方法、系统及其使用的用户代理设备 | |
RU2713604C1 (ru) | Регистрация и аутентификация пользователей без паролей | |
Limbasiya et al. | An analytical study of biometric based remote user authentication schemes using smart cards | |
KR101739203B1 (ko) | 일회용 개인키 기반 전자 서명과 동형 암호를 이용한 패스워드 기반 사용자 인증 방법 | |
Alqubaisi et al. | Should we rush to implement password-less single factor FIDO2 based authentication? | |
WO2014049027A1 (en) | Network security | |
CN112016073A (zh) | 一种服务器零信任连接架构的构建方法 | |
WO2022143498A1 (zh) | 接入控制方法、装置、网络侧设备、终端及区块链节点 | |
US11177958B2 (en) | Protection of authentication tokens | |
Cai et al. | Appcracker: Widespread vulnerabilities in user and session authentication in mobile apps | |
JP6266170B2 (ja) | 3層セキュリティおよび算出アーキテクチャ | |
KR102539418B1 (ko) | Puf 기반 상호 인증 장치 및 방법 | |
Kim et al. | A secure channel establishment method on a hardware security module | |
Guo et al. | Extending registration and authentication processes of FIDO2 external authenticator with qr codes | |
JP6831544B2 (ja) | ブロックチェーン及びsdn等に適用する情報処理システム、情報処理方法及びプログラム | |
Li et al. | Robust dynamic ID–based remote user authentication scheme using smart cards |
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 |