[Cryptography] Montana: a post-quantum time chain and its applications, full source for review

alejandromontana at tutamail.com alejandromontana at tutamail.com
Thu Oct 8 15:27:42 EDT 2026


Dear list,





I would like to put the whole of Montana in front of this list for review: the normative


specification, the reference implementation, the client core and the source of every


application built on it, together with the binaries built from that source.





What the protocol is, in the terms of its own documents:





  1. Post-quantum only. ML-DSA-65 (FIPS 204) signs, ML-KEM-768 (FIPS 203) agrees keys,


     SHA-256 and SHA-3 hash, ChaCha20-Poly1305 (RFC 8439) seals. ECDLP, RSA, classical


     Diffie-Hellman, EdDSA and Schnorr are excluded by the first global invariant.





  2. A person is a secret. Everything of a person derives from one seed drawn on the


     device and shown as 24 words; the seed is health-tested before it becomes anyone,


     and a failing source is refused. No identifier of a person exists in state or on


     the wire.





  3. Value is shielded from genesis. A payment publishes the nullifiers it consumes, the


     commitments it creates, a rate nullifier and a proof of conservation, and nothing


     else. Nullifiers are derived from the position of the leaf in an append-only tree,


     never from sender-chosen randomness, so identical notes still extinguish


     differently. Emission creates a right, redeemed inside a payment nothing


     distinguishes from any other.





  4. The TimeChain is the sequence of cemented windows. A window links to its


     predecessor by the proposal identifier alone and closes when the accumulated cement


     reaches the quorum share; there is no clock, no sequential work and no timeout, and


     two proposals of one height are separated by which proof verifies. A network that


     cannot reach the quorum waits rather than forking.





  5. Delivery has no addresses. Two devices agree a secret by an ML-KEM-768 exchange in


     both directions, fold it with the transcript, and each signs the transcript with its


     ML-DSA-65 identity key; the identity keys travel inside the encapsulation. What


     crosses the wire is cells of one width.





On that core stands an ecosystem for iPhone, iPad, Mac and Android: a messenger (letters,


media, voice and video calls with SFrame-sealed media), a wallet, a Bluetooth mesh, direct


phone-to-phone delivery, a VPN client and a messenger for companies. All of them open the


same person from the same 24 words and link one client core; nothing cryptographic is


reimplemented in an application.





Where everything is:





  Whitepaper (the ecosystem, with references into the specification):


    https://github.com/efir369999/montana_messenger/blob/main/WHITEPAPER.md





  Normative specification (Constitution, Canon, Consensus, Value, Identity, Network, App):


    https://github.com/efir369999/montana_messenger/tree/main/core/docs





  Reference implementation and client core (Rust):


    https://github.com/efir369999/montana_messenger/tree/main/core





  Source of every application:


    https://github.com/efir369999/montana_messenger/tree/main/apps


    https://github.com/efir369999/montana_business





  IPA and APK files, with SHA-256 digests and the commit each source folder is:


    https://github.com/efir369999/montana_messenger/releases/latest


    https://github.com/efir369999/montana_business/releases/latest





  The applications on TestFlight:


    https://testflight.apple.com/join/BHaSYWkz   (Messenger; Android APK in the release)


    https://testflight.apple.com/join/n9UqzRDp   (Wallet)


    https://testflight.apple.com/join/MSMfey6f   (Business)





What a reviewer should know before reading:





  - The specification governs. core/Montana-Core reproduces it, and its build parses the


    values, domain separators and frozen vectors of the set and fails on any divergence.


    core/Code is the client core the applications link; its VERSION.md records the


    specification generation it was written against.


  - One item is open and named at the front of the set: the constraint set of the two


    circuits, bound by hash, with its statements, description format and verifier fixed


    in Canon. Montana-Core/AUDIT.md and Code/docs/SPEC_DEVIATIONS.md list what the green


    build does not hold.


  - ML-DSA-65 and ML-KEM-768 come from libcrux 0.0.10 in Montana-Core and from OpenSSL


    3.5, built from source, in the client core. Montana-Core signs with the deterministic


    variant of FIPS 204 (RND = 32 zero bytes), reproduces the NIST ACVP vectors of both


    primitives, and checks itself differentially against OpenSSL; the client core carries


    its own ACVP known-answer tests.


  - The IPA files are the App Store exports, published to be read, compared with the


    source or re-signed; TestFlight installs them. Node endpoints in the published source


    are documentation addresses (RFC 5737).





I would value the list's reading most on: the binding of the handshake transcript to the


identity keys; nullifiers derived from position; finality by quorum cement with no timeout,


and what it costs liveness under partition; and the health tests on the seed.





https://github.com/efir369999/montana_messenger


—
Alejandro

 «You can’t parallelize your way out of time.»
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.metzdowd.com/pipermail/cryptography/attachments/20261008/3dde3acd/attachment.htm>


More information about the cryptography mailing list