Pembuatan aplikasi enkripsi mengunakan metode advance encryption standard dan rivest shamir adleman; studi kasus CV Maharata Mandiri Promo

(1)

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


(2)

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

Herlino Nanang, MT NIP. 19731209 200501 1 002

Pembimbing II

Zulfiandri, MMSI NIP. 150 368 821

Mengetahui,

Ketua Program Studi Teknik Informatika

Yusuf Durrachman, MIT NIP. 19710522 200604 1 002


(3)

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.

Penguji I

Viva Arifin, MMSI NIP. 19730810 200604 2 001

Menyetujui :

Penguji II

Victor Amrizal, M.Kom NIP. 150 411 288 Pembimbing I

Herlino Nanang, MT NIP. 19731209 200501 1 002

Pembimbing II

Zulfiandri, MMSI NIP. 150 368 821

Dekan

Fakultas Sains dan Teknologi

Mengetahui:

Ketua Program Studi Teknik Informatika

DR. Syopiansyah Jaya Putra, M.Sis NIP. 19680117 200112 1 001

Yusuf Durrachman, MIT NIP. 19710522 200604 1 002


(4)

PERNYATAAN

DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR- BENAR 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


(5)

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)


(6)

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.


(7)

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


(8)

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


(9)

!

!

"

#

$

%

&

#

$

%

!

! $

'

!

()

*

#

*

+,-. /

0112

$

.3 .

0112

!

* '


(10)

DAFTAR ISI

PENGESAHAN UJIAN ... iv

PERNYATAAN... v

ABSTRAK ... vi

KATA PENGANTAR ... vii

DAFTAR ISI ... xi

DAFTAR GAMBAR ... xv

DAFTAR TABEL ... xviii

BAB I PENDAHULUAN ... 1

1.1. Latar Belakang ... 1

1.2. Rumusan Masalah ... 2

1.3. Batasan Masalah... 3

1.4. Tujuan Penelitian ... 4

1.5. Manfaat Penelitian ... 4

1.6. Metodologi Penelitian ... 5

1.6.1. Metodologi Pengumpulan Data ... 5

1.6.2. Metodologi Pengembangan Sistem... 6

1.7. Sistematika Penulisan... 6

BAB II LANDASAN TEORI ... 8

2.1. Keamanan Data ... 8

2.2. Aplikasi ... 8

2.3. Enkripsi dan Dekripsi... 9

2.4. Kriptografi ... 11

2.4.1. Definisi dan Terminologi ... 11

2.4.2. Tujuan Kriptografi ... 14

2.4.3. Sejarah Kriptografi... 15

2.5. Algoritma Kriptografi Klasik ... 17

2.5.1. Cipher Substitusi ... 17


(11)

2.6. Algoritma Kriptografi Modern... 20

2.6.1. Algoritma Simetris ... 20

2.6.2. Algoritma Asimetris... 21

2.6.3. Algoritma Hibrida ... 21

2.7. Advance Encryption Standard... 22

2.7.1. Panjang Kunci dan Ukuran Blok Rijndael ... 23

2.7.2. Algoritma Rijndael... 25

2.7.3. Transformasi SubBytes() ... 28

2.7.4. Transformasi ShiftRows()... 30

2.7.5. Transformasi MixColumns() ... 30

2.7.6. Transformasi AddRoundKey()... 32

2.7.7. Ekspansi Kunci ... 32

2.8. Kriptografi Kunci Publik... 32

2.8.1. Sejarah Kriptografi Kunci Publik ... 32

2.8.2. Konsep Kriptografi Kunci Publik ... 33

2.8.3. Aplikasi Kriptografi Kunci Publik ... 37

2.9. RSA (Rivest Shamir Adleman) ... 38

2.9.1. Perumusan Algoritma Rivest Shamir Adleman ... 39

2.9.2. Algoritma Membangkitkan Pasangan Kunci ... 41

2.9.3. Algoritma Enkripsi/Dekripsi... 42

2.9.4. Keamanan Rivest Shamir Adleman ... 42

2.9.5. Kecepatan ... 44

2.10. PHP ... 45

2.10.1. Pengertian PHP ... 45

2.10.2. Kelebihan-kelebihan PHP ... 45

2.10.3. Sintaks PHP... 46

2.11. MySQL... 46

BAB III METODOLOGI PENELITIAN ... 48

3.1. Metode Pengumpulan Data ... 48

3.1.1. Metode Observasi ... 48

3.1.2. Metode Wawancara... 49


(12)

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. Sekilas CV Maharta Mandiri Promo... 57

4.1.2. Visi dan Misi CV Maharta Mandiri Promo ... 58

4.1.3. Struktur Organisasi CV Maharta Mandiri Promo ... 58

4.2. Hasil Observasi ... 59

4.3. Aplikasi Acrypt cs ... 59

4.4. Fase Perencanaan Syarat-syarat ... 60

4.4.1. Analisis Kebutuhan Masalah ... 60

4.4.2. Tujuan ... 60

4.4.3. Syarat-syarat... 61

4.5. Fase Perancangan (Workshop Design) ... 61

4.5.1. Perancangan Proses... 62

4.5.2. Perancangan Flowchart... 64

4.5.3. Perancangan Basis Data ... 76

4.5.4. Perancangan Antarmuka ... 80

4.5.5. State Transition Diagram ... 100

4.6. Fase Konstruksi ... 106

4.7. Fase Pelaksanaan (Implementasi) ... 107

4.7.1. Konfigurasi Client Server ... 108

4.7.2. Proses Enkripsi dan Dekripsi Multifile ... 108

4.7.3. Pengujian Aplikasi Acrypt cs... 109


(13)

BAB V PENUTUP ... 112

5.1. Kesimpulan ... 112

5.2. Saran... 113

DAFTAR PUSTAKA ... 114

LAMPIRAN A HASIL WAWANCARA ... 116

LAMPIRAN B TAMPILAN APLIKASI ACRYPT CS... 118

LAMPIRAN C KODE SUMBER APLIKASI ACRYPT CS... 131


(14)

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


(15)

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


(16)

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


(17)

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


(18)

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


(19)

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.


(20)

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.


(21)

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.


(22)

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.


(23)

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 syarat- syarat informasi.

2) Fase Perancangan

Pada tahap ini dilakukan perancangan proses yaitu proses- proses 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


(24)

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


(25)

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


(26)

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.


(27)

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


(28)

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


(29)

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.


(30)

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) adalah studi mengenai kriptografi dan kriptanalisis.


(31)

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 kebenaran pihak-pihak yang berkomunikasi (user authentication atau entity authentication) maupun mengidentifikasi 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.


(32)

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


(33)

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


(34)

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


(35)

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 (Polygram substitution cipher), setiap kelompok 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)


(36)

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


(37)

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


(38)

pada algoritma simetris ini adalah algoritma block cipher dan stream cipher.

Aplikasi dari algoritma simetris diantaranya adalah: 1. Data Encryption Standard (DES).

2. Advanced Encryption Standard (AES).

3. International Data Encryption Algorithm (IDEA). 4. A5.

5. RC4.

2.6.2. 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: 1. RSA (Rivest Shamir Adleman).

2. Diffie Hellman.

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


(39)

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


(40)

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.


(41)

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.


(42)

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.


(43)

a. SubBytes b. ShiftRows c. AddRoundKey

Garis besar algoritma enkripsi Rijndael diperlihatkan pada gambar 2.5. state AddRoundKey Chiper Key ⊕ initial round 1-SubBytes 2-ShiftRows 3-MixColumns 4-AddRoundKey

Round Key 0

9 rounds

SubBytes

ShiftRows Round Key 10

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.


(44)

S0,0 S0,1 S0,1 S0,3

S1,0 S1,1 S1,2 S1,3

S2,0 S2,1 S2,2 S2,3

S3,0 S3,1 S3,2 S3,3

out0 out4 out8 out12

out1 out5 out9 out13

out2 out6 out10 out14

out3 out7 out11 out15

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 :

input bytes state array output bytes

in0 in4 in8 in12

in1 in5 in9 in13

in2 in6 in10 in14

in3 in7 in11 in15

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 :


(45)

2b 28 ab 09 7e ae f7 cf 15 d2 15 4f 16 a6 88 3c 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 Cipher key

32 88 31 e0 43 5a 31 37 f6 30 98 07 a8 8d a2 34

hexadecimal notation: Ex: 32 = 0011 0010 (1 byte)

