Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

24
SISTEM KEAMANAN PADA EMBEDDED WEB SERVER BERBASIS MIKROKONTROLER AT89C52 1. Latar Belakang Perkembangan teknologi informasi dalam dekade terakir ini sangat pesat seakale. Dengan ditandainya pertumbuhan jaringan internet. Hambatan jarak dan waktu dapat dipecahkan begitu mudah. Bahkan dengan di depan computer saja, seseorang dapat berkomunikasi dengan orang yang berada di manapun di dunia ini. Kecepatan akses internet juga semakin tinggi, sehingga memungkinkan menjadi real time. Timbul keinginan menghubungkan peralatan yang penting dengan jaringan komputer. Sehingga alat tersebut dapat dipantau melalui internet. Misalnya dengan menghubungkan sebuah sensor melaluiserial port pada komputer. Kemudian keluaran sensor tersebut dihubungkan melalui suatu web server sehingga dapat diakses melalui web browser. Berbagai eksperimen telah dilakukan seperti yang dilakukan di London yaitu mengendalikan lift pada suatu bangunan secara remote melalui sebuah website. Pengendalian ini dilakukan dengan memperhatikan beberapa parameter di lift tersebut. Pada eksperimen tersebut dapat diketahui keadaan real time lift. Sekarang sedang bergerak atau tidak, sedang dilantai berapa. Pada era 90-an, industri komputer mengalami booming PC. Sedang pada awal abad 21 ini mulai marak notebook, PDA (Portabel Digital Assistant). Computer-komputer yang denagn mudah dibawa kemana saja. Kemudian bagaimana menghasilkan suatu perangkat yang embedded yang dapat terkoneksi dengan internet sehingga dapat dipantau setiap saat. Hal ini sedang menjadi trend. Vendor-vendor embedded system mulai memikirkan hal ini. Sehingga muncul PLC (Programmable Logic Controler) yang telah dilengkapi dengan TCP/IP modul. Begitu juga dengan DSP (Digital Signal Processing)mulai menambahkan modul TCP/IP. Namun, untuk peralatan yang sangat penting dan menyangkut keselamatan orang lain diperlukan sitem keamanan yang lebih baik. dari segi fisik maupun dari segi software. Dalam hal ini yang di bahas adalah keamanan dari segi software. Karena jika peralatan itu dapat diambil alih atau dirusak oleh orang lain akan membahayakan.

Transcript of Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

Page 1: Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

SISTEM KEAMANAN PADA EMBEDDED WEB SERVER BERBASIS MIKROKONTROLER AT89C52

1. Latar BelakangPerkembangan teknologi informasi dalam dekade terakir ini sangat pesat seakale. Dengan ditandainya pertumbuhan jaringan internet. Hambatan jarak dan waktu dapat dipecahkan begitu mudah. Bahkan dengan di depan computer saja, seseorang dapat berkomunikasi dengan orang yang berada di manapun di dunia ini. Kecepatan akses internet juga semakin tinggi, sehingga memungkinkan menjadi real time.Timbul keinginan menghubungkan peralatan yang penting dengan jaringan komputer. Sehingga alat tersebut dapat dipantau melalui internet. Misalnya dengan menghubungkan sebuah sensor melaluiserial port pada komputer. Kemudian keluaran sensor tersebut dihubungkan melalui suatu web server sehingga dapat diakses melalui web browser.Berbagai eksperimen telah dilakukan seperti yang dilakukan di London yaitu mengendalikan lift pada suatu bangunan secara remote melalui sebuah website. Pengendalian ini dilakukan dengan memperhatikan beberapa parameter di lift tersebut. Pada eksperimen tersebut dapat diketahui keadaan real time lift. Sekarang sedang bergerak atau tidak, sedang dilantai berapa.Pada era 90-an, industri komputer mengalami booming PC. Sedang pada awal abad 21 ini mulai marak notebook, PDA (Portabel Digital Assistant). Computer-komputer yang denagn mudah dibawa kemana saja. Kemudian bagaimana menghasilkan suatu perangkat yang embedded yang dapat terkoneksi dengan internet sehingga dapat dipantau setiap saat. Hal ini sedang menjadi trend. Vendor-vendor embedded system mulai memikirkan hal ini. Sehingga muncul PLC (Programmable Logic Controler) yang telah dilengkapi dengan TCP/IP modul. Begitu juga dengan DSP (Digital Signal Processing)mulai menambahkan modul TCP/IP.Namun, untuk peralatan yang sangat penting dan menyangkut keselamatan orang lain diperlukan sitem keamanan yang lebih baik. dari segi fisik maupun dari segi software. Dalam hal ini yang di bahas adalah keamanan dari segi software. Karena jika peralatan itu dapat diambil alih atau dirusak oleh orang lain akan membahayakan.

2. Sistem Keamanan Pada Embedded Web ServerAda berbagai macam cara untuk mengamankan system. Kita dapat menggunakan semua atau sebagian saja tergantung dari kebutuhan. Semakin penting peralatan yang diamankan maka sebaiknya sistem keamanan yang digunakan lebih banyak agar terjadi pengamanan secara berlapis. Ada dua macam pengaman pada system embedded yaitu :1. Dipasang pada luar sistem• Firewall• Packet filtering• Security Proxy• Software security yang lain atau yang terintegrasi dengan Operating system Komputer.2. Diintegrasikan di dalam sistem• Menggunakan kriptografi (salah satu algoritma adalah RC6)• Membatasi service yang diberikan (pada sistem ini yang digunakan hanya ARP, IP, ICMP, TCP, dan HTTP)

2.1 Kriptografi2.1.1. Kriptografi RC6

Page 2: Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

