1.最近在做一个 python 的 web 开发,需求是使用加密狗登录进行验证,可是在网上找了很长时间都没有相关的资料,想问下各位,加密狗验证的话, 2. 问题是: 前端需要向后端发送的数据有哪些? 后端需要保存的数据和需要实现的功能是哪些?
因为是前后端分离,而前端也没做过这个,所以请各位做过的赐教,感激不尽!!!
1
ziding 2019-06-28 09:54:17 +08:00
首先你你需要前端要有加密狗的访问能力也就是本地操作能力。或者采用标准的 HTTPS 客户端证书认证。3.使用加密狗额原因是啥:
|
2
ziding 2019-06-28 09:55:36 +08:00
使用加密狗额原因是啥:
1.程序安全,防止非授权使用:首先你你需要前端要有加密狗的访问能力也就是本地操作能力,然后将验证过程封装在加密狗里面,你只是传递的数据的通道,具体的数据内容看加密狗厂商的 SDK 2.客户端认证:采用标准的 HTTPS 客户端证书认证 |
3
kayseen OP @ziding 使用加密狗进行用户登录,验证成功之后才有权限进行后面的操作。我理解的是,加密狗中存在公钥,后端保存的是私钥,但是它是怎么进行验证的我还没太搞懂...
|
4
acess 2019-06-28 10:08:38 +08:00
@kayseen 应该是服务器有服务器私钥,加密狗里也有另一个私钥,也就是客户端私钥吧,就像 SSH 用私钥登录一样。这个私钥应该是无法从加密狗中读取出来的。
|
5
kayseen OP @acess 这个原理不应该是 rsa 的公钥去后端匹配私钥吗 就是匹配成功的话就登录成功 如果这个思路是对的话,现在就是不知道前端应该传的除了公钥还有什么数据
|
7
shiji 2019-06-28 10:48:21 +08:00 via Android
ssl 你应该熟悉吧
然后就是双向 ssl (双公钥,双私钥) 然后基于双向 ssl,加密狗不让你读取里面存的你的私钥,运算通过加密狗硬件代为进行。 |
8
CallMeReznov 2019-06-28 10:51:53 +08:00
|
9
imnpc 2019-06-28 11:11:06 +08:00
请参考 WebAuthn 标准 目前主流浏览器均以支持
国内飞天诚信生产 FIDO 认证的设备即可 国外一般 YubiKey |
11
kimqcn 2019-06-28 11:29:23 +08:00
个人意见:双向 SSL 的方案安全性较高,但不友好。网上资料一搜一大把。
加密狗不熟悉,USBKey 还行。常规的 web 系统使用证书(保存在 USBKey 里)登陆流程一般是: 1.服务端产生一个随机数; 2.客户端调用 USBKey 里的证书最这个随机数做签名; 3.服务端验证签名,验证证书; 4.验证都通过了,就允许登陆。 一般在证书主题里存放登陆账号信息,如 CN=登陆账号。采用证书序列号与账号映射的方法也行,但麻烦一点。 |
12
liuzhiyong 2019-06-28 12:13:05 +08:00 via Android
“ web 登录使用加密狗”,这个不是纯粹前端可以搞定的,需要和加密狗硬件通信。
|