IDEA data encryption algorithm. IDEA encryption algorithm

Ang pagsumite ng iyong mabuting gawa sa base ng kaalaman ay madali. Gamitin ang form sa ibaba

magandang trabaho sa site">

Ang mga mag-aaral, nagtapos na mga mag-aaral, mga batang siyentipiko na gumagamit ng base ng kaalaman sa kanilang pag-aaral at trabaho ay lubos na magpapasalamat sa iyo.

Nai-post sa http://www.allbest.ru/

PANIMULA

1. ANALYTICAL BAHAGI

1.1 IDEA algorithm

1.2.1 DES algorithm

1.2.2 RC6 algorithm

1.2.3 Algorithm GOST 28147-89

1.2.4 Mga kalamangan ng IDEA kaysa sa mga analogue

1.4.1 Electronic Code Book - Electronic code book

1.4.2 Cipher Feed Back - reverse loading ng ciphertext

1.4.3 Output Feed Back - reverse loading ng output data

1.4.4 Counter - encryption na may counter

1.4.5 Mga Bentahe ng Cipher Block Chaining kaysa sa mga analogue

2. BAHAGI NG DISENYO

2.3 Pagpapatupad ng software

3. EKSPERIMENTAL

KONGKLUSYON

MGA SANGGUNIAN

PANIMULA

Ang mga simetriko na cryptosystem (din ang simetriko na pag-encrypt, simetriko cipher) ay isang paraan ng pag-encrypt kung saan ang parehong data ay ginagamit para sa pag-encrypt at pag-decryption. cryptographic na susi. Bago ang pag-imbento ng circuit a simetriko na pag-encrypt 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.

Ang data encryption at decryption algorithm 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 nang maaga ang algorithm ng pag-encrypt, pati na rin ang susi sa mensahe, kung wala ang impormasyon ay isang hanay lamang ng mga simbolo na walang kahulugan.

Ang isang klasikong halimbawa ng naturang mga algorithm ay ang simetriko cryptographic algorithm na nakalista sa ibaba: - simpleng pagpapalit;

- solong permutasyon sa pamamagitan ng key;

- dobleng permutasyon;

- permutation "Magic square";

- isang simpleng muling pagsasaayos.

Ang kumpletong pagkawala ng lahat ng istatistikal na pattern ng orihinal na mensahe ay isang mahalagang kinakailangan para sa isang simetriko cipher. Upang gawin ito, ang cipher ay dapat magkaroon ng "avalanche effect", i.e. 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).

Sa kasalukuyan, ang mga simetriko cipher ay:

· harangan ang mga cipher. Iproseso ang 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.

· 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.

Mayroong maraming mga algorithm simetriko cipher, ang mahahalagang parameter kung saan ay:

· tibay;

· haba ng susi;

· bilang ng mga round;

haba ng naprosesong bloke;

· pagiging kumplikado ng pagpapatupad ng hardware/software;

· pagiging kumplikado ng conversion.

1. ANALYTICAL BAHAGI

1.1 IDEA algorithm

IDEA (International Data Encryption Algorithm, internasyonal na algorithm data encryption) ay isang simetriko block data encryption algorithm na patented ng Swiss company na Ascom. Ito ay isang simetriko block encryption algorithm na iminungkahi upang palitan ang pamantayan ng DES. Paunang bersyon IDEA algorithm lumitaw noong 1990 Ang mga developer ng algorithm, sina Xuejia Lai at James Massey ng Swiss Institute ETH Zurich, ay nagbigay dito ng pangalang PES (Proposed Encryption Standard).

Dahil gumagamit ang IDEA ng 128-bit key at 64-bit block size, plaintext ay nahahati sa mga bloke ng 64 bits. Kung hindi posible ang naturang split, ang huling bloke ay may palaman sa iba't ibang paraan isang tiyak na pagkakasunud-sunod ng mga bit. Upang maiwasan ang pagtagas ng impormasyon tungkol sa bawat indibidwal na bloke, iba't ibang mga mode pag-encrypt. Ang bawat orihinal na hindi naka-encrypt na 64-bit block ay nahahati sa apat na subblock ng 16 bit bawat isa, dahil ang lahat ng algebraic na operasyon na ginagamit sa proseso ng pag-encrypt ay ginagawa sa 16-bit na mga numero. Gumagamit ang IDEA ng parehong algorithm para sa pag-encrypt at pag-decryption.

Ginagamit ng IDEA ang mga sumusunod na mathematical operations:

? bitwise karagdagan modulo 2 (eksklusibo O operasyon);

? pagdaragdag ng unsigned integers modulo 2 16 ;

? pagpaparami ng unsigned integers modulo (2 16 +1), na may isang bloke ng 16 na zero na itinuturing bilang 2 16 ;

Ang isang makabuluhang kawalan ay ang IDEA ay patented, dahil pinipigilan nito ang libreng pamamahagi nito. Ang IDEA ay hindi nagbibigay para sa pagtaas ng haba ng key. Ang isa pang kawalan ay maaaring isaalang-alang ang katotohanan na hindi lahat ng mga gawa sa cryptanalysis ay nai-publish, iyon ay, posible na ang cipher ay nasira, o masira sa hinaharap.

Ang istraktura ng IDEA algorithm ay ipinakita sa ibaba (Larawan 1).

kanin. 1. IDEA encryption algorithm

· electronic code book mode (ECB -- Electronic Code Book)

· block chaining mode (CBC - Cipher Block Chaining)

· mode puna sa pamamagitan ng ciphertext (CFB -- Cipher Feed Back)

· Output feedback mode (OFB -- Output Feed Back).

Dito gawaing kurso ay isinasaalang-alang pagpapatupad ng software IDEA encryption algorithm (Cipher Feed Back mode).

1.2 Paghahambing ng mga analogue ng IDEA algorithm

1.2.1 Algorithm DES

DES (Data Encryption Standard) -- Isang simetriko na algorithm sa pag-encrypt kung saan ang isang key ay ginagamit sa parehong pag-encrypt at pag-decrypt ng data. Ang DES ay may 64-bit na mga bloke at isang 16-cycle na istraktura ng network ng Feistel;

Gumagamit ang algorithm ng kumbinasyon ng mga nonlinear (S-boxes) at linear (permutations E, IP, IP-1) na mga pagbabago.

Dahil ang DES ay tumatakbo sa 64-bit na mga bloke at gumagamit ng 56-bit na key, ang haba ng key na ito ay tumutugma sa 256 na kumbinasyon, na hanggang kamakailan ay nagbigay ng sapat na antas ng seguridad (8 kahit na mga bit ng buong 64-bit na key ay hindi ginagamit, parity bits ay ang pinakamaliit makabuluhang bit key byte). Ang input block ng data, na binubuo ng 64 bits, ay na-convert sa isang output block na magkapareho ang haba.

Dahil sa paggamit ng 56-bit encryption key, ang DES algorithm ay maaaring ma-crack sa pamamagitan ng brute force sa anumang modernong computer system sa isang napaka-makatotohanang time frame - ilang araw.

DES simetriko cryptosystem, na tinukoy bilang 16-round Feistel cipher, ay orihinal na inilaan para sa pagpapatupad ng hardware. Kapag ang DES ay ginagamit upang magpadala ng impormasyon, upang i-encrypt at i-decrypt ang isang mensahe o upang lumikha at mag-verify ng isang message authentication code (MAC), dapat malaman ng nagpadala at tatanggap ang sikretong key.

Ang proseso ng pag-encrypt ng DES algorithm ay binubuo ng isang paunang permutasyon ng mga bit ng isang 64-bit block, labing-anim na cycle ng pag-encrypt, at sa wakas ay isang reverse bit permutation (Fig. 2).

Fig.2. DES encryption algorithm

1.2.2 RC6 algorithm

Algorithm Ang RC6 ay isang simetriko block cryptographic algorithm na nagmula sa RC5 algorithm.

Ang RC6 cipher na pumasok sa kompetisyon ng AES ay sumusuporta sa 128-bit block na haba at 128-, 192-, at 256-bit na haba ng key, ngunit ang algorithm mismo ay maaaring i-configure upang suportahan ang isang mas malawak na hanay ng parehong block at key na haba (mula 0 hanggang 2040 bits).

Ay isang finalist ng AES at ginagamit ang halos lahat mga umiiral na teknolohiya, na ginagamit sa mga cryptographic algorithm, gayunpaman, ang isa sa mga primitive na operasyon ay ang pagpaparami ng operasyon, na mabagal na gumanap sa ilang mga kagamitan at ginagawang mahirap na ipatupad ang cipher sa isang bilang ng mga platform ng hardware at, na naging isang sorpresa para sa ang mga may-akda, sa mga system na may Arkitektura ng Intel Ang IA-64 ay medyo hindi maganda ang pagpapatupad. SA sa kasong ito ang algorithm ay nawawala ang isa nito pangunahing pakinabang -- mataas na bilis pagpapatupad, na naging dahilan ng pagpuna at isa sa mga hadlang upang mapili bilang bagong pamantayan.

kanin. 3. RC6 encryption algorithm

Ang istruktura ng pag-encrypt ng RC6 algorithm ay ipinapakita sa Fig. 3. Maikling paglalarawan ng algorithm: ang algorithm ay gumagamit ng 20 round ng mga pagbabagong-anyo, bago kung saan ang partial input whitening ay ginanap:

o B = B + K 0 mod 2 32

o D = D + K 1 mod 2 32 ,

kung saan ang A, B, C, D ay ang kasalukuyang mga halaga ng naprosesong 32-bit na mga subblock, at ang K 0 ...K 43 ay mga fragment ng extended key.

Ang bahagyang exit bleaching ay ginagawa sa parehong paraan:

o A = A + K 42 mod 2 32

o C = C + K 43 mod 2 32 .

Sa bawat pag-ikot ng algorithm, ang mga sumusunod na aksyon ay isinasagawa:

o t 1 = f(B)<<< 5,

o t 2 = f(D)<<< 5,

o A = ((A E t 1)<<< t 2) + K 2i mod 2 32 ,

o C = ((C E t 2)<<< t 1) + K 2i+1 mod 2 32 ,

kung saan ang t 1 at t 2 ay pansamantalang mga variable, ang bilang ng mga rotation bit bawat variable na bilang ng mga bit ay tinutukoy ng halaga ng 5 hindi bababa sa makabuluhang mga bit ng parameter (t 1 o t 2), ang f() function ay gumaganap ng sumusunod parisukat na pagbabagong-anyo:

f(x) = x * (2x + 1) mod 2 32 .

Sa dulo ng bawat pag-ikot, ang mga subblock ay inililipat.

Mga kalamangan ng algorithm:

· Ang simpleng istraktura ng algorithm ay nagpapadali sa pagsusuri nito.

· Ang pinakamabilis sa mga algorithm ng finalist ng AES sa 32-bit na mga platform.

· Ang pag-encrypt at pag-decryption sa RC6 algorithm ay halos magkapareho. Mga disadvantages ng algorithm:

· Ang bilis ng pag-encrypt ng software ay lubos na nakadepende sa kung sinusuportahan ng platform ang 32-bit multiplication at variable-bit rotation.

· Ang RC6 ay mahirap ipatupad sa hardware at sa mga kondisyon ng limitadong mapagkukunan.

· Medyo mahirap protektahan laban sa mga pag-atake sa mga tuntunin ng oras ng pagpapatupad at paggamit ng kuryente.

· Hindi ganap na sinusuportahan ang on-the-fly key expansion.

· Parallelization ng mga kalkulasyon kapag ang pag-encrypt gamit ang RC6 algorithm ay magagawa nang may mga limitasyon.

1.2.3 Algorithm GOST 28147-89

Ang GOST 28147-89 ay isang Soviet at Russian symmetric encryption standard na ipinakilala noong 1990, isa ring CIS standard. Buong pangalan - "GOST 28147-89 Mga sistema ng pagproseso ng impormasyon. Proteksyon ng cryptographic. Cryptographic conversion algorithm".

Ang istraktura ng algorithm ay ipinakita sa ibaba (Larawan 4).

kanin. 4. Encryption algorithm GOST 28147-89

I-block ang cipher algorithm. Kapag gumagamit ng paraan ng pag-encrypt ng gamma, magagawa nito ang mga function ng isang stream cipher algorithm. GOST 28147-89 -- block cipher na may 256-bit key at 32 conversion cycle, na tumatakbo sa 64-bit blocks. Ang batayan ng cipher algorithm ay ang Feistel network. Mayroong apat na operating mode ayon sa GOST 28147-89: simpleng pagpapalit, gamming, gamming na may feedback, at simulation insert generation mode.

Ang mga bentahe ng algorithm: ang kawalang-saysay ng isang puwersang pag-atake, ang kahusayan ng pagpapatupad at, nang naaayon, mataas na pagganap sa mga modernong computer, ang pagkakaroon ng proteksyon laban sa pagpapataw ng maling data (generation ng imitative insertion) at ang parehong cycle ng pag-encrypt sa lahat apat na GOST algorithm, isang mas malaking key kumpara sa DESX algorithm.

Mga disadvantages ng algorithm: Ang mga pangunahing problema ng GOST ay nauugnay sa hindi kumpleto ng pamantayan sa mga tuntunin ng pagbuo ng mga susi at kapalit na mga talahanayan. Ito ay pinaniniwalaan na ang GOST ay may "mahina" na mga susi at kapalit na mga talahanayan, ngunit ang pamantayan ay hindi naglalarawan ng mga pamantayan para sa pagpili at pag-aalis ng mga "mahina". Gayundin, hindi tinukoy ng pamantayan ang isang algorithm para sa pagbuo ng talahanayan ng pagpapalit (S-boxes). Sa isang banda, ito ay maaaring karagdagang lihim na impormasyon (bilang karagdagan sa susi), at sa kabilang banda, ito ay nagtataas ng isang bilang ng mga problema: imposibleng matukoy ang cryptographic na lakas ng algorithm nang hindi nalalaman ang talahanayan ng pagpapalit nang maaga. ; ang mga pagpapatupad ng algorithm mula sa iba't ibang mga tagagawa ay maaaring gumamit ng iba't ibang mga kapalit na talahanayan at maaaring hindi tugma sa isa't isa; ang posibilidad ng sadyang pagkakaloob ng mahina na kapalit na mga talahanayan ng mga awtoridad sa paglilisensya ng Russian Federation.

