免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 软件破解 > 详解USBKey加密解密技术的软件保护(6)

详解USBKey加密解密技术的软件保护(6)

时间:2012-07-29 14:25来源:未知 整理:寂涯网络 点击:


找到代码段的RVA值和内存大小,读取数据进行校验,校验值
存储在USB Key文件名为2004的文件中, 校验过程如图5所示。
图5  代码段的校验
3.2 授权模块的实现
用户的授权标示着用户被软件拥有者合法授权,用户根
据授权合法使用软件功能。非法用户将不能使用软件,而且针
对软件的恶意攻击,软件应具备一定保密性,使得软件不被破
解并非法使用。
USB Key存储了加密密钥及用户信息。用户的密钥是数据
加密算法使用的密钥,也是用户身份的可靠识别。另外,用户
的信息如用户名、公司名称也可作为辅助信息存储到USB Key。
这些信息的存储安全性一方面由简单算法来保证,另外USB
Key也提供了可靠的数据安全性保证 [2]

加密模块作为一个全局模块,在需要加密数据的时候别
调用。该软件使用了三种加密算法,DES、3DES和AES[5]

加密密钥存储在USB Key中,根据用户的选择使用不同的加
密算法来加密数据。解密则是加密的逆过程。
3.2.1 USB Key存储文件
USB Key是一种无驱动、低成本的计算机硬件设备。可
以存取数据,提供32K的存储空间,具有文件目录结构。支
持访问控制策略,用户分为三种,管理员、普通用户和全部用
户,可以为不同的用户指定不同的存储和读取的权限。
本文采用的策略是在普通用户权限下,创建一个新的文
件,用来存储DES的密钥。普通用户的权限依赖于普通用户
密码。读取该DES密钥的时候,只有拥有普通用户密码的才
能登陆,访问之前创建的文件,将DES密钥取出来用于解密。
USB Key提供了打开设备、存取文件、访问控制的一系列API
调用,帮助开发者更好地完成安全系统的设计。
由于访问USB Key的操作并不支持并发的访问,因此要
建立互斥的机制,确定对USB Key的访问是唯一的。本文采
用的是CreateMutex的方式,访问之前查询是否已有相同的
mutex对象,访问之后关闭句柄。
首先是调用epas_CreateContext和epas_OpenDevice得到
一个操作USB Key的句柄,然后使用epas_CreateFile创建一个
文件,使用一个0-65535的ID来标示文件,同时设定文件的
存储、读取、删除的权限,指定文件的大小。然后使用函数
epas_OpenFile打开文件,使用函数epas_Write将文件所用的数
据用0填写,然后将需要存储的数据(DES的密钥)写进去。
最后使用epas_CloseDevice和epas_DeleteContext来关闭打
开的USB Key设备。同时使用CloseHandle来关闭一开始创建
的互斥对象。读取密钥是一个相反的过程。读取不需要创建文
件,只需要按照约定打开指定的文件,将文件的信息读取出来
即可。注意读取的操作要用普通用户的权限来操作,使用函数
epas_Verify,把EPAS_VERIFY_USER_PIN和普通用户的密码作
为函数参数,可将当前的操作提升到普通用户的权限。
3.2.2 加密接口和解密接口
判断Key是否存在的接口定义:
bool Is_Key_Exist()
初始化Key的接口:
bool ResetKey(LPCTSTR AdmminPIN)
加密数据的接口:
bool Encrypt_f(char *Out,char *In,UINT len,int algorithm_type)
解密数据的接口:
bool Decrypt_f(char *Out,char *In,UINT len,int algorithm_type)
数据在加解密的过程中,会按块进行操作。每块的大小
是128byte,由于对称加密的特性,加解密前后的数据大小不
变。因此可按顺序对文件进行加解密,最后的数据对于不满
128byte的尾部数据,则采取简单的异或方式。
3.2.3 授权和验证
USB Key的授权过程如图6所示。
读取用户信息的接口:
bool ReadUserInfo(LPCTSTR &userPIN,LPCTSTR &userInfo)
用户密码是用户的唯一身份标识,用户信息是辅助性的
信息,是可选的。
写入用户标识的接口:
bool WriteUserInfo(LPCTSTR &userPIN,LPCTSTR &userInfo)
设置用户密码的接口:
bool WriteKey(LPCTSTR user_key,LPCTSTR userPIN)
User_key是用户进行身份验证的密码,userPIN是USB
Key自访问控制的验证密码。授权信息是一个32位的二进制
数字,由系统随机生成。然后系统调用USB Key的授权接口:
bool WriteUserInfo(LPCTSTR &userPIN,LPCTSTR &userInfo)
将授权信息存入USB Key中的2001文件。然后将
此授权信息进行CRC32的校验,将校验信息写入被保

本页地址 http://www.jybase.net/ruanjianpojie/20120729971.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com