1

苹果,微软,Google终于决定要干掉密码了!

 1 year ago
source link: https://www.51cto.com/article/740015.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

苹果,微软,Google终于决定要干掉密码了!

作者:码农翻身刘欣 2022-11-17 09:23:37
图省事所有网站用同一个密码,一个泄露了,手忙脚乱地去改密码?网站被脱库,数据库信息泄露,密码丢失?这一切都的根本原因就是:服务器保存了我们的密码(不管是明文的还是Hash过的)。

说起密码,你会想起什么?

密码太多,记不住?

图省事所有网站用同一个密码,一个泄露了,手忙脚乱地去改密码?

网站被脱库,数据库信息泄露,密码丢失?

这一切都的根本原因就是:服务器保存了我们的密码(不管是明文的还是Hash过的)。

我们需要把自己记忆的密码发给服务器做验证,这就给了攻击者可乘之机。

图片

那能不能别保存密码了,换个方式,让服务器保存我们的指纹、虹膜等信息,行不行?

万万不可,这样虽然不用记忆各种密码了,但攻击者一旦获得这些生物信息,那就可以假冒我们,真是可以为所欲为了。

并且本质上它和保存密码是一样的,都是“和服务器共享了一个秘密”。

那就别和服务器共享秘密了吧!可是如果不共享,服务器怎么知道“你就是你”呢?服务器无法做身份验证(Authentication)了!

这个问题早在几十年前就被迪菲和赫尔曼考虑过了,他们提出了非对称的密钥算法。

这种算法中每个人可以持有一对密钥:public key (公钥)和 private key (私钥)。

图片
图片

只不过,迪菲和赫尔曼并没有找到一个合适的算法来生成公钥和私钥, 一年后,麻省理工学院的三个教授基于大数的因数分解提出了RSA算法,才解决了这个问题。

利用非对称这种漂亮的性质,我们为自己的账号生成一对儿公钥和私钥。

私钥自己保存,公钥发给服务器保存,这样就不用和它共享秘密了。

图片

登录的时候,服务器给我们发一段随机消息,我们对它做签名(即对消息做Hash ,然后用本地保存的私钥加密),把签名发给服务器,服务器用对应的公钥来验证签名,如果签名没问题,就证明了这的确是一次合法的登录。

私钥非常重要,不能让任何人知道,不能发给任何系统,最好是保存在本地的一个硬件中,通过指纹、面部识别、声音、PIN等方式来访问。 

图片

这里引入了一个新的抽象层,认证器,让它和服务器打交道,我们只是用指纹等手段授权对私钥的访问。

计算机的任何问题都可以引入一个抽象层来解决,真是至理名言。

用这种方式,登录将会变成这样:

图片

1.输入用户名

2.点击登录

3.生物识别(指纹等)

4.登录成功

即使网站被脱库,攻击者拿到了公钥,也没法冒充你干坏事,因为公钥本来就是公开的。

他想获得私钥的途径就是拿到认证器(比如保存在手机中),但是想使用认证器还需要你的指纹等生物信息,这对于茫茫互联网上两个未曾谋面的人来说太难了。

说到这里,不由地再感慨一下,提出和实现非对称密钥的前辈们实在是太伟大了。

这种认证方式不是我想出来的,是一个叫做FIDO(Fast IDentity Online)联盟提出想法,并且制定了一系列FIDO协议。 

FIDO概念简单,想真正实现是很难的。

我们用浏览器登录网站的时候,网站系统得改造,支持FIDO协议。

浏览器也得支持FIDO协议,可以提示用户用FIDO的方式注册或者登录。

浏览器还需要和认证器进行交互,用户提供生物信息授权访问认证器,这就得需要硬件和操作系统出马了。

如果笔记本和台式机没有指纹识别等设备,还得考虑和手机的联动(例如让手机扫个二维码,然后使用手机端认证器。)

这涉及到多方利益,是个生态系统,不是一家公司能搞定的,所以FIDO是个联盟,包含了全世界的IT大佬。

图片

在这些IT大佬中,有三位举足轻重:

  • Google :   Android + Chrome浏览器
  • Apple :iOS + Safari浏览器
  • 微软:  Windows + Edge浏览器 

这三位几乎统治了操作系统和浏览器市场,没有它们的参与,FIDO是玩不起来的。 

今年5月,Google , Apple和微软宣布加大力度,推进对FIDO通用无密码登录标准的支持,努力实现无缝、安全的无密码登录:

1.允许用户在多个设备(甚至新设备)上自动访问FIDO登录凭证(私钥),而不需要重新注册户

2. 在任何操作系统和浏览器上,当用户想用FIDO登录网站的时候,手机都可以用来做验证。例如,苹果手机可以帮助验证Edge浏览器上的FIDO登录。

如果能做到这两点,密码就真的被干掉了。

当然,新事物的发展不会那么一帆风顺的,尤其是牵扯到各方利益的情况下。

FIDO联盟2012年就成立了,2014年发布FIDO UAF和U2F协议,2019年FIDO2协议中的WebAuthn被W3C接受为互联网的标准。同年Microsoft Hello 通过FIDO2兼容认证。

直到今年,三巨头才宣布要加大对FIDO的支持,说一年后在各个平台上提供无密码功能。承诺能不能实现,我们只有拭目以待。

也许有一天,你突然发现,你用指纹识别就可以登录网站了,到时候可以回过头来看看这篇文章。 

最后留个小问题吧:如果保存私钥的设备(例如手机)丢失了,该怎么办?​

责任编辑:武晓燕 来源: 码农翻身

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK