簡體   English   中英

在iOS上使用Touch ID加密數據

[英]Using Touch ID on iOS to encrypt data

我想做什么

基本上,我想做的就是找出一種使用Touch ID加密數據的方法。

遺憾的是,由於LAContext API僅返回贊成/反對響應,因此我還沒有找到使用Touch ID創建加密密鑰的方法。


為什么我要嘗試

我正在應用程序中實現不同的登錄方法。 支持的登錄方法是密碼PIN碼Touch ID 用戶可以自由選擇他/她想要的任何登錄方法。
但是,僅將密碼發送到服務器,該服務器將對用戶進行身份驗證。 因此,只有密碼存儲在鑰匙串中。

首先使用用戶選擇作為登錄方法的任何方法創建用於首先加密然后將密碼存儲在鑰匙串中的encryptionKey
如果用戶選擇使用PIN碼,則從該PIN碼派生encryptionKey ,當用戶選擇密碼作為登錄方法時,也可以這樣說。


我的問題是:

如何在此圖片中放入Touch ID?

我已經在互聯網上進行搜索,但是只發現了我已經擔心過的東西。
由於iOS僅從Secure Enclave返回truefalse ,因此無法創建encryptionKey

我知道鑰匙串本身是加密的,但是出於安全原因(請不要詳細說明),我需要在鑰匙串中存儲一個加密的密碼。


編輯:

在鑰匙串中存儲加密數據的原因在於,通過越獄設備可以破壞鑰匙串。 由於我正在使用的應用程序允許用戶查看(主要是)公司敏感數據,因此我什至需要考慮越獄的情況。

使用kSecAccessControlTouchIDCurrentSetkSecAccessControlTouchIDAny鑰匙串訪問控制屬性來保護鑰匙串中的加密密鑰。 如果用戶未啟用觸摸ID(或設備不支持),則使用此API將會失敗;如果用戶修改了指紋集,則使用kSecAccessControlTouchIDCurrentSet將會失敗。 如果發生故障,則可以回退到常規身份驗證UI,例如密碼或密碼。

有關更多信息,請參閱帶有觸摸ID的WWDC 2014 711鑰匙串和身份驗證以及WWDC 2015 706安全和您的應用程序

作為一般說明,請勿在鑰匙串中存儲數據。 您應該只存儲密碼,加密密鑰或憑據,並使用它們來解密存儲在磁盤上的數據。

我知道,這個問題是2015年發布的,但是我針對相同的問題進行了研究。 據我所知,這實際上是不可能的。

我已經在1Password網站上找到有關此主題的報價:

不要越獄您的設備。 理論上,具有設備訪問權限的人都可以訪問1Password存儲在iOS鑰匙串中的秘密。 但是,這需要解鎖設備,越獄設備(以便1Password以外的其他設備可以讀取屬於1Password的iOS鑰匙串數據),並且避免混淆主密碼。 如果您越獄了設備,則您很樂意擊敗針對這種攻擊的最強大的防御措施之一。

所以,簡單的答案:這是不可能的:(

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM