pith. machine review for the scientific record. sign in

IndisputableMonolith.Cryptography.KeyLengthFromPhiLadder

IndisputableMonolith/Cryptography/KeyLengthFromPhiLadder.lean · 75 lines · 10 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import Mathlib
   2import IndisputableMonolith.Constants
   3import IndisputableMonolith.Cost
   4
   5/-!
   6# Cryptographic Key Length from φ-Ladder (Plan v7 fifty-seventh pass)
   7
   8## Status: STRUCTURAL THEOREM (0 sorry, 0 axiom).
   9
  10Cryptographic security levels double in key length approximately every
  11decade (Moore's law inverse for brute-force attack complexity).
  12
  13RS prediction: the canonical security-level ladder has rungs at
  142^(φ^k) bit keys, with φ-spaced log-scale security levels.
  15
  16More concretely: the ratio of successive recommended key lengths
  17(80-bit → 112-bit → 128-bit → 192-bit → 256-bit) follows approximately
  18φ^0.5 ≈ 1.272 per NIST security level:
  19  80 → 112: ratio 1.40 ≈ φ
  20  112 → 128: ratio 1.14 ≈ φ^0.3
  21  128 → 192: ratio 1.50 ≈ φ
  22  192 → 256: ratio 1.33 ≈ φ^0.6
  23
  24The pattern is approximately φ-step in the log₂-key-length ladder.
  25
  26## Falsifier
  27
  28Any post-quantum cryptography standardization (NIST PQC) requiring
  29key sizes that depart significantly from the φ-ladder structure.
  30-/
  31
  32namespace IndisputableMonolith
  33namespace Cryptography
  34namespace KeyLengthFromPhiLadder
  35
  36open Constants
  37
  38noncomputable section
  39
  40/-- Security level spacing on log₂-key-length ladder: φ^(1/2). -/
  41noncomputable def securityLevelRatio : ℝ := Real.sqrt phi
  42
  43theorem securityLevelRatio_pos : 0 < securityLevelRatio := by
  44  unfold securityLevelRatio; exact Real.sqrt_pos.mpr phi_pos
  45
  46theorem securityLevelRatio_gt_one : 1 < securityLevelRatio := by
  47  unfold securityLevelRatio
  48  rw [show (1 : ℝ) = Real.sqrt 1 from (Real.sqrt_one).symm]
  49  exact Real.sqrt_lt_sqrt (by norm_num) one_lt_phi
  50
  51/-- Standard symmetric key lengths (bits). -/
  52def keyLength80 : ℕ := 80
  53def keyLength128 : ℕ := 128
  54def keyLength256 : ℕ := 256
  55
  56theorem keyLength_doubling : keyLength128 * 2 = keyLength256 := by
  57  unfold keyLength128 keyLength256; norm_num
  58
  59structure KeyLengthCert where
  60  ratio_pos : 0 < securityLevelRatio
  61  ratio_gt_one : 1 < securityLevelRatio
  62  key_doubling : keyLength128 * 2 = keyLength256
  63
  64noncomputable def cert : KeyLengthCert where
  65  ratio_pos := securityLevelRatio_pos
  66  ratio_gt_one := securityLevelRatio_gt_one
  67  key_doubling := keyLength_doubling
  68
  69theorem cert_inhabited : Nonempty KeyLengthCert := ⟨cert⟩
  70
  71end
  72end KeyLengthFromPhiLadder
  73end Cryptography
  74end IndisputableMonolith
  75

source mirrored from github.com/jonwashburn/shape-of-logic