ephemerand is an experimental approach to generating a globally-consistent randomness beacon.

Once every day, the US military takes various measurements of the satellites in the GPS constellation. These measurements include:

  • Satellite ephemeris (information about orbit)
    • Inclination
    • Eccentricity
    • Argument of perigee
  • Clock skew
  • Ionospheric noise

The ephemerand program collects this information from a GPS receiver, hashes them with BLAKE-2b, and then outputs the result.

Any device with a ublox chipset should work. I've tested this and this.

Presentation slides.

Unpredictable (?)

  • 31 active satellites
  • 10 parameters per satellite
  • Being able to predict far in advance would be major applied physics break-through
    • Is this true? Needs more research

Unbiasable (?)

  • The US military in theory can influence, however:
    • It would be easy to detect (everyone's GPS readings would be wrong)
    • Economic impact would be massive
  • Potentially could mix in data from Europe/Russia/China/India satellites


Plug in your GPS device, then run:

sudo ./ephemerand run --verbose

If you see version information from your device then it connected OK:

# Connection OK. SW: 1.00 (59842) HW: 00070000

If you wait for a bit you'll see it pick up satellites (make sure the sky is in view):

# Sat #32 (1/31) [2044.147456 -> 24166000920924000054fd00b80da1006e9413009f3b96006a77f500b400e700]
# Sat #31 (2/31) [2044.147456 -> 9a4b5f00a20b24000046fd00350ca1004dbe3f0061b9ff009a905600fcff0600]
# Sat #30 (3/31) [2044.147456 -> af1e5e0032ff24000034fd007e0ca100dd604000c7e4840014796700c8fff700]
# Sat #29 (4/31) [2044.147456 -> 62065d00121c24000065fd001c0ca100b37c9600f2e33a00709efa00c0ff2100]

After all 31 satellites are picked up you'll get today's random number:

rand 0936e456684b04edd449bad5c8aba51e28a5adc98d4f20e560af668644f23665 2044.147456 1552323456

The first parameter after rand is the random value. The next is the GPS week and GPS time of week that the almanac is applicable for, separated by .. The next is the GPS week/time converted to a unix timestamp.ration

What's next for ephemerand

Need to evaluate the quality of the randomness, improve the time the daily random value rotates, expose the GPS clock to nodes, and more.

Built With

Share this project: