APLIKASI PENGAMAN ISI LAYANAN PESAN SINGKAT PADA TELEPON SELULER BERBASIS J2ME MENGGUNAKAN ALGORITHMA SIMETRI.

(1)

ALGORITHMA SIMETRI

SKRIPSI

Oleh :

MIFTAHUL. FARID

( 0734010152 ) ``

PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI

UNIVERSITAS PEMBANGUNANNASIONAL “VETERAN” JATIM SURABAYA


(2)

Alhamdulillaahi rabbil „alamin, segala puji bagi Allah Yang Maha Kuasa yang telah memberikan kekuatan-Nya sehingga penulis bisa menyelesaikan tugas akhir yang berjudul :

“Aplikasi Pengaman Isi Layanan Pesan Singkat Pada Telepon Seluler Berbasis J2ME

Menggunakan Algoritma Simetri”. Serta kepada Nabi Muhammad SAW yang telah menuntun

kita semua kejalan yang lurus dan di ridhoi oleh Allah SWT.

Melalui tugas akhir ini, penulis merasa mendapat kesempatan besar untuk lebih memperdalam ilmu pengetahuan yang diperoleh selama di perkuliahan.Terutama di bidang pemrograman java. Namun demikian, penulis menyadari bahwa Tugas Akhir ini masih memiliki banyak kelemahan dan kekurangan. Oleh karena itu penulis sangat mengharapkan kritik dan sarannya untuk pengembangan ke depannya.

Secara khusus, dalam kesempatan ini pula, penulis ingin mengucapkan terima kasih dan penghargaan sebesar-besarnya kepada:

1. Kedua orang tua saya dan keluarga tercinta yang telah memberikan semangat dan do’a restunya yang tiada henti.

2. Bapak Ir. Sutiyono MT selaku Dekan Fakultas Teknologi Industri Universitas Pembangunan Nasional “Veteran” Jawa Timur.


(3)

Timur

4. Teman dekat Dan Sahabat – Sahabat yang selalu ada untuk membantu meringankan pengerjaan tugas akhir ini.

5. Semua pihak yang telah membantu yang tidak dapat saya sebutkan satu persatu.

Saya menyadari bahwa dalam penyusunan laporan ini tidak terlepas dari kekurangan dan kesalahan. Untuk itu, saya sangat terbuka bagi kritik dan saran yang bersifat membangun. Semoga laporan tugas akhir ini bermanfaat bagi saya khususnya dan bagi pembaca umumnya.

Surabaya, 11 Mei 2012


(4)

ABSTRAK ... i

KATA PENGANTAR ... ii

DAFTAR ISI ... iv

DAFTAR GAMBAR ... vii

DAFTAR TABEL ... ix

BAB I PENDAHULUAN ... 1

1.1.Latar Belakang ... 1

1.2.Perumusan Masalah ... 2

1.3.Batasan Masalah ... 3

1.4.Tujuan ... 3

1.5.Manfaat ... 4

1.6.Sistematika Penulisan ... 4

BAB II LANDASAN TEORI ... 6

2.1.Teknologi Java 2 ... 6

2.2.Java 2 Micro Edition ... 6

2.2.1.Konfigurasi J2ME ... 6

2.2.2.Profil J2ME ... 7

2.2.3.MIDP dan MIDlet ... 8

2.3.Push Technology ... 11

2.4.Over The Air ... 13

2.5.Kriptografi ... 14

2.6.Algorithma Kriptografi ... 17

2.7.Fungsi Hash ... 18

2.8.Hash Message Autentication Code (HMAC) ... 20


(5)

2.10.2.Algoritma AES ... 24

2.10.3.Enkripsi Dengan AES ... 25

2.10.3.1.SubBytes ... 26

2.10.3.2.ShiftRows ... 27

2.10.3.3.MixColumns ... 28

2.10.3.4.AddRoundKey ... 28

2.10.4.Dekripsi ... 29

2.10.4.1.InvShiftRows ... 29

2.10.4.2.InvSubBytes ... 30

2.10.4.3.InvMixColumns ... 31

2.10.4.4.Inverse AddRoundKey ... 31

2.10.5.Ekspansi Kunci ... 31

2.11.Algorithma Dan Pemrograman ... 33

2.11.1.Internal Subroutines ... 35

2.11.2.External Subroutines ... 35

2.11.3.Pendekatan Top Down ... 35

BAB III ANALISIS KEBUTUHAN DAN PERANCANGAN SISTEM ... 39

3.1.Analisis Kebutuhan ... 39

3.2.Pemodelan Fungsional ... 40

3.2.1.Diagram Alir ... 40

3.2.2.Data Context Diagram ... 42

3.2.3.Data Flow Diagram ... 42

3.3.Perancangan Sistem ... 44

3.4.Perancangan Fungsi ... 45

3.5.Perancangan Antar Muka ... 48 3.5.1.Perancangan form yang digunakan user untuk mengirimkan


(6)

4.1.1.Analisis Kelemahan Sistem ... 52

4.1.2.Analisis Kebutuhan Sistem ... 54

4.1.3.Analisis Kebutuhan Fungsional ... 54

4.1.4.Analisis Kebutuhan Nonfungsional ... 55

4.1.5.Kebutuhan Perangkat Keras (hardware) ... 55

4.1.6.Kebutuhan Perangkat Lunak ... 56

4.2.Pengujian Aplikasi ... 57

4.3.Analisis Hasil Pengujian Dan Kinerja Sistem ... 60

4.4.Analisis Perhitungan Kriptografi Simetrik ... 64

4.5.Pengujian Kunci ... 67

BAB V PENUTUP ... 69

5.1.Kesimpulan ... 70

5.2.Saran ... 70


(7)

Gambar 2.2 Hirarki Kelas Displayable ... 9

Gambar 2.3 Registrasi Push Secara Statis ... 12

Gambar 2.4 Jendela untuk Setting Permissions ... 13

Gambar 2.5 Pemaketan Aplikasi MIDlet ... 13

Gambar 2.6 Tampilan Awal Layar AMS ... 14

Gambar 2.7 Proses Dekripsi Dan Enkripsi Sederhana ... 16

Gambar 2.8 Proses Dekripsi Dan Enkripsi Algoritma Asimetris ... 18

Gambar 2.9 Skema Digital Signature ... 20

Gambar 2.10 Struktur Data AES ... 24

Gambar 2.11 Byte Input, Array State, dan Byte Output Pada AES ... 24

Gambar 2.12 Diagram Alir Proses Enkripsi ... 26

Gambar 2.13 Matriks Affine ... 27

Gambar 2.14 Transformasi ShiftRows ... 27

Gambar 2.15 Matriks Transformasi MixColumns ... 28

Gambar 2.16 Hasil perkalian dari operasi matriks MixColumns... 28

Gambar 2.17 Diagram Alir Proses Dekripsi ... 29

Gambar 2.18 Transformasi InvShiftRows ... 30

Gambar 2.19 Matriks Invers Affine ... 30

Gambar 2.20 Matriks InvMixColumns ... 31

Gambar 3.1 Diagram Alir Aplikasi AESSMS ... 41

Gambar 3.2 Data Context Diagram... 42

Gambar 3.3 DFD Level 1 Aplikasi Perangkat Lunak AESSMS ... 43

Gambar 3.4 Rancangan Form Menu Utama ... 49

Gambar 3.5 Rancangan Form Pengiriman Pesan ... 50

Gambar 3.6 Rancangan Form Inbox ... 50


(8)

(9)

Tabel 3.1 Spesifikasi kebutuhan perangkat lunak ... 40

Tabel 4.1 Hasil Pengujian Aplikasi AESSMS ... 62

Tabel 4.1. Hasil Pengujian Aplikasi AESSMS (Lanjutan) ... 63

Tabel 4.2 Daftar Sebagian Kode ASCII ... 65


(10)

Simetri

Dosen Pembimbing I : Asti Dwi Irfianti, S.kom, M.kom Dosen Pembimbing II : Ir.Kindriani Nurma W, MT Penyusun : Miftahul. Farid

ABSTRAKSI

Perkembangan teknologi telekomunikasi yang begitu pesat telah memberikan manfaat yang begitu besar. Dengan adanya teknologi telekomunikasi, jarak dan waktu bukan lagi menjadi sebuah kendala yang berarti. Salah satu hasil teknologi telekomunikasi yang sangat terkenal adalah Short Message Service (SMS). Dengan menggunakan SMS, penggunanya dapat saling bertukar pesan teks dengan pengguna lain.

Pada tugas akhir ini dikembangkan sebuah aplikasi pada telepon selular untuk memodifikasi pesan SMS menjadi cipherteks agar isi informasi dari SMS tersebut tidak diketahui oleh orang lain. Untuk pengiriman SMS sistem mengenkripsi pesan menjadi cipherteks menggunakan key yang diinputkan oleh pengirim kemudian mengirimkan ke nomor tujuan. Untuk proses penerimaan SMS, sistem akan mendekripsi masukan yang berupa cipherteks menjadi plainteks menggunakan sandi yang diinputkan oleh penerima yang kemudian menampilkan pesan asli kepada penerima. Aplikasi ini dapat dimanfaatkan oleh seseorang yang ingin mengirimkan suatu informasi rahasia kepada orang lain melalui SMS tanpa takut informasi dari pesan tersebut akan diketahui oleh orang lain.

Metode yang digunakan sistem dalam mengenkripsi dan mendekripsi pesan adalah algoritma simetri dan implementasinya menggunakan bahasa pemrograman Java 2 Micro Edition (J2ME).

Kata Kunci : Java 2 Micro Edition, J2ME, Short Message Service, SMS, enkripsi, cipherteks, plainteks, dekripsi, Algoritma Simetri


(11)

1.1. Latar Belakang

Perkembangan teknologi komputer dan teknologi telekomunikasi pada saat ini telah mengubah cara masyarakat dalam berkomunikasi. Dulu, komunikasi jarak jauh masih dilakukan dengan cara konvensional, yaitu dengan cara saling mengirim surat. Sekarang, dengan adanya internet, komunikasi jarak jauh bisa dilakukan dengan cara saling mengirim email atau sms (short messaging service). Internet juga telah membuat komunikasi semakin terbuka dan pertukaran informasi juga semakin cepat melewati batas-batas negara dan budaya. Namun tidak semua perkembangan teknologi komunikasi ini memberikan dampak yang menguntungkan bagi dunia komunikasi. Penyadapan data merupakan hal yang paling ditakuti oleh pengguna jaringan komunikasi pada saat ini.

Dengan adanya kemungkinan penyadapan data, maka aspek keamanan dalam pertukaran informasi menjadi sangat penting karena suatu komunikasi data jarak jauh belum tentu memiliki jalur transmisi yang aman dari penyadapan sehingga keamanan informasi menjadi bagian penting dalam dunia informasi itu sendiri. Terdapat data-data yang tidak terlalu penting, sehingga apabila publik mengetahui data tersebut, pemilik data tidak terlalu dirugikan. Tetapi apabila pemilik data adalah pihak militer atau pemerintah, keamanan dalam pertukaran informasi menjadi sangat penting karena data yang mereka kirim kebanyakan adalah data-data rahasia yang tidak boleh diketahui oleh publik.


(12)

Kriptografi adalah salah satu teknik yang digunakan untuk meningkatkan aspek keamanan suatu informasi. Kriptografi merupakan kajian ilmu dan seni untuk menjaga suatu pesan atau data informasi agar data tersebut aman. Kriptografi mendukung kebutuhan dari dua aspek keamanan informasi, yaitu secrecy (perlindungan terhadap kerahasiaan data informasi) dan authenticity

(perlindungan terhadap pemalsuan dan pengubahan informasi yang tidak diinginkan).

Algoritma kriptografi yang baik akan memerlukan waktu yang lama untuk memecahkan data yang telah disandikan. Seiring dengan perkembangan teknologi komputer maka dunia teknologi informasi membutuhkan algoritma kripografi yang lebih kuat dan aman. Saat ini, AES (Advanced Encryption

Standard) digunakan sebagai standar algoritma kriptografi yang terbaru. AES

menggantikan DES (Data Encryption Standar) yang pada tahun 2002 sudah berakhir masa penggunaannya. DES juga dianggap tidak mampu lagi untuk menjawab tantangan perkembangan teknologi komunikasi yang sangat cepat. Dari latar belakang tersebut, maka untuk menyelesaikan penelitian tugas akhir ini, penulis mengambil topik dalam mengenkripsi teks sms menggunakan algoritma simetri AES berbasiskan J2ME.

1.2. Perumusan Masalah

Berdasarkan latar belakang masalah tersebut dapat dibuat suatu rumusan masalah, yaitu: Bagaimana cara memanfaatkan layanan SMS yang dikenal mudah dalam hal penggunaan agar dapat juga dipakai untuk mengirim


(13)

dan menerima pesan yang bersifat rahasia, dimana informasi atau isi dari pesan tersebut akan tidak mudah diketahui oleh pihak yang tidak berhak ?

1.3. Batasan Masalah

Agar pengerjaan masalah ini menjadi terarah, diberikan batasan masalah sebagai berikut :

1. Input berupa pesan teks SMS.

2. Spesifikasi SMS (panjang 1 pesan SMS) disesuaikan dengan standar teknologi Global System for Mobile Communication (GSM).

3. Pengujian aplikasi dilakukan pada emulator Wireless Toolkit.

4. Aplikasi ini tidak memiliki inbox sehingga pesan yang masuk tidak dapat disimpan untuk dibaca kembali.

5. Pengiriman pesan dengan menggunakan fasilitas Wireless Messaging API

(WMA) dari Java 2 Micro Edition (J2ME).

6. Developer tools yang dipergunakan adalah Netbean IDE dan Netbean Platform 6.9.1 (Dual Licence : Common Development And Distribution Licence dan GNU General Public Licences Version 2 With Classpath Exception).

7. Java Developement Kit 1.6.0_21 dengan Java Hot Spot VM 17.0-b17 dan Java Platform Micro Edition Standard Development Kit 3.0

1.4. Tujuan

Tujuan dari penulisan tugas akhir ini adalah menghasilkan suatu aplikasi pada telepon selular yang dapat digunakan untuk mengirim dan


(14)

menerima pesan teks sekaligus memiliki fasilitas untuk mengamankan atau menyembunyikan informasi dari pesan yang dikirimkan.

1.5. Manfaat

1. Bagi pembaca

Dengan menggunakan aplikasi pada tugas akhir ini seseorang dapat mengirimkan suatu informasi rahasia tanpa takut diketahui isi informasi tersebut oleh orang lain

2. Bagi Penulis

Dengan mengembangkan aplikasi tugas akhir ini, penulis bisa lebih memahami lebih dalam bahasa pemrograman J2ME dan lebih memahami algoritma simetri.

1.6. Sistematika Penulisan

Sistematika penulisan yang digunakan dalam tugas akhir ini terbagi dalam beberapa pokok bahasan, yaitu :

BAB I PENDAHULUAN

Bab ini menguraikan tentang latar belakang, batasan masalah, tujuan dan manfaat penelitian dan sistematika penulisan.

BAB II DASAR TEORI

Bab ini membahas dasar-dasar teori dari Java 2 Micro

Edition, Wireless Messaging API, Over The Air (OTA) dan ilmu


(15)

BAB III ANALISIS KEBUTUHAN DAN PERANCANGAN

Bab ini berisi tentang analisis kebutuhan pada aplikasi KriptoSMS dan perancangan perangkat lunak dengan menggunakan bahasa pemrograman Java 2 Micro Edition.

BAB IV IMPLEMENTASI, PENGUJIAN DAN ANALISIS HASIL Bab ini berisi tentang implementasi dan pengujian dari perangkat lunak yang telah dibuat beserta analisis hasilnya

BAB V PENUTUP

Bab ini berisi tentang kesimpulan dan saran yang didapatkan selama proses perancangan dari sistem serta rencana pengembangan dari perangkat lunak di masa yang akan datang. DAFTAR PUSTAKA

Berisi tentang referensi-referensi yang telah digunakan selama pembuatan tugas akhir ini sebagai acuan yang mendukung.


(16)

BAB II

LANDASAN TEORI

Pada bab II ini akan di bahas tentang tinjauan pustaka dari penelitian yang di lakukan. Bab ini berisi dasar teori yang mendukung penelitian ini, sehingga penelitian ini memiliki dasar teori yang cukup kuat untuk mendukung pelaksanaan penelitian.

2.1. Teknologi Java 2

Java adalah bahasa pemrograman Object Oriented Programming (OOP) yang dibuat oleh Sun Microsystem. Java dirancang untuk menjadi bahasa yang memiliki kemampuan tinggi dalam hal portabilitas dan pemanfaatan jaringan tanpa mengabaikan kestabilan, kemanan, serta kemudahan dari sisi desain dan pemrograman aplikasi. Sebutan Java 2 diberikan untuk Java versi 1.2 dan versi berikutnya. Java 2 terbagi dalam 3 kategori, yaitu:

a. Java 2 Standard Edition (J2SE). Kategori ini digunakan untuk menjalankan mengembangkan aplikasi Java pada level komputer personal.

b. Java 2 Enterprise Edition (J2EE). Kategori ini dikhususkan untuk pengembangan aplikasi Java pada lingkungan enterprise/server.

c. Java 2 Micro Edition (J2ME). Kategori ini digunakan untuk pengembangan aplikasi Java yang diimplementasikan pada perangkat semacam ponsel, Palm, PDA dan PocketPC. (M. Shalahuddin & Rosa A.S, 2006)

2.2. Java 2 Micro Edition

Java 2 Micro Edition (J2ME) dirancang untuk dapat menjalankan program Java pada perangkat yang memiliki kemampuan terbatas misalnya kecilnya jumlah memori yang dimiliki perangkat tersebut.


(17)

2.2.1. Konfigurasi J2ME

Konfigurasi J2ME adalah spesifikasi yang mendefinisikan sebuah virtual machine dari kumpulan API-API dasar yang dapat digunakan dalam kelas tertentu dari sebuah peralatan. Virtual machine pada J2ME berbeda dengan yang ada pada J2SE karena hanya fitur-fitur penting yang berkaitan dengan perangkat tanpa kabel (Wireless) saja yang diimplementasikan. Ada 2 konfigurasi pada J2ME, yaitu:

1. CLDC (Connected Limited Device Configuration)

CLDC merupakan perangkat atau konfigurasi dasar dari J2ME. CLDC sebenarnya berupa library dan API (Application Programming Interface) yang diimplementasikan pada J2ME. Konfigurasi ini biasanya untuk alat kecil seperti telepon seluler (handphone), pager dan PDA. Peralatan tersebut biasanya mempunyai keterbatasan memori (RAM), sumber daya, dan kemampuan memproses.

2. CDC (Connected Device Configuration)

CDC merupakan perangkat atau konfigurasi superset dari CLDC. Konfigurasi ini biasanya dipakai untuk alat seperti Internet TV, Nokia

Communicator dan Car TV.

2.2.2. Profil J2ME

Sebuah profil dibangun dalam sebuah konfigurasi, namun ditambahkan beberapa API khusus agar dihasilkan sebuah lingkungan yang lengkap untuk membangun aplikasi. Profil berisi daur hidup (life cycle),


(18)

J2ME adalah Mobile Information Device Profile (MIDP). Profil MIDP menyediakan sebuah platform standar untuk peralatan komunikasi bergerak yang memiliki kapasitas memori terbatas sehingga cocok untuk pengembangan aplikasi pada ponsel.

2.2.3. MIDP dan MIDlet

MIDP merupakan profil yang banyak digunakan dan popular dari J2ME dan MIDlet merupakan aplikasi-aplikasi yang dibuat di dalam handphone menggunakan profil MIDP.

Daur Hidup MIDlet

Daur hidup dari sebuh MIDlet ditangani oleh Aplication Management Software (AMS). AMS adalah sebuah lingkungan tempat siklus dari sebuah MIDlet diciptakan, dijalankan, dihentikan, maupun dihilangkan. AMS sering disebut dengan Java Aplication Manager (JAM). Dalam daur hidupnya MIDlet memiliki tiga status, yaitu Pause, Active dan, Destroy. Ketika masing-masing status dipanggil, beberapa fungsi standar yang bersesuaian akan dipanggil.


(19)

Gambar 2.1 Daur Hidup MIDlet Dari gambar 2.1 dapat dijelaskan sebagai berikut :

a. Ketika MIDlet pertama kali diciptakan dan diinisialisasi, MIDlet berada dalam status pause.

b. Jika terjadi kesalahan selama konstruksi MIDlet, MIDlet akan berpindah ke status destroyed dan MIDlet batal diciptakan dengan memanggil fungsi destroyApp().

c. Saat MIDlet dijalankan, MIDlet akan berada pada status

active dan memanggil fungsi startApp().

d. Jika saat dijalankan MIDlet dihentikan sementara, maka MIDlet berada pada status pause dan memanggil fungsi

