用户Cookie的自动安全保护方法

2014-09-06 08:34熊大元王慧泽刘程晟杨昌元
吉林大学学报(理学版) 2014年5期
关键词:U盘解密浏览器

熊大元,王慧泽,刘程晟,杨昌元

(华东师范大学 信息科学技术学院,上海 200241)

用户Cookie的自动安全保护方法

熊大元,王慧泽,刘程晟,杨昌元

(华东师范大学 信息科学技术学院,上海 200241)

针对用户Cookie的安全性问题,提出一种用户Cookie的自动安全保护方法. 先将用户Cookie信息加密存储在移动存储设备中,再利用指纹识别鉴定用户的身份,实现程序全后台操作,自动完成对Cookie移动、 转存和删除等管理,使用户能在不同计算机上方便进行网络登录,且具有相同的Cookie应用环境. 实际应用表明,该方法能有效保护用户Cookie信息,并提高用户登录时的便捷程度.

Cookie; 安全保护; 指纹识别; Java语言

随着网站数量的增加,用户需要注册的账号越来越多,从而产生大量的注册信息. Cookie作为目前流行的存储用户登录信息并帮助用户自动登录的技术而应用广泛,但用户端Cookie的安全性一直被忽视. 本文基于Cookie的安全性问题,提出一种用户Cookie的自动安全保护方法. 采用具有指纹识别功能的第三方移动硬盘或U盘存储用户的Cookie信息,并鉴别用户身份. 用户身份识别通过后,程序实现全后台操作,自动把用户的Cookie信息解密、 复制到计算机中,用户可利用已有Cookie信息进行网络活动,并具有与原来相同的Cookie应用环境. 在应用过程中,如果Cookie信息发生改变,程序会对Cookie信息进行加密、 存储或删除,以保持Cookie信息的最新状态. 当用户退出系统后,会自动清理本地硬盘的Cookie,防止其他用户对其非法使用. 通过身份认证后,用户对Cookie的使用是透明的,不会影响用户的正常网络应用.

1 Cookie安全性分析

常见的Cookie类型有: 永久Cookie、 临时Cookie、 不满意Cookie、 第一方和第三方Cookie. 在客户端,如果是临时Cookie,存储于浏览器的内存中. 如果是永久Cookie,存储于客户端的Cookies文件夹内[1-2],本文考虑用户端的永久Cookie.

IE浏览器中Cookie的结构体一般可定义为[3-5]:

typedef struct CookieEntry

{

PTCHAR pszName;

PTCHAR pszValue;

PTCHAR pszUrlPath;

DWORD dwFlags; //Security Flags

DWORD dwLowWordExpiration; //LowWord of FILETIME

DWORD dwHighWordExpiration; //HighWord of FILETIME

DWORD dwLowWordCreation; //LowWord of FILETIME

DWORD dwHighWordCreation; //HighWord of FILETIME

CHAR chEnd; //‘*’

} COOKIEENTRY,*LPCOOKIEENTRY;

每个Cookie有6个属性,分别为: Cookies Name,Cookies Value,Domain,Path,Secure和Expire Date. 其中: Path表示Cookie在有效域中的有效路径,在有效路径外的网页不可读写Cookie,默认产生此Cookie信息的URL; 而该属性也是Cookie的一个安全特征,限制对Web服务器上特定目录的访问,即控制哪些访问能触发发送; Secure可选择true/false值,用于表示Cookie是否只能从安全网站中访问; 即如果标记一个Cookie为安全的(该值被设置为true),则仅当客户端与服务器的对话通道是安全的(如HTTP over SSL),Cookie才会被传送. 因此,Cookie结构对服务器端的访问和传输有一定的安全防护,但并未对用户端的Cookie有相应的安全措施. 通常永久Cookie以文本形式存储于客户端计算机中的Cookies文件夹内,对其访问并没有限制[6],存在安全隐患. 特别在公用计算机上,当以相同的系统身份登录后,可获取硬盘上的Cookie信息,并非法使用,从而导致严重后果. 尽管部分网站对Cookie采用了加密等安全措施进行Cookie保护,但对于用户,并没有对所有Cookie信息保护的整体解决方法. 因此研究一种通用的用户Cookie自动安全保护方法非常必要.

2 Cookie自动安全保护程序设计

