Professional Documents
Culture Documents
Kriptografi
Kriptografi adalah suatu ilmu yang mempelajari pengamanan informasi melalui teknik-teknik matematika. Dalam kriptografi kita mengenal dua jenis proses, yaitu enkripsi dan dekripsi.
Enkripsi
Proses penyandian suatu informasi(plaintext) menjadi informasi yang tersandikan(ciphertext). Proses ini terjadi menggunakan suatu fungsi atau algoritma enkripsi. Untuk lebih jelasnya kita dapat lihat pada gambar :
Dekripsi
Proses pengembalian informasi yang tersandikan(ciphertext) menjadi informasi yang dapat dimengerti(plaintext). Proses ini juga menggunakan suatu fungsi atau algoritma dekripsi. untuk lebih jelasnya lihat gambar dibawah :
Teknik-teknik Penyandian
Penyandian Simetrik
Pada penyandian simetrik, terdapat satu kunci yang digunakan untuk melakukan proses enkripsi dan dekripsi. Jadi kedua belah yang akan melakukan pertukaran informasi harus memiliki kunci yang sama. Contoh aplikasi penyandian ini adalah Enigma, yaitu mesin penyandian yang digunakan oleh Jerman pada Perang Dunia II. Enigma menghasilkan ratusan kunci yang dibukukan menjadi buku kunci. Lalu lintas pengiriman data dengan gelombang radio pada waktu itu dienkripsi dan didekripsi oleh kunci harian. Di jaman sekarang ini beberapa implementasi penyandian simetrik diantaranya DES(Data Encryption Standard), Triple-DES, Blowfish dan IDEA. Pada penyandian simetrik keamanan sangat tergantung pada kombinasi banyaknya kunci. Sebagai contoh penyandian DES dengan panjang kunci 56 bit, maka kemungkinan terdapat 256 kunci atau sama dengan 72.057.594.037.927.936 kunci. Angka diatas mungkin tampak sangat banyak, tetapi komputer pada saat ini dapat menebak seluruh kombinasi kunci dalam hitungan hari. Sebuah komputer khusus bahkan dapat menebaknya dalam hitungan jam. Mungkin juga karena hal tersebut, penyandian simetrik seperti Triple-DES, Blowfish dan IDEA, menggunakan kunci sepanjang 128 bit. Sehingga terdapat 2128 kunci, yang walaupun jika semua komputer yang ada di dunia ini digabungkan, dibutuhkan waktu yang sangat lama untuk menebak kombinasi kunci yang tepat. Namun demikian kelemahan utama dari penyandian ini adalah mekanisme untuk mengamankan kunci dan mengirimkan kunci tersebut kepada orang yang kita tuju. Cara kerja penyandian simetrik adalah sebagai berikut :
Penyandian Asimetrik
Pada penyandian asimetrik, terdapat dua buah kunci, untuk enkripsi dan dekripsi. Untuk enkripsi disebut public key dan dapat diberikan kepada siapa saja, dan untuk dekripsi disebut private key, yang dibawa oleh pemilik kunci. Jika suatu informasi dienkripsi menggunakan public key maka hanya private key saja yang bisa membuka enkripsi tersebut.
Penyandian Hybrid
Penyandian Hybrid bekerja dengan menggabungkan kelebihan kedua jenis penyandian diatas. Pertama informasi dienkripsi menggunakan penyandian simetrik, lalu kuncinya dienkripsi menggunakan penyandian asimetrik. Dengan demikian keamanan informasi dan kunci menjadi lebih terjamin. Untuk lebih meningkatkan keamanan maka dibuat kunci penyandian simetrik secara acak, disebut juga session key.
Penyandian Hash
Penyandian hash, biasa digunakan untuk pengamanan password dan digital signature. Pada sistem Linux misalnya password yang dimasukkan oleh user, dienkripsi dengan penyandian hash, hasil penyandian ini kemudian dibandingkan dengan hasil hash yang terdapat pada file /etc/password. Sedangkan digital signature bertujuan agar orang mendapatkan dokumen/program yang sama dengan sumbernya. Contohnya sebuah dokumen dienkripsi dengan penyandian hash, hasilnya adalah signature dari dokumen tersebut. Bila seseorang ingin memeriksa apakah dokumen miliknya sama dengan dokumen sumber, maka dia pun dapat melakukan penyandian hash pada dokumen yang dimilikinya, dan signature dari dokumen miliknya dibandingkan dengan signature dari dokumen sumber. Beberapa algoritma penyandian hash diantaranya SHA(Secure Hash Algorithm), MD5, dan DSA.
Implementasi Kriptografi
Pada Linux kita bisa menggunakan program gnupg yang biasanya sudah disertakan pada beberapa distribusi Linux. Jika anda ingin mendapatkan versi terbarunya anda dapat mengambilnya di www.gnupg.org.
Terdapat tiga pilihan kunci, DSA dan Elgamal jika kita juga ingin melakukan enkripsi dan dekripsi dokumen, DSA dan RSA jika hanya ingin membuat signature. Karena kita juga ingin melakukan enkripsi dokumen maka kita pilih opsi nomor 1. Selanjutnya akan muncul pilihan panjang kunci yang kita inginkan. Panjang minimum kunci adalah 768 bit.
DSA keypair will have 1024 bits. About to generate a new ELG-E keypair. minimum keysize is 768 bits default keysize is 1024 bits highest suggested keysize is 2048 bits What keysize do you want? (1024)
Misalkan kita pilih panjang kunci default (1024 bit). Selnajutnya akan muncul pilihan untuk berapa lama umur kunci yang kita buat. Jika kita pilih angka 0 maka kunci tidak akan pernah habis masa berlakunya.
Requested keysize is 1024 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0)
kunci,
formatnya
terdiri
dari
nama,
You need a User-ID to identify your key; the software constructs the
Selanjutnya anda dapat menggunakan pasangan kunci ini untuk berbagai keperluan.
Bila anda ingin mengenkripsinya dengan menggunakan penyandian simetrik maka anda dapat menggunakan pilihan berikut
[iyan@IyaNet iyan]$ gpg --output doc --symmetric rahasia.rtf Enter passphrase:
Masukkan password untuk melindungi dokumen tersebut, kemudian ulangi untuk konfirmasi. Sedangkan untuk mengembalikan dokumen tersebut ke bentuk asalnya ketikkan perintah
[iyan@IyaNet iyan]$ gpg --output rahasia.rtf --decrypt doc.crypt gpg: CAST5 encrypted data Enter passphrase:
Kemudian untuk memeriksa apakah dokumen yang kita terima valid atau tidak ketikkan perintah
[iyan@IyaNet iyan]$ gpg --verify alg.sig algoritma.rtf gpg: Signature made Mon 17 May 2004 09:44:19 AM WIT using DSA key ID 96BB0041 gpg: Good signature from "Yantisa Akhadi (Aliansi) <iyan@greits.com>"
Tampak bahwa dokumen tersebut valid, jika tidak (misal dokumen algoritma.rtf telah
Firewall
Mengapa diberi nama firewall? Mungkin itu pertanyaan yang pertama kali muncul ketika membaca artikel tentang keamanan, baik di Win, Linux maupun sistem operasi apa saja. Menurut istilah konstruksi bangunan, firewall adalah sebuah struktur yang dibuat untuk mencegah penyebaran api. Hampir senada dengan istilah awalnya, Firewall bertujuan menjaga LAN dari "api" akses yang tidak diinginkan dari Internet. Disamping agar pengguna LAN tidak sembarangan mengeluarkan "api" aksesnya ke Internet. Dengan kata lain firewall dibuat untuk membatasi antara dua dunia(LAN dan Internet). Firewall sendiri terbagi menjadi dua jenis 1. Filtering Firewall - yang akan memblok dan melewatkan paket-paket tertentu 2. Proxy Server Firewall - berfungsi sebagai perantara koneksi
Proxy Server
Pada proxy server firewall terdapat satu komputer yang diamankan dengan ketat. Komputer ini disebut juga bastion host. Bastion host dapat dianalogikan sebagai sebuah benteng dengan parit disekelilingnya, pasukan pemanah pada menara, dan gerbang besar dan kuat yang akan memeriksa semua yang berusaha masuk dan keluar dari benteng tersebut. Setiap komputer yang akan berhubungan dengan dunia luar(internet) haruslah login ke bastion host melalui jalur yang aman(misal ssh). Dari bastion host ini client melakukan semua aktivitasnya(browsing, transfer data, chatting, dsb). Bila client mendownload data dari internet, maka data tersebut akan berada pada bastion host. Dari bastion host ini client memindahkannya lagi ke komputer miliknya.
Gb. 1 Header Paket IP Pada Linux, packet filtering ditanamkan pada kernel(sebagai modul kernel, atau digabungkan ke dalam kernel). Penerapan packet filtering sudah cukup lama sejak kernel versi 1.1. Versi pertamanya, masih menyontek kerja ipfw milik BSD(Sistem Operasi buatan University California at Berkeley), dibuat oleh Alan Cox pada akhir 1994. Berkembang menjadi ipfwadm pada kernel 2.0, ipchains pada kernel 2.2 dan terakhir iptables sejak kernel 2.4.
PaketDiteruskan
Gb.2 Perjalanan Paket Ketika paket melewati salah satu chains (INPUT, OUTPUT atau FORWARD), maka chain akan dilihat untuk menentukan "takdir" dari paket tersebut. Jika menurut chain paket tersebut harus di DROP maka paket akan dihapus, begitu juga sebaliknya jika menurut chain paket tersebut di-ACCEPT maka paket tersebut akan melanjutkan perjalanannya. Jadi chain sebenarnya merupakan daftar aturan-aturan. Tiap aturan mengatur tindakan apa yang akan dilakukan terhadap sebuah paket berdasarkan header dari paketnya. Jika aturan pertama tidak cocok dengan header paket maka akan dilanjutkan dengan aturan berikutnya, begiru seterusnya. Hingga apabila tidak ada lagi aturan yang sesuai dengan header paket maka kernel akan melihat pada chain policy, yang berisi aturan/kebijakan umum tentang tindakan terhadap suatu paket. Pada kebanyakan sistem, chain policy biasanya akan men-DROP paket tersebut.
10
Selanjutnya coba anda hubungi komputer bersangkutan(dalam hal ini alamatnya 192.168.100.10) dari komputer lain, misal dengan program ping, maka akan muncul hasil berikut setelah anda menekan Ctrl-C
[iyan@server:~]$ ping 192.168.100.10 PING 192.168.100.10 (192.168.100.10) 56(84) bytes of data. --- 192.168.100.10 ping statistics --24 packets transmitted, 0 received, 100% packet loss, time 23014ms
Sedangkan jika anda ingin menolak semua paket keluar dari sistem, maka mirip dengan perintah diatas hanya saja chainnya diganti dengan OUTPUT, efeknya tidak jauh berbeda.
[root@localhost root]# iptables -A OUTPUT -j DROP
Untuk penolakan yang lebih "sopan" anda dapat menggunakan aksi (-j) REJECT, misal
[root@localhost root]# iptables -A INPUT -j REJECT
Maka hasil ping ke komputer yang bersangkutan akan tampak sebagai berikut
[iyan@server:~]$ ping 192.168.100.10 PING 192.168.100.10 (192.168.100.10) 56(84) bytes of data. From 192.168.100.10 icmp_seq=1 Destination Port Unreachable From 192.168.100.10 icmp_seq=2 Destination Port Unreachable From 192.168.100.10 icmp_seq=3 Destination Port Unreachable From 192.168.100.10 icmp_seq=4 Destination Port Unreachable From 192.168.100.10 icmp_seq=5 Destination Port Unreachable --- 192.168.100.10 ping statistics --5 packets transmitted, 0 received, +5 errors, 100% packet loss, time 4012ms
11
Opsi -s pada perintah diatas berarti source atau sumber paket. Jika kita lihat pada daftar list chain akan muncul hasil sebagai berikut
[root@localhost root]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source DROP all -- 192.168.100.11 Chain FORWARD (policy ACCEPT) target prot opt source Chain OUTPUT (policy ACCEPT) target prot opt source
Selain dengan menggunakan alamat IP, anda juga dapat menggunakan nama domain(walaupun hal ini sebenarnya tidak disarankan) dan subnet(cth: 192.168.1.0/24). Misalkan anda tidak ingin paket yang berasal dari www.jorok.com masuk ke komputer anda, dan anda tidak tahu alamat IP nya maka anda dapat mengetikkan perintah
[root@localhost root]# iptables -A INPUT -s www.jorok.com -j DROP
Demikian halnya pula dengan chain OUTPUT, bedanya disini opsi -s (source) diganti dengan -d (destination). Gunanya misalkan anda tidak ingin orang mengakses www.porno.com maka diterapkan aturan berikut
[root@localhost root]# iptables -A OUTPUT -d www.porno.com -j DROP
12
Selain dengan nama service yang berada pada port tersebut, kita juga bisa menggunakan nomor port. Jadi perintah diatas ekivalen dengan
[root@localhost root]# iptables -A INPUT -p tcp --dport 80 -j DROP
Daftar nomor port beserta nama service yang berjalan pada port tersebut, dapat anda lihat pada /etc/services.
Menghapus aturan
Setidaknya terdapat tiga cara untuk menghapus aturan pada chain 1. Menghapus semua aturan Untuk menghapus semua aturan pada semua chain maka kita dapat mengetikkan perintah dibawah, opsi -F berarti kita melakukan flushing semua aturan.
[root@localhost root]# iptables -F
2. Mengganti opsi -A dengan -D Pada berbagai contoh diatas, jika kita ingin menambahkan sebuah aturan, tentulah kita beri opsi -A, misal aturan berikut ingin kita hapus
[root@localhost root]# iptables -A INPUT -p tcp -j DROP
3. Menghapus berdasar urutan aturan Selain cara diatas ada yang lebih mudah lagi, yaitu dengan melihat nomor urut aturan, misalkan pada daftar aturan terdapat aturan sebagai berikut
[root@localhost root]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination
13
Chain FORWARD (policy ACCEPT) target prot opt source Chain OUTPUT (policy ACCEPT) target prot opt source
Dan kita ingin menghapus aturan untuk men-DROP paket icmp agar bisa di-ping dari komputer lain maka kita dapat gunakan perintah berikut
[root@localhost root]# iptables -D INPUT 2
File aturan akan dibuat pada direktori yang aktif saat ini. Untuk mengaktifkannya kembali pada firewall, ketikkan perintah berikut
[root@localhost root]# iptables-restore < aturan
Dimana perintah diatas akan mengembalikan semua setting yang telah anda buat ke dalam tabel firewall pada kernel. Anda juga dapat meletakkan perintah diatas pada file /etc/rc.local agar setiap start-up linux, semua aturan akan tetap terjaga.
Policy untuk semua chain diatas adalah ACCEPT, jadi jika terdapat paket yang masuk ke sistem yang bersangkutan dan berasal dari 192.168.100.44 maka paket tersebut akan di-ACCEPT, karena alamat 192.168.100.44 tidak ditentukan secara
14
2.Membuka semua pintu akses masuk dan menutup yang tidak diperlukan. Dalam persepsi firewall ini berarti membuat policy menjadi ACCEPT dan kemudian menentukan aturan paket seperti apa saja yang ditolak(DROP). Sekilas kedua hal diatas tampak sama, walaupun sebenarnya banyak perbedaan. Admininstrator jaringan yang mahir, biasa menggunakan prinsip pertama. Jika anda belum terbiasa, anda bisa menggunakan prinsip kedua. Ok, sekarang terserah pada anda desain seperti apa yang akan anda terapkan pada sistem anda. Anda juga berhak menentukan aturan yang terbaik bagi keamanan sistem anda.
15