Upload
prima-arca-n
View
225
Download
0
Embed Size (px)
Citation preview
8/8/2019 System Keamanan Jaringan 1
1/14
Modul 12
Keamanan Jaringan
Pengantar
Bagaimana kita dapat melindungi transaksi dalam suatu sistem jaringankomputer?
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 dansesumber lain yang dimiliki oleh individu ataupun organisasi dapatmeliputi 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 aksesinformasi dan sesumber hanya untuk pemakai yang memiliki hak akses.
Ancaman keamanan:
Leakage (Kebocoran) : pengambilan informasi oleh penerima yangtidak berhak
Tampering : pengubahan informasi yang tidak legal
Vandalism (perusakan) : gangguan operasi sistem tertentu. Sipelaku tidak mengharap keuntungan apapun.
Jaringan Komputer Budi Susanto, S. Kom. 1
1965-75 1975-89 1990-99 Current
Platforms Multi-usertimesharingcomputers
Distributed systemsbased on localnetworks
The Internet, wide-area services
The Internet + mobiledevices
Sharedresources
Memory, files Local services (e.g.NFS), local networks
Email, web sites,Internet commerce
Distributed objects,mobile code
Securityrequirements
User identificationandauthentication
Protection ofservices
Strong security forcommercialtransactions
Access control forindividual objects,secure mobile code
Securitymanagementenvironment
Single authority,single authorizationdatabase (e.g. /etc/passwd)
Single authority,delegation, repli-cated authorizationdatabases (e.g. NIS)
Many authorities,no network-wideauthorities
Per-activityauthorities, groupswith sharedresponsibilities
Instructor s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
8/8/2019 System Keamanan Jaringan 1
2/14
Serangan pada sistem terdistribusi tergantung pada pengkasesan kesaluran komunikasi yang ada atau membuat saluran baru yangmenyamarkan (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 sebelumdilanjutkan ke penerima sebenarnya. man-in-the-middle attackadalah bentuk message tampering dengan mencegat pesan pertamapada pertukaran kunci enkripsi pada pembentukan suatu saluranyang aman. Penyerang menyisipkan kunci lain yang memungkinkandia 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 pesanyang bertujuan untuk menggagalkan pengaksesan pemakai lain
Keamanan Transaksi Elektronik
Keamanan sangat dibutuhkan pada kebanyak transaksi
E-commerce
Banking
Transaksi elektronik dapat aman jika dilindungi dengan kebijakandan mekanisme keamanan. Contoh : Pembeli harus dilindungi terhadappenyingkapan kode credit number selama pengiriman dan juga terhadappenjual yang tidak bersedia mengirim barang setelah menerimapembayaran. Vendor harus mendapatkan pembayaran sebelum barangdikirim, sehingga perlu dapat memvalidasi calon pembeli sebelum memberimereka akses
Jaringan Komputer Budi Susanto, S. Kom. 2
8/8/2019 System Keamanan Jaringan 1
3/14
Kebijakan dan Mekanisme Keamanan
Pemisahan antara kebijakan dan mekanisme keamanan akan membantumemisahkan kebutuhan implementasinya
Kebijakan menspesifikasikan kebutuhan
Mekanisme menerapkan spesifikasi kebijakan tersebut
Berdasar spesifikasi dari OSI, sebuah layanan (kebijakan) keamananmeliputi :
Access Control, Perlindungan terhadap pemakaian tak legak
Authentication, Menyediakan jaminan identitas seseorang
Confidentiality (kerahasiaan), Perlindungan terhadap pengungkapanidentitas 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-mekanismeyang dapat diterapkan :
Enkripsi
Digunakan untuk menyediakan kerahasiaan, dapatmenyediakan authentication dan perlindungan integritas
Digital Signature
Digunakan untuk menyediakan authentication, perlindunganintegritas, dan non-repudiation
Algoritma Checksum/Hash
Digunakan untuk menyediakan perlindungan integritas, dandapat menyediakan authentication
Satu atau lebih mekanisme dikombinasikan untuk menyediakansecurity service
Berikut adalah gambaran model hubungan antara kebijakan (layanan)dengan mekanisme keamanan :
Jaringan Komputer Budi Susanto, S. Kom. 3
8/8/2019 System Keamanan Jaringan 1
4/14
Pada paket JSSE (atau JDK 1.4.2 ke atas) yang di dalamnya terdapat paketjava.security.*, javax.crypto.*, javax.net.*, memberikan beberapa layanankeamanan yang siap Anda gunakan. Berikut beberapa layanan tersebut :
TrustManagerFactoryCertPathValidatorSSLContextCertStore
AlgorithmParameterGeneratorKeyGenerator
MacCipher
SignatureMessageDigestKeyStoreSecureRandomKeyPairGeneratorCertificateFactoryKeyManagerFactory
AlgorithmParameters
KeyAgreementSecretKeyFactoryGssApiMechanismKeyFactoryCertPathBuilder
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 Kuntuk menjadi ciphertext.
Pesan didekripsi dengan menggunakan fungsi D dan kunci L
Jaringan Komputer Budi Susanto, S. Kom. 4
E(K,M) = {M}K
8/8/2019 System Keamanan Jaringan 1
5/14
Kunci kriptografi adalah parameter yang digunakan dalam algoritmaenkripsi dimana hasil enkripsi tidak dapat didekripsi jika tanpa kunci yangsesuai
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 keukuran standard yang digunakan, dan setiap block dienkrip secaraindependent
Block pertama tersedia untuk transmisi setelah enkripsi selesai
Stream Chiper
menghasilkan keystream dari setiap enkripsi kunci denganinitialization vector (IV)
Ada dua tipe algoritma enkripsi : Symmetric (secret-key)
Pengirim dan penerima harus berbagi kunci dan tidak diberikankepada 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
EKey
+Plaintext Chipertext
EKey
+Chipertext Plaintext
8/8/2019 System Keamanan Jaringan 1
6/14
Contoh : DES (Data Encryption Standard), Triple DES
AES (Advanced Encryption Standard) yang disponsori olehNIST (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 yangdiskriminatif
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 temporarySecretKey key =
KeyGenerator.getInstance("DES").generateKey();
ecipher = Cipher.getInstance("DES");ecipher.init(Cipher.ENCRYPT_MODE, key);
Jaringan Komputer Budi Susanto, S. Kom. 6
8/8/2019 System Keamanan Jaringan 1
7/14
dcipher = Cipher.getInstance("DES");dcipher.init(Cipher.DECRYPT_MODE, key);
// Enkripsi dimulaibyte[] enc = ecipher.doFinal(teks.getBytes());String teksEnc =
new sun.misc.BASE64Encoder().encode(enc);System.out.println("Hasil enkripsi DES '" +
teks + "' adalah " + teksEnc);
// Dekripsi dimulaibyte[] 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=' adalahIni percobaan saja dari Budsus
Asymmetric (public-key)
Pengirim pesan menggunakan public key (kunci yangdipublikasikan 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 functionyang dapat dibalikkan dengan hanya adanya secret key
contoh : RSA
Berikut adalah contoh program yang dapat menghasilkan kunciPublic/Private Key dengan menggunakan algoritma RSA
Jaringan Komputer Budi Susanto, S. Kom. 7
8/8/2019 System Keamanan Jaringan 1
8/14
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 pairkeyGen = 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 pairkeyGen = 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 untukmembentuk suatu mekanisme kemanan, seperti yang ditunjukkan padagambar skema berikut :
Jaringan Komputer Budi Susanto, S. Kom. 8
8/8/2019 System Keamanan Jaringan 1
9/14
Digital Signature
Didasarkan pada suatu ikatan tanda (yang tak dapat dirubah) ke suatupesan 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 securedigest function.
Contoh ilustrasinya :
A ingin menandatangani dokumen M, sehingga penerima dapat yakinbahwa 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 menghitungDigest(M).
B mendekrip dengan {Digest(M)}KAprivmenggunakan KApub danmembandingkan isinya dengan hasil perhitungan Digest(M). Jikasama, tandatangan adalah valid.
Jaringan Komputer Budi Susanto, S. Kom. 9
8/8/2019 System Keamanan Jaringan 1
10/14
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'H(M+K)
h
h = h'?
K
M
signed doc
M
K
8/8/2019 System Keamanan Jaringan 1
11/14
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 ataumengubah datanya
Jaringan Komputer Budi Susanto, S. Kom. 11
8/8/2019 System Keamanan Jaringan 1
12/14
Solusinya...
Sebuah Certification Authority (CA) dapat memecahkan masalah tersebut
CA menandatangani kunci Alice untuk menyakinkan Bob. Mallet tidakdapat mengganti dengan kuncinya selama CA tidak bersediamenandatanganinya
Mendapatkan Sertifikat
1.Alice menghasilkanpasangan kunci danmenandatangani public keydan informasi ID denganprivate key
2.CA memeriksa tandatangan
Alice pada public key daninformasi ID. (Dapat melaluiemail, telepon)
3.CA menandatangani publickey dan informasi ID dengankunci CA untuk membuatsertifikat
CA telah mensahkan
public key dan ID4.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 danpemakai dapat menyusun dan menterjemahkannya
Persetujuan terhadap cara urutan pembuatan sertifikat
Jaringan Komputer Budi Susanto, S. Kom. 12
8/8/2019 System Keamanan Jaringan 1
13/14
Format sertifikat pertama kali yang digunakan X.509 untuk melindungimekanisme 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 -aliasbudsus -storepass serverpwd -keypass serverpwdWhat is your first and last name?
[Unknown]: Budi SusantoWhat is the name of your organizational unit?
[Unknown]: FTIWhat is the name of your organization?
[Unknown]: UKDWWhat is the name of your City or Locality?
[Unknown]: YogyakartaWhat is the name of your State or Province?
[Unknown]: DIYWhat is the two-letter country code for this unit?
[Unknown]: IDIs 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.cerEnter keystore password: 12345678Owner: CN=Budi Susanto, OU=FTI, O=UKDW, L=Yogyakarta,ST=DIY, C=IDIssuer: CN=Budi Susanto, OU=FTI, O=UKDW, L=Yogyakarta,ST=DIY, C=IDSerial number: 406aff78
Valid from: Thu Apr 01 00:27:20 GMT+07:00 2004 until:Wed Jun 30 00:27:20 GMT+07:00 2004Certificate fingerprints:
MD5: 09:2B:EF:29:9C:F6:97:ED:9D:80:A5:2C:D0:D1:4A:B3SHA1:1F:DC:E9:72:DD:4F:51:71:6A:A1:E1:F4:BB:A1:1C:3C:AA:44:13:99Trust this certificate? [no]: yCertificate was added to keystore
Jaringan Komputer Budi Susanto, S. Kom. 13
8/8/2019 System Keamanan Jaringan 1
14/14
Manajemen Sertifikat pada M$ Internet Explorer
Jaringan Komputer Budi Susanto, S. Kom. 14