logo头像

知其然更要知其所以然

OnePassword密码加密方法

本文于 1718 天之前发表,文中内容可能已经过时。

简介

  • OnePassword是目前比较流行的密码保管软件,能够保存密码、自动同步、自动填充。作为一个密码保管软件,如果没有比较好的加密方法,那么很容易造成密码的泄露,给用户带来巨大的损害。OnePassword之所以能这么流行,也跟它的安全性有很大的关系。
  • 下面,是我对OnePassword的加密方法的理解,仅代表个人观点。并且以下的加密方法适用于onepassword4.

加密方法

  • OnePassword加密流程大致如下:
    • 获取所有数据
    • 把数据分片
    • 对分片的数据进行加密
    • 对分片里的不同数据,采用不同的秘钥加密
  • OnePassword主要采用AES-256做数据加密,使用HMAC算法做数据签名验证。而不同的数据,采用不同的秘钥,同样的算法进行加密。
  • OnePassword加密和签名使用的秘钥,是有软件在第一次使用时,随机生成的,而这个这些key,使用的是用户设置的主密码生成的秘钥进行加密存储和同步传输。这样做的好处是,加密秘钥很难被破解,并且用户更换主密码,不会影响已经加密的数据。

密钥分类

  • Master Password
    • 用户设置的主密码
  • Derived encryption key.
    • 加密数据使用的key,需要同步到其他设备,同步过程用,这些key需要加密,而加密使用的key,就是这个Derived encryption key
  • Derived MAC key.
    • 校验Derived encryption key加密数据
  • Master encryption key.
    • 加密主要数据的key,如密码等
  • Master MAC key.
    • 校验Master encryption key加密的数据
  • Overview encryption key.
    • 加密次要的数据,如url,名称等
  • Overview MAC key.
    • 校验Overview encryption key加密的数据
  • Item encryption key (item specific).
    • 加密备注类的信息
  • Item MAC key (item specific).
    • 校验Item encryption key加密的数据

所有数据的加密方法是AES-256,校验的方法是HMAC算法,并且Item encryption key和Item MAC key是指定的,不是生成的。

秘钥生成

  • 如图
    密钥生成流程图