Alat pembangun · SHA kalkulator cincang
Sijil dan SSH Cap Jari: Bagaimana SHA-256 Mengenal pasti Kunci Awam
· Latar belakang
sha-256 kriptografi keselamatan
Cap jari ialah cincang sijil atau kunci, cukup pendek untuk dibaca dengan kuat. Siaran ini menerangkan cara cap jari TLS dan SSH dikira, sebab cap jari SHA-1 diganti dan perkara yang terbukti padanan.
Gesaan kunci hos yang anda sentiasa terima — perkara yang SHA256: baris minta anda bandingkan
Apabila anda menyambung ke pelayan melalui SSH buat kali pertama, anda melihat gesaan yang bertanya sama ada untuk menerima kunci hos. Gesaan memaparkan cap jari: `SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8` atau serupa. Cap jari ini ialah cincang kunci awam pelayan. Anda diminta untuk mengesahkan di luar jalur (di luar protokol SSH) bahawa anda mengenali kunci ini. Gesaan juga biasanya menunjukkan jenis kekunci (RSA, ED25519, ECDSA) dan format cap jari. Jika anda pernah melihat cap jari kunci ini sebelum ini melalui saluran yang dipercayai, anda boleh menaip "ya" dengan yakin. Jika tidak, menerima bermakna mempercayai rangkaian untuk menyampaikan kunci yang betul.
Cap jari hanyalah output fungsi cincang kriptografi yang digunakan pada kunci yang dikodkan. Untuk SSH, kunci dikodkan sebagai gumpalan binari (format wayar OpenSSH), dan cincangan dikira atas gumpalan itu. Cap jari adalah lebih pendek daripada kunci penuh, menjadikannya boleh dibaca dan ditaip. Cap jari yang sama akan sentiasa terhasil daripada kekunci yang sama, jadi anda boleh membandingkan cap jari yang diterbitkan di berbilang tempat atau saluran.
Cap jari sama dengan cincang pengekodan — sijil DER atau gumpalan kunci awam sebagai input
SSH kunci hos dan sijil TLS dikodkan secara berbeza, tetapi prinsip cap jari adalah sama. Untuk SSH, cap jari dikira daripada bahan kunci awam. Untuk sijil TLS, cap jari dikira daripada keseluruhan sijil (termasuk pengeluar, tarikh sah dan medan lain). Apabila anda menyambung ke pelayan web, pelayar tidak memaparkan cap jari sijil kepada anda, kerana TLS menggunakan model amanah yang berbeza: pelayar mempercayai satu set pihak berkuasa sijil (CA) yang telah diprapasang, dan CA tersebut menjamin sijil. SSH tidak menggunakan CA prapasang; sebaliknya, anda mempercayai kunci tertentu dan menyimpannya secara setempat dalam `~/.ssh/known_hosts`.
Oleh kerana cap jari termasuk keseluruhan bait sijil untuk TLS, menukar tarikh sah tanpa menandatangani semula menghasilkan cap jari yang berbeza. Untuk SSH, cap jari sahaja untuk kunci awam, jadi cap jari adalah stabil selagi kunci tidak ditukar.
Kalkulator ini menunjukkan SHA-1 dan SHA-256 panjang; pengesyoran dasar cap jari memerlukan sumber protokol
Dari segi sejarah, SSH cap jari dipaparkan dalam MD5 perenambelasan. MD5 rosak secara kriptografi dan perlanggaran adalah praktikal. Komuniti keselamatan berpindah ke cap jari SHA-256 sebagai lalai. Anda masih boleh melihat kedua-dua format dipaparkan oleh pelanggan SSH anda: `SHA256: base64` dan `MD5: hex`. Cap jari SHA-256 adalah yang perlu dipercayai untuk pengesahan identiti. Jika anda melihat kedua-duanya, bandingkan versi SHA-256 dengan cap jari daripada sumber yang dipercayai (tapak web pelayan, e-mel yang ditandatangani daripada pentadbir, wiki dalaman). Cap jari MD5 kurang dipercayai kerana MD5 perlanggaran wujud.
Perubahan dalam format cap jari adalah tanda peralihan kriptografi yang boleh dilihat. Versi OpenSSH yang lebih lama menunjukkan sahaja MD5. Versi moden menunjukkan SHA-256 secara lalai. Perintah `ssh-keygen -l -f /path/to/key` memaparkan cap jari kunci dalam format lalai untuk versi ssh-keygen anda; anda boleh memaksa format tertentu dengan bendera `-E` (cth., `-E sha256` atau `-E md5`).
SSH's base64 SHA256: format — perubahan pengekodan yang menjadikan cap jari lebih pendek daripada hex
SSH cap jari base64 menggunakan format varian: ia diawali dengan nama algoritma dan titik bertindih, cth., `SHA256:base64string`. Ini berbeza daripada format integriti subsumber (SRI), yang menggunakan tanda sempang dan sahaja termasuk asas standard64. Format SSH termasuk label yang menjadikannya jelas algoritma yang menghasilkan ringkasan. Apabila anda melihat cap jari dalam output SSH, algoritma sentiasa ditunjukkan. Apabila anda melihat atribut integriti SRI, algoritma dikodkan sebagai awalan dengan tanda sempang.
Output base64 daripada kalkulator cincang ToolAcre SHA ialah bentuk standard; untuk memadankan SSH cap jari, tambahkan `SHA256: ` (nama algoritma, titik bertindih dan ruang). Borang heks daripada kalkulator bukanlah bentuk SSH yang dipaparkan, walaupun ia mewakili ringkasan yang sama dan sama sah untuk tujuan pengesahan.
Apa yang membuktikan padanan — bahawa anda memegang bait kunci yang sama di sisi lain yang diterbitkan, dan tiada apa-apa tentang pemilik kunci tanpa semakan luar jalur
Padanan cap jari membuktikan dua perkara: pertama, anda memegang bait kunci yang sama di bahagian lain yang diterbitkan, dan kedua, sama ada kunci mahupun cap jari telah diubah sejak ringkasan dikira. Ia tidak membuktikan identiti pemilik kunci atau membenarkan sebarang tindakan khusus. Mengesahkan cap jari di luar jalur adalah syarat yang perlu tetapi tidak mencukupi untuk mempercayai kunci. Anda juga mesti mengesahkan bahawa orang yang menerbitkan cap jari itu adalah orang yang mereka dakwa.
Dalam amalan, jika pentadbir menerbitkan cap jari SSH pelayan pada intranet syarikat atau dalam e-mel yang ditandatangani, anda boleh mengesahkan ia sepadan dengan gesaan yang anda terima semasa menyambung. Jika cap jari tidak sepadan, anda boleh menolak sambungan dengan yakin kerana seseorang memintas trafik anda atau kunci pelayan telah berubah. Jika cap jari sepadan, anda tahu anda mempunyai kunci yang betul. Sama ada kunci itu milik pelayan yang betul ialah soalan berasingan—yang boleh anda jawab dengan mengesahkan saluran penerbitan (adakah halaman intranet kelihatan sah? adakah e-mel itu sebenarnya daripada akaun pentadbir itu?).
Contoh yang berkesan — mengesahkan cap jari terhadap cap jari yang diterbitkan melalui saluran yang dipercayai, langkah demi langkah
Cap jari sijil mempunyai tujuan yang sama: ia mengenal pasti sijil tertentu secara unik. Jika pelayan TLS menukar sijilnya (cth., semasa pembaharuan), sijil baharu mempunyai cap jari yang berbeza. Penyematan sijil—pengekodan keras cap jari atau set kecil cap jari yang boleh diterima dalam aplikasi—adalah teknik keselamatan untuk mengesan perubahan sijil. Jika pelayan membentangkan sijil dengan cap jari yang berbeza, aplikasi menolaknya. Ini melindungi daripada CA yang terjejas yang mengeluarkan sijil penipuan yang sebaliknya akan dipercayai oleh pelayar.
Penyematan sijil memerlukan pengurusan yang teliti: jika pelayan mengemas kini sijilnya dan anda tidak menjangkakannya, permohonan anda akan menolak sijil baharu yang sah. Kebanyakan aplikasi menggunakan penyematan kunci awam sebaliknya, yang menyematkan kunci awam dan bukannya keseluruhan sijil. Ini membolehkan pembaharuan sijil tanpa penolakan selagi kunci yang sama digunakan.
Contoh yang berfungsi: sahkan dengan alat yang mengetahui protokol kerana ToolAcre cincangan menampal UTF-8 teks, bukan DER atau SSH bait wayar
Mengira cap jari secara manual untuk pengesahan adalah mudah. Simpan sijil atau kunci pada fail, gunakan `openssl dgst -sha256 filename` atau `ssh-keygen -l -f filename -E sha256` untuk memaparkan cap jari dan bandingkan dengan cap jari yang ditunjukkan oleh pelayan kepada anda. Kalkulator cincang ToolAcre SHA juga boleh mengira ringkasan jika anda menampal bait kekunci, tetapi ingat bahawa kalkulator cincang UTF-8 teks yang anda tampal, bukan fail binari. Jika kunci dalam format PEM (teks dengan pengepala `-----BEGIN CERTIFICATE-----` dan bait berkod base64), anda boleh menampalnya ke dalam kalkulator. Jika dalam format DER (binari), anda perlu menggunakan alat baris arahan atau tukar kepada PEM dahulu.
Sempadan itu penting: ToolAcre cincang UTF-8 teks yang anda tampal dalam antara muka kalkulator. Ia tidak membaca fail daripada peranti anda (semua pengiraan ada dalam pelayar, dalam tab anda, tanpa rangkaian). Jika anda mempunyai fail utama pada cakera, anda boleh membukanya dalam editor teks, salin teks dan tampal ke dalam kalkulator jika ia dalam format PEM. Atau anda boleh menggunakan alat baris arahan seperti `openssl`, `ssh-keygen` atau `sha256sum` untuk mengira cincang secara setempat.
Bawa pulang: bandingkan cap jari di luar jalur — kalkulator cincang ToolAcre SHA menunjukkan rupa SHA-1 dan SHA-256 pada panjang penggunaan cap jari
Kalkulator cincang ToolAcre SHA memaparkan SHA-1 dan SHA-256 mencerna untuk sebarang input teks. Jika anda menampal sijil dalam format PEM atau kunci awam SSH, kalkulator mengira kedua-dua ringkasan. Untuk kekunci SSH, kalkulator akan mencincang teks yang anda tampal; jika anda menampal format kunci awam SSH standard yang dikodkan base64, ringkasan tidak akan sepadan dengan cap jari SSH kerana SSH menggunakan pemformatannya sendiri (format wayar) sebelum pencincangan. Untuk padanan langsung, anda memerlukan kunci dalam format yang tepat SSH digunakan secara dalaman, yang bukan format paparan awam.
Untuk cap jari sijil, kelakuannya adalah serupa: jika anda menampal teks sijil yang dikodkan PEM, kalkulator mencincang teks tersebut. Cap jari sijil dikira melalui bait sijil yang dikodkan (format DER), bukan pembalut teks PEM. Bait adalah sama, tetapi pengekodan teks berbeza. Untuk memadankan cap jari sijil daripada OpenSSL atau pemapar sijil pelayar, anda perlu menyediakan DER bait, yang tidak boleh dibaca manusia. Tujuan kalkulator adalah untuk mencincang teks UTF-8 yang anda boleh tampal dan baca, menjadikan sempadan jelas: ia mencincang input teks, bukan fail kunci kriptografi dalam borang perduaan standard atau protokol wayar mereka.