Jumat, 17 April 2009

ENKRIPSI, DESKRIPSI DAN KRIPTOGRAFI

ENKRIPSI

Enkripsi adalah proses mengacak data sehingga tidak dapat dibaca oleh pihak lain. Pada kebanyakan proses enkripsi, Anda harus menyertakan kunci sehingga data yang dienkripsi dapat didekripsikan kembali. Ilmu yang mempelajari teknik enkripsi disebut kriptografi. Gambaran sederhana tentang enkripsi, misalnya mengganti huruf a dengan n, b dengan m dan seterusnya. Model penggantian huruf sebagai bentuk enkripsi sederhana ini sekarang tidak dipergunakan secara serius dalam penyembunyian data. ROT-13 adalah program yang masih suka dipergunakan. Intinya adalah mengubah huruf menjadi 23 huruf didepannya. Misalnya b menjadi o dan seterusnya. Pembahasan enkripsi akan terfokus pada enkripsi password dan enkripsi komunikasi data.

Jenis-jenis Enkripsi :


Enkripsi Password

Password di Linux dibuat dengan menggunakan metode tingkat lanjut dalam enkripsi, yakni DES (Data Encryption Standard). Menurut Federal Processing Standards Publication 46-2, DES didefinisikan sebagai sebuah algoritma matematika untuk menjalankan enkripsi (enchypering) dan dekripsi (dechypering) informasi koding binary. Enkripsi mengkonversikan data menjadi bentuk yang sulit ditebak, disebut chyper. Proses dekripsi cypher mengkonversikan data kedalam bentuk aslinya, disebut plain-text. (terjemahan bebas)

Enkripsi dan dekripsi dilakukan tergantung pada kunci (key). Kunci ini dibuat berdasarkan masukan dari user pada saat mengetikkan password terdiri dari binary 64 digit. Jika password yang diketikkan kurang dari binary 64 digit, maka DES akan menambahkannya secara otomatis. Dari binary 64 digit, 56 dipergunakan untuk enkripsi, dan 8 dipergunakan untuk cek kesalahan (error checking).

Saat seorang penyusup (atau siapa saja) akan melakukan crack terhadap password di Linux, mereka biasanya mempergunakan kamus (dictionary attack). Saat melakukan crack, penyusup akan mengambil kata-kata dari kamus, kemudian mengenkripsinya dengan DES. Dalam proses ini, kata demi kata diberikan secara terus menerus, kemudian diproses sebagaimana Linux memproses passwordnya. Hasilnya akan dicocokkan dengan daftar yang ada di /etc/passwd. Jika cocok, program cracker akan memberitahukan kepada penyusup, bahwa password sudah berhasil ditemukan.

Enkripsi Komunikasi Data

Di dalam Internet (atau intranet) data yang dikirimkan dari satu komputer ke komputer lainnya, pasti melewati komputer-komputer lain. Ambil contoh, pada saat Anda memasukkan password untuk mengecek account email di hotmail, data akan dikirim dalam bentuk teks biasa melewati beberapa host sebelum akhirnya diterima oleh hotmail. Pernahkah Anda berfikir bahwa salah satu dari komputer yang dilewati oleh data Anda dipasangi program sniffer?

Sniffer adalah program yang membaca dan menganalisa setiap protokol yang melewati mesin di mana program tersebut diinstal. Secara default, sebuah komputer dalam jaringan (workstation) hanya mendengarkan dan merespon paket-paket yang dikirimkan kepada mereka. Namun demikian, kartu jaringan (network card) dapat diset oleh beberapa program tertentu, sehingga dapat memonitor dan menangkap semua lalu lintas jaringan yang lewat tanpa peduli kepada siapa paket tersebut dikirimkan.

Secure Shell

1. Instalasi SSH

