【问题标题】:Protecting the encryption key embedded in my application保护嵌入在我的应用程序中的加密密钥
【发布时间】:2013-03-26 20:53:09
【问题描述】:

我想加密一个NSString,所以我提到了AES Encription for NSString。 该代码运行良好,我可以使用它。

但如果有人能拿到加密密钥,就很容易破解我的NSString

我在终端中对生成的可执行文件执行了strings -a 命令,并且能够看到该加密密钥。

因此,我们在发送数据之前对其进行了保护,但加密密钥仍然暴露在外。如何保护此加密密钥?

编辑:我有多个进程在系统上运行。有时他们通过发布通知与 NSDistributedNotificationCenter 进行通信。有时,该通知充当命令。我担心任何人都可以发布通知并试图欺骗我的流程。所以我决定使用postNotificationName:object:userInfo:deliverImmediately:。在这个 API 中,我可以发送加密数据(命令),并且只有我的可执行文件知道加密密钥。

【问题讨论】:

  • 正如@zoul 所说,实际上不可能按照您的要求进行操作(即,如果可执行文件具有解密字符串所需的一切,那么拥有该可执行文件的任何人也拥有所需的一切)。但根据您实际尝试实现的目标,可能有另一种方法(例如使用公钥加密)。你到底想完成什么?
  • 我用更多信息更新了问题。

标签: macos cocoa encryption


【解决方案1】:

您永远无法真正安全地隐藏字符串,只需对其进行混淆以保护自己免受简单攻击。一种合理的解决方案是将其与已知常数进行异或。将字符串拆分为单个字节,将每个字节与已知数字进行异或运算,并将生成的字节数组存储在二进制文件中。当您需要使用该字符串时,再次使用相同的常量对数组字节进行异或运算,并从结果字节数组中创建一个字符串。

【讨论】:

    猜你喜欢
    • 2019-07-14
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 2019-08-04
    • 1970-01-01
    相关资源
    最近更新 更多