通用第二因素

科技工作者之家 2020-11-17

通用第二因素(英语:Universal 2nd Factor,缩写U2F)是一个开放认证标准,使用专门的USB或NFC设备来加强并简化双因素认证,基于在智能卡中使用的类似安全技术。它最初由Google和YubiKey开发,含有NXP的贡献,该标准目前由FIDO联盟运作管理。

简介通用第二因子U2F)是一种开放式认证标准,它使用基于智能卡中类似安全技术的专用USB或NFC设备来加强和简化双因素认证(2FA)。由谷歌和Yubico最初开发,由恩智浦半导体提供支持,该标准现由FIDO联盟主办。

U2F安全密钥由谷歌浏览器自38版和自版本40以来的Opera提供支持。U2F安全密钥可作为支持U2F协议的在线服务(包括谷歌的两步验证的附加方法,Dropbox,GitHub,GitLab,Bitbucket,Nextcloud,Facebook等。

Chrome,Firefox和Opera目前是本地支持U2F的唯一浏览器。虽然微软的Edge浏览器和微软账户(包括Office 365,OneDrive和其他微软服务)的身份验证还没有U2F,微软已经启用了Windows 10的Windows Hello登录平台和EdgeFIDO 2.0支持。支持。Mozilla已将其集成到Firefox 57中,并在Firefox 60中默认启用它。1

支持服务U2F安全钥匙可作为一种额外的在线服务两步验证方式,Google、Dropbox、GitHub、Gitlab、Bitbucket、Nextcloud、Facebook等服务已提供支持。

客户端Google Chrome38版和Opera40版起支持U2F。微软计划在Windows 10和Edge浏览器中支持FIDO 2.0。Mozilla正在向Firefox增添支持,目前可以安装附加组件方式支持,在Firefox 57以上版本则可设置浏览器原生支持。2

服务器关联的密钥对U2F设备产生的密钥对应该是服务器关联的,一对密钥对应一个服务器,而不是一个U2F设备对应一个服务器。在注册的时候,服务器给U2F设备传入服务器相关信息,U2F设备产生一对密钥对,将此密钥对和服务器相关信息相关联,给此密钥对分配一个key handle,将其和公钥传给服务器,服务器将注册的账户信息,公钥,key handle全部关联在一起并保存。当用户需要使用U2F验证操作时,服务器产生Challenge数据,使用U2F设备做签名,此时服务器将key Handle和服务器信息通过浏览器传给U2F设备,U2F设备使用Key Handle,寻找对应的密钥对,如果密钥对存在,检验密钥对应的服务器信息是否和传入的服务器信息匹配,如果不匹配,说明服务器是伪造或者不正确的。如果正确,U2F设备等待用户按键确认,用户按键后,U2F设备对Challenge数据做签名,签名值返回给服务器,服务器验证签名值,如果签名正确,说明此公钥对应的唯一私钥是正确的,表明用户拥有合法的U2F设备,如果签名不正确,说明此用户正在伪造身份登录。可见,U2F验证身份是双向的,U2F验证服务器的真伪,服务器验证U2F的真假。2

验证U2F的真伪服务器需要一种方式,来确定用户使用的设备是服务器所授权和允许使用的,例如,某银行只使用了飞天诚信的U盾,银行服务器就应该有足够的认证信息,来判断用户使用的U盾就是飞天诚信的,而不是别的厂商制造的。这样对厂商版权有利,对银行安全性也有保障。一个厂商生产的一批U2F key中,他们应该都共享一对公共的根密钥对,使用此根密钥对来颁发证书,服务器将验证此证书的合法性,当然,验证使用的是对应的公钥。FIDO草案中,目前还未指明如何颁发跟密钥对的过程,这个过程还在修订中。2

本词条内容贡献者为:

宋春霖 - 副教授 - 江南大学

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。