Monday, April 28, 2008

Pindah Alamat Blog

Mulai awal April 2008, blog Bengkel Tugas Akhir telah pindah ke alamat baru yaitu
http://www.ta.kamshory.com

Saturday, August 4, 2007

Algoritma Enkripsi RC-4 Menggunakan Visual C++

Berikut ini adalah algoritma enkripsi RC-4 dengan bahasa pemrograman Visual C++. Kode ini dapat dimasukkan langsung ke dalam program Anda.

CString removeDuplicates(CString str)

{

int length = strlen(str);

for(int i = 0; i <>

for(int j = i + 1; j<>

{

if(str[i] == str[j])

{

str.SetAt(j, ' ');

}

}

return str;

}

void Crypt(unsigned char *inp, unsigned long panjangdata, CString key)

{

DWORD inplen , keylen;

key=removeDuplicates(key);

keylen=key.GetLength();

char Sbox[2000], Sbox2[2000];

unsigned long i, j, t, x;

static const CString OurUnSecuredKey = "tahir_naeem" ;

static const int OurKeyLen = _tcslen(OurUnSecuredKey);

i = j = t = x = 0;

char temp ,k;

temp ='0';

k ='0';

ZeroMemory(Sbox, sizeof(Sbox));

ZeroMemory(Sbox2, sizeof(Sbox2));

for(i = 0; i <>

{

Sbox[i]=(char)i;

}

j = 0;

if(keylen)

{

for(i = 0; i <>

{

if(j == keylen)

{

j = 0;

}

if( key.GetLength()>(j+1))

Sbox2[i]= key.GetAt(j++);

}

}

else

{

for(i = 0; i <>

{

if(j == OurKeyLen)

{

j = 0;

}

Sbox2[i]= OurUnSecuredKey.GetAt(j++);

}

}

j = 0 ;

for(i = 0; i <>

{

j = (j + (unsigned long) Sbox[i] + (unsigned long) Sbox2[i]) % 256U ;

temp = Sbox[i];

Sbox[i] =Sbox[j];

Sbox[j]= temp;

}

i = j = 0;

for(x = 0; x <>

{

i = (i + 1U) % 256U;

j = (j + (unsigned long) Sbox[i]) % 256U;

temp = Sbox[i];

Sbox[i] =Sbox[j] ;

Sbox[j]= temp;

t = ((unsigned long) Sbox[i] + (unsigned long) Sbox[j]) % 256U ;

k = Sbox[t];

inp[x] = inp[x] ^ k;

}

}

Algoritma Sandi Kunci-Simetris

Skema algoritma sandi akan disebut kunci-simetris apabila untuk setiap proses enkripsi maupun dekripsi data secara keseluruhan digunakan kunci yang sama. Skema ini berdasarkan jumlah data per proses dan alur pengolahan data didalamnya dibedakan menjadi dua kelas, yaitu block-cipher dan stream-cipher.

Block-Cipher

Block-cipher adalah skema algoritma sandi yang akan membagi-bagi teks terang yang akan dikirimkan dengan ukuran tertentu (disebut blok) dengan panjang t, dan setiap blok dienkripsi dengan menggunakan kunci yang sama. Pada umumnya, block-cipher memproses teks terang dengan blok yang relatif panjang lebih dari 64 bit, untuk mempersulit penggunaan pola-pola serangan yang ada untuk membongkar kunci. Untuk menambah kehandalan model algoritma sandi ini, dikembangkan pula beberapa tipe proses enkripsi, yaitu :

1. ECB, Electronic Code Book

2. CBC, Cipher Block Chaining

3. OFB, Output Feed Back

4. CFB, Cipher Feed Back

Stream-Cipher

Stream-cipher adalah algoritma sandi yang mengenkripsi data persatuan data, seperti bit, byte, nible atau per lima bit(saat data yang di enkripsi berupa data Boudout). Setiap mengenkripsi satu satuan data di gunakan kunci yang merupakan hasil pembangkitan dari kunci sebelum.

[sunting] Algoritma-algoritma sandi kunci-simetris

Beberapa contoh algoritma yang menggunakan kunci-simetris:

1. DES - Data Encryption Standard

2. blowfish

3. twofish

4. MARS

5. IDEA

6. 3DES - DES diaplikasikan 3 kali

7. AES - Advanced Encryption Standard, yang bernama asli rijndael

Algoritma Sandi Kunci-Asimetris

Skema ini adalah algoritma yang menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsinya. Skema ini disebut juga sebagai sistem kriptografi kunci publik karena kunci untuk enkripsi dibuat untuk diketahui oleh umum (public-key) atau dapat diketahui siapa saja, tapi untuk proses dekripsinya hanya dapat dilakukan oleh yang berwenang yang memiliki kunci rahasia untuk mendekripsinya, disebut private-key. Dapat dianalogikan seperti kotak pos yang hanya dapat dibuka oleh tukang pos yang memiliki kunci tapi setiap orang dapat memasukkan surat ke dalam kotak tersebut. Keuntungan algoritma model ini, untuk berkorespondensi secara rahasia dengan banyak pihak tidak diperlukan kunci rahasia sebanyak jumlah pihak tersebut, cukup membuat dua buah kunci, yaitu kunci publik bagi para korensponden untuk mengenkripsi pesan, dan kunci privat untuk mendekripsi pesan. Berbeda dengan skema kunci-simetris, jumlah kunci yang dibuat adalah sebanyak jumlah pihak yang diajak berkorespondensi.

Kriptografi (Cryptographi)

Kriptografi, secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita [bruce Schneier - Applied Cryptography]. Selain pengertian tersebut terdapat pula pengertian ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data [A. Menezes, P. van Oorschot and S. Vanstone - Handbook of Applied Cryptography]. Tidak semua aspek keamanan informasi ditangani oleh kriptografi.

Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi yaitu :

1. Kerahasiaan, adalah layanan yang digunakan untuk menjaga isi dari informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka/mengupas informasi yang telah disandi.

2. Integritas data, adalah berhubungan dengan penjagaan dari perubahan data secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubsitusian data lain kedalam data yang sebenarnya.

3. Autentikasi, adalah berhubungan dengan identifikasi/pengenalan, baik secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling memperkenalkan diri. Informasi yang dikirimkan melalui kanal harus diautentikasi keaslian, isi datanya, waktu pengiriman, dan lain-lain.

4. Non-repudiasi., atau nirpenyangkalan adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat.

Algoritma sandi adalah algoritma yang berfungsi untuk melakukan tujuan kriptografis. Algoritma tersebut harus memiliki kekuatan untuk melakukan (dikemukakan oleh Shannon):

a. konfusi/pembingungan (confusion), dari teks terang sehingga sulit untuk direkonstruksikan secara langsung tanpa menggunakan algoritma dekripsinya

b. difusi/peleburan (difusion), dari teks terang sehingga karakteristik dari teks terang tersebut hilang.

Sehingga dapat digunakan untuk mengamankan informasi. Pada implementasinya sebuah algoritmas sandi harus memperhatikan kualitas layanan/Quality of Service atau QoS dari keseluruhan sistem dimana dia diimplementasikan. Algoritma sandi yang handal adalah algoritma sandi yang kekuatannya terletak pada kunci, bukan pada kerahasiaan algoritma itu sendiri. Teknik dan metode untuk menguji kehandalan algoritma sandi adalah kriptanalisa.

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

Secara umum berdasarkan kesamaan kuncinya, algoritma sandi dibedakan menjadi :

1. kunci-simetris/symetric-key, sering disebut juga algoritma sandi konvensional karena umumnya diterapkan pada algoritma sandi klasik

2. kunci-asimetris/asymetric-key

Berdasarkan arah implementasi dan pembabakan jamannya dibedakan menjadi :

1. algoritma sandi klasik classic cryptography

2. algoritma sandi modern modern cryptography

Berdasarkan kerahasiaan kuncinya dibedakan menjadi :

1. algoritma sandi kunci rahasia secret-key

2. algoritma sandi kunci publik publik-key

Pada skema kunci-simetris, digunakan sebuah kunci rahasia yang sama untuk melakukan proses enkripsi dan dekripsinya. Sedangkan pada sistem kunci-asimentris digunakan sepasang kunci yang berbeda, umumnya disebut kunci publik(public key) dan kunci pribadi (private key), digunakan untuk proses enkripsi dan proses dekripsinya. Bila elemen teks terang dienkripsi dengan menggunakan kunci pribadi maka elemen teks sandi yang dihasilkannya hanya bisa didekripsikan dengan menggunakan pasangan kunci pribadinya. Begitu juga sebaliknya, jika kunci pribadi digunakan untuk proses enkripsi maka proses dekripsi harus menggunakan kunci publik pasangannya.

RSA Security

RSA Security adalah nama besar dalam dunia proteksi data online. Penemu dari inti teknologi keamanan data internet, perusahaan ini menguasai mayoritas pasar teknologi otentifikasi dan enkripsi data selama 20 tahun terakhir. Enkripsi secara bebas sering diterjemahkan sebagai salah satu metode pengacakan data, serangkaian modifikasi data asli menjadi pesan acak tanpa arti yang oleh penerima bisa dikembalikan dalam bentuk asli dengan kunci-kunci tertentu. Ilmu yang mempelajari pengacakan data disebut kriptografi. Salah produk RSA yang populer adalah key banking untuk transaksi keuangan online ribuan nasabah bank di dunia.

Ada tiga figur di balik lahir dan besarnya RSA, yaitu Rivest, Shamir, dan Adleman. Tiga serangkai ahli matematika inilah pendiri RSA di tahun 1977. RSA diambil sebagai gabungan dari hurup depan nama ketiga orang tersebut. Tahun 2002 lalu mereka bertiga menerima penghargaan ACM Turing Award. Ingat Alan Turing? Dia adalah penemu mesin turing yang notabene adalah cikal bakal komputer.

Profesor Ronald Lorin Rivest yang lahir di New York tahun 1947 adalah seorang kriptolog dan professor di Departemen Elektro dan Ilmu Komputer Institut Teknologi Massachuset (MIT). Rivest memperoleh gelar sarjana matematika dari universitas Yale tahun 1969, sedangkan gelar doktor diraihnya tahun 1974 dari Universitas Stanford.

Rivest adalah penemu algoritma enkripsi kunci simetris RC2, RC4, RC5 dan co-inventor RC6. RC berarti “Rivest Cipher” atau “Ron’s Code”. Rivest juga yang menyusun algoritma kriptografi MD2, MD4, dan MD5. Tahun 2006 Profesor Rivest menemukan sistem pemungutan suara ThreeBallot. Sebuah inovasi sistem pemungutan suara yang menyatukan kemampuan pemilih untuk melihat bahwa pilihannya dihitung namun privasinya juga aman. Perhatiannya pada masalah pemungutan suara yang fair sebagai wujud demokrasi membawa dirinya sebagai anggota Election Assistance Commission’s Technical Guidelines Development Committee yang membantu KPU di negeri Paman Sam menyusun petunjuk sistem pemungutan suara mandiri. Profesor Rivest juga anggota National Academy of Engineering, National Academy of Sciences, Association for Computing Machinery, International Association for Cryptographic Research, serta American Academy of Arts and Sciences.

Adi Shamir lahir 1952 di Tel Aviv, Israel. Mendapat gelar sarjana matematika dari Universitas Tel Aviv tahun 1973, kemudian M.Sc. (1975) dan Ph.D. (1977) bidang ilmu komputer dari Weizmann Institute. Tahun 1977-1980, Shamir melakukan penelitian di MIT, tempat di mana kelak bertemu dua koleganya dan membuat ’sejarah’ dunia enkripsi data.

Selain mendirikan RSA, Shamir juga menyumbang banyak inovasi dan kontribusi pada dunia kriptografi, termasuk skema Shamir secret sharing, memecahkan sistem kripto Merkle-Hellman, kriptografi visual, dan lain-lain. Di luar bidang keamanan data, Shamir juga turut andil dalam perkembengan ilmu komputer seperti menunjukan persamanan aplikasi rangkaian elektronik PSPACE dan IP (internet protocol).

Sedangkan Leonard Max Adleman yang lahir pada 31 Desember 1945 adalah profesor ilmu komputer dan biologi molekuler di Universitas Southern California. Meski lahir di California, Adleman besar di San Fransisco. Tahun 1968 merampungkan studi matematika dan meraih gelar sarjana dari Universitas California, Berkeley. Di universitas yang sama gelar doktor tahun 1976 didapatkannya.

Selain dikenal sebagai penemu enkripsi RSA, Adleman juga populer dalam bidang komputasi berbasis DNA. Dalam papernya berjudul Molecular Computation of Solutions To Combinatorial Problems tahun 1994 mendeskripsikan penggunaan DNA untuk basis sistem komputasi dalam aplikasi nyata. Dalam penelitian tersebut Adleman memecahkan masalah tujuh titik Hamiltonian Graph. Meski kelihatan sepele tetapi paper ini terkenal sebagai referensi ilmiah pertama yang sukses menggunakan DNA untuk menghitung algoritma. Komputasi DNA telah lama dilihat potensial untuk memecahkan masalah-masalah kompleks lain di dunia bisnis nyata.

Menurut Fred Cohen dalam paper ilmiahnya berjudul Experiments with Computer Viruses tahun 1984, Adleman sebagai orang yang pertama mendefiniskan kata “virus komputer”. Selain itu, Adleman adalah juga konsultan perhitungan matematis untuk film “Sneakers”.

Sumber : Pikiran Rakyat (24 Mei 2007)
http://www.komputasi.lipi.go.id/utama.cgi?artikel&1181218416&1
http://en.wikipedia.org/wiki/RSA
http://en.wikipedia.org/wiki/Ron_Rivest
http://en.wikipedia.org/wiki/Adi_Shamir
http://en.wikipedia.org/wiki/Leonard_Adleman