【问题标题】:Secure Encryption in programming编程中的安全加密
【发布时间】:2012-05-16 20:35:12
【问题描述】:

以下内容最安全的加密方法是什么:

  • 我有一个 exe,它运行并获取一个文件,对其进行加密,然后覆盖原始文件。

我发现我自己的想法有两个问题:

  1. 如果运行文件的人无法从 exe 中提取加密密钥,我可以使用哪种语言?
  2. 您认为确保没有密钥无法破解文件的最安全加密方法是什么? (可以用这种语言实现)?

【问题讨论】:

  • 这里不清楚为什么可执行文件中有任何键。密钥不是来自加密文件的用户吗?如果这是一个 DRM 方案(例如您试图对用户隐藏密钥),请参阅stackoverflow.com/questions/9181186/… 以获得更广泛的讨论。这不是一个可以解决的问题。您必须注册以进行持续的警惕和修补。将精力投入到打造更好的产品上几乎总是更好的选择。
  • 请注意,在许多情况下,覆盖原始文件实际上并没有物理覆盖数据,即它仍然可用。这包括使用磨损均衡的 SSD,以及保存文件历史版本快照的文件系统。这两种现在都很常见。

标签: security encryption


【解决方案1】:

与大多数安全问题一样,您的问题归结为key management

没有密钥可以安全地嵌入到可执行文件中,除非密钥本身已加密。但随后可执行文件需要访问那个加密密钥,等等。

安全存储密钥的唯一方法是将其放在只有授权实体可以访问的地方。这归结为选择合适的存储系统,可能是访问受控的数据库或文件系统,也可能在人脑中。

许多密码既安全又容易获得。最常见的一种是AES,即高级加密标准,已被证明具有军事实力。正确的选择取决于您需要的安全级别;您愿意在创建、存储和使用适当的密钥方面投入的计算资源量;以及您的用户愿意等待加密/解密的时间。

【讨论】:

    【解决方案2】:

    即使嵌入到 bin exe 中,也无法完全保护密钥。为什么不让程序的用户提供 enc/dec 密钥并将密钥保护留给用户呢?仅供参考,大多数现代算法都很好,诀窍是密钥位长度(位越多越好)和密钥保护以确保输出无法被破译。

    【讨论】:

      【解决方案3】:

      如果您的问题是加密某些内容并保护机密,因为使用此机密有人可以解密某些文件,请尝试使用一些带有公钥/私钥的算法,例如 RSA。有许多语言的库可以使用 RSA。

      【讨论】:

        【解决方案4】:

        如果您不希望任何人能够从可执行文件中提取加密密钥,则需要对密钥本身进行加密,可能使用密码。当然,任何有密码的人都可以得到密钥。没有办法允许某人在不让他们访问他们正在使用的密钥的情况下加密某些东西。

        如果您真正想做的是让人们加密文件,而不是让他们解密文件,public key cryptography 就是您要找的。​​p>

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-03-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-05
          • 2011-03-09
          相关资源
          最近更新 更多