ASYMMETRIC CRYPTOGRAPHY
PGP Secara Umum
PGP adalah suatu metode enkripsi informasi yang bersifat rahasia sehingga jangan
sampai diketahui oleh orang lain yang tidak berhak. Informasi ini bisa berupa E-mail
yang sifatnya rahasia, nomor kode kartu kredit, atau pengiriman dokumen rahasia
perusahaan melalui Internet. PGP menggunakan metode kriptografi yang disebut
“public key encryption”: yaitu suatu metode kriptografi yang sangat sophisticated.
PGP menggunakan sistem pasangan kunci privat dan kunci publik. Kunci privat
merupakan kunci yang dipegang oleh penggunanya dan tidak boleh diketahui orang lain,
sedangkan kunci publik ditujukan untuk publik terutama orang yang akan menerima
pesan enkripsi dari seseorang. Enkripsi yang digunakan dalam PGP menggunakan
algoritma tertentu. Proses sederhananya adalah anda meng-encrypt pesan dengan kunci
publik rekan anda dan kemudian rekan anda membuka pesan ter-encrypt dengan kunci
privatnya.
Proses enkripsi cukup memakan waktu dan utilitas CPU, dengan PGP dan algoritma
ekripsinya proses ini bisa lebih cepat dengan cara PGP men-encrypt pesan dengan
menggunakan kunci publik penerima dan meng-encrypt sebuah kunci pendek untuk
meng-encrypt seluruh pesan. Pesan ter-encrypt dengan kunci pendek ini dikirim ke
penerima. Penerima akan men-decrypt pesan dengan menggunakan kunci privatnya untuk
mendapatkan kunci pendek tadi dan digunakan untuk men-decrypt seluruh pesan.
PGP lahir dua versi kunci publik yaitu Rivest-Shamir-Adleman (RSA) yang
dikembangkan sejak 1977 dan Diffie-Hellman. Versi pertama menggunakan algoritma
IDEA (International Data Encryption Algorithm) yang dikembangkan di Zurich untuk
men-generate kunci pendek dan meng-encrypt seluruh pesan kemudian meng-encrypt
kunci pendek tersebut dengan algoritma RSA. Sedangkan versi kedua menggunakan
algoritma CAST untuk men-generate kunci pendek dari seluruh pesan untuk megencryptnya
kemudian menggunakan algoritma Diffie-Hellman untuk meng-encrypt kunci
pendek tersebut.
Selain faktor pasangan kunci dan algoritma di atas PGP mempunyai satu lagi fasilitas
untuk menyatakan keabsahan dari kunci dan pesan yang terenkripsi yaitu sebuah digital
signature (tanda tangan digital). PGP menggunakan algoritma yang efisien untuk mengenerate
kode hash (kode yang menyatakan integritas sebuah data) dari informasi nama
dan informasi lainnya. Hash yang dihasilkan kemudian di-encrypt dengan kunci privat.
Penerima kemudian akan menggunakan kunci publik pengirim untuk men-decrypt kode
hash. Jika cocok maka kode hash tadi menjadi digital signature untuk pesan tersebut,
sehingga penerima yakin bahwa pesan tersebut dikirim oleh pengirim yang diketahui.
PGP versi RSA menggunakan algoritma MD5 (Message Digest 5, 128bit) untuk menggenerate
kode hash sedangkan versi Diffie-Hellman menggunakan algoritma SHA-1.
Adapun prinsip kerja dari PGP adalah sebagai berikut :
- PGP menggunakan teknik yang disebut public kec encryption dengan dua kode. Kode-kode ini berhubungan secara intrinstik, namun tidak mungkin untuk memecahkan satu sama lain,
- Ketika dibuat satu kunci, maka secara otomatis akan dihasilkan sepanjang kunci,yaitu kunci publik dan kunci rahasia.
- PGP menggunakan dua kunci, Pertama, kunci untuk proses enkripsi (kunci publik). Disebut kunci publik karena kunci yang digunakan untuk enkripsi ini akan diberitahukan kepada umum. Orang yang akan mengirimkan e-mail rahasia kepada kita harus mengetahui kunci publik ini. Kedua, kunci untuk proses deskripsi (kunci pribadi). Disebut kunci pribadi karena kunci ini hanya diketahui oleh kita sendiri.
- Karena dengan conventional crypto, di saat terjadi transfer informasi kunci, diperlukan suatu secure channel. Jika kita memiliki suatu secure channel, mengapa masih menggunakan crypto? Dengan public key system, tidak akan menjadi masalah siapa yang melihat kunci milik kita, karena kunci yang dilihat orang lain adalah yang digunakan hanya untuk enkripsi dan hanya pemiliknya saja yang mengetahui kunci rahasia tersebut.
GnuPG
GnuPG adalah software enkripsi email pengganti PGP yang lengkap dan bebas.
Bebas karena tidak menggunakan algoritma enkripsi yang telah dipatenkan sehingga bisa
dipakai oleh siapa saja tanpa batasan. GnuPG memenuhi spesifikasi OpenPGP RFC2440.
Beberapa fitur yang ditawarkan GnuPG adalah:
- Penggantian penuh terhadap pemakaian PGP
- Tidak menggunakan algoritma yang telah dipatenkan
- Bebas, berlisensi GNU dan ditulis dari awal (from scratch)
- Fungsi yang lebih baik dibandingkan PGP
- Kompatibel dengan PGP versi 5 dan yang lebih tinggi
- Mendukung algoritma ElGamal (signature dan enkripsi), DSA, RSA, AES, 3DES, Blowfish, Twofish, CAST5, MD5, SHA-1, RIPE-MD-160 and TIGER.
- Mudah diimplementasikan jika ada algoritma baru (penggunaan extension modules)
- Easy implementation of new algorithms using extension modules.
- Menggunakan format standar untuk identitas user
- Banyak bahasa yang sudah mentranslasikan
- Terintegrasi dengan HKP keyservers (wwwkeys.pgp.net)
GnuPG bekerja sempurna di atas sistem operasi Linux dengan platform x86, mips,
alpha, sparc64 ataupun powerpc. Sistem operasi lain dengan platform x86 yang juga
bekerja adalah FreeBSD, OpenBSD, NetBSD dan bahkan Windows. Platform lain
dengan sistem operasi selain Linux masih dalam pengembangan.
GnuPG dibuat oleh tim GnuPG yang terdiri dari Matthew Skala, Michael Roth, Niklas
Hernaeus, Rmi Guyomarch and Werner Koch. Gael Queri, Gregory Steuck, Janusz A.
Urbanowicz, Marco d'Itri, Thiago Jung Bauermann, Urko Lusa and Walter Koch yang
membuat translasi resmi dan Mike Ashley yang mengerjakan GNU Privacy Handbook
Gambar 1. Cara kerja PGP encryption dan decryption
A. Percobaan dengan asymmetric cryptography
Pembuatan kunci (private dan public key) dengan pgp
a. Pada percobaan ini satu berfungsi untuk mengirim pesan yang terenkripsi (PC
Client), dan satunya berfungsi untuk menerima pesan terenkripsi dan melakukan
dekripsi terhadap pesan tersebut (PC Server).
Sebelum PC Client mengirim pesan, maka PC Server akan membuat kunci
terlebih dahulu, dan mengirimkan public key-nya ke PC Client.
b. Pastikan FTP Server terinstall pada komputer PC Server.
# apt-get install proftpd
c. Pastikan wireshark diinstall pada komputer PC Client
d. Jalankan wireshark pada komputer PC Client
e. Pastikan komputer Client dan Server diinstall pgp
# apt-get install gnupg
f. Pada komputer PC Server lakukan langkah berikut :
- Lakukan pemilihan algoritma yang digunakan untuk membuat keypair
debian:~# gpg --gen-key
gpg (GnuPG) 1.4.9; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Please select what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection? 1
- Menentukan panjang keypair
DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 1024
- Menentukan masa guna keypair
Requested keysize is 1024 bits
Please specify how long the key should be valid.
0 = key does not expire
= key expires in n days
- Memasukkan identitas diri
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) "
- Memasukkan passphrase
You need a Passphrase to protect your secret key.
Enter passphrase: => masukkan password anda disini
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
+++++..++++++++++.+++++++++++++++++++++++++.++++++++++++++++++++++++++++++..
.+++++.++++++++++++++++++++++++++++++..++++++++++.+++++++++++++++.+++++..
......................................................>+++++.............
......................+++++
Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy! (Need 282 more bytes)
JIKA RANDOM BYTES YANG DIBUTUHKAN KURANG, ANDA DIMINTA UNTUK MENGETIKKAN
BEBERAPA HURUF SECARA ACAK DAN CEPAT DARI KEYBOARD
- Hasil akhir dari pembuatan kunci
gpg: key 14D0B4B3 marked as ultimately trusted
public and secret key created and signed.
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed,
PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
pub 1024D/14D0B4B3 2009-12-21
Key fingerprint = 6C4E 92F8 3263 BEC6 293C 4E2C 8F3E 41D4 14D0 B4B3
uid Zen Hadi (Percobaan dengan PGP)
- Untuk mengetahui kunci public yang sudah dibuat
debian:~# gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub 1024D/14D0B4B3 2009-12-21 => public key
uid Zen Hadi (Percobaan dengan PGP)
- Untuk mengetahui kunci privat yang sudah dibuat
debian:~# gpg --list-secret-keys
/root/.gnupg/secring.gpg
------------------------
sec 1024D/14D0B4B3 2009-12-21 => private key
uid Zen Hadi (Percobaan dengan PGP)
Proses eksport kunci public dengan pgp
Proses pengiriman public key
debian:~# ftp 10.252.42.99 => no ip dari computer server
Connected to 10.252.42.99.
220 ProFTPD 1.3.1 Server (Debian) [::ffff:10.252.42.99]
Name (10.252.42.99:root): faruq
331 Password required for faruq
Password:
230 User faruq logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get zenhadiPub.asc => send public key ke computer client
local: zenhadiPub.asc remote: zenhadiPub.asc
200 PORT command successful
150 Opening BINARY mode data connection for zenhadiPub.asc
226 Transfer complete
1377 bytes sent in 0.00 secs (40749.3 kB/s)
ftp> quit
221 Goodbye.
Proses enkripsi dengan public key dan pengiriman pesan
Pada komputer client, lakukan beberapa perintah berikut ini :
Import kunci yang sudah dikirim oleh Server.
# gpg --import zenhadiPub.asc
NOTE :
Jika di computer client pada waktu mengimport kunci public terdapat error, warp
error atau clock in the future, itu artinya jam dan tanggal di computer client tidak
matching dengan computer server, dan harus disamakan dulu.
Cek kunci publik, apakah sudah diterima oleh Client atau belum.
# gpg --list-keys
Buat file text berisi pesan yang akan dikirim ke komputer Server.
debian:~# nano coba.txt
Praktikum dengan kriptograpi asimetris PGP
Lakukan proses enkripsi terhadap
file coba.txt
# gpg --encrypt –r zenhadi@eepis-its.edu -a coba.txt
Keterangan :
-a : plain text
-r : recipient
Hasil enkripsi diatas akan menghasilkan file coba.txt.asc
debian:~# cat coba.txt.asc
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.9 (GNU/Linux)
hQEOAysCPq5mcVeZEAP+N1QNYGs7HNIKu+uLaOdWdPQ9nCTIQ50JVHu7bLGop9B2
fyJu0ky2roeWiIwFmsINBAPF4WZeuFUMlYiWJk7hV9zdtxUcnipmBbmMriPwaazn
ZC6clboh9C3k2SMtNIWQp7XOgOObnYhJNj7N55fBspOyP8SBrRb57Ekdw97MUVkD
/1FZaCY2JKGLeJ4C4V75uWUuHLYIYAnpUx8SnGb54C1XiATx25cB++rYDs8K3Dd+
7ntosYLDwemai3i7lfjVAC1SitLrS62xZhscbkJEMilXG0y6p6Fiiwa2DNPzpbWX
QsHQdoIX9T+QIdRwaGE9dpQa74pfEnG0ibJul95OU8C90lEBamLEJdE+lETcCsRH
33i6nSE9DYrQ8V6Cy/YRKdD53KLLZ97fDgH4o4QdYP4JFWw1YmtQutL7wzrIl0VY
GctdADblPINxMCBpk9z0+DskWL8=
=LqAh
-----END PGP MESSAGE-----
Kirim file yang telah dienkripsi tersebut ke komputer tujuan (Server), dengan
menggunakan ftp seperti langkah sebelumnya.
Proses dekripsi
Pastikan di komputer Server telah menerima pesan yang telah dienkripsi dari
komputer client. Lakukan proses dekripsi file tersebut dengan menggunakan private
key agar bisa membaca pesan aslinya.
debian:~# gpg --decrypt coba.txt.asc
You need a passphrase to unlock the secret key for
user: "Zen Hadi (Percobaan dengan PGP) "
1024-bit ELG-E key, ID 66715799, created 2009-12-21 (main key ID 14D0B4B3)
EmoticonEmoticon