蔣林軒,余 杰,劉曉東,吳慶波,孔金珠
(1.國防科技大學(xué) 計(jì)算機(jī)學(xué)院,湖南 長沙 410073;2.天津麒麟信息技術(shù)有限公司,天津 300300)
生物特征識(shí)別是指利用人的部分身體部位所具備的生理學(xué)特性進(jìn)行認(rèn)證的一種技術(shù)。隨著近些年來移動(dòng)終端的普及、用于生物特征采集與識(shí)別的傳感器越來越小,生物特征識(shí)別技術(shù)已經(jīng)普及到人們的日常生活中。
生物特征識(shí)別主要分為特征采集和特征認(rèn)證。特征采集是利用生物統(tǒng)計(jì)學(xué)原理和計(jì)算機(jī)算法,將傳感器從人體特征部位收集到的光學(xué)、聲學(xué)、力學(xué)等信息進(jìn)行特征提取并編碼,轉(zhuǎn)換為唯一的數(shù)字編碼,并將這些編碼通過各種方式合成一個(gè)對應(yīng)個(gè)體身體部位的特征模板。特征認(rèn)證是將當(dāng)前采集到的生物特征碼與數(shù)據(jù)庫中的指定歷史特征模板比對,如果比對匹配,則代表認(rèn)證通過,比對不匹配則認(rèn)證不通過。
在主流的操作系統(tǒng)中,幾乎都支持了生物特征識(shí)別。大多數(shù)操作系統(tǒng)都是以服務(wù)的形式提供生物特征的統(tǒng)一采集和比對識(shí)別,少數(shù)操作系統(tǒng)只提供算法庫和設(shè)備驅(qū)動(dòng),不提供統(tǒng)一的服務(wù)。
對于用戶來說,生物特征識(shí)別是一個(gè)新的、快速、高效以及安全的認(rèn)證方式,因此在操作系統(tǒng)層面使用生物特征識(shí)別認(rèn)證是很有必要的。本節(jié)將描述當(dāng)前流行的通用操作系統(tǒng)上的生物特征識(shí)別框架,并對比其優(yōu)缺點(diǎn)。
Windows中的生物特征識(shí)別服務(wù)各組件間集成度比較高,總的來說可以分為三層[1]:認(rèn)證服務(wù)層、核心層和驅(qū)動(dòng)層。
認(rèn)證服務(wù)層定義應(yīng)用接口,使用核心層各個(gè)模塊的功能為上層的前端應(yīng)用提供統(tǒng)一的接口。核心層為服務(wù)層提供功能性接口,為驅(qū)動(dòng)層定義驅(qū)動(dòng)接口并提供存儲(chǔ)服務(wù)。驅(qū)動(dòng)層負(fù)責(zé)實(shí)現(xiàn)核心層的功能接口,并操控硬件完成接口功能。
Windows的生物特征識(shí)別服務(wù)結(jié)構(gòu)如圖1所示,認(rèn)證服務(wù)層由生物特征識(shí)別框架應(yīng)用接口和Windows生物特征認(rèn)證服務(wù)組成;核心層由生物特征認(rèn)證服務(wù)提供者及其三個(gè)模塊、生物特征識(shí)別驅(qū)動(dòng)接口組成;驅(qū)動(dòng)層由各種傳感器組成[2]。各組成部分完成如下功能。
圖1 Windows生物特征識(shí)別服務(wù)結(jié)構(gòu)
生物特征識(shí)別框架應(yīng)用接口(Windows Biometric Framework API):Windows生物特征識(shí)別框架提供的面向應(yīng)用的統(tǒng)一管理接口。
Windows生物特征認(rèn)證服務(wù)(Windows Biometric Service):一個(gè)特權(quán)服務(wù),通過使用兼容Windows生物識(shí)別驅(qū)動(dòng)程序接口(WBDI)的驅(qū)動(dòng)程序來管理所有生物識(shí)別設(shè)備。
生物特征認(rèn)證服務(wù)提供者(Windows Biometric Service Provider,WBSP):Windows生物識(shí)別服務(wù)的一個(gè)組件,用于管理特定類別的生物識(shí)別技術(shù),如指紋識(shí)別技術(shù)。WBSP內(nèi)置在Windows生物識(shí)別服務(wù)中,并且它們不是插件,不支持第三方BSP。
傳感器模塊(Sensor Adapter):一個(gè)生物特征識(shí)別的插件式組件,提供了配置傳感器、捕獲樣本,并且控制生物特征數(shù)據(jù)輸入到引擎模塊。
引擎模塊(Engine Adapter):一個(gè)生物特征識(shí)別的插件式組件,通過規(guī)范化數(shù)據(jù)、提取數(shù)據(jù)特征、匹配樣本數(shù)據(jù)與現(xiàn)有模板等操作來處理樣本。
存儲(chǔ)模塊(Storage Adapter):一個(gè)生物特征識(shí)別的插件式組件,用于存儲(chǔ)、管理和檢索模板。
模板數(shù)據(jù)庫(Template Database):一個(gè)小型的數(shù)據(jù)庫,存放生物特征的模板數(shù)據(jù)。
生物特征識(shí)別驅(qū)動(dòng)接口(Windows Biometric Driver Interface):一套用于驅(qū)動(dòng)和管理指紋傳感器的標(biāo)準(zhǔn)抽象接口。
設(shè)備驅(qū)動(dòng)(Device Driver):管理特定指紋傳感器,對生物特征識(shí)別驅(qū)動(dòng)接口的一種特定實(shí)現(xiàn)。
Android的生物特征識(shí)別服務(wù)分為兩層:后端服務(wù)層和生物特征識(shí)別的可信執(zhí)行環(huán)境(Trusted Execution Environment,TEE)[3]。
Android的特征識(shí)別服務(wù)結(jié)構(gòu)如圖2所示,后端服務(wù)層定義應(yīng)用程序調(diào)用的特征識(shí)別接口,提供訪問TEE中的特征數(shù)據(jù)的Keystore服務(wù)和API,并通過HAL層使用傳感器驅(qū)動(dòng)。生物特征識(shí)別的TEE由硬件供應(yīng)商提供的傳感器驅(qū)動(dòng)庫和Keymaster硬件加密組件組成。各個(gè)組成部分完成如下功能[4]。
圖2 Android生物特征識(shí)別結(jié)構(gòu)
生物識(shí)別接口:Android生物特征識(shí)別框架提供面向應(yīng)用的統(tǒng)一管理接口。Android 9及更高的版本可以直接調(diào)用,而Android 8.0及更低的版本需要中間兼容庫來調(diào)用特征識(shí)別接口。
生物特征認(rèn)證服務(wù):系統(tǒng)中的一個(gè)單例進(jìn)程,它負(fù)責(zé)與進(jìn)行生物特征認(rèn)證的守護(hù)進(jìn)程通信。
生物特征認(rèn)證守護(hù)進(jìn)程:一個(gè)binder接口的實(shí)例,封裝了生物特征HAL廠商給定的傳感器驅(qū)動(dòng)庫。
Keystore API和Keymaster:為可信執(zhí)行環(huán)境(TEE)中的安全密鑰存儲(chǔ)提供硬件加密支持的組件。
生物識(shí)別HAL:硬件供應(yīng)商對生物特征HAL層的實(shí)現(xiàn)。其中HAL包含運(yùn)行在TEE中的傳感器驅(qū)動(dòng)庫。特定供應(yīng)商的驅(qū)動(dòng)庫只和指定的硬件通信。
Linux下的生物特征識(shí)別目前只有指紋識(shí)別這一種,并且不是以服務(wù)的形式存在,而是以指紋識(shí)別庫的形式存在。
Linux的指紋識(shí)別是由libfprint[5]庫來完成的。libfprint庫提供了部分指紋掃描儀的驅(qū)動(dòng),并提供應(yīng)用指紋識(shí)別接口完成指紋的采樣和比對。
libfprint庫主要分為三個(gè)部分[6]:指紋識(shí)別接口、指紋識(shí)別算法庫和圖像傳感器驅(qū)動(dòng),如圖3所示。
圖3 Linux生物特征識(shí)別結(jié)構(gòu)
指紋識(shí)別接口提供應(yīng)用程序使用指紋識(shí)別硬件的應(yīng)用級接口。指紋識(shí)別算法庫提供指紋識(shí)別算法,從圖像傳感器拿到指紋硬件采樣的指紋圖片,通過算法轉(zhuǎn)換為指紋特征值和指紋模板[5]。圖像傳感器驅(qū)動(dòng)用于控制硬件采集指紋圖像。
libfprint只是一個(gè)收集指紋圖像、生成指紋模板、比對指紋是否匹配的運(yùn)行時(shí)庫,對于指紋的存儲(chǔ)由應(yīng)用來定義。在目前的Linux系統(tǒng)上,默認(rèn)的指紋數(shù)據(jù)都是明文存儲(chǔ)在用戶的home目錄中,無特殊權(quán)限,用戶執(zhí)行的任意程序都能隨意訪問、修改指紋數(shù)據(jù)。并且,由于libfprint不提供統(tǒng)一存儲(chǔ)功能,各個(gè)應(yīng)用程序可以自己獲取指紋信息,自己定義存儲(chǔ),導(dǎo)致應(yīng)用間的指紋數(shù)據(jù)無法通用,使得用戶需要在每一個(gè)使用指紋識(shí)別的應(yīng)用中都錄入自己的指紋,這種交互邏輯重復(fù)低效,用戶體驗(yàn)非常差。
Windows、Android、Linux三個(gè)平臺(tái)上,生物特征識(shí)別的方案各不相同。下面將從支持場景、認(rèn)證架構(gòu)、假面方式、存儲(chǔ)位置、存儲(chǔ)方式、安全性和支持的特征類型7個(gè)方面對比分析各個(gè)方案的優(yōu)缺點(diǎn)。對比項(xiàng)及結(jié)果參見表1。
在支持的場景上,三個(gè)平臺(tái)的方案都支持系統(tǒng)的登錄、鎖屏以及應(yīng)用程序使用生物特征完成功能。
在認(rèn)證架構(gòu)上,Windows平臺(tái)和Android平臺(tái)都是后端服務(wù)的形式,為上層應(yīng)用提供生物特征服務(wù)。而Linux平臺(tái)上是以動(dòng)態(tài)鏈接庫的形式存在,需要應(yīng)用程序在使用功能的時(shí)候重新探測并初始化設(shè)備,也需要應(yīng)用程序自己釋放設(shè)備資源。
在加密方式上,Windows平臺(tái)使用軟件加密算法來加密特征,Android平臺(tái)使用硬件芯片中的Key加密,Linux平臺(tái)下則直接將特征明文存儲(chǔ)在系統(tǒng)中。
表1 各平臺(tái)生物特征識(shí)別方案對比
在特征存儲(chǔ)的位置上,Windwos平臺(tái)將數(shù)據(jù)存儲(chǔ)在系統(tǒng)數(shù)據(jù)庫中,Android平臺(tái)將數(shù)據(jù)存儲(chǔ)在可行執(zhí)行環(huán)境(TEE)中,Linux平臺(tái)下則是直接存儲(chǔ)在用戶目錄下的文本文件中。
在存儲(chǔ)方式上,Windwos平臺(tái)和Android平臺(tái)都是統(tǒng)一管理統(tǒng)一存儲(chǔ),所有應(yīng)用共用特征。而Linux平臺(tái)下,特征是由應(yīng)用各自存儲(chǔ),如需共用特征則需要應(yīng)用自己協(xié)調(diào)。
在安全性上,Windwos平臺(tái)由于使用加密的系統(tǒng)數(shù)據(jù)庫,因此安全性高;Android平臺(tái)由于使用硬件芯片中的Key加密特征,并存儲(chǔ)在TEE中,因此安全性非常高;Linux平臺(tái)由于特征未加密,并隨意存儲(chǔ)在用戶目錄下,導(dǎo)致應(yīng)用可以隨意讀取修改特征信息,因此安全性低。
在支持的特征類型上,Windwos平臺(tái)支持指紋、人臉識(shí)別,并且可以擴(kuò)展虹膜、指靜脈、聲紋等不同的生物特征類型的識(shí)別;Android平臺(tái)支持指紋、人臉、虹膜識(shí)別,并且可以擴(kuò)展指靜脈、聲紋等生物特征類型的識(shí)別;Linux平臺(tái)只支持指紋識(shí)別,并且不能擴(kuò)展其他生物特征類型。
與Windows、Android相對比,目前Linux上的生物特征識(shí)別庫存在以下不足:
(1)無服務(wù),無守護(hù)進(jìn)程:libfprint是一個(gè)運(yùn)行時(shí)庫,無法提供持續(xù)性服務(wù)。并且在多個(gè)應(yīng)用同時(shí)使用libfprint來操作同一個(gè)應(yīng)用的時(shí)候,會(huì)出現(xiàn)硬件資源的爭用,而libfprint不提供鎖機(jī)制,從而導(dǎo)致libfprint庫和應(yīng)用程序的崩潰。
(2)安全性低:默認(rèn)的指紋數(shù)據(jù)以明文的形式存放在用戶home目錄中,任意程序都可隨意訪問、修改指紋數(shù)據(jù),導(dǎo)致認(rèn)證極不安全。
(3)無統(tǒng)一存儲(chǔ):libfprint不提供統(tǒng)一存儲(chǔ)服務(wù),各個(gè)應(yīng)用只能自己存儲(chǔ)和使用自己錄入的特征,導(dǎo)致用戶在使用應(yīng)用的時(shí)候需要重復(fù)錄入自己的特征。
(4)支持的生物特征類型少:由于libfprint庫方案只適用于指紋,因此Linux上沒有統(tǒng)一的指靜脈、虹膜、聲紋等認(rèn)證服務(wù)。
由于Linux平臺(tái)下生物特征識(shí)別方案只有l(wèi)ibfprint庫這一種,這些不足與缺點(diǎn)暫無其他解決方法,因此本文為Linux上生物特征識(shí)別設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)新的底層服務(wù):生物特征識(shí)別框架服務(wù)(Biometric Framework Service,BFS),用于提供統(tǒng)一的生物特征識(shí)別認(rèn)證,進(jìn)行統(tǒng)一的加密存儲(chǔ)。
本文設(shè)計(jì)并實(shí)現(xiàn)的生物特征識(shí)別框架服務(wù)(BFS)支持多種生物特征識(shí)別。BFS為應(yīng)用層定義了生物特征識(shí)別的應(yīng)用接口,為設(shè)備提供商定義了生物特征識(shí)別的驅(qū)動(dòng)接口,提供統(tǒng)一的生物特征服務(wù),提供統(tǒng)一的存儲(chǔ)管理,提供統(tǒng)一的驅(qū)動(dòng)配置管理。
BFS分為三層:服務(wù)層、核心層和驅(qū)動(dòng)層(如圖4所示)。服務(wù)層定義了生物特征識(shí)別的應(yīng)用接口,提供了驅(qū)動(dòng)管理、設(shè)備管理、事件管理、狀態(tài)反饋機(jī)制。核心層定義了生物特征識(shí)別的驅(qū)動(dòng)接口,定義了設(shè)備驅(qū)動(dòng)的實(shí)體,提供了生物特征模板的統(tǒng)一存儲(chǔ)與加密方式。驅(qū)動(dòng)層主要由設(shè)備提供商完成驅(qū)動(dòng)編寫,用于實(shí)現(xiàn)對生物特征識(shí)別驅(qū)動(dòng)接口,操作硬件設(shè)備。
圖4 生物特征識(shí)別框架服務(wù)(BFS)結(jié)構(gòu)
由于生物特征識(shí)別的交互行為具有使用頻率低、交互時(shí)間長、交互方式多樣化的特點(diǎn),BFS的服務(wù)層使用事件驅(qū)動(dòng)的方式為上層應(yīng)用提供服務(wù),并提供狀態(tài)和交互提示變更的通知。
BFS服務(wù)層是一個(gè)基于事件驅(qū)動(dòng)的服務(wù),使用DBus總線為上層應(yīng)用提供生物特征識(shí)別的應(yīng)用接口。生物特征識(shí)別應(yīng)用接口是事件接口,每當(dāng)應(yīng)用程序調(diào)用應(yīng)用接口時(shí),都會(huì)發(fā)出一個(gè)事件,BFS服務(wù)收到事件后開始事件處理。在處理過程中,服務(wù)層會(huì)檢測設(shè)備狀態(tài)和交互狀態(tài)的變更,并通過DBus信號(hào)通知應(yīng)用程序。
服務(wù)層的處理分為兩個(gè)階段:初始化階段、事件處理和消息反饋階段。
初始化階段主要完成驅(qū)動(dòng)的加載與初始化,設(shè)備預(yù)初始化,已連接設(shè)備的探測,USB熱插拔事件處理函數(shù)和狀態(tài)變更處理函數(shù)的注冊,DBus服務(wù)的注冊和時(shí)間循環(huán),流程如圖5所示。
圖5 生物特征識(shí)別框架服務(wù)結(jié)構(gòu)
完成初始化部分后,服務(wù)開始事件循環(huán),等待應(yīng)用程序的服務(wù)請求事件。
當(dāng)應(yīng)用程序調(diào)用應(yīng)用接口后,服務(wù)層檢測到事件,開始處理事件。服務(wù)層首先檢測應(yīng)用是否有調(diào)用該接口的權(quán)限,權(quán)限通過后通過核心層調(diào)用設(shè)備開始進(jìn)行生物特征交互。在交互過程中,設(shè)備的狀態(tài)和用戶的交互會(huì)隨時(shí)變化,流程如圖6所示。
圖6 事件處理及消息反饋流程
例如在指紋或指靜脈特征錄入過程中,會(huì)需要用戶按下或者抬起手指,交互狀態(tài)會(huì)在按下手指和抬起手指間變更。此時(shí)驅(qū)動(dòng)會(huì)設(shè)置不同的交互狀態(tài)碼,服務(wù)層通過核心層檢測到交互狀態(tài)變更后,會(huì)發(fā)送DBus事件通知信號(hào),通知應(yīng)用底層已更新交互狀態(tài)。應(yīng)用調(diào)用服務(wù)層的輔助接口,將交互碼翻譯成交互字符串,完成人機(jī)交互的信息更新。
由于可用于生物特征識(shí)別的生理特征部位種類很多,各類特征的采樣形式和交互方式都不一致,因此對于一個(gè)支持多種生物特征的識(shí)別服務(wù)來說需要一個(gè)足夠廣泛的抽象模型與結(jié)構(gòu),才能支持多種生物特征。
BFS核心層基于對指紋、指靜脈、虹膜和聲紋的交互行為的分析,總結(jié)并抽象了設(shè)備與驅(qū)動(dòng)的結(jié)構(gòu),定義了設(shè)備操作的基本接口、擴(kuò)展接口和輔助接口,梳理了系統(tǒng)賬戶、人與硬件特征采樣值的關(guān)系,設(shè)計(jì)并實(shí)現(xiàn)了統(tǒng)一的數(shù)據(jù)存儲(chǔ)方式。
并且BFS的核心層沿用Linux/UNIX的接口設(shè)計(jì)哲學(xué):“提供機(jī)制而不是策略”,分離出了具體生物特征識(shí)別算法,只提供算法與服務(wù)連接的機(jī)制,提高核心層兼容性與魯棒性。具體的生物特征識(shí)別算法由驅(qū)動(dòng)層完成。
通過以上方式,BFS核心層目前支持指紋、指靜脈、虹膜、聲紋四種生物特征的識(shí)別。并且BFS具備強(qiáng)擴(kuò)展性,能夠快速地?cái)U(kuò)展掌紋、人臉等識(shí)別算法[7]。
BFS核心層定義的設(shè)備及其驅(qū)動(dòng)的結(jié)構(gòu)如圖7所示,包含了設(shè)備和驅(qū)動(dòng)的各種分類信息、核心層需要的輔助狀態(tài)和設(shè)備的操作集合。
圖7 設(shè)備及其驅(qū)動(dòng)抽象與數(shù)據(jù)結(jié)構(gòu)
BFS核心層對各類生物特征采集設(shè)備操作的抽象與拓展分為三個(gè)部分:基本接口、擴(kuò)展接口和輔助接口。基本接口完成基礎(chǔ)的硬件操作;擴(kuò)展接口完成用戶使用時(shí)常用的硬件操作;輔助接口用于管理硬件設(shè)備和對接驅(qū)動(dòng)層。結(jié)構(gòu)如圖8所示。
傳統(tǒng)Linux上libfprint的實(shí)體映射關(guān)系是:系統(tǒng)賬戶-人- 個(gè)人的十個(gè)手指。這種映射關(guān)系固定了系統(tǒng)賬戶和人之間是一一映射的關(guān)系,然而現(xiàn)實(shí)生活中,常常有單系統(tǒng)賬戶對應(yīng)多人的映射關(guān)系,例如家庭用戶和系統(tǒng)管理員。并且這種映射關(guān)系限定死了只能使用十個(gè)手指,也就是只能錄入十個(gè)指紋,從而導(dǎo)致對指紋采集和認(rèn)證時(shí)手指的角度、力度、干濕程度要求都很高。
BFS核心層綜合其他各種生物特征,將系統(tǒng)實(shí)體的對應(yīng)關(guān)系延伸拓展,使用某個(gè)部位的特征信息作為判斷依據(jù),使用采樣信息作為最終的存儲(chǔ)單位建立映射關(guān)系,并且不再限定采樣或者特征的數(shù)量。系統(tǒng)E-R圖如圖9所示。
圖9 設(shè)備操作接口的抽象與拓展結(jié)構(gòu)
圖10 聲紋、指靜脈特征錄入過程
圖11 特征搜索過程
在進(jìn)行生物特征識(shí)別的時(shí)候,生物特征的采樣信息質(zhì)量會(huì)影響到識(shí)別的通過率。例如,在指紋識(shí)別的時(shí)候,手指放在指紋儀的角度、手指與指紋儀的重合程度、手指的干濕程度都會(huì)影響到指紋比對的結(jié)果。
BFS核心層將特征識(shí)別的粒度減小到特征的某次采樣上,并且不再限定采樣的次數(shù)和特征信息的個(gè)數(shù),通過增加樣本集數(shù)據(jù)量可以換取更高的識(shí)別通過率。
BFS核心層抽象出來的接口在具體硬件上的實(shí)現(xiàn)構(gòu)成了BFS的驅(qū)動(dòng)層。在驅(qū)動(dòng)層中,每一款硬件對應(yīng)一個(gè)驅(qū)動(dòng)。
驅(qū)動(dòng)層負(fù)責(zé)完成對核心層定義的驅(qū)動(dòng)接口的實(shí)現(xiàn),并提供生物特征識(shí)別的算法(策略)。目前,BFS底層使用開源項(xiàng)目libfprint提供指紋識(shí)別算法,使用govpr提供基于GMM-UBM的聲紋識(shí)別算法。
本框架服務(wù)在Ubuntu Kylin 16.04開發(fā),并在Ubuntu Kylin 18.04、Ubuntu Kylin 18.10平臺(tái)上完成適配。采用C/C++語言開發(fā),代碼約為15 000行,主要包括服務(wù)程序、核心庫、框架驅(qū)動(dòng)與命令行管理工具。
生物特征和指靜脈特征的錄入操作運(yùn)行圖如圖10所示。
靜脈的查找過程及查找結(jié)果圖如圖11所示。
本文將在指紋通過率和生物特征識(shí)別方案的功能點(diǎn)兩個(gè)維度上與libfprint方案進(jìn)行對比與評估。
3.2.1通過率對比
指紋通過率測試將在通用的臺(tái)式機(jī)上進(jìn)行。測試系統(tǒng)的關(guān)鍵參數(shù)如表2所示。
表2 測試機(jī)的關(guān)鍵參數(shù)
指紋通過率的測試分成4個(gè)場景,分別從多用戶單系統(tǒng)賬戶手指中心放置、單用戶多手指左右偏移放置、單用戶單手指旋轉(zhuǎn)放置、單用戶單手指隨機(jī)偏移放置四個(gè)方面進(jìn)行對比。
另外,由于傳統(tǒng)的libfprint指紋識(shí)別方案最大指紋錄入數(shù)量為10個(gè)指紋,因此在以下場景的libfprint指紋方案的錄入步驟中,都是以10個(gè)指紋為指紋錄入的最大數(shù)量。
(1)場景1:單系統(tǒng)賬戶中心放置
錄入方式:兩個(gè)用戶使用同一個(gè)系統(tǒng)賬戶,每個(gè)用戶以標(biāo)準(zhǔn)姿勢(手指放入指紋儀中心,手指與指紋儀夾角為0°)錄入右手指紋,共計(jì)錄入10個(gè)指紋。
認(rèn)證方式:每個(gè)人每個(gè)手指以標(biāo)注姿勢進(jìn)行10次認(rèn)證,共計(jì)100次。
場景1進(jìn)行了3輪測試,測試認(rèn)證結(jié)果如表3所示
表3 單系統(tǒng)賬戶中心放置測試結(jié)果
結(jié)論:在手指標(biāo)準(zhǔn)放置情況下,BFS方案與libfprint方案通過率相差不到1%。由于共測試3輪,每輪100次,共計(jì)300次,因此1%的差距可以看作測試誤差,因此BFS方案和傳統(tǒng)libfprint方案在通過率上是一致的。
(2)場景2:單用戶多手指左右偏移放置
錄入方式:一個(gè)用戶使用一個(gè)系統(tǒng)賬戶,使用食指和中指錄入特征。在libfprint的方案中,每個(gè)手指左側(cè)邊沿錄入2次,右側(cè)邊沿錄入2次,中心錄入1次,共計(jì)10次。BFS方案中,每個(gè)手指在左側(cè)邊沿錄入10次,右側(cè)邊沿錄入10次,中心錄入2次,共計(jì)22次。
認(rèn)證方式:每個(gè)手指以左側(cè)邊沿認(rèn)證40次,右側(cè)邊沿認(rèn)證40次,標(biāo)準(zhǔn)姿勢認(rèn)證20次,共計(jì)100次。
場景2進(jìn)行了3輪測試,測試認(rèn)證結(jié)果如表4所示:
表4 單用戶多手指左右偏移放置測試結(jié)果
結(jié)論:在手指左右偏移的放置情況下,BFS方案和libfprint方案的通過率都下降了,其中l(wèi)ibfprint方案通過率比BFS下降得更多。
(3)場景3:單用戶單手指旋轉(zhuǎn)放置
錄入方式:一個(gè)用戶使用一個(gè)系統(tǒng)賬戶,使用食指錄入特征。在libfprint方案中,手指分別以-90°、-60°、30°、0°、30°、60°、90°、180°共8個(gè)角度錄入1次指紋,并且以左側(cè)邊沿和右側(cè)邊沿錄入1次,共計(jì)10次。在BFS方案中,食指與libfprint方案一致的角度錄入,每個(gè)角度錄入3次,左右邊沿各錄入3次,共計(jì)30次。
認(rèn)證方式:食指以-90°、-60°、30°、0°、30°、60°、90°、180°共8個(gè)角度認(rèn)證10次,左右邊沿各認(rèn)證10次,共計(jì)100次。
場景3進(jìn)行了3輪測試,測試認(rèn)證結(jié)果如表5所示。
表5 單用戶單手指旋轉(zhuǎn)放置測試結(jié)果
結(jié)論:在手指旋轉(zhuǎn)放置的情況下,BFS方案和libfprint方案的通過率繼續(xù)下降,但是BFS方案的通過率和libfprint方案已經(jīng)拉開差距了,明顯BFS方案通過率更高。
(4)場景4:單用戶單手指隨機(jī)偏移放置
錄入方式:隨機(jī)生成手指左右偏移加旋轉(zhuǎn)角度的放置姿勢100個(gè),libfprint方案錄入前10種姿勢,BFS方案錄入前30種姿勢。
認(rèn)證方式:使用隨機(jī)生成的100種姿勢進(jìn)行指紋認(rèn)證。
場景4進(jìn)行了3輪測試,測試認(rèn)證結(jié)果如表6所示。
表6 單用戶單手指隨機(jī)偏移放置測試結(jié)果
結(jié)論:在手指隨機(jī)方式的情況下,libfprint方案的通過率已經(jīng)掉到50%以下,相當(dāng)于用戶每認(rèn)證一次都會(huì)遇到一次失敗。BFS方案通過率反而比場景3上升了,這是因?yàn)橹讣y傳感器的大小是有限的,30種姿勢已經(jīng)能夠覆蓋絕大部分的姿勢了,因此通過率反而比規(guī)定幾種姿勢的情況要好一些。
綜合以上場景測試,BFS方案在日常使用過程中,不用刻意要求用戶以特定姿勢錄入指紋和認(rèn)證指紋,并且在更多的采樣下具有更高的通過率。
3.2.2功能點(diǎn)對比
功能點(diǎn)的對比將從支持的生物特征類型、開發(fā)及使用接口、存儲(chǔ)方式和服務(wù)及管理5個(gè)大維度,指紋識(shí)別、指靜脈識(shí)別、虹膜識(shí)別、聲紋識(shí)別、人臉識(shí)別、統(tǒng)一應(yīng)用接口、統(tǒng)一驅(qū)動(dòng)接口、統(tǒng)一存儲(chǔ)、特征加密、自定義狀態(tài)、狀態(tài)通知、設(shè)備熱插拔通知、特征統(tǒng)一錄入及認(rèn)證、設(shè)備爭用檢測14個(gè)小維度進(jìn)行。對比傳統(tǒng)的libfprint指紋識(shí)別方案和生物特征識(shí)別框架服務(wù)(BFS)方案,對比結(jié)果如表7所示。
表7 功能點(diǎn)對比
綜上可知,生物特征識(shí)別框架服務(wù)(BFS)與傳統(tǒng)的Linux的libfprint方案相比,具備對手指放置姿勢不敏感、通過率高、支持生物特征種類多、存儲(chǔ)統(tǒng)一且安全、認(rèn)證服務(wù)統(tǒng)一等優(yōu)點(diǎn)。
本文提出并實(shí)現(xiàn)了一種基于事件驅(qū)動(dòng)和多種生物特征認(rèn)證的生物特征識(shí)別框架服務(wù),在支持生物特征種類、存儲(chǔ)的安全性、使用便捷性、指紋認(rèn)證通過率等方面具有很大的優(yōu)勢。