secure socket layer
TRANSCRIPT
Secure Socket Layer (SSL)
Deskripsi Umum SSL
SSL adalah sebuah protokol keamanan data yang
digunakan untuk menjaga pengiriman data web server dan
pengguna situs web. SSL dikembangkan oleh Netscape
Communication pada tahun 1994. SSL memiliki tiga versi
yaitu 1.0, 2.0, dan 3.0 yang diliris pada tahun 1996. SSL
merupakan suatu standar teknologi keamanan yang menjamin
bahwa seluruh data yang dilewatkan antara web server dengan
web browser terjaga kerahasiaan dan keutuhannya. SSL
membuat koneksi yang ter-enkripsi (tersandi) antara server
atau situs dengan pengunjungnya saat pengunjung itu
mengaksesnya, sehingga data rahasia atau penting dapat
terkirim tanpa khawatir ada usaha perubahan ditengah
jalannya. SSL bertindak sebagai protokol yang mengamankan
komunikasi antara client dan server.
Protokol SSL mengotentikasi server kepada client
menggunakan kriptografi kunci publik dan sertifikat
digital. Protokol ini juga menyediakan otentikasi client ke
server. Algoritma kunci publik yang digunakan adalah RSA,
dan untuk algoritma kunci rahasia yang digunakan adalah
IDEA, DES, dan 3DES, dan algoritma fungsi hash
menggunakan MD5. Verifikasi kunci publik dapat
menggunakan sertifikat yang berstandar X.509.
Arsitektur SSL
Protokol SSL bekerja di bawah lapisan aplikasi
(application layer) pada protokol TCP/IP. SSL pada dasarnya
merupakan protokol berlapis (layered protocol). SSL Record
Protocol, yang merupakan lapisan (layer) paling bawah,
berjalan di atas protokol transport yang dapat diandalkan
(reliable transport protocol) seperti TCP. SSL Record Protocol juga
berfungsi mengenkapsulasi berbagai protokol pada lapisan
yang lebih tinggi (higher-level protocol), seperti
HyperText Transfer Protocol (HTTP) yang menyediakan layanan
transfer pada Web. Tiga protokol pada lapisan yang lebih
tinggi adalah Handshake Protocol, Change Cipher Spec Protocol, dan
Alert Protocol. Tiga protokol pada lapisan atas ini berfungsi
mengatur pertukaran informasi yang dilakukan pada SSL
(SSL exchange). Arsitektur pada SSL ditunjukkan pada
Gambar 1.
Gambar 1. Arsitektur SSL
Tahapan pada SSL
Pada protokol SSL terdapat dua tahapan yang terjadi
yaitu, SSL Session dan SSL Connection.
a. SSL Session
SSL Session terjadi antara client dan server dengan
tiap sesi yang ada dihasilkan dari Handshake Protocol.
Dalam SSL Session didefinisikan berbagai parameter
keamanan kriptografi yang dapat digunakan untuk
banyak koneksi. Hal tersebut dilakukan guna mencegah
terhambatnya proses koneksi saat membutuhkan
kesepakatan mengenai parameter-parameter baru yang
akan digunakan.
Tahapan pada SSL Session didefinisikan oleh
beberapa parameter sebagai berikut :
1) Session identifier, merupakan sebuah nilai yang
dibangkitkan oleh server untuk mengindentifikasi
apakah kondisi sebuah sesi itu dalam kondisi
aktif ataupun resumable.
2) Peer certificate, merupakan sertifikat X.509 v3 yang
berasal dari sisi peer. Peer certificate dapat bernilai
null.
3) Compression method, merupakan algoritma yang
digunakan untuk mengkompresi data sebelum di
enkripsi.
4) Cipher spec, menentukan algoritma enkripsi untuk
data dalam jumlah besar (null, DES, dll), dan
sebuah algoritma hash (MD5 atau SHA-1) yang
digunakan untuk komputasi MAC. Selain itu,
didefinisikan pula atribut-atribut yang ada
seperti ukuran dari nilai hash yang dihasilkan.
5) Master secret, merupakan sebuah data berukuran 48
byte yang di share antara client dan server. Hal
tersebut merepresentasikan data rahasia yang akan
digunakan untuk membangkitkan kunci enkripsi, MAC
dan IV.
6) Is resumable, berfungsi sebagai indikator yang
menunjukkan bahwa sebuah sesi dapat digunakan
untuk menginisiasi koneksi yang baru.
b. SSL Connection
SSL Connection berfungsi untuk menyediakan jenis
layanan yang sesuai bagi sebuah pesan yang akan
dikirimkan.
Tahapan pada SSL Connection didefinisikan oleh
beberapa parameter sebagai berikut :
1) Server and client random, merupakan serangkaian byte
yang dipilih oleh server dan client untuk setiap
koneksi.
2) Server write MAC secret, berfungsi untuk
mengindikasikan secret key yang digunakan dalam
operasi MAC pada data yang dikirimkan oleh server.
3) Client write MAC secret, berfungsi untuk
merepresentasikan secret key yang digunakan dalam
operasi MAC pada data yang dikirimkan oleh client.
4) Server write key, merupakan kunci enkripsi manual
untuk data yang dienkripsi oleh server dan
didekripsi oleh client.
5) Client write key, merupakan kunci enkripsi manual
untuk data yang dienkripsi oleh client dan
didekripsi oleh server.
6) Initialization vectors, merupakan sebuah nilai yang
digunakan dalam mode operasi tertentu pada block
cipher.
7) Sequence numbers, merupakan rangkaian nilai
berurutan yang dimiliki oleh client dan server dan
digunakan sebagai urutan dalam proses kirim
terima pesan untuk setiap koneksi.
Protokol pada SSL
Berikut merupakan penjelasan mengenai protokol-
protokol yang terdapat pada SSL:
a. SSL Record Protocol
SSL Record Protocol menyediakan layanan keamanan
dasar bagi protokol-protokol pada lapisan yang lebih
tinggi, yaitu Handshake Protocol, Change Cipher Spec Protocol,
dan Alert Protocol. SSL Record Protocol menerima data dari
suatu aplikasi, kemudian menjalankan beberapa
tahapan, antara lain: fragmentasi data ke dalam
beberapa blok, kompresi data (opsional), penambahan
MAC, enkripsi data, penambahan header, kemudian
mengirimkan hasilnya ke TCP. Sebaliknya, data yang
diterima akan didekripsi, di verifikasi, di-
dekompres, disatukan (reassambled), kemudian hasilnya
dikirim kepada aplikasi pada lapisan yang lebih
tinggi. Ilustrasi operasi pada SSL Record Protocol secara
keseluruhan ditunjukkan pada Gambar 2.
1) Fragmentasi: Pesan yang dikirim dari aplikasi
lapisan atas difragmentasi ke dalam beberapa blok
dengan ukuran masing-masing blok 214 byte (16384
bytes) atau kurang.
2) Kompresi dan dekompresi: Seluruh record dikompres
menggunakan algoritma kompresi yang telah
didefinisikan sebelumnya. Kompresi ini cukup
penting apabila enkripsi digunakan. Jika kompresi
dan enkripsi digunakan, proses kompresi hendaknya
dilakukan sebelum enkripsi. Kompresi bersifat
opsional pada SSL Record Protocol.
3) Penambahan MAC: MAC dihitung sebelum proses
enkripsi. Proses komputasi MAC menggunakan shared
secret key yang diperoleh dari master key.
4) Penambahan header: Proses terakhir yang dilakukan
adalah menambahkan header pada SSL Record Protocol.
SSL record header terdiri dari, Content type (8 bit),
Major version (8 bit), Minor version (8 bit) dan
Compressed length (16 bit).
Gambar 2. Operasi pada SSL Record Protocol
b. SSL Change Cipher Spec Protocol
SSL Change Cipher Spec Protocol merupakan suatu pesan
tunggal yang terkompres dan terenkripsi dengan Cipher
Spec yang digunakan pada sesi tersebut. Pesan ini
berisi satu byte tunggal dengan nilai 1. Pesan SSL
Change Cipher Spec ini dikirim oleh server dan client untuk
memberitahukan bahwa bahwa kedua belah pihak telah
setuju untuk memproteksi suatu sesi dengan CipherSpec
dan kunci yang telah dinegosiasikan. Pihak client
mengirimkan pesan SSL Change Cipher Spec dilanjutkan
dengan proses handshake key exchange. Pihak server
kemudian mengirim pesan SSL Change Cipher Spec miliknya
setelah selesai memproses pesan key exchange yang
dikirim oleh client.
c. SSL Alert Protocol
SSL Alert Protocol merupakan suatu pesan peringatan
yang membawa pesan error/kerusakan dan deskripsi
peringatan tersebut. SSL Alert Protocol terdiri dari dua
byte. Byte pertama berupa nilai peringatan (1) atau
fatal (2) yang memberitahukan tingkat kerusakan dari
pesan. Jika tingkat kerusakan adalah fatal, maka SSL
akan memutus koneksinya. Koneksi lain pada sesi yang
sama akan dilanjutkan, namun tidak ada koneksi baru
yang dapat dibangun pada sesi tersebut. Byte kedua
merupakan kode yang menunjukkan spesifikasi dari
peringatan yang dikirimkan.
d. SSL Handshake Protocol
SSL Handshake Protocol merupakan bagian yang paling
rumit pada SSL. Pada protokol ini, server dan client akan
saling mengotentikasi dan menegosiasikan algoritma
enkripsi, MAC, dan kunci kriptografi yang akan
digunakan pada pengiriman SSL record. Proses Handshake
Protocol dilakukan sebelum proses pengiriman data
dilakukan. Gambar 3 merupakan proses pada SSL
Handshake Protocol.
SSL Handshake Protocol dibagi ke dalam 4 fase :
1) Fase 1 : Pembangunan Koneksi. Fase ini merupakan
fase inisial yang berfungsi membangun koneksi
antara client dan server. Proses ini diinisialisi
oleh client dengan mengirimkan beberapa parameter,
diantaranya :
a) Version: Versi SSL tertinggi yang didukung oleh
client.
b) Random: Nilai random yang dibangkitkan oleh
client. Nilai ini akan digunakan pada proses key
exchange untuk mencegah replay attack.
c) Session ID: Variabel session dengan nilai
tertentu. Nilai bukan 0 menunjukkan bahwa
client akan meng-update parameter suatu koneksi
yang telah dibangun atau membuat koneksi baru
pada suatu session yang dibangun. Nilai 0
menunjukkan bahwa client akan membangun koneksi
baru pada session baru.
d) Ciphersuites: Daftar kombinasi algoritma
kriptografi yang didukung oleh client. Setiap
ciphersuite berisi algoritma key exchange dan
CipherSpec.
e) Compression Method: Metode kompresi yang
didukung oleh client.
2) Fase 2 : Otentikasi Server dan Pertukaran Kunci.
Pihak server memulai fase ini dengan mengirimkan
pesan yang berisi sertifikat digital. Sertifikat
digital ini dibutuhkan dalam setiap metode
pertukaran kunci, kecuali anonymous Diffie-Hellman.
Kemudian, pesan server key exchange dikirimkan untuk
metode pertukaran kunci sebagai berikut:
a) Anonymous Diffie-Hellman
b) Ephemeral Diffie-Hellman
c) RSA Key Exchange.
Tahap terakhir dari fase ini adalah pengiriman
pesan server done yang menunjukkan bahwa pihak server
telah selesai mengirimkan seluruh pesan pada fase
ini.
3) Fase 3 : Otentikasi Client dan Pertukaran Kunci.
Setelah menerima pesan server done, pihak client akan
memverifikasi apakah sertifikat yang dikirimkan
oleh server sah atau tidak dan apakah parameter-
parameter yang telah dikirimkan tersebut juga
dapat diterima. Apabila server meminta sertifikat
pada fase sebelumnya, maka client akan mengirimkan
sertifikatnya. Selanjutnya, pihak client akan
mengirimkan pesan client key exchange dengan metode
antara lain:
a) RSA
b) Ephemeral Diffie-Hellman
c) Anonymous Diffie-Hellman
d) Fixed Diffie-Hellman
Tahap terakhir dari fase ini adalah pengiriman
pesan certificate verify yang menandakan verifikasi
sertifikat client.
4) Fase 4 : Akhir Koneksi. Pada fase ini, pesan
change cipher spec dikirim oleh client. Pihak client
kemudian mengirimkan pesan yang menandakan bahwa
proses pembangunan koneksi telah selesai. Pihak
server selanjutnya juga mengirimkan pesan change
cipher spec miliknya. Setelah proses ini, proses
handshaking telah selesai dan antara server dan client
dapat saling bertukar informasi secara aman.
Salah satu bagian paling penting dalam SSL
Handshake Protocol adalah proses key derivation
(penghitungan nilai kunci). Proses ini dijalankan
setelah dilakukannya pertukaran kunci antara client
dan server. Pada proses ini, nilai kunci yang
didapatkan dari hasil pertukaran kunci (pre-master
secret) diproses kembali sehingga menghasilkan beberapa
buah kunci yang akan digunakan untuk proses enkripsi
dan otentikasi setiap paket SSL record yang dikirim.
Proses ini dilakukan menggunakan suatu key derivation
function (KDF).
Gambar 4. Skema proses key derivation
Nilai master secret dihitung menggunakan KDF
berdasarkan nilai pre-master secret dan nilai random yang
dimiliki oleh client dan server. Selanjutnya, nilai master
secret ini diekspansi menjadi sebuah key block yang
dipecah ke dalam 3 pasang parameter kriptografi
(kunci MAC, kunci enkripsi dan IV) yang digunakan
untuk proses enkripsi dan otentikasi. Tiap pasangan
parameter tersebut memiliki nilai tersendiri sehingga
parameter yang dimiliki client berbeda dengan parameter
yang dimiliki oleh server.
Referensi:
[1] Rhee, M.Y. 2003. Internet Security: Cryptographic Principles,
Algorithm and Protocols. England: Wiley.
[2] Rescorla, E. 2001. SSL and TLS: Building and Design Secure
Systems. New Jersey: Addison Wesley.
[3] RFC 2246. The TLS Protocol Version 1.0,
http://www.ietf.org/rfc/rfc2246.txt.