Filer: Download challenge files
Writeup: Fibonacci Caesar
Indledende Observationer
Jeg fik udleveret:
main.pyencryption.txt
Beskrivelsen indikerede en modificeret Caesar-cipher, hvor forskydningen afhænger af Fibonacci-sekvensen.
I main.py fandt jeg følgende logik:
| |
Det betød:
Start-shift = Fₙ
Næste shift = Fₙ₊₁
Derefter klassisk Fibonacci-opdatering pr. bogstav
Alle shifts reduceres modulus 26 (alfabetets længde)
Recon / Kortlægning
Krypteringen pr. bogstav er:
| |
Det vil sige, at hele krypteringen foregår modulus 26.
Fibonacci-sekvensen modulo et tal har en periode kaldet Pisano-perioden.
For modulus 26 gælder:
| |
Det betyder:
| |
Dermed er:
| |
Så i stedet for at brute-force uendeligt mange n-værdier, skulle jeg kun teste:
| |
Analyse
Svagheden i designet er:
Hele algoritmen reducerer alt mod 26
Fibonacci modulo 26 er periodisk
Perioden er lille (84)
Det reducerer nøgle-rummet drastisk.
Angrebet
Jeg skrev et simpelt brute-force script, der:
Beregnede Fibonacci mod 26
Forsøgte dekryptering for n = 0..83
Kiggede efter plaintext der startede med
ddc
Dekrypteringslogik:
| |
Ved korrekt n fik jeg plaintext:
| |
Flaget
Ifølge formatet:
| |
Jeg erstattede mellemrum med underscores:
| |
Konklusion
Udfordringen illustrerede følgende:
At Fibonacci mod m altid er periodisk
At kryptering baseret på sekvenser modulo alfabet-størrelse ofte kan reduceres kraftigt
At Pisano-perioder kan udnyttes direkte til key-reduction
Angrebet var ikke kryptografisk avanceret, men istedet ren matematisk observation og systematisk brute-force over et reduceret key-space.