Serangan kuantum pada fungsi hash


8

Garis pertanyaan diilhami oleh pick pick trick di Bagian 4 dari versi PDF makalah Quantum Attacks on Classic Proof Systems - The Hardness of Quantum Rewinding (Ambainis et al. , 2014) . Slide tersedia di sini . Saya tidak sepenuhnya mengikuti argumen di sana jadi mungkin saya melewatkan sesuatu yang penting tapi di sini adalah interpretasi saya tentang trik mereka.

Pertimbangkan fungsi hash klasik yang tahan tabrakan yaitu sulit untuk menemukan . Kami ingin menyandikan komitmen pesan menggunakan fungsi hash ini. Yaitu, saya mengambil beberapa pesan dan menggabungkan beberapa keacakan pada akhirnya sehingga saya menghasilkan komitmen . Ketika diminta untuk membuktikan komitmen saya, saya tidak dapat menemukan pasangan yang berbeda (m ', u') sedemikian rupa sehingga c = H (m '\ Vert u') karena sifat hash bebas tabrakan. Satu-satunya pilihan saya adalah membuka komitmen untuk (m, u) .xH(x)H(x)=H(x)xxmuc=H(mu)(m,u)c=H(mu)(m,u)

Sekarang, kita menyerang protokol ini dengan sirkuit kuantum dari fungsi hash.

  1. Ambil superposisi atas semua input yang mungkin xi dan kueri fungsi hash dengan status ini untuk mendapatkan status |ψ=i|xi|H(xi) .

  2. Ukur register kedua untuk mendapatkan komitmen acak. Pengukuran secara acak memilih c=H(xi) untuk beberapa i . Register pertama kemudian memiliki |ϕ=j|xj sehingga j,c=H(xj) .

  3. Saya ingin membuka komitmen untuk beberapa yang diberikan kepada saya oleh lawan. Gunakan pencarian Grover pada register pertama untuk menemukan dari status yang memenuhi beberapa properti khusus. Secara khusus, properti khusus adalah yang pertamabit adalah . Yaitu, saya akan mencari .mxsol|ϕ=j|xj|m|xsolmxsol=mu

Menggunakan slide diposting sebelumnya (Slide 8) dan terminologi mereka, itu adalah efisien untuk menemukan nilai dari persimpangan dua set dan . Di sini adalah himpunan semua sehingga dan adalah himpunan semua mana yang pertamabit persis .xSPSxH(x)=cPx|m|xm

Pertanyaan saya tentang serangan ini adalah sebagai berikut:

  1. Apakah saya mendapatkan ide dasar serangan yang benar? Jika salah, abaikan sisa posting!

  2. Berapa banyak elemen yang ada di superposisi setelah kita berkomitmen pada tertentu ? Agar saya dapat membuka komitmen untuk pesan apa pun, sepertinya saya harus memiliki elemen (ukuran rentang fungsi hash). Tapi ini terlalu besar.|ϕcO(N)

  3. Kecepatan pencarian Grover - ini terkait dengan poin sebelumnya - adalah hal lain. Bukankah kompleksitas komputasi pencarian di atas superposisi besar seperti sama dengan mencoba menebak pra-gambar untuk output fungsi hash yang diberikan karena kita harus mencari semua ? Dalam hal ini, di mana keuntungannya?|ϕu

Saya mencari intuisi lebih dari bukti matematika sehingga setiap bantuan sangat dihargai!

Jawaban:


1

Apakah saya mendapatkan ide dasar serangan yang benar? Jika salah, abaikan sisa posting!

