日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

現(xiàn)在指紋登錄是一種很常見的登錄方式,特別是在金融類App中,使用指紋進行登錄、支付的特別多。指紋登錄本身是一種指紋身份認(rèn)證技術(shù),通過識別當(dāng)前用戶的指紋信息,進而確認(rèn)用戶在系統(tǒng)內(nèi)的注冊身份。

指紋認(rèn)證得以流行,我認(rèn)為有兩個關(guān)鍵點:

一是簡便,沒有了忘記密碼的煩惱,也免去了輸入密碼的繁瑣。

二是安全,能夠用在支付環(huán)節(jié),這就說明其可以達到金融級別的安全。

這篇文章就來簡單看下指紋認(rèn)證是如何做到以上兩點的,其中有哪些坑,有哪些坎。

指紋識別的原理

指紋認(rèn)證的歷史其實是很悠久的,在我國唐代指紋已經(jīng)廣泛應(yīng)用于文書契約,宋代手印已正式成為刑事訴訟的物證,這說明人們早就認(rèn)識到了個體指紋的獨特性,并且有了成熟的識別方法。對于計算機指紋識別,也是去尋找指紋的獨特性,這里僅做簡單的介紹:

有一個關(guān)鍵概念:指紋特征點,常見的特征點有指紋中的端點和分叉點,算法中通常記錄它們的位置和方向。程序通過光學(xué)傳感器采集指紋圖像,提取指紋特征點,用數(shù)學(xué)表達式描述它們,稱為指紋模版。注冊指紋時把指紋模版保存到數(shù)據(jù)庫或其它存儲中;驗證指紋時,先提取當(dāng)前指紋的特征點,再和已記錄的指紋模版進行比對,匹配度達到一定的閾值就算匹配成功。

指紋登錄是怎么跑起來的

 

對于指紋識別的兩個安全問題:

  • 指紋圖像泄漏問題:程序可以不保存指紋圖像;指紋模版進行某種加密處理后,可以做到無法還原出指紋圖像。當(dāng)然能做和做不做是兩碼事。指紋泄漏還有另一種情況,2014年德國黑客從照片中成功提取了德國國防部長的指紋,所以以后拍照時不要比劃剪刀手了,但是大部分人的賬戶應(yīng)該不值得冒著巨大的風(fēng)險、花費很大的力氣這樣搞,所以平常也不用太擔(dān)心,注意下就行了。
  • 假指紋識別問題:萬一指紋被別人采集到了,或者制作成了指模,是不是就可以暢通無阻了呢?對應(yīng)這類問題,有活體指紋檢測技術(shù)。硬件上采用電容傳感器采集溫度、心率等數(shù)據(jù),加上光學(xué)傳感器的指紋紋路數(shù)據(jù),進行綜合判斷;軟件上的實現(xiàn)則一般通過機器學(xué)習(xí)的方式進行識別。但是兩者對假指紋的識別率可能都不太理想,可見的廠商宣傳也不多,其中原因可能是因為仿生技術(shù)太牛逼了,這里也沒找到太多有價值的信息。實際應(yīng)用在金融領(lǐng)域時,金融服務(wù)商必然采取了更多的手段來降低安全風(fēng)險,而不是單純地看指紋認(rèn)證結(jié)果,畢竟出了問題生意可能就做不下去了,所以大規(guī)模應(yīng)用時的安全風(fēng)險應(yīng)該是有所控制的。

門禁中的指紋認(rèn)證

在移動設(shè)備廣泛采用指紋認(rèn)證之前,這一技術(shù)已經(jīng)得到了大范圍的應(yīng)用,很多人應(yīng)該都接觸過刷指紋的門禁或者考勤機。從老板的角度看,刷指紋比刷卡更能有效地驗證員工的身份,而且成本也不高。從員工的角度看,不用多帶一張卡,更方便高效。從安全的角度考慮,指紋識別技術(shù)比較成熟,只要不泄漏,一般也不會出問題,設(shè)備做得好安全性還更高一些;出問題也僅在門禁這個環(huán)節(jié),即使沒有指紋認(rèn)證,也有別的方法開門,復(fù)制門禁卡或者鑰匙可能更方便;對于更重要的保護對象,應(yīng)該還有更安全的保護措施。

在門禁中使用指紋一般是先注冊,將用戶和指紋進行綁定,提取出的指紋特征數(shù)據(jù)就保存在本地,具體注冊過程如下圖所示:

