Pengelanan apa itu kunci kriptografi, Public key, dan Private Key
Sebelum memulai instalasi dan pengaturan untuk dapat melakukan remote server menggunakan SSH Key ada baiknya kita mengetahui apa itu kunci kriptografi. Dalam kriptografi, kunci adalah suatu informasi yang mengendalikan jalannya algoritme kriptografi. Dalam enkripsi, kunci memberikan cara khusus kepada suatu algoritme ketika mengubah teks terang (plaintext) menjadi teks tersandi (ciphertext) ataupun proses sebaliknya (disebut dekripsi). Teks tersandi dapat diubah menjadi teks terang jika sang pembaca mengetahui algoritme yang digunakan dan memiliki kunci yang benar. Dengan kata lain, kunci bertindak seperti “kata sandi” dalam algoritme tersebut. Selain enkripsi, kunci juga digunakan pada algoritme kriptografi lainnya, seperti tanda tangan digital dan kode autentikasi pesan. Lalu, apa hubungannya dengan remote server menggunakan SSH Key ? Pada dasarnya saat kita menggunakan SSH Keyt untuk mengakses sebuah server kita memerlukan Public Key dan Private Key sebagai bentuk otentifikasi kita untuk dapat mengakses suatu server, dan server dapat mengenali kita sebagai user yang memiliki otoritas atau kemampuan atau mengakses server tersebut.
Lalu apa itu Public Key dan Private Key ? Public-key Cryptography (disebut juga kriptografi asimetris) adalah sistem kriptografi yang menggunakan sepasang kunci, yaitu Public Key yang bisa disebarkan dan Private Key yang hanya diketahui oleh pemilik. Pembuatan kunci tersebut bergantung pada algoritme kriptografi yang menggunakan sifat matematis untuk menghasilkan fungsi satu arah. Keamanannya secara efektif hanya berasal dari Private Key yang disimpan dengan baik, kunci publik dapat disebarkan tanpa mengurangi keamanannya.
Dalam sistem tersebut, tiap orang dapat mengenkripsi pesan dengan Private Key penerima. Namun, hasil enkripsi tersebut hanya bisa didekripsi oleh penerima dengan Private Key. Hal ini memungkinkan untuk misalnya, mengirim pesan kepada server dengan mengenkripsinya memakai Public Key nya. Pesan tersebut dapat berisi kunci baru yang akan dipakai untuk kriptografi simetris. Sekarang, client dan server dapat saling berkirim pesan dengan kunci simetris baru tersebut. Hal ini memiliki keuntungan karena dapat memanfaatkan laju kriptografi simetris yang lebih tinggi daripada kriptografi asimetris.
Selain untuk enkripsi, Public-key Cryptography juga bisa dipakai untuk autentikasi. Pengirim pesan dapat menambahkan tanda tangan digital pada akhir pesan. Siapa pun dapat memeriksa keaslian pesan dari pengirim dengan membandingkannya dengan kunci publik pengirim pesan. Bila gabungan pesan dan Private Key cocok dengan tanda tangan digitalnya, pesan tersebut benar dibuat oleh pengirim pesan.
Lalu bagaimana ukuran dan algoritma kunci? Dalam dunia algoritma ada 3 sistem kriptografi yakni RSA, DSA, dan ECC yang digunakan untuk membuat public key dan private key pada kriptografi enkripsi asimetris. Forum CA saat ini sudah menyarankan menggunakan kunci RSA 2048 bit dari padangan public key dan private key. Dalam tutorial dibawah kita akan menggunakan kunci RSA dan mengimplementasikan nya ke client dan server kita.
Kebutuhan/Prasayarat
- Server (saat ini saya menggunakan server berbasis Rocky Linux 9)
- Client (saat ini saya menggunakan client berbasis sistem operasi Fedora Workstation 40)
- Promox VE (server saya dalam bentuk container virtual)
Langkah-langkah
Sebelum melakukan hal-hal yang diperlukan ada baik nya kita selalu melakukan upgrade package dan repository yang ada, dengan command sebagai berikut pada server kita.
dnf update --refresh
[xxxx@xxxx xxxx]# dnf update --refresh
Rocky Linux 9 - BaseOS 3.1 kB/s | 4.1 kB 00:01
Rocky Linux 9 - AppStream 5.4 kB/s | 4.5 kB 00:00
Rocky Linux 9 - Extras 2.0 kB/s | 2.9 kB 00:01
Dependencies resolved.
Nothing to do.
Complete!
Setelah melakukan update package dan reporsitory pada server, anda dapat berpindah ke komputer client untuk melakukan generate SSH key. Anda dapat melakukan genarate key dengan command berikut :
ssh-keygen
Maka akan menghasilkan SSH Key dengan 2048-bit RSA Key atau anda dapat melakukan generate 4096-bit RSA key dengan command :
ssh-keygen -b 4096
Setelah akan muncul pertanyaan dimana anda akan menyimpan SSH key atau tekan enter untuk menyimpan di dalam folder default
ekky@fedora:~$ ssh-keygen -b 4096
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/ekky/.ssh/id_ed25519):
Selanjutnya akan anda akan diminta untuk memberikan passphrase pada SSH Key anda. Sangat disarankan untuk memberikan passphrase demi faktor keamanan, atau sesuaikan dengan kebutuhan anda.
Enter passphrase (empty for no passphrase):
Setelah itu akan muncul pemberitahuan bahwa identifikasi anda berhasil dibuat.
Your identification has been saved in /home/ekky/.ssh/id_ed25519
Your public key has been saved in /home/ekky/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:/OKKXL07xhdxtd4gVjRqlgwdKq7B8uHsSFHGfLXEplA ekky@fedora
The key's randomart image is:
+--[ED25519 256]--+
| .E.+..oo |
| o. oo=.oo. |
| =.ooo *o . |
| + +...o+ o |
| o + S + o o |
| * = .. . .|
| . *.o .. |
| o = .+o. |
| + oo++ |
+----[SHA256]-----+
Langkah selanjutnya setelah anda melakukan generate SSH Key adalah menyalin atau memindahkan Public Key anda ke server agar server dapat mengidentifikasi anda saat anda melakukan remote ke server melalui SSH. Adapun cara paling mudah adalah dengan cara menggunakan perintah ssh-copy-id anda dapat melakukan perintah tersebut dengan cara :
ssh-copy-id user@ip_server
ekky@fedora:~$ ssh-copy-id xxx@xxx.xxx.xxx.xxx
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ekky/.ssh/id_ed25519.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
xxx@xxx.xxx.xxx.xxx's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'xxx@xxx.xxx.xxx.xxx'"
and check to make sure that only the key(s) you wanted were added.
Setelah menyalin key anda ke server anda dapat mencoba melakukan remote server via SSH ke server anda maka akan ada pemberitahuan bahwa anda diminta untuk memasukan passphrase anda untuk melakukan koneksi ke server. Jika passphrase yang anda masukan benar maka anda akan dapat melakukan remote server via SSH seperti sebelumnya.