Kebanyakan. Cara Anda menggambarkannya, Anda memang akan mendapatkan status , tetapi Anda tidak akan dapat melakukan transformasi kesatuan . Tetapi pada langkah 3, ketika Anda menjalankan Grover pada status , Anda sebenarnya perlu menerapkan sebagai bagian dari algoritma Grover. Alasannya adalah sebagai berikut: Biasanya, Grover disajikan sebagai algoritma yang pencarian nilai yang memenuhi predikat . Dalam kasus ini, algoritma Grover pertama-tama menginisialisasi keadaan menjadi|ϕI|ϕϕ||ϕI|ϕϕ|x{0,1}nP|ϕ:=x{0,1}n2n/2|x. Dan, selama loop utamanya, ia menggunakan operator flip . Operator itu cukup mudah dibangun jika , jadi biasanya tidak disebutkan sebagai persyaratan algoritma. Namun, alih-alih mencari , Anda dapat mencari untuk beberapa setI|ϕϕ||ϕ=x{0,1}n2n/2|xx{0,1}nxXX . (Lagi pula, tidak ada yang istimewa tentang bitstrings of lengthn .) Maka Anda perlu mengubah deskripsi Grover: Keadaan awal akan|ϕ=xX2|X|/2|x, dan kami perlu untuk menerapkanI|ϕϕ|selama loop utama. Untuk banyak setX(misalnya, angka moduloN) akan cukup mudah untuk membangun|ϕdanI|ϕϕ|. Namun, dalam kasus umum, mungkin sulit untuk membangun keduanya. Dalam uraian algoritme Anda, kami memiliki situasi yang serupa. Yaitu,X={x:H(x)=c} untuk beberapa perbaikanc . Tetapi untuk setX , tidak ada cara untuk membangun|ϕ atauI|ϕϕ|. Itu sebabnya algoritme Anda tidak berfungsi (tetapi masih memberikan ide yang tepat). Sebaliknya, di koran yang Anda kutip, keduanya|ϕ danI|ϕϕ|disediakan oleh nubuat khusus yang dibangun hanya untuk tujuan ini. Menggunakan oracle itu, Anda kemudian dapat menjalankan algoritma Grovers di negara|ϕ.

Berapa banyak elemen yang ada di superposisi |ϕ setelah kami berkomitmen untuk tertentu c ?

Ini akan tergantung pada parameter yang Anda pilih. Kami berharap sekitar M/N jika M adalah ukuran dari domain dan N ukuran kisaran H . Agar hal-hal menjadi menarik, Anda harus memilih MN sehingga akan ada banyak elemen eksponensial dalam superposisi (dan setidaknya 2|m| sehingga setiap pesan dimungkinkan). Namun, saya berasumsi alasan mengapa Anda bertanya-tanya tentang hal ini adalah karena Anda berpikir bahwa jumlah elemen harus kecil agar Grover dapat berfungsi, yang bukan masalahnya, lihat di bawah:

Kecepatan pencarian Grover - ini adalah masalah utama dan saya tidak yakin bagaimana trik mereka bekerja. Bukankah kompleksitas komputasi sama dengan mencoba menebak pra-gambar untuk output yang diberikan dari fungsi hash karena kita harus mencari semua u? Dalam hal ini, di mana keuntungannya?

Di sini tampaknya terletak kesalahpahaman. Ingat penjelasan saya tentang algoritma Grover di awal jawaban ini. Pencarian Grover beberapa xX , memuaskan beberapa predikat P . Dalam kasus kami X dapat menjadi besar ( elemen M/N ) karena itu adalah himpunan semua preimage c . Tapi itu tidak masalah. Ingat bahwa Grover asli berfungsi pada {0,1}n yang juga sangat besar, tetapi bekerja dengan cepat selama kami mencari beberapa x{0,1}n yang memiliki beberapa properti umumP . Sebagai contoh, jika kita mencari menggunakan Grover untukx{0,1}n yang memenuhi33x (predikatP ), maka ada banyakx yang memenuhiP , setiap 33.x memuaskan! Dan runtime akan menjadi sesuatu seperti33 . Jadi, sebagai aturan umum, jika predikatPpuas untuk setiapielemen -thX, maka algoritma Grover yang pencarian untukxXyang memenuhiPmemakan waktu sekitari melangkah. Di sini tidak masalah apa setX, atau seberapa besar itu! (Selama kita memiliki cara untuk membangun|ϕdanI|ϕϕ|untuk set iniX.) Sekarang, dalam pengaturan Anda menjelaskan,X={x:H(x)=c}. DanPadalah predikat yang mengatakan bahwaxdimulai denganm. Untuk menganalisis runtime algoritma Grover dalam kasus ini, kami tidak peduli denganX, Tetapi kita perlu tahu seberapa sering elemen memuaskan P . Itu mudah: Setiap 2|m|elemen-tidak. Jadi runtime dari Grover akan menjadi O(2|m|). Ini adalah masalah jikampanjang, tetapi jikamadalah, misalnya, hanya sedikit, maka ini berfungsi dengan baik. Sebagai contoh, jika kita menggunakan fungsi hash untuk mengkomit ke pesan satu-bit, kita dapat membuka komitmen untuk nilaim.

Jika Anda ingin contoh di mana m lebih panjang, maka Anda perlu memvariasikan konstruksinya. Pada dasarnya, Anda berkomitmen pada setiap bit secara individual dan menyatukan komitmen. Maka setiap komitmen dapat dipatahkan menggunakan metode yang dijelaskan di atas, dan Anda perlu menjalankan algoritme |m|waktu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.