keamanan cyber 2

Tampilkan postingan dengan label keamanan cyber 2. Tampilkan semua postingan
Tampilkan postingan dengan label keamanan cyber 2. Tampilkan semua postingan

Sabtu, 30 November 2024

keamanan cyber 2


 


berarti “secret” (rahasia) dan “graphy” berarti

“writing” (tulisan) [3]. Para pelaku atau praktisi kriptografi disebut

cryptographers. Sebuah algoritma kriptografik (cryptographic algorithm),

disebut cipher, merupakan persamaan matematik yang dipakai  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) yaitu 

enkripsi (encryption). Ciphertext yaitu  pesan yang sudah tidak dapat

dibaca dengan mudah. Menurut ISO 7498-2, terminologi yang lebih tepat

dipakai  yaitu  “encipher”.

Proses sebaliknya, untuk mengubah ciphertext menjadi plaintext, disebut

dekripsi (decryption). Menurut ISO 7498-2, terminologi yang lebih tepat

untuk proses ini yaitu  “decipher”.

Cryptanalysis yaitu  seni dan ilmu untuk memecahkan ciphertext tanpa

bantuan kunci. Cryptanalyst yaitu  pelaku atau praktisi yang menjalankan

cryptanalysis. Cryptology merupakan gabungan dari cryptography dan

cryptanalysis.


Enkripsi

Enkripsi dipakai  untuk menyandikan data-data atau informasi sehingga

tidak dapat dibaca oleh orang yang tidak berhak. Dengan enkripsi data anda

disandikan (encrypted) dengan memakai  sebuah kunci (key). Untuk

membuka (decrypt) data tersebut dipakai  juga sebuah kunci yang dapat

sama dengan kunci untuk mengenkripsi (untuk kasus private key

cryptography) atau dengan kunci yang berbeda (untuk kasus public key

cryptography). Gambar 2.1 pada halaman 36 menunjukkan contoh proses

enkripsi dan dekripsi dengan dua kunci yang berbeda. 

Secara matematis, proses atau fungsi enkripsi (E) dapat dituliskan sebagai:

(1)

dimana: M yaitu  plaintext (message) dan C yaitu  ciphertext.

Proses atau fungsi dekripsi (D) dapat dituliskan sebagai:

(2)

Elemen dari Enkripsi

Ada beberapa elemen dari enkripsi yang akan dijabarkan dalam beberapa

paragraf di bawah ini.

Algoritma dari Enkripsi dan Dekripsi. Algoritma dari enkripsi yaitu 

fungsi-fungsi yang dipakai  untuk melakukan fungsi enkripsi dan

dekripsi. Algoritma yang dipakai  menentukan kekuatan dari enkripsi,

dan ini biasanya dibuktikan dengan basis matematika.

Berdasarkan cara memproses teks (plaintext), cipher dapat dikategorikan

menjadi dua jenis: block cipher and stream cipher. Block cipher bekerja

dengan memproses data secara blok, dimana beberapa karakter / data

digabungkan menjadi satu blok. Setiap proses satu blok menghasilkan

keluaran satu blok juga. Sementara itu stream cipher bekerja memproses

masukan (karakter atau data) secara terus menerus dan menghasilkan data

pada saat yang bersamaan.

Kunci yang dipakai  dan panjangnya kunci. Kekuatan dari penyandian

bergantung kepada kunci yang dipakai . Beberapa algoritma enkripsi

memiliki kelemahan pada kunci yang dipakai . Untuk itu, kunci yang

lemah tersebut tidak boleh dipakai . Selain itu, panjangnya kunci, yang

biasanya dalam ukuran bit, juga menentukan kekuatan dari enkripsi. Kunci

yang lebih panjang biasanya lebih aman dari kunci yang pendek. Jadi

enkripsi dengan memakai  kunci 128-bit lebih sukar dipecahkan dengan

algoritma enkripsi yang sama tetapi dengan kunci 56-bit. Semakin panjang

sebuah kunci, semakin besar keyspace yang harus dijalani untuk mencari

kunci dengan cara brute force attack atau coba-coba karena keyspace yang

harus dilihat merupakan pangkat dari bilangan 2. Jadi kunci 128-bit

memiliki keyspace 2128, sedangkan kunci 56-bit memiliki keyspace 256

.

Artinya semakin lama kunci baru bisa ketahuan.

Plaintext. Plaintext yaitu  pesan atau informasi yang akan dikirimkan

dalam format yang mudah dibaca atau dalam bentuk aslinya.

Ciphertext. Ciphertext yaitu  informasi yang sudah dienkripsi.

Kembali ke masalah algoritma, keamanan sebuah algoritma yang

dipakai  dalam enkripsi atau dekripsi bergantung kepada beberapa aspek.

Salah satu aspek yang cukup penting yaitu  sifat algoritma yang dipakai .

Apabila kekuatan dari sebuah algoritma sangat tergantung kepada

pengetahuan (tahu atau tidaknya) orang terhadap algoritma yang dipakai ,

maka algoritma tersebut disebut “restricted algorithm”. Apabila algoritma

tersebut bocor atau ketahuan oleh orang banyak, maka pesan-pesan dapat

terbaca. Tentunya hal ini masih bergantung kepada adanya kriptografer

yang baik. Jika tidak ada yang tahu, maka sistem tersebut dapat dianggap

aman (meskipun semu).

Meskipun kurang aman, metoda pengamanan dengan restricted algorithm

ini cukup banyak dipakai  karena mudah implementasinya dan tidak perlu

diuji secara mendalam. Contoh penakai an metoda ini yaitu  enkripsi

yang menggantikan huruf yang dipakai  untuk mengirim pesan dengan

huruf lain. Ini disebut dengan “substitution cipher”.

Substitution Cipher dengan Caesar Cipher

Salah satu contoh dari “substitution cipher” yaitu  Caesar Cipher yang

dipakai  oleh Julius Caesar. Pada prinsipnya, setiap huruf digantikan

dengan huruf yang berada tiga (3) posisi dalam urutan alfabet. Sebagai

contoh huruf “a” digantikan dengan huruf “D” dan seterusnya.

Transformasi yang dipakai  yaitu :

plain : a b c d e f g h i j k l m n o p q r s t u v w x y z

cipher: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

Latihan 1. Buat ciphertext dari kalimat di bawah ini.

PESAN SANGAT RAHASIA

Latihan 2. Cari plaintext dari kalimat ini

PHHW PH DIWHU WKH WRJD SDUWB

penakai an dari Caesar cipher ini dapat dimodifikasi dengan mengubah

jumlah gesaran (bukan hanya 3) dan juga arah geseran. Jadi kita dapat

memakai  Caesar cipher dengan geser 7 ke kiri, misalnya. Hal ini

dilakukan untuk lebih menyulitkan orang yang ingin menyadap pesan sebab

dia harus mencoba semua kombinasi (26 kemungkinan geser).

ROT13

Substitution cipher yang masih umum dipakai  di sistem UNIX yaitu 

ROT13. Pada sistem ini sebuah huruf digantikan dengan huruf yang

letaknya 13 posisi darinya. Sebagai contoh, huruf “A” digantikan dengan

huruf “N”, huruf “B” digantikan dengan huruf “O”, dan seterusnya. Secara

matematis, hal ini dapat dituliskan sebagai:

(3)

Untuk mengembalikan kembali ke bentuk semulanya dilakukan proses

enkripsi ROT13 dua kali [42].

(4)

ROT13 memang tidak didisain untuk keamanan tingkat tinggi. ROT13,

misalnya dipakai  untuk menyelubungi isi dari artikel (posting) di Usenet

news yang berbau ofensif. Sehingga hanya orang yang betul-betul ingin

membaca dapat melihat isinya. Contoh penakai an lain yaitu  untuk

menutupi jawaban dari sebuah teka teki (puzzle) atau jika kita ingin marah￾marah (memaki) akan tetapi ingin agar orang lain tidak tersinggung. (Orang

yang ingin membaca makian kita harus melakukan konversi ROT13

sendiri.)

Program dalam bahasa Perl untuk melakukan ROT13 dapat dilihat dalam

listing di bawah ini.

#! /usr/bin/perl

# rot13: rotate 13

# usageL rot13 < filename.txt

# bugs: only works with lower case

#

# Copyright 1998, Budi Rahardjo

# <rahard@paume.itb.ac.id>, <budi@vlsi.itb.ac.id>

# Electrical Engineering

# Institut Teknologi Bandung (ITB), Indonesia

while (<>) {

 # read a line into $_

 for ($i=0 ; $i < length($_) ; $i++) {

 $ch = substr($_,$i,1);

 # only process if it’s within a-z

 # otherwise skip

 if ( (ord($ch)>=97) and (ord($ch)<=122) ) {

 $newch = &rot13($ch); # rotate it

 printf(“%c”, $newch);

 } else {

 # just print character that was not processed

 print $ch;

 }

 } # end for loop

} # done...




