11
Yosua Alberth Sir - Jurusan Ilmu Komputer Universitas Nusa Cendana Kupang-NTT TUTORIAL ENKRIPSI CITRA BERBASIS AFFINE CIPHER DAN RANDOM NOISE <[email protected]> PENDAHULUAN Pesatnya pertumbuhan jaringan komputer memungkinkan fil-file berukuran besar, seperti citra digital, untuk dapat dengan mudah dikirim melalui internet. Teknik enkripsi data digunakan untuk menjamin keamanan data-data tersebut saat ditransmisi. Namun sayangnya, sebagian besar algoritma enkripsi yang tersedia hanya digunakan untuk data-data berformat teks. Tutorial kali ini membahas mengenai cara mengekripsi citra berbasis metode affine cipher dan random noise. Tujuan utama dari tutorial ini hanya difokuskan pada cara melakukan enkripsi citra dan bukan pada aspek optimasi sekuriti dari proses enkripsi. Oleh karena itu kita akan menggunakan metode enkripsi klasik yang memiliki tingkat sekuriti yang lemah yaitu affine cipher dan penambahan random noise untuk membuat hasil enkripsi tidak dapat dikenali secara visual. REQUIREMENTS Terdapat beberapa requirements yang wajib dipenuhi saat melakukan proses enkripsi citra. Requirements tersebut antara lain: Citra hasil enkripsi masih berbentuk file citra (karena itu bagian header dari file citra tidak dienkripsi tetapi hanya bagian pixel data saja). Citra hasil enkripsi tidak dapat dikenali secara visual. APA ITU AFFINE CIPHER ?? Affine Cipher adalah termasuk jenis cipher substitusi monoalphabetic dan merupakan perluasan dari Caesar cipher, yang mengalikan plainteks dengan sebuah nilai dan menambahkannya dengan sebuah pergeseran. Secara matematis enkripsi plainteks menghasilkan cipherteks dinyatakan dengan fungsi kongruen: C ( P) ≡mP +b ( modn ) Sementara dekripsi cipherteks menjadi plainteks dinyatakan sebagai berikut:

Enkripsi Citra Berbasis Affine Cipher Dan Random Noise

Embed Size (px)

DESCRIPTION

enkripsi citra berbasis metode affine cipher dan random noise

Citation preview

Page 1: Enkripsi Citra Berbasis Affine Cipher Dan Random Noise

Yosua Alberth Sir - Jurusan Ilmu Komputer Universitas Nusa Cendana Kupang-NTT

TUTORIAL

ENKRIPSI CITRA BERBASIS AFFINE CIPHER DAN RANDOM NOISE

<[email protected]>

PENDAHULUAN

Pesatnya pertumbuhan jaringan komputer memungkinkan fil-file berukuran besar, seperti citra digital, untuk dapat dengan mudah dikirim melalui internet. Teknik enkripsi data digunakan untuk menjamin keamanan data-data tersebut saat ditransmisi. Namun sayangnya, sebagian besar algoritma enkripsi yang tersedia hanya digunakan untuk data-data berformat teks.

Tutorial kali ini membahas mengenai cara mengekripsi citra berbasis metode affine cipher dan random noise. Tujuan utama dari tutorial ini hanya difokuskan pada cara melakukan enkripsi citra dan bukan pada aspek optimasi sekuriti dari proses enkripsi. Oleh karena itu kita akan menggunakan metode enkripsi klasik yang memiliki tingkat sekuriti yang lemah yaitu affine cipher dan penambahan random noise untuk membuat hasil enkripsi tidak dapat dikenali secara visual.

REQUIREMENTS

Terdapat beberapa requirements yang wajib dipenuhi saat melakukan proses enkripsi citra. Requirements tersebut antara lain:

Citra hasil enkripsi masih berbentuk file citra (karena itu bagian header dari file citra tidak dienkripsi tetapi hanya bagian pixel data saja).

Citra hasil enkripsi tidak dapat dikenali secara visual.

APA ITU AFFINE CIPHER ??

Affine Cipher adalah termasuk jenis cipher substitusi monoalphabetic dan merupakan perluasan dari Caesar cipher, yang mengalikan plainteks dengan sebuah nilai dan menambahkannya dengan sebuah pergeseran. Secara matematis enkripsi plainteks menghasilkan cipherteks dinyatakan dengan fungsi kongruen:

C (P )≡mP+b (mod n )Sementara dekripsi cipherteks menjadi plainteks dinyatakan sebagai berikut:

P (C )≡m−1 (C−b ) (modn )

dimana:n = ukuran alfabetP = plainteks yang dikonversi menjadi bilangan bulat dari 0 sampai n – 1 sesuai dengan urutan dalam alfabetC = cipherteks yang dikonversi menjadi bilangan bulat dari 0 sampai n – 1 sesuai dengan urutan dalam alfabetm = bilangan bulat yang harus relatif prima dengan n (jika tidak relatif prima, maka dekripsi tidak dapat dilakukan)b = jumlah pergeseran

