BAB II LANDASAN TEORI Landasan teori ini akan digunakan

advertisement
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
Download