双键加密/解密?

Mat*_*hew 8 php mysql encryption cryptography

我希望使用PHP和MySQL存储一些相当敏感的数据,并且将使用某种形式的可逆加密来实现这一点,因为我需要以纯文本形式恢复数据,因为它有任何用处.

我将从用户的用户名/密码组合中获取加密密钥,但我很难忘记在密码被遗忘的(不可避免的)事件中该怎么做.我意识到加密的目的是它只能使用正确的密钥撤消,但这必须在之前解决..

我试图了解公钥加密是否适用于该问题,但我能想到的是私钥仍然需要正确才能解密数据.

有任何想法吗?

eri*_*son 5

目前还不清楚你在追求什么,所以关于如何实施它的建议很难.

像PGP和S/MIME这样的标准使用新的对称密钥加密每条消息.然后为每个消息接收者加密这些密钥.这样,不是为每个收件人复制邮件(可能非常大),每个人都获得相同的密文,只有密钥(很小)被复制 - 但每个收件人的加密方式不同.

也许你可以在这里做类似的事情,用用户密码加密密钥,用你的公钥加密另一个拷贝.如果用户忘记了密码,您可以使用私钥为他们恢复邮件(在适当的备份身份验证之后).


Sla*_*ast 3

我希望使用 PHP 和 MySQL 存储一些相当敏感的数据,并将使用某种形式的可逆加密来实现这一点,因为我需要以纯文本形式获取数据才能使用。

保护敏感数据是件好事。现在:

  • 数据是谁的?(您的、您的用户的还是第三方的?)
  • 它需要受到什么保护?(披露、腐败(意外或故意......)
  • 需要保护它免受谁的侵害
    • 不涉及的各方不言而喻。
    • 您是否需要/想要避免自己访问明文数据(对于否认性有用),
    • 您是否需要保护您的用户数据不被第三方看到,
    • 或者来自用户的第三方数据,
    • 或者您来自用户或第三方的数据?
  • 可能的攻击是什么?
    • 在服务器完全遭到破坏的情况下,您是否需要进行保护?
    • 您是否需要防范应用程序级别的攻击,即用户仅获得对某些但不是全部可用数据的访问权限(例如,访问 SQL 数据库,但不能访问文件系统)?
    • 数据量是否足够小,以至于攻击者可以猜测并简单地检查他/她是否正确?(短密码、数字、简单单词、固定格式文本可能是候选内容)
    • 攻击者是否知道用于攻击的明文?
  • 如果用户忘记了密码,那么数据消失(或重新检索数据)是否更好,或者是否值得增加暴露数据的风险以避免这种成本?

可能还有其他问题,但这是使用加密时需要考虑的问题。答案将帮助您弄清楚您需要什么与您想要什么,并且可能会帮助您指出正确的方向。您可能不想与我们分享所有答案。

我将从用户的用户名/密码组合中导出加密密钥,但我很困惑在忘记密码(不可避免的)事件中该怎么做。我意识到加密的目的是只能使用正确的密钥才能撤消它,但这之前必须已经解决过。

您可能在没有考虑影响的情况下决定了解决方案。这并不意味着该解决方案是错误的,但这个问题建议您应该考虑一下您愿意为安全承担哪些风险。有时数据会面临风险。

我试图弄清楚公钥加密是否适用于该问题,但我能想到的是私钥仍然需要正确才能解密数据。

这听起来也像是寻找问题的解决方案。当您有两个(或更多)独立的参与者并且有兴趣在他们之间通信数据时,公钥加密非常有用。这些参与者可以是真实的(人)或功能性的(系统的组件),但如果没有两个参与者,就没有理由拥有单独的公钥和私钥。