刷臉支付的技術挑戰與現狀
說起電腦視覺用在實際生活中的案例,人臉辨識一定是最先被想到的案例,而刷臉支付更是其中之最。但刷臉支付也有很多顧慮,比方說盜刷,感覺使用照片或是影片攻破刷臉支付好像是很簡單的事情,但是為什麼這種理所當然的事情又好像很少在新聞上看到?難道現在刷臉支付真的這麼成熟嗎?
刷臉支付是人臉辨識裡面的一個特殊應用,其技術要求非常的高,因為萬分之一的技術漏洞都會導致技術公司可能被告上法庭。這篇文章整理並回顧了一下刷臉支付的技術方案與使用場景,讓大家更多了解刷臉支付與人臉辨識技術。
這篇文章包含以下幾個部分:
- 手機刷臉支付:簡介人臉驗證與活體檢測
- Apple Face ID:更成熟的軟硬體人臉驗證技術
- 億級用戶人臉辨識:支付寶刷臉支付
- 刷臉支付的安全性問題與案例
手機刷臉支付:人臉驗證 + 活體檢測
2015 年,馬雲在德國 CeBIT 率先推出並展示了刷臉支付功能。2017 年,支付寶在中國境內肯德基的自主點單機上線了刷臉支付。2018 年後,支付寶宣布開始擴大刷臉支付的應用,各種刷臉POS機、刷臉販賣機等等在中國如雨後春筍般層出不窮,刷臉支付正式進入爆發時代。
回顧 2015 年,馬雲首次演示刷臉支付的時候,那時 Apple 還沒有推出 Face ID,手機的前鏡頭真的只是拿來自拍用的。因此,這個時候的刷臉支付完全就是一個單純的 1:1 的人臉辨識系統。
1:1 人臉辨識:你是不是你?
1:1 人臉辨識是人臉辨識裡面的一個子題目,也被稱為「人臉驗證 (Face Verification)」,處理的就是馬雲在演示刷臉支付的經典情境:「你,是不是你?」。在這個題目裡面,電腦只需要確認目前鏡頭前的這張臉是不是馬雲就可以了。
這個技術雖然是人臉辨識裡面最單純也最簡單的一項,但是敢用在金融行業仍然是一個大膽的嘗試,因為極有可能被破解。因此,通常講到人臉辨識就會牽扯到另一個題目:活體檢測 (Face Anti-Spoofing)。
活體檢測:你是真是假?
活體檢測是一項用來防止照片、影片、面具等方法來破解人臉辨識系統的一項技術分支。具體來說,活體檢測有很多種方式,大致可分為 2D 與 3D。比方說,如果使用了 3D 攝影機或是紅外線攝影機,那麼平面的照片跟影片都無法破解人臉辨識系統。
但是,在手機刷臉支付裡面,並無法要求用戶的手機配備 3D 攝影機或是紅外線攝影機,所以 3D 活體檢測幾乎是沒法做的。在這個情況下,會利用互動性的 2D 活體檢測,例如要求用戶眨眼或搖頭,防止攻擊者使用別人的照片破解。考慮到攻擊者也會把攝影機對著影片來破解,因此也會檢測照片品質來防止這種破解方法。
這套人臉辨識 + 2D 活體檢測的技術目前已經不在支付寶使用,但是在一些非金融場景還是被廣泛應用中,例如滴滴司機的本人驗證。而在支付寶等金融場景中,取而代之的是手機廠商等推出的人臉認證系統,例如 Face ID。
Apple Face ID:更成熟的人臉認證
2017 年,Apple 在當時的最新款手機 iPhone X 推出了 Face ID,除了讓使用者可以刷臉解鎖之外,也可以在所有 Apple App 裡面做本人認證的功能使用,包括支付寶的刷臉支付。之後,各大手機廠商也都推出了自家的人臉認證系統,手機具備刷臉能力變成了一種標準配備。同時,在支付寶 App 或是微信支付等手機刷臉支付中都放棄了自家的人臉驗證技術,轉用手機廠商提供的驗證技術。
為什麼支付寶會願意放棄自身的人臉辨識技術呢?特別是擅長內卷的阿里巴巴,為什麼會在流量這麼大的題目下放棄自己的技術?下面以 Apple 的 Face ID 為例子來回答這些問題。
更精準的辨識技術:3D 人臉驗證 + 3D 活體檢測
與支付寶等互聯網廠商不同,手機廠商本身具有硬體的選擇權,因此可以使用各種硬體來加強人臉辨識能力。下圖是 iPhone X 瀏海區域配備的硬體 sensor,包括了 RGB 鏡頭、紅外線鏡頭跟 Dot Projector。利用紅外線鏡頭與 Dot Projector,就可以實現 3D 人臉驗證與 3D 活體檢測 ,效果也會遠遠超過單一 RGB 鏡頭的 2D 方法。
iPhone X 上面有一套前置鏡頭的深度相機的技術 TrueDepth,這項技術與 Microsoft Kinect 類似,會利用安裝的 紅外線相機與 Dot Projector,投射大量的紅外線光點,以得到一張 3D 深度圖。透過這個技術,就可以把 2D 的人臉照片變成 3D 照片,完成比 2D 人臉驗證更精準的 3D 人臉驗證。Apple 宣稱使用 Face ID 技術,別人成功解鎖你的手機的機率是百萬分之一,低於 Touch ID 的五萬分之一。
與人臉驗證類似,3D 照片也可以用來完成 3D 活體檢測。除此之外,紅外線相機本身就可以感應溫度,能夠很簡單的區分 3D 面具與真人,是活體檢測的最佳方案之一。
法律問題
支付寶等 App 開發商願意轉用 Face ID 等手機廠商技術,除了因為手機廠商軟硬一體的解決技術更精準之外,也是因為發生法律糾紛時,使用手機廠商技術可以讓 App 開發商切割法律責任。
2018 年的時候出現一則新聞,多名支付寶用戶因啟用「免密支付」功能被盜刷。免密支付是支付寶的一個身分驗證功能,意思就是利用手機廠商提供的「人臉驗證」或「指紋驗證」等生物驗證功能來完成付款。在這些盜刷案例中,支付寶因為聲稱自己只是生物驗證技術的使用者而非提供者,因此並未承擔法律責任。
簡單的說,因為支付寶使用了Apple Face ID,人臉被盜刷就是 Apple 的責任;但如果使用的是支付寶的刷臉技術,被盜刷就是支付寶的責任了。使用硬體廠商提供的認證技術,在技術上與法律上都是軟體開發商最好的方案。
億級用戶人臉辨識:支付寶刷臉支付
2019 年,支付寶推出了刷臉支付 IoT 設備「蜻蜓」,目前已經安裝在中國大量的便利商店與超市,讓刷臉支付更加普及。這項技術與之前說的手機刷臉都不同,這是擺設在公共場合的刷臉機器,因此對於安全性的要求更加嚴苛。例如有民眾表示自己的臉就是個「行走的密碼」,也對刷臉支付望而生卻。
雖然蜻蜓本身就配備了 3D 深度攝影機,使用的技術也是較精準的 3D 人臉辨識 + 3D 活體檢測,從硬體上具備與 Face ID 相同能力;但他所解決的問題與手機刷臉是完全不同的檔次。回憶前文所說的,手機刷臉是屬於 1:1 的人臉辨識,而刷臉支付是屬於更高難度的 1:N 人臉辨識。
1:N 人臉辨識:你是誰?
1:N 人臉辨識中,要從 N 個可能的人臉中找出當前鏡頭前面的人臉是誰,也被稱為人臉認證 (Face Identification)。這個技術通常被用在一個公司、學校、甚至是家庭,例如簽到系統、保安系統等等。
在人臉認證中,N 代表必須要被辨識的人臉數量級。在 4 人小家庭中,N=4;在千人公司中,N=1000。在支付寶的蜻蜓支付中,N 大於1億,可能是僅次於中國規模最大的「商業」人臉辨識系統。
NIST FRVT:全球最具權威的人臉辨識系統評比報告
NIST 全名是 National Institute of Standards and Technology,是美國的國家標準暨技術研究院。FRVT 代表 Face Recognization Vender Test,是 NIST 專門測試人臉辨識系統的測試報告,也是全球最具影響力的人臉辨識系統測試報告。
在人臉辨識系統中,錯報率 (False Positive Identification Rate, FPIR) 與錯失率 (False Negative Identification Rate, RNIR) 都是魚與熊掌不能兼得的。在演算法不變的情況下,試圖利用系統設置降低 FPIR 就會導致 FNIR 的上升,反之亦然。
上圖 NIST FRVT 的 2019 年報告顯示的是各家系統錯報率=1%的時候對應的錯失率。隨著 N 越來愈大,技術的難度也會更加提高。即使是表現最好的 NEC 系統,在 N=1200萬 的情況下也有大約 2% 的錯失率。要知道,這個實驗設置的錯報率 1% 是完全不可直接用於金融交易的,因為這代表平均每 100 次刷臉交易就有 1 次出錯。
億級別人臉辨識
因此為了完成全中國上億人的人臉認證,支付寶的蜻蜓設備也安裝了深度相機,所以可以完成與 Face ID 相似的 3D 人臉辨識與 3D 活體檢測功能。與 Face ID 不同的是,使用蜻蜓刷臉支付的時候通常是在公共場合,拿出照片或是面具等試圖破解的方式是極其不自然的,因此對於人臉破解的風險可能更小一點。
回到辨識率的問題。假設支付寶刷臉支付與 Face ID 相同,能在 1:N 達到千萬分之一的錯報率,也很難達到刷臉支付的水平。因為這代表 1000萬筆交易裡面就會出現一條錯誤,代表全中國沒幾天就會有一條錯誤扣款的交易發生。
為了解決億級人臉辨識在支付場景的高難度任務,除了持續更新人臉辨識演算法之外 (例如 ArcFace、AM-Softmax),這類刷臉產品在產品設計上做了一些改良,降低了這些錯誤的發生。
雙重驗證機制
當刷臉支付機器辨識取得人臉之後,通常不會直接進入支付成功或支付失敗的頁面,而是會經過一個雙重驗證:輸入手機號碼末四碼。這個設計直接降低了 10000 倍的錯誤率,因為手機後四碼相撞的機率是萬分之一。加上 3D 人臉辨識技術,足以讓錯誤率降低到足夠使用。
這項技術雖然會要求用戶在公開的場合輸入手機號碼,但是因為只有後四碼,因此還算相對安全(中國的手機號碼有 11 位)。除此之外,刷臉成功後的人臉特徵可能會回傳到後台伺服器,持續的更新人臉辨識演算法。只要用戶持續使用,辨識準確率就可以維持在一定的水準。
刷臉支付的安全性問題與案例
這裡談談幾個是刷臉支付的安全性案例,讓大家了解一下刷臉滿天飛的社會下要如何安全的保護自己的臉。
案例一:0.5 人民幣買一張照片,破解刷臉支付
根據這篇報導,在中國已經有不法分子在網路上販賣人臉資訊。對比信用卡與密碼,人臉資訊還是非常容易外洩的,畢竟現在幾乎每個店家都有攝影機。但我們的臉真的會因為這樣被盜刷嗎?
答案是有可能的。雖然人臉辨識技術可以透過活體檢測來防範破解,但是純 2D 的活體檢測還是很容易被破解。報導中的不法分子使用「人臉活化」技術,讓靜態照片能夠做出眨眼、點頭等姿勢,足以破解部分的人臉辨識系統,包括部分手機的刷臉支付。
活照片的技術在今天並不困難。舉例來說,下面這篇就是利用論文《Few-Shot Adversarial Learning of Realistic Neural Talking Head Models》把靜態照片活化的 YouTube 影片與對應的 GitHub 程式碼。
但你可能會想,手機廠商不是會對人臉辨識負責嗎?軟硬一體活體檢測技術應該能輕易的防範這種安全漏洞吧?
案例二:清華大學發現人臉辨識漏洞,15 分鐘解鎖 19 款手機
這是今年的報導,北京清華大學的 RealAI 團隊測試了 20 款手機,其中 19 款是中國手機。實驗的結果非常出乎意料,研究團隊發現一種方法可以解鎖全部的中國手機,而且這種方法的成本非常低,連照片活化技術都不用。
攻擊者所需要的就是把手機主人的照片印出來,然後這麼搞:
雖然 3D 人臉驗證 + 3D 活體檢測技術可以很簡單的檢測這種攻擊,但是事實告訴我們,部分廠商在降低成本與追求利潤的壓力下可能會忽略這項技術。更離譜的是,你在手機 App 的錢可以透過這個漏洞輕易的轉出去,而 App 開發商卻不需要背負相應的法律風險。
所以,為了保護自己的臉,第一步你可能需要選擇一台安全的手機。如果你的手機確實不夠安全,那你可以停用所有的人臉驗證功能。如果你覺得這樣太不方便了,那麼……至少停用人臉解鎖功能吧。
補充說明
本篇文章絕對沒有涉及阿里巴巴與螞蟻集團的任何未公開技術。如果有,一定是你看錯了,科科。