Friday, October 5, 2012

MANFAAT DATABASE

A.   Pengertian Database
Istilah “database” berawal dari ilmu komputer. Meskipun kemudian artinya semakin luas, memasukkan hal-hal di luar bidang elektronika, artikel ini mengenai database komputer. Catatan yang mirip dengan database sebenarnya sudah ada sebelum revolusi industri yaitu dalam bentuk buku besar, kuitansi dan kumpulan data yang berhubungan dengan bisnis.
Database (basis data) adalah kumpulan file-file yang mempunyai kaitan antara satu file dengan file yang lain sehingga membentuk data untuk menginformasikan satu perusahaan dan instansi. Bila terdapat file yang tidak dapat dipadukan atau dihubungkan dengan file yang lainnya, berarti file tersebut bukanlah kelompok dari satu database, melainkan membentuk satu database sendiri. Database juga merupakan landasan bagi pembuatan dan pengembangan program aplikasi. Oleh sebab itu, database harus dibuat sedemikian rupa sehingga pembuatan program lebih mudah dan cepat.
Database merupakan salah satu komponen yang penting dalam sistem informasi, karena merupakan basis dalam menyediakan informasi bagi para pemakai. Databse terdiri dari data yang akan digunakan atau diperuntukkan terhadap banyak user, dari masing-masing user akan menggunakan data tersebut sesuai dengan tugas dan fungsinya.

Beberapa Definisi tentang Database :
1.      Menurut Gordon C. Everest :
Database adalah koleksi atau kumpulan data yang mekanis, terbagi / shared, terdefinisi secara formal dan dikontrol terpusat pada organisasi.
2.      Menurut C.J. Date :
Database adalah koleksi “data operasional” yang tersimpan dan dipakai oleh sistem aplikasi dari suatu organisasi.
·        Data input adalah data yang masuk dari luar sistem
·        Data output adalah data yang dihasilkan sistem
·        Data operasional adalah data yang tersimpan pada sistem
3.      Menurut Toni Fabbri :
Database adalah sebuah sistem file-file yang terintegrasi yang mempunyai minimal primary key untuk pengulangan data.
4.      Menurut S. Attre :
Database adalah koleksi data-data yang saling berhubungan mengenai suatu organisasi / enterprise dengan macam-macam pemakaiannya.

Definisi Dasar Struktur Database :
·        Data: Sekumpulan fakta mengenai objek tertentu, orang dan lain-lain yang dinyatakan dengan angka, huruf, gambar, film, suara dan sebagainya yang relevan dan belum mempunyai arti.
·        Informasi: Hasil pengolahan data yang konkrit dan sudah mempunyai arti untuk mencapai suatu tujuan tertentu.
·        Tabel: Merupakan hal yang paling mendasar dalam hal penyimpanan data yang terdiri dari field dan record.
·        Field (kolom): Merupakan elemen dari tabel yang berisikan informasi tertentu yang spesifik tentang subjudul tabel pada sebuah item data.
Syarat-syarat pembentukan Field Name pada tabel:
a)      Harus Unik atau Spesifik
b)      Boleh disingkat
c)      Pemisah sebagai pengganti spasi dalam pembentuk field adalah tanda lambang "_"
Contoh: Kode Barang menjadi KdBarang, KodeBrg, Kd_Brg, Kd_Barang.
·        Record (baris): Sekumpulan data yang saling berkaitan tentang sebuah subjek tertentu, misalnya data seorang siswa akan disimpan dalam record yang terdiri dari beberapa kolom / field.

Sifat-sifat Database :
·        Internal:  Kesatuan (integritas) dari file-file yang terlibat.
·        Terbagi/share:  Elemen-elemen database dapat dibagikan pada para user baik secara sendiri-sendiri maupun secara serentak dan pada waktu yang sama (Concurrent sharing).


B.   Perangkat Untuk Membuat Database
Database dapat dibuat dan diolah dengan menggunakan suatu program komputer, yaitu yang biasa kita sebut dengan software (perangkat lunak). Software yang digunakan untuk mengelola dan memanggil kueri (query) database disebut Database Management System (DBMS) atau jika diterjemahkan kedalam bahasa indonesia berarti “Sistem Manajemen Basis Data”.
 
