Kriptologi, kriptografi dan kriptanalisis

Mari kita beralih kepada pengetahuan teori yang anda perlukan semasa menulis projek akhir. Mari ketahui lebih lanjut tentang kriptografi dan bahagian konstituennya. Dan pada masa yang sama, kami akan mengetahui lebih lanjut tentang sifir yang akan anda gunakan semasa menulis projek akhir.

1. Kriptologi dan bahagian konstituennya

Kriptologi adalah bidang pengetahuan yang merangkumi:

  • Kriptografi (ilmu sifir).

    Kriptografi adalah mengenai menyulitkan maklumat untuk melindunginya daripada capaian yang tidak dibenarkan. Maklumat ini boleh berupa teks, imej digital, isyarat audio, dsb. Proses penyulitan menghasilkan versi maklumat (data) yang disulitkan, yang dipanggil teks sifir atau teks kod.

  • Kriptanalisa (kaedah untuk memecahkan sifir ini).

    Kriptanalisa mengkaji kaedah memecahkan sifir dan cara kaedah ini boleh digunakan. Dalam erti kata lain, kriptanalisis melaksanakan tugas songsang, mengkaji cara untuk menukar maklumat yang disulitkan kepada plaintext.

2. Kunci kriptografi

Kunci ialah pilihan data yang digunakan untuk menyulitkan dan menyahsulit maklumat. Keupayaan untuk berjaya menyahsulit maklumat bergantung pada kunci yang digunakan. Jika kunci hilang atas sebab tertentu, maka mustahil untuk menyahsulit data.

Saiz kunci kriptografi diukur dalam bit. Dan ini bermakna bahawa kunci kriptografi mempunyai panjang . Kekuatan penyulitan yang baik disediakan dengan panjang 128 bit.

Jenis kunci kriptografi:

  1. Kekunci simetri (kunci rahsia). Tidak mengejutkan, kunci sedemikian digunakan dalam apa yang dikenali sebagai algoritma kunci simetri. Tujuan utama mereka adalah untuk melakukan transformasi kriptografi ke hadapan atau terbalik (penyulitan/penyahsulitan, pengesahan kod pengesahan mesej).

  2. Kekunci asimetri. Ia digunakan dalam algoritma penyulitan kunci asimetri (contohnya, semasa mengesahkan tandatangan digital elektronik).

Memandangkan kami akan bekerja dengan algoritma penyulitan kunci simetri, kami tidak akan menerangkan terlalu banyak butiran di sini.

3. Penggantian abjad

Abjad penggantian ialah set lengkap aksara yang digunakan untuk mengekod aksara input.

4. Pendekatan kepada analisis kriptografi

Terdapat banyak pendekatan dan kaedah kriptanalisis yang berbeza, iaitu cara untuk memecahkan sifir.

Kami akan menerangkan yang paling mudah daripada mereka:

  1. Brute force (atau carian brute force) sedang mencuba semua kekunci yang mungkin sehingga kami menemui yang betul. Kelebihan kaedah ini adalah kesederhanaannya. Kelemahannya ialah ia tidak sesuai untuk sifir yang melibatkan sejumlah besar kemungkinan kunci.

  2. Analisis kriptografi berdasarkan data statistik — dalam pendekatan ini, kami mengumpulkan statistik tentang kejadian aksara yang berbeza dalam teks sifir, dan kemudian kami menyahsulit berdasarkan statistik mengenai kekerapan berlakunya aksara yang berbeza dalam teks biasa.

    Sebagai contoh: kita tahu bahawa kekerapan huruf P dalam teks bahasa Inggeris ialah 1.9%. Semasa kami menganalisis teks sifir, kami mencari simbol yang berlaku dengan frekuensi yang sama dan kemudian membuat kesimpulan bahawa ia adalah huruf P.

    Kelemahan pendekatan ini ialah pergantungannya pada bahasa, pengarang, dan gaya teks tertentu.

5. sifir Caesar

Ini adalah salah satu kaedah penyulitan yang paling mudah dan paling terkenal. Namanya, tentu saja, berasal dari Maharaja Gaius Julius Caesar, yang menggunakan kaedah ini untuk berhubung secara rahsia dengan jeneral.

Sifir Caesar ialah sifir penggantian di mana setiap aksara dalam teks biasa digantikan dengan aksara yang merupakan beberapa bilangan kedudukan tetap di kiri atau kanannya dalam abjad.

Katakan kita menetapkan anjakan kepada 3. Dalam kes ini, A akan digantikan dengan D, B akan menjadi E, dan seterusnya.

Ini adalah jumlah minimum teori yang anda perlukan untuk menyelesaikan projek akhir. Mari kita teruskan ke huraian tugas!

Projek akhir untuk modul Java Syntax. Mari kita tulis cryptanalyzer

Tugas anda ialah menulis program yang berfungsi dengan sifir Caesar.

Biarkan abjad kriptografi anda terdiri daripada semua huruf abjad Inggeris serta tanda baca (. , ”” : - ! ? SPACE). Jika anda menemui aksara yang bukan sebahagian daripada abjad penggantian kami, maka langkau sahaja.

Keperluan wajib

Program ini harus mempunyai 2 mod:

  1. Penyulitan/penyahsulitan. Program mesti menyulitkan dan menyahsulit teks menggunakan kunci kriptografi yang diberikan.

    Program ini harus menerima laluan ke fail teks yang mengandungi teks sumber dan mencipta fail yang mengandungi teks sifir yang sepadan.

  2. Analisis kriptografi melalui serangan kekerasan

    Dalam mod ini, program mesti memecahkan teks sifir yang terkandung dalam fail teks input.

    Jika pengguna memilih kekerasan, maka program mesti menghitung secara bebas kekunci yang mungkin, pilih kunci yang betul dan menyahsulit teks.

    Fikirkan tentang kriteria yang harus digunakan oleh program untuk berjaya mengenal pasti kunci yang betul. Anda mungkin perlu memberi perhatian kepada ruang antara perkataan atau penggunaan tanda baca yang betul.

Keperluan tambahan (pilihan).

1. Kriptanalisis melalui analisis statistik

Pengguna seharusnya boleh memilih satu daripada dua kaedah kriptanalisis. Jika pengguna memilih mod analisis statistik, kemudian gesa pengguna untuk memuatkan fail teks tambahan dalam teks biasa, sebaik-baiknya oleh pengarang yang sama dan dalam gaya yang sama. Berdasarkan kandungan fail kedua, program harus menyusun statistik tentang kejadian aksara dan kemudian cuba menggunakan statistik ini untuk melakukan analisis kriptografi teks sifir.

2. Antara muka pengguna

Buat kotak dialog untuk interaksi dengan pengguna mengikut budi bicara anda. Jika mahu, anda boleh menggunakan rangka kerja grafik Swing dan JavaFX.

Muat naik penyelesaian siap anda ke repositori Git awam.

Projek itu akan disemak apabila kumpulan itu melaluinya