Page 2: Enkripsi Citra Berbasis Affine Cipher Dan Random Noise

Yosua Alberth Sir - Jurusan Ilmu Komputer Universitas Nusa Cendana Kupang-NTT

Sebagai contoh, urutan huruf dalam alfabet yang berjumlah 26 berikut diekuivalenkan dengan urutan nomor.

Misalkan plainteks berisi kata:

UNDANA

Kata “UNDANA” ekuivalen dengan angka:“U” = 20“N” = 13“D” = 3“A” = 0“N” = 13“A” = 0

Kita akan set nilai m = 5 (karena angka 5 relatif prima terhadap 26 atau Pembagi Bersama Terbesar – PBB (26,5) = 1) dan b = 13 maka fungsi enkripsinya adalah:

C (P )≡5 P+13 (mod 26 )

Cipherteks yang dihasilkan adalah:

JACNAN

Untuk memperoleh kembali plainteks dari contoh di atas maka kita harus menghitung

5−1 (mod 26 ) terlebih dahulu, yang dapat dihitung dengan memecahkan kongruenan lanjar:

5 x≡1 (mod 26 )

Solusinya adalah x = 21 karena 5∗21≡105≡1 (mod 26 ). Jadi untuk dekripsi digunakan konruenan:

P (C )=21 (C−13 ) (mod 26 )

Perhitungan detailnya sebagai berikut:

Page 3: Enkripsi Citra Berbasis Affine Cipher Dan Random Noise

Yosua Alberth Sir - Jurusan Ilmu Komputer Universitas Nusa Cendana Kupang-NTT

c1→ p1≡21∗(9−13 ) (mod 26 )=−84≡20 (mod 26 ) Huruf “U”

c2→ p2≡21∗(0−13 ) (mod 26 )=−273≡13 (mod 26 ) Huruf “N”

c3→p3≡21∗(2−13 ) (mod 26 )=−84≡20 (mod 26 ) Huruf “D”

c4→p4≡21∗(13−13 ) (mod 26 )=0≡0 (mod 26 ) Huruf “A”

c5→p5≡21∗(0−13 ) (mod 26 )=−273≡13 (mod 26 ) Huruf “N”

c6→p6≡21∗(13−13 ) (mod 26 )=0≡0 (mod 26 ) Huruf “A”

Plainteks yang berhasil didekript adalah: UNDANA

PENGGUNAAN AFFINE CIPHER UNTUK ENKRIPSI CITRA

Citra digital (misalnya 24-bit BMP) terdiri dari bagian header dan pixel data. Gambar dibawah ini menunjukan contoh konten sebuah citra 24-bit BMP.

Kita tidak akan mengekripsi bagian header (offset 0 sampai 53) namun hanya pada bagian pixel data (mulai dari offset ke 54) saja sehingga hasil enkripsi nantinya masih berbentuk citra tetapi tidak dapat dikenali secara visual. Merujuk pada gambar di atas, sebuah citra 24-bit BMP dapat dipandang atau diperlakukan sebagai sebuah stream bytes. Perhatikan citra di atas dimulai dari offset (index) ke 54 yang bernilai 255 sampai offset terakhir yang bernilai 255. Kita dapat menuliskannya seperti berikut:

255, 255, 255, …… , 255, 255

Page 4: Enkripsi Citra Berbasis Affine Cipher Dan Random Noise

Yosua Alberth Sir - Jurusan Ilmu Komputer Universitas Nusa Cendana Kupang-NTT

dimana setiap nilai mewakili sebuah byte. Pertanyaan penting: bagaimana cara mengimplementasikan metode affine cipher untuk mengenkripsi citra 24-bit BMP ? Kita melakukan enkripsi dengan cara yang sama seperti teks namun kalau sebelumnya kita menggunakan angka 0-26 untuk 26 buah huruf, sekarang kita akan menggunakan angka 0-255 untuk 256 byte dari pixel data citra. Potongan kode program untuk proses enkripsi tampak pada gambar di bawah.

Penjelasan dari potongan kode program untuk proses enkripsi sebagai berikut:

Step 1. Load konten citra ke dalam variable ImageBytes.

Step 2. Buka dan baca konten citra dimulai dari offset (index) ke 54. Alasan pembacaan konten citra tersebut karena pixel data area dari citra dimulai dari index ke 54, sedangkan index 0 sampai index 53 menyimpan header dari citra.

Step 3. Untuk setiap index yang sedang dibaca, lakukan enkripsi dengan metode affine cipher. Sintaksnya adalah:

ImageBytes[i] = (bytes) ((( ImageBytes[i] * m) + b) % 256)

