secure socket layer

14
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

Upload: ui

Post on 01-Feb-2023

1 views

Category:

Documents


0 download

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.

Gambar 3. 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.