pauseApp(). (http://riyadi.smkmuh1salam.sch.id/?p=63 )

Antarmuka Pemakai

Untuk membuat suatu antarmuka bagi pemakai, program MIDlet harus mengimpor paket javac.microedition.lcdui. Kelas yang dipergunakan untuk membuat dan memanipulasi antarmuka tersebut adalah kelas yang


(20)

diturunkan dari kelas displayable. Melalui kelas-kelas inilah sebuah aplikasi dapat berinteraksi dengan pemakai.

Pada MIDP, antarmuka terdiri dari API tingkat tinggi (High-level) dan API tingkat rendah (Low-level). API tingkat tinggi berbasis pada kelas Screen, sedangkan API tingkat rendah berbasis pada kelas Canvas. Diagram hirarki dari kelas displayable dapat dilihat pada gambar 2.2 berikut ini :

Gambar 2.2. Hirarki Kelas Displayable

Event

Ketika terjadi interaksi antara pengguna dan sebuah perangkat, misalnya ponsel, maka akan dihasilkan suatu event, seperti memilih suatu menu atau melakukan masukan pada layar. Kelas yang bertugas untuk menerima event dari pengguna harus mengimplementasikan antarmuka CommandListener. Fungsi-fungsi yang harus digunakan antara lain :

a. command(), digunakan untuk menciptakan tombol perintah (command) baru.

b. addCommand(), digunakan untuk mendefinisikan sebuah tombol perintah ke dalam kelas Displayable.

c. setCommandListener(), digunakan untuk mendengarkan aksi yang dilakukan terhadap sebuah tombol perintah.


(21)

d. commandAction(), digunakan untuk menentukan aksi yang akan

dikerjakan oleh sebuah tombol perintah.

(http://www.scribd.com/doc/13903301/J2ME1)

Pemaketan Aplikasi MIDlet

Hasil dari kompilasi program sumber Java adalah satu atau lebih berkas bytecode yang dikenali dengan akhiran “*.class”. Pada aplikasi MIDlet, semua berkas byte-code dipaketkan menjadi suatu berkas terkompresi yang disebut Java Archive (JAR) yang dikenali dengan ekstensi “*.jar”.

Selain berkas JAR, terdapat juga berkas Java Application Descripter (JAD) yang berekstensi “*.jad”, yaitu berkas yang berisi informasi mengenai suatu berkas JAR. Kedua berkas inilah yang harus di-upload ke perangkat ponsel agar aplikasi dapat dijalankan. Untuk meng-upload berkas tersebut ke perangkat ponsel dapat dilakukan dengan cara transfer data antara komputer dengan perangkat komunikasi bergerak melalui media sinar infra merah, koneksi kabel data atau bluetooth.

(http://www.scribd.com/doc/13903301/J2ME1)

Wireless Messaging API

Wireless Messaging API (WMA) adalah teknologi yang dimiliki oleh MIDP 2 yang dapat digunakan untuk mengirim dan menerima Short Message Service (SMS). Dua paket utama yang harus diimplementasikan untuk mengembangkan aplikasi WMA adalah :

a. javax.wireless.messaging, paket ini menyediakan antar muka yang member fasilitas untuk mengirim dan menerima pesan


(22)

b. javax.microedition.io, paket ini mengatur masalah jaringan atau konektifitas pada aplikasi Wireless messaging.

c. Dalam pengembangan aplikasi WMA lebih lanjut terdapat dua teknologi J2ME yang cukup penting, yaitu fungsi push (Push

Technology) dan Over The Air (OTA).

(http://eprints.undip.ac.id/22972/1/Laporan_TA_Bayu_K_N_-_J2F004262.pdf)

2.3. Push Technology

Fungsi Push mulai diterapkan pada MIDP versi 2.0. Teknologi push memiliki kemampuan untuk menjalankan respon pada emulator jika ada pesan masuk. Jenis koneksi yang diijinkan, yaitu SMS, datagram dan socket.

Untuk menggunakan teknologi push sebelumnya perlu dilakukan registrasi push (push registry). Terdapat 2 cara untuk melakukan registrasi, yaitu : a. Secara statis, yaitu dengan cara mendefinisikan pada berkas JAD (pada menu

Project → Setting). Cara registrasi push secara statis dapat dijelaskan pada sebagai berikut :


(23)

Gambar 2.3. Registrasi Push Secara Statis Dimana :

a. Connection URL merupakan tipe koneksi yang masuk melalui sebuah port Class merupakan nama kelas yang meimplementasikan MIDlet. b. Allow Sender merupakan pengiriman pesan yang akan direspon, tanda *”

berarti dapat menerima pesan dari semua pengirim

b. Secara dinamis, yaitu dengan memanggil fungsi registerConnection() yang terdapat pada kelas PushRegistry. Hal ini dilakukan melalu kode program, bentuk umumnya : registerConnection(String connection, String midlet, String filter). Setelah melakukan registrasi push perlu didefinisikan

permission. Untuk aplikasi SMS paling tidak harus diatur seperti pada gambar 2.4 berikut ini :


(24)

2.4. Over The Air

Over The Air (OTA) digunakan untuk menginstal dan menjalankan aplikasi MIDlet. Sehingga melalui OTA dapat dilakukan simulasi pengiriman dan penerimaan pesan SMS. Sebelum menginstal MIDlet, hal pertama yang harus dilakukan adalah membuat paket (berkas JAR) untuk aplikasi.

Gambar 2.5 Pemaketan Aplikasi MIDlet

Setelah itu dilakukan penginstalan dengan memilih menu Run via OTA, maka akan muncul layar AMS kemudian pilih Apps → Install Aplication → Launch. Selanjutnya tinggal mengikuti langkah-langkah penginstalan yang diberikan.


(25)

(http://eprints.undip.ac.id/22972/1/Laporan_TA_Bayu_K_N_-_J2F004262.pdf)

2.5. Kriptografi

Kriptografi adalah ilmu yang mempelajari tentang cara menjaga keamanan suatu pesan atau informasi. Kriptografi berasal dari bahasa Yunani yaitu dari kata Crypto dan Graphia yang berarti penulisan rahasia. Kriptografi adalah suatu ilmu yang mempelajari penulisan secara rahasia. Kriptografi merupakan bagian dari suatu cabang ilmu matematika yang disebut Cryptology. Kriptografi bertujuan menjaga kerahasiaan informasi yang terkandung dalam data sehingga informasi tersebut tidak dapat diketahui oleh pihak yang tidak sah.

Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi, yaitu :

Secrecy/Confidentiality, adalah layanan yang digunakan untuk menjaga isi dari informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka/mengupas informasi yang telah di enkripsi.

Integrity Control, adalah berhubungan dengan penjagaan dari perubahan data

secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubsitusian data lain kedalam data yang sebenarnya.

Authentication, adalah berhubungan dengan identifikasi/pengenalan, baik

secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling memperkenalkan diri. Informasi yang dikirimkan melalui kanal harus diautentikasi keaslian, isi datanya, waktu pengiriman, dan


(26)

lain-lain. Pihak yang berkomunikasi harus dapat memastkan bahwa pihak lain yang diajak berkomunikasi adalah benar-benar pihak yang dikehendaki.

Non-repudiation, atau nirpenyangkalan adalah usaha untuk mencegah

terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat. Pembuktian korespondensi antara pihak yang mengirimkan suatu informasi dengan yang dikirimkan juga perlu dilakukan sehingga identitas pengirim suatu informasi dapat dipastikan dan penyangkalan pihak tersebut atas informasi yang telah dikirimnya tidak dapat dilakukan.

Dalam menjaga kerahasiaan data, kriptografi mentransformasikan informasi asli atau dikenal dengan sebutan (plaintext) ke dalam bentuk informasi yang di acak/di enkripsi (ciphertext) yang tidak dikenali. Ciphertext inilah yang kemudian dikirimkan oleh pengirim (sender) kepada penerima (receiver). Setelah sampai di penerima, ciphertext tersebut ditransformasikan kembali dalam bentuk plaintext agar dapat dikenali.

Suatu pesan yang tidak disandikan disebut sebagai plaintext ataupun dapat disebut juga sebagai cleartext.Proses transformasi dari plaintext ke ciphertext dikenal dengan proses enkripsi. Sedangkan proses transformasi dari ciphertext ke plaintext dikenal dengan proses dekripsi. Kedua proses tersebut dilakukan dengan menggunakan algoritma tertentu yang dikenal dengan kunci.

Berikut gambaran bagaimana plaintext bertransformasi ke ciphertext dan bagaimana ciphertext kembali menjadi plaintext :


(27)

Gambar 2.7. Proses Dekripsi Dan Enkripsi Sederhana Rumusan secara sederhana :

Enkripsi : E(P) = C

Dekripsi : D(C) = P atau D(E(P)) = P

Pesan atau informasi dapat dikategorikan ke dalam dua jenis, yaitu pesan yang dapat dibaca dengan mudah (plaintext ) dan pesan yang tidak mudah dibaca (ciphertext).

Untuk melakukan kriptografi digunakan algoritma kriptografi. Algoritma kriptografi terdiri dari dua bagian, yaitu fungsi enkripsi dan dekripsi. Enkripsi adalah proses untuk mengubah plaintext menjadi ciphertext, sedangkan dekripsi adalah kebalikannya yaitu mengubah ciphertext menjadi plaintext. Terdapat dua jenis algoritma kriptografi berdasar jenis kuncinya, yaitu :

1. Algoritma Simetri, adalah algoritma yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya. Algoritma standar yang menggunakan prinsip kunci simetri antara lain OTP, DES, RC2, RC4, RC5, RC6, IDEA, Twofish, Blowfish, dan lain lain.

2. Algoritma Asimetri, adalah algoritma yang kunci untuk enkripsi dan dekripsinya jauh berbeda. Algoritma standar yang termasuk algoritma asimetri adalah ECC, LUC, RSA, EI, Gamal dan DH.


(28)

Salah satu teknik enkripsi menggunakan kunci simetri adalah teknik subtitusi, yaitu mengganti setiap karakter plaintext dengan karakter lain. Terdapat empat cara dalam menggunakan teknik subtitusi, yaitu :

1. Monoalphabet, dimana setiap karakter ciphertext mengganti satu macam karakter plaintext tertentu.

2. Polialphabet, dimana setiap karakter ciphertext mengganti lebih dari satu macam karakter plaintext.

3. Monograf/unilateral, dimana satu enkripsi dilakukan terhadap satu karakter plaintext.

4. Poligraf/multilateral, dimana satu enkripsi dilakukan terhadap lebih dari satu karakter plaintext.

2.6. Algorithma Kriptografi

Terdapat dua jenis algoritma kriptografi :  Algoritma Simetris

Algoritma Simetris adalah algoritma kriptografi yang konvensional. Kunci enkripsi dan dekripsi menggunakan algoritma yang sama. Contoh algoritma simetris adalah algoritma DES.

 Algoritma Asimetris

Algoritma Simetris adalah algoritma kriptografi yang menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsinya. Kunci yang digunakan untuk proses enkripsi disebut dengan kunci public (public key). Kunci yang digunakan untuk proses dekripsi disebut dengan kunci privat/kunci secure (privat key). Contoh algoritma asimetris adalah algoritma RSA.


(29)

Gambar 2.8. Proses Dekripsi Dan Enkripsi Menggunakan Algoritma Asimetris

2.7. Fungsi Hash

Fungsi hash biasanya digunakan untuk mengidentefikasi keaslian suatu pesan. Fungsi hash memetakan pesan M (Message) dengan panjang berapapun menjadi nilai hash h dengan panjang tetap (tertentu, tergantung algoritmanya).

Sifat-sifat dari fungsi hash adalah sebagai berikut:

 Menghasilkan nilai h yang mudah dihitung bila diberikan M.

 Umumnya fungsi hash menghasilkan keluaran nilai h dengan panjang 128 bit.

 M tidak dapat dihitung jika hanya diketahui h (sifat one-way function), atau mudah untuk menghitung h dan sukar untuk dikembalikan ke M semula. Tidak mungkin dicari M dan M’ sedemikian sehingga H(M)=H(M’) (sifat collision free). Fungsi hash yang menghasilkan keluaran dengan ukuran yang kecil mudah diserang oleh birthday attack

 Sifat one-way function sangat penting dalam teknik kriptografi, karena jika tanpa sifat tersebut maka penyerang dapat menemukan nilai M dengan mengetahui nilai hash-nya h.

 Sifat collision free mencegah kemungkinan pemalsuan.

 Serangan terhadap fungsi hash umumnya dilakukan dengan cara mendapatkan dua pesan secara acak yang memiliki nilai hash h sama.


(30)

Implementasi fungsi hash adalah digital signature, yang sering diartikan tanda tangan elektronik. Digital signature mempunyai pengertian sebagai berikut : 1. Bukan tanda tangan di kertas yang discan menjadi image

2. Adalah teknik kriptografi untuk menjamin otentikasi pesan dan pengirim pesan dan digunakan untuk otentikasi (menjamin keaslian pesan dan keaslian pengirim pesan) serta menggunakan fungsi hash dan algoritma kunci asimetri.

Gambar 2.9. Skema Digital Signature Penjelasan gambar diatas adalah sebagai berikut :

1. Pesan diproses dengan fungsi hash H menghasilkan nilai hash (message digest)

2. Nilai hash dienkripsi dengan kriptografi kunci asimetri menggunakan kunci privat pengirim (Ps).

3. Nilai hash yang telah dienkripsi digabung dengan pesan asli (M)

4. Pesan yang telah digabung dikirimkan melalui jaringan komputer terbuka (Internet)

5. Sesampainya di penerima, pesan asli dipisahkan lagi dari nilai hash yang terekripsi.


(31)

6. Nilai hash yang terenkripsi kemudian didekripsi dengan kunci publik pengirim.

7. Hasil dekripsi tersebut kemudian dibandingkan dengan pesan asli (M)

2.8. Hash Message Autentication Code (HMAC)

Untuk menjamin integritas paket, IPsec menggunakan Hash Message Authentication Code (HMAC). HMAC adalah algoritma authentikasi menggunakan kunci privat. Integritas data dan autentikasi asal data yang disediakan oleh HMAC bergantung pada penyebaran kunci rahasia yang digunakan, jika hanya sumber (pengirim) dan tujuan (penerima) yang mengetahui kunci HMAC, maka autentikasi asal data dan integritas data untuk message-message yang dikirim antara kedua pihak tersebut terjamin. HMAC sendiri merupakan pengembangan dari fungsi hash.

HMAC menggunakan fungsi hash satu arah, H, dan kunci rahasia K. beberapa fungsi hash yang digunakan diantaranya adalah: MD5 dan SHA-1. Untuk memperjelas fungsi hash yang digunakan, digunakan notasi HMAC-H. Contohnya, HMACMD5 menyatakan HMAC yang menggunakan fungsi hash MD5. H merupakan fungsi hash yang melakukan hashing dengan iterasi suatu fungsi kompresi pada blok-blok data. Panjang blok data dalam byte, B(B=64 untuk MD5 dan SHA-1), dan panjang output hash dalam byte,L (L=16 untuk MD5 ,L=20 untuk SHA-1), masingmasing menjadi batas atas dan batas bawah panjang kunci K. Bila panjang K melebihi B, maka yang digunakan sebagai kunci adalah H(K). (http://eprints.undip.ac.id/25309/1/ML2F306043.pdf)


(32)

2.9. J2ME Wireless Toolkit

J2ME Wireless Toolkit adalah alat bantu berupa perangkat lunak untuk melakukan kompilasi dan pengujian aplikasi J2ME. Dalam J2ME Wireless Toolkit terdapat Ktoolbar. KToolbar merupakan bagian utama dari aplikasi untuk pengembangan Java MIDP atau lebih dikenal dengan istilah MIDlet. KToolbar merupakan lingkungan pengembangan minimal yang disediakan oleh J2ME Wireless Toolkit untuk pengembangan MIDlet.

Untuk melakukan pengembangan aplikasi MIDlet melaui KToolbar, hal pertama yang harus dilakukan adalah membuat proyek. Proyek ini secara fisik akan diletakkan pada C:\WTK20\apps\{nama-proyek} dengan asumsi J2ME Wireless Toolkit diinstal pada C:\WTK20\. Proyek yang dibuat terdiri atas direktori-direktori

berikut:

 Src, adalah direktori yang berisi berkas-berkas kode java

 Bin, adalah direktori yang berisi berkas-berkas JAD, JAR dan manifest

 Res, adalah direktori yang berisi berkas-berkas sumber, misalnya gambar

 Lib, adalah direktori yang berisi berkas-berkas kelas java yang

diperlukan dalam format gambar atau zip.

(http://wartawarga.gunadarma.ac.id/2011/03/j2me-wireless-toolkit/)

2.10. AES (Advanced Encryption Standard)

Pada tahun 1972 dan 1974 National Bureau of Standards (sekarang dikenal dengan nama National Institute of Standards and Technology, NIST) menerbitkan permintaan kepada publik untuk pembuatan standar enkripsi. Hasil


(33)

dari permintaan pada saat itu adalah DES (Data Encryption Standard), yang banyak digunakan di dunia. DES adalah sebuat algoritma kriptografi simetrik dengan panjang kunci 56 bit dan blok data 64 bit. Dengan semakin majunya teknologi, para kriptografer merasa bahwa panjang kunci untuk DES terlalu pendek, sehingga keamanan algoritma ini dianggap kurang memenuhi syarat. Untuk mengatasi hal itu, akhirnya muncul triple DES.

Triple DES pada waktu itu dianggap sudah memenuhi syarat dalam standar enkripsi, namun teknologi yang tidak pernah berhenti berkembang akhirnya juga menyebabkan standar ini dianggap kurang memenuhi syarat dalam standar enkripsi. Akhirnya NIST mengadakan kompetisi untuk standar kriptografi yang terbaru, yang dinamakan AES (Advanced Encryption Standard). Dari hasil seleksi yang dilakukan oleh NIST, akhirnya NIST memilih 5 finalis AES, yaitu : Mars, RC6, Rijndael, Serpent, dan Twofish. Kompetisi ini akhirnya dimenangkan oleh Rijndael dan secara resmi diumumkan oleh NIST pada tahun 2001. (http://rahmat-set.web.ugm.ac.id/web/04/sejarah-des-data-encryption-standard)

2.10.1. Representasi Data

Input dan output dari algoritma AES terdiri dari urutan data sebesar 128 bit. Urutan data yang sudah terbentuk dalam satu kelompok 128 bit tersebut disebut juga sebagai blok data atau plaintext yang nantinya akan dienkripsi menjadi ciphertext. Cipher key dari AES terdiri dari key dengan panjang 128 bit, 192 bit, atau 256 bit. Urutan bit diberi nomor urut dari 0 sampai dengan n-1 dimana n adalah nomor urutan. Urutan data 8 bit secara berurutan disebut sebagai byte dimana byte ini adalah unit dasar dari operasi yang akan dilakukan pada blok data.


(34)

Dalam algoritma AES, data sepanjang 128 bit akan dibagi-bagi menjadi array byte dimana setiap array byte ini terdiri dari 8 bit data input yang saling berurutan. Array byte ini direpresentasikan dalam bentuk :

a0a1a2...a15 Dimana:

a0 = { input0,input1,...,input7 }

a1 = { input8,input9,...,input15 }

a15 = { input120,input121,...,input127 }

an = { input8n,input8n+1,...,input8n+7 }

Gambar 2.10 Struktur Data AES

Operasi algoritma AES dilakukan pada sebuah state dimana state sendiri adalah sebuah array byte dua dimensi. Setiap state pasti mempunyai jumlah baris yang tetap, yaitu 4 baris, sedangkan jumlah kolom tergantung dari besarnya blok data. Baris pada state mempunyai indeks nomor row (r) dimana 0 ≤ r < 4, sedangkan kolom mempunyai indeks nomor column (c) dimana 0 ≤ c < Nb. Nb sendiri adalah besarnya blok data dibagi 32.

Pada saat permulaan, input bit pertama kali akan disusun menjadi suatu array byte dimana panjang dari array byte yang digunakan pada AES adalah


(35)

sepanjang 8 bit data. Array byte inilah yang nantinya akan dimasukkan atau dikopi ke dalam state dengan urutan :

s[r,c] = in[r+4c] untuk 0 ≤ r < 4 dan 0 ≤ c < Nb sedangkan dari state akan dikopi ke output dengan urutan :

out[r+4c] = s[r,c] untuk 0 ≤ r < 4 dan 0 ≤ c < Nb

in0 in1 in2 in3 in4 in5 in6 in7 in8 in9 in10 in11 in12 in13 in14 in15 Byte Input

s0,0 s1,0 s2,0 s3,0 s0,1 s1,1 s2,1 s3,1 s0,2 s1,2 s2,2 s3,2 s0,3 s1,3 s2,3 s3,3 Array State

out0 out1 out2 out3 out4 out5 out6 out7 out8 out9 out10 out11 out12 out13 out14 out15 Byte Output

Gambar 2.11. Byte Input, Array State, dan Byte Output Pada AES

2.10.2. Algoritma AES

Pada algoritma AES, jumlah blok input, blok output, dan state adalah 128 bit. Dengan besar data 128 bit, berarti Nb = 4 yang menunjukkan panjang data tiap baris adalah 4 byte. Dengan blok input atau blok data sebesar 128 bit,

key yang digunakan pada algoritma AES tidak harus mempunyai besar yang sama dengan blok input. Cipher key pada algoritma AES bisa menggunakan kunci dengan panjang 128 bit, 192 bit, atau 256 bit. Perbedaan panjang kunci akan mempengaruhi jumlah round yang akan diimplementasikan pada algoritma AES ini. Di bawah ini adalah tabel yang memperlihatkan jumlah round (Nr) yang harus

diimplementasikan pada masing-masing panjang kunci.

(http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf) Tabel 2.1. Perbandingan Jumlah Round dan Key


(36)

2.10.3. Enkripsi Dengan AES

Proses enkripsi pada algoritma AES terdiri dari 4 jenis transformasi bytes, yaitu SubBytes, ShiftRows, Mixcolumns, dan AddRoundKey. Pada awal proses enkripsi, input yang telah dikopikan ke dalam state akan mengalami transformasi byte AddRoundKey. Setelah itu, state akan mengalami transformasi SubBytes, ShiftRows, MixColumns, dan AddRoundKey secara berulang-ulang sebanyak Nr. Proses ini dalam algoritma AES disebut sebagai round function. Round yang terakhir agak berbeda dengan round-round sebelumnya dimana pada round terakhir, state tidak mengalami transformasi MixColumns.


(37)

AddRoundKey

SubBytes ShiftRows MixColumns AddRoundKey

SubBytes ShiftRows AddRoundKey

Cipher Text Plain Text

Gambar 2.12. Diagram Alir Proses Enkripsi

2.10.3.1. SubBytes

SubBytes merupakan transformasi byte dimana setiap elemen pada state akan dipetakan dengan menggunakan sebuah tabel substitusi (S-Box). Hasil yang didapat dari pemetaan dengan menggunakan tabel S-Box ini sebenarnya adalah hasil dari dua proses transformasi bytes, yaitu :

1. Invers perkalian dalam GF(28) adalah fungsi yang memetakan 8 bit ke 8 bit yang merupakan invers dari elemen finite field tersebut. Suatu byte a merupakan invers perkalian dari byte b bila a•b = 1, kecuali {00} dipetakan ke dirinya sendiri. Setiap elemen pada state akan dipetakan pada tabel invers. Sebagai contoh, elemen “01010011” atau {53} akan dipetakan ke {CA} atau “11001010”.

2. Transformasi affine pada state yang telah dipetakan. Transformasi affine ini apabila dipetakan dalam bentuk matriks adalah sebagai berikut :


(38)

                                                                                                           0 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 7 6 5 4 3 2 1 0 ' 7 ' 6 ' 5 ' 4 ' 3 ' 2 ' 1 ' 0 b b b b b b b b b b b b b b b b

Gambar 2.13. Matriks Affine

b7 b6 b5 b4 b3 b2 b1 b0 adalah urutan bit dalam elemen state atau array byte dimana b7 adalah most significant bit atau bit dengan posisi paling kiri.

2.10.3.2. ShiftRows

Transformasi Shiftrows pada dasarnya adalah proses pergeseran bit dimana bit paling kiri akan dipindahkan menjadi bit paling kanan (rotasi bit). Transformasi ini diterapkan pada baris 2, baris 3, dan baris 4. Baris 2 akan mengalami pergeseran bit sebanyak satu kali, sedangkan baris 3 dan baris 4 masing-masing mengalami pergeseran bit sebanyak dua kali dan tiga kali.

S0,0 S1,0 S2,0 S3,0 S0,1 S1,1 S2,1 S3,1 S0,2 S1,2 S2,2 S3,2 S0,3 S1,3 S2,3 S3,3 S0,0 S1,0 S2,0 S3,0 S0,1 S1,1 S2,1 S3,1 S0,2 S1,2 S2,2 S3,2 S0,3 S1,3 S2,3 S3,3 S S’

Gambar 2.14. Transformasi ShiftRows

2.10.3.3. MixColumns

Mixolumns mengoperasikan setiap elemen yang berada dalam satu kolom pada state. Elemen pada kolom dikalikan dengan suatu polinomial tetap


(39)

a(x) = {03}x3 + {01}x2 + {01}x + {02}. Secara lebih jelas, transformasi mixcolumns dapat dilihat pada perkalian matriks berikut ini :

                                         c c c c c c c c s s s s s s s s , 3 , 2 , 1 , 0 ' , 3 ' , 2 ' , 1 ' , 0 02 01 01 03 03 02 01 01 01 03 02 01 01 01 03 02

Gambar 2.15. Matriks Transformasi MixColumns

Melakukan proses penambahan pada operasi ini berarti melakukan operasi bitwise XOR. Maka hasil dari perkalian matriks diatas dapat dianggap seperti perkalian yang ada di bawah ini :

) } 02 ({ ) } 03 ({ ) } 03 ({ ) } 02 ({ ) } 03 ({ ) } 02 ({ ) } 03 ({ ) } 02 ({ , 3 , 2 , 1 , 0 ' , 3 , 3 , 2 , 1 , 0 ' , 2 , 3 , 2 , 1 , 0 ' , 1 , 3 , 2 , 1 , ' , 0 c c c c c c c c c c c c c c c c c c c o c s s s s s s s s s s s s s s s s s s s s                        

Gambar 2.16. Hasil perkalian dari operasi matriks MixColumns

2.10.3.4. AddRoundKey

Pada proses AddRoundKey, sebuah round key ditambahkan pada state dengan operasi bitwise XOR. Setiap round key terdiri dari Nb word dimana tiap word tersebut akan dijumlahkan dengan word atau kolom yang bersesuaian dari state sehingga :

s0',c,s1',c,s2',c,s3',c

s0,c,s1,c,s2,c,s3,c

wround*Nbc

untuk0cNb

[wi] adalah word dari key yang bersesuaian dimana i = round*Nb+c. Transformasi AddRoundKey diimplementasikan pertama kali pada round = 0, dimana key yang digunakan adalah initial key (key yang dimasukkan oleh kriptografer dan belum mengalami proses key expansion).


(40)

2.10.4. Dekripsi

Transformasi cipher dapat dibalikkan dan diimplementasikan dalam arah yang berlawanan untuk menghasilkan inverse cipher yang mudah dipahami untuk algoritma AES. Transformasi byte yang digunakan pada invers cipher adalah InvShiftRows, InvSubBytes, InvMixColumns, dan AddRoundKey. Algoritma dekripsi dapat dilihat pada skema berikut ini :

AddRoundKey InvShiftRows

InvSubBytes

AddRoundKey InvMixColumns

InvShiftRows InvSubBytes

AddRoundKey

Plain Text Cipher Text

Nr - 1 Round

Gambar 2.17. Diagram Alir Proses Dekripsi

2.9.4.1. InvShiftRows

InvShiftRows adalah transformasi byte yang berkebalikan dengan transformasi ShiftRows. Pada transformasi InvShiftRows, dilakukan pergeseran bit ke kanan sedangkan pada ShiftRows dilakukan pergeseran bit ke kiri. Pada baris kedua, pergeseran bit dilakukan sebanyak 3 kali, sedangkan pada baris ketiga dan baris keempat, dilakukan pergeseran bit sebanyak dua kali dan satu kali.


(41)

S0,0 S1,0 S2,0 S3,0 S0,1 S1,1 S2,1 S3,1 S0,2 S1,2 S2,2 S3,2 S0,3 S1,3 S2,3 S3,3 S S’ S0,0 S1,0 S2,0 S3,0 S0,1 S1,1 S2,1 S3,1 S0,2 S1,2 S2,2 S3,2 S0,3 S1,3 S2,3 S3,3 Gambar 2.18. Transformasi InvShiftRows

2.10.4.2. InvSubBytes

InvSubBytes juga merupakan transformasi bytes yang berkebalikan dengan transformasi SubBytes. Pada InvSubBytes, tiap elemen pada state dipetakan dengan menggunakan tabel inverse S-Box. Tabel ini berbeda dengan tabel S-Box dimana hasil yang didapat dari tabel ini adalah hasil dari dua proses yang berbeda urutannya, yaitu transformasi affine terlebih dahulu, baru kemudian perkalian invers dalam GF(28).

                                                                                                           1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 0 1 2 3 4 5 6 7 ' 0 ' 1 ' 2 ' 3 ' 4 ' 5 ' 6 ' 7 b b b b b b b b b b b b b b b b

Gambar 2.19. Matriks Invers Affine

Perkalian invers yang dilakukan pada transformasi InvSubBytes ini sama dengan perkalian invers yang dilakukan pada transformasi SubBytes.

2.10.4.3. InvMixColumns

Pada InvMixColumns, kolom-kolom pada tiap state (word) akan dipandang sebagai polinom atas GF(28) dan mengalikan modulo x4 + 1 dengan polinom tetap a-1(x) yang diperoleh dari :


(42)

a-1(x)= {0B}x3 + {0D}x2 + {09}x + {0E}. Atau dalam matriks :

)

(

)

(

)

(

'

x

a

x

s

x

s

                                         c c c c c c c c s s s s E D B B E D D B E D B E s s s s , 3 , 2 , 1 , 0 ' , 3 ' , 2 ' , 1 ' , 0 0 09 0 0 0 0 09 0 0 0 0 09 09 0 0 0

Gambar 2.20. Matriks InvMixColumns Hasil dari perkalian diatas adalah :

)

}

0

({

)

}

09

({

)

}

0

({

)

}

0

({

)

}

0

({

)

}

0

({

)

}

09

({

)

}

0

({

)

}

0

({

)

}

0

({

)

}

0

({

)

}

09

({

)

}

09

({

)

}

0

({

)

}

0

({

)

}

0

({

, 3 , 2 , 1 , ' , 3 , 3 , 2 , 1 , ' , 2 , 3 , 2 , 1 , ' , 1 , 3 , 2 , 1 , ' , 0 c c c c o c c c c c o c c c c c o c c c c c o c

s

E

s

s

D

s

B

s

s

B

s

E

s

s

D

s

s

D

s

B

s

E

s

s

s

s

D

s

B

s

E

s

2.10.4.4. Inverse AddRoundKey

Transformasi Inverse AddRoundKey tidak mempunyai perbedaan dengan transformasi AddRoundKey karena pada transformasi ini hanya dilakukan operasi penambahan sederhana dengan menggunakan operasi bitwise XOR.

2.10.5. Ekspansi Kunci

Algoritma AES mengambil kunci cipher, K, dan melakukan rutin ekspansi kunci (key expansion) untuk membentuk key schedule. Ekspansi kunci menghasilkan total Nb(Nr+1) word. Algoritma ini membutuhkan set awal key yang terdiri dari Nb word, dan setiap round Nr membutuhkan data kunci sebanyak


(43)

Nb word. Hasil key schedule terdiri dari array 4 byte word linear yang dinotasikan dengan [wi].

SubWord adalah fungsi yang mengambil 4 byte word input dan mengaplikasikan S-Box ke tiap-tiap data 4 byte untuk menghasilkan word output. Fungsi RotWord mengambil word [a0, a1, a2, a3] sebagai input, melakukan permutasi siklik, dan mengembalikan word [a1, a2, a3, a0]. Rcon[i] terdiri dari nilai-nilai yang diberikan oleh [xi-1, {00}, {00}, {00}], dengan xi-1 sebagai pangkat dari x (x dinotasikan sebagai {02} dalam field GF(28). Pseudocode dari proses ekspansi key dapat dilihat seperti yang ada di bawah berikut ini :

KeyExpansion(byte key[4*Nk], word w[Nb*(Nr+1)], Nk)

begin

word temp i = 0

while (i < Nk)

w[i] = word(key[4*i], key[4*i+1], key[4*i+2], key[4*i+3])

i = i +1 end while i = Nk

while (i < Nb*(Nr+1)) temp = w[i -1] if (i mod Nk = 0)

temp = SubWord(RotWord(temp)) xor Rcon[i/Nk]

else if (Nk > 6 and i mod Nk = 4) temp = SubWord(temp)

end if

w[i]=w[i-Nk] xor temp i = i + 1

end while end


(44)

Dari pseudocode dapat dilihat bahwa word ke Nk pertama pada ekspansi kunci berisi kunci cipher. Setiap word berikutnya, w[i], sama dengan XOR dari word sebelumnya, 1] dan word Nk yang ada pada posisi sebelumnya, w[i-Nk]. Untuk word pada posisi yang merupakan kelipatan Nk, sebuah transformasi diaplikasikan pada w[i-1] sebelum XOR, lalu dilanjutkan oleh XOR dengan konstanta round, Rcon[i]. Transformasi ini terdiri dari pergeseran siklik dari byte data dalam suatu word RotWord, lalu diikuti aplikasi dari lookup tabel untuk

semua 4 byte data dari word SubWord.

(http://www.google.co.id/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved= 0CFYQFjAE&url=http%3A%2F%2Fti.ukdw.ac.id%2Fojs%2Findex.php%2Finfo rmatika%2Farticle%2Fdownload%2F69%2F29&ei=eHykT_2yDIPtrQfo2LDTAQ &usg=AFQjCNE4DKmd9DfpZp3kQ5X2fiXu4MZYng)

2.11. Algorithma Dan Pemrograman

Pada era tahun 1950 –1960, kecepatan komputer sangat rendah dan disertai juga dengan keterbatasan dari media penyimpan, sehingga tentunya berakibat juga dengan keterbatasan dalam penulisan program-program komputer. Namun di era saat ini, dengan kecepatan komputer yang cukup handal demikian juga ketersediaan dari media penyimpan yang cukup handal dan besar, serta didukung juga dengan perkembangan bahasa pemrograman yang ada sehingga kita dapat dengan mudah membuat suatu program. Permasalahan yang timbul dalam pembuatan program tersebut adalah bagaimana kita dapat memahaminya, sehingga apabila terdapat perubahan yang akan dilakukan kita dapat


(45)

memperbaikinya secara mudah. Hal ini tentu saja harus kita perhatikan terutama apabila kita melihat dari biaya yang harus dikeluarkan dalam pembuatan program tersebut. Istilah Pemrograman Terstruktur (Structured Programming) mengacu dari suatu kumpulan tehnik yang dikemukan oleh Edsger Dijkstra. Dengan tehnik ini akan meningkatkan produktifitas programmer, dengan mengurangi waktu yang dibutuhkan dalam penulisan (write), pengujian (test), penelusuran kesalahan (debug) dan pemeliharan(maintain) suatu program. Pada pembahasan berikut ini kita akan melihat bagaimana tehnik ini yang pendekatan yang dilakukan secara modular, dapat membantu kita dalam membangun suatu program.

Dalam pemrograman secara modular, suatu program akan dipilah kedalam sejumlah modul, dimana setiap modul menjalankan fungsinya sendiri. Tentunya fungsi yang dijalankan oleh setiap modul sangat terbatas sesuai dengan ruang lingkup yang akan dikerjakan. Dengan adanya sejumlah modul program ini tentu saja kesalahan yang timbul dapat dikurangi. Setiap program tentu akan memiliki program utamanya, yang kemudian akan memanggil sejumlah modul-modul yang ada.

Pemrograman secara modular ini dapat diimplementasikan dengan penggunaan subroutine, suatu kelompok instruksi yang menjalankan suatu pengolahan yang sifatnya terbatas seperti pencetakan, pembacaan untuk proses input atau untuk proses penghitungan. Subroutine dapat dikelompokkan menjadi internal subroutine dan external subroutine.

2.11.1. Internal Subroutines

Adalah bagian dari suatu program yang digunakan. Dideklarasikan cukup sekali saja, untuk sejumlah proses yang sama akan dilakukan oleh program


(46)

tersebut. Program akan memanggil subroutines tersebut jika diperlukan dan apabila telah selesai, kontrol selanjutnya dikembalikan ke instruksi berikutnya. Instruksi yang mengendalikan kontrol transfer ke suatu subroutine umumnya dikenal sebagai call dan return.

2.11.2. External Subroutines

Diletakkan secara terpisah dari program yang menggunakan subroutine tersebut. Subroutine ini dideklarasikan supaya bisa dipakai oleh program yang lain. Untuk menggunakannya tentu seorang programmer harus mengetahui dimana ? , apa namanya ?, bagaimana pengiriman datanya ?, bagaimana jawaban yang akan diperoleh ?. Subroutine ini biasanya digunakan untuk pemrosesan yang

komplek, yang dibutuhkan oleh banyak user.

(http://www.google.co.id/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved= 0CGwQFjAC&url=http%3A%2F%2Fjkw1.files.wordpress.com%2F2007%2F10

%2Fpetruk-pertemuan-10.doc&ei=832kT4-bO43PrQfRopD_AQ&usg=AFQjCNHXZwN5dU8A-Y3cm4nwkotAUKe2rA)

2.11.3. Pendekatan Top Down

Pemrograman terstruktur mempergunakan Pendekatan Top-Down dalam perencanaan program. Merupakan pendekatan yang menggambarkan pemecahan modul kompleks/besar menjadi modul-modul yang lebih sederhana/kecil Berbentuk Struktur Hirarki. Di dalam pemrograman terstruktur, terdapat 3 bentuk struktur perintah yang dipergunakan :

a. Sequence Structure b. Loop Structure


(47)

c. Selection Structure

Struktur perintah yang instruksinya dieksekusi berdasarkan urutannya. Dimulai dari bagian atas dan diakhiri di bagian bawahnya. Digambarkan dengan bujur sangkar, sebagai simbol untuk : Input dan Output Operasi aritmatika. Operasi pemindahan data dalam memori komputer. Menggambarkan perulangan eksekusi dari satu atau lebih instruksi Menggambarkan struktur yang mengeksekusi suatu instruksi hanya apabila kondisinya terpenuhi.

Algoritma merupakan sekumpulan langkah-langkah untuk menyelesaikan suatu tugas. Penamaan “Algoritma” diambil dari seorang ahli matematika bernama Al-Khwarizmi. Sebuah algoritma harus:

a. Jelas, tepat dan tidak membingungkan b. Memberikan penyelesaian yang tepat c. Mempunyai akhir

Tujuh langkah dasar dalam pengembangan program : a. Definisi Masalah

b. Outline Solusi

c. Pengembangan outline ke dalam algoritma d. Melakukan test terhadap algoritma

e. Memindahkan algoritma ke dalam bahasa pemrograman f. Menjalankan program pada komputer

g. Dokumentasi dan pemeliharaan program

h. Pada tahap ini memerlukan pemahaman terhadap permasalahan dengan membaca berulang kali sampai dengan mengerti apa yang dibutuhkan.


(48)

Setelah permasalahan didefinisikan, permasalahan dapat di bagi kedalam tugas tugas atau langkah langkah yang lebih kecil dan menghasilkan outline solusi. Outline solusi pada langkah kedua dikembangakan menjadi algoritma yaitu sebuah set langkah yang menggambarkan tugas yang akan dikerjakan dan urutan pengerjaannya.

Tujuan utama dari melakukan test terhadap algoritma adalah adalah untuk menemukan kesalahan utama logika sejak awal, sehingga akan lebih mudah diperbaiki. Data test diperlukan untuk melakukan test terhadap algoritma ini. Setelah ke-empat langkah sebelumnya dilakukan, maka pencodingan dapat dimulai dengan menggunakan bahasa pemrograman yang dipilih. Setelah pengcodingan, maka program dapat dijalankan pada komputer. Jika Program sudah didesain dengan baik, maka akan mengurangi tingkat kesalahan dalam melakukan testing program.

Langkah ini perlu dilakukan beberapa kali, sehingga program yang dijalankan dapat berfungsi dengan benar. Dokumentasi melibatkan eksternal dokumentasi (hierarchy chart, algoritma solusi, dan hasil data test) dan internal dokumentasi (coding program). Pemeliharaan program meliputi perubahan yang dialami oleh program (perbaikan ataupun penambahan modul, dan lain-lain). (http://www.google.co.id/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved= 0CGwQFjAC&url=http%3A%2F%2Fjkw1.files.wordpress.com%2F2007%2F10


(49)

3.1. Analisis Kebutuhan

Aplikasi AESSMS ini digunakan untuk mengirim dan menerima pesan. AESSMS akan mengenkripsi pesan yang akan dikirim menjadi

ciphertext dan AESSMS akan mendekripsi pesan masuk berupa ciphertext

menjadi plaintext.

Dalam membangun aplikasi AESSMS, diperlukan batasan yang jelas sebagai tujuan utamanya agar tidak keluar dari rencana yang telah ditetapkan. Beberapa kebutuhan sistem yang akan didefinisikan antara lain : 1. Memiliki kemampuan untuk mengirimkan dan menerima pesan.

2. Memiliki kemampuan untuk mengenkripsi pesan dan memberikan header 3. AESSMS pada pesan yang telah di enkripsi.

Tidak semua telepon selular dapat menjalankan aplikasi AESSMS. Berikut ini adalah spesifikasi dari telepon selular agar dapat menjalankan aplikasi AESSMS :

1. Mempunyai Java Runtime Environment. 2. Mempunyai MicroEdition-profile MIDP 2.0.

3. Mempunyai MicroEdition-configuration CLDC 1.0.

Adapun software requiment spesification (SRS) yang akan dikembangkan di AESMS dapat dilihat pada tabel 3.1. berikut ini :


(50)

Tabel 3.1 Spesifikasi kebutuhan perangkat lunak

No SRS ID Deskripsi

1 SRS – KSMS – 01 Menerima input berupa no. tujuan, pesan dan password

2 SRS – KSMS – 02 Mengubah pesan dan password ke kode ASCII

3 SRS – KSMS – 03 Mengenkripsi pesan menggunakan key

(password) yang telah diinputkan

4 SRS – KSMS – 04 Memberikan header AESSMS pada

pesan yang telah dienkripsi (ciphertext) 5 SRS – KSMS – 05 Mengirimkan pesan dan memberikan laporan

kepada pengirim bahwa pesan telah dienkripsi dan dikirim ke no.tujuan

6 SRS – KSMS – 06 Memeriksa pesan apakah memiliki header AESSMS

7 SRS – KSMS – 07 Memberikan no.pengirim kepada penerima 8 SRS – KSMS – 08 Mendekripsi ciphertext menggunakan key

(password) yang telah diinputkan

9 SRS – KSMS – 9 Mengubah pesan dari kode ASCII ke karakter 10 SRS – KSMS – 10 Menampilkan pesan yang telah di dekripsi

kepada penerima

3.2. Pemodelan Fungsional

3.2.1. Diagram Alir

Pada gambar 3.1 berikut merupakan diagram alir sistem. Pada diagram alir sistem terdapat langkah-langkah dalam menjalankan aplikasi AESSMS, sehingga user dapat mengetahui cara kerja sistem secara umum.


(51)

(52)

3.2.2. Data Context Diagram

Pendefinisian dengan Data Context Diagram (DCD) atau DFD level 0 memberikan data yang mengalir antara sistem dengan lingkungan yang digambarkan secara global. DCD dapat dilihat pada gambar 3.1 berikut ini :

Gambar 3.2. Data Context Diagram

Pada gambar 3.2 menjelaskan bahwa pengirim menginputkan pesan,

password dan nomor tujuan kepada sistem. Sistem memberikan output berupa laporan pesan terkirim kepada pengirim. Penerima menginputkan password

kepada sistem dan sistem memberikan output berupa pesan dan nomor pengirim kepada penerima.

3.2.3. Data Flow Diagram

Dari Data Context Diagram yang diperlihatkan pada gambar 3.2, dapat dibuat diagram alir data (Data Flow Diagram) yang merupakan penjelasan lebih rinci dari DCD pada setiap tahapan. DFD dapat dilihat pada gambar 3.3. berikut ini :


(53)

Gambar 3.3. DFD Level 1 Aplikasi Perangkat Lunak AESSMS

Gambar 3.3 merupakan DFD level 1 dari aplikasi perangkat lunak AESSMS. Pada DFD level 1, sistem akan dipecah menjadi proses-proses kecil sehingga dapat menjelaskan proses-proses dan arus data yang mengalir dalam sistem. Proses-proses yang terdapat dalam DFD level 1 adalah :

1. Transformasi kode ASCII.

Proses ini melakukan transformasi pesan dan password ke dalam kode ASCII. 2. Enkripsi.

Proses ini melakukan pengenkripsian pesan dengan metode enkripsi AES dengan key sesuai dengan password yang diinputkan.


(54)

3. Pemberian Header

Pesan yang telah dienkripsi menjadi ciphertext akan diberikan header sebagai penanda bahwa pesan tersebut adalah pesan AESSMS.

4. Pengiriman pesan

Proses ini melakukan pengiriman pesan yang telah dienkripsi dan memberikan laporan pengiriman kepada pengirim bahwa pesan telah dienkripsi dan dikirimkan ke nomor yang telah diinputkan.

5. Pemeriksaan Header

Pada proses ini pesan yang masuk akan diperiksa apakah memiliki header AESSMS. Apabila pesan memiliki header maka pesan akan diteruskan ke proses selanjutnya yaitu dekripsi. Jika pesan tidak memiliki header maka sistem akan mengabaikan pesan tersebut.

6. Dekripsi

Proses ini melakukan pendekripsian pesan sesuai dengan password yang diinputkan. Apabila password benar maka ciphertext akan menjadi pesan asli. Jika password salah pesan akan tetap didekripsi akan tetapi pesan yang didapat bukan pesan asli. Ini dikarenakan key yang dipakai untuk mendekripsi

ciphertext salah.

3.3. Perancangan Sistem

Proses perancangan merupakan deskripsi dari kebutuhan yang direpresentasikan ke dalam perangkat lunak sehingga dapat diperkirakan kualitasnya sebelum dimulai pembuatan code atau coding. Aplikasi AESSMS ini terdiri dari 5 kelas yaitu : AESSMSMIDlet, SendScreen, ReceiveScreen, MessageCodec,


(55)

ChangeScreen. Proses coding dibuat menggunakan aplikasi Jcreator. Secara garis besar, fungsi dari masing-masing kelas adalah sebagai berikut :

1. AESSMSMIDlet, kelas ini adalah kelas utama yang mengatur pengiriman dan penerimaan pesan. Kelas ini yang mengatur tampilan utama dari aplikasi AESSMS.

2. SendScreen, kelas ini digunakan untuk mengatur tampilan pengiriman pesan dan mengirimkan pesan ke nomor tujuan yang telah diinputkan.

3. ReceiveScreen, kelas ini digunakan untuk mengatur tampilan penerimaan pesan.

4. MessageCodec, kelas ini digunakan untuk melakukan enkripsi dan dekripsi pesan.

5. ChangeScreen, kelas ini digunakan untuk mengatur tampilan laporan.

3.4. Perancangan Fungsi

Agar proses pengiriman dan penerimaan dapat berlangsung perlu dibuat fungsi untuk membuat koneksi. Fungsi untuk membuat koneksi seperti di bawah ini :

. . .

String connection ="sms://:" + port; try {

conn = (MessageConnection) Connector.open(connection); conn.setMessageListener(this); }

. . .

Untuk mengirimkan pesan dibuat fungsi sendMessage(). . . .

void sendMessage (String number, String plainText, String password)


(56)

{ BinaryMessage binarySMS =

(BinaryMessage)conn.newMessage(MessageConnection.BIN ARY_MESSAGE);

String address = new

StringBuffer("sms://").append(number).append(":").ap pend(port).toString();

binarySMS.setAddress(address); )

Jika ada pesan yang datang maka fungsi yang digunakan adalah : . . .

Public void notifyIncomingMessage(MessageConnection conn) { if (conn==this.conn)

{ try

{ BinaryMessage incomingMessage = (BinaryMessage)conn.receive(); String message = new

String(incomingMessage.getPayloadData()); if (message.startsWith("AESSMS: "))

{ ReceiveScreen handler = new

ReceiveScreen(this,incomingMessage); Display.getDisplay(this).setCurrent(handler);} else

ErrorScreen.showError("pesan yang diterima bukan"+"\n AESSMS", displayable); }

catch (IOException e)

{ ErrorScreen.showError("gagal menerima pesan karena "+e.getMessage(),displayable); } } }

. . .

Untuk menutup koneksi digunakan fungsi close(). . . .

public void destroyApp(boolean unconditional) { try { if (conn!=null) {

conn.close(); } } catch (IOException e) { } }


(57)

Untuk mengenkripsi pesan digunakan fungsi sebagai berikut : . . .

public byte[] enkrip(byte[] input, byte[] kunci) { byte[] output = new byte[input.length];

byte buffer, bufferkunci;

for(int i = 0; i<input.length; i++) { buffer = input[i];

bufferkunci = kunci[i%kunci.length]; buffer+=bufferkunci;

if(buffer>=256) buffer-=256; output[i]=buffer;

} return output; } . . .

Fungsi untuk mendekripsi pesan sebagai berikut . . .

public byte[] dekrip(byte[] input, byte[] kunci) { byte[] output = new byte[input.length];

byte buffer, bufferkunci; for(int i=0;i<input.length;i++) { buffer = input[i];

Bufferkunci = kunci[i%kunci.length]; if(buffer<bufferkunci) buffer+=256; buffer-=bufferkunci;

output[i]=buffer; } return output; } . . .

Plaintext dirubah menjadi ciphertext dan diberikan header tambahan untuk menandakan bahwa pesan itu adalah pesan yang telah dienkripsi. Fungsi yang digunakan adalah sebagai berikut :

. . .

byte[] cipherText = kriptoku.enkrip(content, key); StringBuffer buffer =


(58)

buffer.append(new String(cipherText)); cipherText = buffer.toString().getBytes(); return cipherText;

. . .

Pesan akan disimpan ke dalam variabel array dari byte (kode ASCII) untuk di enkripsi. Fungsi yang digunakan adalah :

. . .

static byte[] encodeMessage(String plainText, String password) throws Exception

{ byte content[] = plainText.getBytes(); byte key[] = password.getBytes(); } . . .

Pesan yang masuk akan diperiksa apakah memiliki header AESSMS atau tidak di dalamnya. Fungsi yang digunakan adalah :

. . .

if (message.startsWith("AESSMS: ")) {

ReceiveScreen handler = new

ReceiveScreen(this,incomingMessage);

Display.getDisplay(this).setCurrent(handler); }

else

ErrorScreen.showError("pesan yang diterima bukan"+"\n AESSMS", displayable);

. . .

3.5. Perancangan Antar Muka

Perancangan antarmuka adalah proses membuat perancangan form-form tampilan layar, selain itu dalam proses ini juga ditentukan bentuk dan isi dokumen sumber untuk memasukkan data yang kemudian diolah menjadi keluaran yang dapat digunakan oleh pengguna.


(59)

3.5.1. Perancangan form yang digunakan user untuk mengirimkan SMS

Pada form menu utama, seperti yang terlihat pada gambar 3.4, user dapat memilih menu mengirim pesan ataupun membaca pesan. Apabila user memilih menu mengirim pesan dapat memilih compose message dan bila ingin membaca pesan dapat memilih menu inbox.

Sedangkan pada form kirim pesan seperti pada gambar 3.5, user

menginputkan nomor tujuan, pesan dan password. Password akan digunakan sebagai key untuk mengenkripsi pesan. Setelah pesan dienkripsi, pesan dikirimkan ke nomor tujuan yang telah diinputkan. Setelah proses pengiriman selesai maka muncul form laporan yang berisi laporan pesan telah dienkripsi, ukuran pesan dan pesan telah terkirim ke nomor tujuan.


(60)

Gambar 3.5. Rancangan Form Pengiriman Pesan


(61)

Pada gambar 3.6, dikarenakan tidak ada pesan yang terdapat dalam kotak inbox, maka tampilan pada kotak inbox kosong. Setelah pesan masuk, maka user akan diminta menginputkan password sebagai key untuk mendekripsi ciphertext. Jika password benar maka ciphertext akan didekripsi menjadi plaintext yang merupakan pesan asli.

Jika password yang diinputkan salah, maka ciphertext akan tetap di dekripsi menjadi plaintext tetapi plaintext yang diterima bukan merupakan pesan asli. Ini dikarenakan key yang digunakan untuk mendekripsikan ciphertext

salah. Selain itu pada aplikasi ini juga terdapat fasilitas Changescreen, yang berfungsi untuk menampilkan proses untuk mengganti password.


(62)

4.1. Analisis dan Perancangan Sistem

Konsep dari kegiatan analisis yaitu memecahkan masalah dengan menguraikan bagian-bagian komponen dengan mempelajari cara kerjanya dan berinteraksi dengan maksud mengidentifikasi dan mengevaluasi permasalahan-permasalahan yang terjadi dan kebutuhan-kebutuhan yang diharapkan sehingga dapat diusulkan perbaikan untuk mencapai tujuan.

4.1.1. Analisis Kelemahan Sistem

Pada tahap analisis kelemahan sistem akan diuraikan tentang kelemahan dan masalah dari sistem keamanan data sms yang telah ada kemudian mencari solusi dari masalah tersebut. Berdasarkan penelitian, maka analisis yang tepat untuk mengetahui kelemahan sistem adalah analisis SWOT. Analisis SWOT merupakan perancangan strategis yang digunakan untuk mengevaluasi kekuatan, kelemahan, peluang, dan ancaman dalam suatu proyek. Dengan menggunakan metode analisis SWOT maka akan diketahui mengenai kekuatan, kelemahan, peluang, dan juga nacaman pada sistem. Adapun analisis SWOT terhadap Aplikasi AESSMS adalah sebagai berikut :

a. Kekuatan (Strengths)

Adapun kekuatan dari sistem ini adalah sudah banyak masyarakat yang telah menggunakan telepon seluler sebagai sarana telekomunikasi. SMS merupakan salah satu sarana telekomunikasi yang sering digunakan baik itu dalam urusan pribadi maupun bisnis. Sebagian orang menginginkan data SMS pada telepon


(63)

seluler mereka tidak bisa dibaca oleh sembarang orang, hanya orang tertentu saja yang diperbolehkan membaca.

Maka solusi dari permasalahan tersebut adalah dengan cara mengenkripsi pesan yang akan dikirimkan agar tidak bisa dibaca oleh pihak lain. Bahkan cara enkripsi ini juga ampuh dari penyadapan, karena untuk membuka pesan tersebut harus menggunakan aplikasi yang sama dan harus mengetahui kata kuncinya.

b. Kelemahan (Weakness)

Adapun kelemahan dari sistem yang sudah ada adalah sebagian besar telepon seluler belum disediakan aplikasi pengamana data sms. Walaupun ada aplikasi tersebut hanya sekedar memberikan keamanan data sms pribadi menggunakan password dan belum bisa melakukan enkripsi.

c. Peluang (Opportunity)

Dengan perkembangan teknologi yang sangat pesat banyak masyarakat yang ingin membutuhkan keamanan dalam sarana berkomunikasi. Komunikasi yang sering digunakan salah satunya adalah SMS, karena SMS merupakan sarana komunikasi yang murah dan juga cepat. Tentunya banyak hal-hal dalam SMS yang bersifat rahasia baik itu urusan pribadi maupun bisnis. Dan untuk melindungi data SMS tersebut dibutuhkan aplikasi yang mampu melindungi data SMS dari pihak yang tidak dikehendaki.

d. Ancaman(Threats)

Adapun ancaman dari sistem ini adalah dengan perkembangan teknologi yang sangat pesat maka tentunya akan berkembang juga ilmu kriptografi yang lebih canggih lagi. Untuk perkembangan selanjutnya tentunya banyak


(64)

aplikasi keamanan data SMS yang menawarkan fitur yang lebih lengkap dan canggih dari sisi keamanan. Selain itu telepon seluler juga akan berkembang dengan pesat dan teknologi Java MIDP 2.0 akan ketinggalan dengan teknologi yang lebih baru dan canggih lagi.

4.1.2. Analisis Kebutuhan Sistem

Analisis kebutuhan sistem sangat dibutuhkan guna menunjang penerapan sistem baru, apakah sistem baru yang akan diterapkan sudah sesuai dengan kebutuhan. Sejalan dengan perancangan sistem yang akan dibuat dibutuhkan perangkat teknologi pendukung. Perangkat teknologi itu meliputi perangkat keras (hardware), perangkat lunak (software) serta pengguna (brainware). Analisis kebutuhan sistem ini bertujuan untuk mengetahui sistem seperti apa yang diterapkan, perangkat keras dan perangkat lunak apa yang sesuai, serta siapa saja pengguna yang akan menggunakan sistem ini.

4.1.3. Analisis Kebutuhan Fungsional

Kebutuhan fungsional berisi proses-proses apa saja yang nantinya dilakukan oleh sistem. Kebutuhan fungsional juga berisi informasi-informasi apa saja yang harus ada dan dihasilkan sistem. Sistem yang dikembangkan harus mempunyai functional requirements sebagai berikut :

1. Sistem mampu membaca pesan masuk.

2. Sistem mampu memasukkan daftar phonebook yang ada pada telepon seluler. 3. Sistem mampu mengenkripsikan pesan yang akan dikirim sesuai dengan kunci

yang telah dimasukkan.

4. Sistem mampu mendekripsikan pesan masuk sesuai dengan kunci yang telah dimasukkan.


(65)

5. Sistem mudah untuk digunakan oleh user.

Berdasarkan kebutuhan fungsional sistem terlihat bahwa sistem membutuhkan sebuah sistem pengaman yang mampu mengamankan data sms dengan aman dan mudah digunakan. Adapun sistem yang mampu memenuhi kebutuhan tersebut adalah sistem Aplikasi AESSMS.

4.1.4. Analisis Kebutuhan Nonfungsional

Kebutuhan nonfungsional menjabarkan apa saja yang harus dimiliki oleh sistem agar dapat berjalan. Kebutuhan nonfungsional meliputi ketersedian perangkat keras, perangkat lunak dan pengguna.

4.1.5. Kebutuhan Perangkat Keras (hardware)

Bagian ini menjelaskan hardware atau perangkat keras yang digunakan dalam proses perancangan aplikasi AESSMS. Adapun spesifikasi perangkat keras yang digunakan adalah sebagai berikut :

a. PC (Personal Computer)

PC (Personal Computer) yang digunakan sebagai pengembangan dan pembuatan aplikasi AESSMS dengan spesifikasi sebagai berikut :

1. Processor Intel Core 2 Duo CPU T6600 2.20GHz 2. Memory 2GB DDR2

3. Graphics Card Intel GMA X4500 MHD (shared) 4. Display 14.1” TFT WXGA

5. Hardisk Drive 320GB HDD 6. Optical Drive DVD-RW Drive


(66)

b. Handphone

Handphone yang digunakan untuk menguji program dengan spesifikasi sebagai berikut :

1. Layar TFT 262.144 warna, 176 x 208 piksel 2. Sistem Operasi Symbian OS v9.1, series 60 rel 3.0 3. CPU ARM 9 235 MHz processor

4. Kamera 2 MP, 1600 x 1200 piksel 5. Memori 10 MB

6. SMS, MMS, Email, Instant Messaging 7. WAP 2.0/xHTML, HTML

8. Java MIDP 2.0

9. Battery Li – Ion 1100mAh (BP-6M)

4.1.6. Kebutuhan Perangkat Lunak

Analisis perangkat lunak bertujuan untuk mengetahui secara tepat perangkat lunak apa saja yang dibutuhkan untuk menjalankan suatu aplikasi. Adapun perangkat lunak yang dibutuhkan adalah :

1. Sistem Operasi Microsoft Windows Seven

2. Developer tools yang dipergunakan adalah Netbean IDE dan Netbean Platform 6.9.1 (Dual Licence : CDDL dan GNU-GPL Version 2 With Classpath Exception).

3. Java Developement Kit 1.6.0_21 dengan Java Hot Spot VM 17.0-b17 dan Java Platform Micro Edition Standard Development Kit 3.0


(1)

Karakter 622183

S

 83

Karakter V862165

A

 65

Karakter D682189

Y

 89

Karakter V862165

A

 65

Maka, hasil deskripsi dari chipertext “>VDV” kembali ke dalam bentuk plaintext

“DIAN”. Tidak ada informasi (karakter) sedikitpun yang hilang ketika

mengembalikan chipertext ke dalam plaintext.

4.5. Pengujian Kunci

Penulis mencoba mengasumsikan panjang kunci 128-bit dan didapatkan

hasil dari kombinasi yaitu 128C169,31019 kemungkinan Bila diasumsikan

mempunyai seribu unit komputer dan setiap uniti komputer mencoba sebanyak seribu kunci per detiknya, maka dalam satu tahun (31.536.000 detik), komputer

mampu mencoba 10310331.536.0003,15361013 kunci.

Untuk menemukan kunci 128-bit, rata-rata diperlukan waktu sebagai berikut : 000 . 000 . 3 10 3 1536 , 3 / 10 3 , 9 6 13 19   

kunci kuncitahun

Komputer-komputer ini pun harus dioperasikan terus-menerus selama 3 juta tahun. Jadi dengan seribu komputer dan setiap komputer mempunyai kemampuan mencoba sebanyak seribu kunci perdetiknya, akan dibutuhkan waktu

tahun

Hak Cipta © milik UPN "Veteran" Jatim :

Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :


(2)

68

rata-rata 3 juta tahun untuk menemukan kunci 128-bit. Kemungkinan untuk

menemukan kunci ini disebut dengan teknik brute force attack (menemukan kunci

dengan mencoba satu-persatu kunci). Sedangkan kunci ini digunakan untuk satu pesan singkat.

Di bawah ini terdapat tabel, kemungkinan untuk menemukan kunci 128-bit, 64-128-bit, dan 32-128-bit, dengan asumsi dengan seribu komputer dan setiap komputer mencoba sebanyak seribu kunci per-detiknya. Hasilnya dapat dilihat pada tabel 4.3 dibawah ini.

Tabel 4.3. Pengujian Kunci

Panjang

Kunci Jumlah Kemungkinan Kunci

Waktu Untuk Memecahkan Kunci

128-bit 128C169,31019 3 juta tahun

64-bit 128C81,41012 14 hari


(3)

69

5.1. Kesimpulan

Kesimpulan yang didapatkan dari implementasi kriptografi pada sms adalah :

1. Algoritma yang digunakan yaitu algoritma kriptografi simetrik, artinya kunci

yang sama digunakan untuk enkripsi dan deskripsi.

2. Algoritma simetrik ini termasuk dalam jenis stream chiper, artinya proses

untuk enkripsi dan deskripsi dilakukan dengan cara satu bit tunggal pada satu waktu

3. Semakin panjang kunci, maka semakin sulit untuk dipecahkan dan semakin

kecil peluang memecahkan kunci dalam waktu singkat.

4. Algoritma kriptografi simetrik ini hanya membutuhkan memori yang kecil

sehingga dapat diimplementasikan pada ponsel.

5. Dengan aplikasi enkripsi SMS, pesan yang terkirim menjadi sulit

dipahami sehingga dapat menjadi alternatif media komunikasi yang aman untuk pengiriman pesan singkat.

6. Kata yang dimasukkan sebagai plaintext hasilnya sama dengan keluaran, hal

ini menunjukkan bahwa proses dekripsi terlaksana dengan baik.

5.2. Saran

Berdasarkan kesimpulan diatas, maka berikut ini adalah beberapa saran yang bisa diberikan oleh penulis :

Hak Cipta © milik UPN "Veteran" Jatim :

Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :


(4)

70

1. Agar keamanan data SMS lebih aman, bagi pengguna aplikasi ini

direkomendasikan menggunakan panjang kunci 128-bit

2. Bagi para pembaca yang akan menyusun bahan yang serupa dengan analisa

yang penulis lakukan, anda dapat memakai algoritma kriptografi asimetrik maupun hybrid.


(5)

71

Bayu Kristian Nugroho. Aplikasi Enkripsi Pada Telepon Seluler Berbasis J2me Menggunakan Metode Vignere Chiper.

http://eprints.undip.ac.id/22972/1/Laporan_TA_Bayu_K_N_-_J2F004262.pdf. Tanggal akses: 10 April 2012

Didi Surian. Algoritma Kriptografi Rijndael.

http://puslit2.petra.ac.id/ejournal/index.php/jte/article/viewFile/17452/17369. Diakses tanggal 15 Mei 2012

Brian Gladman. A Specification for Rijndael, The AES Algorithm. 2003

www.esat.kuleuven.ac.be/~rijmen/rijndael/

Joan Daemen, Vincent Rijmen. AES Proposal : Rijndael, Document Version 2. NIST,

1999

Menezes Alfred, Oorschot Paul Van and Vanston Sean, 1996. “Handbook of

Applied Cryptography”, CRC Press

Piroumian Vartan. 2002. “Wireless J2ME Platform Programming”. Prentice Hall

PTR.

Riyadismkmuh1salam. Siklus Hidup Midlet J2me.

riyadi.smkmuh1salam.sch.id/?p=63. Tanggal akses : 6 Mei 2012

Shalahuddin.M & A.S. Rosa,2006,Pemrograman j2me(belajar cepat pemrograman

perangkat telekomunikasi mobile),I nform at ika,Jakart a.

Sommerville, Ian, 2003. “Rekayasa Perangkat Lunak”. Erlangga. Jakarta.

Supardi Yuniar. 2008 “Pemrograman Handphone dengan J2ME”, PT elex Media

Komputindo. Jakarta.

Suyanto Asep Herman. Review Metodologi Pengembangan Perangkat Lunak. http://www.asep-hs.web.ugm.ac.id/Artikel/RPL/RPL.pdf. Tanggal akses 20 Januari 2012.

Wicaksono Kukuh Nasrul. Modifikasi Vigenere Cipher Dengan Menggunakan

Teknik Substitusi Berulang Pada Kuncinya.

http://www.informatika.org/~rinaldi/Kriptografi/2008-

2009/Makalah1/MakalahIF30581-2009-a002.pdf. Tanggal akses: 10 Desember 2011.

Hak Cipta © milik UPN "Veteran" Jatim :

Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :


(6)

72