sub rot13 {

 local($ch) = @_;

 $asch = ord($ch) - 97; # get the ascii value and normalize it

 $rotasch = $asch + 13; # rotate 13 it

 # send it back to ascii

 $rotasch = $rotasch % 26;

 $rotasch = $rotasch + 97;

 return($rotasch);

}

Latihan 3. Gunakan program di atas atau buat program sendiri untuk

meng-ROT13-kan kalimat di bawah ini:

“kalau mau aman, pakai enkripsi bung”

Catatan: lupakan spasi dan tanda koma.

Setelah itu, jalankan ROT13 kembali untuk mengembalikan

teks menjadi kalimat semula.

Beberapa editor, seperti vi dan emacs, memiliki fungsi rot13 agar mudah

dipakai . Tahukah anda kunci / cara mengaktifkan rot13 pada kedua

editor tersebut?

Caesar cipher dan ROT13 disebut juga “monoalphabetic ciphers” karena

setiap huruf digantikan dengan sebuah huruf. Huruf yang sama akan

memikili pengganti yang sama. Misalnya huruf “a” digantikan dengan

huruf “e”, maka setiap huruf “a” akan digantikan dengan huruf “e”.

Mono alphabetic cipher ini agak mudah dipecahkan dengan menganalisa

ciphertext apabila beberapa informasi lain (seperti bahasa yang dipakai )

dapat diketahui. Salah satu cara penyerangan (attack) yang dapat dilakukan

yaitu  dengan menganalisa statistik dari frekuensi huruf yang muncul. Cara

ini disebut frequency analysis [44] dan dimotori oleh Al-Kindi sebagai

salah seorang jagoan statistik. Stallings dalam bukunya [45] menunjukkan

statistik kemunculan huruf untuk tulisan dalam bahasa Inggris, dimana

huruf “e” yang paling banyak muncul. Cara yang sama dapat dilakukan

untuk mencari distribusi penakai an huruf dalam teks berbahasa Indonesia.

#! /usr/bin/perl

# statistik munculnya jumlah huruf

# statchar.pl < filename.txt

# bugs: only works with lower case

#

# Copyright 1998, Budi Rahardjo

# <rahard@paume.itb.ac.id>, <budi@vlsi.itb.ac.id>

# Electrical Engineering

# Institut Teknologi Bandung (ITB), Indonesia

while (<>) {

 # read a line into $_

 for ($i=0 ; $i < length($_) ; $i++) {

 $ch = substr($_,$i,1);

 # only process if it’s within a-z

 # otherwise skip

 if ( (ord($ch)>=97) and (ord($ch)<=122) ) {

 $ordch= ord($ch);

 $cumulative{$ordch}++;

 $total++;

 } 

 } # end for loop

} # done...

for ($i=97 ; $i <=122 ; $i++) {

 $muncul = $cumulative{$i};


$persenmuncul = $muncul / $total * 100;

 printf(“%c = %d (%.2g\%)\n”, $i, $muncul, $persenmuncul);

}

Latihan 4. Cari frekuensi munculnya huruf “a” sampai dengan “z”

dalam teks yang memakai  bahasa Indonesia. Peragakan

grafik distribusinya. Sebutkan lima huruf yang paling sering

dan paling jarang dipakai  dalam bahasa Indonesia.1

 Buat

program sendiri atau gunakan perl script di atas untuk

mencari distribusinya.

Frequency analysis bermanfaat jika teks yang tersedia cukup panjang. Teks

yang pendek, dengan jumlah huruf yang lebih sedikit, biasanya memiliki

deviasi dari data-data statistik munculnya huruf. Selain itu ada beberapa

kasus dimana sengaja dibuat teks yang “merusak” struktur frekuensi

tersebut. Sebagai contoh, pengarang Perancis yang bernama Georges Perec

di tahun 1969 menulis “La Disparition” (sebuah novel dengan 200

halaman) tanpa kata yang memakai  huruf “e”. Karya ini kemudian

diterjemahkan oleh ke dalam bahasa Inggris oleh seorang pengarang Inggris

yang bernama Gilbert Adair dengan tetap tanpa memakai  huruf “e”.

Judul terjemahannya yaitu  “A Void”. Cerita ini diulas dalam buku [44].

Meskipun banyak usaha dilakukan untuk mempersulit frequency analysis,

monoalphabetic cipher relatif tetap mudah dipecahkan. Salah satu cara

untuk mempersulit yaitu  dengan memakai  polyalphabetic cipher.

Contoh implementasinya dari Caesar cipher yaitu  dengan memakai 

dua tabel, dimana yang satu digeser 3 dan satunya lagi digeser 7, misalnya.

Huruf pertama dari plain text akan digantikan dengan memakai  tabel

pertama (yang digeser 3), huruf kedua digantikan dengan memakai 

tabel kedua (yang digeser 7), huruf selanjutnya memakai  tabel pertama

kembali dan seterusnya. Dengan mekanisme ini, huruf “b” ada

kemungkinan dipetakan ke huruf lain, tidak sama. Hal ini mengacaukan

analisis yang memakai  statistik. Kita juga dapat mempersulit lebih

lanjut dengan memakai  lebih dari dua tabel konversi.

Multiple-letter encryption

Untuk meningkatkan keamanan, enkripsi dapat dilakukan dengan

mengelompokkan beberapa huruf menjadi sebuah kesatuan (unit) yang

kemudian dienkripsi. Ini disebut multiple-letter encryption. Salah satu

contoh multiple-letter encryption yaitu  “Playfair”.

Enigma Rotor Machine

Enigma rotor machine merupakan sebuah alat enkripsi dan dekripsi

mekanik yang dipakai  dalam perang dunia ke dua oleh Jerman. Dia

terdiri atas beberapa rotor dan kabel yang silang menyilang menyebabkan

substitusi alfabet yang selalu berubah sehingga Enigma

mengimplementasikan polyalphabetic chiper. Setiap huruf diketikkan, rotor

berputar untuk mengubah tabel konversi. Susunan dari rotor dan kondisi

awalnya merupakan kunci dari enkripsinya. Perubahan ini sangat

menyulitkan analisis biasa dan statistik. Buku “Code Book” [44] banyak

membahas tentang Enigma ini.

Penyandian yang memakai  Enigma ini akhirnya berhasil dipecahkan

oleh Alan Turing dan kawan-kawannya di Inggris dengan memakai 

komputer. Jadi aplikasi komputer yang pertama yaitu  untuk melakukan

cracking terhadap Enigma. Banyak orang yang percaya bahwa perang dunia

kedua menjadi lebih singkat dikarenakan Sekutu berhasil memecahkan

sandi Jerman yang menentukan posisi U-boat nya.



penakai an Kunci

Salah satu cara untuk menambah tingkat keamanan sebuah algoritma

enkripsi dan dekripsi yaitu  dengan memakai  sebuah kunci (key) yang

biasanya disebut K. Kunci K ini dapat memiliki rentang (range) yang cukup

lebar. Rentang dari kemungkinan angka (harga) dari kunci K ini disebut

keyspace. Kunci K ini dipakai  dalam proses enkripsi dan dekripsi

sehingga persamaan matematisnya menjadi:

(5)

(6)

Keamanan sistem yang dipakai  kemudian tidak bergantung kepada

pengetahuan algoritma yang dipakai , melainkan bergantung kepada

kunci yang dipakai . Artinya, algoritma dapat diketahui oleh umum atau

dipublikasikan. Usaha untuk memecahkan keamanan sistem menjadi usaha

untuk memecahkan atau mencari kunci yang dipakai .

Usaha mencari kunci sangat bergantung kepada keyspace dari kunci K.

Apabila keyspace ini cukup kecil, maka cara brute force atau mencoba

semua kunci dapat dilakukan. Akan tetapi apabila keyspace dari kunci yang

dipakai  cukup besar, maka usaha untuk mencoba semua kombinasi kunci

menjadi tidak realistis. Keyspace dari DES, misalnya, memiliki 56-bit.

Untuk mencoba semua kombinasi yang ada diperlukan kombinasi.

(Cerita tentang kelemahan DES akan diutarakan di bagian lain.)

Latihan 5. Jika sebuah komputer dapat mencoba 1000 kombinasi

dalam 1 detik, berapa waktu yang dibutuhkan untuk

mencoba semua kombinasi DES yang memakai  56 bit?

Aplikasi dari Enkripsi

Contoh penakai an enkripsi yaitu  program Pretty Good Privacy (PGP)

[17], dan secure shell (SSH). Program PGP dipakai  untuk mengenkripsi

dan menambahkan digital siganture dalam e-mail yang dikirim. Program

SSH dipakai  untuk mengenkripsi sesion telnet ke sebuah host. Hal ini

akan dibahas lebih lanjut pada bagian lain

Permasalahan Kriptografi Kunci Privat

