One Time Pad Project

22
P A P E R SISTEM ONE TIME PAD Disusun Oleh : Paramitha (0807100773) Supapri Situmorang (0807100781) Tri Atmojo Adhi Jatmiko (0807100784) Tingkat I Manajemen Persandian Sekolah Tinggi Sandi Negara

Transcript of One Time Pad Project

Page 1: One Time Pad Project

P A P E R

SISTEM ONE TIME PAD

Disusun Oleh :

Paramitha (0807100773)

Supapri Situmorang (0807100781)

Tri Atmojo Adhi Jatmiko (0807100784)

Tingkat I Manajemen Persandian

Sekolah Tinggi Sandi Negara

Page 2: One Time Pad Project

KATA PENGANTAR

Puji dan syukur kehadirat Allah SWT karena atas nikmat dan rahmat-Nya

lah penulis dapat menyelesaikan tugas paper yang berjudul “SISTEM ONE

TIME PAD” . Sholawat serta salam semoga tetap tercurah kepada Nabi Muhamad

SAW.

Tugas paper ini tidak dapat terselesaikan tanpa bantuan dan dukungan dari

banyak pihak baik secara langsung maupun tidak langsung. Oleh karena itu pada

kesempatan ini penulis ingin mengucapkan terima kasih kepada Bapak Prasetyo

Adi selaku dosen mata kuliah Struktur Data, Algoritma dan Pemrograman serta

kepada semua pihak yang telah membantu penulis dalam penyusunan paper ini.

Tugas paper ini masih jauh dari sempurna, oleh karena itu penulis

memohon kritik dan saran yang membangun demi kesempurnaan penulisan yang

akan datang. Semoga penelitian ini bermanfaat.

Bogor, Juli 2009

Penulis

Page 3: One Time Pad Project

BAB I

PENDAHULUAN

1.1 Latar Belakang

Perkembangan ilmu pengetahuan dan teknologi termasuk di bidang

informasi saat ini berkembang sangat cepat. Berbagai kemudahan di bidang

persandian dan informasi juga telah menumbuhkan dimensi kerawanan yang baru.

Oleh karena itu Kriptografi untuk mengamankan informasi menjadi

sebuah kebutuhan di era informasi seperti sekarang ini. Kriptografi

(cryptography) berasal dari bahasa Yunani, terdiri dari dua suku kata yaitu kripto

dan graphia. Kripto artinya menyembunyikan, sedangkan graphia artinya tulisan.

Kriptografi adalah ilmu yang mempelajari teknik-teknik matematika yang

berhubungan dengan aspek keamanan informasi, seperti kerahasiaan data,

keabsahan data, integritas data, serta autentikasi data (Menezes, Oorschot and

Vanstone, 1996). Tetapi tidak semua aspek keamanan informasi dapat diselesaikan

dengan kriptografi.

Kriptografi dapat pula diartikan sebagai ilmu atau seni untuk menjaga

keamanan pesan. Ketika suatu pesan dikirim dari suatu tempat ke tempat lain, isi

pesan tersebut mungkin dapat disadap oleh pihak lain yang tidak berhak untuk

mengetahui isi pesan tersebut. Untuk menjaga pesan, maka pesan tersebut dapat

diubah menjadi suatu kode yang tidak dapat dimengerti oleh pihak lain.

Enkripsi adalah sebuah proses penyandian yang melakukan perubahan

sebuah kode (pesan) dari yang bisa dimengerti (plainteks) menjadi sebuah kode

yang tidak bisa dimengerti (cipherteks). Sedangkan proses kebalikannya untuk

mengubah cipherteks menjadi plainteks disebut dekripsi. Proses enkripsi dan

dekripsi memerlukan suatu mekanisme dan kunci tertentu.

Kriptoanalisis (cryptanalysis) adalah kebalikan dari kriptografi, yaitu suatu

ilmu untuk memecahkan mekanisme kriptografi dengan cara mendapatkan kunci

dari cipherteks yang digunakan untuk mendapatkan plainteks. Kriptologi

Page 4: One Time Pad Project

(cryptology) adalah ilmu yang mencakup kriptografi dan kriptoanalisis.

Ada empat tujuan mendasar dari kriptografi yang juga merupakan aspek

keamanan informasi, yaitu:

1. Kerahasiaan, adalah aspek yang berhubungan dengan penjagaan isi

informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia

untuk membuka informasi yang telah dienkripsi.

2. Integritas data, adalah aspek yang berhubungan dengan penjagaan dari

perubahan data secara tidak sah. Untuk menjaga integritas data, sistem

harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-

pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan

pensubsitusian data lain kedalam data yang sebenarnya.

3. Autentikasi, adalah aspek yang berhubungan dengan identifikasi atau

pengenalan, baik secara kesatuan sistem maupun informasi itu sendiri.

Dua pihak yang saling berkomunikasi harus saling memperkenalkan diri.

Informasi yang dikirimkan harus diautentikasi keaslian, isi datanya, waktu

pengiriman, dan lain-lain.

4. Non-repudiation (menolak penyangkalan), adalah usaha untuk mencegah

terjadinya penyangkalan terhadap pengiriman suatu informasi oleh yang

mengirimkan, atau harus dapat membuktikan bahwa suatu pesan berasal

dari seseorang, apabila ia menyangkal mengirim informasi tersebut.

Salah satu contoh sitem sandi yang bertujuan untuk mengubah plainteks

menjadi chiperteks adalah system one time pad. Kami ingin menuangkan sistem

tersebut kedalam sebuah aplikasi sehingga dapat digunakan dengan efektif dan

efisien, tidak lagi menggunakan metode paper and pencil akan tetapi sesuai

dengan perkembangan zaman yaitu dengan menggunakan bahasa pemrograman.

Page 5: One Time Pad Project

1.2 Tujuan

Tujuan penulis menyusun makalah ini adalah sebagai berikut :

a. Sebagai sarana untuk memperluas ilmu pengetahuan dan teknologi khususnya

dalam mata kuliah struktur data, algoritma dan pemrograman.

b. Untuk mengetahui lebih dalam tentang sistem one time pad.

c. Untuk mengetahui program aplikasi sistem one time pad.

1.3 Batasan Masalah

Penulisan makalah ini dibatasi seputar pengertian, dan program aplikasi

sistem one time pad.

Page 6: One Time Pad Project

BAB II

PEMBAHASAN

2.1 Landasan Teori

One-time pad ditemukan pada tahun 1917 oleh Major Joseph Mauborgne.

Cipher ini termasuk ke dalam kelompok algoritma kriptografi simetri.

One-time pad (pad = kertas bloknot) berisi barisan karakter-karakter kunci

yang dibangkitkan secara acak. Aslinya, satu buah one-time pad adalah sebuah

pita (tape) yang berisi barisan karakter-karakter kunci.

Satu pad hanya digunakan sekali (one-time) saja untuk mengenkripsi

pesan, setelah itu pad yang telah digunakan dihancurkan supaya tidak dipakai

kembali untuk mengenkripsi pesan yang lain.

Aturan enkripsi yang digunakan persis sama seperti pada cipher Vigenere.

Pengirim pesan menggunakan setiap karakter kunci untuk mengenkripsikan satu

karakter plainteks.

Enkripsi dapat digambarkan sebagai penjumlahan modulo 26 dari satu

karakter plainteks dengan satu karakter kunci one-time pads:

ci = (pi + ki) mod 26

yang dalam hal ini,

pi : karakter plainteks

ki : karakter kunci

ci : karakter cipherteks

Perhatikan bahwa panjang kunci sama dengan panjang plainteks, sehingga

tidak ada kebutuhan mengulang penggunaan kunci selama proses enkripsi.

Setelah pengirim mengenkripsikan pesan dengan one-time pads, ia

menghancurkan one-time pad tersebut (makanya disebut satu kali pakai atau one-

Page 7: One Time Pad Project

time).

Penerima pesan menggunakan one-time pads yang sama untuk

mendekripsikan karakter-karakter cipherteks menjadi karakter-karakter plainteks

dengan persamaan :

pi = (ci – ki ) mod 26

Contoh: Misalkan plainteks adalah

ONETIMEPAD

dan kunci one-time pad adalah

TBFRGFARFM

Nyatakan A = 0, B = 1, C = 2, …, Z = 25, maka cipherteks yang dihasilkan

adalah

HOJKOREGHP

yang mana diperoleh sebagai berikut:

(O + T) mod 26 = H

(N + B) mod 26 = O

(E + F) mod 26 = J dst

Sistem cipher one-time pads ini tidak dapat dipecahkan karena :

1. Barisan kunci acak yang ditambahkan ke pesan plainteks yang

