The GoAT code is an academic research prototype, and meant to elucidate protocol details and for proofs-of-concept, and benchmarking. It has not been developed in a production environment and is not meant for deployment.
GoAT is a file geolocation protocol (formally a Proof of Geo-Retrievability scheme). Using GoAT, you can prove that a particular piece of data is stored within a geographic region. GoAT targets somewhat coarse geolocation radii, useful to prove file replication. For example, GoAT can used to prove that three replicas of a file F are stored in USA, Asia and Europe respectively. Unlike existing geolocation systems that rely on trusted-verifiers, GoAT uses existing internet servers as geolocation anchors, thereby decentralizing trust over a large fraction of the internet.
-
For more information, please have a look at our paper.
-
Two PoRets have been implemented:
Shacham-Waters
andMerkle-Tree
. Please look at the corresponding folders for how to install and run. -
Experiment results can be found in the
experiments
folder.
Anchors are internet servers located at a publicly known location that serve authenticated time.
Roughtime: 64 byte nonce, 64-byte signature
TLS RFC: 32 byte client random (we use it as nonce), 256-byte signature (Assuming RSA).
Roughtime installation script is scripts/install/install-roughenough.sh
(run from current directory).