RoughTime
This host runs a RoughTime synchronization server implementing Revision 14 (0x8000000c) of the IETF protocol. RoughTime provides cryptographically verifiable time without requiring a trusted network path.
Please feel free to use this server as needed for time synchronization, timestamping, or to test and develop RoughTime clients. We operate it for community benefit; please be reasonable with traffic.
We provide open-source Clojure implementations of the RoughTime protocol and a UDP server.
We also have a command-line client you can use to query this and other servers.
What is RoughTime?
RoughTime is a secure time service. Servers sign batches of client requests, chaining them with Merkle trees. Each response proves the server’s notion of time and prevents undetected backdating/forward-dating across requests.
- No single trusted network path: you can verify responses offline.
- Chaining (via nonces & Merkle roots) makes equivocation detectable when you query multiple servers.
- Great for timestamping, log sealing, and bootstrapping other protocols.
Server Information
| Address | roughtime.sturdystatistics.com |
|---|---|
| Port | 2002 |
| Protocol | UDP |
| Public Key | NqIjwLopQn6yQChtE21Mb97dAbAPe5UOuTa0tOakgD8= |
The long-term public key is also available in DNS as a TXT record:
dig -t TXT roughtime.sturdystatistics.com
Tip: For verifiable time, query at least three independent servers and verify the response chain. Cloudflare maintains a public ecosystem list here.
Example Result
| skew | 0 |
|---|---|
| expires in | 1d 19h |
Request Message
{"VER" "0x8000000c",
"SRV"
["4a4344b8 ed36a263 cae105a2 92fe2661"
"d964691d be07548f 43b5b523 2671f3ab"],
"NONC"
["ca1d4b27 049a26a7 082b5e6e 791d683d"
"ba2581d4 4efe93bb 6b3172ad 19a53f3c"],
"TYPE" 0,
"ZZZZ" "0{912}"}
Response Message
{"SIG"
["2b0b6a72 16559c51 9b639319 e6a27a41"
"fa323fbc f27a9e56 9022df67 02450a58"
"ee0ff356 533319f5 3a955813 a7bae076"
"c9a3b853 3c4a29cd cd4954c7 86d3bb06"],
"NONC"
["ca1d4b27 049a26a7 082b5e6e 791d683d"
"ba2581d4 4efe93bb 6b3172ad 19a53f3c"],
"TYPE" 1,
"PATH" [],
"SREP"
{"VER" "0x8000000c",
"RADI" 10,
"MIDP" 1766843641,
"VERS" ("1" "0x8000000c"),
"ROOT"
["200fd1b1 905068a6 529be17f a6776cb7"
"a089f938 8ce2d8c4 31d5f2e2 f2dd8cbb"]},
"CERT"
{"SIG"
["a2af05d0 b4205d28 84e9765a db27949f"
"9d70323e cf33d1d5 426a21c2 631e2a42"
"cf5e0bac 41938c79 3ac31527 1cc01f2a"
"a2e90ee4 603b2ab4 42929351 a3182200"],
"DELE"
{"PUBK"
["7083f37d 75bff01e 0299474d eb8e80cf"
"8b07366d e87c4f45 63a1d885 2667d63e"],
"MINT" 1766826000,
"MAXT" 1766998800}},
"INDX" 0}
Error: Invalid delegation signature
{:dele-bytes
"0300000020000000280000005055424b4d494e544d4158545bcb688ff32e17c88de638bcb4823e6862aa776a1c3e554deb4dce60a5e178c50cc54f69000000008c16516900000000",
:dele
{"PUBK"
["5bcb688f f32e17c8 8de638bc b4823e68"
"62aa776a 1c3e554d eb4dce60 a5e178c5"],
"MINT" 1766835468,
"MAXT" 1766921868},
:lt-public-key "0GD7c3yP8xEc4Zl2zeuN2SlLvDVVocjsPSL8/Rl/7zg=",
:dele-sig
"e818c330fc568c89e0b32828f78e6257563497b048be952fb8863d8540e695af0c9e7ba8bbd3c0348ac9d37454c342b1dc3fceb74cd583a18594a54bd152ea02"}
| skew | 0 |
|---|---|
| expires in | ∞ |
Request Message
{"VER" "0x8000000c",
"SRV"
["95645ff5 c385c24e ba48d509 528a4a74"
"e0861c0b 57f46c25 ee5c6a48 8a23246f"],
"NONC"
["bfe35b07 ab77d956 ddc98478 604564ea"
"d811767f 71492633 f61d8466 c4ef199f"],
"TYPE" 0,
"ZZZZ" "0{912}"}
Response Message
{"SIG"
["adf554e1 6ddf9deb e2204eaf bc5f20fb"
"0b2e82e6 8f685c25 c1200144 9b6cbe77"
"a77f5bce 15920bea 21e0c333 454eb594"
"f4d618cc 141a975a 6aa0077b acac920b"],
"NONC"
["bfe35b07 ab77d956 ddc98478 604564ea"
"d811767f 71492633 f61d8466 c4ef199f"],
"TYPE" 1,
"PATH" [],
"SREP"
{"VER" "0x8000000c",
"RADI" 5,
"MIDP" 1766843641,
"VERS" ("0" "0x8000000c"),
"ROOT"
["3728c15a 3ab67d26 34ac0bf2 e69dea0f"
"0a9088e1 0d22b5a8 4ce8ccc3 cf4f3cdc"]},
"CERT"
{"SIG"
["c0be52c3 79a57dbd 026b9c23 13748323"
"35296c4f 42a2b0ec 9319ee0c 18e591dd"
"5ba1b635 8799b899 989a1d3e 9e314c7e"
"9abd8b52 e95cef59 a695f41c 66c4f005"],
"DELE"
{"PUBK"
["92a0b40f d0dc4852 061f075d 305ded4d"
"9ccc3001 f41f038d e1071a40 4fcf3d60"],
"MINT" 0,
"MAXT" 18446744073709551615}},
"INDX" 0}
| skew | 0 |
|---|---|
| expires in | 1mo 3d |
Request Message
{"VER" "0x8000000c",
"SRV"
["8c4bbf59 8f43ff13 da82bfeb 9e0652a4"
"e372ab03 c2cae3b6 f661ea29 c8ebacc2"],
"NONC"
["59c86e07 e357dfaf f5124a51 fb6cecc4"
"743f59e7 42b437d5 7fca5e95 818ff826"],
"TYPE" 0,
"ZZZZ" "0{912}"}
Response Message
{"SIG"
["6a2f984c 7f3cab40 0a8e0ca7 a241afdd"
"897542f7 10cee9f8 3115d7b7 717f4d13"
"f54cdbe8 f9e4c936 eeaf7c0b 22aa0892"
"ff26e958 e86ea10c acbdbe39 5188800f"],
"NONC"
["59c86e07 e357dfaf f5124a51 fb6cecc4"
"743f59e7 42b437d5 7fca5e95 818ff826"],
"TYPE" 1,
"PATH" [],
"SREP"
{"VER" "0x8000000c",
"RADI" 1,
"MIDP" 1766843641,
"VERS" ("0x8000000c"),
"ROOT"
["0e40b063 97404bd0 472eea88 c929d659"
"3a83fdc3 2dd6a189 71e45f91 a787e696"]},
"CERT"
{"SIG"
["a6c490ef 46ffa7ff cac357ad cd2d578c"
"85530735 d209b146 daa3ad39 20e998b4"
"6258beb7 6eef48e2 03d5841a 39c211d1"
"529723d0 25d59ee4 df3e9a09 dfc7520d"],
"DELE"
{"PUBK"
["186de3da d4f695fe f296f26a 92e8964f"
"202b7c8e 65285b62 3d0826b9 4facd925"],
"MINT" 1736208000,
"MAXT" 1769817600}},
"INDX" 0}