F. Cara Kerja SSH

SSH bekerja dengan cara memanfaatkan metode client-server guna memperbolehkan autentikasi dari dua sistem remote dan enkripsi data yang melewati kedua sistem remote tersebut.

Sumber : https://www.venafi.com/sites/default/files/content/body/how_ssh_works.jpg

Misalkan suatu client melakukan akses ke suatu linux server melalui SSH. SSH Daemon yang sudah berjalan baik pada linux server maupun SSH client sudah memilki public/private key (pasangan) yang masing-masing menjadi identitas SSH bagi keduanya. Sehingga proses koneksi yang terjadi adalah sebagai berikut.

  1. Client melakukan koneksi SSH ke Server melalui  port 22  .
  2. Client dan server setuju untuk menggunakan sesi SSH tertentu. Hal ini penting karena SSH v.1 dan v.2 tidak kompatibel. Jika SSH client dan SSH server menggunakan versi yang sama, koneksi akan sukses.
  3. Client meminta Public Key dan Host Key milik server dan melakukan verifikasi.

    Pada saat client mencoba untuk terhubung ke server melalui TCP, server memberikan protokol enkripsi dari versi masing-masing yang didukung. Apabila client memiliki sepasang protokol dari versi yang sesuai dan hampir serupa, maka persetujuan dibuat dan koneksi dimulai dengan protokol yang diterima. Server juga menggunakan public key yang asimetris di mana client dapat menggunakannya untuk memverifikasi keaslian host.

    Setelah itu, kedua pihak tersebut menggunakan apa yang disebut sebagai Diffie-Hellman Key Exchange Algortihm untuk membuat key simetris. Algoritma ini memperbolehkan baik client maupun server untuk mengambil shared encryption key yang akan digunakan selanjutnya untuk mengenkripsi keseluruhan bagian komunikasi.


  4. Client dan server menyetujui algoritma enkripsi yang akan dipakai (misalnya TripleDES atau IDEA).
  5. Client membentuk suatu session key yang didapat dari client dan mengenkripsinya menggunakan public key milik server.
  6. Server men-decrypt session key yang didapat dari client, meng-re-encrypt-nya dengan public key milik client, dan mengirimkannya kembali ke client untuk di verifikasi.

     

    Berikut cara kerja algoritma enkripsi di level dasar

    1. Baik client maupun server mengetahui prime number yang sangat besar, yang tentu saja tidak memiliki faktor kesamaan. nilai prime number ini juga dikenal dengan nama Seed value.
    2. Kedua pihak mengetahui mekanisme enkripsi pada umumnya untuk membuat seperangkat value lainnya dengan memanipulasi seed value dengan cara algoritma tertentu. Mekanisme ini, juga disebut sebagai pembuat enkripsi, melakukan operasi besar-besaran pada seed tersebut. Contohnya adalah AES (Advanced Encryption Standard).
    3. Secara mandiri, kedua pihak tersebut membuat prime number lainnya. Prime number ini digunakan sebagai private key rahasia (secret private key) saat melakukan interaksi.
    4. Private key yang baru saja dibuat, dengan nomor yang dibagikan dan algoritma enkripsi (misalnya, AES), digunakan untuk melakukan komputasi terhadap public key yang didistribusikan ke komputer lain.
    5. Pihak ini kemudian menggunakan private key pribadi (personal private key) mereka, shared public key milik sistem lain, dan prime number asli untuk membuat shared key akhir. Secara terpisah, key ini dikomputasi oleh kedua komputer, tetapi tetap menghasilkan key enkripsi yang sama di kedua sisi.
    6. Kini kedua sisi tersebut sudah memiliki shared key. Secara simetris, kedua sisi ini dapat mengenkripsi keseluruhan bagian SSH. Key yang sama dapat digunakan untuk mengenkripsi dan mendekripsi pesan (baca: bagian enkripsi simetris).

     

    Setelah enkripsi simetris yang diamankan berhasil dibuat, maka pengguna harus melakukan autentikasi.


  7. Client meng-autentikasi dirinya ke server didalam aliran data terenkripsi dalam session key tersebut.

    Sebelum client diberikan hak akses ke server maka client melakukan autentikasi pada kredensialnya. Untuk hal ini, kebanyakan client SSH menggunakan password. client akan diminta untuk memasukkan username dan password. Kredensial ini akan dikirimkan melewati Tunnel enkripsi simetris sehingga pihak ketiga mana pun tidak dapat mencurinya.

    Meskipun password dienkripsi, masih tidak disarankan bagi client untuk menggunakan password di koneksi yang aman. Hal ini dikarenakan banyaknya bot yang bisa mencuri password standar atau yang dapat ditebak dengan mudah guna memperoleh akses ke akun Anda. Sebaiknya, gunakan SSH Key Pair sebagai cara alternatifnya.

    SSH Key Pair merupakan seperangkat key asimetris yang digunakan untuk mengautentikasi client tanpa harus memasukkan password.


Sampai disini koneksi telah terbentuk, dan client dapat selanjutnya bekerja secara interaktif pada server atau mentransfer file ke atau dari server. Langkah ketujuh diatas dapat dilaksanakan dengan berbagai cara (username/password, kerberos, RSA dan lain-lain).