Kamis, 19 Mei 2011

Pretty Good Privacy


PGP adalah singkatan dari Pretty Good Privacy, dan merupakan program enkripsi yang memiliki tingkat keamanan cukup tinggi dengan menggunakan “private-public key” sebagai dasar autentifikasinya. PGP pertama diperkenalkan pada tahun 1991 oleh Philip Zimmermann untuk menyandikan data dalam pengiriman surat elektronik. Dalam proses penyandian data ini, PGP mengikuti standar RFC 4880.

PGP memiliki dua versi, yaitu USA version dan International version.  PGP veris USA hanya dapat digunakan di wilayah Amerika dan hanya berlaku untuk warganegara Amerika saja. Versi USA ini menggunakan algoritma asimetrik, yaitu RSA algorithm dalam proses enkripsi dan dekripsinya. Sedangkan untuk versi internasional, PGP dapat digunakan oleh semua warganegara di seluruh penjuru dunia. Algoritma penyandian yang digunakan adalah algoritma MPILIB yang merupakan algoritma buatan Phill Zimmermann. Untuk membedakan antara versi USA dan internasional, dapat dengan cara melihat penulisannya. PGP versi internasional menambahkan akhiran “i” pada nomor seri PGP. Contohnya, nomor versi PGP terakhir adalah 7.0.3 untuk versi USA dan 7.0.3i untuk versi internasional. Beberapa tahun belakangan ini, penggemar dan pengguna PGP semakin meningkat sehingga PGP telah menjadi standar de-facto program enkripsi untuk electronic mail. Versi International lebih banyak digunakan oleh masyarakat dunia karena kapabilitasnya . Layanan PGP versi ini dapat berlaku ke seluruh mancanegara.  Jadi, ketika seseorang mengirim e-mail menggunakan PGP versi ini, maka penerima dapat mambaca e-mail tersebut karena versi yang digunakan bersifat universal.

Pada dasarnya, PGP merupakan program yang digunakan untuk mengenkripsi satu atau lebih dokumen. Dengan PGP tersebut, hanya orang-orang tertentu saja yang bisa membaca file-file enkripsi tersebut. Bagaimana PGP sebagai program enkripsi dokumen bisa digunakan untuk pengiriman e-mail? Sebenarnya, program PGP mengenkripsi isi mail yang kita tulis menjadi sebuah file. File tersebut dibaca oleh program mail yang kemudian dikirimkan ke tujuan. Penerima e-mail harus menyimpan mail tersebut ke dalam sebuah file. File tersebut didekripsi sehingga isi mail aslinya akan terlihat. Jadi, mail yang dikirimkan adalah dalam bentuk terenkripsi sehingga tidak bisa dibaca dengan mudah oleh orang-orang yang tidak memiliki akses membaca mail tersebut.

Beberapa istilah yang sering digunakan:

o       Cryptography / Encryption
Ilmu pengetahuan yang mempelajari pengacakan text sehingga tidak seorang pun yang dapat mengetahuinya kecuali bila ia tahu kode yang digunakan untuk men-dechipernya.

o       Conventional Cryptography
Suatu metode encryption/enkripsi di mana suatu kunci digunakan untuk melakukan enksripsi dan dekripsi suatu plaintext.

o       Encrypt / Encipher
Pengacakan / scramble dari suatu informasi.

o       Decrypt / Decipher
Mengembalikan informasi yang telah diacak menjadi bentuk informasi yang semula.

o       Ciphertext / Cipher
Text setelah dilakukan proses  enkripsi

o       Plaintext
Text yang akan dienkripsi

o       Key
Kode yang digunakan untuk melakukan enchiper dan atau dechiper suatu text. Dalam kriptografi konvensional, kunci yang digunakan untuk  enkripsi dan dekripsi adalah sama. Dalam public-key cryptography,kunci untuk enkripsi dan dekripsi berbeda.

o       Public-key Crypto
Suatu sistem yang menggunakan dua kunci; yaitu  public key  dan the secret key yang lebih baik dan lebih praktis dibandingkan dengan conventional crypto. Tujuan utamanya adalah kemudahan dalam manajemen kunci.

o       Algorithm
Algorithm adalah program  crypto apa yang digunakan untuk melakukan enkripsi. Ia bukanlah suatu kunci, tetapi menghasilkan kunci. Suatu algoritma yang kuat/bagus akan manghasilkan crypto yang kuat.bagus juga. PGP menggunakan IDEA untuk bagian crypto yang konvensional, dan RSA untuk bagian  public-key . keduanya adalah algoritma yang bagus, namun RSA lebih bagus daripada IDEA.

