web 登录使用加密狗的原理

2019-06-28 09:43:10 +08:00
 kayseen

1.最近在做一个 python 的 web 开发,需求是使用加密狗登录进行验证,可是在网上找了很长时间都没有相关的资料,想问下各位,加密狗验证的话, 2. 问题是: 前端需要向后端发送的数据有哪些? 后端需要保存的数据和需要实现的功能是哪些?

因为是前后端分离,而前端也没做过这个,所以请各位做过的赐教,感激不尽!!!

2728 次点击
所在节点    问与答
13 条回复
ziding
2019-06-28 09:54:17 +08:00
首先你你需要前端要有加密狗的访问能力也就是本地操作能力。或者采用标准的 HTTPS 客户端证书认证。3.使用加密狗额原因是啥:
ziding
2019-06-28 09:55:36 +08:00
使用加密狗额原因是啥:
1.程序安全,防止非授权使用:首先你你需要前端要有加密狗的访问能力也就是本地操作能力,然后将验证过程封装在加密狗里面,你只是传递的数据的通道,具体的数据内容看加密狗厂商的 SDK
2.客户端认证:采用标准的 HTTPS 客户端证书认证
kayseen
2019-06-28 10:05:01 +08:00
@ziding 使用加密狗进行用户登录,验证成功之后才有权限进行后面的操作。我理解的是,加密狗中存在公钥,后端保存的是私钥,但是它是怎么进行验证的我还没太搞懂...
acess
2019-06-28 10:08:38 +08:00
@kayseen 应该是服务器有服务器私钥,加密狗里也有另一个私钥,也就是客户端私钥吧,就像 SSH 用私钥登录一样。这个私钥应该是无法从加密狗中读取出来的。
kayseen
2019-06-28 10:14:21 +08:00
@acess 这个原理不应该是 rsa 的公钥去后端匹配私钥吗 就是匹配成功的话就登录成功 如果这个思路是对的话,现在就是不知道前端应该传的除了公钥还有什么数据
acess
2019-06-28 10:34:04 +08:00
@kayseen 你想想 SSH 是怎么认证的……
shiji
2019-06-28 10:48:21 +08:00
ssl 你应该熟悉吧
然后就是双向 ssl (双公钥,双私钥)
然后基于双向 ssl,加密狗不让你读取里面存的你的私钥,运算通过加密狗硬件代为进行。
CallMeReznov
2019-06-28 10:51:53 +08:00
imnpc
2019-06-28 11:11:06 +08:00
请参考 WebAuthn 标准 目前主流浏览器均以支持
国内飞天诚信生产 FIDO 认证的设备即可
国外一般 YubiKey
ziding
2019-06-28 11:23:01 +08:00
@kayseen imnpc 正解
kimqcn
2019-06-28 11:29:23 +08:00
个人意见:双向 SSL 的方案安全性较高,但不友好。网上资料一搜一大把。
加密狗不熟悉,USBKey 还行。常规的 web 系统使用证书(保存在 USBKey 里)登陆流程一般是:
1.服务端产生一个随机数;
2.客户端调用 USBKey 里的证书最这个随机数做签名;
3.服务端验证签名,验证证书;
4.验证都通过了,就允许登陆。

一般在证书主题里存放登陆账号信息,如 CN=登陆账号。采用证书序列号与账号映射的方法也行,但麻烦一点。
liuzhiyong
2019-06-28 12:13:05 +08:00
“ web 登录使用加密狗”,这个不是纯粹前端可以搞定的,需要和加密狗硬件通信。
kayseen
2019-06-28 17:34:35 +08:00
@aboveall 多谢大家的帮助~~~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/578191

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX