代码之家  ›  专栏  ›  技术社区  ›  pop850

编译的Obj-C应用程序中的“秘密”字符串能被发现吗?

  •  6
  • pop850  · 技术社区  · 14 年前

    我需要从我的iPhone应用程序发送数据到我的web服务器,然后再发送回来。为了安全地做到这一点,我使用了加密算法。它需要一个服务器和用户都必须知道的密钥,这样才能进行解密。我曾考虑在我的应用程序和服务器上使用一个简单的静态字符串作为键,但后来我想起编译后的代码仍然可以反汇编和查看,但只能在一定程度上。

    那么,在我的应用程序的源代码中放置加密方法和“secret”字符串会有多安全呢?有没有其他方法可以安全地完成应用程序和服务器之间的通信?

    5 回复  |  直到 14 年前
        1
  •  6
  •   zneak    14 年前

    是的,很容易找到。运行 strings 在你的可执行文件上的程序,你可能会找到它。此外,程序中的任何内容都可以被“找到”,因为它必须是开放的。

    使用SSL进行安全连接。它使用非对称加密,这意味着加密数据的密钥与解密数据所需的密钥不同。这样,即使攻击者发现了你的加密密钥,他们仍然无法使用它进行解码。所有主要的HTTP服务器和客户端库都支持HTTPS,这就是它所做的。

        2
  •  4
  •   Nicholas Knight    14 年前

    你认为那到底是什么“一定程度”?您的应用程序包含的每一条指令和每一条数据都可以查看。此外,对每个设备使用相同的密钥是密码疯狂的终极。

    只需使用HTTPS。SSL/TLS是一种安全的、经验证的技术,内置于每个主要的HTTP服务器和每个主要的HTTP客户端库中。

        3
  •  2
  •   schoetbi    14 年前

    使用对称算法。如果您需要高安全性,也许您应该考虑使用非对称方法。这样,您甚至可以在每个会话中重新创建密钥,并且只需要交换公钥。

    • RSA公司
    • 密钥交换
    • ECDSA公司
    • XTR公司
        4
  •  1
  •   Kaelin Colclasure    14 年前

    iOS有密钥链服务,可以安全(相对)方便地存储加密密钥等内容。退房 Keychain Services Programming

    libSystem中包含的CommonCrypto库中也提供了您可能需要的所有cryptoapi。简而言之,在保护iOS应用程序安全方面,不需要走捷径。

        5
  •  0
  •   wadesworld    14 年前

    你需要研究的是:

    1. 非对称加密算法
    2. Diffie-Hellman密钥交换

    (注意-我并不是说这些是你问题的解决方案,但了解它们会让你了解所涉及的问题,更好地为你选择解决方案做好准备)

    另外,为什么不能使用HTTPS连接呢?

    最后,如果这个加密方案是为了保护关键数据,你最好雇个顾问来帮你,因为作为一个新手,你肯定会犯一些基本的错误。