swift3 – 如何保护密钥

我是iOS swift 3开发的新手。 现在,我正在开发一个需要加密,消息认证码(MAC)和Hashed-base-MAC的项目。 这些算法需要密钥。 我知道在代码中对代码进行硬编码是一种不好的做法,例如:

let key = "secretkeyabc123" 

搜索并阅读了一些文章: 在iOS中,如何存储允许我与服务器通信的秘密“密钥”?

由于其他人可能会执行逆向工程,我找到了一种保护我的密钥的方法。 要求:

  1. 没有哈希的关键。 时间允许破解它,或者使用散列表和字典
  2. 可能无法连接到互联网(我的应用程序是离线应用程序。如果您的答案需要连接到互联网。是的,请指出。我会考虑一下)
  3. 这是一个静态密钥。 它可能每月都在变化
  4. 这是一个对称的关键。

欢迎代码,概念或其他事项。 谢谢!

根本不要存放钥匙。 执行Diffie-Hellman密钥交换以启动非对称加密通道,并使用此通道跨对称密钥发送到客户端,该密钥可用于后续客户端使用。

检查iCloud Keychain(基于您的标签[ios],[swift],[key])。

它作为一个安全的数据库,允许安全存储包括用户的网站登录密码,Wi-Fi网络密码,信用卡/借记卡管理(虽然没有CVV)和其他帐户数据的信息,以便快速访问和自动填写当用户需要即时访问它们时,网页和其他地方。 它们始终使用256位AES加密进行加密存储,存储在设备上并在设备之间从iCloud推送,并且仅在用户的可信设备上可用。