Menurut artikel ini , dan banyak lainnya, SHA-1 tidak aman.
Dalam kasus saya, saya tidak peduli tentang kata sandi atau sertifikat digital. Saya khawatir tentang integritas file.
Apakah mungkin untuk file (misalnya gambar ISO atau file yang dapat dieksekusi) diubah secara jahat dengan cara yang:
- Mempertahankan hash SHA-1 file asli, dan
- Mempertahankan keseluruhan konten dan operasi file (tetapi tentu saja sekarang termasuk konten jahat yang pada awalnya tidak ada)
Cara saya melihatnya, mengubah file dengan cara yang menghasilkan tabrakan SHA-1 akan membuat file sama sekali tidak berguna. ISO akan benar-benar rusak, atau file yang dapat dieksekusi akan sangat berantakan sehingga bahkan tidak akan menjadi file yang dapat dieksekusi lagi.
Tapi, cara saya melihatnya bisa saja salah. Sejauh ini saya belum menemukan apa pun di pencarian Google sehubungan dengan kesesuaian berkelanjutan SHA-1 untuk verifikasi file. Ada wawasan?
Jawaban:
Belum ada yang mencapai ini untuk SHA-1. Itu mungkin secara teori, tetapi masih belum praktis. Laporan tentang ketidakamanan di SHA-1 hanya berarti bahwa tingkat keamanan tidak setinggi yang kita inginkan dan itu berarti kita tidak memiliki banyak tahun sebelum kita harus khawatir tentang ini seperti yang kita pikir kita lakukan.
Lebih sulit menghasilkan file dengan hash SHA-1 yang sama dengan file yang diberikan daripada membuat sendiri dua file dengan hash SHA-1 yang sama. Dan sejauh yang kami tahu, belum ada seorang pun di dunia ini yang melakukan tugas yang lebih mudah ini. Itu tidak berarti itu tidak bisa terjadi besok.
sumber
Secara teori itu mungkin, tetapi belum dilakukan.
Apa yang Anda cari disebut "tabrakan hash:" dua file dengan hash yang sama. Kode hash kriptografi seperti SHA-1 pada umumnya dirancang untuk membuat ini sulit. Karena SHA-1 adalah kode 160 bit, maka dibutuhkan upaya rata-rata 2 ^ 159 untuk menemukan duplikat. Jika suatu algoritma ditemukan yang andal melakukan lebih baik daripada itu terhadap hash kriptografi, hash dianggap "rusak."
MD-5 adalah contoh hash yang sangat rusak. Itu seharusnya memiliki kekuatan 128 bit, membutuhkan rata-rata 2 ^ 127 upaya. Seperti halnya, menyalahgunakan kerentanan yang diketahui, jumlah sebenarnya upaya yang dibutuhkan bisa serendah 2 ^ 47. Ini BANYAK lebih kecil dari 2 ^ 127. Bahkan, itu telah dilakukan dalam waktu kurang dari satu hari di sebuah cluster komputasi modern.
Saya memberikan contoh itu karena itu paling dekat dengan bagaimana Anda ingin menggunakan SHA-1. Namun, itu bukan pendekatan cryptanalysis yang paling umum digunakan untuk memastikan hash tidak rusak. Mereka biasanya memungkinkan tabrakan antara dua file, seperti yang dipilih oleh penyerang, bukannya Anda memilih satu file dan penyerang berusaha mencocokkannya. Serangan semacam ini memiliki keuntungan lebih mudah dibandingkan. Jika saya merasa "sulit" untuk meretas file Anda, apakah itu berarti file lain sama kuatnya? Serangan ini tempat penyerang dapat memilih kedua file memastikan kami menangkap yang terburuk dari yang terburuk.
Serangan semacam ini memungkinkan trik menarik yang dikenal sebagai " serangan ulang tahun ." Singkatnya, bisa menggunakan serangan ulang tahun membagi dua kekuatan algoritma, sehingga SHA-1 membutuhkan 2 ^ 80 upaya (rata-rata) dan MD5 membutuhkan 2 ^ 64 upaya (rata-rata). Ini adalah setengah dari 160 dan 128 masing-masing.
SHA-1 telah mengetahui serangan yang menurunkan kekuatannya dari 2 ^ 80 menjadi 2 ^ 69. Ini tidak akan terlalu berarti bagi Anda. 2 ^ 69 upaya adalah waktu yang lama .
Namun, dari sejarah, kami telah menemukan bahwa algoritma hash tidak rusak secara spontan, melainkan rusak seiring waktu. Tidak ada yang memecahkan algoritma seperti MD-5 yang mengambilnya dari 2 ^ 64 hingga 2 ^ 47 semalam. Ini terjadi seiring waktu, karena banyak orang menerbitkan makalah tentang matematika yang mereka gunakan menentangnya. Orang biasanya dapat menonton kompleksitas serangan turun perlahan dari awal algoritma (di mana serangan terbaik biasanya serangan ulang tahun).
Fakta bahwa kita melihat beberapa perubahan dalam tabrakan menunjukkan SHA-1 sedang melihat cahaya di ujung terowongan. Ini masih kuat, tetapi mungkin ada keinginan untuk naik ke SHA-3 terbaru yang saat ini jauh lebih aman.
Anda harus benar-benar membuat keputusan seperti itu dari perspektif model ancaman. Berapa banyak kerusakan yang bisa dilakukan oleh penyerang jika mereka mendapatkan salah satu dari tabrakan ini. Apakah skrip penyerang Anda kiddies dengan akses ke beberapa laptop, atau pemerintah dengan seluruh cluster superkomputer yang mereka miliki. Seberapa besar jendela waktu yang dimiliki penyerang untuk memecahkan hash sebelum tidak digunakan (banyak penggunaan kriptografi melibatkan "perubahan penjaga," seperti rotasi kata sandi). Semua ini akan mempengaruhi seberapa serius Anda harus mempertimbangkan tabrakan.
sumber
Kelemahan dalam SHA-1 yang dibahas dalam artikel itu sangat spesifik: mereka memungkinkan penyerang untuk membuat dua hal yang hash dengan nilai yang sama (ini disebut "serangan tabrakan"). Namun, serangan tabrakan mengharuskan penyerang mengontrol kedua file yang terlibat. Jika penyerang tidak mengontrol file asli, serangan tabrakan tidak membiarkan mereka menemukan file lain dengan nilai hash yang sama.
Alasan ini penting untuk TLS / SSL (dan tanda tangan pada umumnya) adalah bahwa dengan itu, penyerang sering dapat mengontrol kedua file. Sertifikat TLS sebagian besar dibuat oleh orang yang memintanya (bit yang tidak mereka kendalikan seringkali dapat diprediksi), jadi tabrakan membuat mereka membuat sertifikat yang sah dan yang tidak sah, mendapatkan yang sah ditandatangani, dan mentransfer tanda tangan.
Untuk file, situasi yang sama tidak selalu berlaku. Jika kekhawatiran Anda adalah bahwa orang yang membuat file tersebut adalah penyerang (mis. Mereka akan mendapatkan satu hal yang diverifikasi secara independen sebagai hal yang baik, dan kemudian mengirimi Anda muatan jahat dengan hash yang sama), serangan SHA-1 berlaku, dan Anda harus melihat menuju penghapusan bertahap (meskipun belum kritis, seperti yang disebutkan David Schwartz). Jika file asli tepercaya, maka penyerang tidak dapat menerapkan serangan SHA-1 yang saat ini dikenal, meskipun Anda harus tetap berpikir untuk menghapusnya secara bertahap jika Anda bisa (jika Anda punya pilihan, gunakan hash tanpa serangan yang diketahui seperti SHA- 2).
Menanggapi "tabrakan tidak akan berguna" - Sementara serangan tidak memerlukan penyerang untuk bisa mendapatkan tabrakan yang bermanfaat , umumnya tidak terlalu sulit untuk mengubah "tabrakan" menjadi "tabrakan yang bermanfaat." Banyak format file memiliki jumlah ruang yang cukup di mana Anda dapat memiliki apa pun yang Anda inginkan tanpa memengaruhi fungsionalitas file; penyerang biasanya dapat memodifikasi itu untuk mendapatkan tabrakan (jika tabrakan dapat ditemukan), sambil menjaga bagian fungsional seperti apa pun yang mereka inginkan. Kesenjangan antara "serangan akademis" dan "serangan praktis" bisa besar; kesenjangan antara "tabrakan apa pun" dan "tabrakan bermanfaat" umumnya jauh lebih kecil.
Masalah yang lebih serius, yang tidak terkait dengan pilihan algoritma, adalah bagaimana Anda mendapatkan hash. Yang dilakukan hash hanyalah mengubah masalahnya dari "dapatkan file nyata" menjadi "dapatkan nilai hash yang sebenarnya;" nilai hash yang dikirim dari server yang sama dan lebih dari jenis koneksi yang sama karena file sama sekali tidak berharga terhadap modifikasi berbahaya (penyerang yang dapat merusak file dapat merusak hash). Hash hanya berguna untuk ini jika Anda bisa mempercayai hash lebih dari yang Anda bisa percayai file; sementara itu kadang-kadang terjadi (torrents, mirror), mereka sering digunakan ketika itu tidak terjadi. Jadi, Anda harus sangat berhati-hati tentang hal itu setiap kali menggunakan hash untuk verifikasi integritas.
sumber
Anda harus membedakan antara serangan tabrakan dan serangan preimage . Menemukan dua pesan yang hash dengan nilai yang sama adalah serangan tabrakan.
Mengganti satu pesan tertentu, yang diberikan (di sini: dapat dieksekusi) dengan pesan lain yang memiliki hash yang sama adalah serangan preimage (kedua).
SHA-1 rusak sejauh serangan tabrakan dapat dilakukan dalam 2 52 operasi menurut artikel Wikipedia yang tidak memberikan kutipan untuk nomor itu (serangan terbaik yang saya tahu yang sebenarnya dapat dipercaya adalah yang oleh Marc Stevens , yang membutuhkan 2 60 operasi). Tapi mari kita asumsikan kasus pesimis dari 2 52 .
Hal ini memprihatinkan karena serangan pada skala itu tidak hanya secara teoritis dapat dibayangkan tetapi juga bisa dilakukan dalam waktu kurang dari satu hari pada rig multi-GPU. Itu tentu saja masalah untuk aplikasi di mana "dua" pesan akan dilakukan. Bahkan angka 2 60 yang diberikan oleh Stevens (yang 256 kali lebih banyak pekerjaan) sangat layak jika penyerang Anda bersedia untuk membuang uang tambahan pada masalah, atau bersedia menghabiskan waktu setahun.
Hal yang persis seperti itu tidak akan mencegah seseorang yang terlibat dalam spionase atau kejahatan dunia maya dari memalsukan sertifikat.
Sekarang, serangan preimage memiliki eksponen yang dua kali lebih besar, sehingga dengan asumsi 52 untuk serangan tabrakan, itu akan menjadi 2 104 operasi, yang merupakan ballpark yang sama sekali berbeda.
Ini tidak hanya tidak praktis (mesin yang satu miliar kali lebih cepat dari yang disebutkan dalam paragraf sebelumnya masih akan memakan waktu sekitar 6 juta tahun), tetapi mengingat cara kami yang kecil untuk menghasilkan energi, ini sama sekali tidak mungkin.
Melakukan perhitungan masif seperti itu akan membutuhkan sumber energi yang jauh lebih besar daripada apa pun yang dapat kita persembahkan untuk satu operasi. Tidak, bukan sumber energi seukuran matahari, tetapi masih cukup besar .
Anda secara realistis dapat mengharapkan mendapatkan apa pun dari 10 hingga 50 GFLOPS dari satu Watt. Dengan asumsi bahwa beberapa jenis keajaiban terjadi dan prosesor mendapatkan sekitar beberapa ribu kali lebih hemat energi dalam semalam, orang dapat mengasumsikan 1 SHA ≈ 1 FLOP (cukup optimis!). Ini berarti bahwa untuk melakukan perhitungan 104 hash dalam 10 tahun, Anda memerlukan pembangkit listrik 10 12 W. Untuk menjalankan serangan dalam 1 tahun, Anda membutuhkan pembangkit listrik 10 13 W. Itu sekitar 50 kali lipat dari apa yang dapat dihasilkan oleh seluruh pembangkit listrik tenaga nuklir Amerika Serikat, Prancis, dan Jepang, hanya untuk menempa hash tunggal.
Ini tidak akan terjadi , ada banyak cara yang lebih mudah untuk mencapai tujuan yang sama (mengeksploitasi server yang menyimpan hash asli dan mengganti yang itu, memeras seseorang, dll.).
sumber
The umum titik artikel disebut dalam pertanyaan adalah: SHA1 sudah ditinggalkan dan harus dihapus saat Anda masih punya waktu untuk melakukannya dengan lancar. Di beberapa daerah, waktu mulai habis karena Google dan Microsoft menerapkan tenggat waktu.
Aturan praktis untuk teknologi usang :
Kutipan ringkasan dari posting blog 2012 oleh Bruce Schneier .: "Intinya adalah bahwa kita di komunitas perlu memulai migrasi dari SHA-1 dan ke SHA-2 / SHA-3 sekarang."
sumber
Untuk bagian tabrakan hash SHA-1 dari pertanyaan Anda, ini telah diatasi oleh beberapa jawaban.
Namun, sebagian besar dari hal ini bergantung pada jenis file yang sedang kami tangani:
Apa artinya ini sangat bervariasi pada apa yang mendeteksi perubahan:
Jadi, yang tersisa adalah bagaimana cara mendapatkan benturan dalam struktur apa pun yang tidak rusak dan beberapa tingkat tidak terdeteksi mungkin:
Katakanlah Anda memiliki komputer super cepat dan file bertubuh kecil, sehingga modifikasi dengan urutan byte yang valid dan menghitung ulang hash membutuhkan waktu 1 milidetik (mungkin memerlukan beberapa perangkat keras khusus). Jika distribusi hash benar-benar acak dan didistribusikan di seluruh rentang, Anda akan mendapatkan tabrakan dengan SHA-1 setiap
2^160
upaya (dengan paksa memaksa).Tapi hei, mari kita coba
2^60
dan2^52
versi, dan berpura-pura bahwa mereka memungkinkan kita untuk memodifikasi file dengan cara apa pun yang kita suka (tidak) dan mereka juga dapat dilakukan dalam 1ms setiap percobaan:Tapi hei, kamu mungkin beruntung. Benar-benar, benar-benar, lebih dari mukjizat-daripada-apa pun yang disebut orang mukjizat beruntung.
sumber
Tidak juga, Anda dapat memenuhi salah satu dari kondisi tersebut pada satu waktu tetapi tidak keduanya .. adalah mungkin untuk mendapatkan hash yang sama untuk dua file yang berbeda tetapi bagi seseorang untuk mengubah file dan kemudian mencoba untuk mendapatkan hash yang sama hampir tidak mungkin karena Sejauh yang saya tahu
sumber
Ya itu mungkin. Pikirkan bagaimana virus bekerja pada EXEs. Payload malware ditambahkan ke EXE asli, sehingga program tetap melakukan apa yang awalnya dilakukan, tetapi juga menyebar sebagai virus. Sekarang, untuk mempertahankan hash yang sama, Anda perlu tambahan bantalan khusus dibuat .
Itu berarti bahwa file tersebut akan lebih besar. Tetapi dalam kasus EXE, mungkin Anda bisa menghapus beberapa kode yang kurang digunakan, sehingga program tersebut hanya akan berfungsi pada awalnya. Dalam kasus JPEG, Anda dapat memampatkan gambar lebih lanjut atau menggunakan gambar yang sama sekali berbeda. Untuk ISO, Anda bisa menghapus set file. Perhitungan yang diperlukan untuk mereplikasi hash akan lebih sulit, dan mungkin secara matematis tidak mungkin untuk kasus-kasus tertentu, tetapi masih mungkin secara umum.
sumber