Apakah ada hash berkelanjutan?

8

Pertanyaan:

Bisakah ada hash (aman secara kriptografis) yang menjaga topologi informasi {0,1}?

Bisakah kita menambahkan predikat kedekatan yang dapat dihitung secara efisien yang diberikan hk(x) dan hk(y) (atau y sendiri) memberi tahu kita jika yadalah sangat dekat denganx (misalnya jarak Levenshtein atau jarak Hamming dari x dan y kurang dari konstanta tetap c)?


Latar Belakang:

Dengan topologi informasi pada Σ pada maksud saya ruang topologi dengan poin Σ dan dengan basis {xΣ:xΣ}.

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 f:ΣΣkontinu jika gambar terbalik set terbuka terbuka. Dalam kasus kami ini berarti untuk semuayΣada IΣ seperti yang

f1(yΣ)=xIxΣ.

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. x kurang lebih y iff x adalah substring awal dari y (xy). Misalnya0011Σ adalah perkiraan untuk 00110 karena 001100110.

Dan untuk kontinuitas, jika kita mengambil urutan {xi}i yang mendekati dan konvergen ke urutan biner y (pikirkan y sebagai cabang tak terbatas di pohon dan xis sebagai poin pada cabang itu) lalu {f(xi)} konvergen ke f(y),

f(y)=if(xi).
Kaveh
sumber
Saya lupa semua yang saya tahu tentang topologi. Mungkinkah membongkar apa artinya "mempertahankan topologi informasi" dalam istilah mandiri? Juga, ketika Anda mengatakan aman secara kriptografis, versi apa yang Anda maksud? Apakah maksud Anda "berperilaku seperti oracle acak", atau maksud Anda "satu arah dan tahan tabrakan"?
DW
@ WD Saya menambahkan beberapa penjelasan, tetapi menulis yang menyebabkan saya memperhatikan bahwa pertanyaan pertama saya tidak jelas. Saya harus berpikir sedikit untuk memperjelasnya. Pertanyaan kedua sepertinya baik-baik saja.
Kaveh
1
Hashing sensitif-lokal mungkin relevan. en.wikipedia.org/wiki/Locality-sensitive_hashing
zenna

Jawaban:

5

Untuk fungsi hash kriptografi modern, tidak, tidak ada predikat kedekatan yang dapat dihitung secara efisien, dengan asumsi distribusi aktif xmemiliki 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 mendefinisikan h(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,ytidak 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:

h(x)=(SHA256(D(xr1),,SHA256(D(xrk)).

Sekarang jika x,y cukup dekat, kemungkinan ada i seperti yang D(xri)=D(yri), 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,ydekat; jika tidak, simpulkan bahwa mereka tidak dekat.

Jika Anda juga menginginkan tabrakan, konstruksi sederhana adalah sebagai berikut: biarkan h1()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.

DW
sumber