关于NSUserDefaults的不安全之处是手动加密安全吗?

mda*_*ani 3 security encryption nsuserdefaults swift

如果我理解正确:NSUserDefaults是一个存储敏感数据的不安全的地方,因为某些设置文件可能被黑客攻击并且NSUserDefault值可以更改.

什么可以被黑客攻击而不是黑客攻击?黑客可以看到我的应用程序的Swift代码,还是只看到存储在NSUserDefaults中的变量和值列表?

我可以在我的代码中创建自己的"加密"(其中NSUserDefault值看起来像一堆无意义的数字,并且"密钥"在我的代码中,并且需要进行一些复杂的数学运算)?这样安全吗?

注意:我不打算加密任何严重的用户名或密码,只是Highscores和Bool值,无论是否解锁级别/升级.如果我的手动解决方案是安全的,我不想学习KeychainsWrappers.

侧面问题(虽然我尚未达到此步骤):如何处理应用内购买?是否有一个Bool值表示是否支付了一个项目,以及Bool存储的位置(由您自行决定)?

zap*_*aph 5

什么可以被黑客攻击而不是黑客攻击?

你可以做的大多数事都可以被黑客入侵.

黑客可以看到我的应用程序的Swift代码,他们只看到变量列表

一个复杂的黑客可以看到可执行的二进制文件,但不能看到Swift源代码.

存储在NSUserDefaults中的值?

看到NSUserDefaults的内容是微不足道的.请参阅iExplorer和其他类似的应用程序.

我可以在代码中创建自己的"加密"吗?

当然可以,不是吗?

"Schneier定律":"从最无能的业余爱好者到最好的密码学家,任何人都可以创造出一种他自己无法破解的算法."

这样安全吗?

不,这不安全.如果要使用加密,则需要使用标准加密算法(如AES),但创建安全方案并不容易.您可以使用包装器库,例如RNCryptor.但这会产生一个新问题:安全保存加密密钥的位置,请参阅下一点.

如果我的手动解决方案是安全的,我不想学习KeychainsWrappers.

只有您想要安全地保存密钥和少量数据.安全很难.

您需要评估所需的安全级别,包括攻击者级别和数据值.攻击者从好奇的学生到民族国家.数据值从Tic-Tac-Toe高分到核武器细节.你需要先确定这些.