• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2017

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

Copied!
82
0
0

Teks penuh

(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.

(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

(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).

(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.

(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

(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

(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

(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

(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

(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

(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

(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

(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

(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

(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

(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

(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

(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.

(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

(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

(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)

(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

(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

(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)

(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

(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

(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

(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

(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

(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

(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

(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

(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,

(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

(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

(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

(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.

(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,

(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

(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

(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

(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);

(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

Gambar

Gambar 2.1 Daur Hidup MIDlet
Gambar 2.2. Hirarki Kelas Displayable
gambar 2.4 berikut ini :
Gambar 2.5 Pemaketan Aplikasi MIDlet
+7

Referensi

Dokumen terkait

Penelitian ini bertujuan untuk mengetahui dan menggambarkan tingkat konsep diri pada sarjana yang belum bekerja di purwokerto. Variable yang digunakan dalam penelitian ini

Pada Tabel 6 di atas dapat dilihat bahwa penggunaan herbisida Amonium Glufosinat dan Metil Metsulfuron secara tunggal mendapatkan hasil penekanan gul- ma yang

Berdasarkan hasil wawancara dengan pimpinan perusahaan mengenai pengetahuan yang dimiliki oleh Internal Auditor maka dapat disimpulkan bahwa Auditor Internal sudah memiliki

Definisi operasionalisasi adalah penentuan konstruk sehingga menjadi variabel yang dapat diukur, yang dalam penelitian ini terdiri atas Service Quality, Brand

Sesuai dengan Peraturan Menteri Dalam Negeri Nomor 13 Tahun 2006 tentang Pedoman Pengelolaan Keuangan Daerah, urusan wajib yang dilaksanakan oleh Kecamatan

adanya atau tidak adanya satu atau lebih stressor yang jelas dan; suatu onset pasca persalinan. Walaupun adanyagejala psikotik mungkin jelas, informasi mengenai

Pethikan kasebut uga padha karo andharan sadurunge, yaiku apa kang diandharake trep karo apa kang diwangsulake.. Bab kasebut ndadekake swasana utawa kahanan pacaturan

Nilai akurasi atau efisiensi penelitian ini jika menggunakan sampel sputum adalah 76% yang artinya bila pemeriksaan dengan TBAg rapid test kit ini digunakan