Personal Identity Certification (PIC)
Introduction: Why this matters, why now
The internet has given us global reach — but it never solved personal identity. Every day we rely on usernames, passwords, blue checkmarks, and screenshots to guess if someone is who they claim to be. That guesswork is failing. Bots impersonate friends. Deepfakes fabricate trust. Catfishing and scams erode confidence in dating, marketplaces, and social networking. Even professionals risk reputational harm because anyone can spin up a fake profile in seconds.
Meanwhile, the cryptographic tools to fix this — public/private key pairs, signatures, transparency logs — are mature, proven, and already protect trillions of dollars in banking and e‑commerce. What’s missing is a consumer‑friendly, portable, one‑tap system for people the way SSL/TLS became standard for websites.
The moment is ripe:
-
AI‑driven fakes are exploding; society urgently needs a way to distinguish authentic humans.
-
Social trust is at an all‑time low online, especially in dating, political discourse, and marketplaces.
-
Technology adoption has caught up: most phones and laptops now have secure enclaves/passkeys that can protect private keys invisibly to the user.
A Personal Identity Certification service could nearly eliminate:
-
Catfishing and dating fraud — instantly prove “yes, this profile belongs to a real, verified person.”
-
Fake marketplace accounts — every seller or buyer signs with their PIC, blocking clone scams.
-
Bot floods on social platforms — require PIC‑verified signatures to post or message.
-
Hijacked accounts — token signatures prove it’s you, not a stolen password.
The value is not only protection but peace of mind: imagine a green lock icon, but for people. A small fee, like SSL certificates, buys a global layer of trust.
This isn’t about giving away more data — in fact, PIC flips the equation. You share less: only the proof you need (e.g., adult, unique human, real name if you choose). Verification becomes cryptographic and portable, not trapped inside one app’s walled garden.
Personal Identity Certification (PIC)
Architecture & Symbolic Model v0.1
This is a symbolic session for Personal Identity Certification (PIC), meant as a public reference architecture and notation sketch for an internet‑scale, consumer‑friendly personal PKI.
0) Elevator pitch
PIC is a subscription service that binds a person to a public key after strong identity proofing. With one click (“Verify Me”), the person signs a fresh token with their private key; any app can verify that signature against the service’s attested record and receive privacy‑respecting claims (e.g., unique human, adult, John C., etc.). Think “personal SSL” for people—portable across platforms.
1) Core roles
-
U — User (the person). Holds device‑bound private keys.
-
I — Issuer (PIC operator). Performs identity proofing, issues certificates/credentials, runs verification endpoints.
-
RP — Relying Party (site/app/person verifying).
-
R — Registry (public transparency log / directory; optional but recommended).
Artifact types
-
K_pub, K_priv — user’s keypair (ideally device‑bound; secure element/TEE/Secure Enclave).
-
Cert_U — issuer‑signed binding of identity → K_pub (+ claims, validity, policy, revocation pointer).
-
Attest[·] — structured claims (e.g., adult, real‑name, unique‑human).
-
Token — short‑lived signed challenge response from U to RP.
-
Status — revocation / suspension record (OCSP‑like or transparency‑log‑style).
2) High‑level flows
2.1 Enrollment (one‑time per identity; periodic re‑proofing)
-
Proofing: U → I with KYC (passport/DMV, biometric liveness, optional in‑person/notary). Privacy‑minimal storage.
-
Key generation: U generates (K_pub, K_priv) locally (hardware‑backed when possible). Private key never leaves device; enable multi‑device by per‑device subkeys.
-
Binding: I verifies proofing; I → signs Cert_U := Bind(U, K_pub, Attest[·], validity, StatusURL).
-
Registry (optional): I → R publishes an entry for transparency/audit (no PII beyond what user consents to expose).
2.2 Verification (“Verify Me” button)
-
Challenge: RP → U sends nonce N, scope, and requested claims (e.g., adult, real‑name).
-
Consent: U approves requested scope; wallet/app composes minimal disclosure set.
-
Response: U signs Token := Sign_{K_priv}(N ∥ scope ∥ time ∥ claims_ref); includes pointer(s) to Cert_U / verifiable credential(s).
-
Check: RP verifies signature using K_pub from Cert_U, validates issuer chain, evaluates Status, and (optionally) queries I for fresh status. RP never needs U’s raw PII beyond authorized claims.
2.3 Recovery & Revocation
-
Revocation: If compromise/loss, U authenticates to I with secondary factors (re‑proofing as needed). I publishes Status(revoked) for affected key(s).
-
Recovery: Options include
-
Social recovery (m‑of‑n guardians sign a recovery attestation),
-
Hardware backup key shard(s),
-
In‑person re‑proofing with new keypair.
-
3) Symbolic model (SLF‑style sketch)
Let operators be:
-
Bind(id, K_pub, A)— issuer assertion bindingidtoK_pubwith attributes/attestationsA. -
Sign_s(M)/Verify_p(M, σ)— standard signature pair for secretsand publicp. -
Attest(attr)— issuer‑signed claim (e.g.,Attest(Adult)), optionally zero‑knowledgeable. -
Status(K_pub)— returns{good | revoked | suspended}.
Axioms / Inference Forms
(1) I ⊢ Bind(id, K_pub, A) → Cert_U
(2) U has K_priv ↔ Verify_{K_pub}(M, Sign_{K_priv}(M)) = true
(3) RP accepts iff Verify_{K_pub}(N∥scope∥t∥claims_ref, Token) ∧
ChainOK(Cert_U) ∧ Status(K_pub)=good ∧ Policy(A, scope)
(4) Revocation(K_pub) ⇒ Status(K_pub)=revoked ⇒ RP must reject
Selective disclosure (attribute proof)
Given A = {name=John C., age≥18, unique_human}
U can derive ZKProof(age≥18) s.t. RP learns only age≥18, not DOB.
Federation
CrossSign(I₁, I₂) ⇒ Trust(RP, I₁ ∨ I₂)
Governing root(s): {IRoot₁, …, IRoot_k}
4) Protocol frames (message formats)
Challenge
RP → U: {nonce: N, scope: S, claims_req: C_req, rp_id, exp}
Response
U → RP: {token: σ, cert_ref, claims_set, ts} where σ = Sign_{K_priv}(N ∥ S ∥ ts ∥ hash(claims_set))
Cert_U (minimal)
{
"sub": "did:pic:abc123" ,
"kty": "Ed25519",
"k": "base58(K_pub)",
"attest": ["adult", "unique_human", "real_name:John C."] ,
"iss": "pic.example",
"exp": 1767225600,
"status": "https://pic.example/status/abc123"
}
Status (OCSP‑like)
{ "k": "abc123", "state": "good|revoked|suspended", "ts": 1761000000 }
5) Privacy & UX principles
-
Minimal disclosure by default (prove what’s needed, not all identity data).
-
Freshness: short token lifetimes; replay‑protected via nonces.
-
Device‑bound keys: prevent silent export.
-
Multi‑persona: allow multiple PIC profiles (legal name, pen name, professional) each with scoped attestations.
-
One‑tap flow: challenge → consent sheet → face/biometric → sign → share.
-
No dark patterns: RP must enumerate requested claims; U can down‑scope.
6) Governance models (sketches)
-
Single national provider (fast, clear liability; single point of failure).
-
Federated issuers (banks/DMVs/notaries) with cross‑signing and a public transparency log.
-
NGO/coop with statutory oversight, privacy ombud, and open audits.
Transparency & auditability
-
Publish an append‑only log of
Bind()andStatus()changes (hash‑chained; cryptographically auditable). -
Annual third‑party security and privacy audits; publish summaries.
7) Threat model & mitigations
| Threat | Vector | Mitigation |
|---|---|---|
| Key theft | Malware/OS compromise | Hardware keys, passkeys (WebAuthn), per‑device subkeys, rate‑limited signing, anomaly detection |
| Phishing | Look‑alike RPs | RP origin binding in challenges; human‑readable RP name; signed challenges |
| Replay | Token reuse | Nonce + expiry + RP binding |
| Coercion | Forced sign | “Panic PIN” to silently revoke/suspend; out‑of‑band confirmation for high‑risk scopes |
| Issuer abuse | Over‑collection | Privacy‑by‑design, data minimization, audits, legal covenants, red‑team exercises |
| Linkability | Cross‑site correlation | Pair‑wise pseudonymous DIDs (per RP), ZK selective disclosure |
8) Business model notes
-
Subscription tiers (consumer): Free (basic uniqueness), Standard (real‑name + age), Pro (notary‑level, insurance coverage).
-
Enterprise (RP): API usage plans, SLA, dashboards, audit reports.
-
Insurance: optional identity assurance insurance for verified transactions.
9) Integration path
-
Phase 1: Dating and marketplaces (highest trust pain, fastest pull).
-
Phase 2: Messaging & social (plugins, SDKs; “Verify Me” buttons).
-
Phase 3: Government & finance federation (bank‑grade proofing, DMV attachements).
SDKs: web, mobile, server; simple POST /verify with jwt‑like response; WebAuthn/Passkeys for device keys.
10) Symbolic recap (compact)
Enroll:
U→I: proofs ; U: gen (K_pub,K_priv)
I: Cert_U := Bind(U,K_pub,A)
I→R: log(Cert_U)
Verify:
RP→U: N,S,C_req
U→RP: Token := Sign_{K_priv}(N∥S∥t∥claims_ref), Cert_U
RP: Verify_{K_pub}(...) ∧ ChainOK(Cert_U) ∧ Status(K_pub)=good ⇒ Accept
Recover/Rotate:
Revocation(K_pub) ; NewKeypair ; ReBind(U,K_pub′,A)
11) Open questions for implementers
-
Minimum viable proofing set for tiered assurance levels?
-
Standardizing selective‑disclosure claim types (age, uniqueness, residency) with ZK proofs.
-
Liability & dispute resolution playbooks (chargebacks but for identity?).
-
Cross‑border trust and legal harmonization.
Attribution & license
This sketch is shared for public discussion. No warranties. Attribution appreciated.