tidak acak menghasilkan cipherteks yang seluruhnya acak.

2. Beberapa barisan kunci yang digunakan untuk mendekripsi

cipherteks mungkin menghasilkan pesan-pesan plainteks yang

Page 8: One Time Pad Project

mempunyai makna, sehingga kriptanalis tidak punya cara

untuk menentukan plainteks mana yang benar.

Contoh: Misalkan kriptanalis mencoba barisan kunci

LMCCAWAAZD

untuk mendekripsi cipherteks pada contoh sebelumnya,

HOJKOREGHP

Plainteks yang dihasilkan adalah

SALMONEGGS

Bila ia mencoba barisan kunci

ZDVUZOEYEO

maka plainteks yang dihasilkan adalah

GREENFIELD

Dua plainteks yang mempunyai makna ini membingungkan

kriptanalis untuk memilih mana yang benar.

Meskipun one-time pad merupakan cipher yang sempurna aman, namun

faktanya ia tidak diguanakan secara universal dalam aplikasi kriptografi sebagai

satu-satunya sistem cipher yang tidak dapat dipecahkan (hanya sedikit sistem

komunikasi yang menggunakan one-time pad). Malahan orang masih tetap

menggunakan sistem cipher yang dapat dipecahkan.

Page 9: One Time Pad Project

Alasannya adalah dari segi kepraktisan, yaitu :

1. Karena panjang kunci harus sama dengan panjang pesan, maka

one-time pad hanya cocok untuk pesan berukuran kecil.

Semakin besar ukuran pesan, semakin besar pula ukuran kunci.

Pada aplikasi kriptografi untuk mengenkripsikan data tersimpan,

timbul masalah lain dalam penyimpanan kunci.

2. Karena kunci dibangkitkan secara acak, maka ‘tidak mungkin’

pengirim dan penerima membangkitkan kunci yang sama secara

simultan. Jadi, salah seorang dari mereka harus membangkitkan

kunci lalu mengirimkannya ke pihak lain.

Karena kerahasiaan kunci harus dijamin, maka perlu ada perlindungan

selama pengiriman kunci. Jika hanya ada satu saluran komunikasi, maka pengirim

dan penerima pesan perlu barisan kunci one-time pad lain untuk melindungi kunci

one-time pad pertama, one-time pad ketiga untuk melindungi one-time pad

pertama, dan seterusnya. Hal ini menghasilkan kumpulan barisan kunci one-time

pad yang tidak berhingga banyaknya.

Mengirimkan barisan kunci melalui saluran komunikasi yang digunakan

untuk pengiriman pesan juga tidak praktis karena pertimbangan lalu lintas (traffic)

pesan yang padat.

Oleh karena itu, one-time pad hanya dapat digunakan jika tersedia saluran

komunikasi kedua yang cukup aman untuk mengirim kunci. Saluran kedua ini

umumnya lambat dan mahal. Misalnya pada perang dingin antara AS dan Uni

Soviet (dahulu), one-time pad dibangkitkan, disimpan, lalu dikirim dengan

menggunakan jasa kurir yang aman.

Penting diingat bahwa saluran kedua yang aman tersebut umumnya lambat

dan mahal.

Page 10: One Time Pad Project

BAB III

LISTING PROGRAM

DAN FLOWCHART

3.1 Listing Program

Aplikasi sistem one time pad yang kami rancang menggunakan bahasa C.

User dapat memilih kunci yang akan digunakan. Ada dua pilihan kunci yang

dapat dipilih. Yang pertama menggunakan adalah otomatis berdasarkan waktu

sedangkan yang kedua adalah berdasarkan inputan dari user. Berikut Adalah

Listing Programnya.

#include <stdio.h> #include <stdlib.h> #include <time.h> #include <dos.h> with_time(); with_seed(); void main (void) /* Program Utama */ { int choise; clrscr(); printf(" +-----------------------------+\n"); printf(" | OTP KEY GENERATOR |\n"); printf(" | |\n"); printf(" +-----------------------------+\n\n"); printf(" 1. Time Input\n"); printf(" 2. Seed Input\n\n"); printf(" Insert Your Choise : "); scanf("%d",&choise); if (choise==1) with_time(); else with_seed(); printf("\n\n\n\n - NATIONAL CRYPTO INSTITUTE 2009 -"); getch(); }

Page 11: One Time Pad Project