本文设计的用户Cookie自动安全保护方法,采用指纹识别鉴别用户的身份,计算机硬盘中并不存储Cookie,而存储在移动硬盘或U盘中,对不同用户,Cookie用不同的秘钥进行加密,程序实现全后台操作,完成对Cookie移动、 转存和删除,使浏览器在安全的条件下对Cookie进行调用,从而实现网站的自动登录和相同的使用环境,并自动保护用户的Cookie信息. 程序的组成结构如图1所示.

图1 程序结构Fig.1 Structure of the program

由图1可见,登录模块采用第三方指纹识别方法实现对用户身份的识别. Cookie的存取部分包括存储模块、 加密模块、 读取模块和解密模块. Cookie存储模块和加密模块实现对Cookie的加密存储; Cookie读取模块和解密模块读取、 解密用户对应的Cookie,供网络应用使用. 监控模块检测系统用户及应用中Cookie的变化,为对应用户提供和存储最新的Cookie信息.

Cookie自动安全保护程序工作流程如下:

1) 第三方终端插入计算机后,首先进行指纹验证;

2) 当指纹验证未通过时,储存Cookie加密区无法打开,同时主程序将不运行;

3) 当通过指纹验证时,将储存于终端中的对应用户Cookie解密复制至本地计算机中,供浏览器调用,实现自动登陆,并具有与原来相同的Cookie应用环境;

4) 在浏览器使用Cookie过程中,主程序将实时监控Cookie的变化,将Cookie复制、 加密存储于终端内,保持浏览器中的Cookie与终端中的信息一致;

5) 当拔出第三方终端时退出浏览器,并删除计算机中保留的Cookie信息,防止泄密.

3 程序的实现

Cookie自动安全保护程序分为两部分功能: 存取部分和监控部分,由Java平台实现.

存取部分主要包括Cookie的加密、 存储、 读取和解密,保障Cookie的安全性. 使用java.io中的类FileInputStream和FileOutputStream,分别建立这两个类的对象in和out,使用in.read( )和out.write( ),out.flush( )方法[6]读取并写入数据,实现Cookie存、 取的功能. 针对不同用户,采用用户ID作为唯一标识,形成唯一秘钥,对其相应的Cookie使用3DES进行加密与解密[7-8].

监控模块检测系统用户和应用中Cookie的变化,为对应用户提供和存储最新的Cookie.

1) 监控可移动U盘的变化. 当指纹读取通过时,U盘由不能读取变为可操作,此时将放置在U盘中的Cookie文件复制粘贴到浏览器保存Cookie的地址处,使浏览器能自动调用Cookie实现网站的自动登录.

2) 监控Cookie文件的变化. 当某个文件变化时,调用存取功能,将Cookie复制粘贴到可移动U盘内.

监控模块主要包含FileMonitor和ClassFileChangeListener两类.

类FileMonitor[6-7]是监控部分重要的一环,其中包含内部类FileMonitorTask继承TimerTask-java.util中的类,由Timer安排为一次执行或重复执行的任务. 其中run( )函数根据被监控文件最后一次被修改的时间是否发生变化,确定是否执行lastModified( ). public long lastModified( )函数返回此抽象路径名表示的文件最后一次被修改的时间,如果发生变化,则执行计时器任务的操作,调用FileChanged( )函数.

部分代码如下:

public FileMonitorTask(FileChangeListener listener,String filename) {

this.listener = listener;

this.filename = filename;

this.monitoredFile = new File(filename);

if (!this.monitoredFile.exists( )) {

return;

}

this.lastModified = this.monitoredFile.lastModified( );

}

public void run( ) {

long latestChange = this.monitoredFile.lastModified( );

if (this.lastModified != latestChange) {

this.lastModified = latestChange;

this.listener.fileChanged(this.filename);

}

}

在类FileMonitor中,创建Map的对象timerEntries,将filename和task作为键值对相互联系. 通过addFileChangeListener中的put( )建立Map联系,并使用timer.schedule(task,period,period)函数. public void schedule(TimerTask task,long delay,long period)函数安排指定的任务从指定的延迟后(delay)开始进行重复的固定延迟执行,以近似固定的时间间隔(period)进行后续执行task.run( )函数随同task在每隔固定的时间间隔执行,比较前后两次修改时间是否有变化,从而执行相应的操作.

类ClassFileChangeListener中的FileChanged( )与类FileMonitor中的run( )相连,实现了复制粘贴的功能[6],将二者分开写便于代码的阅读与维护.