1.2.4 Mga Bentahe IDEYA nangunguna sa mga analogue

Sa pagpapatupad ng software sa Ang Intel486SX ay dalawang beses na mas mabilis kaysa sa DES IDEA, na kung saan ay isang makabuluhang pagtaas sa bilis ng IDEA's key length ay 128 bits, kumpara sa DES's 56 bits, na isang mahusay na pagpapabuti laban sa brute force. Ang posibilidad ng paggamit ng mga mahihinang key ay napakaliit at umaabot sa 1/2 64 . Ang IDEA ay mas mabilis kaysa sa GOST 28147-89 algorithm (sa pagpapatupad ng software sa Intel486SX). Ang paggamit ng IDEA sa parallel encryption mode sa Pentium III at Pentium MMX processor ay nagbibigay-daan sa pagkuha ng mataas na bilis. Kung ikukumpara sa mga finalist ng AES, ang 4-way na IDEA ay bahagyang mas mabagal kaysa sa RC6 at Rijndael sa Pentium II, ngunit mas mabilis kaysa sa Twofish at MARS. Sa Pentium III 4-way IDEA ay mas mabilis pa sa RC6 at Rijndael. Ang isa pang bentahe ay ito ay mahusay na pinag-aralan at lumalaban sa mga kilalang cryptanalysis tool.

1.3 Cipher Block Chaining mode - pag-chain ng mga bloke gamit ang ciphertext

Sa CBC encryption mode, ang lahat ng mga bloke ng mensahe ay "pinagsama-sama" gamit ang ciphertext.

Sa algorithm ng pag-encrypt, ang input ng function sa bawat oras na natatanggap ang resulta ng modulo 2 summation ng bukas na data ng susunod na block ng mensahe at ang output function para sa nakaraang block. Dahil ang output data ng function para sa susunod na block ay direktang napupunta sa output ng CBC algorithm, iyon ay, ito ay ang ciphertext ng block na ito at sa parehong oras ay napupunta sa input ng parehong function upang i-encrypt ang kasunod na block, sinasabi nila na ang mga bloke ay nakakadena gamit ang ciphertext. Ang unang bloke ng bukas na data ay summed up sa tinatawag na. vector ng pagsisimula.

Ang vector ng initialization na ito ay nagiging kilala sa parehong nagpadala at ang tatanggap sa pinakadulo simula ng session ng komunikasyon (samakatuwid, ito ay madalas na tinatawag na isang synchronization message). Ang pag-decryption ay nangyayari, nang naaayon, sa reverse order - unang isang function ay inilapat sa ciphertext, at pagkatapos ay summed sa nakaraang ciphertext block upang makuha ang susunod na plaintext block sa output ng algorithm. Ang unang bloke ng plaintext ay, muli, muling binuo gamit ang initialization vector.

Kaya, para sa lahat ng i = 1...n, ang ciphertext block C(i) ay tinukoy bilang mga sumusunod:

C(i) = IDEA(M(i) xor C(i-1)),

Ang pag-decryption ay isinasagawa tulad ng sumusunod:

M(i) = C(i-1) xor IDEA-1(C(i)),

Ang block M(i) ay isang function ng C(i-1) at C(i) lamang. Samakatuwid, ang isang error sa paghahatid ay magreresulta sa pagkawala ng dalawang bloke lamang ng pinagmulang teksto.

1.4 Paghahambing ng mga analogue ng CBC encryption mode

Kapag gumagamit ng block ciphers, iba't ibang encryption scheme ang ginagamit, na kilala bilang encryption operating modes para sa block ciphers. Malinaw na ang paggamit ng isa o isa pang mode ng pag-encrypt ay hindi dapat negatibong makaapekto sa kahusayan at, lalo na, ang lakas ng cryptographic ng block cipher. Nagbibigay-daan sa iyo ang mga mode ng pag-encrypt na magpatupad ng mga karagdagang function na wala sa orihinal na disenyo ng block cipher.

1.4.1 Electronic Code Book - Electronic code book

Ang mode na ito ay isang elektronikong analogue ng mode na ginagamit ng mga ahente upang magpadala ng mga naka-encrypt na mensahe pabalik sa simula XX siglo. Nakatanggap ang ahente ng isang notebook, na ang bawat pahina ay naglalaman ng isang natatanging pagkakasunud-sunod - isang code kung saan naka-encrypt ang mensahe. Pagkatapos gamitin, ang naturang pahina ay napunit sa notebook at nawasak. Kung kinakailangan, ang mensahe ay dinagdagan upang walang hindi nagamit na code ang nananatili sa mga punit-punit na pahina. Ang tumatanggap na partido ay may kopya ng notepad, samakatuwid, sa kondisyon na ang mga pahina ay ginamit nang sabay-sabay, ang encryption mode na ito ay nagbibigay ng parehong pag-encrypt at pag-decryption ng mga mensahe. Sa ECB, ang paggamit ng isang pahina ng codebook kapag nag-encrypt ay tumutugma sa paglalapat ng pagbabago sa data ng pag-input gamit ang function na CIPH k, at kapag nagde-decryption - CIPH -1 k. Upang mag-synchronize ang parehong partido, sapat na ang pagsang-ayon sa halaga ng lihim na key K.

Tulad ng makikita mula sa figure, ang buong ECB algorithm ay binubuo ng direktang paglalapat ng mga function sa parehong mensahe at ang ciphertext para sa encryption at decryption, ayon sa pagkakabanggit, na maaari ding ipahayag sa anyo ng mga equation: ECB encryption:

C j = CIPH K (P j) ,

kung saan ang j=1…n

ECB decryption:

P j = CIPH K (C j),

kung saan ang j=1…n

Kaya, ang pag-encrypt ay nangyayari sa mga bloke na tumutugma sa laki ng input/output data para sa mga function at. Ang mga bloke ay naka-encrypt nang hiwalay at independiyente sa bawat isa, na nagpapahintulot na gawin ito nang magkatulad. Ang kalamangan na ito ng ECB mode at ang pagiging simple nito ay natatakpan ng dalawang makabuluhang disadvantages. Ang una ay ang haba ng mensahe ay dapat na isang multiple ng haba ng input data block ng block cipher, iyon ay, ang buong mensahe ay maaaring hatiin sa isang integer na numero ng naturang mga bloke, o kinakailangan na kahit papaano dagdagan ang huling bloke ng data na hindi nagdadala ng impormasyon. Ang pangalawang disbentaha ay mas makabuluhan.

Dahil sa panahon ng pag-encrypt, ang susunod na bloke ng ciphertext ay ganap na natutukoy lamang ng kaukulang bloke ng plaintext at ang halaga ng sikretong key K, ang mga magkakaparehong bloke ng plaintext ay mako-convert sa mode na ito sa magkatulad na mga bloke ng ciphertext. At kung minsan ito ay hindi kanais-nais, dahil maaari itong magbigay ng susi sa pagsusuri sa nilalaman ng mensahe. Halimbawa, kung ang data sa isang hard drive ay naka-encrypt, ang walang laman na espasyo ay mapupuno ng parehong mga byte na naiwan doon mula sa pag-format ng disk. Nangangahulugan ito na mula sa ciphertext posible na hulaan ang laki ng kapaki-pakinabang na impormasyon sa disk. Sa ganitong mga kaso, kailangan mong gumamit ng iba pang mga mode ng pag-encrypt.

1.4.2 Cipher Feed Back

Ang Cipher Feed Back Ang Ciphertext feedback mode ay isa sa mga symmetric encryption scheme kung saan ang isang naka-encrypt na block ng text ay isang bitwise na pagdaragdag ng isang block ng plaintext na may naka-encrypt na resulta ng encryption ng nakaraang block. Mayroon itong pagbabago na nagpapahintulot sa iyo na i-encrypt ang data na ang laki ay mas mababa sa laki ng cipher block, na ginagawang posible na i-encrypt ang isang stream ng data nang hindi naghihintay para sa kinakailangang bilang ng mga bit na dumating sa input.

Sa mode na ito, maaaring mag-iba ang laki ng block mula sa 64. Ang source file M ay binabasa sa magkakasunod na t-bit blocks (t<= 64): M = M(1)M(2)...M(n) (остаток дописывается нулями или пробелами).

Ang 64-bit shift register (input block) ay unang naglalaman ng right-justified IV. Para sa bawat sesyon ng pag-encrypt, isang bagong vector ng pagsisimula ang ginagamit.

Para sa lahat ng i = 1...n, ang ciphertext block C(i) ay tinukoy bilang sumusunod:

C(i) = M(i) xor P(i-1),

kung saan ang P(i-1) ay ang pinaka makabuluhang t bit ng IDEA(C(i-1)) na operasyon, at C(0) = IV.

Ang shift register ay ina-update sa pamamagitan ng pag-alis nito sa pinakamataas na t bits at pagdaragdag ng C(i) sa kanan.

Madali din ang pagbawi ng naka-encrypt na data: Ang P(i-1) at C(i) ay kinakalkula sa parehong paraan at M(i) = C(i) xor P(i-1).

1.4.3 Output Feedback

Ang OFB mode, tulad ng CFB, ay in-line, iyon ay, ang function tinawag sa algorithm bago paglagom sa isang bahagi ng plaintext. Ngunit sa pagkakataong ito ang input ay hindi ang ciphertext mula sa nakaraang pag-ulit, kundi ang data ng output nito. Iyon ay, ang function na mga loop.

Sa ganoong sitwasyon, nagiging mahalaga na gamitin ang initialization vector nang isang beses. Sabihin nating dalawang magkaibang mensahe ang naka-encrypt sa OFB mode gamit ang parehong initialization vector. Pagkatapos, kung nalaman ng kalaban ang anumang j-th plaintext block ng unang mensahe, kung gayon, sa pagkakaroon ng j-th ciphertext block, madali niyang makalkula ang Oj - ang output data, at dahil nakadepende lamang sila sa initialization vector, na ay pareho para sa parehong mga mensahe, pagkatapos ay maaari nating sabihin na sa pangalawang mensahe ito ay magiging parehong Oj, kaya, ang pagkakaroon ng j block ng ciphertext ng pangalawang mensahe, ang kaaway ay agad na makakatanggap ng plaintext ng j-th block ng ang pangalawang mensahe.

Samakatuwid, sa OFB algorithm, ito ay kinakailangan upang maiwasan ang hindi lamang pag-uulit ng initialization vectors, ngunit din na ang anumang j-th block ng function input data para sa isang mensahe ay hindi ginagamit bilang isang initialization vector para sa isa pang mensahe. Nasa ibaba ang mga equation para sa OFB encryption: OFB encryption:

I j = O j -1 , j = 1.2, … n

C j = P j + O j , j = 1.2, … n-1

C n = P n + MSB t (O n)

OFB decryption:

I j = O j - 1 , j = 2, … n

O j = CIPH K (I j), j = 1.2, … n

P j = C j + O j , j = 1.2, … n-1

P n = C n + MSB t (O n) ,

kung saan ang "+" ay ang xor operation.

Ang problema sa pagkumpleto ng mensahe para sa OFB ay nalutas nang simple: para sa huli, posibleng hindi kumpleto, bloke ng mensahe, eksakto kung gaano karaming mga piraso ng data ng output ng function ang ginagamit dahil may mga piraso sa bloke na ito. Kaya, sa mode na ito, hindi katulad ng mga nauna, ang haba ng mensahe ay nananatiling hindi nagbabago sa panahon ng proseso ng pag-encrypt at, pinaka-mahalaga, sa panahon ng paghahatid.

1.4.4 Kontra - pag-encrypt na may counter

Sa stream encryption mode na may counter sa bawat pag-ulit ng encryption algorithm sa function input ang isang random na halaga ng T ay ibinibigay na ang input na ito ay dapat na naiiba para sa lahat ng mga pag-ulit ng algorithm kung saan ang block cipher ay gumagamit ng parehong encryption key, kaya ang isang generator ng mga naturang halaga ay minsan ay tinatawag na isang counter (na nagbibigay ng pinakasimpleng paraan upang bumuo. natatanging mga halaga ng T).

Sa katunayan, ang pangangailangan ng pagiging natatangi ng input data ng isang function sa isang tiyak na halaga ng K ay masisiyahan sa kaso ng paggamit ng isang PRC (pseudorandom code generator), ngunit pagkatapos ay isang paunang inisyal na vector para sa PRC ay kinakailangan sa bahagi ng nagpadala at tumatanggap ng mga mensahe.

Kaya, ang ciphertext sa CTR mode algorithm ay nakuha sa pamamagitan ng pagbubuod ng modulo 2 sa susunod na bloke ng plaintext na may output data ng function. Ang susunod na value na Tj ng message block counter ay ibinibigay sa function input. Nagaganap din ang pag-decryption sa pamamagitan ng pagsusuma ng modulo 2 sa susunod na bloke ng ciphertext at ang resulta ng pagbabago ng function ng susunod na halaga ng counter na Tj. Ang parehong pag-encrypt at pag-decrypt ng mga operasyon sa CTR mode ay maaaring isagawa nang magkatulad at independiyente para sa lahat ng mga bloke. Bilang karagdagan, ang mode na ito ay wala ring huling problema sa pag-block. CTR encryption:

CTR decoding:

