一、开发目的
通过技术手段加强网络版系统的安全性。
二、用户
1、使用用户:用户(称为加密狗用户)
2、加密狗用户和非加密狗用户的区别
加密狗用户:加密狗用户必须使用加密狗才允许登陆V5系统,成功登陆系统后,可直接查看系统中的加密信息。
非加密狗用户:允许登陆,但不允许查看系统中的加密信息。
三、基本原理
通过读取加密狗上的数据确认用户是否合法。
四、具体实现
1、初始化
插入要初始化的加密狗,读取加密狗id,生成一条记录。
序号 | 列名 | 说明 |
1 | 编号 | 随机 |
2 | 系统编号 | |
3 | 系统名称 | |
4 | 单位编号 | |
5 | 客户端数量 | |
6 | 购买时间 | |
7 | 系统开始使用时间 | |
8 | 系统结束使用时间 | |
9 | 单位购买人 | |
10 | 联系电话 | |
11 | 加密狗型号 | YT699 |
12 | 加密狗编号 | 加密狗id |
13 | 加密狗其他信息 | |
14 | 加密狗读密钥 | 默认的FFFFFFFF, FFFFFFFF。并加密 |
15 | 加密狗写密钥 | 两个用逗号隔开的8位随机字符串,并加密 |
16 | 加密狗内置算法密钥 | 32位随机字符串并加密 |
17 | 备注 | |
18 | 作废 | 0 |
写入系统地址,用来插入加密狗后弹出系统地址的功能。
写入身份数据:
名称 | 备注 |
单位id | 13位,4501020010001 |
单位系统编号 | Sys_UnitSystem,36位,05E40513-FE5A-45CD-9BFE-3E514A9C2A3A |
制作时间 | 17位,2014/7/29 8:38:37 |
更新时间 | 17位,2014/7/29 8:38:37 |
更新次数 | 3位:001 |
{
"UnitId": 4501020010001,
"SystemId": "54704461-5360-4cb9-9019-2d7addc132
"CreateTime": "2014/7/29 8:38:37
"UpdateTime": "2014/7/30 8:38:37
"UpdateCount": "005"
}
经过加密后得到236个字节的字符串形如:
D3fDAq0t+ZUGuJ72a7pZTqnyDRtQ6lZthZecHdXLoVF/O4LBxAyzeQcYVcKvOjGlBIhF+lpHOe4mytOMtclVBzNOGVcF75f3rzGHbP7hX1oQmj+00RlYBLaySbzY37+QeSh/yW9c7kZdV6WvLAEdaIr4Zv3w4hsLu3h5/b4zXlfTdUPG9Qw5R6JQyxbfoVlUcXQBiGVIpDLboCOq8Nj6GgO2hStkg4pxN6tcqNHFRao=
2、加密狗的使用
1)Web端
采取6重验证
A、是否插入加密狗
B、服务器端和客户端加密同一段字符串是否结果一致
C、加密狗id是否在数据库中存在
D、加密狗存储的字符串是否能够解密
E、解密后的字符串是否能够正确的反序列化
F、反序列化的数据是否能和数据库比对上
综合性能和安全考虑,其中A每次加载新页面时都做验证,B、D、E、F在每次提交时做验证。C在登陆时验证
2)服务器端
与web端相同,但是只在系统第一次加载的时候验证,另加密狗的读密钥是随机的,而不是像web端那样的空白密钥。
3)单机版
与服务器端相同,但用来比对的验证数据存放在config中。
3、加密狗的升级
更新Sys_UnitSystem,重新生成并写入加密狗读密钥,写密钥和内置算法密钥,从新写入身份。加密狗升级后应使用新的密钥要加密上述数据。
4、加密狗的作废
将对应的Sys_UnitSystem的作废字段置为真。回收加密狗。
客户端身份验证:
1、每个用户指定不同的密钥
2、使用增强算法的方式,进行两端验证
3、密钥存放在数据库中,对该密钥进行二次加解密获取真实密钥。
服务器防盗版:
1、使用增强的TEA算法
2、生成随机数,让锁做加密运算,同时在程序中做同样的运算(指的是软件使用TEA算法),然后进行比较判断,注意,在软件中作加密或解密时一定要对密钥进行变换,而不要直接出现在程序中。
3、服务器端密钥存在web.config中,通过对该密钥进行二次加解密获取真实的密钥。