是否曾建议将非对称加密用于数据的长期存储,例如是否建议将数据存储在数据库中,以便:
1)用户在网站上输入数据,使用公钥加密并存储。网络服务器和数据库服务器都不存储私钥。
2) 数据由有权访问它的工作人员下载。
3) 工人使用存储在他/她本地计算机上的私钥来解密数据。
假设工作人员的计算机没有恶意软件,表面上的优势将是,如果数据库服务器受到威胁,则数据将无法访问。
这样做会有什么问题?
是否曾建议将非对称加密用于数据的长期存储,例如是否建议将数据存储在数据库中,以便:
1)用户在网站上输入数据,使用公钥加密并存储。网络服务器和数据库服务器都不存储私钥。
2) 数据由有权访问它的工作人员下载。
3) 工人使用存储在他/她本地计算机上的私钥来解密数据。
假设工作人员的计算机没有恶意软件,表面上的优势将是,如果数据库服务器受到威胁,则数据将无法访问。
这样做会有什么问题?
是的,只要实施得当,这是一个很好的中期存储方案。
要记住几件事:
另一种方法是让客户端使用 AES-256 加密数据,然后上传。他们可以将他们的对称密钥保存在他们的机器上,或者使用 PBKDF2 或 bcrypt 从密码中获取它。
您基本上已经描述了使用S/MIME或OpenPGP加密电子邮件的工作原理。对于电子邮件,数据传输和存储服务器无法访问电子邮件内容;在您的描述中,您只是使用基于 Web 的协议(即 HTTP)来处理细节,而不是电子邮件传输协议(SMTP、IMAP ...)。
众所周知,加密的细节(使用哪些算法,如何将它们粘合在一起......)很难正确,因此您应该坚持研究标准(即 OpenPGP 或CMS - CMS 是S/MIME 的核心)。
请注意,这被称为“非对称”是有原因的:非对称加密只有在加密的人和解密数据的人不同时才有意义。如果同一个用户推送数据进行存储,然后再检索和解密它,那么对称加密就足够了,并且更易于管理。
在许多方面,这是一个非常好的方案,最重要的是服务器妥协不能暴露数据。它有一个不可避免的大问题,那就是可用性。你没有考虑人为因素。您期待多年,甚至几十年,人们将能够保持他们的私钥安全且可用,而这根本不会发生!
场景是这样的:Bob 创建了一个公钥/私钥对,他用它来加密服务器上的数据。5 年后,Bob 喝得酩酊大醉,把他的笔记本电脑留在了他昏倒的阴沟里。Bob 后来意识到他没有在他的自动备份实用程序中包含存储他的密钥对的目录。数据永远丢失,没有恢复的希望。
我会改用客户端对称加密,这样服务器妥协就不能暴露数据,并且由客户来安全地存储他们的密码。当然,他们仍然可能会丢失密码,但长期保存密码比保存私钥更容易。更好的是,您可以提供一项额外的服务,为他们长期存储他们的密码,赚取一些额外的现金。
Tom、Greg 和 Polynomial 已经涵盖了这个问题的大部分答案——但是没有人提到前向安全性(通常被乐观地称为“完美”前向安全性),即使密钥被泄露,它也旨在保护数据。
需要注意的是,即使是标准的非对称算法在处理和存储方面也相对昂贵——前向安全算法的可用范围更是如此。