Tấn công lượng tử vào các hàm băm


8

Dòng câu hỏi được lấy cảm hứng từ một mẹo chọn trong Phần 4 của phiên bản PDF của Cuộc tấn công lượng tử giấy trên Hệ thống chứng minh cổ điển - Độ cứng của tua lại lượng tử (Ambainis et al. , 2014) . Các slide có sẵn ở đây . Tôi không hoàn toàn làm theo lập luận ở đó vì vậy có lẽ tôi đã bỏ lỡ điều gì đó quan trọng nhưng đây là cách giải thích của tôi về mánh khóe của họ.

Hãy xem xét hàm băm cổ điển có khả năng chống va chạm tức là khó tính toán . Chúng tôi muốn mã hóa một cam kết của một thông điệp bằng cách sử dụng hàm băm này. Đó là, tôi nhận được một số thông điệp và ghép một số ngẫu nhiên ở cuối để tôi tạo ra một cam kết . Khi được yêu cầu chứng minh cam kết của mình, tôi không thể tìm thấy một cặp khác (m ', u') sao cho c = H (m '\ Vert u') vì tính chất không va chạm của băm. Lựa chọn duy nhất của tôi là mở cam kết với (m, u) .xH(x)H(x)=H(x)xx c = H ( m u ) ( m , u ) c = H ( m u ) ( m , u )muc=H(mu)(m,u)c=H(mu)(m,u)

Bây giờ, chúng ta tấn công giao thức này bằng một mạch lượng tử của hàm băm.

  1. Đặt chồng lên tất cả các đầu vào có thể xi và truy vấn hàm băm với trạng thái này để có trạng thái |ψ=i|xi|H(xi) .

  2. Đo đăng ký thứ hai để có được một cam kết ngẫu nhiên. Phép đo chọn ngẫu nhiên c=H(xi) cho một số i . Thanh ghi đầu tiên sau đó có |ϕ=j|xj sao cho j,c=H(xj) .

  3. Tôi muốn mở lời cam kết với một số được đối thủ trao cho tôi. Sử dụng tìm kiếm của Grover trên thanh ghi đầu tiên để tìm từ trạng thái thỏa mãn một số thuộc tính đặc biệt. Cụ thể, tài sản đặc biệt làbit của là . Đó là, tôi sẽ tìm kiếm để tìm .mxsol|ϕ=j|xj|m|xsolmxsol=mu

Sử dụng các slide được đăng trước đó (Slide 8) và thuật ngữ của họ, đó là hiệu quả để tìm một giá trị từ giao lộ của hai bộ và . Ở đây là tập hợp của tất cả sao cho và là tập hợp của tất cả trong đó đầu tiênbit của chính xác là .xSPSxH(x)=cPx|m|xm

Các câu hỏi của tôi về cuộc tấn công này là như sau:

  1. Tôi đã có được ý tưởng cơ bản của cuộc tấn công đúng chưa? Nếu sai, bỏ qua phần còn lại của bài viết!

  2. Có bao nhiêu phần tử trong chồng chập sau khi chúng ta cam kết với một nhất định ? Để tôi có thể mở cam kết với bất kỳ thư nào, có vẻ như tôi nên có các phần tử (kích thước của phạm vi hàm băm). Nhưng cái này quá lớn.|ϕcO(N)

  3. Tốc độ tìm kiếm Grover - điều này có liên quan đến điểm trước - là điều khác. Không phải sự phức tạp tính toán của việc tìm kiếm trên một chồng chất lớn như vậy sẽ giống như cố gắng đoán một hình ảnh trước cho một đầu ra nhất định của hàm băm vì người ta phải tìm kiếm trên tất cả các ? Trong trường hợp này, lợi thế ở đâu?|ϕu

Tôi đang tìm kiếm trực giác nhiều hơn bằng chứng toán học vì vậy bất kỳ trợ giúp đều được đánh giá cao!

Câu trả lời:


1

Tôi đã có được ý tưởng cơ bản của cuộc tấn công đúng chưa? Nếu sai, bỏ qua phần còn lại của bài viết!

