国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

指紋識(shí)別技術(shù)在IOS開發(fā)中的應(yīng)用研究

2017-02-07 13:21黃瀏展
軟件 2016年7期
關(guān)鍵詞:指紋識(shí)別

黃瀏展

摘要:蘋果自iphone5S推出了指紋識(shí)別實(shí)現(xiàn)指紋解鎖功能,隨后在IOS8開放了touch ID接口。本文對(duì)iPhone的指紋識(shí)別技術(shù)進(jìn)行了簡要介紹,并對(duì)指紋識(shí)別技術(shù)在IOS開發(fā)中的應(yīng)用進(jìn)行了詳細(xì)闡述。

關(guān)鍵詞:指紋識(shí)別;IOS;App;登錄

引文

指紋是每個(gè)人所具有的生理特征,并且每個(gè)人的指紋都是獨(dú)一無二的,每個(gè)人的指紋在圖案、斷點(diǎn)和交叉點(diǎn)上各不相同,它也不會(huì)隨著年齡的變化而發(fā)生變化。正因?yàn)橹讣y所具備的獨(dú)特的特征,被廣泛用作個(gè)人的身份識(shí)別。

指紋識(shí)別技術(shù)是利用人類指紋的唯一性,通過對(duì)指紋圖案的采樣、特征信息提取并與庫存樣本相比較的過程來實(shí)現(xiàn)身份識(shí)別的技術(shù)。與帳號(hào)加密碼、充值IC卡等傳統(tǒng)的身份識(shí)別手段相比,指紋識(shí)別技術(shù)具有不會(huì)丟失、不會(huì)遺忘、唯一性、不變性、防偽性能好和使用方便等優(yōu)點(diǎn),目前應(yīng)用在偵訊、門禁、電腦、手機(jī)、考勤、支付等領(lǐng)域。

隨著智能手機(jī)的普及和移動(dòng)互聯(lián)網(wǎng)的發(fā)展,人們?nèi)粘9ぷ魃钪性絹碓蕉嗟氖聞?wù)通過手機(jī)來完成。越來越多的應(yīng)用要求用戶通過輸入密碼來登錄,密碼難以記憶,輸入起來麻煩,使用起來極為不便。如果能利用指紋識(shí)別技術(shù)來實(shí)現(xiàn)各種APP的登陸將極大的方便用戶,為用戶提供更好的體驗(yàn)。本文將介紹IOS開發(fā)中,如果使用蘋果touch ID實(shí)現(xiàn)指紋登陸。

2蘋果指紋識(shí)別技術(shù)介紹

2.1蘋果指紋識(shí)別技術(shù)原理

2013年蘋果公司在iphone5S上首次使用指紋識(shí)別功能實(shí)現(xiàn)手機(jī)的解鎖。在手機(jī)的Home鍵內(nèi)植入指紋識(shí)別芯片,利用射頻傳感器直接讀取真皮層的指紋,生成精準(zhǔn)的指紋圖像。通常得到的指紋圖像是灰度圖。為了提取指紋特征,首先將灰度圖轉(zhuǎn)化成計(jì)算機(jī)能處理的二進(jìn)制圖像。Touch ID芯片會(huì)根據(jù)3種基本指紋類型(弧形紋、箕形紋或斗形紋)將指紋分類,提取指紋紋路中的特征點(diǎn),包括紋路的起點(diǎn)、終點(diǎn)、分叉點(diǎn)和毛孔的位置等。然后將該手指的特征點(diǎn)數(shù)據(jù)加密之后保存為數(shù)學(xué)表達(dá)式。通過指紋識(shí)別進(jìn)行身份驗(yàn)證的過程就是再次執(zhí)行以上過程,然后將獲得的指紋與已經(jīng)注冊的指紋數(shù)據(jù)進(jìn)行比對(duì),如果匹配則指紋解鎖成功。

從以上描述可以看出蘋果的指紋識(shí)別技術(shù)有以下幾個(gè)特點(diǎn):第一、基于第三代生物射頻指紋識(shí)別技術(shù)(射頻原理真皮指紋核心技術(shù)(線型采集器)),通過傳感器發(fā)射出微量射頻信號(hào),穿透手指的表皮層去控測里層的紋路,以便獲得較精準(zhǔn)的指紋圖像。而且獲取的是真皮層的指紋特征,防偽指紋能力增強(qiáng)。第二、保存的并非指紋本身,而是指紋的特征數(shù)據(jù),并且經(jīng)過加密處理。第三、指紋數(shù)據(jù)保存在本地,而非云端,并且目前是不可以獲取指紋數(shù)據(jù)的。以上三點(diǎn)從一定程度上保證了指紋識(shí)別的安全性。