Pada penjelasan sebelumnya kita lihat bahwa proses enkripsi memakai 

kunci dalam proses penyandiannya. Pada mulanya semua proses kriptografi

memakai  satu kunci yang sama untuk mengunci data dan membuka

data. Jadi, kerahasiaan kunci ini sangat esensial. Jika kunci ini jatuh ke

tangan pihak yang tidak berwenang, maka terbukalah rahasia.

penakai an satu kunci ini membuat sistem pengamanan data tadi disebut

private-key cryptosystem, atau sistem kriptografi berbasis kunci privat.

Penekanan ada pada kata “privat”, dimana kunci ini harus dirahasiakan,

privat.

Selain itu sistem ini juga disebut symmetric cryptosystem, atau sistem

kriptografi simetris karena kunci yang dipakai untuk proses enkripsi sama

dengan kunci yang dipakai  pada proses dekripsi. Simetris.

Dalam aplikasinya, sistem kripto kunci privat ini memiliki beberapa

masalah. Masalah pertama yaitu  kesulitan dalam distribusi kunci. (Key

Distribution Problem.) Jika Anwar (A) ingin berkomunikasi melalui email

dengan Broto (B) dengan mengenkripsi datanya (karena tidak yakin jalur

data mereka aman dari penyadapan), apa kunci yang mereka gunakan?

Bagaimana cara mereka untuk membuat kesepakatan kunci yang akan

dipakai ? Jika kunci tersebut dikirimkan melalui jalur komunikasi yang

dianggap tidak aman tersebut, maka ada kemungkinan disadap orang.

Ada beberapa solusi terhadap masalah ini, misalnya Anwar dan Broto

bertemu dahulu secara fisik kemudian mendiskusikan kunci rahasia mereka.

Atau mereka memakai  media lain (misalnya telepon, fax, handphone,

SMS) untuk mengirimkan kunci rahasia mereka. Pendekatan ini disebut

dengan out of band communication. Tapi masalahnya tidak semua orang

memiliki cara komunikasi lain, atau kemungkinannya cara lain menjadi

mahal dan tidak nyaman. Bayangkan jika anda harus mengkomunikasikan

password ini, “s%Xy7&*!ih198907@1”, kepada lawan bicara anda melalui

telepon. Sangat tidak nyaman dan sulit.

Kesulitan akan semakin bertambah jika kedua belah pihak belum pernah

kenal satu sama lainnya. Misalnya kita membuat sebuah situs web untuk

melakukan transaksi online. Kita belum kenal dengan (calon) pembeli yang

mengunjungi situs web kita. Bagaimana memilih kunci rahasia antara kita

dengan sang pembeli tersebut? (Ini permasalahan key exchange.)

Permasalahan kedua yaitu  peningkatan jumlah kunci yang

eksponensial terhadap jumlah penakai . Pada contoh sebelumnya, jika

Anwar ingin berkomunikasi dengan Broto, mereka harus punya satu kunci

rahasia. Bagaimana jika Anwar ingin berkomunikasi dengan Dodi?

Tentunya mereka tidak bisa memakai  kunci yang sama dengan kunci

Anwar-Broto. Anwar dan Dodi harus sepakat untuk memakai  satu

kunci yang lain, kunci Anwar-Dodi. Bagaimana jika Broto ingin

berkomunikasi dengan Dodi? Maka akan ada kunci Broto-Dodi yang

berbeda dengan kunci yang sudah-sudah. Jika skenario ini kita teruskan

dengan menambahkan penakai  lain, maka dapat kita lihat peningkatan

jumlah kunci secara eksponensial.

Jika n merupakan jumlah penakai  yang akan saling berkomunikasi, maka

jumlah kunci yang ada yaitu :

jumlah kunci = (n) (n-1) / 2

Mari kita coba tabel jumlah kunci yang dipakai  dengan jumlah

penakai .

Dapat kita lihat pada tabel di atas bahwa peningkatan jumlah kunci meledak

secara eksponensial. (Dari rumus pun dapat dilihat bahwa jumlah kunci

merupakan hasil kuadrat dari n.) Dengan hanya seratus ribu penakai  saja,

sudah ada lima (5) milyar kunci. Padahal jumlah penakai  Internet sangat

jauh lebih besar dari seratus ribu orang. Jika satu kunci membutuhkan

penyimpanan sebesar 1 kByte, maka dibutuhkan 5 TerraBytes untuk

menyimpan kunci 100.000 orang.

Jika kita berbicara tentang transaksi di Internet, e-commerce, maka bisa kita

lihat dua kesulitan di atas sudah membuat kriptografi kunci privat menjadi

tidak cocok. Jumlah penakai  e-commerce lebih dari 100.000 orang.

Sementara itu key distribution juga sulit. Harus dicari sistem lain yang lebih

baik.

Kriptografi Kunci Publik

Kesulitan dalam penakai an kriptografi kunci privat membuat banyak

orang berpikir keras untuk mencari solusinya. Salah satu ide yang muncul

yaitu  bagaimana jika kita membuat sebuah sistem penyadian dengan dua

kunci, dimana satu kunci dipakai  untuk proses enkripsi dan satu kunci

lain dipakai  untuk proses dekripsi.

Ide ini muncul dari Ralph Merkle ketika dia menjadi mahasiswa di sebuah

perguruan tinggi. Ide tersebut dikemukakannya kepada dosennya. Namun

ditolak mentah-mentah. Ide dua kunci tersebut tidak akan dapat

dilaksanakan. Itu ide gila. Ralph Merkle kemudian menulis sebuah artikel

yang dikirimkan ke journal, tapi artikel ini juga ditolak.

Bagaimana ide itu bermula? Saya ambil sebuah cerita. (Cerita ini bukan

contoh yang dipakai  oleh Ralph Merkle.) Ceritanya yaitu  sebagai

berikut.

Anwar dan Broto ingin bertukar pesan atau benda melalui pos. Mereka

tidak ingin orang lain, termasuk pak Pos, mengetahui isi kirimannya. Anwar

punya ide yang brilian. Anwar bertemu dengan Broto dan memberikan

sebuah gembok yang terbuka, belum terkunci. Sementara itu Anwar tetap

memegang kunci gemboknya tersebut. Kita sebut gembok ini yaitu 

gembok-A. Ketika Broto ingin mengirimkan pesan (atau benda) kepada

Anwar, dia letakkan pesan tersebut di dalam sebuah peti. Beserta pesan

tersebut Broto juga memasukkan gembok dia (kita sebut gembok-B) yang

terbuka juga. Kemudian pesan dan gembok-B ini dimasukkan di peti dan

peti dikunci dengan gembok-A. Dalam kondisi seperti ini, tidak ada

seorangpun yang dapat membuka peti itu kecuali Anwar, karena hanya

Anwar yang memiliki kunci gembok-A. Broto pun setelah mengunci peti

tersebut tidak bisa membukanya kembali.

Di sisi penerima, Anwar, dia menerima peti yang sudah terkunci dengan

gembok-A. Tentu saja dia dengan mudah dapat membuka peti tersebut

karena dia memiliki kunci gembok-A. Setelah dia buka, maka dia dapat

melihat pesan yang dikirimkan oleh Broto beserta gembok-B milik Broto

yang terbuka.

Jika kemudian Anwar ingin mengirimkan jawaban atau pesan kepada

Broto, maka dia dapat memasukkan jawabannya ke dalam peti dan tidak

lupa mengikutsertakan gembok-A lagi yang terbuka ke dalamnya. Peti

tersebut kemudian dikunci dengan gembok-B lagi, yang hanya dapat dibuka

oleh Broto. Proses ini dapat berlangsung terus menerus.

Contoh cerita di atas tentu saja masih belum sempurna. Inti yang ingin

disampaikan yaitu  bahwa ada kemungkinan untuk melakukan

pengamanan dengan tidak memakai  enkripsi kunci privat. Penerima

dan pengirim pesan dapat memakai  kunci yang berbeda untuk

pengamanan datanya.

Di tempat lain, ada seorang yang bernama Whitfield Diffie, juga memiliki

ide yang mirip. Setelah mengembara kesana kemari, akhirnya Diffie

bertemu dengan Martin Hellman yang menjadi profesor di Stanford

University. Keduanya kemudian merumuskan ide public-key cryptography

dalam sebuah makalah yang berjudul “New Directions in Cryptography”

[10] di tahun 1976. Lucunya Diffie dan Hellman tidak kenal Ralph Merkle

dan tidak tahu bahwa ada ide yang mirip. Pasalnya, artikel Merkle ditolak

oleh berbagai publikasi.

Ide utama pada public-key cryptography yaitu  kunci yang dipakai 

untuk melakukan proses enkripsi berbeda dengan proses dekripsi. Hal ini

dimungkinkan dengan penakai an rumus matematik yang indah. Namun

pencarian rumus matematik yang mana merupakan persoalan tersendiri.

Setelah keluarnya makalah tersebut, banyak orang yang mulai menaruh

perhatian pada kriptografi kunci publik. Ternyata ide Ralph Merkle benar

juga. Bahkan akhirnya Ralph Merkle mendapat penghargaan Kanellakis

Award dari ACM dan Kobayashi Award dari IEEE.

Salah satu kelompok yang tertarik kepada ide kriptografi kunci publik

tersebut yaitu  kelompok di MIT yang terdiri atas Ron Rivest, Adi Shamir,

dan Len Adleman. Mereka mencoba mencari rumus matematik yang dapat

mengimplementasikan ide kunci publik tersebut. Akhirnya setelah sekian

lama berusaha, mereka menemukan algoritmanya yang kemudian dikenal

dengan nama RSA (yang merupakan singkatan dari nama keluarga ketiga

orang tersebut)1

. Algoritma ini kemudian mereka patenkan. Saat ini banyak

aplikasi di Internet yang memakai  algoritma RSA ini.

Pada kriptografi kunci publik, seorang penakai  memiliki dua buah kunci

yang saling berhubungan (secara matematik yang akan dijelaskan

kemudian). Kunci pertama disebut kunci publik. Kunci ini boleh diketahui

oleh umum. Bahkan kunci ini harus diketahui oleh pihak yang ingin

mengirimkan informasi rahasia ke penakai . Umumnya kunci publik ini

disimpan di sebuah database.

Kunci kedua disebut kunci privat. Kunci ini tidak boleh diketahui oleh

siapa pun kecuali oleh penakai  itu sendiri. Itulah sebabnya dia disebut

privat.

Mari kita ambil contoh pengamanan data dengan memakai  kriptografi

kunci publik ini. Sebelum dimulai, Anwar dan Broto masing-masing sudah

memiliki sepasang kunci. Anwar memiliki Kpublik-A dan Kprivat-A

sebagai pasangan kunci publik dan privatnya. Sementara itu Broto memiliki

Kpublik-B dan Kprivat-B sebagai pasangan kunci publik dan privatnya.

 Kunci publik milik Anwar dan Broto keduanya disimpan di database

(website) umum sehingga dapat diakses oleh siapa saja.

Misalkan Anwar ingin mengirimkan sebuah pesan kepada Broto. Anwar

mencari kunci publik Broto. Setelah dicek di database Anwar

menemukannya, Kpublik-B. Maka Anwar kemudian mengenkripsi

pesannya dengan sebuah algoritma kunci publik (yang akan dijelaskan

kemudian) dengan kunci Kpublik-B.

Algoritma kunci publik (seperti misalnya RSA, ECC) memiliki sifat bahwa

jika dia dikunci oleh sebuah kunci publik, maka dia hanya dapat dibuka

dengan memakai  kunci privat pasangannya. Dalam contoh di atas,

pesan dikunci dengan memakai  Kpublik-B. Maka pesan di atas hanya

dapat dibuka dengan Kprivat-B. Satu-satunya orang yang memiliki akses

terhadap Kprivat-B yaitu  Broto. Dengan kata lain, pesan di atas hanya

dapat dibuka oleh Broto. Anwar pun sebagai pengirim, setelah mengunci

pesan tersebut dengan Kpublik-B, tidak dapat membuka pesan itu kembali.

Demikianlah proses enkripsi yang terjadi pada kriptografi kunci publik.

Karena kunci yang dipakai  untuk melakukan enkripsi berbeda dengan

kunci yang dipakai  untuk proses dekripsi, maka sistem ini sering juga

disebut dengan asymetric cryptosystem, kriptografi kunci asimetrik.

Kriptografi Gabungan

Sejak dikembangkannya kriptografi kunci publik, selalu timbul pertanyaan

mana yang lebih baik antara kripto kunci publik dengan kripto kunci privat.

Para pakar kriptografi mengatakan bahwa keduanya tidak dapat

dibandingkan karena mereka memecahkan masalah dalam domain yang

berbeda. Kriptografi kunci privat (simetrik) merupakan hal yang terbaik

untuk mengenkripsi data. Kecepatannya dan keamanan akan choosen￾ciphertext attack merupakan kelebihannya. Sementara itu kriptografi

dengan memakai  kunci publik dapat melakukan hal-hal lain lebih baik,

misalnya dalam hal key management. (Diskusi lebih jauh dapat dilihat di

referensi [42].)


Karena masing-masing jenis kriptografi tersebut memiliki keuntungan

tersendiri, maka aplikasi sekarang banyak yang menggabungkan keduanya

(hybrid system). Kriptografi kunci publik dipakai  untuk melakukan

pertukaran kunci (key exchange) dimana kunci yang dipertukarkan ini

(session key) akan dipakai  untuk enkripsi dengan kunci privat.

Aplikasi yang memakai  mekanisme seperti di atas antara lain; SSL,

dan PGP.

Data Encryption Standard (DES)

DES, atau juga dikenal sebagai Data Encryption Algorithm (DEA) oleh

ANSI dan DEA-1 oleh ISO, merupakan algoritma kriptografi simetris yang

paling umum dipakai  saat ini. Sejarahnya DES dimulai dari permintaan

pemerintah Amerika Serikat untuk memasukkan proposal enskripsi. DES

memiliki sejarah dari Lucifer1

, enkripsi yang dikembangan di IBM kala itu.

Horst Feistel merupakan salah satu periset yang mula-mula

mengembangkan DES ketika bekerja di IBM Watson Laboratory di

Yorktown Heights, New York. DES baru secara resmi dipakai  oleh

pemerintah Amerika Serikat (diadopsi oleh National Bureau of Standards)

di tahun 1977. Ia dikenal sebagai Federal Information Processing Standard

46 (FIPS PUB46).

Aplikasi yang memakai  DES antara lain:

• enkripsi dari password di sistem UNIX

• berbagai aplikasi di bidang perbanka

Memecahkan DES

DES merupakan block chiper yang beroperasi dengan memakai  blok

berukuran 64-bit dan kunci berukuran 56-bit. Brute force attack dengan

mencoba segala kombinasi membutuhkan 256 kombinasi atau sekitar 7x

1017 atau 70 juta milyar kombinasi.

DES dengan penakai an yang biasa (cookbook mode) dengan panjang

kunci 56 bit saat ini sudah dapat dianggap tidak aman karena sudah berhasil

dipecahkan dengan metoda coba-coba (brute force attack).

Ada berbagai group yang mencoba memecahkan DES dengan berbagai

cara. Salah satu group yang bernama distributed.net memakai 

teknologi Internet untuk memecahkan problem ini menjadi sub-problem

yang kecil (dalam ukuran blok). penakai  dapat menjalankan sebuah

program yang khusus dikembangkan oleh tim ini untuk mengambil

beberapa blok, via Internet, kemudian memecahkannya di komputer

pribadinya. Program yang disediakan meliputi berbagai operating system

seperti Windows, DOS, berbagai variasi Unix, Macintosh. Blok yang sudah

diproses dikembalikan ke distributed.net via Internet. Dengan cara ini

puluhan ribu orang, termasuk penulis, membantu memecahkan DES.

Mekanisme ini dapat memecahkan DES dalam waktu 30 hari.

Sebuah group lain yang disebut Electronic Frontier Foundation (EFF)

membuat sebuah komputer yang dilengkapi dengan Integrated Circuit chip

DES cracker. Dengan mesin seharga US$50.000 ini mereka dapat

memecahkan DES 56-bit dalam waktu rata-rata empat (4) sampai lima (5)

hari. DES cracker yang mereka kembangkan dapat melakukan eksplorasi

keseluruhan dari 56-bit keyspace dalam waktu sembilan (9) hari.

Dikarenakan 56-bit memiliki 216 (atau 65536) keyspace dibandingkan DES

dengan 40-bit, maka untuk memecahkan DES 40-bit hanya dibutuhkan

waktu sekitar 12 detik1

. Dikarenakan hukum average, waktu rata-rata untuk

memecahkan DES 40-bit yaitu  6 detik.

Perlu diingat bahwa group seperti EFF merupakan group kecil dengan

budget yang terbatas. Dapat dibayangkan sistem yang dimiliki oleh

National Security Agency (NSA) dari pemerintah Amerika Serikat1

.

Tentunya mereka dapat memecahkan DES dengan lebih cepat.

Bahan bacaan DES

Banyak sudah buku, artikel yang memuat informasi tentang DES. Bagi anda

yang berminat untuk mempelajari DES lebih lanjut, silahkan mengunakan

referensi [13, 15, 27, 30, 42 - Chapter 12].

Untuk DES cracker dari EFF, silahkan kunjungi web sitenya di

http://www.eff.org/descracker.html

 Hash function - integrity checking

Salah satu cara untuk menguji integritas sebuah data yaitu  dengan

memberikan “checksum” atau tanda bahwa data tersebut tidak berubah.

Cara yang paling mudah dilakukan yaitu  dengan menjumlahkan karakter￾karakter atau data-data yang ada sehingga apabila terjadi perubahan, hasil

penjumlahan menjadi berbeda. Cara ini tentunya mudah dipecahkan dengan

memakai  kombinasi data yang berbeda akan tetapi menghasilkan hasil

penjumlahan yang sama.

Pada sistem digital biasanya ada beberapa mekanisme pengujian integritas

seperti antara lain:

• parity checking

• checksum

• hash function

Fungsi Hash (hash function) merupakan fungsi yang bersifat satu arah

dimana jika kita masukkan data, maka dia akan menghasilkan sebuah

“checksum” atau “fingerprint” dari data tersebut. Sebuah pesan yang

dilewatkan ke fungsi hash akan menghasilkan keluaran yang disebut

Message Authenticated Code (MAC). Dilihat dari sisi matematik, hash

function memetakan satu set data ke dalam sebuah set yang lebih kecil dan

terbatas ukurannya.

Mari kita ambil sebuah contoh sederhana, yaitu fungsi matematik modulus

(atau dalam pemrograman memakai  mod). Hasil dari operasi mod

yaitu  sisa pembagian bilangan bulat (integer). Sebagai contoh, “11 mod 7”

menghasilkan nilai 4, karena 11 dibagi 7 menghasilkan nilai 1 dan sisanya

yaitu  4. Contoh lain “17 mod 7” menghasilkan bilangan 3, karena 17

dibagi 7 menghasilkan 2 dan sisanya yaitu  3. Demikian pula “18 mod 7”

akan menghasilkan 4. Dalam sehari-hari, operasi modulus kita gunakan

dalam penunjukkan jam, yaitu modulus 12.

Kalau kita perhatikan contoh di atas. Hasil dari opreasi mod tidak akan lebih

besar dari angka pembaginya. Dalam contoh di atas, hasil “mod 7” berkisar

dari 0 ke 6. Bilangan berapapun yang akan di-mod-kan akan menghasilkan

bilangan dalam rentang itu. Tentu saja angka 7 bisa kita ganti dengan angka

lain, misalnya sebuah bilangan prima yang cukup besar sehingga rentang

bilangan yang dihasilkan bisa lebih besar.

Hal kedua yang perlu mendapat perhatian yaitu  bahwa diketahui hasil

operasi modulus, kita tidak tahu bilangan asalnya. Jadi kalau diberitahu

bahwa hasil operasi modulus yaitu  4, bilangan awalnya bisa 11, 18, 25,

dan seterusnya. Ada banyak sekali. Jadi, dalam aplikasinya nanti agak sukar

mengkonstruksi sebuah pesan asli jika kita hanya tahu hasil dari fungsi

hashnya saja.

Tentu saja operator mod sendirian tidak dapat dipakai  sebagai fungsi

hash yang baik. Ada beberapa persyaratan agar fungsi hasil baru dapat

dipakai  secara praktis. Misalnya, rentang dari hasil fungsi hash harus

cukup sehingga probabilitas dua pesan yang berbeda akan menghasilkan

keluaran fungsi hash yang sama. Perlu ditekankan kata “probabilitas”,

karena secara teori pasti akan ada dua buah data yang dapat menghasilkan

keluaran fungsi hash yang sama1

. Hal ini disebabkan rentang fungsi hash

yang sangat jauh lebih kecil dibandingkan space dari inputnya. Tapi hal ini

masih tidak terlalu masalah karena untuk membuat dua pesan yang sama￾sama terbaca (intelligible) dan memiliki keluaran fungsi hash yang sama

tidaklah mudah. Hal yang terjadi yaitu  pesan (data) yang sama itu dalam

bentuk sampah (garbage).

Syarat lain dari bagusnya sebuah fungsi hash yaitu  perubahan satu

karakter (dalam berkas teks) atau satu bit saja dalam data lainnya harus

menghasilkan keluaran yang jauh berbeda, tidak hanya berbeda satu bit

saja. Sifat ini disebut avalanche effect.

Ada beberapa fungsi hash yang umum dipakai  saat ini, antara lain:

• MD5

• SHA (Secure Hash Algorithm)

 Latihan 6. Gunakan MD5 untuk menghasilkan fingerprint dari

kalimat berikut: “Saya pesan 10 buah komputer.” (tanpa

tanda petik). Kemudian bandingkan hasil MD5 tersebut

dengan hasil MD5 dari kalimat: “Saya pesan 11 buah

komputer.”

Contoh latihan di atas dapat dijalankan pada sistem UNIX yang memiliki

program “md5” (atau program “md5sum”1

) seperti di bawah ini.

unix% echo ‘Saya pesan 10 buah komputer.’ | md5

5F736F18556E3B8D90E50299C7345035

unix% echo ‘Saya pesan 11 buah komputer.’ | md5

9CB9AD1A369512C96C74236B959780D3

Contoh di atas menunjukkan bahwa perbedaan satu karakter saja sudah

menghasilkan keluaran hash yang sangat berbeda. Hasil yang serupa dapat

dilakukan dengan memakai  SHA atau algoritma dan program lainnya.

Fungsi hash ini biasanya digabungkan dengan enkripsi untuk menjaga

integritas. Sebagai contoh, dalam pengiriman email yang tidak rahasia

(dapat dibaca orang) akan tetapi ingin dijaga integritasnya, isi (body) dari

email dapat dilewatkan ke fungsi hash sehingga menghasilkan fingerprint

dari isi email tersebut. Keluaran dari hash ini dapat disertakan dalam email.

Ketika email diterima, penerima juga menjalankan fungsi hash terhadap isi

email dan kemudian membandingkannya dengan hash yang dikirim. Jika

email diubah di tengah jalan, maka kedua hash tersebut berbeda. Untuk

lebih meningkatkan keamanan, hasil dari hash juga dapat dienkripsi

sehingga hanya penerima saja yang dapat membuka hasil dari hash tersebut.

Atau dapat juga hasil hash dienkripsi dengan kunci privat pengirim

sehingga oleh penerima dapat dibuka dengan kunci publik pengirim dan

diyakinkan bahwa integritas dari isi terjamin serta pengirim betul-betul

berasal dari pemilik kunci publik tersebut. Inilah yang sering disebut digital

signature dalam email.

MD5

MD5 (Message-Digest Algorithm 5), sebuah algoritma yang dibuat oleh

Ron Rivest di tahun 1991, melakukan fungsi hash dengan memakai 

algoritma yang dijabarkan di RFC1321, “The MD5 Message-Digest

Algorithm” [38]. Algoritma MD5 ini merupakan pengganti algoritma MD4

yang juga dibuat oleh Rivest. Hasil keluaran dari MD5 yaitu  sebuah nilai

hash dalam 128-bit.

Salah satu aplikasi yang lazim memakai  MD5 yaitu  pengamanan

berkas password (/etc/passwd atau /etc/shadow) di sistem UNIX. Berkas

password menyimpan data password dalam bentuk yang sudah terenkripsi

dengan memakai  DES. Implementasi awal dari sistem UNIX yaitu 

menyimpan data password yang sudah terenkripsi tersebut langsung pada

salah satu field di berkas password.

Meskipun sudah terenkripsi, penyimpanan data password yang sudah

terenkripsi tersebut masih menimbulkan potensi lubang keamanan karena

DES merupakan enkripsi yang reversible. Panjang data yang dihasilkan

oleh proses enkripsi juga bergantung kepada panjang data yang

dimasukkan. Sehingga ada sedikit info tambahan mengenai kemungkinan

panjangnya password. Apabila seseorang berhasil mendapatkan berkas

password tersebut, dia bisa mencoba proses dekripsi yaitu dengan

melakukan brute force attack dengan mencoba melakukan proses dekripsi.

MD5 menambahkan satu tingkat keamanan lagi. Kali ini data password

yang disimpan bukanlah password yang terenkripsi saja, melainkan data 

yang terenkripsi yang sudah dilewatkan oleh MD5. Karena sifatnya yang

satu arah, sangat sulit untuk mencari data password terenkripsi dengan basis

data hasil fungsi MD5. Jadi skema penyimpanan data tersebut kira-kira

seperti ini:

password > DES > password terenkripsi > MD5 > hashed encrypted 

password

Dengan cara ini, potensi untuk melakukan serangan brute force terhadap

encrypted password menjadi lebih sukar. Satu-satunya cara untuk

melakukan serangan brute force yaitu  dengan melakukan enkripsi juga

dengan melalui jalan maju seperti di atas dan kemudian membandingkan

hasil hashed encrypted passwordnya. Jika sama persis, maka kata yang

dipilih sebagai percobaan sama dengan password yang ingin dipecahkan

tersebut.

MD5 juga dipakai  dalam autentikasi dengan memakai  protokol

CHAP (RFC 1994). Masih ada banyak aplikasi lain yang memakai 

