Apa yang SHAttered? Serangan Pelanggaran SHA-1, Dijelaskan
Pada hari pertama 2016, Mozilla menamatkan sokongan untuk teknologi keselamatan yang lemah yang dipanggil SHA-1 dalam pelayar web Firefox. Hampir dengan serta-merta, mereka membalikkan keputusan mereka, kerana ia akan memotong akses ke laman web yang lebih lama. Tetapi pada bulan Februari 2017, ketakutan mereka akhirnya menjadi kenyataan: penyelidik memecahkan SHA-1 dengan mencipta serangan pertembungan sebenar dunia pertama. Inilah maksudnya semua itu.
Apakah SHA-1?
SHA dalam SHA-1 bermaksud Algoritma Hash Secure, dan, sememangnya, anda boleh memikirkannya sebagai sejenis masalah matematik atau kaedah itu merompak data yang dimasukkan ke dalamnya. Dibangunkan oleh NSA Amerika Syarikat, ia adalah komponen teras banyak teknologi yang digunakan untuk menyulitkan penghantaran penting di internet. Kaedah penyulitan biasa SSL dan TLS, yang mungkin anda dengar, boleh menggunakan fungsi hash seperti SHA-1 untuk membuat sijil yang ditandatangani yang anda lihat dalam bar alat penyemak imbas anda.
Kami tidak akan pergi ke dalam matematik dan sains komputer mana-mana fungsi SHA, tetapi inilah idea asas. "Hash" adalah kod unik berdasarkan input mana-mana data. Malah, rentetan huruf rawak yang kecil dimasukkan ke dalam fungsi hash seperti SHA-1 akan mengembalikan bilangan aksara set yang panjang, sehingga menjadikannya (berpotensi) tidak dapat memulihkan rentetan aksara kembali ke data asal. Inilah cara penyimpanan kata laluan biasanya berfungsi. Apabila anda membuat kata laluan, input kata laluan anda telah hilang dan disimpan oleh pelayan. Apabila anda kembali, apabila anda menaip kata laluan anda, ia telah hilang lagi. Sekiranya ia sepadan dengan hash asal, input boleh diandaikan sama, dan anda akan diberi akses kepada data anda.
Fungsi Hash berguna terutamanya kerana mereka memudahkan untuk memberitahu jika input, contohnya, fail atau kata laluan, telah berubah. Apabila data input adalah rahsia, seperti kata laluan, hash hampir mustahil untuk membalikkan dan memulihkan data asal (juga dikenali sebagai "kunci"). Ini sedikit berbeza daripada "penyulitan", yang tujuannya adalah data bergelora untuk tujuan descrambling kemudian, menggunakan ciphers dan kunci rahsia. Hashes hanya dimaksudkan untuk memastikan integriti data-untuk memastikan bahawa semuanya adalah sama. Git, perisian kawalan dan pengedaran versi untuk kod sumber terbuka, menggunakan SHA-1 untuk alasan ini.
Itulah banyak maklumat teknikal, tetapi untuk meletakkannya semata-mata: hash bukanlah perkara yang sama seperti penyulitan, kerana ia digunakan untuk mengenal pasti jika fail telah berubah.
Bagaimana Teknologi Ini Memengaruhi Saya?
Katakan anda perlu melayari laman web secara peribadi. Bank anda, e-mel anda, walaupun akaun Facebook anda-semua menggunakan penyulitan untuk menyimpan data yang anda hantar kepada mereka secara peribadi. Laman web profesional akan menyediakan penyulitan dengan memperoleh sijil daripada pihak berkuasa yang dipercayai-pihak ketiga, yang dipercayai untuk memastikan penyulitannya berada di tahap, persendirian antara laman web dan pengguna, dan tidak disaksikan oleh mana-mana pihak lain. Hubungan ini dengan pihak ketiga, dipanggil Pihak Berkuasa Sijil, atau CA, adalah penting, kerana mana-mana pengguna boleh membuat sijil "ditandatangani sendiri" - anda juga boleh melakukannya sendiri pada mesin yang menjalankan Linux dengan Open SSL. Sebagai contoh, Symantec dan Digicert adalah dua syarikat CA yang terkenal.
Mari lari melalui senario teoritis: How-To Geek mahu terus log masuk sesi pengguna dengan penyulitan, jadi petisyen CA seperti Symantec dengan Permintaan Tandatangan Sijil, atau CSR. Mereka mencipta kunci awam dan kunci peribadi untuk menyulitkan dan mendekripsi data yang dihantar melalui internet. Permintaan CSR menghantar kunci awam kepada Symantec bersama-sama dengan maklumat mengenai laman web tersebut. Symantec menyemak kunci terhadap rekodnya untuk mengesahkan bahawa data tidak berubah oleh semua pihak, kerana sebarang perubahan kecil dalam data menjadikan hash sangat berbeza.
Kunci awam dan sijil digital ditandatangani oleh fungsi hash, kerana output fungsi ini mudah dilihat. Kunci awam dan sijil dengan hash yang diverifikasi dari Symantec (dalam contoh kita), pihak berkuasa, menjamin pengguna How-To Geek bahawa kunci itu tidak berubah, dan tidak dihantar dari seseorang yang berniat jahat.
Kerana hash mudah dipantau dan mustahil (sesetengahnya akan berkata "sukar") untuk membalikkan, tandatangan hash yang sah dan betul, bermakna sijil dan sambungan itu boleh dipercayai, dan data boleh dipersetujui untuk dihantar disulitkan dari akhir ke akhir . Tetapi bagaimana jika hash itu sebenarnya bukan unik?
Apakah Serangan Pelanggaran, dan Adakah Kemungkinan di Dunia Nyata?
Anda mungkin pernah mendengar "Masalah Ulang Tahun" dalam matematik, walaupun anda mungkin tidak tahu apa yang dipanggilnya. Idea asas ialah jika anda mengumpulkan sekumpulan orang yang cukup besar, peluangnya cukup tinggi bahawa dua atau lebih orang akan mempunyai ulang tahun yang sama. Yang lebih tinggi daripada yang anda harapkan, sebenarnya cukup bahawa ia kelihatan seperti kebetulan yang aneh. Dalam sekelompok seramai 23 orang, ada peluang 50% bahawa dua akan berkongsi hari jadi.
Ini adalah kelemahan yang wujud dalam semua hash, termasuk SHA-1. Secara teorinya, fungsi SHA harus mencipta hash unik untuk apa-apa data yang dimasukkan ke dalamnya, tetapi apabila bilangan hash bertambah, semakin besar kemungkinan pasangan data yang berbeza dapat mencipta hash yang sama. Oleh itu, seseorang boleh membuat sijil yang tidak dipercayai dengan hash yang sama dengan sijil yang dipercayai. Jika mereka membawa anda untuk memasang sijil yang tidak dipercayai, ia boleh menyamar sebagai dipercayai, dan mengedarkan data berniat jahat.
Mencari hash padanan dalam dua fail dipanggil a serangan perlanggaran. Sekurang-kurangnya satu serangan perlanggaran berskala besar diketahui telah berlaku untuk hash MD5. Tetapi pada 27 Februari, 2017, Google mengumumkan SHAttered, perlanggaran pertama yang dibuat untuk SHA-1. Google dapat membuat fail PDF yang mempunyai hash SHA-1 sama seperti fail PDF lain, walaupun mempunyai kandungan yang berbeza.
SHAttered telah dilakukan pada fail PDF. PDF adalah format fail yang relatif longgar; Banyak perubahan tahap kecil, boleh dibuat tanpa menghalang pembaca daripada membukanya atau menyebabkan sebarang perbezaan yang jelas. PDF juga sering digunakan untuk menyampaikan perisian hasad. Walaupun SHAttered boleh bekerja pada jenis fail lain, seperti ISO, sijil ditetapkan dengan tegas, menjadikan serangan sedemikian tidak mungkin.
Jadi betapa mudah serangan ini dilakukan? SHAttered berdasarkan kaedah yang ditemui oleh Marc Stevens pada tahun 2012 yang memerlukan lebih daripada 2 ^ 60.3 (9.223 quintillion) operasi SHA-1-nombor yang mengejutkan. Walau bagaimanapun, kaedah ini masih 100,000 kali lebih sedikit operasi daripada yang diperlukan untuk mencapai hasil yang sama dengan kuasa brute. Google mendapati bahawa dengan 110 kad grafik mewah yang bekerja secara selari, ia mengambil masa kira-kira satu tahun untuk menghasilkan perlanggaran. Menyewa masa pengiraan ini dari Amazon AWS akan menelan kos kira-kira $ 110,000. Perlu diingat bahawa apabila harga turun untuk bahagian komputer dan anda boleh mendapatkan lebih banyak kuasa untuk kurang, serangan seperti SHAttered menjadi lebih mudah untuk menarik.
$ 110,000 mungkin kelihatan seperti banyak, tetapi ia berada dalam lingkungan kemampuan untuk sesetengah organisasi - yang bermaksud cybervillian kehidupan sebenar boleh menjalin tandatangan dokumen digital, mengganggu sistem kawalan sandaran dan versi seperti Git dan SVN, atau membuat Linux Linux yang berniat jahat muncul sah.
Mujurlah, ada faktor yang dapat menghalang serangan tersebut. SHA-1 jarang digunakan untuk tandatangan digital lagi. Pihak Berkuasa Sijil tidak lagi menyediakan sijil yang ditandatangani dengan SHA-1, dan kedua-dua Chrome dan Firefox telah menurunkan sokongan untuk mereka. Pengagihan Linux lazimnya dibebaskan lebih kerap daripada sekali setahun, menjadikannya tidak praktikal bagi penyerang untuk membuat versi yang berniat jahat dan kemudian menghasilkan satu empuk untuk mempunyai hash SHA-1 yang sama.
Sebaliknya, beberapa serangan berdasarkan SHAttered sudah berlaku di dunia nyata. Sistem kawalan versi SVN menggunakan SHA-1 untuk membezakan fail. Memuat naik kedua-dua PDF dengan SHA-1 yang serupa dengan hash ke repositori SVN akan menyebabkan ia rosak.
Bagaimana saya boleh melindungi diri saya dari serangan SHA-1?
Tidak banyak yang boleh dilakukan pengguna biasa. Sekiranya anda menggunakan pemeriksaan untuk membandingkan fail, anda harus menggunakan SHA-2 (SHA-256) atau SHA-3 daripada SHA-1 atau MD5. Begitu juga, jika anda seorang pemaju, pastikan anda menggunakan algoritma hash yang lebih moden seperti SHA-2, SHA-3, atau bryrpt. Sekiranya anda bimbang bahawa SHAttered telah digunakan untuk memberikan dua fail yang berbeza hash sama, Google telah mengeluarkan alat di laman SHAttered yang dapat memeriksa anda.
Kredit Imej: Lego Firefox, Banyak Hash, Tolong Jangan Hurt pengarang Web tidak diketahui, Google.