Copy Link
Add to Bookmark
Report
Echo Magazine Issue 19 Phile 0x005
______ _ _____
___ __ _(_) __|___ __| |___|____ |
/ _ \ / _` | |\ \ / _ \ / _` |__ \ |_ |
\__ | | | | |_\ \ (_) | | | |__) |__| |
|___/|_| |_|_|____\___/|_| |_|___/_____|
[ echo|zine, volume 6 issue 19 ]
cryptography : Simple a-symetric algorithm
Brought To You By : x-diamond1
email: kim_diamond1/et/yahoo/dot/com
======= Pengantar ---|
Aku kali ini akan mencoba sharing pengetahuan tentang kriptografi, mohon maaf
bila pengetahuan yang aku bagi begitu dangkal
=== I. Sekilas tentang kriptografi
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=<STDIN>);
print "Kunci Enkrip : ";
chomp($ke=<STDIN>);
@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=<STDIN>);
print "Kunci Dekrip : ";
chomp($kd=<STDIN>);
@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
*- $e19dot005dottxt - echo|zine - issue#19 - 080808 -*