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