Proteksyon ng cryptographic na impormasyon ni Alexander Prokhorov. Symmetric at asymmetric encryption. Pagsusuri ng algorithm para sa pagpapadala ng naka-encrypt na data sa pagitan ng mga server

Symmetric cryptosystems

Symmetric cryptosystems (din symmetric encryption, symmetric ciphers) ay isang paraan ng pag-encrypt kung saan pareho ang cryptographic na susi. Bago ang pag-imbento ng asymmetric encryption scheme, ang tanging paraan na umiral ay simetriko encryption. Ang algorithm key ay dapat na itago ng parehong partido. Ang algorithm key ay pinili ng mga partido bago magsimula ang pagpapalitan ng mga mensahe.

Sa kasalukuyan, ang mga simetriko cipher ay:

1. I-block ang mga cipher - proseso ng impormasyon sa mga bloke ng isang tiyak na haba (karaniwan ay 64, 128 bits), paglalapat ng isang susi sa bloke sa sa inireseta na paraan, kadalasan sa pamamagitan ng ilang mga cycle ng shuffling at substitution, na tinatawag na rounds. Ang resulta ng paulit-ulit na pag-ikot ay isang avalanche effect - isang pagtaas ng pagkawala ng bit correspondence sa pagitan ng mga bloke ng bukas at naka-encrypt na data.

2. Mga stream cipher - kung saan ang pag-encrypt ay isinasagawa sa bawat bit o byte ng orihinal (plain) na teksto gamit ang gamma. Ang isang stream cipher ay madaling malikha batay sa isang block cipher (halimbawa, GOST 28147-89 sa gamma mode), na inilunsad sa isang espesyal na mode.

Public key cryptographic system

Ang pampublikong key cryptographic system (o Asymmetric encryption, Asymmetric cipher) ay isang sistema ng pag-encrypt ng impormasyon kung saan ang susi kung saan naka-encrypt ang mensahe at ang naka-encrypt na mensahe mismo ay ipinapadala sa isang bukas (iyon ay, hindi protektado, napapansin) na channel. Upang buuin ang pampublikong key at basahin ang naka-encrypt na mensahe, ginagamit ng tatanggap lihim na susi. Ang mga pampublikong key cryptographic system ay kasalukuyang malawakang ginagamit sa iba't-ibang mga protocol ng network, lalo na sa SSL protocol at mga protocol batay dito antas ng aplikasyon HTTPS, SSH, atbp.

kanin. 7.

1. Ang tatanggap ay bumubuo ng isang susi. Ang susi ay nahahati sa isang bukas at saradong bahagi. Kasabay nito pampublikong susi hindi dapat ipasa bukas na channel. O ang pagiging tunay nito ay dapat na ginagarantiyahan ng ilang nagpapatunay na awtoridad.

2. Ini-encrypt ng nagpadala ang mensahe gamit ang pampublikong key.

3. Ide-decrypt ng tatanggap ang mensahe gamit ang pribadong key.

Kakulangan ng pamamaraan: Kahit na ang mensahe ay ligtas na naka-encrypt, ang tatanggap at ang nagpadala ay nalantad sa mismong katotohanan ng pagpapadala ng isang naka-encrypt na mensahe.

Pangkalahatang ideya sistema ng cryptographic gamit ang isang pampublikong susi ay ang paggamit, kapag nag-encrypt ng isang mensahe, tulad ng isang function mula sa pampublikong susi at ang mensahe (cipher-function), na kung saan ay algorithmically napakahirap i-reverse, iyon ay, upang kalkulahin ang argument nito mula sa halaga ng function. , kahit na alam ang halaga ng susi.

Mga Tampok ng System

Advantage A simetriko cipher Ang bentahe ng simetriko cipher ay hindi na kailangang magpadala ng isang lihim na susi. Ang partido na nagnanais na makatanggap ng mga ciphertext, alinsunod sa ginamit na algorithm, ay bumubuo ng isang pares na “public key - pribadong susi" Ang mga pangunahing halaga ay nauugnay, ngunit ang pagkalkula ng isang halaga mula sa isa pa ay dapat na imposible mula sa isang praktikal na punto ng view. Ang pampublikong susi ay na-publish sa bukas na mga direktoryo at ginagamit upang i-encrypt ang impormasyon ng katapat. Ang pribadong key ay pinananatiling lihim at ginagamit upang i-decrypt ang mensaheng ipinadala sa may-ari ng key pair. Ang mga asymmetric cipher ay pinasimunuan noong 1976 nina Whitfield Diffie at Martin Hellman, New Directions in modernong cryptography" Iminungkahi nila ang isang shared secret key exchange system batay sa discrete logarithm problem. Sa pangkalahatan, ang batayan ng mga kilalang asymmetric cryptosystem ay isa sa mga kumplikadong problema sa matematika, na nagpapahintulot sa pagbuo ng mga one-way na function at trap function. Halimbawa, ang Rivest-Shamir-Adelman cryptosystem ay gumagamit ng factorization problem malalaking numero, at umaasa ang Merkle-Hellman at Hoare-Rivest cryptosystems sa tinatawag na knapsack problem.

Mga kapintasan- ang mga asymmetric na cryptosystem ay nangangailangan ng mas malaking mapagkukunan ng computing. Bilang karagdagan, kinakailangan upang matiyak ang pagiging tunay (authenticity) ng mga pampublikong susi mismo, kung saan ang mga sertipiko ay karaniwang ginagamit.

Ang hybrid (o pinagsamang) cryptosystem ay isang sistema ng pag-encrypt na mayroong lahat ng mga pakinabang ng isang pampublikong key cryptosystem, ngunit wala ang pangunahing disbentaha nito - mababang bilis ng pag-encrypt.

Prinsipyo: Sinasamantala ng mga cryptographic system ang dalawang pangunahing cryptosystem: simetriko at asymmetric na cryptography. Ang mga programa tulad ng PGP at GnuPG ay binuo sa prinsipyong ito.

