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

安全 应用安全
图省事所有网站用同一个密码,一个泄露了,手忙脚乱地去改密码?网站被脱库,数据库信息泄露,密码丢失?这一切都的根本原因就是:服务器保存了我们的密码(不管是明文的还是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的支持,说一年后在各个平台上提供无密码功能。承诺能不能实现,我们只有拭目以待。

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

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

责任编辑:武晓燕 来源: 码农翻身
相关推荐

2021-05-21 11:06:28

微软IE浏览器系统

2021-04-27 10:26:57

微软Linux桌面

2015-07-27 18:23:13

google

2019-07-15 07:12:38

微软Windows 10密码

2015-12-15 10:32:44

chromecss开发

2022-02-19 23:40:31

iOS苹果Face ID

2012-06-29 13:35:55

2022-06-07 22:16:49

iPadOS苹果iPad

2014-12-01 11:20:28

Win8.1微软

2023-12-19 11:22:05

2009-12-25 14:34:21

Windows 8竞争对手

2022-07-27 10:34:29

GoogleC++系统

2019-05-09 10:43:12

微软苹果谷歌

2021-05-27 09:41:31

苹果 谷歌微软

2021-06-11 15:22:39

苹果 iOS系统

2017-09-18 15:09:42

苹果

2012-12-11 15:03:13

2014-03-27 13:18:21

2013-05-16 11:34:27

Google苹果

2023-09-06 18:21:28

Linux桌面服务器
点赞
收藏

51CTO技术栈公众号