Build
NFC hardware
The hardware layer is the physical anchor of the ORACULS stack (Oracle-Augmented Chain for Universal Logistics Security): secure NFC chips that cryptographically bind a physical item to its on-chain digital twin. Every chip in the portfolio produces an unclonable, authenticated tap — SUN (Secure Unique NFC) is the floor across every tier, and there is no no-crypto tier.
Legacy, not supported: NTAG 213 / 215 / 216 have no on-chip cryptography, cannot produce a SUN tap, and are never recommended for new work.
NTAG 424 DNA — the workhorse
| Parameter | Value |
|---|---|
| Manufacturer | NXP Semiconductors |
| Form factor (standard) | 25 mm tamperproof label |
| User memory | 416 bytes |
| UID | 7 bytes, unique, read-only |
| Cryptography | AES-128, 5 customer keys |
| Authentication | SUN (Secure Unique NFC) with per-tap CMAC |
| Write endurance | 200,000 cycles |
| Data retention | 50 years |
| Certification | Common Criteria EAL4+ |
| Read distance | Up to 10 cm |
| Protocols | ISO/IEC 14443-A, NFC Forum Type 4 |
| Data rate | Up to 848 kbit/s |
SUN authentication
SUN provides cryptographic proof that a specific physical chip was present at the moment of scanning — a plain URL or QR code can be copied; a SUN tap cannot. On every read, the chip's Secure Dynamic Messaging engine rewrites two mirrors inside the stored NDEF URL: an AES-128-encrypted PICC block carrying the chip's UID and its rolling read counter, and an AES-CMAC over that block. Both keys never leave the chip's secure memory.
https://verify.tagit.network/sun?picc=EF963FF7828658A599F3041510671E88&cmac=94EED9EE65337086The UID and counter are not in the clear — that is the point of the encrypted PICC mirror, and it is why a reader cannot correlate taps across deployments without the key. Anything documenting this URL as ?uid=…&ctr=…&mac=… is describing a plaintext layout this chip does not emit; that form appeared in earlier revisions of this page and the path it used does not exist.
| Component | Size | Description |
|---|---|---|
picc | 16 bytes (32 hex) | AES-128 encrypted PICC data. Decrypts to the 7-byte UID (factory-programmed, read-only) and the 3-byte read counter, which increments on every tap. |
cmac | 8 bytes (16 hex) | Truncated AES-CMAC over the PICC data, keyed by the chip's secret |
The verifier decrypts picc and checks the CMAC server-side, which yields:
- Anti-cloning — the CMAC can only be produced by the chip holding the secret key; copying the URL yields a stale counter/CMAC pair that fails validation.
- Anti-replay — the server tracks the last-seen counter per UID. A tap with a counter at or below the last-seen value is rejected as a replay, and abnormal counter jumps raise a fraud alert.
- Tamper evidence — TagTamper variants permanently record loop status in the SUN message (see modifiers below).
A valid SUN tap resolves to the tag's on-chain digital twin on Base Sepolia. The envelope is uniform across chip tiers — every TAG IT chip exposes a verify URL that resolves to the correct twin — but how each tier proves the pointer differs, and that variation is handled server-side by the verifier. It is not abstracted in the TypeScript SDK: that package covers the ERC-8004 agent layer only and has no NFC, SUN or chip surface of any kind.
Chip tiers — item level
The tier menu trades cost against memory, certification level, and key architecture. The crypto floor never drops below AES-128 + SUN.
| Tier | Chip | User memory | Crypto / auth | Cert | Use |
|---|---|---|---|---|---|
| COMMERCIAL (floor) | NTAG 224 DNA | 208 B | AES-128 · SUN · 3-pass mutual auth · ECC originality signature | EAL3+ | Low-cost unclonable taps; machine/agent challenge-response |
| budget variant | NTAG 223 DNA | 144 B | AES-128 · SUN · password-gated · ECC signature | EAL3+ | Only when absolute cheapest is needed and mutual auth isn't |
| PRESTIGE (standard) | NTAG 424 DNA | 416 B | AES-128 · SUN · Type-4 file system | EAL4+ | The workhorse — enterprise and high-value assets |
| FORTRESS (pro) | MIFARE DESFire EV3 | 2 / 4 / 8 KB | AES multi-app · SDM/SUN per file · 28 apps × 32 files | EAL5+ | Multi-zone data, keyed agent access, on-chip incident logs |
| SOVEREIGN | NTAG X DNA | ~16 KB | PKI/ECC P-256 + AES-128/256 · SUN (CMAC or ECDSA) | EAL6+ | True asymmetric crypto, on-chip key, defense-grade |
| SIGMA BOY — roadmap ~2030 | Custom sNFC ASIC | — | AES-256 · ECDSA/EdDSA · PQC (Kyber/Dilithium) | Roadmap | Space/defense: radiation-hard, PING beacon, on-chip AI |
Tamper is a modifier, not a tier
A tamper loop can be layered on top of any chip in the table:
- Tamper-evident — NTAG 22x DNA StatusDetect / NTAG 424 DNA TagTamper: the chip keeps working after removal but permanently flags the broken loop in the SUN message on every subsequent tap.
- Tamper-killing — a frangible, destructible substrate (converter specification): the antenna physically destroys itself on peel, leaving a dead tag.
Package & pallet layer
Item-level DNA chips pair with a longer-range RFID layer for case-, pallet-, and logistics-level identification. One deployment spans item → package → pallet, and both layers carry the same resolvable GS1 Digital Link URL — which also makes the package layer EU Digital Product Passport (DPP) compatible.
| Layer | NXP family | Frequency / standard | Range | Role |
|---|---|---|---|---|
| Package / item ID (HF) | ICODE (SLIX) | 13.56 MHz HF · ISO/IEC 15693 | ~0.3–1.5 m | Product and package ID, inventory, brand-protection labels |
| Case / pallet (UHF) | UCODE RAIN (incl. UCODE DNA) | 860–960 MHz UHF · ISO 18000-63 / EPC Gen2 | Up to ~10 m+ | Warehouse and supply-chain visibility, bulk dock/gate reads |
Why two layers: HF/NFC (ICODE plus the DNA tags) is tap-range and phone-readable — right for consumers and item authentication. UHF RAIN (UCODE) reads at distance and in bulk — right for dock doors, conveyors, and warehouse portals.
Provisioning a tag
Provisioning turns a blank chip into a bound, verifiable tag. Keys are injected in a controlled environment and never transmitted or stored on chain — the contracts hold only a Keccak-256 commitment to the tag.
- Read the UID from the blank chip (7 bytes, factory-programmed).
- Inject keys — authenticate with the factory default key, then rotate per-tag AES-128 keys into the chip's key slots. Keys are generated in an HSM and registered against the UID in the key-management service.
- Write the NDEF template — the SUN URL with mirror placeholders for
uid,ctr, andmac, and enable Secure Dynamic Messaging so the chip fills them in live on every tap. - Lock the configuration — set NDEF read-only, enable counter-on-read, and permanently lock security settings so they cannot be altered after issuance.
- Bind on chain — compute the tag commitment and call
bindTag()on the minted twin, moving itMINTED → BOUNDin the asset lifecycle. - Verify with a test scan — confirm the CMAC validates, the counter increments, and the URL resolves to the correct on-chain twin.
Readers
Consumers need no hardware at all — any NFC-capable smartphone performs a full SUN verification tap. For desk-side enrollment and provisioning, the TAG IT admin console uses the ACR1252U USB reader (PC/SC compliant, ~$80–100).
| Category | Use case | Examples |
|---|---|---|
| Mobile | Consumer verification (the vast majority of taps) | Any NFC smartphone |
| Desktop | Development, enrollment, admin console provisioning | ACR1252U |
| Enterprise handheld | Warehouse and logistics | Zebra TC52x / TC72x |
| Fixed infrastructure | Dock doors, conveyors, automated checkpoints (UHF layer) | Impinj, Alien |
Next steps
- Asset Lifecycle — what
bindTag()and the 7-state machine do on chain - Security Model — where chip cryptography sits in the 5-layer architecture
- TypeScript SDK — the verification envelope abstraction in
@tagit/sdk