指紋登錄是怎么跑起來的

 

當(dāng)用戶需要開門時,在指紋機上刷指紋,指紋機會提取當(dāng)前指紋的特征值,然后和本地存儲的指紋數(shù)據(jù)進行一一比對,如果匹配度達到一定的閾值,則指紋識別成功,向門禁下達開門指令,具體認(rèn)證過程如下圖所示:

指紋登錄是怎么跑起來的

 

APP中的指紋認(rèn)證

這里說的APP指的是移動設(shè)備系統(tǒng)中的第三方應(yīng)用,移動設(shè)備系統(tǒng)特指當(dāng)前比較流行的Android和IOS等手機操作系統(tǒng)。

APP中的指紋認(rèn)證目前常見于登錄或者支付功能,因為涉及到APP自身的用戶和業(yè)務(wù)數(shù)據(jù)操作,必然需要和APP后端服務(wù)進行交互,基于安全考慮,客戶端和服務(wù)端之間也需要進行身份認(rèn)證,所以APP中的指紋認(rèn)證被分成了兩部分:手機本地認(rèn)證和遠程認(rèn)證。

本機認(rèn)證

手機系統(tǒng)本身的指紋認(rèn)證和門禁系統(tǒng)中的指紋認(rèn)證并無本質(zhì)區(qū)別:用戶首先錄入指紋,基于安全考慮,指紋的特征數(shù)據(jù)也是保存在手機本地;使用指紋進入系統(tǒng)時也是先提取當(dāng)前的特征值,然后和本地的指紋庫進行比對,匹配上了就能進手機入系統(tǒng)。

和門禁系統(tǒng)不同的一點是,手機中用戶需要有一個能進入系統(tǒng)的密碼,可以是字符密碼,也可以是手勢密碼,當(dāng)用戶的指紋無法使用時(可能是指紋模塊故障,也可能是用戶指紋問題),仍然能有其它方式進入手機;門禁系統(tǒng)中用戶則可以只有指紋認(rèn)證這一種方式,進不了門時,還可以找管理員。

當(dāng)然只使用手機本地認(rèn)證也是有意義的,每次APP從后臺切換到前臺時都需要用戶刷指紋,以驗證當(dāng)前操作用戶的身份,很多的銀行APP就是這樣做的(其實我并未確認(rèn)這些APP此時有沒有去后臺再次驗證,只是認(rèn)為這是一種有意義的認(rèn)證方式)。

本機認(rèn)證的安全性手機操作系統(tǒng)廠商們已經(jīng)做得很好了,指紋的注冊和識別都在安全區(qū)域內(nèi)進行,指紋識別的結(jié)果可以加密的方式返回給APP,這塊直接應(yīng)用就可以了。

遠程認(rèn)證

遠程認(rèn)證就是客戶端和服務(wù)端之間的認(rèn)證,完整的方式就是雙向認(rèn)證:客戶端要驗證服務(wù)端的身份,以免被套取信息;服務(wù)端要驗證客戶端的身份,以免用戶身份被冒充。

  • 客戶端驗證服務(wù)端的身份:現(xiàn)在都使用https了,https證書就是服務(wù)端身份的保證,至少可以保證訪問到地址就是你想訪問的域名地址,高級點的證書還能標(biāo)識證書所有者的身份;使用https時數(shù)據(jù)也是加密傳輸?shù)模砸话銘?yīng)用場景是沒問題的。但是也發(fā)生過濫發(fā)證書的情況,所以如果需要更高的安全級別,服務(wù)端可以再生成一對非對稱密鑰。公鑰發(fā)給APP,私鑰自己保存好,每次認(rèn)證時,客戶端先采用服務(wù)端的公鑰對數(shù)據(jù)進行加密,然后再發(fā)送出去,服務(wù)端再采用自己的私鑰進行解密,如此假冒的服務(wù)端就不能解密數(shù)據(jù),就什么也得不到;服務(wù)端返回給客戶端的數(shù)據(jù)帶上私鑰對數(shù)據(jù)的簽名,客戶端可以驗證簽名,驗證通過則代表是服務(wù)端返回的,就可以應(yīng)用這些數(shù)據(jù)。
  • 服務(wù)端驗證客戶端的身份:也是通過非對稱密鑰的方式,客戶端生成一對非對稱密鑰,私鑰自己保存好,公鑰發(fā)送到服務(wù)端。指紋認(rèn)證通過后客戶端使用私鑰對請求參數(shù)進行簽名,然后再發(fā)送出去,服務(wù)端使用客戶端公鑰對接收到的數(shù)據(jù)簽名進行驗證,如果驗證通過,則說明數(shù)據(jù)沒有被篡改,可以處理客戶端發(fā)起的業(yè)務(wù)請求。