Saat ini SSH dalam bentuk kode sumber dapat diperoleh dihttp://www.ssh.fi, sedangkan binarynya untuk klien dan server dapat Anda peroleh dihttp://www.replay.com. Beberapa paket program utama yang dijadikan satu paket dalam SSH suite adalah :

  1. make-ssh-known-host

    Skrip Perl yang membuat database dari host-host yang otomatis dibuat berdasarkan domain.

  2. scp

    The Secure Shell Copy Program, mengamankan penggAndaan data dari satu komputer ke komputer lainnya. Data ditransfer dalam bentuk enkripsi oleh SSH.

  3. ssh

    The Secure shell client, program yang bekerja seperti telnet. Perintah dapat Anda jalankan secara remote sebagaimana telnet bekerja.

  4. ssh-add

    Menambahkan kunci (key) baru terhadap autentikasi ssh-agent

  5. ssh-agent

    Digunakan untuk autentikasi lewat jaringan dengan model RSA.

  6. sshd

    Secure shell server, secara default bekerja pada port 22.

  7. ssh-keygen

    Program pembuat kunci (key generator) untuk ssh.

Untuk instalasinya mempergunakan langkah-langkah standar dalam kompilasi dan instalasi program yang berbentuk kode sumber.

$ gunzip ssh-1.2.27 | tar xvf -

$ cd ssh-1.2.27

$ ./configure

$ make

$ su

password :

# make install

Selesai proses instalasi, Anda dapat mulai mengedit file konfigurasi untuk SSH :

  • /etc/sshd_config (File konfigurasi server)

  • /etc/ssh_config (File konfigurasi klien)



2. Konfigurasi Server

Secara default, /etc/sshd_config Anda akan tampak sebagai berikut :

Port 22

ListenAddress 0.0.0.0

HostKey /etc/ssh_host_key

RandomSeed /etc/ssh_random_seed

ServerKeyBits 768

LoginGraceTime 600

KeyRegenerationInterval 3600

PermitRootLogin yes

IgnoreRhost no

StrictModes yes

QuietMode no

X11Forwarding yes

X11DisplayOffset 10

FascistLogging no

PrintMod yes

KeepAlive yes

SyslogFacility DAEMON

RhostsAuthentication no

RhostsRSAAuthentication yes

PasswordAuthentication yes

PermitEmptyPasswords yes

UserLogin no

# Checkmail no

#PidFile /u/zappa/.ssh/pid

# AllowHosts *.our.com friend.other.com

# DenyHosts lowsecurity.theirs.com *.evil.org evil.org

# Umask 022

#SilentDeny yes



Untuk menjalankan sshd, cukup ketikkan sshd sebagai root.

# sshd

Ada beberapa pilihan dalam menjalankan sshd. Pilihan ini diketikkan sebagai prefiks saat menjalankan sshd. Misal :

# sshd -g 60 (menjalankan sshd dengan timeout untuk klien 60 detik)

Untuk klien, ssh mempergunakan file /etc/ssh_config. Secara default file tersebut berisi :

# This is ssh client systemwide configuration file. This file provides
# default for users, and the values can be changed in per-user #configuration
# files or on yhe command line.

# configuration data is parsed as follows:
# 1. Command line options
# 2. User- specificc file
# 3. Systemwide file
# Any configuration value is only change the first time it is set.
# Thus, host-specific definitistion should be at the beginning of the
# configuration file, and defaults at the the end.

# Sitewide defaults for various options

# Host *
# ForwardAgent yes
# ForwardX11 yes
# RhostsAuthentication yes
# RhostRSAAuthentication yes
# RSAAuthentication yes
# TISAuthentication no
# PasswordAuthentication yes
# FallBackToRsh yes
# UserRSH no
# BatchMode no
# StrictHostKeyChecking no
# IdentifyFile -/.ssh/identity
# Port 22
# Chiper idea
# EscapeChar -

SSL (Secure Socket Layer)