Ang CTR mode ay may lahat ng mga pakinabang ng ECB mode (parallel execution, simple at ang kakayahang direktang i-encrypt ang anumang block ng mensahe nang hiwalay at hiwalay sa iba pang mga block). Ngunit bilang karagdagan, itinutuwid ng CTR mode ang lahat ng mga pagkukulang ng pag-encrypt sa electronic codebook mode: ang magkaparehong mga bloke ng plaintext ay hindi na mako-convert sa magkatulad na mga bloke ng ciphertext; Hindi na kailangang i-pad ang huling bloke ng ciphertext. Bilang karagdagan, sa mode na ito (tulad ng sa anumang stream mode) tanging ang encryption function ang ginagamit, at para sa ilang block ciphers (halimbawa, para sa AES - ang bagong American block cipher standard), nagbibigay ito ng ilang performance gain. Ito ang dahilan kung bakit ang mode na ito ay madalas na pinaka-epektibo.

1.4.5 Mga Bentahe ng Cipher Block Chaining kaysa sa mga analogue

Kaya, maaari naming tapusin na ang simetriko encryption mode Ang CBC ay may malinaw na kalamangan sa mga isinasaalang-alang sa itaas, ibig sabihin: sa decryption mode, kapag ang buong ciphertext ay natanggap na, ang mga function ay maaaring isagawa nang magkatulad at malaya para sa lahat ng mga bloke ng mensahe. Nagbibigay ito ng makabuluhang pagtaas ng oras.

Sa mode na ito, sulit na tumuon sa isa pang detalye. Ang katotohanan ay ang huling bloke ng ciphertext, na nakuha sa output ng CBC mode algorithm, ay nakasalalay pareho sa block cipher key at ang initialization vector, at (mas mahalaga sa kasong ito) sa lahat ng mga piraso ng plaintext ng ang mensahe. Nangangahulugan ito na ang huling bloke ng ciphertext ay maaaring gamitin bilang isang uri ng identifier ng mensahe. Ang ganitong identifier ay hindi nagbibigay sa isang tagamasid sa labas ng anumang impormasyon tungkol sa mga nilalaman ng buong mensahe sa kabuuan, at sa parehong oras, halos hindi malabo na kinikilala ito (ang mensahe). Higit pa rito, ito ay kasing mahirap na pekein ang identifier na ito nang hindi nalalaman ang encryption key K tulad ng tamang hulaan ang susi mismo.

2. BAHAGI NG DISENYO

2.1 Functional na pagmomodelo

Batay sa mga kinakailangan para sa software, ang mga sumusunod na function ay tinukoy:

· Pagrehistro ng user na may mga field:

· Source text encryption;

· Pag-decryption ng naka-encrypt na teksto;

· Pagpapakita ng mga huling yugto ng pag-encrypt at pag-decryption sa user sa matagumpay na awtorisasyon.

2.2 Algorithmic na disenyo

Ang isang pangkalahatang algorithm ng pag-encrypt ng IDEA ay ipinapakita sa ibaba (Larawan 5).

Pagkatapos simulan ang programa, dapat ipasok ng user ang pares: login + password sa authorization form, o punan ang registration form. Matapos ipasok ang mga character sa mga form, magsisimulang gumana ang function ng pag-encrypt kapag nag-click ka sa pindutan ng "Login" o "Registration", ayon sa pagkakabanggit.

Ang isang 64-bit na data block ay binabasa mula sa file at nahahati sa apat na 16-bit na subblock. Ang apat na subblock na ito ay nagiging input sa unang loop ng algorithm. Sa figure, ang mga subblock na ito ay itinalaga D 1, D 2, D 3, D 4. Ang bawat round ay gumagamit ng sarili nitong mga subkey ayon sa talahanayan ng mga subkey (Fig. 6). Ang mga operasyong inilarawan kanina at ipinakita sa algorithm diagram ay ginagawa sa 16-bit subblock at plaintext subblock.

Sa dulo ng bawat round ng pag-encrypt, mayroong apat na 16-bit na subblock, na pagkatapos ay ginagamit bilang mga subblock ng input para sa susunod na round ng pag-encrypt. Ang output transform ay isang pinaikling round, ibig sabihin, ang apat na 16-bit na subblock sa output ng ikawalong round at ang apat na kaukulang subblock ay sumasailalim sa inilarawan na mga operasyon.

Pagkatapos ay ang susunod na 64-bit block ng plaintext ay kinuha at ang encryption algorithm ay paulit-ulit. Nagpapatuloy ito hanggang sa ang lahat ng 64-bit na bloke ng source text ay na-encrypt.

Makikita ng user ang naka-encrypt na mensahe pagkatapos ng matagumpay na awtorisasyon.

Ang paraan ng pagkalkula na ginamit upang i-decrypt ang teksto ay mahalagang kapareho ng ginamit upang i-encrypt ito. Ang pagkakaiba lamang ay ang iba't ibang mga subkey ay ginagamit para sa pag-decryption. Sa panahon ng proseso ng pag-decryption, ang mga subkey ay dapat gamitin sa reverse order. Ang una at ikaapat na subkey ng i-th round ng decryption ay nakuha mula sa una at ikaapat na subkey ng (10-i) round ng encryption sa pamamagitan ng multiplicative inversion. Para sa 1st at 9th rounds, ang pangalawa at pangatlong decryption subkey ay nakukuha mula sa pangalawa at ikatlong subkey ng 9th at 1st round ng encryption sa pamamagitan ng additive inversion. Para sa round 2 hanggang 8, ang pangalawa at pangatlong decryption subkey ay nakuha mula sa ikatlo at pangalawang subkey ng round 8 hanggang 2 ng additive inversion encryption. Ang huling dalawang subkey ng i-th round ng decryption ay katumbas ng huling dalawang subkey ng (9-i)-th round ng encryption.

Makikita ng user ang na-decrypt na mensahe pagkatapos na matagumpay na punan ang form ng pahintulot, na may tamang pag-login at password na ipinasok.

kanin. 5. Istruktura ng algorithm ng IDEA

kanin. 6. Ikonekta ang encryption at decryption algorithm IDEA

2.3 Pagpapatupad ng software

Ang course work ay ipinatupad sa Microsoft Visual Studio 2012 programming environment Ang programming language na ginamit sa pagsulat ng trabaho ay C#.

Listahan ng mga pangunahing pamamaraan - mga humahawak, na naglalaman ng pag-andar ng program na binuo:

· public static int idea_hash_cbc (char *s, int len, int k, int iv) function para sa pagkalkula ng CBC hash. Sa function na ito nakukuha namin ang kasalukuyang halaga para sa XOR "a (iv), lumikha ng isang pointer sa isang hanay ng mga naka-hash na data, hatiin ang laki ng array sa pamamagitan ng 8 (suriin ang isang maramihang ng 8), i-encrypt gamit ang formula: C( i) = IDEA(C(i- 1) ^ S(i), KEY), at ibalik ang resultang hash.

· pribadong static na string ShiftByteLeft(string s) shift ng 25 bits paikot sa kaliwa

· pribadong static na string ShiftbyteRight(string s) shift ng 25 bits paikot sa kanan

· pribadong static na string Sum(string a1, string a2) sum modulo 2^16

· pribadong static string Multi(string a1, string a2) multiplication modulo 2^16+1 pribadong static string XOR(string a1, string a2) eksklusibo O

· inline T setBit (T v, int nBitNumber) bit setting function. Binibilang ang mga bit mula sa 0, ang pagnunumero ay mula kaliwa hanggang kanan.

· inline na bool getBit (T v, int nBitNumber) function para sa pagkuha ng bit value (true/false).

· mapa *> keys_archive; isang archive ng mga talahanayan ng mga "round" na key, upang hindi makabuo muli ng mga key sa bawat oras (kabilang ang function: paunang key permutation, final key permutation, shifts, substitution table). pribadong void idea_Encryption (string st1, string st2) IDEA algorithm. Input - 2 linya: 1) isang set ng mga piraso ng read block (haba 64). 2) isang set ng mga piraso ng aming key (haba 128). Output - cipher block (64 character) public string idea_Decryption (string st1, string st2) decryption function gamit ang IDEA algorithm.

· Ang bool CheckLogin(int hash) function ay nagbabasa ng login, kung ang hash ng mga argumento ay katumbas ng read login, isinasara nito ang file at nagbibigay ng positibong resulta. Kung hindi, ipinapakita nito ang mensaheng "Invalid login"

· Ang bool CheckPass(int login_hash, int pass_hash) function ay nagbabasa ng login at password, kung ang login ay katumbas ng hiniling, ngunit ang password ay hindi tumutugma, isinasara nito ang file at ipinapakita ang mensaheng “Invalid password”. Kung ang pag-login at password ay tumugma, ang function ay nagbabalik ng "totoo".

Ang programa ay binubuo ng tatlong form: isang registration form (Fig. 7.), isang authorization form (Fig. 8.) at isang form na may output ng naka-encrypt at decrypted na text (Fig. 9.). Ang mga form na ito ay ipinakita sa ibaba.

software block encryption authentication

Fig.8. Form ng Pagpaparehistro

Fig.9. Form ng output ng impormasyon

3. EKSPERIMENTAL

Pagsubok 1. Pagsubok sa pagkakaroon ng login ng user

Input na data:

· Pag-click sa pindutan ng Pag-login nang hindi naglalagay ng login

Resulta:

· Mensahe ng error. Mangyaring ipasok ang iyong login

Pagsubok 2. Pagsubok sa pagpapatunay ng inilagay na password ng user

Input na data:

· Pag-click sa pindutan ng Login nang hindi naglalagay ng password

Resulta:

· Mensahe ng error. Mangyaring ipasok ang iyong password

Konklusyon: gumagana nang tama ang function ng pag-verify.

Pagsubok 3. Pagsubok sa function ng pag-encrypt na may haba ng text na hindi hihigit sa 50 character.

Input na data:

· Buong pangalan: Ilang teksto

Pagsubok 4. Pagsubok sa function ng pag-encrypt kapag ang haba ng teksto ay higit sa 50 character.

Input na data:

· Buong pangalan: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Konklusyon: Gumagana nang tama ang function ng pag-encrypt.

Pagsubok 4: Pagdaragdag ng character sa simula ng naka-encrypt na hash.

Pagsubok 5: Pagdaragdag ng character sa gitna ng isang naka-encrypt na hash.

Konklusyon: ang bahagi ng teksto ay hindi made-decrypt.

KONGKLUSYON

Sa panahon ng trabaho sa kurso, sa analytical na bahagi, ang iba't ibang simetriko block encryption algorithm ay nasuri at ang mga kalamangan at kahinaan ng IDEA algorithm ay ipinakita. Gayundin, ang mga gawain at mga kinakailangan para sa binuo na programa ay itinakda, na ipinatupad nang buo.

Sa bahagi ng disenyo, ang mga pangunahing pag-andar, pati na rin ang mga parameter ng input at output ng mga function ng IDEA algorithm, ay tinukoy at tinalakay nang detalyado. Isang software development environment at programming language ang napili.

Sa pang-eksperimentong bahagi, ang software ay nasubok na may limang pagsubok. Walang nakitang mga error sa pagpapatupad ng algorithm o pagpapatakbo ng software.

MGA SANGGUNIAN

1. Wikipedia. IDEA algorithm [Electronic na mapagkukunan]. - Access mode: - http://ru.wikipedia.org/wiki/IDEA.

2. MSDN [Electronic na mapagkukunan]. - Access mode: - http://msdn.microsoft.com/ru-ru/.

3. Wikipedia. Concatenation mode ng ciphertext blocks [Electronic resource]. - Access mode: - https://ru.wikipedia.org/wiki/Mode_concatenation_of_ciphertext_blocks.

4. [Electronic na mapagkukunan] - Oleg Zenzin - Mga mode ng pag-encrypt, seksyon Ang akumulasyon ng mga error sa iba't ibang mga mode ng pag-encrypt - Mode ng pag-access: - http://citforum.ru/security/cryptography/rejim_shifrov/

5. [Electronic na mapagkukunan] - Comparative review ng PGP algorithm - Access mode: - https://www.pgpru.com/biblioteka/statji/sravniteljnyjjobzoralgoritmovpgp

Na-post sa Allbest.ru

Mga katulad na dokumento

    Pagpapatupad ng DES algorithm at mga mode ng pag-encrypt para sa anumang haba ng mensahe at anumang haba ng key. Pag-encrypt ng mga mensahe na may iba't ibang haba at susi, na sinusukat ang oras at bilis ng pag-encrypt. Pagpapatupad ng RSA algorithm. Nagse-save ng naka-encrypt na file sa disk.

    course work, idinagdag 01/26/2010

    Pagbuo ng isang application para sa pag-encrypt ng data gamit ang DES5 algorithm: proseso ng pag-encrypt, pag-decryption, pagkuha ng mga susi. Mga detalye ng programa, mga pamamaraan at mga function; paglalarawan ng user interface. Pagpapatupad ng gawain sa kapaligiran ng programming ng DELPHI.

    course work, idinagdag 03/27/2012

    Ang kasaysayan ng paglitaw ng mga symmetric encryption algorithm. Ang papel ng isang simetriko na susi sa pagtiyak sa antas ng pagiging lihim ng isang mensahe. Pagsasabog at pagkalito bilang mga paraan ng pag-convert ng mga bit ng data. DES at IDEA encryption algorithm, ang kanilang mga pangunahing pakinabang at disadvantages.

    gawaing laboratoryo, idinagdag noong 03/18/2013

    Symmetric cryptosystems; mga algorithm para sa pag-encrypt at pag-decrypt ng data, ang kanilang aplikasyon sa teknolohiya ng computer sa mga system para sa pagprotekta ng kumpidensyal at komersyal na impormasyon. Basic operating mode ng DES algorithm, pagbuo ng isang software na pagpapatupad ng susi.

    course work, idinagdag noong 02/17/2011

    Ang kasaysayan ng paglitaw ng symmetric encryption algorithm, mga kondisyon at tampok ng aplikasyon nito sa kasalukuyang yugto. Mga prinsipyo at tungkulin ng teknolohiyang pinag-aaralan. Pagsusuri ng mga pangunahing pakinabang at disadvantages ng paggamit ng algorithm, pagtatasa ng kahinaan nito.

    course work, idinagdag 10/29/2017

    Pag-aaral ng isang pangunahing sistema ng pamamahagi batay sa mga linear na pagbabago. Paglalarawan ng mga kumpidensyal na bahagi ng network ng komunikasyon. Mga katangian ng domestic data encryption algorithm. Suriin ang mga resulta ng mga kalkulasyon ng lakas ng cryptographic ng algorithm ng pag-encrypt.

    pagsubok, idinagdag noong 09/26/2012

    Pagbuo ng isang programa na nagpapatupad ng mga pamamaraan ng pag-encrypt ng teksto at pag-decryption ayon sa pamantayan ng DES (Data Encryption Standard). Ang istraktura ng algorithm ng pag-encrypt, ang pamamaraan para sa pagbuo ng mga pangunahing elemento. Paggamit ng cryptographic software.

    course work, idinagdag noong 06/15/2013

    Pagbuo ng isang cryptographic algorithm para sa isang manual cipher program gamit ang Vigenère table. Pagbuo ng isang programa na nagsasagawa ng pag-encrypt at pag-decryption. Mga tampok ng paggamit ng plaintext mismo bilang isang susi. Algorithm para sa paglutas ng "kabaligtaran" na mga problema.

    course work, idinagdag noong 11/13/2009

    Ang mga simetriko na cryptosystem ay isang paraan ng pag-encrypt kung saan ang parehong cryptographic key ay ginagamit para sa pag-encrypt at pag-decryption. Pagsusuri at pagpapatupad ng algorithm ng pag-encrypt: simple at dobleng permutasyon, magic square permutation.

    course work, idinagdag noong 03/11/2013

    Ang symmetric encryption ay isang paraan ng pag-encrypt na gumagamit ng parehong cryptographic key. Mga function ng karaniwang dialog box para sa pagbubukas at pag-save ng isang file. Isang tipikal na pamamaraan ng mga aksyon kapag bumubuo ng isang lagda. Digital na lagda ng file.

