基于B/S架构的安全密码解决方案研究
摘 要:目前基于B/S架构和C/S架构的主流应用是采用由字母、数字、特殊字符组合而成的字符串作为登录或认证密码,但这类字符串密码存在信息含量少、易被监听、遭受重放攻击、难以记忆等缺点,针对这些缺点我们提出了以任意文件作为密码同时利用移动存储设备进行认证绑定的密码安全解决方案。
关键词:B/S架构;安全;密码;文件
引言
当前绝大多数B/S下密码是由字符(字母,数字或特殊符号)组成,这样的密码形式过于单一,易造成一系列的安全问题:信息泄露、窃听、假冒、 授权侵犯等等。对此密码形式,入侵者的攻击策略通常有三种:第一种,以木马形式盗取用户信息发送到攻击者信箱中;第二种方式,监听目的节点发出的报文,分析破解用户名和密码;第三种,采用常用用户名与常用的密码组合通过自动匹配进行暴力破解;第四种,侵入数据库,直接获取用户的用户名和密码,实施攻击。
针对当前密码形式暴露出的种种弊端,我们提出了一种新型密码形式--文件。文件作为一种复杂的信息单元,拥有比普通字符串更为丰富的信息,为我们提供了非常好的“物质基础”。本系统主要用来验证以文件作为密码形式这种新思路。
1. 本系统的研究方向
本系统主要是挖掘文件作为密码相对于纯粹的字符串形式的密码所具备的优势。改变的只是密码的生成方式,但却能以此获取更安全的用户认证体制,获得更加可信的系统。
1、如何防止木马通过监听键盘获取密码
目前窃密手段主要是通过木马监听被攻击者键盘从而获取密码。而监听鼠标窃取密码的难度显然要比监听键盘的难度大很多,所以我们采用鼠标点击文件实现密码输入,从而降低被监听的风险。
2、如何解决密码长短的各种缺陷
为了平衡记忆难易和安全强度间的利弊,我们在客户端嵌入一个应用程序,让文件内容与属性值作为输入数据,程序负责对其取HASH 值,将32 个十六进制数作为密码传回服务器端,服务器再对接收到的数据取MD5 值,存入数据库,用于以后鉴别用户真伪。
3、如何发挥文件特有优势
充分利用文件属性中自动变化并能与文件完整的绑定在一起的属性。例如文件的最后访问时间、最后修改时间等 ,这些属性随着操纵文件而自动改变,从而导致文件不能被攻击者进行下一步攻击,以此提高密码安全性。
4、如何防止攻击者获取密钥文件后进行重放攻击
采用可移动磁盘作为密钥的存储工具,每个密钥文件与其相应的存储介质绑定在一起。验证用户的时候通过提取可移动磁盘唯一的GUID 来判断密钥文件的存储介质是否发生改变,从而检测密钥文件是否被非法获取,以此避免重放攻击。
5、如何由文件生成密码
采取将文件的内容与所提取的属性做hash,将hash 后的hash 值再经过MD5 后存放在数据库中。但最理想的是采用文件本身的匹配,这种匹配将使得密钥安全性更高
2.系统总体架构:
1、文件处理模块是在客户端使用JavaScript 与Java Applet 对文件的内容属性,对移动介质序列号进行提取,让用户选择将要作为密码的文件和承载这个文件的移动介质。此操作必须经过用户的授权才能进行。在信息提取上,利用java 应用程序通过JNI技术调用 Windows API,得到移动介质序列号。
2、密码生成模块主要是将文件的MD5 值与移动介质序列号进行hash,绑定在一起。Hash 算法采用的是MD5 算法。
3、页面模块采用Ajax, JavaScript, CSS 来对页面做一个简单的处理,美化外观,使我们的条目井然有序。
4、后台模块主要功能:(1) 保存用户注册的合法注册信息;(2) 验证登陆用户的合法性,执行相应跳转。
3.实现原理与技术
1、 移动介质与密码文件绑定
移动介质具有小巧,易携带的特性,能够使用户能随身带在身上,随时使用密码文件。提取移动介质的序列号作为标识文件合法性的重要依据。在提取硬件的信息时,我们利用的是JNI 技术调用编译好的DLL 文件,通过windows API 调用来访问底层数据。
图3-1 JNI 实现流程
2、 Hash 算法
哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,称为哈希值。哈希值是一段数据唯一且极其紧凑的数值。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。我们所采用的MD5 HASH 算法具有单向性、抗冲突性、映射分布均匀性和差分分布均匀性。
3、SSL 协议
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
4、文件属性内容的提取
文件属性与内容的提取是使用简单的java 函数实现的,使用java 构建一个
20 / 30applet 内嵌于页面中,在用户选择文件后便对文件进行相应的提取,在页面中使用的onclick 事件来设置运行条件。
4. 总结
本系统验证了文件作为密码介质的可行性,为信息安全方面提供了新的加密工具。随着电子商务等网上交易的发展,人们对安全的提出了更高的标准,相信这种形式的加密方法的应用必将受到人们的亲睐,在未来的生活应用中将为人们提供更加可靠的网络交流。