一种防范钓鱼网站的方法

2011-03-14 06:44程元斌
网络安全技术与应用 2011年8期
关键词:口令钓鱼网页

程元斌

江汉大学数学与计算机科学学院 湖北 430056

0 引言

网络钓鱼是在线身份窃取的一种。在线身份窃取(Identity Theft)指的是直接通过网络环境窃取代表他人个人身份的数据信息(例如身份证号码、信用卡号码、账户信息和密码等)的行为。尽管早期的案例主要在美国发生,但随着我国因特网服务日渐普遍,近年来,网络钓鱼成为了在线身份窃取的主流。

关于网络钓鱼,百度百科是这样定义的:“网络钓鱼攻击者利用欺骗性的电子邮件和伪造的 Web站点来进行网络诈骗活动,受骗者往往会泄露自己的私人资料,如信用卡号、银行卡账户、身份证号等内容。诈骗者通常会将自己伪装成网络银行、在线零售商和信用卡公司等可信的品牌,骗取用户的私人信息”。指出“最典型的网络钓鱼攻击”是钓鱼者通过电子邮件或其他方式将收信人或浏览者“引诱到一个通过精心设计的与目标组织的网站非常相似的钓鱼网站上,并获取收信人在此网站上输入的个人敏感信息,通常这个攻击过程不会让受害者警觉”。正因为其具有很大的欺骗性,用户一旦上当,往往会造成很大的损失。据中国互联网络信息中心联合国家互联网应急中心发布的《2009年中国网民网络信息安全状况调查报告》报道,2009年有超过九成网民遇到过网络钓鱼,在遭遇过网络钓鱼事件的网民中,4500万网民蒙受了经济损失,占网民总数11.9%。网络钓鱼给网民造成的损失已达76亿元。

要防止网络钓鱼,最重要的是让用户能够识别网站的真伪。但是,人总有疏忽的时候,况且,大多数人都没有观察地址栏或状态栏的习惯,甚至没有详记网址的习惯。所以,尽管网络钓鱼已不是新鲜事,尽管有关部门一再提醒人们当心,然而网络钓鱼事件依然经常发生,甚至有愈演愈烈的趋势。针对这个问题,本文提出一种方法,可以让用户很自然地观察到网站的真伪,从而可有效防止钓鱼网站的欺骗。

1 基本原理

当用户访问一个网站时,确切地说,是当用户想要确认网站的真实性时,或者网络服务本身需要用户了解网站的真实性时,例如当网络银行要求用户输入用户口令等关键信息时,由用户先输入一个私数,并且将这个私数发送到服务器,服务器接着返回一组与此私数相关联的防钓码,用户看到这组防钓码,便知网站真假。这里,假定该用户已经用同一个私数测试过(或登录过)该网站,且测试时的情况是真实的。这样,当用户使用与以前相同的私数时,如果网站是真实的,则看到的防钓码一定是相同的;如果看到的防钓码不同,则肯定是钓鱼网站无疑。

这里,所谓“私数”,即只需要用户自己记住的数,理想的情况是只有用户自己知道的数;它可以是一个真正的数,也可以是一个字符串,而且通常是一个字符串。私数有以下几个特性:其一,它不需要存入服务器数据库中;其二,用户即使忘记了也无大碍,可随时另设一个;其三,它可以用用户容易记住的数而不带来新的安全问题;其四,一个用户可以为自己设立一个或几个私数而任意交替使用。

所谓“防钓码”是一组与私数相关联的网站标识,因为是为防范钓鱼网站而设,所以称之为“防钓码”。防钓码的基本特性是即使对同一个网站,不同用户所看到的防钓码通常也是不同的。这样,就使得钓鱼网站制作者不可能通过自身体验获取伪造目标网站所需的必要信息。一组防钓码可以由若干个文字或若干个图形或若干个图像组成或者由这些元素混合而成。一个网站的防钓码的生成完全由该网站自由设计的秘密算法生成,私数相同则防钓码相同。虽不能(也不需要)保证每个用户所看到的同一个网站的防钓码都是两两不同的,但通过防钓码算法的精心设计,至少可以保证由不同私数产生相同防钓码的概率是极小的。