SSL merupakan salah satu metode enkripsi dalam komunikasi data yang dibuat oleh Netscape Communication Corporation. Sebagaimana yang dijelaskan dalam SSL Protocol Internet Draft (The SSL Protocol, Version 3.0 oleh ALAN O. FREIER dan PAUL C. KOCHER, dapat Anda buka di http://home.netscape.com/eng/ssl3/ssl-toc.html.

SSL adalah Protokol berlapis. Dalam tiap lapisannya, sebuah data terdiri dari panjang, deskripsi dan isi. SSL mengambil data untuk dikirimkan, dipecahkan kedalam blok-blok yang teratur, kemudian dikompres jika perlu, menerapkan MAC, dienkripsi, dan hasilnya dikirimkan. Di tempat tujuan, data didekripsi, verifikasi, dekompres, dan disusun kembali. Hasilnya dikirimkan ke klien di atasnya. (terjemahan bebas).

SSL hanya mengenkripsikan data yang dikirim lewat http. Bagaimana SSL berjalan dapat digambarkan sebagai berikut :

  • Pada saat koneksi mulai berjalan, klien dan server membuat dan mempertukarkan kunci rahasia, yang dipergunakan untuk mengenkripsi data yang akan dikomunikasikan. Meskipun sesi antara klien dan server diintip pihak lain, namun data yang terlihat sulit untuk dibaca karena sudah dienkripsi.

  • SSL mendukung kriptografi public key, sehingga server dapat melakukan autentikasi dengan metode yang sudah dikenal umum seperti RSA dan Digital Signature Standard (DSS).

  • SSL dapat melakukan verifikasi integritas sesi yang sedang berjalan dengan menggunakan algoritma digest seperti MD5 dan SHA. Hal ini menghindarkan pembajakan suatu sesi.

Lebih lanjut artikel yang saya sarankan untuk dibaca untuk mengetahui lebih dalam tentang SSL (semuanya berbahasa Inggris) :

  1. Analysis of the SSL 3.0Protocol,DAVID WAGNER dan BRUCE SCHENEIDER;
    http://www.counterpane.com/ssl.html

  2. Introducing SSL and Certificates, menjelaskan keuntungan sertifikasi SSL;
    http://www.ultranet.com/fhirsch/Papers/cook/ssl_intro.html

  3. Securing Communications on the Intranet and Over the Internet, TAHEL ELGAMAL, JEFF TREUHAFT, danFRANK CHEN, Netscape Communications Corporation;
    http://www.go-digital.net/whitepapers/securecomm.html

  4. The Secure Socket Layer Protocol and Applications, ALLAN SCHIFFMAN, Terisa Systems,Inc;
    http://www.terisa.com:80/presentations/ams/ssl/index.htm

SSL dengan Apache

Menambahkan SSL kedalam apache membutuhkan prosedur yang cukup rumit. Sebelum Anda memulainya, pastikan bahwa Anda benar-benar membutuhkan. SSL biasa dipakai untuk aplikasi e-commerce untuk verifikasi keabsahan kartu kredit atau untuk formulir yang berisi data penting. Jika memang Anda belum berencana untuk menggunakannya, lewati saja bagian ini, dan coba nanti jika Anda menginginkanya.

Program yang dibutuhkan :

  • Apache 1.2.6 atau lebih

  • SSLeay ; ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL/SSLeay-0.8.1b.tar.gz

  • Patch SSL untuk Apache; ftp://ftp.ox/ac/uk/pub/crypto/SSL/Apache-SSL/, sebagai contoh
    apache_1_2_6+ssl_1_17.tar.gz

Catatan:
Jika Apache sudah terinstall dalam komputer Anda, maka perlu dijalankan instalasi ulang, agar patch SSL bisa dimasukkan.

Proses pertama, ekstrak dan instal program SSLeay

$ cp SSLeay-0.8.1b.tar.gz /usr/src

$ cd /usr/src

$ tar -zxvf SSLeay-0.8.1b.tar.gz

$ cd /SSLeay-0.8.1b

$ perl ./Configure linux-elf

Catatan:
Configure Linux-elf hanya berjalan hanya untuk mesin Linux. Untuk mengetahui pilihan-pilihan configure-nya jalankan perintah # perl ./Configure

$ make

$ make rehash

$ make install

Proses selanjutnya adalah ekstrak dan instal Patch SSL untuk Apache ke dalam direktori sumber Apache.

# cp apache_1_2_6+SSL_1_17.tar.gz /usr/src/apache-1.2.6

# cd /usr/src/apache-1.2.6

# tar -zxvf apache_1_2_6+SSL.tar.gz

Yang akan diekstrak adalah :

  • ben.pgp.key.asc- Kunci PGP dari penyusun program

  • EXTRAS.SSL - dokumentasi tambahan fitur

  • LICENSE.SSL - Lisensi Apache SSL

  • Md5sums - MD5 checksums untuk file-file yang diekstrak

  • Md5sums.asc - tandatangan md5sums dari penyusun program

  • README.SSL - dokumentasi pengenalan singkat

  • SECURITY- Artikel tentang keamanan dari sistem SSL

  • Src/apache_ssl.c - Modul tambahan untuk Apache

  • SSLconf/conf/access.conf - file konfigurasi akses untuk apache yang masih kosong

  • SSLconf/conf/httpd.conf - Contoh file httpd.conf (file konfigurasi untuk Apache)

  • SSLconf/conf/mime.types - contoh file konfigurasi mime.types

  • SSLpatch- File patch yang akan dipergunakan.

Setelah file diekstrak, jalankan patch SSL

# patch -p1 <>

Lalu pindah ke/usr/src/apache-1.2.6/src, kopikan fileConfiguration.tmpl menjadiconfiguration. Edit file configuration, dan ganti variabel SSL_BASE untuk menunjuk ke direktori SSLeay yang sebelumnya telah diinstall.

# cp Configuration.tmpl /usr/src/apache-1.2.6/src

# cd /usr/src/apache-1.2.6/src

# pico Configuration.tmpl

Ganti baris # SSL_BASE= /u/ben/cork/scuzzy-ssleay6 menjadi

SSL_BASE=/usr/src/SSLeay-0.8.1b

TekanCtrl-Xuntuk menyimpan, dan jalankan program make untuk apache.

# make

Pastikan bahwa prosedur yang dijalankan telah berjalan dengan benar. Cek apakah make telah membuat file httpsd. Jika ada, maka semuanya berjalan dengan baik.

Setelah itu, edit file sertifikasi SSL yang terletak di /usr/local/ssl/lib. Nama filenya ssleay.cnf. Sesuaikan isiannya dengan kebutuhan Anda, dan jalankan make certificate.

# make certificate

Proses ini akan menghasilkan file httpsd.pem yang terletak di /usr/src/apache_1.2.6/SSLconf/conf.

Selanjutnya, sebelum Apache dijalankan, Anda perlu cek terlebih dahulu file konfigurasi httpsd (sebagaimana file konfigurasi Apache yang telah dibahas sebelumnya, yakni httpd.conf, access.conf dan srm.conf). Cek parameter-paremeter yang berkaitan dengan SSL, seperti contoh berikut :

SSLCACertificatePath /var/httpd/conf

SSLCACertificateFile /var/httpd/conf/httpsd.pem

SSLCertificateFile /var/httpd/conf/httpsd.pem

SSLLogFile /var/httpd/logs/ssl.log

SSLCacheServerPort 8080

SSLCacheServerPath /usr/src/SSLeay-0.8.1b

SSLSessionCacheTimeout 10000

Untuk menjalankan Servernya dengan menunjuk file konfigurasi yang telah dibuat, cukup jalankan perintah :

# httpsd -f/var/httpd/conf/httpd.कॉन्फ़


Algoritma Enkripsi

Dalam menggunakan enkripsi suatu blok, langkah yang pertama dilakukan adalah penghitungan data dengan membagi dua masukan blok ukuran 128 bit plaintext menjadi dua buah 64 bit data yaitu [L|R] terdiri dari L0=L ; R0=R.

Proses ini akan mengalami 16 kali iterasi pada feistel network. Setiap iterasi menggunakan operasi XOR dan operasi + untuk nilai 64 bit data dengan keluaran dari fungsi kompleks non linear f (A,B) yang akan menghasilkan nilai avalanche yang maksimal dari semua masukan bit sebagai berikut :

Rxor f (Ri-1 + SK3i-2 ,SK3i-1) i = Li-1

L+SK3i-2+SK3i i = Ri-1

Hasil dari proses enkripsi dari masukan 128 bit data plaintext menjadi keluaran 128 bit ciphertext adalah sebagai berikut : [R16|L16]


DESKRIPSI

Deskripsi adalah upaya pengolahan data menjadi sesuatu yang dapat diutarakan secara jelas dan tepat dengan tujuan agar dapat dimengerti oleh orang yang tidak langsung mengalaminya sendiri

Algoritma Deskripsi

Untuk proses deskripsi yaitu dengan membagi ciphertest dengan 2 buah 64 bit data yaitu: [R16|L16]

Setelah membagi ciphertext menjadi dua maka melakukan proses kebalikan dari proses enkripsi sebanyak 16 kali iterasi. Maka diperoleh hasil deskripsi sebesar 128 bit plaintext, nilainya yaitu :

Li xor f(Li-SK3i, SK3i-1) i-1 = R

Ri-1 = Li – SK3i – SK3i-2

[L0 |R0]

Hasilnya akan sama dengan menampilkan perhitungan enkripsi dengan sub kunci yaitu menggunakan perintah kebalikannya dengan menggunakan SK3i, SK3i-2.

Proses enkripsi konvensional.

Keamanan dari enkripsi konvensional bergantung pada beberapa factor yaitu :

  1. algoritma enkripsi harus cukup kuat sehingga menjadikan sangat sulit untuk mendekripsi cipher text dengan dasar eipher text tersebut .

  2. keamanan dari algoritma enkripsi konvensional bergantung pada kerahasiaan kuncinya bukan algoritinanya dengan asumsi bahwa sangat tidak praktis untuk mendekripsikan informasi dengan dasar cipher text dan pengetahuan tentang algoritina dekripsi / enkripsi . Dengan kata lain kita tidak perlu menjaga kerahasiaan dari algoritma tetapi cukup dengan kerahasiaan kuncinnya .

Manfaat dari algoritma enkripsi konvensional adalah kemudahan dalam penggunaan secara luas. Kenyataan bahwa algoritma ini tidak perlu dijaga kerahasiaanya dengan maksud bahwa pembuat dapat dan mampu membuat suatu implementasi dalam bentuk chip dengan harga yang murah. Chips ini dapat tersedia secara luas dan disediakan pula untuk beberapa jenis produk . Dengan penggunaan dari enkripsi konvensional , prinsip keamanan adalah menjaga keamanan dari kunci .

Infomasi asal yang dapat dimengerti disimbolkan oleh plain text , yang kemudian oleh algoritma enkripsi diterjemahkan menjadi informasi yang tidak dapat untuk dimengerti yang disimbolkan dengan cipher text . proses enkripsi terdiri dari dua yaitu algoritma dan kunci . Kunci biasanya merupakan suatu string bit yang pendek yang mengontrol algoritma . Algoritma enkripsi akan menghasilkan hasil yang berbeda tergantung pada kunci yang digunakan . Mengubah kunci dari enkripsi akan mengubah output dari algoritma enkripsi


KRIPTOGRAFI

Kriptografi (cryptography) merupakan ilmu dan seni untuk menjaga pesan agar aman. Kriptografi (Cryptography) berasal dari bahasa Yunani yaitu “Crypto” berarti “secret” (rahasia) dan “graphy” berarti “writing” (tulisan). Para pelaku atau praktisi kriptografi disebut cryptographers. Sebuah algoritma kriptografik (cryptographic algorithm), disebut cipher, merupakan persamaan matematik yang digunakan untuk proses enkripsi dan dekripsi. Biasanya kedua persamaan matematik (untuk enkripsi dan dekripsi) tersebut memiliki hubungan matematis yang cukup erat.

Proses yang dilakukan untuk mengamankan sebuah pesan (yang disebut plaintext) menjadi pesan yang tersembunyi (disebut ciphertext) adalah enkripsi (encryption). Ciphertext adalah pesan yang sudah tidak dapat dibaca dengan mudah. Menurut ISO 7498-2, terminologi yang lebih tepat digunakan adalah “encipher”. Proses sebaliknya, untuk mengubah ciphertext menjadi plaintext, disebut dekripsi (decryption). Menurut ISO 7498-2, terminologi yang lebih tepat untuk proses ini adalah “decipher”. Cryptanalysis adalah seni dan ilmu untuk memecahkan ciphertext tanpa bantuan kunci. Cryptanalyst adalah pelaku atau praktisi yang menjalankan cryptanalysis. Cryptology merupakan gabungan dari cryptography dan cryptanalysis.

Untuk mengenkripsi dan mendekripsi data. Kriptografi menggunakan suatu algoritma (cipher) dan kunci (key). Cipher adalah fungsi matematika yang digunakan untuk mengenkripsi dan mendekripsi data. Sedangkan kunci merupakan sederetan bit yang diperlukan untuk mengenkripsi dan mendekripsi data.

Algoritma kriptografi modern tidak lagi mengandalkan keamanannya pada kerahasiaan algoritma tetapi kerahasiaan kunci. Plaintext yang sama bila disandikan dengan kunci yang berbeda akan menghasilkan ciphertext yang berbeda pula. Dengan demikian algoritma kriptografi dapat bersifat umum dan boleh diketahui oleh siapa saja, akan tetapi tanpa pengetahuan tentang kunci, data tersandi tetap saja tidak dapat terpecahkan. Sistem kriptografi atau Cryptosystem adalah sebuah algoritma kriptografi ditambah semua kemungkinan plaintext, ciphertext dan kunci.

  1. Algoritma Kriptografi

Berdasarkan kunci yang dipakai, algoritma kriptografi dapat dibedakan atas dua golongan, yaitu :

a. Kunci Simetris

Kunci Simetris adalah jenis kriptografi yang paling umum digunakan. Kunci untuk membuat pesan yang di sandikan sama dengan kunci untuk membuka pesan yang disandikan itu. Jadi pembuat pesan dan penerimanya harus memiliki kunci yang sama persis. Siapapun yang memiliki kunci tersebut termasuk pihak-pihak yang tidak diinginkan dapat membuat dan membongkar rahasia ciphertext. Contoh algoritma kunci simetris yang terkenal adalah DES (Data Encryption Standard).

Algoritma kriptografi simeteris dibagi menajdi 2 kategori yaitu algoritma aliran (Stream Ciphers) dan algoritma blok (Block Ciphers). Pada algoritma aliran, proses penyandiannya berorientasi pada satu bit atau satu byte data. Sedang pada algoritma blok, proses penyandiannya berorientasi pada sekumpulan bit atau byte data (per blok).

b. Kunci Asimetris

Kunci asimetris adalah pasangan kunci kriptografi yang salah satunya digunakan untuk proses enkripsi dan yang satu lagi untuk dekripsi. Semua orang yang mendapatkan kunci publik dapat menggunakannya untuk mengenkripsikan suatu pesan,data ataupun informasi, sedangkan hanya satu orang saja yang memiliki rahasia tertentu dalam hal ini kunci privat untuk melakukan pembongkaran terhadap sandi yang dikirim untuknya. Contoh algoritma terkenal yang menggunakan kunci asimetris adalah RSA.

Pada algoritma public key ini, semua orang dapat mengenkripsi data dengan memakai public key penerima yang telah diketahui secara umum. Akan tetapi data yang telah terenkripsi tersebut hanya dapat didekripsi dengan menggunakan private key yang hanya diketahui oleh penerima.


एन्क्रिपसी