Mga simpleng permutation cipher. Vertical permutation cipher[baguhin

Ang "skitala" permutation cipher. Noong ika-5 siglo BC Ang mga pinuno ng estado ng Greece ng Sparta ay may isang mahusay na binuo na sistema ng mga lihim na komunikasyon sa militar at naka-encrypt ang kanilang mga mensahe gamit ang scytal, ang unang simpleng cryptographic device na nagpapatupad ng paraan ng simpleng permutation (Fig. 1.6).

kanin. 1.6.

Ang pag-encrypt ay isinagawa bilang mga sumusunod. Ang isang strip ng katad ay nasugatan sa isang spiral (turn to turn) sa isang cylindrical rod, na tinatawag na skitala, at ilang linya ng text message ang nakasulat dito kasama ang rod. Pagkatapos ay inalis nila ang strip mula sa baras - ang mga titik dito ay nakaayos nang random.

Karaniwang itinago ng mensahero ang mensahe gamit ang isang leather strip bilang sinturon, i.e. Bilang karagdagan sa pag-encrypt, ginamit din ang steganography. Upang matanggap ang orihinal na mensahe, isang strip ng katad ay dapat na sugat sa paligid ng isang scythe ng parehong diameter. Ang susi sa cipher na ito ay ang diameter ng baras. Ang pag-alam lamang sa uri ng cipher, ngunit hindi pagkakaroon ng susi, ang pag-decryption ng mensahe ay hindi madali. Ang "skitel" cipher ay napabuti ng maraming beses sa mga susunod na panahon.

Ang isang paraan para masira ang cipher na ito ay iminungkahi ni Aristotle. Kinakailangan na gumawa ng isang mahabang kono at, simula sa base, balutin ito ng tape na may naka-encrypt na mensahe, unti-unting inililipat ito patungo sa itaas. Sa ilang mga punto, ang mga piraso ng mensahe ay magsisimulang matingnan. Ang diameter ng kono sa lugar na ito ay tumutugma sa diameter ng scythe.

Mga talahanayan ng pag-encrypt. Ang isa sa mga pinaka-primitive na table permutation cipher ay simpleng permutation, kung saan ang susi ay ang laki ng table. Ang paraan ng pag-encrypt na ito sa pinakasimpleng anyo nito ay katulad ng skitala cipher. Halimbawa, ang teksto ng isang mensahe ay isinulat sa isang talahanayan ng isang tiyak na laki sa isang hanay, at binabasa sa mga hilera.

Isulat natin ang pariralang "Dumating ang Terminator sa ikapitong hatinggabi" sa isang talahanayan na may sukat na 5x7 (Larawan 1.7) ngunit sa mga hanay. Ang pagkakaroon ng nakasulat na teksto mula sa talahanayan linya sa pamamagitan ng linya, makuha namin ang code: "tnnveglearadonrtievomobtmnchirysooo".

kanin. 1.7.

Ang nagpadala at tatanggap ng mensahe ay dapat magkasundo nang maaga sa isang nakabahaging susi sa anyo ng laki ng talahanayan. Kapag nagde-decrypting, ang mga aksyon ay ginagawa sa reverse order (line-by-row recording, column-by-column reading).

Ang cipher na ito ay maaaring medyo kumplikado: halimbawa, ang mga haligi ay maaaring muling ayusin sa isang tiyak na pagkakasunud-sunod na tinutukoy ng susi. Posible ang double rearrangement - mga column at row.

Cardano grid. Ang Cardano grid (rotating grid) ay isang hugis-parihaba o parisukat na card na may pantay na bilang ng mga row at column. 2k X 2t. Ang mga butas ay ginawa dito sa paraang sa sunud-sunod na pagmuni-muni o pag-ikot at pagpuno ng mga bukas na selula ng card, ang lahat ng mga cell ng sheet ay unti-unting mapupuno.

Ang card ay unang makikita na may kaugnayan sa vertical axis ng simetrya, pagkatapos ay nauugnay sa pahalang na axis, at muli na nauugnay sa vertical (Fig. 1.8).

Kung ang Cardano lattice ay parisukat, ang isa pang pagpipilian para sa pagbabago nito ay posible - isang pag-ikot ng 90 ° (Larawan 1.9).

kanin. 1.8.

kanin. 1.9.

Kapag nagsusulat sa karaniwang paraan (mula kaliwa hanggang kanan at itaas hanggang ibaba) ang pariralang "text encryption" (nang walang mga puwang) sa mga libreng cell ng umiikot na grid na ipinapakita sa Fig. 1.9, nakukuha namin ang teksto sa anyo ng isang talahanayan (Fig. 1.10), o, sa pamamagitan ng pagsulat ng teksto sa isang linya, "kshiioesvtafatren".

kanin. 1.10.

Dapat alam ng tatanggap ang stencil at ilapat ito sa parehong pagkakasunud-sunod tulad ng sa panahon ng pag-encrypt. Ang susi ay ang napiling uri ng paggalaw ng sala-sala (pagsalamin o pag-ikot) at ang stencil - ang lokasyon ng mga butas, na para sa isang parisukat na laki ng sala-sala 2t X 2k maaaring mapili sa 4"* na paraan (isinasaalang-alang ang paunang oryentasyon ng stencil). Sa kasong ito, kabilang sa mga stencil na itinuturing na naiiba, magkakaroon ng mga mirror na imahe o pag-ikot ng iba pang mga stencil, i.e. stencil na naiiba lamang sa kanilang unang lokasyon (orientation). Kung pabayaan natin ang paunang lokasyon ng stencil, kung gayon, malinaw naman, magkakaroon ng 4 na beses na mas kaunting iba't ibang mga stencil - 4""*"

Halimbawa, para sa isang 4X4 grid, mayroong 256 na posibleng stencil na opsyon (batay sa paunang oryentasyon) o kabuuang 64 na magkakaibang stencil.

Sa kabila ng katotohanan na ang bilang ng mga stencil para sa malalaking sala-sala ay medyo malaki (mga 4 milyon (4-10 e)), ito ay mas mababa pa rin kaysa sa mga random na permutasyon ng mga elemento ng talahanayan, ang bilang nito ay katumbas ng (2t? 2k).

Halimbawa, para sa isang talahanayan na may sukat na 4x4, ang bilang ng mga random na permutasyon ay nasa pagkakasunud-sunod ng 2? 10 13, at para sa 8x8 na talahanayan - mga 10 89.

Ang mga cardano lattice, pati na rin ang mga encryption table, ay mga espesyal na kaso ng routing permutation cipher.

Ang pamamaraang ito ay binubuo sa katotohanan na ang mga character ng naka-encrypt na teksto ay muling inayos ayon sa ilang mga patakaran sa loob ng naka-encrypt na bloke ng mga character. Tingnan natin ang ilan sa mga pinakakaraniwang uri ng paraang ito na maaaring magamit sa mga automated na system.

Ang pinakasimpleng permutation ay ang pagsulat ng orihinal na teksto pabalik at sabay na hatiin ang ciphergram sa limang letra. Halimbawa, mula sa parirala:

HAYAAN NATIN ANG GUSTO NAMIN

makukuha mo ang sumusunod na ciphertext:

ILETO KHIMKA KKATT EDUB TSUP

Ang huling pangkat (lima) ay kulang ng isang titik. Nangangahulugan ito na bago i-encrypt ang orihinal na expression, dapat itong dagdagan ng isang hindi gaanong mahalagang titik (halimbawa, O) sa isang numero na isang multiple ng lima:

LET-BE-TAKKA-KMYKHO-TELIO.

Kung gayon ang ciphergram, sa kabila ng isang maliit na pagbabago, ay magiging iba ang hitsura:

OILET OKHYMK AKKAT TEDUB BTSUP

Mukhang walang kumplikado, ngunit ang pag-decryption ay magdudulot ng malubhang abala.

Sa panahon ng American Civil War, ginamit ang sumusunod na code: ang orihinal na parirala ay isinulat sa ilang linya. Halimbawa, labinlimang letra bawat isa (pinupuno ang huling linya ng walang kahulugan na mga titik).

Pagkatapos nito, ang mga patayong haligi ay isinulat sa pagkakasunud-sunod sa isang linya na nahahati sa limang titik:

PKUMS YTHIO BTUED LEITK TLAMK NCOAP

Isang variant ng cipher na ito: isulat muna ang orihinal na parirala sa mga column:

Pagkatapos ay hatiin ang mga linya sa limang letra:

PSYUE TKAMH TLAVD UTBDT AKKYO EIBGE

Kung paikliin natin ang mga linya at dagdagan ang kanilang bilang, makukuha natin parihaba na sala-sala, kung saan maaari mong isulat ang pinagmulang teksto. Ngunit narito ang mga paunang kasunduan ay kinakailangan sa pagitan ng addressee at ng nagpadala ng mga mensahe, dahil ang grid mismo ay maaaring may iba't ibang haba at taas, maaari mong isulat ito sa mga hilera, sa mga haligi, sa isang spiral doon o sa isang spiral pabalik, maaari ka ring sumulat sa mga diagonal, at para sa pag-encrypt Maaari ka ring kumuha ng iba't ibang direksyon. Sa pangkalahatan, maraming mga pagpipilian.

Halimbawa, kumuha tayo ng 6x6 na grid (at ang bilang ng mga linya ay maaaring tumaas o bumaba depende sa haba ng orihinal na mensahe) at punan ito ng linya sa bawat linya:

Kung mag-e-encrypt ka kasama ng mga arrow (diagonal) mula sa itaas hanggang sa ibaba mula sa kaliwang sulok sa itaas, mapupunta ka sa sumusunod na ciphergram:

P UU SDK TECH LTAOA BTKTBM AMEVL YLGK IDI EZ ZH

Para sa panghuling disenyo, ang ciphertext ay maaaring hatiin sa mga pangkat ng 6 na character:

PUUSDK TEKKHT AOABTK TBMAME VLYLGK IDIEZZH

Ang mga naka-key na permutasyon ay kadalasang ginagamit. Pagkatapos ang mga patakaran para sa pagpuno ng grid at pag-encrypt mula dito ay pinasimple at naging pamantayan. Ang tanging bagay na kailangan mong tandaan at malaman ay ang susi, na maaaring maging anumang salita, halimbawa, RADIATOR. Alinsunod sa pag-aayos ng mga titik sa alpabeto, ang titik A ay tumatanggap ng numero 1, ang pangalawang titik A - 2, ang susunod na titik D sa alpabeto - 3, pagkatapos ay I - 4, O - 5; ang unang titik P ay 6, ang pangalawang P ay 7 at ang titik T ay 8. Punan ang grid:

Isinulat namin ang mga haligi alinsunod sa mga numero ng mga pangunahing titik:

UTY BKT STH TAO UAL PEMO DKI BKE

Pagkatapos ang pagkakasunud-sunod ay muling nahahati sa lima:

UTYK TSTHT AOUAL PEMOD KIBKE

Ang simpleng column rearrangement cipher na ito ay ginamit ng mga lihim na ahente ng Aleman noong World War II. Ginamit nila ang mga unang titik ng mga linya sa isang tiyak na pahina ng ilang ordinaryong libro bilang isang susi.

Ang pag-unlad ng cipher na ito ay isang cipher para sa muling pag-aayos ng mga haligi na may mga puwang, na matatagpuan sa sala-sala alinsunod din sa susi (sa aming kaso, pagkatapos ng 6-1-3-4-2-8-5-7 ... mga character):

Ang pag-encrypt ay magiging ganito:

UDC b SEHL TTOM AEP PKI UKLR BTTO

Mula sa mga halimbawang isinasaalang-alang, malinaw na ang lahat ng mga pamamaraan ng pag-encrypt at pag-decryption gamit ang paraan ng permutation ay medyo pormal at maaaring ipatupad ayon sa algorithm.

I-block ang mga cipher

Dahil sa ang katunayan na ang malinaw na teksto ng mensahe ay karaniwang may di-makatwirang haba, kung minsan ay medyo malaki, ito ay nahahati sa mas maliit na mga bloke ng isang nakapirming haba. Ang mga teksto ng mga bloke na ito ay naka-encrypt nang hiwalay at hiwalay sa bawat isa.

Ang mga single-key block cipher ay nahahati sa 3 pangkat:

Mga permutation cipher

Mga cipher ng pagpapalit

Mga pinagsama-samang cipher.

Kapag gumagamit ng mga permutation cipher, na idinisenyo upang alisin ang kahulugan ng isang mensahe sa pamamagitan ng pagbabago ng pagkakasunud-sunod ng paghalili ng mga simbolo nito, ang mga plaintext na character ay muling inaayos ayon sa isang tiyak na panuntunan (key) sa loob ng isang partikular na bloke. Bilang resulta nito, ang normal na pagkakasunud-sunod ng kanilang paglitaw at ang mismong kahulugan ng mensahe ng impormasyon ay nagambala. Sa kasong ito, ang isang pagkakaiba ay ginawa sa pagitan ng simple at kumplikadong permutation cipher.

Ang isang simpleng permutation cipher ay muling nagsasaayos ng isang pangkat ng mga titik ng teksto sa isang regular na paraan ayon sa napiling permutation key (panuntunan). Mayroong maraming mga halimbawa mula sa kasaysayan ng paggamit ng mga naturang cipher para sa manu-manong pag-encrypt. Sa kasong ito, ang mga espesyal na talahanayan ay madalas na ginagamit, na nagbibigay ng mga simpleng pamamaraan ng pag-encrypt (mga susi), ayon sa kung saan ang mga titik sa mensahe ay muling inayos. Ang susi para sa naturang mga talahanayan ay ang laki ng talahanayan, isang parirala na tumutukoy sa isang permutasyon o iba pang mga espesyal na tampok ng talahanayan.

Ang isang halimbawa ng pinakasimpleng permutation cipher ay ipinapakita sa Fig. 5.5.

kanin. 5.5. Ang pinakasimpleng permutation cipher.

Tulad ng makikita mula sa Fig. 5.5, upang ma-encrypt ang mensaheng "YUSTACE ALEX MEET YOUR CONNECTED MAN", ang huli ay dapat na nakasulat sa anyo ng isang talahanayan na binubuo, halimbawa, ng 5 row at 6 na column. Ang text ng mensahe ay nakasulat sa mga column, hindi kasama ang mga puwang. Kung ang huling hanay ay hindi kumpleto, ito ay random na punan ng anumang mga titik. Upang makatanggap ng isang naka-encrypt na mensahe, ang orihinal na teksto ay binabasa linya sa pamamagitan ng linya (mula kaliwa hanggang kanan) at nakasulat sa mga grupo, halimbawa, 5 digit. Huling

ang pamamaraan ay hindi nauugnay sa proseso ng pag-encrypt at ginagawa lamang upang gawing mas maginhawang isulat ang teksto na walang anumang kahulugan. Upang i-decrypt ang naturang teksto, kailangan mong malaman ang susi, lalo na ang bilang ng mga hilera at haligi sa talahanayan o, sa madaling salita, ang laki nito.

Ang isang mas praktikal na paraan ng pag-encrypt, na halos kapareho sa nauna, ay inilarawan sa ibaba. Naiiba lamang ito dahil ang mga column ng talahanayan ay muling inayos ayon sa isang keyword, parirala o hanay ng mga numero sa haba ng isang linya ng talahanayan.

Kapag nag-e-encrypt sa pamamagitan ng simpleng permutation, ang ciphertext ay isinusulat sa sunud-sunod na mga linya sa ilalim ng mga simbolo ng keyword, na hindi dapat ulitin Upang gawing simple ang pag-alala sa susi, isang keyword ang ginagamit, ang mga titik na binibilang sa pagkakasunud-sunod ng kanilang lokasyon. ang alpabeto, itakda ang permutation rule. Ang ciphertext ay isinulat sa mga hanay sa pagkakasunud-sunod kung saan ang mga titik ng susi ay matatagpuan sa alpabeto o sa pagkakasunud-sunod ng mga numero sa isang natural na serye, kung ang susi ay digital. Ang proseso ng pag-encrypt gamit ang isang simpleng permutation cipher ay inilalarawan sa Fig. 5.6. Ipagpalagay na kailangan mong i-encrypt ang isang mensahe ng impormasyon



"ANG PAGTULONG AY GAGAWIN BUKAS JUSTACE."

Upang i-encrypt ang plaintext na ito, isusulat namin ito nang walang mga puwang (ang paglahok ng huli sa pamamaraan ng pag-encrypt, dahil sa kanilang mataas na dalas ng pag-uulit, ay makabuluhang nagpapahina sa lakas ng cryptographic ng cipher) at pumili ng isang encryption key, halimbawa, 245 136 Ayon sa key na ito, na binubuo ng 6 na numero, hahatiin namin ang lahat ng mensahe ng impormasyon sa mga bloke, bawat isa ay naglalaman ng 6 na titik ng teksto. Pagkatapos hatiin sa mga bloke, nakakuha kami ng 4 na bloke na naglalaman ng 6 na letra bawat isa, at 1 bloke na naglalaman ng 5 letra. Sa ganitong mga kaso, ang huling pangkat ng mga titik ng orihinal na mensahe ay random na pupunan ng iba't ibang mga character hanggang sa isang kumpletong bloke ay nakuha. Sa aming kaso, isang titik lamang ang nawawala, kaya pumili kami ng anumang titik, halimbawa Ъ, at idagdag ito sa dulo ng ikalimang bloke.

kanin. 5.6. Simpleng permutation cipher

Susunod, gamit ang key 245 136, ang mga titik ng orihinal na plaintext ay muling inayos. Halimbawa, ang unang digit ng key ay 2, na nagpapahiwatig na sa bagong block ang unang titik ng ciphertext ay ang pangalawang titik ng plaintext block, ang pangalawang digit ng key ay 4, na nagpapahiwatig na ang pangalawang titik ng Ang ciphertext ay ang ikaapat na letra sa plaintext block, atbp. d.

Sa huli, pagkatapos ng mga permutasyon sa lahat ng mga bloke, nakakakuha kami ng ciphertext. Sa pagbabasa nito, makikita natin na ito ay ganap na wala ng anumang semantikong nilalaman.

Upang gawing mas madaling matandaan ang susi, karaniwang ginagamit ang isang keyword. Sa kasong ito, ito ay ang salitang "ROOT". Sa loob nito, ang numero 1 ng susi ay tumutugma sa titik E, dahil ito ang una sa lahat ng mga titik ng salitang ito na matatagpuan sa aming alpabeto, numero 2 - ang titik K (para sa parehong dahilan), atbp.

Ang parehong mensahe ay maaaring i-encrypt gamit ang isang talahanayan na binubuo ng, halimbawa, 5 row at 6 na column (ang haba ng keyword). Ang pinagmulang teksto ay nakasulat sa mga hanay at bumubuo ng isang talahanayan (Larawan 5.7). Tinutukoy ng keyword ang isang panuntunan para sa muling pagsasaayos ng mga column. Kung lumilitaw ang parehong mga titik sa isang keyword, binibilang ang mga ito sa pagkakasunud-sunod mula kaliwa hanggang kanan. Ang nagresultang pangalawang ciphertext, tulad ng makikita mula sa Fig. Ang 5.7 ay ganap na naiiba mula sa una.

kanin. 5.7. Pag-encrypt gamit ang isang talahanayan

Ang pangunahing kawalan ng cipher na ito ay ang mababang lakas ng cryptographic. Sa pamamagitan ng pag-factor ng ciphertext (walang maraming opsyon), madali mong matutukoy ang malamang na haba ng codeword na ginamit sa panahon ng pag-encrypt.

Upang mapataas ang lakas ng cryptographic ng ciphertext na nakuha sa itaas, maaari mong subukang i-encrypt itong muli. Ang paraan ng pag-encrypt na ito ay kilala bilang double permutation. Ang kakanyahan ng pamamaraang ito ay ang mga sumusunod. Ang tekstong nakuha pagkatapos ng unang pag-encrypt ay na-encrypt sa pangalawang pagkakataon gamit ang isang talahanayan na may ibang dimensyon (ang mga haba ng mga row at column ay pinipili nang iba). Bilang karagdagan, maaari mong muling ayusin ang mga row sa isang table at column sa isa pa. Maaari mong punan ang talahanayan ng pinagmulang teksto sa iba't ibang paraan: zigzag, snake, spiral, atbp.

Ang isang simpleng permutation cipher gamit ang mga katangian ng talahanayan na tinatawag na magic squares (Figure 5.8) ay ginamit mula noong Middle Ages. Ang mga magic square ay mga equilateral table, ang lahat ng mga cell nito ay puno ng mga natural na numero, simula sa 1. Bukod dito, ang mga numerong ito sa kabuuan ay nagbibigay ng parehong numero para sa bawat column, bawat hilera at mga diagonal ng magic square (sa aming kaso, ito ay bilang 34). Source text - NAGHIHINTAY NA MAKILALA SI YUSTACE, kapag pinupunan ang magic square, ito ay ipinasok sa pagkakasunud-sunod ng mga natural na numero, halimbawa, ang numero 1 ay pinalitan ng 1 titik ng pinagmulang teksto (F), ang numero 12 - 12 ng ang titik ng mensahe (C), atbp. Pagkatapos isulat ang plaintext, ang mga nilalaman ng talahanayan ay binabasa ng linya sa linya, na nagreresulta sa isang ciphertext na may permutation ng mga titik.

kanin. 5.8. Magic square

Ang Aatbash, Scital cipher, Cardano lattice ay mga kilalang paraan upang itago ang impormasyon mula sa mga mapanlinlang na mata. Sa klasikal na kahulugan, ang permutation cipher ay isang anagram. Ang kakanyahan nito ay nakasalalay sa katotohanan na ang mga titik ng plaintext ay nagbabago ng mga posisyon ayon sa isang tiyak na panuntunan. Sa madaling salita, ang cipher key ay upang baguhin ang pagkakasunud-sunod ng mga character sa bukas na mensahe. Gayunpaman, ang pag-asa ng susi sa haba ng naka-encrypt na teksto ay lumikha ng maraming abala para sa paggamit ng ganitong uri ng cipher. Ngunit ang mga matalinong ulo ay nakahanap ng kawili-wili, tusong mga solusyon na inilarawan sa artikulo.

Baliktad na mga grupo

Upang maging pamilyar sa pag-encrypt gamit ang paraan ng permutation, babanggitin namin ang isa sa mga pinakasimpleng halimbawa. Binubuo ang algorithm nito ng paghahati ng isang mensahe sa n bloke, na pagkatapos ay ibabalik at ipinagpalit. Tingnan natin ang isang halimbawa.

  • "Ang araw ay lumilipas, at ang hangin ay madilim sa kalangitan."

Hatiin natin ang mensaheng ito sa mga grupo. Sa kasong ito n = 6.

  • "Denukh odili nebav ozd uhtemny."

Ngayon palawakin natin ang mga grupo, isulat ang bawat isa mula sa dulo.

  • "hunned vaben dzo methu yyn."

Ayusin natin ang mga ito sa isang tiyak na paraan.

  • "ilido methu yyn huned vaben dzo."

Sa isang ignorante na tao, sa ganitong porma ang mensahe ay walang iba kundi basura. Ngunit, siyempre, ang isa kung kanino ang mensahe ay natugunan ang namamahala sa algorithm ng decryption.

Gitnang insert

Ang algorithm para sa pag-encrypt na ito ay medyo mas kumplikado kaysa sa permutation:

  1. Hatiin ang mensahe sa mga pangkat na may pantay na bilang ng mga character.
  2. Maglagay ng karagdagang mga titik sa gitna ng bawat pangkat.

Tingnan natin ang isang halimbawa.

    "Pinakay niya ang mga nilalang sa lupa upang matulog."

    "Zemn yetv ariu vodi lkosnu."

    "Zeamn yeabtv araiu voabdi lkoasnu."

Sa kasong ito, ang mga alternating titik na "a" at "ab" ay ipinasok sa gitna ng mga grupo. Ang mga pagsingit ay maaaring iba, sa iba't ibang dami at hindi paulit-ulit. Bilang karagdagan, maaari mong palawakin ang bawat pangkat, i-shuffle ang mga ito, atbp.

Cipher code na "Sandwich"

Isa pang masaya at simpleng halimbawa ng permutation encryption. Upang magamit ito, kailangan mong hatiin ang plaintext sa 2 halves at isulat ang isa sa mga ito ng character sa pagitan ng mga titik ng isa pa. Ipakita natin ito sa isang halimbawa.

  • "Mula sa kanilang mga gawain; ako lamang ang nag-iisa, walang tirahan."

Hatiin sa mga halves na may pantay na bilang ng mga titik.

  • "Ako lang ang walang tirahan sa kanilang trabaho."

Ngayon isulat natin ang unang kalahati ng mensahe na may malaking espasyo sa pagitan ng mga titik.

  • "Tungkol sa t ikh t u d o v l i s h ."

At sa mga puwang na ito ay ilalagay namin ang mga titik ng ikalawang kalahati.

  • "Oyatoidhinnrbuedzodvolminshy."

Panghuli, pangkatin natin ang mga titik sa isang uri ng mga salita (opsyonal na operasyon).

  • "Oyatoi dhi tnrbue dzodvol minshyy."

Napakadaling i-encrypt ang teksto gamit ang paraang ito. Ang magreresultang linya ng katarantaduhan ay kailangang tumagal ng ilang oras para malutas ang hindi pa nakakaalam.

Mga muling pagsasaayos sa "ruta"

Ang pangalang ito ay ibinigay sa mga cipher na malawakang ginagamit noong sinaunang panahon. Ang ruta sa kanilang pagtatayo ay ilang geometric na pigura. Ang plaintext ay isinulat sa isang figure ayon sa isang tiyak na pattern, at nakuha ayon sa kabaligtaran nito. Halimbawa, ang isang pagpipilian ay maaaring magsulat ng plaintext sa isang talahanayan gamit ang scheme: ang isang ahas ay gumagapang nang pakanan sa mga cell, at isang naka-encrypt na mensahe ay binubuo sa pamamagitan ng pagsulat ng mga column sa isang row, mula sa una hanggang sa huli. Ito rin ay permutation encryption.

Ipakita natin sa isang halimbawa kung paano i-encrypt ang teksto. Subukang tukuyin ang ruta ng pag-record at ang ruta ng pag-encrypt sa iyong sarili.

    "Naghahanda akong tiisin ang digmaan."

Isusulat namin ang mensahe sa isang talahanayan na may sukat na 3x9 na mga cell. Ang laki ng talahanayan ay maaaring matukoy batay sa haba ng mensahe, o ang ilang nakapirming talahanayan ay maaaring gamitin nang maraming beses.

Bubuo kami ng code simula sa kanang sulok sa itaas ng talahanayan.

  • "Launlvosoyatovvygidtaerprzh."

Ang pagbabalik sa mga hakbang na inilarawan ay hindi mahirap. Ito ay sapat na gawin lamang ang kabaligtaran. Ang pamamaraang ito ay lubos na maginhawa dahil ginagawa nitong madaling matandaan ang pamamaraan ng pag-encrypt at pag-decryption. Ito ay kawili-wili din dahil ang anumang hugis ay maaaring gamitin para sa isang cipher. Halimbawa, isang spiral.

Mga vertical na permutasyon

Ang ganitong uri ng cipher ay isa ring variant ng route permutation. Ito ay kawili-wili lalo na dahil sa pagkakaroon ng isang susi. Ang pamamaraang ito ay laganap sa nakaraan at gumamit din ng mga talahanayan para sa pag-encrypt. Ang mensahe ay nakasulat sa talahanayan sa karaniwang paraan - mula sa itaas hanggang sa ibaba, at ang ciphergram ay nakasulat nang patayo, habang pinapanatili ang pagkakasunud-sunod na tinukoy ng susi o password. Tingnan natin ang isang halimbawa ng naturang pag-encrypt.

    "Parehong may masakit na landas at may habag"

Gumagamit kami ng talahanayan na may mga sukat na 4x8 na mga cell at isulat ang aming mensahe dito sa karaniwang paraan. At para sa pag-encrypt ginagamit namin ang susi na 85241673.

Ngayon, gamit ang susi bilang indikasyon ng pagkakasunud-sunod, isulat natin ang mga hanay sa isang linya.

  • "Gusetmsntmayapoysaotmserinid."

Mahalagang tandaan na sa pamamaraang ito ng pag-encrypt, ang mga walang laman na cell sa talahanayan ay hindi dapat punan ng mga random na titik o simbolo, umaasa na ito ay magpapalubha sa ciphergram. Sa katunayan, sa kabaligtaran, ang gayong pagkilos ay magbibigay ng pahiwatig sa mga kaaway. Dahil ang haba ng key ay magiging katumbas ng isa sa mga divisors ng haba ng mensahe.

Baliktarin ang pag-decode ng vertical permutation

Ang vertical permutation ay kawili-wili dahil ang pag-decryption ng isang mensahe ay hindi lamang pagsunod sa isang algorithm sa kabaligtaran. Alam ng sinumang nakakaalam ng susi kung gaano karaming mga column ang nasa talahanayan. Upang i-decrypt ang isang mensahe, kailangan mong matukoy ang bilang ng mahaba at maikling linya sa talahanayan. Ito ay magbibigay-daan sa iyo upang matukoy kung saan magsisimulang isulat ang ciphergram sa talahanayan upang mabasa ang plaintext. Upang gawin ito, hatiin ang haba ng mensahe sa haba ng susi at makakuha ng 30/8=3 at 6 bilang natitira.

Kaya, nalaman namin na ang talahanayan ay may 6 na mahabang hanay at 2 maikli, hindi ganap na puno ng mga titik. Sa pagtingin sa susi, nakita namin na nagsimula ang pag-encrypt sa ika-5 haligi at dapat itong mahaba. Kaya nalaman namin na ang unang 4 na titik ng ciphergram ay tumutugma sa ikalimang hanay ng talahanayan. Ngayon ay maaari mong isulat ang lahat ng mga titik sa kanilang mga lugar at basahin ang lihim na mensahe.

Ang uri na ito ay kabilang sa tinatawag na stencil ciphers, ngunit sa core nito ay ang pag-encrypt sa pamamagitan ng paraan ng permutation ng simbolo. Ang susi ay isang stencil sa hugis ng isang mesa na may mga butas na pinutol. Sa katunayan, ang stencil ay maaaring maging anumang hugis, ngunit kadalasan ay ginagamit ang isang parisukat o mesa.

Ang Cardano stencil ay ginawa ayon sa sumusunod na prinsipyo: ang mga cut cell, kapag pinaikot 90°, ay hindi dapat magkapatong sa isa't isa. Iyon ay, pagkatapos ng 4 na pag-ikot ng stencil sa paligid ng axis nito, ang mga puwang sa loob nito ay hindi dapat magkasabay kahit isang beses.

Gumamit tayo ng isang simpleng Cardano lattice bilang isang halimbawa (sa figure sa ibaba).

Gamit ang stencil na ito, ie-encrypt namin ang pariralang "O Muses, sasagutin kita ng isang apela."

- TUNGKOL SA - M - -
U
Z Y
SA
SA A
M

Pinupuno namin ang mga cell ng stencil ng mga titik ayon sa panuntunan: una mula sa kanan hanggang kaliwa, at pagkatapos ay mula sa itaas hanggang sa ibaba. Kapag naubos na ang mga cell, paikutin ang stencil 90° clockwise. Sa ganitong paraan makuha namin ang sumusunod na talahanayan.

At ang huling pagliko.

- - M - - -

Pagkatapos pagsamahin ang 4 na talahanayan sa isa, makukuha namin ang huling naka-encrypt na mensahe.

ako TUNGKOL SA M M G SA
SA TUNGKOL SA U B TUNGKOL SA R
G Z A Z SCH Y
SA G SA G A U
G SA G N G A
M SA b b E G

Bagama't maaaring manatiling pareho ang mensahe, magiging mas maginhawang makatanggap ng mukhang pamilyar na ciphergram para sa paghahatid. Upang gawin ito, maaari mong punan ang mga walang laman na cell ng mga random na titik at isulat ang mga column sa isang linya:

  • "YAVGVGM OOZGVS MUAKG MBZGN GOSCHAGE SRYUAG"

Upang ma-decrypt ang mensaheng ito, ang tatanggap ay dapat magkaroon ng eksaktong kopya ng stencil na ginamit para sa pag-encrypt. Ang cipher na ito ay itinuturing na medyo matatag sa loob ng mahabang panahon. Mayroon din itong maraming mga pagkakaiba-iba. Halimbawa, gamit ang 4 na grid ng Cardano nang sabay-sabay, ang bawat isa ay umiikot sa sarili nitong paraan.

Pagsusuri ng permutation ciphers

Ang lahat ng permutation cipher ay mahina sa pagsusuri ng dalas. Lalo na sa mga kaso kung saan ang haba ng mensahe ay maihahambing sa haba ng key. At ang katotohanang ito ay hindi mababago sa pamamagitan ng paulit-ulit na paggamit ng mga permutasyon, gaano man sila kakomplikado. Samakatuwid, sa cryptography, tanging ang mga cipher na gumagamit ng ilang mga mekanismo nang sabay-sabay, bilang karagdagan sa permutation, ay maaaring maging matatag.

Ang simpleng keyless permutation ay isa sa pinakasimpleng paraan ng pag-encrypt. Ang mga titik ay halo-halong ayon sa ilang mga patakaran, ngunit ang mga patakarang ito ay maaaring magkaiba - parehong simple at kumplikado.

Transposisyon

Sabihin nating mayroon tayong parirala: "PWEDE, PERO HINDI". At gusto naming i-encrypt ito. Ang pinakamadaling paraan ay isulat ang buong parirala pabalik: "SIYA AY MABUTI, ONJOM". Maaari mong iwanan ang pagkakasunud-sunod ng mga salita sa pangungusap bilang orihinal, ngunit isulat ang bawat salita pabalik: "ONJOM, MABUTI SIYA". O maaari kang magpalit ng mga lugar sa bawat dalawang titik: "OMNZH,UNENLYAZ". Ito ay tinatawag na "transposition" o simpleng rearrangement sa pinakadalisay nitong anyo.

Transpose

Ang cipher na ito ay gumagamit ng talahanayan. Ang mensahe ay nakasulat sa talahanayan sa mga hilera at binabasa sa mga hanay upang mabuo ang ciphertext. Well, o vice versa - ito ay nakasulat sa mga haligi at basahin sa mga hilera. Tila ibinabalik natin ang mesa nang may paggalang sa dayagonal nito, na dumadaan sa kaliwang itaas at kanang ibabang sulok. Tinatawag ng mga mathematician ang pamamaraang ito ng pag-reverse ng table transposition.

Upang mag-encrypt, kailangan mong gumuhit ng isang talahanayan ng isang angkop na laki, ilagay ang naka-encrypt na teksto doon nang linya sa linya, at pagkatapos ay isulat ito sa mga hanay sa isang linya. Upang i-decrypt, kailangan mo lamang ibigay ang encryption key sa anyo ng laki ng talahanayan. Ang larawan sa ibaba ay mula sa ABCDEFGHIJKL ito pala ADGJBEHKCFIL. Sumang-ayon, halos imposibleng maunawaan nang walang larawan na ito ay isang alpabeto.

Kaya, halimbawa, kailangan nating i-encrypt ang teksto "Nagtayo ako ng isang monumento para sa aking sarili, na hindi ginawa ng mga kamay; . Mayroon itong 72 character. Ang 72 ay isang maginhawang numero, ito ay nahahati sa 2,4,6,8,12,18,24,36, kaya maaari mong gamitin ang mga talahanayan 2x36, 3x24, 4x18, 6x12, 8x9, 9x8, 12x6, 18x4, 24x3, 36x :) Nagpasya kami sa susi (laki ng talahanayan), ilagay ang teksto sa mga hilera, at pagkatapos ay muling isulat ito sa mga hanay.

Ang larawan sa itaas ay nagpapakita ng mga opsyon na may mga talahanayan na 9x8, 8x9, 4x18 at 18x4. Para sa ikatlong opsyon (talahanayan 4×18) makukuha mo ang sumusunod na teksto:

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

Sa kasong ito, kinuha ko ang text na "as is," ibig sabihin, may mga puwang sa pagitan ng mga salita at mga bantas. Ngunit kung makabuluhan ang teksto, maaaring hindi gumamit ng mga bantas at mga puwang sa pagitan ng mga salita.

Bakod

Ang isang pinasimpleng bersyon ng transposisyon (na may dalawang linyang talahanayan) ay "picket fence". "Sa disenyo," ito ay kahawig ng isang checkerboard na bakod.

Ito ay isang napaka-simpleng paraan ng pag-encrypt, kadalasang ginagamit ng mga mag-aaral. Ang parirala ay nakasulat sa dalawang linya: ang mga kakaibang titik ay nakasulat sa itaas, kahit na mga titik sa ibaba. Pagkatapos ay kailangan mong isulat ang tuktok na linya sa isang hilera, pagkatapos ay ang ibaba. Ang pag-encrypt na ito ay madaling gawin sa iyong ulo, nang hindi muna nagsusulat ng dalawang linya.

"Nagtayo ako ng monumento para sa sarili ko, hindi gawa ng mga kamay" ay nagiging "YAYANKEEODINRKTONY PMTISBVZVGEUOVRY."

Skitala

Nabatid na noong ika-5 siglo BC, ang mga pinuno ng Sparta, ang pinaka-mahilig makipagdigma sa mga estadong Griyego, ay may isang mahusay na binuo na sistema ng mga lihim na komunikasyong militar at na-encrypt ang kanilang mga mensahe gamit ang "skalta," ang unang simpleng cryptographic device na ipinatupad. ang paraan ng simpleng permutasyon.

Ang pag-encrypt ay isinagawa bilang mga sumusunod. Ang isang strip ng parchment ay nasugatan sa isang spiral (turn to turn) sa isang cylindrical rod, na tinatawag na "skitala," at ilang linya ng text message ang nakasulat dito kasama ang rod. Pagkatapos ay tinanggal mula sa pamalo ang isang strip ng pergamino na may nakasulat na teksto. Ang mga titik sa strip na ito ay naging magulo. Upang maibalik ang teksto, kinakailangan ang isang wanderer ng parehong diameter.

Sa esensya, ang scytale ay ang aming ordinaryong flat table na nakabalot sa isang silindro.

Ito ay pinaniniwalaan na ang may-akda ng paraan ng pagsira sa cipher ng taong gumagala ay si Aristotle, na nagtakip ng tape sa isang hugis-kono na stick hanggang sa lumitaw ang mga nababasang piraso ng teksto. Sa una, ang sinaunang aparato ay ginamit upang mag-imbak ng mga lihim na recipe. Ngayon, sa halip na isang makitid na guhit ng pergamino, maaari mong gamitin ang serpentine, at ang papel ng gumagala ay gagampanan ng isang lapis.

Paglipat

Ang isang katulad na resulta ay maaaring makuha kung ang mga titik ng mensahe ay isinulat sa pamamagitan ng isang tiyak na bilang ng mga posisyon hanggang sa maubos ang lahat ng teksto. Nasa ibaba ang isang halimbawa ng natapos na puzzle na pinagsama-sama ayon sa mga panuntunang ito. Ang “three fraction four” ay isang pahiwatig na tatlong salita ang naka-encrypt, kailangan mong basahin ang bawat ikaapat na titik (4-8-12-16-..), kapag naabot mo ang dulo, bumalik sa simula na may shift na 1 sulat sa kaliwa (3-7- 11-15-..), atbp. Ang larawan sa ibaba ay nagsasabing "Pumunta sa itinalagang ruta."

Single permutation sa pamamagitan ng key

Ang isang mas praktikal na paraan ng pag-encrypt na tinatawag na single key permutation ay halos kapareho sa nauna. Naiiba lamang ito dahil hindi inililipat ang mga column ng talahanayan, ngunit muling inayos ayon sa isang keyword, parirala o hanay ng mga numero ang haba ng linya ng talahanayan. Ang naka-code na parirala ay isinulat sa isang angkop na talahanayan sa bawat linya. Pagkatapos ay isang walang laman na linya ang ipinapasok sa itaas ng talahanayan at isang keyword/parirala/sequence ng mga numero ang ipinasok dito. Ang keyword/parirala/sequence na ito ay pinagsunod-sunod ayon sa alpabeto/kahulugan at ang mga column ay pinagsunod-sunod kasama nito, sa gayon ay binabasa ang buong talahanayan. Ang naka-encrypt na parirala ay isinusulat nang hilera mula sa na-shuffle na talahanayang ito.

Halimbawa, maaari kang gumawa ng puzzle batay sa Sudoku. Ang solver ay binibigyan ng tekstong “-UROMKULO BUYOZEBYADL NZYATLYA TSBADNEPU EMMDNITOYO ICHTYUKNOO UNYYVYCHOS HIEPOTODTs PRMGOUIK-” at hinihiling na lutasin ang isang Sudoku kung saan ang isa sa mga linya ay minarkahan.

Kakailanganin mong lutasin ang puzzle na ito tulad nito: kailangan mo munang isulat ang teksto sa isang 9x9 na talahanayan, pagkatapos ay lutasin ang Sudoku, gumuhit ng isang walang laman na 9x9 na talahanayan, magsulat ng isang pangunahing linya mula sa minarkahang linya sa itaas nito, at pagkatapos ay ipasok ang mga haligi sa talahanayan sa ilalim ng mga numero ayon sa kanilang mga serial number sa orihinal na talahanayan.

Para sa mga bata, maaari mong gamitin ang parehong paraan, ngunit mas simple, kahit na walang mga numero, at agad na gumuhit ng pagkakasunud-sunod ng permutasyon sa anyo ng mga landas.

Dobleng permutasyon

Para sa karagdagang seguridad, maaari mong muling i-encrypt ang isang mensahe na na-encrypt na. Ang pamamaraang ito ay kilala bilang "double permutation". Upang gawin ito, ang laki ng pangalawang talahanayan ay pinili upang ang mga haba ng mga hilera at haligi nito ay hindi pareho sa unang talahanayan. Ito ay pinakamahusay kung sila ay medyo prime. Bilang karagdagan, ang mga haligi sa unang talahanayan ay maaaring muling ayusin, at ang mga hilera sa pangalawang talahanayan ay maaaring muling ayusin.

Pag-aayos ng ruta

Ang karaniwang transposisyon ng isang talahanayan (punan ang mga hilera, basahin sa mga haligi) ay maaaring kumplikado at hindi basahin ng mga haligi, ngunit sa isang ahas, zigzag, spiral o iba pang paraan, i.e. magtakda ng ruta ng pagtawid sa talahanayan. Ang ganitong mga pamamaraan ng pagpuno sa talahanayan, kung hindi nila pinapataas ang lakas ng cipher, pagkatapos ay gawing mas nakakaaliw ang proseso ng pag-encrypt. Totoo, ang proseso ng pag-decryption ay nagiging mas kumplikado, lalo na kung ang ruta ay hindi alam at kailangan pa ring malaman.

Sa figure sa itaas, ang pagkakasunud-sunod ng mga character na "ABVGDEYEZHZIYKLMNOPRSTTUFHTSCHSHSHHCHYYYYUYA.,?" nagpasok ng linya sa linya sa isang 6x6 na talahanayan at pagkatapos ay basahin sa kahabaan ng ruta na ipinahiwatig ng mga linya. Ang mga sumusunod na pag-encrypt ay nakuha:

    AYOLSCHEBZHMTSHYUVZNUSHYAGIOF.DYPKHY, EKRTS?

    AYOLSCHEYUYA,

    ABELZHVGZMSCHTNIDEYOUSHEYUSHFPKRHYA.YTS,?

    AYOLSCHEYUSHTMZHBVZNUSHYA.ЪFOIGDYPKHY,?BTsRKE

    NZVBAYOZHMLSTSHCHEYASCHUF.,?YHTSRPYKEDGIO

At narito kailangan mong lumibot sa mesa "na may paglipat ng isang kabalyero", at ang ruta ay iginuhit na, kaya ito ay para lamang sa mga maliliit :)

Ngunit kung ipapakita mo ang puzzle na ito tulad ng ipinapakita sa ibaba, kung gayon hindi ito magiging madali, dahil maaaring maraming mga pagpipilian para sa paglipat sa paligid ng kabalyero, at kakailanganin mong hanapin ang tanging tama mula sa lahat ng mga pagpipiliang ito.

Naka-encrypt na "Pushkin. Ang Tansong Mangangabayo."

Permutation "Magic Square"

Ang mga magic (o magic) na parisukat ay mga parisukat na talahanayan na may magkakasunod na natural na mga numero mula 1 hanggang n 2 (kung saan ang n ay ang dimensyon ng parisukat) na nakasulat sa kanilang mga cell, na nagdaragdag ng hanggang sa parehong numero para sa bawat column, bawat hilera at bawat dayagonal.

Sa parisukat ng Lo-Shu ng ikatlong pagkakasunud-sunod (3×3), na kilala noong Sinaunang Tsina, ang parisukat na pare-parehong 15 ay inuulit ng 8 beses:

    kasama ang tatlong pahalang na linya: 2+9+4 = 7+5+3 = 6+1+8 = 15

    kasama ang tatlong vertical: 2+7+6 = 9+5+1 = 4+3+8 = 15

    kasama ang dalawang dayagonal: 2+5+8 = 4+5+6 = 15

Sa pamamagitan ng paraan, ang pare-pareho ng isang kakaibang parisukat ay madaling kalkulahin sa pamamagitan ng pagpaparami ng average na bilang ng serye kung saan ang parisukat ay ginawa sa pamamagitan ng pagkakasunud-sunod ng parisukat. Para sa isang 3rd order square (3×3) ang constant ay 1234 5 6789 *3=15.

Susunod, upang ma-encrypt ang isang mensahe, kailangan mo munang pumili o bumuo ng isang magic square ng angkop na laki, pagkatapos ay gumuhit ng isang walang laman na talahanayan ng parehong laki, at ipasok ang mga titik ng teksto nang paisa-isa sa talahanayan alinsunod sa mga numero sa magic square. Pagkatapos ay isusulat lang namin ang mga titik mula sa talahanayan na linya sa linya sa isang mahabang linya. Ang pagkakasunud-sunod ng parisukat ay dapat na katumbas ng ugat ng haba ng naka-encrypt na string, na bilugan, upang ang string ay ganap na maisama sa parisukat. Kung ang linya ay mas maikli, ang natitira ay maaaring punan ng mga arbitrary na titik o numero.

Sa unang tingin, parang kakaunti lang ang magic squares. Gayunpaman, mabilis na tumataas ang kanilang bilang habang lumalaki ang laki ng parisukat. Kaya, mayroon lamang isang magic square na may sukat na 3x3, kung hindi mo isinasaalang-alang ang mga pag-ikot at pagmuni-muni nito. Ang bilang ng mga magic square ng ika-4 na order ay binibilang na sa daan-daan, sa ika-5 - sa daan-daang libo. Samakatuwid, ang malalaking magic square ay maaaring maging isang magandang batayan para sa isang maaasahang sistema ng pag-encrypt noong panahong iyon, dahil ang manu-manong enumeration ng lahat ng mga pangunahing opsyon para sa cipher na ito ay hindi maiisip.