2.2TouchID在APP開發(fā)中的應(yīng)用

2.2.1指紋識(shí)別的應(yīng)用

Iphone5s添加指紋識(shí)別后,僅僅將指紋識(shí)別用于手機(jī)的解鎖。iOS8發(fā)布以后,在其SDK開放了TouchID的接口。該接口提供的函數(shù)主要實(shí)現(xiàn)兩個(gè)功能,判斷當(dāng)前設(shè)備是否支持指紋識(shí)別功能和指紋驗(yàn)證。前面已經(jīng)介紹,蘋果指紋識(shí)別并不會(huì)保存指紋到云端,也不提供獲取指紋的功能,因此其指紋識(shí)別僅針對(duì)當(dāng)前使用設(shè)備,并且不能存儲(chǔ)指紋,只能對(duì)當(dāng)前設(shè)備的指紋識(shí)別進(jìn)行驗(yàn)證。根據(jù)蘋果官方的介紹Touch ID目前主要應(yīng)用在兩個(gè)方面:用于Key Chain加密和用于授權(quán)。

根據(jù)蘋果指紋識(shí)別的原理,目前指紋識(shí)別技術(shù)在IOS開發(fā)中的應(yīng)用主要是指紋識(shí)別登錄App。App登錄后,一段時(shí)間不用或者其它原因使其進(jìn)人后臺(tái)運(yùn)行,當(dāng)用戶重新將APP喚醒至前臺(tái)時(shí),一般要求輸人密碼,這個(gè)時(shí)候可以利用指紋識(shí)別來代替密碼輸入,為用戶提供便利,省去輸入密碼的繁瑣,也減少密碼被盜的風(fēng)險(xiǎn)。

2.2.2 Touch ID接口介紹

IOS8以后,蘋果對(duì)開發(fā)者開放了Touch ID接口,可以通過Touch ID進(jìn)行身份認(rèn)證,下面接口簡單介紹。

Touch ID用于身份認(rèn)證的所有的接口都在LocalAuthentication框架中,該框架包含了三個(gè)頭文件:LAContext.h,LAError.h,LAPublicDefines.h。LAContext.h用來評(píng)估認(rèn)證策略,允許應(yīng)用程序要求用戶使用個(gè)人信息,如注冊信息或Touch ID的個(gè)人信息來驗(yàn)證自己的身份。LAError.h中定義了一些錯(cuò)誤信息代碼。實(shí)際用到的函數(shù)有兩個(gè),如下所示。

上述兩個(gè)函數(shù)都是LAContext的成員函數(shù)。目前LAPolicy有兩個(gè)值:LAPolicyDeviceOwnerAuthe-nticationWithBiometrics和LAPolicyDeviceOwnerA-uthentication。第一個(gè)值表示設(shè)備必須使用touch ID認(rèn)證識(shí)別,如果設(shè)備不支持或者沒有設(shè)置指紋,則不能通過認(rèn)證;第二個(gè)值表示設(shè)備可以通過touchID和密碼來認(rèn)證識(shí)別,當(dāng)不能使用指紋識(shí)別時(shí)則使用密碼。

如果canEvaluatePolicy函數(shù)返回值為YES,表示設(shè)備支持指紋識(shí)別,那么可以調(diào)用evaluatePolicy:函數(shù)進(jìn)行指紋識(shí)別了。調(diào)用evaluatePolicy函數(shù)后會(huì)彈出一個(gè)alert。該alert可定制的只有兩處:loca-lizedReason參數(shù)指定提示框的提示信息,用來向用戶說明使用Touch ID的目的;LAContext的locali-zedFallbackTitle屬性用來設(shè)置密碼輸入框的形式,如果不設(shè)置的話,默認(rèn)提示是“Enter Password”。如果該屬性設(shè)置為空,該按鈕會(huì)被隱藏。

彈出Alert后有三種方式退出驗(yàn)證(alert會(huì)被dismiss,reply回調(diào)會(huì)被調(diào)用):用戶指紋通過驗(yàn)證;用戶點(diǎn)擊“Enter Password”按鈕,通過輸入密碼驗(yàn)證;用戶點(diǎn)擊“Cancel”按鈕,取消指紋驗(yàn)證。

