Cryptology, cryptography at cryptanalysis

Sumakay tayo sa teoretikal na kaalaman na kakailanganin mo sa pagsulat ng huling proyekto. Matuto pa tayo tungkol sa cryptography at mga bahagi nito. At kasabay nito, malalaman natin ang higit pa tungkol sa cipher na gagamitin mo sa pagsulat ng huling proyekto.

1. Cryptology at mga bahaging bumubuo nito

Ang Cryptology ay isang larangan ng kaalaman na kinabibilangan ng:

  • Cryptography (ang agham ng mga cipher).

    Ang cryptography ay tungkol sa pag-encrypt ng impormasyon upang maprotektahan ito mula sa hindi awtorisadong pag-access. Ang impormasyong ito ay maaaring text, digital image, audio signal, atbp. Ang proseso ng pag-encrypt ay gumagawa ng naka-encrypt na bersyon ng impormasyon (data), na tinatawag na ciphertext o codetext.

  • Cryptanalysis (paraan para sa pag-crack ng mga cipher na ito).

    Sinusuri ng cryptanalysis ang mga paraan ng pagsira ng mga cipher at kung paano mailalapat ang mga pamamaraang ito. Sa madaling salita, ginagawa ng cryptanalysis ang kabaligtaran na gawain, pag-aaral ng mga paraan upang gawing plaintext ang naka-encrypt na impormasyon.

2. Cryptographic key

Ang susi ay isang seleksyon ng data na ginagamit upang i-encrypt at i-decrypt ang impormasyon. Ang kakayahang matagumpay na i-decrypt ang impormasyon ay depende sa kung anong key ang ginagamit. Kung ang isang susi ay nawala sa ilang kadahilanan, imposibleng i-decrypt ang data.

Ang laki ng mga cryptographic key ay sinusukat sa mga bit. At nangangahulugan ito na ang isang cryptographic key ay may haba . Ang mahusay na lakas ng pag-encrypt ay ibinibigay na may haba na 128 bits.

Mga uri ng cryptographic key:

  1. Symmetric keys (mga lihim na key). Hindi nakakagulat, ang mga naturang key ay ginagamit sa tinatawag na symmetric-key algorithm. Ang kanilang pangunahing layunin ay magsagawa ng forward o reverse cryptographic transformations (encryption/decryption, verification ng authentication code ng mensahe).

  2. Asymmetric keys. Ginagamit ang mga ito sa asymmetric-key encryption algorithm (halimbawa, kapag nagbe-verify ng electronic digital signature).

Dahil gagawa kami ng isang symmetric-key encryption algorithm, hindi na kami magdedetalye dito.

3. Pagpapalit ng alpabeto

Ang alpabeto ng pagpapalit ay isang kumpletong hanay ng mga character na ginagamit upang i-encode ang mga input na character.

4. Mga diskarte sa cryptanalysis

Mayroong maraming iba't ibang mga diskarte at pamamaraan ng cryptanalysis, ibig sabihin, mga paraan upang i-crack ang mga cipher.

Ilalarawan namin ang pinakasimple sa mga ito:

  1. Sinusubukan ng brute force (o brute force search) ang lahat ng posibleng key hanggang sa mahanap namin ang tama. Ang bentahe ng pamamaraang ito ay ang pagiging simple nito. Ang kawalan ay hindi ito angkop para sa mga cipher na kinasasangkutan ng isang malaking bilang ng mga posibleng key.

  2. Cryptanalysis batay sa istatistikal na data — sa diskarteng ito, nagtitipon kami ng mga istatistika sa paglitaw ng iba't ibang mga character sa ciphertext, at pagkatapos ay nagde-decrypt kami batay sa mga istatistika sa dalas ng paglitaw ng iba't ibang mga character sa plaintext.

    Halimbawa: alam natin na ang dalas ng titik P sa mga tekstong Ingles ay 1.9%. Habang sinusuri namin ang ciphertext, naghahanap kami ng isang simbolo na nangyayari na may parehong dalas at pagkatapos ay ipagpalagay na ito ay ang titik P.

    Ang kawalan ng pamamaraang ito ay ang pagdepende nito sa tiyak na wika, may-akda, at istilo ng teksto.

5. Caesar cipher

Ito ay isa sa pinakasimple at pinakakilalang paraan ng pag-encrypt. Ang pangalan nito, siyempre, ay nagmula sa Emperador Gaius Julius Caesar, na ginamit ang pamamaraang ito upang makipag-ugnayan nang lihim sa mga heneral.

Ang Caesar cipher ay isang substitution cipher kung saan ang bawat karakter sa plaintext ay pinapalitan ng isang character na ilang pare-parehong bilang ng mga posisyon sa kaliwa o kanan nito sa alpabeto.

Sabihin nating itinakda natin ang shift sa 3. Sa kasong ito, ang A ay papalitan ng D, ang B ay magiging E, at iba pa.

Ito ang pinakamababang halaga ng teorya na kakailanganin mo para makumpleto ang panghuling proyekto. Lumipat tayo sa paglalarawan ng gawain!

Panghuling proyekto para sa Java Syntax module. Sumulat tayo ng isang cryptanalyzer

Ang iyong gawain ay magsulat ng isang programa na gumagana sa Caesar ciphers.

Hayaang ang iyong cryptographic na alpabeto ay binubuo ng lahat ng mga titik ng English alphabet pati na rin ang mga bantas (. , ”” : - ! ? SPACE). Kung nakatagpo ka ng mga character na hindi bahagi ng aming alpabeto ng pagpapalit, laktawan lang ang mga ito.

Mga kinakailangang kinakailangan

Ang programa ay dapat magkaroon ng 2 mga mode:

  1. Pag-encrypt/pag-decryption. Dapat i-encrypt at i-decrypt ng program ang teksto gamit ang isang ibinigay na cryptographic key.

    Ang programa ay dapat makatanggap ng isang landas sa isang text file na naglalaman ng source text at lumikha ng isang file na naglalaman ng kaukulang ciphertext.

  2. Cryptanalysis sa pamamagitan ng brute force attack

    Sa mode na ito, dapat i-crack ng program ang ciphertext na nasa isang input text file.

    Kung pipiliin ng user ang brute force, dapat independiyenteng ibilang ng program ang mga posibleng key, piliin ang tamang key, at i-decrypt ang text.

    Isipin kung anong pamantayan ang dapat gamitin ng programa upang matagumpay na matukoy ang tamang key. Maaaring kailanganin mong bigyang pansin ang mga puwang sa pagitan ng mga salita o ang tamang paggamit ng mga bantas.

Mga karagdagang (opsyonal) na kinakailangan

1. Cryptanalysis sa pamamagitan ng statistical analysis

Ang gumagamit ay dapat na makapili ng isa sa dalawang paraan ng cryptanalysis. Kung pinili ng user ang statistical analysis mode, pagkatapos ay i-prompt ang user na mag-load ng karagdagang text file sa plaintext, mas mabuti ng parehong may-akda at sa parehong estilo. Batay sa mga nilalaman ng pangalawang file, dapat mag-compile ang program ng mga istatistika sa paglitaw ng mga character at pagkatapos ay subukang gamitin ang mga istatistikang ito upang maisagawa ang cryptanalysis ng ciphertext.

2. User interface

Gumawa ng mga dialog box para sa pakikipag-ugnayan sa user ayon sa iyong paghuhusga. Kung ninanais, maaari mong gamitin ang mga graphic framework ng Swing at JavaFX.

I-upload ang iyong natapos na solusyon sa isang pampublikong Git repository.

Susuriin ang proyekto kapag dumaan dito ang grupo