Single-modality detection is failing
SONAR Benchmark, ACM 2024-2025
OpenAI's TTS is detected only 78% of the time by the best available classifier. Models trained on older datasets lose up to 43% performance against newer TTS systems.
Capture, feature extraction, and proof generation all run on your device. What reaches Solana is a zero-knowledge proof and a commitment, never a raw recording.
Speak a phrase, trace a curve. Feature extraction, proof generation, and on-chain verification run automatically.
A random word phrase and Lissajous curve generated fresh for each session. No two sessions share the same challenge.
Each session generates a unique 5-word phrase from a curated English vocabulary and a unique Lissajous curve from random mathematical parameters. The user speaks the phrase while tracing the curve for 12 seconds. The challenge elicits natural behavioral data (voice prosody, hand tremor, touch pressure) rather than testing memory or speed.
Three sensor streams record in parallel: voice, touch, and motion. 12 seconds of simultaneous behavioral data.
The Pulse SDK accesses the device microphone, accelerometer, gyroscope, and touch digitizer. All sensors record in parallel for 12 seconds. Raw motion and touch recordings stay in device memory and are destroyed after feature extraction. Derived statistical summaries leave the device for validation, along with the spoken-phrase audio, which the server transcribes and discards immediately. On desktop, motion sensors are unavailable. Mouse pointer dynamics provide equivalent kinematic features.
308 statistical features across voice, motion, and touch. Anatomical signal (formants, MFCCs, voice quality) alongside anti-synthesis traces (jitter, shimmer, HNR).
Audio contributes 170 features: F0 statistics, jitter, shimmer, harmonics-to-noise ratio, MFCCs, LPC coefficients, formant trajectories, and voice quality. Motion contributes 81: jerk, jounce, FFT band energies, tremor peak in the 4-12 Hz physiological band, and cross-axis IMU covariance. Touch contributes 57: velocity, acceleration, pressure derivatives, curvature, and path efficiency. Per-feature entropy separates live behavior from generated data. Human tremor fluctuates over time; synthetic signal holds steady. On desktop, mouse pointer dynamics replace IMU data with the same kinematic feature shape.
SimHash projects features into a 256-bit fingerprint. Same-user fingerprints cluster; imposters diverge.
The expanded feature vector (including entropy and jitter metrics) is passed through SimHash using random hyperplane projections. The output is a Temporal Fingerprint. Two fingerprints from the same person have small Hamming distance. The entropy features mean synthetic data produces a different fingerprint than real behavioral data.
Poseidon(fingerprint || salt) produces the TBH commitment. The fingerprint and salt stay on-device.
A large cryptographically-secure salt is generated. The Poseidon hash function (chosen for ZK-circuit efficiency over BN254 field elements) takes the fingerprint concatenated with the salt to produce H_TBH. The commitment and ZK proof are transmitted. The fingerprint and salt remain on-device, encrypted.
Groth16 ZK proof: distance is within the valid range. Not too similar (replay), not too different (imposter).
The proof verifies three statements: both commitments are valid Poseidon hashes of real fingerprints, the Hamming distance falls below the maximum threshold (natural human variation), and the distance exceeds a minimum threshold (blocks perfect replay where a bot submits identical data). The verifier learns nothing about the actual fingerprints.
Proof verified on Solana. Anchor updated. Progressive Trust Score recalculated from verification history.
The statistical feature summary is validated server-side by proprietary models that detect synthetic data, then the ZK proof is verified on-chain. Both must pass. The server sees derived statistics (means, variances, spectral coefficients) plus the spoken-phrase audio it transcribes and discards. It never sees raw motion or touch, and it stores no raw recordings. On success, the Anchor stores the verification timestamp in a rolling history. Trust Score recalculates using recency weighting and cadence analysis.
Client-side capture and proving
A TypeScript library that runs on the user's phone or browser. It captures sensor data, extracts features, generates the TBH commitment, and produces the ZK proof. Raw biometric data is discarded after feature extraction—only derived statistical features and the proof are retained.
Hamming distance verification
A Groth16 circuit that proves two Poseidon-committed TBH values are within Hamming distance t of each other. The circuit runs at proving time on the user's device. The verifier learns only that the threshold check passed.
Three Solana programs
The entros-verifier program checks ZK proofs. The entros-anchor program manages non-transferable identity tokens (SPL Token-2022). The entros-registry tracks Trust Scores, validator staking, and protocol configuration.
Off-chain relay and challenge service
A Rust service that generates signed challenges and issues SAS attestations against verified wallets. The public protocol layer—open source for trust and auditability.
Proprietary defense layer
A private Rust crate that analyzes the 308-dimensional statistical feature summary for synthetic artifacts, cross-modality inconsistencies, and Sybil patterns. Protocol behavior is open and auditable in full. Detection logic is not—published thresholds and model internals are calibration data for an attacker.
Sensor capture, feature extraction, hashing, and proof generation run on the user's device. Raw motion and touch recordings stay in device memory and are destroyed once features are computed. The only recording that leaves is the spoken phrase, transcribed on arrival and discarded.
Raw audio, motion, and touch are never persisted after the Temporal Fingerprint is computed. No server-side database holds voice samples or movement traces. The fingerprint is cached locally for fast re-verification and held on chain in a wallet-keyed AES-256-GCM blob, recoverable from any device by the wallet that wrote it and opaque to everyone else. That blob holds a one-way hash of the behavioral summary and a random salt, nothing more.
The Pulse SDK transmits a Groth16 proof, a Poseidon commitment, a 308-feature statistical summary, a coarse outline of the traced curve for the liveness check, and the spoken phrase audio used for transcription. Nothing else.
The protocol proves 'you are human,' not 'you are a specific person.' The TBH is pseudonymous. It does not link to a name, email, or social account.
Poseidon(fingerprint || salt) is computationally irreversible. The commitment cannot be decoded back into the original behavioral fingerprint.
Behavioral verification (not identification) is designed to minimize regulatory exposure under the EU AI Act. Data minimization is enforced by architecture, not policy.
Synthetic input is rejected server-side before it ever reaches the chain. Detection decides who gets an Anchor, and the checks that make that call stay private.
The ZK circuit enforces a minimum Hamming distance between consecutive fingerprints. Perfect replay is rejected at the proof level. A bot submitting identical synthetic data twice gets blocked before reaching the chain.
The 308-dimensional statistical feature summary is validated by proprietary server-side models before the on-chain proof is accepted. These models detect synthetic speech artifacts, unnatural jitter patterns, and cross-modality inconsistencies. The validation logic is private—the attacker can see that checks happen but not how they work.
Trust Score rewards consistency over time, not volume. 100 verifications in one day scores lower than weekly verifications over 3 months. Recency weighting and cadence analysis mean a score reflects sustained presence, not burst activity.
Each verification generates a unique random phrase and Lissajous curve. No two sessions share the same challenge. The challenge elicits involuntary behavioral patterns (voice prosody, hand tremor, touch pressure) that are harder to synthesize than the words themselves.
Three independent sensor streams record in parallel: microphone, pointer/touch digitizer, and device motion (where available). A bot needs to fake realistic voice, tremor, and touch pressure simultaneously. Spoofing one modality is feasible. Spoofing all three with consistent behavioral entropy is a substantially harder problem.
The server maintains a registry of all verified behavioral fingerprints. New verifications are compared against existing entries. Sybil attacks—where one actor creates many identities—produce clustered fingerprints that the registry detects and rejects.
Verification costs SOL, and each wallet carries funding and account rent, so holding many Anchors carries continuing cost. This is a disincentive, not the gate. What decides whether a capture becomes an Anchor is the validator, and synthetic input never reaches the transaction.
Traditional captcha answers “is this session human?” Entros answers a harder question: “is this the same human, and how long have they been proving it?” The protocol provides the signal. The integrator sets the threshold.
Connect a Solana wallet. Your Entros Anchor (non-transferable Token-2022) is tied to that wallet. The behavioral fingerprint stays encrypted with AES-256-GCM in a wallet-keyed on-chain blob—only your wallet's signature unlocks it, on any browser or device. The blob holds a one-way hash, not raw biometrics. Commitment and Trust Score live on chain, visible to every integrator. This is the persistent, portable identity. Each wallet requires funded SOL and account rent, so an Anchor is not free to hold.
Single-modality detection is losing to modern AI. Entros's multi-modal approach is the architecture recent research converges on for proof of personhood.
SONAR Benchmark, ACM 2024-2025
OpenAI's TTS is detected only 78% of the time by the best available classifier. Models trained on older datasets lose up to 43% performance against newer TTS systems.
BioMoTouch, arXiv 2025
Touch and motion sensor fusion from commodity devices achieves 99.71% accuracy with 0.27% equal error rate. Mimicry attacks succeed less than 1% of the time. Replicating physiological characteristics across several modalities, in temporally consistent patterns, is a substantially harder problem.
Pouw et al., Royal Society Proceedings B, 2025
Hand movement and voice prosody couple through shared respiratory and motor control systems. The coupling is involuntary and biomechanical. A bot using TTS and a movement simulator produces two independent signals that lack this natural coupling.
VoiceRadar, NDSS 2025
Micro-frequency oscillations derived from vocal fold physics achieve 0.45% equal error rate against modern TTS. TTS models the statistical distribution of speech features but not the underlying physics of speech production.
Warren et al., "Pitch Imperfect", 2025
Neural vocoders can produce acoustic perturbation values higher than human baselines, not just lower. This overturns the assumption that synthetic speech is "too perfect." Detection must account for artifacts in both directions.
Device physics, BioMoTouch 2025
Physical touch produces a measurable hardware response in a device's motion sensors. A signal generated without genuine physical interaction cannot reproduce it.
// CORE ADVANTAGE
Entros captures voice, movement, and touch simultaneously and verifies their temporal correlation. Spoofing one modality in isolation is feasible. Spoofing all three, with behavioral characteristics that stay consistent across modalities, is a substantially harder problem. Trust Score then asks for that consistency to hold across sessions over weeks.