You are on page 1of 26

1.

PENDAHULUAN

LATAR BELAKANG

Keamanan merupakan salah satu aspek yang penting dalam sebuah sistem informasi. Banyak orang menyiasati bagaimana cara mengamankan informasi yang dikomunikasikan atau menyiasati bagaimana cara mendeteksi keaslian dari informasi yang diterimanya. Kriptografi adalah ilmu yang mempelajari bagaimana menjaga keamananan suatu pesan (plaintext). Tugas utama kriptografi adalah untuk menjaga agar baik pesan atau kunci ataupun keduanya tetap terjaga kerahasiaannya dari penyadap (attacker). Penyadap pesan diasumsikan mempunyai akses yang lengkap dalam saluran komunikasi antara pengirim pesan dan penerima pesan. Penyadapan pesan sering terjadi pada komunikasi melalui internet maupun saluran telepon. Untuk mendapatkan pesan tanpa melalui kunci sebenarnya dapat dianalisis (analisis sandi), ilmunya disebut cryptanalysis. Hasil dari analisis sandi akan diperoleh pesan atau kunci. Analisis sandi juga dapat menemukan kelemahan dalam kriptosistem yang pada akhirnya dapat menemukan pesan atau kunci. Pada sebuah data untuk menjaga keamanan data,data tersebut di enksipsi dan deskripsi. enkripsi dan dekripsi pada umumnya membutuhkan penggunaan sejumlah informasi rahasia, disebut sebagai kunci. Untuk beberapa mekanisme enkripsi,kunci yang sama digunakan baik untuk enkripsi dan dekripsi, untuk mekanismeyang lain, kunci yang digunakan untuk enkripsi dan dekripsi berbeda. Dua tipedasar dari teknologi kriptografi adalah symmetric key (secret/private key) cryptography dan asymmetric (publickey) cryptography. Pada symmetric key cryptography, baik pengirim maupun penerima memiliki kunci rahasia yang umum. Pada asymmetric key cryptography, pengirim dan penerima masingmasing berbagi kunci publik dan privat. Kriptografi saat ini lebih dari enkripsi dan dekripsi saja. Otentikasi menjadi bagian dari kehidupan kita sama seperti privasi.

Pesan-pesan yang dirahasiakan dalam kriptografi biasa disebut plainteks(plaintext) dan hasil penyamaran disebut chiperteks (chipertext). Proses penyamaran dari palinteks ke chiperteks disebut ENKRIPSI(dari kata encryption) dan proses pembalikan dari chiperteks menjadi plainteks kembali disebut DESKRIPSI(decryption). Baik proses enkripsi maupun proses dekripsi melibatkan satu atau beberapa kunci kriptografi. Dalam suatu system di mana terdapat algoritma kriptografi,ditambah seluruh kemungkinan plaintext, ciphertext dan kunci-kuncinya disebut kriptosistem (cryptosystem atau cryptographic system) Proses tersebut dapat digambarkan secara sederhana sebagai berikut :

Pengirim Keystream Generator Keystream ki ci Cipherteks

Penerima Keystream Generator Keystream ki

pi Plainteks

Enkripsi

Dekripsi

pi Plainteks

Ada dua jenis algoritma kriptografi berdasarkan jenis kuncinya, yaitu : 1. Algoritma Simetri (konvensional) Adalah algoritma yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya. Disebut konvensional karena algoritma ini digunakan orang sejak dahulu. Algoritma simetri sering juga disebut sebagai algoritma kunci rahasia, algoritma kunci tunggal atau algoritma satu kunci dan mengharuskan pengirim dan penerima menyetujui suatu kunci tertentu sebelum mereka dapat

berkomunikasi dengan aman. Keamanan algoritma simetri tergantung pada kunci, membocorkan kunci berarti bahwa orang lain dapat mengenkrip dan mendekrip pesan. Agar komunikasi tetap aman, kunci harus tetap dirahasiakan. Yang termasuk algoritma kunci simetri adalah OTP, DES, RC2, RC4, RC5, IDEA, Twofish, Magenta, FEAL, SAFER, LOKI, CAST, Rijndael (AES), Blowfish, GOST, A5, Kasumi dan lain-lainnya.

Key (K)