C.   Tipe Database
Terdapat 12 tipe database, antara lain:
1.      Operational database: Database ini menyimpan data rinci yang diperlukan untuk mendukung operasi dari seluruh organisasi. Mereka juga disebut subject- area databases (SADB), transaksi database, dan produksi database. Contoh: database pelanggan, database pribadi, database inventaris, akuntansi database.
2.      Analytical database: Database ini menyimpan data dan informasi yang diambil dari operasional yang dipilih dan eksternal database. Mereka terdiri dari data dan informasi yang dirangkum paling dibutuhkan oleh sebuah organisasi manajemen dan End-user lainnya. Beberapa orang menyebut analitis multidimensi database sebagai database, manajemen database, atau informasi database.
3.      Data warehouse: Sebuah data warehouse menyimpan data dari saat ini dan tahun- tahun sebelumnya - data yang diambil dari berbagai database operasional dari sebuah organisasi.
4.      Distributed database: Ini adalah database-kelompok kerja lokal dan departemen di kantor regional, kantor cabang, pabrik-pabrik dan lokasi kerja lainnya. Database ini dapat mencakup kedua segmen yaitu operasional dan user database, serta data yang dihasilkan dan digunakan hanya pada pengguna situs sendiri.
5.      End-user database: Database ini terdiri dari berbagai file data yang dikembangkan oleh end-user di workstation mereka. Contoh dari ini adalah koleksi dokumen dalam spreadsheet, word processing dan bahkan download file.
6.      External database: Database ini menyediakan akses ke eksternal, data milik pribadi online - tersedia untuk biaya kepada pengguna akhir dan organisasi dari layanan komersial. Akses ke kekayaan informasi dari database eksternal yang tersedia untuk biaya dari layanan online komersial dan dengan atau tanpa biaya dari banyak sumber di Internet.
7.      Hypermedia databases on the web: Ini adalah kumpulan dari halaman-halaman multimedia yang saling berhubungan di sebuah situs web. Mereka terdiri dari home page dan halaman hyperlink lain dari multimedia atau campuran media seperti teks, grafik, gambar foto, klip video, audio dll.
8.      Navigational database: Dalam navigasi database, queries menemukan benda terutama dengan mengikuti referensi dari objek lain.
9.      In-memory databases: Database di memori terutama bergantung pada memori utama untuk penyimpanan data komputer. Ini berbeda dengan sistem manajemen database yang menggunakan disk berbasis mekanisme penyimpanan. Database memori utama lebih cepat daripada dioptimalkan disk database sejak Optimasi algoritma internal menjadi lebih sederhana dan lebih sedikit CPU mengeksekusi instruksi.
10.  Document-oriented databases: Merupakan program komputer yang dirancang untuk aplikasi berorientasi dokumen. Sistem ini bisa diimplementasikan sebagai lapisan di atas sebuah database relasional atau objek database. Sebagai lawan dari database relasional, dokumen berbasis database tidak menyimpan data dalam tabel dengan ukuran seragam kolom untuk setiap record. Sebaliknya, mereka menyimpan setiap catatan sebagai dokumen yang memiliki karakteristik tertentu. Sejumlah bidang panjang apapun dapat ditambahkan ke dokumen. Bidang yang dapat juga berisi beberapa bagian data.
11.  Real-time databases Real-time: Database adalah sistem pengolahan dirancang untuk menangani beban kerja negara yang dapat berubah terus-menerus. Ini berbeda dari database tradisional yang mengandung data yang terus- menerus, sebagian besar tidak terpengaruh oleh waktu. Sebagai contoh, pasar saham berubah dengan cepat dan dinamis. Real-time processing berarti bahwa transaksi diproses cukup cepat bagi hasil untuk kembali dan bertindak segera. Real-time database yang berguna untuk akuntansi, perbankan, hukum, catatan medis, multi-media, kontrol proses, sistem reservasi, dan analisis data ilmiah.
12.  Relational Database: Database yang paling umum digunakan saat ini. Menggunakan meja untuk informasi struktur sehingga mudah untuk mencari.

