jeffreystoke
V2EX  ›  问与答

bitwarden 加密字段 hmac 校验问题

  •  
  •   jeffreystoke · Jun 2, 2021 via Android · 1386 views
    This topic created in 1822 days ago, the information mentioned may be changed or developed.
    这两天在探索 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
       Jun 3, 2021 via Android
    解决了,之前代码有些混乱,整理了一下就可以了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2704 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 15:09 · PVG 23:09 · LAX 08:09 · JFK 11:09
    ♥ Do have faith in what you're doing.