Algoritma RC6 merupakan salah satu kandidat Advanced Encryption Standard (AES) yang diajukan oleh RSA Security Laboratories kepada NIST. Dirancang oleh Ronald L Rivest, M.J.B. Robshaw, R. Sidney dan Y.L. Yin, algoritma ini merupakan pengembangan dari algoritma sebelumnya yaitu RC5 dan telah memenuhi semua kriteria yang diajukan oleh NIST. RC6 adalah algoritma yang menggunakan ukuran blok hingga 128 bit, dengan ukuran kunci yang diguankan bervariasi antara 128, 192 dan 256 bit.Algoritma RC6 dilengkapi dengan beberapa parameter, sehingga dituliskan sebagai RC6-w/r/b. Parameter w merupakan ukuran kata dalam satuan bit, parameter merupakan bilangan bukan negatif yang menunjukan banyaknya iterasi selama proses enkripsi dan parameter b menunjukan ukuran kunci enkripsi dalam byte. Setelah algoritma ini masuk dalam kandidat AES, maka ditetapkan bahwa nilai w = 32, r=20 dan b bervariasi antara 16, 24 dan 32 byte.RC6-w/r/b memecah blok 128 bit menajdi 4 buah blok 32-bit, dan mengikuti aturan enam operasi dasar sebagai berikut :a + b operasi penjumlahan bilangan integer a - b operasi pengurangan bilangan integer a ? b operasi exclusive-OR (XOR) a x b operasi perkalian bilangan integer a<<>b a dirotasikan ke kanan sebanyak variabel kedua (b)

2.1.2. Algoritma enkripsi Kriptografi RC6Karena RC6 memecah blok 128 bit menjadi 4 buah blok 32 bit, maka algoritma ini bekerja dengan 4 buah register 32-bit A, B, C, D. Byte yang pertama dari plaintext atau ciphertext ditempatkan pada byte A, sedangkan byte yang terakhirnya ditempatkan pada byte D. Dalam prosesnya akan didapatkan (A, B, C, D) = (B, C, D, A) yang diartikan bahwa nilai yang terletak pada sisi kanan berasal dari register disisi kiri. Diagram blok berikut akan lebih menjelaskan proses enkripsi yang terjadi pada algoritma RC6 :

Gambar 1. Diagram Algoritma RC6Algoritma RC6 menggunakan 44 buah sub kunci yang dibangkitkan dari kunci dan dinamakan dengan S[0] hingga S[43]. Masing-masing sub kunci panjangnya 32 bit. Proses enkripsi pada algoritma RC6 dimulai dan diakhiri dengan proses whitening yang bertujuan untuk menyamarkan iterasi yang pertama dan yang terakhir dari proses enkripsi dan dekripsi. Pada proses whitening awal, nilai B akan dijumlahkan dengan S[0], dan nilai D dijumlahkan dengan S[i]. Pada masing-masing iterasi pada RC6 menggunakan 2 buah sub kunci. Sub kunci pada iterasi yang pertama menggunakan S[2] dan S[3], sedangkan iterasi-iterasi berikutnya menggunakan sub-sub kunci lanjutannya. Setelah iterasi ke-20 selesai, dilakukan proses whitening akhir dimana nilai A dijumlahkan dengan S[42], dan nilai C dijumlahkan dengan S[43].Setiap iterasi pada algoritma RC6 mengikuti aturan sebagai berikut, nilai B dimasukan ke dalam fungsi f, yang didefinisikan sebagai f(x) =x(2x+1) , kemudian diputar kekiri sejauh lg-w atau 5 bit. Hasil yang didapat pada proses ini dimisalkan sebagai u. Nilai u kemudian di XOR dengan C dan hasilnya menjadi nilai C.Nilai t juga digunakan sebagai acuan bagi C untuk memutar nilainya kekiri. Begitu pula dengan nilai u, juga digunakan sebagai acuan bagi nilai A untuk melakukan proses pemutaran kekiri.Kemudian sub kunci S[2i] pada iterasi dijumlahkan dengan A, dan sub kunci S[2i+1] dijumlahkan dengan C. keempat bagian dari blok kemudian akan dipertukarkan dengan mengikuti aturan, bahwa nilai A ditempakan pada D, nilai B ditempatkan pada A, nilai C

Page 3: Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

ditempatkan apda B, dan nilai (asli) D ditempatkan pad C. demikian iterasi tersebut akan terus berlangsung hingga 20 kali.

2.1.3. Algoritma DekripsiProses dekripsi ciphertext pada algoritma RC6 merupakan pembalikan dari proses enkripsi. Pada proses whitening, bila proses enkripsi menggunakan operasi penjumlahan, maka pada proses dekripsi menggunakan operasi pengurangan. Sub kunci yang digunakan pada proses whiteneing setelah iterasi terakhir diterapkan sebelum iteasi pertama, begitu juga sebaliknya sub kunci yang diterapkan pada proses whitening sebelum iterasi pertama digunakan pada whitening setelah iterasi terkahir. Akibatnya, untuk melakukan dekripsi, hal yang harus dilakukan semata-mata hanyalah menerapkan algoritma yang sama dengan enkripsi, dengan tiap iterasi menggunakan sub kunci yang sama dengan yang digunakan pada saat enkripsi, hanya saja urutan sub kunci yang digunakan terbalik.

2.1.4. Penjadwalan kunciPengguna memasukkan sebuah kunci yang besarnya b byte, dimana 0?b?255. byte kunci ini kemudian ditempatkan dalam array c w-bit words L[0]…L[c-1]. Byte pertama kunci akan ditempatkan sebagai pada L[0], byte kedua pada L[1], dan seterusnya. (Catatan, bila b=0 maka c=1 dan L[0]=0). Masing-masing nilai kata w-bit akan dibangkitkan pada penambahan kunci round 2r+4 dan akan ditempatkan pada array S[0,…,2r+3].Konstanta P32 = B7E15163 dan Q32 = 9E3779B9 (dalam satuan heksadesimal) adalah “konstanta ajaib”yang digunakan dalam penjadwalan kunci pada RC6. nilai P32 diperoleh dari perluasan bilangan biner e-2, dimana e adalah sebuah fungsi logaritma. Sedangkan nilai Q32 diperoleh dari perluasan bilangan biner ?-1, dimana ? dapat dikatakan sebagai “golden ratio” (rasio emas).

