淺析APP指紋識(shí)別功能場景與設(shè)計(jì)

文章為作者對APP指紋識(shí)別的幾點(diǎn)思考,希望能夠給你帶來一些啟發(fā)。
指紋識(shí)別,自打iPhone5s出來后就普遍在使用的功能,大家可能都已經(jīng)習(xí)以為常,但是當(dāng)我真正要上這個(gè)功能的時(shí)候,反而遇到了一堆問題,里面隱藏的邏輯最終用了兩個(gè)版本才完善。
首先說明下這個(gè)需求的背景,公司內(nèi)部APP增加了查看薪資的功能,但是考慮到隱私安全,就添加了隱私密碼和指紋密碼的功能。
初期的需求如下:
- 隱私密碼為6-10位大小寫字母、數(shù)字、特殊符號(hào)的任意組合,不要求如何組合;
- 隱私密碼不可與APP登錄密碼相同;(后來由于無接口提供,取消了校驗(yàn))
- 設(shè)置指紋密碼前必須設(shè)置隱私密碼;
- 開啟指紋密碼先輸入隱私密碼,再驗(yàn)證指紋;
- 關(guān)閉指紋密碼不需要驗(yàn)證;
上面羅列的只是幾個(gè)要點(diǎn),需求肯定不是這么簡單幾句話寫完的,但是上述邏輯無法覆蓋以下場景:
場景一:
員工手機(jī)沒有錄入指紋的時(shí)候怎么處理?
因此需求中增加了:
6.開啟指紋先校驗(yàn)手機(jī)是否已經(jīng)設(shè)置了指紋;
至此就完成了指紋密碼的正向流程,是不是感覺可以交給研發(fā)了?然而不經(jīng)意聽到交互在旁邊說到一句:手機(jī)借給別人……
這里備注下,我們公司APP有手機(jī)綁定的功能,發(fā)現(xiàn)賬號(hào)登錄設(shè)備變更后會(huì)要求輸入手機(jī)驗(yàn)證碼換綁設(shè)備。
所以就出現(xiàn)了下面的場景:
場景二:
- 員工X有A手機(jī),員工Y有B手機(jī);
- X在A手機(jī)完成了賬號(hào)登錄和指紋密碼開啟,這時(shí)Y借用A手機(jī)登錄了自己賬號(hào),那么Y的賬號(hào)指紋密碼狀態(tài)是什么?
之所以會(huì)出現(xiàn)這樣問題,是因?yàn)橹讣y是否開啟的信息是留存在手機(jī)本地的,因此剛剛X在A手機(jī)開啟指紋后,Y再用A手機(jī)登錄,會(huì)沿用上個(gè)賬號(hào)的指紋開啟狀態(tài),這顯然是不合理的,因此需求中增加了:
7.指紋是否開啟的信息,留存本地時(shí)需要關(guān)聯(lián)工號(hào)保存;
總算交付研發(fā)了,我也投到下個(gè)需求中去了,然而第二天交互和我說,她和研發(fā)商量了下,把開啟指紋密碼時(shí)的校驗(yàn)隱私密碼去除了,我問為什么,她說因?yàn)橛脩舻氖謾C(jī),他要在自己手機(jī)開啟指紋,既然已經(jīng)驗(yàn)證指紋正確了,說明他就是手機(jī)主人,那為什么還要驗(yàn)證隱私密碼?于是我和她描述了下面的場景:
-
場景三:
- 員工X有A手機(jī),員工Y有B手機(jī);
- X用了A手機(jī)登錄賬號(hào),隨后換用B手機(jī)登錄賬號(hào),但是后來忘記退出,且沒有在自己設(shè)備回登;
- 那么Y拿回B手機(jī)后,如果沒有隱私密碼校驗(yàn),將可以直接可以開啟指紋密碼,查看隱私信息;
這時(shí)交互表示無奈,并和研發(fā)說了撤銷剛剛的修改。其實(shí)如果不用隱私密碼二次校驗(yàn),還會(huì)存在個(gè)漏洞:
場景四:
- 員工X有A手機(jī),員工Y有B手機(jī);
- X和Y是同事,經(jīng)常借手機(jī),X因此知道B手機(jī)的鎖屏密碼,那么X就可能干出下面的事;
- 借到B手機(jī),由于有鎖屏密碼,因此可以添加自己的指紋,然后直接開啟客戶端的指紋密碼,查看隱私信息;
由于這時(shí)候已經(jīng)提測,所以第一期上線就沒有將隱私密碼二次校驗(yàn)加回去,畢竟是內(nèi)部APP,發(fā)布比較方便,然而邏輯的推演又出來了:
場景五:
- 員工X有A手機(jī),員工Y有B手機(jī);
- X和Y是同事,經(jīng)常借手機(jī),X因此知道B手機(jī)的鎖屏密碼,那么X又干了一件事;
- Y已經(jīng)在B手機(jī)開啟了指紋密碼,X借到B手機(jī)后,通過鎖屏密碼在B手機(jī)中添加了自己的指紋,于是又能嘿嘿嘿……
這種邏輯是在轉(zhuǎn)測后想起來的,就計(jì)劃放在下期完善,當(dāng)天晚上測試也提說有這么個(gè)漏洞,我說已經(jīng)放到二期了,所以說靠譜的測試還是很重要的,那么這種情況怎么解決?
這里分開討論,iOS端的應(yīng)用一般是檢測指紋管理是否變更,包括指紋的增刪,一旦指紋管理有變更,當(dāng)用戶打開應(yīng)用時(shí),即使開啟了指紋解鎖,也需要先輸入隱私密碼;安卓可能是開放程度比較好,像“掌上生活”APP是直接校驗(yàn)當(dāng)時(shí)開啟指紋解鎖的指紋ID,也就是說你用中指打開應(yīng)用的指紋解鎖,是無法用食指解鎖的,這樣安全性很高,但是成本有點(diǎn)高;
為此我們也就加上需求:
8.當(dāng)用戶使用應(yīng)用內(nèi)的指紋密碼時(shí),若檢測到手機(jī)指紋管理變更,則直接要求輸入隱私密碼,校驗(yàn)正確后直接進(jìn)入功能頁,且二次使用不受影響;P.S. 安卓端還需要開會(huì)時(shí)溝通下是不是也能檢測到指紋管理變更
正當(dāng)我被自己的邏輯折服時(shí),研發(fā)又來打臉了,哎喲,好疼……
場景六:
- 員工X有A手機(jī),員工Y有B手機(jī);
- X在A、B手機(jī)都登錄過自己賬號(hào),且都開啟了指紋密碼;
- 某天Y借了X的賬號(hào)在B手機(jī)登錄,抑或是同事關(guān)系導(dǎo)致Y知道X的登錄密碼;
- 于是乎Y在B手機(jī)上登錄了X的賬號(hào),由于之前X的賬號(hào)在B手機(jī)開啟過指紋密碼,那么這一次Y可以直接用指紋在B手機(jī)解鎖X的隱私信息;
敷完藥膏,臉總算不疼了,于是就和研發(fā)討論如何保證同一賬號(hào)的指紋開啟只能保留在一臺(tái)設(shè)備上,是的,我們又加需求了:
9.當(dāng)用戶登錄應(yīng)用時(shí),若APP端請求短信驗(yàn)證碼,則本地清空該賬號(hào)的指紋開啟信息;
這是由于一旦應(yīng)用向服務(wù)端校驗(yàn)登錄信息且正確時(shí),服務(wù)端會(huì)校驗(yàn)該賬號(hào)上次登錄設(shè)備是否一致,若不一致則要求應(yīng)用端請求短信驗(yàn)證碼,因此一旦應(yīng)用端請求驗(yàn)證碼,就說明賬號(hào)登錄設(shè)備有變,也就能保證指紋開啟信息只會(huì)留存一臺(tái)設(shè)備了。
碼完收工,好久不接觸這種安全性功能設(shè)計(jì),思維邏輯愈發(fā)有些線性考慮,與諸君共勉。
本文由 @G下屬PM小分隊(duì) 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖由作者提供
如果我第一次開啟指紋是在別人的手機(jī)上呢,我自己是不是就開不了了
目前正在做這塊,確實(shí)有很多細(xì)思極恐的細(xì)節(jié)