APP下载

基于SSL证书认证登录的研究与实现

2015-01-18陈木来

电脑与电信 2015年12期
关键词:数字证书服务端私钥

陈木来

(广东省电子商务认证有限公司,广东 省广州 510000)

基于SSL证书认证登录的研究与实现

陈木来

(广东省电子商务认证有限公司,广东 省广州 510000)

目前在WEB应用中,普遍采用账号口令方式登录,但这种登录方式,有很多安全漏洞,无法满足安全认证的需求。本文提出了基于SSL客户端证书认证的安全登录方案,并说明了其原理及技术要点。希望能为Web开发者提供参考价值。

SSL;CA;PKI;数字证书;安全认证

1 引言

常用的账号口令登录虽然简单,但其易受到猜测、窃听等攻击,使其无法满足当前安全认证的需求。主要体现在:

令易被猜测。有的用户为了方便记忆,使用非常简单的口令,比如“1234”、“abcd”等这些非常容易被猜测的口令,攻击者可以列举出常用的口令来进行字典攻击。

令易被窃听。HTTP协议是以明文方式传输数据的,用户口令在网上的传输,需要经过很多个网络节点,可以在这任意一个网络节点去窃听到用户的口令。

令记忆麻烦。用户在不同的WEB应用上建立不同的帐户,需要记忆不同的口令。记忆这么多的口令形成用户很大的负担,于是有的用户把不同WEB应用的口令设置成相同的口令,这样又引入了新的安全隐患,只需破解用户的一个WEB口令,就等于破解了该用户别的WEB应用口令。

黑客可以从服务器侧获取用户口令。WEB应用服务上,由于需要校验用户的口令,所以需要保存用户的口令或口令的哈希值到数据库上。黑客或管理员可以从数据库拿到每个用户的账号和口令。

正因为账号口令有上述安全问题,现在网上银行、网上政务系统、大型企业的信息系统等,越来越多地采用其他安全认证技术来实现用户登录。

2 SSL证书登录方案概述

图1 证书认证逻辑关系图

由证书颁发机构分别为用户和服务器设备签发数字证书。数字证书类型为X509公钥证书,用户自己保存私钥。用户登录Web服务器时通过SSL握手来实现数字证书认证登录。

基于SSL证书认证的优越性主要体现在:

1)私钥无法猜测。按目前常用RSA2048算法为例,以当前的计算机速度,穷举出密钥几乎不可能。而且现在已慢慢开始使用强度更高的ECC或国密SM2算法。

2)不怕窃听。证书认证中,网上传输的是私钥对一个挑战码的签名,私钥并不需要传输,所以窃听者并不能通过网络窃听到用户私钥。另由于每次认证的挑战码都不同,窃听者窃听的签名值并不能用来重放攻击。

3)无法在服务器侧攻击。服务器侧保存的只是用户的公钥或公钥证书,并没有用户的私钥。公钥只能用来验证签名而不能产生用于登录认证的签名。

SSL协议还保证了数据传输的保密性和完整性。窃听者无法获取数据明文,也不能篡改传输数据。

另,为了更好的安全性和便利性,可以采用了电子密钥作为数字证书及私钥的存储介质。带来的好处是:

1)唯一性。电子密钥(eKey)普遍的形式如U盾、IC卡等,自带加密芯片及安全存储。用户密钥对在卡里面随机产生,私钥不能读取和复制,保证私钥始终在卡里面而不能泄露出来,这样用户掌握了eKey就等于唯一掌握了这个私钥。

2)安全方便。用户只需随身携带一个电子密钥,就可在不同的电脑上随时随地地登录不同的Web网站,甚至可以很容易地做到单点登录。而且用户的私钥始终只在eKey里面,任何使用过的电脑上都没有私钥痕迹。

3)双因子认证。用户在使用电子密钥(eKey)里的私钥做签名时,需要本地输入正确的PIN码或做指纹识别。这样就等于设置了2道门,都通过后才能最终进入。另外这个PIN码还有重试次数限制,输错指定的次数后eKey将锁死,有效地防止了别人的多次猜测。

3 SSL证书登录原理

SSL证书登录的大体过程是:客户端浏览器与服务器的SSL握手过程中,向服务器提交用户的私钥签名及公钥证书;服务器获得用户的私钥签名及公钥证书后,验证用户的私钥签名,并根据用户公钥证书查找到对应的用户账号,给以登录。

3.1 SSL握手协议

SSL在握手过程中,服务端可以要求客户端证书认证,其中有3个消息与客户端认证有关:CertificateRequest、Certificate、CertificateVerify。

CertificateRequest消息指示客户端要进行客户端认证,并就服务器愿意接受的认证类型提供指导:certificate_types指示服务端支持哪种类型的客户端证书,比如RSa签名证书、DSS签名证书等。certificate_authorities指示服务端愿意接受哪些Ca签发的客户端证书。

Certificate消息是客户端向服务端提交的表明身份的数字证书链,证书链的第一个证书就是表明用户身份的数字证书。

CertificateVerify消息用于真正的客户端认证。它包含由客户端私钥签名的消息,签名内容为自ClientHello到本消息(不包含本消息)所收发的所有握手消息。且由于这些握手消息带有导出主密钥(master_secret)的随机数,所以本消息可以防止被重放。

