SSH (Secure Shell) adalah sebuah protokol network yang membuat sebuah komputer mampu terhubung secara aman ke komputer lain melalui jaringan yang tidak aman. SSH sangat berguna karena kita dapat mengontrol server secara jarak jauh tanpa perlu memiliki akses fisik ke mesin lain. Kita hanya perlu menghubungkannya ke internet.
SSH dibuat dengan tujuan untuk menggantikan Telnet yang mengirimkan data tanpa enkripsi. Dengan enkripsi data yang dikirimkan menjadi lebih aman karena data tersebut hanya dapat dibaca jika mengetahui cara decode atau dekripsi data tersebut sehingga apabila ada seseorang yang mencoba untuk mencuri data yang dikirimkan, maka dia tidak akan bisa melihat data asli tersebut.
SSH diimplementasi dengan menggunakan model client-server. Satu komputer yang menjadi SSH Client dan komputer lain yang menjadi SSH Server atau Host. SSH akan membagi data menjadi rangkaian paket. Bagian paling atas yaitu Packet Length, berisi tentang seberapa besar paketnya. Lalu Padding Amount yang berisi informasi tentang berapa banyak lapisannya. Ditengah, yaitu Payload, merupakan data kita. Setelah Payload, terdapat Padding yang merupakan bytes acak yang tidak berarti apapun tapi juga ikut dienkripsi dengan Payload dengan tujuan agar lebih sulit untuk mendeteksi data. Dibagian akhir terdapat Message Authentication Code untuk memastikan data tersebut tidak dirusak siapapun. Bagian Payload dapat dikompres dengan menggunakan algoritma standard.
Paket kemudian akan dikirimkan ke server. Server akan mendekripsi paket tersebut dan dekompresi Payload untuk mengekstrak data tersebut. Proses yang sama akan terjadi pada setiap paket yang dikirimkan.
Untuk memastikan SSH aman, SSH menggunakan 3 macam teknik manipulasi data ketika transmisi. 3 teknik tersebut adalah:
Symmetric Encryption merupakan salah satu tipe enkripsi dimana hanya ada 1 key yang dapat digunakan untuk mengenkripsi dan dekripsi pesan yang dikirim ke tujuan. Skema ini juga dikenal sebagai shared secret encryption. Hal ini akan mencegah serangan man-in-the-middle untuk melihat data karena mereka tidak memiliki secret key ini.
Satu permasalahan yang ada adalah pada awal pertukaran key. Jika ada third party yang mendengarkan ketika pertukaran key, maka third party tersebut akan mengetahui secret key tersebut dan dapat mendekripsi semua pesan kita. Hal ini dapat diatasi dengan Algortima Pertukaran Kunci. Algortima Pertukaran Kunci adalah sebuah cara aman untuk bertukar secret key tanpa gangguan. Hal ini dilakukan dengan 2 komputer saling bertukar data kemudian memanipulasi data tersebut secara independen untuk memperoleh secret key. Untuk mengimplementasikan Algortima Pertukaran Kunci kita memerlukan Asymmetrical Encrption.
Asymmetrical Encryption merupakan sebuah enkripsi melalui penggunaan 2 buah key untuk enkripsi dan dekripsi, yaitu public key dan private key. Public key dapat dibagikan kepada siapapun namun private key tidak pernah dibagikan. Sebuah public key dan private key akan membentuk sebuah pasangan kunci (key pair). Pesan yang dienkripsi dengan public key hanya dapat didekripsi dengan private key nya. Public key tersimpan pada SSH Server dan private key tersimpan secara lokal di SSH Client. Contohnya jika Anton memberikan Budi public key milik Anton, maka Budi dapat mengirimkan pesan dengan mengenkripsi pesan tersebut menggunakan public key Anton. Anton dapat membaca pesan tersebut dengan mendekripsi pesan yang dikirimkan Budi menggunakan private key milik Anton. Walaupun third party berhasil mendapatkan public key, tapi mereka tidak akan bisa mendekripsi pesan karena mereka tidak memiliki private key.
Hashing adalah bentuk lain dari kriptografi yang digunakan untuk mengamankan koneksi shell. Dengan Hashing, kita dapat membuat buat signature atau ringkasan dari sekumpulan informasi. Namun perlu diingat bahwa Hashing adalah proses satu jalur dimana data yang telah di lakukan Hash tidaklah ditujukan untuk didekripsi. Jika third party berhasil mendapatkan data dari client atau host, mereka akan mencoba untuk mengutak-atik pesan. SSH menggunakan HMAC (Hash-based Message Authentication Codes) dimana pesan yang dikirimkan diterima dalam keadaan lengkap dan tidak dimodifikasi. Menggunakan sebuah hash function, setiap pesan yang ditransmisikan harus mengandung MAC. MAC adalah hash yang dihasilkan dari Symmetric key, paket dengan nomor urut dan isi pesan yang dikirimkan. Dengan 3 elemen ini yang dikombinasikan menjadi input pada sebuah hash function dan hash function ini akan menghasilkan (output) string yang tidak memiliki arti apapun. String ini akan dikirimkan ke host.
Lalu bagaimana caranya mengecek apakah pesan ini sudah diutak-atik oleh seseorang?
Karena host memiliki informasi yang sama (Asymmetric key, paket dengan nomor berurutan, dan konten pesan), mereka dapat menggunakan hash function yang sama untuk menghasilkan sebuah hash juga. Jika hash yang dihasilkan sama dengan yang diterima, maka dapat dipastikan signature atau keaslian dari client. Jika ada bagian yang diubah meskipun hanya huruf kecil ke huruf besar, hash akan sepenuhnya berbeda.
Sekarang anda sudah lebih memahami tentang SSH. SSH merupakan salah satu hal yang penting jika terdapat koneksi client-server.