PANIMULA

ANALYTICAL BAHAGI

1 IDEA algorithm

2 Paghahambing ng mga analogue ng IDEA algorithm

2.1 DES algorithm

2.2 RC6 algorithm

2.3 Algorithm GOST 28147-89

2.4 Mga kalamangan ng IDEA kaysa sa mga analogue

3 Cipher Block Chaining mode - pag-chain ng mga bloke gamit ang ciphertext

4 Paghahambing ng mga analogue ng CBC encryption mode

4.1 Electronic Code Book - Electronic code book

4.2 Cipher Feed Back - reverse loading ng ciphertext

4.3 Output Feed Back - reverse loading ng output data

4.4 Counter - encryption na may counter

4.5 Mga Bentahe ng Cipher Block Chaining kaysa sa mga analogue

BAHAGI NG DISENYO

1 Functional na pagmomodelo

2 Algorithmic na disenyo

3 Pagpapatupad ng software

EKSPERIMENTAL

KONGKLUSYON

MGA SANGGUNIAN

PANIMULA

Ang mga simetriko na cryptosystem (din ang simetriko na pag-encrypt, simetriko cipher) ay isang paraan ng pag-encrypt kung saan ang parehong cryptographic na key ay ginagamit para sa pag-encrypt at pag-decryption. Bago ang pag-imbento ng circuit asymmetric encryption 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.

Ang data encryption at decryption algorithm ay malawakang ginagamit sa computer technology sa mga system 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 nang maaga ang algorithm ng pag-encrypt, pati na rin ang susi sa mensahe, kung wala ang impormasyon ay isang hanay lamang ng mga simbolo na walang kahulugan.

Ang isang klasikong halimbawa ng naturang mga algorithm ay ang simetriko cryptographic algorithm na nakalista sa ibaba: - simpleng pagpapalit;

solong permutasyon sa pamamagitan ng susi;

dobleng permutasyon;

permutasyon "Magic square";

simpleng muling pagsasaayos.

Ang kumpletong pagkawala ng lahat ng istatistikal na pattern ng orihinal na mensahe ay isang mahalagang kinakailangan para sa isang simetriko cipher. Upang gawin ito, ang cipher ay dapat magkaroon ng "avalanche effect", i.e. Dapat mayroong isang malakas na pagbabago sa bloke ng pag-encrypt na may isang 1-bit na pagbabago sa data ng pag-input (sa isip, ang mga halaga ng 1/2 bits ng bloke ng pag-encrypt ay dapat magbago).

Sa kasalukuyan, ang mga simetriko cipher ay:

· harangan ang mga cipher. Pinoproseso nila ang impormasyon sa mga bloke na may 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.

Maraming simetriko cipher algorithm, ang mga mahahalagang parameter ay:

· tibay;

· haba ng susi;

· bilang ng mga round;

· haba ng naprosesong bloke;

· pagiging kumplikado ng pagpapatupad ng hardware/software;

· pagiging kumplikado ng conversion.

1.ANALYTICAL BAHAGI

1IDEA algorithm

Ang IDEA (Ingles: International Data Encryption Algorithm, international data encryption algorithm) ay isang simetriko block data encryption algorithm na patent ng Swiss company na Ascom. Ito ay isang simetriko block encryption algorithm na iminungkahi upang palitan ang pamantayan ng DES. Ang unang bersyon ng IDEA algorithm ay lumitaw noong 1990. Ang mga developer ng algorithm, sina Xuejia Lai at James Massey ng Swiss Institute ETH Zurich, ay nagbigay dito ng pangalang PES (Proposed Encryption Standard).

Dahil ang IDEA ay gumagamit ng 128-bit key at 64-bit block size, ang plaintext ay nahahati sa 64-bit na mga bloke. Kung ang gayong pagkahati ay hindi posible, ang huling bloke ay pupunan sa iba't ibang paraan na may isang tiyak na pagkakasunud-sunod ng mga bit. Upang maiwasan ang pagtagas ng impormasyon tungkol sa bawat indibidwal na bloke, ginagamit ang iba't ibang mga mode ng pag-encrypt. Ang bawat orihinal na hindi naka-encrypt na 64-bit block ay nahahati sa apat na subblock ng 16 bit bawat isa, dahil ang lahat ng algebraic na operasyon na ginagamit sa proseso ng pag-encrypt ay ginagawa sa 16-bit na mga numero. Gumagamit ang IDEA ng parehong algorithm para sa pag-encrypt at pag-decryption.

Ginagamit ng IDEA ang sumusunod mga operasyong matematikal:

 bitwise karagdagan modulo 2 ("eksklusibo O" operasyon);

 pagdaragdag ng unsigned integers modulo 2 16;

 pagpaparami ng unsigned integers modulo (2 16+1), na may isang bloke ng 16 na mga zero na itinuturing bilang 2 16;

Ang isang makabuluhang kawalan ay ang IDEA ay patented, dahil pinipigilan nito ang libreng pamamahagi nito. Ang IDEA ay hindi nagbibigay para sa pagtaas ng haba ng key. Ang isa pang kawalan ay maaaring isaalang-alang ang katotohanan na hindi lahat ng mga gawa sa cryptanalysis ay nai-publish, iyon ay, posible na ang cipher ay nasira, o masira sa hinaharap.

Ang istraktura ng IDEA algorithm ay ipinakita sa ibaba (Larawan 1).

kanin. 1. IDEA encryption algorithm

· electronic code book mode (ECB - Electronic Code Book)

· block chaining mode (CBC - Cipher Block Chaining)

· cipherfeedback mode (CFB - Cipher Feed Back)

· output feedback mode (OFB - Output Feed Back).

Sinusuri ng kursong ito ang pagpapatupad ng software ng IDEA encryption algorithm (Cipher Feed Back mode).

1.2Paghahambing ng mga analogue ng IDEA algorithm

1.2.1DES algorithm

DES (Data Encryption Standard) - Isang symmetric encryption algorithm kung saan ang isang key ay ginagamit para sa parehong pag-encrypt at pag-decryption ng data. Ang DES ay may 64-bit na mga bloke at isang 16-cycle na istraktura ng network ng Feistel;

Gumagamit ang algorithm ng kumbinasyon ng mga nonlinear (S-boxes) at linear (permutations E, IP, IP-1) na mga pagbabago.

Dahil ang DES ay tumatakbo sa 64-bit na mga bloke at gumagamit ng 56-bit na key, ang haba ng key na ito ay tumutugma sa 256 na kumbinasyon, na hanggang kamakailan ay nagbigay ng sapat na antas ng seguridad (8 kahit na mga bit ng buong 64-bit na key ay hindi ginagamit, parity bits ay ang hindi bababa sa makabuluhang bits key bytes). Ang input block ng data, na binubuo ng 64 bits, ay na-convert sa isang output block na magkapareho ang haba.

Dahil sa paggamit ng 56-bit encryption key, ang DES algorithm ay maaaring ma-crack sa pamamagitan ng brute force sa anumang modernong sistema ng pag-compute sa isang napaka-makatotohanang time frame - ilang araw Ang simetriko na cryptosystem, na tinukoy bilang ang 16-round na Feistel cipher, ay orihinal na inilaan para sa pagpapatupad ng hardware. Kapag ang DES ay ginagamit upang magpadala ng impormasyon, upang i-encrypt at i-decrypt ang isang mensahe o upang lumikha at mag-verify ng isang message authentication code (MAC), dapat malaman ng nagpadala at tatanggap ang sikretong key.

Ang proseso ng pag-encrypt ng DES algorithm ay binubuo ng isang paunang permutasyon ng mga bit ng isang 64-bit block, labing-anim na cycle ng pag-encrypt, at sa wakas ay isang reverse bit permutation (Fig. 2).

Fig.2. DES encryption algorithm

1.2.2Algorithm RC6

Ang RC6 cipher na pumasok sa kompetisyon ng AES ay sumusuporta sa 128-bit blocks at 128-, 192-, at 256-bit key, ngunit ang algorithm mismo ay maaaring i-configure upang suportahan ang higit pa malawak na hanay haba ng parehong mga bloke at key (mula 0 hanggang 2040 bits).

Ito ay isang finalist ng AES, at gumagamit ng halos lahat ng umiiral na teknolohiya na ginagamit sa mga cryptographic algorithm, gayunpaman, ang isa sa mga primitive na operasyon ay ang multiplication operation, na mabagal na gumanap sa ilang kagamitan at nagpapahirap sa pagpapatupad ng cipher sa isang bilang ng hardware. mga platform at, na naging isang sorpresa para sa mga may-akda, sa mga system na may arkitektura ng Intel IA-64 ay medyo hindi maganda ang pagpapatupad. Sa kasong ito, ang algorithm ay nawawala ang isa sa mga pangunahing bentahe nito - mataas na bilis ng pagpapatupad, na naging dahilan ng pagpuna at isa sa mga hadlang sa pagpili bilang isang bagong pamantayan.

kanin. 3. RC6 encryption algorithm

Ang istruktura ng pag-encrypt ng RC6 algorithm ay ipinapakita sa Fig. 3. Maikling paglalarawan algorithm: ang algorithm ay gumagamit ng 20 round ng mga pagbabagong-anyo, bago kung saan ang partial input whitening ay ginanap:

o B = B + K 0mod 2 32

o D=D+K 1mod 2 32,

kung saan ang A, B, C, D ay ang kasalukuyang mga halaga ng 32-bit na subblock na pinoproseso, at K 0...K 43- mga fragment ng extended key.

Ang bahagyang exit bleaching ay ginagawa sa parehong paraan:

o A = A + K 42mod 2 32

o C=C+K 43mod 2 32.

Sa bawat pag-ikot ng algorithm, ang mga sumusunod na aksyon ay isinasagawa:

o t 1= f(B)<<< 5,

o t 2= f(D)<<< 5,

o A = ((A Å t 1) <<< t2) + K 2i mod 2 32,

o C = ((C Å t 2) <<< t1) + K 2i+1 mod 2 32,

kung saan t 1at t 2- pansamantalang mga variable, ang bilang ng mga rotation bit bawat variable na bilang ng mga bit ay tinutukoy ng halaga ng 5 hindi bababa sa makabuluhang mga bit ng parameter (t 1o t 2), ang function na f() ay gumaganap ng sumusunod na quadratic transformation:

(x) = x * (2x + 1) mod 2 32.

Sa dulo ng bawat pag-ikot, ang mga subblock ay inililipat.

Mga kalamangan ng algorithm:

· Ang simpleng istraktura ng algorithm ay ginagawang mas madaling pag-aralan.

· Ang pinakamabilis sa mga algorithm ng finalist ng AES sa 32-bit na mga platform.

· Ang pag-encrypt at pag-decryption sa RC6 algorithm ay halos magkapareho. Mga disadvantages ng algorithm:

· Ang bilis ng pag-encrypt sa software ay lubos na nakadepende sa kung sinusuportahan ng platform ang 32-bit multiplication at variable-bit rotation.

· Ang RC6 ay mahirap ipatupad sa hardware at sa mga kondisyon ng limitadong mapagkukunan.

· Medyo mahirap protektahan laban sa mga pag-atake sa mga tuntunin ng oras ng pagpapatupad at pagkonsumo ng kuryente.

· Hindi ganap na sinusuportahan ang on-the-fly key expansion.

· Ang parallelization ng mga kalkulasyon kapag ang pag-encrypt gamit ang RC6 algorithm ay magagawa nang may mga limitasyon.

1.2.3Algorithm GOST 28147-89

Ang GOST 28147-89 ay isang Soviet at Russian symmetric encryption standard na ipinakilala noong 1990, isa ring CIS standard. Buong pangalan - "GOST 28147-89 Mga sistema ng pagproseso ng impormasyon. Proteksyon ng cryptographic. Cryptographic conversion algorithm".

kanin. 4. Encryption algorithm GOST 28147-89

