Documentation

Complexity.Crypto.Computational.Homomorphic.KeyChain.Reduction

The encrypted-link reduction algorithms #

The reduction embeds the challenge public key immediately after a freshly generated predecessor key. It saves only keys it generated itself, the challenge public key, and the selected bit index. Its guessing stage replaces the unknown target secret by a zero word of the predecessor secret's length and runs the actual boundary-link splicing sampler.

The target key's outgoing link is already zeroed. Fixed supported secret-key length will justify the substitution in the separate game proof; neither that hypothesis nor a security conclusion is built into these algorithms. Random link selection runs from the end of the chain towards its beginning. Dyadic padding coordinates reject, and decoding is total on every saved word.

Main definitions #

Main results #

References #

@[reducible, inline]

Active flag, earlier keys, predecessor, challenge public key, later keys, and unary bit index. Every saved secret belongs to a key generated by the reduction itself.

Instances For

    Frame every saved component, including all simulator-generated secret keys.

    Instances For

      Total saved-state parsing, reusing the standard component decoders.

      Instances For
        def Cslib.Crypto.Homomorphic.Scheme.activeLinkState (before : List (List Bool × List Bool)) (predecessor : List Bool × List Bool) (challengePk : List Bool) (after : List (List Bool × List Bool)) (bitIndex : ℕ) :

        Serialize an active simulation context.

        Instances For

          A fixed inactive saved state.

          Instances For

            Both challenge messages are equal when the coordinate is rejected.

            Instances For
              @[simp]
              theorem Cslib.Crypto.Homomorphic.Scheme.linkStateDecoder_decode_active (before : List (List Bool × List Bool)) (predecessor : List Bool × List Bool) (challengePk : List Bool) (after : List (List Bool × List Bool)) (bitIndex : ℕ) :
              linkStateDecoder.decode (activeLinkState before predecessor challengePk after bitIndex) = (true, before, predecessor, challengePk, after, bitIndex)
              def Cslib.Crypto.Homomorphic.Scheme.chooseLinkAt (E : Scheme) (n beforeCount afterCount bitIndex : ℕ) (challengePk : List Bool) :

              Sample every known key before choosing the predecessor's selected bit against zero. Out-of-range bit indices return the fixed reject state.

              Instances For
                def Cslib.Crypto.Homomorphic.Scheme.linkAdversaryAt (E : Scheme) (beforeCount afterCount bitIndex : ℕ → ℕ) (test : ℕ → List (List Bool) × List (List (List Bool)) → ProbComp Bool) :

                The complete two-stage reduction at parameter-dependent link and bit positions.

                Instances For
                  noncomputable def Cslib.Crypto.Homomorphic.Scheme.linkAdversary (E : Scheme) (depth capacity : ℕ → ℕ) (test : ℕ → List (List Bool) × List (List (List Bool)) → ProbComp Bool) :

                  Select a reverse link index and a bit index with exact dyadic samplers. Padding link indices reject immediately; padding bit indices are rejected by chooseLinkAt.

                  Instances For