A Magyar Királyi Honvédség Crypto-2-es kódoló eljárásának feltörése

Egy rejtéllyel kevesebb – sokkal pedig több: a Magyar Királyi Honvédség Crypto-2 (C-2) rendszerének  feltörése – eredetileg ezt a címet adtam, de úgy gondolom, a fenti minden túlzás nélkül jobban néz ki.

Varázsszavak következnek: C-1, C-2 és C3. Hallott róluk valaki? Ha igen, az óriási segítség lenne a jövőben. Hosszú nyomozás és rendkívül sok telefonálgatás után úgy gondolom, e három jelölés a ma kriptográfiai szakembereinek sem mond semmit (vagy ők nem mondanak inkább róla semmit, ki tudja) – annak ellenére, hogy ezek a Magyar Királyi Honvédség titkosító metódusait takarják, amelyből egyet teljesen, egyet pedig részben e sorok írója fejtett meg a közelmúltban. A nyomozás 2008-ban indult – s még most sincs vége. S egy nyomatékos kérés: ha írsz erről, nagy tisztelettel kérlek, hivatkozz rám. Ez nem nagyképűség, csak én is el szoktam ismerni más munkáját, eredményeit…

Ez ugyan nem második világháborús anyag, de attól még témába vág – és nem mellékesen kész csoda, hogy megmaradt. Ezt a két (chiffre-dechifre – azaz kódoló-dekódoló) könyvecskét anno az Osztrák-Magyar Monarchia hadseregének titkos rádióhíradásában használták… (A szerző tulajdona.)

Vajon akad ma valaki az országban, akinek e három jelölés, C-1, C-2 és C-3 mond valamit? E sorok írója hosszú ideig próbált olyan volt vagy aktív, kriptográfiában jártas szakembert találni, aki legalább hallott ezekről – mégsem járt sikerrel. E cikk születése előtt több tucat hajdani titkosszolgálati szakemberrel társalogtunk telefonon vagy személyesen, de a feleleteik révén szemernyit sem jutottunk közelebb a célhoz. (Ez bizonyos szemszögből érthető is lehetne, ha egy időben hozzánk közelebb álló módszerről beszélnénk – ám itt egy hetven esztendeje nem használt, elfeledett kódolás forog szóban. Azaz ez tananyagnak elmehetett volna már úgy húsz éve is.) E jelölések amúgy a Magyar Királyi Honvédség titkosító eljárásait takarták, amelyek bizonyíthatóan léteztek, ám mára fantomizálódtak.
Az ügy – ha szabad rá ezt a kifejezést használni – 2008 nyarán indult Komáromban, amikor a több, a rádióamatőrizmus kezdeteit bemutató könyvet szerzőként jegyző Érsek János (HA2NP) hagyatékának egy részét sikerült az özvegy engedélyével átnézni. E sorok írója a családnál helyben maradt dokumentumok és feljegyzések között lapozgatva bukkant egy soványka, kézzel írott és kereken három mondatos utalásra, amely a Magyar Királyi Honvédség titkosító eljárásait foglalta össze. Ebben pusztán annyi szerepelt, a Crypto (a jövőben) C-1 elforgatásos, a C-2 prímszámokon alapuló többszörös eltolásos míg a C-3 „vélhetően elektromos” kódoló volt.
Előre bocsájtjuk, aki úgy gondolja, e cikk végére mindhárom eljárás mibenlétével tökéletesen tisztában lesz – téved. Jelen állás szerint a C-1-et immár ismertnek vehetjük (Erről már fénykép is akad, s hamarosan külön értekezünk róla), míg a C-2-es esetében a feloldás módja megvan – de ez csak az adott (később tárgyalt) üzenet megfejtéséhez elegendő. Ám – s ezen van a lényeg – a visszafejtés kulcsát megkaptuk, s a hetven esztendő után napvilágra jött elvek alkalmazásával a többi, (bárhol) rendelkezésre álló üzenet messze könnyebben megfejthető, mintha a nulláról kellene elindulnunk. (Mondjuk Podolszkban, az Orosz Hadsereg archívumában ezzel biztos nem bíbelődnek, mert ott tuti megvannak az eredeti dekódoló iratok.) Külön és nyomatékkal fölhívjuk a figyelmet arra, elágazó kutatás tárgyát kell képeznie annak, hogy a leadni kívánt „éles” szövegből miként képeztek négyjegyű csoportokat. (Lásd majd lentebb.) Ez irányba már ugyancsak tettünk lépéseket – de annak tárgyalása jelen írás kereteit messze szétfeszítené. A bevezető zárásaként pedig egy kérést tolmácsolunk az olvasó felé: ha bármiféle apró, morzsányi információval rendelkezik e tárgykörből, örömmel vesszük, ha fölkeresi a szerzőt s tudását megosztja vele.

Egy lap a száz esztendős titkok könyvéből…

A C-3 pedig ki tudja mi lehet? Talán-talán az R/3-hoz használható titkosítót értették alatta – de erre sem vennénk mérget…

A C-1 az úgynevezett Aeneas-kereke elven működött – ezt tehát egyelőre kipipálhatjuk – de vajon mi a helyzet a C-2-vel? Azzal a ténnyel, hogy prímszámokon alapszik, önmagában sokat nem lehet kezdeni, hiszen teljességgel ismeretlen, mit és hogyan csináltak velük hajdanán. E téren talán ma is homályban tapogatódznánk, ha nem kerül a szerző látókörébe véletlenül egy úgynevezett Ludovikás jegyzetfüzet, amelyben egy üzenet bemeneti és kimeneti számsorai is ott szerepelnek.
A hajdani tiszthallgatónak az volt a feladata, hogy egy képzeletbeli zászlóalj parancsnokának  gyorsjelentését kódolja be. A szöveg általánosságban (azaz értelmét tekintve) eképpen hangzott: „Az ellenség a bal szárnyon betört, erősítést kérünk.” Mint a bevezetőben is utaltunk rá, jelenleg nem tudunk száz százalékos választ adni arra, hogy ebből a rövidke sorból miként keletkezett az alábbi huszonnégy jegyű számcsoport – de e kérdés föloldására is tettünk már bizonyos lépéseket.
A Ludovikás jegyzetfüzet így őrizte meg az utókor számára a fenti mondat be- és kimeneti számsorát:

Kódolva:   7760 7803 7781 7808 7102 7808
Leadandó: 0408 4400 2144 4172 5862 4344

A kódolva alatt az éles szöveg átalakítását, a leadandón a rádión távírón vagy fóniában kisugárzott számsort értjük.

Az ugye „bizton” állítható, a célállomáson csak akkor értik meg az üzenetet, ha azt visszaalakítják az eredeti formába – illetve e rövidke epsitolának azt is tartalmaznia kell valahol (vagy előtte meg kellett egyezni a forgatás módjában), hogy azt mivel tegyék. S ezt – úgy gondoltuk – csak akkor képesek végrehajtani, ha a „kódolva” és a „leadandó” közé iktatják ugyan azt, vagy valami hasonló (negatív) módon képzett számsort, amit a föladónál odatettek. Például ha az egyik helyen szoroztak, akkor a másikon osztani kell – vagy fordítva. Vajon miként lehet ezt az állapotot létrehozni? Elsőként természetesen a HA2NP Érsek János hagyatékában föllelt soványka – emlékezzünk: három mondatról van szó – nyomon próbáltunk elindulni. Sokjegyű és rövidke számokkal kísérleteztünk hosszú heteken át, osztottunk, szoroztunk, összeadtunk és kivontunk – mindhiába. Különböző speciális matematikai műveleteket hívtunk segítségül – ám végül arra jutottunk, valamiféle előre elkészített, „faék egyszerűségű” eljárást kell keresnünk, lévén, nehezen feltételezhető, hogy a parancsnokságok törzstisztjei a háború poklában, amikor minden másodperc számít integrálszámításokkal bíbelődtek volna. Fontos megjegyezni, ez az előre elkészített „faék” – ha tetszik „konzerv” valójában nagyon is komoly eszköztára a titkosításnak. Ez lehetett az a bizonyos furmányosan kiagyalt (de az alkotóitól rendkívül komoly számításbéli tudást feltételező) kódfüzet, amelyet a filmeken az ellenség minden áron meg akar szerezni, míg a másik fél baj esetén megsemmisíteni.

Bizonnyal ismert az olvasó előtt, ha az ember lányát-fiát valami nagyon foglalkoztatja, akkor olykor éjjel is vele álmodik. Nos, velünk is ez történt – s hajnalban elkezdtünk összeadni és kivonni. Nézzük újra a szóban forgó számsort. Az üzenet

kódolva:   7760 7803 7781 7808 7102 7808
leadandó: 0408 4400 2144 4172 5862 4344

Ha a héthez hármat adunk, tízet kapunk. Ha elhagyjuk a maradékot, akkor csak egy nullát kell leírnunk. Ha a második helyen álló héthez hetet adunk, akkor tizennégyet kapunk. Ismét hagyjuk el az első tagot. A hathoz adjunk négyet, az tíz, de csak a nullát kell leírni, hiszen a tízes számokat elfelejtjük. A szaldót („magyar királyi” szakmaisággal: áttérési számot) nevezzük el feloldószámnak.

Kódolva:   7760 7803 7781 7808 7102 7808
Feloldó:    3748 7607 5463 7374 8760 7546
Leadandó: 0408 4400 2144 4172 5862 4344

Akár mennyire is hajnal volt, azt azonnal láttuk, itt bizony ismétlődésbe botlottunk – jelesül, hogy a negyedik csoport második jegyétől újra indul a kapott 3748 7607 5463 7-es számsor.

7760 7803 7781 7808 7102 7808
3748 7607 5463 7374 8760 7546

Úgy éreztük, ez nem lehet véletlen – s talán-talán köze van a prímszámokhoz. Ám az első próba nem hozott eredményt, hiszen a  3.748.760.754.637 nem prímszám. Végül némi internetes kutakodás után kiderült, hogy e sokjegyű „rém” a 450.691 és a 8.317.807 prímek szorzata.
Ha valaki úgy véli, ezzel kész, elégedetten hátradőlhet, téved, ugyanis az eredeti kód visszaállításához még hiányzik egy nem tisztázott művelet – jelesül miként képződött a célállomáson újra az eredeti számsor. Mivel a kezdettől azt tettük föl, hogy amit az egyik helyen elvégeznek, annak a célban az ellentettjét kell csinálni, önként adódott, ezúttal az összeadás helyett a kivonást válasszuk. Pár próba után arra jutottunk, ha a tízekből (azaz csupa nullából) kivonjuk a feloldót, hozzáférünk a visszafordító számsorhoz.

Tízes sor: 0000 0000 0000 0
Feloldó:   3748 7607 5463 7
Szaldó:    7362 3403 5647 3

Ha pedig ezt a második szaldót összegezzük a leadandóval – azaz a célállomáson a vettel, akkor azt látjuk, hogy

Vett:      0408 4400 2144 4172 5862 4344
Szaldó:  7362 3403 5647 3736 2340 3564
Eredeti: 7760 7803 7781 7808 7102 7808

(Az ismétlődést hozzávettem.)
Nyomatékkal hangsúlyozom, ez csak egy üzenet dekódolását jelenti, s azt, hogy „Az ellenség a bal szárnyon betört, erősítést kérünk.” általános jellegű (értelmű?) kijelentésből miként keletkezett az

7760 7803 7781 7808 7102 7808

számcsoport, nem tudjuk. Talán nem állunk messze a valóságtól, ha azt hisszük, hogy ez hasonló módon generálódott, mint az első világháború esetében. Ott ugyanis (mint azt a birtokunkban lévő, és a rádióscsapatok által alkalmazott kódoló- és dekódoló könyvecske bizonyítja), számsorok alapján alkottak üzeneteket. Azaz valahol valakik (vélhetően a Magyar Tudományos Akadémia korabeli matematikusai) olyan speciális számsorokat alkottak, amelyekben a prímek és azok szorzatai alkották a lényeget, azaz a titkot, a kulcsot.

…és még egy a másik könyvből.

De az is lehet, hogy a prímsorok szorzata (esetünkben a 3.748.760.754.637 ) volt meg sok ezer-tízezer társával együtt egy könyvbe szedve, s ahhoz képest generálták a kódot és a leadandót.

Ismételjük, a visszafejtés alapkulcsát megkaptuk, s a hetven esztendő után napvilágra jött elvek alkalmazásával a többi, (bárhol) rendelkezésre álló üzenet messze könnyebben megfejthető, mintha a nulláról kellene elindulnunk. Pláne annak fényében, hogy egy számítástechnikában járatos ember borítékolhatóan könnyebben ír egy feltörőkódot, mint ahogy én papír-ceruza módszerrel dolgoztam. 🙂

Minden nagyképűségtől mentesen állíthatom, a megfejtés remek szórakozás volt. Ismétlem, ha bárki tud valamiben segíteni, örömmel venném, veszem. A hivatkozás természetes, pláne annak fényében, hogy az én tudásom e pillanatban eddig tart.

Baráti 73!

HA5CBM Miklós
Military Szakosztály
P. s.: S végül zárásként a tisztázat, amelyben magamnak összefoglaltam a lényeget. 🙂

Kicsit homályos, kicsit összefirkált – de a lényeg rajta van… 🙂

  1. Valahol olvastam, hogy egy átlag angol földműves szókincse kb. 4000 szó. A német sem igen választékosabb. Legyen a sokkal gazdagabb magyar szókincs mondjuk 10000 szó, amiből kihagyjuk a katonai vonatkozásban kevéssé szokásos sárgarépa főzelék, babaelőke, bili, kakilni és efféle szavakat. Biztosan belefér 10000 szóba. Azaz ha minden szóhoz egy számot rendelünk, 4 jegyű számokkal minden szavunk megvan.
    Ma átlag tipikusan egy sorban 40 leütéssel és egy oldalon 25 sorral kalkulálunk – ha bazi nagy betűkkel van írva. De egy kódkönyvnél nem kell teljes sorral kalkulálni, legyen soronként csak két szó meg a hozzá tartozó 4 jegyű szám. Azaz oldalanként két oszlop lesz, vagyis 50 szó. Egy lapnak két oldala van, azaz egy lapon már 100 nyomtatott szó van. Egy 100 lapos füzetkében ott van mind a 10000 szó.
    Persze, macera ezt végignyálazni, ha az “ellenség” szót keresem. De erre is van megoldás: Két könyvecském van. Egyik adásra, másik vételre. Az egyikben a szavak szépen ábécérendben vannak és mögöttük a kódszavak a maguk természetes kesze-kusza módján. Így gyorsan megtalálom az “ellenség” szót és a mögötte álló 0934 kódot.
    Aki veszi az adást, az meg a másik könyvecskét veszi elő és abban a számok szépen sorban szerepelnek. Megkeresi a vett szónak megfelelő 6964-es számot és ott áll mögötte a megfejtés: “erősítés”.
    És az egész csak két darab 100-100 lapos füzetke….
    Ok, Te is hivatkozol rá. hogy ezek megszerzése élet-halál kérdés. Márpedig egy nagy offenzívánál előfordulhat, hogy az ellenség megszerzi. Hadsereg szinten ettől nem állhat le az élet, mit lehet tenni? A hadosztály parancsnokságokon előveszik a hét lakat alatt őrzött második garnitúrát, amiben egész más az összerendelés és kiküldik az ezredeknek. A katona ugyanúgy kódol-dekódol, mint eddig, csak az újabb könyvecskékből. Az ellenség meg feldughatja magának a megszerzett kódkönyveket. Kár azért így is adódik, mert a régi üzeneteket visszamenőleg meg tudják fejteni, de hát ez van…
    Még egy alátámasztás: Ha a megértéshez nem feltétlenül szükséges névelőkel elhagyom, az üzenet 6 szavát 6 szócsoport írja le. Nem hiszem, hogy véletlen. A tippem az, hogy a kódkönyveket akár biztonsági megfontolásokból is időről időre célszerű volt cserélni, tehát ha fel is bukkan egy “kódoló” könyvecske, nem biztos, hogy a másutt felbukkanó “dekódolóval” kompatibilitást mutat.
    Egyébként gratulálok a munkádhoz!

    • A 10000 magyar szóról jut eszembe: vegyünk egy igét. Magyarban van első, második és harmadik személy (3 variáció), egyes szám és többes szám (2), alanyi és tárgyas ragozás (2), kijelentő módú jelen és múlt idő, felszólító és feltételes mód jelen időben (4 variáció), ez igénként 3*2*2*4=48 alak, míg az angol 4-5 alakból megoldja (ugye a jövő időnél csak a fog segédigét ragozzuk, múlt idejű feltételes módnál meg csak a volna kerül mögé). De ahol igazán el kezd durvulni a dolog, az az, hogy 70+ igekötőt lehet az egyes igék elé tenni, tehát akár 48*70=3360+ szóalakot lehet generálni egyetlen(!) igéből. A teljes lefedettséghez a 10000 kód még három igét sem tudna. Persze nem minden igéből lehet értelmesen 3360+ alakot képezni (tudtommal a “baszik” az egyetlen ige, amihez az összes igekötő passzol), de azért a nagyságrendi problémát érzékelteti. És ezek még csak az igék: a magyar a főneveket is ragozza (birtokjelből is van hatféle, határozóragokból 12), nagyon gyorsan elszalad a elkódolni kívánt szavak száma, hacsak nem torzítjuk el a nyelvet és írjuk le a toldalékokat külön kódokkal, de akkor szóelemeznie is kell szerencsétlen híradós tisztnek…

  2. Kedves István!

    Köszönöm hozzászólásodat és az elismerést. Valójában akad még egy „dugi-táviratom”, azt is felteszem hamarosan – viszont igaz, ott nincs semmi szöveg, csak a számsorok. Nagyon jó lenne tudni, miként születtek a négy jegyű kódok, de e pillanatban nem sok reményt látok bármiféle könyv előkerülésére.
    A húszas-harmincas években használt hírváltási módszer (!) alapja és a titkosítás szintén csekély pár morzsája viszont megvan – azzal a különbséggel, hogy ott valami okból három jegyű számokat alkalmaztak. Ahogy lesz időm, azt is megosztom. Akkor (1920-30-ig) alapvetően más volt a rendszer, mint a fent leírtak – de az sem egyszerű, annyi szent. 🙂
    Többen mondták, így bizonnyal igaz: ez a prímszámos kódolás a mából nézve eléggé primitív, de ugye a kort kell nézni, ahol nem találtatott se PC, se Iphone – csak mechanikus számológép és abakusz… 🙂

    Még egyszer köszi!

    Baráti 73!

    HA5CBM
    Miklós

  3. Kicsit aggasztó, hogy a kódolt sorban a 7808 kétszer is előfordul, míg a nyílt szövegben (“Az ellenség a bal szárnyon betört, erősítést kérünk.”) nincs ismétlődés. Próbáltam átfogalmazni, szinonimákat számba venni, de nekem semmi nem ugrott be. Valaki esetleg?

    • Szervusz!

      Köszönöm hozzászólásod!

      Nincs ötletem magamnak sem, de időközben kaptam egy izgalmas feloldási kísérletet egy híradó katonatiszt barátomtól. Ha hozzájárul, fel fogom tölteni. Rendkívül színvonalas megközelítés és egyben érdekes gondolatokat vet fel.

      Reményeim szerint hamarosan jelkezünk’ s akkor tán előrébb jutunk…

      Baráti 73!

      HA5CBM
      Miklós

  4. Sziasztok!
    csak tipp a 7808 anomáliához:
    Ha levesszük a sallangokat a szövegről, és csak a lényegre koncentrálunk (ami katonai szövegben azért gyakori) akkor ennyit kapunk: „ellenség bal szárnyon betört, erősítést.” ha ezt a feltételezett számokkal behelyettesítjük akkor ezt kaphatjuk:
    ellenség – 7760
    bal szárnyon – 7803
    betört – 7781
    .(stop) – 7808
    erősítést – 7102
    .(stop) – 7808

    Tehát (bár egy szöveg alapján vitatható) a 7808 lehet írásjel. így már belefér az ismétlődésbe, és valamilyen szinten kell is használni, (ha csak nem az ulyssest küldi valaki üzenetként 🙂 hogy az üzenet értelmes maradjon.

    • Szervusz!

      Köszönjük hozzászólásodat!
      Sajnos jelenleg nem tudok többet adni – azaz akad még egy távirat, de annak nincs szövege. Előbb-utóbb lesz rá időm, s feltöltöm – addig is türelmet kérek.

      73!

      HA5CBM
      Miklós

  5. Kedves HA5CBM Miklos,

    Nehany eszrevetelt tennek a fenti cikkhez.

    1. Az M. Kir. Honv. (MKH) altal 1922-1945 kozott alkalmazott, a fenti cikkben hivatkozott C-1, C-2 es C-3 kodolasi eljarasai EGYUTT hasznalva adtak egy az 1910-es evekben meg korszeru, de 1925-tol mar fokozatosan elavultnak szamito titkositasi rendszert. A rendszer gyenge pontjai egyertelmuen a C-1 es C-2 resz voltak, mivel a C-1 a monoalfabetikus eltolason/elforgatason (ld. 2000 eves Caesar kod) alapult, a C-2 pedig tobbszoros eltolason, ami a mar a XV. sz-tol alkalmazott Vigenere-kodolasnak (polialfabetikus eltolas/forgatas) felel meg. A Vigenere-kodolas feltorese pedig 1855-tol mar ismert volt (ld. Babbage).

    2. A cikk elejen mutatott fotok az OMM C-1 kodkonyveinek fedolapjai, amiket 1902-1918 kozott hasznaltak az OMM k.u.k. (kozos) hadseregben. Mivel 1918-ig a vezenyleti nyelv nemet volt a k.u.k.-nal, ezert a C-1 es a tobbi kodkonyvek is nemetul irodtak, tehat A KODOLAS/DEKODOLAS NEMETUL TORTENT.
    Ezert az OMM C-1es es tobbi kodkonyvehez a tovabbi kutatast praktikusabb Becsben a Heeresarchiv-ban folytatni.

    3. A MKH Crypto 2-es eljarasanal nemcsak a cikkben emlitett primszamos szamcsoport generalas es darabolas segithet a feltoresben, hanem az un. gyakorisagelemzes is. Ez MINDEN nyelvre megvan, lenyegeben 1905-1915 kozott keszitettek el a fobb nyelvekre a gyakorisagtablazatot (angol nemet francia spanyol), az oroszra 1910-1918 kozott a nemetek, a magyarra pedig vmikor 1925-1930 kozott.

    4. A MKH C-1-3 kodolasi rendszere az OMM C-1-2-es rendszerenek egy magyar nyelvre adaptalt es a C-3-as kodolasi rendszerrel (tripla kodolas) megfejelt valtozata volt. Hasonlo rendszert hasznalt Csehszlovakia is 1919-1935 kozott.
    Az OMM rendszere az 1880-1916 kozott szeleskoruen hasznalt es elterjedt, akkoriban szinte minden nagyobb orszagban alkalmazott mono- es polialfabetikus eltolasos rendszer 2-3 szoros felulkodolassal.
    Ez azonban a kat. radiokomm. 1905-tol elterjedesevel parhuzamosan modosult, es 1914-16 kozott altalanossa valt a hivojeles elsokoros azonositas, ami tobb esetben kivaltott 1 szintet a 2-3szoros felulkodolasbol.

    • Tiszteletem!

      Köszönjük hozzászólását.

      Engedelmével tökéletesen tudom, hogy a cikk elején lévő fotó egy első világháborús kódkönyvet mutat, lévén a párjával együtt a saját polcomon áll és forgattam eleget. Az már csak mellékszál, hogy a bécsi hadilevéltárnak ebből a verzióból tudtommal csak a kódoló könyve van meg.

      Egészen biztos vagyok abban, hogy a C-3 egy elektromos kódoló volt, s abban is, hogy a C-1-et alapszinten, a C-2-t pedig feljebb használták, de együtt csak elvétve. A C-3-ra visszatérve: immár fényképem is van egy elektronikus titkosítóról, s ha minden jól megy, előbb-utóbb közlöm. 🙂 Nem mindennapi darab, s ha jól sejtem, épp annyira ismeretlen, mint a cikkben tárgyalt eljárás.

      Zárásként pedig egy apróság: én ebből az irányból indultam el, s ennek révén olyat közöltem, melyet korábban még szó szerint senki. Ehhez képest pedig most sorra bukkannak föl olyan emberek, akik “pontosan tudják”, mi mi volt, s ennek megfelelően “oktatnak ki”, hogy (például) mi látható a cikkem elején, illetve tudatják velem, hogy amit írtam, az rossz vagy hibás.

      Minden él nélkül említem, örömmel olvasnék az Ön tollából egy, a témába vágó és adatolt cikket.

      Barátsággal

      HA5CBM
      Miklós

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.