MD5 ini.

Di tahun 1996 ditemukan kelemahan dari MD5 sehingga disarankan untuk

menggantinya dengan memakai  SHA-1. Di tahun 2004, ditemukan lagi

kelemahan yang lebih serius sehingga penakai an MD5 lebih

dipertanyakan lagi. Xiaoyun Wang dan kawan-kawan menemukan

kelemahan ini dan membuat makalah yang dipresentasikan di Crypto 2004

[49]. Mereka menunjukkan bahwa ada tabrakan (collions) dimana dua buah

data menghasilkan keluaran hash MD5 yang sama. Selain collision di MD5,

mereka juga menemukan hal yang sama di MD5, HAVAL-128, dan

RIPEMD.

Apabila anda telah memiliki sebuah sistem informasi, bab ini akan

membantu anda untuk mengevaluasi keamanan sistem informasi yang anda

miliki.

Meski sebuah sistem informasi sudah dirancang memiliki perangkat

pengamanan, dalam operasi masalah keamanan harus selalu dimonitor. Hal

ini disebabkan oleh beberapa hal, antara lain:

• Ditemukannya lubang keamanan (security hole) yang baru. Perangkat

lunak dan perangkat keras biasanya sangat kompleks sehingga tidak

mungkin untuk diuji seratus persen. Kadang-kadang ada lubang

keamanan yang ditimbulkan oleh kecerobohan implementasi.

• Kesalahan konfigurasi. Kadang-kadang karena lalai atau alpa,

konfigurasi sebuah sistem kurang benar sehingga menimbulkan lubang

keamanan. Misalnya mode (permission atau kepemilikan) dari berkas

yang menyimpan password (/etc/passwd di sistem UNIX) secara tidak

sengaja diubah sehingga dapat diubah atau ditulis oleh orang-orang yang

tidak berhak.

• Penambahan perangkat baru (hardware dan/atau software) yang

menyebabkan menurunnya tingkat security atau berubahnya metoda

untuk mengoperasikan sistem. Operator dan administrator harus belajar

lagi. Dalam masa belajar ini banyak hal yang jauh dari sempurna,

misalnya server atau software masih memakai  konfigurasi awal dari

vendor (dengan password yang sama).

Sumber lubang keamanan

Lubang keamanan (security hole) dapat terjadi karena beberapa hal; salah

disain (design flaw), salah implementasi, salah konfigurasi, dan salah

penakai an.

Salah Disain

Lubang keamanan yang ditimbulkan oleh salah disain umumnya jarang

terjadi. Akan tetapi apabila terjadi sangat sulit untuk diperbaiki. Akibat

disain yang salah, maka biarpun dia diimplementasikan dengan baik,

kelemahan dari sistem akan tetap ada.

Contoh sistem yang lemah disainnya yaitu  algoritma enkripsi ROT13 atau

Caesar cipher, dimana karakter digeser 13 huruf atau 3 huruf. Meskipun

diimplementasikan dengan programming yang sangat teliti, siapapun yang

mengetahui algoritmanya dapat memecahkan enkripsi tersebut.

Contoh lain lubang keamanan yang dapat dikategorikan kedalam kesalahan

disain yaitu  disain urutan nomor (sequence numbering) dari paket TCP/IP.

Kesalahan ini dapat dieksploitasi sehingga timbul masalah yang dikenal

dengan nama “IP spoofing”, yaitu sebuah host memalsukan diri seolah-olah

menjadi host lain dengan membuat paket palsu setelah mengamati urutan

paket dari host yang hendak diserang. Bahkan dengan mengamati cara

mengurutkan nomor packet bisa dikenali sistem yang dipakai .

Mekanisme ini dipakai  oleh program nmap dan queso untuk mendeteksi

operating system (OS) dari sebuah sistem, yang disebut fingerprinting.

Contoh dan informasi yang lebih lengkap mengenai masalah kelemahan

protokol TCP/IP dapat dilihat pada referensi [2].

Implementasi kurang baik

Lubang keamanan yang disebabkan oleh kesalahan implementasi sering

terjadi. Banyak program yang diimplementasikan secara terburu-buru

sehingga kurang cermat dalam pengkodean. Akibatnya cek atau testing

yang harus dilakukan menjadi tidak dilakukan. Sebagai contoh, seringkali

batas (“bound”) dari sebuah “array” tidak dicek sehingga terjadi yang

disebut out-of-bound array atau buffer overflow yang dapat dieksploitasi

(misalnya overwrite ke variable berikutnya). Lubang keamanan yang terjadi

karena masalah ini sudah sangat banyak, dan yang mengherankan terus

terjadi, seolah-olah para programmer tidak belajar dari pengalaman1

.

Contoh lain sumber lubang keamanan yang disebabkan oleh kurang baiknya

implementasi yaitu  kealpaan memfilter karakter-karakter yang aneh-aneh

yang dimasukkan sebagai input dari sebuah program (misalnya input dari

CGI-script2

) sehingga sang program dapat mengakses berkas atau informasi

yang semestinya tidak boleh diakses.

Salah konfigurasi

Meskipun program sudah diimplementasikan dengan baik, masih dapat

terjadi lubang keamanan karena salah konfigurasi. Contoh masalah yang

disebabkan oleh salah konfigurasi yaitu  berkas yang semestinya tidak

dapat diubah oleh pemakai secara tidak sengaja menjadi “writeable”.

Apabila berkas tersebut merupakan berkas yang penting, seperti berkas

yang dipakai  untuk menyimpan password, maka efeknya menjadi lubang

keamanan. Kadangkala sebuah komputer dijual dengan konfigurasi yang

sangat lemah. Ada masanya workstation Unix di perguruan tinggi

didistribusikan dengan berkas /etc/aliases (berguna untuk mengarahkan e￾mail), /etc/utmp (berguna untuk mencatat siapa saja yang sedang

memakai  sistem) yang dapat diubah oleh siapa saja. Contoh lain dari

salah konfigurasi yaitu  adanya program yang secara tidak sengaja diset

menjadi “setuid root” sehingga ketika dijalankan pemakai memiliki akses

seperti super user (root) yang dapat melakukan apa saja.

Salah memakai  program atau sistem

Salah penakai an program dapat juga mengakibatkan terjadinya lubang

keamanan. Kesalahan memakai  program yang dijalankan dengan

memakai  account root (super user) dapat berakibat fatal. Sering terjadi

cerita horor dari sistem administrator baru yang teledor dalam menjalankan

perintah “rm -rf” di sistem UNIX (yang menghapus berkas atau direktori

beserta sub direktori di dalamnya). Akibatnya seluruh berkas di sistem

menjadi hilang mengakibatkan Denial of Service (DoS). Apabila sistem

yang dipakai  ini dipakai  bersama-sama, maka akibatnya dapat lebih

fatal lagi. Untuk itu perlu berhati-hati dalam menjalan program, terutama

apabila dilakukan dengan memakai  account administrator seperti root

tersebut. 

Kesalahan yang sama juga sering terjadi di sistem yang berbasis MS-DOS.

Karena sudah mengantuk, misalnya, ingin melihat daftar berkas di sebuah

direktori dengan memberikan perintah “dir *.*” ternyata salah memberikan

perintah menjadi “del *.*” (yang juga menghapus seluruh file di direktori

tersebut).

Penguji keamanan sistem

Dikarenakan banyaknya hal yang harus dimonitor, administrator dari sistem

informasi membutuhkan “automated tools”, perangkat pembantu otomatis,

yang dapat membantu menguji atau meng-evaluasi keamanan sistem yang

dikelola. Untuk sistem yang berbasis UNIX ada beberapa tools yang dapat

dipakai , antara lain:

• Cops

• Tripwire

• Satan/Saint

• SBScan: localhost security scanner

Untuk sistem yang berbasis Windows NT ada juga program semacam,

misalnya program Ballista yang dapat diperoleh dari: <http://

www.secnet.com>

Selain program-program (tools) yang terpadu (integrated) seperti yang

terdapat pada daftar di atas, ada banyak program yang dibuat oleh hackers

untuk melakukan “coba-coba”. Program-program seperti ini, yang cepat

sekali bermunculuan, biasanya dapat diperoleh (download) dari Internet

melalui tempat-tempat yang berhubungan dengan keamanan, seperti

misalnya “Rootshell”. (Lihat “Sumber informasi dan organisasi yang

berhubungan dengan keamanan sistem informasi” on page 153.) Contoh

program coba-coba ini antara lain:

• crack: program untuk menduga atau memecahkan password dengan

memakai  sebuah atau beberapa kamus (dictionary). Program crack

ini melakukan brute force cracking dengan mencoba mengenkripsikan

sebuah kata yang diambil dari kamus, dan kemudian membandingkan

hasil enkripsi dengan password yang ingin dipecahkan. Bila belum

sesuai, maka ia akan mengambil kata selanjutnya, mengenkripsikan, dan

