Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 74 additions & 0 deletions docs/identity-solutions/biometrics/introduction.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
---
title: Confidential Biometrics
description: Biometric matching and verification in MPC - no plaintext biometric data exposed
---

# Confidential Biometrics

Confidential Biometrics is enabled by [TACEO:Match](/docs/taceo-match/overview), TACEO's service for biometric feature matching in MPC. No plaintext biometric data leaves the user's
device or passes through a single party. TACEO's threshold MPC stack evaluates biometric
comparisons directly on secret shares, so the underlying templates are never reconstructed by
any node, any server, or TACEO itself.

:::tip Proven at global scale
TACEO co-architected the MPC protocol now running **World**'s iris-code uniqueness system in
production at global scale. The same threshold computation model - secret-share the sensitive
data, compute on shares, verify the result - is the foundation Confidential Biometrics is built
on.
:::

## Why biometrics are different

Biometric data is unlike a password or a private key. You can rotate a key; you cannot rotate
your iris or your palm.

- **Irrevocable.** A leaked biometric template exposes a user forever. There is no recovery
path equivalent to "change your password."
- **Population-scale damage.** Centralized biometric databases are prime target for attacks.
- **Device-only matching is limiting.** Keeping templates on device protects privacy but
blocks the cross-organization checks that matter most: uniqueness across a system, sybil
detection, sanctions screening.
- **Central servers break the trust model.** Sending raw templates to a verification server
requires trusting that server completely - with data that can never be changed if trust is
violated.

Any architecture that solves these problems needs to run the comparison without ever
centralizing the template in plaintext. That is exactly what MPC enables.

## How MPC solves it

The core mechanic: a biometric template is split into cryptographic secret shares and
distributed across independent MPC nodes on the TACEO Network. No single node holds a
meaningful fragment of the template. Comparison, matching, and uniqueness checks are then
computed *on the shares directly*.

**Step by step:**

1. **Template enrollment.** The biometric template (e.g. an iris code) is secret-shared on
the user's device or dedicated hardware before it leaves. The shares are distributed to the MPC network.
No complete template exists outside the device.

2. **Matching in MPC.** When verification is requested, the MPC nodes cooperate to evaluate
the comparison function (e.g. Hamming distance for iris codes) on their respective shares. Each node only ever sees its own share; the
comparison result is the only output.

3. **Threshold security.** Templates are protected by the threshold assumption we know from MPC protocols.

## What this enables

| Use case | Why MPC makes it possible |
|---|---|
| **Population-scale uniqueness / sybil resistance** | Compare against an enrolled set without centralizing templates or revealing which record matched |
| **Cross-org deduplication** | Organizations contribute to a joint check without sharing their underlying biometric data with each other |
| **Anonymous identity verification** | Prove a biometric matches an enrolled identity without revealing *which* identity |

## Underlying service

The low-level concepts and service documentation live under
[TACEO:Match](/docs/taceo-match/overview) in the TACEO Services section.

For adjacent reading:
- [Identity Solutions overview](/docs/identity-solutions/overview)
- [Distributed Nullifiers](/docs/identity-solutions/nullifiers/introduction) - TACEO's
production OPRF-based nullifier service, same threshold MPC foundation
- [Identity & Uniqueness use cases](/docs/use-cases/identity)
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ The wallet ownership example uses **two zero-knowledge proofs**:
## Next Steps

### Experiment Locally
Ready to experiment more? Set up your own [local OPRF network](/docs/taceo-oprf/quicklocal) for development.
Ready to experiment more? Set up your own [local OPRF network](/docs/identity-solutions/nullifiers/getting-started/quicklocal) for development.

### Custom Authorization
Want to build your own authorization logic? Learn about [Authorization Modules](/docs/taceo-oprf/authorization).
Expand Down
24 changes: 24 additions & 0 deletions docs/identity-solutions/nullifiers/introduction.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
title: Distributed Nullifiers
description: Threshold-secured deterministic nullifiers via TACEO:OPRF
---

# Distributed Nullifiers

Distributed Nullifiers is enabled by [TACEO:OPRF](/docs/taceo-oprf/overview). TACEO's production service for computing threshold Oblivious Pseudo-Random Functions (OPRFs).

