UKEY开发 用户登录流程

UKEY版本:UKEY2000D

最近公司接了一个开发项目,需要开发一个使用UKEY进行用户身份认证的功能,看了一些开发文档和资料后自己整理了一下用户登录的流程。

下面先介绍一下UKEY的内部结构,也就是那个像U盘一样的东西,通常叫他加密锁、加密狗。下面就是加密锁的内部结构:

如图所示,在加密锁内部有各种算法,这些算法都是开发商设置在加密锁内部的固话算法,不同的开发商应该会设置不同的算法。所以这里我就不会具体的将算法函数列出来了。

虽然算法不同,但是对于身份认证的原理都应该是相同的,我就主要讲一下用户登录时认证身份的流程吧。

  1. 用户插入加密狗
  2. 打开指定的登录网站(需要安装一个浏览器的插件才能够使用加密狗)
  3. 网站将会识别加密狗是否已经插入,没有插入的话提示无法登录。
  4. 网站成功识别并检测到对应的加密狗已经插入
  5. 用户输入用户名密码,点击登录
  6. 服务器返回一个随机数
  7. 提示用户需要输入pin码(pin码为加密狗的密码,相当于用户身份的密码,只有加密狗和Pin嘛同时在手里才能确定身份,大大提高了安全性,即使Pin码泄露,没有拿到加密狗也无法登录,或者即使丢了加密狗不知道Pin码同样不能登录)
  8. 客户端使用Pin码对服务器返回的随机数进行签名,签名过程会验证Pin码的正确性,Pin码错误将无法进行签名,也就无法登录,Pin码正确后将会使用加密锁内部的私钥对随机数进行签名。这一步骤的所有过程都是在加密锁内部执行的。
  9. Pin码验证正确并成功签名后,将用户信息和签名后的数据传到服务器。
  10. 服务器收到用户数据后使用公钥对签名数据进行验证。
  11. 验证通过即为合法用户,允许用户登录,验证失败为不合法用户,可能是用户使用了其他用户的加密狗。

当然,既然是开发,那么加密狗内部是密钥、用户身份、Pin码都是需要进行设置的,一个用户对应一份密钥对应一个Pin码才是对的。同样我将会说一下我理解的设置流程:

  1. 在新建用户的时候,插入一个新的加密狗。
  2. 将用户对应的Pin码和密钥存入数据库。
  3. 数据保存成功后再设置加密狗的Pin码,设置加密狗密钥。
  4. 有的加密狗还可以添加插入后自动打开指定网址和下载指定控件并运行的功能,具体操作请查阅开发商提供的开发文档。

当然,用户既然有忘记密码的情况,也会有忘记Pin码的情况,这时可以联系管理员进行查看或者修改Pin码,因为修改新Pin码必须要使用到原来的Pin码(防止了黑客拿到用户的加密狗修改Pin码的情况),所以服务器数据库保存的Pin码就很有用了。

我理解的UKEY身份认证流程和设置流程就是这样的了。

以上如果有不对的地方,请大神指出,感激不尽!!!

发布了77 篇原创文章 · 获赞 16 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/qq_41756580/article/details/105428000