BAB IV ANALISIS DAN PERANCANGAN PERANGKAT LUNAK Bab keempat ini berisi penjelasan analisis dan perancangan perangkat lunak yang dibangun dalam tugas akhir ini. Analisis perangkat lunak meliputi deskripsi umum perangkat lunak yang akan dibangun, analisis kebutuhan, analisis penggunaan perangkat lunak, analisis aliran data dan model analisis. Namun sebelumnya, pada bagian analisis akan dijabarkan studi kasus situs web yang mungkin diterapkan sistem baru ini. Nantinya akan dipilih penerapan sistem ini akan seperti apa. Perancangan perangkat lunak meliputi perancangan arsitektur, perancangan modul perangkat lunak dan perancangan antarmuka.
4.1
Analisis
4.1.1 Deskripsi Perangkat Lunak Perangkat lunak yang dibangun merupakan perangkat lunak yang digunakan untuk melakukan pengamanan data yang ditransmisikan dari server ke klien dengan cara mengenkripsi data tersebut dengan algoritma kriptografi RC4. Klien yang dimaksud adalah user situs web yang disediakan oleh server. Perangkat lunak ini terdiri dari dua bagian yang terpisah namun memiliki keterkaitan satu sama lain. Bagian yang pertama merupakan modul enkripsi yang terletak di sisi server sedangkan modul lainnya terdapat di sisi web browser klien yang bertugas melakukan dekripsi ciphertext yang diperoleh dari server. Modul yang berada di sisi server adalah pelengkap dari halaman web server side scripting yang sudah ada sehingga halaman web yang dikirimkan ke klien adalah halaman web dalam bentuk terenkripsi. Di sisi lain, modul dekripsi di sisi klien berada di web browser, yaitu sebuah JavaScript yang disertakan dalam plug-in Greasemonkey dari Mozilla Firefox. Skema dasar perangkat lunak digambarkan di Gambar IV-1. Pada dasarnya perangkat lunak ini memiliki fungsi utama untuk melakukan enkripsi dan dekripsi halaman web yang ditransmisikan dari web server ke klien. Enkripsi dilakukan terhadap bagian head dan body dari halaman HTML. Sebelum ditransmisikan, seluruh string halaman mulai dari hingga disimpan terlebih dahulu dalam sebuah buffer string. Setelah seluruh halaman disimpan dalam buffer oleh server side scripting, sistem IV-1
menjalankan modul enkripsi dengan menggunakan kunci yang bersesuaian dengan klien yang dituju. Setelah seluruh buffer dienkripsi, sistem mengirimkan string tersebut ke sisi klien. Web Browser di sisi klien yang menerima halaman terenkripsi tersebut lalu menjalankan modul dekripsi menggunakan plug-in Greasemonkey.
Gambar IV-1 Deskripsi Sistem
Sistem ini hanya mengenkripsi teks halaman web sedangkan content seperti gambar tidak dienkripsi. Bagian yang dienkripsi adalah seluruh teks di dalam head dan body halaman. Oleh karena itu, klien akan menerima string dalam bentuk sebagai berikut: …encrypted head… …encrypted body… Tiga tag utama tersebut tidak dienkripsi agar web browser mengenali bahwa string yang diterima adalah halaman HTML sehingga tidak keliru menjalankan eksekusi. Selain itu, ketiga tag tersebut sangat umum digunakan dalam halaman web sehingga memudahkan pihak ketiga melakukan kriptanalisis jika ketiganya dienkripsi. Sebagai contoh halaman
This is test page This page used only for testing purpose akan dikirim ke klien sebagai 029201050233038060162121187198177206090006193095244 168025035116060027014233187076127089072101117 IV-2
029223101201034048239013163206165139019000146078245 251002109104036092013186230024098072087116034048215155239 112207068032156254224250035003 Ciphertext yang dikirim merupakan rangkaian bentuk integer dari masing-masing karakter (A = 065, B=066, C = 067, ….). Sesuai hasil survey yang telah dilakukan di subbab 3.3, hasil akhir perangkat lunak ini adalah sebuah situs berbagi file yang menyediakan bermacam file yang bisa diunduh oleh user yang memiliki kunci untuk membuka enkripsi halamannya. Aplikasi ini hanya menyediakan front-end yang merupakan antarmuka user untuk mengunduh file-file. Aplikasi back-end yang bertugas melalukan upload file terpisah dari aplikasi ini.
4.1.2 Analisis Kebutuhan Perangkat lunak pada tugas akhir ini memiliki beberapa kebutuhan yang harus dipenuhi. Kebutuhan terseut dapat dibedakan menjadi kebutuhan fungsional dan kebutuhan non fungsional. Kebutuhan fungsional dapat dilihat pada Tabel IV-1 sedangkan kebutuhan non-fungsional pada Tabel IV-2. Tabel IV-1 Kebutuhan fungsional sistem
No. 1.
Deskripsi Sistem mampu mengenkripsi halaman web yang diminta oleh klien lalu mentransmisikannya ke klien tersebut.
2.
Sistem mampu melakukan dekripsi halaman web di sisi klien yang telah dienkripsi oleh server.
3.
Sistem mampu menampilkan halaman web di browser sesuai kondisinya sebelum dienkripsi.
4.
Sistem mampu menyediakan fasilitas unduh file-file aplikasi setelah halaman didekripsi
IV-3
Tabel IV-2 Kebutuhan non-fungsional sistem
No. 1. 2.
Deskripsi Sistem memiliki tampilan yang sederhana dan mudah digunakan. Sistem memiliki waktu respons yang baik.
4.1.3 Analisis Kebutuhan Antarmuka Eksternal Perangkat lunak pada tugas akhir ini merupakan perangkat lunak dengan arsitektur client-server, sehingga pada pengoperasiaan perangkat lunak ini membutuhkan antarmuka eksternal sebagai berikut : 1. Antarmuka User Antarmuka ini merupakan antarmuka yang menghubungkan user dengan perangkat lunak ini. Antarmuka yang dibutuhkan antara lain perangkat input/output komputer. 2. Antarmuka Perangkat Keras Antarmuka ini merupakan antarmuka yang menghubungkan antar perangkat keras. Karena perangkat lunak ini berarsitektur client-server, maka dibutuhkan suatu perangkat keras untuk membentuk suatu jaringan komputer, seperti ethernet card, router, kabel LAN atau wireless card. 3. Antarmuka Perangkat Lunak Perangkat lunak yang menghubungkan aplikasi ini adalah sistem operasi, sistem manajemen basis data, server web serta web browser. 4. Antarmuka Komunikasi Antarmuka ini merupakan antarmuka yang menghubungkan satu komputer dengan komputer lain dalam suatu aturan tertentu. Antarmuka komunikasi ini adalah protokol TCP/IP dan HTTP.
IV-4
4.1.4 Model Use Case
System Mengunduh perangkat lunak
<
> User Melihat halaman perangkat lunak
Gambar IV-2 Diagram Use Case
4.1.5 Deskripsi Use Case Tabel IV-3 Deskripsi Use Case
No. 1.
2.
Use Case Mengunduh
Deskripsi User melakukan proses unduh (download) perangkat
perangkat lunak
lunak-perangkat lunak yang disediakan sistem.
Melihat
halaman User membuka halaman situs berisi daftar perangkat
perangkat lunak
lunak yang disediakan aplikasi
4.1.6 Definisi Aktor Dalam perangkat lunak ini, hanya terdapat satu aktor saja, yaitu User. Aktor User adalah user perangkat lunak yang bisa mengakses halaman perangkat lunak untuk melakukan download file-file yang disediakan aplikasi software repository ini
4.1.7 Skenario Use Case 4.1.7.1 Skenario Use Case Melihat Halaman Perangkat Lunak Nama Use Case
: Melihat halaman perangkat lunak
Prekondisi
: Sistem menampilkan form menuju halaman daftar perangkat lunak yang bisa diklik aktor
Postkondisi
: Sistem menampilkan halaman yang berisi daftar perangkat lunak
Aktor
: User
IV-5
Skenario
: Tabel IV-4 Skenario Use Case Melihat halaman perangkat lunak
Aksi Aktor Skenario normal
Aksi Sistem
1. Memasukkan username dan mengklik tombol OK 2. Melakukan retrieval ke database untuk memperoleh password/kunci dari username yang diterima 3. Mengenkripsi halaman daftar perangkat lunak menggunakan kunci hasil retrieval lalu mengirimkannya ke klien beserta kunci sesi 4. Menampilkan form input kunci 5. Memasukkan kunci dan mengklik tombol OK 6. Mendekripsi halaman dan menampilkannya Skenario alternatif (username tidak ditemukan) 3. Mengembalikan user ke halaman utama dan menampilkan pesan kesalahan 4.1.7.2 Skenario Use Case Mengunduh Perangkat Lunak Nama Use Case
: Mengunduh perangkat lunak
Prekondisi
: Sistem menampilkan halaman daftar perangkat lunak
Postkondisi
: Sistem mengirimkan perangkat lunak yang diminta lalu menampilkan kembali halaman daftar perangkat lunak
Aktor
: User
Skenario
: Tabel IV-5 Skenario Use Case Mengunduh perangkat lunak
Aksi Aktor Skenario normal
Aksi Sistem
1. Mengklik link download IV-6
Aksi Aktor perangkat lunak
Aksi Sistem 2. Mengecek kunci sesi dari request yang diterima 3. Mengirimkan file perangkat lunak yang diminta 4. Menampilkan halaman daftar perangkat lunak beserta kunci sesi baru
Skenario alternatif (kunci sesi tidak valid) 3. Menampilkan pesan kesalahan
4.1.8 Model Analisis 4.1.8.1 Kelas Analisis Berdasarkan analisis use case di atas, dapat diidentifikasi bahwa perangkat lunak membutuhkan kelas-kelas yang bertanggung jawab melakukan enkripsi dan dekripsi, memberikan antarmuka kepada user dan melakukan pengaksesan ke database. Kelas-kelas ini dikelompokkan menjadi kelas server dan kelas klien dilihat dari posisi kelas tersebut berada. Oleh karena itu, kelas-kelas yang terlibat dapat ditentukan sebagai berikut: 1. Kelas di server 1.1 Kelas Antarmuka Kelas ini bertugas sebagai jembatan antara klien dengan perangkat lunak. Seluruh aksi yang dilakukan oleh klien ditangani oleh kelas ini. Selain itu, kelas ini memiliki tanggung jawab menampilkan halaman ke web browser. 1.2 Kelas Enkripsi Kelas ini melakukan enkripsi halaman web yang akan dikirimkan ke klien. Sesuai tugasnya, kelas ini memiliki method yang berhubungan dengan enkripsi. Kelas ini berada di sisi server sebagai server side scripting class. 1.3 Kelas Akses Database Kelas ini bertanggung jawab terhadap seluruh akses yang dilakukan ke basis data. Akses-akses tersebut termasuk pengambilan password/kunci, serta daftar file perangkat lunak yang bisa diunduh. IV-7
1.4 Kelas Perangkat Lunak Kelas ini merupakan modeller yang bertugas menyimpan data sebuah perangkat lunak hasil pembacaan dari basis data. Sebuah perangkat lunak memiliki beberapa atribut seperti nama, deskripsi dan file.
2. Kelas di klien 2.1 Kelas Konstruktor Kelas ini bertugas melakukan pembangunan kembali halaman web setelah dienkripsi sehingga bisa ditampilkan di web browser. Kelas ini melakukan identifikasi tag-tag HTML sehingga setiap tag bisa ditampilkan sebagaimana mestinya. 2.2 Kelas Dekripsi Kelas yang berada di sisi klien ini bertugas melakukan dekripsi halaman web terenkripsi sesuai response yang diterima dari server. Seperti halnya kelas enkripsi, kelas ini memiliki method yang berhubungan dengan dekripsi. 4.1.8.2 Diagram Kelas Analisis
Antarmuka -listPerangkatLunak: PerangkatLunak[] -ShowList() -GetUsername() -GetList()
Enkripsi
PerangkatLunak -id: Integer -nama: String -deskripsi: String -link: String
+Encrypt()
AksesDatabase -connection: Connection +Connect() +Query()
+GetId() +GetNama() +GetDeskripsi() +GetLink()
Gambar IV-3 Diagram kelas analisis server
Diagram kelas analisis perangkat lunak yang berada di sisi server dapat dilihat pada Gambar IV-3 sedangkan kelas yang berada di sisi klien dapat dilihat pada Gambar IV-4.
IV-8
Konstruktor -key: String -GetInputKey() -Construct()
Dekripsi +Decrypt()
Gambar IV-4 Diagram kelas analisis klien
4.2
Perancangan Perancangan perangkat lunak merupakan suatu proses untuk mengolah hasil analisis
perangkat lunak menjadi sebuah rencana pengembangan perangkat lunak dengan batasanbatasan spesifikasi perangkat lunak yang sudah jelas. Perancangan ini terdiri dari perancangan arsitektur, perancangan modul perangkat lunak dan perancangan antarmuka.
4.2.1 Perancangan Arsitektur Perangkat lunak yang dibuat dalam tugas akhir ini merupakan perangkat lunak berarsitektur client-server. Dimana aplikasi yang berada pada web server merupakan aplikasi berbasis web yang sekaligus bertindak sebagai encryptor. Di sisi lain, aplikasi yang berada pada sisi client merupakan aplikasi yang terintegrasi dengan web browser dan juga bertindak sebagai decryptor. Arsitektur perangkat lunak dapat dilihat pada Gambar IV-5. Berdasarkan Gambar IV-5, terlihat bahwa perangkat lunak terdiri dari dua bagian utama yaitu: 1. Proses view Proses ini bertujuan menampilkan daftar perangkat lunak yang bisa diunduh oleh klien dengan mengirimkan username miliknya. Proses ini mengirimkan halaman HTML yang berisi daftar perangkat lunak dalam bentuk terenkripsi. Setelah sampai di klien, halaman terenkripsi tersebut akan didekripsi menggunakan nilai hash dari kunci yang dimasukkan user lalu ditampilkan di browser. IV-9
2. Proses download Proses ini bertujuan mengirimkan perangkat lunak yang diminta oleh klien. Namun sebelumnya, akan dilakukan validasi kunci sesi terlebih dahulu. Jika kunci sesi valid, barulah perangkat lunak yang diminta dikirimkan ke klien.
Server Web
Client
Server Application
Client Application
Modul Antarmuka
Modul Dekripsi Modul Download
Modul View
Basis Data
Gambar IV-5 Arsitetur Perangkat Lunak
4.2.2 Perancangan Modul Perangkat Lunak Perangkat lunak akan dibuat dengan menggunakan metode berorientasi objek, sehingga modul perangkat lunak ini berupa kelas. Berikut kelas perancangan perangkat lunak: 1. Kelas di server 1.1 Kelas Antarmuka Kelas ini menyediakan template bagi kelas lain untuk meletakkan hasil proses kelas tersebut dan menjadi penghubung antara pengguna dengan sistem. Kelas antarmuka ini juga berfungsi sebagai kelas kontrol dengan menyediakan fasilitas sebagai peng-handle event yaitu dengan mendistribusikan aksi yang dilakukan pengguna untuk menjalankan proses tertentu.
IV-10
1.2 Kelas Enkripsi Kelas ini dirancang untuk menangani enkripsi halaman HTML yang dihasilkan sesuai dengan request user. Method kelas ini dapat dilihat di Tabel IV-6 sedangkan atributnya pada Tabel IV-7. Tabel IV-6 Method kelas Enkripsi
Nama Operasi
Return value
Enkripsi() Encrypt()
Void Boolean
Visibility (private, public) Public Public
getBytes()
Byte[]
Public
arrIntToString()
String
Public
resultToASCII()
String
Public
setEncryptionKey() Void
Public
setInClearText()
Void
Public
setCryptedText() getCryptedText()
Void String
Public Public
Keterangan
Konstruktor kelas Enkripsi Enkripsi plainteks menjadi cipherteks, mengembalikan true jika berhasil dan false jika gagal. Mengembalikan array yang berisi nilai byte dari string Mengembalikan string yang berisi nilai ASCII dari karakter-karakternya Mengembalikan string yang berisi nilai ASCII dari karakter-karakternya dimana masing-masing karakter diwakili tiga digit angka (63 menjadi 063) Mempopulasi S-Box yang digunakan untuk mengenkripsi Mengeset text yang akan dienkripsi Mengeset text hasil enkripsi Mengembalikan text hasil enkrsipsi
Tabel IV-7 Atribut kelas Enkripsi
Nama Atribut m_sEncryptionKey m_sEncryptionKeyAscii m_nBox m_nBoxLen m_sInClearText m_sCryptedText
Visibility (private, public) Private Private Private Private Private Private
Tipe String String Byte[] Int String String
1.3 Kelas Akses Database Kelas ini bertanggung jawab terhadap seluruh akses yang dilakukan ke basis data. Akses-akses tersebut termasuk pengambilan password/kunci, serta daftar file
IV-11
perangkat lunak yang bisa diunduh. Method kelas ini dapat dilihat di Tabel IV-8 sedangkan atributnya pada Tabel IV-9. Tabel IV-8 Method kelas Akses Database
Nama Operasi
Return value
AksesDatabase()
Void
Visibility (private, public) Public
Connect()
mysqli
Public
Query() ResultToArray()
Mixed Array
Public Public
Keterangan
Konstruktor kelas AksesDatabase Menghasilkan koneksi ke basis data Melakukan query ke basis data Mengonversi hasil query basis data ke dalam bentuk array
Tabel IV-9 Atribut kelas Akses Database
Nama Atribut Connection Result
Visibility (private, public) Private Private
Tipe mysqli mixed
1.4 Kelas Perangkat Lunak Kelas ini merupakan modeller yang bertugas menyimpan data sebuah perangkat lunak hasil pembacaan dari basis data. Sebuah perangkat lunak memiliki beberapa atribut seperti nama, deskripsi dan file. Method kelas ini dapat dilihat pada Tabel IV-10 sedangkan atributnya pada Tabel IV-11. Tabel IV-10 Method kelas Perangkat Lunak
Nama Operasi
Return value
PerangkatLunak() Void
Visibility (private, public) Public
GetId() GetNama()
Int String
Public Public
GetDeskripsi()
String
Public
GetLink()
String
Public
Keterangan
Konstruktor kelas PerangkatLunak Mengembalikan nilai atribut id Mengembalikan nilai atribut nama Mengembalikan nilai atribut deskripsi Mengembalikan nilai atribut link
Tabel IV-11 Atribut kelas Perangkat Lunak
Nama Atribut id nama deskripsi link
Visibility (private, public) Private Private Private Private
IV-12
Tipe int String String String
2. Kelas di klien 2.1 Kelas Konstruktor Kelas ini bertugas melakukan pembangunan kembali halaman web setelah dienkripsi sehingga bisa ditampilkan di web browser. Kelas ini melakukan identifikasi tag-tag HTML sehingga setiap tag bisa ditampilkan sebagaimana mestinya. Method kelas ini dapat dilihat pada Tabel IV-12 dan atributnya pada Tabel IV-13. Tabel IV-12 Method kelas Konstruktor
Nama Operasi
Return value
GetInputKey()
String
Visibility (private, public) Public
Construct()
Void
Public
Keterangan
Meminta input kunci dekripsi dari user dan mengembalikan nilainya Membangun halaman HTML hasil dekripsi ke browser
Tabel IV-13 Atribut kelas Konstruktor
Nama Atribut key
Visibility (private, public) Private
Tipe String
2.2 Kelas RC4 Kelas yang berada di sisi klien ini bertugas melakukan dekripsi halaman web terenkripsi sesuai response yang diterima dari server. Seperti halnya kelas enkripsi, kelas ini memiliki method yang berhubungan dengan dekripsi. Method kelas ini dapat dilihat pada Tabel IV-14 dan atributnya pada Tabel IV-15. Tabel IV-14 Method kelas RC4
Nama Operasi
Return value
RC4() Decrypt()
Void Boolean
Visibility (private, public) Public Public
getBytes()
Byte[]
Public
arrIntToString()
String
Public
parseText()
String
Public
IV-13
Keterangan
Konstruktor kelas RC4 Dekripsi plainteks menjadi cipherteks, mengembalikan true jika berhasil dan false jika gagal. Mengembalikan array yang berisi nilai byte dari string Mengembalikan string yang berisi nilai ASCII dari karakter-karakternya Memparsing text yang dihasilkan oleh proses enkripsi server
setEncryptionKey() Void
Public
setInClearText()
Void
Public
setCryptedText() getCryptedText()
Void String
Public Public
Mempopulasi S-Box yang digunakan untuk mengenkripsi Mengeset text yang akan dienkripsi Mengeset text hasil enkripsi Mengembalikan text hasil enkrsipsi
Tabel IV-15 Atribut kelas RC4
Nama Atribut m_sEncryptionKey m_sEncryptionKeyAscii m_nBox m_nBoxLen m_sInClearText m_sCryptedText
Visibility (private, public) Private Private Private Private Private Private
Tipe String String Byte[] Int String String
2.3 Kelas Utf8 Kelas ini merupakan kelas static yang bertanggung jawab mengonversi string dengan format UTF-8 menjadi single-byte dan sebaliknya. Method kelas ini dapat dilihat pada Tabel IV-16 dan tidak memiliki atribut Tabel IV-16 Method kelas Utf8
Nama Operasi
Return value
encode()
String
Visibility (private, public) Public
decode()
String
Public
Keterangan
Mengubah string single-byte menjadi UTF-8 Mengubah string UTF-8 menjadi single-byte
4.2.3 Perancangan Antarmuka Perangkat lunak yang akan dibuat merupakan perangkat lunak berbasis web sehingga antarmuka yang dibuat berupa beberapa halaman web. Berikut perancangan halaman antarmuka, yaitu: 1. Halaman index Halaman ini merupakan halaman utama yang pertama kali muncul jika user mengakses aplikasi ini. Dalam halaman ini terdapat form yang berisi input user berupa username-nya dan sebuah tombol untuk melanjutkan proses. Rincian objek dan tampilan halaman index dapat dilihat pada lampiran A bagian A.1.
IV-14
2. Halaman view Halaman ini adalah halaman yang berisi daftar file. Daftar file tersebut ditampilkan dalam sebuah tabel yang terdiri dari kolom nama, deskripsi dan link untuk mengunduhnya. Selain itu, terdapat tombol navigasi untuk kembali ke halaman utama. Rincian objek dan tampilan halaman view dapat dilihat pada lampiran A bagian A.2.
IV-15