需要注意的是,用户选择的私数应有一定的长度且不容易被猜测到。这是因为钓鱼网站制作者有可能通过私数体验法获取一些钓鱼码,即钓鱼网站制作者先猜测一般用户可能使用哪些私数,然后逐个输入这些私数登录目标网站以获取与这些私数对应的防钓码,然后在钓鱼网站中也让用户输入私数,如果用户输入的私数是钓鱼网站制作者所体验过的那些私数中的,钓鱼网站就可以返回与这此私数对应的防钓码以欺蒙用户,这样十有八九就会让用户中招了。显然,用户选择的私数越长越不一般,则落入钓鱼网站制作者猜测陷阱的可能性越小。

之所以要“先输入一个私数”,是因为若用户打开的是一个钓鱼网站,如果等到输入了用户口令后再输入私数,则可能钓鱼网站已经将用户信息取走了。所以,需要在网页上增加一个“私数”输入框,让用户先输入一个数或字符串,待用户确认网站的真实性后才能输入关键数据。

2 最简实施举例

当用户访问网站W时,W首先返回包括图1所示部分的网页。

图1中,标签“私数”、“账号”、“口令”右边是输入控件,目前只有私数输入控件处在可用状态,并显示出关于私数输入的简要说明;标签“防钓码”右边是显示防钓码的显示控件,目前显示的是关于防钓码的简要说明;用户点击私数与防钓码两行右端的按钮时,将以弹出窗口的形式显示私数或防钓码及其使用方法的详细说明。

图1 起始页面之一部分

然后,在客户端——一般即为浏览器——执行图2所示流程。其中,MD5是一种著名的报文摘要算法,这里借用它将用户输入的私数变换为一个长度为128比特的数md。这样,一方面可以防范攻击者通过窃听获取用户的私数,另一方面也使得生成防钓码的计算更为方便。

图2 防钓流程

服务器收到md后,即以md为自变量,使用防钓码生成算法生成防钓码AP;然后向客户端返回AP。防钓码生成算法将在下一节讨论。

客户端收到AP后,即将防钓码标签的内容更换为AP,同时将账号输入控件与口令输入控件的状态置为可用。如果用户断定网站为真实的,即可输入账号、口令等,执行登录了。

需要特别注意的是,整个过程必须自始至终使用Session或其它会话机制,以保持整个过程的整体性、可控性,防止过程嵌入攻击,即防止钓鱼网站可能利用 HTTP的无状态(Stateless)特性进行的下述攻击:给出图1相同的界面,待用户输入私数后,提交md给目标网站服务器,得到服务器返回的防钓码AP显示出来,即极可能骗过用户。

3 防钓码生成算法举例

防钓码的生成可以有各种算法,但有一些需要考虑的问题。

先考虑防钓码的形式。防钓码的形式,可以有多种,笔者认为比较好的是图像组或汉字组,因为其数量大组合多,重复概率小。图像是形象的东西,比较容易记;而中国人记汉字也比较容易。所以,本例取国标GB2312-80中的一级汉字的子集作为标识源,将所选子集存到数组 ch[N]中;N应在1000以上,这里不妨设N=3000。

再考虑防钓码的长度 L。以标识源有 1000个元素(N=1000)为例,若钓鱼者用私数体验法获取的一个钓鱼码做了一个固定的假网站标识,则当L=3时,真网站标识与假网站标识相同的概率不到10003分之一,即10亿分之一。可见,钓鱼者想用假网站标识进行欺骗,成功率是微乎其微的。即使钓鱼者用私数体验法获取了 1000个钓鱼码做了一个假网站,当L=3时,真网站标识与假网站标识相同的概率也只有百万分之一。本例中L根据私数取3到7之间的一个数。不过显然,用户只要记牢其中的2到3个汉字就差不多了。