2.2 Membatasi Service Yang DiberikanFasilitas dari TCP/IP sangat banyak sekali namun tidak semuanya digunakan. Semakin banyak fasilitas yang di sediakan maka semakin mudah serangan masuk. Terlebih lagi karena di letakkan pada mikrokontroler yang memorinya terbatas maka tidak semua fasilitas itu dapat dmasukkan. Pada sistem ini yang digunakan hanya ARP, IP, ICMP, TCP, dan HTTP

2.2.1. ARP (Address Resolution Protocol)ARP digunakan suatu host untuk menemukan Ethernet address host target pada jaringan fisik yang sama, jika hanya diberikan IP address target.Pengirim IP-to-ethernet address mengikat setiap ARP broadcast ; penerima meng-update informasi IP-to-ethernet address dalam cache sebelum memproses paket ARP. Urutannya yaitu:• Menunggu permintaan ARP, retransmisi , melaporkan kesalahn• Chacheing, expiring, updatingEthernet frame mengandung paket ARP jika bernilai $ 0806 pada protocol fieldnya.

Format paket ARP:Hardware Type Protocol TypeHlen Plen OperationSender HA (octets 0 - 3)Sender HA (octets 4 - 5) Sender IP (octets 0 - 1)

Page 4: Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

Sender IP (octets 2 - 3) Target HA (octets 0 - 1)Target HA (octets 2 - 5)Target IP (octets 0 - 3)

• Hardware type, menspesifikasikan interface hardware yang digunakan pengirim, jika 1 berarti Ethernet.• Protocol type, spesifikasi protocol yang akan digunakan pada layer selanjutnya, misalnya $0800 berarti IP• Operation, 1 untuk ARP, 2 untuk ARP reply, 3 untuk RARP request, 4 untuk RARP reply• Hlen dan plen, berisikan panjang hardware address dan protocol address, mengijinkan digunakan untuk jaringan khusus• Sender HA dan sender IP diisi jika diketahui• Target IP untuk ARP atau target HA untuk RARP• Ketika mesin target membalas, maka akan mengisi field-field yang belum terisi dan menukar pasangan pengirim-penerima, serta mengubah operasi untuk membalas.

2.2.2. IP (Internet Protokol)Unit terkecil pengiriman dalam layer ketiga TCP/IP disebut IP datagram. Layer network pada IP bertanggung jawab untuk mengirimkan tiap datagram ke tujuannya. Layanan pengiriman ini berjenis best-effort connectionless, artinya bahwa pengiriman datagram tidak membutuhkan connection setup, dikirim independen antara suatu datagram dengan datagram yang lain, dan hanya berusaha sebaik-baiknya mengirimkan datagram tanpa transmisi ulang.

Format IP datagram adalah sebagai berikut:

0 4 8 16 19 24 31Vers Hlen Servive Type Total LengthIdentification Flags Fragment OffsetTime to Live Protocol Header ChecksumSource IP AddressIP Options (if any) PaddingData,,,,

• Vers : nomor versi dari protocol IP, pastikan bahwa pengirim, penerima dan gateway memilki format yang sama.• Hlen : (4 bit) header datagram dengan panjang 32 bit words. (IP Option dan Padding adalah panjang variable). Header minimum adalah 20 bytes = 5 panjang field• Total length : panjang IP datagram dalam bytes(octet) termasuk header dan data.• Service type : 8 bit dalam field yang mengindikasikan bagaimana menghandle datagram.

2.2.3. ICMP (Internet Control Message Protocol)ICMP membolehkan gateways untuk mengirimkan kesalahan pengiriman atau pesan kendali (control message) kepada gateway lainnya atau host-host yang lain, ICMP memberikan komunikasi antara software internet protocol (IP) dalam suatu mesin dan software IP yang lainnya. ICMP hanya melaporkan kesalahan-kesalahan pada sumber aslinya, sumber harus

Page 5: Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

berkaitan dengan kesalahan-kesalahan individual pada program aplikasi dan mengambil tindakan untuk mengatasi permasalahan. Tidak dilakukan error reporting dalam paket ICMP.

Proses pengiriman pesan ICMP:ICMP Header Datagram Data AreaDatagram Header Datagram Data AreaFrame Header Frame Data Area

Format pesan ICMPTYPE – 8 bit integer sebagai identifikasi pesanCODE – 8 bit field memberikan informasi tambahan tentang tipe pesanCHECKSUM – 16 bitType Field ICMP Message Type0 Echo Reply3 Destination Unreachable4 Source Quench5 Redirect (change a route)8 Echo Request11 Time Exceeded for a Datagram13 tTimestamp Request14 Timestamp Reply15 Information Request (obsolete)16 Information Reply (obsolete)17 Address Mask Request18 Address Mask Reply

Echo request0 8 16 31Type (8 or 0) Code (0) ChecksumIdentifier Sequence NumberOperational Data,,,,,

Reports of unreachable destinations0 8 16 31Type (3) Code (0 - 5) ChecksumUnused (must be zero)Internet Header + First 64 bits of datagram,,,,,

2.2.4. TCP (Transmission Control Protocol)Memberikan service yang bersifat reliable, dengan karakteristik sebagai berikut:• Berorientasi stream, stream bit atau bytes (sequence)• Koneksi virtual circuit, berdasarkan panggilan (permulaan koneksi) mesin berkomunikasi untuk memverifikasi data yang diterima. (ini sebuah ilusi yang diberikan oleh pengiriman stream)• Buffered transfer, ukuran dari segmen adalah variabel yang bergantung pada jaringan. Dapat

Page 6: Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

memaksa suatu transmisi sebelum buffer penuh dengan suatu PUSH. Tidak menjamin bahwa buffer yang diterima jika berlebihan akan difragmentasi• Unstructured stream, TCP bukan stream yang terukur.• Koneksi full duplex, dengan piggybacking dari trafficDalam proses permulaan hubungan, terdapat pengirim acknowledge dari penerima sebagai identifikasi penerima sebagai identifikasi penerimaan segment. Acknowledge yang digunakan adalah acknowledge dengan retransmission, dengan timer untuk memacu sebuah retransmisi.

Gambar 2. Trasmisi TCPJika telah melewati batas waktu yang ditentukan timer akan menjadi time out, dengan proses sebagai berikut:

