Mengapa sertifikat root CA semua SHA-1 ditandatangani (karena SHA-1 sudah usang)?

67

Saya mengerti bahwa sertifikat SSL tidak dapat ditandatangani menggunakan SHA-1 lagi. Namun, semua sertifikat root CA ditandatangani SHA-1 (kebanyakan). Apakah ini berarti algoritme yang sama yang tidak lagi dipercaya untuk "Anda nenek toko SSL" baik-baik saja untuk sertifikat paling dijamin atas dunia?

Apakah saya melewatkan sesuatu? (penggunaan kunci? ukuran kunci?)

131
sumber
9
Tidak benar bahwa "semua" sertifikat root CA adalah SHA1.
Greg Askew
5
Sertifikat root seperti memulai asumsi dalam pandangan dunia. Diperlukan iman untuk memercayai mereka.
Roy Tinker
@RoyTinker kecuali cogito ergo sum (lihat keraguan radikal, dan jawabannya: Skeptisisme Cartesian )?
Nick T
6
@NickT: Mainkan dengan aman - cogito ergo cogito ;-)
tonysdg

Jawaban:

106

Tanda tangan dari sertifikat CA root tidak masalah sama sekali, karena tidak perlu memverifikasi mereka. Semuanya ditandatangani sendiri.

Jika Anda mempercayai sertifikat CA root, tidak perlu memverifikasi tandatangannya. Jika Anda tidak mempercayainya, tanda tangannya tidak berharga bagi Anda.

Sunting: ada beberapa komentar yang sangat relevan di bawah ini. Saya tidak merasa nyaman menyalin atau mengulang kata-kata mereka dan mengambil kredit untuk mereka daripada penulisnya. Tetapi saya menyambut orang untuk menambahkan penjelasan untuk jawaban ini.

pengguna2233709
sumber
3
Membawa pertanyaan mengapa mereka ditandatangani sama sekali
Richard Tingle
42
Karena sistem tidak mendukung sertifikat yang tidak ditandatangani.
Stop Harming Monica
Tampaknya bagi saya bahwa kekhawatiran dengan sertifikat root yang dapat dipecahkan bukanlah "Anda tidak tahu dari mana Anda mendapatkan sertifikat root", melainkan "Anda tidak tahu siapa lagi yang dapat memecahkan sertifikat ini dan menggunakannya untuk menandatangani apa pun yang mereka inginkan. " Dan tampaknya dari jawaban Anda bahwa keduanya (sertifikat dan penandatanganan sertifikat) adalah masalah yang terpisah, dan bahwa sertifikat itu sendiri aman dan tidak dapat dilacak?
Dewi Morgan
20
Saya akan melangkah lebih jauh dari "tidak perlu memverifikasi mereka". Tujuan dari tanda tangan dalam rantai sertifikat adalah bahwa otoritas yang lebih tinggi menyatakan otoritas yang lebih rendah. Untuk CA akar, tidak ada otoritas yang lebih tinggi menurut definisi (itulah yang dimaksud "root"), jadi tidak ada orang yang mungkin menandatangani sertifikat . Karena, seperti yang disebutkan, sertifikat harus ditandatangani, root CA ditandatangani dengan tanda tangan "dummy", dan cara paling sederhana untuk melakukannya, adalah dengan menandatangani sendiri. Jadi, tidak hanya tidak perlu memverifikasi, ide untuk memverifikasi tanda tangan CA root tidak masuk akal.
Jörg W Mittag
13
@DewiMorgan Anda tidak dapat "memecahkan" sertifikat root dengan tabrakan hash, karena klien mempercayai sertifikat itu sendiri , bukan tanda tangan (diri sendiri). Anda harus memulihkan kunci pribadi, yang merupakan serangan pada RSA, bukan pada algoritma hash.
zwol
46

Pada akhirnya, sertifikat root ditandatangani sendiri. Itu tidak pernah ditandatangani oleh entitas lain kecuali dirinya sendiri. Sertifikat root mendapatkan kepercayaannya melalui proses out-of-band seperti mengirimkannya ke daftar browser penerbit tepercaya, atau membuatnya diterima oleh Microsoft untuk dimasukkan ke daftar default penerbit Windows tepercaya.

Sertifikat-sertifikat ini (dan perusahaan-perusahaan yang menandatanganinya sendiri) (diduga, mudah-mudahan) diperiksa secara menyeluruh melalui cara lain selain hanya tanda tangan mereka.