3hex 2hex

2.7.3. Transformasi SubBytes()

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 :


(46)

Tabel 2.2. S-box (Sumber : Munir, 2006 : 163)

y hex

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

x

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


(47)

a2,2 a b2,1

a0,0 a0,1 a0,2 a0,3

a1,0 a1,1 a1,2 a1,3 SubBytes

b0,0 b0,1 b0,2 b0,3

b1,0 b1,1 b1,2 b1,3

a2,0 a2,1

a

2,2 2,3 b2,0

b

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


(48)

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

S’0,c

S’1,c =

S’2,c

S’3,c

02 03 01 01 01 02 03 01 01 01 02 03 03 01 01 02

S0,c

S1,c

S2,c

S3,c

S’0,c = ({02}• S0,c) ⊕ ({03}• S1,c) ⊕ S2,c ⊕ S3,c

S’1,c = S0,c ⊕ ({02}• S1,c) ⊕ ({03}• S2,c) ⊕ S3,c

S’1,c = S0,c ⊕ S1,c ⊕ ({02}• S2,c) ⊕ ({03}• S2,c)

S’1,c = ({03}• S0,c) ⊕S1,c ⊕ S2,c ⊕ ({02}• S3,c)

Gambar 2.7 memperlihatkan transformasi MixColumns().

Gambar 2.8. Transformasi MixColumns (Sumber : Munir, 2006 : 166)


(49)

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


(50)

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


(51)

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

Kunci Publik, e Kunci Privat, d

Plainteks, m Enkripsi

Ee (m) = c

Cipherteks, c

Dekripsi

Dd (c) = m Plainteks, m

Gambar 2.10. Skema kriptografi nirsimetri (Sumber : 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.


(52)

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 : 31 x 47 = 1457 (perkalian, mudah)

1457 = ? x ? (pemfaktoran, sulit)

b. Pemangkatan 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) (logaritmik diskrit, sulit)


(53)

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 lingkungan jaringan komputer


(54)

(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, Rabin, ElGamal, Elliptic Curve Cryptography (ECC).


(55)

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 Diffie- Hellman.

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


(56)

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


(57)

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


(58)

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


(59)

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 faktor- faktor 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),


(60)

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


(61)

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 mula- mula mendekripsi kunci rahasia dengan kunci privatnya, lalu menggunakan kunci rahasia tersebut untuk mendekripsi pesan (Munir, 2006 : 184).


(62)

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.


(63)

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 :

<?php ... ?> , < ? ... ?>, <% … %>, atau <script language = ”PHP”> ... </script>

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


(64)

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.


(65)

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.


(1)

</table><br><?php $msg = $_GET[msg];print"<font

color='#FF0000'>".$msg."</font>";?></center><br><br><br><br><br><b r><br><?php include "footer.php";?>

logout.php

<?php

$msg = $_GET[msg];session_start();unset($_SESSION[username]); unset($_SESSION[password]);session_destroy();

if($msg == "") $alamat = "login.php"; else $alamat = "login.php?msg=$msg"; header("Location: $alamat");?>

otentik.php

<?php

include"koneksi.php";

function otentikasi($username, $password)

{if($username=="" || $password=="") return false; else{

$hasil = mysql_query("select password from user where username = '$username'");

$row = mysql_fetch_row($hasil); if($row[0]==$password) return true; else return false;}}

function login_validate()

{$timeout = 180; //3 menit tak ada aktifitas, logout!hitungan dalam detik

$_SESSION["expires_by"] = time() + $timeout;} function login_check()

{$exp_time = $_SESSION["expires_by"]; if (time() < $exp_time)

{login_validate();return true;} else {

unset($_SESSION["expires_by"]);return false;}}?>

rsa.class

