跳到主要内容

ZTXBAS

面向现代应用的抗钓鱼生物识别认证

作为独立产品,ZTXBAS 是一个免费的自托管生物识别认证服务器,适合希望在自己的应用中加入生物识别认证的开发者。运行一个容器,让示例应用连接到它,再使用 ZTXBAS 移动应用扫描二维码,即可获得可用的抗钓鱼生物识别登录,无需 CoreZT 账号、许可证服务器或回传依赖。

ZTXBAS 也可作为 ZTXGate 内的一项授权功能提供。在这种模式下,它以库的形式紧密集成,无需单独部署 ZTXBAS 服务器。集成功能可用于联网、本地部署、混合以及完全隔离的 ZTXGate 部署。

传统 MFA 的问题

  • SMS 验证码可能通过 SIM 卡交换攻击被截获。
  • TOTP 令牌可能被实时钓鱼代理捕获。
  • 推送通知可能遭遇 MFA 疲劳攻击。
  • 硬件令牌成本较高,也容易遗失。

传统 MFA 是为另一个时代设计的。现代钓鱼攻击可以实时运行,并即时中继凭据和验证码。

ZTXBAS 的工作方式

ZTXBAS 将生物识别验证与加密的**来源绑定(origin binding)**相结合——每个认证请求都绑定到您的应用来源,因此在 phishing.example.com 上窃取的批准无法重放到 app.example.com

ZTXBAS

认证流程

  1. 用户在您的应用中发起登录。
  2. 应用使用用户标识符和来源调用 POST /v1/auth/challenge
  3. ZTXBAS 根据为应用注册的来源验证该来源,并将挑战推送到用户手机。
  4. 用户通过 Face ID / Touch ID / 指纹批准请求。
  5. 应用轮询 GET /v1/auth/status/{id},或接收已签名的 webhook。成功后,应用获得一个与用户和来源绑定的短期 ES256 JWT 身份断言
  6. 应用使用 /.well-known/jwks.json 中的公共 JWKS 验证 JWT,并创建自己的会话。

JWT 是安全边界——RP 无需仅依赖传输层本身来建立信任。

为什么 ZTXBAS 具备抗钓鱼能力

  • 来源绑定。 每个挑战都绑定到已注册来源;移动应用会在用户批准前显示该来源。
  • 设备绑定密钥。 私钥保存在 Secure Enclave / TEE 中,生物识别模板不会离开设备。
  • 无共享密钥。 没有可被截获、钓鱼或重放的共享秘密,只有短期签名断言。

您将获得什么

ZTXBAS 服务器

单一容器。使用 SQLite(WAL)存储,无需部署其他组件。

  • HMAC-SHA256 签名 API——约十几个端点
  • 已签名 JWT 身份断言 + 公共 JWKS
  • 带 HMAC 签名载荷和重试机制的 webhook
  • 内置管理控制台(应用、用户、来源、实时挑战)
  • 结构化 JSON 日志、按应用限流
  • 生产环境使用 HTTPS;开发环境允许在 127.0.0.1 上使用 HTTP

分发方式:

  • GitHub Container Registry 上的 OCI 镜像:ghcr.io/corezt/ztxbas
  • GitHub Releases 页面上的静态 Linux 二进制文件(amd64、arm64)

ZTXBAS 移动应用

ZTXBAS 和 ZTXGate 使用同一个移动应用——以后升级服务器时无需更换手机端应用。

  • iOS — Face ID / Touch ID、Secure Enclave 密钥存储、iOS 14+   App Store
  • Android — 指纹 / 人脸、硬件支持的 keystore、Android 8+   Google Play

SDK

官方 SDK 可处理 HMAC 签名、轮询和 JWT 验证:

  • Gogithub.com/corezt/ztxbas/sdk-go
  • Node / TypeScript@corezt/ztxbas
  • Pythoncorezt-ztxbas

ZTXBAS 与 ZTXGate

独立 ZTXBAS 与集成在 ZTXGate 中的 ZTXBAS 使用相同的移动认证器,但部署模式不同。

