V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kayseen
V2EX  ›  问与答

web 登录使用加密狗的原理

  •  
  •   kayseen · 2019-06-28 09:43:10 +08:00 · 2727 次点击
    这是一个创建于 1971 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    一般在证书主题里存放登陆账号信息,如 CN=登陆账号。采用证书序列号与账号映射的方法也行,但麻烦一点。
    liuzhiyong
        12
    liuzhiyong  
       2019-06-28 12:13:05 +08:00 via Android
    “ web 登录使用加密狗”,这个不是纯粹前端可以搞定的,需要和加密狗硬件通信。
    kayseen
        13
    kayseen  
    OP
       2019-06-28 17:34:35 +08:00
    @aboveall 多谢大家的帮助~~~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1119 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:08 · PVG 03:08 · LAX 11:08 · JFK 14:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.