NTN · 2026-04-18
Orbital Slot as Entropy Source: Harvesting Positional Uncertainty from Satellite Constellations
By J. W. Bouckaert
Every key, nonce and salt in an identity system depends on an entropy source. Most systems use a hardware random number generator on the processor, the operating system's random number generator, and in some cases an external quantum random number generator (QRNG).
These sources sit close to the systems they protect. That raises a question we have looked at: can the unpredictable part of a satellite's position, the difference between where a public orbit model says a satellite is and where it is observed, serve as an entropy source? This article explains the physics, tests the idea against NIST's entropy source requirements, and describes the entropy PasskeyBridge uses in production. PasskeyBridge does not use orbital data as an entropy source.
Orbital position uncertainty
"Orbital slot" usually refers to the geostationary positions the ITU allocates. Here we mean something different: where a satellite in low Earth orbit (LEO) is along its predicted track at a given moment.
That prediction normally comes from a Two-Line Element (TLE) set propagated with the SGP4 model. The US Space Force publishes TLEs through Space-Track.org, and CelesTrak redistributes them. SGP4 is a general perturbations model. It accounts for the main effects of Earth's shape, the Sun and Moon, and a simple drag term, but not for short-term changes in the forces on the satellite, so its predictions drift from the true position as the element set ages, mostly along the direction of travel.
Sources of the drift
Atmospheric drag
Drag depends on the density of the upper atmosphere, which rises sharply with solar and geomagnetic activity. William Parker and Richard Linares of MIT analyzed the May 2024 Gannon storm, the largest geomagnetic storm in more than 20 years. They found that its size and duration were poorly predicted even a day ahead, and they used TLE histories for the LEO catalog to show the resulting increase in drag across many satellites.
Solar radiation pressure
Sunlight pushes on a satellite with a force that depends on its area, orientation and surface properties, and on whether it is in Earth's shadow. Changes in attitude change the force.
Other effects
Higher-order gravity terms, tides and the satellite's own maneuvers also move it away from a TLE prediction.
Testing the idea against SP 800-90B
NIST SP 800-90B sets out how to design and validate an entropy source: a noise source, optional conditioning, health tests that run continuously, and an estimate of min-entropy, the measure of how hard the output is to guess. Orbital residuals fail two of its basic assumptions.
The noise is not secret. An entropy source must be unpredictable to an attacker. A satellite's position is not private. Anyone with radar, optical tracking or a radio receiver can observe it, and better orbit data than public TLEs is available to many parties. An attacker who can observe the same satellite as the defender can compute the same residual.
The noise source is outside the module. SP 800-90B describes a noise source inside the boundary of the module being validated, where its behavior can be characterized and its health tested. Data received from outside, whether TLE catalogs or measurements of a satellite, does not fit that model.
Local receiver measurements, such as the phase noise of a GNSS receiver, are a different matter. That noise comes from the receiver's own electronics and could be characterized like any other physical noise source, but it is not orbital entropy.
Public, unpredictable data has a different use: a public randomness beacon. The NIST Randomness Beacon, for example, publishes signed random values that anyone can check. Values like these are useful for public commitments and timestamps, but not as secret keys.
Combining sources
A system that does mix sources can rely on a simple property: when independent inputs are combined with XOR, the result is at least as hard to guess as the strongest input. Adding a weak or public input does not reduce the strength of a strong one, but it does not add secrecy either. Min-entropy does not add up across sources that an attacker can observe.
Entropy at PasskeyBridge
PasskeyBridge's random number generator is an AES-CTR deterministic random bit generator (DRBG) with a 256-bit seed.
- The seed comes from quantum random number generator services, tried in order: Outshift QRNG, QCi uQRNG and the ANU QRNG. If none answers, the edge runtime's
crypto.getRandomValuesis used. - Each seed is XORed with output from the local cryptographic random number generator, so the result is at least as strong as the local generator even if a remote provider fails.
- Every draw from a provider runs the SP 800-90B continuous health tests (section 4.4). A draw that fails is rejected, and the next provider is tried.
- The DRBG reseeds softly every 60 seconds or 1,000 requests, and fully every 5 minutes or 5,000 requests.
- The SHA-384 hash of each mixed seed is recorded as evidence for SOC 2 readiness.
PasskeyBridge does use orbital data elsewhere. Its provenance check propagates public TLEs with SGP4 to compute the Doppler shift expected for a declared satellite and observer, and compares it with the observed value. That is a consistency check on a claimed location, not a source of randomness.
Summary
Orbital position residuals are unpredictable to anyone who cannot observe the satellite, but they are observable by others, so they cannot serve as a secret entropy source under SP 800-90B. Hardware noise sources and QRNGs, combined with the local cryptographic generator, remain the basis of PasskeyBridge's randomness.