Cryptographic proof of location.
A cryptographic proof of location is a signed artifact stating that a specific device was inside a specific region at a specific time, which a third party can verify without trusting whoever produced it.
Cyrus Durand, banknote motif, ca. 1824–42. Engraving, proof. Lathe-cut guilloché was adopted because a hand engraver could not reproduce it. The Metropolitan Museum of Art. Public domain.
The signature is what separates a proof from a claim. A GPS reading, an IP lookup and a browser Geolocation response are all claims: the software reporting them can change them, and the receiver cannot tell.
A proof of location has to satisfy all of the following.
- Unforgeability. The prover cannot produce a proof for a place it was not. Mock-location apps, VPNs and rooted-device tooling defeat this in the ordinary stack.
- Third-party verifiability. A relying party who trusts neither the prover nor the vendor can check the proof. If verification means calling the vendor's API and believing the answer, the vendor is a trusted third party and the artifact records the vendor's opinion.
- Binding. The proof is bound to one device, one time and one claim. A proof that can be replayed later, or presented by a different device, is not binding.
- Non-disclosure. The proof reveals only what the relying party needs. A predicate (inside or outside a named region) discloses less than a coordinate pair, and in most compliance settings the predicate is what the rule asks for.
Four approaches exist. Each breaks somewhere.
- Infrastructure inference. IP geolocation, Wi-Fi and cell-tower lookup, and behavioural scoring on top. MaxMind, GeoComply, Incognia and Radar sit here. The system observes what the device reports, compares it against databases and prior behaviour, and returns an estimate or a risk score. None of the signals are signed. A VPN moves the IP. A mock-location provider moves the GPS. Accuracy is bounded by the honesty of the reporter. These systems catch most casual evasion and are widely deployed. They produce no artifact a regulator or counterparty can check independently, because nothing is signed.
- Distance bounding. Position is established by the physics of signal propagation. Verifiers at known positions time challenge and response, and the speed of light bounds how far the prover can be. Chandran, Goyal, Moriarty and Ostrovsky, Position Based Cryptography (CRYPTO 2009), showed that secure positioning is impossible in the vanilla model against colluding adversaries, and becomes possible in the bounded-retrieval model. The result is often cited as proving location cannot be proven. It proves something narrower: this construction, in that model, fails against provers who share what they receive. It says nothing about designs whose trust does not rest on propagation timing. Distance bounding also requires verifier infrastructure at known positions.
- Witness and oracle networks. Peers attest to each other's presence and the attestations are aggregated, usually onchain. Witness Chain and EigenCloud work here. Milionis, Ernstberger, Bonneau, Kominers and Roughgarden (2025) give the formal limits. In their model a source reports unverifiable information and observers receive signals the source can manipulate. Truthful elicitation of location is possible if and only if the source is guaranteed to lie inside the convex hull of the observers. Outside that hull, no mechanism recovers the truth, so a witness network must surround every area it covers, at a deployment cost that scales with geography. And no collusion-resistant mechanism exists in this setting: where one party can act as both source and observer through Sybils, self-dealing has to be handled outside the mechanism, by restricting entry or adding trust assumptions. These are constraints on incentive design, not on the honesty of any particular network. They apply wherever location is elicited from a self-interested source through observers.
- Hardware-anchored device attestation. The device establishes its own location from multiple onboard signals and signs the result with a key held in a secure element the operating system cannot export. The platform's attestation service certifies that the key lives in genuine hardware and that the code requesting the signature is the unmodified application. The 2025 impossibility results do not apply, because the information is no longer unverifiable at the source: the signature comes from a key the reporting software cannot reach, so there is no elicitation problem to solve. The trade is different rather than absent. The proof covers the device, not the person holding it. It requires an installed app and granted permissions. It cannot answer for anonymous web visitors. Apple and Google become part of the trust model. And it does not stop a cooperating human: a person genuinely inside the region, holding a phone that moves like a phone, can run the proof on behalf of someone outside it. That attack costs one person per account and does not scale into a farm. Racks do not move, have no magnetic or barometric signals to read, and cannot produce a proof at all, and devices clustered in one room across thousands of accounts are the pattern the system exists to surface. This is Octet's approach.
The SDK does not receive location. It learns location from inertial motion, RF geometry, GPS, and signals most systems ignore, using only what the host app already has permission to read. Learning runs on the device. Raw samples are not transmitted.
The device queries Apple App Attest or Google Play Integrity and binds the result into the proof. A rooted or jailbroken device, a modified build or a flagged debugger surfaces as ATTESTATION_FAILED and no proof is issued. The verdict is signed by a key in the Secure Enclave on iOS, or the TEE or StrongBox on Android. The private key never leaves the chip.
The output is a predicate: isWithin, isOutside or contains, evaluated against a named region, returning YES, NO or INDETERMINATE. YES and NO each carry a proof. INDETERMINATE carries a reason and no proof, because merging "the device was elsewhere" with "the SDK could not tell" would hide a distinction the relying party needs. Latitude and longitude are never in the proof and never leave the device.
Each signal alone is defeatable, and each has a productised bypass. The defence is cross-signal physical consistency: clock-state self-consistency, independent-sensor residuals, and the shape of the carrier-to-noise distribution.
The proof carries the keys needed to re-check every signature, so verification needs no callback and no external key lookup. octet-verify is an open-source Rust CLI that validates the bytes offline: stage signatures, chain linkage, field bindings, freshness. Its verdict is VALID, INCONCLUSIVE or INVALID, and every check prints PASS, FAIL or NOT-CHECKED, so a check that could not run stays visible in the output.
Built with --features appattest, the CLI also validates the platform attestation roots offline: Apple App Attest against Apple's embedded root, Android key attestation against Google's hardware-attestation root. Without that feature build, attestation reads NOT-CHECKED, and VALID then means signed by the key the proof carries and unaltered, rather than proven to come from genuine device hardware.
The proofs API holds proof bytes for less than 24 hours, then deletes them. No verifier check relies on anything that API returns, so a compromised backend can fail to return a proof and cannot produce one the verifier accepts. Trust rests on one small open-source binary and the platform vendors' attestation roots.
What this does not prove: the proof establishes that an enrolled device was inside a region at a time, not who held the device. Identity binding is a separate control. Server-side generation is not possible, because a server has no motion, magnetic or barometric signals to fuse. Metre-scale predicates are not available. Live regions are earth, country, subdivision, and US state.
References. Chandran, N., Goyal, V., Moriarty, R., Ostrovsky, R. "Position Based Cryptography." CRYPTO 2009, vipulgoyal.org/pbc.pdf. Milionis, J., Ernstberger, J., Bonneau, J., Kominers, S.D., Roughgarden, T. "Incentive-Compatible Recovery from Manipulated Signals, with Applications to Decentralized Physical Infrastructure," 2025.
Documentation. SDK documentation. Verifier source. Location Factor Authenticator.