论文部分内容阅读
摘要:针对多数Web系统在用户验证时以明文传输账户信息带来的安全隐患,提出了一种综合使用对称密码体制、非对称密码体制、单向散列算法和一次一密技术来保障用户验证安全的策略。该方法在略微增加计算复杂度的前提下,就能够有效防止用户验证过程遭受窃听、重放等恶意攻击;而对现有Web系统的改进仅涉及新用户注册、用户登录、密码修改等操作,更新便捷。
关键词:混合密码体制;安全;Web;用户验证;加密
0 引言
随着互联网的发展和WWW技术的推广应用,Web浏览已经成为广大网民主要的网络活动。CNCERT/CC网络安全工作报告指出,2005年Web浏览所消耗的带宽位居所有网络应用之首(37.82%)。随着WWW应用领域的扩大,Web应用所暴露的安全问题日益增多,这其中多数Web系统都必备的用户验证模块就存在着重大的安全隐患。常见的Web服务,比如网络论坛、网络博客、Web邮箱,在为用户提供服务前,服务器都需要根据用户输入的账户信息进行身份验证。然而,经调查发现,多数Web服务(如新浪邮箱、新华论坛、博客天下、搜狐邮件等。调查日期:2007-1-6)在对用户身份验证时并没有采取有效的保护措施,用户的账户信息被直接以明文形式在网络中传送。于是,恶意攻击者利用网络嗅探技术将很容易得到他人的账户信息,甚至出现了专门的工具软件用于窃取局域网中的账户信息。
1 用户验证的安全策略
由于设计时未考虑安全因素,HTTP协议是以明文方式传送数据的。因此,Web通信的安全需要通过其他路径来解决。
为了保证基于WWW服务的数据传输的安全,Netscape公司提出了称为“Secure Sockets Layer”(安全套接字层,SSL)的Internet安全标准。SSL位于应用层(如HTFP)和传输层(TCP)之间,为客户机与服务器间的数据传输建立了加密通道。然而Web服务器在执行SSL相关任务时,吞吐量显著下降,运行速度比只执行HTTP1.0连接时慢50多倍。而且,除了网络银行等少数站点,多数Web应用并不需要运行SSL来为所有传输的数据加密。在这些Web系统中,可以采用综合对称密码算法、非对称密码算法、单向散列算法和一次一密技术的混合密码体制,在用户验证所涉及的新用户注册、用户登录、密码修改等3个操作中为账户的传输提供保密措施。
新用户注册过程中,用户输入的账户信息(包括用户名和密码)将被安全地传输到服务器端用户数据库中存储。这可以通过非对称密码体制(比如RSA)来实现。服务器端在运行初始阶段生成并维护一对密钥:公钥用于浏览器对账户信息的加密,私钥用于服务器端的解密。两端的加解密分别用服务器端脚本和客户端脚本实现。
为了防止服务器端用户数据库中账户信息(主要是密码)的泄露,可以存储通过单向散列函数(比如MD5)求得的密码的摘要信息,而非密码本身。
用户登录过程中,只要能验证用户的合法性即可,不必传输密码信息。服务器将当前系统时间和一个随机数传输给浏览器,浏览器以用户输入的账户信息为密钥,用对称加密算法(比如DES)对这两个值加密后传回服务器进行验证。由于传输的是系统时间和随机数的组合,实现了一次一密技术,可以有效预防重放攻击。
密码修改操作首先需要验证用户现用密码的正确性,然后以新密码更新用户数据库。服务器将两个参数(系统时间和一个随机数)传输给浏览器,浏览器端以现用密码为密钥,用对称加密算法加密新密码和服务器端传来的两个参数。于是服务器端可根据传回的两个参数值验证用户后更新数据库。
2 用户验证的实现细节
Web系统中涉及密码传输的主要有三个操作:新用户注册、用户登录和密码修改。
2.1 新用户注册
服务器端在第一个用户注册前生成一对密钥:公钥PK和私钥SK——这对密钥可供所有新注册用户使用,为安全起见,也可定期更新。浏览器以PK为密钥对账户信息进行加密。待密文传输到服务器端后,服务器端即可以SK为密钥解密并获得账户信息。用户注册过程有以下几个步骤:
(1)用户浏览新用户注册页面(Reg),如图1的①;
(2)服务器端生成一个随机数R,将R和系统时间T保存到当前连接的会话Session中,并将Reg页面(内含T、R和PK)发送到浏览器,如图1的②;
(3)用户输入用户名UN、密码PWD,并单击“提交”按钮;
(4)Reg页的客户端脚本以PK为密钥采用非对称加密算法AE将T、R、UN和PWD加密为密文:AEPK[T+R+UN+PWD];
(5)浏览器将密文传输到服务器端,如图1的③;
(6)服务器端将当前时间和保存在Session中的T进行比较,若超时,则提示用户并转到“(2)”; (7)服务器端脚本利用SK对AEPK[T+R+UN+PWD]进行解密,得到T’、R’、UN和PWD;
(8)服务器端将T’和R’与Session中的T和R进行比较。若不同,则提示失败并转到“(2)”;
(9)服务器端判断UN是否已被他人注册使用,若已用,则提示用户并转到“(2)”;
(10)服务器端将账户信息保存到用户数据库,并提示用户注册成功。为防止用户数据库泄密,服务器端可将UN和PWD用单向散列算法H进行散列,将得到的H[UN+PWD]存储到密码字段——此处包含UN是为了防止不同用户碰巧采用同一密码而导致密码泄露。
2.2 用户登录
每当用户需要登录系统时,服务器将当前的系统时间T和一个随机数R发送给浏览器。浏览器以用户输入的账户信息为密钥采用对称加密算法SE对T和R进行加密,然后将密文传输到服务器。服务器端用数据库中的账户信息将密文解密后,比对前后的T和R以验证用户的合法性。详细过程如下:
(1)用户浏览用户登录页面(Login),如图2的①;
(2)服务器端生成一个随机数R,将R和系统时间T保存到当前连接的会话Session中,并将Login页面(内含T和R)发送到浏览器,如图2的②;
(3)用户输入账户信息UN和PWD;
(4)Login页的客户端脚本用单向散列算法H对UN和PWD进行散列,求得H[UN+PWD];
(5)Login页的客户端脚本以H[UN+PWD]为密钥采用对称加密算法SE对T和R进行加密,得到SEH[UN+PWD][T+R];
(6)浏览器将密文和UN一起发送到服务器端,如图2的③;
(7)服务器端将当前时间和保存在Session中的T进行比较,若超时,则提示用户并转到“(2)”;
(8)服务器端根据UN在用户数据库中找到H[UN+PWD], 以其为密钥解密收到的密文,获得浏览器传回的数据T’和R’;
(9)服务器端将T’和R’与Session中的T和R进行比较,若相同则登陆验证通过,完成随后的一系列工作(如在Session中保存UN),并清除Session中的T和R——以免遭受重放攻击,若不同,则提示失败并转到“(2)”。
2.3 密码修改
成功登录后的用户需要修改密码时,服务器端给浏览器发送当前系统时间T、随机数R和Session中的UN。浏览器以用户输入的现用密码OPWD和UN为密钥,对T、R和用户输入的新密码NPWD采用对称加密算法SE进行加密,然后将密文传输给服务器。服务器通过比较前后的T和R验证用户的合法性,更新用户密码。以下是修改密码的过程:
(1)用户浏览修改密码页面(chgPwd),如图3的①;
(2)服务器端生成一个随机数R,将R和系统时间T保存到当前连接的会话Session中,并将ChgPwd页面(内含T、R和Session里的UN)发送到浏览器,如图3的②;
(3)用户输入现用密码OPWD和新密码NPWD;
(4)ChgPwd页面里的客户端脚本用单向散列算法H对UN和OPWD进行散列,求得H[UN+OPWD];
(5)ChgPwd页面里的客户端脚本以H[UN+OPWD]为密钥采用对称加密算法SE对T、R和NPWD进行加密,得到SEH[UN+OPWD][T+R+NPWD];
(6)浏览器将密文发送到服务器端,如图3的③;
(7)服务器端将当前时间和保存在Session中的T进行比较,若超时,则提示用户并转到“(2)”;
(8)服务器端根据Session里的UN在数据库中找到H[UN+PWD],以其为密钥解密密文,获得浏览器传回的数据T’、R’和NPWD;
(9)服务器端将T’和R’与Session中的T和R进行比较,若相同则用户合法,计算H[UN+NPWD]并更新用户数据库,提示成功,同时清除Session中的T和R,若不同,则提示失败并转到“(2)”。
3 性能分析
3.1 安全性能分析
用户验证的安全策略至少可以应对以下几种攻击:
密码窃听 用户验证过程中没有明文传输密码,而且在用户登录操作中就根本无需传输密码,从而避免了密码被窃听的威胁。
数据篡改 浏览器端传回的密文中包含了随机值,若数据被篡改则服务器端能在验证时及时发现。
已知明文攻击 用户验证过程中传输的数据都包含了随机值,可以避免明文数据模式的泄露。
重放攻击 用户验证中传输的数据都包含了系统时间值,时间错误和超时都不能完成操作,从而杜绝了重放攻击的发生。
3.2 计算性能分析
密码算法的引入必然会增加系统的计算复杂度,其中以非对称密码算法的复杂度最大。不过,只有新用户注册时需要执行非对称密码算法。由于新用户注册操作相比用户登录操作要少很多,用户验证的3个操作在Web系统整个运行期间也只占很小的比重;而且,完成用户验证后,系统就可按常规(明文)方式通信。因此用户验证的改进策略对Web服务的计算性能影响不大。
4 结束语
综合了多种密码学技术的Web用户验证策略可以有效解决存在于现今多数Web服务中的账户信息安全隐患。不仅如此,还可以借鉴这一策略来实现Web服务中其他一些敏感数据的安全传输。当然,该方法只是解决了账户信息明文传输可能造成的威胁,并没有涉及验证通过后的访问安全性。而且Web服务还存在其他一些安全问题,比如用户登录成功后,系统一般利用Session中的数据来识别用户的合法性,因此,存在会话被第三方劫持等威胁。这些却需要通过其他技术解决。
关键词:混合密码体制;安全;Web;用户验证;加密
0 引言
随着互联网的发展和WWW技术的推广应用,Web浏览已经成为广大网民主要的网络活动。CNCERT/CC网络安全工作报告指出,2005年Web浏览所消耗的带宽位居所有网络应用之首(37.82%)。随着WWW应用领域的扩大,Web应用所暴露的安全问题日益增多,这其中多数Web系统都必备的用户验证模块就存在着重大的安全隐患。常见的Web服务,比如网络论坛、网络博客、Web邮箱,在为用户提供服务前,服务器都需要根据用户输入的账户信息进行身份验证。然而,经调查发现,多数Web服务(如新浪邮箱、新华论坛、博客天下、搜狐邮件等。调查日期:2007-1-6)在对用户身份验证时并没有采取有效的保护措施,用户的账户信息被直接以明文形式在网络中传送。于是,恶意攻击者利用网络嗅探技术将很容易得到他人的账户信息,甚至出现了专门的工具软件用于窃取局域网中的账户信息。
1 用户验证的安全策略
由于设计时未考虑安全因素,HTTP协议是以明文方式传送数据的。因此,Web通信的安全需要通过其他路径来解决。
为了保证基于WWW服务的数据传输的安全,Netscape公司提出了称为“Secure Sockets Layer”(安全套接字层,SSL)的Internet安全标准。SSL位于应用层(如HTFP)和传输层(TCP)之间,为客户机与服务器间的数据传输建立了加密通道。然而Web服务器在执行SSL相关任务时,吞吐量显著下降,运行速度比只执行HTTP1.0连接时慢50多倍。而且,除了网络银行等少数站点,多数Web应用并不需要运行SSL来为所有传输的数据加密。在这些Web系统中,可以采用综合对称密码算法、非对称密码算法、单向散列算法和一次一密技术的混合密码体制,在用户验证所涉及的新用户注册、用户登录、密码修改等3个操作中为账户的传输提供保密措施。
新用户注册过程中,用户输入的账户信息(包括用户名和密码)将被安全地传输到服务器端用户数据库中存储。这可以通过非对称密码体制(比如RSA)来实现。服务器端在运行初始阶段生成并维护一对密钥:公钥用于浏览器对账户信息的加密,私钥用于服务器端的解密。两端的加解密分别用服务器端脚本和客户端脚本实现。
为了防止服务器端用户数据库中账户信息(主要是密码)的泄露,可以存储通过单向散列函数(比如MD5)求得的密码的摘要信息,而非密码本身。
用户登录过程中,只要能验证用户的合法性即可,不必传输密码信息。服务器将当前系统时间和一个随机数传输给浏览器,浏览器以用户输入的账户信息为密钥,用对称加密算法(比如DES)对这两个值加密后传回服务器进行验证。由于传输的是系统时间和随机数的组合,实现了一次一密技术,可以有效预防重放攻击。
密码修改操作首先需要验证用户现用密码的正确性,然后以新密码更新用户数据库。服务器将两个参数(系统时间和一个随机数)传输给浏览器,浏览器端以现用密码为密钥,用对称加密算法加密新密码和服务器端传来的两个参数。于是服务器端可根据传回的两个参数值验证用户后更新数据库。
2 用户验证的实现细节
Web系统中涉及密码传输的主要有三个操作:新用户注册、用户登录和密码修改。
2.1 新用户注册
服务器端在第一个用户注册前生成一对密钥:公钥PK和私钥SK——这对密钥可供所有新注册用户使用,为安全起见,也可定期更新。浏览器以PK为密钥对账户信息进行加密。待密文传输到服务器端后,服务器端即可以SK为密钥解密并获得账户信息。用户注册过程有以下几个步骤:
(1)用户浏览新用户注册页面(Reg),如图1的①;
(2)服务器端生成一个随机数R,将R和系统时间T保存到当前连接的会话Session中,并将Reg页面(内含T、R和PK)发送到浏览器,如图1的②;
(3)用户输入用户名UN、密码PWD,并单击“提交”按钮;
(4)Reg页的客户端脚本以PK为密钥采用非对称加密算法AE将T、R、UN和PWD加密为密文:AEPK[T+R+UN+PWD];
(5)浏览器将密文传输到服务器端,如图1的③;
(6)服务器端将当前时间和保存在Session中的T进行比较,若超时,则提示用户并转到“(2)”; (7)服务器端脚本利用SK对AEPK[T+R+UN+PWD]进行解密,得到T’、R’、UN和PWD;
(8)服务器端将T’和R’与Session中的T和R进行比较。若不同,则提示失败并转到“(2)”;
(9)服务器端判断UN是否已被他人注册使用,若已用,则提示用户并转到“(2)”;
(10)服务器端将账户信息保存到用户数据库,并提示用户注册成功。为防止用户数据库泄密,服务器端可将UN和PWD用单向散列算法H进行散列,将得到的H[UN+PWD]存储到密码字段——此处包含UN是为了防止不同用户碰巧采用同一密码而导致密码泄露。
2.2 用户登录
每当用户需要登录系统时,服务器将当前的系统时间T和一个随机数R发送给浏览器。浏览器以用户输入的账户信息为密钥采用对称加密算法SE对T和R进行加密,然后将密文传输到服务器。服务器端用数据库中的账户信息将密文解密后,比对前后的T和R以验证用户的合法性。详细过程如下:
(1)用户浏览用户登录页面(Login),如图2的①;
(2)服务器端生成一个随机数R,将R和系统时间T保存到当前连接的会话Session中,并将Login页面(内含T和R)发送到浏览器,如图2的②;
(3)用户输入账户信息UN和PWD;
(4)Login页的客户端脚本用单向散列算法H对UN和PWD进行散列,求得H[UN+PWD];
(5)Login页的客户端脚本以H[UN+PWD]为密钥采用对称加密算法SE对T和R进行加密,得到SEH[UN+PWD][T+R];
(6)浏览器将密文和UN一起发送到服务器端,如图2的③;
(7)服务器端将当前时间和保存在Session中的T进行比较,若超时,则提示用户并转到“(2)”;
(8)服务器端根据UN在用户数据库中找到H[UN+PWD], 以其为密钥解密收到的密文,获得浏览器传回的数据T’和R’;
(9)服务器端将T’和R’与Session中的T和R进行比较,若相同则登陆验证通过,完成随后的一系列工作(如在Session中保存UN),并清除Session中的T和R——以免遭受重放攻击,若不同,则提示失败并转到“(2)”。
2.3 密码修改
成功登录后的用户需要修改密码时,服务器端给浏览器发送当前系统时间T、随机数R和Session中的UN。浏览器以用户输入的现用密码OPWD和UN为密钥,对T、R和用户输入的新密码NPWD采用对称加密算法SE进行加密,然后将密文传输给服务器。服务器通过比较前后的T和R验证用户的合法性,更新用户密码。以下是修改密码的过程:
(1)用户浏览修改密码页面(chgPwd),如图3的①;
(2)服务器端生成一个随机数R,将R和系统时间T保存到当前连接的会话Session中,并将ChgPwd页面(内含T、R和Session里的UN)发送到浏览器,如图3的②;
(3)用户输入现用密码OPWD和新密码NPWD;
(4)ChgPwd页面里的客户端脚本用单向散列算法H对UN和OPWD进行散列,求得H[UN+OPWD];
(5)ChgPwd页面里的客户端脚本以H[UN+OPWD]为密钥采用对称加密算法SE对T、R和NPWD进行加密,得到SEH[UN+OPWD][T+R+NPWD];
(6)浏览器将密文发送到服务器端,如图3的③;
(7)服务器端将当前时间和保存在Session中的T进行比较,若超时,则提示用户并转到“(2)”;
(8)服务器端根据Session里的UN在数据库中找到H[UN+PWD],以其为密钥解密密文,获得浏览器传回的数据T’、R’和NPWD;
(9)服务器端将T’和R’与Session中的T和R进行比较,若相同则用户合法,计算H[UN+NPWD]并更新用户数据库,提示成功,同时清除Session中的T和R,若不同,则提示失败并转到“(2)”。
3 性能分析
3.1 安全性能分析
用户验证的安全策略至少可以应对以下几种攻击:
密码窃听 用户验证过程中没有明文传输密码,而且在用户登录操作中就根本无需传输密码,从而避免了密码被窃听的威胁。
数据篡改 浏览器端传回的密文中包含了随机值,若数据被篡改则服务器端能在验证时及时发现。
已知明文攻击 用户验证过程中传输的数据都包含了随机值,可以避免明文数据模式的泄露。
重放攻击 用户验证中传输的数据都包含了系统时间值,时间错误和超时都不能完成操作,从而杜绝了重放攻击的发生。
3.2 计算性能分析
密码算法的引入必然会增加系统的计算复杂度,其中以非对称密码算法的复杂度最大。不过,只有新用户注册时需要执行非对称密码算法。由于新用户注册操作相比用户登录操作要少很多,用户验证的3个操作在Web系统整个运行期间也只占很小的比重;而且,完成用户验证后,系统就可按常规(明文)方式通信。因此用户验证的改进策略对Web服务的计算性能影响不大。
4 结束语
综合了多种密码学技术的Web用户验证策略可以有效解决存在于现今多数Web服务中的账户信息安全隐患。不仅如此,还可以借鉴这一策略来实现Web服务中其他一些敏感数据的安全传输。当然,该方法只是解决了账户信息明文传输可能造成的威胁,并没有涉及验证通过后的访问安全性。而且Web服务还存在其他一些安全问题,比如用户登录成功后,系统一般利用Session中的数据来识别用户的合法性,因此,存在会话被第三方劫持等威胁。这些却需要通过其他技术解决。