指紋辨識、臉部辨識的原理是什麼?手機如何認出本人?
手機的指紋辨識和臉部辨識,是把感測器讀到的手指或臉的特徵轉成數字,再比對是否和登錄時的數字相似。比對和資料的保管,都在晶片中受保護的區域進行,照片和特徵資料不會送到外面。讓他人通過的機率不是零,所以會和PIN碼或解鎖密碼搭配使用。
這篇文章可以了解
- 生物辨識不是看「完全一致」,而是看「相似程度」來判斷的原因
- 指紋感測器的3種方式(電容式、光學式、超音波式)
- 臉部辨識中,一般相機和量測立體形狀的方式有什麼不同
- 指紋和臉的資料,以什麼形式存放在哪裡
- 讓他人通過的機率的官方數值,以及仍然需要PIN碼的原因
- 通行金鑰和指紋、臉的關係
先備知識:不需要。加密和密碼的基礎,可以從相關文章的連結補充。
生活中的例子
拿起手機看一下螢幕,鎖就解開了。手指放上去,付款就完成了。iPhone在2013年推出Touch ID(指紋),2017年推出Face ID(臉)。
另一方面,也有人擔心指紋或臉的照片會不會留在手機裡,或被送到廠商那裡。也有人懷疑,長得很像的人是不是就能打開。
生物辨識是什麼:用身體的特徵確認本人
確認本人的線索,大致有3種:知道的東西(PIN碼或密碼)、擁有的東西(手機等),以及身體的特徵。用身體的特徵確認本人的方法,稱為生物辨識。3種線索的搭配方式,在「密碼為什麼會被破解?」中說明。
和密碼最大的不同,是每次讀到的都不會完全相同。手指放上去的角度、力道和乾燥程度,都會讓讀到的紋路一點一點改變。臉也會因為亮度、表情和眼鏡而看起來不同。所以判斷的方式不是「是否完全一致」,而是「有多相似」。
把相似的程度變成分數,超過事先決定的線,就視為本人。這條線稱為門檻值。門檻值要設在哪裡,後面的「2種錯誤」會再說明。
讀取指紋的感測器:3種方式
指尖的皮膚上,排列著細細隆起的線條,稱為「脊線」。脊線和脊線之間稍微凹下的部分,稱為「谷線」。指紋感測器是一種半導體晶片,會把脊線和谷線的排列,當成許多細小的點來讀取。讀取的方式主要有3種。
電容式:量測電荷累積的差異
感測器表面的下方,密密麻麻地排列著能導電的小板子。這種板子稱為電極。手指放上去時,脊線的部分會非常靠近電極。谷線的部分則離得稍微遠一點。
電極和手指之間,會產生儲存電荷的性質。能儲存的量稱為電容,距離越近就越大。因此,脊線下方的電極數值大,谷線下方的數值小。把這些數值排列成深淺,指紋的紋路就浮現出來了。這和觸控螢幕是同樣的想法,詳細說明在「觸控螢幕為什麼能感應手指?」。
Apple的Touch ID使用這種電容式感測的原理。根據Apple的說明,它會從皮膚最外層的下方讀取細緻的影像。
光學式:用螢幕的光照亮再拍攝
在螢幕上按手指的方式,常見的是光學式。手機常用的OLED螢幕,構成畫面的小點(像素)每一個都會自己發光。讓手指按著的地方發光,光就會在手指上反射。脊線和谷線的反射方式不同,就形成明暗的紋路。
這道光,由放在螢幕下方的小型相機感測器接收。把光轉成電的原理,和手機相機的影像感測器相同(「影像感測器是什麼?」)。放在螢幕下方的指紋感測器,大約從2018年開始搭載在手機上。
超音波式:用聲音的反射量測形狀
人耳聽不到的高頻聲音,稱為超音波。超音波式感測器從螢幕下方朝手指發出超音波,再量測反射回來的情形。脊線貼著表面,但谷線和表面之間有一點點空氣的空隙。這個差異會改變聲音反射的方式。
Qualcomm的超音波式感測器「3D Sonic」,用在2019年Samsung的Galaxy S10系列。
| 方式 | 用什麼讀取 | 配置位置的例子 |
|---|---|---|
| 電容式 | 電荷的累積 | Home鍵、電源鍵 |
| 光學式 | 螢幕光的反射 | 螢幕下方 |
| 超音波式 | 聲音的反射 | 螢幕下方 |
分辨臉:平面的影像與立體的形狀
臉部辨識大致有2種做法。一種是用正面的一般相機拍下的影像來比對。這種做法不需要特別的零件,但影像是平面的。要和照片或螢幕上顯示的臉區分開來,需要另外下工夫。
另一種是連臉的凹凸,也就是立體的形狀都量測的方法。Apple的Face ID就是這種方法。iPhone正面的上方,集中搭載了使用紅外線(人眼看不到的光)的零件。Apple稱之為TrueDepth相機。
核心的零件有3個:用看不見的光照亮整張臉的零件、投射出許多看不見光點的零件(點陣投射器),以及拍下光點的紅外線相機。Apple支援頁面的說明是「數千個」光點,2017年發表iPhone X時則是「超過3萬個」。因為自己發光照明,在暗的地方也能使用。
把光點投射在平坦的牆上,拍下來仍是固定的排列。投射在臉上時,在鼻子這種突出的地方和眼睛凹陷的地方,光點的位置會一點一點偏移。從這些偏移,就能知道每個位置的距離。這樣做出的臉的「距離地圖」,稱為深度圖。
知道立體的形狀後,就很難用平面的照片騙過。Face ID結合深度圖和紅外線影像,把臉的特徵轉成數字。
存起來的不是照片,而是「特徵的數字」
登錄時,手機不會直接儲存指紋或臉的影像。而是從影像中只取出比對需要的特徵,變成一串數字。這串數字稱為範本。比對時,也會把讀到的影像同樣轉成數字,再和範本比較。
指紋常用的特徵,是脊線中斷的點和分岔成2條的點。美國國家標準暨技術研究院(NIST)的資料,也說明了用這些點的位置和方向來比對的方法。不過,各家手機實際用哪些特徵,大多沒有公開。
Apple表示,Touch ID儲存的只是指紋的數學表示,不會儲存手指的影像。Apple的說明是,無法從儲存的資料重建原本的指紋影像。
不過,也不能斷言特徵的數字就一定安全。有研究(2007年)顯示,能從標準格式的特徵點資料,做出很相似的指紋影像。而且指紋和臉不像密碼,外洩了也無法更換。因此,特徵的數字也會加密,保護起來不送到外面。
存放的地方:晶片中「受保護的區域」
範本的保管和比對,在手機晶片中特別建立的區域進行。一般的App,以及讓整支手機運作的基本軟體(作業系統,OS),都無法窺看裡面。iPhone把這個區域稱為Secure Enclave。
根據Apple給開發者的資料,Secure Enclave是和其他部分隔離的安全專用運算電路。使用指紋或臉的App,收到的只有成功或失敗的答案。指紋的影像等資料,不會交給App。
Secure Enclave位在負責手機運算的中心晶片之中(2013年的iPhone 5s是A7)。晶片的整體樣貌,在「手機裡有哪些半導體?」中介紹。
瞄準機密的攻擊,不只有使用軟體的方法。也有擾亂電源電壓,或打開晶片調查內部的方法。能承受這類物理攻擊的性質,稱為抗竄改性。Apple說明,Secure Enclave的運算電路刻意以較低的速度運作,以防範擾亂電源等的攻擊。
Android的官方資料也規定,讀到的原始影像和範本,都不能從隔離的環境外面看到。這種環境的代表是TEE,中文稱為「可信執行環境」。
建立TEE的機制中,廣泛使用的是Arm的TrustZone。它在1顆晶片中,切換使用一般的世界和受保護的世界。受保護世界的記憶體,一般的世界會被電路擋住,無法接近。
儲存範本時,會用只有TEE知道的金鑰加密。Android的資料也要求,範本的檔案即使搬到別的裝置也無法使用。登錄的資料,只在那1台裝置上才有意義。存放金鑰的專用元件有什麼不同,在「TPM、HSM、安全元件的差異」中比較。
2種錯誤
生物辨識的錯誤有2種。一種是把他人判斷為本人。這個比例稱為錯誤接受率,英文縮寫為FAR。
另一種是明明是本人卻被拒絕。這個比例稱為錯誤拒絕率(FRR)。需要一再重新放手指時,就是發生了錯誤拒絕。把門檻值調嚴,錯誤接受率會下降,錯誤拒絕率則會上升。兩者是互相拉扯的關係。
也有用假造物代替真的手指或臉來欺騙的攻擊。Android除了錯誤接受率,還會另外測試假造物通過的比例(SAR)。因為錯誤接受率是隨機選出的他人碰巧通過的比率,並不表示對假造物的抵抗力。Android依這個比例等,把生物辨識分成3個等級。最強的是等級3(Class 3)。
App可以只接受等級3的生物辨識。因此依機型不同,有時臉部辨識可以解鎖,卻不能在部分App中使用。
從數字來看
下表列出各家公司公布的「他人碰巧通過的機率」,以及1次猜中PIN碼的機率。數值依據各資料在2026年時的記載。
| 情況 | 他人通過的機率(參考值) |
|---|---|
| Touch ID(登錄1根手指) | 低於5萬分之1 |
| Touch ID(登錄5根手指) | 最高1萬分之1 |
| Face ID(登錄1張臉) | 低於100萬分之1 |
| Face ID(也登錄另一種外觀) | 約50萬分之1 |
| Android的標準(錯誤接受率) | 5萬分之1 |
| 1次猜中4位數的PIN碼 | 1萬分之1 |
| 1次猜中6位數的PIN碼 | 100萬分之1 |
Apple的數值,是Apple自己估計的、隨機選出的1個人碰巧通過的機率。登錄的手指或外觀越多,比對的對象就越多,機率也會上升。Apple提醒,雙胞胎、長得很像的兄弟姊妹,以及未滿13歲的兒童,這個機率會比較高。因為兒童臉部的特徵可能還沒有發育完全。Apple建議,如果擔心就使用解鎖密碼。
Android的5萬分之1,是隨機選出的他人通過的比率,也是所有等級共同的目標。等級的差異,主要取決於對假造物的抵抗力。
PIN碼的數值,是數字隨機選擇時的計算結果。像生日這種容易猜到的PIN碼,會比表中的數值弱得多。
失敗的次數也有上限。Apple規定,Face ID和Touch ID比對失敗5次,就會要求輸入解鎖密碼。他人無法一再嘗試,等待碰巧通過。
即使如此,仍需要PIN碼或解鎖密碼的原因
要使用生物辨識,必須先設定PIN碼或解鎖密碼。生物辨識不是解鎖密碼的替代品。它是省去每次輸入解鎖密碼的捷徑。
第1個原因,是有些場合無法使用生物辨識。例如手指濕了、受傷了,或臉前面有東西擋住。Apple規定,在下面這些情況也會要求解鎖密碼。
- 剛開機或重新啟動之後
- 超過48小時沒有解鎖時
- 比對失敗5次時
- 6天半(156小時)沒有使用解鎖密碼,而且4小時沒有使用生物辨識時
第2個原因是資料的加密。手機裡的照片和訊息,是用和解鎖密碼綁在一起的金鑰加密的(「加密是什麼?」)。重新啟動後一定要求解鎖密碼,也是這種防護的一部分。簡化來說,解鎖密碼先把金鑰打開一次,生物辨識則是之後繼續使用這把金鑰時的確認。
第3個原因,是指紋和臉無法改變。必須另外準備外洩時可以更換的方法。
和通行金鑰的關係:指紋不會送到網站
越來越多服務可以用通行金鑰代替密碼登入。使用通行金鑰時,手機會為每個網站建立並持有私密金鑰。交給網站保管的,只有成對的、可以公開的金鑰(公開金鑰)。這個機制是以公開金鑰加密為基礎。
登入時,手機用私密金鑰製作簽章,送到網站。簽章是只有持有那把金鑰的裝置才做得出來的記號(數位簽章)。而決定能不能使用私密金鑰的,就是指紋或臉的比對(也可以用PIN碼等代替)。比對通過後,裝置內的金鑰就可以使用。
業界團體FIDO聯盟說明,生物特徵的資訊和處理都留在裝置內,不會送到伺服器。伺服器知道的,只有本人確認成功這件事。即使網站的資料被偷,裡面也沒有指紋或臉的資料。
也就是說,指紋和臉不是「給網站看的證明書」,而是「打開自己裝置裡金鑰的信號」。
常見的誤解
誤解:手機裡存著指紋或臉的照片,也會送到廠商那裡
實際上,儲存的是用來比對的特徵數字(範本),在晶片中受保護的區域管理。Apple表示,Face ID的資料不會送到Apple,也不會包含在iCloud等備份中。因為登錄的畫面看起來像是在用相機拍攝,所以常被以為會留下照片。
誤解:設定了生物辨識,PIN碼簡單一點也沒關係
實際上,PIN碼或解鎖密碼,是重新啟動後或連續失敗時的最後防線。如果PIN碼是「0000」或生日,不管生物辨識多強,都可能從這裡被打開。正因為不再每次輸入,更要設定成不容易被猜到的號碼。
誤解:既然是「100萬分之1」,除了自己以外絕對沒人能打開
實際上,這個數值是隨機選出的1個人碰巧通過的機率。雙胞胎或長得很像的兄弟姊妹,機率會比較高。Google也針對Pixel的臉部辨識說明,長得很像的人有時可以打開。機率雖然小,但不是零。
進一步學習
- 個人電腦和伺服器的CPU保護機密的方式:飛地
- 從開機的瞬間就只執行正確的軟體:安全開機與量測開機的差異
- 金鑰和簽章的基礎:加密是什麼?對稱式加密與公開金鑰加密的原理
- 用數字確認2種錯誤:混淆矩陣計算工具