Pangunahing kawalan mabagal ang asymmetric cryptography dahil sa mga kumplikadong kalkulasyon na kinakailangan ng mga algorithm nito, habang simetriko kriptograpiya tradisyonal na nagpapakita ng napakatalino na bilis ng trabaho. Gayunpaman, ang mga simetriko na cryptosystem ay may isa makabuluhang sagabal-- ipinapalagay ng paggamit nito ang pagkakaroon ng isang secure na channel para sa pagpapadala ng mga key. Upang malampasan ang disbentaha na ito, gumamit sila ng mga walang simetriko na cryptosystem na gumagamit ng isang pares ng mga susi: pampubliko at pribado.

Pag-encrypt: Karamihan sa mga sistema ng pag-encrypt ay gumagana tulad ng sumusunod. Para sa isang simetriko algorithm (3DES, IDEA, AES o anumang iba pa), isang random na key ang nabuo. Ang ganitong susi ay karaniwang may sukat mula 128 hanggang 512 bits (depende sa algorithm). Ang isang simetriko algorithm ay pagkatapos ay ginagamit upang i-encrypt ang mensahe. Sa kaso ng mga block cipher, kinakailangang gumamit ng encryption mode (halimbawa, CBC), na magpapahintulot sa mensahe na ma-encrypt na may haba na mas malaki kaysa sa haba ng block. Tulad ng para sa random na key mismo, ito ay dapat na naka-encrypt gamit ang pampublikong susi ng tatanggap ng mensahe, at ito ay sa yugtong ito na ang isang pampublikong key cryptosystem (RSA o Diffie-Hellman Algorithm) ay inilapat. Dahil ang random key ay maikli, ang pag-encrypt ay tumatagal ng kaunting oras. I-encrypt ang isang hanay ng mga mensahe gamit ang asymmetric algorithm Ito ay isang computationally na mas kumplikadong gawain, kaya mas mainam na gumamit ng simetriko na pag-encrypt dito. Pagkatapos ay ipadala lamang ang naka-encrypt na mensahe simetriko algorithm, pati na rin ang kaukulang key sa naka-encrypt na form. Ang tatanggap ay unang nagde-decrypt ng susi gamit ang kanyang pribadong key, at pagkatapos ay ginagamit ang resultang key upang matanggap ang buong mensahe.

Ang isang digital signature ay nagbibigay ng:

* Pagkilala sa pinagmulan ng dokumento. Depende sa mga detalye ng kahulugan ng dokumento, maaaring pirmahan ang mga field gaya ng "may-akda", "mga pagbabagong ginawa", "time stamp", atbp.

* Proteksyon laban sa mga pagbabago sa dokumento. Anumang hindi sinasadya o sinadyang pagbabago sa dokumento (o pirma) ay magbabago sa cipher, samakatuwid, ang lagda ay magiging hindi wasto.

Posible ang mga sumusunod na banta sa digital signature:

*Maaaring subukan ng isang umaatake na gumawa ng pirma para sa isang dokumento na kanyang pinili.

*Maaaring subukan ng isang umaatake na itugma ang isang dokumento sa isang ibinigay na lagda upang ang lagda ay tumugma dito.

Kapag gumagamit ng isang malakas na pag-andar ng cipher, mahirap sa computation na gumawa ng isang pekeng dokumento na may parehong cipher bilang ang tunay. Gayunpaman, ang mga banta na ito ay maaaring matanto dahil sa mga kahinaan sa mga partikular na algorithm ng pag-cache, mga lagda, o mga error sa kanilang mga pagpapatupad. Gayunpaman, posible pa rin ang mga sumusunod na banta sa mga digital signature system:

*Ang isang umaatake na nagnakaw ng pribadong susi ay maaaring pumirma ng anumang dokumento sa ngalan ng may-ari ng susi.

*Maaaring linlangin ng isang umaatake ang may-ari na pumirma sa isang dokumento, halimbawa gamit ang isang blind signature protocol.

*Maaaring palitan ng isang umaatake ang pampublikong susi ng may-ari ng kanyang sarili, na nagpapanggap sa kanya.

Ang algorithm ay dapat na panatilihing lihim ng parehong partido. Ang algorithm ng pag-encrypt ay pinili ng mga partido bago magsimula ang pagpapalitan ng mga mensahe.

Lihim na komunikasyon batay sa isang simetriko na cryptosystem.

Symmetric cipher system ay tradisyonal na ginagamit upang ayusin ang mga lihim na komunikasyon. Ang "regular" na mga aktor ng naturang mga lihim na protocol ng komunikasyon ay ang nagpadala, ang tatanggap, at ang tagapamagitan na nagbibigay sa mga user ng mga susi. Upang isaalang-alang ang mga isyu sa seguridad ng impormasyon, dapat kang magdagdag ng "hindi regular" na mga kalahok sa listahang ito: isang pasibo at aktibong lumalabag. Ang layunin ng protocol ay upang magpadala ng isang lihim na mensahe x mula sa nagpadala sa tatanggap. Ang pagkakasunud-sunod ng mga aksyon ay ang mga sumusunod:
1. Ang nagpadala at ang tatanggap ay sumasang-ayon sa simetriko cipher system na gagamitin, i.e. sa pamilya ng mga pagmamapa E = (), kK.
2. Ang nagpadala at ang tatanggap ay nagkasundo sa isang lihim na susi ng komunikasyon k, ibig sabihin. tungkol sa mapping E na ginamit.
3. Nag-e-encrypt ang nagpadala plaintext x gamit ang pagmamapa, ibig sabihin. lumilikha ng cryptogram y = (x).
4. Ang Cryptogram y ay ipinapadala sa linya ng komunikasyon sa tatanggap.
5. Idini-decrypt ng addressee ang cryptogram y gamit ang parehong key k at ang pagmamapa ^(-1), kabaligtaran sa pagmamapa Ek, at binabasa ang mensaheng x= ^(-1)(y).
Ang ika-2 hakbang ng protocol ay ipinatupad sa tulong ng isang tagapamagitan, isang ikatlong partido, na maaaring karaniwang tinatawag na isang pangunahing henerasyon at sentro ng pamamahagi (KGDC) (ilang mga lihim na protocol ng komunikasyon batay sa mga sistema ng asymmetric cipher ay hindi gumagamit ng isang tagapamagitan; sa kanila , ang mga function ng KGK ay ginagawa ng mga user).
Ang isang mahalagang katangian ng protocol ay ang pagiging lihim ng key k, na ipinapadala sa nagpadala at sa tatanggap alinman sa bukas na anyo sa pamamagitan ng isang channel ng komunikasyon na protektado mula sa mga aksyon ng isang cryptanalyst, o sa naka-encrypt na anyo sa pamamagitan ng isang bukas na channel ng komunikasyon. Ang isang secure na channel ay maaaring medyo mababa throughput, ngunit dapat na mapagkakatiwalaang protektahan pangunahing impormasyon mula sa hindi awtorisadong pag-access. Ang key k ay dapat manatiling lihim bago, habang at pagkatapos ng pagpapatupad ng protocol, kung hindi, ang isang umaatake, na nakuha ang susi, ay maaaring mag-decrypt ng cryptogram at basahin ang mensahe. Ang nagpadala at tatanggap ay maaaring magsagawa ng hakbang 1 ng protocol sa publiko (ang pagiging lihim ng sistema ng pag-encrypt ay opsyonal), ngunit dapat nilang gawin ang hakbang 2 nang palihim (kinakailangan ang lihim ng susi).
Ang pangangailangang ito ay dahil sa ang katunayan na ang mga linya ng komunikasyon, lalo na ang mga mahahaba, ay mahina mula sa punto ng view ng panghihimasok ng mga passive at aktibong lumalabag. Isang passive attacker (cryptanalyst), na gustong makakuha ng access sa message x, ang kumokontrol sa linya ng komunikasyon sa hakbang 4 ng protocol. Nang hindi nakikialam sa pagpapatupad ng protocol, hinaharang nito ang cryptogram y upang i-crack ang cipher.

Cryptanalysis ng isang simetriko na cryptosystem.

Kapag bumubuo ng isang cipher system, karaniwang ginagawa ng isang cryptographer ang mga sumusunod na pagpapalagay tungkol sa mga kakayahan ng cryptanalyst:
1. Kinokontrol ng cryptanalyst ang linya ng komunikasyon.
2. Alam ng cryptanalyst ang istraktura ng pamilya E ng cipher mappings.
3. Hindi alam ng cryptanalyst ang key k, i.e. hindi alam ang pagmamapa na ginamit upang makuha ang cryptogram y.
Sa ilalim ng mga kundisyong ito, sinusubukan ng cryptanalyst na lutasin ang mga sumusunod na problema, na tinatawag na mga problema sa decryption.
1. Tukuyin ang plaintext x at ang ginamit na key k mula sa na-intercept na cryptogram y, i.e. bumuo ng isang decryption algorithm  tulad na (y)=(x,k). Ang pagbabalangkas ng problemang ito ay nagsasangkot ng cryptanalyst gamit ang mga istatistikal na katangian ng plaintext.
2. Tukuyin ang ginamit na key k mula sa kilalang plaintext at ciphertext, i.e. bumuo ng isang decryption algorithm na (x,y)=k. Ang pormulasyon na ito ng problema ay may katuturan kapag na-intercept ng isang cryptanalyst ang ilang cryptograms na nakuha gamit ang key k, at walang mga plaintext para sa lahat ng na-intercept na cryptograms. Sa kasong ito, nang malutas ang pangalawang uri ng problema sa pag-decryption, "basahin" niya ang lahat ng mga plaintext na naka-encrypt gamit ang key k.
3. Tukuyin ang key k na gagamitin mula sa espesyal na piniling plaintext x at ang kaukulang ciphertext y, i.e. bumuo ng isang decryption algorithm x na ang x(y)=k. Ang isang katulad na pagbabalangkas ng problema ay lumitaw kapag ang isang cryptanalyst ay may kakayahang subukan ang isang cryptosystem, i.e. pagbuo ng cryptogram para sa isang espesyal na piniling plaintext. Mas madalas, ang pagbabalangkas na ito ng problema ay lumitaw kapag pinag-aaralan asymmetric system. Mayroong pagkakaiba-iba ng problema sa pag-decryption na ito kung saan ginagamit ang isang espesyal na piniling ciphertext.
Upang malutas ang mga problema sa pag-decryption, ang isang cryptanalyst ay gumagamit ng alinman sa isang naka-encrypt na mensahe y, o isang pares (x,y) na binubuo ng mga plaintext at naka-encrypt na mensahe, o isang hanay ng mga naturang mensahe o pares ng mga mensahe. Ang mga mensaheng ito o set ng mga mensahe ay tinatawag na cipher material. Ang dami ng materyal na cipher na ginagamit para sa pag-decryption ay ang haba ng mga mensaheng ito o ang kabuuang haba ng isang hanay ng mga mensahe. Ang dami ng cipher material ay mahalagang katangian paraan ng decryption. Ang uniqueness distance ng isang cipher ay ang pinakamaliit na bilang ng mga ciphertext na character na kinakailangan upang natatanging matukoy ang key. Sa maraming praktikal na kaso, ito ay katumbas ng haba ng susi kung ang susi at ang cryptogram ay mga salita mula sa katumbas na mga alpabeto. Sa parehong dami ng materyal na cipher, ang mga problema sa pag-decryption ng unang uri ay nakikilala sa pamamagitan ng mas mataas na computational complexity kumpara sa mga problema ng pangalawa at pangatlong uri ng mga problema sa pagsubok na may pinakamababang computational complexity.
Sa ilang mga kaso, malulutas ng isang cryptanalyst ang problema sa muling pagbuo ng isang pamilya E ng mga cipher mapping mula sa isang kilalang pares (x,y) ng plaintext at ciphertext, gamit ang ilang karagdagang kundisyon. Ang problemang ito ay maaaring mabalangkas bilang "pag-decipher ng isang itim na kahon" gamit ang mga kilalang input at kaukulang mga output.
Ang isang aktibong umaatake ay lumalabag sa pagpapatupad ng protocol. Maaari niyang i-abort ang komunikasyon sa ika-4 na hakbang, sa paniniwalang ang nagpadala ay wala nang dapat ipaalam sa tatanggap. Maaari rin niyang harangin ang mensahe at palitan ito ng sarili niyang mensahe. Kung natutunan ng aktibong umaatake ang susi (sa pamamagitan man ng pagsubaybay sa hakbang 2 o sa pamamagitan ng paglusot sa cryptosystem), maaari niyang i-encrypt ang kanyang mensahe at ipadala ito sa tatanggap sa halip na ang naharang na mensahe, na hindi magpupukaw ng anumang hinala sa huli. Nang hindi nalalaman ang susi, ang isang aktibong umaatake ay maaari lamang lumikha ng isang random na cryptogram, na, pagkatapos ng pag-decryption, ay lilitaw bilang isang random na pagkakasunud-sunod.

Mga kinakailangan sa protocol.

Ipinagpapalagay ng protocol na isinasaalang-alang ang tiwala ng nagpadala, ang addressee at isang third party na kinakatawan ng CGRC. Ito ay isang kahinaan ng protocol na ito. Gayunpaman, walang ganap na garantiya ng impeccability ng isang partikular na protocol, dahil ang pagpapatupad ng anumang protocol ay nagsasangkot ng pakikilahok ng mga tao at nakasalalay, lalo na, sa mga kwalipikasyon at pagiging maaasahan ng mga tauhan. Kaya, ang mga sumusunod na konklusyon ay maaaring makuha tungkol sa organisasyon ng lihim na komunikasyon gamit ang isang simetriko na cryptosystem.
1. Dapat protektahan ng protocol ang plaintext at ang susi mula sa hindi awtorisadong pag-access ng isang hindi awtorisadong tao sa lahat ng yugto ng paglilipat ng impormasyon mula sa pinagmulan patungo sa tatanggap ng mga mensahe. Ang lihim ng isang susi ay mas mahalaga kaysa sa lihim ng maraming mensaheng naka-encrypt gamit ang key na iyon. Kung ang susi ay nakompromiso (nanakaw, nahulaan, isiniwalat, tinubos), ang isang umaatake na may susi ay maaaring mag-decrypt ng lahat ng mga mensaheng naka-encrypt gamit ang key na ito. Bilang karagdagan, magagawa ng umaatake na gayahin ang isa sa mga partido sa pakikipag-ayos at makabuo ng mga pekeng mensahe upang linlangin ang kabilang partido. Sa pamamagitan ng madalas na pagpapalit ng mga susi, nababawasan ang problemang ito.
2. Hindi dapat pahintulutan ng protocol ang "dagdag" na impormasyon na pumasok sa linya ng komunikasyon, na nagbibigay ng cryptanalyst ng kaaway karagdagang mga tampok decryption ng cryptograms. Dapat protektahan ng protocol ang impormasyon hindi lamang mula sa mga hindi awtorisadong tao, ngunit mula rin sa kapwa panlilinlang ng mga aktor ng protocol.
3. Kung ipagpalagay namin na ang bawat pares ng mga gumagamit ng network ng komunikasyon ay gumagamit ng isang hiwalay na susi, kung gayon ang numero kinakailangang mga susi katumbas ng n*(n-1)/2 para sa n user. Nangangahulugan ito na kapag ang n ay malaki, ang pagbuo, pag-iimbak at pamamahagi ng mga susi ay nagiging isang problema sa pag-ubos ng oras.

Ang tanging umiiral na paraan ay simetriko encryption. Ang algorithm key ay dapat panatilihing lihim ng parehong partido, ang mga hakbang ay dapat gawin upang maprotektahan ang pag-access sa channel sa buong landas ng cryptogram, o ang mga partido ay nakikipag-ugnayan sa pamamagitan ng mga crypto object, mga mensahe, kung channel na ito mga pakikipag-ugnayan na may markang "Hindi para sa paggamit ng mga ikatlong partido". Ang algorithm ng pag-encrypt ay pinili ng mga partido bago magsimula ang pagpapalitan ng mga mensahe.

Mga pangunahing kaalaman

Ang mga algorithm ng pag-encrypt ng data ay malawakang ginagamit sa teknolohiya ng kompyuter sa mga sistema para sa pagtatago ng kumpidensyal at komersyal na impormasyon mula sa malisyosong paggamit ng mga third party. Ang pangunahing prinsipyo sa kanila ay ang kondisyon na alam ng transmitter at receiver ang algorithm ng pag-encrypt nang maaga, pati na rin ang susi sa mensahe, kung wala ang impormasyon ay isang hanay lamang ng mga simbolo na walang kahulugan.

Ang mga klasikong halimbawa ng naturang mga algorithm ay simetriko cryptographic algorithm nakalista sa ibaba:

  • Simpleng muling pagsasaayos
  • Single permutation sa pamamagitan ng key
  • Dobleng permutasyon
  • Permutation "Magic square"

Simpleng muling pagsasaayos

Ang simpleng muling pagsasaayos na walang susi ay isa sa pinaka mga simpleng pamamaraan pag-encrypt. Ang mensahe ay nakasulat sa isang talahanayan sa mga hanay. Matapos maisulat sa mga hanay ang plaintext, binabasa ito ng linya sa linya upang mabuo ang ciphertext. Upang magamit ang cipher na ito, kailangang magkasundo ang nagpadala at tatanggap sa isang nakabahaging key sa anyo ng laki ng talahanayan. Ang pagsasama-sama ng mga titik sa mga pangkat ay hindi kasama sa cipher key at ginagamit lamang para sa kaginhawahan ng pagsulat ng walang katuturang teksto.

Single permutation sa pamamagitan ng key

Higit pa praktikal na pamamaraan encryption, na tinatawag na single key permutation, ay halos kapareho sa nauna. Naiiba lamang ito dahil ang mga haligi ng talahanayan ay muling inayos ayon sa keyword, isang parirala o isang hanay ng mga numero ang haba ng isang linya ng talahanayan.

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 naiiba mula sa mga haba 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. Sa wakas, maaari mong punan ang talahanayan sa isang zigzag, snake, spiral, o sa iba pang paraan. 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.

Permutation "Magic square"

Ang mga magic square ay mga square table na may magkakasunod na natural na numero mula sa 1 na nakasulat sa kanilang mga cell, na nagdaragdag ng hanggang sa parehong numero para sa bawat column, bawat row at bawat diagonal. Ang mga parisukat na ito ay malawakang ginagamit upang magpasok ng naka-encrypt na teksto ayon sa pagbibigay ng numero sa kanila. Kung pagkatapos ay isusulat mo ang mga nilalaman ng talahanayan sa bawat linya, makakakuha ka ng pag-encrypt sa pamamagitan ng muling pagsasaayos ng mga titik. 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 3 x 3, kung hindi mo isinasaalang-alang ang mga pag-ikot nito. Mayroon nang 880 magic squares na 4 x 4, at ang bilang ng magic squares na may sukat na 5 x 5 ay humigit-kumulang 250,000 Samakatuwid, magic squares malalaking sukat ay maaaring maging isang magandang batayan para sa isang maaasahang sistema ng pag-encrypt noong panahong iyon, dahil ang manu-manong pagsubok sa lahat ng mga pangunahing opsyon para sa cipher na ito ay hindi maiisip.

Ang mga numero mula 1 hanggang 16 ay magkasya sa isang parisukat na may sukat na 4 sa 4. Ang mahika nito ay ang kabuuan ng mga numero sa mga hilera, haligi at buong dayagonal ay katumbas ng parehong numero - 34. Ang mga parisukat na ito ay unang lumitaw sa China, kung saan sila itinalaga ilang "magic power".

Pagkatapos nito, ang ciphertext ay isinusulat sa isang linya (ang pagbabasa ay ginagawa mula kaliwa hanggang kanan, linya sa linya):
.irdzegu SzhaoyanP

Kapag na-decrypt, ang teksto ay magkasya sa isang parisukat, at ang plaintext ay binabasa sa pagkakasunud-sunod ng mga numero ng "magic square". Ang programa ay dapat bumuo ng "magic squares" at piliin ang kinakailangan batay sa susi. Ang parisukat ay mas malaki kaysa sa 3x3.

Kwento

Mga kinakailangan

Ang kumpletong pagkawala ng lahat ng istatistikal na pattern ng orihinal na mensahe ay isang mahalagang kinakailangan para sa isang simetriko cipher. Para dito, ang cipher ay dapat magkaroon ng "epekto ng avalanche" - dapat mangyari malakas na pagbabago encryption block na may 1-bit na pagbabago sa input data (perpekto, ang mga halaga ng 1/2 bits ng encryption block ay dapat magbago).

Ang isa pang mahalagang pangangailangan ay ang kawalan ng linearity (iyon ay, ang mga kundisyon f(a) xor f(b) == f(a xor b)), kung hindi man ay mapadali ang aplikasyon ng differential cryptanalysis sa cipher.

Pangkalahatang pamamaraan

Sa kasalukuyan, ang mga simetriko cipher ay:

  • harangan ang mga cipher. Pinoproseso nila ang impormasyon sa mga bloke ng isang tiyak na haba (karaniwan ay 64, 128 bits), naglalapat ng susi sa bloke sa isang iniresetang pagkakasunud-sunod, kadalasan sa pamamagitan ng ilang mga cycle ng shuffling at substitution, na tinatawag na rounds. Ang resulta ng paulit-ulit na pag-ikot ay isang avalanche effect - isang pagtaas ng pagkawala ng bit correspondence sa pagitan ng mga bloke ng bukas at naka-encrypt na data.
  • stream ciphers, kung saan ang pag-encrypt ay isinasagawa sa bawat bit o byte ng orihinal (plain) na teksto gamit ang gamma. Ang isang stream cipher ay madaling malikha batay sa isang block cipher (halimbawa, GOST 28147-89 sa gamma mode), na inilunsad sa isang espesyal na mode.

Karamihan sa mga simetriko cipher ay gumagamit ng isang kumplikadong kumbinasyon malaking dami pagpapalit at permutasyon. Maraming mga ganitong cipher ang ginagawa sa ilang (minsan hanggang 80) pass, gamit ang isang "pass key" sa bawat pass. Ang set ng "pass keys" para sa lahat ng pass ay tinatawag na "key schedule". Bilang isang patakaran, ito ay nilikha mula sa isang susi sa pamamagitan ng pagsasagawa ng ilang mga operasyon dito, kabilang ang mga permutasyon at pagpapalit.

Ang isang karaniwang paraan upang makabuo ng mga simetriko na algorithm ng pag-encrypt ay ang Feistel network. Bumubuo ang algorithm ng scheme ng pag-encrypt batay sa function na F(D, K), kung saan ang D ay isang piraso ng data na doble ang laki mas mababa sa isang bloke encryption, at ang K ay ang "pass key" para sa isang ibinigay na pass. Ang function ay hindi kinakailangang maging invertible - ang inverse function nito ay maaaring hindi kilala. Ang mga bentahe ng Feistel network ay ang halos kumpletong pagkakaisa ng decryption na may encryption (ang pagkakaiba lamang ay ang reverse order ng "pass key" sa iskedyul), na lubos na nagpapadali sa pagpapatupad ng hardware.

Hinahalo ng operasyon ng permutation ang mga bits ng mensahe ayon sa isang partikular na batas. Sa mga pagpapatupad ng hardware, ito ay trivially na ipinapatupad bilang wire reversal. Ito ay ang mga pagpapatakbo ng permutation na ginagawang posible upang makamit ang "epekto ng avalanche." Ang permutation operation ay linear - f(a) xor f(b) == f(a xor b)

Isinasagawa ang pagpapalit ng mga operasyon bilang pagpapalit ng halaga ng isang partikular na bahagi ng mensahe (kadalasan ay 4, 6 o 8 bits) ng isang standard, hard-wired na numero sa algorithm sa pamamagitan ng pag-access sa isang pare-parehong array. Ang pagpapalit na operasyon ay nagpapakilala ng nonlinearity sa algorithm.

Kadalasan ang lakas ng isang algorithm, lalo na laban sa differential cryptanalysis, ay nakasalalay sa pagpili ng mga halaga sa mga lookup table (S-boxes). Sa pinakamababa, itinuturing na hindi kanais-nais na magkaroon ng mga nakapirming elemento S(x) = x, pati na rin ang kawalan ng impluwensya ng ilang bit ng input byte sa ilang bit ng resulta - iyon ay, mga kaso kapag ang resulta bit ay ang pareho para sa lahat ng mga pares ng input na salita na naiiba lamang sa bit na ito.

Mga parameter ng algorithm

