1 PEMBUATAN APLIKASI ENKRIPSI MENGGUNAKAN METODE ADVANCE ENCRYPTION STANDARD DAN RIVEST SHAMIR ADLEMAN Studi Kasus CV Maharta Mandiri Promo ZAENAL MUT...
PEMBUATAN APLIKASI ENKRIPSI MENGGUNAKAN METODE ADVANCE ENCRYPTION STANDARD DAN RIVEST SHAMIR ADLEMAN Studi Kasus CV Maharta Mandiri Promo
ZAENAL MUTTAQIN 2040.9100.2553
PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH JAKARTA 2010 M / 1431 H
PEMBUATAN APLIKASI ENKRIPSI MENGGUNAKAN METODE ADVANCE ENCRYPTION STANDARD DAN RIVEST SHAMIR ADLEMAN Studi Kasus CV Maharta Mandiri Promo
Skripsi Diajukan kepada Fakultas Sains dan Teknologi Untuk memenuhi persyaratan memperoleh gelar Sarjana Komputer (S.Kom)
Oleh : ZAENAL MUTTAQIN 2040.9100.2553
Menyetujui, Pembimbing I
Pembimbing II
Herlino Nanang, MT NIP. 19731209 200501 1 002
Zulfiandri, MMSI NIP. 150 368 821
Mengetahui, Ketua Program Studi Teknik Informatika
Yusuf Durrachman, MIT NIP. 19710522 200604 1 002
iii
PENGESAHAN UJIAN
Skripsi berjudul “PEMBUATAN APLIKASI ENKRIPSI MENGGUNAKAN METODE ADVANCE ENCRYPTION STANDARD DAN RIVEST SHAMIR ADLEMAN STUDI KASUS CV MAHARTA MANDIRI PROMO” yang ditulis oleh Zaenal Muttaqin, NIM 204091002553 telah diuji dan dinyatakan lulus dalam sidang Munaqosyah Fakultas Sains dan Teknologi, Universitas Islam Negeri Syarif Hidayatullah Jakarta pada tanggal 11 Januari 2010. Skripsi ini telah diterima sebagai salah satu syarat untuk memperoleh gelar sarjana Strata Satu (S1) Program Studi Teknik Informatika.
Menyetujui : Penguji I
Penguji II
Viva Arifin, MMSI NIP. 19730810 200604 2 001
Victor Amrizal, M.Kom NIP. 150 411 288
Pembimbing I
Pembimbing II
Zulfiandri, MMSI NIP. 150 368 821
Herlino Nanang, MT NIP. 19731209 200501 1 002
Mengetahui: Dekan Fakultas Sains dan Teknologi
Ketua Program Studi Teknik Informatika
DR. Syopiansyah Jaya Putra, M.Sis NIP. 19680117 200112 1 001
Yusuf Durrachman, MIT NIP. 19710522 200604 1 002
iv
PERNYATAAN
DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENARBENAR HASIL KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN SEBAGAI SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI ATAU LEMBAGA MANAPUN.
Jakarta, Januari 2010
Zaenal Muttaqin 2040 9100 2553
v
ABSTRAK
ZAENAL MUTTAQIN, Pembuatan Aplikasi Enkripsi Menggunakan Metode Advance Encryption Standard Dan Rivest Shamir Adleman Studi Kasus CV Maharta Mandiri Promo. (di bawah bimbingan Herlino Nanang dan Zulfiandri).
Perkembangan dunia teknologi informasi saat ini telah menjadikan informasi sebagai kebutuhan yang pokok bagi setiap orang terutama bagi sebuah instansi. Salah satu solusi pengamanan informasi yang digunakan adalah teknik pengamanan data menggunakan kriptografi. Kriptografi adalah ilmu untuk menyandikan pesan, sedangkan untuk menjaga agar pesan atau dokumen kita aman dan tidak dapat dibaca oleh pihak yang tidak berhak, digunakan enkripsi. CV Maharta Mandiri Promo sebagai sebuah perusahaan desain grafis dan percetakan memiliki keinginan untuk melindungi data-data penting mereka dari pihak yang tidak berhak. Aplikasi acrypt cs merupakan aplikasi enkripsi yang menggabungkan metode enkripsi simetris dan metode enkripsi asimetris. Pada aplikasi ini metode yang digunakan adalah metode enkripsi simetris Advance Encryption Standard dan asimetris Rivest Shamir Adleman. Aplikasi ini dapat dijadikan sebagai salah satu cara untuk mengamankan data. Pembuatan aplikasi ini menggunakan bahasa pemrograman PHP dan MySQL. Untuk pengembangan aplikasi penulis menggunakan metode Rapid Application Development (RAD). Hasil akhir berupa aplikasi multifile berbasis client server, tanpa ada proses instalasi, dan dapat dilakukan pada mutifile secara bersamaan (multifile dibatasi sebanyak 10 file).
Kata kunci : kriptografi, enkripsi, Advance Encryption Standard, Rivest Shamir Adleman, Enkripsi simetri/asimetri. xvii halaman + 113 halaman + 4 tabel + 51 gambar + 3 lampiran Daftar Pustaka : 15 (1999-2008)
vi
KATA PENGANTAR
Assalaamu’alaikum Wr. Wb. Alhamdulillah, rasa syukur tiada terkira penulis panjatkan kepada Allah Subhanahu Wata’ala. Rahmat dan salam semoga tercurahkan selalu kepada Rasulullah Muhammad SAW beserta keluarga, sahabat, dan pengikut-pengikut beliau (amin). Hanya berkat petunjuk dan pertolongan Allah-lah penulis dapat menyelesaikan
skripsi
yang
berjudul
:
Pembuatan
Aplikasi
Enkripsi
Menggunakan Metode Advance Encryption Standard dan Rivest Shamir Adleman Studi Kasus CV Maharta Mandiri Promo. Terwujudnya tulisan dalam bentuk skripsi ini, tentunya tidak terlepas dari bantuan dan bimbingan dari berbagai pihak. Rasa terima kasih penulis ucapkan kepada : 1.
Bapak DR. Syopiansyah Jaya Putra, M.SIS, selaku Dekan Fakultas Sains dan Teknologi.
2.
Bapak Yusuf Durrachman, selaku Ketua Program Studi Teknik Informatika.
3.
Bapak Herlino Nanang, MT, selaku dosen pembimbing I, dan
4.
Bapak Zulfriandri, MMSI, selaku dosen pembimbing II, yang telah memberikan bimbingan, waktu, dan perhatiannya dalam penyusunan skripsi ini.
vii
5.
Seluruh Dosen dan staf karyawan Program Studi Teknik Informatika, Fakultas Sains dan Teknologi, Universitas Islam Negeri Syarif Hidayatullah Jakarta yang telah mengajar atau membantu penulis selama kuliah.
Dalam penyusunan skripsi ini, penulis juga tidak luput dari berbagai masalah dan menyadari sepenuhnya bahwa penulisan ini masih jauh dari sempurna dan tidak lepas dari kesalahan dan kekurangan, oleh karena itu dengan senang hati penulis akan menerima semua saran dan kritik maupun ide-ide yang membangun dari rekan-rekan pembaca. Akhir kata semoga Allah membalas kebaikan mereka yang telah membimbing penulis dalam membuat skripsi ini. Semoga skripsi ini berguna bagi penulis dan pada pembaca umumnya. Wassalaamu’alaikum Wr. Wb.
Jakarta, Januari 2010 Penulis
Zaenal Muttaqin NIM. 2040 9100 2553
viii
Sebuah tulisan sederhana ini kupersembahkan untuk: “Emak dan Babe…
kesabaran dan kerja keras telah kalian
lakukan demi membesarkan ananda.. ananda tahu.. seberapa besarpun hal yang dapat ananda berikan untuk emak dan babe, belumlah cukup untuk membalas semua perjuangan emak dan babe.. Setiap peluh yang menetes di dahimu.. setiap langkah kakimu.. setiap perjuanganmu untuk membuat ananda berdiri tegak sampai sekarang.. akan ananda ingat semua itu sampai akhir hayat ananda.. Ya Allah.. berikanlah hamba kesempatan untuk membahagiakan emak dan babe..” ix
Terimakasih yang Spesial untuk : Kakak-kakakku tercinta : k juki, k ita, k mun, k, maskur, k rahman, te nunung, k sugi, k yanto, k adi, Dan sangat spesial untuk kak may.. (mari kita berjuang untuk hidup yang lebih baik..) Juga untuk adik-adikku tersayang : herma, edi, doel, n dilah (maaf membuat kalian menunggu lama..) Dan untuk semua keponakanku : bunga, lulu, firly, lika, qori, rijal, ridwan, zaskia, moja, n haikal.. (jangan lupa belajar ya sayang..) Untuk teman-temanku ariyadi, dimas, maxus, sigit, ade, dawim, nana, nita, yanti, razka, mimah, n danang (terimakasih untuk berbagi setiap bulan..) Untuk fajar (makasih bro), farizki (makasih netbooknya), deva, sundus, rofi, maladi, dadang (makasih ya CV-nya), adin & eko (makasih untuk switch & kabel LAN-nya), makasih buat semua anak TI Bhe angkatan 2004.. tanpa kalian aku tak bisa berdiri tegak.. (tetap silah ya..) makasih juga untuk pak basuni dan pak zam (perpus) terimakasih untuk keluarga besar TI/SI angkatan 2004 yang telah berteman dan berbagi semuanya kepada penulis.. dan banyak lagi yang tidak dapat saya tuliskan di sini.. terimakasih semuanya.. dan juga terimakasih untuk : uin syarif hidayatullah jakarta & cv maharta mandiri promo
x
DAFTAR ISI
PENGESAHAN UJIAN ........................................................................................ iv PERNYATAAN...................................................................................................... v ABSTRAK ............................................................................................................. vi KATA PENGANTAR .......................................................................................... vii DAFTAR ISI .......................................................................................................... xi DAFTAR GAMBAR ............................................................................................ xv DAFTAR TABEL .............................................................................................. xviii
BAB III METODOLOGI PENELITIAN ........................................................... 48 3.1. Metode Pengumpulan Data ................................................................ 48 3.1.1.
Metode Observasi ................................................................ 48
3.1.2.
Metode Wawancara.............................................................. 49
xii
3.1.3.
Metode Studi Pustaka........................................................... 49
3.1.4.
Metode Studi Literatur ......................................................... 49
3.2. Metode Pengembangan Sistem .......................................................... 50 3.2.1.
Fase Perencanaan Syarat-Syarat .......................................... 50
3.2.2.
Fase Perancangan ................................................................. 53
3.2.3.
Fase Konstruksi.................................................................... 55
3.2.4.
Fase Pelaksanaan.................................................................. 55
BAB IV PEMBAHASAN DAN IMPLEMENTASI .......................................... 57 4.1. Gambaran Umum CV Maharta Mandiri Promo................................. 57 4.1.1.
DAFTAR PUSTAKA ......................................................................................... 114 LAMPIRAN A HASIL WAWANCARA ........................................................... 116 LAMPIRAN B TAMPILAN APLIKASI ACRYPT CS..................................... 118 LAMPIRAN C KODE SUMBER APLIKASI ACRYPT CS............................. 131
xiv
DAFTAR GAMBAR
Gambar 2.1. Enkripsi Secara Umum......................................................................11 Gambar 2.2. Sebuah scytale, pesan yang ditulis secara horizontal, baris perbaris .....................................................................................16 Gambar 2.3. Mesin enkripsi Enigma yang digunakan oleh tentara Jerman pada masa Perang Dunia ke II ..........................................................17 Gambar 2.4. Caesar Wheel.....................................................................................19 Gambar 2.5. Diagram Proses Enkripsi ...................................................................27 Gambar 2.6. Transformasi SubBytes .....................................................................31 Gambar 2.7. Transformasi ShiftRows....................................................................31 Gambar 2.8. Transformasi MixColumns ...............................................................32 Gambar 2.9. Transformasi AddRoundKey ............................................................33 Gambar 2.10. Skema kriptografi nirsimetri ...........................................................35 Gambar 3.1. Proses enkripsi dan dekripsi ..............................................................54 Gambar 3.2. Ilustrasi metodologi penelitian pengembangan aplikasi kriptografi berbasis client server (acrypt cs).....................................56 Gambar 4.1. Organisasi CV Maharta Mandiri Promo ...........................................59 Gambar 4.2. Diagram konteks sistem yang diusulkan ...........................................62 Gambar 4.3. Diagram zero sistem yang diusulkan ................................................62 Gambar 4.4. Diagram level satu proses 1.0 (login)................................................63 Gambar 4.5. Diagram level satu proses 2.0 (enkripsi) ...........................................63 Gambar 4.6. Diagram level satu proses 3.0 (dekripsi) ...........................................63 Gambar 4.7. Flowchart proses enkripsi .................................................................65 Gambar 4.8. Flowchart proses enkripsi dengan metode RSA ...............................67
xv
Gambar 4.9. Flowchart proses enkripsi dengan metode RSA ...............................69 Gambar 4.10. Flowchart proses dekripsi ...............................................................71 Gambar 4.11. Flowchart proses dekripsi dengan metode RSA .............................73 Gambar 4.12. Flowchart proses dekripsi dengan metode RSA .............................75 Gambar 4.13. Struktur Entity Relationship Diagram.............................................76 Gambar 4.14. Logical Record Structure (LRS) .....................................................78 Gambar 4.15. Rancangan halaman login ...............................................................81 Gambar 4.16. Rancangan halaman sign up ............................................................82 Gambar 4.17. Rancangan halaman utama ..............................................................83 Gambar 4.18. Rancangan halaman input file enkripsi ...........................................84 Gambar 4.19. Rancangan halaman input file enkripsi ...........................................85 Gambar 4.20. Rancangan halaman cek file............................................................86 Gambar 4.21. Rancangan halaman input password ...............................................87 Gambar 4.22. Rancangan halaman pilih tujuan .....................................................88 Gambar 4.23. Rancangan halaman encryption complete .......................................89 Gambar 4.24. Rancangan halaman pilih file ..........................................................90 Gambar 4.25. Rancangan halaman cek file............................................................91 Gambar 4.26. Rancangan halaman input private key ............................................92 Gambar 4.27. Rancangan halaman decryption complete .......................................93 Gambar 4.28. Rancangan halaman inbox ..............................................................94 Gambar 4.29. Rancangan halaman outbox ............................................................95 Gambar 4.30. Rancangan halaman my key (security question) .............................96 Gambar 4.31. Rancangan halaman my key (private key) ......................................96 Gambar 4.32. Rancangan halaman generate key ...................................................97
xvi
Gambar 4.33. Rancangan halaman change password ............................................98 Gambar 4.34. Rancangan halaman help.................................................................99 Gambar 4.35. Rancangan halaman about.............................................................100 Gambar 4.36. State Transition Diagram Aplikasi Acrypt CS .............................101 Gambar 4.37. Informasi file sebelum dienkripsi..................................................109 Gambar 4.38. Informasi file sesudah dienkripsi ..................................................110 Gambar 4.39. Informasi file sesudah didekripsi ..................................................111
xvii
DAFTAR TABEL
Tabel 2.1. Tiga buah Versi AES ............................................................................24 Tabel 2.2. S-Box ....................................................................................................29 Tabel 4.1. Tabel ukuran dan waktu enkripsi ........................................................110 Tabel 4.2. Tabel ukuran dan waktu dekripsi ........................................................111
xviii
BAB I PENDAHULUAN
1.1.
Latar Belakang Pesatnya perkembangan teknologi informasi telah menjadikan informasi sebagai kebutuhan pokok bagi setiap orang. Informasi juga merupakan hal yang vital bagi sebuah perusahaan, karena informasi dapat membantu suatu perusahaan untuk terus berkembang dalam persaingan global. Masalah yang terjadi pada proses pengiriman ataupun mendapatkan informasi adalah apabila informasi itu bersifat rahasia. Bila informasi tersebut tersebar luas karena adanya penyadapan, pencurian, dan pemalsuan informasi, akan menyebabkan kerugian bagi pemilik informasi. Salah satu cara untuk mengamankan data atau informasi dari tindak kejahatan tersebut adalah menggunakan konsep kriptografi. CV Maharta Mandiri Promo sebagai sebuah perusahaan desain grafis dan percetakan, memiliki jaringan komputer untuk memperlancar arus informasi di dalam perusahaan. Jaringan komputer tersebut memiliki sebuah server dengan kurang lebih dua puluh client. Semua informasi di perusahaan ini di-share lewat jaringan komputer tersebut. Namun ternyata kemudahan tersebut tidak memiliki pengamanan yang baik. Di perusahaan ini pernah terjadi pencurian informasi yang menyebabkan kerugian bagi perusahaan tersebut. Sehingga perusahaan membutuhkan
1
sistem keamanan yang kuat untuk mengamankan data penting mereka, seperti data proyek, desain grafis, dan data internal perusahaan lainnya. Pada penelitian yang telah dilakukan (Muliati, 2009), dibuat aplikasi enkripsi menggunakan metode Blowfish dan Rivest Shamir Adleman yang dapat mengenkripsi maksimum lima file sekaligus. Oleh karena itu, beberapa kelebihan akan ditambahkan pada aplikasi yang akan dibuat diantaranya dapat mengenkripsi sepuluh file sekaligus. Untuk itu peneliti berupaya mewujudkan implementasi keamanan data dengan menggunakan metode enkripsi Advance Encryption Standard dan Rivest Shamir Adleman ke dalam suatu aplikasi yang mudah digunakan,
dalam skripsi yang
berjudul PEMBUATAN
APLIKASI ENKRIPSI MENGGUNAKAN METODE ADVANCE ENCRYPTION STANDARD DAN RIVEST SHAMIR ADLEMAN STUDI KASUS CV MAHARTA MANDIRI PROMO.
1.2.
Rumusan Masalah Berdasarkan latar belakang, masalah pokok yang akan dibahas penulis adalah membuat aplikasi enkripsi yang mudah digunakan dan menjamin kerahasiaan data dengan menggunakan metode Advance Encryption Standard dan Rivest Shamir Adleman.
2
1.3.
Batasan Masalah Untuk menghindari meluasnya materi pembahasan tugas akhir ini, maka permasalahan dibatasi hanya mencakup hal-hal berikut : 1.
Penelitian dibatasi dengan menggunakan metode enkripsi Advance Encryption Standard dan Rivest Shamir Adleman.
2.
Pada aplikasi ini proses enkripsi/dekripsi dan pengiriman data dapat dilakukan pada multifile. Jumlah file dibatasi sebanyak 10 file dengan maksimum ukuran file 1 GB pada sekali proses enkripsi atau dekripsi untuk kunci yang sama, untuk menghindari proses enkripsi yang terlalu lama.
3.
Aplikasi hanya mengenkripsi file tunggal (bukan folder) karena enkripsi folder akan menyebabkan satu serangan terhadapnya akan berakibat pada semua file yang ada di folder tersebut.
4.
Aplikasi dititikberatkan pada proses pengamanan data dengan pencegahan pembacaan file oleh pihak-pihak yang tidak berhak.
5.
Hasil akhir file enkripsi akan menghasilkan file terenkripsi (*.znc), dan password terenkripsi akan disimpan di database.
6.
Aplikasi dibuat menggunakan bahasa pemrograman PHP dan menggunakan
database
MySQL,
serta
dijalankan
dengan
menggunakan Web Server Apache. 7.
Aplikasi dibuat untuk diimplementasikan pada CV Maharta Mandiri Promo.
3
1.4.
Tujuan Penelitian 1.
Dapat mengimplementasikan dua buah metode enkripsi pada aplikasi pengamanan data berbasis client server yang mudah digunakan.
2.
Dapat mengamankan data-data penting pada CV Maharta Mandiri Promo.
1.5.
Manfaat Penelitian Manfaat yang didapat dalam menulis skripsi ini adalah : 1.
Bagi Penulis a.
Menerapkan ilmu kriptografi khususnya enkripsi dengan menggabungkan metode enkripsi simetris (Advance Encryption Standard) dan metode enkripsi asimetris (Rivest Shamir Adleman).
b.
Membangun aplikasi enkripsi berbasis client server yang dapat membantu menjaga data-data penting.
2.
Bagi Pengguna a.
Memiliki sarana untuk lebih meningkatkan keamanan data yang dianggap rahasia.
b.
Memudahkan pengamanan data karena menggunakan kunci publik. Sehingga tidak memerlukan pertukaran kunci privat.
3.
Bagi Universitas Memberikan sumbangan ilmiah bagi perkembangan teknologi keamanan data.
4
1.6.
Metodologi Penelitian Pada penulisan tugas akhir ini, diperlukan data-data yang lengkap sebagai bahan pendukung kebenaran materi uraian dan pembahasan. Oleh karena itu diperlukan metodologi pengumpulan data dan metode membangun sistem.
1.6.1.
Metodologi Pengumpulan Data 1.
Observasi Pengamatan
dilakukan
secara
langsung
pada
komputer dan jaringannya di CV Maharta Mandiri Promo. 2.
Wawancara Wawancara adalah proses memperoleh keterangan untuk tujuan penelitian dengan cara tanya-jawab sambil bertatap muka antara pewawancara dengan narasumber.
3.
Studi Pustaka Membaca dan mempelajari referensi yang ada sebagai pelengkap serta mencari referensi tambahan dari internet.
4.
Studi Literatur Metode studi literatur digunakan dengan melihat penelitian yang sudah ada. Melalui studi literatur, peneliti dapat terhindar dari melakukan penelitian yang sudah pernah dilakukan, dan pengulangan kesalahan-kesalahan masa lalu. 5
1.6.2.
Metodologi Pengembangan Sistem Metodologi pengembangan sistem yang digunakan dalam penelitian ini adalah metode pengembangan model RAD (Rapid Application Development), model ini dibuat oleh James Martin untuk membuat sistem yang cepat tanpa harus mengorbankan kualitas. Dan melingkupi fase-fase sebagai berikut (Kendall & Kendall, 2003 : 237) :
1)
Fase Perencanaan Syarat-Syarat Pada tahap ini dilakukan penentuan tujuan dan syaratsyarat informasi.
2)
Fase Perancangan Pada tahap ini dilakukan perancangan proses yaitu prosesproses yang akan terjadi di dalam sistem, yang terdiri dari perancangan proses dan perancangan antarmuka pemakai (user interface).
3)
Fase Konstruksi Pada fase ini
dilakukan tahap pengkodean terhadap
rancangan-rancangan yang telah didefinisikan. 4)
Fase Pelaksanaan Pada fase ini dilakukan pengujian terhadap sistem dan melakukan pengenalan sistem kepada pengguna.
1.7.
Sistematika Penulisan Dalam penulisan skripsi ini dibagi menjadi beberapa bab, yaitu : 6
BAB I
PENDAHULUAN Bab ini terdiri dari latar belakang, rumusan masalah, batasan masalah, tujuan,
manfaat,
metodologi
penelitian,
dan
sistematika penulisan. BAB II
LANDASAN TEORI Bab ini berisi uraian tentang landasan teori yang diperlukan dalam pembuatan aplikasi enkripsi.
BAB III
METODOLOGI PENELITIAN Bab ini menguraikan secara rinci metodologi yang digunakan dalam pembuatan sistem aplikasi.
BAB IV
PEMBAHASAN DAN IMPLEMENTASI Bab ini menguraikan tentang gambaran umum objek penelitian yaitu CV Maharta Mandiri Promo serta pengembangan sistem aplikasi enkripsi yang dibuat.
BAB V
PENUTUP Bab ini berisi kesimpulan akhir dan saran-saran untuk membangun sistem enkripsi lebih lanjut.
DAFTAR PUSTAKA LAMPIRAN
7
BAB II LANDASAN TEORI
2.1.
Keamanan Data Keamanan dan kerahasiaan data merupakan sesuatu yang sangat penting dalam era informasi ini dan telah menjadi kebutuhan dasar karena perkomputeran secara global telah menjadi tidak aman. Informasi akan tidak berguna lagi apabila di tengah jalan informasi itu disadap atau dibajak oleh orang yang tidak berhak. Bahkan mungkin beberapa pengguna dari sistem itu sendiri, mengubah data yang dimiliki menjadi sesuatu yang tidak kita inginkan. Keamanan data pada komputer tidak hanya tergantung pada teknologi saja, tetapi dari aspek prosedur dan kebijakan keamanan yang diterapkan serta kedisiplinan sumber daya manusia. Jika firewall dan perangkat keamanan lainnya bisa dibobol oleh orang yang tidak berhak, maka peran utama kriptografi untuk mengamankan data atau dokumen dengan menggunakan teknik enkripsi sehingga data atau dokumen tidak bisa dibaca (Ariyus, 2006 : 3).
2.2.
Aplikasi Perangkat lunak (aplikasi) adalah program yang ditulis oleh pemrogram komputer untuk memecahkan suatu masalah tertentu dengan menggunakan bahasa pemrograman (Hartono, 1999 : 360).
8
2.3.
Enkripsi dan Dekripsi Enkripsi adalah sebuah proses yang melakukan perubahan sebuah kode dari yang bisa dimengerti menjadi sebuah kode yang tidak bisa dimengerti (Wahana Komputer, 2003 : 17). Enkripsi dapat diartikan sebagai kode atau cipher. Sebuah sistem pengkodean menggunakan suatu table atau kamus yang telah didefinisikan untuk mengganti kata dari informasi yang dikirim. Sebuah cipher menggunakan suatu algoritma yang dapat mengkodekan semua aliran data (stream) bit dari sebuah pesan menjadi cryptogram yang tidak dimengerti (unnitelligible). Karena teknik cipher merupakan suatu sistem yang telah siap untuk diautomasi, maka teknik ini digunakan dalam sistem keamanan komputer dan jaringan. Enkripsi dimaksudkan untuk melindungi informasi agar tidak terlihat oleh orang atau pihak yang tidak berhak. Informasi ini dapat berupa nomor kartu kredit, catatan penting dalam komputer, maupun password untuk mengakses sesuatu. Sepanjang sejarah pembentukan kode dan pemecahannya selalu mendapat perhatian khusus dalam operasi militer. Penggunaan komputer untuk pertama kalinya dalam kriptografi merupakan usaha untuk memecahkan kode enigma Nazi sewaktu Perang Dunia II. Kini, pada zaman modern, adanya komputer memungkinkan kita menghasilkan kode yang kompleks, dan sebaliknya pula dapat digunakan untuk memecahkannya.
9
E-commerce
adalah
industri
lain
yang
sangat
intensif
memanfaatkan kriptografi. Dengan meng-enkrip paket data yang lalu lalang di internet, walaupun seseorang dapat menangkap paket-paket data tersebut, tetap saja ia tidak dapat memahami artinya. Enkripsi juga digunakan untuk verifikasi. Bila anda men-download software, bagaimana anda tahu bahwa software yang anda download adalah yang asli, bukan yang telah dipasangkan trojan di dalamnya. Dalam hal ini terdapat tiga kategori enkripsi, yaitu (Wahana Komputer, 2003 : 18) : 1.
Kunci enkripsi rahasia. Dalam hal ini, terdapat sebuah kunci yang digunakan untuk mengenkripsi dan juga sekaligus mendekripsi informasi.
2.
Kunci enkripsi publik. Dalam hal ini, dua kunci digunakan. Satu untuk proses enkripsi dan yang lain untuk proses dekripsi.
3.
Fungsi one-way, atau fungsi satu arah adalah sustu fungsi dimana informasi dienkripsi untuk menciptakan “signature” dari informasi asli yang bisa digunakan untuk keperluan autentikasi. Enkripsi dibentuk berdasarkan suatu
algoritma
yang akan
mengacak suatu informasi menjadi bentuk yang tidak bisa dibaca atau tak bisa dilihat. Dekripsi adalah proses dengan algoritma yang sama untuk mengembalikan informasi teracak menjadi bentuk aslinya. Algoritma yang digunakan harus terdiri dari susunan prosedur yang direncanakan secara hati-hati yang harus secara efektif menghasilkan sebuah bentuk ter-enkripsi yang tidak bisa dikembalikan oleh seseorang, bahkan
10
sekalipun mereka
memiliki algoritma
yang
sama. Gambar
2.1
menunjukkan proses enkripsi secara umum. kunci
Teks terang
Enkripsi
Teks tersandi
Gambar 2.1. Enkripsi secara umum (sumber : http://id.wikipedia.org/wiki/enkripsi)
2.4.
Kriptografi 2.4.1.
Definisi dan Terminologi Kriptografi (cryptography) berasal dari bahasa Yunani : “cryptos” artinya “secret”(rahasia), sedangkan “graphein” artinya “writing” (tulisan). Jadi, kriptografi berarti “secret writing” (tulisan rahasia). Dalam buku-buku lama (sebelum tahun 1980-an) menyatakan bahwa kriptografi adalah ilmu dan seni
untuk
menjaga
kerahasiaan
pesan
dengan
cara
menyandikannya ke dalam bentuk yang tidak dapat dimengerti lagi maknanya. Namun saat ini kriptografi lebih dari sekedar privacy, tetapi juga untuk tujuan data integrity, authentication, dan non-repudiation (Munir, 2006 : 2). Beberapa istilah yang penting dalam kriptografi yang perlu diketahui adalah sebagai berikut (Munir, 2006 : 3):
11
1.
Pesan, Plainteks, dan Cipherteks Pesan (message) adalah data atau informasi yang dapat dibaca dan dimengerti maknanya. Nama lain untuk pesan adalah plainteks (plaintext) atau teks-jelas (cleartext). Pesan yang disandikan ke bentuk lain disebut cipherteks (ciphertext) atau kriptogram (cryptogram).
2.
Pengirim dan Penerima Komunikasi data melibatkan pertukaran pesan antara dua entitas. Pengirim (sender) adalah entitas yang mengirim pesan kepada entitas lainnya. Penerima (receiver) adalah entitas yang menerima pesan.
3.
Enkripsi dan Dekripsi Proses menyandikan plainteks menjadi cipherteks disebut enkripsi (encryption) atau enciphering (standard nama menurut ISO 7498-2). Sedangkan proses mengembalikan cipherteks menjadi plainteks semula dinamakan dekripsi (decryption) atau deciphering (standard nama menurut ISO 7498-2).
4.
Cipher dan Kunci Algoritma kriptografi disebut juga cipher yaitu aturan untuk
enciphering
dan
deciphering,
atau
fungsi
matematika yang digunakan untuk enkripsi dan dekripsi.
12
Beberapa cipher memerlukan algoritma yang berbeda untuk enciphering dan deciphering. Kunci (key) adalah parameter yang digunakan untuk transformasi enchipering dan dechipering. Kunci biasanya berupa string atau deretan bilangan.
5.
Sistem Kriptografi Kriptografi membentuk sebuah sistem yang dinamakan sistem kriptografi. Sistem kriptografi (cryptosystem) adalah kumpulan yang terdiri dari algoritma kriptografi, semua plainteks dan cipherteks yang mungkin, dan kunci. Di dalam sistem kriptografi, cipher hanyalah salah satu komponen saja.
6.
Penyadap Penyadap (eavesdropper) adalah orang yang mencoba menangkap pesan selama ditransmisikan.
7.
Kriptanalisis dan Kriptologi Kriptografi
berkembang
sedemikian
rupa
sehingga
melahirkan bidang yang berlawanan yaitu kriptanalisis. Kriptanalisis (cryptanalisys) adalah ilmu dan seni untuk memecahkan
cipherteks
menjadi
plainteks
tanpa
mengetahui kunci yang digunakan. Pelakunya disebut kriptanalis.
Kriptologi
(cryptology)
mengenai kriptografi dan kriptanalisis.
13
adalah
studi
2.4.2.
Tujuan Kriptografi Kriptografi bertujuan untuk memberi layanan keamanan sebagai berikut (Munir, 2006 : 9): 1.
Kerahasiaan (confidentiality) Adalah layanan yang ditujukan untuk menjaga agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak.
2.
Integritas data (data integrity) Adalah layanan yang menjamin bahwa pesan masih asli/utuh
atau
belum
pernah
dimanipulasi
selama
pengiriman. 3.
Otentikasi (authentication) Adalah layanan yang berhubungan dengan identifikasi, baik
mengidentifikasi
berkomunikasi
(user
authentication)
maupun
kebenaran
pihak-pihak atau
authentication mengidentifikasi
yang entity
kebenaran
sumber pesan (data origin authentication). 4.
Nirpenyangkalan (non-repudiation) Adalah
layanan
untuk
mencegah
entitas
yang
berkomunikasi melakukan penyangkalan, yaitu pengirim pesan menyangkal melakukan pengiriman atau penerima pesan menyangkal telah menerima pesan.
14
2.4.3.
Sejarah Kriptografi Sejarah kriptografi sebagian besar merupakan sejarah kriptografi klasik, yaitu metode enkripsi yang menggunakan kertas dan pensil atau mungkin dengan bantuan alat mekanik sederhana. Sejarah kriptografi klasik mencatat penggunaan cipher transposisi oleh tentara Sparta di Yunani pada permulaan tahun 400 SM. Mereka menggunakan alat yang namanya scytale (Gambar 2.1). Sedangkan algoritma substitusi paling awal dan paling sederhana adalah caesar cipher, yang digunakan oleh raja Yunani kuno, Julius Caesar. Caranya adalah dengan mengganti setiap karakter di dalam alfabet dengan karakter yang terletak pada tiga posisi berikutnya di dalam susunan alphabet (Munir, 2006 : 10).
Gambar 2.2. Sebuah scytale, pesan yang ditulis secara horizontal, baris perbaris. (Sumber : http://global.mitsubishielectric.com).
Kriptografi juga digunakan untuk tujuan keamanan. Kalangan gereja pada masa awal agama kristen menggunakan
15
kriptografi untuk menjaga tulisan relijius dari gangguan otoritas politik atau budaya yang dominan saat itu. Pada abad ke-17, sejarah kriptografi mencatat korban ketika ratu Scotlandia, Queen Mary, dipancung setelah surat rahasianya dari balik penjara (surat terenkripsi yang isinya rencana membunuh Ratu Elizabeth I) berhasil dipecahkan oleh seorang pemecah kode. Seperti yang telah disebutkan di atas bahwa kriptografi umum digunakan di kalangan militer. Pada Perang Dunia ke II, Pemerintah Nazi Jerman membuat mesin enkripsi yang dinamakan enigma (Gambar 2.2). Mesin yang menggunakan beberapa buah rotor (roda berputar) ini melakukan enkripsi dengan cara yang sangat rumit (Munir, 2006 : 11).
Gambar 2.3. Mesin enkripsi Enigma yang digunakan oleh tentara Jerman pada masa Perang Dunia ke II. (Sumber : http://www.technology.niagarac.on.ca).
Kriptografi modern dipicu oleh perkembangan peralatan komputer digital. Dengan komputer digital, cipher yang
16
kompleks menjadi sangat mungkin untuk dapat dihasilkan. Tidak seperti kriptografi klasik yang mengenkripsi karakter per karakter, kriptografi modern beroperasi pada string biner. Cipher yang kompleks seperti DES (Data Encryption Standard) dan penemuan algoritma RSA adalah algoritma kriptografi modern yang paling dikenal di dalam sejarah kriptografi modern. Kriptografi modern tidak hanya berkaitan dengan teknik menjaga kerahasiaan pesan, tetapi juga melahirkan konsep seperti tandatangan digital dan sertifikat digital. Dengan kata lain, kriptografi modern tidak hanya memberikan aspek keamanan confidentiality, tetapi juga aspek keamanan lain seperti otentikasi, integritas data, dan nirpenyangkalan (Munir, 2006 : 12).
2.5.
Algoritma Kriptografi Klasik Rinaldi Munir. Pada dasarnya, algoritma kriptografi klasik dapat dikelompokkan ke dalam dua macam cipher (Munir, 2006 : 55):
2.5.1.
Cipher Substitusi Di dalam cipher substitusi setiap unit plainteks diganti dengan satu unit cipherteks. Satu “unit” di sini bisa berarti satu huruf, pasangan huruf, atau kelompok lebih dari dua huruf. Chiper substitusi dapat dikelompokkan ke dalam empat jenis (Munir, 2006 : 61):
17
1.
Cipher Alfabet Tunggal (Monoalphabetic cipher), satu huruf di plainteks diganti dengan tepat satu huruf cipherteks.
2.
Cipher Alphabetic Majemuk (Polyalphabetic chiper), merupakan cipher substitusi ganda.
3.
Cipher Substitusi Homofonik (homophonic substitution cipher), seperti cipher alfabet tunggal tetapi setiap huruf dalam plainteks dapat dipetakan ke dalam salah satu dari unit cipherteks yang mungkin.
4.
Cipher
Substitusi
Poligram
cipher), setiap kelompok
(Polygram
substitution
huruf disubstitusi
dengan
kelompok huruf cipherteks. Algoritma substitusi tertua yang diketahui adalah caesar cipher yang digunakan oleh kaisar Romawi, Julius Caesar, untuk menyandikan pesan yang ia kirim kepada para gubernurnya. Gambar 2.3 memperlihatkan caesar wheel terdiri dari dua buah lempeng lingkaran besi. Lingkaran besi paling luar menyatakan huruf-huruf plainteks sedangkan lingkaran besi terdalam menyatakan huruf-huruf cipherteks.
Gambar 2.4. Caesar Wheel (Sumber : http://mail.colonial.net)
18
2.5.2.
Cipher Transposisi Pada cipher transposisi, huruf-huruf di dalam plainteks tetap sama, hanya saja urutannya diubah. Dengan kata lain algoritma ini melakukan transpose terhadap rangkaian karakter di dalam teks. Nama lain untuk metode ini adalah permutasi atau pengacakan (scrambling) karena transpose setiap karakter di dalam teks sama dengan mempermutasikan karakter-karakter tersebut. Kriptografi dengan alat scytale yang digunakan oleh tentara Sparta pada zaman Yunani termasuk ke dalam cipher transposisi. Misalkan sebuah plainteks : DEPARTEMEN TEKNIK INFORMATIKA ITB Untuk meng-enkripsi pesan, plainteks ditulis secara horizontal dengan lebar kolom tetap, misal selebar 6 karakter (kunci k = 6) : DEPART EMENTE KNIKIN FORMAT IKAITB Maka cipherteksnya dibaca secara vertikal menjadi DEKFIEMNOKPEIRAANKMIRTIATTENTB Atau dapat juga ditulis dalam kelompok-kelompok yang terdiri dari 4 huruf : DEKF IEMN OKPE IRAA NKMI RTIA TTEN TB Untuk
mendekripsi
pesan,
kita
membagi
panjang
cipherteks dengan kunci. Pada contoh ini, kita membagi 30
19
dengan 6 untuk mendapatkan 5 (jika cipherteks ditulis dalam kelompok-kelompok huruf, buang semua spasi yang ada sehingga menjadi string yang panjang). Algoritma dekripsi identik dengan algoritma enkripsi. Jadi, kita tulis cipherteks dalam baris-baris selebar 5 karakter menjadi : DEKFI EMNOK PEIRA ANKMI RTIAT TENTB Dengan membaca setiap kolom kita memperoleh pesan semula : DEPARTEMEN TEKNIK INFORMATIKA ITB
2.6.
Algoritma Kriptografi Modern Kriptografi modern mempunyai kerumitan yang sangat kompleks karena dioperasikan menggunakan komputer (Ariyus, 2008: 46). Kriptografi modern merupakan suatu perbaikan yang mengacu pada kriptografi klasik. Algoritma kriptografi modern terdiri dari dua bagian (Ariyus, 2008: 108) : 2.6.1.
Algoritma Simetris Algoritma simetris adalah algoritma yang menggunakan kunci yang sama untuk enkripsi dan dekripsinya. Keamanan algoritma simetris tergantung pada kuncinya. Algoritma simetris sering juga disebut algoritma kunci rahasia, algoritma kunci tunggal atau algoritma satu kunci. Dua kategori yang termasuk
20
pada algoritma simetris ini adalah algoritma block cipher dan stream cipher. Aplikasi dari algoritma simetris diantaranya adalah:
2.6.2.
1.
Data Encryption Standard (DES).
2.
Advanced Encryption Standard (AES).
3.
International Data Encryption Algorithm (IDEA).
4.
A5.
5.
RC4.
Algoritma Asimetris Algoritma asimetris adalah pasangan kunci kriptografi yang salah satunya digunakan untuk proses enkripsi dan yang satu lagi untuk dekripsi. Semua orang yang mendapatkan kunci publik dapat menggunakannya untuk mengenkripsi suatu pesan, sedangkan hanya satu orang saja yang memiliki kunci rahasia itu, yang dapat melakukan pembongkaran terhadap kode yang dikirim untuknya. Beberapa algoritma asimetris antara lain:
2.6.3.
1.
RSA (Rivest Shamir Adleman).
2.
Diffie Hellman.
Algoritma Hibrida Algoritma hibrida adalah algoritma yang memafaatkan dua tingkatan kunci, yaitu kunci rahasia (simetri) – yang disebut juga session key (kunci sesi) – untuk enkripsi data dan pasangan
21
kunci rahasia – kunci publik untuk pemberian tandatangan digital serta melindungi kunci simetri.
2.7.
Advance Encryption Standard DES (Data Encryption Standard) dianggap sudah tidak aman lagi karena dengan perangkat keras khusus kuncinya bisa ditemukan dalam beberapa hari. National Institute of Standards and Technology (NIST), sebagai agensi Departemen Perdagangan AS mengusulkan kepada Pemerintah Federal AS untuk sebuah standard kriptografi yang baru. Untuk menghindari kontroversi mengenai standard yang baru tersebut, NIST mengadakan sayembara terbuka untuk membuat standard algoritma kriptografi yang akan diberi nama Advanced Encryption Standard (AES) (Munir, 2006 : 157). Persyaratan yang diajukan oleh NIST adalah : 1.
Algoritma yang ditawarkan termasuk ke dalam kelompok algoritma kriptografi simetri berbasis cipher blok.
2.
Seluruh rancangan algoritma harus publik (tidak dirahasiakan).
3.
Panjang kunci fleksibel : 128, 192, dan 256 bit.
4.
Ukuran blok yang dienkripsi adalah 128 bit.
5.
Algoritma dapat diimplementasikan baik sebagai software maupun hardware. Pada bulan Agustus 1998, NIST memilih 5 finalis yang didasarkan
pada aspek keamanan algoritma, kemangkusan (efficiency), fleksibilitas, dan kebutuhan memori. Finalis tersebut adalah (Munir, 2006 : 157):
22
1.
Rijndael (dari Vincent Rijmen and Joan Daemen – Belgia, 86 suara).
2.
Serpent (dari Ross Anderson, Eli Biham, dan Lars Knudsen – Inggris, Israel, dan Norwegia, 59 suara).
3.
Twofish (dari tim yang diketuai oleh Bruce Schneier – USA, 31 suara).
4.
RC6 (dari laboratorium RIVEST SHAMIR ADLEMAN – USA, 23 suara).
5.
MARS (dari IBM, 13 suara). Pada bulan Oktober 2000, NIST mengumumkan untuk memilih
Rijndael (dibaca : Rhinedoll), dan pada bulan November 2001, Rijndael ditetapkan sebagai Advance Encryption Standard, dan diharapkan Rijndael menjadi standard kriptografi yang dominan paling sedikit selama sepuluh tahun (Munir, 2006 : 158).
2.7.1.
Panjang Kunci dan Ukuran Blok Rijndael Rijndael mendukung panjang kunci 128 bit sampai 256 bit dengan step 32 bit. Panjang kunci dan ukuran blok dapat dipilih secara independen. Setiap blok dienkripsi dalam sejumlah putaran tertentu, sebagaimana halnya pada DES. Karena
Advance
Encryption
Standard
menetapkan
panjang kunci adalah 128, 192, dan 256, maka dikenal Advance Encryption Standard-128, Advance Encryption Standard-192, dan Advance Encryption Standard-256. Table 2.1. meresumekan perbedaan ketiga versi Advance Encryption Standard tersebut.
23
Tabel 2.1. Tiga buah Versi Advance Encryption Standard (Sumber : Munir, 2006 : 158) Panjang Kunci (Nk words)
Ukuran Blok (Nb words)
Jumlah Putaran (Nr)
AES-128
4
4
10
AES-192
6
4
12
AES-256
8
4
14
Catatan : 1 word = 32 bit
Secara defacto, hanya ada dua varian AES, yaitu AES-128 dan
AES
256,
karena
akan
sangat
jarang
pengguna
menggunakan kunci yang panjangnya 192 bit. Karena Advance Encryption Standard mempunyai panjang kunci paling sedikit 128 bit, maka Advance Encryption Standard tahan terhadap serangan exhaustive key search dengan teknologi saat ini. Dengan panjang kunci 128-bit, maka terdapat sebanyak 2128 = 3,4 x 1038 kemungkinan kunci. Jika digunakan komputer tercepat yang dapat mencoba 1 juta kunci setiap detik, maka akan dibutuhkan waktu 5,4 x 1024 tahun untuk mencoba seluruh kemungkinan kunci. Jika digunakan komputer tercepat yang dapat mencoba 1 juta kunci setiap milidetik, maka akan dibutuhkan waktu 5,4 x 1018 tahun untuk mencoba seluruh kemungkinan kunci.
24
2.7.2.
Algoritma Rijndael Rijndael menggunakan substitusi dan permutasi, dan sejumlah
putaran
(cipher
berulang),
setiap
putaran
menggunakan kunci internal yang berbeda (kunci setiap putaran disebut round key). Tetapi tidak seperti DES yang berorientasi bit, Rijndael beroperasi dalam orientasi byte. Selain itu, Rijndael tidak menggunakan jaringan Feistel seperti DES dan GOST. Garis besar Algoritma Rijndael yang beroperasi pada blok 128-bit dengan kunci 128-bit adalah sebagai berikut (Munir, 2006 : 159): 1.
AddRoundKey : melakukan XOR antara state awal (plainteks) dengan cipher key. Tahap ini disebut juga initial round.
2.
Putaran sebanyak Nr – 1 kali. Proses yang dilakukan pada setiap putaran adalah : a.
SubBytes : substitusi byte dengan menggunakan table substitusi (S-box).
b.
ShiftRows : pergeseran baris-baris array state secara wrapping.
c.
MixColumns : mengacak data di masing-masing kolom array state.
d.
AddRoundKey : melakukan XOR antara state sekarang dengan round key.
3.
Final round : proses untuk putaran terakhir :
25
a.
SubBytes
b.
ShiftRows
c.
AddRoundKey
Garis besar algoritma enkripsi Rijndael diperlihatkan pada gambar 2.5.
Chiper Key
state
initial round
AddRoundKey
⊕ 1-SubBytes
2-ShiftRows Round Key 0
3-MixColumns
9 rounds
4-AddRoundKey
⊕
SubBytes Round Key 10
ShiftRows
AddRoundKey
⊕
final round
Gambar 2.5. Diagram Proses Enkripsi (Sumber : Munir, 2006 : 159)
Algoritma Rijndael mempunyai tiga parameter (Munir, 2006 : 161) : 1.
plaintext : array yang berukuran 16-byte, yang berisi data masukan. 26
2.
ciphertext : array yang berukuran 16-byte, yang berisi hasil enkripsi.
3.
key : array yang berukuran 16-byte, yang berisi kunci ciphering (disebut juga cipher key). Dengan 16 byte, maka baik blok data dan kunci yang
berukuran 128-bit dapat disimpan di dalam ketiga array tersebut (128 = 16 x 8). Selama kalkulasi plainteks menjadi cipherteks, status sekarang dari data disimpan di dalam array of bytes dua dimensi, state, yang berukuran NROWS x NCOLS. Untuk blok data 128-bit, ukuran state adalah 4 x 4. Elemen array state diacu sebagai S[r,c], dengan 0 ≤ r < 4 dan 0 ≤ c < Nb (Nb adalah panjang blok dibagi 32. Pada AES-128, Nb = 128/32 = 4). Pada awal enkripsi, 16-byte data masukan, in0,in1,…,in15 disalin ke dalam array state (direalisasikan oleh fungsi CopyPlaintextToState(state, plaintext)) seperti diilustrasikan sebagai berikut : output bytes
in0
input bytes in4 in8 in12
S0,0
S0,1
S0,1
S0,3
out0
out4
out8
out12
in1
in5
in9
in13
S1,0
S1,1
S1,2
S1,3
out1
out5
out9
out13
in2
in6
in10
in14
S2,0
S2,1
S2,2
S2,3
out2
out6
out10
out14
in3
in7
in11
in15
S3,0
S3,1
S3,2
S3,3
out3
out7
out11
out15
state array
Operasi Enkripsi/dekripsi dilakukan terhadap array S, dan keluarannya ditampung di dalam array out. Skema penyalinan array masukan in ke array S adalah sebagai berikut :
27
S[r, c] ← in[r + 4c] untuk 0 ≤ r < 4 dan 0 ≤ c < Nb Skema penyalinan array S ke array keluaran out : out[r + 4c] ← S[r, c] untuk 0 ≤ r < 4 dan 0 ≤ c < Nb Contoh elemen state dan kunci dalam notasi HEX : input state
Transformasi SubBytes memetakan setiap byte dari array state dengan menggunakan tabel substitusi S-box. Tidak seperti DES yang mempunyai S-box berbeda pada setiap putaran, Advance Encryption Standard hanya mempunyai satu buah S-box. Tabel S-box yang digunakan ditunjukkan pada table 2.2 :
28
Tabel 2.2. S-box (Sumber : Munir, 2006 : 163) hex
x
y 0
1
2
3
4
5
6
7
8
9
a
b
c
d
e
f
0
63
7c
77
7b
f2
6b
6f
c5
30
01
67
2b
fe
d7
ab
76
1
ca
82
c9
7d
fa
59
47
f0
ad
d4
a2
af
9c
a4
72
c0
2
b7
fd
93
26
36
3f
f7
cc
34
a5
e5
f1
71
d8
31
15
3
04
c7
23
c3
18
96
05
9a
07
12
80
e2
eb
27
b2
75
4
09
83
2c
1a
1b
6e
5a
a0
52
3b
d6
b3
29
e3
2f
84
5
53
d1
00
ed
20
fc
b1
5b
6a
cb
be
39
4a
4c
58
cf
6
d0
ef
aa
fb
43
4d
33
85
45
f9
02
7f
50
3c
9f
a8
7
51
a3
40
8f
92
9d
38
f5
bc
b6
da
21
10
ff
f3
d2
8
cd
0c
13
ec
5f
97
44
17
c4
a7
7e
3d
64
5d
19
73
9
60
81
4f
dc
22
2a
90
88
46
ee
b8
14
de
5e
0b
db
a
e0
32
3a
0a
49
06
24
5c
c2
d3
ac
62
91
95
e4
79
b
e7
c8
37
6d
8d
d5
4e
a9
6c
56
f4
ea
65
7a
ae
08
c
ba
78
25
2e
1c
a6
b4
c6
e8
dd
74
1f
4b
bd
8b
8a
d
70
3e
b5
66
48
03
f6
0e
61
35
57
b9
86
c1
1d
9e
e
e1
f8
98
11
69
d9
8e
94
9b
1e
87
e9
ce
55
28
df
f
8c
a1
89
0d
bf
e6
42
68
41
99
2d
0f
b0
54
bb
16
Cara pensubstitusian adalah sebagai berikut : untuk setiap byte pada array state, misalkan S[r,c]=xy, yang dalam hal ini xy adalah
digit hexadesimal
dari
nilai
S[r,c],
maka
nilai
substitusinya, yang dinyatakan dengan S’[r,c], adalah elemen di dalam S-box yang merupakan perpotongan baris x dengan kolom y. Gambar 2.5 memperlihatkan transformasi SubBytes().
29
a0,0 a0,1 a0,2 a0,3
b0,0 b0,1 b0,2 b0,3 SubBytes
a1,0 a1,1 a1,2 a1,3
b1,0 b1,1 b1,2 b1,3
a2,0 a2,1 aa2,2 2,2 a 2,3
b2,0 bb2,1 2,2 b2,2 b2,3
a3,0 a3,1 a3,2 a3,3
b3,0 b3,1 b3,2 b3,3
S Gambar 2.6. Transformasi SubBytes (Sumber : Munir, 2006 : 163)
2.7.4.
Transformasi ShiftRows() Transformasi ShiftRows() melakukan pergeseran secara wrapping (siklik) pada 3 baris terakhir dari array state. Jumlah pergeseran bergantung pada nilai baris (r). baris r = 1 digeser sejauh 1 byte, baris r = 0 tidak digeser. Gambar 2.6 memperlihatkan transformasi ShiftRows.
Gambar 2.7. Transformasi ShiftRows (Sumber : Munir, 2006 : 165)
2.7.5.
Transformasi MixColumns() Transformasi MixColumns() mengalikan setiap kolom dari array state dengan polinom a(x) mod (x4 + 1). MixColumns
30
memberikan difusi pada cipher. Setiap kolom diperlakukan sebagai polinom 4-suku pada GF(28). Polinom a(x) yang ditetapkan adalah a(x) = {03}x3 + {01}x2 + {01}x + {02}
(6.5)
Transformasi ini dinyatakan sebagai perkalian matriks : S’(x) = a(x) S’0,c S’1,c S’2,c S’3,c
Gambar 2.8. Transformasi MixColumns (Sumber : Munir, 2006 : 166)
31
2.7.6.
Transformasi AddRoundKey() Transformasi ini melakukan operasi XOR terhadap sebuah round key dengan array state, dan hasilnya disimpan di array state. Gambar 2.8 memperlihatkan transformasi AddRoundKey.
Gambar 2.9. Transformasi AddRoundKey (Sumber : Munir, 2006 : 167)
2.7.7. Ekspansi Kunci Algoritma Rijndael mengambil cipher key, K, yang diberikan
oleh
pengguna,
dan
memanggil
fungsi
KeyExpansion() untuk membangkitkan sejumlah round key (banyaknya round key bergantung pada jumlah putaran).
2.8.
Kriptografi Kunci Publik 2.8.1.
Sejarah Kriptografi Kunci Publik Sistem kriptografi nirsimetri dipublikasikan pertama kali pada tahun 1976 oleh Whitfield Diffie dan Martin Hellman, dua
32
orang ilmuwan dari Stanford University melalui makalah berjudul “New Directions in Cryptography”. Makalah mereka membahas distribusi kunci rahasia pada saluran komunikasi publik (yang tidak aman) dengan metode pertukaran kunci yang belakangan dikenal dengan nama algoritma pertukaran kunci Diffie-Hellman. Pada tahun 1977, generalisasi dari ide Cocks ditemukan kembali oleh tiga orang ilmuwan dari MIT, yaitu Rivest, Shamir, dan Adleman. Algoritma enkripsi yang mereka buat dikenal dengan nama Rivest Shamir Adleman. Akhirnya sejak tahun 1976 berbagai algoritma enkripsi, tanda tangan digital, pertukaran kunci, dan teknik
lain
dikembangkan dalam bidang kriptografi kunci publik, misalnya algoritma ElGamal untuk enkripsi dan tanda tangan digital dan algoritma DSA untuk tanda tangan digital. Pada tahun 1980 Neal
Koblitz
memperkenalkan
elliptic-curve-cryptography
sebagai keluarga baru yang analog dengan algoritma kriptografi kunci publik (Munir, 2006 : 177).
2.8.2.
Konsep Kriptografi Kunci Publik Pada kriptografi kunci publik, setiap pengguna memiliki sepasang kunci, satu kunci untuk enkripsi, dan satu kunci untuk dekripsi (Gambar 2.9). Kunci untuk enkripsi diumumkan kepada publik (oleh karena itu tidak rahasia) sehingga dinamakan kunci publik (public key), disimbolkan dengan e. Kunci untuk
33
dekripsi bersifat rahasia sehingga dinamakan kunci pribadi (private key), disimbolkan dengan d. Karena kunci enkripsi ≠ kunci dekripsi itulah kriptografi kunci publik disebut juga kriptografi nirsimetri (Munir, 2006 : 172).
Misalkan E adalah fungsi enkripsi dan D adalah fungsi dekripsi. Misalkan (e, d) adalah pasangan kunci untuk enkripsi dan dekripsi sedemikian, sehingga Ee (m) = c dan Dd (c) = m untuk suatu plainteks m dan cipherteks c. kedua persamaaan ini menyiratkan bahwa dengan mengetahui e dan c, maka secara komputasi hampir tidak mungkin menemukan m. asumsi lainnya, dengan mengetahui e, secara komputasi hampir tidak mungkin menurunkan d. Ee digambarkan sebagai fungsi pintu kolong (trapdoor) satu arah dengan d adalah informasi trapdoor yang diperlukan untuk menghitung fungsi inversinya, D, yang dalam hal ini membuat proses dekripsi dapat dilakukan.
34
Dengan sistem kriptografi kunci publik ini dua orang yang berkomunikasi tidak perlu berbagi kunci yang sama. Keduanya memiliki sepasang kunci, kunci publik dan kunci privat. Sistem kriptografi kunci publik yang aman memiliki dua karakteristik sebagai berikut (Munir, 2006 : 174): 1.
Komputasi untuk enkripsi/dekripsi mudah dilakukan.
2.
Secara komputasi hampir tidak mungkin (infeasible) menurunkan kunci privat, d, bila diketahui kunci publik, e, pasangannya. Kedua karakteristik di atas dapat dianalogikan dengan dua
masalah matematika berikut : a.
Perkalian vs pemfaktoran. Mengalikan dua buah bilangan prima, a x b = n, mudah, tetapi memfaktorkan n menjadi faktor-faktor primanya lebih sulit. Contoh :
b.
Pemangkatan
31 x 47 = 1457
(perkalian, mudah)
1457 = ? x ?
(pemfaktoran, sulit)
vs
logaritma
diskrit.
Melakukan
perpangkatan modulo, b = ax mod n, mudah, tetapi menemukan x dari ax ≡ b (mod n) lebih sulit. Contoh : 126 mod 1125 = 234
(perpangkatan modulo, mudah)
x dari 12x ≡ 234 (mod 1125)
35
(logaritmik diskrit, sulit)
Dua masalah matematika di atas sering dijadikan dasar pembangkitan sepasang kunci pada kriptografi kunci publik, yaitu (Munir, 2006 : 175): 1.
Pemfaktoran Diberikan bilangan bulat n. Faktorkan n menjadi faktor primanya. Contoh : 60 = 2 x 2 x 3 x 5 252601 = 41 x 61 x 101 213 – 1 = 3391 x 23279 x 65993 x 1868569 x 1066818132868207 Semakin besar n, semakin sulit memfaktorkan (butuh waktu sangat lama). Algoritma yang menggunakan prinsip ini : Rivest Shamir Adleman.
2.
Logaritma Diskrit Temukan x sedemikian ax ≡ b (mod n) sulit dihitung. Contoh : jika 3x ≡ 15 (mod 17) maka x = 6. Semakin besar a, b, dan n semakin sulit memfaktorkan (butuh waktu yang lama). Algoritma yang menggunakan prinsip ini : ElGamal dan DSA. Catatan : Persoalan logaritma diskrit adalah kebalikan dari persoalan perpangkatan modular : ax mod n
Sistem kriptografi kunci publik cocok digunakan di dalam kelompok
pengguna
di
36
lingkungan
jaringan
komputer
(LAN/WAN)
yang
memungkinkan
mereka
saling
berkomunikasi. Setiap pengguna jaringan memiliki pasangan kunci publik dan kunci privat yang bersesuaian. Kunci publik, karena tidak rahasia, biasanya disimpan di dalam basisdata kunci yang dapat diakses oleh pengguna lain. Jika ada pengguna yang hendak berkirim pesan ke pengguna lainnya, maka ia perlu mengetahui kunci publik penerima pesan melalui basisdata kunci ini lalu menggunakannya untuk mengenkripsi pesan. Hanya penerima pesan yang dapat mendekripsi pesan karena ia yang mengetahui kunci privatnya sendiri. Dengan sistem kriptografi kunci publik, tidak diperlukan pengiriman kunci privat melalui saluran komunikasi khusus sebagaimana pada sistem kriptografi simetri (Munir, 2006 : 176). 2.8.3.
Aplikasi Kriptografi Kunci Publik Aplikasi kriptografi kunci publik dapat dibagi menjadi tiga kategori (Munir, 2006 : 178): 1.
Kerahasiaan data Seperti pada kriptografi kunci simetri, kriptografi kunci publik dapat digunakan untuk menjaga kerahasiaan data (provide
confidentiality/secrecy)
melalui
mekanisme
enkripsi dan dekripsi. Contoh algoritma untuk aplikasi ini adalah
Rivest
Shamir
Adleman,
Knapsack,
ElGamal, Elliptic Curve Cryptography (ECC).
37
Rabin,
2.
Tanda tangan digital Tanda
tangan
digital
(digital
signature)
dengan
menggunakan algoritma kriptografi kunci publik dapat digunakan untuk membuktikan otentikasi pesan maupun otentikasi pengirim (provide authentication). Contoh algoritmanya untuk aplikasi ini adalah Rivest Shamir Adleman, DSA, dan ElGamal. 3.
Pertukaran kunci (key exchange) Algoritma kriptografi kunci publik dapat digunakan untuk pengiriman
kunci
simetri
(session
key).
Contoh
algoritmanya adalah Rivest Shamir Adleman dan DiffieHellman.
2.9.
RSA (Rivest Shamir Adleman) Algoritma Rivest Shamir Adleman dibuat oleh 3 orang peneliti dari MIT (Massachussets Institute of Technology) pada tahun 1976, yaitu Ron (R)ivest, Adi (S)hamir, dan Leonard (A)dleman. Keamanan algoritma Rivest Shamir Adleman terletak pada sulitnya memfaktorkan bilangan yang besar menjadi faktor-faktor prima. Pemfaktoran dilakukan untuk memperoleh kunci privat. Selama pemfaktoran bilangan besar menjadi faktor-faktor prima belum ditemukan algoritma yang mangkus, maka selama itu pula keamanan algoritma Rivest Shamir Adleman tetap terjamin (Munir, 2006 : 179).
38
Algoritma Rivest Shamir Adleman memiliki besaran-besaran sebagai berikut : 1.
p dan q bilangan prima
(rahasia)
2.
n=p.q
(tidak rahasia)
3.
ф(n) = (p - 1)(q - 1)
(rahasia)
4.
e (kunci enkripsi)
(tidak rahasia)
5.
d (kunci dekripsi)
(rahasia)
6.
m (plainteks)
(rahasia)
7.
c (cipherteks)
(tidak rahasia)
2.9.1.
Perumusan Algoritma Rivest Shamir Adleman Algoritma Rivest Shamir Adleman didasarkan pada teorema Euler yang menyatakan bahwa aф(n) ≡ 1 (mod n)
(2.1)
dengan syarat (Munir, 2006 : 179) : 1.
a harus relatif prima terhadap n
2.
ф(n) = n(1 - 1/p1)(1 - 1/p2 )…(1 – 1/pr), yang dalam hal ini p1, p2, …, pr adalah faktor prima dari n. ф(n) adalah fungsi yang menentukan berapa banyak dari bilangan-bilangan 1, 2, 3,…, n yang relatif prima terhadap n. Berdasarkan sifat ak ≡ bk (mod n) untuk k bilangan bulat ≥
1 maka persamaan (2.1) dapat ditulis menjadi akф(n) ≡ 1k (mod n) atau akф(n) ≡ 1 (mod n)
39
(2.2)
bila a diganti dengan m, maka persamaan (2.2) dapat ditulis menjadi mkф(n) ≡ 1 (mod n)
(2.3)
Berdasarkan sifat ac ≡ bc (mod n), maka bila persamaan (2.3) dikali dengan m menjadi : mkф(n)+1 ≡ m (mod n)
(2.4)
yang dalam hal ini m relatif prima terhadap n. Misalkan e dan d dipilih sedemikian sehingga e · d ≡ 1 (mod ф(n))
(2.5)
atau e · d ≡ kф(n) + 1
(2.6)
Sulihkan (2.6) ke dalam persamaan (2.4) menjadi : me · d ≡ m (mod n)
(2.7)
persamaan (2.7) dapat ditulis kembali menjadi : (me) d ≡ m (mod n)
(2.8)
Yang artinya, perpangkatan m dengan e diikuti dengan perpangkatan dengan d menghasilkan kembali m semula. Berdasarkan persamaan (2.8), maka enkripsi dan dekripsi dirumuskan sebagai berikut : Ee(m) = c ≡ me mod n
(2.9)
Dd(c) = m ≡ cd mod n
(2.10)
Karena e · d = d · e, maka enkripsi diikuti dengan dekripsi ekivalen dengan dekripsi diikuti enkripsi : Dd(Ee(m)) = Ee(Dd(c)) ≡ md mod n
40
(2.11)
Oleh karena md mod n ≡ (m + jn)d mod n untuk sembarang bilangan bulat j, maka tiap plainteks m, m + n, m + 2n, …, menghasilkan cipherteks yang sama. Dengan kata lain, transformasinya dari banyak ke satu. Agar transformasinya dari satu ke satu, maka m harus dibatasi dalam himpunan {0, 1, 2, …, n-1} sehingga enkripsi dan dekripsi tetap benar seperti pada persamaan (2.9) dan (2.10).
2.9.2.
Algoritma Membangkitkan Pasangan Kunci 1.
Pilih dua buah bilangan prima sembarang, p dan q.
2.
Hitung n = p · q (sebaiknya p ≠ q, sebab jika p = q maka n = p2 sehingga p dapat diperoleh dengan menarik akar pangkat dua dari n).
3.
Hitung ф(n) = (p - 1)(q - 1).
4.
Pilih kunci publik, e, yang relatif prima terhadap ф(n).
5.
Bangkitkan kunci privat dengan mengguakan persamaan (2.5), yaitu e · d ≡ 1 (mod ф(n)). Perhatikan bahwa e · d ≡ 1 (mod n) ekivalen dengan e · d ≡ 1 + kф(n), sehingga secara sederhana d dapat dihitung dengan ф
(2.12)
Hasil dari algoritma di atas : -
Kunci publik adalah pasangan (e, n)
-
Kunci privat adalah pasangan (d, n)
Catatan : n tidak bersifat rahasia, sebab ia diperlukan pada perhitungan enkripsi/dekripsi (Munir, 2006 : 181). 41
2.9.3.
Algoritma Enkripsi/Dekripsi Enkripsi 1.
Ambil kunci publik penerima pesan, e, dan modulus n.
2.
Nyatakan plainteks m menjadi blok-blok m1, m2,…, sedemikian sehingga setiap blok merepresentasikan nilai di dalam selang [0, n-1].
3.
Setiap blok m, dienkripsi menjadi blok ci dengan rumus ci = mi e mod n.
Dekripsi Setiap blok cipherteks ci didekripsi kembali menjadi blok mi dengan rumus mi = ci d mod n. 2.9.4.
Keamanan Rivest Shamir Adleman Keamanan algoritma Rivest Shamir Adleman didasarkan pada sulitnya memfaktorkan bilangan besar menjadi faktorfaktor primanya (Munir, 2006 : 183). Masalah pemfaktoran : Faktorkan n, yang dalam hal ini n adalah hasil kali dari dua atau lebih bilangan prima. Pada Rivest Shamir Adleman, masalah pemfaktoran berbunyi : Faktorkan n menjadi dua faktor primanya, p dan q, sedemikian sehingga n = p · q. Sekali n berhasil difaktorkan menjadi p dan q, maka ф(n) = (p - 1)(q - 1) dapat dihitung. Selanjutnya, karena kunci enkripsi e diumumkan (tidak rahasia),
42
maka kunci dekripsi d dapat dihitung dari persamaan e · d ≡ 1 (mod ф(n)). Selama 300 tahun para matematikawan mencoba mencari faktor bilangan yang besar namun tidak banyak membuahkan hasil. Semua bukti yang diketahui menunjukkan bahwa upaya pemfaktoran itu luar biasa sulit. Belum ditemukan algoritma pemfaktoran bilangan besar dalam waktu polinomial, tetapi juga tidak dapat dibuktikan algoritma tersebut ada. Fakta inilah yang membuat algoritma Rivest Shamir Adleman dianggap aman. Penemu algoritma Rivest Shamir Adleman bahkan menyarankan nilai p dan q panjangnya lebih dari 100 angka. Dengan demikian hasil kali n = p x q akan berukuran lebih dari 200 angka. Menurut Rivest dan kawan-kawan, usaha untuk mencari faktor prima dari bilangan 200 angka membutuhkan waktu komputasi selama 4 milyar tahun, sedangkan untuk bilangan 500 angka membutuhkan waktu 1025 tahun. (dengan asumsi bahwa algoritma pemfaktoran yang digunakan adalah algoritma yang tercepat saat ini dan komputer yang digunakan mempunyai kecepatan 1 milidetik). Secara umum dapat disimpulkan bahwa Rivest Shamir Adleman hanya aman jika n cukup besar. Jika panjang n hanya 256 bit atau kurang, ia dapat difaktorkan dalam beberapa jam saja dengan sebuah komputer PC dan program yang tersedia
43
secara bebas. Jika panjang n 512 bit atau kurang, ia dapat difaktorkan dengan beberapa ratus komputer. Tahun 1977, tiga orang penemu Rivest Shamir Adleman membuat sayembara untuk memecahkan cipherteks dengan menggunakan Rivest Shamir Adleman di majalah scientific American. Hadiahnya adalah $100. Tahun 1994, kelompok yang bekerja dengan kolaborasi
internet berhasil memecahkan
cipherteks hanya dalam waktu 8 bulan.
2.9.5.
Kecepatan Rivest Shamir Adleman lebih lambat daripada algoritma kriptografi kunci simetri seperti DES dan AES. Oleh karena itu, di dalam praktek penggunaannya, pesan tetap dienkripsi dengan menggunakan salah satu algoritma kunci simetri atau kunci rahasia, sedangkan Rivest Shamir Adleman digunakan untuk mengenkripsi kunci rahasia. Pesan dan kunci rahasia yang sudah dienkripsi dapat dikirim bersama-sama. Penerima pesan mulamula mendekripsi kunci rahasia dengan kunci privatnya, lalu menggunakan kunci rahasia tersebut untuk mendekripsi pesan (Munir, 2006 : 184).
44
2.10.
PHP 2.10.1. Pengertian PHP PHP adalah singkatan dari PHP Hypertext Preprocessor yang digunakan sebagai bahasa script server-side dalam pengembangan web yang disisipkan pada dokumen HTML. Penggunaan PHP memungkinkan web dapat dibuat dinamis sehingga maintenance situs web tersebut menjadi lebih mudah dan efisien (Peranginangin, 2006 : 1). PHP merupakan software open source yang disebarkan dan dilisensikan secara gratis serta dapat di-download bebas dari situs resminya (http://www.php.net).
2.10.2. Kelebihan-kelebihan PHP Diantara maraknya pemrograman server web saat ini, adalah ASP yang berkembang menjadi ASP.NET, JSP, CFML, dan
PHP.
Jika
dibandingkan
di
antara
tiga
terbesar
pemrograman server web di atas, terdapat kelebihan dari PHP itu sendiri, yaitu : 1.
PHP merupakan
sebuah bahasa
script yang
tidak
melakukan sebuah kompilasi dalam penggunaanya. Tidak seperti hanya bahasa pemrograman aplikasi seperti Visual Basic dan sebagainya. 2.
PHP dapat berjalan pada web server yang dirilis oleh Microsoft, seperti IIS atau PWS juga pada apache yang bersifat open source.
45
3.
Karena sifatnya yang open source, maka perubahan dan perkembangan interpreter pada PHP lebih cepat dan mudah, karena banyak milis dan developer membantu pengembangannya.
4.
Jika dilihat dari segi pemahaman, PHP memiliki referensi yang begitu banyak sehingga sangat mudah untuk dipahami.
5.
PHP dapat berjalan pada tiga sistem operasi, yaitu : Linux, Unix, dan Windows, dan juga dapat dijalankan secara runtime pada suatu console.
2.10.3. Sintaks PHP Sintaks program/script PHP ditulis dalam apitan tanda khusus PHP. Ada empat macam pasangan tag PHP yang dapat digunakan untuk menandai blok script PHP : , < ? ... ?>, <% … %>, atau <script language = ”PHP”> ...
2.11.
MySQL MySQL adalah multi user database yang menggunakan bahasa Structured Query Language (SQL). MySQL dalam operasi client server melibatkan server daemon MySQL di sisi server dan berbagai macam program serta library yang berjalan di sisi client. MySQL mampu menangani data yang cukup besar. Perusahaan yang menangani MySQL yaitu TcX, mengaku mampu menyimpan data lebih dari 40 database, 10.000 tabel, dan sekitar 7 juta baris, totalnya kurang lebih 100 Gigabytes data (Nanang, 2004, Ch4).
46
SQL adalah bahasa standar yang digunakan untuk mengakses server database. Bahasa ini pada awalnya dikembangkan oleh IBM, namun telah diadopsi dan digunakan sebagai standar industri. Dengan menggunakan SQL, proses akan database menjadi lebih user-friendly dibandingkan dengan menggunakan dBASE atau clipper yang masih menggunakan perintah-perintah pemrograman.
47
BAB III METODOLOGI PENELITIAN
Pada penulisan tugas akhir ini, diperlukan data-data yang lengkap sebagai bahan pendukung kebenaran materi uraian dan pembahasan. Oleh karena itu diperlukan metodologi pengumpulan data dan metode pengembangan sistem.
3.1.
Metode Pengumpulan Data Penyusunan skripsi ini dilakukan dengan menggunakan beberapa metode yang dapat mendukung penulisan, baik dalam pengumpulan data maupun informasi yang diperlukan, untuk mendapatkan kebenaran materi uraian pembahasan. Adapun metode pengumpulan
data yang digunakan dalam
pembahasan skripsi ini adalah dengan menggunakan :
3.1.1.
Metode Observasi Observasi adalah pengamatan langsung yang dilakukan di lapangan untuk mengetahui secara langsung keadaan objek penelitian yang sebenarnya. Hal ini bertujuan untuk memperoleh penjelasan mengenai data-data dan informasi yang dibutuhkan dalam penelitian dengan divisi operasional CV Maharta Mandiri Promo. Observasi ini dilaksanakan selama bulan Juli 2009, bertempat di Kantor CV Maharta Mandiri Promo Jl. Raya Pondok Kacang Timur No. 11 Pondok Aren, Tangerang.
48
3.1.2.
Metode Wawancara Wawancara
memperoleh
keterangan
untuk
tujuan
penelitian dengan cara tanya-jawab sambil bertatap muka antara pewawancara dengan narasumber telah dilakukan pada tanggal 9 Juli 2009 dengan narasumber Bapak Andi Muhammad AR (Direktur utama CV Maharta Mandiri Promo). Hasil wawancara dapat dilihat pada lampiran A.
3.1.3.
Metode Studi Pustaka Metode studi pustaka digunakan dengan membaca dan mempelajari referensi yang ada, e-book, serta mencari referensi tambahan dari internet. Buku utama yang digunakan peneliti yaitu : Kriptografi (Munir, 2006), Memahami Model Enkripsi & Security Data (Wahana Komputer, 2003), Pengantar Ilmu Kriptografi (Ariyus, 2008). Dan buku-buku selengkapnya yang digunakan dapat dilihat pada daftar pustaka.
3.1.4.
Metode Studi Literatur Metode
studi
literatur
digunakan
dengan
melihat
penelitian yang sudah ada. Merujuk pada penelitian yang telah dilakukan
(Muliati,
2009),
beberapa
kelebihan
akan
ditambahkan pada aplikasi yang akan dibuat yaitu : dapat mengenkripsi sepuluh file sekaligus, adanya pemberitahuan file masuk baru, perbedaan warna antara file yang pernah didekripsi dengan yang belum pernah didekripsi, pembangkitan pasangan
49
kunci yang baru, pengubahan password login, verifikasi gambar saat pendaftaran, dan pertanyaan pengaman.
3.2.
Metode Pengembangan Sistem Penelitian dilakukan dengan menggunakan metode pengembangan sistem model pendekatan RAD (Rapid Application Development). Penulis menggunakan model RAD karena melihat dari aplikasi yang dikembangkan adalah aplikasi yang sederhana dan tidak membutuhkan waktu yang lama, metode RAD adalah metode yang diperuntukkan untuk jangka pendek sesuai dengan aplikasi yang dikembangkan. Berikut adalah penjelasan masing-masing fase RAD dalam penelitian ini.
3.2.1.
Fase Perencanaan Syarat-Syarat 1.
Analisis Kebutuhan Masalah Dari hasil observasi dan wawancara yang dilakukan pada tahap sebelumnya, maka peneliti dapat menganalisis bahwa kurangnya pengamanan data di CV Maharta Mandiri Promo ini telah menyebabkan hilangnya data penting. Oleh karena itu, diperlukan sebuah aplikasi keamanan data yang mudah digunakan
dan dapat
menjamin kerahasiaan data mereka. Untuk selengkapnya dapat dilihat pada subbab 4.4.1.
50
2.
Tujuan Berdasarkan pada analisis kebutuhan di atas, maka tujuan penelitian ini adalah untuk membuat suatu aplikasi enkripsi yang mengimplementasikan metode Advance Encryption Standard dan Rivest Shamir Adleman sehingga dapat menjaga kerahasiaan data di CV Maharta Mandiri Promo. Untuk selengkapnya dapat dilihat pada subbab 4.4.2.
3.
Syarat-syarat Untuk mewujudkan tujuan tersebut dibutuhkan beberapa syarat minimum dalam pembuatan aplikasi keamanan data ini yaitu meliputi hal-hal sebagai berikut : a.
Web server Web server merupakan syarat mutlak suatu aplikasi berbasis web. Web server merupakan platform untuk menjalankan suatu aplikasi berbasis web. Untuk pengembangan aplikasi ini dibutuhkan minimum Web Server Apache 2.0.
b.
Bahasa Pemrograman Bahasa
pemrograman
dibutuhkan
untuk dapat
membangun sebuah aplikasi, agar komputer dapat melakukan berbagai operasi dan fungsi sesuai dengan keinginan user. Untuk itu dibutuhkan suatu bahasa pemrograman yang dapat digunakan untuk
51
membuat
aplikasi
client
server.
Bahasa
pemrograman minimum yang dibutuhkan dalam pengembangan aplikasi ini adalah PHP 4.0. c.
Database Perancangan tabel-tabel
akan digunakan untuk
pelengkap program seperti proses login serta proses penamaan dan penyimpanan file enkripsi. Database yang dibutuhkan adalah database MySQL 5.0. Spesifikasi perangkat lunak dan perangkat keras minimum yang diperlukan dalam pembuatan aplikasi ini adalah sebagai berikut : a.
Perangkat Lunak : 1.
Paket web server (Apache 2.0, PHP 4.0, MySQL 5.0)
b.
2.
Adobe Photoshop 7.
3.
EditPlus 2.12.
4.
Mozilla Firefox 3.0.
5.
Microsoft Windows 2000.
Perangkat Keras : 1.
Processor Pentium III.
2.
Harddisk 80 GB.
3.
Memory SDR 512 MB.
4.
Monitor dengan resolusi 800 x 600 pixel.
52
3.2.2.
Fase Perancangan Pada tahap ini dilakukan perancangan proses yaitu perancangan proses-proses yang akan terjadi di dalam sistem. 1.
Perancangan Proses Aplikasi ini menggabungkan dua metode enkripsi. Pada proses enkripsi, file dienkripsi menggunakan metode enkripsi Advance Encryption Standard (rijndael). Setelah selesai, kunci yang digunakan untuk enkripsi dengan Advance Encryption Standard tadi dienkripsi dengan menggunakan kunci publik metode enkripsi Rivest Shamir Adleman, dan string hasil enkripsi password tersebut disimpan di basis data. Pada proses dekripsi, file terenkripsi yang dihasilkan pada proses enkripsi akan diubah menjadi file semula dengan cara membalik proses enkripsi. Pada proses ini pertamatama, password didekripsi menggunakan kunci private metode dekripsi Rivest Shamir Adleman. Setelah selesai maka file terenkripsi didekripsi dengan kunci tadi menggunakan metode
dekripsi Advance
Encryption
Standard. Setelah proses dekripsi selesai file terenkripsi akan kembali ke tipe semula. Untuk selengkapnya dapat dilihat di subbab 4.5.1. Agar memperjelas gambaran proses enkripsi dan dekripsi, dapat dilihat pada gambar 3.1.
53
Proses enkripsi
Proses dekripsi
plainteks
cipherpassword
AES
RSA
cipherteks
password
password
cipherteks
RSA
AES
cipherpassword
plainteks
Gambar 3.1. Proses enkripsi dan dekripsi
2.
Perancangan Basis Data Pada aplikasi acrypt cs ini digunakan database sebagai pelengkap program seperti proses login dan proses penyimpanan data file enkripsi. Database yang digunakan adalah database MySQL. Untuk selengkapnya dapat dilihat di subbab 4.5.3.
3.
Perancangan Antarmuka Pemakai (User Interface) Perancangan antarmuka pemakai memberikan fasilitas komunikasi antar pemakai dan sistem, memberikan berbagai fasilitas informasi dan berbagai keterangan yang bertujuan untuk membantu mengarahkan alur penelusuran masalah sampai ditemukan solusi. Perancangan antarmuka 54
pemakai (user interface) pada aplikasi ini digambarkan oleh State Transition Diagram. Untuk selengkapnya dapat dilihat di subbab 4.5.4.
3.2.3.
Fase Konstruksi Pada tahap ini dilakukan pembuatan program terhadap rancangan-rancangan yang telah
didefinisikan. Pembuatan
program yang dilakukan menggunakan bahasa pemrograman PHP yang dibuat dengan menggunakan text editor editplus. Untuk selengkapnya dapat dilihat di subbab 4.6.
3.2.4.
Fase Pelaksanaan Pada tahapan ini dilakukan pengujian terhadap aplikasi acrypt cs yang telah dibuat, pada pengujian terhadap aplikasi ini, penulis menggunakan pengujian black-box yaitu suatu pengujian yang berfokus pada persyaratan fungsional perangkat lunak
(Pressman, 2002:
551). Sebagai akhir
dari fase
pelaksanaan, diminta tanggapan user tentang aplikasi ini untuk bahan evaluasi. Untuk selengkapnya dapat dilihat di subbab 4.7. Ilustrasi metodologi penelitian yang dilakukan dalam membangun aplikasi acrypt cs ini dapat dilihat pada gambar 3.2.
55
Metode Pengumpulan Data
Analisis Kebutuhan
Tujuan : Menciptakan sebuah aplikasi kriptografi menggunakan metode AES dan RSA berbasis client server untuk memberikan salah satu solusi dalam mengatasi masalah keamanan data serta menjaga kerahasiaan data di CV Maharta Mandiri Promo
Syarat-syarat : Web Server Apache, PHP, dan MySQL
Fase Perencanaan Syarat-syarat Perancangan algoritma kriptografi Fase Perancangan
Perancangan Proses Perancangan Antarmuka
Fase Konstruksi
Flowchart
STD (State Transition Diagram)
Tahap Pembuatan Program
Konfigurasi client server Fase Pelaksanaan
Proses Enkripsi dan Dekripsi Multifile Pengujian Aplikasi acrypt cs
perubahan
Tanggapan User
Aplikasi Kriptografi berbasis client server
Gambar 3. 2 Ilustrasi metodologi penelitian pengembangan aplikasi kriptografi berbasis client server (acrypt cs)
56
BAB IV PEMBAHASAN DAN IMPLEMENTASI
4.1.
Gambaran Umum CV Maharta Mandiri Promo 4.1.1.
Sekilas CV Maharta Mandiri Promo CV Maharta Mandiri Promo adalah perusahaan yang bergerak dalam bidang desain grafis dan percetakan. Perusahaan ini berdiri pada tanggal 18 Oktober 1999 berdasarkan akta notaris Srilestari Roespinoedji, No.87. Tanggal 18 Oktober 1999. Bertempat di Jalan Raya Pondok Kacang Timur No.11. Sejak berdiri hingga saat ini, perusahaan ini telah banyak mengantongi ijin. Diantaranya : Surat Izin Tempat Usaha, No.503/KEC.Pd.Aren/2007. Tanggal 02 Mei 2007, Tanda Daftar
Perusahaan
Persekutuan
Komanditer,
No.30.03.3.52.01854. Tanggal 05 Agustus 2005, dan Izin Usaha Perdagangan
(IUP)—Kecil,No.503.1/0083/30-03/PK/III/2006.
Tanggal 07 Maret 2006. Sejak awal berdiri sampai sekarang, perusahaaan telah mendapat banyak mitra bisnis. Diantaranya adalah mitra langsung yaitu McDonald, CommonWealth Bank, Alfa Grosir, Bank Lippo, dan Badan Pertanahan Nasional. Sedangkan mitra tidak langsung diantaranya Coca cola, Bank Mandiri, Kimia
57
Farma, Telkomsel, Nestle, dan BNI 46. Sumber : Company Profile CV Maharta Mandiri Promo. 4.1.2.
Visi dan Misi CV Maharta Mandiri Promo CV Maharta Mandiri Promo sebagai sebuah perusahaan desain grafis dan percetakan memiliki visi dan misi dalam menjalankan perusahaan. Visi dan misi tersebut bertujuan untuk membangun perusahaan agar terus maju di bidangnya. 4.1.2.1. Visi CV Maharta Mandiri Promo Menjadi perusahaan periklanan yang unggul, profesional, bertaraf internasional, dan mandiri. 4.1.2.2. Misi CV Maharta Mandiri Promo
4.1.3.
1.
Memberikan layanan terbaik kepada konsumen.
2.
Menggunakan teknologi terbaru dalam produksi.
3.
Menjunjung tinggi nilai moral dalam bisnis.
4.
Menyejahterakan kehidupan karyawan.
5.
Memiliki tanggung jawab sosial yang baik.
Struktur Organisasi CV Maharta Mandiri Promo Gambar 4.1 menunjukkan struktur organisasi CV Maharta Mandiri Promo.
58
Direktur Utama Andi Muhammad AR
Direktur Operasional H. Ahmad AR
Direktur Keuangan Inah Roinah
Direktur Pemasaran Alfian
Kabag Produksi Ichram Masrul
Kabag Kreatif Anwar Rosandi
Kabag Keuangan Nani Rustini
Manajer Pemasaran Iwan
Pegawai
Pegawai
Pegawai
Pegawai
Gambar 4.1. Struktur Organisasi CV Maharta Mandiri Promo (Sumber : Company Profile CV Maharta Mandiri Promo)
4.2.
Hasil Observasi Observasi yang dilaksanakan selama bulan Juli 2009 di Kantor CV Maharta Mandiri Promo memberikan kesimpulan bahwa data yang tersimpan di komputer yang terhubung dalam jaringan LAN (Local Area Network) CV Maharta Mandiri Promo tidak aman dari pencurian data. Karena data yang dicuri dapat langsung dimanfaatkan oleh pihak yang tidak berhak seperti yang pernah terjadi sebelumnya. Oleh karena itu diperlukan suatu aplikasi enkripsi yang dapat melindungi data-data penting perusahaan dari pihak yang tidak bertanggung jawab.
4.3.
Aplikasi Acrypt cs Aplikasi acrypt cs (Aplikasi Enkripsi berbasis Client Server) adalah sebuah aplikasi keamanan data berbasis client server yang
59
menggunakan metode Advance Encryption Standard dan Rivest Shamir Adleman. Aplikasi ini diharapkan dapat membantu anda dalam menjaga data-data penting dari pengaksesan orang-orang yang tidak berhak.
4.4.
Fase Perencanaan Syarat-syarat 4.4.1.
Analisis Kebutuhan Masalah Aplikasi keamanan data yang akan dibuat seperti yang telah dianalisis pada subbab 3.2.1 adalah aplikasi enkripsi dan dekripsi berbasis web yang mudah digunakan menggunakan metode kriptografi Advance Encryption Standard dan Rivest Shamir Adleman.
4.4.2.
Tujuan Seperti yang telah dijelaskan pada subbab 3.2.2 peneliti bertujuan
untuk
membuat suatu
aplikasi enkripsi
yang
mengimplementasikan metode enkripsi dan dekripsi Advance Encryption Standard dan Rivest Shamir Adleman, dan juga pembangkitan pasangan kunci publik dan kunci privat Rivest Shamir Adleman sehingga dapat menjaga kerahasiaan data di CV Maharta Mandiri Promo.
60
4.4.3.
Syarat-syarat Untuk mewujudkan tujuan tersebut digunakan beberapa syarat dalam pembuatan aplikasi keamanan data ini yaitu meliputi hal-hal sebagai berikut : a.
Web server Dalam pengembangan aplikasi ini digunakan Web Server Apache 2.2.8. yang tergabung dalam paket xampp 1.6.6a.
b.
Bahasa Pemrograman Bahasa pemrograman yang digunakan untuk membangun aplikasi ini adalah PHP 5.2.5. Interpreter PHP telah ada dalam paket xampp 1.6.6a. Dalam penulisan kode, peneliti memakai editor teks editplus 2.12.
c.
Database Database yang digunakan dalam aplikasi ini adalah database MySQL 5.0.51a yang ada dalam paket xampp 1.6.6a. Untuk pembuatan database, digunakan editor phpMyAdmin.
4.5.
Fase Perancangan (Workshop Design) Pada tahap ini dilakukan perancangan, evaluasi dan memperbaiki sistem sesuai dengan kebutuhan agar sistem yang sedang dibuat dapat dimanfaatkan secara optimal.
61
4.5.1.
Perancangan Proses 1.
Diagram konteks sistem yang diusulkan
username, password, public key, private key
user
file
public key, private key
aplikasi acryptcs
filename1, filename2, sender_id, receiver_id
user
file
filename1, filename2, sender_id, receiver_id
Gambar 4.2. Diagram konteks sistem yang diusulkan
Dalam konteks diagram pada gambar 4.2 terdapat dua entity yang menunjang proses aplikasi acrypt cs yaitu user dan file. 2.
Diagram zero sistem yang diusulkan
username, password
1.0 login
user password, public key 2.0 enkripsi private key
Gambar 4.5. Diagram level satu proses 2.0 (enkripsi)
user
private key, jumlah file 3.1* cek file
file
filename2
private key
password
3.3* dekripsi AES
file filename1
Gambar 4.6. Diagram level satu proses 3.0 (dekripsi)
63
3.2* dekripsi RSA
4.5.2.
Perancangan Flowchart Pada tahap ini dilakukan perancangan flowchart algoritma aplikasi enkripsi. Pada tahapan ini akan digambarkan alur proses enkripsi dan dekripsi pada program yang dikembangkan dengan menggunakan flowchart.
64
1. Flowchart proses enkripsi
start
Input jumlah file
Input file
Cek file
File salah/kosong ?
true
false Input kunci AES
Pilih penerima
i=0, jml file = file tdk kosong
Panggil modul enkripsi AES
1
2
Panggil modul enkripsi RSA
3
4
Update database
i++
true
i< jml file? false Tampilkan hasil enkripsi
stop
Gambar 4.7. Flowchart proses enkripsi
65
Berdasarkan gambar 4.7, proses enkripsi dimulai dengan memasukkan jumlah file yang akan dienkripsi. Setelah itu, user memasukkan file yang akan dienkripsi. Kemudian data file akan ditampilkan sementara. Jika file salah, maka user harus memasukkan kembali file yang akan dienkripsi. Jika semua file yang dipilih sudah pernah dienkripsi sebelumnya (dengan nama file yang masih sama), maka user harus memasukkan kembali file yang akan dienkripsi. Selanjutnya user harus memasukkan string yang akan digunakan sebagai kunci untuk enkripsi file. String dapat berupa karakter apapun dengan panjang maksimal 20 karakter. Kemudian user memilih penerima pesan (secara tidak langsung memasukkan kunci publik penerima). Setelah itu proses enkripsi dimulai. Proses memanggil fungsi enkripsi Advance Encryption Standard untuk enkripsi file, kemudian memanggil fungsi enkripsi Rivest Shamir Adleman untuk enkripsi password. Sesudah selesai, proses memasukkan data file ke dalam database. Proses enkripsi dilakukan sebanyak jumlah file yang terisi (tidak kosong). Setelah proses enkripsi selesai, data file terenkripsi ditampilkan.
66
2. Flowchart enkripsi Advance Encryption Standard
1
Baca file
r = 10
AddRoundKey()
SubBytes()
ShiftRows()
true
r=1? false MixColumns()
Panggil modul ekspansi kunci
5
6
AddRoundKey()
r-1
r=0?
false
true 2
Gambar 4.8. Flowchart proses enkripsi dengan metode Advance Encryption Standard (Sumber : Munir, 2006)
67
Proses enkripsi dengan metode Advance Encryption Standard seperti ditunjukkan pada gambar 4.8, dimulai dengan membaca file. Didefinisikan bahwa jumlah round adalah sepuluh. Proses melakukan fungsi AddRoundKey() terhadap data dengan round key awal. Selanjutnya proses berlanjut dengan round-1 putaran dengan
memanggil
fungsi
SubBytes(),
ShiftRows(),
MixColumns(), KeyExpansion(), dan AddRoundKey(). Setelah selesai, putaran terakhir dilakukan dengan memanggil fungsi SubBytes(), ShiftRows(), KeyExpansion(), dan AddRoundKey(). Setelah itu proses enkripsi Advance Encryption Standard Selesai.
68
3. Flowchart enkripsi Rivest Shamir Adleman
3
plainteks (M), n, e
Transformasi M → m
m≤n-1
false
m dibagi menjadi blok-blok
false
c disatukan menjadi kesatuan bilangan integer
true e
c = m (mod n)
cipherteks (c)
c≤n-1 true cipherteks (c)
Transformasi c → C
cipherteks (C)
4
Gambar 4.9. Flowchart proses enkripsi dengan metode Rivest Shamir Adleman (Sumber : Munir : 2006)
Berdasarkan gambar 4.9, enkripsi dengan metode Rivest Shamir Adleman dimulai dengan inisialisasi plainteks(M), n(p x q), dan kunci
publik(e).
Plainteks
(dalam
hal
ini
password),
ditransformasi ke dalam angka (m). Selanjutnya, jika m lebih
69
besar dari n dikurang 1, m dibagi menjadi blok-blok. Selanjutnya dilakukan penghitungan cipherteks (c) dengan rumus c = me (mod n). Jika c lebih besar dari n dikurang1, c disatukan menjadi kesatuan bilangan integer. Selanjutnya dilakukan transformasi cipherteks c menjadi C.
70
4.
Flowchart proses dekripsi
start
Pilih file
Cek file sementara
File benar?
false
true Input kunci private
Kunci valid?
false
true i=0, n = jml file, (jml file>10, n=10)
Panggil modul dekripsi RSA
7
8
Panggil modul dekripsi AES
9
10
i++
true
i
stop
Gambar 4.10. Flowchart proses dekripsi
71
Untuk proses dekripsi, sesuai dengan gambar 4.10, dekripsi dimulai dengan memilih file yang akan didekripsi. Lalu menampilkan sementara file-file yang akan didekripsi. Jika file benar, masukkan kunci privat. Setelah itu periksa apakah kunci privat valid atau tidak. Jika kunci privat tidak valid, masukkan lagi kunci privat. Jika valid, proses dekripsi berjalan. Dimulai dengan menginisialisasi i(=0), n(jumlah file), jika jumlah file lebih dari 10, maka n=10. Selanjutnya selama i kurang dari n, proses memanggil modul dekripsi Rivest Shamir Adleman, setelah itu memanggil modul dekripsi Advance Encryption Standard. Setelah proses dekripsi selesai, file-file hasil dekripsi ditampilkan.
72
5.
Flowchart dekripsi Advance Encryption Standard
9
Baca file
r = 10
AddRoundKey()
r = 10?
true
false Inv MixColumns()
Inv SubBytes()
Inv ShiftRows()
Panggil modul ekspansi kunci
5
6
AddRoundKey()
r -1
false
r=0? true 10
Gambar 4.11. Flowchart proses dekripsi dengan metode Advance Encryption Standard (Sumber : Munir, 2006)
Proses dekripsi dengan metode Advance Encryption Standard seperti ditunjukkan pada gambar 4.11, dimulai dengan membaca file. Didefinisikan bahwa jumlah round adalah sepuluh. Proses 73
melakukan fungsi AddRoundKey() terhadap data dengan round key awal. Selanjutnya proses berlanjut selama round-1 putaran dengan memanggil fungsi InvMixColumns(), InvSubBytes(), InvShiftRows(), KeyExpansion(), dan AddRoundKey(). Setelah selesai, putaran terakhir dilakukan dengan memanggil fungsi InvSubBytes(),
InvShiftRows(),
KeyExpansion(),
dan
AddRoundKey(). Setelah itu proses dekripsi Advance Encryption Standard Selesai.
74
6.
Flowchart dekripsi Rivest Shamir Adleman
7
cipherteks (C), n, d
Transformasi C → c
false
c≤n-1
c dibagi menjadi blok-blok
true d
m = c (mod n)
plainteks (m)
false
m≤ n-1
m disatukan menjadi kesatuan bilangan integer
true plainteks (m)
Transformasi m → M
plainteks (M)
8
Gambar 4.12. Flowchart proses dekripsi dengan metode Rivest Shamir Adleman (Sumber : Munir, 2006)
Berdasarkan gambar 4.12, dekripsi dengan metode Rivest Shamir Adleman dimulai dengan inisialisasi cipherteks(C), n(p x q), dan kunci privat (d). Cipherteks ditransformasi ke dalam angka (c). Selanjutnya, jika c lebih besar dari n dikurang 1, c
75
dibagi menjadi blok-blok. Selanjutnya dilakukan penghitungan plainteks (m) dengan rumus m = cd (mod n). Jika m lebih dari n dikurang1, m disatukan menjadi kesatuan bilangan integer. Selanjutnya dilakukan transformasi plainteks m menjadi M.
4.5.3.
Perancangan Basis Data Pada pengembangan aplikasi acrypt cs ini digunakan database sebagai pelengkap program seperti proses login dan proses penamaan dan penyimpanan file enkripsi. Database yang digunakan adalah database MySQL. 1.
Struktur Entity Relationship Diagram (ERD)
user
mendekripsi
mengenkripsi
plainteks
menjadi
cipherteks
Gambar 4.13. Struktur Entity Relationship Diagram
2.
Normalisasi a.
Relasi User_Plainteks UnNormalized Form (Bentuk Tidak Normal)
id_user
username
fullname
password
public_key
sec_question
sec_answer
id_plainteks
plain_name
plain_size
1 st Normal Form (Bentuk Normal Pertama) 76
private_key
id_user
username
fullname
password
public_key
sec_question
sec_answer
id_plainteks
plain_name
plain_size
private_key
2nd Normal Form (Bentuk Normal Kedua) username
id_user
fullname
password
id_plainteks
plain_name
plain_size
id_outbox
id_plainteks
id_user
b.
public_key
private_key
sec_question
sec_answer
Relasi User_Cipherteks UnNormalized Form (Bentuk Tidak Normal)
id_user
username
fullname
password
public_key
id_cipherteks
cipher_name
cipher_size
aes_key
iv
private_key
sec_question
sec_answer
sec_question
sec_answer
1 st Normal Form (Bentuk Normal Pertama) id_user
username
fullname
password
public_key
id_cipherteks
cipher_name
cipher_size
aes_key
iv
private_key
nd
2 Normal Form (Bentuk Normal Kedua) username
id_user
id_cipherteks
fullname
cipher_name
id_cipherteks
id_inbox
c.
password
cipher_size
public_key
aes_key
private_key
sec_question
sec_answer
iv
id_user
Relasi Plainteks_Cipherteks UnNormalized Form (Bentuk Tidak Normal) id_plainteks
plain_name
aes_key
iv
77
plain_size
id_cipherteks
cipher_name
cipher_size
1st Normal Form (Bentuk Normal Pertama) id_plainteks
plain_name
aes_key
iv
plain_size
id_cipherteks
cipher_name
cipher_size
2nd Normal Form (Bentuk Normal Kedua) Karena satu plainteks pasti menjadi satu cipherteks, maka tabel dapat digabungkan menjadi satu tabel. Maka semua field id_cipherteks dan id_plainteks akan digabungkan menjadi id_file. id_file
3.
plain_name
plain_size
cipher_name
cipher_size
aes_key
Logical Record Structure
Gambar 4.14. Logical Record Structure (LRS) 4.
Spesifikasi Tabel Nama Database
: acryptcs
1.
Nama Tabel
: user
Primary Key
: id_user
Foreign Key
:-
78
iv
Tipe File
: File Master
field
2.
type
id_user
int(11)
username
varchar(30)
fullname
varchar(50)
password
varchar(50)
public_key
varchar(20)
private_key
varchar(20)
sec_question
varchar(50)
sec_answer
varchar(20)
Nama Tabel
: file
Primary Key
: id_file
Foreign Key
:-
Tipe File
: File Master
field
3.
type
id_file
int(11)
plain_name
varchar(100)
plain_size
varchar(20)
cipher_name
varchar(100)
cipher_size
varchar(20)
aes_key
varchar(50)
iv
varchar(20)
date
varchar(27)
Nama Tabel
: inbox
Primary Key
: id_inbox
Foreign Key
: id_file, id_user
Tipe File
: File Master
field
type
79
attributes unsigned
attributes unsigned
attributes
extra auto_increment
extra auto_increment
extra
4.
id_inbox
int(11)
id_file
int(11)
id_user
int(11)
Nama Tabel
: outbox
Primary Key
: id_outbox
Foreign Key
: id_file, id_user
Tipe File
: File Master
field
4.5.4.
unsigned
type
id_outbox
int(11)
id_file
int(11)
id_user
int(11)
auto_increment
attributes unsigned
extra auto_increment
Perancangan Antarmuka Dalam perancangan antarmuka aplikasi keamanan data yang berbasis client server ini, dibuat beberapa form yang akan ditampilkan. 1.
Perancangan Halaman Login Halaman
login
merupakan
tampilan
untuk
login.
Pengguna telah terdaftar diharuskan untuk mengisikan username dan password.
80
Logo acrypt cs
Please login username : image
image password : enter
sign up
footer
Gambar 4.15. Rancangan halaman login
Apabila pengguna belum terdaftar, dapat mendaftar terlebih dahulu dengan mengklik tombol “sign up”. Hal ini mencegah aplikasi agar tidak diakses oleh sembarang orang.
81
Logo acrypt cs
Sign up
image
Fullname
:
username
:
password
:
confirm password : security question question
:
answer
: image
enter word above
: sign up
clear login
footer
Gambar 4.16. Rancangan halaman sign up
2.
Perancangan Halaman Utama (Home) Halaman Home merupakan tampilan utama yang di dalamnya terdapat sembilan link utama yang masingmasing mempunyai fungsi sebagai berikut : 1.
Encrypt : menampilkan halaman enkripsi.
2.
Decrypt : menampilkan halaman dekripsi.
3.
Inbox : menampilkan halaman kotak masuk.
4.
Outbox : menampilkan halaman kotak keluar.
82
5.
My key : menampilkan halaman untuk melihat kunci privat dan mengubah pasangan kunci. Halaman ini dilindungi dengan pertanyaan pengaman yang dibuat saat sign up.
6.
Change password : menampilkan halaman untuk mengubah password login.
7.
About : menampilkan halaman profil pembuat aplikasi.
8.
Help : menampilkan halaman bantuan aplikasi.
9.
Logout : keluar dari account.
Logo acrypt cs
Keterangan inbox baru
Keterangan menu (saat mouseover)
Keterangan menu (saat mouseover) Menu utama
footer
Gambar 4.17. Rancangan halaman utama
83
3.
Perancangan Halaman Encrypt Halaman enkripsi akan muncul jika user memilih menu “encrypt” pada halaman utama. Terdapat enam halaman dalam rancangan halaman encrypt, yaitu: a.
Rancangan halaman input jumlah file Halaman input jumlah file merupakan halaman awal dari proses enkripsi. User memilih jumlah file yang akan dienkripsi pada halaman ini.
Logo acrypt cs
encryption Number of file :
Combo box
enter
cancel
footer
Gambar 4.18. Rancangan halaman input file enkripsi
b.
Rancangan halaman input file Halaman input file merupakan halaman kedua dari proses enkripsi. Terdapat input file yang akan dienkripsi.
Halaman
menyediakan
input
file
sebanyak 5 file. User dapat memilih file dengan mengklik
tombol
84
browse.
Untuk
menghindari
kesalahan, user tidak dapat mengetikkan sendiri file yang akan dienkripsi.
Logo acrypt cs
encryption File 1 :
enter
: File n :
Browse..
: enter
next
Browse..
clear all
cancel
footer
Gambar 4.19. Rancangan halaman input file enkripsi
c.
Halaman cek file Halaman ini menampilkan sementara file-file yang akan dienkripsi.
85
Logo acrypt cs
encryption File 1 File name
:
File type
:
File size
:
Status
:
:
:
:
File n File name
:
File type
:
File size
:
Status
: next
cancel
footer
Gambar 4.20. Rancangan halaman cek file
d.
Halaman input password. Halaman ini meminta user untuk memasukkan password berupa string yang akan digunakan untuk enkripsi file pada halaman sebelumnya.
86
Logo acrypt cs
encryption input string for AES password encryption : next
cancel
footer
Gambar 4.21. Rancangan halaman input password
e.
Halaman pilih tujuan (penerima). Sebenarnya
halaman
ini meminta
user
untuk
memasukkan kunci publik penerima pesan. Tetapi untuk
mencegah
kesalahan
input,
aplikasi
menyediakan form yang memudahkan user untuk memilih tujuan (penerima pesan). Setelah button encrypt diklik, proses enkripsi akan dimulai.
87
Logo acrypt cs
encryption Select receiver o Username 1
o Username 2 : :
o Username n next
cancel
footer
Gambar 4.22. Rancangan halaman pilih tujuan
f.
Halaman encryption complete Halaman ini muncul setelah proses enkripsi selesai. Halaman ini menginformasikan file hasil enkripsi, ukuran file, waktu enkripsi, dan user penerima.
88
Logo acrypt cs
encryption Encryption complete for these file File 1 File name
:
File size
:
Process time
:
:
:
File n File name
:
File size
:
Process time
:
:
finish
footer
Gambar 4.23. Rancangan halaman encryption complete
4.
Perancangan Halaman Decrypt Halaman dekripsi akan muncul jika user memilih menu “decrypt” pada halaman utama. Terdapat lima halaman dalam rancangan halaman decrypt, yaitu: a.
Rancangan halaman pilih file Halaman pilih file merupakan halaman awal dari proses dekripsi. Terdapat checkbox untuk memilih file yang akan didekripsi. User diizinkan memilih paling banyak 10 file. Jika user memilih lebih dari
89
10 file, maka file ke 11 dan seterusnya akan diabaikan.
Logo acrypt cs
decryption Record 1 Record 2
:
:
:
:
Record n
decrypt
cancel
footer
Gambar 4.24. Rancangan halaman pilih file
b.
Halaman cek file Halaman ini menampilkan sementara file-file yang akan didekripsi.
90
Logo acrypt cs
decryption File 1 File name
:
File size
:
Sender
:
Date
:
:
:
:
File n File name
:
File size
:
Sender
:
Date
: next
cancel
footer
Gambar 4.25. Rancangan halaman cek file
c.
Halaman input private key Halaman ini meminta user untuk memasukkan kunci private miliknya. Kunci private ini akan digunakan untuk dekripsi password pada file yang terenkripsi. Setelah button decrypt diklik, proses dekripsi akan dimulai.
91
Logo acrypt cs
decryption Your private key: next
clear
cancel
footer
Gambar 4.26. Rancangan halaman input private key
d.
Halaman decryption complete. Halaman ini menginformasikan file hasil dekripsi, ukuran file, dan waktu dekripsi.
92
Logo acrypt cs
decryption Decryption complete for these file File 1 File name
:
File size
:
Process time
:
:
:
File n File name
:
File size
:
Process time
:
:
finish
footer
Gambar 4.27. Rancangan halaman decryption complete
5.
Perancangan Halaman Inbox Halaman inbox akan muncul jika user memilih menu “inbox” pada halaman utama. Halaman ini menampilkan semua file terenkripsi yang telah dikirimkan oleh user lain kepadanya. User dapat langsung mendekripsi file dari halaman ini. Tetapi user hanya dapat mendekripsi satu file pada satu waktu. User juga dapat menghapus file tersebut.
93
Logo acrypt cs
inbox No
Filename
:
Filesize
Sender
Date
Action
Record 1
decrypt
delete
Record 2
decrypt
delete
decrypt
delete
:
:
:
Record n
footer
Gambar 4.28. Rancangan halaman inbox
6.
Perancangan Halaman Outbox Halaman outbox akan muncul jika user memilih menu “outbox” pada halaman utama. Halaman ini menampilkan semua file terenkripsi yang telah dikirimkan oleh user ini kepada user lain. User dapat menghapus file tersebut.
94
Logo acrypt cs
outbox No
Filename
:
Filesize
Receiver Date
Action
Record 1
delete
Record 2
delete
:
:
Record n
: delete
footer
Gambar 4.29. Rancangan halaman outbox
7.
Perancangan Halaman My Key Halaman my key akan muncul jika user memilih menu “my key” pada halaman utama. Halaman ini memberi kesempatan user untuk melihat kunci privat (jika user lupa) dan merubah pasangan kuncinya. Halaman ini dilindungi pertanyaan pengaman yang dibuat saat sign up. Jika pertanyaan dijawab dengan benar, maka private key akan muncul dan memberikan link untuk mengubah pasangan kuncinya. Jika user memilih link tersebut, maka aplikasi akan langsung membangkitkan pasangan kunci publik dan kunci private jika inbox user dalam keadaan kosong. Jika inbox tidak kosong, maka user harus
95
menghapus dulu seluruh file yang ada di inbox-nya. User juga dapat merubah lagi pasangan kuncinya dengan merefresh halaman ini. User harus langsung menyimpan kunci private yang telah ada.
Logo acrypt cs
My key
image
For security reason, you have to answer your security question to get your private key or change your key pair.. sequrity question your answer :
enter
answer
clear
cancel
footer
Gambar 4.30. Rancangan halaman my key (security question)
Logo acrypt cs
My key your private key :
new key
image
Please safely keep your private key.. change my key
footer
Gambar 4.31. Rancangan halaman my key (private key)
96
Logo acrypt cs
Change key your key has been change ! refresh page for new key.. image
you have to save your private key :
new key
footer
Gambar 4.32. Rancangan halaman generate key
8.
Perancangan Halaman Change Password Halaman change password akan muncul jika user memilih menu “change password” di halaman utama. Halaman ini memberi kesempatan user untuk merubah password loginnya.
97
Logo acrypt cs
Change password
image
current password
:
new password
:
confirm password
: save
clear
footer
Gambar 4.33. Rancangan halaman change password
9.
Perancangan Halaman Help Halaman help akan muncul jika user memilih menu “help” pada halaman utama. Halaman ini menampilkan semua bantuan yang mungkin diperlukan oleh user. Termasuk sedikit materi tentang metode yang digunakan dalam aplikasi ini.
98
Logo acrypt cs
help Singkat tentang acrypt cs
Algoritma AES
Algoritma RSA
Link bantuan
Gambar marquee
footer
Gambar 4.34. Rancangan halaman help 10.
Perancangan Halaman About Halaman about akan muncul jika user memilih menu “about” pada halaman utama. Halaman ini menampilkan beberapa informasi tentang pembuat aplikasi.
99
Logo acrypt cs
about Nama : zaenal muttaqin Nim : 2040 9100 2553 Jurusan : teknik informatika Fakultas : sains dan tekologi e-mail : [email protected]
foto
Ucapan terima kasih
footer
Gambar 4.35. Rancangan halaman about
4.5.5.
State Transition Diagram Berikut adalah gambaran State Transition Diagram-nya :
100
101
Gambar 4.36. State Transition Diagram Aplikasi Acrypt CS
102
Berdasarkan State Transition Diagram pada gambar 4.34, aplikasi acrypt cs dimulai dengan halaman login. User memasukkan username dan password yang telah terdaftar sebelumnya. Jika user belum terdaftar, user mengklik link signup dan menuliskan data pribadi user di form yang disediakan. Setelah signup selesai, user diberikan kunci privat yang harus disimpan oleh user untuk mendekripsi pesan yang dikirimkan kepadanya. Setelah user berhasil login, aplikasi menampilkan halaman utama yang berisi sembilan menu utama yaitu encryption, decryption, inbox, outbox, generate new key pair, change key, help about, dan logout. Jika user mengklik encryption, maka muncul halaman encryption yang meminta User memasukkan jumlah file yang akan dienkripsi. Jika user menekan next, tampil halaman input file yang akan dienkripsi. Jika user menekan back aplikasi akan kembali ke halaman input jumlah file. Jika user menekan next akan tampil halaman cek file yang menginformasikan tentang file yang akan dienkripsi. Jika user menekan next akan tampil halaman input password. Setelah memasukkan password, Jika user menekan next aplikasi akan melakukan enkripsi dan setelah selesai, menampilkan informasi file hasil enkripsi. Pada semua halaman enkripsi tersebut, Jika user menekan cancel aplikasi akan kembali ke halaman utama.
103
Jika user mengklik decryption, maka muncul halaman decryption yang meminta user
memilih file yang akan
didekripsi. User dapat memilih maksimal 10 file. Jika user memilih lebih dari 10 file, maka file setelah 10 terbawah akan diabaikan. Jika user menekan next akan tampil halaman cek file yang menginformasikan tentang file yang akan didekripsi. Jika user menekan next akan tampil halaman input private key. Setelah memasukkan private key, Jika user menekan next aplikasi
akan
melakukan
dekripsi
dan
setelah
selesai,
menampilkan informasi file hasil dekripsi. Pada semua halaman dekripsi tersebut, Jika user menekan cancel aplikasi akan kembali ke halaman utama. Pada halaman hasil dekripsi, user harus menyimpan file yang telah didekripsi. Karena setelah user menekan tombol finish, file akan segera dihapus. Jika user menekan inbox, maka muncul halaman inbox yang menampilkan file terenkripsi yang dikirimkan kepadanya. User dapat langsung mendekripsi atau menghapus file yang ada dalam inbox-nya. Jika user menekan tombol decrypt, akan tampil halaman cek file yang menginformasikan sementara file yang akan didekrip. Jika user menekan next, muncul halaman input private key. Setelah itu, jika user menekan decrypt, dekripsi akan diproses. Setelah selesai, informasi file hasil dekripsi akan ditampilkan. Pada semua halaman inbox tersebut, Jika user menekan cancel aplikasi akan kembali ke halaman
104
inbox. Pada halaman hasil dekripsi, user harus menyimpan file yang telah didekripsi. Karena setelah user menekan tombol finish, file akan segera dihapus. Jika user menekan delete, maka tampil halaman konfirmasi file yang akan dihapus. User dapat menekan yes untuk menghapus, atau no untuk membatalkan. Jika user mengklik outbox, akan tampil halaman outbox yang menampilkan semua file yang telah dikirimkan olehnya. User dapat menghapus file tersebut. Jika user menekan delete, maka tampil halaman konfirmasi file yang akan dihapus. User dapat
menekan
yes
untuk
menghapus,
atau no
untuk
membatalkan. Jika user mengklik generate new key, akan tampil halaman yang membangkitkan pasangan kunci publik dan kunci privat yang baru. User harus menyimpan kunci privat yang baru tersebut. Tetapi jika user masih memiliki file di inbox, aplikasi tidak akan membangkitkan pasangan kunci yang baru, tetapi menampilkan link untuk menghapus semua file yang ada di inbox. Jika menekan delete all files, tampil halaman konfirmasi untuk menghapus semua file inbox. Jika menekan yes, akan tampil halaman yang membangkitkan pasangan kunci publik dan kunci privat yang baru. Jika menekan no, aplikasi akan kembali ke menu utama. Jika user mengklik change password, akan tampil halaman yang menampilkan form untuk mengubah password
105
login. Setelah form diisi dan ditekan next, akan diberitahukan bahwa perubahan berhasil. User harus login kembali setelah mengubah passwordnya. Jika user mengklik help, akan tampil halaman help yang berisi deskripsi singkat aplikasi, teori singkat metode Advance Encryption Standard dan Rivest Shamir Adleman, dan link help yang detil yaitu encryption, decryption, inbox, outbox, generate new key pair, dan change password. Jika user mengklik salah satu link tersebut, maka tampil halaman penjelasan sesuai link yang diklik. Pada semua halaman help tersebut, jika user mengklik home, akan kembali ke menu utama. Jika user mengklik about, maka tampil halaman deskripsi singkat tentang pembuat aplikasi. Jika user mengklik home, akan kembali ke menu utama. Jika user mengklik logout, maka aplikasi akan menghapus session dan menampilkan halaman login kembali.
4.6.
Fase Konstruksi Pada fase ini, dilakukan pengkodean terhadap rancangan-rancangan yang telah didefinisikan sebelumnya menggunakan bahasa pemrograman PHP. Pengkodean aplikasi ini menggunakan software EditPlus untuk mengedit source code program, dan adobe photoshop untuk mendesain user interface. Aplikasi ini dibuat dengan memanfaatkan library dan class yang sudah tersedia. Library yang digunakan adalah library
106
enkripsi Advance Encryption Standard (rijndael) yang terdapat pada interpreter
PHP
yang
digunakan.
Pemanfaatan
library
tersebut
ditunjukkan pada potongan kode sumber berikut : $td = mcrypt_module_open('rijndael-128', '', 'cbc', ''); $iv
Sedangkan class yang digunakan untuk membangun aplikasi adalah class enkripsi Rivest Shamir Adleman. Penggunaan kelas tersebut ditunjukkan dengan potongan kode sumber berikut : require_once("rsa .class"); $rsa = New SecurityRSA; $encoded = $rsa ->rsa _encrypt($key, $e, $n);
Class Rivest Shamir Adleman dan kode sumber selengkapnya dapat dilihat pada lampiran C.
4.7.
Fase Pelaksanaan (Implementasi) Pengujian yang dilakukan terhadap aplikasi acrypt cs ini adalah pengujian dengan metode blackbox. Pengujian dilakukan dengan menjalankan semua fungsi dan fitur yang ada dari aplikasi ini dan kemudian dilihat apakah hasil dari fungsi-fungsi tersebut sesuai dengan 107
yang diharapkan. Aplikasi dijalankan melalui suatu web browser di komputer client dan user mencoba melakukan proses enkripsi dan dekripsi.
4.7.1.
Konfigurasi Client Server Pada implementasi ini, penulis melakukan konfigurasi server dan client di CV Maharta Mandiri Promo divisi operasional dengan menggunakan jaringan LAN. Pada server menggunakan software Xampp 1.6.6a sebagai web servernya. Sedangkan client langsung menjalankan aplikasi di browser masing-masing komputer. User dapat langsung menggunakan aplikasi acrypt cs tanpa perlu menginstal aplikasi terlebih dahulu asalkan memiliki browser pada komputernya. Untuk memulai program dilakukan pada PC client, dengan mengetikkan alamat URL berikut pada address bar browser : http://192.168.10.2/acrypt cs/ Disarankan untuk menggunakan browser mozilla firefox karena interface dan fungsi aplikasi akan menjadi lebih baik.
4.7.2.
Proses Enkripsi dan Dekripsi Multifile Proses enkripsi dan dekripsi multifile pada program acrypt cs ini dapat berjalan dengan baik. Dan memberikan keamanan dalam pencegahan pembacaan file oleh pihak-pihak yang tidak berhak. Untuk tampilan program selengkapnya dapat dilihat pada lampiran B.
108
4.7.3.
Pengujian Aplikasi Acrypt cs Setelah melakukan
proses setting
server
kemudian
dilakukan pengujian terhadap aplikasi acrypt cs, pengujian yang penulis lakukan bertempat di divisi operasional CV Maharta Mandiri Promo, pada tahap pengujian enkripsi dan dekripsi ini dilakukan pada semua tipe file dengan ukuran file maksimal 1GB dan proses enkripsi/dekripsi maksimal 60 menit. Apabila
telah
terenkripsi
akan
menjadi
file
yang
berekstensi (*.znc), dan jika didekripsi akan kembali menjadi file asli yang berekstensi seperti file awal. Pengujian ini dapat dilihat pada tampilan program di lampiran B. 1.
Pengujian enkripsi terhadap tipe file yang berbeda. Pada tahap ini, penulis akan melihat apakah aplikasi dapat melakukan enkripsi pada tipe file yang berbeda dan apakah ukuran file akan berubah atau tidak. Tipe file yang akan diuji adalah file yang berekstensi (*.mp3), (*.mp4), (*.zip), (*.pdf), dan (*.avi).
Gambar 4.37. Informasi file sebelum dienkripsi
109
Gambar 4.38. Informasi file sesudah dienkripsi
Proses enkripsi berjalan lancar, semua tipe file bisa dienkripsi tanpa ada kesalahan aplikasi. Semua file sudah berubah ke dalam data yang tersandikan. Untuk lama waktu yang digunakan tergantung pada besar kecilnya ukuran file yang dienkripsi, semakin besar ukuran file yang dienkripsi maka semakin lama prosesnya. Namun, jika ukuran file yang dienkripsi kecil (<=100 MB), maka prosesnya tidak memakan waktu lama. Waktu ditampilkan dalam hitungan detik. Tabel 4.1 menunjukkan ukuran file dan waktu enkripsi. Tabel 4.1. Tabel ukuran dan waktu enkripsi No. 1.
Nama F ile N PEOPLE.mp3 ORDI ARY
Ukuran File Awal 4,381 KB
k Ukuran File A hir 4,381 KB
Waktu Enkripsi 0.24933 seconds
2.
Newspaper 9.flv
20,905 KB
20,905 KB
3.11202 seconds
3.
Video. zip
5 0,133 KB
50,133 KB
3.82763 seconds
4.
CHIP 07 2005.pdf
63,525 KB
63,525 KB
5.65621 seconds
5.
c The se ret.avi
14 3,179 KB
143,179 KB
9.39863 seconds
2.
Pengujian dekripsi terhadap tipe file yang berbeda Pada tahap
ini akan dilihat apakah aplikasi dapat
melakukan dekripsi, y itu merubah file ke bentuk asli
110
pada masing-masing tipe file di atas. Dan melihat berapa banyak ukuran file itu akan berubah dan berapa lama waktu yang digunakan. Berikut
hasil dekripsi yang
meunjukkan semua file kembali ke ukuran awal dan dapat berjalan seperti file asli.
Gambar 4.39. Informasi file sesudah didekripsi
Proses dekripsi berjalan lancar, semua tipe file bisa didekripsi ke bentuk semula. Untuk lama waktu yang digunakan tergantung pada besar kecilnya ukuran file yang didekripsi. Tabel 4.2 menunjukkan ukuran file dan waktu dekripsi. Tabel 4.2. Tabel ukuran dan waktu dekripsi No. 1.
Na amFile R O DINARY PEOPLE.mp3
k U uran File 4,381 KB
Waktu Dekripsi 0.25167 seconds
2.
Newspaper 9.flv
20,905 KB
2.93739 seconds
3.
Video.zip
50,133 KB
6.36124 seconds
4.
CHIP 07 2005.pdf
63,525 KB
7.62527 seconds
5.
T eh secret.avi
143,179 KB
e 13.62425 s conds
111
BAB V PENUTUP
5.1. Kesimpulan Berdasarkan uraian bab-bab sebelumnya, maka dapat diambil kesimpulan dari penulisan skripsi ini sebagai berikut : 1.
Aplikasi Acrypt cs tidak memerlukan proses instalasi aplikasi terlebih dahulu, dan juga dapat dijalankan dari sistem operasi apapun karena aplikasi Acrypt cs ini berbasis client server (web based).
2.
Aplikasi acrypt cs berhasil mengimplementasikan metode Advance Encryption
Standard
dan
Rivest
Shamir
Adleman
dalam
mengamankan pesan. Hal ini dibuktikan melalui hasil pengujian pada tabel 4.1 dan tabel 4.2, yang memperlihatkan bahwa semua pesan yg dienkrip dapat berubah menjadi file berekstensi (*.znc) serta dapat dikembalikan ke file aslinya dalam proses dekripsi dan tidak mengalami perubahan, dengan tingkat keberhasilan 100%. 3.
Berdasarkan hasil pengujian, ukuran file yang semakin besar akan mempengaruhi lama proses enkripsi dan dekripsi. Semakin besar ukuran file akan semakin lama proses enkripsi dan dekripsinya. Hal tersebut ditunjukkan pada tabel 4.1 dan tabel 4.2 di atas.
4.
Aplikasi acrypt cs dapat digunakan pada jaringan LAN.
112
5.2. Saran Berdasarkan penelitian yang diperoleh, ada beberapa saran untuk pengembangan sistem lebih lanjut, saran-saran tersebut yaitu: 1.
Aplikasi
acrypt
cs
berbasis
client
server
dapat
bervariasi
menggunakan bahasa pemprograman dan metode yang lain agar dapat memberikan keamanan yang lebih baik sehingga dapat dikembangkan untuk pengiriman file dari server ke client atau dari client ke client lain. 2.
Aplikasi acrypt cs hanya dapat mengupload 10 file dan ukuran maksimal
1GB,
untuk
proses
enkripsi,
diharapkan
dapat
dikembangkan sehingga dapat mengupload file lebih banyak dengan ukuran lebih besar tanpa harus memperlambat proses enkripsi dan dekripsi secara signifikan.
113
DAFTAR PUSTAKA
Ariyus, Dony. 2006. Kriptografi Keamanan Data dan Komunikasi. Yogyakarta : Graha Ilmu.
Ariyus, Dony. 2008. PENGANTAR ILMU KRIPTOGRAFI Teori Analisis dan Implementasi. Yogyakarta : Andi.
Burnett, Steve and Stephen Paine. 2004. RSA Security’s Official Guide to CRYPTOGRAPHY. California : McGraw-Hill/Osborne.
Kahate, Atul. 2003. CRYPTOGRAPHY AND NETWORK SECURITY. California : McGraw-Hill.
Muliati, Sarlika.2008. Implementasi Digital Envelope Dengan Menggunakan Metode Blowfish Dan Rivest Shamir Adleman Di Ppptmgb “Lemigas”. Jakarta : UIN Syarif Hidayatullah.
Peranginangin, Kasiman. 2006. Aplikasi WEB dengan PHP dan MySQL. Yogyakarta : Andi.
114
Kenneth E. Kendall., Jullie E. Kendall. 2003. Systems Analysis and Design. fifth Edition. Dialihbahasakan oleh Thamir Abdul Hafed Al-Hamdany, B.Sc, M.Sc dalam buku Analisa dan Perancangan Sistem Jilid 1. Jakarta : Prenhallindo.
Kristanto, Andri. 2003. Keamanan Data Pada Jaringan Komputer. Bandung : Gaya Media.
Munir, Rinaldi. 2006. Kriptografi. Bandung : Informatika.
Nanang, Herlino. 2004. Web Programming. Jakarta : UIN Syarif Hidayatullah.
Pressman, Roger S. 2002. Rekayasa Perangkat Lunak Pendekatan Praktisi (Buku Satu). Yogyakarta : Andi.
Stalling, William. 2003. Cryptography and Network Security Principles and Practices Third Edition. New Jersey : Prentice Hall.
Wicaksono, Prasetyo Andy. 2006. Studi Pemakaian Algoritma RSA Dalam Proses Enkripsi dan Aplikasinya. Bandung : Institut Teknologi Bandung http://www.informatika.org/~rinaldi/Matdis/20062007/Makalah/Makalah0607-80.pdf (diakses 01 jan 2009 pkl 20:08 WIB).
115
LAMPIRAN A HASIL WAWANCARA
Narasumber
: Andi Muhammad AR (Dirut CV Maharta Mandiri Promo)
1.
Pewawancara
: Zaenal Muttaqin
Waktu
: 9 Juli 2009
T : Bagaimana pemahaman anda mengenai keamanan data atau kriptografi ? J : Keamanan data merupakan hal yang sangat penting bagi setiap perusahaan, karena apabila data-data penting perusahaan tidak memiliki keamanan data yang baik, maka informasi yang dimiliki perusahaan akan mudah dicuri oleh pihak yang tidak bertanggung jawab atau yang tidak mempunyai hakuntuk informasi tersebut.
2.
T : Menurut anda perlukah data perusahaan anda untuk diamankan? J : Ya, karena data perusahaan adalah identitas perusahaan, yang harus kita jaga dengan benar jangan sampai data perusahaan tersebut dicuri oleh pihak yang tidak bertanggung jawab.
3.
T : Pernahkah anda mendengar tentang aplikasi keamanan data berbasis client server? J : Pernah.
4.
T : Pedulikah Bapak terhadap keamanan data di CV ini ? J : Ya. Apapun data yang dimiliki perusahaan harus diamankan dengan sebaik mungkin, untuk mencegah hal-hal yang tidak diinginkan oleh perusahaan dan dapat merugikan perusahaan.
116
5.
T : Pentingkah data di perusahaan ini untuk diamankan ? J : Ya, penting.
6.
T : Jenis data apa yang biasanya dikirim via jaringan di CV ini ? J : Biasanya semacam surat penawaran kepada perusahaan lain atau mitra dari CV Maharta Mandiri Promo, order pemesanan barang, desain produk, digital printing, tagihan pembayaran, laporan keuangan, proposal tender, dan lain-lain.
7. T : Jika anda diperkenalkan dengan sebuah aplikasi keamanan data, apakah anda akan menggunakannya ? J : Tergantung sesuai dengan kebutuhan perusahaan dan menganalisa terlebih dahulu. Jika setelah melakukan analisa aplikasi tersebut memang sesuai dengan yang dibutuhkan oleh perusahaan maka kami akan mengunakan aplikasi keamanan data tersebut. 8.
T : Apakah di CV ini pernah terjadi pencurian data oleh pihak yang tidak berhak? J : Pernah.
9.
T : Jika ada, apakah CV ini dirugikan dengan pencurian data tersebut? J : Ya, tentu saja merugikan. Saat itu desain yang kami buat dicuri oleh orang lain dan menyebabkan tender jatuh ke perusahaan lain yang mematok harga lebih murah dengan desain yang sama.
B.2.2. Pesan Kesalahan Input Data B.2.2.1. Kesalahan Login :
B.2.2.2. Kesalahan Sign up :
B.2.2.3. Kesalahan Input file enkripsi :
129
B.2.2.3. Kesalahan Input password enkripsi :
B.2.3. Konfirmasi Penghapusan File
B.2.4. Konfirmasi Penghapusan Seluruh isi inbox
130
LAMPIRAN C KODE SUMBER APLIKASI ACRYPT CS
decrypt.php rsa_encrypt($key, $e, $n); $decoded = $rsa->rsa_decrypt($row[1], $d, $n); //AES file decryption $file = 'data/'.$row[0]; $initial_contents = file_get_contents($file); if($initial_contents) {//This function opens the module of the algorithm and the mode to be used $td = mcrypt_module_open('rijndael-128', '', 'cbc', ''); //Create an initialization vector (IV) from a random source //$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND); $iv = $row[2]; $ks = mcrypt_enc_get_key_size($td); $key = $decoded; //password yg telah didekripsi //This function initializes all buffers needed for decryption mcrypt_generic_init($td, $key, $iv); //This function decrypts data $decrypted_data = mdecrypt_generic($td, $initial_contents); $nama = substr($row[0],0,-4); $out = strtr($nama,"_","."); $output = 'temp/'.$out; $newfile = @fopen($output,'w'); $ok_decrypt = @fwrite($newfile,$decrypted_data); if($ok_decrypt) { $_SESSION[dec] = "decrypted successfully"; } else { $_SESSION[dec] = "decryption failed";} @fclose($newfile); //This function deinitializes an encryption module mcrypt_generic_deinit($td); //Close the mcrypt module mcrypt_module_close($td); if ($i != "") {$_SESSION[filed.$i] = $output;} if($i == "") $_SESSION[filed] = $output;}}?>
131
decryption.php <script language="JavaScript"> function cek_file() { var a = document.getElementById('check[]').value; if (a==false) { alert('please check your input..'); return false; } else return true;} function input_private() { var a = document.getElementById('pass').value; if (a=="") { alert('please check your private key..');return false;} else return true; }
";print"
"; //tampilan file sementara print"
this file will be decrypt :
";$hasil = mysql_query("select cipher_name, cipher_size, date from file where id_file = '$_SESSION[file]'");$row = mysql_fetch_row($hasil); print"
$id_user = mysql_fetch_row(mysql_query("select id_user from user where username = '$_SESSION[username]'")); //ambil data dari tabel inbox $inbox = mysql_query("select id_inbox, id_file, decrypted from inbox where id_user = '$id_user[0]' order by id_inbox desc ");?>
>
select file you want to decrypt (10 files maximum, if the limit exceeded, the file will ignored..) :
>
no.
file name
file size (bytes)
sender
date
select
"; print"";$i = 1; while($in = mysql_fetch_row($inbox)) {//ambil data dari tabel file.. $hasil = mysql_query("select id_file, cipher_name, cipher_size, date from file where id_file = '$in[1]'"); $row = mysql_fetch_row($hasil); if($i%2==0) $w = "warna4"; else $w = "warna3"; print"
",$filesize, $satuan); //ambil data dari tabel outbox(sender).. $out = mysql_fetch_row(mysql_query("select id_user from outbox where id_file = '$in[1]'")); if ($out[0]==$id_user[0]) $sender = "you"; else {$has = mysql_fetch_row(mysql_query("select fullname from user where id_user = '$out[0]'")); $sender = $has[0];} print"
$sender
";print"
$row[3]
";print"
"; $sql = "update inbox set new='n' where id_file='$in[1]'"; $hasil = mysql_query($sql,$connect);print"";$i++; }} else {print"
there is no file in your inbox..
";}print"
"; print"
";print""; //cancel button back to home print"
";print"";print"
";
136
print"
";if ($jumlah <= 0)$jbr = 10;else if($jumlah == 1) $jbr = 9;else if($jumlah == 2)$jbr = 8;else if($jumlah == 3) $jbr = 6;else if($jumlah == 4)$jbr = 5;else if($jumlah == 5) $jbr = 4;else if($jumlah == 6)$jbr = 2;else if($jumlah == 7) $jbr = 1;else if($jumlah >= 8)$jbr = 0;for ($br=0 ; $br<=$jbr ; $br++)print" ";} if($level == "2") {//$check is an array content selected checkbox, and will sequence from index 0, not depending on where checkbox selected.. $check = $_POST[check]; //input var to session, count from selected checkbox $jumlah = count($check); if($jumlah <= 0) {print"
";print"
";print"
please check one file or more to decrypt..
";print"
"; print"
";include "footer.php";exit(0); } else if($jumlah > 10) //make sure that only 10 first file will be decrypt.. $_SESSION[jmlfile] = 10; Else $_SESSION[jmlfile] = $jumlah; $j = 1; for($i=0 ; $i<$_SESSION[jmlfile] ; $i++) //looping as many checkbox selected in previous form.. {//input to $_SESSION[file.$j]; $_SESSION[file.$j] = $check[$i]; $j++; } //temp show the file print"
"; print"
";print"
these file(s) will be decrypt :
"; for($i=1 ; $i<=$_SESSION[jmlfile] ; $i++) {$id_file = $_SESSION[file.$i]; //make query to get filename n filesize of the file with id ($_SESSION[file.$i]) $hasil = mysql_query("select cipher_name, cipher_size, date from file where id_file = '$id_file'"); $row = mysql_fetch_row($hasil); print"
",$filesize, $satuan); //ambil data dari tabel outbox(sender)..
137
$out = mysql_fetch_row(mysql_query("select id_user from outbox where id_file = '$id_file'")); if ($out[0]==$id_user[0]) $sender = "you"; else {$has = mysql_fetch_row(mysql_query("select fullname from user where id_user = '$out[0]'")); $sender = $has[0];} print"
encrypt.php RSA_encrypt($key, $e, $n); $receiver = $_SESSION[receiver]; $sender_id = mysql_fetch_row(mysql_query("select id_user from user where username = '$_SESSION[username]'")); $sender = $sender_id[0];
140
//get filesize (plain n cipher) $plain_size = filesize($file); $cipher_size = filesize($output); $date = date("d F Y H:i:s"); //INSERT TO DATABASE //insert to file $id_max = mysql_fetch_row(mysql_query("select max(id_file) from file")); $id_file = $id_max[0] + 1; $sql = "insert into file (id_file, plain_name, plain_size, cipher_name, cipher_size, aes_key, iv, date) values ('$id_file', '$kiriman', '$plain_size', '$out', '$cipher_size', '$encoded', '$iv', '$date')"; $hasil = mysql_query($sql,$connect); //insert to inbox $id_max = mysql_fetch_row(mysql_query("select max(id_inbox) from inbox")); $id_inbox = $id_max[0] + 1; $sql = "insert into inbox (id_inbox, id_file, id_user) values ('$id_inbox', '$id_file', '$receiver')"; $hasil2 = mysql_query($sql,$connect); //insert to outbox $id_max = mysql_fetch_row(mysql_query("select max(id_outbox) from outbox")); $id_outbox = $id_max[0] + 1; $sql = "insert into outbox (id_outbox, id_file, id_user) values ('$id_outbox', '$id_file', '$sender')"; $hasil3 = mysql_query($sql,$connect); mysql_close($connect); if($hasil) {$_SESSION[saved] = "saved";} else {$_SESSION[saved] = "unsaved";} } //close initial contents }?>
encryption.php <script language="JavaScript"> function input_file() { var a = document.getElementById('userfile[]').value; if (a=="") {alert('please check your file input..'); return false;} else return true; } function cek_pass() { var a = document.getElementById('pass').value; if (a==""){alert('please check your password..'); return false;} else return true;} function cek_receiver() { var a = document.getElementById('receiver').value; if (a==""){alert('please select one receiver..');return false;} else return true;}
141
"; print"";//cancel button delete file temporary in temp/ print"
"; print""; print"
";print"
";print"
";print"
";print"
";} if($kode=="5") {//simpan AESpass di session.. if($_SESSION[AESpass]=="")$_SESSION[AESpass] = $_POST['pass']; if($_SESSION[AESpass]=="")
145
{print"
";print"
";print"
please check your password..
"; print"
";print"
";print"";print"";print"
";print"
"; include "footer.php"; exit(0); } print"
"; print"
"; //select receiver (ambil dr database) include "koneksi.php"; $hasil = mysql_query("select id_user, fullname, username from user order by fullname asc"); print"
"; print""; print""; print"
select receiver you want to send the encrypted file :
"; print"
"; while($row = mysql_fetch_row($hasil)) {print"
"; print"
$row[1] -> $row[2]
";} print"
"; print"
";print"
";print""; //cancel button delete file temporary in temp/ print"
login.php <script language="JavaScript"> function cek_form() { var a = document.getElementById('username').value; var b = document.getElementById('password').value; if (a==""||b=="") { alert('bad username and password..'); return false; } else return true;}
"; } /*Function for generating keys. Return array where $array[0] -> modulo N $array[1] -> public key E $array[2] -> private key D Public key pair is N and E
151
.
Private key pair is N and D */ function generate_keys($show_debug=0){ //class-ify: global $primes, $maxprimes; if ($show_debug) print "
"; while (empty($e) || empty($d)) { /* finding 2 small prime numbers $p and $q $p and $q must be different*/ $p = $this->primes[mt_rand(0, $this->maxprimes)]; while (empty($q) || ($p==$q)) { $q = $this->primes[mt_rand(0, $this->maxprimes)]; } //second part of public and private pairs - N $n = $p*$q; //$pi (we need it to calculate D and E) $pi = ($p - 1) * ($q - 1); // Public key E $e = $this->tofindE($pi, $p, $q); // Private key D $d = $this->extend($e,$pi); $keys = array ($n, $e, $d); if ($show_debug) { echo "P = $p Q = $q N = $n - modulo PI = $pi E = $e - public key D = $d - private key
"; } } return $keys; } /* modulus function */ function mo($g, $l) { return $g - ($l * floor ($g/$l)); } // Standard method of calculating D (D = E-1 (mod N)) // It's presumed D will be found in less then 16 iterations function extend($Ee,$Epi) { $u1 = 1; $u2 = 0; $u3 = $Epi; $v1 $v3 = $Ee; while ($v3 != 0) { $qq = floor($u3/$v3); $t1 = $u1 $t2 = $u2 - $qq * $v2; $t3 = $u3 $u1 = $v1; $u2 = $v2; $u3 = $v3; $v1 $v3 = $t3; $z = 1;} $uu = $u1; $vv = $u2; if ($vv < 0) { $inverse = $vv + $Epi; } else { $inverse = $vv; } return $inverse;
152
= 0;
$v2 = 1;
- $qq * $v1; - $qq * $v3; = $t1; $v2 = $t2;
} /* This function return Greatest Common Divisor for $e and $pi numbers */ function GCD($e,$pi) { $y = $e; $x = $pi; while ($y != 0) { $w = $this->mo($x , $y); $x = $y; $y = $w;} return $x;} /*function for calculating E under conditions: GCD(N,E) = 1 and 1<Emaxprimes); $startcc = $cc; while ($cc >= 0) { $se = $this->primes[$cc]; $great = $this->GCD($se,$pi); $cc--; if ($great == 1) break; } if ($great == 0) { $cc = $startcc + 1; while ($cc <= $this->maxprimes) { $se = $this->primes[$cc]; $great = $this->GCD($se,$pi); $cc++; if ($great == 1) break; } } return $se; } /* ENCRYPT function returns *, X = M^E (mod N) * * Each letter in the message is represented as its ASCII code number - 30 * 3 letters in each block with 1 in the beginning and end.*/ function rsa_encrypt($m, $e, $n) { $asci = array (); for ($i=0; $i<strlen($m); $i+=3) { $tmpasci="1"; for ($h=0; $h<3; $h++) { if ($i+$h <strlen($m)) { $tmpstr = ord (substr ($m, $i+$h, 1)) - 30;
153
if (strlen($tmpstr) < 2) { $tmpstr ="0".$tmpstr; } } else break; $tmpasci .=$tmpstr; } array_push($asci, $tmpasci."1"); } //Each number is then encrypted using the RSA formula: block ^E mod N for ($k=0; $k< count ($asci); $k++) { $resultmod = $this->powmod($asci[$k], $e, $n); $coded .= $resultmod." "; } return trim($coded); } /*Russian Peasant method for exponentiation */ function powmod($base, $exp, $modulus) { $accum = 1; $i = 0; $basepow2 = $base; while (($exp >> $i)>0) { if ((($exp >> $i) & 1) == 1) { $accum = $this->mo(($accum * $basepow2) , $modulus); } $basepow2 = $this->mo(($basepow2 * $basepow2) , $modulus); $i++; } return $accum; } /*ENCRYPT function returns M = X^D (mod N)*/ function rsa_decrypt($c, $d, $n) { //Strip the blank spaces from the ecrypted text and store it in an array $decryptarray = split(" ", $c); for ($u=0; $upowmod($decryptarray[$u], $d, $n); //remove leading and trailing '1' digits $deencrypt.= substr ($resultmod,1,strlen($resultmod)-2); } //Each ASCII code number + 30 in the message is represented as its letter for ($u=0; $u<strlen($deencrypt); $u+=2) { $resultd .= chr(substr ($deencrypt, $u, 2) + 30); } return $resultd; } } //end class ?>
: Zaenal Muttaqin : 2040 9100 2553 : Teknik Informatika : Pembuatan Aplikasi Enkripsi Menggunakan Metode Advance Encryption Standard dan Rivest Shamir Adleman Studi Kasus CV Maharta Mandiri Promo : Senin, 11 Januari 2010 Nama
Tanggal
Pembimbing I
Herlino Nanang, MT
Pembimbing II
Zulfiandri, MMSI
Penguji I
Viva Arifin, MMSI
Penguji II
Victor Amrizal, M.Kom
Ketua Prodi
Yusuf Durrachman, MIT
Tanda Tangan
Perpustakaan Pusat UIN Perpustakaan Fakultas
Jakarta, a.n. Dekan, Kasubag Akademik Fakultas Sains dan Teknologi,
Dra. Sukmayeti NIP. 19620114 198803 2 001 Ket : * Dibuat Rangkap 2 (dua) untuk : 1. Akademik FST 2. Mahasiswa (Syarat Pengambilan Ijazah)
155
Report "PEMBUATAN APLIKASI ENKRIPSI MENGGUNAKAN METODE ADVANCE ENCRYPTION STANDARD DAN RIVEST SHAMIR ADLEMAN"