【问题标题】:Best algorithm to Encrypting / Decrypting a string & Key storage method加密/解密字符串和密钥存储方法的最佳算法
【发布时间】:2011-10-10 11:52:29
【问题描述】:

不建议将电子邮件地址以纯文本形式存储在数据库中,因此我想找出执行此操作的最佳算法。选项是:

(来自文档)

  • CFMX_COMPAT:ColdFusion MX 和之前版本中使用的算法。此算法是最不安全的选项(默认)。

  • AES:美国国家标准与技术研究院 (NIST) FIPS-197 指定的高级加密标准。

  • BLOWFISH:由 Bruce Schneier 定义的 Blowfish 算法。

  • DES:由 NIST FIPS-46-3 定义的数据加密标准算法。

  • DESEDE:由 NIST FIPS-46-3 定义的“三重 DES”算法。

另一个问题是密钥应该存储在哪里?在数据库中还是在源代码中?会加密还是不加密?如果它会被加密,那么问题是如何存储将加密密钥的密钥。

是否应该存储在源代码中,无源分发好不好?

【问题讨论】:

  • 我很好奇为什么您认为以明文形式存储电子邮件地址是不可取的。
  • 我同意,请确保您不仅仅是货物,认为这是不可取的。
  • 这是为了隐私。如果安全受到破坏,至少他们将不得不在获得加密数据之前破解另一层。请阅读这些:bit.ly/pkrOG0tgr.ph/nneofZbit.ly/lYdU03bit.ly/nVm3EX
  • 抱歉,但我不同意这些文章提供任何证据表明在数据库中加密电子邮件是个好主意。你也要加密名字和姓氏吗?家庭地址?邮政编码?电话?也许只是加密用户表中的所有内容。但是你要做的只是减慢你的应用程序。您可以在数据库级别进行加密。这将有助于保护数据免受某些损害,而不会显着影响性能。
  • 需要加密的主要是电子邮件和密码。我当然不希望我的电子邮件像dazzlepod.com/lulzsec/final 那样被公开披露(垃圾邮件)

标签: encryption coldfusion


【解决方案1】:

我会使用 AES。它是列出的最快和最强的。

至于在哪里存储密钥,那就是 64,000 美元的问题。你不应该把它放在数据库中(至少不要放在与它用于加密的数据相同的数据库中)或你的源代码中。

密钥管理是一个主题的野兽。 NIST 有数百页关于如何做到这一点的文档。

http://csrc.nist.gov/groups/ST/toolkit/key_management.html

密钥管理涉及密钥的正确生成、交换、存储、轮换和销毁。您不应该永远使用同一个密钥(一个非常常见的错误),也不应该不正确地存储它。

您应该查看 NIST 指南并确定适合您的策略,并根据数据的敏感性充分保护您的数据。

【讨论】:

    【解决方案2】:

    使用 AES 或 DESEDE - 它们很强大,并且根据我的经验,如果您出于某种原因需要移植此信息,它们具有很多广泛的兼容性。

    至于密钥,这不是真正的关键数据。通常,您会根据该数据的唯一信息(如 userId)和私钥(salt)(如代码库中的常量)创建一个复合密钥:

    在你的全局设置/常量中的某个地方:

     <cfset myCodeBaseKey = "NateIsAwesome">
    

    然后当你准备好加密时:

     <cfset myKey = hash(myCodeBaseKey & user.userId, "SHA")>
    

    附:如果你使用我听到的那个确切的盐短语,效果会更好。 :P~

    【讨论】:

    • 投了反对票,因为我认为这是一个糟糕的建议。说关键不是关键不仅是错误的,而且与事实完全相反。密钥是密码系统中最重要的部分(假设是强大的算法)。使用非随机的、容易推断的密钥是一个糟糕的主意。
    • 密钥是唯一信息和私钥的散列组合 - 不容易推导出或反转。此外,您误解了“这不是关键数据”的说法——这是指受保护的数据是电子邮件地址这一事实。
    • “容易推断”的意思是,如果您知道如何创建一个,那么您就知道如何创建所有这些。唯一!=随机。很抱歉,我误解了您所说的关键数据的含义,我同意电子邮件地址不是关键数据,但是如果有人要麻烦加密某些东西,那么使用弱密钥而不是强密钥是没有意义的一。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 2012-06-14
    • 2011-05-01
    • 2021-12-17
    • 2014-10-15
    • 2010-09-18
    相关资源
    最近更新 更多