Mark Henderson
sumber
2
Belum lagi, memperbarui sertifikat root harus melalui proses out-of-band itu lagi.
Kaithar
4
+1 untuk "diduga, semoga"
Nathan Osman
6

Satu-satunya kasus di mana ini penting, adalah jika root ditandatangani oleh SHA-1 dapat dicabut oleh SHA-1. Artinya, seseorang yang dapat menyerang SHA-1 dapat membuat pencabutan root. Dan saya benar-benar yakin browser tidak tahu bagaimana untuk bertahan sehingga perusak telah mencapai tidak lebih dari menjatuhkan koneksi SSL. Betapa lemah.

joshudson
sumber
1
Ini adalah pemikiran yang menarik tetapi saya ragu ini akan bekerja seperti ini. Dugaan saya adalah bahwa masing-masing agen akan memiliki perilaku uniknya sendiri, tetapi saya ragu setiap pengembang memiliki gagasan bahwa daftar pencabutan akan digunakan untuk mengelola pencabutan sertifikat root. Paling tidak, jika ini bekerja dalam beberapa kasus, itu akan disebabkan abstraksi pencabutan perangkat lunak dan tidak sengaja oleh pengembang.
Peter Oehlert
1

Sebagai catatan untuk yang ini, BEBERAPA CA telah memperbarui sertifikat root dan perantara mereka ke SHA256.

Saya tahu bahwa tahun lalu GlobalSign memperbarui sertifikat mereka karena kami memperbarui sertifikat penandatanganan kode kami, jadi saya harus menambahkan rantai baru mereka juga.

Anda dapat memeriksa sertifikat spesifik mana yang diperbarui dan mana yang diperbarui tetapi juga meninggalkan sertifikat SHA1 lama untuk di sini => 1

Semoga itu bisa membantu.

B.Kaatz
sumber
0

Untuk root CA, Anda memberi Anda kepercayaan pada kunci publik CA-yang diikat di CRT - terlepas dari tanda tangannya sendiri.

Mendeskripsikan CA menggunakan format file .CRT alih-alih kunci publik mentah .PEM memungkinkan untuk menggabungkan lebih banyak detail di dalamnya - misalnya nama CA - (lagi-lagi, tanda tangannya tidak berharga)

131
sumber
-1

Ada yang sangat tua, sebagian besar era 2006 atau sebelumnya sudah dipercaya menyematkan sertifikat root SHA1 yang diterima browser, tetapi tidak ada sertifikat yang lebih baru. Ingat ketika Firefox dan Chrome diversi versi menggunakan satu digit?

Sertifikat gagal jika root CA menggunakan sertifikat SHA1 dengan Not Before diatur ke sesuatu setelah 2014. Batasan tanggal aktual tergantung pada browser atau aplikasi lain. Forum webCA membuat ini jelas beberapa tahun yang lalu. Uji sendiri dengan:

  1. Buat infrastruktur private root Certificate Authority yang ditandatangani dengan SHA1, sebut saja rootSHA1
  2. Mintalah rootSHA1 membuat CA "penerbit" atau "perantara" yang menerbitkan sertifikat dengan sertifikat yang dirantai hingga ke root. Sebut saja intermediateSHA256.
  3. Mintalah intermediateSHA256 mengeluarkan CA menghasilkan sertifikat yang ditandatangani dengan hasa256 atau lebih besar. Sebut saja webServerSHA256.
  4. Instal webserverSHA256 ke webserverSHA56.mydomain.com.
  5. Pasang sertifikat rootSHA1, intermediateSHA256, dan webServerSHA256 ke lokasi yang sesuai di Google Chrome. Instal root ke Otoritas Sertifikasi Root Tepercaya dan yang lainnya dengan rantai sertifikat.
  6. Arahkan Google Chrome ke https://webServerSHA256.mydomain.com/ dan verifikasi tidak ada gembok hijau untuk webServerSHA256. Tes gagal.
rjt
sumber
Ini sangat salah. Sertifikat perantara (dan sertifikat EE./leaf) memang membutuhkan SHA2, tetapi root tidak. Rantai sertifikat Google sendiri melalui CA pribadi mereka (Google Internet Authority G3) ke GlobalSign Root CA R2 - yaitu SHA1 - dan (tidak mengejutkan) diterima oleh Chrome.
dave_thompson_085
Ya, sertifikat SHA1 yang disematkan itu diterima, tetapi tidak ada sertifikat root SHA1 baru bahkan jika Anda menambahkannya ke toko sertifikat Root Tepercaya Anda sendiri. Menambahkan test case ke jawaban saya.
rjt