Bij een uitspraak uit april 2006 in een auteursrechtzaak over het boek The Da Vinci Code1 van Dan Brown2, schreef de Britse rechter Peter Smith3 een merkwaardig vonnis4. Kennelijk geïnspireerd door Browns boek had Smith er een boodschap in verborgen, zoals af te leiden viel uit de zin

The key to solving the conundrum posed by this judgment is in reading HBHG and DVC.

Een beetje context: Smith gebruikte deze afkortingen doorheen zijn vonnis om te verwijzen naar The Holy Blood and the Holy Grail5 (1982), het boek waaruit Brown volgens de beschuldiging zou geplagieerd hebben, en naar Browns eigen boek The Da Vinci Code (2005). Nadat hij het vonnis geveld had — waarin Brown onschuldig werd bevonden — liet Smith zich publiekelijk ontvallen

I can't discuss the judgement, but I don't see why a judgement should not be a matter of fun.

Hij beloofde te bevestigen wanneer de boodschap correct was ontcijferd. Diezelfde maand nog werd de code gekraakt6 door Daniel Tench — een advocaat die over mediagerelateerde zaken schrijft voor de Guardian — nadat hij via mail een reeks aanwijzingen had ontvangen van Smith. Derek Kravitz schreef daarover in de Seattle Post-Intelligencer

The New York Times reported7 that Smith sent an e-mail to a reporter at the newspaper that offered a hint. It said the code referred to his entry in this year's edition of Britain's "Who's Who," which has references to his wife Diane, his three children Frazier, Parker, and Bailey, British naval officer Jackie Fisher, and the Titanic Historical Society – among other things.

Het Hof van Beroep verklaarde later dat Smith

… was prompted by the extensive use in [The Da Vinci Code] of codes, and no doubt by his own interest in such things, to incorporate a coded message in his judgment, on which nothing turns. The judgment is not easy to read or to understand. It might have been preferable for him to have allowed himself more time for the preparation, checking and revision of the judgment.

Opgave

We geven je een tekstbestand met het vonnis van rechter Smith, waarbij cursieve fragmenten ingesloten zitten tussen opeenvolgende asterisks (*). Een cursief fragment kan uit meerdere karakters bestaan, maar begint en eindigt altijd op dezelfde regel (loopt dus nooit over meerdere regels en bevat geen newlines). Dezelfde regel kan meerdere cursieve fragmenten bevatten.

Het volledige vonnis beslaat 360 secties. Als we enkel woorden met cursieve fragmenten uit het originele vonnis overhouden, dan krijgen we (cursieve fragmenten geel gemarkeerd)

Claimant*s* clai*m*ant *i*s *t*hat *h*is realit*y* *c*ynicism f*o*r prece*d*ed T*e*mplar
    
*J*ersey *a*ble res*e*arch th*i*s techniqu*e*s e*x*tinguished *t*echnical st*o*ry wa*s*
*t*he somethin*g* grou*p*s u*s*ed w*a*s do*c*uments bein*g* e*r*adicated elsewh*e*re
Templ*a*rs Clai*m*ants se*q*uence *w*ith o*f* *k*ey Plant*a*rd intro*d*uced manuscri*p*ts
ulti*m*ately *q*uestions embla*z*oned pre*v*alent

Dit is het resultaat als we alle cursieve fragmenten samenvoegen

smithycodeJaeiextostgpsacgreamqwfkadpmqzv

De eerste tien letters (uit secties 1–79) vormen de naam van de versleutingsmethode in klare tekst: de Smithycode. De overige letters (uit secties 8–4310) vormen een cijfertekst die versleuteld is met sleutel AAYCEHMU. Die sleutel vormt de rij van Fibonacci11 1, 1, 2, 3, 5, 8, 13, 21 als we de letters associëren met hun positie in het alfabet (A=1, C=3, E=5, H=8, M=13, U=21). Enkel de letter Y lijkt wat uit de toon te vallen, maar dat is een twist uit het boek The Holy Blood and the Holy Grail waarin twee letters achteruit geteld wordt vanaf het einde van het alfabet om bij de voorlaatste letter Y uit te komen.

We leggen uit hoe de versleuteling van de Smithycode werkt aan de hand van deze klare tekst

Jackie Fisher who are you? Dreadnought.

Bij de versleuteling blijven alle karakters die geen letter zijn gewoon staan. Hoofdletters worden versleuteld als hoofdletters, en kleine letters als kleine letters. De letters corresponderen met hun positie in het alfabet, maar deze keer beginnen we te tellen vanaf nul (A=0, B=1, C=2, …, Z=25). Als $$k_i$$ de waarde is van de $$i$$-de letter in de klare tekst en $$s_i$$ de waarde van de $$i$$-de letter in de sleutel (waarbij na de laatste letter van de sleutel terug de eerste letter volgt), dan heeft de $$i$$-de letter van de cijfertekst een waarde $$c_i$$ die berekend wordt als \[ c_i = (k_i - s_i)\ \mathrm{mod}\ 26 \] Hierbij staat $$a\ \mathrm{mod}\ b$$ voor de rest na gehele deling (quotiënt) van $$a \in \mathbb{N}$$ door $$b \in \mathbb{N}_0$$ (modulo12). De versleuteling van de klare tekst kan dus voorgesteld worden als

