Tidak suka iklan? Pergi Bebas Iklan Hari ini

Kunci SSH Dijelaskan Ed25519 vs ECDSA vs RSA (Hentikan Tekan Enter)

Diperbarui pada

Anda mengetikkan ssh-keygen, tekan Enter empat kali, dan akhirnya mendapatkan RSA. Berikut alasannya mengapa Ed25519 adalah pilihan yang tepat, apa yang salah dengan ECDSA, dan satu-satunya skenario di mana RSA benar-benar diperlukan.

Kunci SSH Dijelaskan: Ed25519 vs ECDSA vs RSA (Hentikan Tekan Enter) 1
IKLAN · HAPUS?

Setiap pengembang pernah melakukannya. Anda mengetik ssh-keygen, sebuah wizard muncul yang meminta informasi tentang jenis kunci, panjang bit, kata sandi, dan lokasi keluaran — dan Anda hanya menghentikan Enter sampai tampilan fingerprint acak muncul. Selamat, sekarang Anda memiliki kunci RSA-2048 dan tidak tahu mengapa angka itu muncul.

Jawaban singkat: gunakan Ed25519. Jalankan itu enam bulan kemudian dan Anda mungkin mendapatkan ssh-keygen -t ed25519 -C "you@example.com" dan berhenti membaca jawaban di StackOverflow dari tahun 2012. Sisanya dalam panduan ini menjelaskan mengapa — dan mencakup kasus-kasus sah di mana RSA benar-benar diperlukan.

Tiga Algoritma

RSA

RSA (Rivest–Shamir–Adleman, 1977) telah menjadi algoritma kunci publik default di internet selama beberapa dekade. Keamanannya bergantung pada kesulitan memfaktorkan bilangan besar, yang berarti Anda membutuhkan kunci besar untuk tetap aman — minimal 2048 bit, lebih disarankan 4096 bit. Kunci RSA 4096 bit sekitar 800 byte. Setiap koneksi melibatkan operasi aritmetika pada bilangan-bilangan besar, yang lebih lambat dibandingkan alternatif modern.

Satu-satunya argumen nyata untuk RSA adalah kompatibilitas. Server SSH tua, perangkat keras warisan, perangkat jaringan komersial dari awal 2010-an — semua ini berkomunikasi menggunakan RSA. Jika Anda menghubungkan ke sesuatu yang dipasang selama pemerintahan Obama dan tidak pernah diperbarui sejak itu, RSA mungkin satu-satunya pilihan Anda.

ECDSA

ECDSA (Elliptic Curve Digital Signature Algorithm) muncul sebagai alternatif yang lebih cepat dan lebih kecil dibandingkan RSA. Kunci ECDSA 256 bit memberikan keamanan yang setara dengan kunci RSA 3072 bit. Matematika yang lebih baik, ukuran kunci yang lebih kecil, operasi yang lebih cepat — terdengar seperti kemenangan.

Masalahnya adalah kurva yang digunakan OpenSSH secara default: kurva NIST (P-256, P-384, P-521). Kurva-kurva ini memiliki kekhawatiran yang sah. Keterlibatan NIST dalam standar kurva elips secara sejarah tercemar — lembaga ini membantu menyusun Dual_EC_DRBG, generator angka acak yang dipengaruhi oleh NSA dan kemudian ditemukan mengandung backdoor. Algoritma ECDSA sendiri tidak rusak, tetapi konstanta kurva NIST memiliki kriteria desain yang tidak terbuka. Tidak ada yang bisa membuktikan bahwa mereka tidak dipilih untuk memberikan keuntungan asimetris. Sebagian besar pengembang bukan target NSA, tetapi tidak ada alasan untuk menerima "mungkin baik" ketika opsi yang jelas lebih baik tersedia.

Ed25519

Ed25519 (EdDSA pada Kurva25519) adalah yang seharusnya Anda gunakan. Ini dirancang oleh Daniel J. Bernstein dengan kriteria desain yang sepenuhnya terbuka — parameter kurva dihasilkan dari angka-angka yang tidak bisa disalahpahami, bukan dari proses komite yang tidak terbuka.

Angka-angka praktis: kunci publik Ed25519 sekitar 68 byte. Tanda tangan dan verifikasi lebih cepat dibandingkan RSA dan ECDSA. Algoritma ini tahan terhadap serangan sisi waktu secara konstruksi — tidak ada cabang yang tergantung pada rahasia, tidak ada operasi waktu yang bervariasi. Dukungan muncul di OpenSSH 6.5 pada tahun 2014. GitHub, GitLab, dan Bitbucket telah mendukungnya selama bertahun-tahun. Tidak ada kekurangan dibandingkan ECDSA dan semua keuntungan dibandingkan RSA.

Perbandingan Berdampingan

PropertiRSA (4096-bit)ECDSA (P-256)Ed25519
Ukuran kunci publik~800 byte~200 byte68 byte
Keamanan setara~140 bit~128 bit~128 bit
Kecepatan tanda tanganLambatCepatSangat cepat
Tahan terhadap serangan waktuTIDAKTIDAKYa (secara desain)
Kekhawatiran terhadap kepercayaan kurvaTidak adaKurva NIST (dipertanyakan)Tidak ada (Curve25519)
Dukungan OpenSSH sejakSelalu5.7 (2011)6.5 (2014)
GitHub / GitLab / BitbucketYaYaYa

Cara Membuat Setiap Jenis

Pilihan default — gunakan ini:

ssh-keygen -t ed25519 -C "you@example.com"

Sistem warisan membutuhkan RSA? Gunakan minimal 4096 bit:

ssh-keygen -t rsa -b 4096 -C "you@example.com"

ECDSA, jika Anda memiliki alasan khusus untuk menghindari Ed25519 (kemungkinan besar Anda tidak memiliki alasan tersebut):

ssh-keygen -t ecdsa -b 521 -C "you@example.com"

Jika Anda ingin antarmuka daripada menghafal flag, gunakan Generator Kunci SSH di IO Tools memungkinkan Anda memilih algoritma, panjang bit, dan opsi kata sandi tanpa mengakses terminal.

Kasus Di mana RSA Benar-Benar Diperlukan

Ada kasus-kasus sah di mana Ed25519 tidak bisa digunakan:

  • Daemon SSH sebelum 2014 — semua yang berjalan dengan OpenSSH lebih tua dari versi 6.5 tidak akan menerima Ed25519. Jarang, tetapi nyata: sistem terintegrasi, perangkat jaringan, kotak RHEL 6 yang tidak pernah diperbarui.
  • Lingkungan FIPS-140-2 — lingkungan federal dan beberapa perusahaan terkendali mengharuskan algoritma yang telah diverifikasi FIPS. Ed25519 tidak disetujui FIPS. Gunakan RSA-3072+ atau ECDSA dengan P-384 di lingkungan tersebut.
  • Kebijakan CA SSH organisasi — beberapa perusahaan menjalankan kantor mereka sendiri dengan kebijakan kunci yang diperlakukan secara ketat. Periksa sebelum membuat kunci yang akan ditolak saat pendaftaran.

Di luar tiga kasus ini, argumen untuk RSA adalah kebiasaan, bukan keunggulan.

Kata sandi yang Anda Lepas

Kapan ssh-keygen meminta kata sandi dan Anda menekan Enter untuk melewatinya, kunci pribadi Anda berada di disk dalam bentuk teks biasa. Jika seseorang mendapatkan laptop Anda, mereka mendapatkan akses ke semua hal yang dapat diakses oleh kunci tersebut — setiap server, setiap host Git, setiap lingkungan produksi. Tambahkan kata sandi. Gunakan ssh-agent sehingga Anda hanya perlu menginputkannya sekali per sesi:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Pada macOS, tambahkan --apple-use-keychain ke ssh-add sehingga kata sandi bertahan saat reboot. Pada Linux, kebanyakan lingkungan desktop secara otomatis memulai ssh-agent — periksa dengan echo $SSH_AUTH_SOCK.

Anda menekan Enter empat kali tanpa membaca. Prompt kata sandi adalah satu-satunya yang perlu Anda kembali ke arahnya.

Ingin bebas iklan? Bebas Iklan Hari Ini

Instal Ekstensi Kami

Tambahkan alat IO ke browser favorit Anda untuk akses instan dan pencarian lebih cepat

Ke Ekstensi Chrome Ke Ekstensi Tepi Ke Ekstensi Firefox Ke Ekstensi Opera

Papan Skor Telah Tiba!

Papan Skor adalah cara yang menyenangkan untuk melacak permainan Anda, semua data disimpan di browser Anda. Lebih banyak fitur akan segera hadir!

IKLAN · HAPUS?
IKLAN · HAPUS?
IKLAN · HAPUS?

Pojok Berita dengan Sorotan Teknologi

Terlibat

Bantu kami untuk terus menyediakan alat gratis yang berharga

Belikan aku kopi
IKLAN · HAPUS?