链接:https://pan.baidu.com/s/1Xwd0U_KktL0hRFPaggIOGQ?pwd=6688
提取码:6688
2 USB KEY文件加密工具总体设计
2.1USB KEY文件加密工具需求分析
当前软件加密方法多种多样,基本上来说可以分为依赖特定硬件的加密方案和不依赖硬件的加密方案。
依赖特定硬件的加密方案:软盘加密、卡加密、光盘加密。软盘加密和卡加密曾经作为一种很好的加密工具,现在已经很少使用了,这是因为用户很少使用软驱,那么软盘加密技术也就没怎么使用。90年代初,各种各样的汉卡涌现出来,并轰动一时,而现在也很少再使用。光盘加密是一种新的加密方式。既然有软盘加密成功在先,为什么不能有光盘加密呢?但实际操作上确实是有一些问题的,因为光盘有ISO9660标准协议规定,其可控制性比软盘还要严格,想找出一种只能运行而不能复制的方式确实很困难。
不依赖硬件的加密方案:利用WinRAR、WinZip等压缩软件来进行文件的加密。利用压缩软件来实现对文件的加密是现在比较流行的一种方式,但是其有很多的不足,例如向密码太长用户就不方便记忆,有可能会忘记,密码太短又会不安全。并且现在网上有很多的针对WinRAR、WinZip的破解工具,利用破解工具很容易就把用户的密码给破解了,这样用户对文件的加密就如同虚设。
本设计就是利用软件和硬件相结合的方式来实现对文件进行加密。这种方式就是使用软件加密锁(USB KEY)来实现。也就是一个插在计算机USB接口上火柴盒大小的设备,国内俗称“加密狗”。在加密锁内部存有一定的数据和算法,计算机可以与之通讯来获得其中的数据,或通过加密锁进行某种计算。软件无法离开加密锁而运行。由于它不像卡加密那样需要打开计算机的机箱来安装,但又像加密卡那样可以随时访问,而且访问速度很快,所以一推出就受到软件开发者们的青睐。目前,所有的加密锁都提供了可编程的接口。用户可以控制加密锁中的内容,在程序中通过加密锁的接口任意访问加密锁。
利用USB KEY对文件加密应尽量满足用户的需求,使用户对文件加密和解密的过程操作简单,使用方便。并且对密码也要有完善的管理。使用USB KEY可以在USB Key中保存密码,不在需要用户去手动输入密码,解决了用户去记忆复杂密码的过程。鉴于越来越多的人使用USB KEY来保护自己的个人文件。但是许多的意外事件可能会降临,一旦USB KEY被遗失,那么后果将是巨大的。所以开发一个管理性的软件记录拥有USB KEY的用户相关信息、USB KEY的硬件ID、以及对文件加密的密码是十分必要且有效的方法。
利用USB KEY文件加密需要从两个方面去实现用户的需求,第一:USB KEY的管理。第二:客户端应用。
在USB KEY的管理方面:主要包括分类管理、客户添加、查看、编辑,初始化Rockey2这几个方面的功能。分类管理是对用户按什么方式进行分类管理(比如按时间,地区等),由管理员自己设定分类方式,这样便于方便管理用户;管理员实现对用户的添加,查看,编辑;管理员对USB KEY进行初始化,一把新的USB KEY第一次使用,必须进行初始化,初始化也就是根据种子生成对文件加密的密钥,以及UID,并且还要记录USB KEY的信息(包括对文件加密的密钥,硬件ID等)到管理软件中,以便以后对USB KEY进行复制。
在客户端方面,应该尽量使操作简单,不麻烦,就类似winrar对文件加密的操作一样。这样才能被用户接受。这一方面主要完成文件的加密和解密操作。
其系统结构图如下:
添加图片注释,不超过 140 字(可选)
图1系统整体结构图
USB KEY文件加密系统的客户端主要实现对文件的加密和解密;其管理系统主要实现对对用户以及拥有的USB Key信息进行操作管理。
2.2系统选型
2.2.1设计语言:Delphi
Delphi是Borland公司研制的新一代可视化开发工具,可在Windows3.x、Windows95、Windows NT等环境下使用。它拥有一个可视化的集成开发环境(IDE),采用面向对象的编程语言Object Pascal和基于部件的开发结构框架。Delphi它提供了100多个可供使用的构件,利用这些部件,开发人员可以快速地构造出应用系统。开发人员也可以根据自己的需要修改部件或用Delphi本身编写自己的部件。主要特点如下: (1)直接编译生成可执行代码,编译速度快。(2)支持将存取规则分别交给客户机或服务器处理的两种方案,而且允许开发人员建立一个简单的部件或部件集合,封装起所有的规则,并独立于服务器和客户机,所有的数据转移通过这些部件来完成。 (3)提供了许多快速方便的开发方法,使开发人员能用尽可能少的重复性工作完成各种不同的应用。利用项目模板和专家生成器可以很快建立项目的构架,然后根据用户的实际需要逐步完善。 (4)具有可重用性和可扩展性。(5)具有强大的数据存取功能。它的数据处理工具BDE(Borland Database Engine)是一个标准的中介软件层,可以用来处理当前流行的数据格式,如x Base、Paradox等,也可以通过BDE的SQL Link直接与Sybase、SQL Server、Informix、Oracle等大型数据库连接。 Delphi既可用于开发系统软件,也适合于应用软件的开发。
从上可以看出Delphi在开发数据库性质的管理软件十分方便和快捷。
2.2.2数据库的选择
USB key文件加密管理系统的数据库选用的是Absolute Database。Absolute Database是 Borland数据库引擎(BDE)的替代品。具有高速,健壮,易用的特点。使用Absolute Database不需要特别的安装和配置。
该系统在连接数据库用到了以下几个数据库引擎组件,如表1所示:
表1组件表
组件 | 中文名 | 用途 |
TDataSource | 数据源组件 | 作为数据集组件(TTable,TQuery,TStoredProc)与数据控制组件(TDBGrid,TDBEdit)之间传送数据的通道。 |
TTable | 数据表组件 | 通过BDE存取磁盘上数据库表,再为TDataSource提供数据源,使得数据控制组件能够有效地从TTable中访问数据并能显示和编辑其中的数据。 |
TQuery | 数据查询组件 | 利用SQL语言访问数据库表中的数据,再为TDataSource提供数据源,实现数据控制组件对数据库的访问。 |
TDatabase | 数据库组件 | 当应用程序要登录到一个远程服务器上的数据库时,可以用该组件来建立应用程序与数据库永久性的连接。 |
2.2.3开发工具的选择
现在有许多的第三方控件支持Delphi, USB key文件加密管理系统使用了Dev Express DB Tress和Dev Express Quantum Grid这两个控件
1) Express DB Tress:强大的树型结构列表的控件。
Express DB Tress为VCL开发者们提供了一个最高级的树形列表技术。Express DB Tress 是一个功能强大,已打包的组件库,它可以帮助你创建杀手级软件,为你的最终用户提供难以置信的功能,只需要很少的代码就可以实现用户的需求。
2) Express Quantum Grid:表格控件。
它是树形列表控件和数据编辑控件的控件库,适合于Delphi和C++ Builder平台下的应用开发。该组件是基于底层开发出来的,而且是纯粹的本地化的可视控件库,特别设计用来开发引人注目的应用程序,将令人难以置信的特性传递给终端用户,从而使你的程序产品在激烈的竞争中取得优先地位,而实现这一切不需要编写简单的一行代码。
2.2.4开发硬件的选择
利用USB KEY对文件进行加密和解密时,都需要有一把USB KEY硬件锁作为支配。在众多的KEY中选用Rockey2加密锁作为这个USB KEY。因为Rockey2加密锁是安全性比较高的免驱动的USB 设备,同时售价低。采用的是传统 EPROM 结构。它制作容易,使用方便。而且它方便携带,记录的空间也比较大。适合各类人员对文件进行加密。利用Rockey2已经可以满足该设计的需求。
2.3 ROCKEY2加密锁
2.3.1 Rockey2加密锁简介
Rockey2加密锁是为软件开发商提供的一种智能型的软件加密工具,它包含一个安装在计算机并行口或 USB 口上的硬件,及一套适用于各种语言的接口软件和工具软件。加密狗基于硬件加密技术,其目的是通过对软件与数据的加密防止知识产权被非法使用。
Rockey2加密锁是一种比较简化型的加密锁。适合各类人员对信息进行加密。用户可以对自己电脑里面的私人信息进行加密,公司可以对内部机密信息进行加密等等。
Rockey2加密锁是一款可以支持软件保护应用和身份认证应用的多功能,免驱动的USB 设备。
2.3.2 Rockey2加密锁特点
其特点如下:
a) USB无驱设备
b) 全球唯一硬件ID
c) 提供外壳加密工具
d) 2.5K用户使用空间
e) 标准USB1.1设备,支持USB2.0接口
f) 提供多种软件接口:Delphi、Foxpro、Java、PB、VB、VC、VS.NET等
2.3.3 Rockey2加密锁优点
Rockey2具有以下一些优点:
(1)兼容性好
它具有高度的透明性,特别是对多个相同的Rockey2加密锁也可以使用USB HUB并联在一起使用,相互之间不会有干扰。
(2)速度快
对于使用Rockey2加密锁加密后的软件,其运行速度同加密前的区别并不大,它能够在很短的时间内处理完毕,保证用户程序的顺畅运行。
(3)使用简便
Rockey2加密锁最大限度的简化了接口。可以在很短的时间内掌握它的使用方法,从而大大的节约了时间。
2.3.4 Rockey2 加密锁要点说明
每一把 Rockey2 加密锁除了有 1 个独一无二的“硬件ID外”,还有 1 个用户可设定的“用户ID”,我们定义“硬件ID”为 HID,“用户ID”为 UID,这 2 个 ID 都是 32bit 位的 DWORD 数值。每把加密锁都是倚赖这 2 个 ID 作为独一无二的识别标志。 当对Rockey2 加密锁还没有进行初始化的时候,缺省的 UID 为 0,这时候虽然能够使用这个等于0 的 UID 来打开加密锁并进行读写操作,但无法获得正确的 HID,因为当 UID 等于 0 的时候,表示的是出厂状态,这时候 HID 也会返回 0。只有当用户设定了自己的 UID 以后,才能够获得正确的 HID。 在用户生成 UID 的时候需要给出1个长度不超过64个字节的字符串作为种子,加密锁会根据这个种子生成 UID,这个生成算法是在加密锁内部完成的,而且是不可逆的,也就是说,只有生成者才知道什么样的种子能生成什么样的 UID,别的人即使知道 UID,也能够调用这个计算过程,但因为不知道种子是什么,是无法生成你的 UID 的。 另外在生成 UID 的时候,能够指定加密锁的 EPROM 是否是可写的,如果设定为不可写,整个 EPROM 处于写保护状态。
3 USB KEY文件加密工具系统详细设计
3.1 系统功能模块分析
总体模块分为KEY的管理和客户端两部分。在KEY的管理方面我们需要把KEY里面记录的信息都保存到数据库里面,方便我们查询、修改、添加和删除KEY里面的信息。对每把锁都进行管理,防止有同号锁出现。如果加密锁因为某种情况损坏或者是丢失了,那么可以通过数据库里面记录的信息复制一把相同的锁,这样就不用担心由于找不到锁而不能对已加密的文件进行解密操作。对加密锁进行更加完善的管理,才能进一步保障被加密文件的安全,让用户才会更加放心的使用。客户端部分主要是完成操作方面的功能。客户端主要包括两方面---文件加密和文件解密。对文件进行加密时,要利用USB KEY中的密码对文件进行加密。这就需要从KEY里面读取出密码并利用该密码对文件进行加密。并且对该密码进行MD5换算。得到密码的MD5值,把这个值称为XID。对文件进行解密时,先从KEY里面读取出密码,然后对密码进行MD5换算,如果换算后的XID与被加密文件的XID一样就可以成功对文件进行解密,否则不能对文件解密。
该设计主要是管理员对用户以及拥有的USB Key信息进行操作管理,功能说明如下:
1)分类管理:设置创建新分类和子分类。通过按地区、时间等对用户进行分类,以方便进行管理。
2)客户信息管理:实现对客户信息的添加、删除和修改。也就是系统中的添加、编辑和查看客户模块。
3)Rockey2的初始化:实现对Rockey2的初始化,通过种子生成对文件加密的密钥,还有UID。初始化过后并把Rockey2的相关信息(包括密钥和硬件ID)记录到管理系统中。
系统功能图如下:
添加图片注释,不超过 140 字(可选)
3.2ROCKEY2加密锁内存分配
Rockey2加密锁总共有2560个字节,为了便于管理,把USB KEY的存储空间分配成5个段,每个段为512个字节。在把每个段划分成16个存储区,每个区32个字节。这样便于对KEY的存储空间进行统一的分配和管理。以后向KEY的存储区里面写入的信息时,信息都会自动保存到相关的位置。
添加图片注释,不超过 140 字(可选)
3.2数据库设计
3.2.1数据库需求分析
作为一个具有一定应用价值的管理系统,从本质上说其操作的对象为数据库中存储的具体记录。因此,不仅需要所使用的数据库系统具有比较高的稳定性、安全性下保持足够响应的能力,还要求设计者清楚需求,做出合理的数据库逻辑结构设计,以提高数据库的利用效率和减少数据冗余。
以这种思想作为设计策略,分析出系统的以下几项需求:
(1)管理员可以实现对用户的分类
(2)管理员可以实现对用户信息的添加,编辑和查看。
(3)管理员可以初始化用户拥有的Rockey2
3.2.2数据库实体关系设计
通过以上的需求分析,设计出数据库的逻辑结构——E-R图,从这种逻辑结构有可以建立数据库的物理结构即表结构。根据需求设计出三个数据表,分别是:客户信息表(clients),key表(keys),分类表(groups)其结构及关系如图1所示。
添加图片注释,不超过 140 字(可选)
3.2.3数据库逻辑设计
确定了数据库的逻辑关系和数据结构之后,进一步将以上所述的四个数据表由概念结构转化为数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。
表3所示为客户信息表(clients),记录了管理员所管理的客户的相关信息。
表3 clients
列名 | 数据类型 | 长度 |
CGID(PK) | INTEGER | 4 |
CName | STRING | 50 |
CAddress | STRING | 50 |
CContact | STRING | 20 |
CPhone | STRING | 100 |
CMobile | STRING | 40 |
CFax | STRING | 40 |
CWeb | STRING | 25 |
CEmail | STRING | 40 |
表4所示为分类表(groups),记录管理员按照什么方式进行分类。
表4 groups
列名 | 数据类型 | 长度 |
GID(PK) | AUTOINC | 4 |
GPID | STRING | 20 |
GName | STRING | 40 |
表5所示为keys表,记录了客户所拥有的所有Rockey2的信息,包括对文件加密解密的密码以及硬件ID号。
表5 keys
列名 | 数据类型 | 长度 |
KID(PK) | AUTOINC | 4 |
KCID | STRING | 20 |
KHID | STRING | 40 |
KPass | STRING | 32 |
KOther | STRING | 20 |