Swift:加密文件或纯文本

时间:2016-06-20 15:29:52

标签: objective-c swift security encryption

您好我要编写一个应用程序,使我能够将远程文件存储在iPhone的本地磁盘上,以使数据永久保存在文件中并使用它进行操作。但我对此有疑问。我不知道顺便加密数据。

那么,如果有任何iPhone黑客破解了越狱并访问我的本地文件?在这种情况下,我想使用加密。但我错过了一些东西。我的json文件包含长文本,如100,000个单词。因此,如果我现在应用Github上的 CryptoSwift 库,使用AES和NSDATA我的计算机将无法加密它。

    let plain = "mylongtextfromfile".dataUsingEncoding(NSUTF8StringEncoding)

    let key: Array<UInt8> = [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
    let iv: Array<UInt8> = AES.randomIV(AES.blockSize)
    let encrypted: NSData = try! plain!.encrypt(ChaCha20(key: key, iv: iv)!)
    print(encrypted)
    let decrypted: NSData = try! encrypted.decrypt(ChaCha20(key: key, iv: iv)!)

    let string1 = NSString(data: decrypted, encoding: NSUTF8StringEncoding)

    print(string1)

我还注意到Apple不想使用其内置API的其他加密库。 Itunnes连接策略需要应用程序的扩展验证过程。 我想问你的专家我必须做些什么。我不希望用户与任何移动服务后端,API或服务器进行交互以下载单词,并在用户每次想要使用单词时进行查询。

我需要使用什么来保持流程快速。实际上有没有办法只加密文件本身,除非数据。或者我面临的错误是什么。

sincelery,

1 个答案:

答案 0 :(得分:2)

  

那么,如果有任何iPhone黑客破解了越狱并访问我的本地文件?

是。这是事实,你无能为力。您可以创建一些混淆层。你可以让攻击者减速几个小时。有了足够的资源和持续的安全专家团队,您可以将攻击者的速度降低一段时间。但是,如果苹果控制着生态系统的每一块,以及专门用于它的广泛专家资源,无法阻止攻击者越狱,那么你就没有希望,特别是如果你说的话,你对加密一无所知。 / p>

这并不是说你什么都做不了;它不会非常有效,所以不要花费大量时间。您必须假设,如果您的数据具有任何重要价值,攻击者将提取它。您必须将系统和业务模型设计为具有弹性。或者你必须聘请一支正在进行的团队来缓解攻击,例如Apple或Blizzard。

那么你能做些什么会很简单并提供某种混淆,即使它非常无效?正如您似乎要尝试的那样,根据硬编码密钥对其进行加密。它不会阻止任何知道他们正在做什么的人,但它会让一些人远离,这就像你能做的一样好。

CryptoSwift是一个很好的库,由一个聪明的家伙编写,但它的级别很低,并假设你知道你在做什么。这不是您想要使用的工具。你想要一些能为你完成所有工作的东西。我有一个,RNCryptor。它的优点是非常简单,跨平台,并且只使用Apple加密原语。还有libSodium更便携,格式更强大,但不使用Apple的原语。

要寻找的重要事项是提供加密格式,而不仅仅是加密原语。从基元构建安全格式非常具有挑战性。如果没有先研究它是如何完成的,请不要尝试。

如果您确实希望继续使用CryptoSwift,那么您需要更准确地解释出现了什么问题。当你说“我的电脑卡住了”时,到底发生了什么?