指紋解鎖

指紋解鎖原理:

蘋果在文件中對iPhone 5S配備的Touch ID指紋識別系統(tǒng)的功能與工作原理進(jìn)行了詳細(xì)說明。文件對iPhone 5S的A7處理器中““Secure Enclave””協(xié)處理器進(jìn)行了說明,該協(xié)處理器能夠安全地將用戶儲存的指紋信息與Touch ID當(dāng)前所識別到的指紋進(jìn)行信息對比。而蘋果早在iPhone 5S發(fā)布時就公布了Touch ID的工作原理。但此次所獲悉的文件說明得更為詳細(xì)。

根據(jù)蘋果的解釋,一個單一的注冊指紋與別人指紋出現(xiàn)隨機(jī)匹配的概率為五萬分之一。

蘋果聲稱““Secure Enclave””模塊系統(tǒng)能夠安全地管理并識別用戶的指紋,并將用戶的指紋信息獨(dú)立地保存在別的系統(tǒng)中,同時通過加密內(nèi)存和一個硬件隨機(jī)數(shù)字密碼發(fā)生器進(jìn)行管理。

每個“Secure Enclave”是單獨(dú)設(shè)置的,不能訪問系統(tǒng)其他部分的,擁有自己的獨(dú)立的UID(唯一的ID),連蘋果也不知道這些UID。當(dāng)設(shè)備啟動時,Touch ID會臨時創(chuàng)建一個秘鑰,與“Secure Enclave”的UID配合,對設(shè)備的內(nèi)存空間進(jìn)行加密。

而在蘋果發(fā)布的文件中,蘋果對A7處理器進(jìn)行指紋識別授權(quán)的描述是:A7和Touch ID之間通過一個串行外設(shè)接口總線進(jìn)行通信。A7處理器將數(shù)據(jù)發(fā)到“Secure Enclave”,但并不對數(shù)據(jù)內(nèi)容進(jìn)行讀取。加密和身份驗證都是使用Touch ID和“Secure Enclave”之間的共享密鑰。通信密鑰交換使用雙方提供的一個隨機(jī)AES密鑰,并隨機(jī)建立會話密鑰和使用AES-CCM傳輸加密。

由于大部分的Touch ID用戶可能發(fā)現(xiàn),在某些情況下需要使用密碼來代替Touch ID。而這份文件指出了什么情況下Touch ID不能使用和要求必須輸入密碼:

文件指出在以下情況下密碼可以代替Touch ID:

-iPhone 5s剛剛開啟或重新啟動時;

-iPhone 5s沒有解鎖超過48小時;

-經(jīng)過5次不成功指紋匹配時;

-當(dāng)進(jìn)行設(shè)置或使用新的手指紋使用Touch ID時;

-iPhone 5s已經(jīng)接收到遠(yuǎn)程鎖定命令時。

指紋解鎖代碼實(shí)現(xiàn):

在iPhone5s的時候,蘋果推出了指紋解鎖。但是在ios8.0的時候蘋果才推出相關(guān)的接口。

所以我們一開始需要判斷當(dāng)前系統(tǒng)版本


低于8.0的系統(tǒng)版本不支持指紋解鎖

當(dāng)系統(tǒng)版本大于8.0時,引入并導(dǎo)入頭文件,書寫代碼!




以下是經(jīng)常出現(xiàn)的幾個錯誤,大家共勉!

例如,在iphone5上運(yùn)行結(jié)果:

Error Domain=com.apple.LocalAuthentication Code=-6 "Biometry is not available on this device." UserInfo=0x15ec5a00 {NSLocalizedDescription=Biometry is not available on this device.

例如,在模擬器上運(yùn)行結(jié)果:

Error Domain=com.apple.LocalAuthentication Code=-1000 "Simulator is not supported." UserInfo=0x7ffe604b0790 {NSLocalizedDescription=Simulator is not supported.

例如,在有TouchID 的功能下,沒有設(shè)置TouchID的運(yùn)行結(jié)果:

Error Domain=com.apple.LocalAuthentication Code=-7 "No fingers are enrolled with Touch ID." UserInfo=0x170075fc0 {NSLocalizedDescription=No fingers are enrolled with Touch ID.

例如:連續(xù)三次指紋識別錯誤:

Error Domain=com.apple.LocalAuthentication Code=-1 "Aplication retry limit exceeded." UserInfo=0x1740797c0 {NSLocalizedDescription=Aplication retry limit exceeded.}

例如:用戶在Touch ID對話框中點(diǎn)擊了取消按鈕:

Error Domain=com.apple.LocalAuthentication Code=-2 "Canceled by user." UserInfo=0x17006c780 {NSLocalizedDescription=Canceled by user.

例如:用戶在Touch ID對話框中點(diǎn)擊輸入密碼按鈕:

Error Domain=com.apple.LocalAuthentication Code=-3 "Fallback authentication mechanism selected." UserInfo=0x17407e040 {NSLocalizedDescription=Fallback authentication mechanism selected.

例如:按下電源鍵:

Error Domain=com.apple.LocalAuthentication Code=-4 "UI canceled by system." UserInfo=0x170065900 {NSLocalizedDescription=UI canceled by system.}

例如:Touch ID功能被鎖定,下一次需要輸入系統(tǒng)密碼時的運(yùn)行結(jié)果:

Error Domain=com.apple.LocalAuthentication Code=-8 "Biometry is locked out." UserInfo={NSLocalizedDescription=Biometry is locked out.

以下是代碼的鏈接:

https://github.com/darkhous/touchId-.git

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容