D.   Model Database
Database mempunyai dua varian model, yaitu model Post-relational database dan model Object database.
1.      Post-relational database models
Sebuah produk yang menawarkan model data yang lebih umum dari model relasional dan dikenal sebagai post-relational. Model data dalam produk tersebut mencakup hubungan namun tidak dibatasi oleh Prinsip Informasi yang mana mewakili semua informasi dengan nilai-nilai data dalam kaitannya dengan hal itu.
2.      Object database models
Dalam beberapa tahun terakhir,[update], paradigma yang berorientasi pada obyek telah diterapkan dalam bidang-bidang seperti teknik dan spasial database, telekomunikasi dan ilmu pilmiah lainnya. Para konglomerasi pemrograman berorientasi objek dan teknologi database mengarah pada model pemrograman baru yang dikenal sebagai Object database.

E.   Tujuan Database
Setiap manajemen dalam merancang dan menyusun database harus mempunyai tujuan, yaitu:
1.      Membuat agar user mudah mendapatkan data.
2.      Menyediakan tempat penyimpanan data yang relevan.
3.      Menghapus data yang berlebihan.
4.      Melindungi data dari kerusakan fisik.
5.      Memungkinkan perkembangan lebih lanjut di dalam sistem database.

F.    Ciri-ciri Database
Adapun ciri-ciri database adalah:
1.      Sistem yang dapat menyimpan data ke dalam floppy disk atau harddisk.
2.      Sistem yang menganut pengolahan data untuk ditambah, diubah, atau dihapus dengan mudah dan terkontrol.
3.      Data terpisah dari program.

G.  Keuntungan Database
Adapun keuntungan database terhadap sistem pemrosesan adalah:
1.      Kemubajiran data terkurangi.
2.      Integritas data dapat selalu terjaga.
3.      Berbagai data dapat selalu dilakukan oleh setiap user.
4.      Penggunaan data lebih mudah.
5.      Konsistensi data dapat selalu terjaga.

H.   Manfaat Database
Adapun manfaat database adalah:
1.      Sebagai komponen utama atau penting dalam sistem informasi, karena merupakan dasar dalam menyediakan informasi.
2.      Menentukan kualitas informasi yaitu cepat, akurat, dan relevan, sehingga infromasi yang disajikan tidak basi. Informasi dapat dikatakan bernilai bila manfaatnya lebih efektif dibandingkan dengan biaya mendapatkanya.
3.      Mengatasi kerangkapan data (redundancy data).
4.      Menghindari terjadinya inkonsistensi data.
5.      Mengatasi kesulitan dalam mengakses data.
6.      Menyusun format yang standar dari sebuah data.
7.      Penggunaan oleh banyak pemakai (multiple user). Sebuah database bisa dimanfaatkan sekaligus secara bersama oleh banyak pengguna (multiuser).
8.      Melakukan perlindungan dan pengamanan data. Setiap data hanya bisa diakses atau dimanipulasi oleh pihak yang diberi otoritas dengan memberikan login dan password terhadap masing-masing data.
9.      Agar pemakai mampu menyusun suatu pandangan (view) abstraksi dari data. Hal ini bertujuan menyederhanakan interaksi antara pengguna dengan sistemnya dan database dapat mempresentasikan pandangan yang berbeda kepada para pengguna, programmer dan administratornya.

Kesimpulan
Database merupakan salah satu komponen yang penting dalam sistem informasi, karena merupakan basis dalam menyediakan informasi bagi para pemakai. Databse terdiri dari data yang akan digunakan atau diperuntukkan terhadap banyak user, dari masing-masing user akan menggunakan data tersebut sesuai dengan tugas dan fungsinya.
Jadi, mau apapun bidang dan ruang lingkupnya seperti ekonomi, manajemen, dan psikologi pastilah membutuhkan database ini yang dirasakan sangat bermanfaat. Contohnya saja jika dalam bidang psikologi dapat mencari nama mahasiswa psikologi dari nomor npm dan dapat mencari mata kuliah dari nomor kode mata kuliah. Sehingga para pengguna pun dengan mudah dan cepat dalam mencari informasi tersebut.


Tuesday, October 2, 2012

KRIPTOGRAFI KUNCI-PUBLIK

