【问题标题】:Encryption between web service usersWeb 服务用户之间的加密
【发布时间】:2013-03-28 12:25:36
【问题描述】:

我有一个网络服务(类似于在线商店),用户可以在其中保存他们的数据。我需要加密该数据,以便只有管理员和用户自己才能读取该数据。

每个经理和用户都有自己的密码存储在数据库中。

首先我考虑过使用 RSA(公钥/私钥),但我不知道如何使用管理员和用户的不同密码访问加密数据。

顺便说一句:我可以提示用户和管理员每次尝试访问加密数据时输入他的密码(与数据库中的哈希密码比较并解密安全数据)。

请帮助并原谅我的英语不好。 提前致谢!

编辑:最简单的方法是使用硬编码的主密码进行加密/解密,但我认为这是非常不安全的。

EDIT2:好的,我想我知道了: 1.生成唯一密钥 2. 使用对称加密使用(1)中的唯一密钥加密数据 3. 使用用户密码加密来自 (1) 的唯一密钥,并将其与用户凭据一起存储 4. 使用管理员密码加密来自 (1) 的唯一密钥,并将其与管理员凭据一起存储

现在当经理想要访问数据时,我提示他输入密码,然后从 (4) 解密哈希,从 (1) 获取唯一密钥并解密安全数据。来自用户的解密是一样的:(3)->(1)->data

所以现在的问题是让多个用户都可以使用它->user_data/managers,哈哈

EDIT3:忘了说:用户创建一次数据,然后经理将其用于内部使用。

【问题讨论】:

  • 您在 EDIT2 中概述的方法的问题是创建数据时,每个相关用户都必须输入他们的密码。
  • @sidoh 是的,没错。从用户的角度来看,他似乎在创建数据并通过密码保护数据。而且即使黑客窃取了数据库,他也无法解密用户数据,因为用户的密码也被散列了。
  • 对。不过,我的观点是,如果您需要允许使用多个密码访问数据,您将始终需要同时拥有至少两个密码。这对用户来说听起来很烦人,对吧?每次用户创建管理员应该能够访问的数据时,用户和管理员都必须输入密码。
  • 另外,您必须保留 N 个数据副本,其中 N 是您希望允许访问的用户数。
  • 哦,对不起,我没有提到:用户创建一次数据,然后经理使用该数据创建内部使用文档。

标签: php passwords rsa encryption


【解决方案1】:

我认为您应该使用经过标准验证的技术。听起来我的方式应该是 SSL 连接和安全的服务器。我相信您绝对不需要加密数据,而只需为其所有者或通过某些权限层次结构(通过 Web 服务安全逻辑)提供访问权限。如果您需要保护数据不被磁盘窃取,请使用操作系统的加密分区。

【讨论】:

  • 是的,AES 或 DES 将是最佳选择
【解决方案2】:

如果您不介意每次用户需要访问数据时都提示输入密码,您可以考虑使用mcrypt php 模块。不过,请务必在实施任何事情之前进行研究。一不小心就很容易使用不安全。

【讨论】:

  • 问题是有很多管理员可以访问安全数据,但加密数据的用户也应该有访问权限。最好的解决方案可能是用户用他的密码加密数据,管理员可以用他们自己的密码解密消息。但我就是想不通算法。
  • 这很复杂,而且看起来很容易实现,要么不安全,要么难以使用。您是否考虑过使用一个随机生成的单一密码,所有相关用户都可以通过类似 lastpass 的方式共享该密码?
  • 不,用户/管理员互不认识,每个人都可以注册服务,所以共享密码就像与黑客共享密码一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-05
  • 2010-09-06
  • 1970-01-01
  • 2020-09-02
  • 1970-01-01
  • 2020-05-18
相关资源
最近更新 更多