2016-11-04 133 views
1

我是新的iOS swift 3開發。現在,我正在開發一個需要加密,消息認證代碼(MAC)和Hashed-base-MAC的項目。這些算法需要密鑰。我知道,這是一個不好的做法,硬代碼裏面的代碼鍵,如:swift3 - 如何保護密鑰

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. 這是一個對稱密鑰。

歡迎使用代碼,概念或其他東西。謝謝!

+0

「時間允許破解它」如果你擔心在宇宙壽命的時間量的時間量,那麼我想是的。 – Alexander

回答

0

根本不存儲密鑰。執行Diffie-Hellman密鑰交換以啓動非對稱加密通道,並使用此通道通過對稱密鑰向客戶端發送,以供客戶端隨後使用。

0

檢查iCloud Keychain(基於您的標籤[ios],[swift],[key])。

它充當安全數據庫,允許安全存儲用戶的網站登錄密碼,Wi-Fi網絡密碼,信用卡/借記卡管理(儘管無CVV)和其他帳戶數據等信息,以便快速訪問和當用戶需要即時訪問它們時,自動填充網頁和其他地方。它們始終使用256位AES加密進行存儲,存儲在設備上並在設備之間從iCloud推送,並且只能在用戶的可信設備上使用。