class SecurityRSA {

var $primes; var $maxprimes; function SecurityRSA($show_debug=0) {

/*random generator seed */

mt_srand((double)microtime()*1000000); /* Prime numbers table (570 prime numbers)

* 4507,4513 is the smallest and 9521,9533 is the largest pair*/ $this->primes = array (4507, 4513, 4517, 4519, 4523, 4547, 4549, 4561, 4567, 4583, 4591, 4597, 4603, 4621, 4637, 4639, 4643, 4649, 4651, 4657, 4663, 4673, 4679, 4691, 4703, 4721, 4723, 4729, 4733, 4751, 4759, 4783, 4787, 4789, 4793, 4799, 4801, 4813, 4817, 4831, 4861, 4871, 4877, 4889, 4903, 4909, 4919, 4931, 4933, 4937,


(2)

4943, 4951, 4957, 4967, 4969, 4973, 4987, 4993, 4999, 5003, 5009, 5011, 5021, 5023, 5039, 5051, 5059, 5077, 5081, 5087, 5099, 5101, 5107, 5113, 5119, 5147, 5153, 5167, 5171, 5179, 5189, 5197, 5209, 5227, 5231, 5233, 5237, 5261, 5273, 5279, 5281, 5297, 5303, 5309, 5323, 5333, 5347, 5351, 5381, 5387, 5393, 5399, 5407, 5413, 5417, 5419, 5431, 5437, 5441, 5443, 5449, 5471, 5477, 5479, 5483, 5501, 5503, 5507, 5519, 5521, 5527, 5531, 5557, 5563, 5569, 5573, 5581, 5591, 5623, 5639, 5641, 5647, 5651, 5653, 5657, 5659, 5669, 5683, 5689, 5693, 5701, 5711, 5717, 5737, 5741, 5743, 5749, 5779, 5783, 5791, 5801, 5807, 5813, 5821, 5827, 5839, 5843, 5849, 5851, 5857, 5861, 5867, 5869, 5879, 5881, 5897, 5903, 5923, 5927, 5939, 5953, 5981, 5987, 6007, 6011, 6029, 6037, 6043, 6047, 6053, 6067, 6073, 6079, 6089, 6091, 6101, 6113, 6121, 6131, 6133, 6143, 6151, 6163, 6173, 6197, 6199, 6203, 6211, 6217, 6221, 6229, 6247, 6257, 6263, 6269, 6271, 6277, 6287, 6299, 6301, 6311, 6317, 6323, 6329, 6337, 6343, 6353, 6359, 6361, 6367, 6373, 6379, 6389, 6397, 6421, 6427, 6449, 6451, 6469, 6473, 6481, 6491, 6521, 6529, 6547, 6551, 6553, 6563, 6569, 6571, 6577, 6581, 6599, 6607, 6619, 6637, 6653, 6659, 6661, 6673, 6679, 6689, 6691, 6701, 6703, 6709, 6719, 6733, 6737, 6761, 6763, 6779, 6781, 6791, 6793, 6803, 6823, 6827, 6829, 6833, 6841, 6857, 6863, 6869, 6871, 6883, 6899, 6907, 6911, 6917, 6947, 6949, 6959, 6961, 6967, 6971, 6977, 6983, 6991, 6997, 7001, 7013, 7019, 7027, 7039, 7043, 7057, 7069, 7079, 7103, 7109, 7121, 7127, 7129, 7151, 7159, 7177, 7187, 7193, 7207, 7211, 7213, 7219, 7229, 7237, 7243, 7247, 7253, 7283, 7297, 7307, 7309, 7321, 7331, 7333, 7349, 7351, 7369, 7393, 7411, 7417, 7433, 7451, 7457, 7459, 7477, 7481, 7487, 7489, 7499, 7507, 7517, 7523, 7529, 7537, 7541, 7547, 7549, 7559, 7561, 7573, 7577, 7583, 7589, 7591, 7603, 7607, 7621, 7639, 7643, 7649, 7669, 7673, 7681, 7687, 7691, 7699, 7703, 7717, 7723, 7727, 7741, 7753, 7757, 7759, 7789, 7793, 7817, 7823, 7829, 7841, 7853, 7867, 7873, 7877, 7879, 7883, 7901, 7907, 7919, 7927, 7933, 7937, 7949, 7951, 7963, 7993, 8009, 8011, 8017, 8039, 8053, 8059, 8069, 8081, 8087, 8089, 8093, 8101, 8111, 8117, 8123, 8147, 8161, 8167, 8171, 8179, 8191, 8209, 8219, 8221, 8231, 8233, 8237, 8243, 8263, 8269, 8273, 8287, 8291, 8293, 8297, 8311, 8317, 8329, 8353, 8363, 8369, 8377, 8387, 8389, 8419, 8423, 8429, 8431, 8443, 8447, 8461, 8467, 8501, 8513, 8521, 8527, 8537, 8539, 8543, 8563, 8573, 8581, 8597, 8599, 8609, 8623, 8627, 8629, 8641, 8647, 8663, 8669, 8677, 8681, 8689, 8693, 8699, 8707, 8713, 8719, 8731, 8737, 8741, 8747, 8753, 8761, 8779, 8783, 8803, 8807, 8819, 8821, 8831, 8837, 8839, 8849, 8861, 8863, 8867, 8887, 8893, 8923, 8929, 8933, 8941, 8951, 8963, 8969, 8971, 8999, 9001, 9007, 9011, 9013, 9029, 9041, 9043, 9049, 9059, 9067, 9091, 9103, 9109, 9127, 9133, 9137, 9151, 9157, 9161, 9173, 9181, 9187, 9199, 9203, 9209, 9221, 9227, 9239, 9241, 9257, 9277, 9281, 9283, 9293, 9311, 9319, 9323, 9337, 9341, 9343, 9349, 9371, 9377, 9391, 9397, 9403, 9413, 9419, 9421, 9431, 9433, 9437, 9439, 9461, 9463, 9467, 9473, 9479, 9491, 9497, 9511, 9521, 9533);

$this->maxprimes = count($this->primes) - 1; if ($show_debug == 1)

print "<p>instiantator: <br>Primes: " . $this->primes . "<br>Maxprimes: " . $this->maxprimes . "</p>";

}

/*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


(3)

Private key pair is N and D */

function generate_keys($show_debug=0){

//class-ify: global $primes, $maxprimes; if ($show_debug)

print "<p>generate_keys()<br>Primes:

$this->primes<br>Maxprimes: $this->maxprimes</p>"; 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<br>Q = $q<br><b>N = $n</b> - modulo<br>PI = $pi<br><b>E = $e</b> - public key<br><b>D = $d</b> - private key<p>";

} }

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 = 0; $v2 = 1; $v3 = $Ee;

