是否曾推荐非对称加密用于长期存储?

信息安全 密码学 不对称
2021-08-19 03:15:32

是否曾建议将非对称加密用于数据的长期存储,例如是否建议将数据存储在数据库中,以便:

1)用户在网站上输入数据,使用公钥加密并存储。网络服务器和数据库服务器都不存储私钥。

2) 数据由有权访问它的工作人员下载。

3) 工人使用存储在他/她本地计算机上的私钥来解密数据。

假设工作人员的计算机没有恶意软件,表面上的优势将是,如果数据库服务器受到威胁,则数据将无法访问。

这样做会有什么问题?

4个回答

是的,只要实施得当,这是一个很好的中期存储方案。

要记住几件事:

  • 常见的非对称算法使用半素数分解作为其基础。因此,您只能加密与密钥一样长的数据,例如 4096 位。这不是很实用,因此通常您会使用您的私钥(或在本例中为公钥)加密对称密钥并使用对称算法加密数据。因此,您将使用 AES 加密数据,并使用 RSA 加密 AES 密钥。
  • 非对称密钥长度必须以比对称密钥快得多的速度增长。目前普遍认为 RSA 1024 位是安全,但 2048 位更适合您需要在几年内保持安全的任何东西。如果您希望将数据存储超过 5 年左右,您将需要 4096 位或 8192 位密钥。这并不完全对性能友好,但这是一个要求。相比之下,使用对称加密,人们认为 256 位密钥永远无法用常规方法破解,即使在宇宙热寂之前地球上的每一盎司能量也是如此。
  • 量子计算机虽然还有很长的路要走,但可能允许在多项式时间内将半素数分解为它们的组成素数,这将打破这种不对称方案。如果您计划将数据存储 20 年以上,请考虑这一点。

另一种方法是让客户端使用 AES-256 加密数据,然后上传。他们可以将他们的对称密钥保存在他们的机器上,或者使用 PBKDF2 或 bcrypt 从密码中获取它。

您基本上已经描述了使用S/MIMEOpenPGP加密电子邮件的工作原理。对于电子邮件,数据传输和存储服务器无法访问电子邮件内容;在您的描述中,您只是使用基于 Web 的协议(即 HTTP)来处理细节,而不是电子邮件传输协议(SMTP、IMAP ...)。

众所周知,加密的细节(使用哪些算法,如何将它们粘合在一起......)很难正确,因此您应该坚持研究标准(即 OpenPGP 或CMS - CMS 是S/MIME 的核心)。

请注意,这被称为“非对称”是有原因的:非对称加密只有在加密的人和解密数据的人不同时才有意义如果同一个用户推送数据进行存储,然后再检索和解密它,那么对称加密就足够了,并且更易于管理。

在许多方面,这是一个非常好的方案,最重要的是服务器妥协不能暴露数据。它有一个不可避免的问题,那就是可用性。你没有考虑人为因素。您期待多年,甚至几十年,人们将能够保持他们的私钥安全且可用,而这根本不会发生!

场景是这样的:Bob 创建了一个公钥/私钥对,他用它来加密服务器上的数据。5 年后,Bob 喝得酩酊大醉,把他的笔记本电脑留在了他昏倒的阴沟里。Bob 后来意识到他没有在他的自动备份实用程序中包含存储他的密钥对的目录。数据永远丢失,没有恢复的希望。

我会改用客户端对称加密,这样服务器妥协就不能暴露数据,并且由客户来安全地存储他们的密码。当然,他们仍然可能会丢失密码,但长期保存密码比保存私钥更容易。更好的是,您可以提供一项额外的服务,为他们长期存储他们的密码,赚取一些额外的现金。

Tom、Greg 和 Polynomial 已经涵盖了这个问题的大部分答案——但是没有人提到前向安全性(通常被乐观地称为“完美”前向安全性),即使密钥被泄露,它也旨在保护数据。

需要注意的是,即使是标准的非对称算法在处理和存储方面也相对昂贵——前向安全算法的可用范围更是如此。