Điểm:1

Sắp xếp an toàn danh sách các số từ hai bên

lá cờ jp

Tôi đang tìm cách sắp xếp an toàn hai danh sách số. Vấn đề triệu phú của Yao coi mỗi bên có một con số bí mật và so sánh chúng một cách an toàn. Có tài liệu nào mở rộng vấn đề này khi mỗi bên có một danh sách số và mỗi bên sẽ tìm hiểu vị trí của từng phần tử trong danh sách của mình đối với danh sách nối được hợp nhất từ ​​cả hai bên không? Một bên sẽ không biết được con số chính xác của bên kia.

poncho avatar
lá cờ my
Đầu ra sẽ là nối của hai danh sách, được sắp xếp? Điều gì ngăn cản mỗi bên suy ra danh sách đã sắp xếp của bên kia (và nếu không có gì, thì một giao thức tầm thường của một bên đưa danh sách đã sắp xếp cho bên kia, người kết hợp chúng, là đủ).
Problem Solver avatar
lá cờ jp
Mỗi bên sẽ tìm hiểu vị trí tương đối của đầu vào của họ trong danh sách nối, nhưng sẽ không biết con số thực tế từ bên kia. Lý tưởng nhất là tôi muốn làm điều này cho số lượng bên tùy ý.
Điểm:1
lá cờ ng

Vấn đề có một "giải pháp dễ dàng" bằng cách sử dụng các kỹ thuật chung.

  1. Có những phần mở rộng của vấn đề Triệu phú của Yao về cách tính toán an toàn bất kỳ mạch nào $C(x, y)$. Đây là toàn bộ lĩnh vực nghiên cứu, thường có tên là "Tính toán an toàn" hoặc "Tính toán nhiều bên".

  2. Tồn tại các mạch có thể sắp xếp các đầu vào theo tên của phân loại mạng. Trong khi có kỹ thuật $O(n \log n)$ (Mạng sắp xếp AKS + Sắp xếp Zigzag), chúng phức tạp về mặt kỹ thuật, với các hằng số không hợp lệ, do đó, trong thực tế hầu như luôn luôn tốt hơn khi sử dụng một $O(n (\log n)^2)$ mạng sắp xếp trong đó có nhiều mạng (giả sử Batcher Odd-Even Mergesort).

Điều này có nghĩa là vấn đề của bạn được giải quyết bằng cách tính toán một mạng sắp xếp (giả sử Hợp nhất số lẻ theo lô) bằng cách sử dụng các kỹ thuật tính toán chung của 2 bên.

Nhìn vào việc triển khai các giao thức MPC, có vẻ như cái này của Đại học Boston bao gồm một bản demo có liên quan. Đặc biệt, họ

  1. tính tổng hai mảng đầu vào, rồi
  2. sắp xếp kết quả, sử dụng Bubblesort.

Bạn có thể sử dụng lại một số đoạn mã này, nhưng sẽ cần phải cẩn thận một chút. Đảm bảo an ninh của MPC là

Giao thức MPC chỉ tiết lộ $C(x,y)$, ví dụ.là tốt như cả hai người tham gia đưa ra đầu vào của họ $x, y$ cho một số bên thứ ba đáng tin cậy $T$, sau đó tính toán $C(x,y)$, và cho họ biết câu trả lời.

Về mặt lý thuyết, bạn có thể lấy mã mẫu ở trên, hoán đổi phần tính tổng các thứ thành một phép nối và tiếp tục. Điều này sẽ dẫn đến một kế hoạch thực tế không an toàn --- được đưa ra $x$$C(x,y)$, nó là chuyện nhỏ để phục hồi $y$.

thay vào đó tôi sẽ đề nghị có $C(x,y)$ tính toán (trong biểu diễn được sắp xếp của phép nối $x||y$) một vectơ bit cho biết vị trí các phần tử của mỗi bên sẽ kết thúc. Điều này vẫn mã hóa tất cả thông tin đặt hàng có liên quan, nhưng ẩn đầu vào của mỗi bên với bên kia (ngoại trừ thông tin đặt hàng "phải bị rò rỉ").

Điều này có thể được thực hiện bởi

  1. Ánh xạ từng phần tử $t$ của $x$ đến $2t$,
  2. Ánh xạ từng phần tử $t$ của $y$ đến $2t+1$,
  3. nối các yếu tố biến đổi này,
  4. sắp xếp nối,
  5. lập bản đồ $t\mapsto t\bmod 2$ cuối cùng.

Mạch này tính toán chức năng tôi đã mô tả trước đây và "phá vỡ mối quan hệ" giữa $x$$y$ bằng cách đặt phần tử của $y$ sau trong vecto. Sự lựa chọn này là tùy ý.

Tất nhiên, đây là ý tưởng của tôi về một mạch hợp lý $C$ để tính toán mà có thể đạt được mục tiêu của bạn. Bạn có thể nghĩ rằng nó rò rỉ quá nhiều thông tin và có một số mạch khác mà bạn muốn tính toán. Bạn vẫn có thể sử dụng các kỹ thuật chung của MPC để thực hiện việc này --- miễn là bạn có thể chỉ định phép tính mà bạn muốn thực hiện.


Trong các nhận xét, bạn đã đề cập đến mong muốn có một phiên bản đa bên của điều này. Điều này là ngay lập tức từ việc xây dựng ở trên, nhưng dù sao thì tôi cũng sẽ thảo luận về nó một cách rõ ràng.

Để cho $P_0,\dots, P_{k-1}$ là các bên có đầu vào $\vec x_0,\dots, \vec x_{k-1}$. Xác định một mạch $C(x_0,\dots, x_{k-1})$ điều đó

  1. cho mỗi $i$, áp dụng chức năng $t\mapsto kt + i$ đến từng tọa độ của $x_i$,
  2. nối tất cả các kết quả lại với nhau
  3. sắp xếp kết quả, ví dụ với mạng phân loại,
  4. tính toán chức năng $t\mapsto t\bmod k$ trên mỗi phần tử của đầu ra.

Kết quả sẽ là một vectơ có các phần tử trong $\{0,\dots,k-1\}$. Để đơn giản, nói rằng kết quả là $[0,3,2,2,1,0,1,3]$. Điều này sẽ cho cả 4 bên biết rằng thứ tự tương đối của đầu vào của họ là

  1. phần tử nhỏ nhất của bên 0
  2. phần tử nhỏ nhất của bên 3
  3. phần tử nhỏ nhất của bên 2
  4. phần tử lớn nhất của bên 2
  5. phần tử nhỏ nhất của bên 1
  6. phần tử lớn nhất của bên 0
  7. phần tử lớn nhất của bên 1
  8. phần tử lớn nhất của bên 3.

Nếu một người sử dụng sơ đồ MPC thích hợp (các từ cần tra cứu là "Tính toán nhiều bên bảo mật ác ý"), thì đây có thể được chứng minh là tất cả những gì kẻ thù sẽ học được, điều chỉnh một số giả định kỹ thuật. Các giả định này phụ thuộc vào sơ đồ cụ thể mà bạn sử dụng, nhưng chúng thường giống như

  • không có quá nhiều người tham gia giao thức “thông đồng phá giao thức”,
  • các đối thủ có hiệu quả về mặt tính toán, và
  • có lẽ có một số giai đoạn "thiết lập đáng tin cậy".

Đă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.