開啟指紋認(rèn)證

這里以登錄為例,來看看如何使用指紋認(rèn)證來做APP登錄。還是先要注冊指紋,具體過程如下圖所示:

指紋登錄是怎么跑起來的

 

  • 5開啟指紋:開啟指紋登錄的時機,一般都是先用別的方式登錄了APP,然后再開啟指紋登錄。但是也有一些例外,用戶使用APP時直接使用第三方登錄,第三方提供了指紋登錄的方式,比如使用Apple Id登錄。上邊圖中是先用賬號密碼登錄了系統(tǒng),然后才開啟的指紋認(rèn)證。
  • 12對比系統(tǒng)存在的指紋:指紋數(shù)據(jù)始終保存在手機本地,不會上傳到遠程。目前市面上的手機都是這樣做的,Android和iOS提供的指紋認(rèn)證API都只返回true或者false的認(rèn)證結(jié)果,這樣可以避免云服務(wù)被攻破時導(dǎo)致大規(guī)模泄漏的嚴(yán)重后果,最大限度的保護用戶生物特征數(shù)據(jù)的安全。
  • 13指紋驗證成功:本地指紋認(rèn)證通過就代表用戶身份驗證通過,不管是哪個手指。早期的操作系統(tǒng)版本中可能能夠獲得是使用的哪個指紋,但是現(xiàn)在一般都不開放了,只能得知指紋集是否發(fā)生了變化(刪除或者添加了指紋),此時App可以強制用戶退出,再使用其它安全的方式登錄,然后再讓用戶決定是否開啟指紋,支付寶就是這樣做的。
  • 重放攻擊問題:步驟16中的請求可能被人截獲,雖然無法解密,但是可以多次發(fā)向服務(wù)端,造成重放攻擊的問題,可以引入一個挑戰(zhàn)碼來解決這個問題。步驟8初始化指紋注冊請求時服務(wù)端可以生成這個挑戰(zhàn)碼,然后在步驟16中攜帶這個挑戰(zhàn)碼,然后在服務(wù)端進行驗證。

使用指紋認(rèn)證

下面再來看下使用指紋登錄的過程:

指紋登錄是怎么跑起來的

 

  • 登錄時的本機指紋認(rèn)證和注冊時的本機指紋認(rèn)證方法相同,只不過這次是在用戶選擇指紋登錄時彈出指紋刷取頁面。
  • 10簽名登錄數(shù)據(jù):主要是用客戶端私鑰簽名設(shè)備的唯一標(biāo)識和挑戰(zhàn)碼,在開啟指紋認(rèn)證時指定了必須采用指紋授權(quán)的方式才能使用私鑰,這樣能確保簽名是由認(rèn)證過的用戶發(fā)起的(準(zhǔn)確的說是手機上登錄過指紋的所有用戶,在開啟指紋認(rèn)證時已經(jīng)提示用戶所有錄入的指紋都將可以用來登錄,同時如果指紋發(fā)生變化,會讓用戶重新確認(rèn),所以可以認(rèn)為他們都是有權(quán)限的用戶);服務(wù)端如果驗證簽名通過,則代表數(shù)據(jù)在傳輸過程中沒有被篡改,登錄是在可信的客戶端發(fā)起的;前后端的認(rèn)證結(jié)果結(jié)合起來就代表登錄是由認(rèn)證過的用戶發(fā)起的。
  • 在開啟指紋階段,已經(jīng)將設(shè)備唯一標(biāo)識、客戶端公鑰綁定到了用戶記錄,所以簽名驗證通過后,就可以生成當(dāng)前用戶的登錄Token,并在后續(xù)的客戶端與服務(wù)端的一般交互中使用這個Token。在關(guān)鍵的交互,比如支付中,還是要使用指紋認(rèn)證這種安全性更高的方式。

以上就是APP中的指紋認(rèn)證原理,指紋登錄和指紋登錄的過程差不多,只不過支付需要更高的安全等級,指紋認(rèn)證可以滿足這個安全要求。

客戶端身份認(rèn)證的問題

