淺析APP指紋識別功能場景與設計

3 評論 6277 瀏覽 37 收藏 8 分鐘

文章為作者對APP指紋識別的幾點思考,希望能夠給你帶來一些啟發(fā)。

指紋識別,自打iPhone5s出來后就普遍在使用的功能,大家可能都已經(jīng)習以為常,但是當我真正要上這個功能的時候,反而遇到了一堆問題,里面隱藏的邏輯最終用了兩個版本才完善。

首先說明下這個需求的背景,公司內(nèi)部APP增加了查看薪資的功能,但是考慮到隱私安全,就添加了隱私密碼和指紋密碼的功能。

初期的需求如下:

  1. 隱私密碼為6-10位大小寫字母、數(shù)字、特殊符號的任意組合,不要求如何組合;
  2. 隱私密碼不可與APP登錄密碼相同;(后來由于無接口提供,取消了校驗)
  3. 設置指紋密碼前必須設置隱私密碼;
  4. 開啟指紋密碼先輸入隱私密碼,再驗證指紋;
  5. 關(guān)閉指紋密碼不需要驗證;

上面羅列的只是幾個要點,需求肯定不是這么簡單幾句話寫完的,但是上述邏輯無法覆蓋以下場景:

場景一:

員工手機沒有錄入指紋的時候怎么處理?

因此需求中增加了:

6.開啟指紋先校驗手機是否已經(jīng)設置了指紋;

至此就完成了指紋密碼的正向流程,是不是感覺可以交給研發(fā)了?然而不經(jīng)意聽到交互在旁邊說到一句:手機借給別人……

這里備注下,我們公司APP有手機綁定的功能,發(fā)現(xiàn)賬號登錄設備變更后會要求輸入手機驗證碼換綁設備。

所以就出現(xiàn)了下面的場景:

場景二:

  • 員工X有A手機,員工Y有B手機;
  • X在A手機完成了賬號登錄和指紋密碼開啟,這時Y借用A手機登錄了自己賬號,那么Y的賬號指紋密碼狀態(tài)是什么?

之所以會出現(xiàn)這樣問題,是因為指紋是否開啟的信息是留存在手機本地的,因此剛剛X在A手機開啟指紋后,Y再用A手機登錄,會沿用上個賬號的指紋開啟狀態(tài),這顯然是不合理的,因此需求中增加了:

7.指紋是否開啟的信息,留存本地時需要關(guān)聯(lián)工號保存;

總算交付研發(fā)了,我也投到下個需求中去了,然而第二天交互和我說,她和研發(fā)商量了下,把開啟指紋密碼時的校驗隱私密碼去除了,我問為什么,她說因為用戶的手機,他要在自己手機開啟指紋,既然已經(jīng)驗證指紋正確了,說明他就是手機主人,那為什么還要驗證隱私密碼?于是我和她描述了下面的場景:

  • 場景三:

  • 員工X有A手機,員工Y有B手機;
  • X用了A手機登錄賬號,隨后換用B手機登錄賬號,但是后來忘記退出,且沒有在自己設備回登;
  • 那么Y拿回B手機后,如果沒有隱私密碼校驗,將可以直接可以開啟指紋密碼,查看隱私信息;

這時交互表示無奈,并和研發(fā)說了撤銷剛剛的修改。其實如果不用隱私密碼二次校驗,還會存在個漏洞:

場景四:

  • 員工X有A手機,員工Y有B手機;
  • X和Y是同事,經(jīng)常借手機,X因此知道B手機的鎖屏密碼,那么X就可能干出下面的事;
  • 借到B手機,由于有鎖屏密碼,因此可以添加自己的指紋,然后直接開啟客戶端的指紋密碼,查看隱私信息;

由于這時候已經(jīng)提測,所以第一期上線就沒有將隱私密碼二次校驗加回去,畢竟是內(nèi)部APP,發(fā)布比較方便,然而邏輯的推演又出來了:

場景五:

  • 員工X有A手機,員工Y有B手機;
  • X和Y是同事,經(jīng)常借手機,X因此知道B手機的鎖屏密碼,那么X又干了一件事;
  • Y已經(jīng)在B手機開啟了指紋密碼,X借到B手機后,通過鎖屏密碼在B手機中添加了自己的指紋,于是又能嘿嘿嘿……

這種邏輯是在轉(zhuǎn)測后想起來的,就計劃放在下期完善,當天晚上測試也提說有這么個漏洞,我說已經(jīng)放到二期了,所以說靠譜的測試還是很重要的,那么這種情況怎么解決?

這里分開討論,iOS端的應用一般是檢測指紋管理是否變更,包括指紋的增刪,一旦指紋管理有變更,當用戶打開應用時,即使開啟了指紋解鎖,也需要先輸入隱私密碼;安卓可能是開放程度比較好,像“掌上生活”APP是直接校驗當時開啟指紋解鎖的指紋ID,也就是說你用中指打開應用的指紋解鎖,是無法用食指解鎖的,這樣安全性很高,但是成本有點高;

為此我們也就加上需求:

8.當用戶使用應用內(nèi)的指紋密碼時,若檢測到手機指紋管理變更,則直接要求輸入隱私密碼,校驗正確后直接進入功能頁,且二次使用不受影響;P.S. 安卓端還需要開會時溝通下是不是也能檢測到指紋管理變更

正當我被自己的邏輯折服時,研發(fā)又來打臉了,哎喲,好疼……

場景六:

  • 員工X有A手機,員工Y有B手機;
  • X在A、B手機都登錄過自己賬號,且都開啟了指紋密碼;
  • 某天Y借了X的賬號在B手機登錄,抑或是同事關(guān)系導致Y知道X的登錄密碼;
  • 于是乎Y在B手機上登錄了X的賬號,由于之前X的賬號在B手機開啟過指紋密碼,那么這一次Y可以直接用指紋在B手機解鎖X的隱私信息;

敷完藥膏,臉總算不疼了,于是就和研發(fā)討論如何保證同一賬號的指紋開啟只能保留在一臺設備上,是的,我們又加需求了:

9.當用戶登錄應用時,若APP端請求短信驗證碼,則本地清空該賬號的指紋開啟信息;

這是由于一旦應用向服務端校驗登錄信息且正確時,服務端會校驗該賬號上次登錄設備是否一致,若不一致則要求應用端請求短信驗證碼,因此一旦應用端請求驗證碼,就說明賬號登錄設備有變,也就能保證指紋開啟信息只會留存一臺設備了。

碼完收工,好久不接觸這種安全性功能設計,思維邏輯愈發(fā)有些線性考慮,與諸君共勉。

 

本文由 @G下屬PM小分隊 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖由作者提供

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 如果我第一次開啟指紋是在別人的手機上呢,我自己是不是就開不了了

    回復
  2. 目前正在做這塊,確實有很多細思極恐的細節(jié)

    回復