Back to IF4020 Kriptografi
Metode LSB dan Variannya
Questions/Cues
- Mengapa mengubah bit LSB tidak terlihat oleh mata manusia?
- Bagaimana proses penyisipan dan ekstraksi pesan dengan LSB?
- Berapa ukuran pesan maksimum yang dapat disembunyikan pada citra tertentu?
- Apa saja varian LSB (sequential, acak, m-bit, dengan enkripsi)?
- Apa trade-off memakai lebih dari 1 bit LSB per byte?
Reference Points
- IF4020 Kriptografi — Steganografi Bagian 1 (Slides 40-59)
Citra Digital Singkat
Citra tersusun dari pixel; citra berarti pixel. Tiap pixel berukuran bit: biner 1 bit/pixel, grayscale 8 bit/pixel, true color 24 bit/pixel (3 byte: komponen R, G, B, masing-masing 0-255).
Prinsip LSB
Bit sebuah byte disusun dari MSB (most significant bit, paling kiri) hingga LSB (least significant bit, paling kanan). Contoh
11010001= 209. Mengubah LSB hanya mengubah nilai byte sebesar :11010001(209)11010000(208). Pergeseran warna 1 dari 256 tingkat tidak dapat dibedakan mata manusia; bahkan membalik seluruh bit LSB sebuah citra (01) tampak tanpa beda.Contoh Penyisipan
Satu pixel 24-bit =
100000100111101101110101, pesan 3 bit101:
Byte asli Bit pesan Byte stego Nilai 10000010(130)1 10000011131 01111011(123)0 01111010122 01110101(117)1 01110101117 (tetap) Pixel berubah dari menjadi : tetap “ungu”, hanya sedikit bergeser. Contoh pesan 10 bit
1110010111pada 10 byte berurutan mengubah LSB tiap byte menjadi bit-bit pesan; hanya byte yang LSB-nya berbeda yang benar-benar berubah.Ekstraksi: baca byte-byte stego, ambil LSB tiap byte, rangkai kembali menjadi bit pesan (
1110010111).flowchart LR subgraph EMB["Penyisipan"] direction LR A["byte cover<br/>b7..b1 b0"] --> B["ganti b0<br/>dengan bit pesan"] --> C["byte stego"] end subgraph EXT["Ekstraksi"] direction LR D["byte stego"] --> E["ambil b0<br/>(AND 1)"] --> F["rangkai<br/>bit pesan"] end EMB --> EXTKapasitas
Kapasitas bergantung ukuran cover; tiap byte menampung 1 bit:
Cover Byte Pesan maksimum Grayscale (1 byte/pixel) 65.536 65.536 bit = 8192 byte = 8 KB 24-bit (3 byte/pixel) 196.608 196.608 bit = 24.576 byte = 24 KB Varian Metode LSB
- Sequential: bit pesan disisipkan pada pixel berurutan mulai pixel pertama; ekstraksi membaca berurutan sampai bit terakhir. Sederhana tetapi pola perubahan terkonsentrasi di awal citra sehingga mudah dicurigai.
- Acak: posisi pixel dipilih oleh PRNG (pseudo-random number generator); seed menjadi stego-key. Ekstraksi memakai seed yang sama sehingga memperoleh urutan posisi yang sama. Lebih aman karena bit tersebar.
- -bit LSB: memakai bit terakhir tiap byte (mis. 2-bit LSB = ). Trade-off: makin banyak bit LSB, makin besar kapasitas tetapi makin turun kualitas stego-image. Dapat sequential atau acak.
- Dengan enkripsi: pesan dienkripsi dahulu (mis. XOR dengan bit kunci acak sepanjang pesan; lihat Kriptografi Modern dan Operasi XOR). Jika posisi pixel juga acak, ada dua stego-key: satu untuk membangkitkan bit kunci, satu untuk posisi pixel.
Metode LSB mengganti bit paling tidak signifikan tiap byte cover dengan bit pesan; perubahan hanya sehingga tak terlihat mata (mis. pixel ). Ekstraksi cukup mengambil LSB tiap byte dan merangkainya. Kapasitas 1 bit per byte: citra grayscale menampung 8 KB, citra 24-bit menampung 24 KB. Varian: sequential, acak (PRNG dengan seed sebagai stego-key), -bit LSB (kapasitas naik, kualitas turun), dan dengan enkripsi (pesan di-XOR dengan kunci acak, sehingga bisa ada dua stego-key).
Additional Information
Mengapa Format Cover Menentukan
LSB harus memakai format lossless (BMP, PNG). Format lossy seperti JPEG menghitung ulang nilai pixel lewat DCT dan kuantisasi sehingga LSB hilang saat disimpan; itu sebabnya program contoh meminta output BMP atau PNG. Untuk JPEG dipakai metode transform domain (mis. F5, OutGuess, JSteg) yang mengubah koefisien DCT.
Peningkatan: LSB Matching dan Hamming Embedding
LSB replacement (yang dibahas di kuliah) membuat pasangan nilai menyatu pada histogram, jejak yang dipakai steganalisis chi-square (Steganalisis). LSB matching () menambah atau mengurangi 1 secara acak ketika LSB tak cocok sehingga jejak ini hilang. Matrix embedding (kode Hamming, dipakai F5) menyisipkan bit dengan mengubah paling banyak 1 dari posisi sehingga perubahan lebih sedikit.
Mengukur Fidelity
Kualitas stego biasa diukur dengan MSE dan PSNR: dB; nilai di atas dB umumnya tidak terlihat.
Proyek Eksplorasi Mandiri
- Ubah LSB sequential menjadi LSB acak dengan
random.seed(stego_key)danrandom.sample; verifikasi ekstraksi gagal bila seed salah.- Ukur PSNR untuk bit LSB pada citra yang sama dan buat grafik kapasitas vs kualitas.
Bacaan Lanjutan
- Westfeld, A. (2001), F5: A Steganographic Algorithm.
- Mielikainen, J. (2006), LSB Matching Revisited.
- Provos & Honeyman (2003), Hide and Seek: An Introduction to Steganography.