Gambar 3. Transmisi LostTCP menggunakan koneksi, bukan port protocol , sebagai pemindahan fundamental; koneksi diidentifikasi dengan pasangan dari endpoint. (host dan port). (167.205.32.1) sebuah endpoint pada host 167.205.32.1 pada port 25. TCP mengidentifikasi sebuah koneksi dengan sebuah pasangan endpoint, jika diberikan nomor TCP port maka dapat dishare dengan berbagai koneksi pada mesin yang sama.Pemindahan koneksi adalah signifikan, ini berarti seorang programmer dapat merencanakan sebuah program yang memberikan pelayanan yang serempakpada berbagai koneksi secara simultantanpa nomor local port yang unik untuk setiap koneksi.TCP adalah sebuah protocol yang berorientasi koneksi yang memerlukan kesepakatan kedua endpoint untuk berpartisipasi. Hal ini dapat dimulai sebagai berikut:Sebuah program aplikasi pada satu pihak melakukan fungsi pembukaan passive dengan mengindikasi system operasi yang akan menerima koneksi yang datang, system operasi akan menentukan nomor port TCP untuk menyelesaikan koneksi.Sebuah aplikasi pada satu pihak meminta suatu pembukaan aktif melalui system operasinya kepada port yang menunggu pada remote mesin. Dua modul TCP memulai dan memverifikasi koneksi. Sekali koneksi berlangsung maka kedua program bertukar data. Modul TCP menjamin pengiriman data. Format TCP segmen:0 4 10 16 24 31Source Port Destination PortSequence NumberAcknowledgement NumberHlen Reserved Code Bits WindowChecksum Urgent PointerOptions (if any) PaddingData,,,,,

• Port asal dan tujuan, mengandung nomor port TCP untuk mengidentifikasi aplikasi pada koneksi endpoint.• Sequence number mengidentifikasi posisi byte stream dari pengirim dalam segmen data• Acknowledgement number mengidentifikasi jumlah octet yang diharapkan oleh source untuk diterima selanjutnya (mengijinkan transmisi efisien)• Hlen menspesifikasi panjang header dalam 32 bit, diperlukan karena panjang variabel header

Page 7: Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

sebagai variabel dalam options field• Reserved adalah digunakan untuk kepentingan selanjutnya• Beberapa segmen hanya membawa acknowledgement ketika membawa data, lainnya membawa request untuk membuka atau menutup sebuah koneksi. Bit keenam menentukan tujuan dan isi dari segmenBit (Left To Right) Meaning If Bit Set To 1URG Urgent point field is validACK Acknowledgement field is validPSH This segment request a pushRST Reset the connectionSYN Synchronize sequence numbersFIN Sender has reached end of its byte stream

• Field window mengiindikasikan ukura buffer dari koneksi penerimaan, berapa banyak data yang dapat di toleransiUntuk memulai sebuah koneksi, TCP menggunakan 3 way handshake, TCP adalah koneksi full-duplex

Gambar 4. Koneksi 3 Way HandshakePengakiran koneksi TCP adalah sebagai berikut:

Gambar 5. Pengakhiran Koneksi TCPSeperti kebanyakan protokol-protokol, operasi dari TCP dengan baik dapat dijelaskan secara model teoritis yang disebut finite state machine.

Gambar 6. TCP State Machine

2.2.5. HTTP (Hyper Text Transfer Protocol)HTTP berbasis pada aktivitas request-response. Sebuah client, menjalankan satu program applikasi yang disebut browser, membangun sebuah koneksi denagn sebuah server dan mengirim sebuahrequest ke server dalam format sebuah metoda request. Server merespon dengan sebuah status line, termasuk pesan-pesan versi protocol dan kode sukses atau error, diikuti dengan pesan yang mengandung informasi server, informasi entitas, dan kemungkinan isi utama.Sebuah transaksi HTTP dibagi atas empat langkah:1. Browser membuka koneksi2. browser mengirim request ke server3. server mengirim respon ke browser4. koneksi di tutupdalam internet ,komunikasi HTTP biasanya berlangsung dalam koneksi TCP. Default portnya adalah 80, tetapi port lain dapat digunakan. Ini tidak menghindari HTTP diimplementasikan dalam protocol lainnya dalam internet, atau dalam jaringan lain. HTTP dianggap transportasi yang reliable dalam setiap protocol yang bergaransi dapat digunakan.

a. Operasi HTTPDalam banyak kasusu , komunikasi HTTP diawali oleh permintaan user akan informasi pada

Page 8: Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

server tujuan. Dalam kasusu sederhana, permulaan koneksi diawali melalui koneksi tunggal antara user agen dan server tujuan seperti yang ditunjukkan pada gambar berikut:

Gambar 7. Koneksi HTTPDalam beberapa kasus, tidak terdapat hubungan langsung antara user agen dan server tujuan. Terdapat satu atau lebih perantara antara user agen dan server tujuan, seperti proxy, gateway, atau tunnel. Request dan respon dievaluasi oleh perantara dan diteruskan ke tujuan atau perantara lainnya dalam rantai request-respon seperti ditunjukkan gambar berikut:

Gambar 8. Koneksi HTTP Dengan Perantara

b. Parameter-parameter protocolBeberapa dari protocol HTTP memiliki parameter seperti yang dijelaskan berikut:• HTTP versionHTTP menggunakan skema penomoran untuk menunjukkan versi dari protocol. Koneksi terjauh akan ditampilkan menurut kebijakan versi protocol. Nomor akan meningkat ketika terjadi perubahan signifikan dalam protocol, seperti perubahan format pesan. Versi dari pesan HTTP dikirim oleh sebuah field HTTP-version dalam baris pertama pesan. Field HTTP-version mengikuti format berikut (mengacu pada RFC 2822):HTTP-Version = HTTP /1*DIGIT.1*DIGIT• Uniform Resources Identifiers (URI)Uniform Resources Identifiers biasa mengacu sebagai alamat WWW dan kombinasi dari Uniform Resources Locators (URL) dan Uniform Resources Name (URN). Sebenarnya , URI adalah huruf yang mengindikasikan lokasi dan nama sumber dari server.• HTTP URLSkema HTTP URL mengijinkan kita untuk meletakkan resources jaringan melalui protocol HTTP. Ini berbasis dari sintak generik URI dan dijelaskan dalam RFC 2396. sintak umumnya dalam skema URL adalah:HTTP_URL = http // host [ : port ] [abs_path]Nomor port bersifat optional. Jika tidak diisikan berarti defautnya port 80.

