Objective c 能不能“a”;“秘密”;已编译的Obj-C应用程序中的字符串是否被发现?

Objective c 能不能“a”;“秘密”;已编译的Obj-C应用程序中的字符串是否被发现?,objective-c,cocoa-touch,encryption,disassembly,Objective C,Cocoa Touch,Encryption,Disassembly,我需要将数据从iPhone应用程序发送到Web服务器,然后再发送回来。为了安全地执行此操作,我使用了加密算法。它需要一个服务器和用户都必须知道的密钥,这样才能进行解密。我曾考虑在我的应用程序和服务器上使用一个简单的静态字符串作为密钥,但后来我想起编译后的代码仍然可以反汇编和查看,但只能在一定程度上进行 那么,在我的应用程序的源代码中放置加密方法和“秘密”字符串会有多安全呢?是否有其他方法可以安全地完成应用程序和服务器之间的通信 谢谢。你认为“一定程度”到底是什么?应用程序包含的每一条指令和每一条

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

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

谢谢。

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


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

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


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

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

这里有一些例子:

  • RSA
  • 迪菲·赫尔曼
  • 埃尔加马尔
  • ECDSA
  • XTR

正如其他人所说,你的提议是完全不安全的。如果有人关心你的应用程序,他们会在发布后10分钟内在互联网上发布密钥

你需要研究的是:

  • 不对称加密算法
  • Diffie-Hellman密钥交换
  • (注意——我并不是说这些是你问题的解决方案,但了解它们将使你了解所涉及的问题,更好地为你选择解决方案做好准备)

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


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

    iOS提供了密钥链服务,可以安全(相对)轻松地存储加密密钥等内容。退房


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

    谢谢,SSL似乎是实现最简单但最安全的方法,在研究了非对称算法的工作原理之后……黑客是否有可能在应用程序运行时转储插入的字符串?如果是这样,有什么方法可以防止这样做吗?@vinnybad,通常可以转储程序的所有内存并对其进行扫描,但没有某种方法可以阻止它。@zneak我以前在Java中使用字节数组来隐藏字符串的内容。有没有一种方法可以从iOS中的文本字段中提取值并完全绕过NSString来创建一个C字符串?虽然这并不能抵御所有攻击,但肯定会使内容更难理解。你知道怎么做吗?@vinnybad,那。如果您不希望字符串是可转储的,那么它只需要在内存中保留最短的时间。