Bahasa Indonesia

Alat pengembang · SHA kalkulator hash

Checksum yang Cocok Bukanlah Tanda Tangan: Integritas vs Keaslian

· Mengapa itu penting

sha-256 kriptografi keamanan

Checksum pada halaman yang sama dengan unduhan versus tanda tangan pada dokumen kunci publik terpisah
Ilustrasi vektor ToolAcre asli

SHA-256 yang diterbitkan memungkinkan pengguna mendeteksi unduhan yang rusak, namun jika penyerang mengontrol halaman, mereka juga mengontrol checksum. Posting ini memisahkan integritas dari keaslian dan menjelaskan apa yang ditambahkan tanda tangan.

Checksum berada di halaman yang sama dengan unduhan — mengapa ini melindungi terhadap korupsi namun tidak terhadap host yang disusupi

Rilis perangkat lunak diterbitkan dengan checksum SHA-256 di halaman yang sama dengan unduhan. Pengguna dapat mengambil arsip, melakukan hash, dan membandingkan hasilnya dengan nilai yang dipublikasikan. Jika cocok, unduhan tidak rusak. Ini adalah verifikasi integritas, dan ini merupakan pemeriksaan yang nyata dan berguna. Namun, jika penyerang menyusupi server web yang menghosting rilis tersebut, mereka dapat mengganti binernya, menghitung ulang SHA-256-nya, dan memperbarui checksum pada halaman tersebut. Pengguna memverifikasi checksum dan malware penyerang tampaknya berasal dari penerbit. Sistem bekerja persis seperti yang dirancang, tetapi gagal menjawab pertanyaan yang menurut pengguna akan mereka tanyakan.

Ini bukan kegagalan checksum itu sendiri. Ini adalah pengamatan yang benar tentang apa yang dilakukan dan tidak dilakukan checksum. Sebuah checksum membuktikan bahwa dua salinan data adalah identik. Itu tidak membuktikan siapa yang membuat data tersebut. Itulah perbedaan antara integritas dan keaslian, dan menggabungkan keduanya adalah salah satu kesalahan keamanan paling umum dalam verifikasi rilis. Banyak sistem yang rusak bukan karena checksumnya salah, namun karena pengguna memercayai sistem tersebut untuk menjawab pertanyaan yang tidak dapat mereka jawab.

Apa yang dibuktikan oleh hash - bahwa dua input adalah byte yang sama, dan tidak ada informasi tentang siapa yang memproduksinya

Integritas adalah properti dari data itu sendiri. Jika Anda memiliki file dan SHA-256-nya, dan file tersebut belum diubah, hashnya cocok. Hash membuktikan bahwa setiap byte tidak berubah sejak dihitung. Jika file rusak karena kesalahan transmisi, kegagalan disk, atau bit terbalik pada kabel jaringan, hash tidak akan cocok. Inilah yang dilakukan checksum dengan baik. Mereka sangat baik dalam menangkap kecelakaan dan korupsi acak. Mereka gagal melawan musuh yang juga bisa menghitung hash.

Keaslian adalah properti klaim tentang siapa yang menghasilkan data. Pertanyaannya “apakah file ini berasal dari penerbit yang saya percaya?” pada dasarnya berbeda dari pertanyaan "apakah file ini telah dimodifikasi?" Sebuah hash dengan sendirinya tidak dapat menjawab pertanyaan keaslian karena siapa pun dapat menghitung hash. Penyerang yang memodifikasi file dapat menghitung hash baru dan mempostingnya semudah penerbit yang sah. Hashing itu simetris; baik pembela maupun penyerang memiliki kemampuan komputasi yang sama.

Persyaratan saluran tepercaya — mengapa checksum hanya dapat dipercaya jika Anda mendapatkannya

Persyaratan saluran tepercaya adalah wawasan utama. Sebuah checksum hanya dapat dipercaya jika saluran yang dilaluinya. Jika Anda mengunduh biner perangkat lunak dari CDN resmi penerbit dan mengunduh checksum dari server yang sama, keduanya menempuh jalur yang sama. Mengkompromikan server berarti penyerang mengontrol keduanya. Checksum memberikan pertahanan terhadap korupsi selama pengiriman—file yang rusak tidak akan cocok—tetapi tidak terhadap penyerang yang mengontrol sumbernya. Checksum dan file berbagi satu titik kegagalan.