I-block ang cipher algorithm. Kapag gumagamit ng paraan ng pag-encrypt ng gamma, magagawa nito ang mga function ng isang stream cipher algorithm. Ang GOST 28147-89 ay isang block cipher na may 256-bit key at 32 conversion cycle, na tumatakbo sa 64-bit blocks. Ang batayan ng cipher algorithm ay ang Feistel network. Mayroong apat na operating mode ayon sa GOST 28147-89: simpleng pagpapalit, gamming, gamming na may feedback, at simulation insert generation mode.

Ang mga bentahe ng algorithm: ang kawalang-saysay ng isang puwersang pag-atake, ang kahusayan ng pagpapatupad at, nang naaayon, mataas na pagganap sa mga modernong computer, ang pagkakaroon ng proteksyon laban sa pagpapataw ng maling data (generation ng imitative insertion) at ang parehong cycle ng pag-encrypt sa lahat apat na GOST algorithm, isang mas malaking key kumpara sa DESX algorithm.

Mga disadvantages ng algorithm: Ang mga pangunahing problema ng GOST ay nauugnay sa hindi kumpleto ng pamantayan sa mga tuntunin ng pagbuo ng mga susi at kapalit na mga talahanayan. Ito ay pinaniniwalaan na ang GOST ay may "mahina" na mga susi at kapalit na mga talahanayan, ngunit ang pamantayan ay hindi naglalarawan ng mga pamantayan para sa pagpili at pag-aalis ng mga "mahina". Gayundin, hindi tinukoy ng pamantayan ang isang algorithm para sa pagbuo ng talahanayan ng pagpapalit (S-boxes). Sa isang banda, ito ay maaaring karagdagang lihim na impormasyon (bilang karagdagan sa susi), at sa kabilang banda, ito ay nagtataas ng isang bilang ng mga problema: imposibleng matukoy ang cryptographic na lakas ng algorithm nang hindi nalalaman ang talahanayan ng pagpapalit nang maaga. ; ang mga pagpapatupad ng algorithm mula sa iba't ibang mga tagagawa ay maaaring gumamit ng iba't ibang mga kapalit na talahanayan at maaaring hindi tugma sa isa't isa; ang posibilidad ng sadyang pagkakaloob ng mahina na kapalit na mga talahanayan ng mga awtoridad sa paglilisensya ng Russian Federation.

1.2.4Mga kalamangan ng IDEA sa mga analogue

Sa pagpapatupad ng software sa Intel486SX kumpara sa DES Ang IDEA ay dalawang beses nang mas mabilis, na isang makabuluhang pagtaas sa bilis, ang pangunahing haba ng IDEA ay 128 bits, kumpara sa 56 bits ng DES, na isang mahusay na pagpapabuti laban sa brute force. Ang posibilidad ng paggamit ng mga mahihinang key ay napakaliit at 1/264. Ang IDEA ay mas mabilis kaysa sa GOST 28147-89 algorithm (sa pagpapatupad ng software sa Intel486SX ). Paggamit ng IDEA sa parallel encryption mode sa mga processor ng Pentium III at Pentium MMX nagbibigay-daan sa iyo upang makamit ang mataas na bilis. Kung ikukumpara sa mga finalist ng AES, ang 4-way na IDEA ay bahagyang mas mabagal kaysa sa RC6 at Rijndael sa Pentium II , ngunit mas mabilis kaysa sa Twofish at MARS . Sa Pentium III Ang 4-way na IDEA ay mas mabilis pa sa RC6 at Rijndael . Ang isa pang bentahe ay ito ay mahusay na pinag-aralan at lumalaban sa mga kilalang cryptanalysis tool.

1.3Cipher Block Chaining mode - block chaining gamit ang ciphertext

Sa CBC encryption mode, ang lahat ng mga bloke ng mensahe ay "pinagsama-sama" gamit ang ciphertext.

Sa algorithm ng pag-encrypt, ang input ng function sa bawat oras na natatanggap ang resulta ng modulo 2 summation ng bukas na data ng susunod na block ng mensahe at ang output function para sa nakaraang block. Dahil ang output data ng function para sa susunod na block ay direktang napupunta sa output ng CBC algorithm, iyon ay, ito ay ang ciphertext ng block na ito at sa parehong oras ay napupunta sa input ng parehong function upang i-encrypt ang kasunod na block, sinasabi nila na ang mga bloke ay nakakadena gamit ang ciphertext. Ang unang bloke ng bukas na data ay summed up sa tinatawag na. vector ng pagsisimula.

Ang vector ng initialization na ito ay nagiging kilala sa parehong nagpadala at ang tatanggap sa pinakadulo simula ng session ng komunikasyon (samakatuwid, ito ay madalas na tinatawag na isang synchronization message). Ang pag-decryption ay nangyayari, nang naaayon, sa reverse order - unang isang function ay inilapat sa ciphertext, at pagkatapos ay summed sa nakaraang ciphertext block upang makuha ang susunod na plaintext block sa output ng algorithm. Ang unang bloke ng plaintext ay, muli, muling binuo gamit ang initialization vector.

Kaya, para sa lahat ng i = 1...n, ang ciphertext block C(i) ay tinukoy bilang mga sumusunod:

C(i) = IDEA(M(i) xor C(i-1)),

Ang pag-decryption ay isinasagawa tulad ng sumusunod:

M(i) = C(i-1) xor IDEA-1(C(i)),

Ang block M(i) ay isang function ng C(i-1) at C(i) lamang. Samakatuwid, ang isang error sa paghahatid ay magreresulta sa pagkawala ng dalawang bloke lamang ng pinagmulang teksto.

1.4Paghahambing ng mga analogue ng CBC encryption mode

Kapag gumagamit ng block ciphers, iba't ibang encryption scheme ang ginagamit, na kilala bilang encryption operating modes para sa block ciphers. Malinaw na ang paggamit ng isa o isa pang mode ng pag-encrypt ay hindi dapat negatibong makaapekto sa kahusayan at, lalo na, ang lakas ng cryptographic ng block cipher. Nagbibigay-daan sa iyo ang mga mode ng pag-encrypt na magpatupad ng mga karagdagang function na wala sa orihinal na disenyo ng block cipher.

1.4.1 Electronic Code Book - Electronic code book

Ang mode na ito ay isang elektronikong analogue ng mode na ginagamit ng mga ahente upang magpadala ng mga naka-encrypt na mensahe pabalik sa unang bahagi ng ika-20 siglo. Nakatanggap ang ahente ng isang notebook, na ang bawat pahina ay naglalaman ng isang natatanging pagkakasunud-sunod - isang code kung saan naka-encrypt ang mensahe. Pagkatapos gamitin, ang naturang pahina ay napunit sa notebook at nawasak. Kung kinakailangan, ang mensahe ay dinagdagan upang walang hindi nagamit na code ang nananatili sa mga punit-punit na pahina. Ang tumatanggap na partido ay may kopya ng notepad, samakatuwid, sa kondisyon na ang mga pahina ay ginamit nang sabay-sabay, ang encryption mode na ito ay nagbibigay ng parehong pag-encrypt at pag-decryption ng mga mensahe. Sa ECB, ang paggamit ng isang pahina ng codebook sa panahon ng pag-encrypt ay tumutugma sa aplikasyon ng pagbabago sa data ng pag-input ng CIPH function. k , at kapag na-decrypt - CIPH -1k . Upang mag-synchronize ang parehong partido, sapat na ang pagsang-ayon sa halaga ng lihim na key K.

Tulad ng makikita mula sa figure, ang buong ECB algorithm ay binubuo ng direktang paglalapat ng mga function sa parehong mensahe at ang ciphertext para sa encryption at decryption, ayon sa pagkakabanggit, na maaari ding ipahayag sa anyo ng mga equation: ECB encryption:

SA j = CIPH K (P j ) ,

ECB decryption:

P j = CIPH K (C j ),

Kaya, ang pag-encrypt ay nangyayari sa mga bloke na tumutugma sa laki ng input/output data para sa mga function at. Ang mga bloke ay naka-encrypt nang hiwalay at independiyente sa bawat isa, na nagpapahintulot na gawin ito nang magkatulad. Ang kalamangan na ito ng ECB mode at ang pagiging simple nito ay natatakpan ng dalawang makabuluhang disadvantages. Ang una ay ang haba ng mensahe ay dapat na isang multiple ng haba ng input data block ng block cipher, iyon ay, ang buong mensahe ay maaaring hatiin sa isang integer na numero ng naturang mga bloke, o kinakailangan na kahit papaano dagdagan ang huling bloke ng data na hindi nagdadala ng impormasyon. Ang pangalawang disbentaha ay mas makabuluhan.

Dahil sa panahon ng pag-encrypt, ang susunod na bloke ng ciphertext ay ganap na natutukoy lamang ng kaukulang bloke ng plaintext at ang halaga ng sikretong key K, ang mga magkakaparehong bloke ng plaintext ay mako-convert sa mode na ito sa magkatulad na mga bloke ng ciphertext. At kung minsan ito ay hindi kanais-nais, dahil maaari itong magbigay ng susi sa pagsusuri sa nilalaman ng mensahe. Halimbawa, kung ang data sa isang hard drive ay naka-encrypt, ang walang laman na espasyo ay mapupuno ng parehong mga byte na naiwan doon mula sa pag-format ng disk. Nangangahulugan ito na mula sa ciphertext posible na hulaan ang laki ng kapaki-pakinabang na impormasyon sa disk. Sa ganitong mga kaso, kailangan mong gumamit ng iba pang mga mode ng pag-encrypt.

1.4.2 Cipher Feed Back - reverse loading ng ciphertext

Ang Cipher Feed Back Ang Ciphertext feedback mode ay isa sa mga symmetric encryption scheme kung saan ang isang naka-encrypt na block ng text ay isang bitwise na pagdaragdag ng isang block ng plaintext na may naka-encrypt na resulta ng encryption ng nakaraang block. Mayroon itong pagbabago na nagpapahintulot sa iyo na i-encrypt ang data na ang laki ay mas mababa sa laki ng cipher block, na ginagawang posible na i-encrypt ang isang stream ng data nang hindi naghihintay para sa kinakailangang bilang ng mga bit na dumating sa input.

Sa mode na ito, maaaring mag-iba ang laki ng block mula sa 64. Ang source file M ay binabasa sa magkakasunod na t-bit blocks (t<= 64): M = M(1)M(2)...M(n) (остаток дописывается нулями или пробелами).

Ang bit shift register (input block) ay unang naglalaman ng right-justified initialization vector IV. Para sa bawat sesyon ng pag-encrypt, isang bagong vector ng pagsisimula ang ginagamit.

Para sa lahat ng i = 1...n, ang ciphertext block C(i) ay tinukoy bilang sumusunod:

(i) = M(i) xor P(i-1),

kung saan ang P(i-1) ay ang pinaka makabuluhang t bit ng IDEA(C(i-1)) na operasyon, at C(0) = IV.

Ang shift register ay ina-update sa pamamagitan ng pag-alis nito sa pinakamataas na t bits at pagdaragdag ng C(i) sa kanan.

Madali din ang pagbawi ng naka-encrypt na data: Ang P(i-1) at C(i) ay kinakalkula sa parehong paraan at M(i) = C(i) xor P(i-1).

1.4.3 Output Feed Back - reverse loading ng output data

Ang OFB mode, tulad ng CFB, ay nakabatay sa thread, ibig sabihin, ang function ay tinatawag sa algorithm bago summing sa isang bahagi ng plaintext. Ngunit sa pagkakataong ito ang input ay hindi ang ciphertext mula sa nakaraang pag-ulit, kundi ang data ng output nito. Iyon ay, ang function na mga loop.

Samakatuwid, sa OFB algorithm, ito ay kinakailangan upang maiwasan ang hindi lamang pag-uulit ng initialization vectors, ngunit din na ang anumang j-th block ng function input data para sa isang mensahe ay hindi ginagamit bilang isang initialization vector para sa isa pang mensahe. Nasa ibaba ang mga equation para sa OFB encryption: OFB encryption:

ako 1= IV

ako j = O j-1 , j = 1.2, … n

O j = CIPH K (I j ), j = 1,2, … n

C j = P j + O j , j = 1.2, … n-1 n = P n +MSB t (O n )

OFB decryption:

ako 1= IV j = O j -1, j = 2, … n j = CIPH K (I j ), j = 1,2, … n j = C j + O j , j = 1.2, … n-1 n = C n +MSB t (O n ) ,

kung saan ang "+" ay ang xor operation.

Ang problema sa pagkumpleto ng mensahe para sa OFB ay nalutas nang simple: para sa huli, posibleng hindi kumpleto, bloke ng mensahe, eksakto kung gaano karaming mga piraso ng data ng output ng function ang ginagamit dahil may mga piraso sa bloke na ito. Kaya, sa mode na ito, hindi katulad ng mga nauna, ang haba ng mensahe ay nananatiling hindi nagbabago sa panahon ng proseso ng pag-encrypt at, pinaka-mahalaga, sa panahon ng paghahatid.

1.4.4 Counter - encryption na may counter

Sa stream encryption mode na may counter, sa bawat pag-ulit ng encryption algorithm, isang tiyak na random na value na T ang ibinibigay sa input ng function na ang input data na ito ay dapat na iba para sa lahat ng mga iteration ng algorithm kung saan ang block cipher ay gumagamit ng parehong encryption key , kaya ang generator ng naturang mga halaga ay kung minsan ay tinatawag na isang counter ( na nagbibigay ng pinakasimpleng paraan upang makabuo ng mga natatanging halaga ng T).

Sa katunayan, ang pangangailangan ng pagiging natatangi ng input data ng isang function sa isang tiyak na halaga ng K ay masisiyahan sa kaso ng paggamit ng isang PRC (pseudorandom code generator), ngunit pagkatapos ay isang paunang inisyal na vector para sa PRC ay kinakailangan sa bahagi ng nagpadala at tumatanggap ng mga mensahe.

