Pada hari pertama 2016, Mozilla menghentikan dukungan untuk melemahnya teknologi keamanan yang disebut SHA-1 di browser web Firefox. Hampir segera, mereka membalikkan keputusan mereka, karena akan memotong akses ke beberapa situs web yang lebih lama. Namun pada Februari 2017, ketakutan mereka akhirnya menjadi kenyataan: para peneliti memecahkan SHA-1 dengan menciptakan serangan tabrakan dunia nyata yang pertama. Inilah apa artinya semua itu.
SHA dalam SHA-1 adalah singkatan Algoritma Hash Aman, dan, sederhananya, Anda dapat menganggapnya sebagai semacam masalah atau metode matematika mengacak data yang dimasukkan ke dalamnya. Dikembangkan oleh NSA Amerika Serikat, ini adalah komponen inti dari banyak teknologi yang digunakan untuk mengenkripsi transmisi penting di internet. Metode enkripsi umum SSL dan TLS, yang mungkin pernah Anda dengar, dapat menggunakan fungsi hash seperti SHA-1 untuk membuat sertifikat yang ditandatangani yang Anda lihat di bilah alat browser Anda.
Kami tidak akan masuk jauh ke dalam matematika dan ilmu komputer dari salah satu fungsi SHA, tapi inilah ide dasarnya. "Hash" adalah kode unik berdasarkan masukan dari data apa pun. Bahkan string huruf kecil dan acak yang dimasukkan ke dalam fungsi hash seperti SHA-1 akan mengembalikan panjang, mengatur jumlah karakter, membuatnya (berpotensi) tidak mungkin untuk mengembalikan string karakter kembali ke data asli. Ini adalah cara penyimpanan kata sandi biasanya berfungsi. Ketika Anda membuat kata sandi, input kata sandi Anda di-hash dan disimpan oleh server. Setelah kembali, ketika Anda mengetikkan kata sandi Anda, itu sudah dipotong kembali. Jika cocok dengan hash yang asli, input dapat diasumsikan sama, dan Anda akan diberikan akses ke data Anda.
Fungsi hash berguna terutama karena membuatnya mudah untuk mengetahui apakah input, misalnya, file atau kata sandi, telah berubah. Ketika data input adalah rahasia, seperti kata sandi, hash hampir tidak mungkin untuk membalikkan dan memulihkan data asli (juga dikenal sebagai "kunci"). Ini sedikit berbeda dari "enkripsi", yang tujuannya adalah data acak untuk tujuan descrambling nanti, menggunakan cipher dan kunci rahasia. Hash hanya dimaksudkan untuk memastikan integritas data-untuk memastikan bahwa semuanya sama. Git, perangkat lunak kontrol dan distribusi versi untuk kode sumber terbuka, menggunakan hash SHA-1 karena alasan ini.
Itu banyak informasi teknis, tetapi untuk membuatnya lebih sederhana: hash tidak sama dengan enkripsi, karena ini digunakan untuk mengidentifikasi apakah suatu file telah berubah.
Katakanlah Anda perlu mengunjungi situs web secara pribadi. Bank Anda, email Anda, bahkan akun Facebook Anda — semua menggunakan enkripsi untuk menyimpan data yang Anda kirimkan kepada mereka secara pribadi. Situs web profesional akan memberikan enkripsi dengan memperoleh sertifikat dari otoritas tepercaya - pihak ketiga, dipercaya untuk memastikan bahwa enkripsi berada pada level, pribadi antara situs web dan pengguna, dan tidak dimata-matai oleh pihak lain. Hubungan ini dengan pihak ketiga, yang disebut Otoritas Sertifikat, atau CA, sangat penting, karena setiap pengguna dapat membuat sertifikat "ditandatangani sendiri" - Anda bahkan dapat melakukannya sendiri pada mesin yang menjalankan Linux dengan Open SSL. Symantec dan Digicert adalah dua perusahaan CA yang dikenal luas, misalnya.
Mari kita jalankan melalui skenario teoritis: How-To Geek ingin tetap login di sesi pengguna pribadi dengan enkripsi, sehingga memohon CA seperti Symantec dengan Permintaan Penandatanganan Sertifikat, atau CSR. Mereka membuat kunci publik dan kunci pribadi untuk mengenkripsi dan mendekripsi data yang dikirim melalui internet. Permintaan CSR mengirim kunci publik ke Symantec bersama dengan informasi tentang situs web. Symantec memeriksa kunci terhadap catatannya untuk memverifikasi bahwa data tidak berubah oleh semua pihak, karena setiap perubahan kecil dalam data membuat hash secara radikal berbeda.
Kunci publik dan sertifikat digital tersebut ditandatangani oleh fungsi hash, karena output dari fungsi-fungsi ini mudah dilihat. Kunci publik dan sertifikat dengan hash terverifikasi dari Symantec (dalam contoh kami), otoritas, meyakinkan pengguna How-To Geek bahwa kuncinya tidak berubah, dan tidak dikirim dari orang jahat.
Karena hash mudah untuk dimonitor dan tidak mungkin (beberapa akan mengatakan "sulit") untuk mundur, tanda hash yang benar dan terverifikasi berarti bahwa sertifikat dan koneksi dapat dipercaya, dan data dapat disetujui untuk dikirim dienkripsi dari ujung ke ujung . Tetapi bagaimana jika hash sebenarnya tidak unik?
Anda mungkin pernah mendengar tentang "Masalah Ulang Tahun" dalam matematika, meskipun Anda mungkin tidak tahu apa namanya. Ide dasarnya adalah jika Anda mengumpulkan kelompok orang yang cukup besar, kemungkinan besar bahwa dua atau lebih orang akan memiliki hari ulang tahun yang sama. Lebih tinggi dari yang Anda harapkan, sebenarnya cukup bahwa itu tampak seperti kebetulan yang aneh. Dalam kelompok sekecil 23 orang, ada kemungkinan 50% bahwa dua akan berbagi ulang tahun.
Ini adalah kelemahan yang melekat pada semua hash, termasuk SHA-1. Secara teoritis, fungsi SHA harus membuat hash yang unik untuk setiap data yang dimasukkan ke dalamnya, tetapi karena jumlah hash bertambah, itu menjadi lebih mungkin bahwa pasangan data yang berbeda dapat membuat hash yang sama. Jadi seseorang dapat membuat sertifikat yang tidak tepercaya dengan hash identik ke sertifikat tepercaya. Jika mereka meminta Anda untuk memasang sertifikat yang tidak tepercaya, itu bisa menyamar sebagai tepercaya, dan mendistribusikan data berbahaya.
Menemukan hash yang cocok dalam dua file disebut a serangan tabrakan. Setidaknya satu serangan tabrakan skala besar diketahui telah terjadi untuk MD5 hash. Namun pada 27 Februari 2017, Google mengumumkan SHAttered, tabrakan pertama yang dibuat untuk SHA-1.Google dapat membuat file PDF yang memiliki hash SHA-1 yang sama dengan file PDF lainnya, meskipun memiliki konten yang berbeda.
SHAttered dilakukan pada file PDF. PDF adalah format file yang relatif longgar; banyak perubahan kecil tingkat bit dapat dilakukan tanpa mencegah pembaca membukanya atau menyebabkan perbedaan yang terlihat. PDF juga sering digunakan untuk mengirim malware. Sementara SHAttered dapat bekerja pada jenis file lain, seperti ISO, sertifikat ditetapkan secara kaku, membuat serangan seperti itu tidak mungkin.
Jadi, seberapa mudah serangan ini dilakukan? SHAttered didasarkan pada metode yang ditemukan oleh Marc Stevens pada tahun 2012 yang membutuhkan lebih dari 2 ^ 60,3 (9.223 quintillion) operasi SHA-1 - angka yang mengejutkan. Namun, metode ini masih 100.000 kali lebih sedikit operasi daripada yang diperlukan untuk mencapai hasil yang sama dengan kekerasan. Google menemukan bahwa dengan 110 kartu grafis high-end yang bekerja secara paralel, diperlukan waktu sekitar satu tahun untuk menghasilkan tabrakan. Menyewa waktu komputasi ini dari Amazon AWS akan menelan biaya sekitar $ 110.000. Perlu diingat bahwa ketika harga turun untuk komponen komputer dan Anda bisa mendapatkan lebih banyak kekuatan dengan lebih sedikit, serangan seperti SHAttered menjadi lebih mudah dilakukan.
$ 110.000 mungkin tampak seperti banyak, tetapi itu dalam ranah keterjangkauan untuk beberapa organisasi-yang berarti cybervillians kehidupan nyata bisa memalsukan tanda tangan dokumen digital, mengganggu sistem cadangan dan kontrol versi seperti Git dan SVN, atau membuat Linux ISO yang berbahaya tampak sah.
Untungnya, ada faktor-faktor mitigasi yang mencegah serangan seperti itu. SHA-1 jarang digunakan untuk tanda tangan digital lagi. Otoritas Sertifikat tidak lagi memberikan sertifikat yang ditandatangani dengan SHA-1, dan baik Chrome maupun Firefox telah menolak dukungan untuk mereka. Distribusi Linux biasanya rilis lebih sering dari sekali per tahun, membuatnya tidak praktis bagi penyerang untuk membuat versi jahat dan kemudian menghasilkan satu empuk untuk memiliki hash SHA-1 yang sama.
Di sisi lain, beberapa serangan berdasarkan SHAttered sudah terjadi di dunia nyata. Sistem kontrol versi SVN menggunakan SHA-1 untuk membedakan file. Mengunggah dua PDF dengan hash SHA-1 yang identik ke repositori SVN akan menyebabkannya rusak.
Tidak banyak yang bisa dilakukan oleh pengguna biasa. Jika Anda menggunakan checksum untuk membandingkan file, Anda harus menggunakan SHA-2 (SHA-256) atau SHA-3 daripada SHA-1 atau MD5. Demikian juga, jika Anda seorang pengembang, pastikan untuk menggunakan algoritma hashing yang lebih modern seperti SHA-2, SHA-3, atau bcrypt. Jika Anda khawatir bahwa SHAttered telah digunakan untuk memberikan dua file yang berbeda dalam hash yang sama, Google telah merilis alat di situs SHAttered yang dapat memeriksa Anda.
Kredit Gambar: Lego Firefox, Banyak Hash, Tolong Jangan Menyakiti penulis Web yang tidak dikenal, Google.