Jika checksum diterbitkan secara terpisah, di server berbeda, dengan kontrol akses berbeda, maka checksum memberikan pertahanan lebih. Penyerang yang menyusupi situs utama harus mengkompromikan kedua lokasi tersebut untuk memalsukan pasangan yang cocok. Ini lebih baik, namun tetap mengandalkan dua titik kendali independen yang tetap aman. Penyerang sekarang harus melanggar dua sistem, bukan hanya satu, sehingga meningkatkan biaya serangan. Namun itu masih belum menjadi bukti keaslian; itu hanya serangan yang lebih mahal.

Tanda tangan mengikat hash ke identitas — bagaimana menandatangani intisari dengan kunci pribadi menambah keaslian

Tanda tangan digital mengatasi hal ini dengan mengikat data ke identitas menggunakan kriptografi. Penerbit menghasilkan pasangan kunci: kunci pribadi yang mereka rahasiakan dan kunci publik yang mereka terbitkan. Mereka menandatangani file dengan menghitung intisari dan kemudian mengenkripsi intisari tersebut dengan kunci pribadi mereka. Hasilnya adalah tanda tangan. Pengguna memverifikasi tanda tangan dengan mendekripsinya menggunakan kunci publik penerbit dan memeriksa apakah hasilnya cocok dengan intisari yang dihitung dari file yang diterima. Kriptografi menciptakan asimetri yang tidak dapat dicapai oleh checksum.

Jika berhasil, ada dua hal yang terbukti: data cocok dengan intisari yang ditandatangani penerbit, dan kunci pribadi yang digunakan untuk menandatanganinya cocok dengan kunci publik yang dipublikasikan. Hal ini membuktikan bahwa penerbitlah yang menciptakannya, bukan hanya penyerang yang melakukannya. Kunci publik harus datang melalui saluran yang aman—biasanya sertifikat dari otoritas sertifikat tepercaya—tetapi setelah Anda memiliki kunci publik, Anda dapat memverifikasi tanda tangan dari penerbit tersebut tanpa batas waktu. Serangan tersebut sekarang memerlukan pencurian kunci pribadi, yang jauh lebih sulit daripada menyusupi server web.

Contoh praktis - tiga skenario ancaman (cermin yang rusak, halaman yang disusupi, orang dalam yang jahat) dan checksum serta tanda tangan apa yang ditangkap masing-masing

Tiga skenario ancaman menggambarkan perbedaannya. Skenario satu: cermin unduhan rusak karena kesalahan acak. Checksum menangkapnya; tanda tangan menangkapnya. Keduanya bekerja sama baiknya karena tidak ada yang perlu mengalahkan penyerang. Skenario dua: mirror disusupi oleh penyerang yang mengganti file dan checksum. Checksum gagal melindungi; tanda tangan masih berfungsi, karena penyerang tidak memiliki kunci pribadi dan tidak dapat memalsukan tanda tangan yang valid. Penyerang dapat memposting apa pun, tetapi tanda tangannya membuktikan bahwa itu bukan dari penerbit.

Skenario ketiga: CDN disusupi tetapi tanda tangannya dipublikasikan melalui saluran yang berbeda. Checksum pada CDN tidak dapat dipercaya, namun verifikasi tanda tangan tetap berfungsi, karena pemeriksaan integritas secara kriptografis terikat pada kunci penerbit, bukan pada saluran. Penyerang sekarang harus memalsukan tanda tangan, yang memerlukan kunci pribadi. Tanda tangan adalah satu-satunya verifikasi yang bertahan dari kompromi server. Inilah sebabnya mengapa tanda tangan diperlukan untuk keaslian; mereka adalah satu-satunya alat yang membuktikan identitas meskipun adanya kompromi saluran.

Peran TLS dan batasannya — keamanan transportasi melindungi unduhan dalam penerbangan, bukan server penerbit

Keamanan transportasi melindungi koneksi ke host yang diberi nama oleh sertifikat. Hal ini dapat mencegah pengamat di jalur untuk mengganti byte unduhan, namun hal ini tidak dapat membuat asal penerbit yang disusupi menjadi jujur. Jika asal tersebut menyajikan arsip yang dimodifikasi dan checksum yang baru dihitung melalui TLS yang valid, keduanya akan tiba secara utuh dan masih mendeskripsikan konten yang dikendalikan penyerang.