使用模式独立 ZTXBASZTXGate 中的 ZTXBAS
主要用途为您自己的应用添加生物识别认证在 ZTXGate 访问策略中执行增强型生物识别认证
定价模式免费独立产品ZTXGate 授权功能
服务器部署单独的 ZTXBAS 服务器/容器无需单独的 ZTXBAS 服务器;以库形式紧密集成
联网部署支持支持
隔离部署支持支持
移动应用ZTXBAS 移动应用同一个 ZTXBAS 移动应用

如果您要直接在应用中集成生物识别认证,请使用独立 ZTXBAS。如果您正在使用 ZTXGate,则授权的集成功能属于 ZTXGate 访问架构的一部分,而不是需要额外安装和维护的另一台服务器。

集成

# 请求认证挑战
curl -X POST https://ztxbas.example.com/v1/auth/challenge \
-H "X-Application-ID: app_a1b2c3d4e5" \
-H "X-Signature: <HMAC-SHA256 signature>" \
-H "Content-Type: application/json" \
-d '{
"email": "alice@example.com",
"origin": "https://app.example.com"
}'

# 响应
{
"challenge_id": "ch_abc123",
"expires_in": 120,
"origin_display": "Example App",
"origin_url": "https://app.example.com",
"challenge_hmac": "..."
}

SDK 会为您完成签名——手工实现比较繁琐。完整的端到端示例请参阅入门指南

安全设计

  • 生产环境强制 HTTPS;仅在 loopback 上允许 HTTP
  • HMAC-SHA256 请求签名,采用时序安全比较
  • JWT 签名密钥在首次运行时自动生成,文件权限模式为 0600
  • 管理控制台:PBKDF2-HMAC-SHA256 密码哈希(60 万次迭代)、会话 Cookie,可选使用 ZTXBAS 自身提供生物识别保护
  • SQLite 使用 WAL 模式,文件权限模式为 0600
  • 日志中不记录秘密信息;结构化 JSON 输出到 stdout
  • 公共端点按应用限流,管理端按 IP 限流

完整信息请参阅加固指南

独立产品定价

独立 ZTXBAS 免费提供。可下载的二进制文件和容器镜像通过 GitHub 提供,并受 CoreZT EULA 约束。独立产品无需 CoreZT 账号、遥测或许可证服务器。

集成在 ZTXGate 中的 ZTXBAS 功能则作为 ZTXGate 部署模式的一部分进行授权。

常见问题

如果用户丢失手机怎么办?

通过 DELETE /v1/users/{id}(或管理控制台)注销用户——该设备的密钥会立即失效。随后通过您的账户恢复流程,在新设备上重新注册用户。

独立 ZTXBAS 可以离线运行吗?

可以。独立 ZTXBAS 是自托管的,可运行在隔离网络中。注册邮件需要 SMTP,因此隔离部署可以使用内部邮件中继。集成在 ZTXGate 中的授权 ZTXBAS 功能同样可用于隔离的 ZTXGate 部署,并且无需单独的 ZTXBAS 服务器。

ZTXBAS 与 passkey / WebAuthn 有何区别?

两者都具备抗钓鱼能力。当客户端是您可控的浏览器时,passkey 原生集成于浏览器,非常适合使用。ZTXBAS 则采用由服务器协调的推送流程,可用于任何客户端(移动应用、CLI、服务到服务),并向服务器端提供统一的已签名 JWT。二者可以互补:浏览器登录使用 passkey,增强认证、移动或非浏览器流程使用 ZTXBAS。

ZTXBAS 是否获得 FIDO 认证?

没有。ZTXBAS 使用类似的密码学原语(设备端 ECDSA、传输中的 HMAC、向 RP 提供 JWT),但并未获得 FIDO 认证。

什么时候应该改用 ZTXGate?

独立 ZTXBAS 以每个实例支持一个应用为主要模型,采用自托管方式并提供本地管理控制台。如果您需要多租户、管理员 RBAC 与 SSO、SCIM、设备姿态集成、SIEM 导出,或面向整个网络的访问执行(VPN / RDP / SSH / 传统应用),则应使用 ZTXGate。当 ZTXBAS 与 ZTXGate 一起授权时,它以库的形式集成,而不是作为单独的 ZTXBAS 服务器部署。

开始使用

由 CoreZT 提供 · 如需网络范围的零信任访问,请了解 ZTXGate