密码管理器-1

  • 说明

  今天首先考虑安全角度下个人以及团队密码的存储方案,以及两种情况下的加密解密方式。

  • 个人密码加密

  了解了1password等软件的个人加密方式应该是采用2SKD(two-secret key derivation)方式,two-secret key指的是master password(用户主密码)和secret key 详情见链接1Password安全工作原理,同类型软件也是采用类似的原理存储,由于此密码管理器初衷是为了个人或者团队内部使用部署,所以暂时采用第二代密码管理器的通用加密方式,master password +salt(盐)并且使用 PBKDF2 生成加密密钥 key,其中salt和迭代次数count 随机生成并且保存在用户数据表(每个用户不同)。通过key对要存储的密码字段进行加密,然后存储加密后的密码到数据库。

  

  解密流程是拿到加密密码和salt和count ,在客户端对master password使用 PBKDF2 拿到 key,并对密码进行解密以取到明文密码。

  • 团队密码加密

  团队密码因为分享密码的时候key或者密码明文都是不能存储或者通信的,不然会有安全隐患,密码也就跟明文存储在数据库差不多,所以暂时考虑使用非对称加密+对称加密的方案。

  1. 所有用户创建时生成非对称加密密钥对,公钥统一存储在数据库。
  2. 用户在团队内新建密码数据时取到团队内所有公钥到本地并对密码数据进行统一加密,保存数据时创建N基于团队用户数量条密码数据存储
  3. 团队其他用户查看密码时只需要取得属于自己的公钥加密的数据并用自己的私钥解密查看密码。
  4. 在生成密钥对后,可以基于 个人密码 加密中的key和私钥进行异或运算加密得到key2 存储在用户表中
  5. 解密时拿到key2 和master password生成的key 进行异或运算后得到私钥 并对密码数据进行解密然后获取到密码数据明文
  6. 基于以上考虑 个人密码加密 方案完全也可以基于公钥加密所以 个人密码加密 方案也采用公钥加密。

 

posted @ 2023-03-14 21:14  萧乐乐  阅读(85)  评论(0编辑  收藏  举报