aplikasi chatting kriptografi blowfish
DESCRIPTION
Aplikasi chatting dengan Kriptografi Blowfish menggunakan Windows Socket.TRANSCRIPT
RANCANG BANGUN APLIKASI SECURE CHATTING
DENGAN MENERAPKAN METODE
ALGORITMA BLOWFISH
SEMINAR IDE
Diajukan guna memenuhi sebagian persyaratan
Dalam rangka menyelesaikan pendidikan sarjana strata satu (S1)
Jurusan Teknik Elektro
ADE APRILIO KEDEO
NIM. 0804405071
JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK UNIVERSITAS UDAYANA
JIMBARAN – BALI 2011
BAB I
PENDAHULUAN
Bab pendahuluan membahas mengenai latar belakang, rumusan masalah
yang mendasari penelitian yang akan dilakukan, tujuan, manfaat dan batasan
masalah.
1. 1 Latar Belakang
Dewasa ini teknologi jaringan komputer sangat berkembang pesat,
terutama dalam sektor telekomunikasi. Maka perubahan-perubahan cara
berkomunikasi pun ikut berkembang, berbagai ragam fasilitas aplikasi yang
tersedia untuk user agar dapat berkomunikasi satu individu dengan yang lain,
seperti: aplikasi chatting, instant messaging, video conference dan yang lainya.
Aplikasi chatting merupakan salah satu media yang digunakan untuk
saling tukar-menukar pesan antar individu, namun bila saluran komunikasi yang
digunakan kurang aman, maka pihak ketiga dapat dengan mudah memonitor isi
percakapan antara individu tersebut di dalam jaringan dengan aplikasi bantuan.
Untuk itu sangat diperlukan suatu solusi untuk mengamankan informasi yang
lewat dalam suatu jaringan komputer. Kriptografi diperlukan untuk mengamankan
data dengan cara proses enkripsi. Dengan demikian data informasi terlebih dahulu
diubah manjadi kode-kode yang cukup rumit untuk dipecahkan. Walaupun pihak
ketiga dapat menyadap komunikasi, tetapi mereka tidak dapat mengetahui
percakapan atau komunikasi yang terjadi, karena data yang dilihat oleh pihak
ketiga adalah data dalam bentuk terenkripsi sehingga tidak dapat dibaca. Pada saat
teks kode diterima oleh tujuan maka akan diubah kembali ke teks semula dengan
proses dekripsi.
Maka didapatkan suatu alternatif untuk menyelesaikan masalah ini yaitu
membuat sebuah aplikasi secure chatting dengan menggunakan enkripsi data
dengan kemampuan untuk mengamankan data informasi yang lewat melalui
jaringan komputer. Macam-macam algoritma dalam mengenkripsi suatu data
antara lain: DES, IDEA, AES, Blowfish dan masih banyak lagi. Algoritma
Blowfish adalah metode yang digunakan dalam aplikasi chatting ini untuk
mengenkripsi data informasi didalamnya. Algoritma blowfish adalah algoritma
yang menggunakan kunci yang sama untuk melakukan enkripsi maupun dekripsi.
Dalam aplikasi chatting tersebut, proses koneksi antar komputer akan
menggunakan sebuah komputer yang berperan sebagai server dan komputer lain
sebagai client. Server harus dinyalakan dahulu dan client pun akan
mengkoneksikan diri dengan server. Proses koneksi ini menggunakan teknologi
Microsoft yaitu Microsoft Winsock Library, atau Winsock.
1.2 Rumusan Masalah
Dari latar belakang yang dijelaskan sebelumnya, rumusan masalah yang
diberikan, adalah :
1. Bagaimana membuat aplikasi secure chatting dengan menerapkan
enkripsi data metode blowfish sehingga data informasi yang berjalan
lewat suatu jaringan dapat diproteksi sehingga tidak dapat dibaca dan
disadap oleh pihak ketiga dan memperkuat tingkat keamanan pada
suatu jaringan.
2. Bagaimana merancang aplikasi chatting yang mampu mengkoneksikan
beberapa komputer sekaligus di dalam suatu jaringan komputer
1.3 Batasan Masalah
Adapun ruang lingkup dan batasan masalah dalam penulisan ini adalah:
1. Aplikasi-aplikasi yang dibangun terdiri atas dua buah aplikasi, aplikasi
untuk server dan aplikasi untuk client yang dihubungkan dengan
teknologi Microsoft yaitu Microsoft winsock library.
2. Aplikasi yang dibangun adalah berbasis dekstop
3. Aplikasi server dapat mengeluarkan salah satu user untuk sementara
atau kick dan secara permanen atau banned
4. Sekuritas Kriptografi Algoritma blowfish diatur pada aplikasi client.
5. Aplikasi akan menampilkan user-user yang aktif saja.
1.4 Tujuan
Tujuan yang hendak dicapai dalam pembangunan aplikasi ini adalah
1. Menghasilkan suatu aplikasi chatting yang terkoneksi antar satu client
dengan yang lain sehingga dapat bertukar informasi.
2. Menghasilkan suatu perangkat lunak aplikasi chatting dengan
menggunakan bahasa pemrograman visual basic 6.0
3. Menerapkan metode kriptografi algoritma Blowfish di dalam aplikasi
chatting demi menjamin sekuritas komunikasi.
1.5 Manfaat
Manfaat yang didapatkan jika aplikasi ini diimplementasikan adalah Client
dapat bertukar dan berkomunikasi dengan client lain menjadi lebih nyaman dan
aman karena data informasi yang mereka kirimkan dienkripsi terlebih dahulu
dengan metode blowfish yang sampai saat ini sangat susah dipecahkan oleh
hacker.
BAB II
TINJAUAN PUSTAKA
2.1 Jaringan Komputer
2.1.1 Sejarah jaringan komputer
Konsep jaringan komputer lahr pada tahun 1940-an di Amerika dari
sebuah proyek pengembangan komputer MODEL I di laboratorium Bell dan
group riset Harvard University yang dipimpin professor H. Aiken. Pada mulanya
proyek tersebut hanyalah ingin memanfaatkan sebuah perangkat komputer yang
harus dipakai bersama. Untuk mengerjakan beberapa proses tanpa banyak
membuang waktu kosong dibuatlah proses beruntun (Batch Processing), sehingga
beberapa program bisa dijalankan dalam sebuah komputer dengan kaidah antrian.
Tahun 1950-an, ketika komputer mulai membesar sampai terciptanya
super komputer, maka sebuah komputer mesti melayani beberapa terminal,
sehingga ditemukan konsep distribusi proses bedasarkan waktu yang dikenal
dengan nama TSS (Time Sharing System), maka untuk pertama kali bentuk
jaringan komputer diaplikasikan.
Memasuki tahun 1970-an, mulai digunakan konsep proses distribusi
(Distributed Processing). Beberapa host komputer mengerjakan sebuah pekerjaan
besar secara parallel untuk melayani beberapa terminal yang tersambung secara
seri di setiap host komputer. Dalam proses distribusi sudah mutlak diperlukan
perpaduan antara teknologi komputer dan telekomunikasi, karena selain proses
yang harus didistribusikan, semua host komputer wajib melayani terminal-
terminanya dalam satu perintah dari komputer pusat.
Kemudian, teknologi jaringan local yang dikenal dengan sebutan LAN
mulai berkembang di mana penggunaan komputer dalam jaringan untuk
menangani proses bersama ataupun tanpa melalui komputer pusat (peer-to-peer
system). Demikian pula ketika internet mulai diperkenalkan, maka sebagian besar
LAN yang berdiri sendiri mulai berhubungan dan terbentuklah jaringan raksasa
WAN.(Jogiyanto,1999).
2.3.2 Defisini jaringan komputer
Pada era globalisasi seperti sekarang ini, jutaan bahkan milyaran manusia
saling berkomunikasi, dan kita tidak bisa lagi hanya bergantung pada komunikasi
verbal untuk transfer informasi. Saat ini kita sudah menggunakan jaringan
komputer untuk mengambil dan berbagi (share) informasi dengan cepat dan tepat.
Dengan jaringan komputer inilah dapat ditingkatkan efisiensi dan efektivitas
interaksi antaramanusia dalam hal pemindahan informasi.
Jaringan komputer dapat didefinisikan sebagai hubungan antara dua atau
lebih komputer beserta perifal lainya melalui media transmisi untuk melakukan
komunikasi data satu dengan yang lain.
Adapun komunikasi data dapat diartikan pengiriman data secara elektronik
dari satu tempat ke tempat lain melalui suatu media komunikasi, dan data yang
dikirimkan tersebut merupakan hasil atau akan diproses oleh suatu sistem
komputer.
Dalam jaringan ada tiga komponen utama yang harus dipahami, yaitu:
1. Host atau Node, yaitu sistem komputer yang berfungsi sebagai sumber
atau penerima dari data yang dikirimkan.
a. Server : Komputer tempat penyimpanan data dan program-program
aplikasi yang digunakan dalam jaringan.
b. Client : Komputer yang dapat mengakses sumber daya (berupa data dan
program aplikasi) yang ada pada server.
c. Shared pheriperal : Peralatan-peralatan yang terhubung dan digunakan
dalam jaringan (misalnya, printer, scanner harddisk, modem dan lain-lain).
2. Link adalah media komunikasi yang menghubungkan antara node yang
satu dengan node lainnya. Media ini dapat berupa saluran transmisi kabel
dan tanpa kabel.
3. Software (Perangkat Lunak), yaitu program yang mengatur dan mengelola
jaringan secara keseluruhan. Termasuk di dalamnya sistem operasi
jaringan yang berfungsi sebagai pengatur komunikasi data dan peripheral
dalam jaringan.(Jogiyanto,1999)
2.1.3 Tipe Jaringan Komputer
Ada beberapa tipe jaringan komputer yang umumnya digunakan. Berikut
ini beberapa klasifikasi tipe jaringan komputer yang ada:
1. Berdasarkan letak geografi terbagi atas:
a) Local Area Network (LAN), jaringan ini berada pada satu bangunan atau
lokasi yang sama, dengan kecepatan transmisi data yang tinggi (mulai dari
10Mbps ke atas), dan menggunakan peralatan tambahan seperti repeater,
hub dan Network Interface Card, serta Network Adapter Card.
LAN yang menghubungkan sedikit(sejutar 2 sampai 4 buah) komputer
saja disebut juga Tiny Area Networdk (TAN)
b) Metropolitan Area Network (MAN), jaringan ini merupakan gabungan
beberapa LAN yang terleta pada satu kota(jangkauan 50 sampai 75 mil)
yang dihubungkan dengan kabel khusus atau melalui saluran telepon,
dengan kecepatan transmisi antara 56 Kbps sampai `Mbps dan
menggunakan peraltan seperti router, telepon, ATM switch, dan antenna
parabola
c) Wide Area Network (WAN), jaringan ini merupakan gabbungan dari
komputer LAN dan MAN yang ada di seluruh permukaan bumi ini yang
dihubungkan dengan saluran teleponm gelombang elektromagnetik, atau
satelit; dengan kecepatan transmisi yang lebih lambat dari 2 jenis jaringan
sebelumnya, dan menggunakan peralatan seperti router, modem, WAN
switches.
2. Berdasarkan arsitektur jaringan terbagi atas:
a) Jaringan peer to peer
b) Jaringan berbasis server (server-client network)
c) Jaringan hybrid
3. Berdasarkan teknologi transmisi terbagi atas:
a) Jaringan switch, merupakan jaringan yang penyampaian informasi dari
pengirim ke penerima melalui mesin-mesin perantara atau saluran telepon.
b) Jaringan broadcast, merupakan jaringan yang penyampain informasi dari
pengirim ke penerima dilakukan secara broadcast (disiarkan ke segala
arah) baik melalui saluran kabel maupun saluran tanpa kabel.
Beberapa komponen dasar yang biasanya membentuk suatu LAN adalah
sebagai berikut:
1. Workstation
Dalam jaringan, workstation sebenarnya adalah host yang berupa suatu
sistem komputer. User berhubungan dengan jaringan melalui workstation
dan juga saling berkomunikasi seperti saling bertukar data. User juga
dapat mengakses program aplikasi pada workstation yang dapat bekerja
sendiri di workstation(stand-alone) itu sendiri ataupun menggunakan
jaringan untuk saling berbagi informmasi dengan workstation atau user
lain.
Beberapa fungsi workstation:
a. Server
Sesuai dengan namanya, ini adalah perangkat yang berfungsi untuk
melayani jaringan dan klien yang terhubung pada jaringan tersebut.
Server dapat berupa sistem komputer yang khusus dibuat untuk keperluan
tertentu, seperti untuk penggunaan printer (print server) secara bersama,
untuk hubungan eksternal LAN ke jaringan lain (communication server),
dan file server yakni disk yang digunakan secara bersama oleh beberapa
klien. Server ini tidak dapat digunakan sebagai klien, karena baik secara
hardware maupun software,hanya berfungsi untuk megelola jaringan.
b. Client (klien)
Sebuah workstation umumnya berfungsi sebagai klien dari suatu server,
karena memang workstation akan menggunakan fasilitas yang diberikan
oleh suatu server. Jadi, server melayani sedangkan klien dilayani.
2. Link
Link atau hubungan dalam jaringan local dikenal sebagai media transmisi
berupa kabel maupun tanpa kabel, yang secara fisik menghubungkan
server dan klien. Peralatan tambahan link seperti repeater, bridge, gateway
yang terlibat sebagai perpanjangan jarak hubungan jaringan
3. Transciever
Transciever (transmitter-receiver) merupakan perangkat keras yang meng-
hubungkan workstation atau sistem komputer dengan media transmisi
4. Kartu Jaringan (Network Interface Card / NIC)
Kartu jaringan ini adalah kartu yang dipasang pada PC yang
mengendalikan pertukaran data antar workstation yang ada dalam jaringan
local. Setiap workstation harus dilengkapi dengan NIC yang secara fisik
terhubung langsung dengan bus internal dari PC
5. Perangkat Lunak Jaringan
Perangkat lunak jaringan seperti,
a. Sistem Operasi LAN.
b. Perangkat lunak aplikasi
c. Perangkat lunak pemrograman
d. Program utility
Perangkat lunak ini sangat penting dan mutlak untuk memungkinkan
komonukasi antara sistem komputer yang satu dengan sistem komputer
lainnya. Tanpa perangkat lunak ini, jaringan tidak akan berfungsi. Sistem
komputer dengan LAN dapat menjalankan semua perangkat lunak aplikasi
yang dapat berjalan pada stand-alone PC. (Jogiyanto, 1999)
2.2 Winsock
Untuk pemrograman aplikasi socket berbasis windows, maka komponen
API yang sering digunakan adalah Winsock (Windows Socket API) yang
mendukung interface standar TCP/IP, yang merupakan protocol jaringan popular
saat ini. Pada bahasa pemrograman visual sperti Visual Basic. Kita dapat
menggunakan control Winsock yang telah disediakan untuk mengembangkan
aplikasi socket.
Agar lebih jelas mengenai cara kerja winsock dalam mengkoneksikan 2
buah komputer yang terhubung dalam 1 buah jaringan local (LAN), perhatikan
gambar 2.1 berikut.
Gambar 2.1 Proses Koneksi Antar Winsock
Pada gambar 2.2 terlihat bahwa WinsockS menerima permintaan koneksi
dari winsock client-1 dan menghubungkannya dengan WinsockC(1). WinsockS
sendiri tetap berada dalam status listening, untuk mendengar permintaan koneksi
dari winsock client lainnya.
Gambar 2.2 Koneksi Antar Winsock Server dengan Winsock Client-1
Bila ada client-2 yang melakukan koneksi, maka WinsockS akan menerima
permintaan koneksi dan menghubungkannya dengan WinsockC(2). WinsockS
sendiri tetap berada dalam status listening. Perhatikan gambar 2.3.
Gambar 2.3 Koneksi Antar Winsock Server denga Winsock Client-2
Dengan demikian, hasil akhir koneksi winsock antara aplikasi server
client-1 dan client-2 adalah seperti terihat pada gambar 2.4 berikut.
Gambar 2.4 Hasil Akhir Koneksi Winsock Server, Client-1 dan Client-2
Batas maksimum objeck WinsockC yang akan di-load adalah 200 buah,
sesuai dengan batas maksimum client yang terkoneksi ke server. Bila komputer
client-1 menutup aplikasi chatting-nya, maka WinsockC(1) akan idle dan bisa
dihubungkan oleh WinsockS dengan winsock client lain yang melakukan
permintaan koneksi. (Munir, 2006).
2.3 Kripfografi
2.3.1 Pengertian kriptografi
Kriptografi (cryptographi) berasal dari Bahasa Yunani: “cryptos” artinya
“secret” (rahasia), sedangkan “graphein” artinya “writing” (tulisan). Sehingga
kriptografi berarti “secret writing” (tulisan rahasia). Jadi kriptografi didefinisikan
sebagai ilmu dan seni untuk menjaga kerahasiaan pesan dengan cara
menyandikannya kebentuk yang tidak dapat dimengerti lagi maknanya.
Kata “seni” dalam definisi tersebut berasal dari fakta sejarah bahwa pada
masa-masa awal sejarah kroptografi, setiap orang mungkin mempunyai cara yang
unik untuk merahasiakan pesan. Cara-cara tersebut mungkin berbeda-beda pada
setiap pelaku kriptografi sehingga setiap cara menulis pesan rahasia, pesan
tersebut mempunyai nilai estetika tersendiri sehingga kriptografi berkembang
menjadi sebuah seni merahasiakan pesan.
Definisi di atas mungkin cocok pada masa lalu dimana kriptografi
digunakan untuk keamanan komunikasi penting seperti komunikasi di kalangan
militer, diplomat dan mata-mata. Namun saat ini kriptografi lebih dari sekedar
privacy, tapi juga untuk tujuan data integrasi, authentication, dan non-repudiation
Tujuan mendasar dari kripotgrafi itu sendiri adalah sebagai berikut:
a) Kerahasiaan (confindentiality)
Memastikan bahwa tidak ada yang membaca pesan selain orang
yang dituju
b) Integritas data (data integrity)
Suatu layanan yang menjamin bahwa pesan yang asli tidak
mengalami perubahan.
c) Otentikasi (authentication)
Mengidentifikasi pihak-pihak yang berkomunikasi maupun
mengidentifikasi kebenaran pesan.
d) Nirpenyangkalan (non-repudiation)
Layanan yang mencegah terjadinya penyangkalan oleh pengirim
pesan atau penyangkalan oleh penerima pesan sudah menerima
pesan.
2.3.2 Proses Kriptografi
Proses penyandian plainteks menjadi cipherteks disebut enkripsi
(encryption) atau enciphering. Sedangkan proses mengembalikan cipherteks
menjadi plainteks semula dinamakan dekripsi (decryption) atau deciphering.
Enkripsi dan dekripsi dapat diterapkan baik pada pesan yang dikirim maupun
pada pesan yang tersimpan.
Urutan proses kriptografi secara umum ditunjukan oleh gambar 2.5
Gambar 2.5 Proses Kriptografi
2.3.3 Enkripsi & Dekripsi
Proses penyandian plainteks menjadi cipherteks disebut enkripsi
(encryption) atau enciphering. Sedangkan proses mengembalikan cipherteks
menjadi plainteks semula dinamakan dekripsi (decryption) atau deciphering.
Enkripsi dan dekripsi dapat diterapkan baik pada pesan yang dikirim maupun
pada pesan yang tersimpan.
2.3.4 Kunci Kriptografi
Keamanan algoritma kriptografi sering diukur dari banyaknya kerja (word)
yang dibutuhkan untuk memecahkan cipherteks menjadi plainteks tanpa
mengetahui kunci yang digunakan. Kerja ini dapat diekivalenkan dengan waktu,
memori, uang dan lain-lain. Semakin banyak kerja yang diperlukan berarti juga
semakin lama waktu yang dibutuhkan, maka semakin kuat algoritma kriptografi
tersebut, yang berarti semakin aman digunakan untuk menyandikan pesan.
Jika keamanan kriptografi ditentukan dengan menjaga kerahasiaan
algoritmanya, maka algoritma kriptografinya dinamakan algoritma restricted,
dimana algoritma restricted ini mempunyai sejarah tersendiri di dalam kriptografi.
Algoritma restricted biasanya digunakan oleh sekelompok orang untuk bertukar
pesan satu sama yang lain. Mereka membuat suatu algoritma enkripsi dan
algoritma enkripsi tersebut hanya diketahui oleh anggota kelompok itu saja.
Tetapi algoritma restricted tidak cocok lagi saat ini, sebab setiap kali ada anggota
kelompok keluar, maka algoritma kriptografi harus diganti lagi.
Kriptografi modern mengatasi masalah di atas dengan menggunakan
kunci, yang dalam hal ini algoritma tidak lagi dirahasiakan, tetapi kunci harus
dijaga kerahasiaannya. Kunci (key) adalah parameter yang digunakan untuk
transformasi enciphering dan deciphering. Kunci biasanya berupa string atau
deretan bilangan. Dengan menggunakan kunci K maka fungsi enkripsi dapat
ditulis sebagai:
EK(P) = C
dan fungsi dekripsi dapat ditulis sebagai:
DK(C) = P
Dan kedua fungsi ini memenuhi:
DK(EK(P)) = P
Gambar 2.6.a. memperlihatkan skema enkripsi dan dekripsi dengan
menggunakan kunci, sedangkan gambar 2.6.b. mengilustrasikan enkripsi dan
dekripsi terhadap sebuah pesan
(a)
(b)
Gambar 2.6.(a) Skema enkripsi dan dekripsi, (b) Contoh ilustrasi enkripsi dan deskripsi pesan
2.4 Metode Kriptografi Blowfish
2.4.1 Struktur Algoritma Blowfish
Blowfish adalah algoritma kunci simetri, yang berarti menggunakan kunci
yang sama untuk melakukan enkripsi dan dekripsi file. Blowfish juga merupakan
cipher blok, yang berarti selama proses enkripsi dan dekripsi, Blowfish akan
membagi pesan menjadi blok-blokdengan ukuran yang sama panjang. Panjang
blok untuk algoritma Blowfish adalah 64-bit. Pesan yang bukan merupakan
kelipatan delapan byte akan ditambahkan bit-bit tambahan (padding) sehingga
ukuran untuk tiap blok sama.
Algoritma dalam Blowfish terbagi menjadi dua bagian, yaitu key
expansion dan data encryption. Proses key expansion akan melakukan konversi
sebuah kunci mulai dari 56 byte sampai beberapa array sub kunci dengan
totalmencapai 4168 byte.
Proses data encryption terjadi pada jaringan feistel, mengandung fungsi
pengulangan sederhana sebanyak enam belas kali. Setiap iterasi, terdiri dari
sebuah permutasi yang tidak bergantung pada kunci dan sebuah substitusi yang
tidak bergantung pada data dan kunci. Semua operasi merupakan penambahan dan
XOR pada word 32-bit. Operasi penambahan yang dilakukan hanya merupakan
empat indeks array data lookup pada setiap literasi.
Pada algoritma Blowfish, digunakan banyak subkey. Kunci-kunci ini harus
dihitung atau dibangkitkan terlebih dahulu sebelum dilakukan enkripsi atau
dekripsi data.
Kunci- kunci yang digunakan antara lain terdiri dari, 18 buah 32-bit
subkey yang tergabung dalam P-array (P1, P2, ..., P18). Selain itu, ada pula empat
32-bit S-box yang masing masingnya memiliki 256 entri : S1,0, S1,1,..., S1,255;
S2,0, S2,1,..,, S2,255; S3,0, S3,1,..., S3,255; S4,0, S4,1,..,, S4,255.
Pada jaringan feistel, Blowfish memiliki 16 iterasi, masukannya adalah
64-bit elemen data, X. Untuk melakukan proses enkripsi:
1. Bagi X menjadi dua bagian yang masing-masing terdiri dari 32-bit: XL
,XR.
2. For i = 1 to 16:
XL = XL XOR Pi
XR = F(XL) XOR XR
Tukar XL dan XR
3. Setelah iterasi ke-enam belas, tukar XL dan XR lagi untuk melakukan
undo pertukaran terakhir.
4. Lalu lakukan XR = XR XOR P17
XL = XL XOR P1
5. Terakhir, gabungkan kembali XL dan XR untuk mendapatkan
cipherteks.
Untuk lebih jelasnya, gambaran tahapan pada jaringan feistel yang digunaka
Blowfish adalah seperti pada Gambar 2.7.
Gambar 2.7 Jaringan Feitsel
Pada langkah kedua, telah dituliskan mengenai penggunaan fungsi F.
Fungsi F adalah:
Bagi XL menjadi empat bagian 8-bit: a,b,c dan d. F(XL) = ((S1,a + S2,b
mod 232) XOR S3,c) + S4,d mod 232.
Agar dapat lebih memahami fungsi F, tahapannya dapat dilihat pada
Gambar 2.8
Gambar 2.8 Fungsi F
Algoritma Blowfish memiliki keunikan dalam hal proses dekripsi, yaitu proses
dekripsi dilakukan dengan urutan yang sama persis dengan proses enkripsi, hanya
saja pada proses dekripsi P1, P2, …, P18 digunakan dalam urutan yang terbalik.
Sebelumnya, telah dijelaskan mengenai penggunaan subkey didalam
Blowfish. Sekarang, akan dijelaskan mengenai cara menghitung atau
membangkitkan subkey:
1. Inisialisasi P-array yang pertama dan juga empat S-box, berurutan, dengan
string yang telah pasti. String tersebut terdiri dari digit-digit heksadesimal
dari pi, tidak termasuk angka tiga diawal.
Contoh :
P1 = 0x243f6a88
P2 = 0x85a308d3
P3 = 0x13198a2e
P4 = 0x03707344
2. XOR pi dengan 32-bit pertama dari kunci, XOR p2 dengan 32-bit kedua
dari kunci , dan seterusnya untuk seluruh bit dari kunci (sampai p18).
Ulangi siklus seluruh bit kunci secara berurutan sampai seluruh P-array
telah di-XOR-kan dengan bit-bit kunci.
3. Enkripsikan string yang seluruhnya nol (all-zero) dengan algoritma
Blowfish, menggunakan subkey yang telah dideskripsikan di langkah (1)
dan (2).
4. Gantikan p1 dan p2 dengan hasil dari langkah (3).
5. Enkripsikan hasil dari tahap (3) menggunakan algoritma Blowfish dengan
subkey yang telah dimodifikasi.
6. Gantikan p3 dan p4 dengan hasil dari langkah (5)
7. Lanjutkan tahapan-tahapan diatas, gantikan seluruh elemen dari P- array
dan kemudian keempat S-box secara berurutan, dengan hsil keluaran
algoritma Blowfish yang terus menerus berubah.
Secara keseluruhan, 521 iterasi dibutuhkan untuk membangkitkan seluruh
subkey. Aplikasi dapat menyimpan seluruh subkey, agar tidak perlu mengeksekusi
proses ini secara berulang kali setiap iterasi.
2.4.2 Keamanan Blowfish
Sampai saat ini algoritma Blowfish belum ditemukan kelemahan yang
berarti hanya adanya weak key dimana dua entri dari S-box mempunyai nilai yang
sama. Belum ada cara untuk mengecek weak key sebelum melakukan key
expansion, tetapi hal ini tidak berpengaruh terhadap hasil enkripsi.
Hasil enkripsi dengan algoritma Blowfish sangat tidak mungkin dan tidak
praktis untuk di terjemahkan tanpa bantuan kunci. Sampai kini belum ada
Cryptoanalyst yang dapat membongkar pesan tanpa kunci yang dienkripsi dengan
memakai bantuan algoritma Blowfish. Agar aman dari pembongkaran pesan maka
dalam algoritmanya harus menggunakan 16 putaran agar pesan tersebut tidak
dapat dibongkar.
Algoritma Blowfish pun dapat digabungkan dengan algoritma-algoritma
enkripsi yang lain dalam pengkripsian sebuah pesan untuk lebih menjamin isi dari
pesan tersebut. Sehingga algoritma Blowfish cukup aman jika ingin digunakan
untuk mengenkripsi data yang ingin di amankan.
BAB III
GAMBARAN UMUM SISTEM
3.1 Analisis Gambaran Umum
Permasalahan yang akan di bahas adalah mengenai rancangan aplikasi
chatting dan sistem koneksi antar komputer dalam aplikasi chatting yang
menggunakan winsock, proses pengiriman pesan antar computer, flowchart dari
proses chatting.
3.1.1 Sistem koneksi antar komputer dalam aplikasi chatting
Koneksi antar komputer di dalam aplikasi chatting membutuhkan sebuah
komputer yang berperan sebagai server dan komputer lainya sebagai client.
Aplikasi server harus dijalankan terlebih dahulu dan aplikasi client akan
mengkoneksikan diri dengan aplikasi server. Aplikasi server yang dibangun
dalam aplikasi chatting ini akan mampu mengkoneksikan maksimal 200 client
pada 1 buah server.
Dalam pembuatan program (coding), penulis menggunakan bahasa
pemrograman Microsoft Visual Basic 6.0 (VB6). Bahasa pemrograman VB6
memungkinkan suatu aplikasi dapat berkomunikasi dengan aplikasi lainya pada
komputer yang berbeda (tetapi harus terhubung pada jaringan local yang sama)
melalui Microsoft Winsock Library, atau lebih sering disebut dengan komponen
‘Winsock’.
Dalam proses kerjanya, salah satu winsock berperan sebagai server dan
winsock lainnya berperan sebagai client. Aplikasi dengan winsock yang bertindak
sebagai server akan dijalanaakan terlebih dahulu.
Winsock server akan stand-ny(listening) untuk mendengar semua
permintaan koneksi dari winsock client. Kemudian, winsock client mengirim
permintaan konekksi kepada server dengan merujukpada IP-address dari
komputer server dan nomor port yang digunakan oleh server.
Aplikasi chatting yang dibangun harus dapat mengkkoneksikan maksimal
200 buah komputer client. Oleh karena setiap winsock hanya memiliki hubungan
ke satu buah winsock lainnyaa, maka harus dilakukan modifikasi dalam proses
koneksi, agar aplikasi server dapat menampung koneksi dari maksimal 200 buah
komputer client. Modifikasi yang dilakukan adalah:
1. Aplikasi yang dibangun, akan dibagi menjadi 2 jenis aplikasi untuk server
dan aplikasi untuk client
2. Aplikasi server, berfungsi sebagai perantara koneksi bagi semua komputer
client. Aplikasi server memiliki 1 buah winsock yang stand-by dan selalu
dalam berada dalam status listening( WinsockS) dan sejumlah
winsock(maks.200 buah, winsock dibuat dalam bentuk objeck ber-array
dan diberi nama: WinsockC(n), dengan nilai maksimum n=200 yang akan
terhubung langsung dengan winsock client. Proses koneksinya adalah
sebagai berikut:
a. Bila ada permintaan dari winsock client yang masuk, maka permintaan
koneksi ini akan diterima oleh winsockS. Selanjutnya WinsockS akan
menghubungkan permintaan koneksi yang masuk dengan salah satu
WinsockC(x) yang sedang idle (tidak sedang terkoneksi dengan
winsock lainnya). Ini artinya, WinsockS hanya berfungsi sebagai
perantara untuk mengkoneksikan winsock client dengan WinsockC,
WinsockS akan kembali pada statusnya, listening, untuk mendengar
permintaan koneksi dari aplikasi client lainnya.
b. Bla WinsockC(n) yang terpakai dan berada dalam status terhubung
sudah mencapai 200buah, maka permintaan berikutnya dari client akan
di tolak hingga ada WinsockC(n) yang idle.
3. Aplikasi client, berfungsi sebagai sarana bertukar pesan (chatting) dengan
user lainnya yang terhubung pada aplikasi server. Untuk proses koneksi,
aplikasi client cukup memiliki satu buah winsock.
3.1.2 Proses pengiriman pesan antar komputer
Pada implementasnya, aplikasi chatting harus dapat mengirimkan pesan
dari salah satu user kepada user lainnya. Misalkan, ada 3 komputer client
terkoneksi dengan server dan client-3 akan mengirimkan pesan XYZ ke client-1
maka proses pengiriman pesan antar komputer yang terjadi adlaah:
1. Winsock client-3 mengirimkan pesan XYZ kepada WinsockC(3).
2. WinsockC(3) menerima pesan M.
3. Aplikasi akan memerintah WinsockC(1) untuk mengirimkan pesan XYZ pada
Winsock-client 1
4. Winsock client-1 menerima pesan M
Proses pengiriman pesan di atas dapat dilihat pada gambar 3.1 berikut,
terlihat bahwa WinsockS hanya sebagai perantara untuk menyampaikan pesan
antar winsock.
Gambar 3.1 Proses Pengiriman Pesan dari Client-3 ke Client-1
3.1.2 Flowchart dari proses chatting
Aplikasi yang akan dibangun adalah aplikasi server dan aplikasi client.
Aplikasi server harus dijalankan sebelum aplikasi client mengkoneksikan diri
dengan server. Server dapat melakukan kick atau banned terhadap client. Untuk
menjamin keamanan komunikasi, client dapat memilih untuk menggunakan fitur
kriptografi Blowfish untuk mengenkripsi pesan.
Proses-proses yang terjadi di dalam aplikasi server dan client, dapat
digambarkan dalam bentuk flowchart. Proses yang digambarkan di dalam
flowchart mencakup proses penerimaan dan pemutusan koneksi, proses
pengiriman dan penerimaan pesan, proses enkripsi dan proses dekripsi pesan serta
proses kick dan banned.
Bentuk flowchart dari proses yang terjadi, dapat dilihat pada gambar 3.2
dan gambar 3.3.
Gambar 3.2 Flowchart untuk Aplikasi Server
Pada gambar 3.5 terlihat bahwa user harus memasukan nomor port dan
batas maksimum client sebelum mulai menjalankan aplikasi server. Setelah
aplikasi dijalankan, aplikasi akan stand-by untuk mendengar permintaan koneksi
dari client atau menerima kiriman pesan dari client.
Bila ada client yang melakukan permintaan koneksi, maka aplikasi server
akan memeriksa terlebih dahulu, apakah jumlah client yang terhubung ke aplikasi
server saat ini, sudah mencapai batas maksimum. Apabila jumlah client sudah
mencapai batas maksimum, maka permintaan koneksi client akan ditolak. Apabila
tebelum, maka aplikasi server akan melanjutkan proses ke pemeriksaan IP
Address client. Apabila IP client tercatat dalam banned-list, maka permintaan
koneksi ditolak. Apabila tidak, maka permintaan koneksi client akan diterima oleh
aplikasi server.
Ketika aplikasi client mengirimkan pesan ke aplikasi client lainnya, maka
pesan ini akan dikirimkan ke aplikasi server terlebih dahulu, dan aplikasi server
akan meneruskan pesan ke aplikasi client yang dituju. Apabila client yang
menutup aplikasinya, maka pemutusan hubungan winsock dengan aplikasi server
akan terjadi dengan sendirinya dan aplikasi server akan menghapus client tersebut
dari chatting list.
Apabila aplikasi server melakukan kick terhadap salah satu aplikasi client,
maka hubungan winsock akan diputus secara sepihak oleh aplikasi server. Ini
akan mengakibatkan aplikasi client mengalami error dan aplikasi chatting ditutup
secara paksa. Bila aplikasi client di-banned, maka kejadiannya sama seperti di-
kick, hanya saja server akan mencatat IP client ke dalam list, dan client tidak akan
bisa melakukan koneksi lagi ke aplikasi server.
Bentuk flowchart dari proses yang terjadi pada aplikasi client, dapat dilihat
pada gambar 3.6.
Gambar 3.3 Flowchart untuk Aplikasi Client
Pada gambar 3.3, terlihat bahwa untuk memulai aplikasi chatting sebagai
client, user harus memasukan nama user, IP address server yang dituju dan nomor
port server yang dituju. Apabila IP address dan nomor port yang dituju benar,
maka aplikasi client akan terhubung ke aplikasi server dan dapat melakukan
chatting dengan aplikasi client lainnya yang terhubung ke aplikasi server yang
sama. Apabila proses koneksi ke aplikasi server tidak berhasil, maka aplikasi
client akan memunculkan pesan kesalahan. Beberapa hal yang dapat
menyebabkan kegagalan didalam proses koneksi adalah sebagai berikut:
1. Tidak ada aplikasi chatting server yang dijalankan pada IP Address dan
nomor port yang dituju oleh aplikasi client
2. Terjadi kesamaan pemakaian nama user dengan user lainnya yang
sebelumnya telah terhubung ke aplikasi server
3. Jumlah client yang terhubung ke aplikasi server sudah mencapai batas
maksimum.
4. Kegagalan di dalam hardware atau setting jaringan, seperti: Instalasi LAN
yang tidak benar, terjadi kerusakan didalam kabel LAN atau masalah
jaringan lainnya.
Setelah koneksi ke aplikasi server berhasil, aplikasi client akan menerima list
nama user client yang sebelumnya telah terhubung ke aplikasi server. Selanjutnya
apabila aplikasi client menggunakan fitur kriptografi, maka ketika aplikasi akan
mengenkripsi pesan ketika pesan dikirimkan dan aplikasi akan mendekripsi pesan
yang masuk dari aplikasi client lainnya.