o       Passphrase
Adalah suatu word  atau phrase, atau bahkan hanya karakter acak,  yang digunakan PGP untuk mengidentifikasi seseorang sebagai person yang diinginkan oleh orang tersebut. Suatu  passphrase sebaiknya lebih dari satu word,  dan jangan pernah membuat yang orang lain dapat menebaknya, seperti nama, nama tengah, binatang kesayangan, nama anak, hari ultah, nama pacar, alamat, band favorit dsb. suatu passphrase yang ideal, adalah setengah dari baris  text.  Sebaiknya lebih dari tiga word dan mengandung hal-hal berikut:  proper name, suatu slang atau vulgar word, dan irregular capitalization, sebagai contoh: tHe, benny, dll. JUGA, Sifat lainnya adalah ia harus mudah diketik secara cepat, tanpa error, dan tanpa perlu melihatnya pada layar.

o       Public Key
Adalah suatu kunci yang memiliki sifat sebagai berikut : mempunyai suatu koneksi, sangat berbeda dari yang lainnya, didistribusikan dalam jumlah yang besar , melaluui banyak channel, secure atau insecure.

o       Secret Key
Adalah suatu kunci yang dimiliki oleh kita dan hanya kita seorang, dan tidak pernah diperlihatkan kepada publik.

o       ASCII armor/radix-64
Adalah suatu format yang digunakan PGP  untuk mengkonversi default binary ciphertext, yang tidak dapat ditransfer melalui jaringan, menjadi suatu bentuk  ASCII yang dapat dikirmkan melalui email atau usenet. 

Prinsip Kerja PGP

PGP, seperti yang telah dijelaskan sebelumnya,  menggunakan  teknik yang disebut public-key encryption  dengan dua kode. Kode-kode ini berhubungan secara intrinsik, namun tidak mungkin untuk memecahkan satu dan yang lainnya.

Bila suatu ketika kita membuat suatu kunci, maka secara otomatis akan dihasilkan sepasang kunci yaitu  public key and secret key. Kita dapat  memberikan  public key ke manapun  tujuan yang kita inginkan, melalui telephone,  internet, keyserver, dsb. Secret key yang disimpan pada mesin kita dan menggunakan messager decipher akan dikirimkan ke kita. Jadi orang  yang akan menggunakan public key kita  (yang  hanya dapat didekripsi oleh oleh secret key kita), mengirimkan messages kepada kita , dan  kita akan menggunakan secret key untuk membacanya.
   
Kenapa menggunakan dua kunci? Karena dengan  conventional crypto, di saat  terjadi transfer informasi kunci, suatu secure channel  diperlukan. Dan jika kita memiliki suatu secure channel, mengapa kita menggunakan crypto? Namun 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 kita sebagai pemilik yang mengetahui secret key; yaitu key yang berhubungan secara fisik dengan komputer kita  yang dapat melakukan proses dekripsi dengan public key yang ada dan kemudian kita masukan lagi passphrase.  Jadi seseorang mungkin dapat mencuri passphrase  yang kita ketikkan, namun ia dapat membaca  hanya  jika  ia dapat mengakses komputer kita

Dasar-dasar PGP

Sebelum menggunakan program PGP, ada baiknya kita tinjau terlebih dahulu konsep yang digunakan oleh PGP. Hal ini bertujuan agar istilah-istilah dalam PGP dipahami dengan baik sehingga tidak terjadi kesalahan dalam implementasi PGP itu sendiri.

Seperti yang telah disinggung di awal makalah, PGP menggunakan “private-public keys” sebagai dasar otorisasinya. Setiap kali kita membuat kunci, PGP akan menciptakan dua buah kunci yaitu Private key dan Public key yang merupakan sebuah pasangan yang bersesuaian. Private key adalah kunci yang hanya diketahui oleh kita sendiri. Public key adalah kunci yang kita beritahukan kepada orang-orang yang kita percaya. Public key digunakan sebagai dasar proses pengenkripsian dokumen-dokumen yang hanya bisa dibuka oleh orang yang memiliki private key yang bersesuaian.

Sebagai contoh : Adi memiliki 2 buah kunci yaitu kunci A (terdiri dari  private key A dan public key A) dan kunci B (terdiri dari private key B dan public key B). Kemudian, Hanna akan mengirimkan sebuah e-mail rahasia kepada Adi. Hanna telah memperoleh public key B dari Adi sendiri. Setelah itu, Hanna menjalankan program PGP untuk mengenkripsi e-mail yang akan dikirimkannya ke Adi dengan menggunakan public key B. Ketika  Adi menerima e-mail dari Hanna, ia mempergunakan program PGP untuk dekripsinya. PGP akan menanyakan private key yang bersesuaian yaitu private key B. Jadi, Adi hanya bisa mendekripsi isi e-mail tersebut dengan menggunakan private key B saja.

Kita bisa mengumpulkan beberapa public key dari orang-orang yang membagikan public key-nya. Dengan mengumpulkan beberapa public key, kita bisa mengirimkan sebuah e-mail yang dienkripsi ke beberapa orang secara langsung. Untuk memperkaya koleksi public key yang kita miliki, kita bisa melakukan tukar-menukar public key dengan orang lain.  Ada cara lain untuk mendapatkan public key yaitu melalui public key server. Kita bisa mengambil public key dari orang-orang yang kita inginkan melalui public key server ini. Hanya saja, server tersebut tidak menjamin validasi dari key tersebut. Salah satu resources yang cukup baik untuk public key server adalah http://www.ifi.uio.no/pgp/keyservers.html. Homepage tersebut menjadi pointer menuju public key server di berbagai negara.

