◷ COMING SOON · LOCKED

Kronos Phoenix

A secret sealed under a key that only a rebirth moves on. Reading is rebirth — every read costs the death of the generation that read it.TestedEvery read goes through the bank and leaves a birth on the witness: TestEveryReadIsARebirth

The one rule

There is no getKey().

The bank has no getKey(): once a line has started, the only call it answers is Rebirth(), and it hands out nothing without a death certificate signed by the current live key (or, when a reply was lost, the same request again). Between reads the life holds no K and no half of the bank's, so to read, you must end the generation that is reading. The past seals shut behind it once the dead seed is really gone (the corpse, below).TestedTestEveryReadIsARebirth, TestRetryGetsTheSameAnswer

How it works

  1. Two halves. K = HMAC(bankHalf, privSeed). The bank holds one half and only the public commitment of the other. It can verify your half exists; it can never reconstruct it.TestedTestBankAloneCannotRead
  2. Death certificate. To advance, the live generation signs Sign(priv, "gen G closing → next pubkey"). The next key signs a claim over it, and a one-time ticket goes with them. The bank checks the certificate under the public key it stored for generation G, and keeps every key the line has had. A certificate copied off the witness collects nothing.TestedTestGenuineReplay, TestRefusalsChangeNothing
  3. One-way ratchet. bankHalf_{G+1} = HMAC(bankHalf_G, fresh, DC), where fresh is 32 random bytes only the bank ever holds, so an old half plus every public certificate can't rebuild today's. Forward only. The bank keeps the old half one rebirth longer, to answer a lost reply.TestedTestBankHalfFromOldHalfAndDCs, TestEachHalfIsFresh
  4. The corpse. Each read overwrites the dying generation's private seed and key, both halves and both Ks with zeros, in the life's one page, which is locked in RAM so it never goes to swap. K for the past can't be formed again once that seed is really gone.TestedTestLifePageIsLockedAndWipedBeing fixedGo's own crypto still keeps copies the package can't reach: 0–3 of the dead seed and 0–4 of the dead K after a read, in our runs (TestZeroingLeaves counts them). So it isn't really gone yet; Go 1.26's runtime/secret is the fix.
  5. The witness. Every birth is sealed on Kronos Notary before the bank hands out its half: the generation, its key, the whole death certificate and the hash of the birth before it, dated by the bank's clock. phoenix verify checks the chain from genesis with no key, and names a gap, a fork or a forged birth. (The live demo keeps its births in its own memory, on purpose: nothing a visitor does there reaches the Notary.)TestedTestBirthsAreSealedAndChained, TestBankRefusesWhenTheSealFails, TestVerifyNamesAGap, TestForgedBirthIsRefused, TestHTTPNotaryReadsTheRealNotary, TestDemoNeverSealsOnTheNotaryBeing fixedOnly on our own box for now: the Notary runs there, and off it, reading a line's records needs a token, so not everyone can check yet.

What holds today — and where it stops

Bank onlyInert. Holds the bank's halves and the public keys, never a seed: it can't form any K or sign a death certificate, and an old half plus every public certificate doesn't rebuild today's.TestedTestBankAloneCannotRead, TestBankHalfFromOldHalfAndDCs, TestDemoAttacksGetNothing
Bank "starts its own line"Possible — but it shows. The first genesis sealed under a name stands for good, and phoenix verify names a second genesis, a forged birth, or a birth dropped from the middle (the witness, above).TestedTestGenesisIsTheLinesOwn, TestForgedBirthIsRefused, TestVerifyNamesAGapBeing fixedA bank that doesn't run this code can still hand out halves without sealing anything: nothing on the life's side checks the Notary yet.
Old ciphertext + full current bankThe past stays sealed while the old seed is really gone (the corpse, above): an old generation's K needs that generation's seed, which the bank never had, and its death certificate, copied off the witness, collects nothing.TestedTestDemoAttacksGetNothing, TestGenuineReplay
Live hostGets the current secret, which is the whole secret: every generation re-seals the same one, so rotate the real credential at its source. A thief who copies the host and rebirths first doesn't keep the line: your next read freezes it for everyone, the thief too, and the two death certificates prove the key signed twice. Until that read, the thief's read is a birth on the witness you didn't make. (Try it in the demo.) One exception: a copy taken while a reply was lost holds your pending request, ticket and all, so it collects the same answer as a retry. Nothing freezes then; the only mark is a retry on the witness you didn't make.TestedTestThiefRebirthsFirst, TestSecondCertificateFreezesTheLine, TestDemoThiefFirstFreezesTheLine, TestStolenPendingRequestLeavesAMarkBeing fixedA thief who stays on the host still sees each new seed as it's made, and a frozen line has no way back yet. A recovery key kept off the host will be the way back.
Bank + host + card + PINWe can't help you. Nobody can. The honest floor. (There's no card step yet: today a thief with the live host alone is already here.)

It doesn't promise perfection. The aim is a staircase that gets steeper than any thief's patience — every door asks for the key behind the next door.

See it actually work

The live demo gives you your own lineage, on the engine's own bank and witness. Run real rebirths, read the live secret, then try to be the thief. Three of its four attacks get nothing; the fourth, a thief who copies the live host and reads first, gets the secret, and your next read freezes the line. Its births stay in its own memory and never reach the Notary.

Open the live demo →

Ask the guide

Questions about how Phoenix works, what it guarantees, or where it stops? Ask away.

🔒 Not yet for sale. This prod address is locked. Kronos Phoenix opens only after it passes an internal business-readiness audit, and will then be sold exclusively through Kris Adams TV Ltd (UK, VAT registered). This page handles no money and no real secrets.

Sibling to Kronos Vault — Vault is the gate (who may ask). Phoenix is the wall (what reading costs). They're meant to stack; they aren't joined yet.