在指紋驗(yàn)證過程中,如果用戶輸入了錯(cuò)誤的指紋,這種情況下,提示框控件不會(huì)被dismiss,其標(biāo)題會(huì)由項(xiàng)目名稱變?yōu)闉椤癟ry Again”,并有彈簧狀的動(dòng)畫效果過渡。如果連續(xù)三次驗(yàn)證錯(cuò)誤,則取消指紋驗(yàn)證。

3指紋識(shí)別的應(yīng)用實(shí)踐

前面已經(jīng)提到目前指紋識(shí)別在ios開發(fā)中的應(yīng)用主要是指紋識(shí)別登錄APP,下面將就其如何實(shí)現(xiàn)提出一種思路并詳細(xì)進(jìn)行闡述。

3.1指紋驗(yàn)證綜述

在使用各種APP的時(shí)候,用戶一方面希望能保證安全,避免信息被盜,保護(hù)自己的隱私,另一方面又希望用起來方便。有些APP每天被反復(fù)登錄使用,但用戶又不想反復(fù)的去輸入密碼,同時(shí)還要保證別人不能隨意看到自己的信息。這個(gè)時(shí)候就可以使用指紋驗(yàn)證功能來達(dá)到該目的。目前有越來越多的應(yīng)用使用了指紋驗(yàn)證功能來實(shí)現(xiàn)應(yīng)用從后臺(tái)到前臺(tái)的用戶驗(yàn)證,如qq,支付寶等。

要實(shí)現(xiàn)指紋驗(yàn)證功能,主要分兩個(gè)步驟,第一步驗(yàn)證并開啟設(shè)備的指紋識(shí)別功能;第二步從后臺(tái)到前臺(tái)的指紋驗(yàn)證。

3.2驗(yàn)證并開啟設(shè)備的指紋識(shí)別功能

3.2.1實(shí)現(xiàn)邏輯

在APP開發(fā)中實(shí)現(xiàn)開啟指紋驗(yàn)證功能,只是一種模擬效果,因?yàn)檎嬲_啟該功能只能在設(shè)備的系統(tǒng)設(shè)置中。如圖1所示,可以利用UISwitch控件模擬一種開啟指紋解鎖的效果,當(dāng)點(diǎn)擊開關(guān)處于開啟狀態(tài)時(shí),彈出如圖所示的指紋驗(yàn)證窗口,通過觸摸Home鍵通過指紋驗(yàn)證,表示APP支持指紋識(shí)別。保存開關(guān)控件的狀態(tài),同時(shí)設(shè)置一個(gè)Bool變量來保存是否支持指紋識(shí)別的狀態(tài)。如果switch處于開的狀態(tài),則將這兩個(gè)Bool變量都保存為YES,否則都為NO,表示不支持指紋識(shí)別,同時(shí)Switch處于關(guān)閉狀態(tài)。這個(gè)設(shè)置,一般在用戶登錄APP后,在APP的安全設(shè)置中。

3.2.2關(guān)鍵代碼

touch ID接口主要提供了兩個(gè)函數(shù)用于指紋識(shí)別,在開啟指紋識(shí)別時(shí)(點(diǎn)擊switch開關(guān)),會(huì)調(diào)用這兩個(gè)函數(shù)來實(shí)現(xiàn)指紋識(shí)別。首先要判斷設(shè)備是否支持指紋識(shí)別功能,下面列出主要代碼。

上述代碼中,如果驗(yàn)證成功,一般通過主線程來處理相關(guān)操作。如果驗(yàn)證失敗,則根據(jù)LAError.h文件中的錯(cuò)誤代碼來做相應(yīng)的處理,如LAErro-rAuthenticationFailed表示因?yàn)橛脩籼峁┝隋e(cuò)誤的指紋沒有驗(yàn)證成功。

3.3指紋驗(yàn)證

