FIDO 密鑰登錄

FIDO 密匙登錄

  • [1]介紹了一些基礎密碼知識,科普性較好,在此摘抄一下:

說起密碼,你會想起什麼?

密碼太多,記不住?

圖省事所有網站用同一個密碼,一個泄露了,手忙腳亂地去改密碼?

網站被脫庫,數據庫信息泄露,密碼丟失?

图片

這一切都的根本原因就是:服務器保存了我們的密碼(不管是明文的還是Hash過的)。

我們需要把自己記憶的密碼發給服務器做驗證,這就給了攻擊者可乘之機。

圖片

那能不能別保存密碼了,換個方式,讓服務器保存我們的指紋、虹膜等信息,行不行?

萬萬不可,這樣雖然不用記憶各種密碼了,但攻擊者一旦獲得這些生物信息,那就可以假冒我們,真是可以爲所欲爲了。

並且本質上它和保存密碼是一樣的,都是“和服務器共享了一個密鑰”。

那就別和服務器共享祕密了吧!可是如果不共享,服務器怎麼知道“你就是你”呢?服務器無法做身份驗證(Authentication)了!

這個問題早在幾十年前就被迪菲和赫爾曼(DH)考慮過了,他們提出了非對稱的密鑰算法

這種算法中每個人可以持有一對密鑰:public key (公鑰)和 private key (私鑰)

图片 图片

作者畫的漫畫還是很有趣的~

只不過,迪菲和赫爾曼並沒有找到一個合適的算法來生成公鑰和私鑰, 一年後,麻省理工學院的三個教授(Revist、Shamir、Adleman)基於大數的因數分解難題提出了RSA算法,才解決了這個問題。

利用非對稱這種漂亮的性質,我們爲自己的賬號生成一對公鑰和私鑰。

私鑰自己保存,公鑰發給服務器保存,這樣就不用和它共享祕密了。

图片

登錄的時候,服務器給我們發一段隨機消息,我們對它做簽名(即對消息做Hash ,然後用本地保存的私鑰加密),把簽名發給服務器,服務器用對應的公鑰來驗證簽名,如果簽名沒問題,就證明了這的確是一次合法的登錄。

私鑰非常重要,不能讓任何人知道,不能發給任何系統,最好是保存在本地的一個硬件中,通過指紋、面部識別、聲音、PIN等方式來訪問。

圖片

這裏引入了一個新的抽象層—認證器(記錄私鑰等信息),讓它和服務器打交道,我們只是用指紋等手段授權對私鑰的訪問。

計算機的任何問題都可以引入一個抽象層來解決,真是至理名言。

用這種方式,登錄將會變成這樣:

图片

1.輸入用戶名

2.點擊登錄

3.生物識別(指紋等)

4.登錄成功

FIDO概念簡單,想真正實現是很難的。

1.我們用瀏覽器登錄網站的時候,網站系統得改造,支持FIDO協議。

2.瀏覽器也得支持FIDO協議,可以提示用戶用FIDO的方式註冊或者登錄。

3.瀏覽器還需要和認證器進行交互,用戶提供生物信息授權訪問認證器,這就得需要硬件和操作系統出馬了。

4.如果筆記本和臺式機沒有指紋識別等設備,還得考慮和手機的聯動(例如讓手機掃個二維碼,然後使用手機端認證器。)

這涉及到多方利益,是個生態系統,不是一家公司能搞定的,所以FIDO是個聯盟,包含了全世界的IT大佬。

图片

在這些IT大佬中,有三位舉足輕重:

Google : Android + Chrome瀏覽器

Apple :iOS + Safari瀏覽器

微軟: Windows + Edge瀏覽器

這三位幾乎統治了操作系統和瀏覽器市場,沒有它們的參與,FIDO是玩不起來的。

今年5月,Google和Apple和微軟宣佈加大力度,推進對FIDO通用無密碼登錄標準的支持,努力實現無縫、安全的無密碼登錄

1.允許用戶在多個設備(甚至新設備)上自動訪問FIDO登錄憑證(私鑰),而不需要重新註冊戶

2.在任何操作系統和瀏覽器上,當用戶想用FIDO登錄網站的時候,手機都可以用來做驗證。例如,蘋果手機可以幫助驗證Edge瀏覽器上的FIDO登錄。

