当前位置: 首页 > 科技观察

苹果、微软、谷歌终于决定杀掉密码!

时间:2023-03-21 11:07:01 科技观察

说到密码,你会想到什么?密码太多记不住?为了省事,所有网站都用同一个密码,万一泄露了,赶紧改密码?网站脱库,数据库信息泄露,密码丢失?这一切的根本原因是:服务器保存了我们的密码(无论是明文还是哈希)。我们需要将记住的密码发送给服务器进行验证,这就给了攻击者可乘之机。那你能不能不保存密码,让服务器保存我们的指纹、虹膜等信息,好吗?绝对不是,所以虽然不用记住各种密码,但是一旦攻击者得到了这些生物信息,就可以冒充我们,真正为所欲为。本质上它和保存密码一样,都是“与服务器共享一个秘密”。然后不要与服务器共享秘密!但是如果不共享,服务器怎么知道“你就是你”呢?服务器无法进行认证(Authentication)!这个问题在几十年前就被Diffie和Hellman考虑过了,他们提出了非对称密钥算法。在这个算法中,每个人都可以持有一对密钥:公钥(publickey)和私钥(privatekey)。然而,Diffie和Hellman并没有找到合适的算法来生成公钥和私钥。一年后,麻省理工学院的三位教授提出了基于大数分解的RSA算法来解决这个问题。这个问题。利用不对称的美丽本质,我们为我们的账户生成了一对公钥和私钥。私钥自己保管,公钥发送到服务器保存,这样就不需要和它共享秘密了。登录时,服务器向我们发送一条随机消息,我们对其进行签名(即对消息进行哈希处理,然后用本地保存的私钥加密),将签名发送给服务器,服务器使用对应的公钥进行验证签名,如果签名没有问题,证明这确实是一个合法的登录。私钥非常重要,不能被任何人知道或发送到任何系统。最好是存储在本地硬件中,通过指纹、人脸识别、语音、PIN等方式访问。这里引入一个新的抽象层,authenticator,让它和服务器打交道,我们只是用指纹和授权访问私钥的其他方式。一句名言是,计算机的任何问题都可以通过引入抽象层来解决。这样登录就会变成这样:1.输入用户名2.点击登录3.生物识别(指纹等)4.登录成功即使网站下线,攻击者拿到公钥,不可能冒充你做坏事,因为公钥已经公开了。他想要获取私钥的方式是获取认证器(比如保存在手机里),但是要使用认证器,需要指纹等生物识别信息,这对于从未接触过的两个人来说太难了在广阔的互联网上相遇。.说到这里,不禁再次感叹,提出并实现了非对称密钥的前辈们真是太棒了。这种认证方式不是我想出来的。它是一个名为FIDO(FastIDentityOnline)联盟的理念,制定了一系列的FIDO协议。FIDO的概念很简单,实现起来却很难。当我们用浏览器登录网站时,网站系统不得不修改以支持FIDO协议。浏览器还必须支持FIDO协议,可以提示用户使用FIDO注册或登录。浏览器还需要与认证器进行交互,用户提供生物识别信息以授权访问认证器,这需要硬件和操作系统。如果笔记本电脑和台式机没有指纹识别等设备,就得考虑与手机联动(比如让手机扫描二维码,然后使用移动端认证器)。这涉及到多方利益,它是一个生态系统,而不是一家公司。大功告成,所以FIDO是一个联盟,包括来自世界各地的IT大佬。在这些IT巨头中,有三个非常重要:谷歌:Android+Chrome浏览器苹果:iOS+Safari浏览器微软:Windows+Edge浏览器这三个几乎统治了操作系统和浏览器市场,没有他们的参与,FIDO根本玩不转。今年5月,谷歌、苹果和微软宣布加大力度推动对FIDO通用无密码登录标准的支持,力争实现无缝、安全的无密码登录:1.允许用户在多台设备(甚至是新设备)上登录无需重新注册账号,自动获取FIDO登录凭据(私钥)2、在任何操作系统和浏览器上,当用户想要使用FIDO登录网站时,都可以使用手机进行验证。例如,iPhone可以帮助验证Edge浏览器上的FIDO登录。如果能做到这两点,密码就真的被秒杀了。当然,新事物的发展不会那么顺利,尤其是涉及到各方利益的时候。FIDO联盟成立于2012年,2014年发布了FIDOUAF和U2F协议,2019年FIDO2协议中的WebAuthn被W3C接纳为互联网标准。同年,微软Hello通过了FIDO2兼容认证。直到今年,三巨头才宣布加大对FIDO的支持力度,称一年后将在各平台提供免密码功能。承诺能否兑现,只能拭目以待。也许有一天,你突然发现可以用指纹识别登录网站,到时候可以回头看看这篇文章。最后留一个小问题:存放私钥的设备(比如手机)丢失了怎么办?