Anda di halaman 1dari 29

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 2.1.1

Jaringan Komputer 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 terminalterminanya 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 menghubungkan 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.

SERVER

CLIENT

Input nomor port yang akan digunakan

Input IP-Address dan nomor port server

Muncul Error ya Lakukan koneksi dengan winsock server

Nomor port sedang digunakan winsock lainnya pada komputer ini? Tidak

Berada dalam status listening..

Koneksi berhasil Status winsock-1 dan winsock-2 adalah terhubung

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.
Server
Winsock client-1 meminta permintaan koneksi ke winsockS dan diterima

Server
WinsockS menghubungkan winsock client-1 dengan winsockC(1)

WinsockS Status: Listening

Winsock CLIENT-(1)

WinsockS Status: Listening

Winsock CLIENT-(1)

WinsockC(1) Status: Connedted

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.

Server
Winsock client-2 meminta koneksi dan diterima oleh WinsockS

Server
WinsockS menghubungkan client2 dengan WinsockC(2)

WinsockS Status: Listening

Winsock CLIENT-(1)

WinsockS Status: Listening

Winsock CLIENT-(1)

WinsockC(1) Status: Connedted

Winsock CLIENT-(2)

WinsockC(1) Status: Connedted

Winsock CLIENT-(2)

WinsockC(2) Status: Connedted

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.

Server

WinsockS Status: Listening

Winsock CLIENT-(1)

WinsockC(1) Status: Connedted

Winsock CLIENT-(2)

WinsockC(2) Status: Connedted

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 2.3.1

Kripfografi 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

Plain teks Enkripsi

Chiper teks Dekripsi

Plain teks

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

Kunci

Kunci

Plain teks Enkripsi

Chiper teks Dekripsi

Plain teks

(a)

Kunci

Kunci

Kirim No.Rekening Anda Enkripsi

Stype wpoeirutyng ielz Dekripsi

Kirim No.Rekening Anda

(b)

Gambar 2.6.(a) Skema enkripsi dan dekripsi, (b) Contoh ilustrasi enkripsi dan deskripsi pesan

2.4 2.4.1

Metode Kriptografi Blowfish 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.

Server

Winsock client-3 mengirimkan pesan M kepada WinsockC(3). Selanjutnya, WinsockC(1) akan diperintahkan untuk mengirim pesan XYZ Kepada winsock client-1

WinsockS Status: Listening

WinsockC(1) Status: Connected

Winsock CLIENT-(1)

XYZ
Winsock CLIENT-(2)

WinsockC(2) Status: Connected

XYZ
WinsockC(3) Status: Connected Winsock CLIENT-(3)

WinsockC(n) Status: Idle

Winsock CLIENT-(n)

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.

START

Input Nomor Port dan batas maksimum jumlah client

Aplikasi server dijalankan

Aplikasi server dalam mode Stand-by (Listening)

Apakah Client melakukan koneksi? Tidak

Ya

Apakah jumlah client telah mancapai batas maksimum?

Tidak

Apakah IP client tercatat dalam client banned list?

Tidak

Terima koneksi dan tambahkan ke list client

Ya

Ya

Tolak koneksi client

Ada pesan yang dikirimkan client? Tidak

Ya Kirim (teruskan) pesan ke client yang dituju

Ya Client terputus? Tidak Ya Client di-banned? Tidak Ya Putuskan koneksi winsock yang terhubung ke client Catat ip client dari banned list Hapus cllient dari list

Client di-kick? Tidak

Hapus client dari list

Tidak

Server Stop?

Ya

STOP

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 dikick, 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.

START

Input IP Address dan Nomor Port

Tampilkann Pesan Kesalahan

Proses Koneksi ke Server

Tidak

Koneksi Berhasil

Ya Terima List User yang Aktif dari Server

Aplikasi Client dalam Mode Stand-By

Ya Kirim Pesan?

Proses Enkripsi Pesan dan Kirim ke Server

Tidak Ya Ada Pesan Masuk?

Proses Dekripsi Pesan dan Tampilkan Pesan

Tidak

Tidak

Client Stop

Ya STOP

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.