Hầu hết. Cách bạn mô tả nó, bạn thực sự sẽ có được trạng thái |ϕ , nhưng bạn sẽ không thể thực hiện việc chuyển đổi đơn nhất I|ϕϕ|. Nhưng trong bước 3, khi bạn chạy Grover ở trạng thái |ϕ , bạn thực sự cần phải áp dụng I|ϕϕ|như một phần của thuật toán Grover. Lý do là như sau: Thông thường, Grover được trình bày dưới dạng thuật toán tìm kiếm giá trị x{0,1}nthỏa mãn một vị P . Trong trường hợp này, thuật toán của Grover trước tiên khởi tạo trạng thái thành |ϕ:=x{0,1}n2n/2|x . Và, trong vòng lặp chính của nó, nó áp dụng toán tử lật I|ϕϕ|. Toán tử đó khá dễ xây dựng nếu |ϕ=x{0,1}n2n/2|x, vì vậy nó thường không được nhắc đến như một yêu cầu của thuật toán. Tuy nhiên, thay vì tìm kiếmx{0,1}n, bạn có thể tìm kiếmxXđối với một số bộX. (Rốt cuộc, không có gì đặc biệt về bitstrings có độ dàin.) Sau đó, bạn cần thay đổi mô tả của Grover: Trạng thái ban đầu sẽ là|ϕ=xX2|X|/2|x, và chúng ta cần phải áp dụngI|ϕϕ|trong vòng lặp chính. Đối với nhiều bộX(ví dụ: số moduloN), nó sẽ khá dễ dàng để xây dựng|ϕI|ϕϕ|. Tuy nhiên, trong trường hợp chung, có thể khó xây dựng một trong hai. Trong mô tả của bạn về thuật toán, chúng tôi có một tình huống tương tự. Cụ thể,X={x:H(x)=c} cho một sốc cố định. Nhưng đối với tậpX đó, không có cách nào để xây dựng|ϕ hoặcI|ϕϕ|. Đó là lý do tại sao thuật toán của bạn không hoạt động (nhưng nó vẫn đưa ra ý tưởng đúng). Thay vào đó, trong bài báo bạn trích dẫn, cả hai|ϕI|ϕϕ|được cung cấp bởi các nhà tiên tri đặc biệt được xây dựng chỉ cho mục đích này. Sử dụng những lời tiên tri đó, sau đó bạn có thể chạy thuật toán Grovers trên trạng thái|ϕ .

Có bao nhiêu yếu tố trong chồng chất |ϕ sau khi chúng tôi cam kết một số c ?

Điều này sẽ phụ thuộc vào các thông số bạn đã chọn. Chúng tôi hy vọng khoảng M/N nếu M là kích thước của tên miền và N kích thước của hàng loạt các H . Để mọi thứ trở nên thú vị, bạn nên chọn MN để có nhiều yếu tố theo cấp số nhân (và ít nhất là 2|m| để mọi thông điệp đều có thể). Tuy nhiên, tôi giả sử lý do tại sao bạn tự hỏi về điều này là bởi vì bạn nghĩ rằng số lượng phần tử nên nhỏ để Grover hoạt động, đó không phải là trường hợp, xem bên dưới:

Tốc độ tìm kiếm Grover - đây là vấn đề chính và tôi không chắc thủ thuật của họ thực sự hoạt động như thế nào. Độ phức tạp tính toán sẽ không giống như cố gắng đoán hình ảnh trước cho một đầu ra nhất định của hàm băm vì người ta phải tìm kiếm trên tất cả các u? Trong trường hợp này, lợi thế ở đâu?

Ở đây dường như nói dối một quan niệm sai lầm. Hãy nhớ những giải thích của tôi về thuật toán của Grover khi bắt đầu câu trả lời này. Tìm kiếm Grover một số xX , đáp ứng một số vị P . Trong trường hợp của chúng tôi X có thể là rất lớn ( các yếu tố M/N ) bởi vì nó là tập hợp của tất cả các tiền tố của c . Nhưng điều đó không quan trọng. Hãy nhớ rằng Grover ban đầu hoạt động trên {0,1}n , nó cũng rất lớn, nhưng hoạt động nhanh miễn là chúng tôi đang tìm kiếm một số x{0,1}n có một số thuộc tính chungP . Ví dụ: nếu chúng ta tìm kiếm bằng Grover chox{0,1}n thỏa mãn33x (vị ngữP ), thì chúng ta có rằng có nhiềux thỏa mãnP , cứ 33.x thỏa mãn nó! Và thời gian chạy sẽ là một cái gì đó giống như33 . Vì vậy, như một quy luật chung, nếu một vịPđược thỏa mãn cho mỗiiyếu tố -thứ củaX, sau đó Thuật toán Grover rằng các tìm kiếm choxXthỏa mãnPmất khoảngi bước. Ở đây không quan trọng bộXlà gì, hay nó lớn như thế nào! (Chừng nào chúng ta có một cách để xây dựng|ϕI|ϕϕ|cho bộ nàyX.) Bây giờ, trong các thiết lập mà bạn mô tả,X={x:H(x)=c}. VàPlà vị nói rằngxbắt đầu vớim. Để phân tích thời gian chạy của thuật toán Grover trong trường hợp này, chúng tôi không quan tâm đếnX, Nhưng chúng ta cần phải biết mức độ thường xuyên một yếu tố thỏa mãn P . Điều đó thật dễ dàng: Mỗi 2|m|-th yếu tố nào. Vì vậy thời gian chạy của Grover sẽ là O(2|m|). Đây là một vấn đề nếumlà dài, nhưng nếumlà, ví dụ, chỉ là một chút, sau đó làm việc này tốt. Ví dụ, nếu chúng ta sử dụng hàm băm để cam kết thông điệp một chút, chúng ta có thể mở cam kết với bất kỳ giá trị củam.

Nếu bạn muốn một ví dụ trong đó m dài hơn, thì bạn cần phải thay đổi xây dựng. Về cơ bản, bạn cam kết trên từng bit riêng lẻ và kết hợp các cam kết. Sau đó, mỗi cam kết có thể được phá vỡ bằng phương pháp được mô tả ở trên và bạn cần chạy thuật toán |m|lần

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.