类ClassFileChangeListener的代码如下:

public class ClassFileChangeListener implements FileChangeListener {

public void fileChanged (String filename) {

try {

copy(“SourceObject”,“RequiredPath”);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace( );

}

}

}

综上可见,本文实现了依托于硬件形式存储用户Cookie信息和身份认证的用户Cookie自动安全保护方法.

[1]余永武. Web应用程序的自动登录 [J]. 电脑知识与技术,2010,6(35): 10051-10054. (YU Yongwu. Automatic Sign-on for Web Application Program [J]. Computer Knowledge and Technology,2010,6(35): 10051-10054.)

[2]文德民,门爱东,文爱平. 基于Cookie的跨域单点登录系统的设计 [J]. 电脑知识与技术,2009,5(33): 9146-9148. (WEN Demin,MEN Aidong,WEN Aiping. Design of Cross-Domain Single Sign-on System Based on Cookie [J]. Computer Knowledge and Technology,2009,5(33): 9146-9148.)

[3]廖礼萍,鲍有文. 基于跨域Cookie的单点登录系统的设计与实现 [J]. 北京联合大学学报: 自然科学版,2008,22(4): 31-33. (LIAO Liping,BAO Youwen. Design and Implementation of Single Sign on System Based on Cross Domain Cookie Sharing [J]. Journal of Beijing Union University: Natural Sciences,2008,22(4): 31-33.)

[4]郑壮贤,李振坤,陈荣征,等. 基于Cookie的门户网站单点登录系统设计实现 [J]. 计算机技术与发展,2008,18(6): 199-201. (ZHENG Zhuangxian,LI Zhenkun,CHEN Rongzheng,et al. Design and Implementation of Single Sign on System in Portal Website Based on Cookie [J]. Computer Technology and Development,2008,18(6): 199-201.)

[5]马亚娜,钱焕延,孙亚民. Cookie在Web认证中的应用研究 [J]. 小型微型计算机系统,2004,25(2): 207-210. (MA Yana,QIAN Huanyan,SUN Yamin. Research on Cookie’s Application in Web Authentication [J]. Mini-Micro Systems,2004,25(2): 207-210.)

[6]Eckel B. Java编程思想 [M]. 陈昊鹏,译. 5版. 北京: 机械工业出版社,2012. (Eckel B. Thinking in Java [M]. Translated by CHEN Haopeng. 5th ed. Beijing: China Machine Press,2012.)

[7]李馥娟. 基于Cookie的Web应用分析及其安全研究 [J]. 网络安全技术与应用,2009(8): 63-67. (LI Fujuan. Web Application Analysis and Security Research Based on Cookie [J]. Network Security Technology & Application,2009(8): 63-67.)

[8]Richter J. Windows高级编程指南 [M]. 王书洪,刘光明,译. 3版. 北京: 清华大学出版社,1999. (Richter J. Windows Advanced [M]. Translated by WANG Shuhong,LIU Guangming. 3rd ed. Beijing: Tsinghua University Press,1999.)

(责任编辑: 韩 啸)

AutomaticandSafeProtectionMethodofUserCookie

XIONG Dayuan,WANG Huize,LIU Chengsheng,YANG Changyuan
(SchoolofInformationSciencesandTechnology,EastChinaNormalUniversity,Shanghai200241,China)

To solve the safety issues,we proposed a new way of automatic safety protection for user cookies. The cookie was stored in encrypted removable storage devices,and then the fingerprint identification recognition was carried out. This enables the program full background operation: cookie automatic move,transfer,storage and deletion. In this process,users were allowed to conveniently perform network login on different computers in the same cookie application environment. This new method can effectively protect the privacy,and create more convenience for users.

Cookie; safety protection; fingerprint identification; Java language

2014-07-07.

熊大元(1978—),男,汉族,博士,副教授,从事微电子学、 半导体器件和计算机应用的研究,E-mail: dyxiongee@hotmail.com.

上海市大学生创新项目(批准号: KY2012-117S).

TP393.8

A

1671-5489(2014)05-1018-04

猜你喜欢
U盘解密浏览器
炫词解密
解密“一包三改”
炫词解密
采用U盘文件冗余方案实现TSP系统的可靠装载
自动辨认插口方向的U盘
反浏览器指纹追踪
环球浏览器
U盘“闹肚子”
解密“大调解”
浏览器