跳转到主要内容
基于 NFC 的认证允许您利用手机的 NFC 功能读取嵌入在现代护照和身份证件中的安全芯片,从而验证身份证件。这为身份证件验证提供了目前可用的最高安全级别。
NFC 交互

核心优势


如何启用 NFC 验证

原生 SDK 集成 (推荐)

NFC 验证可通过我们的原生 SDK实现,这些 SDK 提供了对设备 NFC 功能的完全访问权限: iOS SDK 会自动处理所有 NFC 配置,包括:
  • 针对电子护照的 ISO7816 应用程序标识符
  • 权限和功能的设置
  • 带有直观视觉反馈的实时芯片读取

Web 集成

⚠️ 浏览器限制 由于平台限制,NFC 验证在 Web 浏览器中不可用: 对于 Web 集成,系统会自动跳过 NFC 验证,用户将继续进行标准的证件加自拍照验证。

工作原理

会话发起

用户通过您的应用或平台启动验证流程:
  • 原生 SDK:直接在您的应用内启动验证工作流
  • Web/移动端 Web:引导用户使用 Didit App 进行支持 NFC 的验证,或继续进行标准验证

证件拍照采集

用户拍摄其身份证件照片,采集以下内容:
  • MRZ(机读区):用于派生芯片访问密钥
  • 证件正反面图像:视觉数据与防伪特征
  • 视觉防伪特征:全息图、水印、缩微印刷

NFC 支持检测

系统自动检查设备与证件的兼容性:
若 NFC 不可用,验证将无缝切换为标准的证件 + 生物识别验证继续进行。

NFC 芯片读取

对于兼容的设备与证件:
  1. 引导用户将证件贴近手机的 NFC 读取区域
  2. 视觉反馈实时显示读取进度
  3. 使用 PACE/BAC 协议与芯片建立安全通信

数据提取

系统遵循 ICAO 9303 标准从芯片中提取完整数据:

密码学验证

提取的数据将经过严格的密码学验证:
将每个数据组的哈希值与 SOD 中存储的签名进行核对验证,确保数据完整性。
验证信任链:证件证书 → 国家签名 CA → ICAO PKD 根证书,对照 CSCA 主列表和 ICAO 公钥目录进行核验。
对照证书吊销列表(CRL)核验证书,确保其未被吊销且证件未被报告为失窃或已遭到泄露。
将 NFC 提取的数据与证件照片的 OCR 数据、人脸生物特征比对结果以及 MRZ 校验和验证进行交叉核验。

结果与置信度分数

最终验证结果包括:

支持的证件

NFC 验证适用于包含 NFC 芯片的电子护照和电子身份证,证件上通常带有此标识:
ePassport Logo
2006 年之后签发的大多数护照均包含 NFC 芯片。国民身份证的支持情况因国家/地区而异。查看所有支持的证件。 日本个人编号卡(My Number Card)采用不同类型的芯片,通过 JPKI 而非 ICAO 9303 读取。请参阅日本个人编号卡 (JPKI)。

日本个人编号卡(JPKI)

日本个人编号卡(マイナンバーカード)内含芯片,但并非 ICAO 9303 芯片。它包含依据日本公钥基础设施(JPKI)签发的证书,以及仅在持卡人输入卡片 PIN 码后才进行签名的私钥。Didit 在相同的 NFC 步骤中通过 JPKI(而非 ICAO 9303)读取该卡片,每个 NFC 结果都会在 chip_protocol(icao 或 jpki)中指明所使用的协议。
尚未开放。通过 JPKI 读取个人编号卡的功能尚未在生产环境中启用。在启用之前,原生 SDK 中捕获的个人编号卡将跳过 NFC 步骤,跳过原因标记为 JPKI_UNAVAILABLE,卡片将一如既往地通过证件采集和人脸比对进行验证。

要求

用户的操作步骤

拍摄卡片照片

用户在身份证件验证步骤中拍摄个人编号卡,与处理任何其他证件一致。Didit 会识别该卡片,并发起 JPKI NFC 步骤,而不是护照芯片读取。

输入卡片 PIN 码

SDK 会提示输入卡片的 4 位 PIN 码(利用者証明用電子証明書の暗証番号)。当 NFC 节点的 jpki_request_attributes 设置开启时(默认开启),还会要求输入签名密码,也称签名 PIN 码(署名用電子証明書の暗証番号,6 至 16 位大写英文字母和数字)。

将卡片贴近手机

SDK 读取卡片证书,卡片会使用其自身的密钥对来自 Didit 的一次性挑战进行签名。SDK 上传证书和签名。PIN 码仅发送给卡片,绝不会传输给 Didit。
卡片会记录错误输入次数:连续输入错误 3 次后将锁定 4 位 PIN 码,连续输入错误 5 次后将锁定签名密码,被锁定的 PIN 码或签名密码必须由持卡人在所属的市区町村役所进行重置。输入错误后,SDK 会显示剩余尝试次数。SDK 绝不会进行最后一次尝试:当只剩一次机会时,它会停止尝试并告知用户在何处进行重置。请提醒用户在开始前准备好其 PIN 码和签名密码。

Didit 核验的内容

每项操作都是 NFC 节点上的配置项,因此您可以将其更改为无操作、审核中或已拒绝。请参阅 NFC 警告和 NFC 功能配置。

未核查吊销状态的含义

revocation_status: "unchecked" 表示 Didit 已验证证书链和卡片签名,但未能获取证书是否已被吊销的响应。例如,当卡片挂失时,证书会被吊销。由于无法排除卡片已被吊销的可能性,unchecked 绝不会被视为 good。它会触发 JPKI_REVOCATION_UNCHECKED,默认情况下将 NFC 步骤转入审核中。您可以通过 jpki_revocation_unchecked_action 选择其他结果。 当证书链或签名无效时,Didit 不会查询吊销状态:状态将保持为 unchecked,且仅触发证书链或签名警告。

持卡人数据与隐私

  • 开启 jpki_request_attributes 后,决策结果将在 jpki.attributes 下包含签名证书中的持卡人姓名、出生日期、性别和地址。关闭该项时,用户只需输入 4 位 PIN 码:读取过程仍会验证卡片和 PIN 码,但不携带持卡人数据,亦不会与卡片照片进行比对。
  • NFC 步骤绝不会从芯片中读取卡片的 12 位个人编号(My Number)。
  • 决策结果仅报告卡片所证明的内容,绝不会包含证书本身、其序列号或签名。
完整结果详见 NFC 验证报告。

集成示例

iOS SDK(现已开放)

完整 iOS SDK 文档 →

Android SDK(现已开放)

Android SDK 文档 →

安全架构


常见问题

最后修改于 2026年11月7日