APP從后臺(tái)進(jìn)入前臺(tái),必須通過指紋驗(yàn)證才能重新進(jìn)人,這樣可以確保應(yīng)用在使用后沒有即時(shí)退出造成的風(fēng)險(xiǎn)。要達(dá)到這個(gè)目的,有兩個(gè)前提條件。第一是當(dāng)前APP是開啟了指紋識(shí)別;第二是APP已經(jīng)登錄了,并處于有效使用時(shí)間內(nèi)。如果開啟了指紋識(shí)別,同時(shí)APP處于登錄有效時(shí)間內(nèi),那么APP從后臺(tái)進(jìn)入前臺(tái)時(shí),則進(jìn)入如圖3所示界面,通過指紋識(shí)別來重新進(jìn)入APP。在圖3界面點(diǎn)擊指紋圖標(biāo),進(jìn)入圖4所示界面,然后通過指紋識(shí)別解鎖。指紋識(shí)別解鎖過程和前述的開啟指紋識(shí)別過程類似。也是分為兩步,第一步,設(shè)備是否支持指紋識(shí)別;第二步,如果支持指紋則通過指紋驗(yàn)證。代碼實(shí)現(xiàn)過程也基本相同,不同的是本次指紋驗(yàn)證成功后進(jìn)人APP進(jìn)入后臺(tái)前的相應(yīng)界面。

需要進(jìn)一步說明的是APP如何來判斷是否已經(jīng)登錄,并處于有效使用時(shí)間內(nèi)。這個(gè)問題可以通過token機(jī)制來處理。token值稱為登錄令牌,用來判斷當(dāng)前用戶的登錄狀態(tài),是服務(wù)器根據(jù)用戶的信息(賬號(hào)/密碼/身份認(rèn)證機(jī)制等)來生成的用于標(biāo)識(shí)用戶身份的值。當(dāng)用戶首次登錄成功之后,服務(wù)器端就會(huì)生成一個(gè)token值,并將其保存在服務(wù)器的數(shù)據(jù)庫中,同時(shí)將token值返回給客戶端??蛻舳丝梢詫⑵浔4嬖谏澈兄校鳛橐粋€(gè)公共參數(shù)??蛻舳嗽俅伟l(fā)送網(wǎng)絡(luò)請(qǐng)求(不一定是登錄請(qǐng)求)時(shí),就會(huì)將這個(gè)token值附帶到參數(shù)中發(fā)送給服務(wù)器,服務(wù)器接收到客戶端的請(qǐng)求之后,會(huì)取出token值與保存在數(shù)據(jù)庫中的token值做對(duì)比,如果兩個(gè)token值相同則說明用戶登錄過并且當(dāng)前用戶處于登錄狀態(tài)。如果沒有這個(gè)token值,表示沒有登錄成功。如果客戶端的token值和數(shù)據(jù)庫中保存的不一致,這說明原來的登錄信息已失效,也就是用戶的token值已超出有效時(shí)間。token不僅有有效時(shí)間,而且只要調(diào)用登錄接口并且登錄成功,都會(huì)在服務(wù)器生成新的token值,原來的token值就會(huì)失效。

4指紋識(shí)別驗(yàn)證方法改進(jìn)

前面提到的指紋驗(yàn)證過程是APP登錄后,通過token判斷APP是否在有效使用時(shí)間內(nèi),為其加的指紋鎖,實(shí)際上APP已經(jīng)登錄,所以并非真正通過指紋驗(yàn)證來登錄。也可以將指紋識(shí)別集成在APP中,實(shí)現(xiàn)指紋識(shí)別登錄APP功能。下面將介紹在APP中如何集成指紋識(shí)別實(shí)現(xiàn)指紋登錄。

4.1設(shè)計(jì)思路

iPhone指紋的存儲(chǔ)和驗(yàn)證都是通過Home鍵來完成的,APP開發(fā)者并不能獲取用戶的指紋和識(shí)別用戶的指紋。因此實(shí)現(xiàn)指紋登錄實(shí)際上還是針對(duì)特定設(shè)備,也就是在用帳號(hào)密碼登錄APP時(shí),先要將其與設(shè)備綁定。不管是開啟指紋識(shí)別還是指紋登錄都是針對(duì)當(dāng)前使用設(shè)備,在設(shè)計(jì)中考慮和設(shè)備進(jìn)行關(guān)聯(lián)。

4.1.1開啟指紋識(shí)別

開啟指紋識(shí)別的設(shè)計(jì)思路和前述方法一致,將switch開關(guān)前的標(biāo)簽改成開啟指紋登錄。然后在指紋識(shí)別驗(yàn)證通過后,將APP登錄帳號(hào)密碼和設(shè)備關(guān)聯(lián)綁定,過程如下。TouchID驗(yàn)證通過后,根據(jù)當(dāng)前已登錄的賬號(hào)和硬件設(shè)備Token,生成設(shè)備賬號(hào)和密碼。設(shè)備的帳號(hào)和密碼生成規(guī)則可以通過不同方式,因用戶不需要直接使用此處密碼,密碼可以盡可能的長和復(fù)雜。將設(shè)備帳號(hào)密碼保存在keych-ain,以便進(jìn)行指紋登錄時(shí)讀取。