Step 4. Apabila pembacaan sudah sampai pada index terakhir (pixel terakhir dari citra) maka simpan citra hasil enkripsi tersebut.

Saya coba memasukan nilai m = 45 (45 relatif prima terhadap 256) dan nilai b = 10, kemudian mencoba untuk menenkripsi citra Test.bmp. Hasil enkripsi beserta citra orisinil tampak seperti gambar di bawah ini:

Page 5: Enkripsi Citra Berbasis Affine Cipher Dan Random Noise

Yosua Alberth Sir - Jurusan Ilmu Komputer Universitas Nusa Cendana Kupang-NTT

Konten citra hasil enkripsi tampak seperti gambar di bawah ini:

Dari gambar di atas terlihat bahwa konten dari citra hasil enkripsi berubah menjadi:

221, 221, 221, …… , 221, 221

Apakah requirement telah berhasil dipenuhi ? TIDAK….!! Requirement kedua belum terpenuhi. Walaupun citra telah berhasil dienkripsi namun masih dapat dikenali secara visual. Bagaimana cara membuat citra hasil enkripsi tidak dapat dikenali secara visual ? Gunakan random noise !!!.

PENGGUNAAN AFFINE CIPHER & RANDOM NOISE UNTUK ENKRIPSI CITRA

Tujuan penggunaan random noise adalah membuat citra hasil enkripsi tidak dapat dikenali secara visual. Metode yang digunakan adalah menambahkan sebuah bilangan random dengan suatu nilai random seed tertentu kemudian lakukan operasi XOR pada byte-byte citra. Byte-byte hasil XOR kemudian akan dienkripsi dengan metode affine cipher. Potongan kode program untuk proses enkripsi hasil penambahan fitur random noise tampak seperti gambar di bawah:

Page 6: Enkripsi Citra Berbasis Affine Cipher Dan Random Noise

Yosua Alberth Sir - Jurusan Ilmu Komputer Universitas Nusa Cendana Kupang-NTT

Merujuk pada gambar di atas, terdapat penambahan fitur random noise , dimana setelah citra dienkripsi menggunakan metode affine cipher maka byte-byte hasil enkripsi kemudian di-XOR-kan dengan random noise. Sintaksnya tampak pada baris ke-17 dari gambar di atas:

ImageBytes[i] = (byte)(ImageBytes[i] ^ rx);

Hasil pengujian dengan menggunakan data citra test.bmp dengan menggunakan nilai m = 45, b = 10 dan random seed = 7999711 tampak pada gambar di bawah ini.

Page 7: Enkripsi Citra Berbasis Affine Cipher Dan Random Noise

Yosua Alberth Sir - Jurusan Ilmu Komputer Universitas Nusa Cendana Kupang-NTT

Dengan demikian, merujuk ke requirements kita sebelumnya maka keduanya telah terpenuhi. Namun bagaimana konten citra hasil enkripsi ???? Konten citra hasil enkripsi dengan affine cipher dan random noise tampak pada gambar di bawah ini.

Bagaimana cara melakukan dekripsi citra ??

Potongan kode program untuk dekripsi citra tampak pada gambar di bawah ini:

Page 8: Enkripsi Citra Berbasis Affine Cipher Dan Random Noise

Yosua Alberth Sir - Jurusan Ilmu Komputer Universitas Nusa Cendana Kupang-NTT

Penjelasan potongan kode di atas mengenai Dekripsi Citra:

Step 1. Cari invers dari m (Lihat baris ke-17 sampai 21)

Step 2. Scan citra hasil enkripsi mulai dari offset (index) ke-54 sampai index terakhir. Untuk setiap byte citra, lakukan: (i) XOR-kan byte dengan random seed kemudian simpan hasilnya pada array ImageBytes, (ii) dekrip byte dari ImageBytes dengan menggunakan metode affine cipher, (iii) jika udah sampai byte terakhir maka simpan hasilnya pada citra bitmap yang baru.

Saya coba mendekripsi citra yang sebelumnya telah dienkript dengan memasukan nilai m = 45, nilai b = 10, dan random seed = 7999711 dan hasil dekripsi tampak seperti gambar di bawah ini.

Page 9: Enkripsi Citra Berbasis Affine Cipher Dan Random Noise

Yosua Alberth Sir - Jurusan Ilmu Komputer Universitas Nusa Cendana Kupang-NTT

Gambar di atas menunjukan bahwa citra hasil dekripsi sama dengan citra orisinil. Demikian tutorial kali ini.

Ide skripsi untuk enkripsi citra:

Untuk meningkatkan security, Anda dapat menggunakan Arnold cat map untuk mengocok konten pixel citra kemudian terhadap hasil kocokan tersebut dilakukan operasi XOR dengan chaotic logistic map.

Bagi yang tertarik dengan tema skripsi tersebut dapat menghubungi saya.