with_time() /* Prosedur tanpa Seed */ { /* tetapi menggunakan inputan */ unsigned long int i,n; /* waktu pada Komputer */ int a,y,z; FILE *otp; struct time waktu1; struct time waktu2; otp=fopen("otp_time.txt","w"); printf("\n How Long The Key You Want To Generate : "); scanf("%lu",&n); printf("\n Generating Keys and Write to File otp_time.txt, Please Wait......"); fprintf(otp,"Key Length : %lu\n",n); z=0; y=0; randomize(); gettime (&waktu1); for(i=0;i<n;i++) { a=random(25)+65; fprintf(otp,"%c",a); z++; y++; if(y==5) {fprintf(otp," "); y=0;} if(z==100) { fprintf(otp,"\n"); z=0; } } gettime (&waktu2); printf("\n\n Start At %02d:%02d:%02d:%02d",waktu1.ti_hour,waktu1.ti_min,waktu1.ti_sec,waktu1.ti_hund); printf("\n Stop At %02d:%02d:%02d:%02d",waktu2.ti_hour,waktu2.ti_min,waktu2.ti_sec,waktu2.ti_hund); printf("\n\n Press Any Key To Continue.. Thanx"); fclose(otp); } with_seed() /* Prosedur Dengan Seed */ { unsigned long int i,n,seed; int a,y,z; FILE *otp; struct time waktu1; struct time waktu2; otp=fopen("otp_seed.txt","w"); printf("\n How Long The Key You Want To Generate : "); scanf("%lu",&n); printf("\n Insert The Seed : "); scanf("%d",&seed); printf("\n Generating Keys and Write to File otp_seed.txt, Please Wait......"); fprintf(otp,"Key Length : %lu\n",n);

Page 12: One Time Pad Project

z=0; y=0; srand(seed); gettime (&waktu1); for(i=0;i<n;i++) { a=random(25)+65; fprintf(otp,"%c",a); z++; y++; if(y==5) {fprintf(otp," "); y=0;} if(z==120) { fprintf(otp,"\n"); z=0; } } gettime (&waktu2); printf("\n\n Start At %02d:%02d:%02d:%02d",waktu1.ti_hour,waktu1.ti_min,waktu1.ti_sec,waktu1.ti_hund); printf("\n Stop At %02d:%02d:%02d:%02d",waktu2.ti_hour,waktu2.ti_min,waktu2.ti_sec,waktu2.ti_hund); printf("\n\n Press Any Key To Continue.. Thanx"); fclose(otp); }

Page 13: One Time Pad Project

Berikut adalah listing program yang digunakan untuk enkripsi dan dekripsi

#include<stdio.h> #include<conio.h> main() { FILE *pf,*pk,*pc; char cipher,kar,kunci,out[15],file[15],key[15]; int pil; clrscr(); printf(" +------------------------------+\n"); printf(" | OTP FILE ENCRYPTION |\n"); printf(" | |\n"); printf(" +------------------------------+\n\n"); printf(" 1.Enkripsi\n"); printf(" 2.Dekripsi\n\n"); printf(" *) Masukkan pilihan anda : "); scanf("%d",&pil);fflush(stdin); printf("Insert your file name : "); gets(file); printf("Insert your key file name : "); gets(key); printf("Insert your output file name : "); gets(out); if((pf=fopen(file,"r"))==NULL) { printf("file tidak ditemukan"); exit(0); } if((pk=fopen(key,"r"))==NULL) { printf("file tidak ditemukan"); exit(0); } pc=fopen(out,"a"); while((kar=getc(pf))!=EOF) { kunci=getc(pk); kar=toupper(kar); kunci=toupper(kunci); if(pil==1) cipher=(((kunci%65)+(kar%65)+1)%26)+65; else cipher=((kar-kunci-1)%26)+65; fputc(cipher,pc); } printf("\n\nFile sudah jadi, Terima kasih"); getch(); }

Page 14: One Time Pad Project

3.2 Flowchart

Pembangkitan Kunci

START

Input panjang kunci

“OTP_TIME.txt or OTP_SEED.txt”

Cetak kunci

random

SELESAI

Page 15: One Time Pad Project

Menyandi

START

Input file terang.txt

Input file kunci

ada

Rename file hasil

“sandi.txt”

Cetak hasil

SELESAI

Page 16: One Time Pad Project

Membuka sandi

START

Input file sandi.txt