Kaya, ang ciphertext sa CTR mode algorithm ay nakuha sa pamamagitan ng pagbubuod ng modulo 2 sa susunod na bloke ng plaintext na may output data ng function. Ang susunod na value na Tj ng message block counter ay ibinibigay sa function input. Nagaganap din ang pag-decryption sa pamamagitan ng pagsusuma ng modulo 2 sa susunod na bloke ng ciphertext at ang resulta ng pagbabago ng function ng susunod na halaga ng counter na Tj. Ang parehong pag-encrypt at pag-decrypt ng mga operasyon sa CTR mode ay maaaring isagawa nang magkatulad at independiyente para sa lahat ng mga bloke. Bilang karagdagan, ang mode na ito ay wala ring huling problema sa pag-block. CTR encryption:

decryption:

Ang CTR mode ay may lahat ng mga pakinabang ng ECB mode (parallel execution, simple at ang kakayahang direktang i-encrypt ang anumang block ng mensahe nang hiwalay at hiwalay sa iba pang mga block). Ngunit bilang karagdagan, itinutuwid ng CTR mode ang lahat ng mga pagkukulang ng pag-encrypt sa electronic codebook mode: ang magkaparehong mga bloke ng plaintext ay hindi na mako-convert sa magkatulad na mga bloke ng ciphertext; Hindi na kailangang i-pad ang huling bloke ng ciphertext. Bilang karagdagan, sa mode na ito (tulad ng sa anumang stream mode) tanging ang encryption function ang ginagamit, at para sa ilang block ciphers (halimbawa, para sa AES - ang bagong American block cipher standard), nagbibigay ito ng ilang performance gain. Ito ang dahilan kung bakit ang mode na ito ay madalas na pinaka-epektibo.

1.4.5 Mga Bentahe ng Cipher Block Chaining kaysa sa mga analogue

Kaya, maaari nating tapusin na ang CBC symmetric encryption mode ay may malinaw na kalamangan sa mga isinasaalang-alang sa itaas, ibig sabihin: sa decryption mode, kapag ang buong ciphertext ay natanggap na, ang mga function ay maaaring maisakatuparan nang magkatulad at independiyente para sa lahat ng mga bloke ng mensahe. Nagbibigay ito ng makabuluhang pagtaas ng oras.

Sa mode na ito, sulit na tumuon sa isa pang detalye. Ang katotohanan ay ang huling bloke ng ciphertext, na nakuha sa output ng CBC mode algorithm, ay nakasalalay pareho sa block cipher key at ang initialization vector, at (mas mahalaga sa kasong ito) sa lahat ng mga piraso ng plaintext ng ang mensahe. Nangangahulugan ito na ang huling bloke ng ciphertext ay maaaring gamitin bilang isang uri ng identifier ng mensahe. Ang ganitong identifier ay hindi nagbibigay sa isang tagamasid sa labas ng anumang impormasyon tungkol sa mga nilalaman ng buong mensahe sa kabuuan, at sa parehong oras, halos hindi malabo na kinikilala ito (ang mensahe). Higit pa rito, ito ay kasing mahirap na pekein ang identifier na ito nang hindi nalalaman ang encryption key K tulad ng tamang hulaan ang susi mismo.

2. BAHAGI NG DISENYO

1 Functional na pagmomodelo

Batay sa mga kinakailangan para sa software, ang mga sumusunod na function ay tinukoy:

· Pagpaparehistro ng user na may mga field:

o login,

o password,

o Buong pangalan,

o petsa ng kapanganakan,

· Awtorisasyon ng user na may mga field:

o login,

o password;

· Pag-encrypt ng pinagmulang teksto;

· Pag-decryption ng ciphertext;

· Pagpapakita ng mga huling yugto ng pag-encrypt at pag-decryption sa user sa matagumpay na awtorisasyon.

2 Algorithmic na disenyo

Ang isang pangkalahatang algorithm ng pag-encrypt ng IDEA ay ipinapakita sa ibaba (Larawan 5).

Pagkatapos simulan ang programa, dapat ipasok ng user ang pares: login + password sa authorization form, o punan ang registration form. Matapos ipasok ang mga character sa mga form, magsisimulang gumana ang function ng pag-encrypt kapag nag-click ka sa pindutan ng "Login" o "Registration", ayon sa pagkakabanggit.

Ang isang 64-bit na data block ay binabasa mula sa file at nahahati sa apat na 16-bit na subblock. Ang apat na subblock na ito ay nagiging input sa unang loop ng algorithm. Sa figure ang mga subblock na ito ay itinalagang D 1,D 2,D 3,D 4Ang bawat round ay gumagamit ng sarili nitong mga subkey ayon sa subkey table (Larawan 6). Ang mga operasyong inilarawan kanina at ipinakita sa algorithm diagram ay ginagawa sa 16-bit subblock at plaintext subblock.

Ito ay isang napakahirap na aral, dahil ang mga cryptosystem na ito ay nagbabantay ng mga lihim ng estado. Maaari mo bang sabihin sa akin kung saan ito nagiging mas sopistikado? Ngunit narito, mangyaring! Sa katunayan, hindi ka dapat matakot, sa pagkakataong ito ay hindi na kami sumisid nang malalim sa matematika at isasaalang-alang ang mga mode ng pag-encrypt - natutunan mo na ang kanilang mga prinsipyo (o hindi). Tingnan natin ang mga nangungunang dayuhang cipher at tingnan kung paano ginagamit ang mga ito sa pagsasanay.

3DES encryption algorithm

Kaya, una sa isang serye ng mga dayuhang cipher, isaalang-alang natin ang 3DES, o sa halip ang pinakamalapit na kamag-anak nitong DES (Data Encryption Standard), na, bagama't hindi na ginagamit bilang ganoon, ay ang ninuno ng 3DES.

Ang DES ay binuo ng isang pangkat ng mga mathematician sa IBM Research Laboratory, na kinabibilangan ng pamilyar na Feistel. Ang unang bersyon ng cipher ay pinangalanang "Lucifer", ngunit kalaunan ay binago ito at kalaunan ay pinagtibay bilang opisyal na Data Encryption Algorithm (DEA). Nanatili itong pamantayan sa mundo sa loob ng mahigit dalawampung taon bago pinalitan ng Triple DES.

Tingnan natin kung paano gumagana ang DES encryption algorithm. Upang gawin ito, kailangan mong tandaan ang pagpapatakbo ng Feistel network. Ang DES ay isang 16-round Feistel network na may simetriko encryption key. Ang haba ng text block ay 64 bits, ang haba ng round key ay 48 bits. Kaya, dumaan tayo sa mga pangunahing hakbang ng DES encryption, na inalis ang malupit na bahagi ng matematika:

  1. Ang teksto, tulad ng anumang iba pang pag-encrypt, ay nahahati sa mga bloke ng 64 bits.
  2. Mula sa isang 56-bit na key, nabuo ang 16 48-bit na round key.
  3. Ang bawat bloke ay sumasailalim sa permutation, iyon ay, ang lahat ng mga piraso ng input block ay binabalasa ayon sa isang tiyak na talahanayan.
  4. Ang bloke ay nahahati sa kalahati at pumapasok sa pamilyar na Feistel network, kung saan 16 na round ang ini-scroll.
  5. Ikinonekta namin ang mga halves.
  6. At isa pang pagbabago.

Ang mga permutasyon sa pagsisimula at pagtatapos ay walang kahulugan para sa cryptography sa DES. Ang parehong mga permutasyon ay walang mga susi, at ang mga talahanayan para sa mga ito ay paunang natukoy. Ang dahilan kung bakit sila kasama sa DES ay hindi malinaw, at ang mga taga-disenyo ng DES ay walang sinabi tungkol dito. Maaaring ipagpalagay na ang algorithm ay binalak na ipatupad sa hardware (sa mga chips) at ang dalawang kumplikadong permutasyon na ito ay dapat na naging mahirap na gayahin ang mekanismo ng pag-encrypt sa software.

Dito, sa katunayan, ang kailangan mo lang malaman tungkol sa pagpapatakbo ng DES algorithm. Kung susuriin natin nang mas malalim kung paano gumagana ang function na tinukoy sa Feistel network, kung gayon ang lahat tungkol dito ay maayos. Nagsasagawa ito ng parehong permutation at pagpapalit (S-boxes, tulad ng naaalala mo mula sa nakaraang artikulo), at karagdagan na may isang round key.

Ngunit bumalik tayo sa triple DES, o Triple DES. Ito ay naging kinakailangan dahil ang 56-bit na DES key ay mahina sa brute force, at sa paglaki ng kapangyarihan sa pag-compute ang problemang ito ay naging mas talamak. Gamit ang teknolohiyang available ngayon, maaaring ma-verify ang isang milyong key bawat segundo. Nangangahulugan ito na aabutin ng higit sa dalawang libong taon ang brute-force na pag-decrypt ng DES gamit ang isang computer na may isang processor lamang.

Ngunit kung kukuha kami ng isang computer na may isang milyong mga core ng processor na magpoproseso ng mga key nang magkatulad, maaari naming suriin ang buong hanay ng mga key sa loob ng humigit-kumulang 20 oras. Noong ipinakilala ang DES, ang halaga ng naturang computer ay ilang milyong dolyar, ngunit mabilis itong bumaba. Isang espesyal na computer ang nilikha noong 1998 - at natagpuan ang susi sa loob ng 112 oras.

Upang malutas ang problema ng mabilis na paghahanap ng susi, iminungkahi ng matatalinong dayuhang cryptographer ang paggamit ng dalawang key at paggamit ng DES nang dalawang beses. Gayunpaman, ang double DES ay mahina sa isang meet-in-the-middle attack. Upang maisagawa ang pag-atakeng ito, ang umaatake ay kailangang magkaroon ng plaintext at ang kaukulang ciphertext.

Ine-encrypt ng attacker ang plaintext kasama ang lahat ng posibleng key, isinusulat ang mga resulta sa Table 1. Pagkatapos ay i-decrypt ang ciphertext kasama ang lahat ng posibleng key at isusulat ang resulta sa Table 2. Pagkatapos ay hahanapin ng attacker ang Tables 1 at 2 para sa mga tugma. Ang ganitong uri ng pag-atake ay nagsasangkot ng brute force na pag-encrypt ng mga key sa parehong panig ng ciphertext at plaintext at nangangailangan ng humigit-kumulang apat na beses na mas maraming pag-compute kaysa sa isang regular na DES key na brute force at medyo maraming memory upang maimbak ang mga intermediate na resulta.

Gayunpaman, sa pagsasagawa ang pag-atake ay magagawa, na ginagawang hindi magagamit ang Double DES.

Ang mga bagay ay ganap na naiiba sa Triple DES. Ang paggamit ng tatlong susi at ang paggamit ng mga algorithm sa pagkakasunud-sunod na ipinahiwatig sa diagram ay nagpalawak ng buhay ng DES sa loob ng ilang taon.

DES encryption algorithm

Kaya ano ang napakahusay tungkol sa DES? Ang algorithm ng pag-encrypt na ito ay sumailalim sa malawak na pagsusuri. Ang DES ay may dalawang napakahalagang katangian ng mga block cipher - avalanche at pagkakumpleto. Oras na para palawakin ang iyong cryptographic na bokabularyo!

Saan ginagamit ang DES? Oo, halos lahat ng dako, ang mga pagpapatupad nito ay naroroon sa karamihan ng mga library ng software. Gayunpaman, sino ang nakakaalam kung gaano kaligtas ang paggamit ng DES sa mga araw na ito? Bagama't inaangkin ng IBM na ang algorithm ay resulta ng 17 taong-taon ng masinsinang cryptanalysis, ang ilang mga tao ay natakot na ang NSA ay nagpasok ng isang butas sa algorithm na nagpapahintulot sa ahensya na madaling i-decrypt ang mga naharang na mensahe.

Ang US Senate Intelligence Committee ay maingat na pinag-aralan ang isyung ito at, siyempre, walang nakita, ang mga singil laban sa NSA ay ibinaba, at ang mga resulta ng pag-aaral ay gayunpaman ay inuri. Sa madaling salita, matagal nang umiikot ang mga alingawngaw at haka-haka sa Amerika kung dapat bang pagkatiwalaan ang DES o hindi. Ngunit, tulad ng paniniwala ko, ang sitwasyon dito ay inilalarawan ng kasabihang "Ang isang matalinong tao ay hindi magsasabi, ang isang tanga ay hindi makakaintindi." Sa huli, inamin ng NSA na hindi nito mapagkakatiwalaan ang IBM sa ganoong mahalagang misyon at gumawa ng ilang mga pagsasaayos, tulad ng pagtukoy sa mga S-box.

Sa buong pag-iral nito, naging target ang DES para sa iba't ibang pamamaraan ng cryptanalysis. Ang mga cryptanalyst ay hindi tumigil sa pagsubok sa mga DES breaking machine upang makita kung gaano katagal bago ma-decipher ang isang text. Kaugnay nito, hindi mabilang na iba't ibang mga pagbabago ng algorithm na ito ang lumitaw, at ang 3DES ay malayo sa pinaka-sopistikadong mga ito.

Algoritmo ng pag-encrypt ng AES

Ang nagwagi sa kompetisyon ng AES, na inihayag noong huling bahagi ng 1997, ang Rijndael algorithm ay binuo ng dalawang Belgian cryptographer, sina Joan Daemen at Vincent Rijmen.

Upang matiyak ang lakas ng cryptographic, ang Rijndael algorithm ay kinabibilangan ng mga paulit-ulit na pag-ikot, na ang bawat isa ay binubuo ng mga pagpapalit, permutasyon at pagdaragdag ng susi. Gayunpaman, hindi tulad ng DES, ang pag-encrypt at pag-decryption sa algorithm na ito ay magkaibang mga pamamaraan.

Gumagana ang AES sa 128-bit na data block at key ng 128, 192 at 256 bits. Sa konsepto, ito ay naiiba sa DES, dahil hindi ito batay sa isang Feistel network, ngunit isang substitution-permutation network (SP network), na ngayon ay isasaalang-alang natin nang mas detalyado.

