Security architecture · Updated 2026-05

Built so we can't read
your credentials.

SkinID is engineered as a zero-knowledge system: the server holds opaque ciphertext, your implant holds the key. A breach of our database alone yields nothing. We can't decrypt your data. And that's the point.

This describes the zero-knowledge encryption regime that becomes active on every customer's account at the moment their chip is provisioned. We're transparent about which controls are live today versus on the roadmap. See the technical architecture for the rollout status table.

The model in one sentence

Each chip stores a 32-byte vault wrap key inside an authenticated encrypted file. Every credential we hold for you is encrypted under that key. To decrypt anything, the chip must physically be in the reader field, complete a mutual AES-128 authentication, and the server must read the wrap key out. No chip in field = no plaintext.

"If your laptop is stolen along with your phone, the attacker has windows, not lifetimes. The chip leaves their hand, the access ends."

Layered defence

1

The chip itself (NXP MIFARE DESFire EV3)

Tamper-resistant secure element from NXP. AES-128 mutual authentication with the server. NXP-signed originality certificate so we can verify the silicon is genuine. Without successful authentication, the chip refuses every operation.

2

Chip-bound encryption (zero-knowledge)

Per-credential keys derived via HKDF-SHA256 from the chip's vault wrap key. ChaCha20-Poly1305 AEAD with associated data binding (user, site, credential id) to prevent ciphertext-swap attacks. The server stores ciphertext only.

3

Transport & session security

TLS 1.3 with HSTS preload. Strict CSP, COOP, CORP headers. SameSite=Strict cookies on operator sessions. Per-IP rate limits on auth, lockout after 5 failed login attempts. All session tokens are SHA-256 hashed at rest.

4

Operations & recovery

Three independent recovery paths (backup chip, printable Shamir-split key, KYC + cooling-off + multi-operator approval). Every destructive action requires 2-of-N operator votes. Nightly encrypted backups with off-server age-encrypted private key.

Threat model

What we defend against

  • Phishing. Passkeys are origin-bound; phishing fails by construction.
  • Stolen credentials. Each site has a unique, server-generated credential. There's no master password to crack.
  • Server compromise. The server holds ciphertext. Without the chip, an attacker reads garbage.
  • Network eavesdropping. TLS 1.3, HSTS preload, certificate pinning on iOS.
  • Stolen device. Every fresh sign-in requires a chip tap.
  • Backup leakage. Backups encrypted at rest with an age public key whose private half lives off-VPS.
  • Insider attack. Operators cannot decrypt vaults. Recovery actions require multi-operator approval and full audit log.

What we don't defend against

  • Physical removal of the chip. Your body, your decision.
  • Coercion. If someone forces you to scan, the system can't tell.
  • Compromise of your device while the chip is tapped. The window is bounded to the moment of tap.
  • Targeted state-level adversaries with arbitrary code execution on your unlocked device. No consumer authenticator defends against this.

Cryptographic primitives

Every primitive we use is documented and replaceable. Each encrypted blob carries a one-byte version so we can rotate algorithms without flag days.

UseAlgorithm
Chip mutual authenticationAES-128 EV2First (NXP DESFire EV3)
Vault key on chip32 bytes random, written to authenticated file
Per-credential encryptionChaCha20-Poly1305 AEAD + HKDF-SHA256
FIDO assertion signingECDSA P-256 + SHA-256 (FIDO2 / RFC 8152)
Originality verificationECDSA secp224r1 (NXP-signed at fab)
Recovery key sharingShamir Secret Sharing over GF(2⁸)
Operator passwordsPBKDF2-HMAC-SHA256, 600,000 iters (OWASP 2023)
Backup at restage (X25519 + ChaCha20-Poly1305)
Constant-time comparehmac.compare_digest (Python stdlib)
Random number generationCSPRNG: getrandom(2) / SecRandom / SecureRandom
TLSTLS 1.3 (nginx default), HSTS preload

Operator panel hardening

Customer-service staff sign in to a separate panel with its own auth model. Operators cannot decrypt customer vaults; they can review state, approve recovery requests, and trigger destructive actions only with peer approval.

Disclosure & bug bounty

Security research is welcome. Email support@skinid.ch with reproduction steps; we acknowledge within 48 hours and aim to assess within 5 business days. Coordinated disclosure: 90 days.

We commit to crediting reporters in our advisories (unless you ask us not to) and not pursuing legal action for research conducted within the scope detailed in our disclosure policy.

For technical reviewers

CISOs, security engineers, and technical buyers running due diligence: the deep architecture page covers protocol details, key lifecycle, server hardening, threat model, and our compliance map.

Read the technical architecture

For source-level review (under NDA), contact us. SkinID is an independent Swiss company; nothing here depends on third-party cloud providers for cryptographic operations.