在上文APP的指紋注冊階段,客戶端生成了一對非對稱密鑰,用于后續(xù)服務(wù)端認(rèn)證客戶端的身份,這個密鑰在當(dāng)前的手機中已經(jīng)有了成熟的安全存儲和使用方法,這就是TEE(可信執(zhí)行環(huán)境):

客戶端私鑰被TEE安全密鑰加密存儲在手機中,目前沒有破解之法;同時還可以指定只有通過了本機指紋認(rèn)證才能使用私鑰對數(shù)據(jù)進行簽名和加密;再者如果手機中加入了新的指紋或者刪除了指紋,存儲的私鑰就會失效;所以密鑰的存儲和使用是可以保證安全的。

但是還存在其它的安全隱患:

1、服務(wù)端無法確認(rèn)上傳的客戶端公鑰能否代表客戶端身份,任何程序都可以生成一對非對稱密鑰,然后對數(shù)據(jù)進行簽名,再把公鑰一起發(fā)到服務(wù)端,服務(wù)端僅能驗證簽名的正確性,但是無法驗證公鑰的來源,也就無法驗證客戶端的身份。某些解決方案中會在客戶端集成一個認(rèn)證器SDK,這個SDK生成的認(rèn)證信息中會攜帶一些特殊識別信息,而且每個應(yīng)用每個機器不同,很難破解,后端可以據(jù)此判斷是在集成了認(rèn)證器SDK的應(yīng)用中發(fā)起的。但是也有一些難題,識別信息的生成方法可能會被破解,還有怎么確認(rèn)是用戶發(fā)起的還是惡意程序發(fā)起的?

2、密鑰生成過程中可能被黑客替換,存儲和使用再怎么安全也無濟于事了。這個在微信的技術(shù)資料中提到過,Android的密鑰生成有被攔截的可能,不確定當(dāng)前是不是解決了。這也說明底層框架和操作系統(tǒng)也可能是不可信的,在某些場景下必須慎重考慮。

指紋登錄是怎么跑起來的

 

3、以上兩個問題在Root或者越獄之后的手機中更嚴(yán)重,APP、SDK和操作系統(tǒng)都無法信任了,所以很多金融類APP不支持在Root或者越獄的手機上使用指紋認(rèn)證,不過道高一尺魔高一丈,還是有一些方法來欺騙APP,這也不乏部分用戶的支持(自作X啊)。

這個問題有好的辦法解決嗎?有,設(shè)備出廠前就把私鑰保存到TEE中。

Android中的密鑰安全

大家應(yīng)該知道Android系統(tǒng)是開源的,很多手機廠商都在生產(chǎn)Android手機,市面上有多個廠商在競爭,誰也不服誰,所以要想推廣上文提到的出廠前內(nèi)置私鑰的方法,就必須統(tǒng)一標(biāo)準(zhǔn)。在國內(nèi)騰訊和阿里具備這樣的影響力,騰訊搞了SOTER,阿里搞了IFAA,兩者都要求手機廠商在產(chǎn)線上生成一對非對稱密鑰,私鑰寫入手機TEE,即使拿到了手機當(dāng)前也沒有破解之法,私鑰也就不會被泄漏,除非手機廠商搞事情,不過如果手機廠商真的這樣做了,就離倒閉不遠了;公鑰上傳到認(rèn)證服務(wù)器,認(rèn)證的時候用于驗證手機APP上傳的數(shù)據(jù)簽名,驗證通過了就能代表是在對應(yīng)的手機發(fā)起的認(rèn)證。

同時為了推廣這個技術(shù),這種協(xié)議還支持別的廠商APP接入進來。但是這樣就很容易泄漏APP的商業(yè)隱私 ,比如SOTER每次支付都要去騰訊的認(rèn)證服務(wù)器認(rèn)證一下,據(jù)此就可以推斷你的業(yè)務(wù)行為和交易量,所以SOTER又搞了應(yīng)用密鑰和業(yè)務(wù)密鑰,來盡量消除這個商業(yè)風(fēng)險;同時針對Android密鑰生成可能被攔截的問題,讓手機廠商裝個補丁包就解決了,比如替換掉不安全的中間環(huán)節(jié)。下面來看下應(yīng)用密鑰和業(yè)務(wù)密鑰的產(chǎn)生過程。

應(yīng)用密鑰產(chǎn)生流程:應(yīng)用密鑰在應(yīng)用首次安裝的時候生成,應(yīng)用密鑰的私鑰保存在手機端,并使用出廠前內(nèi)置的私鑰簽名,然后發(fā)到騰訊的認(rèn)證服務(wù)器驗證簽名,此時應(yīng)用密鑰的公鑰會保存到應(yīng)用的后臺。

