著录项信息
专利名称 | 一种对客户端进行认证方法及装置 |
申请号 | CN201010135348.3 | 申请日期 | 2010-03-26 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2011-09-28 | 公开/公告号 | CN102202040A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L29/06 | IPC分类号 | H;0;4;L;2;9;/;0;6查看分类表>
|
申请人 | 联想(北京)有限公司 | 申请人地址 | 北京市海淀区上地信息产业基地创业路6号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 联想(北京)有限公司 | 当前权利人 | 联想(北京)有限公司 |
发明人 | 郭轶尊;刘春梅 |
代理机构 | 北京集佳知识产权代理有限公司 | 代理人 | 马敬;逯长明 |
摘要
本发明公开了一种对客户端进行认证方法及装置,通过两次验证完成对客户端的认证,避免了被类似SQL攻击从而绕过用户身份验证的可能性;再有,由于验证密码只出现在验证模块中,避免了由于存放在用户表中被猜中、被嗅探的可能。
1.一种对客户端身份进行认证的方法,其特征在于,包括:
第一验证模块接收来自客户端的包含第一用户名和第一验证密码的验证请求;
所述第一验证模块对所述第一用户名及所述第一验证密码进行第一次验证,获得第一验证结果;
当所述第一验证结果表明所述第一次验证通过时,所述第一验证模块接收来自所述客户端的第二验证密码;
所述第一验证模块将所述第一用户名和所述第二验证密码发送给第二验证模块;
所述第一验证模块接收来自所述第二验证模块的第二验证结果,所述第二验证结果是所述第二验证模块对所述第一用户名和所述第二验证密码进行第二次验证后获得的;
所述第一验证模块将所述第二验证结果发送给所述客户端;
其中,第一验证模块将接收到的所述第一用户名和第二验证密码发送给第二验证模块的步骤包括:
所述客户端用自身的公钥对第二验证密码进行加密,生成加密后的第二验证密码,将所述第一用户名和加密后的第二验证密码发送至第一验证模块;
所述第一验证模块使用第一平台密钥对所述加密后的第二验证密码进行签名,生成签名后的第二验证密码,将所述第一用户名、加密后的第二验证密码和签名后的第二验证密码发送给第二验证模块;
其中,对所述第二验证密码进行第二次验证的步骤包括:
第二验证模块使用第一平台证书验证签名后的第二验证密码,若验证通过,则应用从所述第一验证模块获取的所述用户端的私钥解密加密后的第二验证密码,得到所述客户端的第一用户名和第二验证密码;
第二验证模块向数据库系统请求第一用户名对应的已加密第三验证密码;
所述数据库系统在本地查找已记录的与所述第一用户名对应的已加密第三验证密码,将所述已加密第三验证密码发送至第二验证模块;
所述第二验证模块应用所述客户端的对称密钥对所述已加密第三验证密码进行解密,获得第三验证密码;
判断所述第二验证密码与第三验证密码是否相同,若相同则生成认证通过的认证结果,否则生成认证未通过的认证结果。
2.根据权利要求1所述的方法,其特征在于,第一验证模块对所述第一用户名及第一验证密码进行第一次验证的步骤包括:
第一验证模块接收到登录请求后,生成随机数,将所述随机数发送给所述客户端;
所述客户端用自身的公钥pk1对所述随机数进行加密,生成加密后的随机数,将所述加密后的随机数和第一验证密码发送给第一验证模块;
所述第一验证模块使用所述第一验证密码获得所述客户端的私钥,应用所述客户端的私钥对所述加密后的随机数进行解密,获得解密后的随机数;
所述第一验证模块比较所述生成的随机数与所述解密后的随机数是否相同,若相同,则第一次验证通过。
3.根据权利要求1所述的方法,其特征在于,所述第一验证模块接收来自所述第二验证模块的第二验证结果,将所述第二验证结果发送给所述客户端的步骤包括:
第二验证模块应用第二平台密钥对认证结果进行签名,得到签名后的认证结果,将所述签名后的认证结果发送给第一验证模块;
所述第一验证模块接收到所述签名后的认证结果后,使用第二平台密钥的证书对签名后的认证结果进行验证,验证通过后将认证结果发送给客户端。
4.根据权利要求1所述的方法,其特征在于,所述第一验证模块与第二验证模块位于相同或不同的物理实体上。
5.一种对客户端身份进行认证的装置,其特征在于,包括:第一验证模块,其中,所述第一验证模块具体包括:
验证请求接收模块,用于接收来自客户端的包含第一用户名和第一验证密码的验证请求;
第一次验证模块,用于对所述第一用户名及所述第一验证密码进行第一次验证,获得第一验证结果;
第二验证密码接收模块,用于当所述第一验证结果表明所述第一次验证通过时,接收来自所述客户端的第二验证密码;
发送模块,用于将所述第一用户名和所述第二验证密码发送给第二验证模块;
验证结果发送模块,用于接收来自所述第二验证模块的第二验证结果,将所述第二验证结果发送给所述客户端;其中,所述第二验证结果是所述第二验证模块对所述第一用户名和所述第二验证密码进行第二次验证后的结果;
其中,所述发送模块包括:
第二验证密码接收子模块,用于接收加密后的第二验证密码,其中,所述加密后的第二验证密码是由客户端用自身的公钥对第二验证密码进行加密后生成的;
签名子模块,用于使用第一平台密钥对所述加密后的第二验证密码进行签名,生成签名后的第二验证密码,将所述第一用户名、加密后的第二验证密码和签名后的第二验证密码发送给第二验证模块;
其中,所述第二验证模块按照下述方式对所述第二验证密码进行第二次验证:
第二验证模块使用第一平台证书验证签名后的第二验证密码,若验证通过,则应用从所述第一验证模块获取的所述用户端的私钥解密加密后的第二验证密码,得到所述客户端的第一用户名和第二验证密码;
第二验证模块向数据库系统请求第一用户名对应的已加密第三验证密码;
所述数据库系统在本地查找已记录的与所述第一用户名对应的已加密第三验证密码,将所述已加密第三验证密码发送至第二验证模块;
所述第二验证模块应用所述客户端的对称密钥对所述已加密第三验证密码进行解密,获得第三验证密码;
判断所述第二验证密码与第三验证密码是否相同,若相同则生成认证通过的认证结果,否则生成认证未通过的认证结果。
6.根据权利要求5所述的装置,其特征在于,所述第一次验证模块包括:
随机数生成子模块,用于第一验证模块接收到登录请求后,生成随机数,将所述随机数发送给所述客户端;
随机数接收子模块,用于接收来自客户端的加密后的随机数和第一验证密码,其中,所述加密后的随机数是客户端用自身的公钥对所述随机数进行加密后生成的;
解密子模块,用于使用所述第一验证密码获得所述客户端的私钥,应用所述客户端的私钥对所述加密后的随机数r’进行解密,获得解密后的随机数;
判断子模块,用于比较所述生成的随机数与所述解密后的随机数是否相同,若相同,则第一次验证通过。
7.根据权利要求5所述的装置,其特征在于,所述验证结果发送模块包括:
第二验证结果接收子模块,用于接收签名后的认证结果,其中,所述签名后的认证结果是第二验证模块应用第二平台密钥对认证结果进行签名后得到的;
第二验证结果发送子模块,用于接收到所述签名后的认证结果后,使用第二平台密钥的证书对所述签名后的认证结果进行验证,验证通过后将认证结果发送给客户端。
8.一种对客户端访问权限进行认证的方法,其特征在于,包括,对客户端身份进行认证,其中,采用权利要求1-4任一项所述的方法对客户端身份进行认证;在对客户端身份认证成功后,设置授权表,所述授权表中包括用户信息、已加密的授权书及授权人签名的对应关系,所述方法还包括:
接收到来自客户端的数据库系统操作请求,从所述请求中获取所述客户端的用户信息;
如果所获取的用户信息与本地已记录的授权表的用户信息匹配,则根据所述对应关系获取授权人签名,并验证所述授权人签名;
如果签名验证成功,则根据所述对应关系获取已加密的授权书,对已加密授权书进行解密,获得授权书;
判断所述操作请求对应的权限是否在所述授权书所规定的权限范围内,若是,则通过访问权限认证。
9.根据权利要求8所述的方法,其特征在于,所述授权人签名通过数据库管理员的公钥进行验证。
10.根据权利要求8所述的方法,其特征在于,在签名验证成功后,加载所述客户端私钥,应用所述客户端的私钥对已加密授权书进行解密。
11.根据权利要求10所述的方法,其特征在于,在签名验证成功后,加载所述客户端私钥前,还包括:
验证来自客户端的私钥口令,若验证通过,再加载所述客户端的私钥。
12.根据权利要求8所述的方法,其特征在于,所述客户端信息包括用户名和主机名。
13.一种对客户端访问权限进行认证的装置,其特征在于,包括:
如权利要求5-7任一项所述的对客户端身份进行认证的装置,用于对客户端身份进行认证;
设置单元,用于在对客户端身份认证成功后设置授权表,所述授权表中包括用户信息、已加密的授权书及授权人签名的对应关系;
客户端信息获取单元,用于接收到来自客户端的数据库系统操作请求,从所述请求中获取所述客户端的用户信息;
验证单元,用于如果所获取的用户信息与本地已记录的授权表的用户信息匹配,则根据所述对应关系获取授权人签名,并验证所述授权人签名;
解密单元,用于如果签名验证成功,则根据所述对应关系获取已加密的授权书,对已加密授权书进行解密,获得授权书;
权限判断单元,用于判断所述操作请求对应的权限是否在所述授权书所规定的权限范围内,若是,则通过访问权限认证。
14.根据权利要求13所述的装置,其特征在于,所述授权人签名通过数据库管理员的公钥进行验证。
15.根据权利要求13所述的装置,其特征在于,所述装置还包括:
加载单元,用于在签名验证成功后,加载所述客户端私钥,应用所述客户端的私钥对已加密授权书进行解密。
16.根据权利要求15所述的装置,其特征在于,所述装置还包括:
客户端私钥验证单元,用于在签名验证成功后,加载所述客户端私钥前,验证来自客户端的私钥口令,若验证通过,再加载所述用户端的私钥。
17.根据权利要求13所述的装置,其特征在于,所述客户端信息包括用户名和主机名。
一种对客户端进行认证方法及装置\n技术领域\n[0001] 本发明涉及信息安全技术领域,特别是一种对客户端进行认证方法及装置。\n背景技术\n[0002] 网站页面被篡改极大地损害了政府和企业用户的利益。特别是含有政治攻击色彩的篡改,会对政府形象造成严重损害,对企业造成不可估量的损失。由于网络信息传播快,使网站一旦被篡改,给用户造成的影响短时间内很难消除。\n[0003] 网站页面分为静态网页和动态网页,静态网页指的是任何时候任何用户浏览网页内容都是固定不变,而动态网页是根据用户的不同,用户的输入呈现出不同的网页内容,动态网页的内容来源于后台web数据库。随着CGI以及PHP、ASP、JSP等技术的兴起,各种动态新闻、论坛、BBS、电子商务等动态网页大量增加,现在的动态网页应用已经逐步取代了静态网页应用。\n[0004] 对动态网页的篡改,主要是黑客使用SQL注入等攻击手段,利用数据库服务器的漏洞,非法篡改提升操作数据库的权限,从而达到从数据库窃取信息或修改数据库内容。\n[0005] 为了避免SQL攻击,数据库系统(DBMS)提供了用户身份识别机制和数据库系统访问权限的认证:\n[0006] 所谓身份识别:是指只有经过数据库授权和验证的用户才是合法的用户,目前的身份识别方法包括2种方法:\n[0007] 1)DBMS提供认证:用户可以通过提交正确的用户名、密码,由DBMS提供验证来访问数据库。\n[0008] 2)操作系统提供认证:用户可以通过提交正确的用户名、密码,由OS提供验证来访问数据库。\n[0009] 当用户连接数据库系统时,可以采用上述两种方式之一或两种方式同时对待连接的客户端进行认证,以达到保证数据库系统安全的目的。\n[0010] 所谓数据库访问权限,是指用户可以执行的数据库操作范围。DBMS使用用户权限表控制用户的操作权限。在用户授权表中规定了每个用户能访问的数据库名、表名、字段名、读写权限和管理权限。\n[0011] 而SQL攻击本质是巧妙的构造SQL语句,其在数据中混合SQL指令,实现迂回攻击,或通过不断地嗅探和猜测,从而非法地操作数据库数据。SQL攻击的危害包括探知数据库结构、获取管理员的密码、更改用户权限、创建新用户、控制操作系统、破坏硬盘数据等。\n[0012] 可见,通过上述用户身份的识别方法和数据库系统的访问权限控制方法并不能有效的防止SQL注入的迂回和嗅探攻击。\n发明内容\n[0013] 本发明实施例一方面提供一种对客户端身份进行认证的方法和装置,另一方面提供一种对客户端访问权限进行认证的方法和装置,以有效的防止SQL注入的迂回和嗅探攻击。\n[0014] 本发明实施例提供了一种对客户端身份进行认证的方法,包括:\n[0015] 第一验证模块接收来自客户端的包含第一用户名和第一验证密码的验证请求;\n[0016] 所述第一验证模块对所述第一用户名及所述第一验证密码进行第一次验证,获得第一验证结果;\n[0017] 当所述第一验证结果表明所述第一次验证通过时,所述第一验证模块接收来自所述客户端的第二验证密码;\n[0018] 所述第一验证模块将所述第一用户名和所述第二验证密码发送给第二验证模块;\n[0019] 所述第一验证模块接收来自所述第二验证模块的第二验证结果,所述第二验证结果是所述第二验证模块对所述第一用户名和所述第二验证密码进行第二次验证后获得的;\n[0020] 所述第一验证模块将所述第二验证结果发送给所述客户端。\n[0021] 其中,第一验证模块对所述第一用户名及第一验证密码进行第一次验证的步骤包括:\n[0022] 第一验证模块接收到登录请求后,生成随机数,将所述随机数发送给所述客户端;\n[0023] 所述客户端用自身的公钥pk1对所述随机数进行加密,生成加密后的随机数,将所述加密后的随机数和第一验证密码发送给第一验证模块;\n[0024] 所述第一验证模块使用所述第一验证密码获得所述客户端的私钥,应用所述客户端的私钥对所述加密后的随机数进行解密,获得解密后的随机数;\n[0025] 所述第一验证模块比较所述生成的随机数与所述解密后的随机数是否相同,若相同,则第一次验证通过。\n[0026] 其中,第一验证模块将接收到的所述第一用户名和第二验证密码发送给第二验证模块的步骤包括:\n[0027] 所述客户端用自身的公钥对第二验证密码进行加密,生成加密后的第二验证密码,将所述第一用户名和加密后的第二验证密码发送至第一验证模块;\n[0028] 所述第一验证模块使用第一平台密钥对所述加密后的第二验证密码pw’进行签名,生成签名后的第二验证密码,将所述第一用户名、加密后的第二验证密码和签名后的第二验证密码发送给第二验证模块。\n[0029] 其中,对所述第二验证密码进行第二次验证的步骤包括:\n[0030] 第二验证模块使用第一平台证书验证签名后的第二验证密码,若验证通过,则应用从所述第一验证模块获取的所述用户端的私钥解密加密后的第二验证密码,得到所述客户端的第一用户名和第二验证密码;\n[0031] 第二验证模块向数据库系统请求第一用户名对应的已加密第三验证密码;\n[0032] 所述数据库系统在本地查找已记录的与所述第一用户名对应的已加密第三验证密码,将所述已加密第三验证密码发送至第二验证模块;\n[0033] 所述第二验证模块应用所述客户端的对称密钥对所述已加密第三验证密码进行解密,获得第三验证密码;\n[0034] 判断所述第二验证密码与第三验证密码是否相同,若相同则生成认证通过的认证结果,否则生成认证未通过的认证结果。\n[0035] 其中,所述第一验证模块接收来自所述第二验证模块的第二验证结果,将所述第二验证结果发送给所述客户端的步骤包括:\n[0036] 第二验证模块应用第二平台密钥对认证结果进行签名,得到签名后的认证结果,将所述签名后的认证结果发送给第一验证模块;\n[0037] 所述第一验证模块接收到所述签名后的认证结果后,使用第二平台密钥的证书对签名后的认证结果进行验证,验证通过后将认证结果发送给客户端。\n[0038] 其中,所述第一验证模块与第二验证模块位于相同或不同的物理实体上。\n[0039] 本发明实施例还提供了一种对客户端身份进行认证的装置,包括:第一验证模块,其中,所述第一验证模块具体包括:\n[0040] 验证请求接收模块,用于接收来自客户端的包含第一用户名和第一验证密码的验证请求;\n[0041] 第一次验证模块,用于对所述第一用户名及所述第一验证密码进行第一次验证,获得第一验证结果;\n[0042] 第二验证密码接收模块,用于当所述第一验证结果表明所述第一次验证通过时,接收来自所述客户端的第二验证密码;\n[0043] 发送模块,用于将所述第一用户名和所述第二验证密码发送给第二验证模块;\n[0044] 验证结果发送模块,用于接收来自所述第二验证模块的第二验证结果,将所述第二验证结果发送给所述客户端;其中,所述第二验证结果是所述第二验证模块对所述第一用户名和所述第二验证密码进行第二次验证后的结果。\n[0045] 其中,所述第一次验证模块包括:\n[0046] 随机数生成子模块,用于第一验证模块接收到登录请求后,生成随机数,将所述随机数发送给所述客户端;\n[0047] 随机数接收子模块,用于接收来自客户端的加密后的随机数和第一验证密码,其中,所述加密后的随机数是客户端用自身的公钥对所述随机数进行加密后生成的;\n[0048] 解密子模块,用于使用所述第一验证密码获得所述客户端的私钥,应用所述客户端的私钥对所述加密后的随机数r’进行解密,获得解密后的随机数;\n[0049] 判断子模块,用于比较所述生成的随机数与所述解密后的随机数是否相同,若相同,则第一次验证通过。\n[0050] 其中,所述发送模块包括:\n[0051] 第二验证密码接收子模块,用于接收加密后的第二验证密码,其中,所述加密后的第二验证密码是由客户端用自身的公钥对第二验证密码进行加密后生成的;\n[0052] 签名子模块,用于使用第一平台密钥对所述加密后的第二验证密码进行签名,生成签名后的第二验证密码,将所述第一用户名、加密后的第二验证密码和签名后的第二验证密码发送给第二验证模块。\n[0053] 其中,所述验证结果发送模块包括:\n[0054] 第二验证结果接收子模块,用于接收签名后的认证结果,其中,所述签名后的认证结果是第二验证模块应用第二平台密钥对认证结果进行签名后得到的;\n[0055] 第二验证结果发送子模块,用于接收到所述签名后的认证结果后,使用第二平台密钥的证书对所述签名后的认证结果进行验证,验证通过后将认证结果发送给客户端。\n[0056] 本发明实施例还提供了一种对客户端访问权限进行认证的方法,包括设置授权表,所述授权表中包括用户信息、已加密的授权书及授权人签名的对应关系,所述方法还包括:\n[0057] 接收到来自客户端的数据库系统操作请求,从所述请求中获取所述客户端的用户信息;\n[0058] 如果所获取的用户信息与本地已记录的授权表的用户信息匹配,则根据所述对应关系获取授权人签名,并验证所述授权人签名;\n[0059] 如果签名验证成功,则根据所述对应关系获取已加密的授权书,对已加密授权书进行解密,获得授权书;\n[0060] 判断所述操作请求对应的权限是否在所述授权书所规定的权限范围内,若是,则通过访问权限认证。\n[0061] 其中,所述授权人签名通过数据库管理员的公钥进行验证。\n[0062] 其中,在签名验证成功后,加载所述客户端私钥,应用所述客户端的私钥对已加密授权书进行解密。\n[0063] 其中,在签名验证成功后,加载所述客户端私钥前,还包括:\n[0064] 验证来自客户端的私钥口令,若验证通过,再加载所述客户端的私钥。\n[0065] 其中,所述客户端信息包括用户名和主机名。\n[0066] 本发明实施例还提供了一种对客户端访问权限进行认证的装置,包括:\n[0067] 设置单元,用于设置授权表,所述授权表中包括用户信息、已加密的授权书及授权人签名的对应关系;\n[0068] 客户端信息获取单元,用于接收到来自客户端的数据库系统操作请求,从所述请求中获取所述客户端的用户信息;\n[0069] 验证单元,用于如果所获取的用户信息与本地已记录的授权表的用户信息匹配,则根据所述对应关系获取授权人签名,并验证所述授权人签名;\n[0070] 解密单元,用于如果签名验证成功,则根据所述对应关系获取已加密的授权书,对已加密授权书进行解密,获得授权书;\n[0071] 权限判断单元,用于判断所述操作请求对应的权限是否在所述授权书所规定的权限范围内,若是,则通过访问权限认证。\n[0072] 其中,所述授权人签名通过数据库管理员的公钥进行验证。\n[0073] 其中,所述装置还包括:加载单元,用于在签名验证成功后,加载所述客户端私钥,应用所述客户端的私钥对已加密授权书进行解密。\n[0074] 其中,所述装置还包括:客户端私钥验证单元,用于在签名验证成功后,加载所述客户端私钥前,验证来自客户端的私钥口令,若验证通过,再加载所述用户端的私钥。\n[0075] 其中,所述客户端信息包括用户名和主机名。\n[0076] 可见,应用本发明实施例提供的一种对客户端身份进行认证的方法和装置,避免了被类似SQL攻击从而绕过用户身份验证的可能性;再有,由于验证密码只出现在验证模块TCM中,避免了由于存放在User表中被猜中、被嗅探的可能。\n附图说明\n[0077] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。\n[0078] 图1是根据本发明实施例一的对客户端身份进行认证的方法流程图;\n[0079] 图2是根据本发明实施例一的第一次验证的处理流程图;\n[0080] 图3是根据本发明实施例一的第二次验证的处理流程图;\n[0081] 图4是根据本发明实施例二的对客户端身份进行认证的方法流程图;\n[0082] 图5是根据本发明实施例一的对客户端身份进行认证的装置结构示意图;\n[0083] 图6是根据本发明实施例三的对客户端访问权限进行认证的方法流程图;\n[0084] 图7是根据本发明实施例的对客户端进行授权的流程图;\n[0085] 图8是根据本发明实施例的验证客户端访问权限的流程图;\n[0086] 图9是根据本发明实施例三的对客户端访问权限进行认证的装置结构示意图。\n具体实施方式\n[0087] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。\n[0088] 本发明实施例在全面分析了动态网页被篡改的原因和SQL注入攻击web数据库技术后,针对Web数据库最易被攻击的数据库用户登录时的身份验证过程,提出了一种基于两级认证机制的对客户端身份进行认证的方法,以使连接至web数据库的客户端是可信任的。\n[0089] 参见图1,其是根据本发明实施例一的对客户端身份进行认证的方法流程图,本实施例包括:\n[0090] 步骤101,第一验证模块接收来自客户端的包含第一用户名和第一验证密码skpw的验证请求;\n[0091] 步骤102,第一验证模块对所述第一用户名及所述第一验证密码skpw进行第一次验证,获得第一验证结果;\n[0092] 步骤103,当所述第一验证结果表明所述第一次验证通过时,所述第一验证模块接收来自所述客户端的第二验证密码;\n[0093] 步骤104,所述第一验证模块将所述第一用户名和所述第二验证密码pw发送给第二验证模块;\n[0094] 步骤105,所述第一验证模块接收来自所述第二验证模块的第二验证结果,所述第二验证结果是所述第二验证模块对所述第一用户名和所述第二验证密码pw进行第二次验证后获得的;\n[0095] 步骤106,所述第一验证模块将所述第二验证结果发送给所述客户端。\n[0096] 需要说明的是,所述第一验证模块和第二验证模块可以在一个物理实体上,也可以在不同的物理实体上,例如第一验证模块位于web服务器上,第二验证模块位于数据库服务器上。\n[0097] 应用本发明实施例提供的对客户端身份进行认证的方法,避免了被类似SQL攻击从而绕过用户身份验证的可能性;再有,由于验证密码只出现在验证模块中,避免了由于存放在User表中被猜中、被嗅探的可能;此外,防止了被钓鱼,建立了从客户端到web端的网络信任链。\n[0098] 下面结合具体实例,对图1中的各步骤再做详细说明。\n[0099] 上述具体实例的应用环境如下:对待登录的客户端A经过web服务器和数据库服务器两次验证,以防止SQL注入的迂回和嗅探攻击。基于该应用实例,具体实现过程如下:\n[0100] 首先,客户端A进行注册。\n[0101] 具体的,假设客户端A需要注册服务器帐号,因而需要设置用户名、登录密码(pw)和用户密钥口令(skpw),服务器端收到客户端A的注册请求后,分别在第一可信平台模块(TCM1)和第二可信平台模块(TCM2)中创建客户端A的密钥。其中,服务器端包括两个服务器,一个是页面服务器(WebServer),另一个是数据库服务器(DB Server),且TCM1位于页面服务器上,TCM2位于数据库服务器上。这里,数据库服务器使用客户端A的密钥将客户端设置的登录密码pw加密后存入到用户(User)表中,然后将TCM1中客户端A的公钥返回给客户端A,并存入该用户端的操作系统(OS)密钥池中。TCM1中客户端A的私钥迁移到TCM2中。\n[0102] 需要说明的是,上述TCM1、TCM2分别相当于图1所示实施例中的第一验证模块、第二验证模块;上述用户密钥口令skpw相当于图1所示实施例中的第一验证密码;上述登录密码pw相当于图1所示实施例中的第二验证密码。也就是说,本具体实例中,由TCM1、TCM2作为第一验证模块、第二验证模块的一种具体实现方式,在实际应用中,还可以应用其他任何可信任平台或模块作为第一验证模块和第二验证模块的一种具体实施例而已,在本发明实施例中,并不限定第一验证模块和第二验证模块具体采用哪种可信任平台或模块。\n[0103] 其次,对客户端A进行第一次验证。\n[0104] 该第一次验证的过程就是图1所示实施例中的步骤101~102,具体实现过程如图\n2所示。\n[0105] 参见图2,其是根据本发明实施例一的第一次验证的处理流程图,具体包括:\n[0106] 步骤201,客户端A接收用户输入的第一用户名(usename)和用户密钥口令skpw,向TCM1发起登录请求;\n[0107] 步骤202,TCM1接收到登录请求后,生成随机数r,将所述随机数r发送给所述客户端A;\n[0108] 步骤203,客户端A用自身的公钥pk1对随机数r进行加密,生成加密后的随机数r’,将所述加密后的随机数r’和用户密钥口令skpw发送给TCM1;\n[0109] 步骤204,TCM1使用所述用户密钥口令skpw获得所述用户端的私钥SK1,应用所述SK1对所述加密后的随机数r’进行解密,获得解密后的随机数r”;比较所述生成的随机数r与所述解密后的随机数r”是否相同,若相同,则第一次验证通过;若不同,则给客户端A返回第一次验证失败的信息。\n[0110] 至此,完成了第一次验证。在第一次验证通过后表明web服务器上的TCM1确认了登录的客户端A;同时客户端A;至此,建立了客户端A、web服务器、web应用程序和TCM1之间的信任。\n[0111] 再次,对客户端A进行第二次验证。\n[0112] 该第二次验证的过程就是图1所示实施例中的步骤103~106,具体实现过程如图\n3所示。\n[0113] 参见图3,其是根据本发明实施例一的第二次验证的处理流程图,具体包括:\n[0114] 步骤301,客户端A接收用户输入的第一用户名(usename)和登录密码pw;\n[0115] 这里,也可以让用户仅输入登录密码pw,而客户端A从自身的保存记录中获取第一用户名,即不需要用户再次输入第一用户名。\n[0116] 步骤302,客户端A用自身的公钥pk1对登录密码pw进行加密,生成加密后的登录密码pw’,将所述第一用户名和加密后的登录密码pw’发送至TCM1;\n[0117] 步骤303,TCM1使用第一平台密钥PEK1对所述加密后的登录密码pw’进行签名,生成签名后的登录密码pw”,将所述第一用户名、加密后的登录密码pw’和签名后的登录密码pw”发送给TCM2;\n[0118] 上述步骤302-303是图1中步骤104的一种具体实现方式,即实现了第一验证模块将接收到的第一用户名和登录密码pw发送给第二验证模块。\n[0119] 步骤304,TCM2使用第一平台证书验证签名后的登录密码pw”,若验证通过,则应用从TCM1获取的所述客户端A的私钥解密加密后的登录密码pw’,得到所述客户端A的第一用户名和登录密码pw。\n[0120] 步骤305,TCM2向数据库系统例如数据库中的用户表(user表)中请求第一用户名对应的已加密第三验证密码c’;数据库系统在本地查找已记录的与所述第一用户名对应的已加密第三验证密码c’,将所述已加密第三验证密码c’发送至TCM2;其中,所述已加密第三验证密码c’是第二验证模块应用所述客户端的对称密钥对第三验证密码c加密生成的;\n[0121] 步骤306,TCM2应用所述客户端A的对称密码对所述加密后的第三验证密码c’进行解密,获得第三验证密码c;之后,TCM2判断所述登录密码pw与第三验证密码c是否相同,若相同则生成认证通过的认证结果,否则生成认证未通过的认证结果。\n[0122] 至此,完成了对客户端A的第二次验证。\n[0123] 步骤307,TCM2应用第二平台密钥PEK2对认证结果result进行签名,得到签名后的认证结果result’,将所述签名后的认证结果result’发送给TCM1;\n[0124] 步骤308,TCM1使用第二平台密钥PEK2的证书对签名后的认证结果result’进行验证,验证通过后将认证结果result发送给用户端A。\n[0125] 至此,TCM2通过所述TCM1将认证结果通知给客户端A。\n[0126] 需要说明的是,上述第一平台为TCM1所在的平台,上述第二平台为TCM2所在的平台。\n[0127] 需要说明的是,上述第一次验证也可以称之为I级认证,即由TCM1对用户密钥口令skpw进行了I级认证;上述第二次验证也可以称之为II级认证,即由TCM2对登录密码pw进行了II级认证。\n[0128] 可见,两次强制身份验证(或称为II级身份认证)避免了被类似SQL攻击从而绕过用户身份验证的可能性;再有,由于验证密码只出现在TCM中,避免了由于存放在User表中被猜中、被嗅探的可能;此外,防止了被钓鱼,建立了从客户端A到web端的网络信任链。\n[0129] 参见图4,其是根据本发明实施例二的对客户端身份进行认证的方法流程图,具体包括:\n[0130] 步骤401,第二验证模块在第一次验证通过后,接收来自第一验证模块的第一用户名和第二验证密码;其中,所述第一次验证是由第一验证模块对来自客户端的第一用户名和第一验证模块进行的验证;\n[0131] 步骤402,第二验证模块对所述第一用户名和第二验证密码pw进行第二次验证,获得第二验证结果,将所述第二验证结果通过所述第一验证模块通知给所述客户端。\n[0132] 需要说明的是,上述第一次验证的过程与图2所述内容相同,第二次验证的过程与图3所述内容相同,这里不再详细描述。\n[0133] 本发明实施例还提供了一种对客户端身份进行认证的装置,参见图5,具体包括:\n第一验证模块,其中,所述第一验证模块具体包括:\n[0134] 验证请求接收模块501,用于接收来自客户端的包含第一用户名和第一验证密码skpw的验证请求;\n[0135] 第一次验证模块502,用于对所述第一用户名及所述第一验证密码skpw进行第一次验证,获得第一验证结果;\n[0136] 第二验证密码接收模块503,用于当所述第一验证结果表明所述第一次验证通过时,接收来自所述客户端的第二验证密码;\n[0137] 发送模块504,用于将所述第一用户名和所述第二验证密码pw发送给第二验证模块;\n[0138] 验证结果发送模块505,用于接收来自所述第二验证模块的第二验证结果,将所述第二验证结果发送给所述客户端;其中,所述第二验证结果是所述第二验证模块对所述第一用户名和所述第二验证密码pw进行第二次验证后得到的。\n[0139] 上述第一次验证模块502可以具体包括:\n[0140] 随机数生成子模块,用于第一验证模块接收到登录请求后,生成随机数r,将所述随机数r发送给所述客户端;\n[0141] 随机数接收子模块,用于接收来自客户端的已加密的随机数r’和第一验证密码skpw,其中,所述已加密的随机数r’是客户端用自身的公钥pk1对随机数r进行加密后生成的;\n[0142] 解密子模块,用于使用所述第一验证密码skpw获得所述用户端的私钥SK1,应用所述SK1对所述已加密的随机数r’进行解密,获得解密后的随机数r”;\n[0143] 判断子模块,用于比较所述生成的随机数r与所述解密后的随机数r”是否相同,若相同,则第一次验证通过。\n[0144] 上述发送模块504可以具体包括:\n[0145] 第二验证密码接收子模块,用于接收加密后的第二验证密码pw’,其中,所述加密后的第二验证密码pw’是由客户端用自身的公钥pk1对第二验证密码pw进行加密后生成的;\n[0146] 签名子模块,用于使用第一平台密钥PEK1对所述加密后的第二验证密码pw’进行签名,生成签名后的第二验证密码pw”,将所述第一用户名、加密后的第二验证密码pw’和签名后的第二验证密码pw”发送给第二验证模块。\n[0147] 上述验证结果发送模块505可以具体包括:\n[0148] 第二验证结果接收子模块,用于接收签名后的认证结果result’,其中,所述签名后的认证结果result’是第二验证模块应用第二平台密钥PEK2对认证结果result进行签名后得到的;\n[0149] 第二验证结果发送子模块,用于接收到所述签名后的认证结果result’后,使用第二平台密钥PEK2的证书对签名后的认证结果result’进行验证,验证通过后将认证结果result发送给客户端。\n[0150] 应用本发明实施例提供的对客户端身份进行认证的装置,避免了被类似SQL攻击从而绕过用户身份验证的可能性;再有,由于验证密码只出现在验证模块中,避免了由于存放在User表中被猜中、被嗅探的可能;此外,防止了被钓鱼,建立了从客户端到web端的网络信任链。\n[0151] 本发明实施例在全面分析了动态网页被篡改的原因和SQL注入攻击web数据库技术后,针对Web数据库最易被攻击的数据库用户登录时的身份验证过程,还提出了一种对客户端访问权限进行认证的方法,以使连接至web数据库的客户端是可信任的。\n[0152] 参见图6,其是根据本发明实施例三的对客户端访问权限进行认证的方法流程图,该流程具体包括:\n[0153] 步骤601,设置授权表,所述授权表中包括用户信息、已加密的授权书C’及授权人签名C”的对应关系,所述方法还包括:\n[0154] 步骤602,接收到来自客户端的数据库系统操作请求,从所述请求中获取所述客户端的用户信息;\n[0155] 步骤603,如果所获取的用户信息与本地已记录的授权表的用户信息匹配,则根据所述对应关系获取授权人签名C”,并验证所述授权人签名C”;\n[0156] 步骤604,如果签名验证成功,则根据所述对应关系获取已加密的授权书C’,对已加密授权书C’进行解密,获得授权书C;\n[0157] 步骤605,判断所述操作请求对应的权限是否在所述授权书所规定的权限范围内,若是,则通过访问权限认证,否则,未通过访问权限认证。\n[0158] 需要说明的是,上述授权人签名C”通过数据库管理员的公钥进行验证。\n[0159] 需要说明的是,在签名验证成功后,加载所述客户端私钥,应用所述客户端的私钥对已加密授权书C’进行解密。\n[0160] 需要说明的是,在签名验证成功后,加载所述客户端私钥前,还包括:验证来自客户端的私钥口令UP,若验证通过,再加载所述客户端的私钥。\n[0161] 需要说明的是,所述用户信息包括用户名和主机名。\n[0162] 需要说明的是,对于图6所示的实施例三,既可以在图1所示的实施例一之后执行,也可以不依赖于实施例一的存在单独执行,本发明中并不对图6所示实施例三的实时时机做限定。\n[0163] 下面结合具体实例,对图6所示流程再做详细说明。\n[0164] 假设在数据库服务器上装有一个可信任安全模块TCM3,存放数据库管理员和每个用户的公钥(pk’)和私钥(sk’)。每个用户拥有自己的私钥口令UP。数据库管理员拥有私钥口令AP。\n[0165] 设置授权书(C),其用来描述客户端执行数据库/表的操作权限。该授权书(C)是访问控制的判断依据,具体可以包括内容:\n[0166] a)授权人:\n[0167] b)授权时间:\n[0168] c)有效期:\n[0169] d)数据库名:\n[0170] e)表名:\n[0171] f)字段名:\n[0172] g)数据表操作权限:允许用户对某个数据库已有表进行读取、插入、更新、删除操作,取值集合为{‘select’、’insert’、’update’、’delete’}。\n[0173] h)数据库/表管理权限:允许用户对数据库或表进行管理,取值集合为{‘alter’、’index’、’create’、’drop’}。\n[0174] 设置授权表Auth_Table,授权表是数据库系统中的系统表,每条记录表示一条授权规则,授权表的结构及内容可以如表1所示:\n[0175] \n 字段名 Username Host Cert Sig\n (用户名) (主机名) (授权书) (签名)\n 说明 被授权人 被授权人主 已加密的授权 授权人的签名(C”)\n 机 书(C’)\n[0176] 表1\n[0177] 参见图7,其是根据本发明实施例的对客户端进行授权的流程图,具体包括:\n[0178] 步骤701,设置授权书C,根据实际需要填充授权书的具体内容;\n[0179] 步骤702,在数据库的授权表中增加一条记录,填写Username字段和Host字段;\n[0180] 步骤703,TCM根据Username加载客户端的公钥,并应用所述公钥加密授权书C,生成C’;\n[0181] 步骤704,接收管理员的私钥口令AP;\n[0182] 步骤705,判断所述管理员的私钥口令AP是否正确,若不正确,则授权失败,结束;\n若正确,再执行步骤706;\n[0183] 步骤706,应用管理员的私钥签名C’,生成C”;\n[0184] 步骤707,将所述C’和C”存入授权表的Cert字段,授权成功。\n[0185] 参见图8,其是根据本发明实施例的验证客户端访问权限的流程图,具体包括:\n[0186] 步骤801,获取当前连接客户端的用户信息;\n[0187] 这里,该用户信息包括用户名和主机名;\n[0188] 步骤802,在授权表的Username字段和Host字段查找匹配记录;\n[0189] 步骤803,判断是否找到匹配记录,若是,则执行步骤804,否则,该客户端的访问权限验证失败,结束;\n[0190] 步骤804,在TCM中应用管理员的公钥验证授权表的sig字段的签名;\n[0191] 步骤805,判断所述sig字段的签名是否正确,若正确,则执行步骤806,否则,该客户端的访问权限验证失败,结束;\n[0192] 步骤806,接收来自所述客户端的私钥口令UP;\n[0193] 步骤807,判断所述来自客户端的私钥口令UP是否正确,若不正确,则该客户端的访问权限验证失败,结束;若正确,再执行步骤808;\n[0194] 步骤808,加载所述客户端的私钥,应用所述私钥解码C’,得到授权书C;\n[0195] 步骤809,判断所述操作请求对应的权限是否在所述授权书所规定的权限范围内,若符合,则该客户端的访问权限验证成功,否则,该客户端的访问权限验证失败。\n[0196] 需要说明的是,上述对应的权限至少包括以下各种权限之一或任意组合:操作权限,管理权限和时间有效期权限;其中操作权限包括但不限于如删除、添加、查询等操作;\n管理权限包括但不限于所能够管理的数据库列表;时间有效期权限是指其所拥有的权限是否在有效期内,如是否在规定的时间范围内。\n[0197] 至此,实现了双密钥保护授权表。这里的双密钥包括客户端的密钥和管理员密钥。\n[0198] 可见,应用本发明实施例提供的对客户端访问权限进行认证的方法,提高了授权表的安全性,避免了被类似SQL攻击从而绕过用户身份验证的可能性;再有,由于验证密码只出现在验证模块TCM中,避免了由于存放在User表中被猜中、被嗅探的可能。\n[0199] 本发明实施例还提供了一种对客户端访问权限进行认证的装置,如图9所示,具体包括:\n[0200] 设置单元901,用于设置授权表,所述授权表中包括用户信息、已加密的授权书C’及授权人签名C”的对应关系;\n[0201] 客户端信息获取单元902,用于接收到来自客户端的数据库系统操作请求,从所述请求中获取所述客户端的用户信息;\n[0202] 验证单元903,用于如果所获取的用户信息与本地已记录的授权表的用户信息匹配,则根据所述对应关系获取授权人签名C”,并验证所述授权人签名C”;\n[0203] 解密单元904,用于如果签名验证成功,则根据所述对应关系获取已加密的授权书C’,对已加密授权书C’进行解密,获得授权书C;\n[0204] 权限判断单元905,用于判断所述操作请求对应的权限是否在所述授权书所规定的权限范围内,若是,则通过访问权限认证。\n[0205] 上述授权人签名C”通过数据库管理员的公钥进行验证。\n[0206] 所述装置还包括:加载单元,用于在签名验证成功后,加载所述客户端私钥,应用所述客户端的私钥对已加密授权书C’进行解密。\n[0207] 所述装置还包括:客户端私钥验证单元,用于在签名验证成功后,加载所述客户端私钥前,验证来自用户端的私钥口令UP,若验证通过,再加载所述用户端的私钥。\n[0208] 所述客户端信息包括用户名和主机名。\n[0209] 可见,应用本发明实施例提供的对客户端访问权限进行认证的装置,提高了授权表的安全性,避免了被类似SQL攻击从而绕过用户身份验证的可能性;再有,由于验证密码只出现在验证模块TCM中,避免了由于存放在User表中被猜中、被嗅探的可能。\n[0210] 对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。\n[0211] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。\n[0212] 本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。\n[0213] 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
法律信息
- 2014-06-04
- 2011-11-23
实质审查的生效
IPC(主分类): H04L 29/06
专利申请号: 201010135348.3
申请日: 2010.03.26
- 2011-09-28
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2009-05-13
|
2007-11-09
| | |
2
| |
2008-09-10
|
2008-04-10
| | |
3
| |
2007-12-05
|
2007-07-02
| | |
4
| |
2003-04-16
|
2001-09-29
| | |
5
| |
2006-02-01
|
2004-07-29
| | |
6
| |
2007-07-25
|
2006-12-28
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |