[论文] USB KEY的编程与验证(项目进度说明)
界面基本元素如我的界面所示,其中,必要的输入条件是用户名和硬件PID(相对应密码)。
控件的类别:
用户名控件:应该是服务器端控件,这样服务器一端可以快速的获取用户输入的用户名。
硬件PID:可以是客户端控件,因为服务器的处理不需要这个数据。但如果是服务器端控件应该也可以的。
按下了“登入”按钮以后,程序的工作是:
1. 首先,程序验证用户端有没有接入硬件USB KEY,然后需要使得USB硬件进入普通用
户USERS权限。
(验证用户的PID和USER PIN是否正确。其中,用户的USER PIN是根据硬件PID经过
一定的换算而来的,是硬件PID的函数。)
2. 如果上一步验证成功,接下来,向服务器发送其输入的用户名。
3. 接下来,接收服务器发送过来的随即数组。
4. 然后,根据接收的随即数组,利用硬件提供商的DLL库函数(必须是ActiveX控件,
需要访问USB硬件),进行输出散列数组的运算。
5. 接下来,向服务器发送这个计算而来的散列数组。
相对应的,服务器的工作可以归纳如下:
1.接收用户名(在数据库中搜索相应的密钥)
2.发送随即数组
3.接收散列数组
4.验证这些数据的组合,看是否合法用户。
===========================================================
服务器根据用户名、随即数组和散列数组,进行运算的过程可以如下分解: 1、根据用户名,在数据库中搜索其对应的密钥(任意的,一般是选用的可显示字符串), 2、利用软件MAC函数(是ActiveX控件),从密钥和随即数组来计算(软件运算)相应的散列数组,并与从用户浏览器返回(硬件运算)的散列数组比照。
如果完全符合,就是合法的用户;否则,应对该用户予以拒绝。
------------------------------------------------------------------------------------------------------
附带的一个工作,如何管理用户的密钥库(用户名与密钥的对应关系),
可以利用单独的exe程序,也可以用网页的形式进行管理。但是,利用网页更方便一些,因为这样可以统一界面。
用网页管理密钥库:
?加入新的密钥,用户执行顺序:打开网页,插入USB KEY,初始化(同时USB硬件
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
上传和入库)。
?删除一个硬件记录的先后顺序如下:
打开网页,输入用户名,同时程序从库中删除他的所有USB硬件记录。
在浏览器上实现,要访问客户端的硬件,使用的是客户端脚本,还需要利用数据库。
使用的ActiveX控件来自两个DLL文件,必须事先注册。
用户进行密钥生成和写入硬件的过程,即是初始化USB硬件的过程,必须同时写入硬件PID、User PIN、SO PIN以及初始化配置(重试次数、读写权限等)、密钥。 ?管理员或者普通用户身份登入,进行USB硬件初始化的条件:
如果硬件配置Config时,禁止普通用户写入,那么,普通用户将会不允许进行“设置密钥”的操作。此时,必须使用超级用户“设置密钥”。
写入密钥时,需要记录的是软件Soft_MD5HMAC函数的第二个参数,设置为str2,与第一个参数无关,已经试验过。这个参数需要用来进行密钥写入和服务器端的软件验证(生成散列数组)。
USB密钥的管理:这个密钥与什么人对应呢,
可以与用户名对应,也可以与部门相对应。
密钥
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
的结构:
密钥,用户名,部门名,当前登陆状态(在线、不在线)。
?当用户退出系统时,同时其对应的密钥也处于不在线状态了。如果已经在线,那么他不能再次登陆验证。
************************************************************************
相关数据用客户端用户的可见性设计:
硬件PID必须对客户端用户可见,以便用户能够在浏览器上登入USB硬件的普通用户权限。
但是,登入USB的User权限还必须有相应的UserPIN数据,但是又不希望让这个数据轻易被用户获取。因此,在USB的PID和UserPIN之间建立一定的映射关系。
客户端硬件验证的用户无需获取其超级用户PIN码。
避免任何用户根据硬件PID猜测普通用户的PIN码以及超级用户的PIN码,因此配置硬件时设置User和SO重试次数的限制。
2009-1-2 需要继续的编程事项:
1、改造硬件的PID与UserPIN之间对应关系的算法,在ASP页码的客户端脚本中编写。是函数GetPIN1函数,声明为: Function GetPIN1(s),输入参数PID,输出UserPIN.
2、改造数据库。因为:密钥库管理工具使用的数据库是SQL Server,而实际服务器端验证使用的是Access数据库,所以需要把现有的SQL Server数据库中的相应数据按照规则迁移到新的Access数据库中去。
编写一个独立的桌面程序,来完成数据的迁移。
Access数据库中只包含两个字段的内容:用户名User和密钥Key.