Sa AES, ang plaintext byte ay hindi nahahati sa dalawang bahagi, tulad ng sa Feistel network, ngunit nakasulat sa anyo ng isang matrix (two-dimensional array) ng mga byte na nakaayos sa ganitong paraan:

Gumagana ang AES sa mga sumusunod na operasyon:
1. ExpandKey - pagkalkula ng mga round key para sa lahat ng round.
2. SubBytes - pagpapalit ng mga bit ayon sa kapalit na talahanayan (S-box).
3. ShiftRows - paikot na inililipat ang mga hilera sa anyo sa pamamagitan ng iba't ibang halaga. 4. MixColumns - paghahalo ng data sa loob ng bawat column ng form.
5. AddRoundKey - pagdaragdag ng round key sa form.

Ngayon, ang AES ay ang opisyal na pamantayan ng gobyerno ng US para sa simetriko na pag-encrypt at malawakang ginagamit. Sa katunayan, ito ay isa sa mga pinaka-unibersal na dayuhang cipher sa ngayon. Tulad ng para sa seguridad ng AES, ito, tulad ng karamihan sa mga cipher, ay may ilang mga kahinaan, at patuloy na hinahanap ng mga cryptanalyst ang mga ito. Gayunpaman, sa kabila nito, ang AES ang pinakabuhay sa lahat ng nabubuhay na bagay.

IDEA encryption algorithm

Ang IDEA (International Data Encryption Algorithm) ay isang block symmetric encryption algorithm na iminungkahi upang palitan ang pamantayan ng DES. Ang unang bersyon ng IDEA algorithm ay lumitaw noong 1990. Ang algorithm ay patented sa USA at karamihan sa mga bansang Europeo. Ang Ascom Tech ay nagmamay-ari ng patent, ngunit ang algorithm ay maaaring gamitin nang walang bayad para sa mga di-komersyal na layunin.

Ang laki ng bloke sa cipher na ito ay 64 bits, ang haba ng key ay 128. Ito ay nagkakahalaga na sabihin kaagad na ang IDEA algorithm ay ang pinakabata sa mga nakalista at ang matematika nito ay napakakumplikado. Isang sandali ng cryptographic na diksyunaryo.

Sa IDEA, ang mga katangiang ito ay nakakamit sa pamamagitan ng paggamit ng mga independiyenteng pagpapatakbo ng matematika. Hindi tulad ng DES, na ang pangunahing operasyon ay XOR (modulo 2 karagdagan), ang IDEA ay nagbibigay ng:

XOR;
karagdagan modulo 2¹6;
multiplication modulo (2¹6; + 1).

Ang pagsasama-sama ng tatlong operasyong ito ay nagbibigay ng isang kumplikadong pagbabago ng data ng input, na ginagawang mas mahirap i-cryptanalyze ang IDEA kaysa sa DES.

Ang IDEA cipher ay nagpapatakbo ng walong round, at sa bawat round ay isang bloke ng plaintext ang binago sa pamamagitan ng mathematical operations. Ang mga gustong "makarating sa ugat" ay maaaring tumingin sa diagram ng isang round ng IDEA cipher na ibinigay sa ibaba. Ang isang bloke ng teksto, 64 bits ang haba, ay nahahati sa mga subblock na 16 bits. Ang bawat block na natanggap ay input sa round at sumasailalim sa isang kumplikadong pagbabago.

Natatanging IDEYA

"Sa tingin ko ito ang pinakamahusay at pinakamatatag na block algorithm na nai-publish hanggang ngayon," sabi ni Bruce Schneier ng IDEA algorithm.

Sa katunayan, ang IDEA ay lubos na matatag dahil sa maraming mathematical operations nito. Bilang karagdagan, ang mga bentahe ng algorithm na ito ay kinabibilangan ng mataas na bilis ng pag-encrypt - halos dalawang beses na mas mataas kaysa sa DES algorithm (depende sa platform kung saan isinasagawa ang pag-encrypt). Gayunpaman, ang bilis ng decryption ay nabawasan dahil sa mabibigat na operasyon ng pagkalkula, ang kabaligtaran ng multiplication modulo (216 + 1).

Siyempre, sinubukan ng matatalinong cryptographer na isagawa ang lahat ng uri ng pag-atake sa kumplikadong cipher na ito. Ang tagumpay ay nakamit ni Paul Hawker, na nagpatupad ng pag-atake, sa pag-aakalang ang cryptanalyst ay walang direktang access sa nais na susi (halimbawa, ang susi ay naka-embed sa ilang uri ng hardware encryptor o smart card), ngunit maaaring baguhin ang iba't ibang mga fragment ng ang susi sa isang tiyak na paraan.

Ang algorithm ng IDEA ay hindi naging isang pang-internasyonal na pamantayan sa pag-encrypt, tulad ng nais ng mga may-akda nito. Gayunpaman, maaari itong ituring na isa sa mga pinakakaraniwang algorithm ng pag-encrypt sa mundo. Ang IDEA ay ginagamit sa iba't ibang mga aplikasyon, kabilang ang kilala at malawakang ginagamit na data security protocol na PGP.

ISDA NI BRUCE SCHNEIER

Si Bruce Schneier ay isang nangungunang figure sa cryptography ngayon. Nalakbay niya ang kalahati ng mundo na nagbibigay ng mga lektura at seminar, at ang kanyang mga libro ay mahigpit na inirerekomenda sa mga gustong malaman ang cryptography. At siyempre, ang isang sikat na tao ay hindi nais na makilala bilang isang tagagawa ng sapatos na walang bota - siya mismo ay bahagi ng isang grupo ng mga developer ng crypto.

Sa madaling sabi, titingnan natin ang ilan sa kanyang pinakatanyag na mga likha - ang mga algorithm ng pag-encrypt ng Blowfish, Twofish at Threefish.

Algoritmo ng pag-encrypt ng blowfish

Unang ipinanganak si blowfish. Tulad ng sinabi mismo ni Schneier, ang algorithm na ito ay idinisenyo para sa pagpapatupad sa malalaking microprocessor. Samakatuwid, ito ay compact (5 KB lamang ng memorya) at simple (gumagamit ng mga simpleng mathematical operations - karagdagan, XOR at sampling mula sa isang table). Pinapayagan ka rin ng algorithm na i-customize ang haba ng key (hanggang 448 bits).

Sa mga 32-bit na processor, ang Blowfish ay gumaganap ng pag-encrypt nang mas mabilis kaysa sa DES, ngunit sa mga smart board, dahil sa pagiging simple nito, hindi ito partikular na naaangkop. Ang Blowfish ay batay sa isang 16-round Feistel network, na dapat ay naiintindihan mo nang mabuti.

Ang algorithm ay ipinatupad sa ilang mga produkto ng software (FolderBolt, Nautilus, PGPfone), ngunit ngayon ay nawawala ang kaugnayan nito.

Twofish encryption algorithm

Pagkatapos ng unang isda, dalawa pa ang lumitaw - ang bagong algorithm ng Twofish ay binuo ng Schneier at kumpanya upang lumahok sa kumpetisyon ng AES. Ang trabaho ni Schneier ay nakapasok sa nangungunang limang finalist, ngunit hindi naging panalo, bagama't mayroon itong lahat ng posibleng pakinabang para dito. ito:

128-bit symmetric block cipher;
mga haba ng key: 128, 192 at 256 bits;
mahusay na software (pangunahin sa mga 32-bit na processor) at pagpapatupad ng hardware;
flexibility (ang kakayahang gumamit ng mas mahabang key, pagiging angkop para sa stream encryption, hash function, at iba pa); Ang pagiging simple ng algorithm ay nagpapadali sa pagsusuri.

Gayunpaman, kumpara sa Rijndael, na kinuha ang pedestal ng AES, ang Twofish ay mas mahirap suriin at may mas mabagal na bilis ng pag-encrypt. Ang algorithm na ito ay binuo batay sa Blowfish na may ilang mga karagdagan at isa ring Feistel network.

Sa kumpetisyon, ang cipher ay sumailalim sa iba't ibang uri ng cryptanalysis. Kumpara sa ibang finalists ng AES competition, siya pala ang pinaka-pursigido. Gayunpaman, ang hindi pangkaraniwang istraktura at pagiging kumplikado nito ay nagtaas ng ilang mga pagdududa tungkol sa kalidad ng lakas na ito. Sa ngayon, ang Twofish ay ginagamit kahit na mas madalas kaysa sa hinalinhan nito.

Threefish encryption algorithm

“Sa pangatlong pagkakataon ay naghagis ng lambat ang matanda sa dagat...” at makalipas ang sampung taon ay nalikha ang Threefish cipher. Sa pagkakataong ito, nagpasya si Schneier na lampasan ang AES at isinasaalang-alang ang lahat ng mga pagkukulang ng nakaraang karanasan. Hindi kinuha ng cryptographer ang Feistel network bilang batayan, ngunit nagpatupad ng cipher batay sa isang substitution-permutation network (SP network), tulad ng sa AES. Ang nasabing network ay batay sa isang kumbinasyon ng mga operasyon ng eksklusibong OR, karagdagan at cyclic shift. Sa pinasimpleng anyo, ang lahat ay ganito:

Dahil sa mga simpleng operasyon, ang Threefish ay mas mabilis kaysa sa AES. Bilang karagdagan, ayon sa mga may-akda, ang algorithm ay may mas mataas na antas ng seguridad kaysa sa AES. Mayroong atake sa 25 sa 72 round ng Threefish, habang para sa AES mayroong atake sa 6 sa 10. Kaya nakamit ni Bruce Schneier ang kanyang tagumpay, kahit na huli na.

Ang cipher ay nagsilbing batayan para sa paglikha ng Skein hash function, na lumahok sa kumpetisyon para sa posisyon ng SHA-3. Ang Threefish mismo ay malawakang ginagamit at ipinapatupad sa mga aklatan para sa maraming mga programming language.

KONKLUSYON

Sa konklusyon, ito ay nagkakahalaga ng pagsasabi na ang lahat ng Western cryptographers, siyempre, ay mahusay, sila ay nakabuo ng isang cart at isang maliit na cart ng iba't ibang mga algorithm ng pag-encrypt. Ang ilan ay mas matibay, ang ilan ay mas mabilis. Ngunit sa ngayon ay ihahambing ng lahat ang mga ito sa DES at AES dahil sila ay mga klasiko.

Sa susunod na artikulo ay makikilala natin ang mga electronic signature, isang napaka-cool at mahalagang paraan ng cryptography.

Mga link:

Ito ang unang aralin sa seryeng “Dive into Crypto”. Lahat ng mga aralin sa serye sa magkakasunod na pagkakasunud-sunod:

  • Mga pangunahing kaalaman, makasaysayang cipher, kung paano gumagana ang mga cipher, pagpapalit, Richard Sorge, Vernam cipher at cipher machine (at sinusuri) (nandito ka ba)
  • . bahagi 2. Ano ito, paano ginagawa ang pamamahagi ng susi, at kung paano pumili ng malakas na susi
  • Ano ang isang Feistel network, ano ang mga domestic block cipher na ginagamit sa mga modernong protocol - GOST 28147-89, "Grassnechik"
  • Mga modernong dayuhang cipher. Bahagi 4. Ano ito, paano gumagana ang mga ito at ano ang pagkakaiba sa pagitan ng 3DES, AES, Blowfish, IDEA, Threefish mula kay Bruce Schneider
  • Electronic na lagda. Mga uri ng electronic signature, kung paano gumagana ang mga ito at kung paano gamitin ang mga ito
  • Quantum cryptography. Ano ito, saan ito ginagamit at paano ito nakakatulong sa pamamahagi ng mga lihim na susi, pagbuo ng mga random na numero at mga elektronikong pirma

Huling na-update noong Hulyo 12, 2016.

Ang orihinal na bersyon ng IDEA algorithm ay lumabas noong 1990. Ang mga nag-develop ng algorithm, sina Xuejia Lai at James Massey mula sa Swiss Institute ETH Zurich, ay nagbigay dito ng pangalang PES (Proposed Encryption Standard) dahil iminungkahi ng algorithm na ito na palitan ang DES standard. Kapansin-pansin na kilala rin sina ETH Zurich at Professor James Massey sa mga algorithm na kanilang binuo sa mga pamilyang SAFER/SAFER+/SAFER++.

Pagkalipas ng isang taon, binago ang algorithm upang mapahusay ang paglaban ng cryptographic sa differential cryptanalysis. Ang bagong bersyon ay tinawag na IPES (Pinahusay na PES - pinahusay na PES), at pagkaraan ng isang taon, binago ng algorithm ang pangalan nito sa IDEA (International Data Encryption Algorithm - international data encryption algorithm).

Pangunahing katangian at istraktura

Ang IDEA algorithm ay nag-encrypt ng data sa mga bloke ng 64 bits, at ang encryption key ng algorithm ay 128 bits ang laki. Ang bloke ng naka-encrypt na data ay nahahati sa apat na 16-bit na subblock na A, B, C at D (Larawan 1), kung saan ginaganap ang walong pag-ikot ng mga pagbabago:

A = A [x] Kr1 B = B + Kr2 C = C + Kr3 D = D [x] Kr4 T1 = A [+] C T2 = B [+] D T1 = T1 [x] Kr5 T2 = T1 + T2 T2 = T2 [x] Kr6 T1 = T1 + T2 A = A [+] T2 B = B [+] T1 C = C [+] T2 D = D [+] T1,

kung saan Krn - subkey n ng round r, "+" - karagdagan na operasyon ng 16-bit operand modulo 2 (sa ika-16 na kapangyarihan), [+] - bitwise logical na operasyon "eksklusibo o" (XOR), [x] - multiplikasyon 16 -bit operands modulo (2 (sa ika-16 na kapangyarihan) + 1), at ang halaga 2 (sa ika-16 na kapangyarihan) ay kinuha bilang ang halaga ng subblock na binubuo lamang ng mga zero.

