USB虚拟化应用5:VirtualFIDO2 虚拟硬件安全密钥,智能卡,yubico,支持X,FB,GITHUB等各种网站双重认证,让你的账户登录绝对安全

发布于:2025-09-01 ⋅ 阅读:(13) ⋅ 点赞:(0)

测试视频

VirtualFido2设备,支持x,github,Fb等网站登录认证

在这里插入图片描述

VirtualFido2-USB

English | 中文

概述

VirtualFido2-USB 是一个虚拟 FIDO2 安全密钥实现,提供 WebAuthn 身份验证功能。本项目实现了 FIDO2 规范,创建了一个基于软件的认证器,可用于无密码身份验证。

FIDO2 设备工作流程

下图展示了完整的 FIDO2 设备身份验证工作流程,包含所有18个详细步骤:

完整工作流程步骤(18步)

第一阶段:设备初始化

  1. 设备初始化:创建CA的公钥、私钥和证书
  2. 凭据密钥创建:创建生成凭据的公钥、私钥和基于CA证书的凭据证书
  3. PIN通信设置:创建PIN通信的公钥私钥

第二阶段:凭据注册

  1. 客户端请求:客户端请求MakeCredential
  2. PIN支持检查:设备检测是否支持PIN,若是则检测是否已经设置PIN
  3. PIN设置要求:若未设置PIN,则返回错误码,告诉client需要设置PIN
  4. 密钥协商:客户端发送getKeyAgreement获取密钥交换信息,计算共享密钥
  5. PIN加密:客户端使用共享密钥对用户输入密码进行加密,将加密后的密码和自己的公钥信息一并发送给设备
  6. PIN解密:设备收到setPIN请求后,使用客户端发送过来的公钥信息生成共享密钥,使用共享密钥对加密过的PIN码进行解密,然后记录PIN码的hash值
  7. PIN令牌生成:客户端发送getPINToken请求,设备使用共享密钥对发送过来的加密过的pinHash进行解密,并与本地记录的pinHash进行对比验证,若匹配则返回使用共享密钥加密过的pinToken
  8. PIN设置完成:这时设备已经完成了PIN码的设置和pinToken的获取,若设备不支持PIN,则没有6~10的步骤
  9. PIN验证:继续接着步骤5,若设备支持PIN并且PIN已经设置,则根据客户端的请求对pinToken进行校验,如果pinToken校验失败,则返回PIN码错误信息
  10. 用户认证:设备不支持PIN,或者pinToken校验成功后,设备开始创建凭证,创建凭证前设备会通过一定的方式弹出认证UI,让用户决定是否允许创建凭证
  11. 凭据创建:用户允许后,设备开始创建凭证信息并将凭证信息发送给客户端,然后本地存储一份。凭据信息包含证书、公钥和随机生成的凭据ID

第三阶段:身份验证

  1. 认证请求:客户端请求GetAssertion认证,设备根据客户端传递过来的凭据ID查找本地是否存在对应的凭据信息
  2. 凭据不存在:若不存在,则返回凭据不存在的错误信息
  3. 凭据验证:若存在,则对token、rp等信息进行简单校验,然后将客户端传递过来的clientDataHash、rp信息和本地存储的凭据相关信息一并发送给客户端,并对这些数据进行签名
  4. 认证完成:客户端收到设备发送的Assertion数据,使用设备的公钥进行校验,然后对发送过来的凭证信息进行对比认证

主要特性

  • WebAuthn 合规性:完整实现 WebAuthn 规范
  • PIN 支持:可选的基于 PIN 的用户验证,包含安全密钥交换
  • 安全密钥管理:正确的密钥生成和存储
  • 基于证书的认证:CA 签名的凭据提供增强安全性
  • 跨平台:支持多种操作系统
  • 完整工作流程:实现 FIDO2 认证过程的所有18个步骤

安全考虑

  • 所有加密操作使用行业标准算法
  • PIN 传输使用共享密钥协商加密
  • 凭据安全存储,具有适当的访问控制
  • 基于证书的认证提供额外的安全层
  • PIN 设置和验证遵循安全协议

许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。

贡献

欢迎贡献!请随时提交 Pull Request。

支持

如有问题或需要支持,请在 GitHub 上创建 issue。


网站公告

今日签到

点亮在社区的每一天
去签到