Skip to content

Latest commit

 

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

OrBIT-KDF Chirikov × Julia KDF

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.wikipedia
  • z_n follows 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


1. Username → initial Chirikov state

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 . var.scholarpedia


2. Chirikov dynamics (username curve)

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


3. Username → Julia parameter

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.


4. Password → initial Julia state

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


5. Julia dynamics (password curve)

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.


6. Coupled 3D orbit

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_n from 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


7. Encoding the curve into bytes

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


8. Final SHA‑512 compression

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


Capabilities, Avalanche, and Empirical Stats

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.

Chaotic sensitivity

  • 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 c and z_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.

Fractal visualization

  • 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_n that 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

Output distribution and chi‑square

  • 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

Avalanche behavior

  • 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.
  • 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

Collision resistance (experimental perspective)

  • 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

Throughput and cost

  • 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

Extensibility as a chaos‑crypto lab

  • 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.

Summary in math

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


Recorded Test Results

  • 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

About

OrBIT is an experimental key derivation function that uses chaotic fractal dynamics plus a cryptographic hash to turn user credentials into high‑entropy keys.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages