Eenvoudige permutatiecijfers. Verticaal permutatiecijfer

Het “skitala”-permutatiecijfer. In de 5e eeuw BC De heersers van de Griekse staat Sparta beschikten over een goed ontwikkeld systeem van geheime militaire communicatie en versleutelden hun berichten met behulp van de scytal, het eerste eenvoudige cryptografische apparaat dat de methode van eenvoudige permutatie implementeerde (Fig. 1.6).

Rijst. 1.6.

De codering werd als volgt uitgevoerd. Een strook leer werd in een spiraal (draai tot draai) op ​​een cilindrische staaf gewikkeld, die een skitala werd genoemd, en langs de staaf werden verschillende regels berichttekst erop geschreven. Vervolgens verwijderden ze de strip van de staaf - de letters erop bleken willekeurig gerangschikt.

De boodschapper verborg de boodschap meestal met een leren strook als riem, d.w.z. Naast encryptie werd ook gebruik gemaakt van steganografie. Om de originele boodschap te ontvangen, moet een strook leer rond een zeis van dezelfde diameter worden gewikkeld. De sleutel tot dit cijfer is de diameter van de staaf. Omdat je alleen het type cijfer kent, maar niet over de sleutel beschikt, is het ontsleutelen van het bericht niet eenvoudig. Het “skitel”-cijfer werd in de daaropvolgende tijden vele malen verbeterd.

Een methode om dit cijfer te kraken werd voorgesteld door Aristoteles. Het is noodzakelijk om een ​​lange kegel te maken en deze, beginnend bij de basis, met tape met een gecodeerd bericht te omwikkelen en deze geleidelijk naar de bovenkant te verplaatsen. Op een gegeven moment zullen delen van het bericht worden bekeken. De diameter van de kegel op deze plaats komt overeen met de diameter van de zeis.

Versleutelingstabellen. Een van de meest primitieve tabelpermutatiecijfers is de eenvoudige permutatie, waarbij de sleutel de grootte van de tabel is. Deze versleutelingsmethode is in zijn eenvoudigste vorm vergelijkbaar met het Skitala-cijfer. De tekst van een bericht wordt bijvoorbeeld in een kolom van een bepaalde grootte in een tabel geschreven en in rijen gelezen.

Laten we de zinsnede "De Terminator arriveert op de zevende om middernacht" schrijven in een tabel van 5x7 (Fig. 1.7), maar in kolommen. Nadat we de tekst regel voor regel uit de tabel hebben geschreven, krijgen we de code: "tnnveglearadonrtievomobtmnchirysooo".

Rijst. 1.7.

De afzender en ontvanger van het bericht moeten vooraf overeenstemming bereiken over een gedeelde sleutel in de vorm van een tabelgrootte. Bij het ontsleutelen worden de acties in omgekeerde volgorde uitgevoerd (regel-voor-rij opnemen, kolom-voor-kolom lezen).

Dit cijfer kan enigszins ingewikkeld zijn: de kolommen kunnen bijvoorbeeld opnieuw worden gerangschikt in een bepaalde volgorde, bepaald door de sleutel. Dubbele herschikking is mogelijk: kolommen en rijen.

Cardano-raster. Een Cardano-raster (roterend raster) is een rechthoekige of vierkante kaart met een even aantal rijen en kolommen 2k X 2t. Er worden gaten in gemaakt op een zodanige manier dat bij opeenvolgende reflectie of rotatie en vulling van de open cellen van de kaart alle cellen van het vel geleidelijk worden gevuld.

De kaart wordt eerst gereflecteerd ten opzichte van de verticale symmetrieas, vervolgens - ten opzichte van de horizontale as, en opnieuw - ten opzichte van de verticaal (Fig. 1.8).

Als het Cardano-rooster vierkant is, is een andere optie voor de transformatie ervan mogelijk: een rotatie van 90° (Fig. 1.9).

Rijst. 1.8.

Rijst. 1.9.

Wanneer u op de gebruikelijke manier (van links naar rechts en van boven naar beneden) schrijft, wordt de zinsnede “tekstcodering” (zonder spaties) in de vrije cellen van het roterende raster getoond in Fig. 1.9 krijgen we de tekst in de vorm van een tabel (Fig. 1.10), of, door de tekst op één regel te schrijven, “kshiioesvtafatren”.

Rijst. 1.10.

De ontvanger moet het stencil kennen en het in dezelfde volgorde toepassen als tijdens de codering. De sleutel is het geselecteerde type roosterbeweging (reflectie of rotatie) en het stencil - de locatie van de gaten, die voor een vierkante roostergrootte 2t X 2k kan op 4"* manieren worden geselecteerd (rekening houdend met de initiële oriëntatie van het stencil). In dit geval zullen er onder de stencils die als verschillend worden beschouwd, er zijn die spiegelbeelden of rotaties van andere stencils zijn, d.w.z. stencils die alleen verschillen in hun initiële locatie (oriëntatie). Als we de oorspronkelijke locatie van het stencil verwaarlozen, zullen er uiteraard vier keer minder verschillende stencils zijn - 4""*"

Voor een 4X4-raster zijn er bijvoorbeeld 256 mogelijke stencilopties (gebaseerd op de initiële oriëntatie) of in totaal 64 verschillende stencils.

Ondanks het feit dat het aantal stencils voor grote roosters vrij groot is (ongeveer 4 miljoen (4-10 e)), is het nog steeds aanzienlijk minder dan willekeurige permutaties van tafelelementen, waarvan het aantal gelijk is aan (2t? 2k).

Voor een tabel van formaat 4x4 ligt het aantal willekeurige permutaties bijvoorbeeld in de orde van 2? 10 13, en voor 8x8 tafels - ongeveer 10 89.

Cardano-roosters, evenals encryptietabellen, zijn speciale gevallen van het routeringspermutatiecijfer.

Deze methode bestaat uit het feit dat de karakters van de gecodeerde tekst opnieuw worden gerangschikt volgens bepaalde regels binnen het gecodeerde blok karakters. Laten we eens kijken naar enkele van de meest voorkomende varianten van deze methode die in geautomatiseerde systemen kunnen worden gebruikt.

De eenvoudigste permutatie is om de originele tekst achterstevoren te schrijven en tegelijkertijd het cijfergram in vijf letters te verdelen. Bijvoorbeeld uit de zin:

LAAT HET ZIJN ZOALS WIJ WILLEN

je krijgt de volgende cijfertekst:

ILETO KHIMKA KKATT EDUB TSUP

Bij de laatste groep (vijf) ontbreekt één letter. Dit betekent dat voordat de oorspronkelijke uitdrukking wordt gecodeerd, deze moet worden aangevuld met een onbeduidende letter (bijvoorbeeld O) tot een getal dat een veelvoud van vijf is:

LET-BE-TAKKA-KMYKHO-TELIO.

Dan zal het cijfergram er, ondanks zo’n kleine verandering, anders uitzien:

OILET OKHYMK AKKAT TEDUB LTSUP

Het lijkt niets ingewikkelds, maar decodering zal ernstig ongemak veroorzaken.

Tijdens de Amerikaanse Burgeroorlog werd de volgende code gebruikt: de originele zin was in verschillende regels geschreven. Bijvoorbeeld elk vijftien letters (waarbij de laatste regel wordt gevuld met betekenisloze letters).

Hierna werden de verticale kolommen op volgorde geschreven in een regel verdeeld in vijf letters:

PKUMS YTHIO BTUED LEITK TLAMK NCOAP

Een variant van dit cijfer: schrijf eerst de originele zin in kolommen:

Breek de regels vervolgens in vijf letters:

PSYUE TKAMH TLAVD UTBDT AKKYO EIBGE

Als we de lijnen inkorten en hun aantal vergroten, krijgen we rechthoekig rooster, waarin u de brontekst kunt schrijven. Maar hier zijn al voorlopige afspraken nodig tussen de geadresseerde en de afzender van de berichten, aangezien het raster zelf verschillende lengtes en hoogtes kan hebben, je kunt erin schrijven in rijen, in kolommen, in een spiraal daar of in een spiraal terug, je kunt ook langs diagonalen schrijven, en voor encryptie kun je ook verschillende richtingen nemen. Over het algemeen zijn er veel opties.

Laten we bijvoorbeeld een raster van 6x6 nemen (en het aantal regels kan toenemen of afnemen, afhankelijk van de lengte van het oorspronkelijke bericht) en dit regel voor regel invullen:

Als u codeert langs de pijlen (diagonalen) van boven naar beneden vanuit de linkerbovenhoek, krijgt u het volgende cijfergram:

P UU SDK TECH LTAOA BTKTBM AMEVL YLGK IDI EZ ZH

Voor het definitieve ontwerp kan de cijfertekst worden verdeeld in groepen van 6 tekens:

PUUSDK TEKKHT AOABTK TBMAME VLYLGK IDIEZZH

Vaak worden ingetoetste permutaties gebruikt. Vervolgens worden de regels voor het vullen van het raster en het coderen ervan vereenvoudigd en standaard geworden. Het enige dat u hoeft te onthouden en te weten, is de sleutel. Dit kan elk woord zijn, bijvoorbeeld RADIATOR. In overeenstemming met de rangschikking van letters in het alfabet, krijgt de letter A het nummer 1, de tweede letter A - 2, de volgende letter D in het alfabet - 3, dan I - 4, O - 5; de eerste letter P is 6, de tweede P is 7 en de letter T is 8. Vul het raster in:

We schrijven de kolommen op volgens de cijfers van de sleutelletters:

UTY BKT STH TAO UAL PEMO DKI BKE

Vervolgens wordt de reeks opnieuw in vijven verdeeld:

UTYK TSTHT AOUAL PEMOD KIBKE

Dit eenvoudige kolomherschikkingscijfer werd tijdens de Tweede Wereldoorlog door Duitse geheimagenten gebruikt. Ze gebruikten de eerste letters van de regels op een bepaalde pagina van een gewoon boek als sleutel.

Een ontwikkeling van dit cijfer is een cijfer voor het herschikken van kolommen met gaten, die zich ook in het rooster bevinden in overeenstemming met de sleutel (in ons geval, na 6-1-3-4-2-8-5-7 ... karakters):

De codering zal als volgt zijn:

UDC b SEHL TTOM AEP PKI UKLR BTTO

Uit de beschouwde voorbeelden wordt duidelijk dat alle coderings- en decoderingsprocedures die gebruik maken van de permutatiemethode behoorlijk formeel zijn en algoritmisch kunnen worden geïmplementeerd.

Blokkeer cijfers

Omdat de duidelijke tekst van het bericht meestal een willekeurige lengte heeft, soms behoorlijk groot, wordt deze opgedeeld in kleinere blokken met een vaste lengte. De teksten van deze blokken worden afzonderlijk en onafhankelijk van elkaar gecodeerd.

Blokcijfers met één sleutel zijn onderverdeeld in 3 groepen:

Permutatiecijfers

Vervangingscijfers

Samengestelde cijfers.

Bij het gebruik van permutatiecijfers, die zijn ontworpen om de betekenis van een bericht te elimineren door de volgorde van de afwisseling van de karakters te veranderen, worden leesbare karakters binnen een bepaald blok opnieuw gerangschikt volgens een bepaalde regel (sleutel). Als gevolg hiervan worden de normale volgorde waarin ze voorkomen en de betekenis zelf van de informatieboodschap verstoord. In dit geval wordt onderscheid gemaakt tussen eenvoudige en complexe permutatiecijfers.

Een eenvoudig permutatiecijfer herschikt een groep tekstletters op een regelmatige manier volgens een gekozen permutatiesleutel (regel). Er zijn veel voorbeelden uit de geschiedenis van het gebruik van dergelijke cijfers voor handmatige codering. In dit geval werden vaak speciale tabellen gebruikt, die eenvoudige coderingsprocedures (sleutels) opleverden, volgens welke de letters in het bericht opnieuw werden gerangschikt. De sleutel voor dergelijke tabellen was de grootte van de tabel, een zinsnede die een permutatie of andere speciale kenmerken van de tabel specificeerde.

Een voorbeeld van het eenvoudigste permutatiecijfer wordt getoond in Fig. 5.5.

Rijst. 5.5. Het eenvoudigste permutatiecijfer.

Zoals blijkt uit Fig. 5.5, om het bericht “YUSTACE ALEX MEET YOUR CONNECTED MAN” te coderen, moet dit laatste worden geschreven in de vorm van een tabel die bijvoorbeeld uit 5 rijen en 6 kolommen bestaat. De berichttekst wordt in kolommen geschreven, zonder spaties. Als de laatste kolom onvolledig is, wordt deze willekeurig gevuld met letters. Om een ​​gecodeerd bericht te ontvangen, wordt de originele tekst regel voor regel gelezen (van links naar rechts) en in groepen geschreven, bijvoorbeeld van 5 cijfers. Laatst

de procedure heeft geen betrekking op het coderingsproces en wordt alleen gedaan om het gemakkelijker te maken om tekst op te schrijven die geen enkele betekenis heeft. Om dergelijke tekst te decoderen, moet u de sleutel kennen, namelijk het aantal rijen en kolommen in de tabel, of, met andere woorden, de grootte ervan.

Een meer praktische versleutelingsmethode, die sterk lijkt op de vorige, wordt hieronder beschreven. Het verschil is alleen dat de tabelkolommen opnieuw worden gerangschikt op basis van een trefwoord, woordgroep of reeks getallen ter lengte van een tabelregel.

Bij het coderen door eenvoudige permutatie wordt de cijfertekst in opeenvolgende regels onder de trefwoordsymbolen geschreven, die niet mogen worden herhaald. Om het onthouden van de sleutel te vereenvoudigen, wordt een trefwoord gebruikt waarvan de letters zijn genummerd in de volgorde van hun locatie het alfabet, stel de permutatieregel in. De cijfertekst wordt uitgeschreven in kolommen in de volgorde waarin de letters van de sleutel zich in het alfabet bevinden, of in de volgorde van cijfers in een natuurlijke reeks, als de sleutel digitaal is. Het versleutelingsproces met behulp van een eenvoudig permutatiecijfer wordt geïllustreerd in figuur 2. 5.6. Stel dat u een informatiebericht moet coderen



“DE VERGADERING WORDT MORGEN RECHTVAARDIG GEHOUDEN.”

Om deze platte tekst te coderen, zullen we deze zonder spaties schrijven (de deelname van deze laatste aan de coderingsprocedure, vanwege hun hoge herhalingsfrequentie, verzwakt de cryptografische kracht van het cijfer aanzienlijk) en selecteren een coderingssleutel, bijvoorbeeld 245 136 Volgens deze sleutel, bestaande uit 6 cijfers, verdelen we alle informatieberichten in blokken, die elk 6 letters tekst bevatten. Nadat we het in blokken hadden verdeeld, kregen we 4 blokken met elk 6 letters, en 1 blok met 5 letters. In dergelijke gevallen wordt de laatste groep letters van het oorspronkelijke bericht willekeurig aangevuld met verschillende symbolen totdat een volledig blok wordt verkregen. In ons geval ontbreekt er maar één letter, dus selecteren we een willekeurige letter, bijvoorbeeld Ъ, en voegen deze toe aan het einde van het vijfde blok.

Rijst. 5.6. Eenvoudig permutatiecijfer

Vervolgens worden met behulp van de sleutel 245 136 de letters van de originele leesbare tekst opnieuw gerangschikt. Het eerste cijfer van de sleutel is bijvoorbeeld 2, wat aangeeft dat in het nieuwe blok de eerste letter van de cijfertekst de tweede letter van het leesbare tekstblok zal zijn, het tweede cijfer van de sleutel is 4, wat aangeeft dat de tweede letter van het blok cijfertekst is de vierde letter in het leesbare tekstblok, enz. d.

Uiteindelijk verkrijgen we, na permutaties in alle blokken, cijfertekst. Nadat we het hebben gelezen, zien we dat het volledig verstoken is van enige semantische inhoud.

Om de sleutel gemakkelijker te kunnen onthouden, wordt meestal een trefwoord gebruikt. In dit geval is dat het woord “ROOT”. Daarin komt nummer 1 van de sleutel overeen met de letter E, omdat dit de eerste van alle letters van dit woord is die in ons alfabet voorkomen, nummer 2 - de letter K (om dezelfde reden), enz.

Hetzelfde bericht kan worden gecodeerd met behulp van een tabel die bijvoorbeeld uit 5 rijen en 6 kolommen bestaat (de lengte van het trefwoord). De brontekst is in kolommen geschreven en vormt een tabel (Fig. 5.7). Het trefwoord specificeert een regel voor het herschikken van kolommen. Als dezelfde letters in een trefwoord voorkomen, worden ze van links naar rechts genummerd. De resulterende tweede cijfertekst, zoals blijkt uit Fig. 5.7 is compleet anders dan de eerste.

Rijst. 5.7. Versleuteling met behulp van een tabel

Het grootste nadeel van dit cijfer is de lage cryptografische sterkte. Door de cijfertekst in factoren te verwerken (er zijn niet veel opties), kunt u eenvoudig de waarschijnlijke lengte bepalen van het codewoord dat tijdens de codering is gebruikt.

Om de cryptografische sterkte van de hierboven verkregen cijfertekst te vergroten, kunt u proberen deze opnieuw te coderen. Deze versleutelingsmethode staat bekend als dubbele permutatie. De essentie van deze methode is als volgt. De tekst die na de eerste versleuteling wordt verkregen, wordt een tweede keer versleuteld met behulp van een tabel met een andere dimensie (de lengtes van de rijen en kolommen worden anders geselecteerd). Bovendien kunt u rijen in de ene tabel en kolommen in een andere tabel opnieuw rangschikken. Je kunt de tabel op verschillende manieren vullen met brontekst: zigzag, slang, spiraal, etc.

Een eenvoudig permutatiecijfer dat tabeleigenschappen gebruikt, de zogenaamde magische vierkanten (Figuur 5.8), wordt al sinds de middeleeuwen gebruikt. Magische vierkanten zijn gelijkzijdige tabellen waarvan alle cellen gevuld zijn met natuurlijke getallen, beginnend bij 1. Bovendien geven deze getallen samen hetzelfde getal voor elke kolom, elke rij en diagonalen van het magische vierkant (in ons geval is dit het nummer 34). Brontekst - WAITING TO MEET YUSTACE, bij het invullen van het magische vierkant wordt het ingevoerd in de volgorde van natuurlijke getallen, het cijfer 1 is bijvoorbeeld vervangen door 1 letter van de brontekst (F), het getal 12 - 12 door de letter van het bericht (C), enz. Na het schrijven van de leesbare tekst wordt de inhoud van de tabel regel voor regel gelezen, wat resulteert in een cijfertekst met een permutatie van letters.

Rijst. 5.8. Magisch vierkant

Aatbash, Scital cipher en Cardano-rooster zijn bekende manieren om informatie voor nieuwsgierige blikken te verbergen. In de klassieke zin is een permutatiecijfer een anagram. De essentie ervan ligt in het feit dat de letters van de leesbare tekst volgens een bepaalde regel van positie veranderen. Met andere woorden, de cijfersleutel is bedoeld om de volgorde van de tekens in het geopende bericht te wijzigen. De afhankelijkheid van de sleutel van de lengte van de gecodeerde tekst heeft echter voor veel ongemakken gezorgd bij het gebruik van dit type codering. Maar slimme hoofden hebben interessante, sluwe oplossingen gevonden die in het artikel worden beschreven.

Omgekeerde groepen

Om kennis te maken met encryptie met behulp van de permutatiemethode, zullen we een van de eenvoudigste voorbeelden noemen. Het algoritme bestaat uit het verdelen van een bericht in n blokken, die vervolgens weer naar voren worden gedraaid en verwisseld. Laten we eens kijken naar een voorbeeld.

  • "De dag ging voorbij en de lucht was donker aan de hemel."

Laten we dit bericht in groepen verdelen. In dit geval n = 6.

  • "Denukh odili nebav ozd uhtemny."

Laten we nu de groepen uitbreiden en ze allemaal vanaf het einde schrijven.

  • "hunned vaben dzo methu yyn."

Laten we ze op een bepaalde manier herschikken.

  • "ilido methu yyn huned vaben dzo."

Voor een onwetend persoon is de boodschap in deze vorm niets meer dan onzin. Maar degene aan wie het bericht is gericht, heeft uiteraard de leiding over het decoderingsalgoritme.

Middelste inzetstuk

Het algoritme voor deze codering is iets ingewikkelder dan permutatie:

  1. Verdeel het bericht in groepen met een even aantal tekens.
  2. Voeg extra letters in het midden van elke groep in.

Laten we eens kijken naar een voorbeeld.

    "Hij leidde de schepselen van de aarde in slaap."

    "Zemn yetv ariu vodi lkosnu."

    "Zeamn yeabtv araiu voabdi lkoasnu."

In dit geval werden afwisselend de letters “a” en “ab” in het midden van de groepen ingevoegd. Inserts kunnen verschillend zijn, in verschillende hoeveelheden en niet herhaald. Bovendien kunt u elke groep uitbreiden, in willekeurige volgorde afspelen, enz.

Coderingscode "Sandwich"

Nog een leuk en eenvoudig voorbeeld van permutatie-encryptie. Om het te gebruiken, moet je de leesbare tekst in twee helften verdelen en de ene teken voor teken tussen de letters van de andere schrijven. Laten we het met een voorbeeld laten zien.

  • 'Van hun werk; alleen ik ben alleen, dakloos.'

Verdeel in helften met een gelijk aantal letters.

  • "Ik ben de enige dakloze die geen werk meer heeft."

Laten we nu de eerste helft van het bericht schrijven met een grote ruimte tussen de letters.

  • "Ongeveer t i h t u d o v l i s h ."

En in deze ruimtes plaatsen we de letters van de tweede helft.

  • "Oyatoidhitnrbuedzodvolminshy."

Laten we ten slotte de letters groeperen in een soort woorden (optionele bewerking).

  • "Oyatoi dhi tnrbue dzodvol minshyy."

Met deze methode is het heel eenvoudig om tekst te coderen. Het zal voor niet-ingewijden enige tijd nodig hebben om de resulterende onzin te ontrafelen.

Herschikkingen langs de "route"

Deze naam werd gegeven aan cijfers die in de oudheid veel werden gebruikt. De route in hun constructie was een geometrische figuur. De platte tekst werd volgens een bepaald patroon in zo'n figuur geschreven en volgens het omgekeerde opgehaald. Een optie zou bijvoorbeeld kunnen zijn om leesbare tekst naar een tabel te schrijven met behulp van dit schema: een slang kruipt met de klok mee door de cellen en een gecodeerd bericht wordt samengesteld door de kolommen in één rij te schrijven, van de eerste tot de laatste. Dit is ook permutatie-encryptie.

Laten we met een voorbeeld laten zien hoe u tekst kunt coderen. Probeer zelf de opnameroute en de encryptieroute te bepalen.

    "Ik bereidde me voor om de oorlog te doorstaan."

We schrijven het bericht in een tabel met afmetingen van 3x9 cellen. De tabelgrootte kan worden bepaald op basis van de berichtlengte, of een vaste tabel kan meerdere keren worden gebruikt.

We zullen de code samenstellen, beginnend in de rechterbovenhoek van de tabel.

  • "Launlvosoyatovvygidtaerprzh."

Het omkeren van de beschreven stappen is niet moeilijk. Het is voldoende om gewoon het tegenovergestelde te doen. Deze methode is uiterst handig omdat u hierdoor gemakkelijk de coderings- en decoderingsprocedure kunt onthouden. Het is ook interessant omdat elke vorm voor een cijfer kan worden gebruikt. Een spiraal bijvoorbeeld.

Verticale permutaties

Dit type cijfer is ook een variant van routepermutatie. Het is vooral interessant vanwege de aanwezigheid van een sleutel. Deze methode was in het verleden wijdverspreid en gebruikte ook tabellen voor codering. Het bericht wordt op de gebruikelijke manier in de tabel geschreven - van boven naar beneden, en het cijfergram wordt verticaal geschreven, met behoud van de volgorde die wordt gespecificeerd door de sleutel of het wachtwoord. Laten we eens kijken naar een voorbeeld van een dergelijke codering.

    "Zowel met een pijnlijk pad als met compassie"

We gebruiken een tabel met afmetingen van 4x8 cellen en schrijven onze boodschap daarin op de gebruikelijke manier. En voor encryptie gebruiken we de sleutel 85241673.

Laten we nu, met behulp van de sleutel als indicatie van de volgorde, de kolommen op een regel schrijven.

  • "Gusetmsntmayapoysaotmserinid."

Het is belangrijk op te merken dat bij deze versleutelingsmethode lege cellen in de tabel niet mogen worden gevuld met willekeurige letters of symbolen, in de hoop dat dit het cijfergram zal compliceren. Integendeel, een dergelijke actie zal de vijanden zelfs een hint geven. Omdat de sleutellengte gelijk zal zijn aan een van de berichtlengtedelers.

Omgekeerde decodering van verticale permutatie

Verticale permutatie is interessant omdat het ontsleutelen van een bericht niet simpelweg het achterstevoren volgen van een algoritme inhoudt. Iedereen die de sleutel kent, weet hoeveel kolommen er in de tabel staan. Om een ​​bericht te decoderen, moet u het aantal lange en korte regels in de tabel bepalen. Hiermee kunt u het begin bepalen van waar u het cijfergram in de tabel moet schrijven om de leesbare tekst te kunnen lezen. Om dit te doen deelt u de berichtlengte door de sleutellengte en krijgt u 30/8=3 en 6 als rest.

We hebben dus geleerd dat de tabel 6 lange kolommen en 2 korte kolommen heeft, die niet volledig gevuld zijn met letters. Als we naar de sleutel kijken, zien we dat de codering begon in de 5e kolom en dat deze lang zou moeten zijn. We zien dus dat de eerste vier letters van het cijfergram overeenkomen met de vijfde kolom van de tabel. Nu kun je alle letters op hun plaats schrijven en het geheime bericht lezen.

Dit type behoort tot de zogenaamde stencilcijfers, maar de kern ervan is encryptie door middel van symboolpermutatie. De sleutel is een stencil in de vorm van een tafel waarin gaten zijn gesneden. In feite kan het stencil elke vorm hebben, maar meestal wordt een vierkant of tafel gebruikt.

Het Cardano-sjabloon is gemaakt volgens het volgende principe: de uitgesneden cellen mogen elkaar, wanneer ze 90° worden gedraaid, niet overlappen. Dat wil zeggen, na 4 rotaties van het sjabloon om zijn as, mogen de sleuven erin niet één keer samenvallen.

Laten we een eenvoudig Cardano-rooster als voorbeeld gebruiken (in de onderstaande afbeelding).

Met behulp van dit stencil coderen we de zinsnede "O Muzen, ik zal u aanspreken met een oproep."

- OVER - M - -
U
Z Y
NAAR
IN A
M

We vullen de cellen van het stencil met letters volgens de regel: eerst van rechts naar links en dan van boven naar beneden. Wanneer de cellen leeg zijn, draait u het sjabloon 90° met de klok mee. Op deze manier verkrijgen we de volgende tabel.

En de laatste beurt.

- - M - - -

Nadat we vier tabellen in één hebben gecombineerd, krijgen we het laatste gecodeerde bericht.

I OVER M M G MET
IN OVER U B OVER R
G Z A Z SCH Y
IN G NAAR G A U
G IN G N G A
M MET B B E G

Hoewel het bericht hetzelfde kan blijven, zal het handiger zijn om een ​​bekend uitziend cijfergram te ontvangen voor verzending. Om dit te doen, kunt u lege cellen vullen met willekeurige letters en de kolommen op één regel schrijven:

  • "YAVGVGM OOZGVS MUAKG MBZGN GOSCHAGE SRYUAG"

Om dit bericht te kunnen ontsleutelen, moet de ontvanger over een exacte kopie beschikken van het stencil dat voor de versleuteling is gebruikt. Dit cijfer werd lange tijd als vrij stabiel beschouwd. Het kent ook veel variaties. Gebruik bijvoorbeeld 4 Cardano-roosters tegelijk, die elk op hun eigen manier roteren.

Analyse van permutatiecijfers

Alle permutatiecijfers zijn kwetsbaar voor frequentieanalyse. Vooral in gevallen waarin de berichtlengte vergelijkbaar is met de sleutellengte. En dit feit kan niet worden veranderd door herhaaldelijk gebruik van permutaties, hoe complex ze ook zijn. Daarom kunnen in de cryptografie alleen die cijfers die meerdere mechanismen tegelijk gebruiken, naast permutatie, stabiel zijn.

Eenvoudige sleutelloze permutatie is een van de eenvoudigste versleutelingsmethoden. De letters zijn volgens bepaalde regels gemengd, maar deze regels kunnen verschillend zijn - zowel eenvoudig als complex.

Omzetting

Laten we zeggen dat we een zin hebben: “HET IS MOGELIJK, MAAR NIET”. En we willen het versleutelen. De eenvoudigste manier is om de hele zin achterstevoren te schrijven: “HIJ IS VICIEUZE, ONJOM”. Je kunt de volgorde van de woorden in de zin origineel laten, maar elk woord achterstevoren schrijven: "ONJOM, HIJ IS VICIEUZE". Of je kunt elke twee letters van plaats wisselen: "OMNZH,UNENLYAZ". Dit wordt in zijn puurste vorm "transpositie" of eenvoudige herschikking genoemd.

Transponeren

Dit cijfer maakt gebruik van een tabel. Het bericht wordt in rijen in de tabel geschreven en in kolommen gelezen om de cijfertekst te vormen. Nou ja, of omgekeerd: het is in kolommen geschreven en in rijen gelezen. Het lijkt erop dat we de tafel omdraaien ten opzichte van de diagonaal, door de linkerbovenhoek en de rechteronderhoek. Wiskundigen noemen deze methode voor het omkeren van een tabeltranspositie.

Om te coderen, moet u een tabel van een geschikte grootte tekenen, de gecodeerde tekst daar regel voor regel invoeren en deze vervolgens in kolommen op één regel opschrijven. Om te decoderen hoeft u alleen de coderingssleutel in de vorm van de tabelgrootte op te geven. Onderstaande foto is van ABCDEFGHIJKL zo blijkt ADGJBEHKCFIL. Mee eens, het is bijna onmogelijk om zonder een foto te begrijpen dat het een alfabet was.

We moeten dus bijvoorbeeld de tekst coderen “Ik heb een monument voor mezelf opgericht, niet met de hand gemaakt; het pad van de mensen ernaartoe zal niet overwoekerd worden.” . Het heeft 72 tekens. 72 is een handig getal, het is deelbaar door 2,4,6,8,12,18,24,36, dus je kunt tabellen 2x36, 3x24, 4x18, 6x12, 8x9, 9x8, 12x6, 18x4, 24x3, 36x2 gebruiken :). We bepalen de sleutel (tabelgrootte), voeren de tekst in rijen in en herschrijven deze vervolgens in kolommen.

De afbeelding hierboven toont opties met tafels 9x8, 8x9, 4x18 en 18x4. Voor de derde optie (tabel 4×18) krijgt u de volgende tekst:

“Yamievvnkoy u atrar yakboieor, n zs oyaopt ezgrtn enatnd pans d uvykmeryoanta (4:18)»

In dit geval heb ik de tekst genomen ‘zoals hij is’, dat wil zeggen, met spaties tussen woorden en leestekens. Maar als de tekst betekenisvol is, mogen leestekens en spaties tussen woorden niet worden gebruikt.

Schutting

Een vereenvoudigde versie van transpositie (met een tabel met twee regels) is "piketfence". “Qua ontwerp” lijkt het op een dambordomheining.

Dit is een zeer eenvoudige versleutelingsmethode, die vaak door schoolkinderen wordt gebruikt. De zin is in twee regels geschreven: oneven letters bovenaan, even letters onderaan. Dan moet je de bovenste regel op een rij schrijven en vervolgens de onderste regel. Deze codering kan eenvoudig in uw hoofd worden gedaan, zonder eerst twee regels te schrijven.

“Ik heb een monument voor mezelf opgericht, niet met de hand gemaakt” verandert in “YAYANKEEODINRKTONY PMTISBVZVGEUOVRY.”

Skitala

Het is bekend dat de heersers van Sparta, de meest oorlogszuchtige van de Griekse staten, in de 5e eeuw voor Christus een goed ontwikkeld systeem van geheime militaire communicatie hadden en hun berichten versleutelden met behulp van de ‘skalta’, het eerste eenvoudige cryptografische apparaat dat dit implementeerde. de methode van eenvoudige permutatie.

De codering werd als volgt uitgevoerd. Een strook perkament werd in een spiraal (draai tot draai) op ​​een cilindrische staaf gewikkeld, die een 'skitala' werd genoemd, en langs de staaf werden verschillende regels berichttekst erop geschreven. Vervolgens werd een strook perkament met geschreven tekst van de staaf verwijderd. De letters op deze strook bleken chaotisch te zijn geplaatst. Om de tekst te herstellen was een zwerver met dezelfde diameter nodig.

In wezen is een scytale onze gewone platte tafel, gewikkeld rond een cilinder.

Er wordt aangenomen dat de auteur van de methode om het cijfer van de zwerver te breken Aristoteles is, die de tape op een kegelvormige stok wikkelde totdat er leesbare stukjes tekst verschenen. Aanvankelijk werd het oude apparaat gebruikt om geheime recepten op te slaan. Nu kun je in plaats van een smalle strook perkament serpentijn gebruiken, en de rol van de zwerver wordt gespeeld door een potlood.

Verschuiving

Een soortgelijk resultaat kan worden verkregen als de letters van het bericht over een bepaald aantal posities worden geschreven totdat alle tekst is opgebruikt. Hieronder ziet u een voorbeeld van een voltooide puzzel die volgens deze regels is samengesteld. “Drie fractie vier” is een hint dat drie woorden gecodeerd zijn, je moet elke vierde letter lezen (4-8-12-16-..), wanneer je het einde bereikt, ga terug naar het begin met een verschuiving van 1 letter naar links (3-7- 11-15-..), etc. Op de afbeelding hieronder staat: "Ga langs de aangegeven route."

Enkele permutatie per sleutel

Een meer praktische versleutelingsmethode, genaamd permutatie met één sleutel, lijkt sterk op de vorige. Het verschil is alleen dat de tabelkolommen niet worden verschoven, maar opnieuw worden gerangschikt op basis van een trefwoord, woordgroep of reeks getallen over de lengte van een tabelregel. De gecodeerde zin wordt regel voor regel in een geschikte tabel geschreven. Vervolgens wordt een lege regel boven de tabel ingevoegd en wordt daarin een trefwoord/zin/reeks getallen ingevoerd. Dit trefwoord/zin/reeks wordt vervolgens gesorteerd op alfabet/betekenis en de kolommen worden mee gesorteerd, waardoor de hele tabel in willekeurige volgorde wordt weergegeven. De gecodeerde zin wordt vervolgens rij voor rij uit deze geschudde tabel geschreven.

Je kunt bijvoorbeeld een puzzel maken op basis van Sudoku. De oplosser krijgt de tekst “-UROMKULO BUYOZEBYADL NZYATLYA TSBADNEPU EMMDNITOYO ICHTYUKNOO UNYYVYCHOS HIEPOTODTs PRMGOUIK-” en wordt gevraagd een Sudoku op te lossen waarin een van de regels is gemarkeerd.

Je zult deze puzzel als volgt moeten oplossen: eerst moet je de tekst in een 9x9-tabel schrijven, dan Sudoku oplossen, een lege 9x9-tabel tekenen, een sleutelregel schrijven vanaf de gemarkeerde regel erboven en vervolgens kolommen in de tabel invoeren onder nummers volgens hun serienummers in de originele tabel.

Voor kinderen kun je dezelfde methode gebruiken, maar eenvoudiger, zelfs zonder cijfers, en onmiddellijk de volgorde van permutatie tekenen in de vorm van paden.

Dubbele permutatie

Voor extra veiligheid kunt u een bericht dat al is gecodeerd opnieuw coderen. Deze methode staat bekend als "dubbele permutatie". Om dit te doen, wordt de grootte van de tweede tabel zo geselecteerd dat de lengtes van de rijen en kolommen niet hetzelfde zijn als in de eerste tabel. Het is het beste als ze relatief primair zijn. Bovendien kunnen de kolommen in de eerste tabel opnieuw worden gerangschikt, en de rijen in de tweede tabel.

Routeherschikking

De gebruikelijke transpositie van een tabel (rijen invullen, kolommen inlezen) kan ingewikkeld zijn en niet in kolommen worden gelezen, maar in een slang, zigzag, spiraal of op een andere manier, d.w.z. stel een tabelovergangsroute in. Dergelijke methoden voor het invullen van de tabel maken het coderingsproces veel leuker als ze de sterkte van het cijfer niet vergroten. Het is waar dat het decoderingsproces ingewikkelder wordt, vooral als de route onbekend is en nog moet worden ontdekt.