如果能做到這兩點,密碼就真的被幹掉了。

  • [2]給出了Google在這方面的工作:

Google 已爲 Android 和 Chrome 提供密鑰支持,密鑰是密碼和其他第二重身份驗證的更加安全的替代方法,密鑰不能重複使用,也不會在服務器遭入侵時泄露,還能保護用戶免受網絡釣魚的攻擊。

密鑰遵循常見的用戶體驗模式並沿用現有的密碼自動填充界面。對終端用戶而言,密鑰的使用方法類似於如今已保存的密碼的使用方法,用戶只需使用現有設備屏幕解鎖方式 (例如指紋) 進行確認即可(授權)。用戶手機和電腦上的密鑰可通過雲端備份和同步,以防止設備丟失時無法解鎖。此外,用戶還可以使用存儲在手機中的密鑰來登錄附近其他設備上的應用和網站

例如:使用密鑰在 Android 設備上登錄網站

終端用戶創建密鑰只需要兩個步驟: (1) 確認密鑰帳號信息;(2) 出現提示時使用指紋、人臉識別或屏幕鎖進行創建(創建認證器)。

图片

登錄也同樣簡單: (1) 用戶選擇他們想要登錄的帳號;(2) 出現提示時使用指紋、人臉識別或屏幕鎖完成登陸(授權訪問認證器)。

图片

例如:在 Android 設備上使用密鑰登錄附近電腦上的網站

手機上的密鑰也可用於在附近的設備上進行登錄,例如,Android 用戶現在可以在 Mac 上使用 Safari 登錄啓用密鑰的網站【相當於手機通過掃碼授權認證】。同樣地,Chrome 中的密鑰支持意味着 Chrome 用戶 (例如在 Windows 上) 可以使用存儲在其 iOS 設備上的密鑰執行相同的操作。

由於密鑰是基於業界標準而構建的,因此它適用於不同的平臺和瀏覽器 (包括 Windows、macOS 和 iOS 以及 ChromeOS) 且具有統一的用戶體驗。

图片

使用:開發者可以註冊 Google Play Services Beta 版並使用 Chrome Canary 版,立即體驗密鑰。

[3]中提到:2022年10月12日,谷歌宣佈在 Android 和 Chrome 中正式推行密鑰登錄 “PassKey”,以逐步替代長期使用的密碼登錄 “PassWord”。

推出的密鑰登錄可以認爲是 “生物密碼” 和 “授權登錄” 的結合。用戶可以在 Android 手機上創建一個基於公鑰(私鑰吧?)加密的密鑰憑據,創建密鑰的時候需要對本人進行生物特徵識別,比如 “指紋” 或者 “面部識別” 等

創建完畢後,這個密鑰憑據可用於解鎖(登錄)所有在線帳戶 —— 既可以解鎖 Android 手機上的帳戶,也可以解鎖附近所有設備的帳戶。是的,這個 FIDO 密匙登錄功能由微軟 / 蘋果 / 谷歌聯合出品,屬於行業標準。因此它是跨平臺的,包括 Windows、macOS 和 iOS 以及 ChromeOS。換而言之,你可以用 Android 手機的密鑰憑據解鎖上述所有系統的帳戶和網站。

不過,現在這個密鑰登錄功能還不完善,只是一個重要的里程碑,實現了兩個關鍵功能:

1.用戶可以在 Android 設備上創建和使用密鑰,密鑰通過 Google 密碼管理器 進行同步。

2.開發人員可以通過 WebAuthn API、Android 和其他支持的平臺,使用 Chrome 在網站上爲用戶構建密鑰支持。

密鑰登錄功能的下一個里程碑是原生的 Android 應用 API,原生 API 將爲應用程序提供多種登錄方式,用戶可以選擇密鑰登錄,或是使用已保存的密碼登錄。

期待下一個里程碑出現!

參考

1、蘋果,微軟,Google終於決定要幹掉密碼了!

2、即刻探索 | Android 和 Chrome 現已支持密鑰

3、谷歌正式推出 “密鑰登錄”,逐步取代傳統密碼登錄9

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章