Mayroong isang napaka-simpleng paraan para sa pagbuo ng mga kakaibang magic square, i.e. mga sukat 3x3, 5x5, 7x7, atbp. Ito ang "terrace" o "pyramid" na paraan.

Ang isang parisukat ng kinakailangang laki ay iginuhit at ang mga stepped na "terraces" ay idinagdag dito (ipinahiwatig ng isang tuldok na linya). Susunod, kasama ang mga diagonal mula sa itaas hanggang sa ibaba hanggang sa kanan, ang parisukat ay puno ng sunud-sunod na mga numero. Pagkatapos nito, ang "mga terrace" ay inilipat sa loob ng parisukat: ang mga kanan - sa kaliwa, ang mga kaliwa - sa kanan, ang mga nasa itaas - pababa, at ang mga mas mababa - pataas. Isa pala itong magic square!

Batay sa pamamaraang ito, maaari kang lumikha ng iba't ibang mga puzzle. Kung gagamitin mo ang pamamaraan nang direkta, makakakuha ka ng isang palaisipan tulad nito:

Upang malutas ang puzzle na ito, kailangan mong ilipat ang mga titik mula sa "mga terrace" sa isang parisukat, pagkatapos ay ang buong mensahe ay mababasa sa parisukat. Naka-encrypt dito ang pariralang "May ambush sa likod ng tulay, hindi ka makadaan, tumawid sa ilog patungo sa isang tawiran."

At kung gagamitin mo ang pamamaraan sa kabaligtaran, mapupunta ka sa isang palaisipan na tulad nito.

Upang malutas ito, kailangan mong bunutin ang kaukulang mga titik mula sa parisukat sa "mga terrace".

Para sa mga parisukat na 4x4, 6x6, atbp. Walang ganoong simpleng paraan upang i-compile ang mga ito, kaya mas madaling gumamit ng mga handa na. Halimbawa, ang Durer square.