在SSL握手过程中,客户端和服务端均会验证对端数字证书的有效性,包括私钥签名有效性、证书有效期、Ca证书链、CRL、OCSP等。应用层不需要再做重复验证,大大简化了应用开发。

3.2 用户证书与用户账号的关联

通过SSL握手后,服务端得到了用户的数字证书,但要能从这个数字证书找到用户的帐户,需要对用户证书和用户账号进行关联。由于数字证书是一个X509格式的二进制数据,为了方便数据库的检索,用户证书可以以用户证书唯一号来表示,用户证书唯一号可以是证书序列号、证书主题、证书摘要值等。

4 SSL证书登录的实现

要实现SSL双向证书认证,服务器端和客户端都要做些必要的配置。下面分别进行说明。

4.1 WEB服务端

4.1.1 Web服务器的设置

Web服务器端主要需要做以下配置:

1)安装Ca证书链:服务端安装Ca证书链的目的,是用于验证客户端提交的认证证书的有效性。这个文件的内容将决定了SSL握手协议的CertificateRequest消息,同时也用于验证客户端过来的Certificate消息。

2)申请并安装Web服务器证书:以Web服务器的IP或域名向Ca中心申请设备证书,Ca中心签发了证书后,再安装到Web服务器上。

3)Web服务器的SSL配置:SSL支持忽略客户端证书、可接收客户端证书、必须客户端证书三种模式。只有选择了后两种模式后,才能做到SSL双向证书认证。

4.1.2 用户证书与用户账号的关联

Ca给用户签发的数字证书,一般以证书摘要作为唯一值,在数据库的用户账号表里面增加一列,用于保存证书唯一值。每个用户帐户保存他自己的证书唯一值。

4.1.3 获取客户端登录证书

当WEB服务器设置成需要客户端认证时,客户端在建立SSL链接时会提交用户证书链,证书链的第一个即是表明用户身份的个人证书。

Jsp或Servlet中可以通过HttpServletRequest接口的getAttribute()方法得到客户端认证证书,然后再根据证书摘要值找到对应的用户帐户并给予登录:

final String attname="javax.servlet.request.X509Certificate"; //属性名

X509Certificate[]chain= (X509Certificate[])request.getAttribute(attname);//用户证书链

X509Certificate userCert=chain[0]; //用户认证证书

//得到userCert的证书摘要值

//根据证书摘要值到数据库查找对应的用户帐户并给予登录

4.2 客户端

4.2.1 客户端浏览器配置

客户端浏览器主要要做以下配置:

1)安装CA证书链:同样,客户端需要安装Ca证书链,是用于验证服务端证书的有效性。对应于SSL握手协议,是用于验证服务端过来的Certificate消息。

2)安装用户数字证书:目前,比较常见的用户数字证书载体是USBKey(U盾),它是通过USB口插入到个人电脑上的。U盾配套的软件主要有:驱动程序;密码服务提供者接口;证书注册服务程序等。当用户U盾插入到电脑时,证书注册服务程序会自动把U盾里面的数字证书安装到Windows系统中,并与密码服务提供者接口及私钥做关联。当U盾从电脑拔出时,证书注册服务程序会自动删除之前安装到Windows系统中的数字证书。

4.2.2 访问WEB应用

上面的配置做好后,只需在用户电脑上的浏览器上打开页面:https://myserver/ssllogin.jsp。浏览器将提示用户选择登录证书(如果只有一张符合条件的证书时,默认将不再提示选择)。用户选择完登录证书后,系统将会弹出U盾的PIN码输入框。PIN码输入正确后,SSL将握手成功,JSP页面将能得到用户的登录证书并找到对应的用户帐户给以登录。

5 总结

对比于常用的账号口令登录,SSL客户端证书登录具有更好的安全性、更好的便利性。虽然SSL的配置稍微有点麻烦,但编程开发还是相对容易。且SSL协议在众多的Web服务器及Web浏览器产品上已被很好地支持。所以,SSL客户端证书登录可以作为很好的安全登录方案。

[1]薛辉.基于SSL协议的培训管理系统的研究与设计[J].电脑与电信,2012,6:25-27.

[2]马琰.基于SSL&SET协议的在线支付模型的研究[J].电脑与电信,2011,5:64-65.

The Study and Implementation Based on the Approval and Log-in of SSL Certificate

Chen Mulai
(Guangdong Electronic CertificationAuthority CO.,LTD,Guangzhou 510000,Guangdong)

Using the password to log in is very often in today’s applications of web.However,such a way to log-in is not safe enough and cannot satisfy the need of the security certification.This paper gives out the safe log-in proposal of the SSL clients’certification and explains its theory and techniques.The author hopes that it will provide some values for the web developers.

SSL;CA;PKI;digital certificate;security certification

TP393.08

A

1008-6609(2015)12-0081-03

陈木来,男,广东梅州人,本科,研究方向:信息安全。

猜你喜欢

数字证书服务端私钥
清扫机器人避障系统区块链私钥分片存储方法
比特币的安全性到底有多高
基于改进ECC 算法的网络信息私钥变换优化方法
无线网络安全认证研究
一种基于虚拟私钥的OpenSSL与CSP交互方案
新时期《移动Web服务端开发》课程教学改革的研究
在Windows Server 2008上创建应用
当心黑客利用数字证书的漏洞
基于数字证书的军事信息系统安全防护方案
数字签名保护Word文档