17 BAB 2 DASAR TEORI 2.1 Pengertian Kriptografi Kriptografi, secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita. Selain pengertian tersebut terdapat pula pengertian ilmu yang mempelajari teknikteknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data. Tidak semua aspek keamanan informasi ditangani oleh kriptografi. Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi yaitu : 1. Kerahasiaan, adalah layanan yang digunakan untuk menjaga isi dari informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka/mengupas informasi yang telah disandi. 2. Integritas data, 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. 3. Autentikasi, 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 18 melalui kanal harus diautentikasi keaslian, isi datanya, waktu pengiriman, dan lain-lain. 4. Non-repudiasi., atau nirpenyangkalan adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat. 2.1.1 Kriptografi Modern Kriptografi modern merupakan suatu perbaikan yang mengacu pada kriptografi klasik. Pada kriptogarfi modern terdapat berbagai macam algoritma yang dimaksudkan untuk mengamankan informasi yang dikirim melalui jaringan komputer. Algoritma kriptografi modern terdiri dari tiga bagian: 1. Algoritma Simetris Algoritma simetris adalah algoritma yang menggunakan kunci yang sama untuk enkripsi dan dekripsinya. Algoritma kriprografi simetris sering disebut algoritma kunci rahasia, algoritma kunci tunggal, atau algoritma satu kunci, dan mengharuskan pengirim dan penerima menyetujui suatu kunci tertentu. Kelebihan dari algoritma kriprografi simetris adalah waktu proses untuk enkripsi dan dekripsi relatif cepat. Hal ini disebabkan efesiensi yang terjadi pada pembangkit kunci. Karena prosesnya relative cepat maka algoritma ini tepat untuk digunakan pada sistem komunikasi digital secara real timeseperti GSM. Contoh fazil ingin mengirim pesan x dengan aman menggunakan saluran umum kepada Bob. fazil menggunakan kunci xƠ yang sebelumnya telah disepakati antara Alice dan Bob. Untuk mengirim pesan e xƠ (x) kepada Bob, dia akan deskripsi teks 19 kode yang diterima dengan kunci yang sama dengan yang digunakan untuk memperoleh akses ke pesan yang diterima. Begitu juga sebaliknya. Aplikasi dari algoritma simetris digunakan oleh beberapa algoritma di bawah in 2. Algoritma Asimetris Algoritma Asimetris adalah pasangan kunci kriptografi yang salah satunya digunakan untuk proses enkripsi dan satu lagi lagi deskripsi. Semua orang yang mendapatkan kunci publik dapat menggunakannya untuk mengenkripsi suatu pesan, sedangkan hanya satu orang saja yang memiliki rahasia itu, yang dalam hal ini kunci rahasia, untuk melakukan pembongkaran terhadap kode yang dikirim untuknya. Contoh algoritma terkenal yang menggunakan kunci asimetris adalah RSA (merupakan singkatan dari nama penemunya, yakni Rivest, Shamir dan Adleman). 3. Algoritma Hibrida Algoritma hibrida adalah algoritma yang memanfaatkan dua tingkatan kunci, yaitu kunci rahasia (simetri) – yang disebut juga session key (kunci sesi) – untuk enkripsidata dan pasangan kunci rahasia – kunci publik untuk pemberian tanda tangan digital serta melindungi kunci simetri. 2.2 Bahasa Pemrograman Java Java adalah bahasa pemrograman yang dapat dijalankan di berbagai komputer termasuk telepon genggam. Bahasa ini awalnya dibuat oleh James Gosling saat masih bergabung di Sun Microsystems saat ini merupakan bagian dari Oracle dan dirilis tahun1995. Bahasa ini banyak mengadopsi sintaksis yang terdapat pada C dan C++ namun dengan sintaksis model objek yang lebih sederhana serta dukungan rutin-rutin aras bawah yang minimal. Aplikasi-aplikasi berbasis java 20 umumnya dikompilasi ke dalam p-code (bytecode) dan dapat dijalankan pada berbagai Mesin Virtual Java (JVM). Java merupakan bahasa pemrograman yang bersifat umum/non-spesifik (general purpose), dan secara khusus didisain untuk memanfaatkan dependensi implementasi seminimal mungkin. Karena fungsionalitasnya yang memungkinkan aplikasi java mampu berjalan di beberapa platform sistem operasi yang berbeda, java dikenal pula dengan slogannya, "Tulis sekali, jalankan di mana pun". Saat ini java merupakan bahasa pemrograman yang paling populer digunakan, dan secara luas dimanfaatkan dalam pengembangan berbagai jenis perangkat lunak aplikasi ataupun aplikasi berbasis web. 2.2.1 Perkembangan Bahasa Pemrograman JAVA 2.2.1.1 Java versi 1 Pada tahun 1996 java versi awal diluncurkan yang sudah merupakan versi release sehingga dinamakan Java Versi 1.0. Java versi ini sudah menyertakan banyak paket standar awal yang terus dikembangkan pada versi selanjutnya, diantaranya adalah: 1. Java.lang, yang diperuntukkan kelas elemen elemen dasar. 2. Java.io, yang diperuntukkan kelas input dan output, termasuk penggunaan berkas. 3. Java.util diperuntukkan kelas pelengkap seperti kelas terstruktur data dan kelas kelas penggalan. 4. Java.net ditujukan untuk kelas TCP/IP, yang memungkinkan berkomunikasi dengan computer lain menggunakan jaringan TCP/IP. 5. Java.awt, untuk dijalankan pada kelas dasar untuk aplikasi antar muka dengan pengguna (GUI). 21 6. Java.applet, kelas dasar aplikasi antar muka untuk diterapkan pada penjelajah web 2.2.1.2 Tentang Java versi 1 1. Pada produksi pertama Java, JDK (Java Development Kit ) yang digunakan adalah JDK versi 1.0.2 2. JDK merupakan sekumpulan program dan Library java yang digunakan untuk menjalankan dan mengembangkan program Java. 3. Pada awal lirisnya, JDK 1.0.2 membuat gebrakan dalam dunia web yaitu Java applet. 4. JDK 1.0.2 juga mengenalkan Java AWT (Abstract Windowing Toolkit) yang digunakan untuk membuat aplikasi berbasis tampilan window/GUI (Graphical User Interface). 2.2.2 JDK (Java Development Kit) Merupakan produk dari Sun Microsystems yang ditujukan untuk pengembang Java. Sejak diperkenalkannya Java, telah jauh SDK Java yang paling banyak digunakan. Pada tanggal 17 November 2006, Sun mengumumkan bahwa akan dirilis di bawah GNU General Public License (GPL), sehingga membuat perangkat lunak bebas. Hal ini terjadi sebagian besar pada tanggal 8 Mei 2007 Sun kontribusi kode sumber untuk JDK Open. 22 Sun Microsystem telah meluncurkan superset dari JRE dan diberi nama Java 2 SDK, yang sering disebut JDK.Dalam JDK ini terdapat beberapa komponen pengembangan Java, seperti:Java Compiler, Javadoc, Jar dan debugger. Salah satu kelebihan yang ditawarkan oleh JRE adalah kesalahan-kesalahan (exceptions) yang terjadi tidak akan membuat sistem menjadi crash atau hang. Kelebihan lainnya adalah terdapatnya komponen yang mampu merekam secara tepat waktu segala kesalahan yang terjadi ke dalam memori. Komponen-komponen ini diberi nama Automated Exception Handling. Selain komponen diatas terdapat beberapa komponen lainnya antara lain : 1. Library Java mengkompilasi kode byte dari source code yang dibentuk oleh Implementator JRE untuk mendukung pengembangan aplikasi dalam Java, beberapa contoh Library dalam Java : 1. The core library, yang berisikan: a. Library koleksi yang mengimplementasikan struktur data seperti List, Dictionaries, trees dan sets. b. Library proses XML (Parsing, Transforming, Validaying). c. Sekuritas d. Library Internasionalisasi dan lokalisasi. 2. Library Terintegrasi 3. Library User Interface yang mencakup a. Abstract Windowing Toolkit (AWT), yang menyediakan komponen GUI untuk menggambarkan komponen tersebut dan membuat komponen tersebut mampu menangani event handling. b. Library Swing. c. API untuk capture audio, pemrosesan dan playback. 23 2. Implementasi Ketergantungan Platform Java Virtual Machine (JVM). 3. Plug-ins yang menjalankan applet untuk dijalankan di web browser. 4. Java Web Start, yang menjalankan aplikasi Java untuk didistribusikan secara efisien ke pengguna internet. 5. Lisensi dan dokumentasi. 2.2.2.1 Pada Java versi 2, java dibagi menjadi 3 kategori: 1. Java 2 Standard Edition (J2SE), yang digunakan untuk menegmbangkan aplikasi-aplikasi berbasis desktop dan applet (aplikasi Java yang dapat dijalankan di dalam browser web). 2. Java 2 Enterprise Edition (J2EE), merupakan superset dari J2SE yang memperbolehkan kita untuk mengembangkan aplikasi desktop berskala besar (enterprise), yaitu dengan melakukan pembuatan aplikasi-aplikasi di sisi server dengan menggunakan EJBs (Enterprise JavaBeans), aplikasi web dengan menggunakan Servlet dan JSP (Java Server Pages) dan teknologi Iainnya seperti CORBA (Common Object Request Broker Architecture) dan XML (eXtensibIe Markup Language). 3. Java 2 Micro Edition (J2ME), merupakan subset dari J2SE yang digunakan untuk menangani pemrograman di dalam perangkat kecil, yang tidak memungkinkan untuk mendukung implementasi J2SE secara penuh. 24 2.3 ALGORITMA RC6 Algoritma RC6 merupakan algoritma sederhana, fungsi yang digunakan merupakan fungsi yang sederhana dan hanya mengandalkan fungsi iterated cipher untuk keamanan. Tampilan hasil enkripsi dan data hasil enkripsi yang diterima harus diperhatikan, hal ini dikarenakan pada data hasil enkripsi, setiap karakternya akan memiliki panjang 8 bit, sedangkan sebagian telepon hanya dapat menampilkan karakter dengan panjang 7 bit. Dengan demikian dalam penerapan algoritma RC6 pada SMS karakter karakter yang akan dienkripsi diubah kedalam nilai ASCII, dimana nilai karakter dalam table ASCII ditambah table karakter special adalah 0 sampai dengan 255, artinya satu karakter ASCII akan diwakili oleh 8 bit, dimana 28=256. Sehingga dalam 1 blok plainteks (32 bit) akan menyimpan 4 karakter dan setiap kali iterasi, makan akan diambil 16 karakter dari plainteks. Apabila panjang plainteks atau panjang kunci kurang dari 16 karakter, maka akan dilakukan padding, yaitu dengan menampilkan bit 0 (nol) diakhir teks, sehingga panjang teks mencukupi 16 karakter. Layar pada sebagian besar telepon selular hanya dapat menampilkan karakter dengan panjang 7 bit dan pesan yang telah terenkripsi akan berbentuk binary, sehingga layar tidak akan menampilkan dengan semestinya. Oleh karena itu pada aplikasi yang akan dibangun untuk menampilkan pesan yang telah terenkripsi , ditambahkan informasi karakter yang terdapat pesan tersebut dengan format heksadesimal agar dapat ditampilkan dilayar dan informasinya lebih terbaca. Algoritma RC6 yang akan digunakan dalam aplikasi enkripsi SMS yang akan dibangun dengan w sebesar 32 bit, r sebesar 20 kali putaran dan panjang kunci 25 beragam lebih dari 1 karakter (8 bit). Langkah-langkah algoritma RC6 dalam pelaksanaan tugas akhir ini akan dikelompokkan ke dalam beberapa bagian, yaitu: 1. Pembangkit sub kunci Kunci dari pengguna ini akan dimasukkan oleh pengguna pada saat akan melakukan proses enkripsi dan dekripsi. Kunci ini memiliki tipe data string dan memiliki panjang 16 byte (16 karakter). 2. Baca masukkan untuk proses enkripsi Yang dilakukan pada tahapan ini adalah membaca teks yang menjadi masukan pada proses enkripsi, yaitu field dari aplikasi enkripsi SMS. Pada proses enkripsi pesan, field-nya adalah isi pesan 3. Enkripsi meliputi whitening awal, iterasi dan whitening akhir. 4. Baca masukkan untuk proses dekripsi. Yang dilakukan pada tahapan ini adalah membaca teks yang menjadi masukan pada proses dekripsi, yaitu record dari hasil pesan yang telah dienkripsi pada pengirim dan menjadi field pesan pada penerima. 5. Dekripsi merupakan kebalikan dari proses enkripsi. 26 2.4 Layanan SMS dalam RC6 Service (SMS), call, dan multimedia message service (MMS) masih dapat digunakan pada perangkat android tersebut. Dari sekian banyak fitur yang dimiliki oleh android, salah satunya yang masih banyak digunakan yaitu SMS, bahwa pengguna dapat mengirim dan menerima pesan singkat kepada pengguna ponsel lainnya. Layanan SMS yang menggunakan aplikasi SMS bawaan ponsel masih banyak digunakan oleh setiap orang, dan bukan merupakan jalur yang aman dalam pertukaran informasi. Pesan yang dikirim menggunakan aplikasi SMS bawaan ponsel masih berupa teks terbuka yang belum terproteksi selain itu pengiriman SMS yang dilakukan tidak sampai ke penerima secara langsung, akan tetapi pengiriman SMS harus melewati Short Message Service Center (SMSC) yang berfungsi mencatat komunikasi yang terjadi antara pengirim dan penerima. Dengan tersimpannya SMS pada SMSC, maka seorang operator dapat memperoleh informasi atau membaca SMS di dalam SMSC tersebut, hal ini dapat dibuktikan dari beberapa kasus yang ditangani pihak kepolisian, kejaksaan atau KPK, dimana pihak pihak tersebut meminta transkrip SMS ke operator GSM untuk dijadikan bahan penyelidikan di persidangan. Dengan demikian dibutuhkan suatu metode dan aplikasi yang dapat mempertimbangkan solusi encrypted end to end dengan melakukan enkripsi terhadap pesan SMS. Enkripsi adalah proses mengubah suatu pesan asli yang disebut plaintext menjadi sebuah sandi atau kode yang tidak terbaca yang disebut ciphertext dan tidak dapat dimengerti, untuk mengembalikan pesan ke bentuk asli seperti semula 27 diperlukan suatu proses yang disebut dekripsi. Enkripsi dimaksudkan untuk melindungi dan menyamarkan informasi agar terlihat oleh pihak atau orang yang bukan seharusnya. Salah satu metode enkripsi yang umum digunakan yaitu menggunakan algoritma enkripsi dan kunci yang dapat diubah-ubah sesuai kesepakatan untuk meningkatkan keamanan. Teknik ini disebut sebagai algoritma kunci simetris (symetric key) yaitu suatu enkripsi dengan meggunakan kunci yang sama untuk melakukan proses enkripsi dan dekripsi. Contoh algoritma kunci simetris yaitu Rivest Code 6 (RC6) yang dirancang oleh Ronald L Rivest, M.J.B. Robshow, R. Sidney dan Y.L Yin, algoritma ini merupakan pengembangan dari algoritma sebelumnya yaitu RC5. Perangkat lunak yang akan dibangun merupakan perangkat lunak yang diterapkan pada telepon selular yang bersistem operasi android dan memiliki fungsi untuk melakukan enkripsi dan dekripsi. Perangkat lunak dapat melakukan pengiriman dan menerima pesan. Pengguna akan berinteraksi dengan perangkat lunak melalui user interface yang di sediakan oleh perangkat lunak, pengguna memasukkan data dengan menggunakan keypad yang dimiliki oleh telepon selular. Pesan yang telah dibuat dikirimkan ke telepon selualar lain melalui jaringan SMS. 2.5 Eclipse Menurut Nasruddin Safaat h (Pemrograman aplikasi mobeli smartphone dan tablet PC berbasis android 2012:16) Eclipse adalah sebuah IDE (Integrated Development 28 Environment) untuk mengembangkan perangkat lunak dan dapat dijalankan di semua platform (platform-independent). Berikut ini adalah sifat dari Eclipse: 1. Multi-platform: Target sistem operasi Eclipse adalah Microsoft Windows, Linux, Solaris, AIX, HP-UX dan Mac OS X. 2. Mulit-language: Eclipse dikembangkan dengan bahasa pemrograman Java,akan tetapi Eclipse mendukung pengembangan aplikasi berbasis bahasa pemrograman lainnya, seperti C/C++, Cobol, Python, Perl, PHP, dan lain sebagainya. 3. Multi-role: Selain sebagai IDE untuk pengembangan aplikasi, Eclipse pun bisa digunakan untuk aktivitas dalam siklus pengembangan perangkat lunak, seperti dokumentasi, test perangkat lunak, pengembangan web, dan lain sebagainya. Eclipse pada saat ini merupakan salah satu IDE favorit dikarenakan gratis dan open source, yang berarti setiap orang boleh melihat kode pemrograman perangkat lunak ini. Selain itu, kelebihan dari Eclipse yang membuatnya populer adalah kemampuannya untuk dapat dikembangkan oleh pengguna dengan komponen yang dinamakan plug-in. Eclipse dibuat dari kerja sama antara perusahaan-perusahaan anggota 'Eclipse Foundation' (beserta individu-individu lain). Banyak nama besar yang ikut dalam 'Eclipse. Foundation', termasuk IBM, BEA, Intel, Nokia, Borland. Eclipse bersaing langsung dengan Netbeans IDE. Plugin tambahan pada Eclipse jauh lebih banyak dan bervariasi dibandingkan IDE lainnya. 29 1. Intellij IDEA(commercial, free30-day trial) 2. Oracle JDeveloper (free) 3. Xinox JCreator (ada versi berbayar maupun free) Eclipse awalnya dikembangkan oleh IBM untuk menggantikan perangkat lunak IBM Visual Age for Java 4.0. Produk ini diluncurkan oleh IBM pada tanggal 5 November 2001, yang menginvestasikan sebanyak US$ 40 juta untuk pengembangannya. Semenjak itu konsursium Eclipse Foundation mengambil alih untuk pengembangan Eclipse lebih lanjut dan pengaturan organisasinya. Sejak versi 3.0, Eclipse pada dasarnya merupakan sebuah kernel, yang mengangkat plug-in. Apa yang dapat digunakan di dalam Eclipse sebenarnya adalah fungsi dari plug-in yang sudah diinstal. Ini merupakan basis dari Eclipse yang dinamakan Rich Client Platform (RCP). Berikut ini adalah komponen yang membentuk RCP: 1. Core platform 2. OSGi 3. SWT (Standard Widget Toolkit) 4. JFace 5. Eclipse Workbench Secara standar Eclipse selalu dilengkapi dengan JDT (Java Development Tools), plug-in yang membuat Eclipse kompatibel untuk mengembangkan program Java, dan PDE (Plug-in Development Environment) untuk mengembangkan plug-in baru. Eclipse beserta plug-in-nya diimplementasikan dalam bahasa pemrograman Java. Konsep Eclipse adalah IDE yang terbuka (open), mudah diperluas (extensible) 30 untuk apa saja, dan tidak untuk sesuatu yang spesifik. Jadi, Eclipse tidak saja untuk mengembangkan program Java, akan tetapi dapat digunakan untuk berbagai macam keperluan, cukup dengan menginstal plug-in yang dibutuhkan. Apabila ingin mengembangkan program C/C++ terdapat plug-in CDT (C/C++ Development Tools). Selain itu, pengembangan secara visual bukan hal yang tidak mungkin oleh Eclipse, plug-in UML2 tersedia untuk membuat Diagram UML. Dengan menggunakan PDE setiap orang bisa membuat plug-in sesuai dengan keinginannya. Salah satu situs yang menawarkan plug-in secara gratis seperti Eclipse downloads by project. Sejak tahun 2006, Eclipse Foundation mengkoordinasikan peluncuran Eclipse secara rutin dan simultan yang dikenal dengan nama Simultaneous Release. Setiap versi peluncuran terdiri dari Eclipse Platform dan juga sejumlah proyek yang terlibat dalam proyek Eclipse. Tujuan dari sistem ini adalah untuk menyediakan distribusi Eclipse dengan fitur-fitur dan versi yang terstandarisasi. Hal ini juga dimaksudkan untuk mempermudah Deployment dan maintenance untuk sistem enterprise, serta untuk kenyamanan.Peluncuran simultan dijadwalkan pada bulan Juni setiap tahunnya. 31