Berbagi teknologi

[Kriptografi] Konsep dasar stream cipher

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Sebelum memperkenalkan stream cipher, mari kita pahami terlebih dahulu pengetahuan prasyarat dasar operasi titik-XOR.

1. Operasi OR Eksklusif (XOR)

Aturan operasi: Sama seperti 0, berbeda dengan 1

Fitur: Satu bit di-XOR dua kali dan dapat dikembalikan ke bit aslinya.

Teks biasa: 1100

Kunci: 0101 (terenkripsi)

Teks sandi: 1001

Kunci: 0101 (dekripsi)

Teks biasa: 1100

keuntungan:Reversibilitas ini memungkinkan operasi XOR digunakan untuk transformasi enkripsi dan dekripsi.

kekurangan:Jika penyerang dapat menebak atau menangkap kuncinya, kunci tersebut dapat dengan mudah didekripsi melalui XOR.

Alasan mengapa operasi XOR dapat digunakan untuk enkripsi dan dekripsi pada saat yang sama terletak pada reversibilitasnya, namun ini juga kelemahannya. Keamanan sepenuhnya bergantung pada penyembunyian kunci.

2. Algoritma One-Time Pad (OTP)

(1) Definisi

One-Time Pad (OTP) adalah algoritma stream cipher. Ini dianggap sebagai salah satu metode enkripsi paling aman secara teori, asalkan penerapannya secara ketat mengikuti beberapa prinsip utama:

1.  Kuncinya harus sepanjang teks biasa: Artinya setiap enkripsi menggunakan kunci yang panjangnya sama persis dengan pesan yang dienkripsi.

2.  Kuncinya harus benar-benar acak: Setiap bit kunci harus dihasilkan secara acak, tanpa pola atau prediktabilitas apa pun.

3.  Kunci hanya boleh digunakan sekali: Kunci yang sama tidak boleh digunakan untuk mengenkripsi banyak pesan, jika tidak, korelasi antara ciphertext dapat digunakan untuk menyimpulkan isi pesan.

4.  Kunci harus dirahasiakan: Distribusi dan penyimpanan kunci harus sangat aman untuk mencegah akses oleh pihak ketiga.

(2) Keuntungan dan kerugian

keuntungan:

  • Kuncinya dibuat secara acak dan hanya digunakan sekali
  • Aman tanpa syarat
  • Enkripsi dan dekripsi adalah operasi penjumlahan yang lebih efisien.

kekurangan:

  • Panjang kunci setidaknya sama dengan panjang teks biasa, sehingga pembagian kunci menjadi sulit dan tidak praktis.

3. Pengertian stream cipher

Ketika orang mempelajari algoritma enkripsi one-time pad, mereka mencoba memecahkan masalah manajemen dan panjang kunci. Jika ada cara untuk menghasilkan semua kunci untuk mengenkripsi teks biasa dengan hanya menyediakan sebagian kecil kunci, maka stream cipher dikembangkan berdasarkan ide ini.

(1) Ide dasar stream cipher

         Dalam stream cipher, kunci kecil (sering disebut seed atau vektor inisialisasi) digunakan melalui generator nomor pseudorandom (PRNG) untuk menghasilkan aliran kunci pseudorandom dengan panjang yang sama dengan teks biasa. Keystream ini kemudian di-XOR dengan plaintext untuk menghasilkan ciphertext. Demikian pula, proses dekripsi adalah dengan meng-XOR teks sandi dengan aliran kunci yang sama untuk memulihkan teks biasa.

kunci akumenghasilkan aliran kunci z=z_0z_1z_2...Dan gunakan aturan berikut untuk membandingkan string teks biasa Tentukan nilai x = x_0x_1x_2...Untuk mengenkripsi:
Persamaan y = y_0y_1y_2...=Ez_0(x_0)Ez_1(x_1)Ez_2(x_2)...

Register geser umpan balik linier umumnya digunakan untuk menghasilkan kunci pseudo-acak. Prinsipnya tidak akan dibahas di sini.

(2) Proses algoritma

Proses enkripsi dan dekripsi dapat digambarkan sebagai berikut:

  • Pembuatan keystream: Baik pihak enkripsi maupun dekripsi menggunakan kunci dan vektor inisialisasi (IV) yang sama untuk menginisialisasi generator bilangan acak semu (PRNG). PRNG menghasilkan serangkaian bit pseudo-acak berdasarkan keadaan internalnya untuk membentuk aliran kunci.
  • Proses enkripsi: Pengirim melakukan operasi bitwise eksklusif OR (XOR) pada aliran kunci yang dihasilkan dan teks biasa untuk mendapatkan teks tersandi. Karena sifat operasi XOR, operasi yang sama dapat dibalik pada bit yang berbeda.
  • Proses dekripsi: Penerima menginisialisasi ulang PRNG dengan kunci dan IV yang sama dan menghasilkan aliran kunci yang sama seperti saat dienkripsi. Penerima kemudian melakukan XOR teks sandi dengan aliran kunci untuk memulihkan teks biasa asli.

(3) Prinsip desain stream cipher

Prinsip desain stream cipher sangat fokus pada pembuatan generator keystream yang dapat menghasilkan keystream dengan properti keamanan tertentu. Urutan aliran kunci harus memiliki properti berikut:

  1. siklus besar : Periode aliran kunci harus cukup lama untuk mencegah penggunaan kembali segmen aliran kunci yang sama, yang akan mengekspos pola dalam data terenkripsi dan memungkinkan kriptanalis melakukan serangan dengan membandingkan persamaan dan perbedaan pesan yang berbeda. Secara teoritis, untuk ruang kunci n-bit, panjang siklus ideal adalah 2n-1. Dalam praktiknya, periode yang lebih lama berarti aliran kunci lebih jarang diulang, sehingga meningkatkan keamanan sistem kripto.

  2. sifat statistik yang baik : Aliran kunci harus terlihat seperti urutan bit yang benar-benar acak, artinya harus memenuhi berbagai uji statistik seperti distribusi 0 dan 1 yang sama, independensi antara dua atau lebih bit yang berurutan, dan tidak ada pola atau periodisitas yang dapat diprediksi. Properti statistik yang baik membantu memastikan ketidakpastian aliran kunci, yang merupakan komponen penting dari keamanan sandi aliran.

  3. Ketahanan terhadap analisis linier : Sebuah stream cipher harus tahan terhadap analisis linier, di mana kriptanalis berupaya memulihkan kunci atau teks biasa dengan menemukan korelasi linier antara aliran kunci dan teks biasa atau teks sandi. Hal ini biasanya mengharuskan keluaran generator keystream bersifat nonlinier, atau setidaknya berisi komponen nonlinier yang cukup untuk mencegah metode penyelesaian sistem linier sederhana menyimpulkan keystream atau kunci itu sendiri.