In de bovenstaande afbeelding is de reeks tekens “ABVGDEYEZHZIYKLMNOPRSTUFHTSCHSHSHSHCHYYYYUYA.,?” regel voor regel ingevoerd in een 6x6 tabel en vervolgens uitgelezen langs de route aangegeven door de regels. De volgende coderingen worden verkregen:

    AYOLSCHEBZHMTSHYUVZNUSHYAGIOF.DYPKHY, EKRTS?

    AYOLSCHEYUYA,

    ABELZHVGZMSCHTNIDEYOUSHEYUSHFPKRHYA.YTS,?

    AYOLSCHEYUSHTMZHBVZNUSHYA.ЪFOIGDYPKHY,?BTsRKE

    NZVBAYOZHMLSTSHCHEYUSCHUF.,?YHTSRPYKEDGIO

En hier moet je "met een ridderbeweging" rond de tafel gaan, en de route is al getekend, dus dit is alleen voor de kleintjes :)

Maar als je deze puzzel presenteert zoals hieronder weergegeven, dan zal het helemaal niet gemakkelijk zijn, omdat er veel opties kunnen zijn om rond de ridder te bewegen, en je zult uit al deze opties de enige juiste moeten vinden.

Gecodeerde “Poesjkin. De bronzen ruiter."

Permutatie "Magisch Vierkant"

Magische (of magische) vierkanten zijn vierkante tabellen met opeenvolgende natuurlijke getallen van 1 tot n 2 (waarbij n de afmeting van het vierkant is) ingeschreven in hun cellen, wat opgeteld hetzelfde getal oplevert voor elke kolom, elke rij en elke diagonaal.

In het Lo-Shu-vierkant van de derde orde (3×3), bekend in het oude China, wordt de vierkante constante 15 8 keer herhaald:

    langs drie horizontale lijnen: 2+9+4 = 7+5+3 = 6+1+8 = 15

    langs drie verticale lijnen: 2+7+6 = 9+5+1 = 4+3+8 = 15

    langs twee diagonalen: 2+5+8 = 4+5+6 = 15

Overigens kan de constante van een oneven vierkant eenvoudig worden berekend door het gemiddelde getal van de reeks waaruit het vierkant is gemaakt, te vermenigvuldigen met de volgorde van het vierkant. Voor een vierkant van de 3e orde (3×3) is de constante 1234 5 6789 *3=15.

Vervolgens moet u, om een ​​bericht te coderen, eerst een magisch vierkant van geschikte grootte selecteren of samenstellen, vervolgens een lege tabel van dezelfde grootte tekenen en de letters van de tekst één voor één in de tabel invoeren in overeenstemming met de cijfers. op het magische vierkant. Vervolgens schrijven we eenvoudig de letters uit de tabel regel voor regel op tot één lange regel. De volgorde van het vierkant moet gelijk zijn aan de wortel van de lengte van de gecodeerde string, afgerond naar boven, zodat de string volledig in het vierkant valt. Als de regel korter is, kan de rest worden gevuld met willekeurige letters of cijfers.

Op het eerste gezicht lijkt het alsof er maar heel weinig magische vierkanten zijn. Hun aantal neemt echter zeer snel toe naarmate het vierkant groter wordt. Er is dus maar één magisch vierkant van maat 3x3, als je geen rekening houdt met de rotaties en reflecties ervan. Het aantal magische vierkanten van de 4e orde telt al in honderden, van de 5e - in honderdduizenden. Daarom zouden grote magische vierkanten een goede basis kunnen zijn voor een betrouwbaar encryptiesysteem uit die tijd, aangezien handmatige opsomming van alle sleutelopties voor dit cijfer ondenkbaar was.

Er is een heel eenvoudige methode om oneven magische vierkanten samen te stellen, d.w.z. maten 3x3, 5x5, 7x7, enz. Dit is de “terras”- of “piramide”-methode.

Er wordt een vierkant van de gewenste grootte getekend en er worden getrapte “terrassen” aan toegevoegd (aangegeven door een stippellijn). Vervolgens wordt langs de diagonalen van boven naar beneden naar rechts het vierkant gevuld met opeenvolgende cijfers. Hierna worden de "terrassen" binnen het vierkant overgebracht: de rechter - naar links, de linker - naar rechts, de bovenste - naar beneden en de onderste - naar boven. Het blijkt een magisch vierkant te zijn!

Op basis van deze methode kun je verschillende puzzels maken. Als je de methode rechtstreeks gebruikt, krijg je een puzzel als deze:

Om deze puzzel op te lossen, moet je de letters van de “terrassen” naar een vierkant verplaatsen, waarna de volledige boodschap in het vierkant wordt gelezen. De zinsnede "Er ligt een hinderlaag achter de brug, je kunt er niet doorheen, steek de rivier over naar een doorwaadbare plaats" is hier gecodeerd.

En als je de methode andersom gebruikt, krijg je een puzzel als deze.

Om het op te lossen, moet je de overeenkomstige letters van het vierkant naar de "terrassen" trekken.

Voor vierkanten 4x4, 6x6, enz. Er zijn niet zulke eenvoudige manieren om ze te compileren, dus het is gemakkelijker om kant-en-klare manieren te gebruiken. Bijvoorbeeld het Dürer-plein.