Mayroong maraming (hindi bababa sa dalawang dosenang) symmetric cipher algorithm, ang mga mahahalagang parameter nito ay:

  • haba ng susi
  • bilang ng mga round
  • naprosesong haba ng bloke
  • pagiging kumplikado ng pagpapatupad ng hardware/software
  • pagiging kumplikado ng conversion

Mga uri ng simetriko cipher

harangan ang mga cipher
  • AES (Ingles: Advanced Encryption Standard) - American standard pag-encrypt
  • GOST 28147-89 - Pamantayan ng pag-encrypt ng Sobyet at Ruso, isa ring pamantayan ng CIS
  • DES (Data Encryption Standard) - pamantayan sa pag-encrypt ng data sa USA
  • 3DES (Triple-DES, triple DES)
  • RC2 (Rivest Cipher o Ron's Cipher)
  • IDEA (International Data Encryption Algorithm, internasyonal na algorithm pag-encrypt ng data)
  • CAST (pagkatapos ng mga inisyal ng mga developer na sina Carlisle Adams at Stafford Tavares)
tiyak na algorithm encryption, ang input kung saan ay ang orihinal na hindi naka-encrypt na mensahe, na tinatawag ding plaintext, at ang susi. Output ng algorithm ay isang naka-encrypt na mensahe, na tinatawag ding ciphertext. Ang susi ay isang halaga na independiyente sa mensaheng naka-encrypt. Ang pagpapalit ng susi ay dapat baguhin ang naka-encrypt na mensahe.

Ang naka-encrypt na mensahe ay ipinadala sa tatanggap. Kino-convert ng tatanggap ang naka-encrypt na mensahe sa orihinal na hindi naka-encrypt na mensahe gamit ang isang decryption algorithm at ang parehong key na ginamit para sa pag-encrypt, o isang key na madaling makuha mula sa susi sa pag-encrypt.

Ang hindi naka-encrypt na mensahe ay lalagyan ng P o M, mula sa mga salitang plaintext at mensahe. Ipapahiwatig namin ang naka-encrypt na mensahe C, mula sa salitang ciphertext.

Ang seguridad na ibinibigay ng tradisyonal na cryptography ay nakasalalay sa ilang mga kadahilanan.

Una, ang cryptographic algorithm ay dapat na sapat na malakas upang ang naka-encrypt na mensahe na ipinapadala ay hindi ma-decrypted nang walang susi, gamit lamang ang iba't ibang istatistikal na pattern ng naka-encrypt na mensahe o ilang iba pang paraan ng pagsusuri nito.

Pangalawa, ang seguridad ng ipinadalang mensahe ay dapat nakadepende sa lihim ng susi, ngunit hindi sa lihim ng algorithm. Ang algorithm ay dapat na masuri ng mga espesyalista upang maalis ang pagkakaroon ng mga kahinaan, kung saan ang relasyon sa pagitan ng hindi naka-encrypt at naka-encrypt na mga mensahe ay hindi gaanong nakatago. Bilang karagdagan, kung matugunan ang kundisyong ito, maaaring lumikha ang mga tagagawa ng murang hardware chips at malayang ipinamahagi na mga programa na nagpapatupad nito. algorithm ng pag-encrypt.

Pangatlo, ang algorithm ay dapat na tulad na imposibleng malaman ang susi, kahit na alam ang napakaraming pares (naka-encrypt na mensahe, hindi naka-encrypt na mensahe) na nakuha sa panahon ng pag-encrypt gamit ang key na ito.

Ipinakilala ni Claude Shannon ang mga konsepto ng pagsasabog at pagkalito upang ilarawan lakas ng algorithm pag-encrypt.

Pagsasabog- ito ay nakakalat mga tampok na istatistika malinaw na teksto sa malawak na hanay istatistikal na katangian ng ciphertext. Ito ay nakakamit sa pamamagitan ng katotohanan na ang halaga ng bawat elemento ng plaintext ay nakakaapekto sa mga halaga ng maraming elemento ng ciphertext, o, katumbas nito, ang anumang elemento ng ciphertext ay nakasalalay sa maraming elemento ng plaintext.

Pagkalito ay ang pagkasira ng istatistikal na relasyon sa pagitan ng ciphertext at ng susi.

Kung X ang orihinal na mensahe at K ay cryptographic na susi, pagkatapos ay ang naka-encrypt na ipinadalang teksto ay maaaring isulat sa form

Ang tatanggap, gamit ang parehong key, ay nagde-decrypt ng mensahe

Ang kaaway, na walang access sa K at X, ay dapat subukang alamin ang X, K, o pareho.

Symmetric encryption algorithm naiiba sa paraan kung saan sila pinoproseso pinagmulan. Posible ang block encryption o stream encryption.

Ang isang bloke ng teksto ay itinuturing bilang isang hindi negatibong integer, o bilang ilang mga independiyenteng hindi negatibong integer. Ang haba ng bloke ay palaging pinipili upang maging isang kapangyarihan ng dalawa. Sa karamihan ng mga block algorithm simetriko na pag-encrypt ay ginagamit mga sumusunod na uri mga operasyon:

Ang mga operasyong ito ay paulit-ulit na cyclically sa algorithm, na bumubuo ng tinatawag na mga round. Ang input ng bawat round ay ang output ng nakaraang round at ang key na nakuha ni tiyak na algorithm mula sa encryption key K. Ang bilog na susi ay tinatawag plug-in. Ang bawat algorithm ng pag-encrypt ay maaaring katawanin tulad ng sumusunod:


kanin. 2.2.

Mga aplikasyon

Pamantayan algorithm ng pag-encrypt dapat na naaangkop sa maraming aplikasyon:

  • Pag-encrypt ng data. Ang algorithm ay dapat na epektibo sa pag-encrypt ng mga file ng data o malaking daloy datos.
  • Paglikha random na mga numero. Ang algorithm ay dapat na mahusay sa pagbuo ng isang tiyak na bilang ng mga random na bit.
  • Hashing. Ang algorithm ay dapat na isalin nang mahusay sa isang one-way na hash function.

Mga plataporma

Pamantayan algorithm ng pag-encrypt dapat ipatupad sa iba't ibang mga platform, na naaayon ay may iba't ibang mga kinakailangan.

  • Ang algorithm ay dapat na epektibong maipatupad sa espesyal na hardware na idinisenyo upang magsagawa ng pag-encrypt/decryption.
  • Mga malalaking processor. Bagaman para sa karamihan mabilis na mga aplikasyon Palaging ginagamit ang mga espesyal na kagamitan, mas madalas na ginagamit ang mga pagpapatupad ng software. Dapat payagan ng algorithm ang mahusay na pagpapatupad ng software sa mga 32-bit na processor.
  • Mga processor na katamtaman ang laki. Dapat gumana ang algorithm mga microcontroller at iba pang mga mid-size na processor.
  • Maliit na mga processor. Posibleng ipatupad ang algorithm sa mga smart card, kahit na napapailalim sa mahigpit na paghihigpit sa memorya na ginamit.

Mga Karagdagang Kinakailangan

Algoritmo ng pag-encrypt dapat, kung posible, matugunan ang ilang mga karagdagang kinakailangan.

  • Ang algorithm ay dapat na madaling i-code upang mabawasan ang posibilidad ng mga error sa programming.
  • Ang algorithm ay dapat na may flat key space at tanggapin ang anumang random na string ng mga piraso ng kinakailangang haba bilang posibleng susi. Ang pagkakaroon ng mahihinang mga susi ay hindi kanais-nais.
  • Ang algorithm ay dapat na madaling mabago para sa iba't ibang antas ng seguridad at matugunan ang parehong minimum at maximum na mga kinakailangan.
  • Ang lahat ng mga operasyon ng data ay dapat gawin sa mga bloke na multiple ng isang byte o isang 32-bit na salita.

Proteksyon ng cryptographic na impormasyon

Alexandra Prokhorov

Isang sipi mula sa aklat ni Alexander Prokhorov na "The Internet: How it Works", ang impormasyon tungkol sa aklat ay matatagpuan sa tirahan .

Isaalang-alang natin kongkretong halimbawa. Hayaang magpadala ang direktor ng kumpanya A sa direktor ng kumpanya B ng isang mahalagang dokumento sa email(Larawan 1). Anong mga problema ang lumitaw sa mga tuntunin ng seguridad ng komunikasyon?

Sa pagtanggap ng sulat, itinanong ng direktor ng kumpanya B ang mga sumusunod na katanungan. Talaga ba dokumentong ito ay ipinadala ng Direktor A (pagkilala sa nagpadala). Kung tutuusin, may posibilidad na ang liham ay nanggaling sa ibang tao na nagpapanggap bilang direktor ng kumpanya A. Naharang ba ang dokumento at binago sa ruta ng paghahatid (pagpapatunay ng mensahe). Kung ang dokumento ay binasa ng sinuman maliban sa tatanggap (secrecy)

Madaling mabasa ang email at mga naka-attach na file mga intermediate na puntos ang kanyang paglalakbay sa Internet, halimbawa, sa server ng provider

Ito ay kilala na ang pagpapanatili ng lihim (message confidentiality) ay maaaring makamit sa pamamagitan ng pag-encrypt ng data. Lumalabas na lahat ng tatlong problemang ito ay malulutas gamit ang pag-encrypt, at ang kriptograpiya ay tumatalakay sa mga isyung ito.

Ang Cryptography (mula sa Griyegong "cryptos" - sikreto) ay ang agham at teknolohiya ng pag-encrypt mahalagang impormasyon upang protektahan ito mula sa mga pagbabago at hindi awtorisadong pag-access. Ang Cryptography ay nagsisilbi hindi lamang upang i-convert ang mga teksto sa isang hindi nababasang naka-encrypt na form, ngunit nagbibigay-daan din sa iyo upang malutas ang mga problema sa pagpapatunay at pagkilala ng mga gumagamit kapag nagtatrabaho sila sa Internet.

Ang kriptograpiya ay ang batayan ng ligtas na komunikasyon. Sa Fig. 1 nagbigay kami ng halimbawa ng pagsusulatan sa pagitan ng dalawang koresponden. Dapat pansinin na sa Internet nakikipag-usap kami hindi lamang sa mga tao, kundi pati na rin sa iba't ibang serbisyo. Halimbawa, kapag kami ay magda-download ng isang programa mula sa isang server, mahalaga din para sa amin na malaman iyon ang server na ito pag-aari ng kumpanya ng developer, at hindi sa kumpanya ng pirata na iligal na namamahagi ng pirated software.

Pag-encrypt gamit ang isang susi

Ang proseso ng pag-encrypt gamit ang isang susi ay ang plaintext ay pinagsama sa isang string ng mga numero (key) ayon sa mga patakaran ng ilang algorithm ( cryptographic algorithm) upang makatanggap ng naka-encrypt na mensahe.

Ipagpalagay natin na gusto nating i-encrypt ang plaintext na "Hello Vasya" gamit ang pinakasimpleng algorithm - pinapalitan ang mga titik ng kanilang mga numero sa alpabeto. Bilang resulta, makakatanggap kami ng naka-encrypt na teksto ng form: 17 18 10 3 6 20 3 1 19 33. Malinaw, kung natutunan ng isang tagalabas ang algorithm ng pag-encrypt, imposibleng gamitin ito sa hinaharap.

Iwasan kakulangang ito marahil ay gumagamit ng key encryption. Upang maipaliwanag ang kakanyahan ng proseso ng pag-encrypt gamit ang isang susi, nagbibigay kami ng isang simpleng halimbawa (Larawan 3).

Isulat natin ang mga titik ng teksto at isulat ang kanilang mga numero sa alpabeto sa ilalim ng mga ito. Sa ikatlong linya isinulat namin ang mga titik ng susi, inuulit ang salitang ito sa buong linya. Sa ilalim ng mga titik ng susi ay isusulat namin ang kanilang mga numero sa alpabeto, at sa ikaapat na linya ay isusulat namin ang halaga, na magiging naka-encrypt na mensahe: 20 19 29 36, atbp.

Alam ang susi at ang algorithm, madaling maintindihan ang mensahe: 20 - 3 = 17, at ang ikalabing pitong titik ng alpabeto ay "P", atbp. Kahit na alam ng umaatake ang algorithm ngunit hindi alam ang susi, imposibleng basahin ang mensahe nang walang mahabang pamamaraan sa pagpili ng key. Kaya, ang isang algorithm ay maaaring gamitin sa maraming mga susi sa iba't ibang channel komunikasyon, nagtatalaga ng hiwalay na susi sa bawat koresponden.

Malinaw, kung mas mahaba ang cipher key, mas maraming paghahanap ang kailangan iba't ibang kumbinasyon kapag nagde-decryption, mas mahirap i-decode ang mensahe. Ang mga cipher na may mga key na mas mahaba sa 128 bits ay tinatawag na malakas.

Prinsipyo ng pag-encrypt gamit ang isang lihim na susi

Symmetric Key Encryption

Isaalang-alang natin ang isang partikular na halimbawa: hayaan ang mga kasulatan A at B na magsulat ng isang liham sa isa't isa (Larawan 4). Ang bawat isa ay may sariling lihim na susi (tinukoy lihim na code), na maaaring magamit upang i-encrypt ang data bago ito ipadala sa Internet. Upang mas malinaw na ilarawan ang scheme ng pag-encrypt, gagamit kami ng mga pictograms (Larawan 2), iyon ay, ilarawan ang susi sa anyo ng isang regular na susi, at ang naka-encrypt na mensahe sa anyo ng isang dokumento na selyadong sa isang sobre. Pagkatapos ang proseso ng pag-encrypt at decryption ay maaaring katawanin sa anyo ng Fig. 3.

Scheme ng pag-encrypt na may sikretong (symmetric) key

Ini-encrypt ng User A ang mensahe gamit ang kanyang secret key, ipinapadala ang mensahe sa Internet, at ang recipient B (gamit ang parehong secret key) ay nagde-decrypt ng mensahe. Kung titingnan mo ang figure, madaling makita na ang circuit ay simetriko. Ang kaliwa at kanang mga user ay nagbabahagi ng parehong (symmetric) key, kaya ganitong uri encryption ay tinatawag na simetriko key encryption.

Ang problema sa pag-encrypt ng lihim na key ay may ilang mga disadvantages. Una sa lahat, hindi nilulutas ng simetriko na pag-encrypt ang problema sa pagpapatunay. Halimbawa, maaaring sumulat si A ng isang liham sa ilang third party na C at i-claim na ginawa ito ni B.

Dapat na naka-install ang isang simetriko na key sa computer ng nagpadala at tatanggap bago magpalitan ng mga lihim na mensahe. Iyon ay, kailangan mong malaman nang maaga kung aling dalawang computer ang "mag-uusap" sa isa't isa. Malinaw, ang pag-encrypt para sa ligtas na komunikasyon Ang Internet ay may katuturan kapag ang mga koresponden ay hindi kailangang makipagkita nang personal. Ang problema ay nangyayari kapag nagpapadala ng lihim na susi. talaga. Kung binigay ni A sa B ang sikretong susi sa hindi naka-encrypt na anyo, maaari itong ma-intercept. Kung ang susi ay ipinadala sa naka-encrypt na form, hindi ito matatanggap ng B. Upang makipag-ugnayan sa ilang mga correspondent, kailangan mong magkaroon ng isang susi para sa bawat correspondent, na hindi maginhawa. Para makapagdesisyon mga problema sa itaas, iminungkahi ang isang asymmetric encryption scheme (public key encryption).

Public Key Encryption

Ang pag-encrypt ng pampublikong key ay batay sa paggamit ng isang pares ng key: pribado (pribado) at pampubliko (pampubliko) na mga susi.

Maaaring i-encrypt ang mensahe gamit ang parehong pribado at pampublikong key, at i-decrypt lamang gamit ang pangalawang key ng pares. Ibig sabihin, ang isang mensaheng naka-encrypt gamit ang isang pribadong key ay maaari lamang i-decrypt gamit ang isang pampublikong susi at vice versa. Ang pribadong susi ay kilala lamang ng may-ari at hindi maaaring ibahagi sa sinuman, habang ang pampublikong susi ay bukas na ipinamamahagi sa lahat ng mga koresponden.

Ang isang pares ng mga susi - pribado at pampubliko - ay maaaring magamit kapwa upang malutas ang mga problema sa pagpapatunay (Larawan 4) at pagiging lihim (pagkakumpidensyal) (Larawan 6).

Ayon sa unang scheme (Larawan 4): ipinapadala ng user A ang pampublikong susi nang maaga sa kanyang mga kasulatan na B at C, at pagkatapos ay nagpadala sa kanila ng mensaheng naka-encrypt gamit ang kanyang pribadong key.

Ang mensahe ay maaari lamang ipadala ni A (siya lamang ang may pribadong key), ibig sabihin, ang problema sa pagpapatunay ay garantisadong. Ngunit, halimbawa, si B ay hindi sigurado na ang liham ay hindi rin binasa ni C. Kaya, ang problema sa pagiging kumpidensyal ay hindi natiyak

Ang scheme na tinitiyak ang pagiging lihim (pagiging kumpidensyal) ay ipinapakita sa Fig. 6.

Ang mensahe ay mababasa lamang ni A, dahil siya lamang ang may pribadong susi na nagpapakita ng mensahe, iyon ay, ang problema sa pagiging kumpidensyal ay nalutas. Ngunit hindi matiyak ni A na ang mensahe ay hindi ipinadala ni B na nagpapanggap na si C. Kaya, ang problema sa pagpapatunay ay hindi nalutas

Upang matiyak ang kumpidensyal na pagpapalitan ng mga mensahe sa pagsusulatan sa pagitan ng dalawang tao, kinakailangang magkaroon ng dalawang pares ng mga susi (Larawan 5).

Upang matiyak ang kumpidensyal na pagpapalitan ng mga mensahe sa pagsusulatan sa pagitan ng dalawang tao, kinakailangan na magkaroon ng dalawang pares ng mga susi.

Kapag nag-e-encrypt gamit ang isang key pair, hindi mo kailangang ipadala ang iyong pampublikong susi sa lahat ng mga correspondent. Ito ay mas maginhawa upang i-post ang key na ito sa Internet sa isang tiyak na server na may bukas na access. Pagkatapos ang lahat ay maaaring mag-download binigay na susi at padadalhan ka ng isang lihim na mensahe na walang sinuman maliban sa iyo ang magbabasa.