• Tidak ada hasil yang ditemukan

Identifikasi Layanan Keamanan

Masalah keamanan terkait pengembangan sistem ini adalah tentang penipuan dengan SMS. Penipuan dilakukan dengan melakukan pemalsuan identitas pengirim. Pengirim mengaku sebagai orang yang dikenal korban lalu melakukan penipuan. Masalah lainnya adalah modifikasi isi pesan yang dikirim. Modifikasi pesan bisa terjadi jika pesan berhasil disadap lalu diubah untuk kemudian dikirim kembali.

Masalah pemalsuan terkait dengan autentikasi pesan. Masalah modifikasi terkait integritas data. Layanan penandaan digital pada SMS didesain untuk dapat memberikan layanan autentikasi dan integritas data untuk mengatasi masalah penipuan. Layanan ini juga dapat memberikan fungsi anti penyangkalan. Layanan anti penyangkalan memungkinkan pihak pengirim tidak dapat menyangkal sebagai pemilik pesan yang diterima oleh penerima.

Penentuan Kebijakan

Kebijakan keamanan yang diterapkan adalah sebagai berikut:

1 User policy

Terdapat dua pengguna yaitu pengirim dan penerima. Pengirim bertindak juga sebagai penanda. Hak dari pengirim adalah:

 Membangkitkan pasangan kunci RSA.

 Memberikan penandaan pada SMS yang dikirimkan.

Penerima bertindak juga sebagai pihak yang melakukan verifikasi. Hak dari penerima adalah:

 Menerima kunci publik dari pasangan kunci pribadi pembentuk penandaan.

 Melakukan verifikasi penandaan dan memeriksa status verifikasi

2 IT policy

Pasangan kunci RSA akan disimpan di media penyimpanan pada telepon seluler. Pengirim sebagai pihak penanda akan menyimpan kedua pasangan kunci RSA, kunci publik dan kunci pribadi. Penerima sebagai pihak yang melakukan verifikasi hanya meyimpan kunci publik.

3 General policy

Kebijakan lain yang diterapkan adalah sebagai berikut:

 Pengirim tidak diijinkan untuk menyebarkan atau mempertukarkan kunci pribadi yang dimilikinya.

 Lokasi penyimpanan pasangan kunci RSA tidak boleh diubah.

 Nama file pasangan kunci RSA tidak boleh diubah.

 Jika pengirim membangkitkan kunci lagi, kunci yang lama akan dianggap tidak valid dan akan ditulis-ulang dengan kunci yang baru.

 Pengirim diasumsikan memiliki kunci yang unik untuk dirinya sendiri.

Spesifikasi

Aplikasi penandaan digital pada SMS yang dikembangkan dapat dibagi menjadi 3 bagian. Ketiga bagian itu adalah pembangkitan pasangan kunci, pembentukan penandaan pada SMS yang dikirimkan, dan verifikasi penandaan. Pembangkitan pasangan kunci dilakukan dengan algoritme RSA. Penandaan yang digunakan didapat dengan menggunakan teknik MD5-RSA. Pengiriman SMS dilakukan melalui jaringan telekomunikasi yang ada. SMS dapat dikirimkan ke semua operator dengan tarif yang sesuai dengan peraturan yang berlaku. SMS yang terdapat penandaan dapat diverifikasi oleh aplikasi penerima. Hasil verifikasi akan

menunjukkan apakah SMS tersebut valid atau tidak. Hasil dari verifikasi penandaan dapat dijadikan sebagai cara untuk menjamin autentikasi SMS dan integritas SMS.

Desain

Tahapan desain merupakan proses yang dilakukan untuk merancang pembuatan sistem. Aplikasi yang dikembangkan terdiri atas tiga bagian. Ketiga bagian itu adalah pembangkitan pasangan kunci RSA, penyertaan penandaan pada SMS, dan verifikasi penandaan pada SMS. Ketiga bagian tersebut mengikuti protokol yang ditunjukkan pada Gambar 5.

Mulai

Pembangkitan Pasangan Kunci RSA

