cryptography : Simple a-symetric algorithm


Secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita ilmu yang mempelajari teknik matematika yang berhubungan dengan aspek keamanan informasi seperti : Kerahasiaan data, keabsahan data, integritas data, autentikasi. Untuk pengertian tersebut teman-teman bisa melihat detailnya di wikipedia…:P karena aku ambil bahannya dari situ.

=== II. Algoritma Sandi

Nah untuk melakukan tujuan kriptografi tersebut digunakanlah algoritma sandi,
semakin kuat algoritma sandi yang digunakan maka kriptanalis/code
breaker(pemecah sandi) tersebut akan semakin sulit. Dasar matematis yang
mendasari proses enkripsi dan dekripsi adalah relasi antara dua himpunan yaitu
yang berisi elemen teks terang /plaintext dan yang berisi elemen teks
sandi/ciphertext. Enkripsi dan dekripsi merupakan fungsi transformasi antara
himpunan-himpunan tersebut. Apabila elemen-elemen teks terang dinotasikan
dengan P, elemen-elemen teks sandi dinotasikan dengan C, sedang untuk proses
enkripsi dinotasikan dengan E, dekripsi dengan notasi D.

Enkripsi : E(P) = C
Dekripsi : D(C) = P atau D(E(P)) = P

untuk mempertegas : Enkripsi adalah proses menyandi/merubah plain teks menjadi
cipher teks Dekripsi adalah proses membuka sandi/merubah cipher teks menjadi
plain teks

Berdasarkan kunci yang digunakan untuk enkripsi dan dekripsi, maka algoritma
sandi dibagi menjadi dua macam :

1. simetrik ==> kunci untuk enkripsi dan dekripsi adalah sama, contoh :
stream cipher, blok cipher

2. a-simetrik ==> kunci untuk enkripsi dan dekripsi adalah berbeda,
contoh : RSA, ELGAMAL, dll

======= Fokus a-simetrik —|

Tadi sudah aku jelaskan sedikit tentang algoritma sandi, sekarang aku mau
fokuskan ke dalam algoritma sandi a-simetrik. Salah satu ilmu matematik yang
mendukung algoritma a-simetrik adalah number theory (teori bilangan), number
theory ini sangat menarik, aku menghabiskan waktu 2 semester untuk
mempelajarinya. Mari kita mulai sedikit number theory

#konsep inverse modular

a*b mod N = 1

jika a adalah suatu bilangan integer dikalikan dengan bilangan integer lainnya
misalnya b, kemudian dimodularkan dengan integer N menghasilkan nilai 1, maka b
adalah inverse dari a atau a adalah inverse dari b.

BINGUNG…???? :P

aku berikan contoh :

a=2; b=6; N=11;

maka (2*6) mod 11
= 12 mod 11
= 1

artinya 6 adalah adalah inverse dari 2, atau 2 adalah inverse dari 6

======= Implementasi —|

Dari konsep inverse modular tadi, aku membuat algoritma sandi a-simetrik
sederhana bernama kardel-a. Konsep algoritmanya seperti berikut :

-pilih dua buah bilangan a dan b, sedemikian hingga a dan b memenuhi konsep
inverse modular
-bilangan a adalah kunci enkripsi
-bilangan b adalah kunci dekripsi

rumus algoritma kardel-a==> enkripsi : (P)*a mod N = C
dekripsi : (C)*b mod N = P

contoh implementasi :

a=3; #sebagai kunci enkripsi
b=171; #sebagai kunci dekripsi
N=256;

———– Proses Enkripsi ——————————

Plain teks : “xdiamond1″ < == tanpa tanda kutip proses : – ubah setiap huruf menjadi bilangan desimal ascii x = 120 d = 100 i = 105 a = 97 m = 109 o = 111 n = 110 d = 100 1 = 49 – enkripsi ==> (120)*3 mod 256 = 104
(100)*3 mod 256 = 44
. . .
. . .
. . .
(49)*3 mod 256 = 147

- ubah bilangan hasil enkripsi menjadi karakter

Cipher teks nya adalah : “h,;#GMJ,ô” < ==tanpa tanda kutip..

———— Proses Enkripsi Selesai ———————

———— Proses Dekripsi —————————–

cipher teks : “h,;#GMJ,ô” <==tanpa tanda kutip proses : – ubah setiap huruf menjadi bilangan desimal ascii h = 104 , = 44 ; = 59 # = 35 G = 71 M = 77 J = 74 , = 44 ô = 147 – dekripsi ==> (104)*171 mod 256 = 120
(44)*171 mod 256 = 100
. . .
. . .
. . .
(147)*171 mod 256 = 49

- ubah bilangan hasil dekripsi menjadi karakter

Plain teksnya adalah : xdiamond1

———– Proses Dekripsi Selesai ———————-

======= Source Code Program —|

aku juga membuat programnya menggunakan perl, mungkin rekan-rekan mau
mencobanya….:P

———— enkripsi.pl ———————————
#!/usr/bin/perl -w
#mode enkripsi
#by xdiamond1

print “\nPlain teks : “;
chomp($plain=);
print “Kunci Enkrip : “;
chomp($ke=);
@word=split(“”,$plain);
$jml=scalar(@word);
&enkrip;

sub enkrip
{
for($i=0; $i< $jml; $i++)
{
$konv1[$i]=ord($word[$i]);
$pro[$i]=($konv1[$i]*$ke)%256;
$konv2[$i]=chr($pro[$i]);
}
$gab=join(“”,@konv2);
print “Cipher teks : $gab\n”;
}
————- enkripsi.pl ———————————-

————- dekripsi.pl ———————————-
#!/usr/bin/perl -w
#mode dekripsi
#by xdiamond1

print “\nCipher teks : “;
chomp($plain=);
print “Kunci Dekrip : “;
chomp($kd=);
@word=split(“”,$plain);
$jml=scalar(@word);
&dekrip;

sub dekrip
{
for($i=0; $i< $jml; $i++)
{
$konv1[$i]=ord($word[$i]);
$pro[$i]=($konv1[$i]*$kd)%256;
$konv2[$i]=chr($pro[$i]);
}
$gab=join(“”,@konv2);
print “Plain teks : $gab\n”;
}
———— dekripsi.pl ———————————–

======= Penutup —|

ho..ho..ho…dah selesai, aku rasa tulisanku kali ini dah cukup
semoga rekan-rekan tertarik dengan kriptografi dan mau mengembangkannya,
sekali lagi aku mohon maaf klo pengetahuan yang aku share ini sangat jauh dari sempurna..

======= Greetz —|

[1] Allah, tuhan penciptaku
[2] Ayah&ibu, lambang, lian, daffa
[3] my love Susi
[3] y3dips, dan echo staff lainnya
[4] freak ‘abe’ einstein
[5] readyforuse20
[6] ethan0ir
[7] sigit2003
[8] dan penghuni LKTI lainnya

======= Referensi —|

[1] http://id.wikipedia.org/wiki/Kriptografi
[2] cryptanalysis number theory
[3] kreasiku sendiri

Categories: Share

Leave a Reply

Comen Artikel Tip&Trik Cerita Software Movie Pemprograman Resensi dan Tutorial.

News


gambling