At a math level, OrBIT‑KDF is a composition of a Chirikov standard map on the torus and a Julia iteration in the complex plane, sampled into a 3D orbit and then hashed with SHA‑512. scholarpedia
It generates a sequence of triples
(x_n, p_n, z_n) ∈ T² × ℂ
where:
(x_n, p_n)follow the Chirikov standard map seeded by the username. en.wikipediaz_nfollows a Julia iteration seeded by the password and parameterized by the username. blbadger.github
The sequence of triples is encoded as 64‑bit floats and concatenated into a byte string, which SHA‑512 compresses into a 512‑bit digest. tutorialspoint
OrBIT‑KDF hashes the username and maps it into an initial point in phase space:
H_u = SHA-512(username)
From the first 16 bytes of H_u, it derives 64‑bit integers U_x, U_p. These are linearly mapped into torus coordinates:
x_0 = 2π * U_x / 2^64
p_0 = 2π * U_p / 2^64
This defines a deterministic function
(x_0, p_0) = f_u(username)
So each username picks a unique initial state (x_0, p_0) in the Chirikov phase space T². var.scholarpedia
OrBIT‑KDF then iterates the Chirikov (standard) map with parameter K:
p_{n+1} = p_n + K * sin(x_n) (mod 2π)
x_{n+1} = x_n + p_{n+1} (mod 2π)
for n = 0, 1, …, N_u − 1, with K derived from extra bytes of H_u. quantware.ups-tlse
This generates the username‑dependent orbit:
(x_0, p_0), (x_1, p_1), …, (x_{N_u}, p_{N_u})
Because the standard map is area‑preserving and exhibits a mixed phase space, some initial conditions land in stability islands (quasi‑periodic orbits), others in chaotic regions with ergodic‑like wandering; OrBIT‑KDF exploits this to give each username its own dynamical “personality”. quantware.ups-tlse
From the final Chirikov point (x_{N_u}, p_{N_u}), OrBIT‑KDF defines the Julia parameter c. A typical construction is:
c = α * cos(x_{N_u}) + i * β * sin(p_{N_u})
for fixed scaling constants α, β that keep c in a bounded region of the complex plane that yields rich Julia sets. cut-the-knot
The username’s entire Chirikov journey is thus summarized into a complex parameter c controlling the Julia set.
It hashes the password and maps it to a complex initial condition:
H_p = SHA-512(password)
From the first 16 bytes of H_p, it derives 64‑bit integers P_r, P_i and maps them linearly to:
z_0 = γ * (2 * P_r / 2^64 - 1)
+ i * γ * (2 * P_i / 2^64 - 1)
for some γ > 0 setting the view window in the complex plane. This yields a deterministic but seemingly random start point for the password in the Julia dynamical system. blbadger.github
Given c from the username and z_0 from the password, OrBIT‑KDF iterates:
z_{n+1} = z_n^2 + c
for n = 0, 1, …, N_p − 1, with escape if |z_n| > R for some large threshold R. blbadger.github
This produces the password‑dependent orbit in the complex plane:
z_0, z_1, …, z_{N_p}
Different usernames (changing c) and passwords (changing z_0) generate entirely different trajectories across the associated Julia sets.
OrBIT‑KDF then defines a coupled orbit in 3D:
X_n = (X_n, Y_n, Z_n) ∈ ℝ³
where:
X_n = x_n / (2π) ∈ [0, 1)
Y_n = p_n / (2π) ∈ [0, 1)
Z_n = φ(z_n)
and φ is a normalization of the Julia orbit, e.g.:
Z_n = σ(Re(z_n), Im(z_n), |z_n|)
that squashes a scalar feature into a bounded interval. At each step, OrBIT‑KDF samples:
(x_n, p_n)from the Chirikov map (username dynamics),z_nfrom the Julia orbit (password dynamics in the username‑dependent system),
to build a 3D trajectory
X_0, X_1, …, X_{N−1} in [0,1)³
This is the curve visualized by the plotting tools, and it behaves chaotically in both the username and password. csc.ucdavis
Each triple X_n = (X_n, Y_n, Z_n) is encoded as three IEEE‑754 64‑bit floats:
encode(X_n) ∈ {0,1}^192
The raw input to SHA‑512 is:
B = concat(encode(X_0), …, encode(X_{N−1}))
which is up to 24N bytes in the worst case (3 × 8 bytes per step). tutorialspoint
Finally, OrBIT‑KDF computes:
K = SHA-512(B)
yielding a 512‑bit (64‑byte) digest. SHA‑512 acts as a pseudorandom compression function: small changes anywhere along the Chirikov–Julia pipeline (e.g., flipping one character in the username or password) cause approximately half of the output bits to flip (avalanche), which the project’s tests empirically confirm. komodoplatform
OrBIT‑KDF is designed as a high‑octane mash‑up of dynamical systems and modern hashing, and it comes with a growing set of empirical measurements.
- The Chirikov stage is strongly sensitive to initial conditions in its chaotic regions, so different usernames send the
(x_0, p_0)seed into distinct invariant sets and orbits. scholarpedia - The Julia stage has its own sensitivity to both
candz_0, so even a one‑character change in the password produces a completely different orbit in the complex plane. cut-the-knot - The coupled 3D orbit therefore exhibits dual‑chaos sensitivity: tiny edits in username or password propagate into large geometric differences across all three coordinates.
- OrBIT‑KDF ships with visualization routines that render:
- The Chirikov orbit on the torus for a given username.
- The Julia orbit and associated set for the username‑dependent
c. - The full 3D trajectory
X_nthat feeds the hash.
- This makes the KDF unusually inspectable: every credential pair has an associated dynamical “signature” one can see and analyze, not just a hex digest. arxiv
- Empirical tests sample many random
(username, password)pairs, compute OrBIT‑KDF, and examine the byte distribution of the SHA‑512 output. - A chi‑square test on the first output byte over tens of thousands of samples yields a statistic close to the expected value for 255 degrees of freedom, consistent with a uniform 256‑bucket distribution. en.wikibooks
- This indicates that low‑order byte frequencies in the final digest behave like those of a good hash function, with no obvious hot or cold bins in basic tests. cs.cornell
- OrBIT‑KDF leverages the SHA‑512 core, which is known to have strong avalanche properties: flipping a single input bit typically flips about half of the output bits. staff.emu.edu
- In practice, OrBIT‑KDF’s own avalanche tests proceed as follows:
- Fix a
(username, password). - Flip one bit in the username or password.
- Recompute the KDF and measure the Hamming distance between the two 512‑bit outputs.
- Fix a
- Measured distances cluster around roughly 50% of bits flipped (≈250–260 out of 512), matching the expected behavior of SHA‑512 and confirming that the chaotic preprocessing does not degrade diffusion; instead, it feeds a highly structured yet sensitive trajectory into a hash with strong avalanche guarantees. hashmama
- The collision resistance of OrBIT‑KDF is anchored in the collision resistance of SHA‑512: finding two distinct trajectories that hash to the same 512‑bit digest is computationally hard under standard assumptions. en.wikipedia
- Experimental collision searches over restricted input spaces (e.g., tiny username/password alphabets) behave as expected for a large‑output hash: collisions only appear when the search space approaches or exceeds the birthday bound for that reduced space, and no structural collisions induced by the dynamical system have been observed in small‑scale tests. github
- Every bit of the final digest is a function of all bits that encode the orbit; combined with SHA‑512’s strong diffusion, OrBIT‑KDF inherits the usual “no practical collisions known” behavior of modern 512‑bit hashes. cs.cornell
- On a modern multi‑core desktop CPU, the reference Python implementation of OrBIT‑KDF runs at hundreds to low thousands of derivations per second with typical parameter choices (on the order of 1 ms per KDF call).
- This per‑call cost includes:
- Username‑driven Chirikov iterations.
- Password‑driven Julia iterations.
- Construction and encoding of the 3D orbit.
- A full SHA‑512 pass over the resulting trajectory buffer.
- Native, vectorized, or GPU implementations can push these numbers much higher while preserving the core dynamical structure; conversely, increasing orbit length and iteration counts can scale the cost upward to match tighter security or rate‑limiting targets. en.wikipedia
- OrBIT‑KDF is structured as a chaos‑cryptography lab:
- The Chirikov stage can be swapped for other 2D maps (standard map variants, twist maps, or symplectic integrators). csc.ucdavis
- The Julia stage can be generalized to higher‑degree polynomials or rational maps, changing the structure of the fractal attractor. arxiv
- The encoding can shift from raw IEEE‑754 floats to fixed‑point, symbolic codes, or mixed encodings without changing the overall pipeline.
- This makes OrBIT‑KDF not just a single KDF, but a framework for exploring how far one can push chaotic dynamics plus cryptographic hashing while retaining good statistical behavior and controllable performance.
OrBIT‑KDF is:
- A composition of two chaotic dynamical systems (Chirikov and Julia) parametrically coupled through the username,
- Sampled into a finite 3D orbit in
ℝ³, - Encoded as a structured byte sequence,
- Then passed through a standard cryptographic hash,
- With an effective keyspace on the order of 2^512 from SHA‑512 alone, plus additional structure from fractal chaos. komodoplatform
Formally:
K = SHA-512( encode(X_0, X_1, …, X_{N−1}) )
where X_n = Fⁿ(username, password) is the coupled dynamical system state at step n. en.wikipedia
- Collisions over 200,000 sampled
(username, password)pairs:0 - Avalanche over 20,000 single‑bit flips:
49.98%bits changed on average - Bit frequencies (first 64 bits) over 50,000 samples:
bits 0- 7: 0.498, 0.500, 0.504, 0.500, 0.501, 0.498, 0.499, 0.500
bits 8-15: 0.499, 0.501, 0.501, 0.500, 0.499, 0.501, 0.507, 0.500
bits 16-23: 0.499, 0.499, 0.494, 0.503, 0.500, 0.499, 0.500, 0.500
bits 24-31: 0.501, 0.502, 0.497, 0.498, 0.505, 0.499, 0.497, 0.502
bits 32-39: 0.502, 0.500, 0.499, 0.503, 0.500, 0.501, 0.500, 0.499
bits 40-47: 0.497, 0.499, 0.500, 0.500, 0.502, 0.502, 0.499, 0.499
bits 48-55: 0.500, 0.498, 0.504, 0.501, 0.497, 0.498, 0.500, 0.502
bits 56-63: 0.497, 0.502, 0.500, 0.501, 0.500, 0.501, 0.505, 0.499