Penyertaan penandaan digital pada SMS

Verifikasi penandaan digital pada SMS

Selesai

Gambar 5 Alur protokol.

Proses pembangkitan pasangan kunci mengikuti algoritme RSA yang telah ada. Mulanya, dibangkitkan dua bilangan prima p dan q. Hitung hasil perkaliannya dan didapat nilai n = pq. Pilih sebuah bilangan e yang didapat dari gcd (e, ϕ) = 1. Nilai ϕ didapat dari ϕ = (p – 1)(q – 1). Hitung nilai d = e-1

mod ϕ. Berikutnya, dihitung nilai Chinese Remainder Theorem (CRT). Nilai ini terdiri atas dP = d mod (p-1), dQ = d mod (q-1), dan qInv = q-1 mod p. Nilai-nilai yang sudah didapat akan menjadi parameter kunci publik dan kunci pribadi. Nilai-nilai ini kemudian ditulis dan disimpan dalam media penyimpanan. Pembangkitan pasangan kunci RSA ditunjukkan pada Gambar 6.

Desain proses pembentukan penandaan ditunjukkan pada Gambar 7. Tahap-tahap yang dilakukan pada proses pembentukan penandaan adalah sebagai berikut:

1 Masukan adalah SMS yang akan dikirim. Pada tahap ini, pembangkitan pasangan kunci RSA sudah dilakukan dan disimpan di dalam media penyimpanan telepon seluler.

Mulai Nilai p dan q n = p x q Φ = (p – 1)(q – 1) gcd(e, ϕ) = 1 d = e-1 mod ϕ dP = d mod (p-1) dQ = d mod (q-1) qInv = q-1 mod p Menulis parameter ke media penyimpanan Selesai

Gambar 6 Proses pembangkitan pasangan kunci.

2 Pada SMS dilakukan penghitungan nilai hash menggunakan fungsi MD5. Nilai hash ini dikenal juga dengan digest.

3 Digest yang didapat kemudian dienkripsi menggunakan parameter kunci pribadi yang didapat dari pembangkitan pasangan kunci RSA.

4 Hasil enkripsi digest dijadikan penandaan untuk SMS yang akan dikirim. Penandaan digital ikut disertakan dengan SMS untuk dikirim ke penerima.

Parameter kunci publik yang didapat dari pembangkitan pasangan kunci RSA akan digunakan untuk melakukan dekripsi di pihak penerima. Parameter kunci publik diasumsikan sudah dikirim dan diterima oleh pihak penerima pesan.

Desain proses verifikasi penandaan ditunjukkan pada Gambar 8. Tahap-tahap verifikasi penandaan adalah sebagai berikut: 1 Masukan pada penerima adalah SMS yang

telah terdapat penandaan dan kunci publik yang didapat dari proses pembangkitan pasangan kunci RSA. Penanda diekstraksi terlebih dahulu dari SMS. Ekstraksi ini akan memisahkan SMS dengan penandaan. 2 Penandaan didekripsi menggunakan

parameter kunci publik. Dari hasil dekripsi ini akan didapat digest dari pengirim. 3 Pada SMS yang diterima juga dilakukan

penghitungan nilai hash untuk mendapat digest SMS di sisi penerima.

4 Digest yang didapat penerima kemudian dibandingkan dengan digest yang didapat dari pengirim. Bila digest cocok, dapat

Mulai SMS Fungsi MD5 Digest Enkripsi Parameter Kunci Pribadi Penyertaan penandaan Selesai

Gambar 7 Proses pembentukan penandaan. dijamin SMS tersebut valid dan pengirim juga berhasil diverifikasi.

5 Bila digest yang dibandingkan tidak cocok, SMS tersebut tidak valid. Ada kemungkinan kalau kunci yang digunakan untuk dekripsi tidak cocok atau terjadi pengubahan pesan oleh pihak-pihak yang tidak diinginkan.

