Modul 12
Keamanan Jaringan
Pengantar
● 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.
● Kebutuhan ini muncul karena sesumber tersebut digunakan bersama
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.
Jaringan Komputer – Budi Susanto, S. Kom. 1
1965-75 1975-89 1990-99 Current
Platforms Multi-user
timesharing
computers
Distributed systems
based on local
networks
The Internet, widearea
services
The Internet + mobile
devices
Shared
resources
Memory, files Local services (e.g.
NFS), local networks
Email, web sites,
Internet commerce
Distributed objects,
mobile code
Security
requirements
User identification
and
authentication
Protection of
services
Strong security for
commercial
transactions
Access control for
individual objects,
secure mobile code
Security
management
environment
Single authority,
single authorization
database (e.g. /etc/
passwd)
Single authority,
delegation, replicated
authorization
databases (e.g. NIS)
Many authorities,
no network-wide
authorities
Per-activity
authorities, groups
with shared
responsibilities
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
● 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
● 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
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
Jaringan Komputer – Budi Susanto, S. Kom. 2
Kebijakan dan Mekanisme Keamanan
● 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 penolakan
komunikasi 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
● Berikut adalah gambaran model hubungan antara kebijakan (layanan)
dengan mekanisme keamanan :
Jaringan Komputer – Budi Susanto, S. Kom. 3
Pada paket JSSE (atau JDK 1.4.2 ke atas) yang di dalamnya terdapat paket
java.security.*, javax.crypto.*, javax.net.*, memberikan beberapa layanan
keamanan yang siap Anda gunakan. Berikut beberapa layanan tersebut :
TrustManagerFactory
CertPathValidator
SSLContext
CertStore
AlgorithmParameterGenerator
KeyGenerator
Mac
Cipher
Signature
MessageDigest
KeyStore
SecureRandom
KeyPairGenerator
CertificateFactory
KeyManagerFactory
AlgorithmParameters
KeyAgreement
SecretKeyFactory
GssApiMechanism
KeyFactory
CertPathBuilder
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.
• Pesan didekripsi dengan menggunakan fungsi D dan kunci L
Jaringan Komputer – Budi Susanto, S. Kom. 4
E(K,M) = {M}K
● 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
independent
• 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.
Jaringan Komputer – Budi Susanto, S. Kom. 5
D(K,E(K,M)) = M
+
E
IV
P0
C0
+
E
P1
C1
Key
+
E
P1
C1
IV
Key
+
D
P0
C0
+
D
P1
C1
+
D
P2
C2
Key E
Plaintext + Chipertext
Key E
Chipertext + Plaintext
● 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);
Jaringan Komputer – Budi Susanto, S. Kom. 6
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
Jaringan Komputer – Budi Susanto, S. Kom. 7
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.
Ada kemungkinan juga, bahwa kedua algoritma tersebut digabungkan untuk
membentuk suatu mekanisme kemanan, seperti yang ditunjukkan pada
gambar skema berikut :
Jaringan Komputer – Budi Susanto, S. Kom. 8
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.
Jaringan Komputer – Budi Susanto, S. Kom. 9
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
Jaringan Komputer – Budi Susanto, S. Kom. 10
M
Signing
Verifying
H(M+K) h
H(M+K) h'
h
h = h'?
K
M
signed doc
M
K
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));
}
}
Masalah Distribusi Kunci
● Alice memelihara private key dan mengirim public key ke Bob
● Mallet mencegat kunci tersebut dan mengganti dengan miliknya
● Mallet dapat mendekrip dan menghasilkan tanda tangan palsu atau
mengubah datanya
Jaringan Komputer – Budi Susanto, S. Kom. 11
Solusinya...
● Sebuah Certification Authority (CA) dapat memecahkan masalah tersebut
● CA menandatangani kunci Alice untuk menyakinkan Bob. Mallet tidak
dapat mengganti dengan kuncinya selama CA tidak bersedia
menandatanganinya
Mendapatkan Sertifikat
1.Alice menghasilkan
pasangan kunci dan
menandatangani public key
dan informasi ID dengan
private key
2.CA memeriksa tandatangan
Alice pada public key dan
informasi ID. (Dapat melalui
email, telepon)
3.CA menandatangani public
key dan informasi ID dengan
kunci CA untuk membuat
sertifikat
• CA telah mensahkan
public key dan ID
4.Alice memeriksa kunci, ID dan tandatangan CA
• Menyakinkan bahwa CA tidak mengubah keu dan ID
• Melindungi sertifikat selama pengiriman
5.Alice dan/atau CA mempublishkan sertifikat
Format Sertifikat Standard
● Untuk membuat sertifikat bermanfaat, diperlukan :
• Format standard dan representasi sehingga pembuat sertifikat dan
pemakai dapat menyusun dan menterjemahkannya
• Persetujuan terhadap cara urutan pembuatan sertifikat
Jaringan Komputer – Budi Susanto, S. Kom. 12
● Format sertifikat pertama kali yang digunakan X.509 untuk melindungi
mekanisme pengaksesan server direktori (X.500 – saat ini dikenal LDAP)
● Untuk pemrograman Sertifikat pada Java, silahkan kunjungi tutorial di
http://www.onjava.com/pub/a/onjava/2001/05/03/java_security.html
Contoh menghasilkan sertifikat dengan JSSE
$ keytool -genkey -keystore certs -keyalg rsa -alias
budsus -storepass serverpwd -keypass serverpwd
What is your first and last name?
[Unknown]: Budi Susanto
What is the name of your organizational unit?
[Unknown]: FTI
What is the name of your organization?
[Unknown]: UKDW
What is the name of your City or Locality?
[Unknown]: Yogyakarta
What is the name of your State or Province?
[Unknown]: DIY
What is the two-letter country code for this unit?
[Unknown]: ID
Is CN=Budi Susanto, OU=FTI, O=UKDW, L=Yogyakarta,
ST=DIY, C=ID correct?
[no]: y
Untuk mengimport sertifikat server :
$ keytool -import -keystore jssecacerts -alias budsus
-file server.cer
Enter keystore password: 12345678
Owner: CN=Budi Susanto, OU=FTI, O=UKDW, L=Yogyakarta,
ST=DIY, C=ID
Issuer: CN=Budi Susanto, OU=FTI, O=UKDW, L=Yogyakarta,
ST=DIY, C=ID
Serial number: 406aff78
Valid from: Thu Apr 01 00:27:20 GMT+07:00 2004 until:
Wed Jun 30 00:27:20 GMT+07
:00 2004
Certificate fingerprints:
MD5: 09:2B:EF:29:9C:F6:97:ED:9D:80:A5:2C:D0:D1:4A:B3
SHA1:1F:DC:E9:72:DD:4F:51:71:6A:A1:E1:F4:BB:A1:1C:3C:AA:
44:13:99
Trust this certificate? [no]: y
Certificate was added to keystore
Jaringan Komputer – Budi Susanto, S. Kom. 13
Manajemen Sertifikat pada M$ Internet Explorer
Jaringan Komputer – Budi Susanto, S. Kom.
0 komentar:
Posting Komentar