Skip to content

Issuance Integrity

The IDToken trust model depends on a critical assumption: that every VDS was genuinely derived from a government-issued identity document. This page explains how the architecture enforces that guarantee — even if an issuance station is compromised.

The BioSeal Issuance Service is a pure signing service — it constructs the VDS, signs it with an HSM-backed key, and returns a cryptographically valid seal. BioSeal has no mechanism to verify that the payload data originated from an authentic document chip.

If a rogue application or compromised issuance station could call BioSeal directly with fabricated identity data, the result would be a validly signed VDS containing entirely fictional information.

VULNERABLE: Direct Station → BioSealPassport ChipIssuance StationBioSeal (HSM)VDSTRUST GAPRogue App(fabricated data)bypasses
ScenarioDescriptionImpact
Rogue appA fake IDToken app skips passport reading and submits arbitrary dataValidly signed VDS with fabricated identity
Stolen credentialsAttacker obtains BioSeal API credentials and calls it directlyValidly signed VDS without any document
Insider threatAuthorized operator deliberately issues VDS for non-existent identitiesVDS indistinguishable from legitimate issuance
Trust level inflationCompromised station claims level 3 for a photo-only issuanceRelying parties grant high-assurance access to weakly verified identities

The Solution: IDToken Server as Gatekeeper

Section titled “The Solution: IDToken Server as Gatekeeper”

The IDToken Auth Server sits between every issuance station and BioSeal. It holds the only BioSeal credentials, verifies the cryptographic proof from the passport chip, and only forwards verified payloads.

IDTOKEN ISSUANCE ARCHITECTUREIssuance Station(untrusted relay)1. Read NFC chip DG1, DG2, SOD, AA2. Biometric liveness + 1:1 face match3. Forward raw proof + identity data4. Receive VDS backPOST/admin/issuanceIDToken Auth Server(verification gatekeeper)AVerify SODDSC → CSCA chain (ICAO PKD)BVerify Active AuthChip signed challenge → genuineCCross-check payloadDG1 vs gn/fn/dob, DG2 vs faceDEnforce trust levelLevel 3 requires AA proofEAudit + call BioSealServer-to-server onlyBioSeal(internal, pure signer)HSM ECDSA P-256VDSICAO PKDCSCA certificates + CRLsRogue App(no chip proof → rejected)No public API — credentials held only by IDToken server
ConcernIDToken Server as gatekeeper
BioSeal API surfaceInternal only — no public exposure
Credential managementOnly the IDToken server holds BioSeal credentials
Verification logicICAO/SOD verification lives alongside VDS trust chain verification
AuditAll issuance events in one audit trail with authentication events
Blast radiusCompromised station has zero direct access to BioSeal

Every e-passport chip contains cryptographic proof that the IDToken server verifies independently.

The SOD is a CMS (PKCS#7) signed object containing:

  • Hash values of each Data Group (DG1 = MRZ data, DG2 = face photo, etc.)
  • The Document Signer Certificate (DSC), issued by the Country Signing CA (CSCA)
  • A digital signature over the hash list, created by the document signer

The SOD proves that the data groups were written by the issuing State and have not been modified.

Active Authentication proves the chip is genuine (not cloned) by having the chip sign a random challenge with its internal private key. The private key never leaves the chip — it cannot be copied.

The IDToken Auth Server performs these checks on every issuance request:

StepVerificationReject if
AParse SOD, extract DSC, verify DSC chains to a known CSCA (via ICAO PKD)Unknown CSCA, invalid chain, expired DSC
BVerify SOD signature using DSC public keySignature invalid
CCompute SHA-256 of raw DG1 and DG2, compare against SOD hash valuesHash mismatch (data was tampered)
DVerify AA response signature over challenge using chip’s public key (DG15)Signature invalid (chip is cloned)
EParse DG1, compare gn, fn, dob, nat, doc against submitted payloadAny field mismatch (station altered data)
FVerify face template was derived from DG2 photo (id3 Face SDK 1:1 match)Match score below threshold

Only after all checks pass does the server forward the verified payload to BioSeal.

The IDToken server enforces trust level requirements before calling BioSeal:

Trust LeveldocumentProof required?SOD verificationAA verificationPayload cross-check
1 — Self-issuedNoNoNoNo
2 — Operator-verifiedYes (SOD only)DSC → CSCA chainOptionalDG1 vs payload
3 — Full verificationYes (full)DSC → CSCA chainChip genuinenessDG1 + DG2 vs payload

The server refuses to forward a trust level 3 request to BioSeal without valid Active Authentication proof. A compromised station cannot inflate the trust level.

To verify SOD signatures, the IDToken server maintains a cache of Country Signing CA (CSCA) certificates from the ICAO Public Key Directory.

AspectApproach
SourceICAO PKD subscription (or national mirror such as the French ANTS distribution)
CSCA cacheRefreshed daily, stored in Redis alongside existing VDS trust chain cache
CRL refreshEvery 6 hours, for revoked Document Signer Certificates
Offline fallbackVerification continues against cached certificates if PKD is unreachable
Coverage gapsCountries not in ICAO PKD: SOD verification failure results in downgraded trust level (2 → 1)

This is architecturally consistent with the existing VDS trust chain caching already implemented for Otentik governance lists, TSLs, and CA certificates.

The IDToken server verifies the identity of the calling station before processing any issuance request:

MethodDescription
mTLS client certificateEach station has a unique client certificate issued by id3. The server verifies it before accepting requests.
Station registrationEach station is registered with a stationId, allowed operator list, and geographic location. Unregistered stations are rejected.
Rate limitingPer-station issuance limits (e.g., max 50/day). Anomalous bursts trigger alerts.

For high-security deployments, TPM-based station attestation can verify that the station software has not been modified.

All issuance events are recorded in the same audit trail as authentication events:

ControlDescription
Per-station logsstationId, operator, tokenId, timestamp, trust level, SOD verification result
Operator shift checksIssuances outside scheduled hours trigger alerts
Geographic consistencyStation in Paris issuing from an IP in another country → flag
Document uniquenessSame passport number producing multiple tokenId values → flag
Country analysisStation processing passports from unexpected countries → flag
Biometric deduplicationOptional: cross-check face templates to detect duplicate enrollments
RiskLikelihoodMitigation
Stolen genuine passportLowBiometric check at station (thief’s face won’t match DG2). Requires colluding operator to bypass.
CSCA key compromiseVery lowNational security incident — outside IDToken’s threat model. ICAO CRL handles revocation.
Trust level 1 (no NFC)InherentSelf-issued credentials bypass chip verification by design. Relying parties must require level 2+ for sensitive operations.
Colluding operatorVery lowReal passport scanned, VDS redirected. Mitigated by audit logs, biometric deduplication, dual-operator policies.
IDToken server compromiseVery lowServer holds BioSeal credentials. Mitigated by hardened deployment, HSM for keys, least privilege, audit, monitoring.