Mulai SMS Fungsi MD5 Digest SMS Parameter Kunci Publik Dekripsi Sama ? SMS Valid. Pengirim berhasil diverifikasi Ya SMS tidak valid Tidak Selesai Digest dari pengirim Ekstraksi penandaan Penandaan

Implementasi

Implementasi dilakukan sesuai dengan desain yang telah dibuat. Perangkat yang digunakan terdiri atas perangkat keras, perangkat lunak, dan perangkat uji.

Perangkat keras yang digunakan adalah sebagai berikut:

1 Processor AMD APU A6-3400 1.40 GHz. 2 RAM 8 GB (7.48 GB Usable).

3 Harddisk kapasitas 750 GB.

Perangkat lunak yang digunakan adalah sebagai berikut:

1 Sistem operasi Microsoft Windows 7 Ultimate 64 bit.

2 JDK 7 Update 1 32 bit. 3 Netbeans IDE 7.0.1.

4 Bouncy Castle lightweight cryptography API 1.46 untuk J2ME.

Perangkat uji untuk mencoba aplikasi ini adalah telepon seluler. Telepon seluler yang digunakan adalah Sony Ericsson W660i. Ponsel ini menggunakan sistem operasi proprietary milik Sony Ericsson. Perangkat uji lain adalah Nokia 300. Ponsel ini dilengkapi dengan processor berkecepatan 1 GHz dan layar sentuh. Ponsel ini menggunakan sistem operasi Nokia S40 milik Nokia. Kedua ponsel mendukung J2ME.

Pembangkitan pasangan kunci RSA dilakukan di awal dan hanya dilakukan sekali. Bila terjadi pembangkitan kunci lagi, kunci yang lama akan dianggap tidak valid. Kunci yang lama tersebut ditulis ulang dengan kunci yang baru. Kunci yang sudah dibentuk akan disimpan pada media penyimpanan telepon seluler. Pembangkitan pasangan kunci RSA ditunjukkan pada Gambar 9.

Gambar 9 Pembangkitan pasangan kunci RSA. Hasil dari pembangkitan pasangan kunci ini berupa nilai parameter modulus, pubExp, privExp, p, q, dP, dQ, dan qInv. Bouncy Castle tidak dapat langsung menyimpan kunci publik

dan kunci pribadi sehingga fungsi ini diganti dengan menyimpan nilai parameter-parameter tersebut (Yuan 2003). Nilai parameter-parameter tersebut ditunjukkan pada Lampiran 1. Source code untuk pembangkitan pasangan kunci RSA ditunjukkan pada Gambar 10.

BigInteger exp = new BigInteger("11", 16);

SecureRandom srand = new SecureRandom(); RSAKeyGenerationParameters params = new RSAKeyGenerationParameters(exp, srand, 1024, 80);

RSAKeyPairGenerator rsaKeyPairGen = new RSAKeyPairGenerator(); rsaKeyPairGen.init(params); AsymmetricCipherKeyPair keyPair = rsaKeyPairGen.generateKeyPair(); RSAPrivateCrtKeyParameters rsaPrivateKey = (RSAPrivateCrtKeyParameters) keyPair.getPrivate();

Gambar 10 Source code pembangkitan pasangan kunci RSA.

Parameter yang sudah disimpan dapat digunakan untuk pembangkitan penandaan dan verifikasi. Pada penandaan digital, enkripsi digest dilakukan oleh kunci pribadi. Kunci pribadi dibentuk oleh semua parameter yang disimpan (modulus, pubExp, privExp, p, q, dP, dQ, dan qInv). Aplikasi pengiriman SMS ditunjukkan pada Gambar 11.

Gambar 11 Aplikasi pengiriman SMS. Destination merupakan nomor tujuan pengiriman. Port merupakan nomor port spesifik yang digunakan untuk penerimaan SMS. Nomor port ini perlu dituliskan karena port default untuk menerima SMS ditutup dari pabrikan telepon seluler. Port default ini hanya bisa diakses oleh aplikasi SMS bawaan dari telepon seluler. Message merupakan bagian tempat menuliskan pesan yang akan dikirim. Proses pembentukan penandaan dilakukan setelah perintah pengiriman pesan (send) diberikan ke telepon seluler. Penandaan yang didapat masih dalam bentuk byte string. Bentuk ini dipenuhi dengan karakter yang tidak dikenali