while ($v3 != 0) {

$qq = floor($u3/$v3); $t1 = $u1 - $qq * $v1; $t2 = $u2 - $qq * $v2; $t3 = $u3 - $qq * $v3;

$u1 = $v1; $u2 = $v2; $u3 = $v3; $v1 = $t1; $v2 = $t2; $v3 = $t3; $z = 1;}

$uu = $u1; $vv = $u2; if ($vv < 0) {

$inverse = $vv + $Epi; } else { $inverse = $vv; }


(4)

}

/* 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<E<N

If each test E is prime, there will be much less loops in that fuction

and smaller E means less JS calculations on client side */ /*

* Calculating E under conditions: * GCD(N,E) = 1 and 1<E<N

* If E is prime, there will be fewer loops in the function. * Smaller E also means reduced JS calculations on client side. */

function tofindE($pi) {

//class-ify: global $primes, $maxprimes; $great = 0;

$cc = mt_rand (0,$this->maxprimes); $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;


(5)

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; $u<count ($decryptarray); $u++) { if ($decryptarray[$u] == "") {

array_splice($decryptarray, $u, 1); }}

//Each number is then decrypted using the RSA formula: block ^D mod N

for ($u=0; $u< count($decryptarray); $u++) {

$resultmod = $this->powmod($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 ?>


(6)

155

BUKTI PENYERAHAN SKRIPSI

(

Sebagai Syarat Pendaftaran Wisuda

)

NAMA

: Zaenal Muttaqin

NIM

: 2040 9100 2553

PROGRAM STUDI

: Teknik Informatika

JUDUL

: Pembuatan Aplikasi Enkripsi Menggunakan Metode

Advance Encryption Standard dan Rivest Shamir Adleman

Studi Kasus CV Maharta Mandiri Promo

TANGGAL

: Senin, 11 Januari 2010

Jabatan

Nama

Tanggal

Tanda Tangan

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

Perpustakaan Pusat UIN

Perpustakaan Fakultas

Jakarta,

a.n. Dekan,

Kasubag Akademik Fakultas

Sains dan Teknologi,

Ket :

* Dibuat Rangkap 2 (dua) untuk : 1. Akademik FST

2. Mahasiswa (Syarat Pengambilan Ijazah)

Dra. Sukmayeti