Pertanyaan:
Bisakah ada hash (aman secara kriptografis) yang menjaga topologi informasi ?
Bisakah kita menambahkan predikat kedekatan yang dapat dihitung secara efisien yang diberikan dan (atau sendiri) memberi tahu kita jika adalah sangat dekat dengan (misalnya jarak Levenshtein atau jarak Hamming dari dan kurang dari konstanta tetap )?
Latar Belakang:
Dengan topologi informasi pada pada maksud saya ruang topologi dengan poin dan dengan basis .
Cara yang baik untuk berpikir tentang topologi adalah mempertimbangkan set terbuka sebagai properti dari poin yang dapat disetujui / diverifikasi (yaitu jika itu benar, itu dapat memverifikasi / mengamati bahwa itu benar). Dengan mengingat hal ini, set tertutup adalah properti yang dapat disangkal .
Sebuah fungsi kontinu jika gambar terbalik set terbuka terbuka. Dalam kasus kami ini berarti untuk semuaada seperti yang
Cara yang baik untuk memikirkan topologi informasi adalah melihatnya sebagai pohon string biner. Setiap subtree adalah set dasar terbuka (dan set terbuka lainnya dapat diperoleh dari mengambil gabungan set dasar terbuka).
Ini kadang-kadang disebut sebagai topologi informasi string karena setiap titik dalam dapat dianggap sebagai pendekatan terbatas pada string / urutan biner. kurang lebih iff adalah substring awal dari (). Misalnya adalah perkiraan untuk karena .
Dan untuk kontinuitas, jika kita mengambil urutan yang mendekati dan konvergen ke urutan biner (pikirkan sebagai cabang tak terbatas di pohon dan s sebagai poin pada cabang itu) lalu konvergen ke ,
Jawaban:
Untuk fungsi hash kriptografi modern, tidak, tidak ada predikat kedekatan yang dapat dihitung secara efisien, dengan asumsi distribusi aktifx memiliki entropi yang cukup. Intinya adalah bahwa fungsi hash ini dirancang untuk "tidak memiliki struktur", sehingga mereka tidak mengakui hal seperti ini.
Dalam istilah teknis, fungsi hash kriptografi modern berperilaku "seperti oracle acak". Untuk oracle acak, tidak ada predikat kedekatan seperti itu: yang terbaik yang dapat Anda lakukan adalah membalikkan fungsi hash dan kemudian menghitung semua string dekat dan hash mereka. Akibatnya, tidak ada cara untuk melakukan ini untuk fungsi hash kriptografi modern.
Secara heuristik, memang memungkinkan untuk merancang fungsi hash khusus yang mengakui predikat kedekatan yang efisien, dan yang (kira-kira) "seaman mungkin" mengingat fakta ini. Mari kita asumsikan string yang akan kita hash memiliki panjang yang tetap. Misalkan kita memiliki kode koreksi kesalahan yang baik, dan biarkanD menjadi algoritma decoding (sehingga memetakan bit-string ke codeword terdekat, jika bisa).
Untuk mendapatkan skema yang sederhana namun tidak sempurna, bayangkan mendefinisikanh(x)=SHA256(D(x)) . Jikax,y adalah dua string acak yang cukup dekat, maka ada kemungkinan yang layak h(x)=h(y) . Jikax,y tidak dekat, kalau begitu h(x) tidak akan terlihat seperti h(y) , dan kami tidak akan mendapatkan informasi di luar fakta itu x,y tidak dekat. Ini sederhana. Namun, itu juga tidak sempurna. Ada banyak pasanganx,y yang dekat tetapi dari mana kita tidak dapat mendeteksi fakta ini h(x),h(y) (misalnya, karena fungsi decoding D gagal).
Secara heuristik, tampak mungkin untuk meningkatkan konstruksi ini. Pada waktu desain, pilih bit-string acakr1,…,rk . Sekarang, tentukan fungsi hash berikut:
Sekarang jikax,y cukup dekat, kemungkinan ada i seperti yang D(x⊕ri)=D(y⊕ri) , dan dengan demikian h(x)i=h(y)i . Ini langsung menyarankan predikat kedekatan: jikah(x) cocok h(y) di salah satu nya k komponen, lalu x,y dekat; jika tidak, simpulkan bahwa mereka tidak dekat.
Jika Anda juga menginginkan tabrakan, konstruksi sederhana adalah sebagai berikut: biarkanh1(⋅) menjadi fungsi hash dengan predikat kedekatan; kemudianh(x)=(h1(x),SHA256(x)) tahan benturan (setiap tabrakan untuk ini juga merupakan tabrakan untuk SHA256) dan memiliki kedekatan kedekatan (cukup gunakan kedekatan kedekatan untuk h1 ). Anda bisa membiarkannyah1(⋅) menjadi fungsi hash yang didefinisikan di atas.
Ini semua untuk jarak Hamming. Edit jarak mungkin secara signifikan lebih sulit.
Dalam membuat konstruksi di atas, saya terinspirasi oleh makalah berikut:
Ari Juels, Martin Wattenberg. Skema Komitmen Fuzzy .
Ari Juels, Madhi Sudhan. Skema Vault Fuzzy . Desain, Kode, dan Kriptografi 38 (2): 237-257, 2006.
Kebetulan: dalam kriptografi, fungsi hash tidak dikunci. Jika Anda menginginkan sesuatu yang penting, Anda mungkin ingin melihat fungsi pseudorandom.
sumber