telepon seluler. Penandaan akan di-encode dengan base64 untuk mendapatkan bentuk teksnya. Proses ini juga akan memperpendek penandaan. Pesan dikirim setelah penyertaan penandaan selesai dilakukan.

Source code pembentukan penandaan ditunjukkan pada Gambar 12. Source code untuk pengiriman pesan ditunjukkan pada Gambar 13.

private static byte[] getSignature(byte[] plain,

RSAPrivateCrtKeyParameters privateKey){ byte[] signatureByte = null;

try {

MD5Digest md5Engine = new MD5Digest(); RSAEngine rsaEngine = new RSAEngine(); PSSSigner signer = new

PSSSigner(rsaEngine, md5Engine, 64); signer.init(true, privateKey); signer.update(plain, 0, plain.length); signatureByte = signer.generateSignature(); }catch (org.bouncycastle.crypto.CryptoException ex){System.out.println("CryptoException error: "+ex);

} catch (DataLengthException ex)

{System.out.println("DataLengthException error: "+ex);

}

return signatureByte; }

Gambar 12 Source code pembentukan penandaan.

Thread thread = new Thread(new Runnable() {

public void run() {

MessageConnection msgConnection; try { msgConnection = (MessageConnection)Connector.open("sms:/ /"+destination+":" + port); TextMessage textMessage = (TextMessage)msgConnection.newMessage (MessageConnection.TEXT_MESSAGE); textMessage.setPayloadText(message+delim iter+sign); msgConnection.send(textMessage); Alert a = new Alert("Success!","Message sent successfully",

null,AlertType.INFO);

a.setTimeout(2000); display.setCurrent(a); msgConnection.close();

} catch (IOException ex)

{System.out.println("Send Message error "+ ex);

} } });

thread.start();

Gambar 13 Source code pengiriman SMS. Proses verifikasi penandaan dilakukan pada bagian penerima. Kunci publik yang digunakan untuk dekripsi dibentuk oleh parameter modulo dan pubExp. Kedua parameter ini harus berupa parameter yang sama dari bagian pengirim agar

hasil verifikasi benar (true). Aplikasi penerimaan SMS ditunjukkan pada Gambar 14.

Gambar 14 Aplikasi penerima SMS. Aplikasi ini tidak dapat menerima SMS secara otomatis karena tidak ada akses ke registry sistem. SMS baru dapat diterima jika perintah listen diberikan. Perintah listen akan menjalankan fungsi untuk mendengarkan port tertentu yang telah ditentukan. Port penerima ini harus sama dengan nomor port yang ditentukan pada pengirim. Saat SMS diterima, aplikasi ini akan memisahkan bagian pesan dengan bagian penandaan. Bagian pesan akan ditampilkan sementara bagian penandaan diverifikasi. Bagian penandaan ini sebelumnya di-decode terlebih dahulu dengan base64 untuk mendapatkan kembali bentuk byte string.

Source code untuk menerima SMS ditunjukkan pada Gambar 15. Source code untuk verifikasi penandaan ditunjukkan pada Gambar 16. public void notifyIncomingMessage(MessageConnection conn) { Message message; try { message = conn.receive(); senderAddress = message.getAddress(); formReceiver.append(senderAddress+"\n");

if (message instanceof TextMessage) { TextMessage tMessage = (TextMessage)message; String strMessage = ((TextMessage)tMessage).getPayloadText() ; split(strMessage); } else { formReceiver.append("Unknown Message received\n"); } } catch (InterruptedIOException e) {formReceiver.append("InterruptedIOExcep tion: "+e); } catch (IOException e) {formReceiver.append("IOException: "+e); }}