Sampai akhir tahun 1975, hanya ada kriptografi kunci-simetri. Karena kriptografi simetri menggunakan kunci yang sama untuk enkripsi dan dekripsi, maka hal ini mengimplikasikan dua pihak yang berkomunikasi saling mempercayai. Kedua pihak harus menjaga kerahasiaan kunci. Satu masalah kritis di dalam sistem kriptografi kunci-simetri adalah cara mendistribusikan kunci. Baik pengirim maupun penerima harus berbagi kunci yang sama. Mengirim kunci dari pengirim ke penerima melalui saluran publik (seperti melalui pos, telepon, internet, dsb) jelas tidak aman, karena pihak lawan dapat menyadap kunci selama transmisi. Oleh karena itu kunci harus dikirim melalui saluran kedua yang benar-benar aman (misalnya melalui kurir) atau bertemu pada tempat yang ditentukan untuk membagi kunci. Perhatikanlah kedua itu umumnya lambat dan mahal.
Masalah ini dipecahkan oleh Diffie dan Hellman dengan mengusulkan kriptografi nirsimetri (asymmetric cryptosystem) yang memungkinkan pengguna berkomunikasi secara aman tanpa perlu berbagi kunci rahasia. Nama lainnya adalah kriptografi kunci-publik (public-key cryptography), sebab kunci untuk enkripsi diumumkan kepada publik sehingga dapat diketahui oleh siapapun, sementara kunci untuk dekripsi hanya diketahui oleh penerima pesan (karena itu rahasia). Siapapun dapat mengirim pesan yang dienkripsi dengan kunci publik tersebut, tetapi hanya penerima pesan yang dapat mendekripsi pesan karena hanya ia yang mengetahui kunci privatnya sendiri. Ini berlawanan dengan kriptografi kunci simetri yang hanya mempunya satu kunci.
Keuntungan kriptografi kunci-publik ada dua. Pertama, tidak ada kebutuhan untuk mendistribusikan kunci privat sebagaimana pada kriptografi kunci-simetri. Kunci publik dapat dikirim ke penerima melalui saluran yang sama dengan saluran yang digunakan untuk mengirim pesan. Perhatikan bahwa saluran untuk mengirim pesan umumnya tidak aman. Kedua, jumlah kunci dapat ditekan. Untuk komunikasi secara rahasia dengan banyak orang tidak perlu kunci rahasia sebanyak jumlah orang tersebut, cukup membuat dua buah kunci, yaitu kunci pulik bagi para koresponden untuk mengenkripsi pesan, dan kunci privat untuk mendekripsi pesan. Berbeda dengan kriptografi kunci-simetri dimana jumlah kunci yang dibuat adalah sebanyak jumlah pihak yang diajak korespondensi.
Yang termasuk algoritma kriptografi kunci publik adalah RSA, ElGamal, Algoritma Pertukaran Kunci Diffie-Hellman, Algoritma Knapsack. Berikut akan dijelaskan mengenai salah satu dari algoritma kunci publik yaitu RSA.


RSA

Pada tahun 1978, Ron Rivest, Adi Shamir, dan Leonard Adleman yang merupakan tiga orang professor di MIT (Massachussets Institute of Technology), pertama kali mempublikasikan teori secret exponents yang diberi nama RSA (Rivest, Shamir, Adleman) yang merupakan suatu metode untuk memperoleh Digital Signatures dan Public-Key Cryptosystems.
Algoritma RSA adalah algoritma yang paling popular dari sekian banyak algoritma kriptografi kunci-publik yang pernah dibuat. Algoritma RSA didasarkan pada bukti bahwa menemukan bilangan prima yang cukup besar kemudian mengkalikannya lebih mudah dibandingkan memfaktorkan hasil dari perkalian dua buah bilangan prima tersebut untuk mendapatkan faktornya yang merupakan dua buah bilangan prima itu sendiri.
Algoritma RSA memiliki besaran-besaran sbagai berikut :
1. p dan q bilangan prima (rahasia)
2. n = p . q (tidak rahasia)
3. Ñ„(n) = (p-1)(q-1) (rahasia)
4. e (kunci enkripsi) (tidak rahasia)
5. d (kunci dekripsi) (rahasia)
6. m (plainteks) (rahasia)
7. c (cipherteks) (tidak rahasia)