c. HTTP MessagePesan HTTPterdiri dari field-field berikut:• Tipe pesanSebuah pesan HTTP dapat berupa request client atau respon server. Huruf berikut menandakan tipe pesan HTTP.HTTP-Message = Request | Response• Message headersField header pesan HTTP dapat berupa salah satu hal-hal berikut:? General header? Request header? Response header? Entity header• Message bodyMessage body dapat mengacu sebagai entity body jika tidak terdapat pengkodeaan transfer yang diterapkan. Message body sederhananya membawa entity body yang relevan dengan request atau

Page 9: Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

respon• Field-field general headerField general header dapat mencakup pesan request dan respon. Field general header terbaru mencakup hal-hal sebagai berikut:? Cache-control? Connection? Date? Pragma? Transfer-encoding? Upgrade? Via

d. RequestSebuah pesan request dari sebuah client ke server mencakup metoda yang diterapkan pada resource, identifikasi dari source, dan versi protocol yang digunakan. Sebuah pesan request berformat sebagai berikut:Request = request-line*{general-header | request –header | entity-header}CRLF[message body]e. ResponSebuah HTTP server mengembalikan respon setelah mengevaluasi client request. Field sebuah respon adalah sebagai berikut:

Request = request-line*{general-header | request-header | entity-header}CRLF[message body]f. EntityBaik client atau server boleh mengirimkan entity dalam pesan request atau pesan respon, jika tidak maka tidak dikenali. Entity terdiri dari:• Field entity header• Body entity

3. Implementasi3.1. HardwareEmbedded web server ini adalah sebuah system mikroprosesor. Dipilih menggunakan mikroprosesor karena TCP/IP stack akan ditanamkan ke dalam mikroprosesor tersebut. Diagram blok system embedded web server ini adalah sebagai berikut:

Gambar 9. Diagram Blok Sistem

Gambar 10. Rangkaian SistemSystem ini terdiri dari sebuah mikrokontroler, tempat dimana perangkat lunak ditanamkan. Kemudian Ethernet card ternubung ke mikrokontroler kemudian terhubung dengan jaringan komputer dengan kabel RJ45 (UTP) atau kabel RG 58 (BNC). Serial EEPROM ini digunakan

Page 10: Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

untuk menyimpan halaman web dan serial interface RS 232 digunakan untuk komunikasi serial ke PC (Personal Komputer). Perangkat yang akan dikendalikan dihubungkan melalui I/O yang berasal dari port mikrokontroler yakni port 1. terdapat 8 jalur I/O yang berarti dapat mengendalikan 8 buah perangkat digital. Catu daya yang diperlukan system ini adalah 5V DC yang diperoleh dari keluaran voltage regulator LM 7805.

3.2. Format Frame EthernetAda dua macam format frame fisik untuk dikirim-diterimakan pada jaringan Ethernet, yaitu:1. Ethernet v2 format (digunakan oleh RFC894)Alamat MAC Tujuan(48 bit) Alamat MAC Asal(48 bit) Tipe Frame(16 bit ethtype) Data(45-1500 bytes)

2. IEEE 802.3 LLC formatAlamat MAC Tujuan (48 bit) Alamat MAC Asal (48 bit) Panjang Data (16bit)DSAP (1 byte) SSAP (1 byte) Control (1 byte)Data

Untuk mengakomodasi lebih banyak protocol yang mengirimkan paket di bagian data, maka dibuatlah format IEEE 802.3 SNAP (digunakan oleh RFC 1042):Alamat MAC Tujuan (48 bit) Alamat MAC Asal (48 bit) Panjang Data (16bit)DSAP (=0AAh) SSAP (=0AAh) Control (1 byte)OUI (Organization Unique Id) (3 byte) Tipe (16 bit) Data

Menurut RFC 1042, bagian kontrol diisi 3 (unnumbered information), OUI diisi 0, dan tipenya diisi ethtype seperti pada Ethernet v2 format. Ethtype ini merupakan identifikasi protocol pada layer network yang memiliki paket tersebut (IP=800h, ARP=806h).Sebuah internet host harus mengenali frame Ethernet v2 (sesuai RFC 894), dan sebaiknya juga frame IEEE 802.3 SNAP (sesuai RFC 1042). Frame yang dikirimkannya berformat RFC 894, dan boleh mengirim frame berformat RFC 1042 (harus ada switch/setting untuk mengubah frame yang dikirim, dan defaultnya harus RFC 894).Perbedaan frame berformat Ethernet v2 dengan IEEE 802.3 ialah dengan melihat ethtype/framelen-nya, jika bernilai>1500 berartiitu pasti ethtype dari frame Ethernet v2 (karena lebih besar dari ukuran frame maksimumnya yaitu 1500bytes).

3.3. TCP/IP stackMikrokontroler AT89C52 merupakan tempat yang akan di tanamkan TCP/IP stack ini. Agar lebih memudahkan dalam desain TCP/IP, berikut pohon pengkodean protocol, yang menjelaskan aliran data yang akan ditangani oleh protocol-protokol dalam TCP/IP stack ini.

Gambar 11. Struktur TCP/IP