DESKRIPSI ENKRIPSI

Gambar 2. kriptografi konvensional

Gambar diatas, menggambarkan kriptografi simetri yang biasa disebut dengan kriptografi kunci konvesional. Pesan plaintext P, misalkan SIGIT dikodekan (dienkrip) menjadi ciphertext 11@@##$ menggunakan password (kunci K) TES. Untuk mengembalikan cipher 11@@##$ Menjadi SIGIT dilakukan proses dekripsi dengan kunci yang sama yaitu TES. Karena kunci yang digunakan sama, maka disebut kriptografi kunci simetri atau kriptografi konvensional. Dalam dunia kriptografi password sering disebut sebagai kunci. Pesan asli yang belum dikodekan disebut plaintext. Plaintext tidak harus berupa teks, namun dapat berupa file gambar (gif, jpg), file biner (exe, com, ocx), file suara (wav, mp3) dan sebagainya. File yang telah disandikan disebut ciphertext. Enkripsi adalah proses pengubahan pesan asal menjadi karakter yang tidak dapat dibaca. Sedangkan dekripsi adalah proses pengubahan karakter yang tidak dapat dibaca menjadi pesan asal.

Cripanalyst

Sumber pesan

enkriptor

deskriptor

tujuan

Saluran yang aman Sumber kunci


saluran yang tidak aman

Gambar 3. Lingkungan Kriptosystem

menggambarkan cipher C dikirimkan ke tujuan melalui saluran yang umumnya tidak aman. Sedangkan kunci K sendiri harus dikirimkan melalui saluran yang aman. Untuk mengirimkan kunci dengan aman, pengirim dan penerima dapat bertemu dan menyepakati kunci tertentu untuk dipakai bersama dalam komunikasi berikutnya. Dalam saluran yang tidak aman ini, seorang penyerang dapat menyadap cipher C dan kemudian melakukan dan kemudian melakukan analisis untuk menemukan nilai P. Nilai K dan P perkiraan yang dihasilkan oleh penyerang disebut sebagai K dan P. Untuk memudahkan penulisan dan analisis, kriptografi modern menggunakan notasi matematika, dengan pesan asal P dan kode rahasia C yang diperoleh dari enkripsi dengan kunci K, sehingga penulisannya : C = E(P) K Notasi ini menyatakan bahwa C dihasilkan oleh fungsi enkripsi E yang dioperasikan terhadap masukan P dengan kunci K, operasi ini dilakukan di pengirim. Pada penerima dilakukan operasi sebaliknya P = D(C). Pemecah kode (cryptanalyst) sering kali hanya memiliki C dan harus menemukan nilai P nya.

Algoritma simetri dapat dibagi dalam dua kategori. Jenis pertama beroperasi pada plaintext yang berupa satu bit tunggal pada satu waktu, yang disebut stream algorithms (algoritma aliran atau stream ciphers). Jenis kedua beroperasi pada plaintext dalam grup bit-bit. Grup bit-bit ini disebut blok, dan algoritmanya disebut sebagai algoritma blok atau kode rahasia blok. Untuk algoritma komputer modern ukuran blok dasarnya adalah 64 bit atau 128 bit, cukup besar untuk menghindari analisis pemecahan kode dan cukup kecil agar dapat bekerja dengan cepat. Sebelum pemakai komputer, algoritma biasanya beroperasi pada plaintext, satu karakter per satu operasi. Kita dapat mengatakan bahwa ini seperti algoritma aliran yang beroperasi pada aliran karakter.

