swift3 - 如何保护密钥

时间:2016-11-04 12:30:15

标签: ios swift key

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

let key = "secretkeyabc123"

搜索并阅读以下文章: In iOS, how can I store a secret "key" that will allow me to communicate with my server?

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

  1. 没有哈希关键。时间允许破解它,或者使用散列表和字典
  2. 可能无法连接到互联网(我的应用是离线应用。如果您的回答需要连接到互联网。是的,请指出。我会考虑一下)
  3. 这是一个静态密钥。它可能每月更改
  4. 这是一个对称键。
  5. 欢迎代码,概念或其他事项。谢谢!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

检查iCloud Keychain(根据你的标签[ios],[swift],[key])。

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