public boolean verifySignature(byte[] inputByte, byte[] signature,

RSAKeyParameters publicKey) {

MD5Digest md5Engine = new MD5Digest(); RSAEngine rsaEngine = new RSAEngine(); PSSSigner signer = new

PSSSigner(rsaEngine, md5Engine, 64); signer.init(false, publicKey); signer.update(inputByte, 0, inputByte.length); return signer.verifySignature(signature); }

Gambar 16 Source code verifikasi penandaan.

Pengujian

Pengujian awal dilakukan dengan cara pembangkitan pasangan kunci RSA. Ponsel Sony Ericsson W660i membutuhkan waktu hingga 4 menit untuk pembangkitan kunci. Ponsel Nokia 300 membutuhkan waktu yang jauh lebih singkat, sekitar 15 detik. Perbedaan waktu tersebut kemungkinan karena ponsel Nokia memiliki kemampuan processor yang lebih baik dari ponsel Sony Ericsson. Ponsel Nokia juga memiliki teknologi yang lebih baik. Waktu yang dibutuhkan untuk pembentukan penandaan dan verifikasi berjalan cepat. Lama pengiriman SMS bergantung pada kemampuan jaringan dan tidak ada perbedaan dengan pengiriman SMS biasa.

Pengujian fungsionalitas yang dilakukan terdiri atas 6 pengujian. Pengujian ditunjukkan pada Tabel 1.

Tabel 1 Pengujian fungsionalitas

Kasus Parameter kunci pada W660i Parameter kunci pada Nokia 300 Hasil verifikasi 1 Valid Valid (Pasangan dari W660i) True 2 Valid (Pasangan dari N300) Valid True 3 Valid (Milik sendiri) Valid (Milik sendiri) False

4 Valid Invalid False

5 Invalid Valid False

6 Invalid Invalid False

Pengujian pertama dan kedua merupakan pengujian yang memberikan verifikasi benar (true). Pada pengujian ini, ponsel penerima menyimpan parameter kunci publik yang sesuai dengan parameter kunci pribadi yang membentuk penandaan. Pengujian ketiga dilakukan dengan cara kedua ponsel memiliki kuncinya masing-masing. Pengujian keempat, kelima, dan keenam melibatkan parameter kunci Invalid. Maksud dari parameter kunci Invalid adalah ada satu atau lebih parameter

yang bukan pasangan parameter yang lainnya. Pasangan parameter invalid tidak menghalangi pembentukan penandaan.

Penandaan yang dihasilkan menjadi bagian dari SMS dan menghasilkan overhead sepanjang 172 karakter. Ini berarti penandaan tersebut sudah menghabiskan lebih dari satu bagian SMS. Overhead sepanjang itu kemungkinan berasal dari bentuk penandaan yang awalnya berupa byte string. Contoh SMS beserta overhead penandaan ditunjukkan pada Lampiran 2.

Pengujian kinerja dilakukan untuk mengetahui kecepatan pembentukan penandaan dan verifikasi. Pengujian ini dilakukan dengan bantuan stopwatch. Pengujian dengan stopwatch tentu menghasilkan bias antara penekanan tombol dengan waktu aslinya. Pengujian dilakukan tiga kali dan dihitung waktu rata-ratanya. Hasil pengujian kinerja pembentukan penandaan ditunjukkan pada Tabel 2.

Tabel 2 Kinerja pembentukan penandaan Panjang

SMS Sony Ericsson W660i Nokia 300 2 SMS 1.97 detik 1.37 detik 3 SMS 2.00 detik 1.40 detik 4 SMS 1.93 detik 1.30 detik

Hasil pengujian ini menunjukkan waktu pembentukan penandaan tidak dipengaruhi panjang pesan. Pengujian menunjukkan perbedaan waktu yang sangat kecil. Nokia 300 dengan teknologi yang lebih baik mampu menghasilkan penandaan dengan waktu yang lebih singkat.

Penghitungan waktu verifikasi dilakukan setelah pesan berhasil dikirim. Cara ini tentu menghasilkan bias yang diakibatkan waktu pengiriman. Bias pada pengujian ini menjadi semakin besar karena ditambah bias penggunaan stopwatch. Untuk memperkecil pengaruh kapasitas jaringan, digunakan produk yang sama dari satu operator. Hasil pengujian kinerja penerimaan SMS beserta verifikasi penandaan ditunjukkan pada Tabel 3.