Perumusan Algoritma RSA
Algoritma RSA didasarkan pada teorema Euler yang menyatakan bahwa
a Ñ„(n) ≡ 1 (mod n)
denagn syarat :
a harus relative prima terhadap n
Ñ„(n) = n (1 – 1/p1)(1 – 1/p2) … (1 – 1/pr), yang dalam hal ini p1,p2, …,pr adalah faktor prima dari n. Ñ„(n) adalah fungsi yang menentukan berapa banyak dari bilangan-bilangan 1,2,3, …,n yang relative prima terhadap n.
Deskripsi Algoritma RSA
Secara garis besar proses dari RSA terbagi ke dalam tiga buah proses, yaitu key generation, encryption, dan decryption
a) Key Generation (Pembangkit pasangan kunci)
Public key adalah kunci publik untuk setiap user dapat diperoleh melalui prosedur berikut:
1. Pilih dua buah bilangan prima sembarang, p dan q
2. Hitung n = p . q (sebaiknya p ≠ q, sebab jika p = q maka n = p2 sehingga p dapat diperoleh dengan menarik akar pangkat dua dari n)
3. Hitung Ñ„(n) = (p-1)(q-1)
4. Pilih kunci public, e, yang relative prima terhadap Ñ„(n)
5. Bangkitkan kunci privat, yaitu e . d ≡ 1 (mod Ñ„(n)). Perhatikan bahwa e . d ≡1 (mod Ñ„(n)) ekivalen denagn e . d = 1 + kÑ„(n), sehingga secara sederhana d dapat dihitung dengan d = (1 + kÑ„(n)) / e
6. Nilai dari (e,n) adalah kunci publiknya dan (d,n) adalah kunci privatnya

b) Encryption (Enkripsi)
1. Ambil kunci publik pnerima pesan, e, dan modulus n
2. Nyatakan plainteks m menjadi blok-blok m1, m2, …sedemikian sehingga setiap blok mempresentasikan niali di dalam selang [0, n-1]
3. Setiap blok mi dienkripsi menjadi blok ci dengan rumus ci = mi e mod n

c) Decryption (Dekripsi)
Setiap blok cipherteks ci didekripsi kembali menjadi blok mi dengan rumus
mi = ci d mod n

Flowchart Algoritma RSA




Source Code RSA (C program)
#include
#include

#define TRUE 1
#define FALSE 0

void get_prime( long *val);
long getE( long PHI);
long get_common_denom( long e, long PHI);
long getD( long e, long PHI);
long decrypt(long c,long n, long d);

int main(void)
{
long a,b,n,e,PHI,d,m,c;

get_prime(&a);
get_prime(&b);
n=a*b;
PHI=(a-1)*(b-1);
e=getE(PHI);

d= getD(e,PHI);
printf(“Enter input value >> “); scanf(“%ld”,&m);

printf(“a=%ld b=%ld n=%ld PHI=%ld\n”,a,b,n,PHI);

c=(long)pow(m,e) % n; /* note, this may overflow with large numbers */
/* when e is relatively large */
printf(“e=%ld d=%ld c=%ld\n”,e,d,c);

m=decrypt(c,n,d); /* this function required as c to */
/*the power of d causes an overflow */
printf(“Message is %ld “,m);
return(0);
}

long decrypt(long c,long n, long d)
{
long i,g,f;

if (d%2==0) g=1; else g=c;

for (i=1;i<=d/2;i++)
{
f=c*c % n;
g=f*g % n;
}
return(g);
}