membandingkan kembali. Hal ini dijalankan terus menerus sampai

semua kata di kamus dicoba. Selain memakai  kata langsung dari

kamus, crack juga memiliki program heuristic dimana bolak balik kata

(dan beberapa modifikasi lain) juga dicoba. Jadi, jangan sekali-kali

memakai  password yang terdapat dalam kamus (bahasa apapun).

• land dan latierra: program yang dapat membuat sistem Windows 95/NT

menjadi macet (hang, lock up). Program ini mengirimkan sebuah paket

yang sudah di”spoofed” sehingga seolah-olah paket tersebut berasal dari

mesin yang sama dengan memakai  port yang terbuka (misalnya port

113 atau 139).

• ping-o-death: sebuah program (ping) yang dapat meng-crash-kan

Windows 95/NT dan beberapa versi Unix.

• winuke: program untuk memacetkan sistem berbasis Windows

Probing Services

Servis di Internet umumnya dilakukan dengan memakai  protokol TCP

atau UDP. Setiap servis dijalankan dengan memakai  port yang berbeda,

misalnya:

• SMTP, untuk mengirim dan menerima e-mail, TCP, port 25

• DNS, untuk domain, UDP dan TCP, port 53

• HTTP, web server, TCP, port 80

• POP3, untuk mengambil e-mail, TCP, port 110

Contoh di atas hanya sebagian dari servis yang tersedia. Di sistem UNIX,

lihat berkas /etc/services dan /etc/inetd.conf untuk melihat servis

apa saja yang dijalankan oleh server atau komputer yang bersangkutan.

Berkas /etc/services berisi daftar servis dan portnya, sementara berkas /etc/

inetd.conf berisi servis-servis yang di jalan di server UNIX tersebut. Jadi

tidak semua servis dijalankan, hanya servis yang dibuka di /etc/inetd.conf

saja yang dijalankan. Selain itu ada juga servis yang dijalankan tidak

melalui inetd.conf melainkan dijalankan sebagai daemon yang berjalan di

belakang layar.

unix% more /etc/services

echo 7/tcp

echo 7/udp

discard 9/tcp sink null

discard 9/udp sink null

systat 11/tcp users

daytime 13/tcp

daytime 13/udp

netstat 15/tcp

qotd 17/tcp quote

msp 18/tcp # message send 

protocol

msp 18/udp # message send 

protocol

chargen 19/tcp ttytst source

chargen 19/udp ttytst source

ftp-data 20/tcp

ftp 21/tcp

fsp 21/udp fspd

ssh 22/tcp # SSH Remote 

Login Protocol

ssh 22/udp # SSH Remote 

Login Protocol

telnet 23/tcp

# 24 - private

smtp 25/tcp mail

# 26 - unassigned

time 37/tcp timserver

time 37/udp timserver

rlp 39/udp resource # resource 

location

nameserver 42/tcp name # IEN 116

whois 43/tcp nicname

re-mail-ck 50/tcp # Remote Mail 

Checking Protocol

re-mail-ck 50/udp # Remote Mail 

Checking Protocol

domain 53/tcp nameserver # name-domain 

server

domain 53/udp nameserver

mtp 57/tcp # deprecated

bootps 67/tcp # BOOTP server

bootps 67/udp

bootpc 68/tcp # BOOTP client

bootpc 68/udp

tftp 69/udp

gopher 70/tcp # Internet Gopher

gopher 70/udp

rje 77/tcp netrjs

finger 79/tcp

www 80/tcp http # WorldWideWeb 

HTTP

www 80/udp # HyperText 

Transfer Protocol

link 87/tcp ttylink

kerberos 88/tcp kerberos5 krb5 # Kerberos v5

kerberos 88/udp kerberos5 krb5 # Kerberos v5

supdup 95/tcp

# 100 - reserved

hostnames 101/tcp hostname # usually from 

sri-nic

iso-tsap 102/tcp tsap # part of ISODE.

csnet-ns 105/tcp cso-ns # also used by 

CSO name server 

csnet-ns 105/udp cso-ns

rtelnet 107/tcp # Remote Telnet

rtelnet 107/udp

pop-2 109/tcp postoffice # POP version 2

pop-2 109/udp

pop-3 110/tcp # POP version 3

pop-3 110/udp

sunrpc 111/tcp portmapper # RPC 4.0 

portmapper TCP

sunrpc 111/udp portmapper # RPC 4.0 

portmapper UDP

...

unix% more /etc/inetd.conf

# /etc/inetd.conf: see inetd(8) for further informations.

#

# Internet server configuration database

#

# Lines starting with "#:LABEL:" or "#<off>#" should not

# be changed unless you know what you are doing!

#

# Packages should modify this file by using update-inetd(8)

#

# <service_name> <sock_type> <proto> <flags> <user>

<server_path> <args>

#

#:INTERNAL: Internal services

#echo stream tcp nowait root internal

#echo dgram udp wait root internal

#chargen stream tcp nowait root internal

#chargen dgram udp wait root internal

discard stream tcp nowait root internal

discard dgram udp wait root internal

daytime stream tcp nowait root internal

daytime dgram udp wait root internal

time stream tcp nowait root internal

time dgram udp wait root internal

#:STANDARD: These are standard services.

## ftp stream tcp nowait root /usr/sbin/tcpd 

/usr/sbin/in.ftpd

ftp stream tcp nowait root /usr/sbin/tcpd 

/usr/local/sbin/proftpd

telnet stream tcp nowait root /usr/sbin/tcpd 

/usr/sbin/in.telnetd

#:BSD: Shell, login, exec and talk are BSD protocols.

shell stream tcp nowait root /usr/sbin/tcpd 

/usr/sbin/in.rshd

login stream tcp nowait root /usr/sbin/tcpd 

/usr/sbin/in.rlogind

exec stream tcp nowait root /usr/sbin/tcpd 

/usr/sbin/in.rexecd

talk dgram udp wait root /usr/sbin/tcpd 

/usr/sbin/in.talkd

ntalk dgram udp wait root /usr/sbin/tcpd 

/usr/sbin/in.ntalkd

pop-3 stream tcp nowait root /usr/sbin/tcpd 

/usr/sbin/ipop3d

Pemilihan servis apa saja tergantung kepada kebutuhan dan tingkat

keamanan yang diinginkan. Sayangnya seringkali sistem yang dibeli atau

dirakit menjalankan beberapa servis utama sebagai “default”. Kadang￾kadang beberapa servis harus dimatikan karena ada kemungkinan dapat

dieksploitasi oleh cracker. Untuk itu ada beberapa program yang dapat

dipakai  untuk melakukan “probe” (meraba) servis apa saja yang tersedia.

Program ini juga dapat dipakai  oleh kriminal untuk melihat servis apa

saja yang tersedia di sistem yang akan diserang dan berdasarkan data-data

yang diperoleh dapat melancarkan serangan.

Untuk beberapa servis yang berbasis TCP/IP, proses probe dapat dilakukan

dengan memakai  program telnet. Misalnya untuk melihat apakah ada

servis e-mail dengan memakai  SMTP dipakai  telnet ke port 25.

unix% telnet target.host.com 25

Trying 127.0.0.1...

Connected to target.host.com.

Escape character is '^]'.

220 dma-baru ESMTP Sendmail 8.9.0/8.8.5; Mon, 22 Jun 1998 10:18:54 +0700

Dalam contoh di atas terlihat bahwa ada servis SMTP di server tersebut

dengan memakai  program Sendmail versi 8.9.0. Adanya informasi

tentang sistem yang dipakai  ini sebetulnya sangat tidak disarankan

karena dengan mudah orang dapat mengetahui kebocoran sistem (jika

software dengan versi tersebut memiliki lubang keamanan)

Untuk servis lain, seperti POP atau POP3 dapat dilakukan dengan cara yang

sama dengan memakai  nomor “port” yang sesuai dengan servis yang

diamati.

unix% telnet localhost 110

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

+OK QPOP (version 2.2) at dma-baru.paume.itb.ac.id starting. 

+<20651.898485542@dma-baru.paume.itb.ac.id>

quit

+OK Pop server at dma-baru.paume.itb.ac.id signing off.

Connection closed by foreign host.

Latihan 7. Lakukan probing ke sebuah POP server. Gunakan POP

server yang dipersiapkan khusus untuk latihan ini. Jangan

lakukan probing ke server milik orang lain tanpa ijin.

Proses probing tersebut dapat dilakukan secara otomatis, sehinga menguji

semua port yang ada, dengan memakai  beberapa program paket seperti

didaftarkan di bawah ini.

Paket probe untuk sistem UNIX

• nmap

• strobe

• tcpprobe

Latihan 8. Gunakan nmap, strobe, atau tcpprobe untuk melakukan

probe terhadap sebuah server yang sudah dipersiapkan

untuk latihan ini. Jangan melakukan probe ke server milik

orang lain tanpa ijin.

