首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为存储目的加密/解密敏感信息

为存储目的加密/解密敏感信息
EN

Cryptography用户
提问于 2018-09-26 20:02:01
回答 2查看 297关注 0票数 1

我想将帐号和路由号码存储到SQL数据库中,我正在寻找加密/解密这些敏感信息的最佳方法。经过研究,我发现我可以使用对称算法(如AES)或非对称算法(如RSA、X509证书)。我只想在本地加密/解密服务器上的信息,并将其存储到SQL中。为此,建议使用128位HEX密钥的AES吗?

不对称算法的使用似乎过分了,因为加密/解密将在同一台服务器上本地发生。

(请注意,这些信息最终将传递给使用SFTP的供应商,但是在传输期间,我们将使用供应商提供的PGP公钥进行加密,以便供应商能够解密。我在这里看到的是本地存储的加密/解密)

EN

回答 2

Cryptography用户

发布于 2019-04-16 18:36:51

首先,您应该进行威胁分析并确定加密应该保护您不受攻击的攻击场景。如果没有这样的分析,你所做的只是在你的数据库上撒上魔法密码尘埃,并希望它能以某种方式保护你免受任何和所有可能的威胁。(剧透者:可能不会。)

例如,一些或多或少合理的威胁可能包括:

  • 远程攻击者通过SQL注入获得对数据库的访问;
  • 远程攻击者通过远程代码执行(和/或权限升级)漏洞访问整个服务器,包括存储在服务器上的所有数据和密钥;
  • 远程攻击者猜测特权帐户的密码;
  • 对服务器具有物理访问权限的员工,不小心地处理曾经包含敏感数据的磁盘;
  • 特权雇员不小心将敏感数据复制到不安全或可公开访问的位置;
  • 特权雇员恶意访问或修改敏感数据;和/或
  • 一个特权员工的工作站被恶意软件感染。

加密可以防止其中的一些威胁,但并不是所有这些威胁,并且它能够防止这些威胁的程度取决于划分的程度(例如将公开访问的服务分离到专用服务器上,实现严格的防火墙规则,要求对所有帐户进行安全多因素身份验证,在硬件安全模块中存储活动加密密钥,将不活动的主密钥分割成多个共享,并将它们存储在不同的位置,等等)。你愿意去实现和忍受。

当然,您加密数据的唯一直接原因也可能是通过要求它的认证。在这种情况下,您可能希望检查认证标准,并确定它们对您的加密所要求的内容以及他们期望它应对的威胁。

根据您的特定需求和威胁模型,您可能仅仅通过激活数据库软件的内置加密功能,甚至仅仅通过将数据库存储在加密磁盘上,就可以充分满足您对静止数据加密的需求。如果是这样的话,这无疑是最简单的选择,尽管它只对有限的一组攻击进行保护。

数据库前端(如CryptDB )可能也很有用,不过,您应该再次仔细检查它们的能力,以保护您免受您确定的相关威胁,同时仍然提供对所需数据的访问。

如果您必须实现您自己的数据库列加密,并且如果对称密钥加密足够满足您的需要,那么我强烈建议使用AES-SIV (或者可能使用AES-GCM-SIV)。如果不需要对加密的字段进行相等的比较,则对每个字段使用带有唯一随机值的SIV (并考虑将表和列名以及行的主键作为关联数据)。如果您确实需要对加密字段进行比较而不对它们进行解密,那么使用SIV时不要使用nonce (但最好还是将表名和列名作为关联数据)。

(如果您发现自己想要对加密数据进行任何类型的搜索或比较,除了简单的等式比较之外,我强烈建议检查您的设计并尝试找到另一种解决方案。虽然确实存在各种声称提供这种功能的“保序”和/或“可搜索”加密方案,但它们不能--而且根本不能--达到现代加密方案通常预期的安全水平,因为进行这种比较的能力不可避免地泄露关于加密数据的信息。即使是非加密的SIV也应该谨慎使用,因为它泄露了加密值的相等性。)

在某些情况下,例如,如果您希望您的服务器能够向数据库添加新的加密值,但不能在添加了现有数据后对其进行解密,则可能需要使用公钥加密方案。特别是,您可能需要一个混合密码体制,如ECIES,其中系统的公钥部分用于生成和加密随机对称密码密钥,然后使用这个随机对称密钥对数据本身进行加密。与AES-SIV相比,这类系统的主要缺点是其额外的复杂性和较高的开销(在处理时间和存储需求方面)。当然,它们的主要优点是,即使攻击者能够访问公共加密密钥,数据的机密性也不会受到损害。

票数 2
EN

Cryptography用户

发布于 2018-09-26 20:59:25

麻省理工学院有一项名为CryptDB的工作,它可以处理你所要求的大部分内容,并于2011年提交。他们发布了他们的代码,但是您可能很难在应用程序中使用它。例如,PhpBB和HotCRP的测试代码没有完全发布。此外,不计算代理服务器的计算资源增加。

至少有两个安全分析。还有,一个短的这里。第一个例子显示了当完整性缺失时会发生什么,数据库的双镜头会导致信息泄漏。第二种是表明奥普和DET (零IV的CMC)洋葱可以泄漏信息。

如果文章中提到的问题没有困扰你,那是给你的。

存储帐号和路由号码

  • 如果您不想搜索加密的数据,那么使用CBC模式的AES (在CryptDB中使用洋葱)或使用CTR模式的AES就足够了。对于这些模式,您也必须将IV或nonce存储在数据库中。请注意,如果需要,这些模式不会为您提供经过身份验证的加密,而且您应该更喜欢AES-GCM或chacha20-poly1305。另一个问题中的行和表的完整性和身份验证。
  • CryptDB使用AES-CMC检查加密数据的相等性.E_k(m_1) = E_k(m_2) \Leftrightarrow m_1 = m_2.,因为帐号和路由号码很可能是唯一的,它们不会在CryptDB使用AES-CMC的方式下显示统计信息,正如我从给定的有限信息中看到的那样。
  • 您可以使用AES-SIV来防止GCM模式的立即重用(内部CTR模式)的危险。在SIV模式下,如果没有重用,就不会像在CTR模式中那样泄漏信息。
  • 也可以使用加密散列函数。当需要时,保持原始值的语义安全以进行检索时,您可以散列这些值并将它们存储在数据库中。对散列值执行比较。这只能泄露点击率。

非对称算法的使用

一般情况下,非对称加密用于密钥交换。与对称加密算法相比,非对称加密算法将是非常慢的。现代英特尔和AMD CPU的每个核心都有AES-NI指令.这将减少服务器的时间。

票数 1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/62655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档