A nullifier derived from a single secret is only as safe as that secret. TACEO's distributed
approach requires a threshold of independent MPC nodes to cooperate before any nullifier can be
evaluated, so no single party - including TACEO - can link or deanonymize your users even if user secrets are compromised partially compromised. Beyond nullifiers, TACEO:OPRF can serve any use case requiring distributed, verifiable pseudorandomness.

In production for [**World**](https://world.org/blog/announcements/world-id-full-stack-proof-of-human) and **zkPassport**.

## Getting started

Follow the [Quickstart](/docs/identity-solutions/nullifiers/getting-started/quickstart) to run
your first OPRF computation against the live testnet in minutes.

## Underlying service

The low-level API, authorization modules, and concepts documentation live under
[TACEO:OPRF](/docs/taceo-oprf/overview) in the TACEO Services section.
61 changes: 61 additions & 0 deletions docs/identity-solutions/overview.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
title: Identity Solutions Overview
description: Privacy-preserving identity at global scale, powered by the TACEO Network
---

import Link from "@docusaurus/Link";

# Identity Solutions on the TACEO Network

TACEO's identity solutions power privacy-preserving identity systems at global scale.
TACEO:OPRF is in production and trusted by partners including **World** and **zkPassport**, providing the
backbone for anonymous, sybil-resistant identity verification.

These solutions let developers build identity systems that verify without surveilling: nullifiers
that can't be correlated, passport attributes that can be matched without exposure, and biometric
checks that leave no plaintext trail.

## Solutions

<div style={{display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))', gap: '2rem', marginTop: '2rem'}}>

<div className="service-card-primary">

### Distributed Nullifiers

Privacy-preserving deterministic nullifiers computed by a threshold of independent MPC nodes.
No single party can evaluate or link nullifiers on its own.

**Best fit:**

- ZK identity systems (like World ID) that need threshold-secured nullifiers
- Anonymous voting and private credential systems
- Wallet recovery without custodial key exposure

[Learn more →](/docs/identity-solutions/nullifiers/introduction)

</div>

<div className="service-card-muted">

### Threshold Passport Identification

Match passport attributes across parties without revealing the underlying document data.
Built on the same MPC network TACEO co-architected for zkPassport.

[Learn more →](/docs/identity-solutions/passport-identification/introduction)

</div>

<div className="service-card-muted">

### Confidential Biometrics

Run biometric matching and verification in MPC - no plaintext biometric data leaves the user's
device or passes through a single party.

[Learn more →](/docs/identity-solutions/biometrics/introduction)

</div>

</div>
28 changes: 28 additions & 0 deletions docs/identity-solutions/passport-identification/introduction.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
title: Threshold Passport Identification
description: Match passport attributes without exposing document data
---

# Threshold Passport Identification

Match passports or any identification document across parties without revealing the underlying document data.
Built on the same MPC network TACEO co-architected for zkPassport.

## The Problem

Passports are the standard identity document in the physical world, making them a natural
anchor for digital identity systems as well. But operating on passport data digitally requires
careful handling: the underlying attributes are sensitive, tied to a real person, and cannot
be rotated if compromised.

A common mitigation is to hash the passport data before any comparison, so the raw document
is never transmitted. This limits casual observers - but not the issuers. Passport-issuing
authorities might hold the original data and can compute the same hashes, making users traceable to
any party that issued their document.

## The Solution

TACEO:OPRF computes a nullifier over the passport hash using a threshold of independent MPC
nodes. The resulting nullifier is deterministic - it uniquely identifies the user - but no
single party, including TACEO or the document issuer, can compute it unilaterally. Knowledge
of the passport's pre-image is no longer sufficient to derive or link the identifier.
31 changes: 27 additions & 4 deletions docs/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,17 @@ We're best known for our identity work: TACEO Network is a privacy backbone for
global-scale identity systems, with services used by **World** and **zkPassport**. We're now bringing
the same stack to onchain finance through **Merces**.

## Build private payments on the chain you already use
## TACEO Solutions

<div className="service-card-success" style={{padding: '1.5rem 1.8rem', marginTop: '2rem'}}>
<div style={{display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(320px, 1fr))', gap: '2rem', marginTop: '2rem'}}>

<div className="service-card-success" style={{padding: '1.5rem 1.8rem'}}>

### **Finance Solutions**

Private payments on the EVM chains you already use, built on Merces. Merces wraps ERC-20s like USDC into private balances, with compliance primitives at the protocol layer.

**Live on Arc, Base, and Plasma testnets.** ~5M demo transactions, ~300 TPS, sub-cent gas on L2. Mainnet deployment in progress. The MPC protocol underneath is the same one TACEO co-architected for World's iris-code system, in production at global scale.
**Live on Arc, Base, and Plasma testnets.** ~5M demo transactions, ~300 TPS, sub-cent gas on L2. Mainnet deployment in progress.

**Looking for design partners.** Stablecoin issuers, fintechs, and payment infrastructure teams shipping private rails to production. Talk to us.

Expand All @@ -39,6 +41,27 @@ Private payments on the EVM chains you already use, built on Merces. Merces wrap

</div>

<div className="service-card-primary" style={{padding: '1.5rem 1.8rem'}}>

### **Identity Solutions**

Privacy-preserving identity at global scale. TACEO:OPRF is in production for **World** and **zkPassport** - the same MPC backbone that powers iris-code uniqueness and private credential matching is available for your identity system.

**In production.** Distributed nullifiers, threshold passport identification, and confidential biometrics, backed by a threshold MPC network with no single point of failure.

**Looking for design partners.** Identity protocol teams and credential issuers building privacy-first systems. Talk to us.

{/* prettier-ignore */}
<div className="button-row" style={{marginTop: '1.25rem', display: 'flex', flexWrap: 'wrap', alignItems: 'center', gap: '1rem'}}>
<Link className="button button--primary get-in-touch-btn" to="/docs/identity-solutions/overview">Read Identity Solutions</Link>
<Link className="button button--outline button--primary get-in-touch-btn" to="/docs/identity-solutions/nullifiers/getting-started/quickstart">Try the Quickstart</Link>
<Link className="button button--outline button--primary get-in-touch-btn" to="mailto:hello@taceo.io?subject=Identity%20Solutions%20design%20partner">Become a Design Partner</Link>
</div>

</div>

</div>

## Other paths

<div style={{display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(280px, 1fr))', gap: '2rem', marginTop: '2rem'}}>
Expand Down Expand Up @@ -104,7 +127,7 @@ coSNARK-based systems locally. Distinct from TACEO's managed services.
## Where TACEO is today

- **Finance Solutions.** Merces is live on Arc, Base, and Plasma testnets with ~5M demo transactions, ~300 TPS, and single-digit-cents gas on L2. Mainnet deployment in progress.
- **Privacy Services.** TACEO:OPRF and TACEO:Proof are in production for partners including World and zkPassport.
- **Privacy Services.** TACEO:OPRF and TACEO:Proof are in production for partners including World and zkPassport. TACEO:OMap is deployed and onboarding first applications.
- **TACEO Network.** The MPC infrastructure underpinning all of the above is built on the same foundation TACEO co-architected for World's iris-code system, in production at global scale.

## Learning Resources
Expand Down
40 changes: 21 additions & 19 deletions docs/services/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -65,39 +65,41 @@ _Private Proof Delegation_

</div>

</div>
<div className="service-card-primary">

## Coming Soon
### **TACEO\:Match**

<div style={{display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))', gap: '2rem', marginTop: '2rem'}}>
_Distributed Biometric Matching_

<div className="service-card-muted">
**Use when you need:**

### **TACEO\:OMap**
- Population-scale uniqueness checks without centralizing templates
- Cross-organization deduplication without sharing biometric databases
- Anonymous identity verification - prove a match without revealing which identity
- Sybil resistance backed by irrevocable biometric uniqueness

_Private Reads & Writes_
**Perfect for:**

**Deployed, onboarding first applications**
- Proof-of-uniqueness systems and anonymous credential issuance
- Cross-border or cross-org fraud detection and deduplication
- Privacy-preserving KYC and biometric verification
- Any workload where biometric templates cannot be centralized

Private data structures and confidential shared state management across multiple parties, with verifiable state updates. (currently onboarding initial applications).
{/* prettier-ignore */}
<Link className="button button--primary get-in-touch-btn" to="/docs/taceo-match/overview" style={{ marginTop: "1rem", width: "100%" }}>Learn More</Link>

</div>

<div style={{
padding: '2rem',
border: '1px solid var(--ifm-color-emphasis-400)',
borderRadius: '12px',
backgroundColor: 'var(--ifm-color-emphasis-100)',
opacity: '0.8'
}}>
<div className="service-card-muted">

### **TACEO\:Match**
### **TACEO\:OMap** <span style={{fontSize: '0.75rem', fontWeight: 600, textTransform: 'uppercase', letterSpacing: '0.05em', opacity: 0.6}}>Coming Soon</span>

_Distributed Biometric Uniqueness_
_Private Reads & Writes_

**In active integration**
Private data structures and confidential shared state management across multiple parties, with verifiable state updates.

Privacy-preserving uniqueness matching and verification without requiring a single party to hold sensitive data such as biometric templates.
{/* prettier-ignore */}
<Link className="button button--secondary get-in-touch-btn" to="/docs/taceo-omap/overview" style={{ marginTop: "1rem", width: "100%" }}>Learn More</Link>

</div>

Expand Down
43 changes: 43 additions & 0 deletions docs/taceo-match/concepts.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Concepts

## What is a Biometric Template?

A biometric template is a compact mathematical representation of a biometric measurement. An iris code, for example, might encode the texture pattern of an iris as a bit vector of 11k bits. The actual bit length depends on the feature extraction, whether it is iris, face or palm scans. All share that they are fixed-length vectors designed to make comparison cheap and reliable.

The challenge is that these vectors are **sensitive and irrevocable**. Unlike a password hash, a leaked biometric template cannot be rotated. Any system that stores or transmits raw templates creates a permanent liability.

## Secret Sharing

Secret sharing splits a value into $n$ shares such that any subset of size $< t$ reveals nothing about the original value, while any subset of size $\geq t$ can reconstruct it. In TACEO:Match, each enrolled template is split into shares distributed across independent MPC nodes on the TACEO Network. No node holds a full template.

For a deeper treatment of MPC and the secret-sharing primitives TACEO uses, see the [MPC Resources](/docs/resources/mpc) page.

## The Matching Function

Biometric matching reduces to computing a distance metric between two templates and checking whether it falls below a threshold:

```
match = distance(probe, enrolled) < τ
```

For iris codes, this is **Hamming distance** - the fraction of bit positions that differ. Is the Hamming distance below a certain threshold $τ$ we can deduce that two scans belong to the same person.

TACEO:Match evaluates this distance function directly on the secret shares of the enrolled template, without reconstructing the template at any node. The same approach extends to other distance-based biometric representations (e.g. cosine similarity for face embeddings) by implementing the corresponding comparison circuit.

## Architecture

Three independent MPC nodes execute the matching protocol and jointly hold a **secret-shared database** of all enrolled templates. Reconstruction requires at least $t$ shares - no node, and no coalition smaller than $t$, can read the stored data.

A request originates at a sensor: a mobile device or dedicated hardware such as an orb or palm scanner. The sensor performs feature extraction, secret-shares the resulting template, and encrypts each share with the corresponding MPC node's public key, protecting the shares in transit. The choice of sensor does not change the architecture.

Each MPC node decrypts its share and participates in the match protocol against the database. The protocol is parameterised by the distance function - for example, **Hamming distance** for iris codes (see [The Matching Function](#the-matching-function)). Only the final verdict is revealed: match or no match.

<img src="/img/taceo_match.svg" alt="TACEO:Match architecture" width="100%" />

An **orchestration server** may optionally relay requests between the sensor and the MPC nodes. It only ever observes encrypted shares, so user confidentiality is preserved end-to-end.

## Composition with Nullifiers

TACEO:Match and [Distributed Nullifiers](/docs/identity-solutions/nullifiers/introduction) are complementary primitives built on the same threshold MPC stack. Nullifiers derive a deterministic, unlinkable identifier from a secret input via OPRF; Match verifies that a biometric probe corresponds to an enrolled identity via MPC matching.

A common composition: use Match to verify biometric uniqueness, then issue a nullifier tied to the verified identity. The user gets both sybil resistance (from Match) and unlinkability across interactions (from the nullifier).
Loading