long getD( long e, long PHI)
{
long u[3]={1,0,PHI};
long v[3]={0,1,e};
long q,temp1,temp2,temp3;

while (v[2]!=0)
{
q=floor(u[2]/v[2]);
temp1=u[0]-q*v[0];
temp2=u[1]-q*v[1];
temp3=u[2]-q*v[2];
u[0]=v[0];
u[1]=v[1];
u[2]=v[2];
v[0]=temp1;
v[1]=temp2;
v[2]=temp3;
}
if (u[1]<0 p="p" return="return" u="u">
else return(u[1]);
}

long getE( long PHI)
{
long great=0, e=2;

while (great!=1)
{
e=e+1;
great = get_common_denom(e,PHI);
}
return(e);
}

long get_common_denom(long e, long PHI)
{
long great,temp,a;

if (e >PHI)
{
while (e % PHI != 0)
{
temp= e % PHI;
e =PHI;
PHI = temp;
}
great = PHI;
} else
{
while (PHI % e != 0)
{
a = PHI % e;
PHI = e;
e = a;
}
great = e;
}
return(great);
}

void get_prime( long *val)
{
#define NO_PRIMES 13
long primes[NO_PRIMES]={3,5,7,11,13,17,19,23,29,31,37,41,43};
long prime,i;
do
{
prime=FALSE;
printf(“Enter a prime number >> “);
scanf(“%ld”,val);
for (i=0;i
if (*val==primes[i]) prime=TRUE;
} while (prime==FALSE);
}



Padding schemes

Padding schemes harus dibangun secara hati-hati sehingga tidak ada nilai dari m yang menyebabkan masalah keamanan. Sebagai contoh, jika kita ambil contoh sederhana dari penampilan ASCII dari m dan menggabungkan bit-bit secara bersama-sama akan menghasilkan n, kemudian pessan yang berisi ASCII tunggal karakter NUL (nilai numeris 0) akan menghasilkan n= 0, yang akan menghasilkan ciphertext 0 apapun itu nilai dari e dan N yang digunakan. Sama halnya dengan karakter ASCII tunggal SOH (nilai numeris 1) akan selalu menghasilkan chiphertext 1. Pada kenyataannya, untuk sistem yang menggunakan nilai e yang kecil, seperti 3, seluruh karakter tunggal ASCII pada pesan akan disandikan menggunakan skema yang tidak aman, dikarenakan nilai terbesar n adalah nilai 255, dan 2553 menghasilkan nilai yang lebih kecil dari modulus yang sewajarnya, maka proses dekripsi akan menjadi masalah sederhana untuk mengambil pola dasar dari ciphertext tanpa perlu menggunakan modulus N. Sebagai konsekuensinya, standar seperti PKCS didesain dengan sangat hati-hati sehingga membuat pesan asal-asalan dapat terenkripsi secara aman. Dan juga berdasar pada bagian Kecepatan, akan dijelaskan kenapa m hampir bukanlah pesan itu sendiri tetapi lebih pada message key yang dipilh secara acak.

Pengesahan pesan

RSA dapat juga digunakan untuk mengesahkan sebuah pesan. Misalkan Alice ingin mengirim pesan kepada Bob. Alice membuat sebuah hash value dari pesan tersebut, di pangkatkan dengan bilangan d dibagi N (seperti halnya pada deskripsi pesan), dan melampirkannya sebagai “tanda tangan” pada pesan tersebut. Saat Bob menerima pesan yang telah “ditandatangani”, Bob memangkatkan “tanda tangan” tersebut dengan bilangan e dibagi N (seperti halnya pada enkripsi pesan), dan membandingkannya dengan nilai hasil dari hash value dengan hash value pada pesan tersebut. Jika kedua cocok, maka Bob dapat mengetahui bahwa pemilik dari pesan tersebut adalah Alice, dan pesan pun tidak pernah diubah sepanjang pengiriman.

Harap dicatat bahwa padding scheme merupakan hal yang esensial untuk mengamankan pengesahan pesan seperti halnya pada enkripsi pesan, oleh karena itu kunci yang sama tidak digunakan pada proses enkripsi dan pengesahan.

Keamanan

Penyerangan yang paling umum pada RSA ialah pada penanganan masalah faktorisasi pada bilangan yang sangat besar. Apabila terdapat faktorisasi metode yang baru dan cepat telah dikembangkan, maka ada kemungkinan untuk membongkar RSA.
Pada tahun 2005, bilangan faktorisasi terbesar yang digunakan secara umum ialah sepanjang 663 bit, menggunakan metode distribusi mutakhir. Kunci RSA pada umumnya sepanjang 1024—2048 bit. Beberapa pakar meyakini bahwa kunci 1024-bit ada kemungkinan dipecahkan pada waktu dekat (hal ini masih dalam perdebatan), tetapi tidak ada seorangpun yang berpendapat kunci 2048-bit akan pecah pada masa depan yang terprediksi.
Semisal Eve, seorang eavesdropper (pencuri dengar—penguping), mendapatkan public key N dan e, dan ciphertext c. Bagimanapun juga, Eve tidak mampu untuk secara langsung memperoleh d yang dijaga kerahasiannya oleh Alice. Masalah untuk menemukan n seperti pada ne=c mod N di kenal sebagai permasalahan RSA.
Cara paling efektif yang ditempuh oleh Eve untuk memperoleh n dari c ialah dengan melakukan faktorisasi N kedalam p dan q, dengan tujuan untuk menghitung (p-1)(q-1) yang dapat menghasilkan d dari e. Tidak ada metode waktu polinomial untuk melakukan faktorisasi pada bilangan bulat berukuran besar di komputer saat ini, tapi hal tersebut pun masih belum terbukti.
Masih belum ada bukti pula bahwa melakukan faktorisasi N adalah satu-satunya cara untuk memperoleh n dari c, tetapi tidak ditemukan adanya metode yang lebih mudah (setidaknya dari sepengatahuan publik).
Bagaimanapun juga, secara umum dianggap bahwa Eve telah kalah jika N berukuran sangat besar.
Jika N sepanjang 256-bit atau lebih pendek, N akan dapat difaktorisasi dalam beberapa jam pada Personal Computer, dengan menggunakan perangkat lunak yang tersedia secara bebas. Jika N sepanjang 512-bit atau lebih pendek, N akan dapat difaktorisasi dalam hitungan ratusan jam seperti pada tahun 1999. Secara teori, perangkat keras bernama TWIRL dan penjelasan dari Shamir dan Tromer pada tahun 2003 mengundang berbagai pertanyaan akan keamanan dari kunci 1024-bit. Santa disarankan bahwa N setidaknya sepanjang 2048-bit.
Pada thaun 1993, Peter Shor menerbitkan Algoritma Shor , menunjukkan bahwa sebuah komputer quantum secara prinsip dapat melakukan faktorisasi dalam waktu polinomial, mengurai RSA dan algoritma lainnya. Bagaimanapun juga, masih terdapat pedebatan dalam pembangunan komputer quantum secara prinsip.

Pembangkitan kunci

Menemukan bilangan prima besar p dan q pada biasanya didapat dengan mencoba serangkaian bilangan acak dengan ukuran yang tepat menggunakan probabilitas bilangan prima yang dapat dengan cepat menghapus hampir semua bilangan bukan prima.
p dan q seharusnya tidak “saling-berdekatan”, agar faktorisasi fermat pada N berhasil. Selain itu pula, jika p-1 atau q-1 memeiliki faktorisasi bilangan prima yang kecil, N dapat difaktorkan secara mudah dan nilai-nilai dari p atau q dapat diacuhkan.
Seseorang seharusnya tidak melakukan metoda pencarian bilangan prima yang hanya akan memberikan informasi penting tentang bilangan prima tersebut kepada penyerang. Biasanya, pembangkit bilangan acak yang baik akan memulai nilai bilangan yang digunakan. Harap diingat, bahwa kebutuhan disini ialah “acak” dan “tidak-terduga”. Berikut ini mungkin tidak memenuhi kriteria, sebuah bilangan mungkin dapat dipilah dari proses acak (misal, tidak dari pola apapun), tetapi jika bilangan itu mudah untuk ditebak atau diduga (atau mirip dengan bilangan yang mudah ditebak), maka metode tersebut akan kehilangan kemampuan keamanannya. Misalnya, tabel bilangan acak yang diterbitkan oleh Rand Corp pada tahun 1950-an mungkin memang benar-benar teracak, tetapi dikarenakan diterbitkan secara umum, hal ini akan mempermudah para penyerang dalam mendapatkan bilangan tersebut. Jika penyerang dapat menebak separuh dari digit p atau q, para penyerang dapat dengan cepat menghitung separuh yang lainnya (ditunjukkan oleh Donald Coppersmith pada tahun 1997).
Sangatlah penting bahwa kunci rahasia d bernilai cukup besar, Wiener menunjukkan pada tahun 1990 bahwa jika p diantara q dan 2q (yang sangat mirip) dan d lebih kecil daripada N1/4/3, maka d akan dapat dihitung secara effisien dari N dan e. Kunci enkripsi e = 2 sebaiknya tidak digunakan.

Kecepatan

RSA memiliki kecepatan yang lebih lambat dibandingkan dengan DES dan algoritma simetrik lainnya. Pada prakteknya, Bob menyandikan pesan rahasia menggunakan algoritma simetrik, menyandikan kunci simetrik menggunakan RSA, dan mengirimkan kunci simetrik yang dienkripsi menggunakan RSA dan juga mengirimkan pesan yang dienkripasi secara simetrik kepada Alice.
Prosedur ini menambah permasalahan akan keamanan. Singkatnya, Sangatlah penting untuk menggunakan pembangkit bilangan acak yang kuat untuk kunci simetrik yang digunakan, karena Eve dapat melakukan bypass terhadap RSA dengan menebak kunci simterik yang digunakan.

Distribusi kunci

Sebagaimana halnya cipher, bagaimana public key RSA didistribusi menjadi hal penting dalam keamanan. Distribusi kunci harus aman dari man-in-the-middle attack (penghadang-ditengah-jalan). Anggap Eve dengan suatu cara mampu memberikan kunci arbitari kepada Bob dan membuat Bob percaya bahwa kunci tersebut milik Alice. Anggap Eve dapan “menghadang” sepenuhnya transmisi antara Alice dan Bob. Eve mengirim Bob public key milik Eve, dimana Bob percaya bahwa public key tersebut milik Alice. Eve dapat menghadap seluruh ciphertext yang dikirim oleh Bob, melakukan dekripsi dengan kunci rahasia milik Eve sendiri, menyimpan salinan dari pesan tersebut, melakukan enkripsi menggunakan public key milik Alice, dan mengirimkan ciphertext yang baru kepada Alice. Secara prinsip, baik Alice atau Bob tidak menyadari kehadiran Eve diantara transmisi mereka. Pengamanan terhadap serangan semacam ini yaitu menggunakan sertifikat digital atau komponen lain dari infrastuktur public key.

Penyerangan waktu

Kocher menjelaskan sebuah serangan baru yang cerdas pada RSA di tahun 1995: jika penyerang, Eve, mengetahui perangkat keras yang dimiliki oleh Alice secara terperinci dan mampu untuk mengukur waktu yang dibutuhkan untuk melakukan dekripsi untuk beberapa ciphertext, Eve dapat menyimpulkan kunci dekripsi d secara cepat. Penyerangan ini dapat juga diaplikasikan pada skema “tanda tangan” RSA. SAlah satu cara untuk mencegah penyerangan ini yaitu dengan memastikan bahwa operasi dekripsi menggunakan waktu yang konstan untuk setiap ciphertext yang diproses. Cara yang lainnya, yaitu dengan menggunakan properti multipikatif dari RSA. Sebagai ganti dari menghitung cd mod N, Alice pertama-tama memilih nilai bilangan acak r dan menghitung (rec)d mod N. Hasil dari penghitungan tersebut ialah rm mod N kemudian efek dari r dapat dihilangkan dengan perkalian dengan inversenya. Nilai baru dari r dipilih pada tiap ciphertext. Dengan teknik ini, dikenal sebagai message blinding (pembutaan pesan), waktu yang diperlukan untuk proses dekripsi tidak lagi berhubungan dengan nilai dari ciphertext sehingga penyerangan waktu akan gagal.

Penyerangan ciphertext adaptive

Pada tahun 1998, Daniel Bleichenbacher menjelaskan penggunaan penyerangan ciphertext adaptive, terhadap pesan yang terenkripsi menggunakan RSA dan menggunakan PKCS #1 v1 padding scheme. Dikarenakan kecacatan pada skema PKCS #1, Bleichenbacher mampu untuk melakukan serangkaian serangan terhadap implementasi RSA pada protokol Secure Socket Layer, dan secara potensial mengungkap kunci-kunci yang digunakan. Sebagai hasilnya, para pengguna kriptografi menganjurkan untuk menggunakan padding scheme yang relatif terbukti aman seperti Optimal Asymmetric Encryption Padding, dan Laboratorium RSA telah merilis versi terbaru dari PKCS #1 yang tidak lemah terdapat serangan ini.

sumber : http://indah4yu.wordpress.com/

Followers

English French German Spain Italian Dutch Russian Portuguese Japanese Korean Arabic Chinese Simplified


  © Blogger template 'A Click Apart' by Ourblogtemplates.com 2008

Back to TOP