生成密码短语进行加密

时间:2019-03-20 08:10:28

标签: encryption aes

我正在使用AES 128位加密算法(对称加密算法)对某些数据进行加密。

我面临的问题是生成密钥?因为我有多个用户,所以我不想在用户之间共享公用密钥。

是否有可能以一种并非所有人都通用的方式生成密码短语,并且可以将其传递给AES来解密/加密相同的数据?

示例:  假设我有一张员工和他们的薪水表。我想用AES加密来加密Employee的Salary栏。

现在,如果获得HR授权的人员想要查看他们可以核对的员工薪水,但他们应该拥有自己的钥匙(不是通用钥匙)。

2 个答案:

答案 0 :(得分:1)

一种可能的解决方案是为每个用户创建主密钥的加密版本。

所以您将:

  1. 使用“主密钥”加密数据
  2. 用“个人密钥”(每个用户一个)加密“主密钥”

然后,当用户提供其个人密钥时,可以使用它来解密存储和加密的主密钥,然后使用它来解密数据。这样,可以始终使用相同的密钥对数据进行加密,并且可以使用个人密钥来控制访问。

这假设尽管主密钥和加密的数据永远不会离开服务器,但是您将不得不在服务器上解密并以未加密的形式发送给用户(但是,当然要使用安全线路,以防窃听)。

如果要将数据发送给加密的用户,则无法执行此操作。

答案 1 :(得分:0)

  

现在,如果获得HR授权的人员想要查看他们可以核对的员工薪水,但他们应该拥有自己的钥匙(不是通用钥匙)。

使用对称加密-实际上只有一个数据加密密钥(DEK)。 DEK可以是随机的,也可以是内容特定的。您不能有多个密钥来解密相同的加密内容。

通常使用非对称加密完成操作,当有人向用户授权(共享/分配)加密内容时,DEK将通过用户的公钥重新加密,因此只有授权用户才能解密DEK,然后进行内容加密(尽管-所有用户的DEK都相同)。

  

用户登录时,我会要求他们输入密钥

无论如何要登录用户,都需要提供一个秘密(其用户密码或其他凭据),所以-您真的需要经历所有麻烦吗?仅使用某些系统特定的主密钥在REST上加密数据并仅将加密内容提供给经过身份验证和授权的用户还不够吗?