Selasa, 26 Oktober 2010

Cisco | Keamanan Jaringan Seasion 1 |

Pengantar
Sebelum membaca alangkah indahnya jika and berdoa menurut keyakinan anda masing-masing namun apabila anda tidak yakin lebih baik anda tidak berdoa

Bagaimana kita dapat melindungi transaksi dalam suatu sistem jaringan
komputer?
• Dapatkah kita melindungi pengiriman data?
• Dapatkan kita mensetup saluran yang aman untuk komunikasi?
• Dapatkan kita menentukan pengirim data?

Kebutuhan untuk melindungi kesatuan dan rahasia informasi dan
sesumber lain yang dimiliki oleh individu ataupun organisasi dapat
meliputi keamanan fisik maupun data digital.

Beberapa Ancaman dan Serangan :


Tujuan utama dengan adanya keamanan adalah untuk membatasi akses
informasi dan sesumber hanya untuk pemakai yang memiliki hak akses. 

 Ancaman keamanan:
Leakage (Kebocoran) :
pengambilan informasi oleh penerima yang tidak berhak
Tampering :
pengubahan informasi yang tidak legal
Vandalism (perusakan) :
gangguan operasi sistem tertentu. Si pelaku tidak mengharap keuntungan apapun.
Serangan pada sistem terdistribusi tergantung pada pengkasesan ke
saluran komunikasi yang ada atau membuat saluran baru yang
menyamarkan (masquerade) sebagai koneksi legal
● Penyerangan Pasive, Hanya mengamati komunikasi atau data
Penyerangan Aktif, Secara aktif memodifikasi komunikasi atau data
                 Pemalsuan atau pengubahan Email
                 TCP/IP Spoofing

Beberapa Metode Penyerangan Jess
Eavesdropping, mendapatkan duplikasi pesan tanpa ijin
Masquerading, Mengirim atau menerima pesanmenggunakan identitas
lain tanpa ijin mereka
Message tampering,
Mencegat atau menangkap pesan dan mengubah isinya sebelum
dilanjutkan ke penerima sebenarnya. “man-in-the-middle attack”
adalah bentuk message tampering dengan mencegat pesan pertama
pada pertukaran kunci enkripsi pada pembentukan suatu saluran
yang aman. Penyerang menyisipkan kunci lain yang memungkinkan
dia untuk mendekrip pesan berikutnya seelum dienkrip oleh
penerima
Replaying, menyimpan pesan yang ditangkap untuk pemakaian
berikutnya.
Denial of Service, membanjiri saluran atau sesumber lain dengan pesan
yang bertujuan untuk menggagalkan pengaksesan pemakai lain

Keamanan Transaksi Elektronik jess
Keamanan sangat dibutuhkan pada kebanyak transaksi
• E-commerce
• Banking
• E-mail

Transaksi elektronik dapat aman jika dilindungi dengan kebijakan
dan mekanisme keamanan.
Contoh : Pembeli harus dilindungi terhadap
penyingkapan kode credit number selama pengiriman dan juga terhadap
penjual yang tidak bersedia mengirim barang setelah menerima
pembayaran. Vendor harus mendapatkan pembayaran sebelum barang
dikirim, sehingga perlu dapat memvalidasi calon pembeli sebelum memberi
mereka akses

Kebijakan dan Mekanisme Keamanan jess
● Pemisahan antara kebijakan dan mekanisme keamanan akan membantu
memisahkan kebutuhan implementasinya
Kebijakan menspesifikasikan kebutuhan
Mekanisme menerapkan spesifikasi kebijakan tersebut

● Berdasar spesifikasi dari OSI, sebuah layanan (kebijakan) keamanan
meliputi :
Access Control, Perlindungan terhadap pemakaian tak legak
Authentication, Menyediakan jaminan identitas seseorang
Confidentiality (kerahasiaan), Perlindungan terhadap pengungkapan identitas tak legak
Integrity, Melindungi dari pengubahan data yang tak legak
Non-repudiation (penyangkalan), Melindungi terhadap penolakankomunikasi yang sudah pernah dilakukan

● Untuk mencapai layanan keamanan tersebut, mekanisme-mekanisme yang dapat diterapkan :
Enkripsi
  Digunakan untuk menyediakan kerahasiaan, dapat menyediakan authentication dan perlindungan integritas
Digital Signature
  Digunakan untuk menyediakan authentication, perlindungan integritas, dan non-repudiation
Algoritma Checksum/Hash
   Digunakan untuk menyediakan perlindungan integritas, dan dapat menyediakan authentication. Satu atau    lebih mekanisme dikombinasikan untuk menyediakan security service

Enkripsi
Enkripsi adalah proses pengkodean pesan untuk menyembunyikan isi
Algoritma enkripsi modern menggunakan kunci (key).
Pesan M (plaintext) di enkodekan dengan fungsi E dan sebuah kunci K
untuk menjadi ciphertext.
                            E(K,M) = {M}
                                                   K
Pesan didekripsi dengan menggunakan fungsi D dan kunci L
                            D(K,E(K,M)) = M

Kunci kriptografi adalah parameter yang digunakan dalam algoritma enkripsi dimana hasil enkripsi tidak dapat didekripsi jika tanpa kunci yang sesuai
● Berikut beberapa mode Cipher :
Cipher Block Chaining : Untuk ukuran block data yang tetap, yang populer adalah 64 bit
• Pesan dibagi ke dalam block, dan block terakhir di padding ke ukuran standard yang digunakan, dan setiap block dienkrip secara ndependent
Block pertama tersedia untuk transmisi setelah enkripsi selesai

Stream Chiper menghasilkan keystream dari setiap enkripsi kunci dengan initialization vector (IV)

●Ada dua tipe algoritma enkripsi :
Symmetric (secret-key)
● Pengirim dan penerima harus berbagi kunci dan tidak diberikan kepada orang lain.
One-way function.
● One-way function.

Contoh : DES (Data Encryption Standard), Triple DES
AES (Advanced Encryption Standard) yang disponsori oleh
NIST (National Institute of Standards and Technology)
menetapkan beberapa algoritma enkripsi AES :
• Rijndael (Joan Daemen dan Vincent Rijmen)
• Serpent (Ross Anderson, Eli Biham, Lars Knudsen)
• Twofish (dari Bruce Schneier)
• RC6 (dari RSA Laboratories)
• MARS (dari IBM)
Algoritma AES harus memenuhi :
• symmetric block chiper
• panjang kunci 128, 192 dan 256
• dimungkinkan implementasi pada software maupun hardware
• Algoritma harus umum atau berlisensi tanpa persiaratan yang diskriminatif

Berikut contoh program untuk melakukan enkripsi dan dekripsi DES :import java.security.*;
import javax.crypto.*;
public class EnDeDES {
public static void main(String[] args) {
Cipher ecipher;
Cipher dcipher;
String teks = args[0];
try {
//menghasilkan kunci temporary
SecretKey key =
KeyGenerator.getInstance("DES").generateKey();
ecipher = Cipher.getInstance("DES");
ecipher.init(Cipher.ENCRYPT_MODE, key);
dcipher = Cipher.getInstance("DES");
dcipher.init(Cipher.DECRYPT_MODE, key);
// Enkripsi dimulai
byte[] enc = ecipher.doFinal(teks.getBytes());
String teksEnc =
new sun.misc.BASE64Encoder().encode(enc);
System.out.println("Hasil enkripsi DES '" +
teks + "' adalah " + teksEnc);
// Dekripsi dimulai
byte[] dec = dcipher.doFinal(enc);
System.out.println("Hasil dekripsi DES '" +\
teksEnc + "' adalah " + new String(dec));
} catch (Exception e) {
}
}
}

