Bisakah file diubah secara berbahaya dengan cara mempertahankan SHA-1 Hash aslinya?

33

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?

misha256
sumber
7
Jawabannya adalah, tergantung". Jika ISO tersebut mengandung banyak file jpeg atau film - bersama dengan target Anda yang dapat dieksekusi, maka itu mungkin. Anda dapat memodifikasi file jpeg secara dramatis tanpa mengubah ukuran atau tampilan visualnya. Pada akhirnya, semakin besar file, semakin banyak Anda harus bermain, dan semakin baik peluang tabrakan yang tidak merusak.
Paul
7
@cpast tepatnya, banyak situs web mencantumkan hash SHA-1 untuk memungkinkan Anda memverifikasi unduhan Anda. Memikirkan hal itu, tampaknya jauh lebih mungkin bahwa seorang peretas akan berkompromi dengan situs web dengan mengubah konten dan hash yang dipublikasikan. Maka Anda benar-benar kacau.
misha256
1
Hanya fyi, pertanyaan saya bertanya tentang SHA-1 khusus karena cukup umum, terutama dengan unduhan dari Microsoft / MSDN. Tentu saja beberapa situs web menerbitkan hash MD5, yang lain SHA256, dll.
misha256
2
Pertanyaannya adalah, mengapa Anda ingin menggunakan hash yang memiliki setiap kerentanan diketahui, ketika ada alternatif yang hanya sebagai cepat, mudah digunakan, dan tersedia secara luas yang tidak (misalnya. SHA-256) ? Selain itu, ada alasan cryptographers menyatakan hash tidak aman setelah hanya satu kerentanan ditemukan: sejarah menunjukkan bahwa ketika seseorang ditemukan, yang lain dengan cepat mengikuti. Kutipan Bruce Schneier yang terkenal adalah "Serangan selalu menjadi lebih baik, mereka tidak pernah menjadi lebih buruk"
BlueRaja - Danny Pflughoeft
3
@ misha256 hash sha1 itu untuk Anda periksa korupsi unduhan, bukan untuk keamanan. Jika Anda menginginkan keamanan, gunakan file bertanda gpg
Daenyth

Jawaban:

41

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.

David Schwartz
sumber
Apakah ada serangan diketahui pada SHA-1 untuk tabrakan dengan file yang diberikan? Saya mendapat kesan bahwa serangan itu belum ditemukan untuk MD5 atau SHA-1 (hanya ada serangan tabrakan, bukan serangan preimage kedua)
cpast
@cpast, malware Flame menggunakan tabrakan MD5 yang tampaknya berasal dari Microsoft dan membajak Pembaruan Windows. Mereka mungkin memiliki banyak sertifikat Microsoft untuk dipilih, tetapi mereka tidak hanya mencoba menemukan 2 file dengan MD5 yang sama.
Aron Foster
2
@Ron Tidak, itu bukan contoh tabrakan dengan file yang diberikan. Dengan Flame, Microsoft memiliki server lisensi yang akan menandatangani sertifikat X.509 berdasarkan permintaan penandatanganan sertifikat, yang berarti penyerang mengontrol apa yang sedang ditandatangani dalam batas-batas tertentu. Tidak ada sertifikat yang sudah ada sebelumnya yang mereka temukan tabrakan; Microsoft menandatangani CSR dari pelanggan sebagai bagian dari aktivasi, yang memungkinkan penggunaan serangan tabrakan (yang bukan serangan preimage kedua).
cpast
2
@ OlivierDulac Tidak, itu memang belum pernah dilakukan. Tidak ada tabrakan SHA-1 yang diketahui. Biaya diperkirakan hanya perkiraan - itu tidak bahwa seseorang melakukannya dan ini adalah berapa banyak kita pikir itu biaya, itu bahwa tidak ada yang melakukannya tapi kami pikir ini adalah berapa banyak akan biaya.
cpast
4
@cpast Kami tidak tahu pasti apakah telah dilakukan atau tidak, tetapi serangan $ 3 juta kurang dari 0,03% dari anggaran tahunan NSA (pada kenyataannya, serangan itu harus lebih murah mengingat bahwa mereka sudah memiliki perangkat keras dan tidak harus menyewa). Adalah masuk akal untuk menyimpulkan bahwa, karena mereka memiliki sarana dan motivasi untuk melakukannya, maka mereka mungkin sudah melakukannya. Ingat Flame .
bain
26

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.

Cort Ammon - Reinstate Monica
sumber
8
Mengenai paragraf serangan ulang tahun Anda, 2 ^ 80 adalah akar kuadrat dari 2 ^ 160, tidak setengah dari itu (yang akan menjadi 2 ^ 159).
Andrew Morton
Pertanyaannya adalah tentang serangan preimage kedua, tetapi jawaban Anda adalah tentang tabrakan. Serangan preimage terhadap SHA-1 & mdash; dan bahkan MD5 & mdash; bukan kepalang tidak praktis. (Ada serangan preimage 2 ^ 123 melawan MD5, tetapi dengan SHA-1 Anda terjebak dengan brute-force 2 ^ 160.)
Matt Nordhoff
"Karena SHA-1 adalah kode 160 bit, itu akan mengambil rata-rata 2 ^ 159 upaya kasar untuk menemukan duplikat." Tetapi kode 2 ^ 2 membutuhkan 2 ^ 2 tebakan. Saya tidak mengerti mengapa Anda -1. "Singkatnya," ... "membagi dua kekuatan algoritma, jadi SHA-1 membutuhkan 2 ^ 80" ... "MD5 membutuhkan 2 ^ 64" ... "Ini adalah setengah dari 160 dan 128 masing-masing." Di sini Anda seharusnya -1'ed. Bit menambah kekuatan secara eksponensial, sehingga mengurangi setengah dari hash 160 bit akan memperlakukannya sebagai hash 159 bit, bukan hash 80 bit. Setiap bit menggandakan tantangan serangan brute force.
TOOGAM
@TOOGAM: Dia mengatakan 'rata-rata'; selama beberapa percobaan, hanya 50% dari ruang utama harus dicari rata - rata untuk berhasil dalam serangan brute-force. Adapun komentar setengahnya, komentar Andrew Morton di atas menjelaskan bahwa; itu harus menjadi akar kuadrat, bukan setengah, dari kompleksitas.
Reid
@AndrewMorton poin bagus, saya tidak jelas dengan kata-kata saya. Saya menemukan literatur beralih antara jumlah negara dan logaritma basis-2 dari jumlah negara cukup sering. Kata-kata saya merujuk pada membagi dua bit karena orang cenderung berbicara tentang "kekuatan" dalam jumlah bit. Saya sudah terbiasa bolak-balik sehingga saya melakukannya secara tidak sadar. Saya akan mengedit untuk menghapus kebingungan.
Cort Ammon - Pasang kembali Monica
8

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.

cpast
sumber
5

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.).

Damon
sumber
"... cara yang jauh lebih mudah untuk mencapai hal yang sama ..." Seperti yang diilustrasikan dalam xkcd.com/538
Ralph J
2

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 :

  • Jika Anda melakukan desain baru atau menambahkan fitur, jangan menggunakannya (SHA1).
  • Jika Anda mempertahankan sesuatu yang lama, buatlah rencana kapan harus menggantinya (SHA1).

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."

jmn
sumber
2

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:

Mempertahankan keseluruhan konten dan operasi file (tetapi tentu saja sekarang termasuk konten jahat yang pada awalnya tidak ada konten yang diubah)

