BAB II LANDASAN TEORI Landasan teori ini akan digunakan sebagai landasan pengerjaan aplikasi mendeteksi celah keamanan SSL pada aplikasi website dan mobile di android. Pembahasan bertujuan untuk mengurai teori tentang keamanan informasi, keamanan web dan aplikasi android, celah keamanan web dan celah keamanan aplikasi android, dan teori penunjang yang berhubungan untuk pencegahan heartbleed bug dan kelemahan SSL pada android. 2.1 Keamanan Informasi Menurut (ISO/IEC 17799:2005) keamanan informasi adalah upaya perlindungan dari berbagai macam ancaman untuk memastikan keberlanjutan bisnis, meminimalisir resiko bisnis, dan meningkatkan investasi dan peluang bisnis. Sehingga keamanan informasi secara tidak langsung dapat menjamin keutuhan informasi, kontinuitas bisnis, mengurangi resiko-resiko yang terjadi. Karena semakin banyak informasi perusahaan yang disimpan, dikelola dan di-sharing-kan maka semakin besar pula resiko terjadi kerusakan, kehilangan atau tereksposnya data ke pihak eksternal yang tidak diinginkan (Sarno, 2009). Apapun bentuk informasi yang disampaikan harus selalu dilindungi (ISO/IEC 17799, 2005). Keamanan Informasi memiliki empat aspek (ISO/IEC 17799, 2005) yaitu sebagai berikut : 1. Confidentiality Keamanan informasi menjamin bahwa hanya mereka yang memiliki hak yang boleh mengakses informasi tertentu. Pengertian lain dari confidentiality Universitas Sumatera Utara 8 merupakan tindakan pencegahan dari orang atau pihak yang tidak berhak untuk mengakses informasi. 2. Integrity Keamanan informasi menjamin kelengkapan informasi dan menjaga dari kerusakan atau ancaman lain yang mengakibatkan berubah informasi dari aslinya. Pengertian lain dari integrity adalah memastikan bahwa informasi tersebutmasih utuh, akurat, dan belum dimodifikasi oleh pihak yang tidak berhak. 3. Availability Keamanan informasi menjamin pengguna dapat mengakses informasi kapanpun tanpa adanya gangguan dan tidak dalam format yang tidak bisa digunakan. Pengguna dalam hal ini bisa jadi manusia, atau komputer yang tentunya dalam hal ini memiliki otorisasi untuk mengakses informasi. Availability meyakinkan bahwa pengguna mempunyai kesempatan dan akses pada suatu informasi. 4. Non-repudiation Kemanan informasi menjaga agar seseorang tidak dapat menyangkal telah melakukan sebuah transaksi. Sebagai contoh, seseorang yang mengirimkan email untuk memesan barang tidak dapat menyangkal bahwa dia telah mengirimkan email tersebut. 2.2 Celah Keamanan / Vulnerability Vulnerability adalah kelemahan dalam sistem yang dapat dimanfaatkan untuk melanggar perilaku sistem yang relatif terhadap keselamatan, keamananan, keandalan, ketersediaan, integritas, dan sebagainya. Dapat didefinisikan perilaku dari sistem tersebut adalah sebagai berikut: 1. Keselamatan Keselamatan adalah melakukan atau mengontrol fungsi yang diaktifkanuntuk mencegah atau meminimalkan efek dari kegagalan sistem keamanan. 2. Keamanan Keamanan adalah perlindungan sumber daya dari kerusakan dan perlindungan data terhadap penyingkapan dari orang yang tidak sah atau modifikasi yang tidak sah. Universitas Sumatera Utara 9 3. Keandalan Keandalan adalah kondisi, acara, proses, kontrol, kerja, atau toleransi penting yang dapat diandalkan sistem. 4. Ketersediaan Ketersediaan adalah aspek yang menjamin dimana sistem, data dan sumber daya operasional dapat diakses bila diperlukan. 5. Integritas Integritas adalah aspek yang menjamin bahwa sistem tidak boleh berubah tanpa ijin pihak yang berwenang. Vulnerability yang melekat dalam desain, operasi, atau lingkungan operasional dari sistem tersebut berkembang sebagai hasil dari kesalahan, dari kelalaian, kesalahan komisi, dan kesalahan operasional yang terjadi selama kehidupan dari suatu sistem (Herrmann, 2002). 2.2.1 Celah Keamanan Aplikasi Web Celah keamanan pada aplikasi web adalah suatu celah yang menjadi jalan penyerang untuk menyebabkan kerusakan pada aplikasi web. Jenis celah keamanan web yang umumnya dijumpai adalah sebagai berikut (Stuttard, 2011) : 1. Input Validation Vulnerability Kelemahahan yang paling umum dari aplikasi web adalah kegagalan untuk memvalidasi input yang berasal dari pengguna. Kelemahan ini menyebabkan adanya serangan-serangan terhadap aplikasi web seperti SQL Injection, Cross Scripting (XSS), buffer overflow. 2. Broken Authentication Dalam keamanan komputer autentikasi adalah proses untuk memverifikasi indentitas digital dari pengirim dalam berkomunikasi. Kelemahan dalam kategori ini adalah berbagai cacat aplikasi dalam mekanisme login, seorang penyerang dapat dengan mudahnya untuk menebak password yang lemah, melancarkan serangan brute force, dan melewati login. 3. Broken Access control / Authority Vulnerability Dalam keamanan komputer, otorisasi adalah proses setelah autentikasi, untuk memverifikasi hak akses pengguna terhadap data. Dalam kategori kelemahan Universitas Sumatera Utara 10 ini terjadi karena kegagalan aplikasi untuk melindungi akses ke data, sehingga memungkinkan penyerang untuk melihat data sensitif pengguna lain yang dimiliki server atau melakukan tindakan istimewa. 4. Information leakage / Error Handling Vulnerability Aspek penting dari pengembangan aplikasi yang aman adalah mencegah kebocoran informasi. Dalam kategori kelemahan ini, aplikasi membocorkan informasi sensitif yang berguna untuk penyerang dalam mengembangkan serangan selanjutnya terhadap aplikasi melalui pesan kesalahan. Aplikasi gagal karena menyajikan informasi penting ketika terjadi error. 5. Session Management Vulnerability Salah satu inti dari aplikasi web adalah mekanisme untuk mengontrol dan memanajemen status / keadaan pengguna ketika berinteraksi dengan aplikasi. Misalnya saat login bagaimana otentifikasi pengguna dilakukan dan bagaimana yang terjadi terhadap pengguna ketika mereka log out. Kelemahan dalam kategori ini berarti kegagalan aplikasi sehingga dapat digunakan pengguna dalam konteks tingkatan pengguna dan hak istimewa. 2.2.2 Celah Keamanan Pada Aplikasi Mobile Celah keamanan pada aplikasi mobile adalah suatu celah yang terdapat pada teknologi yang ada disisi teknologi yang digunakan klien ataupun server pendukung, yang bisa menjadi jalan penyerang untuk mengetahui informasi tentang pengguna. Ada beberapa resiko pada aplikasi mobile yang menjadi sebuah celah keamanan (www.owasp.org) : 1. Weak Server Side Controls 2. Insecure Data Storage 3. Insufficient Transport Layer Protection 4. Unintended Data Leakage 5. Poor Authorization and Authentication 6. Broken Cryptography 7. Client Side Injection 8. Security Decisions Via Untrusted Inputs 9. Improper Session Handling 10. Lack of Binary Protections Universitas Sumatera Utara 11 2.3 Aplikasi dan Keamanan Aplikasi Aplikasi berasal dari kata application yang bermakna penerapan, lamaran dan penggunaan. Secara garis besar, aplikasi adalah program yang siap digunakan untuk menjalankan suatu fungsi tertentu untuk pengguna. Aplikasi dapat digolongkan menjadi beberapa kelas, antara lain: 1. Enterprise Digunakan untuk organisasi (perusahaan) yang cukup besar dengan maksud menghubungkan aliran data dan kebutuhan informasi antar bagian 2. Enterprise – SupPort Sebagai aplikasi pendukung dari Enterprise. 3. Individual Worker Sebagai aplikasi yang biasa digunakan untuk mengolah/edit data oleh tiap individu. 4. Aplikasi Akses Konten Adalah aplikasi yang digunakan oleh individu (hanya) untuk mengakses konten tanpa kemampuan untuk mengolah atau mengedit datanya melainkan hanya melakukan kustomisasi terbatas. 5. Aplikasi Pendidikan Biasanya berbentuk simulasi dan mengandung konten yang spesifik untuk pembelajaran. 6. Aplikasi Simulasi Biasa digunakan untuk melakukan simulasi penelitian, pengembangan dan lain-lain. 7. Aplikasi Pengembangan Media Berfungsi untuk mengolah/mengembangkan media biasanya untuk kepentingan komersial, hiburan dan pendidikan. 8. Aplikasi Mekanika dan Produk Dibuat sebagai pelaksana/pengolah data yang spesifik untuk kebutuhan tertentu. Universitas Sumatera Utara 12 2.3.1 Aplikasi Web Aplikasi web adalah suatu aplikasi berbasis web yang diakses menggunakan penjelajah web (browser) melalui suatu jaringan seperti internet atau intranet. Pada dasarnya aplikasi web adalah sebuah repositori informasi yang berisi dokumen statis. Aplikasi web dapat dibagi menjadi dua jenis yaitu aplikasi web statis dan dinamis. Web statis dibentuk dengan menggunakan HTML. Kekurangan web statis terletak pada pemelihara program secara terus-menerus. Dimana saat informasi di update, maka program pun perlu diubah. Web dinamis adalah pengembangan dari web statis, dimana saat dilakukan perubahan informasi, tidak perlu merubah program tetapi melalui perubahan data. Arsitektur aplikasi web meliputi klien, web server, middleware dan basis data. Saat klien berinteraksi melalui penjelajah web (browser) dengan web server. Secara internal, web server berkomunikasi dengan middleware dan middleware yang berkomunikasi dengan basis data. Pada web dinamis terjadi tambahan proses pembentukan halaman yaitu terjadinya pemrosesan di server untuk menerjemahkan kode PHP menjadi kode HTML, kemudian kode HTML yang telah diterjemahkan oleh mesin PHP lah yang akan diterima oleh pemakai (Abdul Kadir, 2009). 2.3.2 Aplikasi mobile Aplikasi mobile adalah sebuah aplikasi yang memungkinkan untuk melakukan mobilitas dengan menggunakan perlengkapan seperti PDA (Personal Digital Assistant), telepon seluler atau Handphone. Dengan menggunakan aplikasi mobile, Anda dapat dengan mudah melakukan berbagai macam aktifitas mulai dari hiburan, berjualan, belajar, mengerjakan pekerjaan kantor, browsing dan lain sebagainya. Pemanfaatan aplikasi mobile untuk hiburan paling banyak digemari oleh hampir 70% pengguna telepon seluler, karena dengan memanfaatkan adanya fitur game, music player, sampai video player membuat kita menjadi semakin mudah menikmati hiburan kapan saja dan dimanapun Universitas Sumatera Utara 13 2.3.3 Keamanan Aplikasi Menurut (Garfinkel, 2001), keamanan aplikasi adalah serangkaian prosedur, praktek, dan teknologi untuk melindungi web server, pengguna web, dan organisasi sekitarnya. Keamanan melindungi terhadap perilaku tak terduga. Keamanan aplikasi telah sering dianggap oleh praktisi sebagai kunci kerberhasilan atau kegagalan vendor yang terkait dengannya. Sering developer kesulitan untuk menerapkan kebijakan mengenai keamanan di dalam aplikasi yang mereka bangun. Di samping karena banyaknya faktor keamanan yang harus diterapkan dengan baik dan benar untuk mencegah orang yang tidak berhak mengakses sebuah aplikasi, juga karena kurangnya pengetahuan mengenai fitur keamanan apa saja yang harus diterapkan di seluruh bagian dari aplikasi tersebut. Apalagi jika harus menerapkannya secara komprehensif (tidak boleh sebagian saja). Keamanan aplikasi melindungi pengguna dari resiko penipuan, hacking dan phising, sehingga meningkatkan kepercayaan konsumen (Chan et all, 2013). Dalam pengamanannya, ada beberapa hal yang dilakukan sebagai access control terhadap web ataupun mobile, seperti : melakukan pembatasan akses terhadap web sehingga hanya alamat ip yang terdapat yang dapat mengaksesnya, melakukan pembatasan terhadap user (user yang terdapat dalam sebuah file dengan password yang dimiliki dapat mengakses) dan yang paling umum digunakan oleh perusahaan-perusahaan besar seperti perbankan, korporasi dan lainnya yaitu SSL (Secure Sockets Layer). 2.4 SSL/TLS dan OpenSSL 2.4.1 SSL/TLS SSL (Secure Sockets Layer) adalah standar keamanan yang melakukan proses enkripsi antara server dan client. Atau mail server dan mail client. TLS (Transport Secure Layer) adalah lanjutan dari SSL. SSL/TLS memungkinkan berisi informasi sensitif seperti nomor kartu kredit, nomor jaminan sosial, dan login untuk ditransmisikan dengan aman. Biasanya, data yang dikirim antara browser dan server dalam bentuk plain-text (teks biasa) sehingga rentan terhadap penyadapan. Jika seorang dapat mencegat semua data yang dikirimkan browser ke webserver, maka mereka dapat melihatnya dan menggunakan informasi tersebut. Lebih spesifik lagi, SSL dan TLS Universitas Sumatera Utara 14 adalah sebuah protokol keamanan. Protokol menggambarkan bagaimana seharusnya sebuah algoritma digunakan dan dalam hal ini protokol menentukan variabel enkripsi yang akan digunakan (digicert.com). Enkripsi yang digunakan di SSL/TLS menggunakan enkripsi asimetris, suatu enkripsi yang menggunakan private key dan public key. Perbedaan antara SSL dan TLS sangatlah halus dan sangat teknis, tapi sistem TLS ini lebih baru dan lebih halus. Keamanan versi SSL 3.0, sebanding dengan TLS 1.0, tapi TLS 1.1 dan 1.2 mampu memberikan keamanan yang sangat tajam. Meski begitu, dua metode ini sangat mirip. Pengguna dapat mengakses situs web yang dijamin dengan SSL dan TLS melalui sistem yang disebut Hypertext Transfer Protocol Secure (HTTPS). SSL dan TLS sama-sama bertujuan untuk menjamin kerahasiaan, kesatuan dan keaslian informasi yang terkait. Untuk menjaga informasi, SSL dan TLS menggunakan kriptografi. Sedangkan untuk menjaga kesatuan informasi dimungkinkan dengan menggunakan digital signature (tanda tangan digital). Keaslian informasi dijamin dengan adanya sebuah sertifikat. 1. Algoritma Kriptografi Kriptografi adalah ilmu pengetahuan seni untuk menjaga pesan atau informasi agar tetap aman dari pihak-pihak yang tidak dikehendaki. Untuk menjaga keamanan data, kriptografi melakukan proses penyandian informasi yang disebut dengan enkripsi. Dimana proses enkripsi bertujuan untuk menyandikan informasi berupa plainteks kedalam bentuk chiperteks. Proses pengambilan informasi dalam bentuk cipherteks ke dalam plaintext disebut dengan proses deskripsi. Proses enkripsi dan deskripsi menggunakan algoritma (cipher) dan sebuah kunci. Semakin baik algoritma yang digunakan, maka semakin sulit bagi orang yang tidak mengetahui kunci rahasia untuk dalam memperoleh dan mengetahui informasi yang disandikan. Berdasarkan jenis kunci yang digunakan, algoritma kriptografi ada 2 jenis : 1. Kriptografi simetris Kriptografi simetris menggunakan kunci yang sama saat proses enkripsi dan deskripsi. Sehingga, dinamakan dengan single-key algorithm. Universitas Sumatera Utara 15 2. Kriptografi Asimetris Kriptografi asimetris menggunakan kunci yang berbeda saat proses enkripsi dan deskripsi. Sehingga, asimetris lebih aman untuk digunakan. Karena, pihak-pihak lain harus mengetahui 2 kunci yang digunakan. 2. Digital Signature (Tanda Tangan Digital) Dalam memastikan kesatuan informasi yang dikirimkan dalam setiap pertukaran informasi dalam SSL dilengkapi dengan adanya sebuah digital signature. Digital signature memiliki fungsi sebagai penanda pada data yang memastikan bhwa data tersebut adalah data yang sebenarnya. Digital signature berupa informasi yang melalui proses enkripsi dengan kunci umum menggunakan fungsi hash. Hash berfungsi mengubah masukan menjadi sebuah untaian karakter yang panjangnya tetap dan tertentu. Keluaran dari fungsi hash disebut nilai hash. Contohnya belanja online, informasi yang hendak akan dikirim oleh seorang pembeli diubah dengan fungsi hash sehingga menjadi untaian karakter yang disebut dengan message digest. Message digest kemudian akan dienkripsi oleh kunci publik menjadi digital signature. Untuk dapat membuka digital signature dibutuhkan kunci privat. Bila data telah diubah maka digital signature juga telah berubah sehingga kunci privat yang ada tidak akan bisa membukanya. Sehingga, keaslian data dapat terjamin dari perubahan-perubahan yang dilakukan pihak luar. 3. Sertifikasi Dalam hal memastikan siapa saja yang terlibat dalam pertukaran informasi lewat internet, SSL menggunakan sertifikat digital untuk mengotentikasi (memastikan indentitas) server. Otentifikasi pengunjung situs tidak harus dilakukan (optional). Sehingga dengan sertifikat ini maka dapat terhindar dari pihak yang mengaku sebagai server dengan kunci yang salah. SSL menggunakan sertifikat X.509 untuk menvalidasi identitas. Sertifikat mengandung informasi dari pihak yang terkait, termasuk kunci publik dan nama. Universitas Sumatera Utara 16 SSL bekerja melalui empat layer protocol (Record Layer, ChangeChiperSpec protokol, Alert Protokol, dan Handshake Protokol) berfungsi mengenkapsulasi semua komunikasi antara komputer client dengan server sehingga bisa terjalin koneksi yang aman (McKinley, 2015). 1. Record Layer Record layer berupa layer yang melakukan format terhadap layer lainnya yaitu ChangeChiperSpec Protocol, Alert Protocol, Handshake Protocol dan application protokol messages. Format tersebut membentuk sebuah header untuk tiap pesan dan hash yang dikirim. Header mempunyai nilai 5 byte, yang berisi protocol definition (1 byte), protocol Version (2 bytes), dan Length (2 bytes). 2. ChangeChiperSpec Protocol Layer ChangeCipherSpec adalah suatu pesan yang memberi sinyal untuk memulai komunikasi yang aman antara client dan server. Meskipun protokol ini menggunakan format record layer, layer ini sebenarnya hanya sebesar 1 byte. 3. Alert Protocol Protokol ini mengirimkan error, masalah, ataupun warning mengenai koneksi antara klien dan server. Layer ini terbentuk dari dua field yaitu severity level dan alert description. Severity Level mengirim pesan dengan nilai “1” atau “2”, tergantung pada level concern-nya. Pesan dengan nilai “1” berarti sebuah peringatan agar klien dan server memutus session yang telah mereka lakukan dan reconnect lagi menggunakan handshake baru. Sedangkan nilai “2” berarti sebuah fatal alert message dan mengharuskan kedua belah pihak untuk mengakhiri session mereka. Kemudian field alert description yang bertugas mendeskripsikan secara spesifik error yang menyebabkan alert message tersebut keluar. 4. Handshake Protocol Handshake protocol adalah proses pengiriman pesan secara bolak-balik dan terus-menerus antara klien dan server untuk memulai sebuah komunikasi yang aman. Terdapat beberapa tahap dalam proses handshake ini yaitu: ClientHello, ServerHello, ServerKeyExChange, ServerHelloDone, ClientKeyExChange, ChangeCipherSpec, Finished, ChangeCipherSpec, Finished. Universitas Sumatera Utara 17 TLS merupakan penerus dari SSL. Namun pada pengembangannya, TLS menerapkan dua level protokol pada kinerja untuk lebih meningkatkan keamanan (McKinley, 2015) : 1. TLS Record Protocol TLS record protocol berfungsi untuk melakukan koneksi dan negoisasi yang privat dan handal antara klien dan server. Meski record protocol bisa digunakan tanpa enkripsi, namun protokol ini tetap menggunakan kunci kriptografi simetris (symmetric cryptography Keys) untuk memastikan privasi keamanan koneksi. Koneksi ini diamankan melalui pemakaian fungsi hash yang dihasilkan oleh Message Authentication Code. 2. TLS Handshake Protokol TLS Handshake protocol memberikan izin untuk mengautentikasi sebuah komunikasi untuk memulai koneksi antara klien dan server. Protokol ini mengijinkan klien dan server untuk saling berkomunikasi dengan bahasa yang sama dan mengijinkan kedua belah pihak untuk menyetujui sebuah algoritma enkripsi dan kunci enkripsi terlebih dahulu sebelum protokol aplikasi memulai pengiriman data. Jalanya proses handshake pada TLS ini sama dengan proses yang terjadi pada SSL. TLS menyediakan autentikasi ke server dan juga secara opsional ke klien. Meskipun begitu, ada beberapa perubahan yang terjadi pada proses handshake tersebut. 2.4.2 OpenSSL Menurut www.openssl.org, OpenSSL adalah proyek open source yang menyediakan layanan yang kuat, commercial-grade, dan toolkit dengan fitur lengkap untuk Transport Layer Security (TLS) dan Secure Socket Layer (SSL) protokol. OpenSSL juga merupakan sebuah library kriptografi untuk tujuan yang sama. OpenSSL toolkit ini di bawah lisensi Apache, yang pada dasarnya berarti bahwa anda bebas untuk mendapatkan dan menggunakannya untuk tujuan komersial dan non-komersial dan harus tunduk pada beberapa kondisi lisensi sederhana. OpenSSL memberikan layanan untuk menjaga keamanan komunikasi dari pihak yang tidak diinginkan. Universitas Sumatera Utara 18 2.5 Socket Socket adalah titik komunikasi dari lalu lintas komunikasi antar proses di dalam sebuah jaringan komputer. Hampir semua komunikasi antar komputer sekarang berdasarkan protokol internet, oleh karena itu hampir semua socket di jaringan komputer adalah Socket Internet. Adapun tujuan utama dari sebuah socket adalah untuk dapat menjembatani komunikasi yang terjadi antara dua buah program yang dijalankan pada mesin yang sama ataupun berbeda. Hampir semua sistem operasi menyediakan application programming interface (API) yang memungkinkan sebuah aplikasi komputer mengkontrol dan menggunakan socket jaringan komputer. API socket internet biasanya berdasarkan pada standar berkeley sockets. Sebuah alamat socket terdiri atas kombinasi sebuah alamat ip dan sebuah nomor port, mirip seperti sebuah koneksi telpon yang memiliki nomer telpon dan nomor ekstensinya. Berdasarkan alamat ini, socket internet mengirim paket data yang masuk ke sebuah proses atau thread aplikasi tujuan. Socket mampu menangani banyak klien sekaligus (multiple clients). Ada 4 jenis socket yang sering digunakan user (Tutorials point,2015) . 1. Stream Socket Stream Socket digunakan untuk komunikasi 2 arah dan menggunakan protokol TCP (Transmission Control Protocol). Jika salah satu mengirim 3 item melalui stream socket “A,B,C” dan sebaliknya penerima juga akan mengirimkan data yang sama “A,B,C”. Namun, jika data itu bersifat tidak mungkin, maka pengirim akan menerima error. 2. Datagram Sockets Datagram Socket dalam melakukan proses interaksi antara client-server tidak harus selalu terhubung terus-menerus (connectionless). Klien Dapat mengirimkan data ke server, namun data tersebut ada kemungkinan sampai ke server atau tidak. Untuk itu client menunggu sinyal „error free‟ dari server. Jika client tidak menerima sinyal „error free‟ dalam suatu kurun waktu, maka client akan mengirimkan lagi data tersebut. Datagram Socket menggunakan UDP (User Datagram Protocol). Universitas Sumatera Utara 19 3. Raw Sockets Raw Socket digunakan untuk melakukan pengiriman pesan ICMP (internet control message protocol) pada layar internet/ip. 4. Sequenced Packet Sockets Sequenced packet sockets disediakan hanya untuk bagian dari Network Systems (NS) dan juga digunakan untuk aplikasi NS. Sequenced packet sockets mengizinkan pengguna untuk memanipulasi Sequence Packet Protocol (SPP) atau Internet Datagram Protocol (IDP). 2.6 Android Menurut Safaat Nazruddin (2011) Android adalah sistem operasi untuk perangkat mobile berbasis Linux. Android menyediakan platform yang bersifat open source bagi para pengembang untuk menciptakan sebuah aplikasi. Awalnya, Google Inc mengakuisi Android Inc. Yang mengembangkan software untuk ponsel yang berada di Palo Alto, California Amerika Serikat. Untuk pengembangannya, dibentuklah Open Handset Alliance, yaitu konsorsium dari 34 perusahaan hardware, software, dan telekomunikasi, termasuk Google, HTC, Intel, Motorola, Qualcomm, T-Mobile, dan Nvidia. Telepon pertama yang memakai sistem operasi Android adalah HTC Dream, yang dirilis pada 22 Oktober 2008. Pada penghujung tahun 2009 diperkirakan di dunia ini paling sedikit terdapat 18 jenis. Dari segi arsitektur sistem, Android merupakan sekumpulan framework dan virtual machine yang berjalan di atas kernel linux. Virtual machine Android bernama Dalvik Virtual Machine (DVM), engine ini berfungsi untuk menginterpretasikan dan menghubungkan seluruh kode mesin yang digunakan oleh setiap aplikasi dengan kernel linux. Sementara untuk framework aplikasi sebagian besar dikembangkan oleh google dan sebagian yang lain dikembangkan oleh pihak ketiga (developer). Menurut King C, Ableson (2011) Android memiliki empat komponen : a. Activity Setiap aplikasi mungkin mempunyai user interface (UI), namun tidak harus memiliki satu UI. Jika sebuah aplikasi memiliki UI, setidaknya memiliki satu Activity. Setiap activity diimplementasikan sebagai satu Universitas Sumatera Utara 20 class yang memperluas dasar kelas activity. Class akan menampilkan user interface yang terdiri dari views dan merespon kejadian. Kebanyakan aplikasi terdiri dari beberapa layar. Sebagai contoh, sebuah aplikasi panggilan telepon mungkin memiliki satu layar yang menunjukkan daftar kontak untuk memanggil, layar kedua untuk menyimpan nomor telepon dan layar lain untuk memeriksa pesan masuk atau keluar. Masing-masing layar akan diimplementasikan sebagai suatu activity. Berpindah ke layar lain berarti memulai aktivity baru. b. Broadcast Receiver Broadcast receiver adalah komponen yang merespon terhadap siaran (broadcast) yang dikeluarkan oleh sistem. Seperti, broadcast memberitahukan bahwa layar akan mati, baterai lemah, pesan masuk. Meskipun broadcast receiver tidak menampilkan user interface, broadcast receiver bisa membuat notifikasi di status bar untuk memberitahukan user sedang terjadi broadcast. Secara umum, broadcast receiver hanyalah sebuah "gerbang" kepada komponen lain dan ditujukan untuk melakukan pekerjaan yang sangat minimal. c. Service Jika sebuah aplikasi memiliki sebuah siklus yang panjang, maka hal terbaik adalah meletakkannya dalam sebuah layanan. Service melakukan sinkronisasi data dibalik layar. Contohnya: saat sebuah service mendownload dari internet tanpa menganggu interaksi user dengan aktivitas yang lain. d. Content provider Jika sebuah aplikasi mengelola data dan butuh untuk mengekspos data ke aplikasi lain yang ada dalam lingkungan android, anda harus mempertimbangkan penyedia konten (content provider). Sebuah content provider mengatur sekumpulan data aplikasi yang terbagi (shared). Kita bisa menyimpan data di filesystem, sebuah database SQLite, di web, atau di metode penyimpanan data lainnya yang bisa diakses oleh aplikasi kita Universitas Sumatera Utara 21 2.7 Kelemahan Pada SSL/TLS 2.7.1 Heartbleed Bug (Heartbleed Vulnerability ) Heartbleed Vulnerability adalah sebuah celah keamanan paling fatal, yang secara resmi diidentifikasi oleh CVE-2014-0160. Kelemahan ini memungkinkan seseorang untuk mencuri informasi yang dilindungi dengan enkripsi SSL/ TLS. SSL/TSL yaitu sebuah aplikasi untuk mengamankan dan mengenkripsi teks (seperti username dan password) yang dikirim melalui browser. SSL/TLS menyediakan keamanan komunikasi dan privasi melalui internet untuk aplikasi seperti web, email, instant messaging (IM) dan beberapa jaringan pribadi virtual (VPN). Heartbeat adalah salah satu fitur OpenSSL yang diperkenalkan tahun 2012. Tujuan heartbeat adalah mengecek apakah komputer client masih terhubung ke sebuah server. Gambar 2.1 Pada gambar 2.1 menunjukkan bagaimana seharusnya client dan server terhubung dan bagaimana server seharusnya menanggapi request dari klien. Namun, fasilitas heartbeat ini memiliki kelemahan karena server terlalu percaya dengan komputer pengirim (client). Seperti gambar di bawah, komputer hacker cuma mengirimkan payload = test namun meminta respon sebanyak 30 karakter. Gambar 2.2 Pada gambar 2.2, server ternyata tidak mengecek kalau test hanya memiliki 4 karakter. Server langsung mengirimkan semua karakter yang tersimpan di memorinya untuk Universitas Sumatera Utara 22 memenuhi permintaan 30 karakter. 30 karakter hanyalah ilustrasi, sang hacker bisa meminta sampai 64.000 karakter. Kelemahan yang terdapat pada aplikasi heartbeat inilah yang disebut dengan Heartbleed bug, dimana dengan adanya celah ini, memungkinkan setiap orang di internet untuk membaca memori dari sistem yang dilindungi OpenSSL dan membuat penyerang dapat mengamati komunikasi, mencuri data langsung dari layanan dan pengguna dan juga menyamar sebagai layanan dan pengguna. 2.7.2 Logjam Logjam adalah sebuah jenis celah keamanan yang memungkinkan seseorang dapat menyusup kedalam enkripsi sebagai pihak ketiga, dalam proses interaksi secara virtual dengan tujuan menyadap ataupun melihat dari pesan yang disampaikan pengirim ke penerima. Celah keamanan ini mengancam keamanan privasi data pengguna. Hacker dapat melakukan serangan dengan menginjeksikan diri ke komunikasi antara klien dan server MITM (Man-In-The-Middle). Serangan logjam mempengaruhi setiap server yang mendukung DHE_EXPORT cipher, dan mempengaruhi semua web browser yang sudah modern. 8,4% dari Top 1 Juta domain awalnya rentan. 2.7.3 CVE 2015-1793 Selama verifikasi sertifikat berlangsung, OpenSSL (mulai dari versi 1.0.1n dan 1.0.2b) akan mencoba untuk menemukan alternative certificate chain jika upaya pertama untuk membangun hubungan sertifikat gagal. Kesalahan dalam pegimplementasian logika, membuat seorang penyerang dapat menyebabkan pemeriksaan tertentu pada sertifikat yang tidak dipercaya untuk dilewatkan, seperti yang dilakukan CA (Certificate Authority), kelemahan ini memungkinkan penyerang untuk melewati sertifikat terpercaya seperti CA dan dalam masalah ini yang masuk adalah sertifikat tidak terpercaya. Jenis kelemahan ini termasuk MITM attack dan dapat menyebabkan aplikasi menerima SSL certificate yang tidak valid dan terpercaya seolah SSL certificate yang valid. Universitas Sumatera Utara 23 2.8 Pengujian Aplikasi 2.8.1 White-Box Testing White-Box testing adalah cara pengujian yang berfokus pada pengecekan terhadap detail perancangan dengan melihat ke dalam modul untuk meneliti kode-kode program yang ada, dan menganalisis apakah ada kesalahan atau tidak. Jika ada modul yang menghasilkan output yang tidak sesuai dengan proses bisnis yang dilakukan, maka baris-baris program, variabel, dan parameter yang terlibat pada unit tersebut akan dicek satu persatu dan diperbaiki, kemudian di-compile ulang. White-box testing bertujuan untuk mendapatkan program yang benar secara keseluruhan. White-box testing, perangkat dapat melakukan : 1. Memberikan jaminan bahwa semua jalur independen pada suatu modul telah digunakan paling tidak satu kali. 2. Menggunakan semua keputusan logis pada sisi true and false 3. Mengeksekusi semua loop pada batasan mereka dan pada batas operasional mereka. 4. Menggunakan struktur data internal untuk menjamin validitasnya. Proses Pengujian White-Box testing : 1. Untuk mengetahui cara kerja suatu perangkat lunak secara internal. 2. Untuk menjamin operasi-operasi internal sesuai dengan spesifikasi yang telah ditetapkan dengan menggunakan struktur dari prosedur yang dirancang. 2.8.2 Black-Box Testing Black-Box testing berfokus pada persyaratan fungsional perangkat lunak yang memungkinkan engineers untuk memperoleh set kondisi input yang sepenuhnya akan melaksanakan persyaratan fungsional untuk sebuah program (Pressman, 2010). Black Box Testing bukan merupakan alternatif dari pengujian White Box Testing. Sebaliknya, Black Box Testing adalah pendekatan komplementer yang mungkin untuk mengungkap kelas yang berbeda dari kesalahan daripada metode White Box Testing. Black-Box testing berusaha untuk menemukan kesalahan dalam kategori berikut: 1. Fungsi yang tidak benar atau fungsi yang hilang 2. Kesalahan antarmuka 3. Kesalahan dalam struktur data atau akses database eksternal Universitas Sumatera Utara 24 4. Kesalahan perilaku (behavior) atau kesalahan kinerja 5. Inisialisasi dan pemutusan kesalahan Tes ini dirancang untuk menjawab beberapa pertanyaan-pertanyaan berikut ini: 1. Bagaimana validitas fungsional diuji? 2. Bagaimana perilaku dan kinerja sistem diuji? 3. Apa kelas input akan membuat kasus uji yang baik? 4. Apakah sistem sensitive terhadap nilai input tertentu? 5. Bagaimana batas-batas kelas data yang terisolasi? 6. Kecepatan dan volume data seperti apa yang dapat ditolerir sistem? 7. Efek apakah yang akan menspesifikasikan kombinasi data dalam sistem operasi? 2.8.3 Gray-Box testing Gray-Box testing Adalah metode yang merupakan kombinasi dari Black-box testing dan White-box testing. Dalam pengujian Gray-box testing, struktur internal sebagian dikenal. Ini melibatkan akses ke internal struktur data dan algoritma untuk tujuan merancang uji kasus, tetapi pengujian pada pengguna atau tingkat Black box adalah tidak. Grey-box, berusaha menggabungkan kedua metode diatas, mengambil kelebihan keduanya, dan mengetahui kekurangan keduanya. Teknik verifikasi modern menerapkan kombinasi kedua metode untuk pengujian aplikasi. 2.9 Penelitian Terdahulu Penulis memaparkan beberapa metode yang telah digunakan pada penilitian sebelumnya untuk menguji keamanan aplikasi web dan aplikasi mobile. Seperti yang tercantum pada tabel 2.1, metode black-box digunakan untuk mengurangi kesalahan dalam mengeksploitasi celah keamanan dan juga untuk lebih meningkatkan kinerja aplikasi untuk menemukan halaman yang nanti digunakan untuk mendeteksi celah keamanan. Namun, peneliti menggunakan metode black-box testing untuk memastikan kinerja dan kekuatan dari sebuah teknologi yang digunakan untuk mengetahui kelemahan yang dapat ditimbulkan dari teknologi tersebut. Akrout et al. (2014), menggunakan metode black box untuk mengidentifikasi kelemahan aplikasi web dan mengelompokkan skenario serangan yang digunakan untuk aplikasi web tersebut. Metode black box ditawarkan untuk mengurangi number Universitas Sumatera Utara 25 of false positives dengan memberikan query dengan tujuan agar eksploitasi tentang celah keamanan berhasil. Dengan menggunakan metode black box, memungkinkan aplikasi untuk menemukan halaman baru pada web, yang mungkin berisi poin injeksi dan halaman yang rentan. Pada tahun 2014 Gujrathi, memberikan penjelasan secara rinci kerja dari Heartbleed bug dan bagaimana bug ini dapat mempengaruhi privasi dan integritas data. Jurnal ini menjelaskan bagaimana seharusnya heartbleed bekerja, dan bagaimana seorang hacker dapat memberikan sebuah script yang dapat mencuri data yang tersimpan dalam memori server. Gujrathi menjelaskan bagaimana seharusnya user memproteksi diri dari heartbleed bug. Pada tahun 2008 Suhina et al, mengusulkan sebuah pendekatan untuk menemukan celah keamanan pada aplikasi web dengan clustering halaman web. Metode yang digunakan bukan seperti teknik pencari kelemahan aplikasi web yang menganalis isi halaman web tetapi dengan menganalis struktur dari halaman web. Kinerja metode yang diusulkan yaitu menganalisis respon dari struktur halaman, dikelompokkan ke beberapa kategori berdasarkan strukturnya dan menemukan penyimpangan dari struktur standar halaman. J Bau et al. (2010), State of the Art: Automated Black-Box Web Application Vulnerability Testing, metode black box bertujuan untuk mendeteksi kelemahan dan menguji efektivitas sistem dalam mendeteksi celah kelemahan seperti Cross-Site Scripting, SQL Injection, dan bentuk lain dari Cross-Channel Scripting. J Bau et al menyatakan bahwa script atau kode injeksi berhasil disimpan, yang dikemudian akan di deteksi lagi. Pada tahun 2014 Stephan, menjelaskan bahwa heartbleed bug adalah kelemahan yang terletak pada teknologi heartbeat yang terdapat pada OpenSSL, dimana terjadi sebuah kesalahan dari server dalam menangani request dari client. Dijelaskan juga bagaimana seharusnya server dan user menangani bug heartbleed. Pada tahun 2014 Rick, menjelaskan apa itu teknologi OpenSSL heartbeat dengan kelemahan didalamnya yang disebut dengan heartbleed dan juga versi OpenSSL yang rentan terhadap heartbleed. NASA berkolaborasi dengan Linux, Google, IBM, Microsoft, etc untuk menyelesaikan krisis yang terdapat dalam OpenSSL Universitas Sumatera Utara 26 Tabel 2.1 Penelitian Terdahulu Peneliti Tahun Judul Akrout et al 2014 An Automated Black Box Approach for Web Vulnerability Identification and Attack Scenario Generation Gujrathi 2014 Heartbleed Bug: AnOpenSSL Heartbeat Vulnerability J Bau et al 2010 State of the Art: Automated Black-Box Web Application Vulnerability Testing Suhina et al 2008 Detecting Vulnerabilities in Web Applications by Clustering Web Pages Stephan Wiesand 2014 The Heartbleed Vulnerability in OpenSSL Rick Hess 2014 NASA IV&V and the Heartbleed Vulnerability Universitas Sumatera Utara