- dhPk (sk : Bytes) : Bytes
- dh (pk sk : Bytes) : Bytes
Instances
@[instance_reducible]
Equations
- DY.DiffieHellman'.DhPk.instFunctorSizeOfSubF = { sizeOf := fun {t : Type} [SizeOf t] (x : DY.DiffieHellman'.DhPk.SubF t) => match x with | { sk := sk } => sizeOf sk }
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
@[instance_reducible]
Instances For
@[instance_reducible]
Equations
Instances For
@[reducible, inline]
Equations
- x.pack = DY.BytesView.pack x
Instances For
@[reducible, inline]
Equations
- x.pack = DY.BytesView.pack x
Instances For
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
Instances For
Equations
Instances For
theorem
DY.DiffieHellman'.attacker_knows_dhPk
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes]
[BaseAttackerKnowledge]
[AttackerKnowledge]
[AttackerKnowledge.Has attackerKnowledge]
(sk : Bytes)
(tr : ExecTrace)
:
sk.AttackerKnows tr → (dhPk sk).AttackerKnows tr
theorem
DY.DiffieHellman'.attacker_knows_dh
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes]
[BaseAttackerKnowledge]
[AttackerKnowledge]
[AttackerKnowledge.Has attackerKnowledge]
(pk sk : Bytes)
(tr : ExecTrace)
:
pk.AttackerKnows tr → sk.AttackerKnows tr → (dh pk sk).AttackerKnows tr
Equations
- DY.DiffieHellman'.Broken.dhPkInvert pk = match pk.view? DY.DiffieHellman'.DhPk.SubF with | some { sk := sk } => some sk | none => none
Instances For
theorem
DY.DiffieHellman'.Broken.dhPkInvert_dhPk
[BytesFunctor]
[BytesFunctor.Has SubF]
(sk : Bytes)
:
theorem
DY.DiffieHellman'.Broken.dhPk_dhPkInvert
[BytesFunctor]
[BytesFunctor.Has SubF]
(pk : Bytes)
:
- brokenPk : Bytes
Instances For
@[instance_reducible]
Equations
Instances For
def
DY.DiffieHellman'.Broken.baseAttackerKnowledge.internal
[BytesFunctor]
[ExecTraceTypes]
(id✝ : Fin 1)
:
Equations
Instances For
@[instance_reducible]
Equations
Instances For
def
DY.DiffieHellman'.Broken.ThisDhPkHasBeenBroken
[BytesFunctor]
[ExecTraceTypes]
[ExecTraceTypes.Has ExecEntryT]
(brokenPk : Bytes)
(tr : ExecTrace)
:
Equations
- DY.DiffieHellman'.Broken.ThisDhPkHasBeenBroken brokenPk tr = DY.Trace.EventLogged { brokenPk := brokenPk } tr
Instances For
def
DY.DiffieHellman'.Broken.OneDhPkHasBeenBroken
[BytesFunctor]
[ExecTraceTypes]
[ExecTraceTypes.Has ExecEntryT]
(tr : ExecTrace)
:
Equations
- DY.DiffieHellman'.Broken.OneDhPkHasBeenBroken tr = ∃ (brokenPk : DY.Bytes), DY.DiffieHellman'.Broken.ThisDhPkHasBeenBroken brokenPk tr
Instances For
def
DY.DiffieHellman'.Broken.label
[BytesFunctor]
[ExecTraceTypes]
[ExecTraceTypes.Has ExecEntryT]
(brokenPk : Bytes)
:
Equations
- DY.DiffieHellman'.Broken.label brokenPk = { isCorrupt := fun (tr : DY.ExecTrace) => DY.DiffieHellman'.Broken.ThisDhPkHasBeenBroken brokenPk tr, isCorruptLater := ⋯ }
Instances For
def
DY.DiffieHellman'.Broken.breakDhPk
[BytesFunctor]
[ExecTraceTypes]
[ExecTraceTypes.Has ExecEntryT]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Network.ExecEntryT]
(msgHandle : Nat)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
DY.DiffieHellman'.Broken.breakDhPk.reachability
[BytesFunctor]
[ExecTraceTypes]
[ExecTraceTypes.Has ExecEntryT]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Network.ExecEntryT]
:
Equations
- DY.DiffieHellman'.Broken.breakDhPk.reachability = DY.ReachabilityConfig.make fun (handle : Nat) => DY.DiffieHellman'.Broken.breakDhPk handle
Instances For
def
DY.DiffieHellman'.DhPk.invariants
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has DiffieHellman'.SubF]
[ExecTraceTypes.Has Broken.ExecEntryT]
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
DY.DiffieHellman'.dhPk.WellFormed
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Broken.ExecEntryT]
[BytesInvariants]
[BytesInvariants.Has DhPk.invariants]
(sk : Bytes)
(tr : ProofTrace)
:
@[simp]
theorem
DY.DiffieHellman'.dhPk.label
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Broken.ExecEntryT]
[BytesInvariants]
[BytesInvariants.Has DhPk.invariants]
(sk : Bytes)
(tr : ProofTrace)
:
@[simp]
theorem
DY.DiffieHellman'.dhPk.Invariant
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Broken.ExecEntryT]
[BytesInvariants]
[BytesInvariants.Has DhPk.invariants]
(sk : Bytes)
(tr : ProofTrace)
:
sk.Invariant tr → (sk.label tr).canFlow (Broken.label (dhPk sk)) (Trace.erase tr) → (dhPk sk).Invariant tr
def
DY.DiffieHellman'.Dh.invariants
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has DiffieHellman'.SubF]
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
def
DY.DiffieHellman'.invariants
[BytesFunctor]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Broken.ExecEntryT]
:
Equations
Instances For
def
DY.DiffieHellman'.invariants.internal
[BytesFunctor]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Broken.ExecEntryT]
(id✝ : Fin 2)
:
Equations
Instances For
noncomputable def
DY.Bytes.dhSkLabel'
[BytesFunctor]
[BytesFunctor.Has DiffieHellman'.SubF]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesInvariants]
(pk : Bytes)
(tr : ProofTrace)
:
Equations
- pk.dhSkLabel' tr = DY.Bytes.xxxLabel DY.DiffieHellman'.extractDhSk✝ pk tr
Instances For
theorem
DY.Bytes.dhSkLabel'_later
[BytesFunctor]
[BytesFunctor.Has DiffieHellman'.SubF]
[ExecTraceTypes]
[ProofTraceTypes]
[ExecTraceTypes.Has DiffieHellman'.Broken.ExecEntryT]
[BytesInvariants]
[BytesInvariants.Has DiffieHellman'.invariants]
[GetLabelLater]
(b : Bytes)
(tr1 tr2 : ProofTrace)
:
b.WellFormed tr1 → tr1 ≤ tr2 → b.dhSkLabel' tr1 = b.dhSkLabel' tr2
theorem
DY.Bytes.dhSkLabel'_later_fast
[BytesFunctor]
[BytesFunctor.Has DiffieHellman'.SubF]
[ExecTraceTypes]
[ProofTraceTypes]
[ExecTraceTypes.Has DiffieHellman'.Broken.ExecEntryT]
[BytesInvariants]
[BytesInvariantsProofs]
[BytesInvariants.Has DiffieHellman'.invariants]
(b : Bytes)
(tr1 tr2 : ProofTrace)
:
b.Invariant tr1 → tr1 ≤ tr2 → b.dhSkLabel' tr1 = b.dhSkLabel' tr2
@[simp]
theorem
DY.DiffieHellman'.dh.WellFormed
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Broken.ExecEntryT]
[BytesInvariants]
[BytesInvariants.Has invariants]
(pk sk : Bytes)
(tr : ProofTrace)
:
@[simp]
theorem
DY.DiffieHellman'.dh.label
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Broken.ExecEntryT]
[BytesInvariants]
[BytesInvariants.Has invariants]
(pk sk : Bytes)
(tr : ProofTrace)
:
@[simp]
theorem
DY.DiffieHellman'.dh.Invariant
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Broken.ExecEntryT]
[BytesInvariants]
[BytesInvariants.Has invariants]
(pk sk : Bytes)
(tr : ProofTrace)
:
instance
DY.DiffieHellman'.instHoareTriplePureBytesDhPkAndInvariantCanFlowLabelLabelEraseEqLabelPub
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes]
[ProofTraceTypes]
[ExecTraceTypes.Has Broken.ExecEntryT]
[BytesInvariants]
[BytesInvariants.Has invariants]
(sk : Bytes)
:
HoareTriplePure (dhPk sk)
(fun (tr : ProofTrace) => sk.Invariant tr ∧ (sk.label tr).canFlow (Broken.label (dhPk sk)) (Trace.erase tr))
fun (res : Bytes) (tr : ProofTrace) => res.Invariant tr ∧ res.label tr = Label.pub
instance
DY.DiffieHellman'.instHoareTriplePureBytesDhAndInvariantCanFlowLabelLabelDhPkErasePublishableEqLabelJoinDhSkLabel'
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes]
[ProofTraceTypes]
[ExecTraceTypes.Has Broken.ExecEntryT]
[BytesInvariants]
[BytesInvariants.Has invariants]
(pk sk : Bytes)
:
HoareTriplePure (dh pk sk)
(fun (tr : ProofTrace) =>
sk.Invariant tr ∧ (sk.label tr).canFlow (Broken.label (dhPk sk)) (Trace.erase tr) ∧ pk.Publishable tr)
fun (res : Bytes) (tr : ProofTrace) => res.Invariant tr ∧ res.label tr = (sk.label tr).join (pk.dhSkLabel' tr)
@[instance_reducible]
instance
DY.DiffieHellman'.Broken.instEventInvBrokenDhEvent
[BytesFunctor]
[ExecTraceTypes]
[ProofTraceTypes]
:
Equations
- DY.DiffieHellman'.Broken.instEventInvBrokenDhEvent = { invariant := fun (x : DY.ProofTrace) (x_1 : DY.DiffieHellman'.Broken.BrokenDhEvent) => True }
@[instance_reducible]
Equations
Instances For
instance
DY.DiffieHellman'.Broken.instReachableImpliesInvariantReachability
[BytesFunctor]
[ExecTraceTypes]
[ProofTraceTypes]
[TraceInvariant]
[BytesInvariants]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has ExecEntryT]
[BytesInvariants.Has invariants]
[BytesInvariantsProofs]
[ExecTraceTypes.Has Network.ExecEntryT]
[ProofTraceTypes.Has ProofEntryT]
[ProofTraceTypes.Has Network.ProofEntryT]
[TraceInvariant.Has Network.ProofEntryT]
[TraceInvariant.Has ProofEntryT]
: