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

bitwarden 加密字段 hmac 校验问题

  •  
  •   jeffreystoke · 2021-06-02 22:40:16 +08:00 via Android · 885 次点击
    这是一个创建于 1304 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这两天在探索 bitwarden api,自己实现客户端的时候遇到了一个奇怪的问题

    服务端用的是 vaultwarden (也就是以前的 bitwarden_rs ),用了 aes-256-cbc-hmac-sha-256 做字段加密,登录的时候要在本地根据用户名和密码以及服务器给的参数生成 prelogin key ( aes ),用这个 prelogin key 登录之后会给到一个 encryption key ( aes ) 用于字段解密,这个 encryption key 可以通过 hkdf 衍生出对加密字段签名时候用的 hmac key 。

    用衍生出来的 hmac key 对原来包含 encryption key 的消息进行验证是可以通过的,用 encryption key 解出来的数据也是对的,但是用这个衍生出来的 hmac key 怎么都没办法验证通过消息的 mac:

    https://github.com/arhat-dev/credentialfs/blob/97e36b446340e4907d2750361272a63c7b44ed81/pkg/pm/bitwarden/crypto.go#L56

    有没有了解 bitwarden 数据解密过程的帮忙指点一下我哪里出问题了,一直找不到什么头绪(甚至已经开始怀疑在 node/rust 中 hmac 对 cbc padding 部分签名的处理和 golang 不对应了)
    jeffreystoke
        1
    jeffreystoke  
    OP
       2021-06-03 22:26:50 +08:00 via Android
    解决了,之前代码有些混乱,整理了一下就可以了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   918 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:49 · PVG 05:49 · LAX 13:49 · JFK 16:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.