Tabel 3 Kinerja penerimaan dan verifikasi Panjang

SMS Sony Ericsson W660i Nokia 300 2 SMS 4.03 detik 11.37 detik 3 SMS 3.53 detik 12.23 detik 4 SMS 3.63 detik 12.67 detik

Pada ponsel Sony Ericsson W660i, penerimaan dan verifikasi tidak terlalu dipengaruhi panjang pesan. Pengujian pada ponsel Nokia 300 menghasilkan waktu yang termasuk lama. Kemungkinan lamanya waktu

ini disebabkan oleh lamanya penerimaan pesan, bukan karena verifikasi. Lamanya penerimaan pesan ini kemungkinan karena adanya skema proteksi tertentu pada ponsel Nokia 300. Proteksi tersebut menghambat pesan yang masuk melalui aplikasi yang dikembangkan. Hasil pengujian kinerja ini secara lengkap ditunjukkan pada Lampiran 3.

File jar (Java Archive) yang didapat dari penggunaan library Bouncy Castle ini berukuran lebih besar dari file jar tanpa Bouncy Castle. Ini merupakan hal yang wajar karena ada tambahan library yang digunakan. Ukuran file jar sebelum tambahan library berkisar 4 KB sementara besar file jar sesudah tambahan library berkisar 25 KB. Ukuran file jar ini masih dalam tahap wajar karena ada proses obfuscating pada saat proses build application di Netbeans. Tanpa proses obfuscating, ukuran file dengan tambahan library akan membengkak hingga 1 MB. Proses obfuscating ini juga berfungsi untuk menghindari security exception karena ada kelas Java core language dalam Bouncy Castle yang tidak didukung oleh J2ME (Yuan 2003).

Analisis Keamanan Aplikasi

Aplikasi yang sudah selesai juga perlu dianalisis keamanannya. Beberapa di antaranya adalah:

1 Penyadapan parameter kunci melalui man in the middle attack. Bila kunci berhasil disadap dan ditukar dengan kunci palsu, verifikasi yang seharusnya benar akan menjadi salah. Solusi penyerangan ini adalah dengan menggunakan sertifikasi kunci dari pihak ketiga.

2 Media penyimpanan tempat menyimpan parameter kunci hilang. Penanganannya dengan pembangkitan kunci baru yang akan menjadikan kunci lama tidak valid. Parameter kunci ini juga perlu diberi masa kadaluarsa. Penanganan seperti ini tentu memerlukan sertifikasi kunci yang dikeluarkan pihak ketiga. Solusi lainnya dengan melakukan enkripsi pada tempat penyimpanan parameter kunci.

3 Penyebaran kunci publik memerlukan pihak ketiga sebagai tempat menyimpan kunci. Pihak ketiga ini bisa juga sebagai penerbit sertifikat kunci. Kunci publik yang telah dibangkitkan diunggah ke server tempat penyimpanan kunci. Kunci-kunci ini dapat diunduh oleh pihak-pihak yang memerlukan kunci publik tersebut. Skema penyebaran kunci ditunjukkan pada Gambar 17.

4 Terjadi modifikasi parameter pasangan kunci dengan memasangkan parameter yang

Key Server

Kunci Publik

Kunci Publik SMS

Gambar 17 Skema penyebaran kunci publik bukan pasangannya. Library Bouncy Castle yang digunakan, sudah memberikan ketahanan terhadap ancaman modifikasi parameter kunci ini. Pasangan parameter yang salah tidak menghalangi proses pembentukan penandaan namun verifikasi yang didapat tetap salah (false).

5 Dari segi kriptografi, aplikasi sudah dapat melayani integritas data, autentikasi, dan non-repudiation. Aplikasi tidak dapat melayani kerahasiaan data karena tidak ada layanan enkripsi SMS.

Dokumen terkait