2

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

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

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

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

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

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

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

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

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

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

4

2 回答 2

1

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

于 2013-04-05T22:56:43.040 回答
0

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

于 2013-04-05T23:52:32.027 回答