Untuk melakukan probing ke sistem dengan nomor IP

192.168.1.1 dengan memakai  program strobe:

unix% strobe 192.168.1.1

unix% strobe 192.168.1.1 -b 1 -e 80

Untuk melakukan probing apakah komputer dengan range

nomor IP 192.168.1.1 sampai dengan 192.168.1.10 memiliki

FTP server (port 21) dapat dilakukan dengan memakai 

nmap dengan perintah di bawah ini:

unix% nmap 192.168.1.1-10 -p 21

Probe untuk sistem Window 95/98/NT

• NetLab

• Cyberkit

• Ogre

Mendeteksi Probling

Apabila anda seorang sistem administrator, anda dapat memasang program

yang memonitor adanya probing ke sistem yang anda kelola. Probing

biasanya meninggalkan jejak di berkas log di sistem anda. Dengan

mengamati entry di dalam berkas log dapat diketahui adanya probing.

root# tail /var/log/syslog

May 16 15:40:42 epson tcplogd: "Syn probe" 

notebook[192.168.1.4]:[8422]->epson[192.168.1.2]:[635]

May 16 15:40:42 epson tcplogd: "Syn probe" 

notebook[192.168.1.4]:[8423]->epson[192.168.1.2]:ssl-ldap

May 16 15:40:42 epson tcplogd: "Syn probe" 

notebook[192.168.1.4]:[8426]->epson[192.168.1.2]:[637]

May 16 15:40:42 epson tcplogd: "Syn probe" 

notebook[192.168.1.4]:[8429]->epson[192.168.1.2]:[638]

May 16 15:40:43 epson tcplogd: "Syn probe" 

notebook[192.168.1.4]:[8430]->epson[192.168.1.2]:[639]

May 16 15:40:43 epson tcplogd: "Syn probe" 

notebook[192.168.1.4]:[8437]->epson[192.168.1.2]:[640]

May 16 15:40:43 epson tcplogd: "Syn probe" 

notebook[192.168.1.4]:[8441]->epson[192.168.1.2]:[641]

May 16 15:40:43 epson tcplogd: "Syn probe" 

notebook[192.168.1.4]:[8445]->epson[192.168.1.2]:[642]

May 16 15:40:43 epson tcplogd: "Syn probe" 

notebook[192.168.1.4]:[8454]->epson[192.168.1.2]:[643

Contoh di atas menunjukkan entry di berkas syslog dimana terjadi probing

dari komputer yang di beri nama notebook dengan nomor IP 192.168.1.4.

Selain itu, ada juga program untuk memonitor probe seperti paket program

courtney, portsentry dan tcplogd.

OS fingerprinting

Mengetahui operating system (OS) dari target yang akan diserang

merupakan salah satu pekerjaan yang dilakukan oleh seorang cracker.

Setelah mengetahui OS yang dituju, dia dapat melihat database kelemahan

sistem yang dituju. Fingerprinting merupakan istilah yang umum

dipakai  untuk menganalisa OS sistem yang dituju [16].

Fingerprinting dapat dilakukan dengan berbagai cara. Cara yang paling

konvensional yaitu  melakukan telnet ke server yang dituju. Jika server

tersebut kebetulan menyediakan servis telnet, seringkali ada banner yang

menunjukkan nama OS beserta versinya.

unix% telnet 192.168.1.4

Trying 192.168.1.4...

Connected to 192.168.1.4.

Escape character is '^]'.

Linux 2.0.33 (rock.pau-mikro.org) (ttyp0)

login:

Apabila sistem tersebut tidak menyediakan servis telnet akan tetapi

menyediakan servis FTP, maka informasi juga sering tersedia. Servis FTP

tersedia di port 21. Dengan melakukan telnet ke port tersebut dan

memberikan perintah “SYST” anda dapat mengetahui versi dari OS yang

dipakai  seperti contoh di bawah ini.

unix% telnet ftp.netscape.com 21

Trying 207.200.74.26...

Connected to ftp.netscape.com.

Escape character is '^]'.

220 ftp29 FTP server (UNIX(r) System V Release 4.0) ready.

SYST

215 UNIX Type: L8 Version: SUNOS

Jika server tersebut tidak memiliki FTP server akan tetapi menjalankan Web

server, masih ada cara untuk mengetahui OS yang dipakai  dengan

memakai  program netcat (nc) seperti contoh di bawah ini (dimana

terlihat OS yang dipakai  yaitu  Debian GNU):

$ echo -e "GET / HTTP/1.0\n\n" | nc localhost 80 | \

grep "^Server:"

Server: Apache/1.3.3 (Unix) Debian/GNU

Cara fingerprinting yang lebih canggih yaitu  dengan menganalisa respon

sistem terhadap permintaan (request) tertentu. Misalnya dengan

menganalisa nomor urut packet TCP/IP yang dikeluarkan oleh server

tersebut dapat dipersempit ruang jenis dari OS yang dipakai .

Ada beberapa tools untuk melakukan deteksi OS ini antara lain:

• nmap

• queso

Berikut ini yaitu  contoh penakai an program queso untuk mendeteksi OS

dari sistem yang memakai  nomor IP 192.168.1.1. Kebetulan sistem ini

yaitu  sistem Windows 95.

unix# queso 192.168.1.1

192.168.1.1:80 * Not Listen, Windoze 95/98/NT

penakai an program penyerang

Salah satu cara untuk mengetahui kelemahan sistem informasi anda yaitu 

dengan menyerang diri sendiri dengan paket-paket program penyerang

(attack) yang dapat diperoleh di Internet. Dengan memakai  program

ini anda dapat mengetahui apakah sistem anda rentan dan dapat

dieksploitasi oleh orang lain. Perlu diingat bahwa jangan memakai 

program-program tersebut untuk menyerang sistem lain (sistem yang

tidak anda kelola). Ini tidak etis dan anda dapat diseret ke pengadilan.

Beberapa program penyerangan dicontohkan di Bab “Eksploitasi

Keamananan” on page 113.

Selain program penyerang yang sifatnya agresif melumpuhkan sistem yang

dituju, ada juga program penyerang yang sifatnya melakukan pencurian

atau penyadapan data. Untuk penyadapan data, biasanya dikenal dengan

istilah “sniffer”. Meskipun data tidak dicuri secara fisik (dalam artian

menjadi hilang), sniffer ini sangat berbahaya karena dia dapat dipakai 

untuk menyadap password dan informasi yang sensitif. Ini merupakan

serangan terhadap aspek privacy.

Contoh program penyadap (sniffer) antara lain:

• pcapture (Unix)

• sniffit (Unix)

• tcpdump (Unix)

• WebXRay (Windows)

penakai an sistem pemantau jaringan

Sistem pemantau jaringan (network monitoring) dapat dipakai  untuk

mengetahui adanya lubang keamaman. Misalnya apabila anda memiliki

sebuah server yang semetinya hanya dapat diakses oleh orang dari dalam,

akan tetapi dari pemantau jaringan dapat terlihat bahwa ada yang mencoba

mengakses melalui tempat lain. Selain itu dengan pemantau jaringan dapat

juga dilihat usaha-usaha untuk melumpuhkan sistem dengan melalui denial

of service attack (DoS) dengan mengirimkan packet yang jumlahnya

berlebihan.

Network monitoring biasanya dilakukan dengan memakai  protokol

SNMP (Simple Network Management Protocol) [13]. Pada saat buku ini

ditulis, SNMP versi 1 yang paling banyak dipakai  meskipun SNMP versi

2 sudah keluar. Sayangnya, tingkat keamanan dari SMNP versi 1 sangat

rendah sehingga memungkinkan penyadapan oleh orang yang tidak berhak

Contoh-contoh program network monitoring / management antara lain:

• Etherboy (Windows), Etherman (Unix)

• HP Openview (Windows)

• Packetboy (Windows), Packetman (Unix)

• SNMP Collector (Windows)

• Webboy (Windows)

Contoh program pemanatu jaringan yang tidak memakai  SNMP antara

lain:

• iplog, icmplog, updlog, yang merupakan bagian dari paket iplog untuk

memantau paket IP, ICMP, UDP.

• iptraf, sudah termasuk dalam paket Linux Debian netdiag

• netwatch, sudah termasuk dalam paket Linux Debian netdiag

• ntop, memantau jaringan seperti program top yang memantau proses di

sistem Unix (lihat contoh gambar tampilannya)

• trafshow, menunjukkan traffic antar hosts dalam bentuk text-mode

Contoh peragaan trafshow di sebuah komputer yang bernama epson,

dimana ditunjukkan sesi ssh (dari komputer compaq) dan ftp (dari komputer

notebook).

Dalam bab sebelumnya telah dibahas cara-cara untuk mengevaluasi sistem

anda. Maka bab ini akan membahas cara-cara untuk mengamankan sistem

informasi anda.

Pada umunya, pengamanan dapat di