BAB 3 PERANCANGAN 3.1. Metodologi Perancangan Ada dua bagian besar dari sistem yang perlu dirancang, yaitu sistem operasi eCos dan aplikasi secure fax yang akan diintegrasikan dengan eCos. Hasil integrasi ini yang akan dijalankan di atas target perangkat keras yang digunakan. Gambar 3.1 menunjukkan tahapan proses perancangan yang dilakukan START Penentuan Spesifikasi Perancangan Dasar Sistem Operasi Perancangan Dasar Aplikasi Perbaikan Sistem Operasi Implementasi fungsi-fungsi yang platform-independent Perbaikan fungsi-fungsi platformindependent Pengujian Sistem Operasi gagal Pengujian Aplikasi di host PC sukses Implementasi aplikasi di atas Sistem Operasi Pengujian Sistem gagal sukse s Perbaikan fungsi-fungsi eCos-specific sukses END Gambar 3.1: Diagram alir perancangan 28 gagal 3.2. Perancangan Sistem Operasi 3.2.1. Spesifikasi Target Sistem operasi eCos mendukung berbagai macam arsitektur prosesor, karena itu perlu ditentukan spesifikasi target hardware yang akan didukung oleh eCos yang dibuat sesuai dengan hardware yang digunakan. Target hardware yang digunakan adalah Single Board Computer (SBC) berbasis arsitektur prosesor IA32. eCos menyediakan beberapa platform untuk keluarga prosesor ini, yaitu : i386pc target, i386pc target dengan Gigabit Ethernet, i386 PC Motherboard, i386 Arch Standard, dan i386 generic. Untuk hardware yang digunakan, platform yang didukung eCos yang cocok untuk digunakan adalah i386pc target. Ada dua buah SBC yang digunakan, yaitu SBC-456/E dan PCM-5335. Untuk melakukan booting eCos dan aplikasi, SBC-456/E akan dilengkapi dengan floppy disk drive, dan booting dilakukan dari floppy. Sedangkan karena PCM-5335 dilengkapi dengan socket untuk CompactFlash, PCM-5335 akan dibuat untuk memboot eCos dari CompactFlash. 3.2.2. ISO Standard C eCos memiliki kompatibilitas dengan spesifikasi ISO 9899:1990 untuk library standard C, yang secara esensial sama dengan spesifikasi ANSI C3.1591989 (C-89). Ada tiga aspek kompatibilitas yang didukung oleh eCos. Pertama, terdapat library C yang mengimplementasikan fungsi yang didefinisikan oleh standard ISO, kecuali untuk fungsi matematika. Ini disediakan oleh paket library C eCos. Kedua, eCos menyediakan library matematika yang mengimplementasikan fungsi dari library ISO C. Pemisahan library C dan matematika dilakukan karena kebanyakan implementasi standard library C memiliki linkable-file yang berbeda untuk keduanya. Ditambah lagi, library matematika memuat semua fungsi dari file header math.h. Ketiga, adanya environment tempat aplikasi berjalan ketika menggunakan library C. Environment ini diatur oleh prosedur start-up library C, dan ini menyediakan sebuah titik masuk fungsi main() dan exit(), yang dibaca dengan 29 fungsi getenv(). Perancangan ini tidak menggunakan library matematika pada eCos karena dari sisi aplikasi tidak membutuhkan library ini. Dengan demikian, didapat pula pengurangan ukuran paket yang akan digunakan. Sehingga diharapkan ukuran aplikasi akhir yang dihasilkan secara relatif berukuran lebih kecil. 3.2.3. Paket I/O (Device Driver) Paket I/O didesain sebagai framework umum untuk mendukung device driver, meliput semua kelas driver, mulai dari serial sederhana hingga network stack. Komponen paket I/O semisal device driver dapat dikonfigurasi dalam sistem sama halnya dengan komponen lainnya. Aplikasi yang akan diintegrasikan pada sistem operasi berbasis pada komunikasi antara SBC dengan modem melalui serial port (walaupun secara fisik di SBC interface dengan modem adalah menggunakan PC/104). Oleh karena itu, harus disusun driver serial sedemikian rupa sehingga memenuhi syarat komunikasi serial ini. Untuk mengaturnya, driver (dan device yang direpresentasikannya) dapat dianggap statis dan diakses melalui sebuah handle. Penamaan driver dibuat unik agar ketika dipetakan ke sistem, tidak terjadi konflik dengan driver yang sudah ada. Semua paket I/O API ditulis dalam bahasa C. eCos mendefinisikan dua kelas serial driver yang berbeda sebagai standard, yaitu raw serial (serial) dan tty-like (tty). Serial driver mampu mengirim dan menerima blok raw data dari sebuah devais serial. Kendali atasnya disediakan untuk mengkonfigurasi perangkat keras sebenarnya, akan tetapi tidak terdapat manipulasi data yang dapat dilakukan oleh driver ini. Sedangkan tty driver dibangun di atas driver serial sederhana dan secara khusus digunakan untuk devais antar muka manusia semisal terminal. Dengan tty, terdapat beberapa tambahan fungsi format data pada keluaran dan fungsi edit line-oriented pada masukan. eCos juga memiliki dukungan POSIX, dan dari situ menyediakan driver serial yang lebih lengkap bila dibandingkan dengan driver serial sederhana bawaan eCos. Driver ini disebut Termios compatible TTY drivers. Pada perancangan ini digunakan raw serial driver, yang merupakan 30 implementasi serial driver paling sederhana dan minimalis pada eCos. Karena aplikasi hanya membutuhkan dukungan komunikasi serial yang relatif sederhana, serial driver ini cukup untuk memenuhi kebutuhan tersebut. 3.2.4. Filesystem Pada aplikasi secure fax yang dibuat, data fax yang diterima akan disimpan sebagai file, karena itu diperlukan dukungan filesystem dari eCos. Untuk aplikasi ini digunakan filesystem ramfs. Beberapa keuntungan digunakannya ramfs untuk aplikasi secure fax adalah: tidak perlu menggunakan device tambahan sebagai storage seperti harddisk atau flash memory; menjaga keamanan data fax, yaitu apabila alat secure fax mati sebelum fax terenkripsi, data tersebut akan hilang karena RAM adalah volatile memory, sedangkan apabila data disimpan pada non-volatile memory maka data fax akan tetap ada dan terdapat kemungkinan untuk dicuri. Namun demikian ada juga kerugian dari penggunaan ramfs, yaitu dibutuhkan RAM yang cukup besar untuk menyimpan file, sedangkan harga per byte dari RAM lebih tinggi dari harga per byte untuk device-device yang menyimpan data secara permanen seperti harddisk. Tetapi karena platform yang digunakan adalah embedded-PC, maka RAM yang tersedia cukup besar. 3.3. Perancangan Aplikasi 3.3.1. Spesifikasi Target Aplikasi Perangkat secure fax dirancang untuk "diselipkan" di antara komunikasi dua buah mesin fax. Dalam suatu proses pengiriman fax, di sisi pengirim dan sisi penerima masing-masing terdapat mesin fax dan sebuah secure fax. Ketika fax dikirimkan, secure fax di sisi pengirim akan menerima fax dari mesin fax. Fax yang diterima ini kemudian dienkripsi dan hasil enkripsinya akan dikirimkan ke sisi penerima. Di sisi penerima, fax terenkripsi akan diterima oleh secure fax dan 31 didekripsi kembali menjadi data fax semula. Data fax inilah yang akan dikirimkan ke mesin fax penerima. Proses ini diperlihatkan pada Gambar 3.2. Gambar 3.2: Gambaran sistem global Komunikasi dengan mesin fax dan secure fax lain dilakukan dengan menggunakan modem. Secara software komunikasi dengan modem dilakukan dengan komunikasi serial secara langsung menggunakan AT command. Seharusnya, pengamanan data fax selama transmisi dilakukan dengan kombinasi antara symmetric cryptography dan public-key cryptography, yaitu data sesungguhnya dienkripsi dengan symmetric cryptography tetapi pada awal komunikasi antara secure fax pengirim dan secure fax penerima, kunci tersebut dikirimkan kepada penerima dalam keadaan terenkripsi menggunakan kunci publik penerima. Namun demikian, yang akan diimplementasikan sampai pada tahap pengerjaan tugas akhir ini hanya enkripsi data dengan menggunakan symmetric cryptography, dengan asumsi sementara bahwa secure fax pengirim dan secure fax penerima telah memiliki kunci yang sama. Algoritma kriptografi yang dipilih adalah Advanced Encryption Standard (AES). Dari sisi keamanan, belum ada bukti serangan yang benar-benar berhasil membobol sistem yang dilindungi dengan AES. Dua serangan yang berhasil menunjukkan kemungkinan tersebut menggunakan side channel attack, dan masih dipertanyakan kemungkinan diterapkannya metode tersebut pada sistem yang sesungguhnya. Selain itu, dua serangan tersebut tidak dapat dengan mudah diterapkan pada sistem secure fax akan dibuat, di mana salah satu serangan menargetkan server yang memberikan informasi timing, dan serangan lainnya 32 membutuhkan akses secara fisik ke sistem. Dengan panjang kunci 128 bit saja, AES juga dapat diasumsikan aman terhadap serangan brute force attack, karena serangan tersebut akan membutuhkan waktu triliunan tahun untuk berhasil mendapatkan kunci AES. AES juga merupakan salah satu kriptografi yang paling populer digunakan dan implementasinya yang open-source tersedia dan dapat digunakan. Dalam sistem secure fax ini terdapat satu hal penting lagi yang perlu diperhatikan, yaitu bahwa data fax yang ditransmisikan dalam sebuah transmisi fax harus mengikuti aturan tertentu sesuai protokol pengiriman fax dan algoritma kompresi fax. Ketika data fax yang diterima dienkripsi, data tersebut tidak lagi sesuai dengan aturan-aturan tersebut, sehingga data tersebut tidak lagi dapat diterima sebagai sebuah data fax dan tidak dapat dikirimkan dalam transmisi fax. Namun demikian data tersebut dapat dikirimkan antar secure fax melalui mode data yang didukung oleh modem, sehingga secure fax tidak hanya dapat mengirim dan menerima fax dalam mode fax, tetapi juga harus dapat mengirim dan menerima data fax dalam mode data. Dengan demikian, setidaknya ada enam buah fungsi besar yang harus dapat dilakukan oleh aplikasi secure fax, yaitu : menerima fax dengan mode fax, mengirim fax dengan mode fax, menerima fax dengan mode data, mengirim fax dengan mode data, enkripsi data fax, dan dekripsi data fax. 3.3.2. Rancangan Program Aplikasi Pada bagian ini rancangan aplikasi secara garis besar akan disajikan secara visual dalam Data Flow Diagram (DFD) untuk menunjukkan hubungan inputproses-output dari sistem. 33 3.3.2.1. Context Diagram 00 Secure Fax Secure Fax Mesin Fax Remote Secure Fax Gambar 3.3: Context Diagram Sistem secure fax hanya berhubungan dengan dua buah external entity, yaitu mesin fax dan secure fax lain yang pada Gambar 3.3 disebut remote secure fax. Ketika secure fax berperan sebagai pengirim, aliran data terjadi dari mesin fax ke secure fax berupa fax, dan secure fax akan menghasilkan output berupa fax terenkripsi ke remote secure fax, seperti terlihat pada Gambar 3.4. Mesin Fax fax 0 Secure Fax Remote Encrypted Secure Fax fax Gambar 3.4: Aliran data ketika secure fax sebagai pengirim Sebaliknya, ketika secure fax menjadi penerima fax, input diterima dari remote secure fax berupa data fax terenkripsi dan menghasilkan output berupa data fax semula yang dikirimkan ke mesin fax. Proses ini ditunjukkan pada Gambar 3.5. Mesin Fax fax 0 Secure Fax Remote Encrypted Secure Fax fax Gambar 3.5: Aliran data ketika secure fax sebagai penerima 34 3.3.2.2. State Transition Diagram Untuk memudahkan dekomposisi proses keseluruhan, kerja sistem dapat dibagi menjadi state-state seperti pada Gambar 3.6. Gambar 3.6: State Transition Diagram Jadi sistem secure fax memiliki tiga buah state dalam kerjanya, yaitu menunggu panggilan untuk mengindikasikan dimulainya sesi penerimaan fax atau penerimaan data, memproses fax yang diterima dari mesin fax, dan memproses data yang diterima dari remote secure fax. 3.3.2.3. DFD untuk State Menunggu Panggilan Gambar 3.7: DFD untuk state menunggu panggilan 35 Ketika secure fax tidak melakukan pengolahan data apapun, yang dilakukannya hanya membaca semua data yang diterima dari modem. Apabila diterima RING<CR><LF> dari modem, berarti terdeteksi bahwa ada panggilan yang masuk. Apabila panggilan diterima dari mesin fax, sistem akan pindah ke state memproses fax dari mesin fax, dan apabila panggilan diterima dari remote secure fax, sistem akan pindah ke state memproses data dari remote secure fax. Proses ini ditunjukkan pada Gambar 3.7. Perlu diperhatikan bahwa proses nomor 1 (fax modem) dan proses nomor 2 (data modem) merupakan hardware, bukan program yang akan diimplementasikan, karena merupakan bagian dari sistem jadi dimasukkan juga ke dalam diagram. Fax modem dan data modem masingmasing merupakan modem biasa, tetapi fax modem dikonfigurasi untuk berkomunikasi dengan mode fax sedangkan data modem dikonfigurasi untuk berkomunikasi dengan mode data. Karena proses state ini sudah cukup sederhana jadi tidak perlu dilanjutkan dengan DFD pada level berikutnya. 3.3.2.4. DFD untuk State Memproses Fax dari Mesin Fax Setelah terdeteksi adanya panggilan dari mesin fax, secure fax akan langsung menerima fax dari mesin fax tersebut (proses 2) dengan cara berkomunikasi melalui fax modem (proses 1). Penerimaan fax ini dilakukan dengan mengirim AT command ke modem dan menyimpan data yang diterima, seperti contoh sesi penerimaan fax pada Tabel 2.4. 36 Gambar 3.8: DFD untuk state memproses fax dari mesin fax Setelah fax diterima, fax akan dienkripsi dengan menggunakan enkripsi AES (proses 3) dan menghasilkan data fax yang sudah terenkripsi. Terakhir, data fax yang terenkripsi akan dikirimkan dengan mode data (proses 4) melalui data modem (proses 5) ke remote secure fax. Pengiriman fax dalam mode data akan dijelaskan secara lebih detail pada bagian 3.3.4. DFD untuk state ini juga sudah cukup jelas sehingga tidak perlu dilanjutkan ke level berikutnya. 3.3.2.5. DFD untuk State Memproses Data dari Remote Secure Fax Proses pada state ini adalah kebalikan dari proses pada state sebelumnya. Setelah terdeteksi adanya panggilan dari remote secure fax, akan dilakukan penerimaan data fax dengan mode data (proses 2) dengan menggunakan data modem (proses 1), yang akan dijelaskan pada bagian 3.3.4. Data fax terenkripsi yang diterima kemudian didekripsi (proses 3) menggunakan dekripsi AES. Terakhir, data fax semula yang didapat dari hasil dekripsi dikirimkan dalam mode fax (proses 4) dengan menggunakan fax modem (proses 5) ke mesin fax. Pengiriman fax dilakukan dengan AT command seperti pengiriman fax di Tabel 2.3. 37 Gambar 3.9: DFD untuk state memproses data dari remote secure fax Sama seperti yang lain, DFD pada state ini juga tidak dilanjutkan ke level berikutnya. 3.3.3. Struktur Data Fax Untuk memudahkan pengolahan data fax, data fax akan disimpan dalam suatu struktur data. Karena data fax terdiri dari beberapa halaman, struktur data fax di sini dibuat seperti linked list, di mana setiap halaman fax menjadi sebuah node, dan tiap halaman memiliki pointer yang menunjuk ke halaman berikutnya, selain menyimpan data untuk halaman tersebut. Gambar 3.10 menunjukkan struktur data ini. Gambar 3.10: Struktur data fax diimplementasikan sebagai linked list Struktur data ini dapat diimplementasikan misalnya dengan menggunakan struct di C. Gambar 3.11 menunjukkan model struktur data tersebut. 38 Gambar 3.11: Model struktur data fax Pada model tersebut, FaxData adalah data utama yang merepresentasikan suatu fax, sedangkan Page adalah data tiap halamannya. FaxData memiliki atribut berupa pointer ke data halaman pertama dari fax (pFirstPage) dan jumlah halaman yang dimiliki (totalPage). Page memiliki atribut berupa pointer ke suatu file yang berisi data dari halaman tersebut (pFile), nama file (filename), besarnya data dalam byte (dataSize), dan pointer ke halaman berikutnya (pNextPage). File dipilih untuk digunakan sebagai tempat penyimpanan data fax, walaupun sebetulnya dapat dibuat dengan lebih sederhana menggunakan dynamic array. Masalah dari digunakannya dynamic array adalah karena pada awal data fax diterima, tidak dapat diketahui secara pasti berapa ukuran data seluruhnya, sehingga perlu dialokasikan dulu buffer yang cukup besar, baru setelah semua data diterima dan ukuran diketahui, data dialokasikan ulang dengan ukuran yang sesuai. Dengan file penerimaan data fax dapat dilakukan secara lebih efektif, karena ukuran file dapat bersifat incremental, artinya ukuran file akan bertambah seiring dengan masuknya data. Keuntungan lain adalah fleksibilitas program apabila digunakan file. Dengan dynamic array, data pasti harus dialokasikan di RAM, sedangkan dengan file data dapat disimpan di RAM (dengan filesystem ramfs) atau di media penyimpanan permanen seperti memori flash, harddisk, dan sebagainya sesuai kebutuhan. Gambar 3.12 menunjukkan contoh gambaran data fax menggunakan model tersebut untuk merepresentasikan fax dengan dua halaman, halaman pertama sebesar 4 byte dan halaman kedua sebesar 5 byte. 39 Gambar 3.12: Contoh data fax dua halaman 3.3.4. Pengiriman Data Fax dengan Mode Data Karena dalam hal ini pengiriman data fax dengan mode data pasti hanya terjadi antara sebuah secure fax dengan secure fax juga, protokol pengirimannya dapat didefinisikan dengan bebas. Protokol yang dirancang untuk sistem ini ditunjukkan pada Tabel 3.1 (dicontohkan pengiriman data fax dua halaman). Tabel 3.1: Protokol pengiriman fax dengan mode fax Pengirim Penerima Dial Answer Kirim OK<CR><LF> Kirim jumlah halaman fax Kirim OK<CR><LF> Kirim ukuran halaman pertama Kirim OK<CR><LF> Kirim data halaman pertama Kirim OK<CR><LF> Kirim ukuran halaman kedua Kirim OK<CR><LF> Kirim data halaman kedua Kirim OK<CR><LF> Disconnect 40 Pada pengiriman jumlah halaman dan ukuran halaman, nilai yang dikirimkan harus dalam data 4 byte, dengan pengiriman dikirim mulai dari byte paling rendah (little endian). Ukuran halaman adalah besarnya data untuk halaman tersebut dalam byte. Ukuran yang dikirimkan adalah ukuran data fax semula sebelum dienkripsi, tetapi pada pengiriman data halaman, data yang dikirimkan adalah data fax terenkripsi, yang ukurannya bisa lebih besar dari data semula sesuai enkripsi yang digunakan. Karena itu penerima harus menghitung berapa ukuran data hasil enkripsi dengan ukuran data semula diketahui. Seharusnya, setelah koneksi terjadi dan sebelum pengiriman jumlah halaman, perlu ditambahkan protokol pertukaran kunci untuk memberikan kunci AES dari pengirim ke penerima, tetapi untuk tahap pengerjaan ini hal ini belum dimasukkan. 3.3.5. Integrasi Sistem Operasi dan Aplikasi Tidak seperti sistem operasi Linux, eCos tidak memisahkan antara lapisan sistem operasi dan aplikasi setelah berjalan pada sistem. Sistem operasi dan aplikasi diintegrasikan dalam suatu file image. Setelah diintegrasikan, struktur sistem secure fax digambarkan pada Gambar 3.13. Gambar 3.13: Gambaran sistem secure fax 41