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.

More about why we made this server.

Server Information

Addressroughtime.sturdystatistics.com
Port2002
ProtocolUDP
Public KeyNqIjwLopQn6yQChtE21Mb97dAbAPe5UOuTa0tOakgD8=

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

skew0
expires in1d 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"}
skew0
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}
skew0
expires in1mo 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}