Pada tugas ini tidak semua protocol dalam TCP/IP yang akan diimplementasikan. Protokol-protokol yang akan diimplementasikan adalah IP (Internet Protokol), ARP (Address Resolution

Page 11: Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

Protocol), ICMP (Internet Control Message Protokol), TCP (Transport Control Protocol). Yang nantinya protokol-protokol tersebut menunjang menjadi suatu web server (HTTP server) pada layer aplikasi. Karena menggunakan mikrokontroler yang kecil memorinya (8 kB untuk code, 256 bytes RAM) dilakukan beberapa pengorbanan untuk meminimkan penggunaan kode, diantaranya pengabaian spesifikasi TCP/IP yang lengkap dalam membuat perangkat lunak ini. Selain itu demi keamanan protocol yang tidak diperlukan dihilangkan juga.Pengabaian yang dilakukan antara lain:• TCP option maupun IP options: biasanya paket yang dikirim computer client untuk keperluan web browsing tidak memuat apa-apa baik pada TCP headernya maupun IP headernya. Maka perangkat lunak ini mengabaikan kemungkinan adanya options (sehingga tidak sesuai dengan RFC 792 dan RFC 1122). Contoh options: record route, source route, dan timestamp• Fragmentasi dan reassembly: web page ini cukup kecil untuk dimuat dalam satu paket Ethernet (1500 bytes, web page-nya hanya 800-an bytes), apalagi paket yang memuat permintaan web page, sehingga software ini tidak memiliki fasilitas reassembly. Masalah hanya muncul jika web browser yang digunakan memberikan HTTP header yang begitu besar sampai butuh reassembly (tidak sesuai dengan RFC 1122)• Bagian spesifikasi retransmisi TCP: server ini tidak melakukan pengiriman ulang, dan ia menerima pasangan acknowledgement number dan sequence number apapun pada paket TCP yang berisi HTTP request sebagai paket yang valid.TCP stack dibuat menggunakan konfigurasi IP statis, karena implementasi DHCP atau BOOTP akan memerlukan kode yang lebih banyak. IP address statis ini merupakan imputan dari user. Perangkat lunak untuk TCP/IP ini menganut prinsip pengiriman berdasarkan request (penerimaan), jadi tiap paket yang dikirimkan merupakan balasan dari paket yang diterima. Konsekuensinya tidak bisa melakukan apapun yang didasarkan timer.

Secara keseluruhan berikut adalah flowchart TCP/IP stack:

Gambar 12. Flowchart TCP/IP

3.4. Prinsip kerja TCP/IP stackMenunggu datangnya paket menggunakan NIC_PacketWaiting() (yang mem-polling Interrupt Status Register pada NE 2000). Begitu ada paket barulah melakukan proses. Dari packet level MAC, yang ada pada headernya terdapat Ethernet type, dilakukan identifikasi jenis paket, kemudian dipanggil rutin untuk menanganinya.#define ethT1 PeekEther3 (4+6+6)#define ethT2 PeekEther3 (4+6+6+1)printf (“EtherType=%2.2X%2.2X\N”, ETHt1, ETHt2);{if (ethT2==6)HandleARP();else if (ethT2==0)HandleIP();}Untuk ARP request yang ditujukan pada IP statis tersebut, mengeluarkan ARP reply ke pengirim ARP request. Dalam reply ini ia memasukkan hardware address dan IP addressnya. Hardware address tujuan diambil dari hardware address asal pada ARP request.

Page 12: Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

#define op1 PeekEther3(4+6+6+2+6)#define op2 PeekEther3(4+6+6+2+6+1)printf(“Operation %2.2x%2.2x\n”, op1, op2);if (op2==1 && op1==0){printf (“ARP request:”);if ((PeekEther3(4+6+6+2+8+0+10+6)= = this_IP[0]) &&(PeekEther3(4+6+6+2+8+1+10+6)= = this_IP[1]) &&(PeekEther3(4+6+6+2+8+2+10+6)= = this_IP[2]) &&(PeekEther3(4+6+6+2+8+3+10+6)= = this_IP[3])){printf (“for this interface\n”);EtherCopy(tx_start_page, 6, tx_start_page, 22, 6); //MAC srcEtherCopy(current_page, 4+6, tx_start_page, 0, 6); // MAC dstPrePoke();SetRCNT(0, 10);SetRSAR(tx_start_page, 12);Outb_p(E8390_RWRITE+E8390_START, E8390_CMD);for (i=0; i<10; i++){Outb_p(ARP_temp[i], NE_DATAPORT);}//EtherCopy(0x47, 0, tx_start_page, 22,6); //MAC srcEtherCopy(current_page, 42, tx_start_page, 22+6, 4); //IP srcetyerCopy(current_page, 26, tx_start_page, 22+10,10);//MAC & IP dstNS8390_trigger_send(64,tx_start_page);}Else{printf (“not for this interface\n”);}}}Untuk IP datagram, server ini akan melihat versi IP yang digunakan (IP selain IP versi 4 harus diabaikan), kemudian memeriksa IP tujuan (dan mengabaikannya jika bukan IP host ini). Jenis protocol yang ditumpangkan pada datagram ini dilihat pada protocol di offset IP_header+9, protocol bisa berisi 1 (=ICMP), atau 6 (=TCP), protocol jenis lainnya diabaikan. Jika ternyata protokolnya ICMP, maka akan dilakukan pemrosesan ICMP echo request yaitu dengan menyalin potongan-potongan datagram ke transmit buffer (karena field asal dan tujuannya harus dibalik), menghitung ulang ICMP checksum, kemudian mengirimkan datagramyang terbentuk. IP checksum tidak dihitung ulang karena headernya tidak berubah (hanya urutan Ip-nya yang dirubah). Dibagian inilah kalau ada IP options yang dikirim bersama echo requestnya, maka echo replynya akan cacat.Printf(“echo request\n”);EtherCopy(current_page, 16, tx_start_page, 12, szLo-4); // copy packet

Page 13: Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

EtherCopy(current_page, 10, tx_start_page, 0, 6); // dest MACEtherCopy(current_page, 4, tx_start_page, 6, 6); // src MACEtherCopy(current_page, 18+12, tx_start_page, 14+16, 4); // dest IPEtherCopy(current_page, 18+16, tx_start_page, 14+12, 4); // src IPPokeEther2(0, ofs-4); //change to ICMP echo replyJ = (PeekEther3(ofs+2)*0x100+PeekEther3(ofs+3)) ^ 0xffff;// ambil 1’s complement dari checksumj-= 0x800; // ubah checksum, tipe ICMP dari 8 menuju 0j^= 0xfff; // 1’s complementPoketEther2(j & 0xff, ofs-1); // tulis checksumPokeEther2(j >> 8, ofs-2);NS8390_trigger_send((ui16)PeekEther3(20)<<8 | PeekEther3(21) + 14, tx_start_page);Untuk TCP, terdapat TCBs (Transmission Control Blocks) yang berisi informasi yang dibutuhkan untuk menyimpan state TCP. TCBs ini diletakkan pada page 0x46 di packet buffer memory space.0x4000 - 0x45ff Transmit buffer (1536 bytes)0x4600 - 0x4bff Data area0x4c00 - 0x8000 Receive buffer ring