Apa artinya ini sangat bervariasi pada apa yang mendeteksi perubahan:

  • Jika itu adalah executable yang ditandatangani, bukan peluang (masuk akal): Anda harus mendapatkan dua tabrakan hash: SHA-1 file dan tanda tangan .exe internal.
  • Jika itu adalah executable unsigned, .com, unsigned .dll, atau yang serupa, fork resource mereka dapat ditambahkan dengan cara yang tidak akan mengubah operasi mereka dan dengan demikian Anda (akhirnya) bisa mendapatkan tabrakan hash yang tidak terdeteksi oleh 'normal' operasi.
  • Jika itu file kode sumber atau struktur serupa (.cs, .c, .h, .cpp, .rb, .yml, .config, .xml, .pl, .bat, .ini) penambahan, modifikasi, atau kepindahan dapat dibatasi untuk sintaks komentar yang valid sehingga perubahan tidak akan dapat dilihat oleh sebagian besar penggunaan (mengkompilasi atau menjalankannya, tidak membukanya dengan editor teks).
  • Jika itu adalah iso atau .zip atau format wadah lainnya, itu juga lebih tidak mungkin karena sebagian besar perubahan acak akan merusak wadah. Hal ini dimungkinkan untuk dilakukan: tambahkan entri file palsu atau ubah konten di dalam wadah dan periksa kembali, tetapi Anda menambahkan lapisan kompleksitas dan menambahkan waktu tambahan untuk memeriksa hasilnya, serta memiliki derajat kebebasan terbatas dengan hormat untuk bagaimana dan konten apa yang dapat diubah.
  • Jika itu berupa teks atau format seperti teks, mereka dapat diubah dengan cara apa pun yang Anda suka sambil tetap menjadi file 'valid', meskipun kontennya mungkin akan terlihat.
  • Dengan banyak format seperti .rtf, .doc, .html, .xslx, dan format markup-esque lainnya, mereka dapat ditambahkan atau dimodifikasi dengan cara yang tidak akan terdeteksi oleh parser, jadi selain panjangnya (atau bahkan dengan panjang yang dibatasi) , kebebasan kurang) file dapat diubah untuk (akhirnya) mendapatkan tabrakan hash sementara masih tidak hanya file yang valid, tetapi tidak terlihat berubah dengan cara apa pun yang akan terlihat dengan aplikasi khas yang akan mereka gunakan.

Jadi, yang tersisa adalah bagaimana cara mendapatkan benturan dalam struktur apa pun yang tidak rusak dan beberapa tingkat tidak terdeteksi mungkin:

  1. Buat perubahan fungsional apa pun yang Anda inginkan (mungkin penyisipan konten jahat) dan buat perubahan tambahan untuk mempertahankan validitas khusus format file
  2. Tambahkan bagian yang tidak akan berfungsi (antara blok komentar, di bagian paling akhir file teks dengan carriage return 3k di atasnya, pisahkan blok komentar saat ini)
  3. Tambahkan atau pilih karakter / titik kode / byte untuk modifikasi dan coba setiap kemungkinan kombinasi yang valid (tidak setiap kombinasi byte valid untuk pengkodean yang berbeda, misalnya).
  4. Hitung ulang hash, lihat apakah collision cocok.
  5. jika tidak, goto 3.

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^160upaya (dengan paksa memaksa).

2^160/1000/60/60/24/365.24 
= 4.63x10^37 years 
= 46,300,000,000,000,000,000,000,000,000,000,000,000 years 
= 46 undecillion years.

Tapi hei, mari kita coba 2^60dan 2^52versi, 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:

2^52 yields 142,714 years 
/*humans might still be around to care, but not about these antiquated formats*/
2^60 yields 3.65x10^7 years = 36,500,000 years 
/*machines will probably have taken over anyway*/

Tapi hei, kamu mungkin beruntung. Benar-benar, benar-benar, lebih dari mukjizat-daripada-apa pun yang disebut orang mukjizat beruntung.

Ehryk
sumber
0

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

Anthony Guess
sumber
1
Cukup banyak mungkin belum . Dengan daya komputasi yang cukup, semuanya mungkin.
-6

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.

Ken
sumber
7
-1 semua yang ada di pos ini sepenuhnya dibuat-buat. Serangan ekstensi-panjang tidak "mempertahankan hash yang sama" (hash hanya berubah dengan cara yang diketahui) . Juga, tidak ada alasan virus harus menghapus "kode yang jarang digunakan" (bagaimana bahkan menentukan apa itu?) . Dan apa hubungannya jpeg dengan apa pun !?
BlueRaja - Danny Pflughoeft
2
Ini benar-benar salah, saya bahkan tidak bisa mulai menyarankan koreksi tanpa menulis ulang seluruh jawaban
Mark K Cowan
2
-1 Tidak benar sama sekali. alias "Tidak salah" (Wolfgang Pauli)
Olivier Dulac
1
Ya, kita bisa mulai dengan fakta bahwa jika sesuatu itu mungkin secara umum, maka itu jelas mungkin dalam kasus tertentu . Namun sebaliknya tidak selalu benar: mudah untuk membayangkan masalah yang dapat diselesaikan untuk kasus tertentu, tetapi tidak secara umum.
CVn