BAB II LANDASAN TEORI
Untuk mendukung penelitian ini diperlukan beberapa landasan teori dan konsepkonsep yang relevan. Landasan teori dalam penelitian ini meliputi pengertian kriptografi dan steganografi algoritma vernam. 2.1 Kriptografi 2.1.1 Definisi Kriptografi Kata kriptografi berasal dari bahasa Yunani, “kryptós” yang berarti tersembunyi dan “gráphein” yang berarti tulisan. Sehingga kata kriptografi dapat diartikan berupa frase “tulisan tersembunyi”. Menurut Request for Comments (RFC), kriptografi merupakan ilmu matematika yang berhubungan dengan transformasi data untuk membuat artinya
tidak dapat dipahami (untuk
menyembunyikan maknanya), mencegahnya dari
perubahan tanpa izin, atau
mencegahnya dari penggunaan yang tidak sah. Jika
transformasinya dapat
dikembalikan, kriptografi juga bisa diartikan sebagai proses mengubah kembali data yang terenkripsi menjadi bentuk yang dapat dipahami. Artinya, kriptografi dapat diartikan sebagai proses untuk melindungi data dalam arti
yang luas
(Oppliger, 2005). Dalam kamus bahasa Inggris Oxford diberikan pengertian kriptografi sebgai berikut : “ Sebuah teknik rahasia dalam penulisan, dengan karakter khusus, dengan mengguanakan huruf dan karakter di luar bentuk aslinya, atau dengan metode-metode lain yang hanya dapat dipahami oleh pihak-pihak yang memproses kunci, juga semua hal yang ditulis dengan cara seperti ini.” Jadi, secara umun dapat diartikan sebagai seni menulis atau memecahkan
cipher
(Talbot dan welsh, 2006). Menezes, Oorschot dan Vanstone (1996) menyatakan bahwa kriptografi adalah suatu studi teknik matematika yang berhubungan dengan aspek keamanan 5
6
informasi seperi kerahasiaan, integritas data, otentikasi entitas dan otentikasi keaslian data. Kriptografi tidak hanya berarti penyediaan keamanan informasi, melainkan sebuah himpunan taknik-teknik. 2.1.2. Sejarah Kriptografi Kriptografi mempunyai sejarah yang panjang dan menakjubkan. Informasi yang lengkap mengenai sejarah kriptografi dapat ditemukan di dalam buku David Kahn yang berjudul The Codebreakers. Buku yang tebalnya 1000 halaman ini menulis secara rinci sejarah kriptografi mulai dari penggunaan kriptografi oleh Bangsa Mesir 4000 tahun yang lalu (berupa hieroglyph yang terdapat pada piramid) hingga penggunaan kriptografi pada abad ke-20 (Menezes et al, 1996). Secara historis ada empat kelompok yang berkontribusi terhadap perkembangan kriptografi, dimana mereka menggunakan kriptografi untuk menjamin kerahasiaan dalam komunikasi pesan penting, yaitu kalangan militer (termasuk intelijen dan mata-mata), kalangan diplomatik, penulis buku harian, dan pencinta (lovers). Di antara keempat kelompok ini, kalangan militer yang memberikan kontribusi paling penting karena pengiriman pesan di dalam suasana perang membutuhkan teknik enkripsi dan dekripsi yang rumit. Kriptografi juga digunakan untuk tujuan keamanan. Kalangan gereja pada masa awal agama Kristen menggunakan kriptografi untuk menjaga tulisan relijius dari gangguan otoritas politik atau budaya yang dominan saat itu. Mungkin yang sangat terkenal adalah “Angka si Buruk Rupa (Number of the Beast) di dalam Kitab Perjanjian Baru. Angka “666” menyatakan cara kriptografik (yaitu dienkripsi) untuk menyembunyikan pesan berbahaya, para ahli percaya bahwa pesan tersebut mengacu pada Kerajaan Romawi. Di
India,
kriptografi
digunakan
oleh
pencinta
(lovers)
untuk
berkomunikasi tanpa diketahui orang. Bukti ini ditemukan di dalam buku Kama Sutra yang merekomendasikan wanita seharusnya mempelajari seni memahami tulisan dengan cipher. Pada Abad ke-17, sejarah kriptografi mencatat korban ketika ratu Skotlandia, Queen Mary, dipancung setelah surat rahasianya dari balik
7
penjara (surat terenkrpsi yang isinya rencana membunuh Ratu Elizabeth I) berhasil dipecahkan oleh seorang pemecah kode (Munir, 2006). Seperti yang telah disebutkan di atas bahwa kriptografi umum digunakan di kalangan militer. Pada Perang Dunia ke II, Pemerintah Nazi Jerman membuat mesin enkripsi yang dinamakan Enigma. Mesin yang menggunakan beberapa buah rotor (roda berputar) ini melakukan enkripsi dengan cara yang sangat rumit. Namun Enigma cipher berhasil dipecahkan oleh pihak Sekutu dan keberhasilan memecahkan
Enigma sering dikatakan sebagai faktor yang memperpendek
perang dunia ke-2 (Churchhouse, 2004). Dimulai dari usaha Feistel dari IBM di awal tahun 70-an dan mencapai puncaknya pada 1977 dengan pengangkatan DES (Data Encryption Standard) sebagai
standar
pemrosesan
informasi
federal
Amerika
Serikat
untuk
mengenkripsi informasi yang tidak belum diklasifikasi. DES merupakan mekanisme kriptografi yang paling dikenal sepanjang sejarah. Pengembangan paling mengejutkan dalam sejarah kriptografi terjadi pada 1976 saat Diffie dan Hellman mempublikasikan
”New Directions in
Cryptography”. Tulisan ini memperkenalkan konsep revolusioner kriptografi kunci publik dan juga memberikan metode baru untuk pertukaran kunci, keamanan yang berdasar pada kekuatan masalah logaritma diskret. Meskipun Diffie dan Hellman tidak memiliki realisasi praktis pada ide enkripsi kunci publik saat itu, idenya sangat jelas dan menumbuhkan ketertarikan yang luas pada komunitas kriptografi. Pada 1978 Rivest, Shamir dan Adleman menemukan rancangan enkripsi kunci publik yang sekarang disebut RSA. Rancangan RSA berdasar pada masalah faktorisasi bilangan yang sulit, dan menggiatkan kembali usaha untuk menemukan metode yang lebih efisien untuk pemfaktoran. Tahun 80-an terjadi peningkatan luas di area ini, sistem RSA masih aman. Sistem lain yang merupakan rancangan kunci publik ditemukan oleh Taher ElGamal pada tahun 1984. Rancangan ini berdasar pada masalah logaritma diskret.
8
Salah satu kontribusi penting dari kriptografi kunci publik adalah tanda tangan digital. Pada 1991 standar internasional pertama untuk tanda tangan digital diadopsi. Standar ini berdasar pada rancangan kunci publik RSA. Pada 1994 pemerintah Amerika Serikat mengadopsi Digital Signature Standard, sebuah mekanisme kriptografi yang berdasar pada algoritma ElGamal (Menezes et al,1996).
2.1.3. Tujuan Kriptografi Tujuan dari kriptografi yang juga merupakan aspek keamanan informasi adalah sebagai berikut (Menezes et al, 1996) (Schneier, 1996) : a) Kerahasiaan (confidentiality) adalah layanan yang digunakan untuk menjaga isi informasi dari semua pihak kecuali pihak yang memiliki otoritas terhadap informasi. Ada beberapa pendekatan untuk menjaga kerahasiaan, dari pengamanan secara fisik hingga penggunaan algoritma matematika yangmembuat data tidak dapat dipahami. Istilah lain yang senada dengan confidentiality adalah secrecy dan privacy. b) Integritas data adalah layanan penjagaan pengubahan data dari pihak yang tidak berwenang. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi pesan oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubsitusian data lain kedalam pesan yang sebenarnya. Di dalam kriptografi, layanan ini direalisasikan
dengan
menggunakan
tanda-tangan
digital
(digital
signature). Pesan yang telah ditandatangani menyiratkan bahwa pesan yang dikirim adalah asli. c) Otentikasi adalah layanan yang berhubungan dengan identifikasi, baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi (user authentication atau
entity authentication) maupun mengidentifikasi
kebenaran sumber pesan (data origin authentication). Dua pihak yang saling berkomunikasi harus dapat mengotentikasi satu sama lain sehingga ia dapat memastikan sumber pesan. Pesan yang dikirim melalui saluran
9
komunikasi juga harus diotentikasi asalnya. Otentikasi sumber pesan secara implisit juga memberikan kepastian integritas data, sebab jika pesan telah dimodifikasi berarti sumber pesan sudah tidak benar. Oleh karena itu, layanan integritas data selalu dikombinasikan dengan layanan otentikasi sumber pesan. Di dalam kriptografi, layanan ini direalisasikan dengan menggunakan tanda-tangan digital (digital signature). Tanda-tangan digital menyatakan sumber pesan. d) Nirpenyangkalan (non-repudiation)
adalah layanan untuk mencegah
entitas yang berkomunikasi melakukan penyangkalan, yaitu pengirim pesan
menyangkal
melakukan
pengiriman
atau
penerima
pesan
menyangkal telah menerima pesan. Tujuan dasar dari kriptografi adalah mewujudkan keempat aspek keamanan informasi tersebut dalam teori dan praktek. 2.1.4. Terminologi dan Konsep dasar Kriptografi Di dalam kriptografi kita akan sering menemukan berbagai istilah atau terminologi. Beberapa istilah yang penting untuk diketahui diberikan di bawah ini: 2.1.4.1. Pesan, Plainteks, dan Cipherteks Pesan (message) adalah data atau informasi yang dapat dibaca dan dimengerti maknanya. Nama lain untuk pesan adalah plainteks atau teks jelas (cleartext) (Schneier, 1996). Pesan dapat berupa data atau informasi yang dikirim (melalui kurir, saluran telekomunikasi, dsb) atau yang disimpan di dalam media perekaman (kertas, storage, dan sebagainya). Pesan yang tersimpan tidak hanya berupa teks, tetapi juga dapat berbentuk citra (image), suara/bunyi (audio), dan video, atau berkas biner lainnya. Agar pesan tidak dapat dimengerti maknanya oleh pihak lain, maka pesan perlu disandikan ke bentuk lain yang tidak dapat dipahami (enkripsi). Bentuk pesan yang tersandi disebut
ciphertext
atau
kriptogram. Proses
pembalikan dimana ciphertext diubah kembali menjadi plainteks di sebut dekripsi (Stamp, 2007).
10
2.1.4.2. Peserta Komunikasi a) Entitas atau peserta adalah orang atau sesuatu yang mengirim, menerima, atau memanipulasi informasi. Entitas bisa berupa orang, terminal komputer, kartu kredit, dan sebagainya. Jadi, orang bisa bertukar pesan dengan orang lainnya (contoh: Alice berkomunikasi dengan Bob) sedangkan di dalam jaringan komputer, mesin (komputer) berkomunikasi dengan mesin (contoh: mesin ATM berkomunikasi dengan komputer server di bank). b) Pengirim adalah entitas dalam komunikasi yang mengirimkan informasi kepada entitas lainnya lainnya. c) Penerima adalah entitas dalam komunikasi yang diharapkan menerima informasi. d) Penyusup (adversary) adalah entitas diluar pengirim dan penerima yang mencoba untuk membobol keamanan informasi. Penyusup biasanya bertindak seolah-olah sebagai pengirim yang sah ataupun penerima yang sah.
2.1.4.3. Kriptologi Kriptologi berasal dari bahasa Yunani, “kryptós” yang berarti “tersembunyi” dan “lógos”yang berarti “kata”. Jadi, kriptologi dapat diartikan sebagai frase kata yang tersembunyi (Oppliger, 2005). Kriptologi dapat juga diartikan sebagai seni dan ilmu untuk membuat dan memecahkan kode rahasia. Kriptologi dibagi menjadi kriptografi (seni dan ilmu membuat kode rahasia), kriptanalisis (ilmu dan seni untuk memecahkan chiperteks menjadi plainteks tanpa mengetahui kunci yang digunakan) (Stamp, 2007) dan steganografi (metoda menyembunyikan pesan atau data lainnya) (Oppliger, 2005). Pelaku kriptanalisis disebut kriptanalis. Jika seorang kriptografer mentransformasikan plainteks menjadi cipherteks dengan suatu algoritma dan kunci maka sebaliknya seorang kriptanalis berusaha untuk memecahkan ciphertext tersebut untuk menemukan plaintext atau kunci.
11
2.1.5. Algoritma dan Kunci Algoritma menggambarkan sebuah prosedur komputasi yang terdiri dari variabel input dan menghasilkan output yang berhubungan (Oppliger, 2005). Algoritma kriptografi atau sering disebut dengan cipher adalah suatu fungsi matematis yang digunakan untuk melakukan enkripsi dan dekripsi (Schneier, 1996). Algoritma kriptografi ini bekerja dalam kombinasi dengan menggunakan kunci (key) seperti kata, nomor atau frase tertentu. Bila keamanan algoritma bergantung pada kerahasian algoritma yang bekerja, maka algoritma tersebut dikatakan sebagai algoritma terbatas (terbatas kemampuannya). Algoritma terbatas mempunyai sejarah yang menarik. Algoritma terbatas biasanya digunakan oleh sekelompok orang untuk bertukar pesan satu sama lain. Mereka membuat suatu algoritma enkripsi dan algoritma enkripsi tersebut hanya diketahui oleh anggota kelompok itu saja. Tetapi, algoritma terbatas tidak cocok lagi saat ini, sebab setiap kali ada anggota kelompok keluar, maka algoritma kriptografi harus diganti lagi. Kerahasian algoritmanya menjadi titik kelemahan karena tidak mengijinkan adanya kontrol kualitas atau standarisasi. Kriptografi modern mengatasi masalah di atas dengan penggunaan kunci, dimana algoritma yang diguakan tidak lagi dirahasiakan, tetapi kunci harus dijaga kerahasiaannya. Kunci adalah parameter yang digunakan untuk transformasi enciphering dan dechipering. Kunci biasanya berupa string atau deretan bilangan. Dengan menggunakan kunci K, maka fungsi enkripsi dan dekripsi dapat ditulis sebagai Ek(P) = C dan Dk(C) = P
(2.1)
dan kedua fungsi ini memenuhi Dk(Ek(P)) = P
(2.2)
12
2.1.6. Jenis Algoritma Kriptografi Berdasarkan jenis kunci yang digunakannya, algoritma .kriptografi dikelompokan menjadi dua bagian, yaitu algoritma simetris (algoritma konvensional) dan algoritma asimetris (algoritma kunci publik) (Schneier, 1996) (Kurniawan, 2004) (Munir, 2006) (Menezes et al, 1996). 2.1.6.1. Algoritma Simetris Algoritma simetris adalah algoritma kriptografi yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya. Istilah lain untuk kriptografi kuncisimetri adalah kriptografi kunci privat (private-key cryptography), kriptografi kunci
rahasia
(secret-key
cryptography),
atau
kriptografi
konvensional
(conventional cryptography). Sistem kriptografi kunci-simetri (atau disingkat menjadi “kriptografi simetri” saja), mengasumsikan pengirim dan penerima pesan sudah berbagi kunci yang sama sebelum bertukar pesan. Keamanan sistem kriptografi simetri terletak pada kerahasiaan kuncinya. Kriptografi simetri merupakan satu-satunya jenis kriptografi yang dikenal dalam catatan sejarah hingga tahun 1976. Semua algoritma kriptografi klasik termasuk ke dalam sistem kriptografi simetri. Kelebihan algoritma simetris ini adalah proses enkripsi dan deskripsinya yang jauh lebih cepat dibandingkan dengan algoritma asimetris. Sedangkan kelemahan algoritma ini adalah permasalahan distribusi kunci (key distribution). Seperti yang telah dibahas, proses enkripsi dan deskripsi menggunakan kunci yang sama. Sehingga muncul persoalan menjaga kerahasian kunci, yaitu pada saat pengiriman kunci pada media yang tidak aman seperti internet. Tentunya jika kunci ini sampai hilang atau sudah dapat ditebak oleh orang lain (orang yang tidak berhak), maka kriptosistem ini sudah tidak aman lagi. Kelemahan lain adalah masalah efisiensi jumlah kunci. Jika terdapat n user, maka diperlukan n(n-1)/2 kunci, sehingga untuk jumlah user yang sangat banyak, sistem ini tidak efisien lagi (Menezes et al, 1996).
13
Gambar 2.1. Skema Kriptografi Simetri 2.1.6.2. Algoritma Asimetris Algoritma asimetris atau kunci publik didesain sehingga kunci yang digunakan untuk enkripsi berbeda dengan kunci untuk dekripsi dimana kunci untuk enkripsi tidak rahasia dan dapat diketahui oleh siapapun (diumumkan ke publik), sementara kunci untuk dekripsi hanya diketahui oleh penerima pesan (rahasia). Pada kriptografi jenis ini, setiap orang yang berkomunikasi mempunyai sepasang kunci, yaitu kunci privat dan kunci publik. Pengirim mengenkripsi pesan dengan menggunakan kunci publik si penerima pesan. Hanya penerima pesan yang dapat mendekripsi pesan karena hanya ia yang mengetahui kunci privatnya sendiri. Kriptografi kunci-publik dapat dianalogikan seperti kotak surat yang terkunci dan memiliki lubang untuk memasukkan surat. Setiap orang dapat memasukkan surat ke dalam kotak surat tersebut, tetapi hanya pemilik kotak yang dapat membuka kotak dan membaca surat di dalamnya karena ia yang memiliki kunci. Keuntungan sistem ini ada dua. Pertama, tidak ada kebutuhan untuk mendistribusikan kunci privat sebagaimana pada sistem kriptografi simetri. Kunci publik dapat dikirim ke penerima melalui saluran yang sama dengan saluran yang digunakan untuk mengirim pesan. Saluran untuk mengirim pesan umumnya tidak aman. Kedua, jumlah kunci dapat ditekan. Untuk berkomunikasi secara rahasia dengan banyak orang tidak perlu kunci rahasia sebanyak jumlah orang tersebut,cukupmembuat dua buah kunci, yaitu kunci publik bagi para koresponden untuk mengenkripsi pesan, dan kunci privat untuk mendekripsi pesan. Berbeda
14
dengan kriptografi kunci-simetris yang dibuat adalah sebanyak jumlah pihak yang diajak berkorespondensi. Contoh penggunaan, misalkan jaringan komputer menghubungkan komputer karyawan di kantor cabang dengan komputer manejer di kantor pusat. Seluruh kepala cabang diberitahu bahwa kalau mereka mengirim laporan ke manejer di kantor pusat, mereka harus mengenkripsi laporan tersebut dengan kunci publik manejer (kunci publik menejer diumumkan kepada seluruh kepala cabang). Untuk mengembalikan laporan tersandi ke laporan semula, hanya manejer yang dapat melakukan dekripsi, karena hanya dialah yang memegang kunci privat. Selama proses transmisiciphertextdari kantor cabang ke kantor pusat melalui saluran komunikasi mungkin saja data yang dikirim disadap oleh pihak ketiga, namun pihak ketiga ini tidak dapat mengembalikan
ciphertext
ke
plainteksnya karena ia tidak mengetahui kunci untuk dekripsi. Meski berusia relatif muda (sejak 1976), kriptografi kunci-publik mempunyai kontribusi yang luar biasa dibandingkan dengan sistem kriptografi simetri. Kontribusi yang paling penting adalah tanda-tangan digital pada pesan untuk
memberikan
aspek
keamanan
otentikasi,
integritas
data,
dan
nirpenyangkalan. Tanda-tangan digital adalah nilai kriptografis yang bergantung pada isi pesan dan kunci yang digunakan. Pengirim pesan mengenkripsi pesan (yang sudah diringkas) dengan kunci privatnya, hasil enkripsi inilah yang dinamakan tanda-tangan digital. Tanda-tangan digital dilekatkan (embed) pada pesan asli. Penerima pesan memverifikasi tanda-tangan digital dengan menggunaklan kunci publik.
Gambar 2.2. Skema Kriptografi Asimetri
15
2.1.7. Keamanan Sistem Kriptografi Suatu sistem kriptografi merupakan sebuah himpunan algoritma, seluruh kemungkinan plaintext, ciphertext, kunci, dan proses manajemen kunci yang digunakan (Oppliger, 2005). 2.1.7.1 Jenis-jenis Ancaman Keamanan Terdapat banyak faktor yang mengancam keamanan data. Ancamanancaman tersebut menjadi masalah terutama dengan semakin meningkatnya komunikasi data yang bersifat rahasia seperti pemindahan dana secara elektronik pada dunia perbankan atau pengiriman dokumen rahasia pada instansi pemerintah. Untuk mengantisipasi ancaman-ancaman tersebut perlu dilakukan usaha untuk melindungi data yag dikirim melalui saluran komunikasi. Salah satunya adalah dengan teknik enkripsi. Dari sekian banyak faktor-faktor yang dapat mengancam keamanan dari suatu
data,
maka
berdasarkan
tekniknya,
faktor-faktor
tersebut
dapat
dikelompokkan ke dalam empat jenis ancaman, yaitu: a) Interruption Interruption terjadi bila data yang dikirimkan dari A tidak sampai pada orang yang berhak (B). Interruption merupakan pola penyerangan terhadap sifat availability (ketersediaan data), yaitu data dan informasi yang berada dalam sistem komputer dirusak atau dibuang, sehinggga menjadi tidak ada dan tidak berguna. Contohnya, hard disk yang dirusak atau memotong jalur komunikasi. b) Interception Serangan ini terjadi jika pihak ketiga berhasil mendapatkan akses informasi dari dalam sistem komputer. Contohnya, dengan menyadap data yang melalui jaringan public (wiretapping) atau menyalin secara tidak sah file atau program
Interception
merupakan
confidentially/secrecy (kerahasiaan data).
pola
penyerangan
terhadap
sifat
16
c) Modification Pada serangan ini pihak ketiga yang tidak hanya berhasil mendapatkan akses informasi dari dalam sistem komputer, tetapi juga dapat melakukan perubahan terhadap informasi. Contohnya, merubah program berhasil merubah pesan yang dikirimkan. Modification merupakan pola penyerangan terhadap sifat integrity (keaslian data). d) Fabrication Fabrication merupakan ancaman terhadap integritas, yaitu orang yang tidak berhak yang meniru atau memalsukan suatu objek ke dalam sistem. Contohnya, dengan menambahkan suatu record ke dalam file. 2.1.7.2. Serangan Pada Sistem Kriptografi Pada dasarnya serangan terhadap sistem kriptografi dapat dibedakan menjadi dua jenis yaitu: a) Serangan pasif adalah serangan dimana penyerang hanya memonitor saluran komunikasi. Penyerang pasif hanya mengancam kerahasiaan data. b) Serangan aktif adalah serangan dimana penyerang mencoba untuk menghapus, menambahkan, atau dengan cara yang lain mengubah transmisi pada saluran. Penyerang aktif mengancam integritas data dan otentikasi, juga kerahasiaan. 2.1.7.3. Kualitas Keamanan Algoritma Suatu algoritma dikatakan aman, bila tidak ada cara menemukan plaintextnya, berapapun banyaknya
ciphertext
yang dimiliki
cryptanalyst.
Sampai saat ini hanya OTP (one-time-pad) yang dinyatakan tidak dapat dipecahkan meskipun diberikan sumber daya yang tidak terbatas. Seluruh algoritma lainnya selalu dapat dipecahkan dengan Ciphertext only attack, dan dengan teknik brute-force attack (memeriksa satu-persatu seluruh kemungkinan kunci dan memeriksa apakah
plaintext
yang dihasilkan memiliki arti yang
17
sesuai). Komputer DNA yang sedang diteliti sekarang memiliki kemampuan yang mampu melakukan perhitungan milyaran kali lebih cepat daripada komputer yang ada sekarang ini. Dengan peningkatan kecepatan komputasi, maka keamanan algoritma kriptografi akan semakin terancam tentunya. 2.1.8. Algoritma Vernam Chiper Stream Chiper merupakan salah satu tipe algoritma kriptografi kriptografi simetri. Stream Chiper mengenkripsikan plainteks menjadi chiperteks bit per bit (1 bit setiap kali transformasi). Variasi chiper aliran lainnya adalah mengenkripsikan plainteks menjadi chiperteks karakter per karakter atau kata per kata, misalnya pada VigenereCipher dan one-time pad chiper. Cipher aliran pertama kali diperkenalkan oleh Vernam melalui algoritmanya yang dikenal dengan nama VernamCipher. Vernam cipher diadopsi dari one-time pad cipher, yang dalam hal ini karakter diganti dengan bit (0 atau 1). Cipherteks diperoleh dengan melakukan penjumlahan modulo 2 satu bit plainteks dengan satu bit kunci: ci = (pi + ki) mod 2
(2.3)
yang dalam hal ini, pi : bit plainteks ki: bit kunci ci : bit cipherteks Plainteks diperoleh dengan melakukan penjumlahan modulo 2 satu bit cipherteks dengan satu bit kunci: pi = (ci – ki) mod 2
(2.4)
Dengan kata lain, Vernam cipher adalah versi lain dari one-time pad cipher. Oleh karena operasi penjumlahan modulo 2 identik dengan operasi bit dengan operator XOR, maka persaman (6.3) dapat ditulis sebagai
18
ci = piki
(2.5)
dan proses deksripsi menggunakan persamaan pi = ciki
(2.6)
Pada cipher, bit hanya mempunyai dua buah nilai, sehingga proses enkripsi hanya menyebabkan dua keadaan pada bit tersebut: berubah atau tidak berubah. Dua keadaan tersebut ditentukan oleh kunci enkripsi yang disebut aliran-bitkunci(keystream). Aliran-bit-kunci dibangkitkan dari sebuah pembangkit yang dinamakan pembangkit aliran-bit-kunci (keystreamgenerator). Aliran-bit-kunci (sering dinamakan runningkey) di-XOR-kan dengan aliran bit-bit plainteks, p1, p2, …, pi, untuk menghasilkan aliran bit-bit cipherteks: ci = piki Di sisi penerima, bit-bit cipherteks di-XOR-kan dengan aliran-bit-kunci yang sama untuk menghasilkan bit-bit plainteks: pi = ciki karena ciki= (piki) ki = pi (kiki) = pi 0 = pi Catatlah bahwa proses enkripsi dua kali berturut-turut menghasilkan kembali plainteks semula Gambar 2.3 memperlihatkan konsep cipher.
Gambar 2.3 Konsep cipher
19
Contoh:
Misalkan
plainteks
adalah
1100101dan
aliran-bit-kunci
adalah1000110maka cipherteks yang dihasilkan adalah0100011yang mana diperoleh dengan meng-XOR-kan bit-bit plainteks dengan bit-bit aliran-kunci pada posisi yang berkoresponden. Keamanan sistem cipher aliran bergantung seluruhnya pada pembangkit aliran-bit-kunci. Jika pembangkit mengeluarkan aliran-bit-kunci yang seluruhnya nol, maka cipherteks sama dengan plainteks, dan proses enkripsi menjadi tidak ada artinya. Jika pembangkit mengeluarkan aliran-bit-kunci dengan pola 16-bit yang berulang, maka algoritma enkripsinya menjadi sama seperti enkripsi dengan XOR sederhana yang memiliki tingkat kemanan yang tidak berarti. Jika pembangkit mengeluarkan aliran-bit-kunci yang benar-benar acak (truly random), maka algoritma enkripsinya sama dengan one-time pad dengan tingkat keamanan yang sempurna. Pada kasus ini, aliran-bit-kunci sama panjangnya dengan panjang plainteks, dan kita mendapatkan cipher aliran sebagai unbreakablecipher. Tingkat keamanan cipher aliran terletak antara algoritma XOR sederhana dengan one-time pad. Semakin acak keluaran yang dihasilkan oleh pembangkit aliran-bit-kunci, semakin sulit kriptanalis memecahkan cipherteks.
2.1.8.1 Pembangkit aliran-bit-kunci (Keystream Generator) Pembangkit
bit-aliran-kunci
dapat
membangkitkan
bit-aliran-kunci
berbasis bit per bit atau dalam bentuk blok-blok bit. Untuk yang terakhir ini, cipher blok dapat digunakan untuk untuk memperoleh cipher aliran. Untuk alasan praktis, pembangkit bit-aliran-kunci diimplementasikan sebagai prosedur algoritmik, sehingga bit-aliran-kunci dapat dibangkitkan secara simultan oleh pengirim dan penerima pesan. Prosedur algoritmik tersebut menerima masukan sebuah kunci U. Keluaran dari prosedur merupakan fungsi dari U (lihat Gambar 2.4). Pembangkit harus menghasilkan bit-aliran-kunci yang kuat secara kriptografi.
20
Gambar 2.4Cipher aliran dengan pembangkit bit-aliran-kunci yang bergantung pada kunci U. Karena pengirim dan penerima harus menghasilkan bit-aliran-kunci yang sama , maka keduanya harus memiliki kunci U yang sama. Kunci U ini harus dijaga kerahasiaanya. Cipher aliran menggunakan kunci U yang relatif pendek untuk membangkitkan bit-aliran-kunci yang panjang.Contoh: Misalkan U adalah kunci empat-bit yang dipilih sembarang, kecuali 0000. Bit-aliran-kunci yang dibangkitkan akan berulang setiap 15 bit. Misalkan U = 1111 Barisan bit-bit aliran-kunci diperoleh dengan meng-XOR-kan bit pertama dengan bit terakhir dari empat bit sebelumnya, sehingga menghasilkan: 111101011001000 Dan akan berulang setiap 15 bit.Secara umum, jika panjang kunci U adalah n bit, maka bit-aliran-kunci tidak akan berulang sampai 2n – 1 bit. Karena U adalah besaran yang konstan, maka bit-aliran-kunci yang dihasilkan pada setiap lelaran tidak berubah jika bergantung hanya pada U. Ini berarti pembangkit bit-aliran-kunci tidak boleh mulai dengan kondisi awal yang sama supaya tidak menghasilkan kembali bit-aliran-kunci yang sama pada setiap lelaran. Oleh karena itu, beberapa pembangkit bit-aliran-kunci menggunakan besaran vektor inisialisasi atau umpan (seed), disimbolkan dengan Z, agar diperoleh kondisi awal yang berbeda pada setiap lelaran (lihat Gambar 2.4).
21
Gambar 2.5Cipher aliran dengan pembangkit bit-aliran-kunci yang bergantung pada kunci U dan umpan Z. Dengan demikian, bit-aliran-kunci K dapat dinyatakan sebagai hasil dari fungsi g dengan parameter kunci U dan masukan umpan Z: K = gK(Z) sehingga proses enkripsi dan dekripsi didefinisikan sebagai C = PK = PgK(Z) P = CK = CgK(Z) Nilai Z yang berbeda-beda pada setiap lelaran menghasilkan bit-aliran-kunci yang berbeda pula.Merancang pembangkit bit-aliran-kunci yang bagus cukup sulit karena membutuhkan pengujian statistik untuk menjamin bahwa keluaran dari pembangkit tersebut sangat mendekati barisan acak yang sebenarnya. 2.1.8.2 Serangan Terhadap Cipher Serangan yang dapat dilakukan oleh kriptanalis terhadap cipher adalah: 1. Known-plaintext attack Misalkan kriptanalis memiliki potongan plainteks (P) dan cipherteks (C) yang berkoresponden, maka ia dapat menemukan bagian bit-alirankunci (K) yang berkoresponden dengan meng-XOR-kan bit-bit plainteks dan cipherteks: PC = P (PK)= (PP) K = 0 K = K
22
2. Ciphertext-only attack Misalkan kriptanalis memiliki dua potongan cipherteks berbeda (C1 dan C2) yang dienkripsi dengan bit-aliran-kunci yang sama. Ia mengXOR-kan kedua cipherteks tersebut dan memperoleh dua buah plainteks yang ter-XOR satu sama lain: C1C2= (P1K ) (P2K) = (P1P2 ) (K K) = (P1P2 ) 0 = (P1P2 ) P1 dan P2 dapat diperoleh dengan mudah. Selanjutnya, XOR-kan salah satu plainteks dengan cipherteksnya untuk memperoleh bit-alirankunci K yang berkoresponden: P1C1= P1 (P1K) = K Pesan dari dua serangan di atas adalah: pengguna cipher harus mempunyai bit-aliran-kunci yang tidak dapat diprediksi sehingga mengetahui sebagian dari bit-aliran-kunci tidak memungkinkan kriptanalis dapat mendeduksi bagian sisanya. 2.1.8.3 Aplikasi Cipher Cipher aliran cocok untuk mengenkripsikan aliran data yang terus menerus melalui saluran komunikasi, misalnya: 1. Mengenkripsikan data pada saluran yang menghubungkan antara dua buah komputer. 2. Mengenkripiskan suara digital pada jaringan telepon mobile GSM.
Alasannya, jika bit cipherteks yang diterima mengandung kesalahan, maka hal ini hanya menghasilkan satu bit kesalahan pada waktu dekripsi, karena tiap bit plainteks ditentukan hanya oleh satu bit cipherteks. Kondisi ini tidak benar untuk cipher blok karena jika satu bit cipherteks yang diterima
23
mengandung kesalahan, maka kesalahan ini akan merambat pada seluruh blok bit plainteks hasil dekripsi (error propagation). 2.2. Steganografi 2.2.1 Definisi Steganografi Steganografi adalah seni untuk menulis pesan secara tersembunyi dan hanya pengirim dan penerima yang tahu dimana pesan berada, pesan dapat disembunyikan dalam gambar, tulisan dan lain-lain, Steganografi berasal dari bahasa yunani steganos, yang artinya “tersembunyi atau terselubung”, dan graphein, “menulis”, salah satu contoh pengunaan steganografi pada jaman dahulu adalah dalam pengiriman pesan rahasia dimana pesan tersebut di tuliskan di kepala budak atau prajurit yang dibotaki, setelah rambut sudah mulai tumbuh orang-orang tersebut segera diberangkatkan untuk mengantar pesan yang tertulis di kepalanya, sehingga dengan demikian menghilangkan kecurigaan tentang adanya pesan yang tersembunyi. Berbeda dengan kriptografi yang memiliki arti seni menyamarkan pesan/ mengacak pesan, kelebihan yang dimiliki oleh steganografi dibandingkan kriptografi adalah steganografi menghindarkan kecurigaan orang karena pesan sama sekali tidak tampak. Penerapan steganografi dalam era modern tidak lepas dari pemanfaatan teknologi informasi dimana melalui perangkat teknologi informasi seperti komputer atau smartphone steganografi diimplementasikan dalam bentuk digital seperti menyembunyikan pesan dalam gambar, document, audio atau video. Steganografi memiliki tiga komponen dasar : 1. The
carrier
image
:
adalah
gambar
yang
digunakan
menyembunyikan pesan 2. The message : pesan yang disembunyikan 3. The key : kode kunci yang digunakan untuk mendekodekan pesan
untuk
24
Dalam penerapan steganografi didunia digital, steganografi memiliki metode/algoritma tertentu dalam mengimplementasikannya. Diantara metodemetode tersebut antara lain :
Algorithms and Transformation
Least Significant Bit Insertion (LSB)
Redundant Pattern Encoding
Spread Spectrum method
2.2.2 Algoritma LSB LSB merupakan Algoritma yang digunakan untuk steganografi, Teknik dasar dalam melakukan konversi dari analog ke digital, biasanya kita dapat memilih antara tiga macam representasi warna :
24-bit warna: dalam setiap piksel dapat memiliki pilihan 2 ^ 24 warna atau sekitar 16777216 macam warna, satu pixel tersebut terdiri dari tiga warna dasar red (R), green (G), blue (B), dan masing-masing warna dasar memiliki nilai 8 bit atau 2^8 = 256 nilai.
8-bit warna: dalam setiap piksel dapat memiliki pilihan 2 ^ 8 warna atau sekitar 256 macam warna, berarti masing-masing Red,Green,Blue memiliki 3 bit atau 2^3 = 8, meski pada kenyataannya kebanyakan Graphic hardware membaca warna dengan komposisi Red = 3 bit Green = 3 bit Blue = 2 bit atau biasa disebut dengan 8-bit true color
8-bit gray-scale: dalam setiap piksel dapat memiliki pilihan 2 ^ 8 warna atau sekitar 256 macam warna namun hanya memiliki 1 warna dasar sehingga disebut sebagai Gray-scale.
Algoritma LSB insertion memodifikasi bit paling rendah atau paling kanan dari masing-masing warna dalam gambar 24-bit atau 8-bit.
25
Contoh Huruf ‘A’ mempunyai kode ASCII 65(desimal), bila diterjemahkan kedalam kode biner sama dengan 1000001. Untuk gambar 24-bit akan membutuhkan tiga pixel berurutan dimana masingmasing pixel terdiri dari RGB (Red, Green, blue). Sebagai contoh ada tiga buah pixel berikut : 10000000.10100100.10110101,10110101.11110011.10110111,11100111.101100 11.00110011 Setelah disisipi huruf ‘A’ dalam kode biner berubah menjadi menjadi : 10000001.10100100.10110100,10110100.11110010.10110110,11100110.101100 11.00110011 (nilai yang tercetak tebal merupakan nilai yang telah berubah dengan cara ditransformasi) Untuk Gambar 8-bit gray-scale dibutuhkan 8 pixel : 10000000, 10100100, 10110101, 10110101, 11110011, 10110111, 11100111, 10110011 Setelah disisipi huruf ‘A’ dalam kode biner berubah menjadi menjadi : 10000001, 10100100, 10110100, 10110100, 11110010, 10110110, 11100110, 10110011 (nilai yang tercetak tebal merupakan nilai yang telah berubah dengan cara ditransformasi) Dari contoh diatas dapat disimpulkan bahwa ada kemungkinan 50% modifikasi bit paling rendah dalam setiap 8 bit, tentunya akan menambah sedikit noise pada gambar. Maka semakin tinggi bit gambar semakin sulit perubahan yang terdeteksi.
26
2.2.3 Data Rate Jika melakukan LSB Insertion untuk gambar 24-bit dimasuki 3 bit/pixel. Dan setiap pixel terdiri dari 24 bit berarti kita dapat menggunakan : 3 hidden_bits/pixel / 24 data_bits/pixel = 1/8
bagian bit untuk tempat
menyembunyikan suatu nilai dari 24bit data Jika melakukan LSB Insertion untuk gambar 24-bit dimasuki 6 bit/pixel. Dan setiap pixel terdiri dari 24 bit berarti kita dapat menggunakan : 6 hidden_bits/pixel / 24 data_bits/pixel = 2/8 bagian bit untuk tempat menyembunyikan suatu nilai dari 24bit data. Jika melakukan LSB Insertion untuk gambar 24-bit dimasuki 9 bit/pixel. Dan setiap pixel terdiri dari 24 bit berarti kita dapat menggunakan : 9 hidden_bits/pixel / 24 data_bits/pixel = 3/8
bagian bit untuk tempat
menyembunyikan suatu nilai dari 24 bit data. 2.2.3.1 Ketahanan LBS sangat rentan terhadap banyaknya transformasi, apabila kita menerapkannya pada gambar yang terkompresi dengan lossy compression seperti JPG mungkin akan rentan terhadap rusaknya gambar. Hasil dari Algoritma LBS akan bagus jika diterapkan pada gambar yang belum terkompresi seperti Bitmap. LSB dapat secara drastis mengubah unsur pokok warna dari pixel. Ini dapat menunjukkan perbedaan yang nyata dari cover image (Image asli) menjadi stego image (Image yang sudah disisipi pesan). 2.2.3.2 Solusi Setelah kita tahu bahwa LBS merupakan metode yang amat sederhana maka kita dapat mencoba memperbaiki kelemahan tersebut dengan :
27
Enkripsi pesan, sehingga meski data dapat di ekstrak namun data hasi extraksi tersebut masih tidak dapat dimengerti
mengacak penempatan bit menggunakan fungsi cryptographical random function (scattering), sehingga hampir mustahil untuk membangun kembali pesan tanpa mengetahui seed dari fungsi acak tersebut.
Dengan cara ini, pesan yang dilindungi oleh dua kunci yang berbeda, memperoleh kerahasiaan lebih baik dari sebelumnya. 2.3 UML (Unified Modeling Language) 2.3.1 Definisi UML Unified Modeling Language (UML) atau Bahasa Pemodelan Terpadu adalah sebuah perkakas untuk membantu pengembang sistem mengetahui visi untuk sebuah sistem, dan mengkomunikasikan visi tersebut ke orang-orang yang berhubungan dengan sistem dengan sekumpulan simbol dan diagram (Schmuller, 1999). UML ditemukan oleh Grady Booch, James Rumbaugh, dan Ivar Jacobson pada tahun 1990an. UML lalu dikembangkan lagi oleh konsortium UML hingga akhirnya mencapai versi 1.0 pada tahun 1997. Kini, UML sudah menjadi sistem notasi yang umum dipakai pengembang sistem. UML adalah diagramdiagram yang bertujuan untuk memberikan sudut pandang yang berbeda terhadap sebuah sistem yang disebut sebagai model. Walaupun ada banyak jenis UML, akan tetapi tidak semuanya harus dibuat dalam sebuah perancangan sistem. Tujuan dari UML yang sebenarnya adalah menyediakan pemahaman yang cukup tentang sistem yang dibuat. 2.3.2 Use Case Diagram Use case adalah gambaran umum sistem dari sudut pandang pengguna sistem. Tujuan dari use case adalah untuk menggambarkan apa yang sistem dapat lakukan. Use case diagram dibentuk dari skenario tentang kegunaan sistem yang dinotasikan dengan sebuah use case. Setiap skenario menjelaskan suatu alur kegiatan. Setiap skenario dapat
28
diinisialisasi oleh pengguna sistem, disebut aktor. Notasi aktor digambarkan pada gambar berikut. Notasi aktor yang menggunakan sebuah use case pada sebuah sistem digambarkan pada gambar berikut.
Gambar 2.6 Aktor Menggunakan Use Case 2.3.3 Sequence Diagram Sequence diagram digunakan terutama untuk menunjukkan interaksi antar objek dalam urutan sekuensial. Sequence diagram sangat berguna untuk mengkomunikasikan bagaimana objek-objek berinteraksi dalam suatu proses bisnis. Analis sistem umumnya menggunakan sequence diagram untuk memperjelas use case. (Bell, 2004). Sequence diagram terdiri dari objek-objek yang digambarkan dengan sebuah persegi yang memiliki nama. Objek-objek tersebut diletakkan di atas dan diurutkan dari kiri ke kanan. Dari setiap objek, ada garis putus-putus memanjang ke bawah yang menggambarkan garis hidup (Life line) suatu objek. Di atas garis hidup tersebut, ada kotak kecil memanjang yang dinamakan aktivasi. Aktivasi merepresentasikan eksekusi dari operasi yang objek lakukan.
Gambar 2.7 Objek, Garis Hidup, dan Aktivasi
29
Suatu objek dapat bertukar pesan dengan objek lain. Pesan tersebut digambarkan sebagai sebuah panah dari garis hidup suatu objek ke objek lain. Ada empat jenis pesan yang bisa digunakan, yakni pesan sederhana (simple message), pesan sinkron (synchronous message), pesan asinkron (asynchronous message), dan pesan nilai pengembalian (return value). Pesan sederhana digunakan untuk memindahkan kontrol dari satu objek ke objek lain. Pesan sinkron digunakan apabila suatu objek harus menunggu jawaban dari objek lain (yang dipanggil) terhadap pesan tersebut sebelum melanjutkan proses lainnya. Pesan asinkron digunakan apabila suatu objek tidak perlu menunggu jawaban dari objek lain sebelum melanjutkan proses lainnya.
Gambar 2.8 Simbol Pesan Dalam Sequence Diagram Sequence diagram merepresentasikan waktu dalam arah vertikal, dari atas ke bawah. Pesan yang lebih atas menandakan bahwa pesan tersebut terjadi lebih dahulu. 2.3.4 Activity Diagram Activity diagram menggambarkan berbagai alir aktivitas dalam sistem yang sedang dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi, dan bagaimana mereka berakhir. Activity diagram juga dapat menggambarkan proses parallel yang mungkin terjadi pada beberapa eksekusi.
30
Activity diagram merupakan state diagram khusus, dimana sebagian besar state adalah action dan sebagian besar transisi di-trigger oleh selesainya state sebelumnya (internal processing). Oleh karena itu activity diagram tidak menggambarkan behaviour internal sebuah sistem (dan interaksi antar subsistem) secara eksak, tetapi lebih menggambarkan proses-proses dan jalur-jalur aktivitas dari level atas secara umum. Sebuah aktivitas dapat direalisasikan oleh satu use case atau lebih. Aktivitas menggambarkan proses yang berjalan, sementara use case menggambarkan bagaimana actor menggunakan sistem untuk melakukan aktivitas. Sama seperti state, standar UML menggunakan segiempat dengan sudut membulat untuk menggambarkan aktivitas. Decision digunakan untuk menggambarkan behaviour pada kondisi tertentu. Untuk mngeilustrasikan proses-proses parallel (fork dan join) digunakan titik sinkronisasi yang dapat berupa titik, garis horizontal atau vertical. Activity diagram dapat dibagi menjadi beberapa object swimlane untuk menggambarkan objek mana yang bertanggung jawab untuk aktivitas tertentu.
31
Contoh activity diagram:
Gambar 2.9 activity diagram dengan swimlane
32
Gambar 2.10 activity diagram tanpa swimlane 2.4 Java Mengapa Java? Karena java adalah bahasa pemrograman multi platform. Java tidak menyediakan IDE khusus seperti halnya bahasa pemrograman yang lain. Pemrogram bisa menggunakan IDE yang support ke Java, misalnya Netbeans, Eclips, TexPad, dan lain-lain. Editor teks bisa digunakan semisal Notepad. Jika editor yang digunakan tidak support Java, kita tinggal menyimpannya dalam ekstensi .java kemudian kompilasi dan menjalankannya menggunakan command prompt. Secara umum, elemen-elemen dasar pemrograman Java terdiri dari : 1. Himpunan Karakter Himpunaan karakter terdiri dari huruf, digit maupun simbol-simbol lainya (termasuk spasi, karakter kontrol).
33
Contoh : Huruf : A, a, B, b, C, c ............... Digit : 0, 1, 2, 3, 4, 5 ........... Simbol dan lainnya
: _ - + * dan sebagainya
2. Pengenal (identifier) Pengenal atau identifier adalah suatu nama yang bisa dipakai dalam pemrograman untuk menyatakan : -
variabel
-
konstanta bernama
-
tipe data
-
fungsi
-
label
-
obyek
Contoh : moMhs; no_Mhs; 3. Kata Kunci Pengenal sistem yang mempunyai makna khusus bagi kompiler. Kegunaan dari golongan ini tidak dapat diubah. Contoh : case, char, const, do, else, for, return, void, while, dan lain-lain 4. Tipe Data Primitif Bahasa Pemrograman Java adalah bahasa pemrograman yang selalu menggunakan tipe data untuk setiap variabelnya. Itu berarti bahwa semua variabel harus dideklarasikan terlebih dahulu sebelum mereka digunakan.
34
Misalnya int nilai = 1;
byte: Tipe data byte adalah 8-bit integer bertanda two's complement. Tipe ini mempunyai nilai minimum -128 dan nilai maksimumnya adalah 127.
short: Tipe data short merupakan integer 16 bit two's complement yang mempunyai nilai minimum -32,768 dan nilai maksimum 32,767.
int: Tipe data int adalah integer 32 bit two's complement. Dia mempunyai nilai minimum -2,147,483,648 sedangkan nilai maksimumnya adalah 2,147,483,647 (inclusive).
long: Tipe data long adalah integer 64 bit two's complement. Nilai minimumnya
adalah
-9,223,372,036,854,775,808
sedangkan
nilai
maksimumnya adalah 9,223,372,036,854,775,807 (inclusive). Gunakan tipe data ini pada saat anda memerlukan jangkau nilai yang lebih besar daripada yang bisa disajikan oleh int.
float: Tipe data float merupakan single-precision 32-bit IEEE 754 floating point.
double: Tipe data
double
adalah double-precision 64-bit IEEE 754
floating point. Parameter N
float 24
double 53
K Emax Emin
8 +127 -126
11 +1023 -1022
Tabel 2.1. Batas nilai floating point
boolean: Tipe data boolean hanya mempunyai dua nilai yang mungkin, yaitu true dan false. Gunakan tipe data ini untuk flag-flag sederhana untuk menjejak/menelusuri
kondisi
true
atau
false.
Tipe
data
ini
merepresentasikan satu bit informasi, tetapi ukurannya tidak didefinisikan dengan tepat.
35
char: Tipe data char adalah karakter Unicode 16 bit. Tipe data ini mempunyai nilai minimum '\u0000' (atau 0) dan nilai maksimum '\uffff' (atau 65,535).
5. Variabel dan Konstanta Variabel digunakan dalam program untuk menyimpam suatu nilai, dan nilai yang ada padanya dapat diubah selama ekseskusi berlangsung. Konstanta adalah nilai yang tetap. Contoh : float jumlah; jumlah = 10; 6. Konstanta bernama Hal ini dapat dilakukan dengan menggunakan kata kunci const. Contoh : const float PHI = 3.14; 2.5 Neatbeans Netbeans IDE adalah arsitektur rich-client dan menyediakan berbagai tools untuk mengembangkan aplikasi yang berbeda seperti WEB, Enterprise, plug-in module, dan aplikasi mobile dengan bahasa yang berbeda termasuk JAVA, C/C++ dan RUBY. Netbeans IDE kompatibel terhadap Windows, Linux, UNIX, dan Solaris. Fitur-fitur yang terdapat dalam Netbeans IDE :
Additional Language
Improve Code Editor
The Netbeans Profiler
Swing Desktop Database
Version Control
36
Netbeans versi 7 merupakan versi terbaru dari IDE Netbeans, yang dirilis oleh Sun Microsystem. Ada tambahan yang signifikan dalam netbeans 7 ini, khususnya penyempurnaannya pada modulnya untuk melakukan perancangan GUI yang memakai konsep layout baru secara mudah. Konsep layout yang boleh dikatakan mengubur berbagai macam layout manager yang tersedia, baik dari paket AWT maupun JFC/Swing.