其三是要分析出私数与防钓码之间的生成规律在计算上是不可行的,所以算法不应过于简单。

另外,也应考虑计算速度,算法也不要太复杂。

图3是用类C语言描述的一种防钓码生成算法。其中,输入为客户端提交的用户输入的私数的MD5摘要值,算法中假设汉字数组ch[N]已事先生成。建议用C#实现。

为方便读者,下面给出C语言编写的ch[N]生成函数:

注:起始汉字可以是任一汉字,汉字在汉字数组 ch[N]中的排列也可以是任意的,可以通过编程改变。

图3 防钓码生成算法举例

4 几个相关问题

(1) 隐藏网页代码

隐藏网页代码可以防范钓鱼网站制作者通过对目标网站代码进行拷贝、分析、修改、替换,从而防止攻击者采用文献[1]所述的直接将钓鱼网页替换目标网站服务器上的真实网页。尽管从万维网的根本机制上讲,所有不受浏览器约束的网页代码都是不可能真正隐藏起来的,不过,已经开发出来的网页代码隐藏手段至少可以大大增加攻击的难度。文献[5]较好地介绍了目前流行的一种代码隐藏技术。

(2) 直接在客户端生成防钓码

如果能较好的使用代码隐藏手段于本方法,不仅能提高本方法的抗攻击能力,而且有可能直接在客户端生成防钓码,这无疑能进一步提高网络应用程序的效能。

(3) 显示位置与大小可变的防钓码

实际上,防钓码元素(文字、图形等)的显示位置与大小也可以是防钓码的一个组成部分。这样做显然可进一步增加攻击者的难度,却不会增加用户的记忆难度。

5 结束语

本文所描述的网上钓鱼方法只是各种网络在线身份窃取方法之一;本文所提出的防范钓鱼网站的方法也仅是针对一般意义上的钓鱼网站。在各种网络在线身份窃取方法中,一种与钓鱼网站效果相仿的网站是特别值得用户警惕的:攻击者的这种网站是真实的,它是利用许多用户喜欢用同一组账号口令注册不同的网站的习惯,利用正常获取的这些账号口令尝试登录一些可获利的网站。所以,当注册到一些利益相关重要网站时,一定要使用不同的账号与口令。文献[6]与文献[7]描述了两种应对在线身份窃取的一般性方法,可同时应对各种在线身份窃取攻击,但尚停留在理论研究阶段,需要制定相应的网络协议才能实施。本文所述的方法则只须依靠网站自身的设计就可实现。

[1]陈达.网络钓鱼的现状、方式及防范初探[J].网络安全技术与应用.2008.

[2]白洁,李雪,胡晓荷.直面网络安全最新威胁:网络钓鱼[J],信息安全与通信保密.2007.

[3]百度百科.网络钓鱼.http://baike.baidu.com,/view/77554.htm. 2010.

[4]中国互联网络信息中心.国家互联网应急中心.2009年中国网民网络信息安全状况调查报告.2010.

[5]李用江,刘丹斌.分部类在构建.NET应用程序中的应用研究[J].湖南科技学院学报.2008.

[6]江汉大学,程元斌.具有私密保护及口令找回功能的身份认证方法:中国,ZL 200710053701.1[P]2010. http://www.sipo. gov.cn.

[7]Cheng Yuanbin. An Authentication Protocol Fusing User’s and Server’s Data.DCABES 2010,2010[C].United States,IEEE Computer Society 2010.

猜你喜欢
口令钓鱼网页
基于HTML5与CSS3的网页设计技术研究
高矮胖瘦
口 令
基于CSS的网页导航栏的设计
基于HTML5静态网页设计
好玩的“反口令”游戏
基于URL和网页类型的网页信息采集研究
SNMP服务弱口令安全漏洞防范
钓鱼
第七章 去泥盆纪钓鱼

网络安全技术与应用2011年8期

网络安全技术与应用的其它文章
P2P文件污染与防御