Cara membuktikan sebuah dokumen tidak berubah
Enam bulan setelah semua orang menandatangani, muncul sengketa. Pihak lain menyerahkan salinan perjanjian mereka, dan klausul 7 tidak mengatakan apa yang Anda ingat. Kedua berkas tersebut diberi nama agreement-final.pdf. Keduanya terlihat masuk akal. Tidak ada dari Anda yang pasti berbohong — berkas bisa disimpan ulang, versi bisa menjadi kacau. Tanpa sesuatu yang dicatat pada saat itu, "inilah dokumen yang kita sepakati" hanyalah ingatan dua orang, dan ingatan tidak memenangkan argumen.
Apa itu hash
Hash kriptografi adalah sidik jari untuk data. Masukkan berkas ke fungsi hash — SHA-256 adalah standar modern yang masuk akal — dan ia akan mengembalikan nilai berpanjang tetap, 64 karakter heksadesimal, terlepas dari apakah inputnya satu halaman atau sepuluh ribu.
Tiga properti membuatnya berguna:
- Deterministik. Byte yang sama selalu menghasilkan hash yang sama. Siapa pun, di mana pun, pada mesin apa pun, akan mendapatkan nilai yang identik.
- Berubah total jika ada pengeditan. Ubah satu karakter — koma, satu bit — dan outputnya akan sepenuhnya berbeda. Bukan sedikit berbeda. Berbeda yang tidak dapat dikenali. Ini disebut efek longsor (avalanche effect), dan inilah mengapa hash tidak bisa "mirip".
- Ini tidak dapat dibalik. Anda tidak dapat merekonstruksi dokumen dari *hash*, dan Anda juga tidak mungkin membuat dokumen bermakna lain yang menghasilkan *hash* yang sama.
Jadi, sidik jari ini aman untuk dibagikan secara publik. Menerbitkan *hash* kontrak rahasia tidak mengungkapkan apa pun tentang isinya — tetapi itu mengunci kontrak tersebut.
Apa itu hash tidak membuktikan
Di sinilah ide ini sering dilebih-lebihkan, jadi penting untuk bersikap tepat. *Hash* yang cocok memberi tahu Anda bahwa berkas tersebut tidak berubah. Itu tidak memberitahu Anda:
- Siapa yang membuatnya. Sebuah *hash* tidak membawa identitas apa pun. Siapa saja dapat membuat *hash* dari apa saja.
- Kapan keberadaannya. Nilai tersebut sendiri tidak membuktikan waktu. *Hash* yang Anda hitung hari ini hanya mengatakan bahwa berkas hari ini adalah berkas hari ini — sebuah tautologi.
- Bahwa isinya benar, sah, atau disepakati. *Hash* dari pemalsuan adalah *hash* yang sangat valid dari pemalsuan tersebut.
Hash memberikan Anda integritas, bukan otentisitas. Menganggap keduanya sama adalah kesalahan paling umum di bidang ini.
Bagian yang sering disalahpahami semua orang
Hash yang dihitung saat ini tidak membuktikan apa pun tentang masa lalu. Jika Anda melakukan hash pada file hari ini dan nilainya cocok dengan file hari ini, Anda belum mempelajari apa-apa — tentu saja itu cocok; itu adalah file yang sama.
Hash hanya menjadi bukti ketika nilainya dicatat di tempat tepercaya sebelum sengketa terjadi. Keamanannya tidak terletak pada matematika; ia terletak pada garis waktu. Pertanyaan yang dijawab oleh hash adalah "apakah ini cocok dengan apa yang kita catat saat itu?" — dan itu memerlukan seseorang mencatatnya saat itu.
Hal ini menunjukkan bahwa alur kerja, bukan algoritma, yang menjadi hal penting.
Alur kerja yang benar-benar bernilai
- Hitung hash berkas pada saat berkas tersebut sudah final. Segera setelah penandatanganan, sebelum diarsipkan. Gunakan Hash Dokumen.
- Catat nilai tersebut di tempat yang tidak dapat direvisi secara diam-diam. Masukkan ke email yang mengirimkan dokumen. Baca dalam risalah rapat. Kirimkan kepada pihak lawan agar mereka juga menyimpannya. Tujuannya adalah catatan dengan tanggal yang tidak sepenuhnya berada di bawah kendali Anda.
- Arsipkan file yang persis sama. Ini bukan re-ekspor. Bukan "dokumen yang sama" yang dicetak ulang. Melainkan byte persis yang Anda hash.
- Nanti, hitung ulang dan bandingkan. Nilai yang sama: identik byte, tidak perlu argumen. Nilai berbeda: file telah berubah, meskipun belum tentu karena niat jahat — lihat di bawah.
Mengapa hash Anda berubah padahal "tidak ada yang berubah"
Hal ini sering membingungkan orang, dan itu bukan kesalahan pada fungsi hash. Hash mencakup byte, bukan tampilan visual. Dua PDF bisa terlihat identik piksel namun memiliki hash yang berbeda:
- Anda menyimpannya kembali. Membuka PDF dan mengekspornya lagi akan menulis ulang file tersebut. Stempel waktu baru, mungkin
Produceryang baru, struktur internal yang berbeda. Identik untuk dibaca, tapi byte-nya berbeda. - Sesuatu ditambahkan ke dalamnya. PDF mendukung pembaruan inkremental — menambahkan komentar atau mengisi kolom dapat menambahkan data alih-alih menimpanya. Dokumen bertambah; hash berubah.
- Sebuah alat menyentuhnya sekilas. Beberapa sistem email dan pengelola dokumen menulis ulang lampiran. Perubahan tersebut mungkin sepenuhnya tidak terlihat namun benar-benar nyata.
Jadi, ketidakcocokan berarti "ini bukan file yang sama", bukan "seseorang telah memanipulasi ini". Respons yang tepat adalah investigasi, bukan tuduhan. Dan pelajaran praktisnya tegas: arsipkan file yang Anda hash, dan jangan biarkan apa pun menyimpannya kembali.
Menyimpan catatan lokal
Jika Anda rutin perlu memastikan bahwa dokumen tidak bergeser, menghitung hash setiap dokumen secara manual akan melelahkan. Catatan Tanda Tangan Lokal menyimpan catatan dokumen yang telah Anda hitung hash-nya di perangkat Anda sendiri, sehingga Anda memiliki log pribadi untuk diperiksa nanti — tanpa mendaftarkan dokumen ke pihak ketiga mana pun.
Jelaskan dengan jelas apa itu dan apa yang bukan. Ini adalah catatan pribadi yang dipelihara sendiri: kuat untuk keyakinan Anda sendiri, untuk proses internal, untuk menangkap pergeseran yang tidak disengaja. Ini adalah catatan Anda — Anda yang mengendalikannya, yang justru merupakan batasan ketika orang yang meragukan Anda adalah orang di sisi meja yang lain.
Ketika Anda membutuhkan lebih dari sekadar hash
Jika pihak ketiga harus dibujuk, integritas saja tidak akan cukup. Anda memerlukan sesuatu yang mengikat dokumen pada sebuah identitas, dan idealnya pada sebuah waktu, dengan cara yang tidak dikendalikan oleh salah satu pihak:
- Tanda tangan digital adalah hash ditambah identitas: nilainya ditandatangani dengan kunci pribadi, sehingga siapa pun dengan sertifikat yang cocok dapat mengonfirmasi bahwa file tersebut tidak berubah dan siapa yang menandatanganinya. Itulah mengapa tanda tangan memerlukan rantai kepercayaan dan hash tidak — bagian sulitnya adalah membuktikan milik kunci siapa.
- Stempel waktu tepercaya menambahkan pernyataan otoritas bahwa hash tersebut ada pada saat tertentu, menjawab pertanyaan "kapan" yang tidak bisa dijawab oleh hash biasa.
- Hash yang dipertukarkan merupakan jalan tengah yang lumayan baik: jika kedua belah pihak memiliki nilai dari hari penandatanganan, tidak ada yang dapat menulis ulang sejarah secara sepihak. Tanpa infrastruktur, sebagian besar manfaatnya.
Untuk catatan internal, arsip pribadi, dan pertanyaan biasa "apakah ini file yang saya kirim?", hash yang Anda catat pada saat itu sudah sangat cukup. Untuk keperluan litigasi, tidak, dan tidak ada yang boleh menyarankan sebaliknya.
Catatan tentang algoritma lama
Jika Anda menemukan MD5 atau SHA-1 dalam proses yang sudah ada, perlakukan keduanya sebagai *checksum* (nilai cek) dan bukan keamanan. Keduanya memiliki serangan tabrakan praktis: sangat mungkin untuk membuat dua file berbeda dengan nilai yang sama, yang justru adalah properti yang Anda andalkan. Keduanya baik untuk mendeteksi kerusakan yang tidak disengaja dan tidak cocok untuk hal-hal adversarial. SHA-256 adalah standar karena alasan yang bagus.
Mengapa menghitungnya secara lokal?
Mengunggah dokumen ke situs web untuk mengetahui sidik jarinya berarti memberikan salinan dokumen itu kepada pihak ketiga — padahal perhitungan tersebut dapat dilakukan oleh perangkat Anda sendiri dalam sekejap. Jika sebuah file cukup penting sehingga layak dipastikan, maka ia cukup penting untuk tidak diserahkan. Dalam CyvoDocOps, operasi semacam ini didukung dan berjalan secara lokal di peramban (browser) Anda dan dokumen tersebut tidak diunggah ke server.
Pertanyaan yang sering diajukan
Apa itu hash file dalam istilah sederhana?
Sidik jari singkat yang diturunkan dari isi sebuah berkas. Berkas yang sama, sidik jari yang sama; ubah sedikit saja dan sidik jari akan berubah total.
Apakah dua dokumen berbeda bisa memiliki hash yang sama?
Secara teori ya, tetapi dalam praktiknya tidak dengan SHA-256 — tidak ada seorang pun yang dapat membuat pasangan seperti itu. Dengan MD5 atau SHA-1, ya, dan itulah mengapa keduanya seharusnya tidak digunakan di tempat yang penting.
Apakah hash membuktikan siapa penulis dokumen tersebut?
Tidak. Hash hanya membuktikan bahwa berkasnya belum berubah. Identitas memerlukan tanda tangan digital, yang mengikat sebuah hash ke kunci milik orang atau organisasi tertentu.
Hash saya berubah tetapi dokumen terlihat identik. Apakah itu telah dimanipulasi?
Belum tentu. Menyimpan ulang, mengisi kolom formulir, atau sistem yang menulis ulang lampiran semuanya akan mengubah byte tanpa mengubah tampilan. Ini berarti berkasnya berbeda — perlu diselidiki, bukan bukti niat buruk.
Apakah berkas tersebut diunggah untuk di-hash?
Tidak. Hash dihitung secara lokal di peramban Anda dan dokumen tidak dikirim ke server.