Điểm:1

Các lỗ sâu xác minh như vậy có được biết đến hay thậm chí có thể xảy ra không?

lá cờ in

1. Kịch bản

Giả sử rằng chúng ta có một nguồn đang tạo ra một giá trị ngẫu nhiên mỗi phút. Vì vậy, chúng tôi có giá trị ngẫu nhiên $x_1$ Trong $1$phút thứ nhất, $x_2$ Trong $2$phút thứ 2, $\ldots$, $x_n$ bên trong $n$phút thứ, v.v.

Sự phân bố của các giá trị $x_1, x_2, \ldots$ không hoàn toàn là ngẫu nhiên đồng nhất mà tuân theo quy luật sau: với mọi $i \ge 1$, $x_i = (y_i, y_{i+1})$, ở đâu, $y_i$ là định danh duy nhất của $x_i$, và $y_{i+1}$ là định danh duy nhất của sắp tới $x_{i+1}$ rằng sẽ đến vào phút tiếp theo.

Nói cách khác, tại bất kỳ thời điểm nào $i$phút thứ, hiện tại $x_i$, Và kế tiếp $x_{i+}$ được biết đến, nhưng cái sau $x_{i+2}$ là hoàn toàn không xác định, hoặc ngẫu nhiên. Dưới đây là một ví dụ:

Phút 1: x_1 = (334234 , 234829129 )
Phút 2: x_2 = (234829129, 983220 )
Phút 3: x_3 = (983220 , 831231236347)
...
Phút thứ n: x_n = (643532754, 3534611 )

Một cách để băm những $n$ các giá trị, theo thứ tự, là băm từng giá trị khi nó đến, ví dụ: $h_1 = f(x_1)$, sau đó xâu chuỗi nó với cái mới đến tiếp theo, ví dụ: $h_2 = f(x_2 \parallel h_1)$.

Nói cách khác, hàm băm của danh sách đầu vào được sắp xếp theo thứ tự, trong $n$phút thứ được định nghĩa đệ quy là $h_n = f(x_n \parallel h_{n-1})$, với trường hợp cơ sở là $h_1 = f(x_1)$.

Ưu điểm của cách tiếp cận này là, đối với một số người đang chạy quy trình này ngay từ đầu, tại mỗi phút, cả thời gian chạy và không-thời gian đều ở trong $O(1)$, vì anh ấy có thể lưu vào bộ nhớ đệm hàm băm từ phút trước.

Nhược điểm của phương pháp này là, đối với người không tuân theo quy trình và muốn xác minh xem liệu $h_n$ thực sự là hàm băm của toàn bộ chuỗi, anh ta sẽ phải bắt đầu lại từ đầu với $h_1$, và lặp lại toàn bộ chuỗi cho đến khi $h_n$. Thực tế, quá trình xác minh này sẽ mất $O(n)$ không gian và $O(n)$ thời gian.

2. Lỗ sâu

Sẽ thật tuyệt nếu có thể, tại mọi thời điểm $n$ nhiều chuỗi băm, chúng ta có thể khám phá một hố sâu $w_n$ đó có các thuộc tính sau:

  • Một khi $n$thứ băm, $h_n$, được tính toán hợp pháp $h_1$ bằng cách tuân theo đệ quy đầy đủ trước đó, chỉ sau đó lỗ sâu $w_n$ trở nên được khám phá. Mặt khác, việc tìm kiếm $w_n$ thực tế là không thể.
  • Để cho $h'_n$ băm được tuyên bố là $h_n$, lỗ sâu đục có thể tắt quá trình xác minh như sau:

$$ w_n(h_1, h'_n) = \begin{cases} 1 & \text{if $h'_n = h_n$}\ 0 & \text{khác}\ \end{trường hợp} $$

  • Thời gian chạy tiệm cận tồi tệ nhất cũng như không gian tiệm cận tồi tệ nhất cho máy tính $w_n(h_1, h'_n)$ không tệ hơn $O(\log n)$. Nếu nó có thể làm cho nó trong $O(1)$, điều đó thậm chí còn tốt hơn tất nhiên.

Ghi chú. Điều này khác với hình ảnh trước cuộc tấn công của các hàm băm. Sự khác biệt như sau:

  • Các cuộc tấn công tiền hình ảnh cho phép kẻ tấn công giả mạo một Bất kỳ đầu vào cung cấp một số hàm băm mục tiêu mong muốn.

  • lỗ sâu này $w_n$ không cho phép giả mạo bất kỳ đầu vào tùy ý nào mà thay vào đó tiết lộ một đường tắt ẩn chỉ hoạt động để liên kết một đầu vào cụ thể cho phép liên kết $h_n$ Quay lại $h_1$, và cách duy nhất để khám phá lỗ sâu như vậy là tính toán hợp pháp $h_n$ đầu tiên.

  • Có lẽ chúng ta có thể gọi một lỗ sâu như vậy là một cuộc tấn công tiền hình ảnh có điều kiện không có lợi cho kẻ thù.

3. Câu hỏi

Các lỗ sâu xác minh như vậy có được biết đến hay thậm chí có thể xảy ra không?

fgrieu avatar
lá cờ ng
Tôi nghĩ rằng phải có một đầu vào bổ sung bên cạnh $n$, $h_1$ và $h'_n$ để tính toán thuật toán $w_n(h_1, h'_n)$. Cụ thể, những gì nó làm sẽ phụ thuộc vào $x_1$ đến $x_n$, phải không? Vì vậy, tại sao lại chọn riêng $h_1$, và _điều gì trong tuyên bố vấn đề_ ngăn không cho $h_n$ đầu vào bổ sung đó, thứ cho phép triển khai đơn giản $w_n(h_1, h'_n)$? Có phải giả sử $x_1$ đến $x_n$ là các đầu vào ngầm định cho thuật toán đã nói không?
knaccc avatar
lá cờ es
Các giá trị ngẫu nhiên có phải thực sự ngẫu nhiên và nằm ngoài tầm kiểm soát của nguồn hay các giá trị chỉ cần không thể phân biệt được với ngẫu nhiên đối với người quan sát?
caveman avatar
lá cờ in
@fgrieu - Đúng, nó phụ thuộc vào $x_1, x_2, \ldots$. Tuy nhiên, tôi tự hỏi, liệu chúng ta có thể chuyển thông tin về sự phụ thuộc như vậy vào hàm băm đầu ra $h_1, h_2, \ldots$ không? Nói cách khác, có thể nào $h_2 = f(x_2, h_1)$ đang chuyển thông tin liên quan trong $x_1$ sang $h_2$ một cách hiệu quả không? Sau đó, khi chuỗi tiếp tục, $h_n$ có thể có thông tin liên quan hiệu quả từ $x_n, x_{n-1}, \ldots, x_1$, đủ để tạo lỗ sâu xác minh $w_n(h_1, h'_n)$ ?
caveman avatar
lá cờ in
@fgrieu - Đối với câu hỏi của bạn về tuyên bố vấn đề ngăn chặn các giải pháp tầm thường, nếu tôi hiểu đúng về bạn, thì yêu cầu là độ phức tạp của không gian đối với "người dùng lỗ sâu" phải bị hạn chế trong $O(\log n)$. Tuy nhiên, "người khám phá lỗ sâu đục" phải thực hiện quy trình $O(n)$.
caveman avatar
lá cờ in
@knaccc - Đúng. Các giá trị là ngẫu nhiên. Ví dụ. người tính toán $h_i = f(x_i, h_{i-1})$ hoàn toàn không biết gì về giá trị tiếp theo $x_{i+1}$.
knaccc avatar
lá cờ es
Có, người tính toán hàm băm mà tôi cho là chỉ làm như vậy để sau đó có thể loại bỏ các giá trị $x_i$ trước đó, nhưng vẫn có thể xác minh xem sau đó có ai đó cung cấp cho họ bản sao chính xác của các giá trị đó trong tương lai hay không . Nhưng câu hỏi của tôi là: thực hiện các giá trị ngẫu nhiên (tức là$x_i$) phải thực sự ngẫu nhiên và nằm ngoài tầm kiểm soát của nguồn hay các giá trị chỉ cần không thể phân biệt được với ngẫu nhiên đối với người quan sát?
caveman avatar
lá cờ in
@knaccc - Vâng, thực sự ngẫu nhiên, ngay cả nguồn cũng không biết giá trị tiếp theo sẽ là gì. Thông tin về các giá trị ngẫu nhiên trước đó chuyển sang các giá trị tiếp theo trong hàm băm. Ví dụ. $h_{i}$ nhận thông tin về giá trị trước đó $x_{i-1}$ vì nó nhận được hàm băm $h_{i-1}$.
knaccc avatar
lá cờ es
Tôi cho rằng nguồn không thể tin cậy để khẳng định bất cứ điều gì về các giá trị? Bởi vì nếu nguồn đáng tin cậy, thì nguồn đó chỉ có thể phát hành một "điểm kiểm tra" sau mỗi $n$ lần, trong đó một thông báo đã ký có chứa hàm băm mới nhất được công bố. Nếu nguồn không đáng tin cậy để khẳng định bất cứ điều gì, thì làm sao nguồn đó có thể được tin cậy để giới thiệu một lỗ sâu chứng thực giá trị chính xác của hàm băm?
fgrieu avatar
lá cờ ng
Nói cách khác: câu hỏi như đã nêu được trả lời bằng cách sử dụng bất kỳ hàm băm tiêu chuẩn nào cho $f$; làm cho "người khám phá lỗ sâu đục" tính toán $h_n$ (cần thời gian $O(n)$, đây là thời gian tối ưu); sau đó làm cho lỗ giun tự xuất ra $1$ nếu đối số thứ hai của nó khớp với $h_n$. Tôi kết luận rằng câu hỏi cần được sàng lọc để ngăn chặn các giải pháp buồn tẻ tương tự. Giống như: chúng tôi muốn "trình phát hiện lỗ sâu" nhanh như hàm băm tiêu chuẩn. Ngoài ra, chúng ta cần một mục đích cho tham số đầu tiên của lỗ sâu đục, và tôi không thấy điều đó trong câu hỏi.
caveman avatar
lá cờ in
@fgrieu - Đúng. Tôi đã trả lời sai 1 câu về phân phối của $x_1, x_2, \ldots$. Nó không hoàn toàn ngẫu nhiên. Nó hoạt động như sau: $x_i = (y_i, y_{i+1})$, trong đó $y_i$ là mã định danh duy nhất của $x_i$ và $y_{i+1}$ là mã định danh duy nhất của nội dung sắp tới tiếp theo giá trị $x_{i+1}$. Vì vậy, khi $x_1$ được tạo vào phút thứ 1, nguồn biết phút tiếp theo là $y_2$, nhưng không biết $y_3$. Vì vậy, nó có sự ngẫu nhiên trong đó, nhưng không hoàn toàn. Đối với niềm tin: chúng tôi chỉ tin $h_1$ là đúng. - Cập nhật bài viết với sự làm rõ đó.
Hhan avatar
lá cờ jp
Tôi nghĩ rằng khái niệm về lỗ sâu mà bạn quan tâm có liên quan chặt chẽ với đối tượng gần đây được gọi là chức năng trì hoãn có thể kiểm chứng, xem ví dụ: https://eprint.iacr.org/2018/712
Điểm:0
lá cờ pl

Chỉnh sửa: Làm rõ câu trả lời bằng cách sử dụng cây Merkle làm ví dụ.

Đối với một danh sách các giá trị $x_1,\ldots,x_n$, bạn có thể tính cây Merkle với gốc $h_n$. Để cho $h_n'$ tuyên bố là $h_n$, bạn có thể rút ngắn quá trình xác minh bằng cách tiết lộ đường dẫn xác thực chiều dài $log_2(n)-1$ giữa bất kỳ hàm băm lá đã biết nào $f(x_i)$ và tuyên bố $h_n'$.

Bằng cách xác định lỗ sâu đục $w_{i,n}$ làm đường dẫn xác thực giữa $f(x_i)$$h_n$, bạn có thể xác minh rằng $h_n' = h_n$ Trong $log_2(n)$ cuộc gọi đến $f$. Như mã giả:

xác minh def(f_x_i, w, h_n):
    h_i = f_x_i
    cho h_j trong w:
        h_i = f(h_i + h_j)
    trả về h_i == h_n

Sau đó bạn có thể gọi xác minh(f(x_i), w_i_n, h_n'). Cụ thể, để xác minh $h_n'$ không yêu cầu tất cả các lần băm trước đó, chỉ một tập hợp con có kích thước logarit được gọi là đường dẫn xác thực.


Hạn chế của việc sử dụng cây Merkle ở đây là chúng ta phải giả định rằng nó hoàn toàn cân bằng, tức là $n = 2^k$ cho một số $k$và việc nối thêm yêu cầu xây dựng lại cây, vì vậy không đạt được. thêm của bạn $h_i$ đến một Dãy núi Merkle thay vào đó, có một cái gì đó tương tự như một đường dẫn xác thực để chỉ ra rằng nó tồn tại dưới một tập hợp các đỉnh hơn là dưới một gốc.

caveman avatar
lá cờ in
Làm thế nào những thông báo băm cao nhất đó sẽ liên kết với $h_1$?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.