这是我正在考虑的一个计划。我还没见过这个求婚,所以我想问一下。
我们正在防范以下威胁:
一种丢失或被盗的笔记本电脑,导致敏感信息的泄露。
开发一个桌面客户端应用程序,让旅游用户收集数据时,没有连接到网络。它是敏感数据,需要在休息时加密。显然,加密密钥不能存储在任何地方的客户端中,所以我将使用基于密码的密钥生成来加密数据。存储在客户端中的密码散列。这是在笔记本电脑上,我们无法控制,所以我们不能强制全磁盘加密。
这很好,直到用户忘记了他们的密码,或者其他用户接管了作业,或者用户更改了他们的密码。管理员需要一种拯救加密数据的方法。因此,建议保存使用管理员生成的公钥加密的数据副本,管理员持有关联的私钥。此副本将在每个事务或用户结束会话时保存。
类似于:使用密码加密用户数据并忘记密码
不过,这是关于web应用程序和公钥-私钥对的建议。
Update:这是Windows上的Java客户机(使用)。
发布于 2015-06-12 17:25:22
我想你不需要保留整个第二份数据。这似乎很难。此外,您还希望尽量避免批量公钥加密。太慢了。您可以保留密钥的第二份副本,而不是保留第二份数据副本。
创建用于加密文件的随机对称密钥F。使用从用户密码派生的密钥加密此密钥,并将加密的F存储在磁盘上。将F副本存储在管理员可以访问的安全存储区中。您应该使用一些特定于管理的密钥加密F,以确保F在传输和休息时的安全。
发布于 2015-06-11 18:47:19
你说“这是在我们无法控制的笔记本电脑上,所以我们不能执行全磁盘加密。”那么,保存您想要加密的数据的问题就会更加困难。实际上,您必须创建一个加密的容器,并规范对它的访问,而不是只加密存储在磁盘上的所有内容。
是否可以阻止用户将文件从容器移动到正常的未加密驱动器或可移动存储?用户可以从加密的容器中打开文件并将其保存到其他地方吗?用户可以从加密容器上的文件复制文本或保存屏幕快照到未加密分区上的新文件吗?
如果用户决定不愿处理加密的麻烦,那么您将有所有这些机会来保护您想要泄漏的数据。根据您想要保护的数据类型,这可能不是正确的方法。如果您可以减少这些数据泄漏的机会,那么这可能是可以接受的。
您还提到使用密码作为加密密钥。您应该使用密码(或密码派生密钥)来解锁实际的容器加密密钥。这样,密码更改只需要旧密码和新密码才能重新加密密钥,而不是所有加密的数据。
这也使您能够更容易地支持密钥托管,在这里,这个容器加密密钥的副本可以用管理员的私钥或密码解密。尽量避免创建加密数据的多个副本,这些副本可能比较慢,占用更多的空间,并将密钥的多个副本保存起来。
最后,我希望这是一次学术讨论,而不是你计划从零开始发展的东西。作为初学者,实现有效的加密通常是不可能成功的。
https://security.stackexchange.com/questions/91433
复制相似问题