ada

Input file kunci

Rename file hasil

“terang.txt”

Cetak hasil

SELESAI

Page 17: One Time Pad Project

BAB IV

ANALISIS APLIKASI

4.1 Tampilan Program

Langkah awal untuk menjalankan program ini adalah kita buat

terklebih dahulu file yang kan disandi pada folder yang sama misal nama file

terang.txt. Kemudian jalankan listing program yang pertama untuk

membangkitkan kunci. Misalkan kita menginginkan kunci otomatis maka kita

inputkan pilihan kunci otomotis. Kemudian inputkan panjang kunci yang kita

inginkan. Selanjutnya akan terbentuklah sebuah file pada folder yang sama yaitu

file OTP_Time.txt yang berisi kunci. Apabila listing program dijalankan akan

muncul tampilan sebagai berikut :

Gambar 1.

Page 18: One Time Pad Project

Masukkan pilihan pembangkitan kunci yang diinginkan. Berdasarkan

waktu atau berdasarkan inputan. Bila berdasrkan waktu berikut ini tampilan yang

akan muncul :

Gambar 2.

Selanjutnya masukkan panjang kunci yang akan dibangkitkan. Berikut

tampilan yang akan muncul ;

Gambar 3.

Maka akan terbetuklah file OTP_Time.txt pada folder yang sama.

Sebaliknya jika menggunakan seed input maka akan muncul tampilan sebagai

Page 19: One Time Pad Project

berikut :

Gambar 4.

Insertkan panjang kunci yang ingin dibangkitkan. Selanjutnya insertkan

juga kuncinya. Maka akan muncul tampilan sebagai berikut :

Gambar 5.

Selanjutnya pada folder yang sama akan terbentuk folder dengan nama

OTP_Seed.txt.

Langkah berikutnya adalah untuk enkripsi dan dekripsi program.

Masukkan pilihan untuk enkripsi atau untuk dekripsi. Misal untuk dekripsi. Maka

akan muncul tampilan sebagai berikut :

Page 20: One Time Pad Project

Gambar 6.

Selanjutnya masukkan nama file yang akan di enkrip. Selain itu masukkan

juga file kunci yang tadi telah dibangkitkan. Jangan lupa masukkan nama file

yang hendak kita buat. Tampilan yang muncul adalah sebagai berikut :

Gambar 7.

Sebaliknya bila kita akan dekripsi file prosedurnya sama dengan enkripsi

file hanya saja yang diinputkan adalah file sandinya.

Page 21: One Time Pad Project

BAB V

PENUTUP

5.1 Kesimpulan

Dapat ditarik kesimpulan bahwa diera tekhnologi informasi seperti

sekarang tidak dapat dipungkiri bahwa penggunaan tekhnologi canggih dapat

mempermudah akses terhadap informasi itu sendiri.

Berbagai macam hal dapat lebih mudah, cepat dan efisien untuk dilakukan

dengan menggunakan kecanggihan tekhnologi. Misalnya saja proses pengamanan

informasi menggunakan sandi.

Proses mengamankan informasi dengan menggunakan sandi awalnya

dilakukan dengan berbagai macam metode, seiring berkembangnya tekhnologi

maka dikembangkan berbagai macam sistem sandi yang memadukan sistem yang

sudah ada dengan kecanggihan tekhnologi.

Memadukan sistem pengamanan informasi dengan kecanggihan

tekhnologi mampu meningkatkan efisiensi dan efektifitas. Dahulu sebuah sistem

sandi yang membutuhkan waktu berhari-hari bahkan bertahun-tahun untuk

dipecahkan, dengan kecanggihan tekhnologi sistem sandi tersebut dapat

dipecahkan dalam hitungan detik saja. Sangat efektif dan efisien bukan?.

5.2 Saran

Penulis menyadari sepenuhnya dalam penyusunan paper dan pembuatan

aplikasi, banyak terdapat kekurangan. Oleh karena itu penulis sangat

mengharapkan saran dan kritik dari pembaca, demi tercapainya penyusunan paper

dan pembuatan aplikasi yang lebih baik. Penulis berharap paper ini dapat

memberikan manfaat. Amien.

.

Page 22: One Time Pad Project

DAFTAR PUSTAKA

[1] http://sandi.math.web.id/?p=3

[2] www.google.com

[3] www.wikipedia.com

[4] www.belajar –bahasa c dan c++.co.id