Back to IF4020 Kriptografi

Stream Cipher dan LFSR

Questions/Cues

  • Bagaimana stream cipher mengenkripsi, dan apa itu keystream?
  • Mengapa keystream berupa pseudo-random, bukan true random?
  • Apa peran seed sebagai kunci eksternal?
  • Apa karakteristik penjalaran kesalahan stream cipher?
  • Bagaimana LFSR bekerja dan berapa periodenya?
  • Di mana stream cipher dipakai?

Reference Points

  • IF4020 Kriptografi — Kriptografi Modern dan Stream Cipher (Slides 24-39)

Cipher Alir (Stream Cipher)

Stream cipher mengenkripsi dengan meng-XOR-kan 1 bit plainteks dengan 1 bit kunci, atau 1 byte dengan 1 byte kunci, atau bit dengan bit kunci, setiap kali enkripsi. Dekripsi identik (XOR cipherteks dengan kunci).

Bit-bit kunci alir disebut keystream, dibangkitkan oleh keystream generator dari sebuah umpan (seed) :

flowchart TB
    U1["Seed U"] --> G1["Keystream<br/>generator"] --> K1["k_i"]
    P["p_i (plainteks)"] --> X1(("XOR"))
    K1 --> X1
    X1 --> C["c_i (cipherteks)"]
    C --> X2(("XOR"))
    U2["Seed U (sama)"] --> G2["Keystream<br/>generator"] --> K2["k_i"]
    K2 --> X2
    X2 --> P2["p_i"]

Enkripsi/dekripsi sederhana dan cepat. Generator diimplementasikan sebagai prosedur yang sama di pengirim dan penerima.

Keystream: Pseudo-Random

Bit keystream bersifat acak tetapi bukan true random, melainkan pseudo-random: dapat dibangkitkan ulang di kedua sisi asalkan seed sama. Bit pseudo-random punya periode (barisan dapat terulang setelah beberapa iterasi). Seed dijaga rahasia dan dapat dipandang sebagai kunci eksternal. Ini beda dari OTP yang memakai kunci acak sejati (One-Time Pad dan Perfect Secrecy): stream cipher meniru OTP dengan seed pendek, sehingga keamanannya komputasional, bukan sempurna.

Contoh: , aturan “XOR bit ke-1 dengan bit ke-4 dari empat bit sebelumnya” → 111101011001000 (berulang tiap 15 bit). Untuk seed bit, keystream tidak berulang sampai bit.

Contoh enkripsi: (hex 571964), → (hex A2888F). Dekripsi mengembalikan 571964.

Lokalisasi Kesalahan

Karakteristik: kesalahan 1 bit pada cipherteks hanya menghasilkan kesalahan 1 bit pada plainteks. Contoh: A2888F dengan bit ke-5 berubah (1010 1010 ...) terdekripsi menjadi 5F1964 (seharusnya 571964): hanya satu bit berbeda. Inilah yang membuat stream cipher tahan derau saluran.

Feedback Shift Register (FSR) dan LFSR

FSR adalah contoh keystream generator, umumnya berupa perangkat keras. Terdiri dari register geser bit dan fungsi umpan balik :

LFSR (Linear Feedback Shift Register) memakai fungsi XOR: (untuk bit yang dipilih, disebut taps). Setiap pembangkitan bit: seluruh bit digeser satu ke kanan, terlempar keluar menjadi bit keluaran (keystream), lalu baru dihitung dari fungsi umpan balik.

Contoh LFSR 4-bit, , seed :

iIsi register ()Bit keluar ()
011111
101111
210111
301011
410100
511011
601100
700111
810011
901000
1000100
1100011
1210000
1311000
1411100

Keluaran: 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 ... dengan periode (semua status non-nol terkunjungi).

Aplikasi Stream Cipher

Cocok untuk aliran data kontinu: (1) enkripsi saluran antar dua komputer, (2) suara pada jaringan GSM. Alasan: kesalahan bit hanya berdampak satu bit (lokal), dan komputasinya cepat untuk pemrosesan real-time.

Contoh stream cipher (tahun): RC4 (1987), A5 (1989), SEAL (1997), Salsa20 (2004), Trivium (2004), Rabbit (2003), Grain (2004), MICKEY (2004), SNOW (2003), Turing, SOBER-128, WAKE, CryptMT, VEST, ISAAC, FISH (1993), dan lain-lain.

Summary

Stream cipher meng-XOR plainteks dengan keystream dari keystream generator yang diberi seed rahasia: , . Keystream pseudo-random (dapat direproduksi dari seed yang sama, punya periode; seed bit menjamin periode hingga ), berbeda dari OTP yang acak sejati. Sifat khasnya: kesalahan 1 bit cipherteks = kesalahan 1 bit plainteks (lokal). Generator klasiknya FSR/LFSR: register geser + umpan balik XOR; LFSR 4-bit dari seed 1111 menghasilkan 111101011001000... berperiode 15. Cocok untuk data kontinu dan real-time (mis. suara GSM). Contoh nyata dibahas di RC4 dan A5 dan Trivium, Salsa20, dan ChaCha20.