BAB II LANDASAN TEORI
Bab ini menjelaskan dasar teori yang menunjang penulisan tugas akhir mengenai pembuatan aplikasi berbasis web dengan integrasi antara Kriptografi menggunakan Algoritma RSA dan Steganografi menggunakan Algoritma LSB. Dasar teori yang digunakan dalam pengembangan ini adalah dasar teori tentang tahapan perancangan dan pengembangan perangkat lunak, UML, PHP, MySQL, Kriptografi, Steganografi, Algoritma RSA, dan Algoritma LSB.
2.1
Tahapan Perancangan dan Pengembangan Sistem Perangkat Lunak Dalam tahap perancangan dan pengembangan sistem, Pressman (2002)
mengemukakan bahwa terdapat suatu model yang sering juga disebut dengan model sekuensial linier atau disebut juga dengan model air terjun(waterfall). Model ini mengusulkan sebuah pendekatan kepada perkembangan perangkat lunak yang sistematik dan sekuensial yang mulai pada tingkat dan kemajuan sistem pada seluruh analisis, desain, kode, dan pengujian. Model tersebut dapat dilihat dalam Gambar2.1.
Analisis
Desain
Kode
Tes
Gambar 2.1Model Sekuensial Linier(Pressman 2002)
7
8
1. Analisis kebutuhan perangkat lunak, merupakan proses pengumpulan kebutuhan yang diintensifkan dan difokuskan, khususnya pada perangkat lunak. Untuk memahami sifat program yang dibangun, analisis harus memahami domain informasi, tingkah laku, unjuk kerja dan antar muka yang diperlukan. 2. Desain, merupakan proses multi langkah yang berfokus pada empat atribut sebuah program yang berbeda, antara lain struktur data, arsitektur perangkat lunak, representasi antar muka dan detail prosedural. 3. Pembuatankode, merupakan proses penterjemahan desain ke dalam bentuk kode mesin yang dapat dibaca. 4. Tes atau pengujian, merupakan sebuah proses yang memfokuskan pada logika internal perangkat lunak, dengan memastikan bahwa semua pernyataan sudah diuji dan untuk menemukan kesalahan sehingga dapat memastikan bahwa input yang dibatasi akan memberikan hasil aktual yang sesuai dengan hasil yang dibutuhkan.
2.2
Pemodelan Sistem Untuk membuat suatu sistem yang baik diperlukan suatu metode atau
perangkat pemodelan sistem. Perangkat pemodelan berfungsi sebagai media yang memberikan penjelasan tentang sistem yang dibuat. Perangkat pemodelan dapat berupa diagram maupun gambar. Menurut Husni Iskandar Pohan (1997), tiga alasan untuk melakukan pemodelan sistem yaitu:
Dapat memfokuskan perhatian pada hal-hal penting dalam sistem tanpa mesti terlibat terlalu jauh.
Mendiskusikan perubahan dan koreksi terhadap kebutuhan pemakai dengan resiko dan biaya minimal.
Menguji pengertian penganalisis sistem terhadap kebutuhan pemakai dan membantu pendesain sistem dan pemrogram membangun sistem.
9
Pemodelan sistem dapat dipresentasikan dengan berbagai cara antara lain, diagram konteks (Data Flow Diagram Context Level), diagram alir(Flowchart), dan banyak model lainnya.
2.2.1 Diagram Konteks(Data Flow Diagram Context Level) Data Flow Diagram (DFD) Context Level atau diagram konteks adalah sebuah diagram sederhana yang menggambarkan hubungan dengan entitas luar, masukan dan keluaran dari sistem. Diagram konteks direpresentasikan dengan lingkaran tunggal yang mewakili keseluruhan sistem. Diagram konteks mempunyai karakteristik penting dari sebuah sistem, yaitu : 1.
Kelompok pemakai, organisasi atau sistem lain dimana sistem melakukan komunikasi yang disebut juga sebagai terminator.
2.
Data masuk yaitu data yang diterima sistem dari lingkungan dan harus diproses dengan cara-cara tertentu.
3.
Data keluar yaitu data yang dihasilkan sistem dan diberikan ke pihak luar.
4.
Penyimpanan data yang digunakan secara bersama-sama antara sistem dan terminator. Data ini dapat dibuat oleh sistem dan digunakan oleh lingkungan atau sebaliknya.
5.
Batasan antara sistem dan lingkungan.
2.2.2 Diagram Alir (Flowchart) Flowchart atau diagram alir merupakan metode untuk menggambarkan tahap-tahap pemecahan masalah dengan merepresentasikan simbol-simbol tertentu yang mudah dimengerti, mudah digunakan, dan standar (Oetomo, Dharma B.S., 2002). Tujuan utama penggunaan diagram alir adalah untuk menggambarkan suatu tahapan penyelesaian masalah secara sederhana, terurai, rapi, dan jelas dengan menggunakan simbol-simbol yang standar. Dalam
10
penulisannya diagram alir dikenal dua model, yaitu diagram alir sistem dan diagram alir program.
2.2.2.1 Diagram Alir Sistem Diagram alir sistem merupakan diagram alir yang menggambarkan suatu sistem peralatan komputer yang digunakan dalam proses pengolahan data serta hubungan antar peralatan tersebut. Diagram alir sistem tidak digunakan untuk menggambarkan urutan langkah untuk memecahkan masalah, tetapi hanya untuk menggambarkan prosedur dalam sistem yang dibentuk. Simbol-simbol standar yang digunakan dan contoh penggunaannya ditunjukkan dalam Gambar2.2 dan Gambar2.3
Pita Magnetik
Kartu Plong/ Keyboard
Punched Paper Tape
Input/Output
Magnetic Drum
Process
Off Line Storage
Proses Sortir
Proses Merge
On Line Storage/ VDU
Magnetic Disc
Arus
Gambar 2.2 Simbol-Simbol Diagram Alir Sistem(Oetomo 2002)
Keyboard
CPU
Disket
VDU
Gambar 2.3 Contoh Penerapan Diagram Alir Sistem (Oetomo 2002)
11
2.2.2.2 Diagram Alir Program Diagram alir program merupakan diagram alir yang menggambarkan urutan logika dari suatu prosedur pemecahan masalah. Simbol-simbol standar yang digunakan pada diagram alir sistem ditunjukkan dalam Gambar 2.4
Proses
Input/Output
Keterangan
Pengujian
Pemberian Nilai Awal
Awal/Akhir Program
Konektor pada satu halaman
Konektor pada satu halaman
Arah
Gambar 2.4 Simbol-Simbol Diagram Alir Program(Oetomo 2002)
Pada penggambaran diagram alir program, ada dua jenis metode, yaitu conceptual flowchart dan detail flowchart. Conceptual flowchart menggambarkan tentang alur dari suatu pemecahan masalah secara global saja.Sedangkan detail flowchart menggambarkan alur pemecahan masalah secara rinci.
2.3 Rekayasa Perangkat Lunak Rekayasa Perangkat Lunak adalah satu bidang profesi yang mendalami cara-cara pengembangan perangkat lunak termasuk pembuatan, pemeliharaan, manajemen organisasi pengembanganan perangkat lunak dan manajemen kualitas.
12
IEEE Computer Society mendefinisikan rekayasa perangkat lunak sebagai penerapan suatu pendekatan yang sistematis, disiplin dan terkuantifikasi atas pengembangan, penggunaan dan pemeliharaan perangkat lunak, serta studi atas pendekatan-pendekatan ini, yaitu penerapan pendekatan engineering atas perangkat lunak.
2.4
Tahapan Proses Tahapan proses merupakan langkah-langkah terurut untuk menyelesaikan
suatu masalah, dimana untuk bisa masuk ketahap selanjutnya kita sebaiknya menyelesaikan tahapan sebelumnya.
2.4.1 Analisis dan Perancangan Analisis dilakukan terhadap beberapa referensi sebagai dasar untuk melakukan implementasi. Adapun tahap-tahap dalam perancangan adalah sebagai berikut: perancangan sistem, perancangan proses, dan perancangan antarmuka. Metode perancangan yang digunakan yaitu pemodelan sistem terstruktur.
2.4.2 Implementasi dan Pengujian Melakukan implementasi dari hasil perancangan yang telah didefinisikan sebelumnya ke dalam bentuk kode (coding). Setelah kode selesai, dilakukan pengujian perangkat lunak yang dibuat, yang ditujukan untuk menemukan kesalahan dan menganalisisnya sebagai umpan balik untuk perbaikan sistem, sehingga perangkat lunak akan terbebas dari segala kesalahan pada saat dieksekusi oleh pengguna. Pengujian meliputi pengujian implementasi aplikasi yang merupakan pengujian terhadap fungsionalitas aplikasi yang di dalamnya termasuk pengujian terhadap kompatibilitas aplikasi terhadap jenis ponsel yang mengakses sistem.
13
2.4.3 Pengambilan Kesimpulan Pengambilan kesimpulan dari aplikasi yang telah dibuat dilakukan setelah semua tahapan perancangan dan pengujian sistem aplikasi telah selesai dilakukan. Pengambilan kesimpulan ini didasarkan pada kesesuaian antara teori dan praktek. Kesimpulan ini merupakan informasi akhir dari perancangan aplikasi yang berisi tentang berhasil atau tidaknya aplikasi tersebut dijalankan.
2.5
Unified Modelling Language (UML) Unified Modelling Language (UML) adalah sekumpulan simbol dan
diagram untuk memodelkan perangkat lunak. Desain dalam bentuk simbol dan diagram, kemudian dapat diterjemahkan menjadi kode program. Telah tersedia alat-alat (tools) yang dapat membuat kode program berdasarkan UML Class Diagram. Implementasi kode program dari diagram UML dapat menggunakan bahasa pemrograman apa saja dengan syarat bahasa pemrograman tersebut harus mendukung pemrograman berorientasi objek (PBO) seperti C++, Java, C#, atau VB.NET. UML adalah bahasa standar untuk membuat model. Model adalah deskripsi masalah atau topik dari aplikasi yang akan dibuat. Dengan menggunakan model, tim pengembang akan terbantu dalam memahami lingkup masalah yang akan dipecahkan. Model adalah visualisasi dari aplikasi yang akan dibangun. Dengan UML semua anggota tim dapat berbicara dengan bahasa yang sama. UML menyediakan beberapa jenis diagram untuk merepresentasikan entities dan relationship yang terdapat di dalam aplikasi. Tahapan pembangunan aplikasi berorientasi objek pada umumnya bersifat iteratif dan incremental. Proses pembangunan aplikasi dibagi menjadi beberapa siklus. Setiap kali satu siklus dilakukan, dilakukan evaluasi sebagai bahan untuk memulai siklus berikutnya.
14
Setiap siklus biasanya terdiri atas: a. Tahap analisa permintaan b. Tahap analisa sistem c. Tahap desain d. Tahap implementasi UML akan digunakan pada tahap analisa dan desain. Desain yang dihasilkan berupa diagram-diagram UML yang akan diterjemahkan menjadi kode program pada tahap implementasi. UML terdiri atas 13 jenis diagram resmi seperti tertulis dalam Tabel 2.2. (Munawar. 2005).
Tabel 2.1: Jenis diagram resmi UML. (Munawar. 2005) No.
Diagram
Kegunaan
1.
Activity
Perilaku prosedural dan parallel
2.
Class
Class, Fitur, dan relasinya
3.
Communication
Interaksi diantara objek. Lebih menekankan ke link
4.
Component
Struktur dan koneksi dari komponen
5.
Composite structure
Dekomposisi sebuah class pada saat runtime
6.
Deployment
Penyebaran / instalasi ke klien
7.
Interaction overview
Gabungan sequence dan activity diagram
8.
Object
Contoh konfigurasi dari contoh-contoh
9.
Package
Struktur hierarki saat kompilasi
10.
Sequence
Interaksi antar objek. Lebih menekankan pada urutan
11.
State machihne
Bagaimana event mengubah sebuah objek selama aktif
12.
Timing
Interaksi antar objek. Lebih menekankan pada waktu
13.
Use case
Bagaimana user berinteraksi dengan sebuah sistem
15
Diagram UML yang akan dibahas pada bab ini adalah use case diagram, sequence diagram, class diagram, activity diagram,dan statechart diagram. Pada penelitian ini penulis menggunakan dua diagram yaitu Use Case Diagram dan Activity Diagram. Dibawah ini merupakan penjelasan diagramdiagram UML yang digunakan dalam mengimplementasikan program. (Munawar. 2005).
2.5.1 Diagram Use Case (Use Case Diagram) Diagram use case ini digunakan untuk menunjukkan fungsionalitas dari suatu sistem dari sudut pandang pengguna atau user. OMG atau Object Management Group telah mendefinisikan notasi grafis untuk use case, tetapi tidak sampai pada menuliskan secara detail use case-nya. Digram use case mendeskripsikan interaksi tipikal antara para pengguna sistem dengan sistem itu sendiri dengan memberi sebuah narasi tentang bagaimana sistem tersebut digunakan. (Fowler:2005). Beberapa notasi yang di gunakan pada diagram use case yaitu aktor, yang digunakan untuk menggambarkan pelaku atau pengguna. Pelaku ini meliputi manusia atau sistem komputer atau subsistem lain yang memiliki metode untuk melakukan sesuatu, use case, digunakan untuk menggambarkan spesifikasi pekerjaan (job specification) dan
deskripsi pekerjaan (job description), serta
keterkaitan antar pekerjaan (job), aliran proses (relationship), digunakan untuk menggambarkan hubungan antara
use case dengan use case lainnya, aliran
perpanjangan (extension point), digunakan untuk menggambarkan hubungan antara use case dengan use case yang diperpanjang (extended use case) maupun
16
dengan use case yang dimasukkan (included use case) dan aliran yang digunakan untuk menggammbarkan hubungan antara actor dengan use case. Sedangkan notasi-notasi yang lebih jelas yang digunakan
dalam
pemodelan diagram use case dapat dilihat pada Tabel 2.3.
Tabel 2.2: Notasi Diagram Use Case. (Fowler:2005). Notasi
Deskripsi Aktor, yang digunakan untuk menggambarkan pelaku atau pengguna. Pelaku ini meliputi manusia atau sistem komputer atau subsistem lain yang memiliki metode untuk melakukan sesuatu. Contoh: Manager, Pelanggan, dan lain-lain.
Use case, digunakan untuk menggambarkan spesifikasi pekerjaan (job specification) dan deskripsi pekerjaan (job description), serta keterkaitan antar pekerjaan (job). Contoh: pesan barang, menutup pintu, dan lain-lain. Aliran
(relationship),
proses
menggambarkan hubungan antara
digunakan
untuk
use case dengan
use case lainnya. Aliran perpanjangan (extension point), digunakan untuk menggambarkan hubungan antara use case dengan use case yang diperpanjang (extended use
case) maupun dengan use case yang dimasukkan (included use case). Aliran
yang
digunakan
untuk
menggammbarkan
hubungan antara actor dengan use case.
17
<<extended>>
Kondisi yang mendeskripsikan apa yang terjadi antara
use case dengan use case yang diperpanjang. Include adalah kondisi aliran proses langsung (directed
<
>
relationship) antara dua use case yang secara tak langsung menyatakan kelakuan (behaviour) dari use
case yang dimasukkan. <>
Adalah kondisi yang mendeskripsikan apa yang terjadi antara actor dengan use case.
Dan berikut ini adalah contoh diagram use case yang umum diterapkan pada sebuah Bank yang di jelaskan pada Gambar 2.5.
Gambar 2.5: Contoh Diagram Use Case pada bank. (Raharjo:2009)
2.5.2 Diagram Aktifitas (Activity Diagram) Diagram aktifitas menggambarkan berbagai alur aktifitas dalam sistem yang sedang dirancang, bagaimana masing-masing alir berawal, keputusan yang mungkin terjadi, bagaimana mereka berakhir, dan juga dapat menggambarkan proses paralel yang mungkin terjadi pada beberapa eksekusi. (Munawar:2005).
18
Oleh karena itu diagram aktifitas tidak menggambarkan perilaku internal sebuah sistem dan interaksi antar subsistem secara eksak, tetapi lebih menggambarkan proses-proses dan jalur-jalur aktifitas dari level atas secara umum. Sedangkan notasi-notasi yang digunakan
dalam pemodelan diagram
aktifitas dapat dilihat pada Tabel 2.3. Tabel 2.3: Notasi Diagram Aktifitas. (Munawar:2005). No.
Notasi
Keterangan Aktifitas, digunakan untuk menggambarkan aktifitas
1.
2.
3.
dalam diagram aktifitas. Node keputusan (decision node), digunakan untuk menggambarkan kelakuan pada kondisi tertentu. Titik awal, digunakan untuk menggambarkan awal dari diagram aktifitas. Titik
4.
(final
acton),
digunakan
untuk
menggambarkan akhir dari diagram aktifitas. Akhir
5.
akhir
alur
(flow
final),
digunakan
untuk
menghancurkan semua tanda yang datang dan tak memiliki efek alur dalam aktifitas. Aksi (action), digunakan untuk menggambarkan alur
6.
antara aksi dengan aksi, titik awal dengan aksi, atau aksi dengan titik akhir. Aksi penerimaan kejadian (accept event action),
7.
sebuah aksi yang menunggu sebuah kejadian dari suatu peristiwa bertemu kondisi yang spesifikasi.
19
DataStore digunakan untuyk menjaga agar semua 8.
<>
tanda yang masuk dan menduplikasinya saat mereka dipilih
untuk
pindah
ke
alur
selanjutnya
(downstream).
Node fork memiliki satu aksi yang masuk dan 9.
beberapa aksi yang keluar.
Join 10.
node
digunakan
untuk
menggambarkan
beberapa aksi yang masuk dan satu aksi yang keluar.
Dibawah ini merupakan contoh penggunaan diagram aktifitas pada sebuah bank yang di jelaskan pada Gambar 2.6.
Gambar 2.6: Contoh Diagram Aktifitas pada sebuah bank. (Raharjo:2009).
20
2.5.3 Sequence Diagram Sebuah sequence diagram secara khusus menjabarkan aktivitas sebuah skenario tunggal. Diagram tersebut menunjukkan sejumlah objek contoh dan pesan-pesan yang melewati objek-objek di dalam use case diagram. (Fowler: 2005). Sequence diagram menunjukkan interaksi dengan menampilkan setiap partisipan dengan garis alir secara vertikal dan pengurutan pesan dari atas ke bawah. Sequence diagram biasa digunakan untuk menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai respons dari sebuah kejadian (event) untuk menghasilkan output tertentu. Masing-masing objek, termasuk aktor, memiliki lifeline vertikal. Pesan digambarkan sebagai garis berpanah dari satu objek ke objek lainnya. Notasi-notasi yang digunakan dalam pemodelan sequence diagram adalah: 1. Aktor, merupakan sebuah peran yang dimainkan seorang pengguna dalam kaitannya dengan sistem. 2. Activation, menggambarkan waktu yang dibutuhkan suatu objek untuk menyelesaikan suatu aktifitas. 3. Lifeline, menggambarkan bahwa hadirnya objek terhadap waktu. 4. Aliran pesan, menggambarkan komunikasi antar objek.
Gambar 2.7: Notasi Sequence Diagram. (Raharjo:2009).
21
Gambar 2.8: Contoh Sequence Diagram pada saat admin melakukan login. (Raharjo:2009).
2.6
PHP PHP merupakan singkatan rekursif (akronim berulang) dari PHP
Hypertext Preprocessor. PHP adalah bahasa pemrograman script yang paling banyak dipakai saat ini atau dalam kata lain bisa diartikan sebuah bahasa pemrograman web yang bekerja di sisi server (server side scripting) yang dapat melakukan konektifitas pada database yang di mana hal itu tidak dapat dilakukan hanya dengan menggunakan sintaks-sintaks HTML biasa. PHP banyak dipakai untuk memrogram situs web dinamis, walaupun tidak tertutup kemungkinan digunakan untuk pemakaian lain (www.wikipedia.com)
2.7
MySQL MySQL adalah sebuah implementasi dari sistem manajemen basisdata
relasional (RDBMS) yang didistribusikan secara gratis dibawah lisensi GPL (General Public License). Setiap pengguna dapat secara bebas menggunakan MySQL, namun dengan batasan perangkat lunak tersebut tidak boleh dijadikan produk turunan yang bersifat komersial. MySQL sebenarnya merupakan turunan salah satu konsep utama dalam basisdata yang telah ada sebelumnya; SQL (Structured Query Language).
22
SQL adalah sebuah konsep pengoperasian basisdata, terutama untuk pemilihan atau seleksi dan pemasukan data, yang memungkinkan pengoperasian data dikerjakan dengan mudah secara otomatis. Kehandalan suatu sistem basisdata (DBMS) dapat diketahui dari cara kerja pengoptimasi-nya dalam melakukan proses perintah-perintah SQL yang dibuat oleh pengguna maupun programprogram aplikasi yang memanfaatkannya. Sebagai peladen basis data, MySQL mendukung operasi basisdata transaksional maupun operasi basisdata nontransaksional (www.wikipedia.com).
2.8
Kriptografi Kriptografi (cryptography) berasal dari bahasa Yunani : “cryptos” artinya
“secret” (rahasia), sedangankan “graphein” artinya “writing” (tulisan). Jadi, kriptografi berarti “secret writing” (tulisan rahasia). Ada beberapa definisi kriptografi yang telah dikemukakan di dalam berbagai literatur. Definisi yang dipakai di dalam buku-buku yang lama (sebelum tahun 1980-an) menyatakan bahwa kriptografi adalah ilmu dan seni untuk menjaga kerahasiaan pesan dengan cara menyandikan ke dalam bentuk yang tidak dapat dimengerti lagi maknanya. Definisi ini mungkin cocok pada masa lalu di mana kriptografi digunakan untuk keamanan komunikasi penting seperti komunikasi di kalangan militer, diplomat, dan mata-mata. Namun saat ini kriptografi lebih dari sekadar privacy, tetapi juga untuk tujuan data integrity, authentication, dan non-repudiation. Definisi yang kita pakai di dalam buku ini mengutip definisi yang dikemukakan di dalam [SHC96]: Kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan (cryptography is the art and science of keeping messages secure) Sebagai pembanding, selain definisi tersebut di atas, terdapat pula definisi yang dikemukakan di dalam [MEN96]:
23
Kriptografi adalah ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan, integritas data, serta otentikasi. Kata “seni” di dalam definisi di atas berasal dari fakta sejarah bahwa pada masa-masa awal sejarah kriptografi, setiap orang mungkin punya cara yang unik untuk merahasiakan pesan. Cara-cara unik tersebut mungkin berbeda-beda pada setiap pelaku kriptografi sehingga setiap cara menulis pesan rahasia pesan mempunyai nilai estetika tersendiri sehingga kriptografi berkembang menjadi sebuah seni merahasiakan pesan (kata “graphy” didalam “cryptography” itu sendiri sudah menyiratkan sebuah seni). Anda akan melihat di dalam bab 3 contoh-contoh teknik kriptografi dari zaman dahulu hingga zaman sekarang shingga anda dapat memahami bahwa kriptografi dapat dipandang sebagai sebuah seni
merahasiakan
pesan.
Pada
perkembangan
selanjutnya,
kriptografi
berkembang menjadi sebuah disiplin ilmu sendiri karena teknik-teknik kriptografi dapat diformulasikan secara matematik sehingga menjadi sebuah metode yang formal.
2.9
Steganografi Teknik menjaga kerahasiaan pesan tidak hanya dengan menggunakan
kriptografi. Ada teknik lain yang sudah digunakan sejak berabad-abad yang lalu, yaitu steganografi (steganography). steganografi (steganography) adalah ilmu dan seni menyembunyikan pesan rahasia di dalam pesan rahasia lain sehingga keberadaan pesan rahasia tersebut tidak dapat diketahui (perhatikan bahwa steganografi tidak sama dengan stenografi, yaitu seni menulis cepat). Misalnya pengirim menyembunyikan pesan rahasia di dalam tulisan berikut : Gerakan orang-orang dari yordania enggan ambil resiko
24
Yang dalam hal ini huruf awal setiap kata bila dirangkai akan membentuk pesan rahasia Good year Steganografi berasal dari bahasa yunani, yaitu “steganos” yang artinya “tulisan tersembunyi (covered writing)”. Steganografi sangat kontras dengan kriptografi. Jika kriptografi merahasiakan makna pesan sementara eksistensi pesan tetap ada maka steganografi menutupi keberadaan pesan. Steganografi dapat dipandang sebagai kelanjutan kriptografi dan dalam prakteknya pesan rahasia dienkripsi terlebih dahulu, kemudian chiperteks disembunyikan di dalam media lain sehingga pihak ketiga tidak menyadari keberadaannya. Pesan rahasia yang disembunyikan dapat diekstrasi kembali persis sama seperti aslinya. Steganografi membutuhkan dua properti yaitu penampung dan pesan rahasia. Media penampung yang umum digunakan adalah gambar, suara, video, atau teks. Pesan yang disembunyikan dapat berupa sebuah artikel, gambar, daftar barang, kode program, atau pesan lain. Keuntungan steganografi dibandingkan dengan kriptografi adalah bahwa pesan yang dikirim tidak menarik perhatian sehingga media penampung yang membawa pesan tidak menimbulkan kecurigaan pada pihak ketiga. Ini berbeda dengan kriptografi di mana chiperteks menimbulkan kecurigaan bahwa pesan tersebut merupakan pesan rahasia.
2.10
RSA Dari sekian banyak algoritma kunci-publik yang pernah dibuat, algoritma
yang paling populer adalah algoritma RSA. Algoritma RSA dibuat oleh 3 orang peneliti dari MIT (Massachussets Institute of technology) pada tahun 1976, yaitu : Ron (R)ivest, Adi (S)hamir, dan Leonard (A)dleman. Keamanan algoritma Rsa terletak pada sulitnya memfaktorkan bilangan yang besar menjadi faktor-faktor prima. Pemfaktoran dilakukan untuk memperoleh kunci privat. Selama
25
pemfaktoran bilangan besar menjadi fator-faktor prima belum ditemukan algoritma yang mangkus, maka selama itu pula keamanan algoritma RSA tetap terjamin. Algoritma RSA mempunyai besaran-besaran sebagai berikut : 1. p dan q bilangan prima
(rahasia)
2. n = p x q
(tidak rahasia)
3. ɸ(n) = (p - 1)(q - 1)
(rahasia)
4. e (kunci enkripsi)
(tidak rahasia)
5. d (kunci dekripsi)
(rahasia)
6. m (plainteks)
(rahasia)
7. c (chiperteks)
(tidak rahasia)
2.10.1 Perumusan Algoritma RSA algoritma RSA didasarkan pada teorema Euler (lihat kembali bahannya di dalam bab 3) yang menyatakan bahwa aɸ(n) ≡ 1 (mod n) (7.2) dengan syarat : 1. a harus relatif prima terhadap n 2. ɸ(n) = n(1-1/p1) (1-1/p2) . . . (1-1/pr), yang dalam hal ini p1, p2, . . ., pr adalah faktor prima dari n. ɸ(n) adalah fungsi yang menentukan berapa banyak dari bilangan bilangan 1,2,3 . . ., n yang relatif prima terhadap n. Berdasarkan sifat ak ≡ bk (mod n) untuk k bilangan bulat ≥ 1 maka persamaan (7.2) dapat ditulis menjadi akɸ(n) ≡ 1k (mod n)
26
atau akɸ(n) ≡ 1 (mod n)
(7.3)
bila a diganti dengan m, maka persamaan (7.3) dapat ditulis menjadi mkɸ(n) ≡ 1 (mod n)
(7.4)
berdasarkan sifat ac ≡ bc (mod n), maka bila persamaan (7.4) dikali dengan m menjadi : mkɸ(n) + 1 ≡ m (mod n)
(7.5)
yang dalam hal ini m relatif prima terhadap n. misalkan e dan d dipilih sedemikian sehingga e ∙ d ≡ 1(mod ɸ(n))
(7.6)
atau e ∙ d ≡ kɸ(n) + 1
(7.7)
sulihkan (7.7) ke dalam persamaan (7.5) menajadi : m e ∙ d ≡ m (mod n)
(7.8)
persamaan (7.8) dapat ditulis kembali menjadi (m e)d ≡ m (mod n)
(7.9)
Yang artinya, perpangkatan m dengan e diikuti dengan perpangkatan dengan d menghasilkan kembali m semula. Berdasarkan persamaan (7.9), maka enkripsi dan dekripsi dirumuskan sebagai berikut: Ee(m) = c ≡ me mod n
(7.10)
Dd(c) = m ≡ cd mod n
(7.11)
27
Karena e ∙ d = d ∙ e, maka enkripsi diikutu dengan dekripsi ekivalen dengan dekripsi diikuti enkripsi : Dd(Ee(m) = Ee(Dd(m)) ≡ md mod n
(7.12)
Oleh karena md mod n ≡ (m + jn)d mod n untuk sembarang bilangan bulat j, maka tiap plainteks m, m + n, m + 2n, . . ., menghasilkan chiperteks yang sama. Dengan kata lain, transformasinya dari banyak ke satu. Agar transformasinya satu-ke-satu, maka m harus dibatasi dalam himpunan {0,1,2, ... , n-1} sehingga enkripsi dan dekripsi tetap benar seperti persamaan (7.10) dan (7.11).
2.10.2 Algoritma membangkitkan pasangan kunci 1. Pilih dua buah bilangan prima sembarang, p dan q 2. Hitung n = p ∙ q (sebaiknya p ≠ q, sebab jika p = q maka n = p 2 sehingga p dapat diperoleh dengan menarik akar pangkat dua dari n) 3. Hitung ɸn = (p - 1)(q - 1) 4. Pilih kunci publik, e, yang relatif prima terhadap ɸ(n) 5. Bangkitan kunci privat dengan menggunakan persamaan (7.6), yaitu e ∙ d ≡ 1 (mod ɸ(n)). Perhatikan bahwa e ∙ d ≡ 1 (mod ɸ(n)) ekivalen dengan e ∙ d ≡ 1 + kɸ(n), sehingga secara sederhana d dapat dihitung dengan
Hasil algoritma diatas : -
Kunci publik adalah pasangan (e,n)
-
Kunci privat adalah pasangan (d,n)
Catatan : n tidak bersifat rahasia, sebab ia diperlukan pada perhitungan enkripsi/dekripsi
28
2.10.3 Algoritma enkripsi/dekripsi Enkripsi 1. Ambil kunci publik penerima pesan, e, dan modulus n 2. Nyatakan plainteks m menjadi blok-blok m1, m2, ..., sedemikian sehingga setiap blok merepresentasikan nilai di dalam selang [0, n - 1] 3. Setiap blok mi dienkripsi menjadi blok ci dengan rumus ci = mie mod n Dekripsi Setiap blok chiperteks ci didekripsi kembali menjadi blok mi dengan rumus mi = cid mod n
2.11
LSB Metode LSB (least significant bit) merupakan metode steganografi yang
paling sederhana dan paling mudah diimplementasikan. Untuk menjelaskan metode ini kita menggunakan citra digital sebagi covertext. Setiap pixel di dalam citra berukuran 1 sampai 3 byte. Pada susunan bit di dalam sebuah byte (1 byte = 8 bit), ada bit yang paling berarti (most significant bit atau MSB) dan bit yang paling kurang berarti (least significant bit atau LSB). Misalnya pada byte 11010010, bit yang pertama (digarisbawahi) adalah bit MSB dan bit 0 yang terakhir (digarisbawahi) adalah bit LSB. Bit yang cocok untuk diganti dengan bit pesan adalah bit lsb, sebab modifikasi hanya mengubah nilai byte tersebut satu lebih tinggi atau satu lebih rendah dari nilai sebelumnya. Misalkan byte tersebut di dalam gambar memberikan persepsi warna merah, maka perubahan satu bit LSB hnay mengubah persepsi warna merah tidak terlalu berarti. Mata manusia tidak dapat membedakan perubahan yang kecil ini. Sebagai ilustrasi, misalkan segmen pixel-pixel citra sebelum penambahan bit-bit watermark adalah 00110011
10100010
11100010
01101111
29
Dan misalkan pesan rahasia (yang telah dikonversi ke sistem biner) adalah 0111. Setiap bit dari watermark menggantikan posisi LSB dari segmen pixel-pixel citra menjadi : 00110010
10100011
11100011
01101111
Untuk membuat hiddentext tidak dapat dilacak, bit-bit pesan tidak mengganti byte-byte yang berurutan, namun dipilih susunan byte secara acak. Misalnya jika terdapat 50 byte dan 6 bit data yang akan disembunyikan maka byte yang diganti bit LSB-nya dipilih secara acak, misalkan byte nomor 36, 5, 21, 10, 18, 49. Pembangkitan bilangan acak seperti LCG dapat digunakan sebagai pesudorandom-number-generator (PRNG). Dalam hal ini, nilai umpan untuk LCG berlaku sebagai kunci stegano. Pada citra 8-bit yang berukuran 256 x 256 pixel terdaoat 65536 pixel, setiap pixel berukuran 1 byte sehingga kita hanya dapat menyisipkan 1 bit pada setiap pixel. Pada citra terdapat 24-bit yang berukuran 256 x 256 pixel, satu pixel berukuran 3 byte (atau 1 byte untuk setiap komponen R, G, dan B), sehingga kita bisa menyisipkan pesan sebanyak 65536 x 3 = 196608 bit atau 196608/8 = 24576 byte. Pesan yang disembunyikan di dalam citra dapat diungkap kembali dengan mengekstrasinya. Posisi byte yang menyimpan bit pesan dapat diketahui dari bilangan acak yang dibangkitkan oleh PRNG. Jika kunci yang digunakan pada waktu ekstrasi sama dengan kunci pada waktu penyisipan, maka bilangan acak yang dibangkitkan juga sama. Dengan demikian, bit-bit data rahasia yang bertaburan di dalam citra dapat dikumpulkan kembali. Sayangnya metode LSB tidak aman sebab jika citra penampung dimanipulasi (misalnya di resize, kompresi, mengubah kontras gambar, dan sebagainya), maka bit-bit LSB daru stegotext menjadi rusak sehingga pesan tidak dapat diungkap kembali. Selain itu, karena lokasi penyisipan selalu pada bit LSB, maka pihak lawan yang curiga dapat menghapus pesan dengan mengganti semua bit LSB pada stegotext.
30