Kriptologi, kriptografi dan kriptoanalisis

Mari lompat ke pengetahuan teoretis yang Anda perlukan saat menulis proyek akhir. Mari pelajari lebih lanjut tentang kriptografi dan bagian-bagian penyusunnya. Dan pada saat yang sama, kita akan belajar lebih banyak tentang cipher yang akan Anda gunakan saat menulis tugas akhir.

1. Kriptologi dan bagian-bagian penyusunnya

Kriptologi adalah bidang ilmu yang meliputi:

  • Kriptografi (ilmu sandi).

    Kriptografi adalah tentang mengenkripsi informasi untuk melindunginya dari akses yang tidak sah. Informasi ini bisa berupa teks, gambar digital, sinyal audio, dll. Proses enkripsi menghasilkan versi terenkripsi dari informasi (data), yang disebut ciphertext atau codetext.

  • Cryptanalysis (metode untuk memecahkan sandi ini).

    Cryptanalysis mengkaji metode pemecahan cipher dan bagaimana metode ini dapat diterapkan. Dengan kata lain, cryptanalysis melakukan tugas kebalikannya, mempelajari cara untuk mengubah informasi terenkripsi menjadi teks biasa.

2. Kunci kriptografi

Kunci adalah pilihan data yang digunakan untuk mengenkripsi dan mendekripsi informasi. Kemampuan untuk berhasil mendekripsi informasi bergantung pada kunci apa yang digunakan. Jika kunci hilang karena suatu alasan, maka tidak mungkin untuk mendekripsi data.

Ukuran kunci kriptografi diukur dalam bit. Dan ini berarti kunci kriptografi memiliki panjang . Kekuatan enkripsi yang baik disediakan dengan panjang 128 bit.

Jenis kunci kriptografi:

  1. Kunci simetris (kunci rahasia). Tidak mengherankan, kunci tersebut digunakan dalam apa yang dikenal sebagai algoritma kunci simetris. Tujuan utamanya adalah untuk melakukan transformasi kriptografi maju atau mundur (enkripsi/dekripsi, verifikasi kode otentikasi pesan).

  2. Kunci asimetris. Mereka digunakan dalam algoritme enkripsi kunci asimetris (misalnya, saat memverifikasi tanda tangan digital elektronik).

Karena kami akan bekerja dengan algoritme enkripsi kunci simetris, kami tidak akan membahas terlalu banyak detail di sini.

3. Pergantian alfabet

Alfabet substitusi adalah kumpulan karakter lengkap yang digunakan untuk menyandikan karakter masukan.

4. Pendekatan kriptoanalisis

Ada banyak pendekatan dan metode cryptanalysis yang berbeda, yaitu cara untuk memecahkan sandi.

Kami akan menjelaskan yang paling sederhana dari mereka:

  1. Brute force (atau pencarian brute force) sedang mencoba semua kunci yang mungkin sampai kami menemukan yang benar. Keuntungan dari metode ini adalah kesederhanaannya. Kerugiannya adalah tidak cocok untuk cipher yang melibatkan sejumlah besar kemungkinan kunci.

  2. Cryptanalysis berdasarkan data statistik — dalam pendekatan ini, kami mengumpulkan statistik kemunculan karakter yang berbeda dalam teks sandi, dan kemudian kami mendekripsi berdasarkan statistik frekuensi kemunculan karakter berbeda dalam teks biasa.

    Sebagai contoh: kita mengetahui bahwa frekuensi huruf P dalam teks berbahasa Inggris adalah 1,9%. Saat kami menganalisis ciphertext, kami mencari simbol yang muncul dengan frekuensi yang sama dan kemudian menyimpulkan bahwa itu adalah huruf P.

    Kerugian dari pendekatan ini adalah ketergantungannya pada bahasa, penulis, dan gaya teks tertentu.

5. Sandi Caesar

Ini adalah salah satu metode enkripsi paling sederhana dan paling terkenal. Namanya tentu saja berasal dari Kaisar Gaius Julius Caesar yang menggunakan cara ini untuk berkorespondensi secara diam-diam dengan para jenderal.

Cipher Caesar adalah cipher substitusi di mana setiap karakter dalam teks biasa diganti dengan karakter yang merupakan jumlah posisi konstan di kiri atau kanan dalam alfabet.

Katakanlah kita mengatur pergeseran ke 3. Dalam hal ini, A akan diganti dengan D, B akan menjadi E, dan seterusnya.

Ini adalah jumlah minimum teori yang Anda perlukan untuk menyelesaikan proyek akhir. Mari beralih ke deskripsi tugas!

Proyek akhir untuk modul Java Syntax. Mari kita menulis cryptanalyzer

Tugas Anda adalah menulis program yang bekerja dengan sandi Caesar.

Biarkan alfabet kriptografi Anda terdiri dari semua huruf alfabet Inggris serta tanda baca (. , ”” : -! ? SPACE). Jika Anda menemukan karakter yang bukan bagian dari alfabet pengganti kami, lewati saja.

Persyaratan wajib

Program harus memiliki 2 mode:

  1. Enkripsi/dekripsi. Program harus mengenkripsi dan mendekripsi teks menggunakan kunci kriptografi yang diberikan.

    Program harus menerima path ke file teks yang berisi teks sumber dan membuat file yang berisi ciphertext yang sesuai.

  2. Cryptanalysis dengan serangan brute force

    Dalam mode ini, program harus meng-crack ciphertext yang terdapat dalam input file teks.

    Jika pengguna memilih brute force, maka program harus menghitung kunci yang mungkin secara mandiri, memilih kunci yang benar, dan mendekripsi teks.

    Pikirkan tentang kriteria apa yang harus digunakan program agar berhasil mengidentifikasi kunci yang benar. Anda mungkin perlu memperhatikan spasi di antara kata atau penggunaan tanda baca yang benar.

Persyaratan tambahan (opsional).

1. Cryptanalysis dengan analisis statistik

Pengguna harus dapat memilih salah satu dari dua metode cryptanalysis. Jika pengguna memilih mode analisis statistik, minta pengguna untuk memuat file teks tambahan dalam teks biasa, lebih disukai oleh penulis yang sama dan dengan gaya yang sama. Berdasarkan isi dari file kedua, program harus mengkompilasi statistik kemunculan karakter dan kemudian mencoba menggunakan statistik ini untuk melakukan cryptanalysis dari ciphertext.

2. Antarmuka pengguna

Buat kotak dialog untuk berinteraksi dengan pengguna sesuai kebijaksanaan Anda. Jika diinginkan, Anda dapat menggunakan kerangka grafis Swing dan JavaFX.

Unggah solusi Anda yang sudah selesai ke repositori Git publik.

Proyek akan diperiksa ketika grup melewatinya