The Carpocratian Church of
Commonality & Equality
Presents
ποΈ Freebird
Authorization tokens designed to separate issuance from redemption.
Freebird uses unforgeable, one-time authorization tokens to prove permission without placing an application identity in the token. It separates issuance from redemption at the token layer. Network, timing, application, admission, and audit data remain visible to the surrounding deployment.
The Problem
Online authorization commonly connects access to accounts and operational records. Freebird addresses one specific part of that system: separating token issuance from later redemption.
- Rate limiting often uses user or network tracking
- Access control commonly uses accounts
- Spam prevention can rely on activity monitoring
- Resource allocation often uses registration
- "One person, one vote" often depends on identity databases
A deployment may still collect network, timing, application, admission, and audit data. Those surrounding records remain outside the token protocol.
Traditional System:
User βββββββββββββββββββββββββββΆ Server
"I am alice@example.com"
"Give me access"
β
Server logs: βΌ
β Who you are Access
β When you accessed Granted
β What you accessed (maybe)
β Your usage patterns
β Your IP address
β Everything, forever
Freebird's Answer
Freebird currently exposes two experimental token modes. V4 uses a Freebird-specific P-256 VOPRF-like construction with DLEQ-style proofs and is not interoperable with RFC 9497 implementations. V5 uses Blind RSA signatures described by RFC 9474 for public bearer passes. Each mode has its own wire format and operating assumptions.
Freebird is a prototype privacy layer for authorization. A finalized token can prove issuer authorization without containing an application identity. The surrounding deployment can still observe and correlate metadata.
Freebird:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β User Issuer Verifier β
β β β β β
β βββ[blind data]βββΆβ β β
β β β signs without β β
β β β seeing content β β
β βββ[signed blob]βββ β β
β β β β β
β β unblinds to β β β
β β get token β β β
β β β β β
β ββββββββ[identity-free token] βββββββββΆβ β
β β β β
β β β Valid signature β
β β β No app identity β
β β β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Freebird reduces linkability at the token layer; network, device, and application metadata remain deployment responsibilities.
- Prove token authorization without putting an identity in the token
- Separate issuance records from redemption records at the token layer
- Support one-time redemption with configured replay storage
- Compose local admission controls before issuance
Token Properties & Operating Limits
These properties describe the protocol boundary and its deployment-dependent limits. Freebird is pre-1.0 and has not received an external security audit.
β Traditional "Privacy"
Data handling depends on policy
Logs remain under operator control
Changes require continued trust
Records may be exposed or correlated
β Freebird
Less identity in the token path
Cryptographic separation to review
Operational records still require policy
Token privacy within a defined boundary
| Property | Guarantee | Mechanism |
|---|---|---|
| Unlinkability | Designed to resist direct issuance-to-redemption linkage at the token layer | Blinding; deployment and metadata limits apply |
| Anonymity | Token contains no application identity by design | Token format; surrounding systems may identify or correlate users |
| Unforgeability | Can't create tokens without issuer key | P-256 ECDLP hardness (V4) / RSA-FDH (V5) |
| Replay Protection | Replay can be rejected when nullifier storage is configured correctly | Nullifier store; in-memory state is not restart-safe |
| Verifiability | Clients verify correct computation | DLEQ zero-knowledge proofs |
Private Access and Issuance Patterns
Freebird is built for evaluation and low-stakes deployments. These patterns show how its issuer, verifier, tokens, and admission controls can fit into real products.
Configurable Admission Controls
Freebird includes configurable admission mechanisms that can raise abuse costs or limit issuance. They are local controls. They do not prove a unique human or remove operational metadata.
Invitation System (Trust Graphs)
Users invite others. Operators can trace invitation relationships in admission records and cut off branches. This provides local social trust; it does not provide identity-free accountability or a global anti-abuse guarantee.
Proof of Work
Each token carries a computational cost. This can raise the cost of bot activity without collecting user identity data.
WebAuthn / Hardware Keys
WebAuthn or hardware authenticators can gate issuance. They do not prove humanity; credential and deployment records remain part of the operator's state.
Rate Limiting
IP-based throttling provides basic protection and necessarily uses network identity. It can be stacked with other mechanisms.
Social Graph Attestation
A separate Social Graph Attester service evaluates signed trust edges (compatible with Clout social graphs) and issues short-lived attestations proving a user stands within a trusted social graph, without revealing which node they are. The issuer verifies the attester's Ed25519 signature, policy, expiry, and eligibility level; the underlying graph stays with the attester.
Progressive Trust
Trust can accumulate through configured account age and usage history. New accounts may receive limited quotas. The mechanism uses local records and does not provide global anonymity.
Proof of Diversity
Experimental mechanism that scores requests on behavioral diversity signals to detect coordinated bot campaigns without fingerprinting individuals.
Multi-Party Vouching
N-of-M endorsement: a token is issued only when a quorum of existing trusted members vouch for the requester. No single party can approve or block.
Composable Combiners
Stack mechanisms with OR (any must pass), AND (all must pass), or Threshold (at least N of M). OR inherits the strength of its easiest mechanism, while AND is strictest. Proof replay protection and restart safety depend on the configured store.
Technical Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β Freebird System β β β β ββββββββββββββββ ββββββββββββββββ ββββββββββββββ βββββββββββ β β β Issuer β β Verifier β β Redis β β Attesterβ β β β (Rust) β β (Rust) β β (State) β β (Rust) β β β β β β β β β β optionalβ β β β - VOPRF eval β β - Token auth β β - Nulls β β - Trust β β β β - Blind RSA β β - Multi- β β - Invites β β graph β β β β - Sybil gatesβ β issuer β β - WebAuthn β β -Scoringβ β β β - Key mgmt β β federation β β β β - JWKS β β β ββββββββββββββββ ββββββββββββββββ ββββββββββββββ βββββββββββ β β β β β β β β ββββββββββββββββββββ΄ββββββββββββββββββ β β β β β β β ββββββββββΌβββββββββ β β β β TypeScript ββββββββββββββββββββββββββ β β β SDK β β β β β β β β Browser/Node.js β β β βββββββββββββββββββ β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Component | Language | Purpose |
|---|---|---|
| Core Crypto | Rust | VOPRF, blind RSA, DLEQ proofs, P-256 operations |
| Issuer Service | Rust | Token issuance (VOPRF + blind RSA), key rotation, Sybil gates |
| Verifier Service | Rust | Token validation, multi-issuer federation |
| Social Graph Attester | Rust | Trust-graph scoring, JWKS publication, social Sybil attestations |
| Client SDK | TypeScript | Browser/Node.js integration |
| Admin CLI | Rust | Key management, invitation admin |
Current Experimental Implementation
These labels describe code present in the current experimental tree. They do not indicate an external audit, production readiness, or support for a planned profile.
| Feature | Status |
|---|---|
| P-256 VOPRF with DLEQ proofs | β Implemented experimentally |
| Batch issuance (rayon parallelization) | β Implemented experimentally |
| Zero-downtime key rotation | β Implemented experimentally |
| Multi-issuer federation | β Implemented experimentally |
| Invitation system with ban trees | β Implemented experimentally |
| WebAuthn/FIDO2 integration | β Implemented experimentally |
| TypeScript SDK | β Implemented experimentally |
| Admin dashboard UI | β Implemented experimentally |
| Prometheus metrics | β Implemented experimentally |
| HSM/PKCS#11 issuer integration | Not supported by issuer |
| Social Graph Attester service | β Implemented experimentally |
| Blind RSA / V5 public bearer passes | β Implemented experimentally |
| Audit logging | β Implemented experimentally |
| Documentation | In Progress |
| Reference integrations | In Progress |
| Browser playground | Planned |
Why Open Infrastructure Matters
Freebird is infrastructure that organizations can inspect, operate, and adapt themselves.
- Self-hostable: Run your own issuer and manage its operational dependencies.
- Federated: Multiple issuers can exist. Verifiers choose whom to trust.
- Auditable: The source is public for review of implementation and cryptographic claims.
- Forkable: Adapt the code and protocol to your own requirements.
Funding Goals
Funding supports evaluation, documentation, test coverage, reference prototypes, and independent review of this experimental project.
Documentation & Tutorials
Lower the barrier for municipalities and community organizations. Step-by-step deployment guides. Integration cookbooks for common scenarios.
Reference Implementations
Working low-stakes prototypes beyond the current demo: feedback systems and token-gated forums. They will show the token flow and its operational limits.
Browser Playground
Try Freebird without installing anything. Interactive demo that shows the cryptography working in real-time.
Security Audit
Commission an independent third-party review of the cryptographic implementation.
Community Building
Outreach to municipalities, libraries, healthcare organizations who could benefit. Help them understand that privacy-preserving systems are possible.
Try It
git clone https://github.com/flammafex/freebird cd freebird ./launch.sh up
The launch.sh helper handles .env setup and ADMIN_API_KEY generation for you. Issuer on localhost:8081, verifier on localhost:8082.
# Get a token
curl -X POST http://localhost:8081/v1/oprf/issue \
-H "Content-Type: application/json" \
-d '{"blinded_element": "..."}'
# Verify it
curl -X POST http://localhost:8082/v1/verify \
-H "Content-Type: application/json" \
-d '{"token": "..."}'
Full documentation at github.com/flammafex/freebird/docs.
Standards & Prior Art
Freebird uses established cryptographic standards and related protocol designs: