Mga paraan ng pag-encrypt ng data - blog ng web programmer. Panimula sa mga pangunahing kaalaman ng modernong simetriko key cipher

Gaya ng naaalala mo, ang shift, substitution, permutation cipher at Vernam cipher ay naglalapat ng operasyon sa bawat partikular na character ng text. Kailangan nating lumipat - ilipat natin ang simbolo, ilapat ang susi - ilapat ito sa simbolo, pagkatapos ay sa susunod na simbolo at iba pa hanggang sa i-encrypt natin ang lahat ng mga simbolo plaintext. Ang paraan ng pag-encrypt na ito ay tinatawag na stream encryption - ini-encrypt namin ang bawat karakter nang paisa-isa. Ang isa pang diskarte ay ang hatiin ang orihinal na plaintext sa mga grupo ng ilang mga character (mga bloke) at magsagawa ng mga operasyon ng pag-encrypt sa bawat bloke. Ito ay isang paraan ng block encryption.

Upang gawing mas malinaw ang pagkakaiba sa pagitan ng block at stream cipher, magbigay tayo ng halimbawa: simpleng cipher mga kapalit.

Pag-encrypt ng stream

I-encrypt natin ang salitang CIPHER na may kapalit na stream cipher:

Na-encrypt namin ang bawat karakter at nakakuha ng ciphertext. Hindi ito maaaring maging mas simple.

BLOCK ENCRYPTION

I-encrypt natin ang salitang AVADAKEDAVRA. Dahil ang cipher ay isang block one, hahatiin namin ang plaintext sa mga bloke ng apat na character: AVAD | AKED | AVRA (sa pagsasanay, ang mga bloke ng teksto ay binubuo ng 64-256 bits). Para sa bawat bloke gagawa kami ng sarili naming kapalit na talahanayan:

Ngayon i-encrypt namin ang bawat isa sa mga bloke na may kaukulang alpabeto:
Ito ay naging medyo mas mahusay kaysa sa in-line na diskarte, kung pag-uusapan natin ang tungkol sa tibay. Pagkatapos ng lahat, natutunan naming i-decipher ang karaniwang substitution cipher gamit ang isang kaliwang kamay. At sa gayong paraan ng pag-block, kailangang i-rack ng attacker ang kanyang utak bago niya mapili ang haba ng block at pagkatapos ay ilapat ang cryptanalysis para sa mga kapalit na cipher para sa bawat block.

FEISTEL NETWORK

Ngayon ay handa na kaming lumipat sa isang napakahalagang paksa na nagbubukas ng pinto sa walang katapusang mundo ng mga modernong sistema ng pag-encrypt. Ang Feistel network ay isang block encryption method na binuo ni Horst Feistel sa laboratoryo ng IBM noong 1971. Ngayon ang Feistel network ay pinagbabatayan malaking dami mga cryptographic na protocol. Subukan nating alamin "sa mga daliri" kung ano ito.

Gumagana ang network ng Feistel sa mga bloke ng plaintext, kaya titingnan natin ang mekanismo ng operasyon nito sa isa sa mga bloke. Magiging magkatulad ang mga aksyon para sa natitirang mga bloke.

  • Ang bloke ay nahahati sa dalawang pantay na bahagi - kaliwa (L) at kanan (R).
  • Pagkatapos ng paghahati, ang kaliwang subblock ay binago ng isang function f gamit ang key K: x = f(L, K). Bilang isang function, maaari mong isipin ang anumang pagbabago - halimbawa, ang magandang lumang shift cipher na may key K.
  • Ang resultang subblock ay idinagdag modulo 2 na may tamang subblock R, na hindi ginamit noon: x=x+R
  • Susunod, ang mga nagresultang bahagi ay pinagpalit at pinagdikit.

Tulad ng nakikita mo, ang lahat ay medyo simple. Upang maunawaan kung paano ito gumagana, tingnan ang diagram:

Ang kaayusan na ito ay tinatawag na Feistel cell. Ang Feistel network mismo ay binubuo ng ilang mga cell. Ang mga subblock na nakuha sa output ng unang cell ay napupunta sa input ng pangalawang cell, ang mga nagresultang subblock mula sa pangalawang cell ay napupunta sa input ng ikatlong cell, at iba pa, depende sa bilang ng mga round ng Feistel network. Sa bawat naturang round, isang paunang natukoy na round key ang ginagamit. Kadalasan, ang mga round key ay nagmula sa pangunahing key lihim na susi K. Kapag nakumpleto na ang lahat ng pag-ikot, ang mga subblock ng teksto ay pinagdikit, at isang normal na ciphertext ang nakuha.

Ngayon tingnan natin ang pagpapatakbo ng Feistel network gamit ang isang halimbawa. Kunin natin ang salitang AVADAKEDAVRA at hatiin ito sa dalawang bloke ng anim na karakter - AVADAK | EDAVRA. Para sa function na kinukuha namin ang shift cipher sa pamamagitan ng bilang ng mga posisyon na tinutukoy ng round key. Hayaan ang lihim na susi K = . Bilang mga round key, kinukuha namin ang K = 1, K = 2. Para sa karagdagan modulo 2, kino-convert namin ang teksto sa binary code ayon sa alpabeto ng telegrapo, na halos hindi ginagamit ng sinuman.

Narito ang nangyari:

Ngayon, patakbuhin natin ang unang block sa pamamagitan ng Feistel network sa dalawang round:

Subukan mong i-encrypt ang pangalawang bloke sa iyong sarili, nakakuha ako ng MOSSTR.

Ang pag-decryption ay isinasagawa sa eksaktong parehong paraan: ang ciphertext ay nahahati sa mga bloke at pagkatapos ay mga subblock, ang kaliwang subblock ay pumapasok sa function, ay idinagdag ang modulo 2 sa kanan, at pagkatapos ay ang mga subblock ay pinapalitan. Ang pagkakaiba ay ang mga round key ay isinumite sa reverse order, iyon ay, sa aming kaso, sa unang round gagamitin namin ang key K = 2, at pagkatapos ay sa pangalawang round K = 1.

Ipinakita ng pananaliksik sa Feistel network na may mga independiyenteng round key at isang crypto-resistant na pseudo-random na function f, sapat na ang tatlong round ng Feistel network para maging pseudo-random ang ciphertext. Iminumungkahi nito na ang mga cipher na batay sa Feistel network ay kasalukuyang ligtas.

GOST 28147-89 (MAGMA)

Halos lahat ay nasa arsenal na mga kinakailangang konsepto, kaya handa na kaming magpatuloy sa unang mahalagang paksa ng domestic cryptography - GOST 28147-89. Ito ay nagkakahalaga na sabihin na ang mga tamad lamang ang hindi sumulat tungkol sa pamantayang ito, kaya susubukan ko sa ika-milyon at unang pagkakataon na maikli at walang ulap ng mga formula na binabalangkas ang kakanyahan ng mga mode ng pag-encrypt ng mahusay at kakila-kilabot na Magma. Kung magpasya kang basahin ang pamantayan mismo, dapat kang mag-stock sa oras, lakas, pasensya at pagkain, dahil, tulad ng alam mo, ang mga pamantayan sa pagsulat sa wika ng tao ay mahigpit na ipinagbabawal.

Pangunahing katangian: key 256 bits, block 64 bits.

Bago suriin ang Magma, kailangan mong matuto ng bagong konsepto - mga talahanayan ng pagpapalit, o mga S-box. Ito ang parehong uri ng talahanayan tulad ng talahanayan sa substitution cipher. Idinisenyo upang palitan ang mga simbolo ng subblock ng mga simbolo na naitala sa talahanayan. Huwag isipin na ang S-box ay mga random na numero na nabuo ng rand() function. Ang mga S-box ay resulta ng pinag-isipang nabuong mga pagkakasunud-sunod, dahil nakasalalay sa kanila ang lakas ng cryptographic ng buong cipher.

Inilalarawan ng GOST 28147 ang mga kapalit na talahanayan nito nang napakatipid. Sinasabi lamang nito na ang mga ito ay isang karagdagang lihim na elemento (kasama ang lihim na susi) at "inihatid sa inireseta na paraan." Wala na. Mula noong pinagtibay ang GOST 28147, ang pang-agham at teknikal na kawalan ng katiyakan na nauugnay sa pagpili ng mga S-box ay nagbunga ng mga alingawngaw at haka-haka. May usapan tungkol sa mga lihim na pamantayan na kilala lamang sa mga developer ng GOST. Naturally, ang kawalan ng katiyakan na ito ay nagbawas ng kumpiyansa sa cryptosystem.

Ang pagkukulang na ito ay nagbigay ng mahusay na mga batayan para sa pagpuna sa pamantayan. Ang French cryptographer na si Nicolas Courtois ay naglathala ng ilang artikulo na naglalaman ng ilang kontrobersyal na probisyon tungkol sa lakas ng GOST. Naniniwala si Courtoi na ang pamantayang Ruso ay madaling atakehin at hindi maituturing na internasyonal. Gayunpaman, ginagawa ni Courtois ang kanyang pagsusuri para sa mga S-box maliban sa mga aktwal, kaya hindi ka dapat umasa sa kanyang opinyon.

Ngayon tingnan natin kung ano ang naisip nila sa loob ng mga dingding ng madilim na Lubyanka.

Madaling kapalit na mode

Sa simpleng kapalit na mode para sa 32 round, ayon sa pamantayan, kailangan namin ng 32 round key. Upang bumuo ng mga round key, ang orihinal na 256-bit key ay nahahati sa walong 32-bit na bloke: K1…K8. Ang Keys K9...K24 ay isang paikot na pag-uulit ng mga key K1...K8. Ang mga key K25…K32 ay mga key na K8…K1.

  1. Ang bawat 64-bit block ay nahahati sa dalawang subblock - Ai at Bi.
  2. Ang kaliwang subblock na Ai ay idinagdag sa modulo 232 na may round key na K1: Ai+1 = Ai + Ki mod 232.
  3. Ang kaliwang subblock ay dumadaan sa S-box.
  4. Ang mga piraso ng kaliwang subblock ay inililipat ng 11 posisyon (cyclic shift).
  5. Ang kaliwang subblock ay nagdaragdag sa kanan ng modulo 2: A = A ⊕ B . iii
  6. Ang tamang subblock ay tumatanggap orihinal na kahulugan kaliwang subblock: Bi+1 = Ai.
  7. Ang mga subblock ay pinagpalit.

Halimbawa lang ng isang round. 256 bit key:

arvadek adava arvadek adava arvadek adava arvadek adava arva

00011 01010 11110 00011 01001 00001 01111 00011 01001 00011 11110

00011... . . . 00011 01010 11110 0

Tapos yung round keys

K1 = 00011 01010 11110 00011 01001 00001 01

K2 = 111 00011 01001 00011 11110 00011 0001

K3 = . . .

S - box= [ 1 , 15 , 13 , 0 , 5 , 7 , 10 , 4 , 9 , 2 , 3 , 14 , 6 , 11 , 8 , 12 ]

Paano gamitin ang S-box na ito? Napakasimple! Kung ang input ng S-box ay 0, ang output ay magiging 1 (kunin ang ika-0 na simbolo ng S-box), kung 4, ang output ay magiging 5 (kunin ang ika-4 na simbolo), kung ang input ay 7 , kung gayon ang output ay magiging 4, at iba pa.

Plain text:

Nahahati sa dalawang 32-bit na bloke ng mataas at mababang bits:

Ang halimbawa, siyempre, ay naging ligaw, dahil ang GOST ay hindi pa rin isang pamantayan na ang lahat ay maaaring dumaan dito gamit ang kanilang sariling mga kamay.

Ang simpleng kapalit na mode ay masyadong simple at may mga makabuluhang disadvantages:

  • ang isang error sa isang naka-encrypt na bloke ay sumisira sa lahat ng mga piraso ng bloke na iyon;
  • kapag nag-e-encrypt ng magkatulad na mga bloke ng plaintext, ang mga magkakaparehong bloke ng ciphertext ay nakuha, na maaaring magbigay ng ilang impormasyon sa isang cryptanalyst.

Kaya, ipinapayong gamitin ang GOST 28147-89 sa simpleng kapalit na mode lamang para sa pag-encrypt ng pangunahing data.

GAMING MODE

Ang mode na ito ay walang mga disadvantages ng simpleng kapalit na mode. Tinawag ang gamma mode dahil gumagamit ito ng gamma, isang pseudo-random na sequence na idinaragdag ang modulo 2 sa plaintext sa bawat round. Ang gamma ay nabuo mula sa synchronization na mensahe S - isang pseudo-random na pagkakasunud-sunod na nagbabago sa bawat pag-ulit at naka-encrypt sa simpleng kapalit na mode, pagkatapos nito ay nagiging gamma at naka-superimpose sa plaintext.

At ngayon ay nasa ayos na ang lahat.

Ang mga hakbang 3–5 ay inuulit para sa bawat bloke. Ang lahat ng mga manipulasyong ito ay makikita sa diagram.

Ang pag-decryption ay ginagawa sa parehong paraan sa halip na isang plaintext block, isang ciphertext block ay ibinibigay.

Gamma mode na may feedback

Maging mas kumplikado tayo. Ang algorithm ay katulad ng gamma mode, ngunit ang gamma ay nabuo batay sa nakaraang bloke ng naka-encrypt na data, kaya ang resulta ng pag-encrypt ng kasalukuyang bloke ay nakasalalay din sa mga nakaraang bloke. 1. Mensahe ng pag-synchronize S - 64-bit na pseudo-random na sequence.

2. S ay naka-encrypt sa simpleng kapalit na mode.
3. Ang plaintext ay idinaragdag modulo 2 sa nagresultang gamma.
4. Ang nagreresultang ciphertext ay ipinadala bilang isang mensahe ng pag-synchronize para sa susunod na bloke, at ipinapadala din sa output. Makikita mo kung ano ang hitsura nito sa diagram.

Simulated insert mode

Sa mode na ito, nabuo ang isang simulate insert - isang karagdagang bloke ng isang nakapirming haba, depende sa pinagmulang teksto at mga key. Ang ganitong maliit na bloke ay kinakailangan upang kumpirmahin na walang mga pagbaluktot na hindi sinasadya o sinasadyang ipinakilala sa ciphertext - iyon ay, upang suriin ang integridad. Ang mode na ito ay gumagana tulad nito:

1. Ang isang bloke ng plaintext ay dumadaan sa 16 na round sa simpleng kapalit na mode.
2. Isa pang plaintext block ang idinagdag sa resultang block modulo 2.
3. Ang kabuuan ay dumaan sa isa pang 16 na round sa simpleng kapalit na mode.
4. Ang susunod na plaintext block ay idinagdag at muli ay isang simpleng kapalit, at iba pa hanggang sa wala nang plaintext block.

Upang i-verify, ang tatanggap, pagkatapos i-decrypt ang teksto, ay nagsasagawa ng pamamaraang katulad ng inilarawan. Kung ang resulta ay hindi tumugma sa ipinadala na imitative insert, ang lahat ng kaukulang M block ay ituturing na mali.

GOST 34.12-2015 (GRASSHOPPER)

Itinuturing ng marami na luma na ang GOST 28147-89 at hindi sapat na matatag kumpara sa mga dayuhang algorithm. Para palitan ito, naglabas ang mga domestic cryptographer ng bagong pamantayan sa pag-encrypt. Sinasabi nila na nangyari ito alinman dahil sa malaking bilang ng mga pag-atake sa lumang GOST, o dahil ang haba ng block na ito ay luma na at masyadong maliit para sa mga modernong set ng data. Ang tunay na mga dahilan walang nag-advertise. Siyempre, may ilang mga pagbabago sa mga pangunahing katangian.

Pangunahing katangian: key 256 bits, block 128 bits.

Nararapat ding sabihin na sa bagong pamantayan, ang mga S-box ay naayos at maalalahanin, kaya hindi na kailangang mag-imbento ng sarili mong mahimalang random na mga pagpapalit. Ang bagong GOST ay may higit pang mga mode ng pag-encrypt:
simpleng kapalit na mode (Electronic Codebook, ECB);
gamma mode (Counter, CTR);
gamma mode na may output feedback (Output Feedback, OFB);
simpleng kapalit na mode na may pakikipag-ugnayan (Cipher Block Chaining, SBC);
gamma mode na may ciphertext feedback (Cipher Feedback, CFB);
simulation insert generation mode (Message Authentication Code algorithm).

Tingnan natin ang mga bagong mode.

Madaling kapalit na mode na may pakikipag-ugnayan

Tulad ng nakita sa nakaraang pamantayan, ang simpleng kapalit na mode ay ang pinakamahina sa mga mode, kaya sa bagong pamantayan ito ngayon ay nakausli sa pakikipag-ugnayan at naging hindi gaanong simple.

  1. Nakakatakot ang tunog ng initialization vector, ngunit sa totoo lang ito ay isang sequence ng bits na pumapasok sa input.
  2. Ang vector ay nahahati sa dalawang bahagi - L at R, ang isa ay idinagdag ang modulo 2 kasama ang plaintext, at ang isa ay nagiging kalahati ng initialization vector para sa susunod na block.
  3. Ang kabuuan ng plaintext at isang piraso ng initialization vector ay ipinapasa sa isang simpleng substitution cipher.
  4. Ang nagreresultang mga bloke ng ciphertext ay pinagdikit.

Kapag tiningnan mo ang diagram, agad na nagiging malinaw ang lahat.

Siyempre, hindi ganoon kasimple ang initialization vector: dumadaan ito sa isang serye ng mga linear transformation (gamit ang linear shift register) bago ito magsimulang mag-encrypt ng bagong block. Ngunit upang makilala ang cipher, sapat na upang isipin ang gayong pamamaraan. Ang pag-decryption sa mode na ito ay hindi rin lubos na halata, kaya mas mahusay na tingnan ang diagram.

Para sa mga plus - Mga Encryption. Kabilang sa mga domestic development ay ang cryptoprovider CryptoPro CSP.

Ilang salita tungkol sa lakas ng mga mode ng pag-encrypt. Sinubukan ng maraming dayuhang cryptographer na itaas ang kanilang mga kamay laban sa aming pamantayan, ngunit sa ngayon ay walang alam na pag-atake na maaaring ipatupad sa kasalukuyang antas ng teknolohiya ng pag-unlad. Kabilang sa mga programmer ang pamantayang ito sa mahabang panahon ay hindi napakapopular, dahil mahirap maunawaan ang operating algorithm mula sa teksto nito, at walang sapat na mas malinaw na mga paglalarawan. Ngunit ngayon ay marami nang mga pagpapatupad sa maraming mga programming language. Kaya ngayon ang paggamit ng GOST ay lubos na posible, at sa maraming aspeto ito ay lumalampas sa mga dayuhang pamantayan. Sa huli, nasaan ang pagiging makabayan?!

Panimula

Ang problema sa pagprotekta ng impormasyon sa pamamagitan ng pagbabago nito upang hindi ito mabasa ng isang tagalabas ay pinasigla ang isip ng tao mula noong sinaunang panahon. Ang kasaysayan ng cryptography ay kasingtanda ng kasaysayan wika ng tao. Bukod dito, ang pagsulat mismo ay orihinal na isang cryptographic system, dahil sa mga sinaunang lipunan ay piling iilan lamang ang nakabisado nito.

Ang mga sagradong aklat ng Sinaunang Ehipto at Sinaunang India ay mga halimbawa nito.

Sa malawakang paggamit ng pagsulat, nagsimulang lumabas ang kriptograpiya bilang isang malayang agham. Ang mga unang cryptosystem ay matatagpuan na sa simula ng ating panahon. Kaya, si Caesar sa kanyang sulat ay gumamit ng higit pa o hindi gaanong sistematikong cipher, na nakatanggap ng kanyang pangalan.

Mabilis na pag-unlad mga sistema ng cryptographic natanggap noong Una at Ikalawang Digmaang Pandaigdig. Mula sa panahon pagkatapos ng digmaan hanggang sa kasalukuyan, ang hitsura mga pasilidad sa pag-compute pinabilis ang pagbuo at pagpapabuti ng mga pamamaraan ng cryptographic.

Bakit naging problema ang paggamit ng mga cryptographic na pamamaraan sa mga information system (IS). kasalukuyang sandali partikular na may kaugnayan?

Sa isang banda, lumawak ang paggamit mga network ng kompyuter, lalo na sa buong mundo Mga network sa internet, kung saan ipinapadala ang malalaking volume ng impormasyon ng isang estado, militar, komersyal at pribadong kalikasan, na pumipigil sa mga hindi awtorisadong tao na ma-access ito.

Sa kabilang banda, ang paglitaw ng bago makapangyarihang mga computer, network at neural computing na mga teknolohiya ay naging posible na siraan ang mga cryptographic system na hanggang kamakailan ay itinuturing na halos hindi nababasag.

Sa unang kabanata ng gawaing ito maaari kang maging pamilyar sa mga pangunahing konsepto modernong cryptography, mga kinakailangan para sa kanila, mga posibilidad ng praktikal na aplikasyon nito.

Sa ikalawang kabanata ng pagtatrabaho sa mga protocol ng pamamahagi cryptographic na mga susi, konsepto elektronikong lagda at mga electronic signature protocol..

Ang ikatlong kabanata ng gawaing ito ay nag-uusap tungkol sa mga hash function at (paraan ng) mga algorithm para sa kanilang pagbuo.

Ang ikaapat na kabanata ay tatalakayin ang tungkol sa modernisasyon ng El Gamal electronic signature at ang discrete logarithm problem.

Kabanata 1. Pangunahing konsepto ng modernong cryptography

Ang Cryptology (kryptos - secret, logos - science) ay tumatalakay sa problema ng pagprotekta sa impormasyon sa pamamagitan ng pagbabago nito. Ang cryptology ay nahahati sa dalawang lugar - cryptography at cryptanalysis. Ang mga layunin ng mga direksyong ito ay direktang kabaligtaran.

Ang Cryptography ay tumatalakay sa paghahanap at paggalugad mga pamamaraan sa matematika pagbabago ng impormasyon.

Ang lugar ng interes ng cryptanalysis ay ang pag-aaral ng posibilidad ng pag-decrypting ng impormasyon nang hindi nalalaman ang mga susi.

Ang gawaing ito ay tututuon sa mga pamamaraan ng cryptographic.

Kasama sa modernong cryptography ang apat na pangunahing seksyon:

Symmetric cryptosystems.

Mga pampublikong key cryptosystem.

Electronic signature system.

Pangunahing pamamahala.

Ang mga pangunahing lugar ng paggamit ng mga pamamaraan ng cryptographic ay ang paglipat ng kumpidensyal na impormasyon sa pamamagitan ng mga channel ng komunikasyon (halimbawa, e-mail), pagtatatag ng pagiging tunay ng mga ipinadalang mensahe, pag-iimbak ng impormasyon (mga dokumento, database) sa media sa naka-encrypt na form.

Ginagawang posible ng Cryptography na baguhin ang impormasyon sa paraang ang pagbabasa nito (pagbawi) ay posible lamang kung ang susi ay kilala.

Ang mga tekstong nakabatay sa isang partikular na alpabeto ay ituturing na impormasyon na ie-encrypt at i-decrypt. Ang mga terminong ito ay nangangahulugan ng mga sumusunod.

Ang alpabeto ay isang may hangganan na hanay ng mga palatandaan na ginagamit upang i-encode ang impormasyon.

Ang teksto ay isang nakaayos na hanay ng mga elemento ng alpabeto.

Ang mga sumusunod ay mga halimbawa ng mga alpabeto na ginagamit sa mga modernong sistema ng impormasyon:

alpabeto Z33 - 32 titik ng alpabetong Ruso at isang puwang;

alpabeto Z256 - mga simbolo na kasama sa pamantayan Mga ASCII code at KOI-8;

binary alphabet - Z2 = (0,1);

octal alphabet o hexadecimal alphabet;

Ang pag-encrypt ay isang proseso ng pagbabago: pinagmulan, na tinatawag ding plaintext, ay pinalitan ng ciphertext.

Ang decryption ay ang reverse process ng encryption. Batay sa susi, ang ciphertext ay na-convert sa orihinal.

Ang susi ay ang impormasyong kailangan para sa maayos na pag-encrypt at pag-decryption ng mga teksto.

Ang isang cryptographic system ay isang pamilya ng T plaintext transformations. Ang mga miyembro ng pamilyang ito ay ini-index, o itinalaga ng simbolong k; parameter k ang susi. Ang key space K ay ang hanay ng mga posibleng key value. Karaniwan ang susi ay isang sunud-sunod na serye ng mga titik ng alpabeto.

Ang mga cryptosystem ay nahahati sa simetriko at pampublikong susi.

SA simetriko cryptosystems Ang parehong key ay ginagamit para sa parehong pag-encrypt at pag-decryption.

Gumagamit ang mga public key system ng dalawang key, isang pampubliko at isang pribado, na may kaugnayan sa matematika sa isa't isa. Ang impormasyon ay naka-encrypt gamit ang isang pampublikong susi, na magagamit ng lahat, at decrypted gamit pribadong susi, alam lamang ng tatanggap ng mensahe. Ang mga terminong key distribution at key management ay tumutukoy sa mga proseso ng isang information processing system, ang nilalaman nito ay ang compilation at distribution ng mga key sa pagitan ng mga user.

Ang isang elektronikong (digital) na lagda ay isang cryptographic na pagbabagong nakakabit sa teksto, na nagbibigay-daan, kapag ang teksto ay natanggap ng isa pang user, upang i-verify ang pagiging may-akda at pagiging tunay ng mensahe.

Ang lakas ng cryptographic ay isang katangian ng isang cipher na tumutukoy sa paglaban nito sa pag-decryption nang hindi nalalaman ang susi (i.e., cryptanalysis). Mayroong ilang mga tagapagpahiwatig ng lakas ng cryptographic, kabilang ang:

ang bilang ng lahat ng posibleng mga susi;

average na oras na kinakailangan para sa cryptanalysis.

Ang pagbabagong Tk ay tinutukoy ng kaukulang algorithm at ang halaga ng parameter k. Ang pagiging epektibo ng pag-encrypt upang maprotektahan ang impormasyon ay nakasalalay sa pagpapanatili ng lihim ng susi at ang lakas ng cryptographic ng cipher.

Ang proseso ng pagsasara ng cryptographic data ay maaaring isagawa alinman sa software o sa hardware. Ang pagpapatupad ng hardware ay makabuluhang mas mahal, ngunit mayroon din itong mga pakinabang: mataas na pagganap, pagiging simple, seguridad, atbp. Pagpapatupad ng software mas praktikal, na nagbibigay-daan sa isang tiyak na kakayahang umangkop sa paggamit.

Ang mga sumusunod na karaniwang tinatanggap na mga kinakailangan ay binuo para sa modernong cryptographic information security system:

ang naka-encrypt na mensahe ay dapat na mabasa lamang kung ang susi ay magagamit;

ang bilang ng mga operasyong kinakailangan upang matukoy ang ginamit na encryption key mula sa isang fragment ng isang naka-encrypt na mensahe at ang kaukulang plaintext ay dapat na hindi bababa sa kabuuang bilang ng mga posibleng key;

ang bilang ng mga operasyong kinakailangan upang i-decrypt ang impormasyon sa pamamagitan ng pagsubok sa lahat ng posibleng mga susi ay dapat na may mahigpit na mas mababang hangganan at lumampas sa mga limitasyon ng mga posibilidad mga modernong kompyuter(isinasaalang-alang ang posibilidad ng paggamit ng network computing);

ang kaalaman sa algorithm ng pag-encrypt ay hindi dapat makaapekto sa pagiging maaasahan ng proteksyon;

ang isang bahagyang pagbabago sa susi ay dapat na humantong sa isang makabuluhang pagbabago sa hitsura ng naka-encrypt na mensahe, kahit na ginagamit ang parehong key;

ang mga elemento ng istruktura ng algorithm ng pag-encrypt ay dapat na hindi nagbabago;

dagdag na piraso, ipinakilala sa mensahe sa panahon ng proseso ng pag-encrypt, dapat na ganap at ligtas na nakatago sa ciphertext;

ang haba ng ciphertext ay dapat na katumbas ng haba ng orihinal na teksto;

dapat walang simple at madaling maitatag na mga dependency sa pagitan ng mga key na ginamit nang sunud-sunod sa proseso ng pag-encrypt;

anumang susi mula sa hanay ng mga posible ay dapat magbigay maaasahang proteksyon impormasyon;

dapat pahintulutan ng algorithm ang parehong pagpapatupad ng software at hardware, habang ang pagpapalit ng haba ng key ay hindi dapat humantong sa isang qualitative deterioration ng encryption algorithm.

Kabanata 2. Cryptographic key distribution protocols at electronic signature protocols.

Gaano man kakomplikado at maaasahang mga sistema ng cryptographic, sila mahinang punto sa praktikal na pagpapatupad - ang problema ng pangunahing pamamahagi. Para maging posible ang palitan kumpidensyal na impormasyon sa pagitan ng dalawang paksa ng IP, ang susi ay dapat na nabuo ng isa sa kanila, at pagkatapos ay sa anumang paraan, muli nang kumpidensyal, inilipat sa isa pa. Yung. sa pangkalahatan, ang paglilipat muli ng susi ay nangangailangan ng paggamit ng ilang uri ng cryptosystem.

Upang malutas ang problemang ito, ang mga pampublikong key system ay iminungkahi batay sa mga resulta na nakuha mula sa klasikal at modernong algebra.

Ang kanilang kakanyahan ay ang bawat IP addressee ay bumubuo ng dalawang susi na konektado sa isa't isa ayon sa isang tiyak na panuntunan. Ang isang susi ay idineklara na pampubliko at ang isa pang pribado. Pampublikong susi ay nai-publish at magagamit sa sinumang gustong magpadala ng mensahe sa addressee. Ang sikretong susi ay pinananatiling lihim.

Ang orihinal na teksto ay naka-encrypt gamit ang pampublikong susi ng tatanggap at ipinadala sa kanya. Ang naka-encrypt na teksto ay hindi maaaring, sa prinsipyo, ay ma-decrypt ng parehong plain text.


susi. Ang pag-decryption ng isang mensahe ay posible lamang gamit ang isang pribadong key, na alam lamang ng tatanggap.

Gumagamit ang mga pampublikong key cryptographic system ng tinatawag na irreversible o one-way na mga function, na may sumusunod na katangian: kapag itakda ang halaga x medyo madaling kalkulahin ang halaga ng f(x), ngunit kung y=f(x), hindi ang madaling paraan upang kalkulahin ang halaga ng x.

Ang hanay ng mga klase ng mga hindi maibabalik na pag-andar ay nagbibigay ng lahat ng iba't ibang mga pampublikong key system. Gayunpaman, hindi lahat ng hindi maibabalik na function ay angkop para sa paggamit sa mga tunay na IC.

Napakahalaga ng pag-encrypt ng data upang maprotektahan ang privacy. Sa artikulong ito ay pag-uusapan ko iba't ibang uri at mga paraan ng pag-encrypt na ginagamit upang protektahan ang data ngayon.

alam mo ba
Noong panahon ng Romano, ginamit ni Julius Caesar ang pag-encrypt upang gawing hindi nababasa ng kaaway ang mga titik at mensahe. Naglaro ito mahalagang papel bilang isang taktika ng militar, lalo na sa panahon ng mga digmaan.

Habang patuloy na lumalago ang mga kakayahan ng Internet, parami nang parami ang ating mga negosyo na isinasagawa online. Kabilang sa mga ito, ang pinakamahalaga ay, Internet banking, online na pagbabayad, mga email, pagpapalitan ng pribado at mga opisyal na mensahe atbp., na kinabibilangan ng pagpapalitan ng kumpidensyal na data at impormasyon. Kung ang data na ito ay nahulog sa maling mga kamay, maaari itong magdulot ng pinsala hindi lamang indibidwal na gumagamit, ngunit lahat din online na sistema negosyo.

Upang maiwasang mangyari ito, ilang mga hakbang sa seguridad ng network ang ginawa upang protektahan ang pagpapadala ng personal na data. Pangunahin sa mga ito ang mga proseso ng pag-encrypt at pag-decrypt ng data, na kilala bilang cryptography. May tatlong pangunahing paraan ng pag-encrypt na ginagamit sa karamihan ng mga system ngayon: pag-hash, simetriko at walang simetrya na pag-encrypt. SA sumusunod na mga linya, pag-uusapan ko ang bawat isa sa mga uri ng pag-encrypt na ito nang mas detalyado.

Mga uri ng pag-encrypt

Symmetric encryption

Sa simetriko na pag-encrypt, ang normal na nababasang data, na kilala bilang plain text, ay naka-encrypt upang ito ay maging hindi nababasa. Ginagawa ang data scrambling na ito gamit ang isang key. Kapag na-encrypt na ang data, maaari itong maipadala nang ligtas sa tatanggap. Sa tatanggap, ang naka-encrypt na data ay na-decode gamit ang parehong key na ginamit para sa pag-encode.

Kaya, malinaw na ang susi ay ang pinakamahalagang bahagi ng simetriko na pag-encrypt. Dapat itong itago mula sa mga tagalabas, dahil ang sinumang may access dito ay makakapag-decrypt ng pribadong data. Ito ang dahilan kung bakit ang ganitong uri ng pag-encrypt ay kilala rin bilang isang "lihim na susi".

Sa modernong mga sistema, ang susi ay karaniwang isang string ng data na nagmula sa isang malakas na password, o mula sa isang ganap na random na pinagmulan. Ito ay pinapakain sa simetriko na pag-encrypt software, na gumagamit nito upang i-encrypt ang data ng pag-input. Nagagawa ang pag-scrambling ng data gamit ang isang simetriko na algorithm ng pag-encrypt, gaya ng Data Encryption Standard (DES), Advanced Encryption Standard (AES), o International Data Encryption Algorithm (IDEA).

Mga paghihigpit

Ang pinakamahina na link sa ganitong uri ng pag-encrypt ay ang seguridad ng susi, parehong sa mga tuntunin ng pag-iimbak at paghahatid sa napatotohanang user. Kung makukuha ng isang hacker ang susi na ito, madali niyang mai-decrypt ang naka-encrypt na data, na natalo ang buong layunin ng pag-encrypt.

Ang isa pang kawalan ay ang software na nagpoproseso ng data ay hindi maaaring gumana sa naka-encrypt na data. Samakatuwid, upang magamit ang software na ito, dapat munang ma-decode ang data. Kung ang software mismo ay nakompromiso, kung gayon ang isang umaatake ay madaling makuha ang data.

Asymmetric na pag-encrypt

Ang asymmetric key encryption ay gumagana nang katulad simetriko na susi, dahil gumagamit ito ng susi upang i-encrypt ang mga ipinadalang mensahe. Gayunpaman, sa halip na gamitin ang parehong key, gumagamit siya ng isang ganap na naiiba upang i-decrypt ang mensaheng ito.

Ang susi na ginamit para sa pag-encode ay magagamit sa sinuman at lahat ng gumagamit ng network. Dahil dito, ito ay kilala bilang isang "pampublikong" susi. Sa kabilang banda, ang susi na ginamit para sa pag-decryption ay pinananatiling lihim at inilaan para sa pribadong paggamit ng gumagamit mismo. Samakatuwid, ito ay kilala bilang ang "pribadong" key. Ang asymmetric encryption ay kilala rin bilang public key encryption.

Dahil, sa pamamaraang ito, ang lihim na susi na kailangan upang i-decrypt ang mensahe ay hindi kailangang ipadala sa bawat oras, at ito ay karaniwang kilala lamang sa gumagamit (tatanggap), ang posibilidad na ang isang hacker ay magagawang i-decrypt ang mensahe ay malaki. mas mababa.

Ang Diffie-Hellman at RSA ay mga halimbawa ng mga algorithm na gumagamit ng public key encryption.

Mga paghihigpit

Maraming mga hacker ang gumagamit ng man-in-the-middle bilang isang paraan ng pag-atake upang i-bypass ang ganitong uri ng pag-encrypt. Sa asymmetric encryption, bibigyan ka ng pampublikong key na nakasanayan na ligtas na pagpapalitan data sa ibang tao o serbisyo. Gayunpaman, ang mga hacker ay gumagamit ng panlilinlang sa network upang linlangin ka sa pakikipag-usap sa kanila habang pinaniniwalaan kang nasa ligtas na linya ka.

