Encryption 保护用户无法使用的硬编码数据,如密码短语

Encryption 保护用户无法使用的硬编码数据,如密码短语,encryption,cryptography,protection,hardcoded,Encryption,Cryptography,Protection,Hardcoded,我的程序需要在启动后解密加密文件,以加载运行所需的数据。用户无法使用此数据 我不是密码学专家,那么,在调试软件和反汇编软件时,保护硬编码密码短语和其他用户数据的最佳方法是什么 我知道这可能是一种不好的做法,但对我来说是必要的(至少现在是这样) 如果有其他方法可以保护我的数据不受上述3种情况的影响,你能告诉我这些方法是什么吗?简短回答:你不能。一旦软件在用户的磁盘上,一个足够聪明和坚定的用户将能够从中提取机密数据 有关详细答案,请参阅security.SE博客上的 保护硬编码密码短语和其他密码短语

我的程序需要在启动后解密加密文件,以加载运行所需的数据。用户无法使用此数据

我不是密码学专家,那么,在调试软件和反汇编软件时,保护硬编码密码短语和其他用户数据的最佳方法是什么

我知道这可能是一种不好的做法,但对我来说是必要的(至少现在是这样)


如果有其他方法可以保护我的数据不受上述3种情况的影响,你能告诉我这些方法是什么吗?

简短回答:你不能。一旦软件在用户的磁盘上,一个足够聪明和坚定的用户将能够从中提取机密数据

有关详细答案,请参阅security.SE博客上的

保护硬编码密码短语和其他密码短语的最佳方法是什么 来自用户的花絮数据、调试软件和反汇编 软件

向用户请求密码,不要硬编码密码短语。这是唯一安全的方法

如果你不能做到这一点,并且必须在应用程序中硬编码,那么所有赌注都将被取消

你能做的最简单的事情(如果你没有足够的时间去做一些复杂的事情,这只会延迟不可提供的东西)就是把责任委托给系统的用户。
我的意思是明确说明您的软件与它运行的“机器”一样安全。

如果攻击者能够访问文件系统,那么您的应用程序将是用户最不关心的问题

根据我的经验,这类问题通常由以下四个原因之一引起:

  • 应用程序正在连接到受限制的远程服务,如数据库服务器
  • 您不希望您的用户弄乱配置设置,而配置设置实际上不需要保密,只要它们未被修改
  • 复制保护您自己的软件
  • 数据的复制保护
  • 就像Illmari Karonen在他的书中写道的那样,你不能完全按照你的要求去做,这特别意味着3和4不能单靠密码学来解决

    但是,如果您提出问题的原因是1或2,那么您最终会提出您所提出的问题,因为您在设计过程的早期做出了一些错误的决定。例如,在1的情况下,您不应该让不完全信任的系统可以访问受限服务。典型的安全解决方案是引入一个中间层,它是受限资源的唯一客户端,您可以将其公开


    在第2种情况下,最好的解决方案通常是在启动时加载配置文件(或注册表设置等)时使用与用户使用首选配置用户界面输入配置文件时检查一致性完全相同的逻辑。如果您发现不一致,只需打开配置UI并突出显示问题。

    在stackoverflow上查找代码混淆,您将获得1000次点击。