gpt4 book ai didi

ios - 验证加密数据是否未被篡改

转载 作者:行者123 更新时间:2023-12-01 22:46:54 24 4
gpt4 key购买 nike

我有一个使用RNCryptor v2.2 ObjectiveC库加密的字符串。
加密后,将其本地存储在iPhone中。

当想取回字符串时,在解密之前,我想确保加密的内容没有被篡改(例如手动更改字符)。

我该如何验证?

提前致谢!

最佳答案

从理论上讲,您的问题的正确答案是,无论您在设备上本地应用程序中执行的任何操作,与不执行任何操作相比,您都不会更加确定自己的数据是否被篡改。您将需要使用外部可靠的代理(例如https Web服务器)来存储有关数据的某些信息。

让我简要解释一下。假设用户的设备未越狱,iOS的data sandboxing模型已经为您的应用程序数据提供了足够的保护。这意味着无法更改应用程序的 private 数据(保存在应用程序的标准Documents,Caches等文件夹中)。另一方面,想要修改存储在应用程序 private 文件夹中的加密信息的恶意用户可以越狱设备。在这种情况下,他将有权访问所有内容,并且可以读写任何 private 文件夹。

有人会说您可以创建数据的哈希或数字签名并将其存储在设备上。但是,如果设备越狱,入侵者就可以访问所有内容,包括应用程序的二进制代码(Objective-C可以无需过多的努力即可进行逆向工程),因此可以使用哈希生成算法,salt或数字私钥签名。因此,他也可以轻松地操纵数字签名或哈希。

您应该评估数据被篡改的风险。有多少工作值得篡改您的数据?如果您要存储银行信息并拥有约100万用户,则应认真承担有人可能越狱设备,对应用程序进行反向工程并篡改数据的风险。如果您要存储照片共享应用程序的 session token ,也许您可​​以直接保留它并信任iOS的沙箱。同样重要的是,越狱设备需要用户的积极参与,因此,未经用户同意,无法远程进行越狱。这意味着,未经用户同意,不得篡改数据。

如果您确实需要保护数据,那么唯一的方法就是使用您信任的外部服务,该服务可以为设备提供外部安全性。您可以通过https将敏感数据发送到Web服务器,让Web服务器使用其私钥对其进行签名,然后将可以重新存储的签名重新发送给您,您可以在任何地方平静地存储该签名。每次需要访问敏感数据时,都可以验证数据签名(以及服务器 public 证书中签名的有效性)。由于私钥存储在远程服务器上,因此可以确保没有人可以访问它,并且不能将其用于签名被篡改的数据。

关于ios - 验证加密数据是否未被篡改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23078599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com