Pada paragraf di atas, terdapat kata-kata “tidak menjamin validasi dari key tersebut”. Apa artinya? Sebenarnya, kita bisa membuat public key sebanyak yang kita kehendaki dengan nama yang berbeda. Bisa saja kita membuat public key dengan username Bill Clinton dan alamat e-mail . Dengan demikian, mail-mail rahasia yang ditujukan ke Presiden Bill Clinton bisa kita baca. Tetapi, apakah semudah itu? Tentu saja tidak. Pembuatan dan penambahan public key sebaiknya dan sangat dianjurkan diikuti dengan certification dan signature.

PGP memerlukan beberapa file tambahan yang berperan penting pada proses autentifikasi. File tersebut ada 4 buah, yang bernama (default) : secring.pgp, pubring.pgp, secring.pgp (cadangan), dan randseed.bin. File pubring.pgp adalah file yang berisi koleksi public key milik kita. File secring.pgp adalah file yang berisi private key milik kita. File secring.pgp (cadangan) adalah file cadangan yang berisi private key milik kita. File secring.pgp yang asli akan dibandingkan dengan cadangannya saat melakukan perintah “pgp -kc”. Selain itu, file cadangan tersebut bertujuan supaya bila terjadi sesuatu dengan file secring.pgp yang asli sehingga tidak bisa dibaca, kita masih memiliki cadangan. Ketiga file ini seharusnya tidak diperlihatkan ataupun diberikan kepada orang lain. Seluruh kunci untuk membuka akses PGP terdapat di sana. Bila file-file ini jatuh ke tangan orang lain, kemungkinan tertembusnya enkripsi PGP menjadi jauh lebih besar.

Ilustrasi Pemakaian PGP

Public-key sangat lambat bila dibandingkan dengan konvensional, jadi PGP akan mengkombinasikan dua algoritma, yaitu RSA and IDEA, untuk melakukan enkripsi plaintext kita.
Sebagai contoh, Badrun (pemilik PGP) ingin mengenkripsi  suatu file yang diberi nama plain.txt sedemikian sehingga hanya si Matangin yang dapat mendekripsi-nya.  Maka Badrun mengirimkan  PGP  perintah (command line) untuk melakukan enkripsi  :

pgp -e plain.txt Matangin

Pada command line ini, pgp adalah file executable, -e  berarti  memberitahukan PGP untuk meng-encrypt file, plain.txt adalah nama plaintext, dan dul merepresentasikan public key suatu tujuan (Matangin) yang diinginkan Badrun untuk mengenkripsi message-nya. PGP menggunakan suatu random number generator, dalam file randseed.bin untuk menghasilkan suatu  kunci (session key) temporary IDEA. Session key itu sendiri di-enkripsi dengan kunci RSA public  yang direpresentasikan oleh Matangin  yang disematkan pada plaintext.

Kemudian, PGP menggunakan session key  untuk mengenkripsi message, ASCII-armors dan menyimpan seluruhnya sebagai cipher.asc. Bila Matangin ingin membaca pesannya, ia mengetikkan command:

pgp cipher.asc

PGP  menggunakan  secret key milik Matangin, yang merupakan kunci RSA,        untuk men-dekripsi sessi kunci yang mana, yang jika dipanggil oleh Badrun akan dienkripsi oleh  public key. kemudian, conventional crypto digunakan dalam bentuk  session key untuk mendekripsi sisa dari message. Alasan prinsip ini adalah sebagai pengganti/kompensasi dari RSA karena "RSA is too slow, it's not stronger, and it may even be weaker." (-PGP Documentation, pgpdoc2.txt).

Enkripsi untuk File-File Biner

Untuk mereka yang terbiasa bekerja dengan file-file biner, pada usenet mengetahui istilah uuencode.  Uuenconde adalah suatu program, yang terutama untuk UNIX,  namun sekarang berkembang sehingga dapat mengubah file-file biner seperti .GIF or .AU menjadi ASCII text yang sesuai dengan format pengiriman usenet. Feature ini juga dimiliki oleh  PGP. File config.txt (mungkin disebut pgp.ini atau .pgprc ; tergantung protokol local) memiliki suatu option untuk berapa banyak baris file ASCII yang dapat dimuat. Jika jumlah ini tercapai,  PGP akan memecah-mecah file armored .asc menjadi .as1, .as2, .as3, ... dan semuanya harus digabungkan satu sama lain secara bersama-sama dan menjalankan PGP dalam suatu file yang besar. Untuk mengenkripsi suatu file biner, gunakan command berikut:

pgp -a picture.gif

atau option TextMode  diset ke ON:

pgp -a picture.gif +textmode=off

Dalam bidang kriptografi, selain PGP, terdapat metode penyandian enkripsi dan dekripsi yang lain seperti: DES, AES, RSA, dan lain lainnya.

Sumber:

Tidak ada komentar:

Posting Komentar