当用户希望他人模仿他们时,如何证明用户身份



我有一个有趣的问题。假设我们有一个用户Bob,他登录到某个服务。假设Bob主动地希望其他人尝试模仿他,该服务如何证明Bob的身份?即,我们如何才能确定登录的用户确实是Bob?

  • 使用Bob的MAC/IP地址是行不通的,因为这些地址很容易被欺骗
  • 用户名/密码作为身份验证的手段是不起作用的,因为Bob可以将这些凭据提供给任何人
  • 公钥系统(例如使用RSA进行签名)不起作用,因为Bob只能与任何人共享他的私钥

我主要需要的是Bob有一些身份证明,他不能共享(或者至少考虑到Bob拥有的所有信息,其他人很难复制)。

编辑(如果有用的话):我正在使用iOS应用程序(Bob)和Python web服务器(服务)。

备选方案:

  • 用户在身份验证过程中必须出示的硬件令牌,如usb令牌或加密智能卡

  • 无法共享生物识别。例如指纹/语音/耳朵/虹膜识别。在某些情况下,你需要一个阅读器(请注意,指纹生物特征数据在移动设备中不可用),你必须使用置信区间和庞大的数据库进行比较。ID从来都不是100%可靠的。

  • 管理不可提取密钥的公钥密码系统。用户端的加密提供程序允许生成或导入可以标记为不可提取的密钥,并且不能导出到外部。例如WebCryptographyApi、AndroidKeyStore、iOS KeyChain或Window密钥库。在用户注册期间,生成一个公钥和私钥对。公用文件被发送到和用户帐户关联的服务器,而专用文件则被安全存储。身份验证是通过使用私钥的数字签名来完成的。

请参阅FIDO UAF(通用身份验证框架)和FIDO U2F(通用第二因素)

https://fidoalliance.org/about/what-is-fido/

关于iOS KeyChain,它允许将密钥标记为不可提取。请参阅Apple文档

重要

如果未设置CSSM_KEYATTR_EXTRACTABLE位,则无法以任何形式(包括包装形式)从密钥链中提取导入的密钥。

还可以通过程序从Mac钥匙链中存储和检索私钥

最新更新