Hasil eksekusi adalah sebagai berikut :
$ java EnDeDES "Ini percobaan saja dari Budsus"
Hasil enkripsi DES 'Ini percobaan saja dari Budsus'
adalah y4OhBZX/T923EdH07f1x9kf65l6jE38Q0dq9fabwucE=
Hasil dekripsi DES
'y4OhBZX/T923EdH07f1x9kf65l6jE38Q0dq9fabwucE=' adalah
Ini percobaan saja dari Budsus
● Asymmetric (public-key)
● Pengirim pesan menggunakan public key (kunci yang
dipublikasikan ke penerima) untuk mengenkrip pesan
● Penerima menggunakan private key yang cocok (miliknya)
untuk mendekrip pesan.
● Pola public key dimunculkan pertama oleh Diffie Hellman (1976)
● Dasar public key : trap-door function adalah one-way function
yang dapat dibalikkan dengan hanya adanya secret key
● contoh : RSA
Berikut adalah contoh program yang dapat menghasilkan kunci
Public/Private Key dengan menggunakan algoritma RSA

import javax.net.*;
import javax.net.ssl.*;
import java.security.*;
public class getPublicPrivateKey {
public static void main(String[] args) {
try {
//1024-bit Digital Signature Algorithm (DSA)
KeyPairGenerator keyGen =
KeyPairGenerator.getInstance("DSA");
keyGen.initialize(1024);
KeyPair keypair = keyGen.genKeyPair();
PrivateKey privateKey = keypair.getPrivate();
PublicKey publicKey = keypair.getPublic();
System.out.print("Public Key : " + publicKey);
System.out.print("Private Key : " + privateKey);
// Generate a 576-bit DH key pair
keyGen = KeyPairGenerator.getInstance("DH");
keyGen.initialize(576);
keypair = keyGen.genKeyPair();
privateKey = keypair.getPrivate();
publicKey = keypair.getPublic();
System.out.print("Public Key : " + publicKey);
System.out.print("Private Key : " + publicKey);
// Generate a 1024-bit RSA key pair
keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);
keypair = keyGen.genKeyPair();
privateKey = keypair.getPrivate();
publicKey = keypair.getPublic();
System.out.print("Public Key : " + publicKey);
System.out.print("Private Key : " + privateKey);
}catch (java.security.NoSuchAlgorithmException e) {}
}
}
Hasilnya? Silahkan Anda coba sendiri Jess.
Ada kemungkinan juga, bahwa kedua algoritma tersebut digabungkan untuk
membentuk suatu mekanisme kemanan, 


Digital Signature
● Didasarkan pada suatu ikatan tanda (yang tak dapat dirubah) ke suatu
pesan atau dokumen yang hanya diketahui oleh si penandatangan.
● Hal ini dapat dicapai dengan cara mengenkrip sebuah pesan terkompresi
(digest) dengan menggunakan private key
● Digest memiliki ukuran yang tetap yang dihasilkan dari sebuah secure
digest function.
● Contoh ilustrasinya :
● A ingin menandatangani dokumen M, sehingga penerima dapat yakin bahwa M adalah berasal dari A.
● A menghitung digest dokumen dengan fungsi Digest(M).
● A mengenkrip digest dengan private keynya, dan ditambahkan ke M, sehingga menghasilkan {Digest(M)}KApriv.
● B menerima dokumen tersebut dan mengambil M dan menghitung Digest(M).
● B mendekrip dengan {Digest(M)}KApriv menggunakan KApub dan membandingkan isinya dengan hasil perhitungan Digest(M). Jika sama, tandatangan adalah valid.


MAC (Message Authentication Code)
● Menghasilkan random password/key untuk suatu hash
● Hanya pemegang password yang dapat menghasilkan MAC


Beberapa fungsi Digest :
● MD5 (Message Digest 5) oleh Rivest (1991)
• Dapat ditemukan di RFCs 1319-1321
• Panjang digest : 128 bit
● SHA (Secure Hash Algorithm)
• Panjang digest : 160 bit
• Didasarkan pada algoritma MD4

Berikut contoh sederhana dengan JSSE untuk digital signature tersebut :
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class ContohDigest {
public static void main(String args[])
throws NoSuchAlgorithmException {
MessageDigest sha =
MessageDigest.getInstance("SHA");
sha.update("Sistem Terdistribusi".getBytes());
byte[] shaHash = sha.digest();
System.out.println(new String(shaHash));
MessageDigest md5 =
MessageDigest.getInstance("MD5");
md5.update("Sistem Terdistribusi".getBytes());
byte[] md5Hash = md5.digest();
System.out.println(new String(md5Hash));