Isi TCB antara lain : IP asal, port asal, acknowledgement number, sequence number, dan nomor state. TCB bisa dihapus dari TCBs dengan memindahkan entry-entry TCB berikutnya satu blok ke atas sehingga menutupi TCB yang dihapus tadi.Setiap ada segmen TCP dalam datagram IP, server akan memeriksa port tujuan. Jika port tujuan = 80 (web HTTP port) barulah pemrosesan dilanjutkan. Selanjutnya diperiksa apakah segmen ini berasal dari koneksi yang sudah tercatat dalam TCBs. Untuk mengetahuinya dibandingkan no.IP asal, tujuan, no. portasal dan tujuan, apakah sama persis dengan salah satu TCB dalam TCBs.Jika tidak ada entry yang sama, dan dalam segmen TCP tersebut terdapat flag SYN, maka server ini akan mengirimkan segmen kosong berflag SYN +ACK, dengan nACK=nSEQ dari segmen berflag SYN tadi +1 dan nSEQ=512. untuk nSEQ, meskipun dianjurkan berasal dari counter yang diupdate 250 ribu kali per detik (RFC793), ternyata dengan memilih nilai yang tetappun bisa berfungsi. Masalahnya dengan pendekatan nilai static ini akan mempermudah IP spoofing (dan beberapa resiko lain seperti kerentanan terhadap duplikasi paket TCP). Masalah dengan pendekatan 250 ribu kali per detik ialah kesulitan pembuatanya dengan menggunakan 16-bit (nSEQ berisi 32 bit) yang ada pada MCS-51 series. Kemudian TCB baru akan dibuat dan diisi parameter koneksi, dan statenya diisi SYN-RECEIVED. Jika TCBs sudah penuh maka TCB terlama (indeks 0) akan dihapus. Dengan cara ini kita tidak butuh timer untuk meyakinkan entry dalam TCBs kita tidak dipenuhi TCB dari koneksi yang terputus.jika terdapat flag ACK dalam segmen TCP pada koneksi yang belum ada, maka akan dikirim segmen berisi RST dengan nSEQ=nACK dari segmen tadi. Jika ada entry yang sama, proses selanjunya bergantung pada flag yang ada dan no.state pada TCB.1. jika RST maka hapus TCB2. jika PSH dan state sekarang ESTABLISHED, berarti HTTP request (semua web browser yang baik akan menandai semua requestnya sebagai PSH). Ambil request-line dari awal bagian data sampai ketemu CLRF. Jika tiga huruf pertama = ‘GET’, buat web page, kemudian kirimkan. Jika ternyata ‘POST’, lewati bagian header untuk mendapat entitas, dan baca bagian entitas dri sana. Web page dibuat dengan header minimal (hanya ‘content-type = text/html’ agar lynx bisa

Page 14: Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

membaca page-nya tanpa protes, anehnya Microsoft IE bisa menampilkan HTML tanpa diberi ‘Content-Type’), bahkan Contenth-length pun tidak diberikan. Server menandakan akhir halaman dengan memberikan flag FIN+ACK untuk menutup koneksi, dan langsung pindah ke state FIN_WAIT1.3. jika FIN dan state sekarang ESTABLIshed, kirimkan FIN+ACK dan pindah ke state LAST_ACK (yang sebetulnya sama dengan state CLOSING)4. jika ACK dan state sekarang SYN-RECEIVED, pindah ke state ESTABLISHED5. jika ACK dan state sekarang CLOSING, hapus TCB6. jika ada FIN dan state sekarang FIN_WAIT1, kirimkan segmen berisi ACK. Jika flag ACK juga menyala langsung hapus TCB, jika tidak pindah ke state CLOSING7. jika ACK dan state sekarang FIN-WAIT1, pindah ke FIN_WAIT28. jika FIN dan state sekarang FIN_WAIT2, hapus TCB dan kirimkan segmen berisi ACK

3.5. HTTP ServerFungsi embedded web server ini dibatasi sebagai berikut:• melayani request untuk satu web page, dari 1-5 klien• isi web page hanya menunjukkan status dari beberapa variabel pada RAM dalam system mikrokontroler, yang bisa dengan mudah di-mirrorkan ke output port dari system mikrokontroler• lewat user interface pada web page ini kondisi variabel pada RAM tadi bisa diubah (begitu juga kondisi output port yang dimirrorkantersebut)• untuk sekuritas digunakan RSA, sehingga tidak semua dapat mengakses web page tersebut.Web page akan berisi tampilan dengan elemen user interface (radio button) yang menunjukkan kondisi sinyal output digital tersebut sekaligus bisa dimanipulasi oleh pengguna dengan mengubah radio button mana yang terisi. Pengguna mengaktualkan perubahanyang telah dilakukan dengan menekan tombol ‘GO’ yang mengirimkan HTTP POST request kepada server. User interface berupa radio button, dibuat dengan HTML dengan sintaks