Inilah sebabnya mengapa transportasi, integritas, dan keaslian adalah lapisan yang terpisah. TLS mengamankan saluran, intisari membandingkan byte, dan tanda tangan mengikat hasil verifikasi untuk mengontrol kunci pribadi. Tidak ada lapisan yang dapat digambarkan sebagai pembuktian properti yang disediakan oleh lapisan lain, bahkan ketika alur kerja rilis menggabungkan ketiganya secara bijaksana.

Hal yang tidak tercakup dalam hal ini adalah distribusi kunci dan akar kepercayaan, yang merupakan bagian tersulit dalam penandatanganan

Distribusi kunci adalah batas tegas yang tidak dapat dilintasi kalkulator intisari ini. Pemverifikasi tanda tangan masih memerlukan kunci publik atau rantai sertifikat yang autentik dan kebijakan untuk rotasi, pencabutan, dan algoritme yang dapat diterima. Tanda tangan yang valid secara matematis di bawah kunci yang tidak dipercaya hanya membuktikan bahwa pemegang kunci yang tidak dipercaya tersebut menandatangani byte.

Oleh karena itu, skenario yang berhasil berhenti ketika kunci tepercaya sudah tersedia. Mereka tidak mengatur penyematan sertifikat, infrastruktur kunci publik, atau upacara pelepasan kunci. Pilihan penerapan tersebut memerlukan desain yang ditinjau sendiri; ToolAcre menyediakan intisari sederhana yang dapat ditandatangani, bukan akar kepercayaan yang digunakan untuk memvalidasi identitas.

Kesimpulan: checksum untuk integritas, tanda tangan untuk keaslian — kalkulator hash ToolAcre SHA menghitung intisari; memverifikasi siapa yang menerbitkannya adalah langkah terpisah

Kalkulator hash ToolAcre SHA menghitung sisi integritas verifikasi ini. Gunakan untuk melakukan hash pada file yang diunduh dan memeriksa nilai yang dipublikasikan. Jika cocok, unduhan tidak rusak. Namun jika keduanya cocok karena penyerang menulis ulang keduanya, verifikasi integritas saja tidak akan menangkapnya. Alat ini jujur ​​tentang batasan ini dan tidak mengklaim memverifikasi keaslian. Hanya untuk integritas, checksumnya cepat dan bagus. Untuk keaslian, Anda memerlukan tanda tangan. TLS memberikan keamanan transportasi untuk pengunduhan itu sendiri. Koneksi ke server dienkripsi dan diautentikasi, sehingga penyerang di jaringan tidak dapat mengubah file saat transit. Namun, TLS tidak membantu jika server itu sendiri disusupi. Server yang disusupi dapat menyajikan file apa pun melalui koneksi TLS yang aman. Inilah sebabnya mengapa verifikasi tingkat aplikasi—checksum dan tanda tangan—dipentingkan secara terpisah dari keamanan transportasi.

Pola umum dalam rilis perangkat lunak adalah menerbitkan checksum dan tanda tangan. Checksum nyaman; pengguna dapat memverifikasinya dengan cepat menggunakan perintah shell satu baris. Tanda tangan memberikan keaslian bagi pengguna yang memiliki kunci publik penerbit. Pengguna mungkin memeriksa checksum terlebih dahulu untuk mendapatkan izin integritas cepat, lalu memverifikasi tanda tangan terhadap kunci yang disimpan di gantungan kunci GPG mereka untuk keasliannya. Kedua pemeriksaan tersebut memiliki tujuan yang berbeda dan dapat berlapis untuk pertahanan yang mendalam. Bagian tersulit dari penandatanganan adalah distribusi kunci dan kepercayaan. Anda memerlukan kunci publik penerbit, dan Anda harus yakin bahwa itu benar-benar milik mereka. Inilah masalah yang harus dipecahkan oleh otoritas sertifikat: mereka menandatangani sertifikat penerbit, dan sertifikat root CA sudah dimuat sebelumnya di browser dan sistem operasi. Untuk proyek yang lebih kecil, Anda dapat memublikasikan kunci GPG di situs web terpisah yang diperkuat atau di server kunci publik. Checksumnya murah untuk diverifikasi; tanda tangan memerlukan pengelolaan akar kepercayaan. Kompleksitas tambahannya adalah harga keaslian.