klare tekst: Jackie Fisher who are you? Dreadnought.
             ------|------|---|---|---||-----------|
    sleutel: AAYCEH|MUAAYC|EHM|UAA|YCE||HMUAAYCEHMU|
             ======↓======↓===↓===↓===↓↓===========↓
cijfertekst: Jaeiex Toshgp sac gre amq? Wfkadpmqzvz.

Bij het ontsleutelen wordt de $$i$$-de letter van de klare tekst bepaald als de letter met waarde $$k_i$$ die berekend wordt als \[ k_i = (c_i + s_i)\ \mathrm{mod}\ 26 \] De ontsleuteling van de cijfertekst kan dus voorgesteld worden als

cijfertekst: Jaeiex Toshgp sac gre amq? Wfkadpmqzvz.
             ++++++|++++++|+++|+++|+++||+++++++++++|
    sleutel: AAYCEH|MUAAYC|EHM|UAA|YCE||HMUAAYCEHMU|
             ======↓======↓===↓===↓===↓↓===========↓
klare tekst: Jackie Fisher who are you? Dreadnought.

Merk op dat er twee fouten geslopen zijn in de cijfertekst die rechter Smith in zijn vonnis verborgen heeft. De tiende letter van de cijfertekst had een t moeten zijn in plaats van een h, en er had nog een extra z moeten staan op het einde van de cijfertekst.

Gevraagd wordt:

Voorbeeld

In deze interactieve sessie gaan we ervan uit dat de tekstbestanden document.01.txt13, document.02.txt14 en document.03.txt15 zich in de huidige directory bevinden.

>>> versleutel('Jackie Fister who are you? Dreadnough.', 'AAYCEHMU')
'Jaeiex Tostgp sac gre amq? Wfkadpmqzv.'
>>> versleutel('Jackie Fisher who are you? Dreadnought.', 'AAYCEHMU')
'Jaeiex Toshgp sac gre amq? Wfkadpmqzvz.'

>>> ontsleutel('Jaeiex Tostgp sac gre amq? Wfkadpmqzv.', 'AAYCEHMU')
'Jackie Fister who are you? Dreadnough.'
>>> ontsleutel('Jaeiex Toshgp sac gre amq? Wfkadpmqzvz.', 'AAYCEHMU')
'Jackie Fisher who are you? Dreadnought.'

>>> cursief('Claimant*s* clai*m*ant *i*s *t*hat *h*is realit*y* cynicism f*o*r prece*d*ed T*e*mplar')
'smithyode'
>>> cursief('*J*ersey *a*ble res*e*arch th*i*s techniqu*e*s e*x*tinguished *t*echnical st*o*ry wa*s*')
'Jaeiextos'
>>> cursief('*t*he somethin*g* grou*p*s u*s*ed w*a*s do*c*uments bein*g* e*r*adicated elsewh*e*re')
'tgpsacgre'
>>> cursief('Templ*a*rs Clai*m*ants se*q*uence *w*ith o*f* *k*ey Plant*a*rd intro*d*uced manuscri*p*ts')
'amqwfkadp'
>>> cursief('ulti*m*ately *q*uestions embla*z*oned pre*v*alent')
'mqzv'

>>> smithy('document.01.txt16')
'smithycode'
>>> smithy('document.02.txt17')
'Jaeiextostgpsacgreamqwfkadpmqzv'
>>> smithy('document.02.txt18', 'AAYCEHMU')
'Jackiefisterwhoareyoudreadnough'
>>> smithy('document.03.txt19')
'Jaeiextostgpsacgreamqwfkadpmqzv'
>>> smithy('document.03.txt20', 'AAYCEHMU')
'Jackiefisterwhoareyoudreadnough'

Epiloog

John Arbuthnot "Jacky" Fisher was een Britse admiraal die door rechter Smith bewonderd werd.

John Arbuthnot "Jacky" Fisher
Admiraal van de vloot John Arbuthnot "Jacky" Fisher, eerste baron Fisher van Kilverstone, was een drijvende kracht achter de ontwikkeling van snelle slagschepen met grote kanonnen en voorzitter van de ontwerpcommissie die het schetsontwerp maakte voor het eerste moderne slagschip, de HMS Dreadnought21.

Hij was een drijvende kracht achter de ontwikkeling van snelle slagschepen met grote kanonnen en voorzitter van de ontwerpcommissie die het schetsontwerp maakte voor het eerste moderne slagschip, de HMS Dreadnought22.

Epiloog

In lijn met het thema van deze opgave, hebben we ook in de opgave zelf een boodschap verborgen. Klik hier om de boodschap zichtbaar te maken.