Akan dihasilkan radio button dengan kondisi terisi *(selected). Untuk kondisi tidak terisi, tinggal dihilangkan tulisan ‘CHECKED’. Maka implementasi pembuat web page-nya ialah untuk menyisipkan tulisan ‘CHECKED’ pada radio button yang sesuai dengan kondisi yang ingin ditunjukkan. Dengan menggunakan karakter $. Lokasi penempatan tulisan CHECKED itu bisa ditandai, dan selanjutnya rutin pembuat web pagetinggal menyalin karakter satu per satu dari template web pagenya ke packet buffer dengan kasus khusus jika bertemu karakter $ tadi. Tepat setelah karakter $ diisikan kode untuk identifikasi radio button tersebut, angka pertama ialah nomer flag dan angka kedua adalah radio button ini untuk kondisi on(‘1’) atau off (‘0’). Pada HTTP POST request, bagian Message-Body diawali oleh akhir header yang berisi dua buah CRLF. Message-Body ini berisi kondisi formulir web waktu pengguna menekan tombol ‘GO’. Message-Body yang akan dikirimakan seperti:In1=1&in2=0&…&x=Kata pertama adalah elemen UI yang mengirimkan data, dalam kasusu ini radio button yang ada duah buah, dan kata setelah tanda ‘=’ ialah data dari elemen UI tersebut. ‘&’ digunakan untuk memisahkan data dengan nama elemen UI berikutnya. Message-Body berakhir pada akhir segmen TCP (sebetulnya cara yang lebih baik ialah dengan melihat Contenth-Length), tapi untuk mempermudah proses pengerjaanmaka ada elemen UI bernama ‘x’ untuk menghentikan proses parsing.

Page 15: Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

3.6. Implementasi Algoritma RC6Berikut ini algoritma-algoritma untuk mengimplementasikan simulator kriptografi RC6. Dengan algoritma-algoritma ini dibuat sebuah simulator kriptografi RC6 yang dapat menghasilkan data analaisis performansinya.3.6.1. Algoritma Pembangkit Sub KunciKAMUSType Word32 : 32 bit {tipe data 32 bit}Kunci : string {kunci yang dimasukkan oleh pemakai}i, j, c, s, v : integerA : integerB : integerS : array [0..43] of word32L : array [0..43] of word32Function ROTL (X:Word32; Y : integer) ? Word32(fungsi untuk merotasi bit sebanyak variabel kedua)ALGORITMAInput (Kunci)S[0] ?P32For i? 1 to 43 doS[i] ? S[i-1]+Q32Endfor

A?B?i?j? 0V?44If (c>v) thenV?cV?v*3For s?1 to v doA? S[i] ? ROTL ((S[i]+A+B),3)B?L[j] ? ROTL (L[j]+A+B,A+B)I?(i+1) mod 44J? (j+1) mod cEndfor

3.6.2. Algoritma Baca File MasukanProcedure baca_file{I.S : File belum dibuka}{F.S : File dibaca per 16 karakter dan ditampung dalam buffer}KAMUSNama_file : string {nama file masukan}Buff : array [0..15] of chari : integerALGORITMAInput (nama_file)Open (nama_file)i?0

Page 16: Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

while (i?15) and not (EOF) doRead (nama_file, Buff[i])EndwhileClose (nama_file)

3.6.3. Algoritma whitening awalProcedure whitening_awal{I.S : blok kedua dan keempat belum dijumlahkan dengan sub kunci}{F.S : blok kedua dan keempat yang telah dijumlahkan dengan sub kunci}KAMUSType word32 : 32 bit (tipe data sebesar 32 bit)X : word32 array [0..3] {blok enkripsi/plaintext}S : array [0..43] of word32 {sub kunci}ALGORITMAX[1] ? X[1] + S[0]X[3] ? X[3] +S[1]

3.6.4. Algoritma IterasiProcedure iterasi{I.S : keempat blok setelah whitening awal belum diproses}{F.S : keempat blok yang telah diproses dan saling dipertukarkan}KAMUSType word32 : 32 bit {tipe data sebesar 32 bit}X : word32 array [0..3] {blok enkripsi/plaintext}Function ROTL(X:Word32; Y : integer)? word32{Merotasi bit kekiri sebanyak variabel kedua}Temp : word32u, t: word32i : integerALGORITMAFor i ? 1 to 20 dot ? ROTL ((X[1]*(2*X[1]+1)), 5)u ? ROTL ((X[3]*(2*X[3]+1)), 5)X[0] ? (ROTL((X[0] XOR t), u )) + S[2*i]X[0] ? (ROTL((X[2] XOR u), t )) + S[2*i + 1]Temp ? X[0]X[0] ? X[1]X[1] ? X[2]X[2] ? X[3]X[3] ? TempEnd for

3.6.5. Algoritma Whitening AkhirProcedure Whitening_akhir{I.S : blok pertama dan ketiga belum dijumlahkan dengan sub kunci}{F.S : blok pertama dan ketiga yang telah dijumlahkan dengan sub kunci}

Page 17: Sistem Keamanan Pada Embedded Web Server Berbasis Mikrokontroler At89c52

KAMUSType word32 : 32 bit (tipe data sebesar 32 bit)X : word32 array [0..3] {blok enkripsi/plaintext}S : array[0..43] of word32 {sub kunci}ALGORITMAX[0] ? X[0] + S[42]X[2] ? X[2] + S[43]

4. Kesimpulan• Penggunaan sistem keamanan disesuaikan dengan kebutuhan• Semakin besar iterasi pada RC6 maka sisitem akan semakin lambat terutama dengan menggunakan AT89C52.• Dengan web server yang terintegrasi kita dapat memantau peralatan secara real time.• Aplikasi yang tidak diperlukan sebaiknya dihilangkan karena akan memudahkan orang lain memasuki sistem.• Akan lebih baik jika RC6 dilakukan terlebih dahulu di chip kripto kemudian hasilnya baru dikirimkan untuk mengurangi kelambatan.

5. Daftar Pustaka• Rhardjo, Budi, “Keamanan Sistem Informasi Berbasis Internet” PT. Insan Infonesia, Bandung, 2002.• Putra, Afgianto Eko, “ Belajar Mikrokontroler AT89C51/52/55 : Teori dan Aplikasi “, Gava Media, Yogyakarta, 2002.• Ford, Warfick, “Secure Elektronic Commerce” Prentice Hall, New Jersey, 1997.• Purbo, OnnoW. “TCP/IP” Elex Media Komputindo, Jakarta, 2002.• Rivest, Ronald L; Robshaw, M.J.B; Sidney, R; and Yin, Y.L. : “The RC6 Block Cipher”, AES Submission, August 1998.• Suwartadi R., IDP. Eka. “Desain dan Implementasi Embedded Web Server Berbasis Mikrokontroler” Tugas Akhir DTE ITB, Bandung, 2002.