假设 Alice 在一项服务上创建了一个新帐户,该服务保存了她的指纹作为以后登录的一种方式。然后 Alice 在新服务上创建了一个新帐户,但不幸的是,第二个服务没有得到适当的保护,并且生物特征数据从他们的数据库中泄露,如果不再是秘密,Alice 将如何在任何其他身份验证中再次使用她的指纹?
在此之后,任何人都可以在正常的 API 请求中将她(泄露的)指纹数据附加到服务并冒充她,对吗?
我是否正确理解生物特征认证?
假设 Alice 在一项服务上创建了一个新帐户,该服务保存了她的指纹作为以后登录的一种方式。然后 Alice 在新服务上创建了一个新帐户,但不幸的是,第二个服务没有得到适当的保护,并且生物特征数据从他们的数据库中泄露,如果不再是秘密,Alice 将如何在任何其他身份验证中再次使用她的指纹?
在此之后,任何人都可以在正常的 API 请求中将她(泄露的)指纹数据附加到服务并冒充她,对吗?
我是否正确理解生物特征认证?
当人们谈论 Web 的生物特征认证时,通常指的是Web Authentication 标准;一种新的、标准化的用户身份验证方法,已在许多流行的 Web 浏览器中实施。
Web 身份验证标准确实允许用户使用生物特征身份验证(例如指纹)登录网站,但它不像您在问题中假设的那样工作。正如您正确推测的那样,从安全和隐私的角度来看,将用户指纹的副本发送到网站供他们存储都是很糟糕的。
值得庆幸的是,Web 身份验证标准不是这样工作的。相反,它通过生成特定于站点的私钥并将该密钥存储在用户设备的某个位置来工作。然后,当用户想要登录站点时,他们的浏览器使用此存储的密钥向站点证明用户的身份,使用公钥身份验证,登录。
那么生物识别技术从何而来呢?使用 Web 身份验证标准,网站可以请求用户的浏览器在本地验证他们的身份,然后才允许他们使用存储的公钥登录。这种本地验证可以使用生物识别技术以及其他方法来完成。W3C 标准文档解释说:
6.2.3. 身份验证因素能力
在身份验证仪式期间,可以使用三大类身份验证因素来证明身份:你拥有的东西、你知道的东西和你是的东西。示例分别包括物理密钥、密码和指纹。
所有 WebAuthn Authenticators 都属于你所拥有的类,但支持用户验证的身份验证器也可以作为一种或两种额外的身份验证因素。例如,如果身份验证器可以验证 PIN,则 PIN 是您知道的,而生物特征验证器可以验证您的身份。因此,支持用户验证的身份验证器具有多因素能力。相反,不具备多因素能力的身份验证器具有单因素能力。请注意,单个具有多因素能力的身份验证器可以支持多种用户验证模式,这意味着它可以充当所有三种身份验证因素。
尽管用户验证在身份验证器上本地执行,而不是由依赖方执行,但身份验证器通过在返回给依赖方的签名响应中设置 UV 标志来指示是否执行了用户验证。因此,信赖方可以使用 UV 标志来验证在注册或认证仪式中是否使用了额外的认证因素。反过来,可以通过检查认证者的证明声明来评估 UV 标志的真实性。
由于此验证在用户设备本地进行,因此用户的指纹信息泄露给攻击者的可能性很小。此外,由于指纹只是 WebAuthn 密钥的额外保护层,因此以某种方式获得用户指纹副本的攻击者将无法使用它来登录他们的帐户,而不会窃取用户的设备私钥存储在。
总结一下:虽然生物识别技术本身并不是在网络上验证用户身份的好方法,但它在实践中的实现方式实际上是相当安全的。实际上比密码要多得多。
你没有错。这就是为什么生物识别通常不用作身份验证的唯一因素。
生物识别技术,如指纹,一开始就不是秘密
生物识别技术是弱身份验证,因为生物学会发生变化,手指会被移除/伤痕累累/烧伤/等。
除纯数据外,用于身份验证的生物特征通常需要其他一些生物特征因素
生物识别技术永远不会是通过互联网直接验证用户身份的安全方式。
但是,它们可以安全地用作信任链的一部分,将用户作为信任链的一部分进行身份验证。
这就是安全实现的工作方式:
用户从不使用生物特征对互联网服务进行身份验证。相反,用户对本地设备(指纹读取器、手机等)进行身份验证,然后该设备对服务进行身份验证。服务信任设备执行用户身份验证。
请注意,服务本身是如何从不接收生物识别信息的——因此它们不会通过服务或数据库泄露而泄露。
您可能会想:“但这只是将问题转移到设备上,它实际上并没有解决任何问题! ”。在某种程度上,你是对的。然而,事实证明,在实践中,对设备进行身份验证比对人员进行身份验证要容易得多。设备:
在验证设备而不是用户时,还存在其他重要的安全差异。设备:
最后,您可能想知道设备如何首先对服务进行身份验证。
有很多技术可以实现这一点。它们通常涉及设备存储密钥,然后使用身份验证加密协议。
当您验证指纹时,您将指纹与一些以前存储的数据进行比较。
如果每个身份验证服务都存储相同的数据,那么一个服务的数据泄漏会危及其他服务。此外,如果任何服务存储了指纹的完整副本,则该副本可用于在任何其他服务上进行身份验证。
解决方案是每个身份验证服务应该只存储一小部分随机采样的指纹数据,那么使用该数据在另一个正在执行相同操作的服务上进行身份验证的机会将非常小。
原因是存储在每个服务上的数据集几乎没有重叠,因为它们由随机采样点组成。
需要在采样足够的数据以使服务不会错误地将条目授予错误的用户,以及不采样太多与其他服务上的数据相关的数据之间取得某种平衡。
另一种选择是身份验证服务不存储实际的指纹数据。就像许多服务只存储密码的哈希值(而不是实际密码)一样。每次扫描的生物特征数据都将相似,但并不准确。可能有人可以开发一种特殊类型的散列算法,适用于比较相似但不准确的数据。例如,相似的输入数据生成相似的散列,散列的差异与数据的差异成正比。然后,该服务将只评估天气或扫描数据的散列是否与存储的散列足够接近。