指紋登錄是怎么跑起來的

 

業(yè)務(wù)密鑰產(chǎn)生流程:在使用登錄或者支付的指紋認(rèn)證注冊的時候,應(yīng)用會再生成一個業(yè)務(wù)密鑰,業(yè)務(wù)密鑰的私鑰還是保存在手機端,業(yè)務(wù)密鑰使用手機端的應(yīng)用密鑰進行簽名,驗證也只需要在應(yīng)用的后臺驗證就可以了,此時和騰訊的認(rèn)證服務(wù)器就沒有關(guān)系了。

指紋登錄是怎么跑起來的

 

這樣騰訊就不知道你的實際業(yè)務(wù)運營情況了,比如每天在線支付多少筆,但是APP安裝量還是免不了會暴漏出來,話說APP都要上應(yīng)用市場的,這個信息其實早就公開了。

關(guān)于SOTER詳細(xì)介紹,可以看官方文檔:
https://github.com/Tencent/soter/wiki

IFAA的應(yīng)用過程和SOTER差不多,這里就不再贅述了。另外國外還有一個FIDO聯(lián)盟,也是解決這個問題的,國內(nèi)是聯(lián)想集團的子公司國民認(rèn)證在推廣這個,技術(shù)原理也都差不多。

iOS中的密鑰安全

iphone的操作系統(tǒng)和硬件都是自己控制的,所以對于安全控制它可以做的很好。

對于本機指紋認(rèn)證,蘋果也提供了Touch ID的API,可以在前端調(diào)用指紋認(rèn)證,但是如果要發(fā)送到服務(wù)端去驗證,基于各種安全考慮,就還是需要一個客戶端密鑰,這個客戶端密鑰有沒有安全的產(chǎn)生方式呢?我沒有找到官方的文檔說明,很多基于這個方案的第三方應(yīng)用可能都是自己生成的吧,盡量做到安全。當(dāng)然這個也是猜測。

但是微信或者支付寶這種應(yīng)用怎么能忍呢?SOTER曾經(jīng)說要支持iOS,最后也是不了了之;IFAA宣傳的是兼容支持iPhone 5s 以上所有 iOS 手機,不過它不開源。可能蘋果最終還是不想把這塊放開,同時基于蘋果的強勢地位,最有可能是蘋果專門給這種應(yīng)用開放了特定的API,不許外傳。

如果是做指紋登錄,其實可以直接使用蘋果開放的Apple ID登錄協(xié)議,支持指紋和刷臉認(rèn)證,會給應(yīng)用返回認(rèn)證Token和授權(quán)碼,應(yīng)用后臺拿著這兩個再去找蘋果驗證。從這個邏輯上看,蘋果的后臺必然能安全的確認(rèn)發(fā)起請求的客戶端身份,所以估計和Android的原理差不多,只不過前后端的每次認(rèn)證都得蘋果來驗證。

Web中的指紋認(rèn)證

上面提到過一個FIDO聯(lián)盟,它和W3C搞了一個WebAuthn標(biāo)準(zhǔn),它的目的是標(biāo)準(zhǔn)化用戶對基于 Web 的應(yīng)用程序和服務(wù)的公鑰認(rèn)證的接口,說人話就是定了一個Web程序中使用公鑰認(rèn)證的標(biāo)準(zhǔn),所謂的公鑰認(rèn)證就是上文提到的客戶端密鑰認(rèn)證技術(shù)。這個國內(nèi)產(chǎn)品好像使用的不多見,不過這件事挺牛的。它可以在windows、linux、mac OS、Android、iOS、智能手表等各種設(shè)備中使用指紋識別、面部識別、虹膜識別、聲音識別、實體密鑰(USB連接、藍牙連接、NFC連接)等多種方式進行認(rèn)證,盡可能的擺脫對密碼的依賴。

這個技術(shù)標(biāo)準(zhǔn)和APP中的公鑰認(rèn)證技術(shù)是一脈相承的,主要區(qū)別在于APP換成了瀏覽器,認(rèn)證模塊除了操作系統(tǒng)本身支持,還增加了對專用硬件的支持。有興趣的可以去了解下。


以上就是本文的主要內(nèi)容,因能力有限,可能存在部分錯漏,歡迎指正。

分享到:
標(biāo)簽:指紋 登錄
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定