2. Algoritma Asimetri Algoritma Asimetri juga disebut algoritma kunci publik. Kunci yang digunakan untuk enkripsi berbeda dengan kunci yang digunakan untuk dekripsi. Kunci dekripsi tidak dapat dihitung dari kunci enkripsi. Algoritma disebut kunci publik karena kunci enkripsi dapat dibuat publik yang berarti semua orang dapat mengetahuinya. Sembarang orang dapat menggunakan kunci enkripsi tersebut untuk mengenkrip pesan, namun hanya orang tertentu (calon penerima pesan dan sekaligus pemilik kunci dekripsi yang merupakan pasangan kunci publik) yang dapat melakukan dekripsi terhadap pesan tersebut. Dalam sistem ini, kunci enkripsi sering disebut kunci publik, sementara kunci dekripsi sering disebut kunci privat. Kunci privat kadang-kadang disebut kunci rahasia. Yang termasuk algoritma asimetri adalah ECC, LUC, RSA, El Gamal dan DH. Enkripsi dengan kunci publik Ke dinyatakan sebagai E (M) = C Ke Dengan kunci privat (Kd) sebagai pasangan kunci publik (Ke), dekripsi dengan kunci privat yang bersesuaian dapat dinyatakan dengan D(C) = M Kd Di sini Ke merupakan pasangan Kd. Artinya tidak ada Kd lain yang dapat digunakan untuk melakukan dekripsi kode C yang merupakan hail enkripsi dengan kunci Ke. Sebaliknya, pesan

dapat dienkrip dengan kunci privat dan didekrip dengan kunci publik. Metode ini digunakan pada tanda tangan digital. Meskipun agak membingungkan, operasi ini dapat dinyatakan sebagai E (M) = C Kd DKe (C) = M Artinya kunci privat dan kunci publik dapat digunakan secara berlawanan dengan tujuan yang berbeda. Sifat ini hanya berlaku untuk algoritma kunci publik tertentu, seperti RSA. Sifat ini tidak berlaku untuk algoritma DH.

Taksonomi Primitif-primitif Kriptografi


Ada beberapa dasar tool kriptografi (primitif) yang digunakan untuk mendukung keamanan informasi. Contoh dari primitif termasuk skema enkripsi,fungsi hash, dan skema tanda tangan digital. Gambar 1 menunjukkan daftar primitif yang dimaksud dan bagaimana hubungan mereka. Primitif-primitif ini harus dapat dievaluasi berdasarkan beberapa kriteria seperti:

Level keamanan. Hal ini biasanya sulit untuk dihitung. Sering diwakili dengan jumlah operasi yang dibutuhkan (menggunakan metode terbaik yang diketahui) untuk melawan tujuan yang diharapkan. Level keamanan biasanya didefinisikan work factor.

Fungsionalitas. Primitif-primitif dibutuhkan untuk memenuhi tujuan keamanan informasi yang bermacam-macam. Primitif mana yang paling efektif untuk tujuan yang diberikan akan ditentukan dengan properti dasardari primitif.

Metode operasi. Primitif, saat diterapkan dengan bermacam cara dan dengan bermacam input, biasanya akan menunjukkan karakteristik yang berbeda, sehingga satu primitif dapat menyediakan fungsionalitas yang sangat berbeda pada mode operasi atau penggunaannya.

Unjuk kerja. Merupakan efisiensi sebuah primitif pada mode tertentu.(sebagai contoh algoritma enkripsi dapat dihitung dengan jumlah bit per detik yang dapat dienkripsinya)

Kemudahan implementasi. Merupakan kesulitan dalam merealisasikan primitif pada prakteknya.Dapat meliputi kompleksitas pengimplementasian primitif dalam lingkungan software maupun hardware. Kepentingan relatif dari bermacam kriteria ini sangat tergantung pada aplikasi dan sumber daya yang tersedia.

2. LANDASAN TEORI
Pada Makalah ini akan dibahas tentang algoritma ONE TIME PAD (OTP) pada email. One time pad termasuk dalam kelompok kriptografi simestris. One-time pad (pad = kertas bloknot) berisi deretan karakter-karakter kunci yang dibangkitkan secara acak.

Cipher ini diimplementasikan melalui sebuah kunci yang terdiri dari sekumpulan random karakter-karakter yang tidak berulang. Setiap huruf kunci dijumlahkan modulo 26 dengan huruf pada plaintext. Pada One Time Pad, tiap huruf kunci digunakan satu kali untuk satu pesan dan tidak

digunakan kembali.Panjang stream karakter kunci sama dengan panjang pesan.Satu-satunya algoritma kriptografi yang tidak dapat dipecahkan adalah one time pad. One-Time Pads (OTP). One time pads 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 kuncione time pads: ci = (pi + ki) mod 26 yang dalam hal ini, pi : karakter plainteks ki : karakter kunci ci : karakter ciphertek

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 pads tersebut (makanya disebut satu kali pakai atau one time).Penerima pesan menggunakan one time pads yang sama untuk mendekripsikan karakter-karakter cipherteks menjadi karakter-karakter plaintek dengan persamaan: pi = (ci ki ) mod 26

