Amanda lilda-08053111001
Transcript of Amanda lilda-08053111001
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 datadata tersebut di enksipsi dan deskripsi
enkripsi dan dekripsi pada umumnya membutuhkan penggunaan sejumlah informasi rahasia
disebut sebagai kunci Untuk beberapa mekanisme enkripsikunci 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 (secretprivate
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
1
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
kriptografiditambah seluruh kemungkinan plaintext ciphertext dan kunci-kuncinya disebut
kriptosistem (cryptosystem atau cryptographic system) Proses tersebut dapat digambarkan secara
sederhana sebagai berikut
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
2
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)
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
3
ENKRIPSI
DESKRIPSI
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 Krsquo
dan Prsquo 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
4
Cripanalyst
Sumber kunci
tujuandeskriptorenkriptorSumber pesan
Saluran yang aman
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
5
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 enkripsifungsi 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)
6
Kemudahan implementasi Merupakan kesulitan dalam merealisasikan primitif pada
prakteknyaDapat 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
7
digunakan kembaliPanjang stream karakter kunci sama dengan panjang pesanSatu-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 enkripsiSetelah 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 ndash ki ) mod 26
Contoh
plainteks ONETIMEPAD
kunci TBFRGFARFM
Misalkan A = 0 B = 1 hellip Z = 25
8
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 benarMeskipun one time pads 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 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 lsquotidak mungkinrsquo 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
9
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
banyaknyaMengirimkan 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
jikaoperator 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 seseorangpesan 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 1 2 3 4 5 6 7
00 NUL SOH STX ETX EOT ENQ ACK BEL
01 BS HT LF VT FF CR SO SI
02 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
03 CAN EM SUB ESC FS GS RS US
04 Blank ldquo $ amp lsquo
05 ( ) + -
06 0 1 2 3 4 5 6 7
07 8 9 lt = gt
10 A B C D E F G
11 H I J K L M N O
12 P Q R S T U V W
13 X Y Z [ ] ^ _
14 ` a b c d e f G
15 h I j k l m n O
16 p q r s t u v W
17 x y z | ~ 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 1048774 0000 0000 00011048774001
I 1048774 0000 0000 01011048774005
R 1048774 0000 0011 01011048774035
M 1048774 0000 0011 01001048774034
A 1048774 0000 0001 00001048774010
N 1048774 0000 0001 01111048774017
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
Terenkriptidak 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
CRYPTICC V 10 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 502
Tested on Windows NT 40 and FreeBSD 225 (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
(smallrepeating keys are for whimps)
You need to be careful what you use as a key If you
dont 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
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
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
kriptografiditambah seluruh kemungkinan plaintext ciphertext dan kunci-kuncinya disebut
kriptosistem (cryptosystem atau cryptographic system) Proses tersebut dapat digambarkan secara
sederhana sebagai berikut
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
2
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)
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
3
ENKRIPSI
DESKRIPSI
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 Krsquo
dan Prsquo 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
4
Cripanalyst
Sumber kunci
tujuandeskriptorenkriptorSumber pesan
Saluran yang aman
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
5
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 enkripsifungsi 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)
6
Kemudahan implementasi Merupakan kesulitan dalam merealisasikan primitif pada
prakteknyaDapat 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
7
digunakan kembaliPanjang stream karakter kunci sama dengan panjang pesanSatu-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 enkripsiSetelah 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 ndash ki ) mod 26
Contoh
plainteks ONETIMEPAD
kunci TBFRGFARFM
Misalkan A = 0 B = 1 hellip Z = 25
8
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 benarMeskipun one time pads 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 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 lsquotidak mungkinrsquo 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
9
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
banyaknyaMengirimkan 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
jikaoperator 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 seseorangpesan 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 1 2 3 4 5 6 7
00 NUL SOH STX ETX EOT ENQ ACK BEL
01 BS HT LF VT FF CR SO SI
02 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
03 CAN EM SUB ESC FS GS RS US
04 Blank ldquo $ amp lsquo
05 ( ) + -
06 0 1 2 3 4 5 6 7
07 8 9 lt = gt
10 A B C D E F G
11 H I J K L M N O
12 P Q R S T U V W
13 X Y Z [ ] ^ _
14 ` a b c d e f G
15 h I j k l m n O
16 p q r s t u v W
17 x y z | ~ 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 1048774 0000 0000 00011048774001
I 1048774 0000 0000 01011048774005
R 1048774 0000 0011 01011048774035
M 1048774 0000 0011 01001048774034
A 1048774 0000 0001 00001048774010
N 1048774 0000 0001 01111048774017
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
Terenkriptidak 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
CRYPTICC V 10 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 502
Tested on Windows NT 40 and FreeBSD 225 (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
(smallrepeating keys are for whimps)
You need to be careful what you use as a key If you
dont 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
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
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)
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
3
ENKRIPSI
DESKRIPSI
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 Krsquo
dan Prsquo 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
4
Cripanalyst
Sumber kunci
tujuandeskriptorenkriptorSumber pesan
Saluran yang aman
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
5
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 enkripsifungsi 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)
6
Kemudahan implementasi Merupakan kesulitan dalam merealisasikan primitif pada
prakteknyaDapat 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
7
digunakan kembaliPanjang stream karakter kunci sama dengan panjang pesanSatu-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 enkripsiSetelah 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 ndash ki ) mod 26
Contoh
plainteks ONETIMEPAD
kunci TBFRGFARFM
Misalkan A = 0 B = 1 hellip Z = 25
8
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 benarMeskipun one time pads 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 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 lsquotidak mungkinrsquo 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
9
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
banyaknyaMengirimkan 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
jikaoperator 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 seseorangpesan 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 1 2 3 4 5 6 7
00 NUL SOH STX ETX EOT ENQ ACK BEL
01 BS HT LF VT FF CR SO SI
02 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
03 CAN EM SUB ESC FS GS RS US
04 Blank ldquo $ amp lsquo
05 ( ) + -
06 0 1 2 3 4 5 6 7
07 8 9 lt = gt
10 A B C D E F G
11 H I J K L M N O
12 P Q R S T U V W
13 X Y Z [ ] ^ _
14 ` a b c d e f G
15 h I j k l m n O
16 p q r s t u v W
17 x y z | ~ 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 1048774 0000 0000 00011048774001
I 1048774 0000 0000 01011048774005
R 1048774 0000 0011 01011048774035
M 1048774 0000 0011 01001048774034
A 1048774 0000 0001 00001048774010
N 1048774 0000 0001 01111048774017
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
Terenkriptidak 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
CRYPTICC V 10 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 502
Tested on Windows NT 40 and FreeBSD 225 (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
(smallrepeating keys are for whimps)
You need to be careful what you use as a key If you
dont 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
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
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 Krsquo
dan Prsquo 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
4
Cripanalyst
Sumber kunci
tujuandeskriptorenkriptorSumber pesan
Saluran yang aman
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
5
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 enkripsifungsi 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)
6
Kemudahan implementasi Merupakan kesulitan dalam merealisasikan primitif pada
prakteknyaDapat 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
7
digunakan kembaliPanjang stream karakter kunci sama dengan panjang pesanSatu-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 enkripsiSetelah 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 ndash ki ) mod 26
Contoh
plainteks ONETIMEPAD
kunci TBFRGFARFM
Misalkan A = 0 B = 1 hellip Z = 25
8
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 benarMeskipun one time pads 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 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 lsquotidak mungkinrsquo 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
9
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
banyaknyaMengirimkan 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
jikaoperator 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 seseorangpesan 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 1 2 3 4 5 6 7
00 NUL SOH STX ETX EOT ENQ ACK BEL
01 BS HT LF VT FF CR SO SI
02 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
03 CAN EM SUB ESC FS GS RS US
04 Blank ldquo $ amp lsquo
05 ( ) + -
06 0 1 2 3 4 5 6 7
07 8 9 lt = gt
10 A B C D E F G
11 H I J K L M N O
12 P Q R S T U V W
13 X Y Z [ ] ^ _
14 ` a b c d e f G
15 h I j k l m n O
16 p q r s t u v W
17 x y z | ~ 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 1048774 0000 0000 00011048774001
I 1048774 0000 0000 01011048774005
R 1048774 0000 0011 01011048774035
M 1048774 0000 0011 01001048774034
A 1048774 0000 0001 00001048774010
N 1048774 0000 0001 01111048774017
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
Terenkriptidak 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
CRYPTICC V 10 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 502
Tested on Windows NT 40 and FreeBSD 225 (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
(smallrepeating keys are for whimps)
You need to be careful what you use as a key If you
dont 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
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
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
5
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 enkripsifungsi 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)
6
Kemudahan implementasi Merupakan kesulitan dalam merealisasikan primitif pada
prakteknyaDapat 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
7
digunakan kembaliPanjang stream karakter kunci sama dengan panjang pesanSatu-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 enkripsiSetelah 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 ndash ki ) mod 26
Contoh
plainteks ONETIMEPAD
kunci TBFRGFARFM
Misalkan A = 0 B = 1 hellip Z = 25
8
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 benarMeskipun one time pads 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 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 lsquotidak mungkinrsquo 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
9
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
banyaknyaMengirimkan 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
jikaoperator 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 seseorangpesan 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 1 2 3 4 5 6 7
00 NUL SOH STX ETX EOT ENQ ACK BEL
01 BS HT LF VT FF CR SO SI
02 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
03 CAN EM SUB ESC FS GS RS US
04 Blank ldquo $ amp lsquo
05 ( ) + -
06 0 1 2 3 4 5 6 7
07 8 9 lt = gt
10 A B C D E F G
11 H I J K L M N O
12 P Q R S T U V W
13 X Y Z [ ] ^ _
14 ` a b c d e f G
15 h I j k l m n O
16 p q r s t u v W
17 x y z | ~ 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 1048774 0000 0000 00011048774001
I 1048774 0000 0000 01011048774005
R 1048774 0000 0011 01011048774035
M 1048774 0000 0011 01001048774034
A 1048774 0000 0001 00001048774010
N 1048774 0000 0001 01111048774017
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
Terenkriptidak 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
CRYPTICC V 10 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 502
Tested on Windows NT 40 and FreeBSD 225 (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
(smallrepeating keys are for whimps)
You need to be careful what you use as a key If you
dont 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
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
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 enkripsifungsi 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)
6
Kemudahan implementasi Merupakan kesulitan dalam merealisasikan primitif pada
prakteknyaDapat 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
7
digunakan kembaliPanjang stream karakter kunci sama dengan panjang pesanSatu-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 enkripsiSetelah 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 ndash ki ) mod 26
Contoh
plainteks ONETIMEPAD
kunci TBFRGFARFM
Misalkan A = 0 B = 1 hellip Z = 25
8
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 benarMeskipun one time pads 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 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 lsquotidak mungkinrsquo 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
9
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
banyaknyaMengirimkan 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
jikaoperator 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 seseorangpesan 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 1 2 3 4 5 6 7
00 NUL SOH STX ETX EOT ENQ ACK BEL
01 BS HT LF VT FF CR SO SI
02 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
03 CAN EM SUB ESC FS GS RS US
04 Blank ldquo $ amp lsquo
05 ( ) + -
06 0 1 2 3 4 5 6 7
07 8 9 lt = gt
10 A B C D E F G
11 H I J K L M N O
12 P Q R S T U V W
13 X Y Z [ ] ^ _
14 ` a b c d e f G
15 h I j k l m n O
16 p q r s t u v W
17 x y z | ~ 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 1048774 0000 0000 00011048774001
I 1048774 0000 0000 01011048774005
R 1048774 0000 0011 01011048774035
M 1048774 0000 0011 01001048774034
A 1048774 0000 0001 00001048774010
N 1048774 0000 0001 01111048774017
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
Terenkriptidak 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
CRYPTICC V 10 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 502
Tested on Windows NT 40 and FreeBSD 225 (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
(smallrepeating keys are for whimps)
You need to be careful what you use as a key If you
dont 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
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
Kemudahan implementasi Merupakan kesulitan dalam merealisasikan primitif pada
prakteknyaDapat 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
7
digunakan kembaliPanjang stream karakter kunci sama dengan panjang pesanSatu-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 enkripsiSetelah 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 ndash ki ) mod 26
Contoh
plainteks ONETIMEPAD
kunci TBFRGFARFM
Misalkan A = 0 B = 1 hellip Z = 25
8
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 benarMeskipun one time pads 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 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 lsquotidak mungkinrsquo 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
9
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
banyaknyaMengirimkan 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
jikaoperator 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 seseorangpesan 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 1 2 3 4 5 6 7
00 NUL SOH STX ETX EOT ENQ ACK BEL
01 BS HT LF VT FF CR SO SI
02 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
03 CAN EM SUB ESC FS GS RS US
04 Blank ldquo $ amp lsquo
05 ( ) + -
06 0 1 2 3 4 5 6 7
07 8 9 lt = gt
10 A B C D E F G
11 H I J K L M N O
12 P Q R S T U V W
13 X Y Z [ ] ^ _
14 ` a b c d e f G
15 h I j k l m n O
16 p q r s t u v W
17 x y z | ~ 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 1048774 0000 0000 00011048774001
I 1048774 0000 0000 01011048774005
R 1048774 0000 0011 01011048774035
M 1048774 0000 0011 01001048774034
A 1048774 0000 0001 00001048774010
N 1048774 0000 0001 01111048774017
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
Terenkriptidak 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
CRYPTICC V 10 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 502
Tested on Windows NT 40 and FreeBSD 225 (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
(smallrepeating keys are for whimps)
You need to be careful what you use as a key If you
dont 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
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
digunakan kembaliPanjang stream karakter kunci sama dengan panjang pesanSatu-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 enkripsiSetelah 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 ndash ki ) mod 26
Contoh
plainteks ONETIMEPAD
kunci TBFRGFARFM
Misalkan A = 0 B = 1 hellip Z = 25
8
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 benarMeskipun one time pads 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 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 lsquotidak mungkinrsquo 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
9
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
banyaknyaMengirimkan 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
jikaoperator 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 seseorangpesan 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 1 2 3 4 5 6 7
00 NUL SOH STX ETX EOT ENQ ACK BEL
01 BS HT LF VT FF CR SO SI
02 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
03 CAN EM SUB ESC FS GS RS US
04 Blank ldquo $ amp lsquo
05 ( ) + -
06 0 1 2 3 4 5 6 7
07 8 9 lt = gt
10 A B C D E F G
11 H I J K L M N O
12 P Q R S T U V W
13 X Y Z [ ] ^ _
14 ` a b c d e f G
15 h I j k l m n O
16 p q r s t u v W
17 x y z | ~ 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 1048774 0000 0000 00011048774001
I 1048774 0000 0000 01011048774005
R 1048774 0000 0011 01011048774035
M 1048774 0000 0011 01001048774034
A 1048774 0000 0001 00001048774010
N 1048774 0000 0001 01111048774017
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
Terenkriptidak 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
CRYPTICC V 10 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 502
Tested on Windows NT 40 and FreeBSD 225 (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
(smallrepeating keys are for whimps)
You need to be careful what you use as a key If you
dont 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
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
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 benarMeskipun one time pads 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 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 lsquotidak mungkinrsquo 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
9
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
banyaknyaMengirimkan 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
jikaoperator 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 seseorangpesan 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 1 2 3 4 5 6 7
00 NUL SOH STX ETX EOT ENQ ACK BEL
01 BS HT LF VT FF CR SO SI
02 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
03 CAN EM SUB ESC FS GS RS US
04 Blank ldquo $ amp lsquo
05 ( ) + -
06 0 1 2 3 4 5 6 7
07 8 9 lt = gt
10 A B C D E F G
11 H I J K L M N O
12 P Q R S T U V W
13 X Y Z [ ] ^ _
14 ` a b c d e f G
15 h I j k l m n O
16 p q r s t u v W
17 x y z | ~ 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 1048774 0000 0000 00011048774001
I 1048774 0000 0000 01011048774005
R 1048774 0000 0011 01011048774035
M 1048774 0000 0011 01001048774034
A 1048774 0000 0001 00001048774010
N 1048774 0000 0001 01111048774017
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
Terenkriptidak 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
CRYPTICC V 10 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 502
Tested on Windows NT 40 and FreeBSD 225 (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
(smallrepeating keys are for whimps)
You need to be careful what you use as a key If you
dont 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
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
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
banyaknyaMengirimkan 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
jikaoperator 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 seseorangpesan 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 1 2 3 4 5 6 7
00 NUL SOH STX ETX EOT ENQ ACK BEL
01 BS HT LF VT FF CR SO SI
02 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
03 CAN EM SUB ESC FS GS RS US
04 Blank ldquo $ amp lsquo
05 ( ) + -
06 0 1 2 3 4 5 6 7
07 8 9 lt = gt
10 A B C D E F G
11 H I J K L M N O
12 P Q R S T U V W
13 X Y Z [ ] ^ _
14 ` a b c d e f G
15 h I j k l m n O
16 p q r s t u v W
17 x y z | ~ 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 1048774 0000 0000 00011048774001
I 1048774 0000 0000 01011048774005
R 1048774 0000 0011 01011048774035
M 1048774 0000 0011 01001048774034
A 1048774 0000 0001 00001048774010
N 1048774 0000 0001 01111048774017
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
Terenkriptidak 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
CRYPTICC V 10 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 502
Tested on Windows NT 40 and FreeBSD 225 (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
(smallrepeating keys are for whimps)
You need to be careful what you use as a key If you
dont 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
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
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
jikaoperator 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 seseorangpesan 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 1 2 3 4 5 6 7
00 NUL SOH STX ETX EOT ENQ ACK BEL
01 BS HT LF VT FF CR SO SI
02 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
03 CAN EM SUB ESC FS GS RS US
04 Blank ldquo $ amp lsquo
05 ( ) + -
06 0 1 2 3 4 5 6 7
07 8 9 lt = gt
10 A B C D E F G
11 H I J K L M N O
12 P Q R S T U V W
13 X Y Z [ ] ^ _
14 ` a b c d e f G
15 h I j k l m n O
16 p q r s t u v W
17 x y z | ~ 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 1048774 0000 0000 00011048774001
I 1048774 0000 0000 01011048774005
R 1048774 0000 0011 01011048774035
M 1048774 0000 0011 01001048774034
A 1048774 0000 0001 00001048774010
N 1048774 0000 0001 01111048774017
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
Terenkriptidak 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
CRYPTICC V 10 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 502
Tested on Windows NT 40 and FreeBSD 225 (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
(smallrepeating keys are for whimps)
You need to be careful what you use as a key If you
dont 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
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
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 seseorangpesan 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 1 2 3 4 5 6 7
00 NUL SOH STX ETX EOT ENQ ACK BEL
01 BS HT LF VT FF CR SO SI
02 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
03 CAN EM SUB ESC FS GS RS US
04 Blank ldquo $ amp lsquo
05 ( ) + -
06 0 1 2 3 4 5 6 7
07 8 9 lt = gt
10 A B C D E F G
11 H I J K L M N O
12 P Q R S T U V W
13 X Y Z [ ] ^ _
14 ` a b c d e f G
15 h I j k l m n O
16 p q r s t u v W
17 x y z | ~ 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 1048774 0000 0000 00011048774001
I 1048774 0000 0000 01011048774005
R 1048774 0000 0011 01011048774035
M 1048774 0000 0011 01001048774034
A 1048774 0000 0001 00001048774010
N 1048774 0000 0001 01111048774017
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
Terenkriptidak 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
CRYPTICC V 10 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 502
Tested on Windows NT 40 and FreeBSD 225 (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
(smallrepeating keys are for whimps)
You need to be careful what you use as a key If you
dont 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
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
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 seseorangpesan 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 1 2 3 4 5 6 7
00 NUL SOH STX ETX EOT ENQ ACK BEL
01 BS HT LF VT FF CR SO SI
02 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
03 CAN EM SUB ESC FS GS RS US
04 Blank ldquo $ amp lsquo
05 ( ) + -
06 0 1 2 3 4 5 6 7
07 8 9 lt = gt
10 A B C D E F G
11 H I J K L M N O
12 P Q R S T U V W
13 X Y Z [ ] ^ _
14 ` a b c d e f G
15 h I j k l m n O
16 p q r s t u v W
17 x y z | ~ 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 1048774 0000 0000 00011048774001
I 1048774 0000 0000 01011048774005
R 1048774 0000 0011 01011048774035
M 1048774 0000 0011 01001048774034
A 1048774 0000 0001 00001048774010
N 1048774 0000 0001 01111048774017
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
Terenkriptidak 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
CRYPTICC V 10 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 502
Tested on Windows NT 40 and FreeBSD 225 (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
(smallrepeating keys are for whimps)
You need to be careful what you use as a key If you
dont 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
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
a Ubah menjadi kode ASCII dan biner
dibawah ini adalah table kode ASCII yang digunakan
Tabel 2 ASCII
0 1 2 3 4 5 6 7
00 NUL SOH STX ETX EOT ENQ ACK BEL
01 BS HT LF VT FF CR SO SI
02 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
03 CAN EM SUB ESC FS GS RS US
04 Blank ldquo $ amp lsquo
05 ( ) + -
06 0 1 2 3 4 5 6 7
07 8 9 lt = gt
10 A B C D E F G
11 H I J K L M N O
12 P Q R S T U V W
13 X Y Z [ ] ^ _
14 ` a b c d e f G
15 h I j k l m n O
16 p q r s t u v W
17 x y z | ~ 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 1048774 0000 0000 00011048774001
I 1048774 0000 0000 01011048774005
R 1048774 0000 0011 01011048774035
M 1048774 0000 0011 01001048774034
A 1048774 0000 0001 00001048774010
N 1048774 0000 0001 01111048774017
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
Terenkriptidak 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
CRYPTICC V 10 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 502
Tested on Windows NT 40 and FreeBSD 225 (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
(smallrepeating keys are for whimps)
You need to be careful what you use as a key If you
dont 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
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
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 1048774 0000 0000 00011048774001
I 1048774 0000 0000 01011048774005
R 1048774 0000 0011 01011048774035
M 1048774 0000 0011 01001048774034
A 1048774 0000 0001 00001048774010
N 1048774 0000 0001 01111048774017
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
Terenkriptidak 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
CRYPTICC V 10 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 502
Tested on Windows NT 40 and FreeBSD 225 (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
(smallrepeating keys are for whimps)
You need to be careful what you use as a key If you
dont 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
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
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
Terenkriptidak 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
CRYPTICC V 10 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 502
Tested on Windows NT 40 and FreeBSD 225 (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
(smallrepeating keys are for whimps)
You need to be careful what you use as a key If you
dont 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
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
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
Terenkriptidak 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
CRYPTICC V 10 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 502
Tested on Windows NT 40 and FreeBSD 225 (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
(smallrepeating keys are for whimps)
You need to be careful what you use as a key If you
dont 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
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
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
CRYPTICC V 10 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 502
Tested on Windows NT 40 and FreeBSD 225 (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
(smallrepeating keys are for whimps)
You need to be careful what you use as a key If you
dont 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
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
editor
The encrypted output is binary You can use cryptic to
encrypt any file
includeltstdiohgt
includeltstdlibhgt
includelttimehgt
Use this include with GCC on FreeBSD machines
includeltusrincludesysstathgt
Use this include instead of the one above for Windows NT
includeltsysstathgt
void makekey(long intchar )
int main(int argcchar 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(argclt3)
printf(CRYPTIC Coyright 1998 by Glen E
Gardner Jrn)
19
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
printf(USE CRYPTIC
ltDESTINATIONgt ltKEYgtn)
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(argcgt4)printf(Too many arguments)return(1)
Seed the random number generator for later use
srand((unsigned) time(ampt))
get the size of the source file
if ((sourcefile = fopen(argv[1] rb))== NULL)
printf(Cant open source filen)
return(4)
fflush(sourcefile)
fstat(fileno(sourcefile) ampstatbuf)
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(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
if ((mykeyfile = fopen(argv[3] r))== NULL)
FLAG=1
printf(Cant open key filen)
printf(Making a new keyn)
makekey(statbufst_sizenewkey)
elsefclose(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 encryptdecrypt the source file
while (count lt (statbufst_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(outputdestfile)
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
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
Dont 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 sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
better way of generating
random number strings to use as a key
void makekey(long int sizechar name)
int byte
int count=0
FILE filein
filein=fopen(namewb)
while(countampltsize)
byte=rand() 256
fprintf(fileincbyte)
count++
fclose(filein)
[ 6]
23
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
4KESIMPULAN
Kesimpulan yang didapat bahwa one time pad (OTP)
1) System OTP tidak dapat dipecahkankarena
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
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
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-
DAFTAR PUSTAKA
Internet
httpsearchsecuritytechtargetcomsDefinition0s id14_gci21367300html
httpenwikipediaorgwikiCryptography
httphadiwibowowordpresscomkriptografi
httpdocssuncomsource816-6154-10contentshtm1053011
E-BOOK
CambridgeUniversityPressAdvancesinEllipticCurveCryptography
httpwwwteam509comdownloaddocssecuritycrypt
Buku
Munir Rinaldi Diktat Kuliah IF5054 Kriptografi Sekolah Teknik Elektro dan Informatika Institut
Teknologi Bandung 2006
26
- Taksonomi Primitif-primitif Kriptografi
- 2 LANDASAN TEORI
- Gambar contoh one time pad
-