設(shè)備帳號(hào)和密碼只是用于指紋登錄時(shí)讀取,與服務(wù)器數(shù)據(jù)庫保存的數(shù)據(jù)進(jìn)行比較,用戶不會(huì)直接接觸和使用該賬戶密碼,所以可以設(shè)置復(fù)雜的規(guī)則。比如說賬號(hào)可以用硬件token或者原賬號(hào)加密處理后的字符串,密碼用APP密碼進(jìn)行md5加密再和設(shè)備token進(jìn)行某種運(yùn)算等。

生成設(shè)備賬號(hào)、密碼后,將原賬號(hào)及設(shè)備賬號(hào)、密碼,加密后發(fā)送到服務(wù)端進(jìn)行綁定。最后服務(wù)器端驗(yàn)證原賬號(hào)及設(shè)備賬號(hào)有效后,返回相應(yīng)狀態(tài),綁定成功則完成整個(gè)TouchID(設(shè)備)綁定流程,APP開始指紋識(shí)別成功。

4.1.2指紋登錄

APP開啟了指紋識(shí)別登錄后,當(dāng)用戶賬號(hào)退出后,可以使用指紋登錄。在登錄按鈕下面會(huì)添加一個(gè)“指紋登錄”按鈕(如圖5所示)。若當(dāng)前設(shè)備未綁定,則不會(huì)出現(xiàn)“指紋登錄”按鈕。

單擊登錄界面的“指紋登錄”按鈕,調(diào)用TouchId接口檢測當(dāng)前設(shè)備是否支持TouchID,如果支持則發(fā)起TouchID驗(yàn)證(如圖6所示)。指紋驗(yàn)證通過,說明是機(jī)主本人。讀取APP存儲(chǔ)在keychain中的設(shè)備賬號(hào)、密碼,調(diào)用設(shè)備登錄接口,發(fā)起登錄請(qǐng)求。服務(wù)器端驗(yàn)證設(shè)備賬號(hào)、密碼后,返回相應(yīng)狀態(tài),通過驗(yàn)證則登錄成功,完成整個(gè)TouchID登錄流程。

4.2 keychain保存用戶名、密碼

指紋登錄其實(shí)最終還是通過賬號(hào)和密碼登錄來實(shí)現(xiàn),指紋通過驗(yàn)證后,APP在后臺(tái)調(diào)用登錄接口,自動(dòng)獲取keychain保存的賬號(hào)密碼登錄。下面將介紹keychain保存和獲取賬號(hào)和密碼的方法。

keychain是IOS為開發(fā)者提供的一種安全的保存私密信息(密碼,序列號(hào),證書等)的方式,每個(gè)IOS程序都有一個(gè)獨(dú)立的keychain存儲(chǔ)。keychain是通過加密存儲(chǔ)的,相對(duì)于NSUserDefaults、文件保存等方式,keychain保存更為安全。因此使用keychain來保存登錄賬號(hào)密碼是一種較好的方式。

在應(yīng)用里要使用keyChain,首先需要導(dǎo)人Security.framework,keychain的操作接口聲明在頭文件SecItem.h里??梢灾苯邮褂肧ecItem.h里方法操作keychain,也可以使用apple官方的兩個(gè)工具類:KeychainltemWrapper和SFHFKeychainUtils。下面將列出使用KeychainltemWrapper類實(shí)現(xiàn)的主要代碼。

5結(jié)束語

雖然touch ID只提供了指紋驗(yàn)證,不能獲取指紋和利用指紋數(shù)據(jù),但只要很好的利用其接口,將指紋識(shí)別技術(shù)集成到APP中,就可以實(shí)現(xiàn)類似于APP指紋登錄的效果。包括指紋支付,也可以采用類似的設(shè)計(jì)加以實(shí)現(xiàn)。這可以給用戶帶來便利,讓用戶有更好的體驗(yàn)。

猜你喜歡
指紋識(shí)別
基于單片機(jī)指紋識(shí)別電子寄存柜設(shè)計(jì)
指紋識(shí)別
指紋識(shí)別技術(shù)綜述
指紋掛鎖
基于大容量指紋識(shí)別的實(shí)時(shí)身份認(rèn)證系統(tǒng)
基于線陣CCD的指紋識(shí)別實(shí)驗(yàn)