Contoh :

plainteks:

ONETIMEPAD

kunci:

TBFRGFARFM

Misalkan A = 0, B = 1, , Z = 25.

cipherteks: 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: Barisan kunci acak yang ditambahkan ke pesan plainteks yang tidak acak menghasilkan cipherteks yang seluruhnya acak. Beberapa barisan kunci yang digunakan untuk mendekripsi cipherteks mungkin menghasilkan pesan-pesan plainteks yang mempunyai makna, sehingga kriptanalis tidak punya cara untuk menentukan plainteks mana yang benar.Meskipun one time pads merupakan cipher yang sempurna aman, namun faktanya ia tidak diguanakan secara universal dalam aplikasi kriptografi sebagai satusatunya sistem cipher yang tidak dapat dipecahkan (hanya sedikit sistem komunikasi yang menggunakan one time pads). Malahan orang masih tetap menggunakan sistem cipher yang dapat dipecahkan. Alasannya adalah dari segi kepraktisan, yaitu: Karena panjang kunci harus sama dengan panjang pesan, maka one time pads 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. 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 pads lain untuk melindungi kunci one time pads pertama, one time pads ketiga untuk melindungi one time pads pertama, dan seterusnya. Hal ini menghasilkan kumpulan barisan kunci one time pads 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 pads 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 pads dibangkitkan, disimpan, lalu dikirim dengan menggunakan jasa kurir yang aman. Penting diingat bahwa saluran kedua yang aman tersebut umumnya lambat dan mahal.

Gambar contoh one time pad

Konsep terpenting dalam penggunaan kriptografi onetime

10

pad adalah meng-XOR-kan plainteks dengan kunci yang telah dipersiapkan untuk menghasilkan cipherteks. Secara sederhana dapat dituliskan sebagai berikut :

(1)

c = p XOR k [4]

sedangkan proses pendekripsian dituliskan sbb. :

(2)

p = c XOR k [5]

dengan c : chiperteks

p : plainteks k : kunci rahasia yang digunakan

jika,operator logika XOR akan menghasilkan T (benar) apabila salah satu dari kedua operand (tetapi tidak keduanya) bernilai T. Apabila diaplikasikan dalam bit maka operator XOR akan menghasilkan 1 jika dan hanya jika salah satu operand bernilai 1.

Contoh :

x 00111010 10101011 y 10100100 01010101 hasil 10011110 11111110

11

Sedangkan suatu bilangan dalam biner apabila di- XOR-kan dengan dirinya sendiri akan menghasilkan 0.

Contoh :

X 01010101 10101010 Y 01010101 10101010 Hasil 00000000 00000000

Apabila suatu bilangan biner x di XORkan sebanyak 2 kali dengan suatu bilangan biner yang sama maka akan diperoleh bilangan x tersebut kembali.

Contoh :

X 11010101 10001011 Y 01010110 11101010 Hasil1 10000011 01100001

Apabila hasil1 di-XOR-kan kembali dengan Y maka diperoleh :

Hasil1 10000011 01100001 Y 01010110 11101010 Hasil2 11010101 10001011

Ternyata diperoleh hasil2 sama dengan x. Hal ini merupakan salah satu dasar dalam penerapan algoritma Vernam dalam kriptografi, yaitu suatu string yang diterjemahkan ke dalam biner dapat dienkripsikan dengan suatu kunci tertentu

12

dan dapat pula dengan mudah diperoleh kembali dari pesan sandi dengan menggunakan operator XOR pada kunci yang sama.

3. PEMBAHASAN

Pada tugas makalah ini akan dibahas analisa algoritma one time pad. Contonya adalah Pada saat kita mengirimkan pesan terhadap seseorang, pesan tersebut pastinya bersifat rahasia disini OTP akan menenkripsi nya sehingga pesan tersebut aman. Dibawah ini akan di jelaskan contoh penggunaan algoritma one time pad pada sebuah pesan.

Misalkan : Kita ingin mengirim pesan untuk seseorang,pesan yang akan dikirimkan yaitu FIRMAN dengan kata kunci GLORIA.