Pagkatapos makumpleto ang mga hakbang na inilarawan sa itaas, ang dalawang panloob na subblock (B at C) ay ipinagpapalit - sa lahat ng round maliban sa huli. Pagkatapos makumpleto ang walong round, ang mga karagdagang pagbabago ay isinasagawa (minsan ay tinatawag na ikasiyam na round ng algorithm):

A" = A [x] K91 B" = B + K92 C" = C + K93 D" = D [x] K94

Ang ciphertext ay ang resulta ng pagsasama-sama ng mga nagresultang halaga A", B", C" at D".

Ang operasyon ng pag-decryption ay katulad ng pag-encrypt, na may pagkakaiba na sa panahon ng pag-decryption, ang mga binagong subkey ay ginagamit sa ibang pagkakasunud-sunod:

K"r1 = (K(10-r)1)-1 K"r2 = -K(10-r)3 K"r3 = -K(10-r)2 K"r4 = (K(10-r) 4)-1 K"r5 = K(9-r)5 K"r6 = K(9-r)6,

maliban sa round 1 at 9, kung saan ang mga subkey na K"r2 at K"r3 ay pinagpalit.

Narito ang K"rn ay ang n subkey ng decryption round r, -x at x-1 ay ang mga kabaligtaran na halaga ng x na nauugnay sa mga operasyon sa itaas ng karagdagan modulo 2 (sa ika-16 na kapangyarihan) at multiplication modulo (2 (sa ang ika-16 na kapangyarihan) + 1) ayon sa pagkakabanggit Sa kasong ito, 0 (sa -1st na kapangyarihan) = 0.

Pamamaraan ng pangunahing pagpapalawak

  1. Ang layunin ng pamamaraan ng pagpapalawak ng pangunahing ay upang makabuo ng 52 16-bit na mga subkey na ginagamit sa mga round ng pag-encrypt at mga karagdagang pagbabago (ibig sabihin, isang kabuuang 832 bit ng pangunahing impormasyon). Ang pamamaraang ito ay napaka-simple, at ito ay isinasagawa bilang mga sumusunod:
  2. Ang 128-bit encryption key ay nahahati sa walong 16-bit na subkey; sila ang naging unang walong subkey ng algorithm (K11, K12, K13, K14, K15, K16, K21, K22).
  3. Ang encryption key ay iniikot sa kaliwang 25 bits.
  4. Ang resulta ay nahahati sa susunod na walong subkey.

Ang encryption key ay paikot na inililipat sa kaliwa ng 25 bits, at iba pa hanggang sa mabuo ang kinakailangang bilang ng mga subkey.

Lakas ng cryptographic ng algorithm

Sa susunod na taon pagkatapos ng paglitaw ng algorithm ng PES, ang mga may-akda nito ay naglathala ng isang gawain kung saan napatunayan ang kahinaan ng algorithm na may kaugnayan sa differential cryptanalysis (tingnan, halimbawa, ang artikulo, "BYTE/Russia" No. 11"2004 ): upang matukoy ang susi sa pag-encrypt, sapat na upang magsagawa ng 2 (sa ika-64 na kapangyarihan) na mga pagpapatakbo ng pag-encrypt, samantalang ang kumpletong pagbilang ng mga halaga ng isang 128-bit na key ay mangangailangan ng pagsasagawa ng 2 (sa ika-128 na kapangyarihan) na mga operasyon.

  • Ang IDEA algorithm ay lumitaw bilang isang resulta ng medyo maliit na pagbabago sa PES algorithm (Larawan 2). Kung ihahambing mo ang mga scheme ng algorithm ng IDEA at PES, hindi ka makakakita ng maraming pagkakaiba:
  • ang pagpaparami ng pagpapatakbo ng subblock B na may pangalawang subkey ng pag-ikot ay pinapalitan ng isang karagdagang operasyon,
  • ang pagdaragdag ng operasyon ng subblock D na may ikaapat na subkey ng round ay pinalitan ng pagpaparami ng operasyon,

Ang isa pang paraan ay ang paglilipat ng mga subblock sa dulo ng round.

Gayunpaman, sa parehong 1996, ang sikat na cryptanalyst na si Paul Kocher ay nag-imbento ng isang medyo mahirap na ipatupad ang pag-atake na nagpapahintulot, sa pamamagitan ng paulit-ulit na mataas na katumpakan na mga sukat ng oras ng pagpapatupad, upang i-encrypt ang 2 (sa ika-20 na kapangyarihan) na random na piniling mga plaintext sa mga key na nauugnay sa isang tiyak na kaugnayan sa nais na susi, at kasunod na pagsusuri ng mga resulta upang makalkula ang kinakailangang susi sa pag-encrypt. Ang pag-atake na ito (tulad ng iba pang mga pag-atake sa mga naka-link na key) ay ipinapalagay na ang cryptanalyst ay walang direktang access sa nais na key (halimbawa, ang key ay naka-embed sa ilang uri ng hardware encryptor o smart card), ngunit maaaring baguhin ang iba't ibang mga fragment ng key. sa isang tiyak na paraan.

At mas maaga, noong 1993, natuklasan ng ilang cryptoologist mula sa Belgium ang ilang mga klase ng mahihinang key sa IDEA algorithm (kabuuang 2 (sa ika-23 na kapangyarihan) + 2 (sa ika-35 na kapangyarihan) + 2 (sa ika-51 na kapangyarihan) na mga susi ng iba't ibang antas ng kahinaan), ang ilan sa mga ito, halimbawa, ay maaaring kalkulahin sa pamamagitan ng isang cryptanalytic attack na may napiling plaintext. Gayunpaman, ang mga may-akda ng pag-atake na ito mismo ay nagmungkahi ng isang "antidote" - ang mga mahihinang key ay tinanggal sa pamamagitan ng paglalapat ng operasyon ng XOR sa isang espesyal na hexadecimal constant na 0DAE sa bawat subkey bago ito gamitin.

Kaya, sa kabila ng mga natuklasang pagkukulang, ang IDEA algorithm ay itinuturing na isang algorithm na may mataas na lakas ng cryptographic. Ang hindi maikakaila na bentahe ng algorithm na ito ay ang mataas na bilis ng pag-encrypt nito, hindi bababa sa dalawang beses kaysa sa DES algorithm (depende sa platform kung saan isinasagawa ang pag-encrypt). At ang kakayahang magsagawa ng isang pangunahing pagpapalawak na operasyon sa mabilisang (iyon ay, kahanay sa pagpapatupad ng mga round ng pag-encrypt) ay malugod na tinatanggap sa mas modernong mga algorithm ng pag-encrypt.

***

Gayunpaman, ito ay nagkakahalaga ng pagsasabi na ang bilis ng pag-decryption ay medyo nabawasan dahil sa pagkakaroon ng mga resource-intensive na operasyon para sa pagkalkula ng multiplicative reciprocals modulo (2 (sa ika-16 na kapangyarihan) + 1).

Ang algorithm ng IDEA ay hindi naging isang pang-internasyonal na pamantayan sa pag-encrypt, tulad ng nais ng mga may-akda nito. Gayunpaman, maaari itong ituring na isa sa mga pinakakaraniwang algorithm ng pag-encrypt sa mundo. Ginagamit pa rin ngayon ang IDEA sa maraming iba't ibang mga application, kabilang ang malawak na kilala at ginagamit na programa sa proteksyon ng data na PGP. encryption na binuo nina Xuejia Lai at James Massey ng Swiss Federal Institute of Technology. Ang orihinal na bersyon ay nai-publish noong 1990. Ang isang binagong bersyon ng algorithm, na pinahusay na may proteksyon laban sa differential cryptographic na pag-atake, ay ipinakilala noong 1991 at inilarawan nang detalyado noong 1992.

Ang IDEA ay isa sa ilang simetriko cryptographic algorithm na orihinal na nilayon upang palitan ang DES.

Mga prinsipyo ng disenyo

Ang IDEA ay isang block algorithm na gumagamit ng 128-bit susi sa pag-encrypt data sa mga bloke ng 64 bits.

Ang layunin ng pagbuo ng IDEA ay lumikha ng medyo malakas na cryptographic algorithm na may medyo simpleng pagpapatupad.

Lakas ng cryptographic

Ang mga sumusunod na katangian ng IDEA ay nagpapakilala sa lakas ng cryptographic nito:

  1. Haba ng block: Ang haba ng block ay dapat sapat upang itago ang lahat ng istatistikal na katangian ng orihinal na mensahe. Sa kabilang banda, ang pagiging kumplikado ng pagpapatupad ng isang cryptographic function ay tumataas nang husto sa laki ng block. Ang paggamit ng block size na 64 bits noong 90s ay nangangahulugan ng maraming kapangyarihan. Bukod dito, ang paggamit ng CBC encryption mode ay nagpapahiwatig ng karagdagang pagpapalakas ng aspetong ito ng algorithm.
  2. Haba ng susi: Ang haba ng susi ay dapat na sapat na malaki upang maiwasan ang susi sa pagiging malupit. Sa susi na haba ng 128 bits, ang IDEA ay itinuturing na ligtas.
  3. Pagkalito: Ang ciphertext ay dapat na nakadepende sa susi sa isang masalimuot at malikot na paraan.
  4. Pagsasabog: Ang bawat bit ng plaintext ay dapat makaapekto sa bawat bit ng ciphertext. Ang pagkalat ng isang plaintext bit sa maraming naka-encrypt na bit ay nagtatago ng istatistikal na istruktura ng plaintext. Ang pagtukoy kung paano nakadepende ang istatistikal na katangian ng ciphertext sa mga istatistikal na katangian ng plaintext ay dapat na mahirap. IDEA mula sa puntong ito ng view ay napaka mahusay na algorithm.

Sa IDEA, ang huling dalawang puntos ay nagagawa gamit ang tatlong operasyon. Ito ay naiiba sa DES, kung saan ang lahat ay binuo sa paligid ng paggamit ng operasyon XOR at maliliit na nonlinear na S-box.

Ang bawat operasyon ay ginagawa sa dalawang 16-bit na input at gumagawa ng isang 16-bit na output. Ang mga operasyong ito ay:

Ang tatlong operasyong ito ay hindi magkatugma sa kahulugan na:

Ang paggamit ng kumbinasyon ng tatlong operasyong ito ay nagbibigay ng isang kumplikadong pagbabago ng input, na ginagawang mas mahirap ang cryptanalysis kaysa sa isang algorithm tulad ng DES, na nakabatay lamang sa function. XOR.

Pag-encrypt

Tingnan natin ang pangkalahatang pamamaraan ng pag-encrypt ng IDEA. Tulad ng anumang algorithm ng pag-encrypt, mayroong dalawang input: ang plaintext block at ang key. Sa kasong ito, ang hindi naka-encrypt na bloke ay 64 bits ang haba, ang susi ay 128 bits ang haba.

Binubuo ng walong round na sinusundan ng panghuling pagbabago. Hinahati ng algorithm ang bloke sa apat na 16-bit na subblock. Ang bawat round ay tumatagal ng apat na 16-bit na subblock bilang input at gumagawa ng apat na 16-bit na output subblock. Ang panghuling pagbabago ay tumatagal din ng apat na 16-bit na subblock bilang input at gumagawa ng apat na 16-bit na subblock. Gumagamit ang bawat round ng anim na 16-bit na key, ang panghuling pagbabago ay gumagamit ng apat na subkey, i.e. Sa kabuuan, ang algorithm ay gumagamit ng 52 subkey.


kanin. 3.1.
Pagkakasunud-sunod ng mga pagbabagong-anyo ng isang solong pag-ikot

Isaalang-alang natin ang pagkakasunud-sunod ng mga pagbabagong-anyo ng isang hiwalay na pag-ikot.

Ang isa sa mga pangunahing elemento ng algorithm na nagbibigay ng diffusion ay isang istraktura na tinatawag na MA (multiplication/addition):


kanin. 3.2.

Ang input sa istrukturang ito ay dalawang 16-bit na halaga at dalawang 16-bit na subkey, at ang output ay dalawang 16-bit na halaga. Ipinapakita ng kumpletong pagsusuri sa computer na ang bawat bit ng output ng istrukturang ito ay nakasalalay sa bawat bit ng mga input ng plaintext block at bawat bit ng mga subkey nito. Ang istrakturang ito ay nauulit ng walong beses sa algorithm, na nagbibigay ng lubos na mahusay na pagsasabog.

Ang isang round ay nagsisimula sa isang pagbabagong-anyo na pinagsasama ang apat na input subblock na may apat na subblock gamit ang mga pagpapatakbo ng karagdagan at pagpaparami. Ang apat na bloke ng output ng pagbabagong ito ay pinagsama gamit ang operasyon XOR upang bumuo ng dalawang 16-bit na bloke, na siyang mga input ng istraktura ng MA. Bilang karagdagan, ang istraktura ng MA ay may dalawa pang konektor sa input at lumilikha ng dalawang 16-bit na output.


kanin. 3.3.

Sa wakas, ang apat na output subblock ng unang pagbabago ay pinagsama sa dalawang output subblock ng MA structure gamit ang XOR upang lumikha ng apat na output subblock ng isang naibigay na pag-ulit. Tandaan na ang dalawang output na bahagyang nilikha ng pangalawa at pangatlong input (X 2 at X 3 ) ay pinagpalit upang lumikha ng pangalawa at pangatlong output (W 12 at W 13 ). Pinapataas nito ang bit shuffling at ginagawang mas lumalaban sa algorithm kaugalian cryptanalysis.

Isaalang-alang ang ikasiyam na round ng algorithm, na itinalaga bilang panghuling pagbabago. Ito ay ang parehong istraktura tulad ng inilarawan sa itaas. Ang pagkakaiba lang ay ang pangalawa at pangatlong input ay pinagpalit. Ginagawa ito upang matiyak na ang pag-decryption ay may parehong istraktura tulad ng pag-encrypt. Tandaan na ang ikasiyam na yugto ay nangangailangan lamang ng apat na input