Upang mas maunawaan ang ganitong uri ng pag-hack, isaalang-alang ang dalawang nakikipag-ugnayan na partido, sina Sasha at Natasha, at isang hacker, si Sergei, na may layuning hadlangan ang kanilang pag-uusap. Una, nagpadala si Sasha ng mensahe sa network na inilaan para kay Natasha, na humihingi ng kanyang pampublikong susi. Hinarang ni Sergei ang mensaheng ito at nakuha ang pampublikong susi na nauugnay sa kanya at ginagamit ito upang i-encrypt at ipadala maling mensahe, Natasha, na naglalaman ng kanyang pampublikong susi sa halip na kay Sasha.

Si Natasha, na iniisip na ang mensaheng ito ay nagmula kay Sasha, ngayon ay naka-encrypt ito gamit ang pampublikong susi ni Sergei, at ibinalik ito. Ang mensaheng ito ay muling naharang ni Sergei, na-decrypt, binago (kung ninanais), muling na-encrypt gamit ang pampublikong susi na orihinal na ipinadala ni Sasha, at ipinadala pabalik kay Sasha.

Kaya naman, nang matanggap ni Sasha ang mensaheng ito, pinaniwalaan niya na nagmula ito kay Natasha at nananatiling walang alam sa foul play.

Hashing

Gumagamit ang pamamaraan ng hashing ng algorithm na kilala bilang hash function upang bumuo ng isang espesyal na string mula sa ibinigay na data, na kilala bilang hash. Ang hash na ito ay may mga sumusunod na katangian:

  • ang parehong data ay palaging gumagawa ng parehong hash.
  • Hindi posibleng makabuo ng raw data mula sa isang hash lamang.
  • Hindi sulit na subukan iba't ibang kumbinasyon input ng data upang subukang bumuo ng parehong hash.

Kaya, ang pangunahing pagkakaiba sa pagitan ng pag-hash at ng iba pang dalawang anyo ng pag-encrypt ng data ay kapag ang data ay na-encrypt (na-hash), hindi na ito maibabalik sa orihinal nitong anyo (na-decrypted). Tinitiyak ng katotohanang ito na kahit na makuha ng isang hacker ang kanyang mga kamay sa hash, ito ay walang silbi sa kanya, dahil hindi niya magagawang i-decrypt ang mga nilalaman ng mensahe.

Ang Message Digest 5 (MD5) at Secure Hashing Algorithm (SHA) ay dalawang malawakang ginagamit na hashing algorithm.

Mga paghihigpit

Tulad ng nabanggit kanina, halos imposibleng i-decrypt ang data mula sa isang naibigay na hash. Gayunpaman, ito ay totoo lamang kung ang malakas na pag-hash ay ipinatupad. Sa kaso ng mahinang pagpapatupad ng diskarte sa pag-hash, gamit ang sapat na mga mapagkukunan at malupit na puwersang pag-atake, ang isang patuloy na hacker ay makakahanap ng data na tumutugma sa hash.

Kumbinasyon ng mga paraan ng pag-encrypt

Tulad ng tinalakay sa itaas, ang bawat isa sa tatlong paraan ng pag-encrypt ay naghihirap mula sa ilang mga disadvantages. Gayunpaman, kapag ang isang kumbinasyon ng mga pamamaraan na ito ay ginamit, sila ay bumubuo ng isang maaasahan at mataas epektibong sistema pag-encrypt.

Kadalasan, pinagsama at ginagamit ang mga pribado at pampublikong key technique. Ang paraan ng pribadong key ay nagbibigay-daan para sa mabilis na pag-decryption, habang ang paraan ng pampublikong key ay nag-aalok ng mas ligtas at mas maginhawang paraan upang maihatid ang sikretong key. Ang kumbinasyong ito ng mga pamamaraan ay kilala bilang ang "digital envelope". Programa ng pag-encrypt email Ang PGP ay batay sa "digital envelope" na pamamaraan.

Ang pag-hash ay ginagamit bilang isang paraan ng pagsuri sa lakas ng isang password. Kung ang system ay nag-iimbak ng hash ng password sa halip na ang password mismo, ito ay magiging mas secure, dahil kahit na makuha ng isang hacker ang hash na ito, hindi niya ito mauunawaan (basahin). Sa panahon ng pag-verify, susuriin ng system ang hash ng papasok na password, at tingnan kung ang resulta ay tumutugma sa kung ano ang nakaimbak. Sa ganitong paraan, makikita lamang ang aktwal na password sa mga maikling sandali kung kailan kailangan itong baguhin o i-verify, na lubos na binabawasan ang posibilidad na mahulog ito sa mga maling kamay.

Ginagamit din ang pag-hash upang patotohanan ang data gamit ang isang lihim na key. Ang isang hash ay nabuo gamit ang data at ang key na ito. Samakatuwid, ang data at hash lamang ang nakikita, at ang susi mismo ay hindi ipinadala. Sa ganitong paraan, kung ang mga pagbabago ay ginawa sa alinman sa data o sa hash, ang mga ito ay madaling matukoy.

Sa konklusyon, ang mga diskarteng ito ay maaaring gamitin upang mahusay na i-encode ang data sa isang hindi nababasang format na maaaring matiyak na ito ay nananatiling secure. Karamihan sa mga modernong system ay karaniwang gumagamit ng kumbinasyon ng mga pamamaraan ng pag-encrypt na ito kasama ng malakas na pagpapatupad ng algorithm upang mapabuti ang seguridad. Bilang karagdagan sa seguridad, ang mga sistemang ito ay nagbibigay din ng marami karagdagang benepisyo, tulad ng pag-verify sa pagkakakilanlan ng user, at pagtiyak na ang data na natanggap ay hindi maaaring pakialaman.

Sergey Panasenko,
Pinuno ng departamento ng pagpapaunlad ng software sa Ankad,
[email protected]

Pangunahing Konsepto

Ang proseso ng pag-convert ng bukas na data sa naka-encrypt na data at vice versa ay karaniwang tinatawag na encryption, at ang dalawang bahagi ng prosesong ito ay tinatawag na encryption at decryption, ayon sa pagkakabanggit. Sa matematika, ang pagbabagong ito ay kinakatawan ang mga sumusunod na dependencies, na naglalarawan ng mga aksyon na may paunang impormasyon:

C = Ek1(M)

M" = Dk2(C),

kung saan M (mensahe) - bukas na impormasyon(sa panitikan sa seguridad ng impormasyon na kadalasang tinutukoy bilang "pinagmulang teksto");
C (cipher text) - ang ciphertext (o cryptogram) na nakuha bilang resulta ng pag-encrypt;
E (encryption) - isang encryption function na nagsasagawa ng cryptographic transformations sa source text;
k1 (key) - parameter ng function E, na tinatawag na encryption key;
M" - impormasyong nakuha bilang resulta ng pag-decryption;
D (decryption) - function ng decryption na nagsasagawa ng mga kabaligtaran na pagbabagong cryptographic sa ciphertext;
Ang k2 ay ang susi na ginagamit upang i-decrypt ang impormasyon.

Ang konsepto ng "susi" sa pamantayan ng GOST 28147-89 (symmetric encryption algorithm) ay tinukoy bilang mga sumusunod: "isang tiyak na lihim na estado ng ilang mga parameter ng cryptographic transformation algorithm, na tinitiyak ang pagpili ng isang pagbabago mula sa isang hanay ng mga posible para sa ng algorithm na ito mga pagbabagong-anyo." Sa madaling salita, ang susi ay isang natatanging elemento kung saan maaari mong baguhin ang mga resulta ng algorithm ng pag-encrypt: ang parehong pinagmulang teksto ay ie-encrypt nang iba kapag gumagamit ng iba't ibang mga susi.