Gambaran proses pengiriman pesan

Langkah yang dilakukan sbb :

13

a. Ubah menjadi kode ASCII dan biner dibawah ini adalah table kode ASCII yang digunakan :

Tabel 2 . ASCII

0 00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 17 ( NUL BS DLE CAN

1 SOH HT DC1 EM

2 STX LF DC2 SUB + 2 : B J R Z b j r z

3 ETX VT DC3 ESC # , 3 ; C K S [ c k s {

4 EOT FF DC4 FS $ 4 < D L T \ d l t |

5 ENQ CR

ACK BEL SO SI ETB US

NAK SYN GS % . 5 = E M U ] e m u } RS & / 6 > F N V ^ f n v ~

Blank ! ) 0 8 @ H P X ` h p x * 1 9 A I Q Y a I q y

7 ? G O W _ G O W DEL

F 106 0001 0000 0110 I 111 0001 0001 0001 R 122 0001 0010 0010

14

M 115 0001 0001 0101 A 101 0001 0000 0001 N 116 0001 0001 0110 Hal yang sama dilakukan pada kunci G 107 0001 0000 0111 L 114 0001 0001 0100 O 117 0001 0001 0111 R 122 0001 0010 0010 I 111 0001 0001 0001 A 101 0001 0000 0001

b. Pesan di-XORkan dengan kunci Akan diperoleh

F 0000 0000 0001001 I 0000 0000 0101005 R 0000 0011 0101035 M 0000 0011 0100034 A 0000 0001 0000010 N 0000 0001 0111017

c. Kode ASCII tersebut diterjemahkan lagi menjadi karakter

Diperoleh : NUL ENQ GS FS BS SI Untuk memperoleh plainteks kembali, penerima pesan cukup mengubah lagi

15

plainteks menjadi ASCII dan meng-XORkan kembali dengan kunci.

Gambar Proses Enkripsi dan Deskripsi sebuah pesan

Pada Gambar diatas dapat dilihat proses dari sebuah pengiriman pesan dari komputer satu ke komputer lainnya. Proses diatas menggunakan fungsi hash. Dimana pertama-tama pesan milik pengirim di pisah menjadi 2. pesan tersebut dienkripsi oleh MD5+RSA dimana MD5+RSA sebagai

16

kunci private milik pengirim. Dan dienkripsi juga oleh OTP. OTP disini sebagai simetrik key. Kemudian hasil enkripsi keduanya digabungkan menjadi satu bersama juga dengan RSA sebagai kunci public penerima. Kemudian ke semua file di kirim melalui internet dalam bentuk chipertext. Pada saat pesan diterima oleh penerima. Pesan tersebut dibuka satu persatu oleh penerima kemudian setelah itu baru digabungkan kesemuannya sehingga menjadi satu pesan yang utuh. Chiper simetrik key dibuka oleh RSA sebagai kunci public penerima. Hasilnya adalah simetrik key. Simetrik key adalah OTP. OTP yang berisi chipertext dibuka lalu dipisah menjadi 2. salah satunya ada pada MD5+RSA. MD5+RSA adalah kunci public pengirim. Kunci ini dibuka kemudian hasilnya digabungkan dengan hasil dari chipertext OTP. Setelah itu menjadi pesan yang benar. Ada beberapa parameter yang diperhitungkan untuk mengetahui kehandalan Sistem OTP ini, antara lain: Terenkrip/tidak terenkrip Terenkripsi dan tidaknya sebuah pesan tergantung pada keadaan jaringan saat itu. File terenkripsi atau tidaknya tidak dapat dipastikan. Akan tetapi kita dapat mengetahui file tersebut terenkripsi atau tidak dengan melakukkan sniffing (alias mengendus, adalah suatu kegiatan mengendus-endus seperti namanya). Authentifikasi Autentifikasi pada OTP sama halnya dengan validasi pada system email user. proses validasi user pada saat melakukan proses dengan system. Sama seperti biasanya username dan password user dicek untuk diproses apakan kebenaranya memang benar. Bila benar maka mereka berhak masuk ke system selanjutnya. Jadi pada OTP hanya user yang benar yang boleh menggunakan system OTP. Pada tahap ini menggunakan privat key algoritma RSA. Pada saat pengiriman public dan private key dibutuhkan untuk proses pengiriman pesan ini.

17

Integritas Integritas adalah suatu keadaan dimana pada saat kita mengirim pesan dan pada saat menerima pesan tersebut masii sama dengan pesan yang asli. Atau pada saat kita mengirim. Pesan tersebut masih terenkripsi dengan baik. Sehingga tidak ada perubahan dalam isi nya.

Dibawah ini adalah contoh bahasa C padaprogram one time pad untuk proses pengiriman pesan.

/* CRYPTIC.C V 1.0 Copyright 1998 by Glen E. Gardner, Jr. */ /* Encrypts a file using a random key and saves the key. */ /* Automatically generates a new key when needed. The new */ /* key is deleted on the second use (decryption) to prevent */ /* accidental reuse of the same key for encryption. */ /* This program is freeware, use it freely and enjoy! */ /* Be sure to cite the author and include the original */ /* source in all distributions. */ /* Written and compiled in ANSI C using Borland C++ V 5.02 */ /* Tested on Windows NT 4.0 and FreeBSD 2.2.5 (using gcc). */ /* Run this program once to encrypt and agin, using the */ /* same key, to decrypt. */ /* Any file can be used as a key provided it is the */ /* same size (or larger) as the file being encrypted. */ /* (small,repeating keys are for whimps) */ /* You need to be careful what you use as a key. If you */ /* don't believe this, try encrypting a file using a windows*/ /* dll file as a key and looking at the output with a text */

18

/* editor. */ /* The encrypted output is binary. You can use cryptic to */ /* encrypt any file. */ #include<stdio.h> #include<stdlib.h> #include<time.h> /* Use this include with GCC on FreeBSD machines.*/ /* #include</usr/include/sys/stat.h> */ /* Use this include instead of the one above for Windows NT. */ #include<sys\stat.h> void makekey(long int,char *); int main(int argc,char **argv) { struct stat statbuf; time_t t; int key; int data; int output; int count=0; int FLAG=0; FILE * mykeyfile; FILE * sourcefile; FILE * destfile; if(argc<3) { printf("CRYPTIC Coyright 1998 by Glen E. Gardner, Jr.\n");

19

printf("USE: CRYPTIC <DESTINATION> <KEY>\n"); return(0); } /* Note that if no key name is given, the program generates and uses a new key. */ /* Be sure the right key is present when decrypting (duh). The program does not*/ /* know if it is encrypting or decrypting. It just crunches the source file with*/ /* whatever key it has and spits out the result. */ /* Bail out if the wrong number of arguments are used.*/ if(argc>4){printf("Too many arguments.");return(1);} /* Seed the random number generator for later use. */ srand((unsigned) time(&t)); /* get the size of the source file */ if ((sourcefile = fopen(argv[1], "rb"))== NULL) { printf("Can't open source file.\n"); return(4); } fflush(sourcefile); fstat(fileno(sourcefile), &statbuf); fclose(sourcefile); /* Look for default key file if none is given */ if(argv[3]==NULL){argv[3]="newkey";} /* If the key is not found make a new one. */

20

if ((mykeyfile = fopen(argv[3], "r"))== NULL) { FLAG=1; printf("Can't open key file.\n"); printf("Making a new key...\n"); makekey(statbuf.st_size,"newkey"); }else{fclose(mykeyfile);} /* open all the necessary files. */ mykeyfile=fopen(argv[3],"rb"); sourcefile=fopen(argv[1],"rb"); destfile=fopen(argv[2],"wb"); /* Use the key to encrypt/decrypt the source file. */ while (count < (statbuf.st_size)) { key=fgetc(mykeyfile); data=fgetc(sourcefile); /* This is all there is to it. */ output=(key^data); /* XOR the data byte once with a byte from a key and it encrypts. */ /* XOR the resultant byte again with the same byte from the same key, and it decrypts. */ /* write the result to the output file. */ fputc(output,destfile); count++; } /* close the files. */

21

fclose(mykeyfile); fclose(sourcefile); fclose(destfile); /* Delete the default key on the second time around to prevent it being reused. */ /* The key is deleted only if a key was not specified and if the default */ /* key is not new. */ if(FLAG==0) { /* use this for Windows NT */ system("erase newkey"); /* use this for FreeBSD */ /* system("rm newkey"); */ } return(0); } /* MAKEKEY() makes a key using random numbers. */ /* The random number generator is seeded from the real time clock. */ /* It is fairly random, but the nature of the pseudorandom generator is not */ /* completely random. This means that a clever programmer will */ /* eventually crack your key. */ /* Don't reuse keys, and consider investing time in a

22

better way of generating */ /* random number strings to use as a key. */ void makekey(long int size,char *name) { int byte; int count=0; FILE * filein; filein=fopen(name,"wb"); while(count&lt;size) { byte=rand() % 256; fprintf(filein,"%c",byte); count++; } fclose(filein); }[ 6]

23

4.KESIMPULAN

Kesimpulan yang didapat bahwa one time pad (OTP) :

1) System OTP tidak dapat dipecahkan,karena Barisan kunci acak + plainteks yang tidak acak = cipherteks yang seluruhnya acak. Mendekripsi cipherteks dengan beberapa kunci berbeda dapat menghasilkan plainteks yang bermakna, sehingga kriptanalis tidak punya cara untuk menentukan plainteks mana yang benar. 2) Algoritma Vernam atau One-time pad merupakaalgoritma pengenkripsian data dan informasi yang relative sederhana dan mudah digunakan namun cukup aman dalam menjamin kerahasiaan informasi atau data yang ingin dikirimkan oleh pengirim pesan kepada penerima pesan tanpa dapat diketahui oleh pihak lain. 3) Karena algoritma OTP memiliki karakteristik besar key sama dengan besar message, maka sistem ini memiliki keterbatasan akan ukuran message. 4) Keamanan algoritma pengenkripsian ini sangat bergantung pada kerahasiaan kunci rahasia ( secret key ) dan pad yang digunakan baik dalam mengenkripsi maupun mendekripsi data atau informasi, karena walaupun untuk memecahkan sandi yang dibuat sangat sulit namun apabila kunci telah ditemukan akan sangat mudah untuk memecahkan sandi tersebut. 5) Untuk menjamin kerahasiaan data dana informasi serta menjamin keamanan kunci rahasia yang digunakan maka kunci yang digenerate harus benar-benar random atau acak dan hanya dapat dipergunakan sebanyak satu kali saja.

Akan tetapi One Time Pad memiliki kelemahan, Meskipun OTP adalah algoritma yang sempurna aman, tetapi ia tidak banyak digunakan dalam praktek. Kelemahanya antara lain :

24

1) Tidak efisien, karena panjang kunci = panjang pesan. Masalah yang timbul: -penyimpanan kunci -pendistribusian kunci 2) Jika sebuah kunci telah dipergunakan maka kunci tersebut sudah tidak boleh dipergunakan kembali. Akibatnya jumlah kunci yang masih dapat dipergunakan akan semakin berkurang seiring dengan semakin seringnya penggunaan metode enkripsi ini. Penggunaan kunci yang sama lebih dari satu kali jelas akan berpengaruh buruk bagi kerahasiaan data atau informasi yang dienkripsikan. 3) pertukaran kunci yang terjadi antara pihak pengirim pesan dan penerima pesan juga merupakan titik rentan dalam metode pengenkripsian ini, karena terjadinya kebocoran kunci dapat terjadi pada saat terjadinya pertukaran informasi mengenai kunci rahasia tersebut. 4) OTP hanya dapat digunakan jika tersedia saluran komunikasi kedua yang cukup aman untuk mengirim kunci. Saluran kedua ini umumnya lambat dan mahal.

25

DAFTAR PUSTAKA

Internet:
http://searchsecurity.techtarget.com/sDefinition/0,,s id14_gci213673,00.html http://en.wikipedia.org/wiki/Cryptography http://hadiwibowo.wordpress.com/kriptografi http://docs.sun.com/source/816-6154-10/contents.htm#1053011

E-BOOK:
Cambridge.University.Press.Advances.in.Elliptic.Curve.Cryptography http://www.team509.com/download/docs/security/crypt/

Buku: Munir, Rinaldi, Diktat Kuliah IF5054 Kriptografi, Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, 2006

26

You might also like