Upang ang resulta ng decryption ay tumugma sa orihinal na mensahe (ibig sabihin, para sa M" = M), dalawang kundisyon ang dapat matugunan nang sabay-sabay. Una, ang decryption function na D ay dapat tumugma sa encryption function na E. Pangalawa, ang decryption key k2 ay dapat tumugma sa encryption susi k1.

Kung ang isang cryptographically strong encryption algorithm ay ginamit para sa pag-encrypt, kung gayon sa kawalan ng tamang key k2 imposibleng makakuha ng M" = M. Ang lakas ng cryptographic ay ang pangunahing katangian ng mga algorithm ng pag-encrypt at pangunahing nagpapahiwatig ng antas ng pagiging kumplikado ng pagkuha ng orihinal text mula sa isang naka-encrypt na text na walang key k2.

Ang mga algorithm ng pag-encrypt ay maaaring nahahati sa dalawang kategorya: simetriko at asymmetric encryption. Para sa una, ang ratio ng encryption at decryption key ay tinukoy bilang k1 = k2 = k (ibig sabihin, ang mga function na E at D ay gumagamit ng parehong encryption key). Sa asymmetric encryption, ang encryption key k1 ay kinakalkula mula sa key k2 sa paraang baligtad na conversion imposible, halimbawa, gamit ang formula k1 = ak2 mod p (a at p ang mga parameter ng algorithm na ginamit).

Symmetric encryption

Ang mga symmetric encryption algorithm ay nagmula noong sinaunang panahon: ito ang paraan ng pagtatago ng impormasyon na ginamit ng Romanong emperador na si Gaius Julius Caesar noong ika-1 siglo BC. e., at ang algorithm na naimbento niya ay kilala bilang “Caesar cryptosystem.”

Sa kasalukuyan, ang pinakakilalang symmetric encryption algorithm ay ang DES (Data Encryption Standard), na binuo noong 1977. Hanggang kamakailan, ito ay isang "US standard", dahil inirerekomenda ng pamahalaan ng bansang ito ang paggamit nito para sa pagpapatupad iba't ibang sistema pag-encrypt ng data. Sa kabila ng katotohanan na ang DES ay orihinal na binalak na gamitin nang hindi hihigit sa 10-15 taon, ang mga pagtatangka na palitan ito ay nagsimula lamang noong 1997.

Hindi namin sasaklawin ang DES nang detalyado (halos lahat ng mga libro sa listahan ng mga karagdagang materyales ay mayroon nito detalyadong paglalarawan), at pumunta tayo sa mas modernong mga algorithm ng pag-encrypt. Nararapat lamang na tandaan na ang pangunahing dahilan para sa pagbabago ng pamantayan ng pag-encrypt ay ang medyo mahina nitong lakas ng cryptographic, ang dahilan kung saan ay ang haba ng DES key ay 56 lamang. makabuluhang bit. Alam na ang anumang malakas na algorithm ng pag-encrypt ay maaaring ma-crack sa pamamagitan ng pagsubok sa lahat ng posibleng mga susi sa pag-encrypt (ang tinatawag na pamamaraan malupit na puwersa- malupit na puwersang pag-atake). Madaling kalkulahin na ang isang kumpol ng 1 milyong mga processor, na ang bawat isa ay kinakalkula ang 1 milyong mga susi sa bawat segundo, ay susuriin ang 256 na mga variant ng mga DES key sa halos 20 oras At dahil, ayon sa mga pamantayan ngayon, ganoon kapangyarihan sa pag-compute ay medyo totoo, ito ay malinaw na ang 56-bit key ay masyadong maikli at DES algorithm kailangang palitan ng mas malakas.

Ngayon, dalawang modernong malakas na algorithm ng pag-encrypt ang lalong ginagamit: ang domestic standard na GOST 28147-89 at ang bagong US crypto standard - AES (Advanced Encryption Standard).

Standard GOST 28147-89

Ang algorithm na tinukoy ng GOST 28147-89 (Fig. 1) ay may haba ng encryption key na 256 bits. Ini-encrypt nito ang impormasyon sa mga bloke ng 64 bits (ang mga naturang algorithm ay tinatawag na block algorithm), na pagkatapos ay nahahati sa dalawang subblock ng 32 bits (N1 at N2). Ang subblock N1 ay pinoproseso sa isang tiyak na paraan, pagkatapos kung saan ang halaga nito ay idinagdag sa halaga ng subblock N2 (ang pagdaragdag ay isinagawa modulo 2, i.e. lohikal na operasyon XOR - "eksklusibo o"), at pagkatapos ay pinapalitan ang mga subblock. Ang pagbabagong ito tumatakbo tiyak na numero beses ("rounds"): 16 o 32 depende sa operating mode ng algorithm. Sa bawat pag-ikot, dalawang operasyon ang ginagawa.

Ang una ay susi. Ang mga nilalaman ng subblock N1 ay idinagdag modulo 2 na may 32-bit na bahagi ng key na Kx. Ang buong encryption key ay kinakatawan bilang isang concatenation ng 32-bit na mga subkey: K0, K1, K2, K3, K4, K5, K6, K7. Sa panahon ng proseso ng pag-encrypt, ginagamit ang isa sa mga subkey na ito, depende sa round number at sa mode ng operasyon ng algorithm.

Ang pangalawang operasyon ay ang pagpapalit ng mesa. Pagkatapos ng keying, ang subblock N1 ay nahahati sa 8 bahagi ng 4 na bits, ang halaga ng bawat isa ay pinalitan alinsunod sa kapalit na talahanayan para sa bahaging ito ng subblock. Ang subblock ay pagkatapos ay bit-rotate sa kaliwa ng 11 bits.

Mga pagpapalit ng talahanayan(Kahon ng pagpapalit - S-box) ay kadalasang ginagamit sa mga modernong algorithm ng pag-encrypt, kaya sulit na ipaliwanag kung paano inayos ang naturang operasyon.

Ang mga halaga ng output ng mga bloke ay naitala sa talahanayan. Ang isang bloke ng data ng isang tiyak na dimensyon (sa aming kaso, 4-bit) ay may sariling numerical na representasyon, na tumutukoy sa bilang ng halaga ng output. Halimbawa, kung ang S-box ay mukhang 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 at ang 4-bit block na "0100" dumating sa input (halaga 4), pagkatapos, ayon sa talahanayan, ang halaga ng output ay magiging 15, i.e. "1111" (0 a 4, 1 a 11, 2 a 2 ...). Ang algorithm, na tinukoy ng GOST 28147-89, ay nagbibigay ng apat na mga mode ng pagpapatakbo: simpleng kapalit, gamming, gamming na may puna

at pagbuo ng mga imitasyon na prefix. Ginagamit nila ang parehong pagbabagong-anyo ng pag-encrypt na inilarawan sa itaas, ngunit dahil ang layunin ng mga mode ay iba, ang pagbabagong ito ay isinasagawa nang iba sa bawat isa sa kanila. Nasa mode madaling palitan

Upang i-encrypt ang bawat 64-bit na bloke ng impormasyon, ang 32 round na inilarawan sa itaas ay isinasagawa. Sa kasong ito, ang 32-bit na mga subkey ay ginagamit sa sumusunod na pagkakasunud-sunod:

K0, K1, K2, K3, K4, K5, K6, K7, K0, K1, atbp. - sa round 1 hanggang 24;

K7, K6, K5, K4, K3, K2, K1, K0 - sa round 25 hanggang 32. mode na ito ay isinasagawa sa eksaktong parehong paraan, ngunit may bahagyang naiibang pagkakasunud-sunod ng paggamit ng mga subkey:

K0, K1, K2, K3, K4, K5, K6, K7 - sa round 1 hanggang 8;

K7, K6, K5, K4, K3, K2, K1, K0, K7, K6, atbp. - sa round 9 hanggang 32.

Ang lahat ng mga bloke ay naka-encrypt nang nakapag-iisa sa bawat isa, ibig sabihin, ang resulta ng pag-encrypt ng bawat bloke ay nakasalalay lamang sa mga nilalaman nito (ang kaukulang bloke ng orihinal na teksto). Kung mayroong ilang magkakaparehong bloke ng orihinal (plain) na teksto, ang kaukulang mga bloke ng ciphertext ay magiging magkapareho, na nagbibigay ng karagdagang kapaki-pakinabang na impormasyon para sa isang cryptanalyst na sinusubukang basagin ang isang cipher. Samakatuwid, ang mode na ito ay pangunahing ginagamit para sa pag-encrypt ng mga susi ng pag-encrypt mismo (ang mga multi-key na scheme ay madalas na ipinatupad, kung saan, para sa isang bilang ng mga kadahilanan, ang mga susi ay naka-encrypt sa bawat isa). Dalawang iba pang mga operating mode ang inilaan para sa pag-encrypt ng impormasyon mismo - gamma at gamma na may feedback.

SA mode ng gamma Ang bawat plaintext block ay idinaragdag ng bit by bit modulo 2 sa isang 64-bit cipher gamma block. Ang gamma cipher ay isang espesyal na pagkakasunud-sunod na nakuha bilang isang resulta ng ilang mga operasyon na may mga rehistrong N1 at N2 (tingnan ang Fig. 1).

1. Ang kanilang paunang pagpuno ay isinulat sa mga rehistro ng N1 at N2 - isang 64-bit na halaga na tinatawag na isang mensahe ng pag-synchronize.

2. Ang mga nilalaman ng mga rehistrong N1 at N2 ay naka-encrypt (sa sa kasong ito- i-sync ang mga mensahe) sa simpleng kapalit na mode.

3. Ang mga nilalaman ng register N1 ay idinagdag na modulo (232 - 1) na may pare-parehong C1 = 224 + 216 + 28 + 24, at ang resulta ng karagdagan ay isinulat upang irehistro ang N1.

4. Ang mga nilalaman ng register N2 ay idinagdag modulo 232 na may pare-parehong C2 = 224 + 216 + 28 + 1, at ang resulta ng karagdagan ay isinulat upang irehistro ang N2.

5. Ang mga nilalaman ng registers N1 at N2 ay output bilang isang 64-bit gamma block ng cipher (sa kasong ito, ang N1 at N2 ang bumubuo sa unang gamma block).

Kung kailangan ang susunod na gamma block (ibig sabihin, kailangang magpatuloy ang pag-encrypt o pag-decryption), babalik ito sa hakbang 2.

Para sa decryption, ang gamma ay nabuo sa katulad na paraan, at pagkatapos ay inilapat muli sa ciphertext at gamma bits operasyon ng XOR. Dahil ang operasyong ito ay nababaligtad, sa kaso ng isang wastong binuong sukat, ang orihinal na teksto (talahanayan) ay nakuha.

Encryption at decryption sa gamma mode

Upang mabuo ang cipher na kailangan upang i-decrypt ang gamma, ang user na nagde-decrypt ng cryptogram ay dapat na may parehong key at parehong halaga ng mensahe ng pag-synchronize na ginamit noong nag-encrypt ng impormasyon. Kung hindi, hindi posibleng makuha ang orihinal na teksto mula sa naka-encrypt.

Sa karamihan ng mga pagpapatupad ng GOST 28147-89 algorithm, ang mensahe ng pag-synchronize ay hindi lihim, gayunpaman, may mga sistema kung saan ang mensahe ng pag-synchronize ay ang parehong lihim na elemento bilang ang encryption key. Para sa mga ganoong sistema, ang epektibong haba ng key ng algorithm (256 bits) ay tinataasan ng isa pang 64 bits ng lihim na mensahe ng pag-synchronize, na maaari ding ituring bilang isang pangunahing elemento.

Sa feedback gamma mode, para punan ang N1 at N2 registers, simula sa 2nd block, hindi ang dating gamma block ang ginagamit, ngunit ang resulta ng pag-encrypt ng nakaraang plaintext block (Fig. 2). Ang unang bloke sa mode na ito ay ganap na nabuo na katulad ng nauna.

kanin. 2. Pagbuo ng isang cipher gamma sa gamma mode na may feedback.

Isinasaalang-alang ang mode henerasyon ng imitasyon prefix, dapat tukuyin ang konsepto ng paksa ng henerasyon. Ang imitasyon na prefix ay isang cryptographic checksum, kinakalkula gamit ang encryption key at idinisenyo upang i-verify ang integridad ng mga mensahe. Kapag bumubuo ng isang imitasyon na prefix, ang mga sumusunod na operasyon ay isinasagawa: ang unang 64-bit na bloke ng hanay ng impormasyon, kung saan ang imitasyon na prefix ay kinakalkula, ay isinulat sa mga rehistro ng N1 at N2 at naka-encrypt sa pinababang simpleng kapalit na mode (ang unang 16 na round sa 32 ay ginanap). Ang resultang resulta ay summed modulo 2 kasama ang susunod na bloke ng impormasyon at ang resulta ay nakaimbak sa N1 at N2.

Umuulit ang cycle hanggang sa huling bloke ng impormasyon. Ang nagreresultang 64-bit na nilalaman ng N1 at N2 na mga rehistro o bahagi ng mga ito bilang resulta ng mga pagbabagong ito ay tinatawag na imitasyon na prefix. Ang laki ng imitasyon na prefix ay pinili batay sa kinakailangang pagiging maaasahan ng mga mensahe: sa haba ng imitasyon na prefix r bits, ang posibilidad na ang isang pagbabago sa mensahe ay hindi mapapansin ay 2-r Kadalasan, isang 32-. Ang bit imitation prefix ay ginagamit, ibig sabihin, kalahati ng mga nilalaman ng mga rehistro. Ito ay sapat na, dahil, tulad ng anumang checksum, ang imitasyon na attachment ay pangunahing inilaan upang maprotektahan laban sa hindi sinasadyang pagbaluktot ng impormasyon. Upang maprotektahan laban sa sinadyang pagbabago ng data, iba pa mga pamamaraan ng cryptographic- pangunahing isang electronic digital signature.

Kapag nagpapalitan ng impormasyon, ang imitasyon na prefix ay nagsisilbing isang uri ng karagdagang paraan kontrol. Ito ay kinakalkula para sa plaintext kapag ang anumang impormasyon ay naka-encrypt at ipinadala kasama ng ciphertext. Pagkatapos ng pag-decryption, ang isang bagong halaga ng imitasyon na prefix ay kinakalkula at inihambing sa ipinadala. Kung ang mga halaga ay hindi tumutugma, nangangahulugan ito na ang ciphertext ay nasira sa panahon ng paghahatid o ang mga maling key ay ginamit sa panahon ng pag-decryption. Ang imitasyon na prefix ay partikular na kapaki-pakinabang para sa pagsuri sa kawastuhan ng decryption pangunahing impormasyon kapag gumagamit ng mga multi-key scheme.

Ang GOST 28147-89 algorithm ay itinuturing na isang napakalakas na algorithm - sa kasalukuyan ay wala nang iminungkahi para sa pagsisiwalat nito mabisang pamamaraan kaysa sa pamamaraang "brute force" na binanggit sa itaas. Ang mataas na tibay nito ay nakakamit pangunahin dahil sa mahabang haba key - 256 bits. Kapag gumagamit ng isang lihim na mensahe sa pag-sync, ang epektibong haba ng key ay tataas sa 320 bits, at ang pag-encrypt sa kapalit na talahanayan ay nagdaragdag ng mga karagdagang bit. Bilang karagdagan, ang lakas ng cryptographic ay nakasalalay sa bilang ng mga round ng pagbabagong-anyo, na ayon sa GOST 28147-89 ay dapat na 32 (ang buong epekto ng pagpapakalat ng data ng input ay nakakamit pagkatapos ng 8 na pag-ikot).

pamantayan ng AES

Hindi tulad ng GOST 28147-89 algorithm, na nanatiling lihim sa loob ng mahabang panahon, American standard AES encryption, na nilayon na palitan ang DES, ay pinili sa pamamagitan ng isang bukas na kumpetisyon kung saan ang lahat ng interesadong organisasyon at indibidwal ay maaaring mag-aral at magkomento sa mga algorithm ng kandidato.

Ang isang kompetisyon upang palitan ang DES ay inihayag noong 1997 ng US National Institute of Standards and Technology (NIST - National Institute of Standards and Technology). 15 algorithm ng kandidato ang isinumite sa kumpetisyon, na binuo ng parehong mga kilalang organisasyon sa larangan ng cryptography (RSA Security, Counterpane, atbp.) at mga indibidwal. Ang mga resulta ng kumpetisyon ay inihayag noong Oktubre 2000: ang nagwagi ay ang Rijndael algorithm, na binuo ng dalawang cryptographer mula sa Belgium, Vincent Rijmen at Joan Daemen.

Ang Rijndael algorithm ay hindi katulad ng karamihan sa mga kilalang symmetric encryption algorithm, ang istraktura nito ay tinatawag na "Feistel network" at katulad ng Russian GOST 28147-89. Ang kakaiba ng network ng Feistel ay ang halaga ng input ay nahahati sa dalawa o higit pang mga subblock, na bahagi nito ay pinoproseso sa bawat pag-ikot tiyak na batas, pagkatapos nito ay pinatong sa mga hindi naprosesong subblock (tingnan ang Fig. 1).

Hindi tulad ng domestic encryption standard, ang Rijndael algorithm ay kumakatawan sa isang data block sa anyo ng isang two-dimensional byte array na may sukat na 4X4, 4X6 o 4X8 (ang paggamit ng ilan ay pinapayagan mga nakapirming laki naka-encrypt na bloke ng impormasyon). Ang lahat ng mga operasyon ay ginagawa sa mga indibidwal na byte ng array, gayundin sa mga independiyenteng column at row.

Ang Rijndael algorithm ay nagsasagawa ng apat na pagbabagong-anyo: BS (ByteSub) - pagpapalit ng talahanayan ng bawat byte ng array (Larawan 3); SR (ShiftRow) - paglilipat ng mga hanay ng array (Larawan 4). Sa operasyong ito, ang unang linya ay nananatiling hindi nagbabago, at ang natitira ay cyclically shifted byte-by-byte sa kaliwa ng isang nakapirming bilang ng mga byte, depende sa laki ng array. Halimbawa, para sa isang 4X4 array, ang mga linya 2, 3 at 4 ay inililipat ng 1, 2 at 3 byte ayon sa pagkakabanggit. Susunod ang MC (MixColumn) - isang operasyon sa mga independiyenteng hanay ng array (Larawan 5), kapag ang bawat column ay pinarami ng isang nakapirming matrix c(x) ayon sa isang tiyak na panuntunan. At panghuli, AK (AddRoundKey) - pagdaragdag ng susi. Ang bawat bit ng array ay idinagdag modulo 2 na may katumbas na bit ng round key, na kung saan, ay kinakalkula sa isang tiyak na paraan mula sa encryption key (Fig. 6).


kanin. 3. Operasyon BS.

kanin. 4. Operasyon SR.

kanin. 5. Operation MC.

Ang bilang ng mga encryption round (R) sa Rijndael algorithm ay variable (10, 12 o 14 rounds) at depende sa laki ng block at sa encryption key (mayroong ilang nakapirming laki din para sa key).

Ang pag-decryption ay isinasagawa gamit ang mga sumusunod na reverse operations. Ang talahanayan ay baligtad at ang talahanayan ay pinalitan ng isang kabaligtaran na talahanayan (na may kaugnayan sa ginamit para sa pag-encrypt). Ang kabaligtaran na operasyon sa SR ay ang pag-ikot ng mga hilera sa kanan sa halip na sa kaliwa. Ang kabaligtaran na operasyon para sa MC ay multiplikasyon gamit ang parehong mga panuntunan ng isa pang matrix d(x) na nagbibigay-kasiyahan sa kundisyon: c(x) * d(x) = 1. Ang pagdaragdag ng key AK ay ang kabaligtaran ng sarili nito, dahil ginagamit lamang nito ang XOR operasyon. Ang mga reverse operation na ito ay inilalapat sa panahon ng pag-decryption sa reverse sequence sa ginamit sa panahon ng pag-encrypt.

Ang Rijndael ay naging bagong pamantayan para sa pag-encrypt ng data dahil sa ilang mga pakinabang sa iba pang mga algorithm. Una sa lahat, nagbibigay ito mataas na bilis encryption sa lahat ng platform: parehong sa software at hardware na pagpapatupad. Ito ay nakikilala nang walang kapantay pinakamahusay na mga pagkakataon parallelization ng mga kalkulasyon kumpara sa iba pang mga algorithm na isinumite sa kumpetisyon. Bilang karagdagan, ang mga kinakailangan sa mapagkukunan para sa operasyon nito ay minimal, na mahalaga kapag ginamit sa mga device na may limitadong kakayahan sa pag-compute.

Ang tanging kawalan ng algorithm ay maaaring ituring na likas na hindi kinaugalian na pamamaraan nito. Ang katotohanan ay ang mga katangian ng mga algorithm batay sa network ng Feistel ay pinag-aralan nang mabuti, at ang Rijndael, hindi katulad nila, ay maaaring maglaman ng mga nakatagong kahinaan, na matutuklasan lamang pagkatapos ng ilang oras na lumipas mula noong simula ng malawakang pamamahagi nito.

Asymmetric na pag-encrypt

Ang mga asymmetric encryption algorithm, tulad ng nabanggit na, ay gumagamit ng dalawang key: k1 - ang encryption key, o pampubliko, at k2 - ang decryption key, o sikreto. Ang pampublikong susi ay kinakalkula mula sa lihim: k1 = f(k2).

Ang mga asymmetric encryption algorithm ay batay sa paggamit ng mga one-way na function. Ayon sa kahulugan, ang isang function na y = f(x) ay unidirectional kung: ito ay madaling kalkulahin para sa lahat posibleng mga opsyon x at para sa karamihan ng mga posibleng halaga ng y, medyo mahirap kalkulahin ang halaga ng x kung saan y = f(x).

Ang isang halimbawa ng isang one-way na function ay ang pagpaparami ng dalawang malalaking numero: N = P*Q. Ang pagpaparami mismong ito ay simpleng operasyon. Gayunpaman, ang kabaligtaran na pag-andar (pagkabulok ng N sa dalawang malalaking kadahilanan), na tinatawag na factorization, ayon sa mga pagtatantya ng modernong panahon, ay medyo kumplikado. problema sa matematika. Halimbawa, ang factorization N na may sukat na 664 bits sa P ? Ang Q ay mangangailangan ng humigit-kumulang 1023 na operasyon, at para inversely na kalkulahin ang x para sa modular exponent y = ax mod p na may kilala na a, p at y (na may parehong dimensyon ng a at p) kailangan mong magsagawa ng humigit-kumulang 1026 na operasyon. Ang huling halimbawang ibinigay ay tinatawag na Discrete Logarithm Problem (DLP), at ang ganitong uri ng function ay kadalasang ginagamit sa mga asymmetric encryption algorithm, gayundin sa mga algorithm na ginagamit upang lumikha ng electronic digital signature.

Ang isa pang mahalagang klase ng mga function na ginagamit sa asymmetric encryption ay mga one-way backdoor function. Ang kanilang kahulugan ay nagsasaad na ang isang function ay unidirectional na may backdoor kung ito ay unidirectional at maaari itong makalkula nang mahusay baligtad na pag-andar x = f-1(y), ibig sabihin, kung ang "lihim na daanan" ay kilala (isang tiyak na lihim na numero, sa aplikasyon sa asymmetric encryption algorithm - ang halaga ng sikretong key).

Ang mga one-way na backdoor function ay ginagamit sa malawakang ginagamit na asymmetric encryption algorithm na RSA.

Algoritmo ng RSA

Binuo noong 1978 ng tatlong may-akda (Rivest, Shamir, Adleman), nakuha nito ang pangalan mula sa mga unang titik ng apelyido ng mga developer. Ang pagiging maaasahan ng algorithm ay batay sa kahirapan ng pag-factor ng malalaking numero at pagkalkula ng mga discrete logarithms. Ang pangunahing parameter ng RSA algorithm ay ang system module N, ayon sa kung saan ang lahat ng mga kalkulasyon sa system ay isinasagawa, at N = P*Q (P at Q ay lihim na random na simple. malalaking numero, kadalasan ay pareho ang laki).

Ang lihim na key k2 ay pinili nang random at dapat matugunan ang mga sumusunod na kundisyon:

1

kung saan ang GCD ay ang pinakamalaking karaniwang divisor, ibig sabihin, ang k1 ay dapat na coprime sa halaga ng Euler function na F(N), ang huli ay katumbas ng bilang ng mga positive integer sa hanay mula 1 hanggang N coprime hanggang N, at kinakalkula bilang F(N) = (P - 1)*(Q - 1).

Ang pampublikong key k1 ay kinakalkula mula sa kaugnayan (k2*k1) = 1 mod F(N), at para sa layuning ito ang pangkalahatang Euclidean algorithm (algorithm para sa pagkalkula ng pinakamalaking karaniwang divisor) ay ginagamit. Ang pag-encrypt ng data block M gamit ang RSA algorithm ay isinasagawa tulad ng sumusunod: C=M [sa kapangyarihan k1] mod N. Tandaan na dahil sa isang tunay na cryptosystem gamit ang RSA ang numerong k1 ay napakalaki (kasalukuyang dimensyon nito ay maaaring umabot ng hanggang 2048 bits), direktang pagkalkula ng M [sa kapangyarihan k1] hindi makatotohanan. Upang makuha ito, isang kumbinasyon ng paulit-ulit na pag-squaring ng M at pagpaparami ng mga resulta ay ginagamit.

Ang pagbabaligtad ng function na ito para sa malalaking sukat ay hindi magagawa; sa madaling salita, imposibleng mahanap ang M dahil sa kilalang C, N at k1. Gayunpaman, ang pagkakaroon ng isang lihim na key k2, gamit ang mga simpleng pagbabagong-anyo ay maaaring kalkulahin ng isang tao ang M = Ck2 mod N. Malinaw, bilang karagdagan sa lihim na susi mismo, ito ay kinakailangan upang matiyak ang pagiging lihim ng mga parameter na P at Q. Kung ang isang umaatake ay nakakuha ng kanilang mga halaga , magagawa niyang kalkulahin ang sikretong susi k2.

Aling pag-encrypt ang mas mahusay?

Ang pangunahing kawalan ng simetriko na pag-encrypt ay ang pangangailangan na ilipat ang mga susi "mula sa kamay hanggang sa kamay". Ang disbentaha na ito ay napakaseryoso, dahil ginagawang imposibleng gumamit ng simetriko na pag-encrypt sa mga system na may walang limitasyong bilang ng mga kalahok. Gayunpaman, kung hindi, ang simetriko na pag-encrypt ay may ilang mga pakinabang na malinaw na nakikita laban sa background ng mga malubhang disadvantages ng asymmetric na pag-encrypt.

Ang una sa kanila ay ang mababang bilis ng mga operasyon ng pag-encrypt at pag-decryption, dahil sa pagkakaroon ng mga operasyong masinsinang mapagkukunan. Ang isa pang kawalan ay "teoretikal" - ang lakas ng cryptographic ng mga algorithm ng asymmetric na pag-encrypt ay hindi napatunayan sa matematika. Ito ay pangunahin dahil sa problema ng discrete logarithm - hindi pa napatunayan na ang solusyon nito sa isang katanggap-tanggap na oras ay imposible. Ang mga hindi kinakailangang paghihirap ay nalilikha din ng pangangailangang protektahan ang mga pampublikong susi mula sa pagpapalit - sa pamamagitan ng pagpapalit ng pampublikong susi ng isang legal na gumagamit, ang isang umaatake ay makakapag-encrypt ng isang mahalagang mensahe gamit ang kanyang pampublikong susi at pagkatapos ay madaling i-decrypt ito gamit ang kanyang pribadong susi.

Gayunpaman, ang mga kawalan na ito ay hindi pumipigil sa malawakang paggamit ng mga asymmetric encryption algorithm. Ngayon ay may mga cryptosystem na sumusuporta sa sertipikasyon ng mga pampublikong key, pati na rin ang pagsasama-sama ng simetriko at walang simetriko na mga algorithm ng pag-encrypt. Ngunit ito ay isang paksa para sa isang hiwalay na artikulo.

Karagdagang mga mapagkukunan ng impormasyon

Para sa mga mambabasa na seryosong interesado sa pag-encrypt, inirerekomenda ng may-akda na palawakin ang kanilang mga abot-tanaw sa tulong ng mga sumusunod na aklat.

  1. Brassard J. "Modern cryptology."
  2. Petrov A. A. "Seguridad ng computer: mga pamamaraan ng proteksyon ng cryptographic."
  3. Romanets Yu. V., Timofeev P. A., Shangin V. F. "Proteksyon ng impormasyon sa mga modernong sistema ng computer."
  4. Sokolov A.V., Shangin V.F. "Proteksyon ng impormasyon sa mga distributed corporate network at system."

Ang kumpletong paglalarawan ng mga algorithm ng pag-encrypt ay matatagpuan sa mga sumusunod na dokumento:

  1. GOST 28147-89. Sistema ng pagproseso ng impormasyon. Proteksyon ng cryptographic.
  2. Cryptographic na conversion algorithm. - M.: Pamantayan ng Estado ng USSR, 1989.
  3. AES algorithm: http://www.nist.gov/ae.