Chạy một thuật toán trên dữ liệu từ xa và đảm bảo câu trả lời không bị giả mạo


8

Tôi đã suy nghĩ về vấn đề điện toán / tiền điện tử / cơ sở dữ liệu cụ thể này trong nhiều năm và tôi chỉ muốn biết liệu đã có giải pháp cho nó chưa. Thành thật mà nói, tôi không biết chính xác vấn đề này thuộc về lĩnh vực nào.

Tóm lại: người A có một danh sách dữ liệu, một người khác (B) có một thuật toán cung cấp cho mỗi mục trong danh sách này một điểm số và sau đó tổng hợp tất cả các điểm số này để cung cấp điểm tổng thể cho toàn bộ danh sách. Làm thế nào chúng ta có thể chạy thuật toán trên danh sách dữ liệu để dữ liệu được giữ cực kỳ an toàn (tốt nhất là không bao giờ rời khỏi người A) nhưng để người B có thể chắc chắn thuật toán chạy đúng và không bị giả mạo.

Đây là một ví dụ: Anna và Bob sống trong một ngôi làng lớn. Anna có một danh sách trên máy tính của cô ấy về tất cả những điều cô ấy đã làm trong làng, cả tốt và xấu. Bob đã tạo ra một thuật toán chấm điểm rất đơn giản cho các danh sách như vậy, nó chạy trên từng mục trong danh sách và cho điểm đó và sau đó cộng tất cả các số này lên để cho Anna điểm cuối cùng. Điểm số này cho Bob biết Anna có lợi như thế nào đối với cộng đồng làng xã và cụ thể theo ý kiến ​​của Bobs. (Đây không chỉ là một ví dụ vì đây thực sự là hệ thống tôi muốn thực hiện)

Tuy nhiên Anna không muốn đưa cho Bob danh sách của mình, vì sau đó anh ta có quyền truy cập vào thông tin có khả năng lúng túng trong đó (mọi người đều có bộ xương trong tủ quần áo của họ). Tuy nhiên, Bob không tin tưởng Anna tự mình chạy các thuật toán của mình, vì cô có thể chỉ nói dối và nói với Bob rằng điểm số rất cao để Bob có nhiều khả năng giúp đỡ cô.

Có một vài giải pháp tôi đã nghĩ ra, nhưng tất cả đều có vấn đề:

A. Tìm một người ngẫu nhiên để lấy dữ liệu và chạy thuật toán và gửi lại điểm số, nhưng có thể khó đảm bảo rằng người ngẫu nhiên này không biết Anna và cố gắng giúp cô ấy hoặc tạo một bản sao của dữ liệu và sau đó thử để theo dõi nó và tống tiền Anna.

B. Để Anna chạy thuật toán nhưng bằng cách nào đó mã hóa mã kiểm tra vào điểm số, ví dụ, thay vì xếp hạng một sự kiện là 1 tỷ lệ là 1.0000000000797, theo cách mà sau này Bob có thể sử dụng mã này làm mã kiểm tra để xem liệu đã cho điểm số là chính xác. Tuy nhiên, kiểm tra này cũng có thể bị Bob sử dụng sai để chỉ ra những việc cụ thể mà Anna đã làm. Ngoài ra tôi có thể tưởng tượng một hệ thống như vậy sẽ không quan trọng đối với kỹ sư đảo ngược để Anna có thể cho điểm sai với mã kiểm tra chính xác, xem xét rằng Anna phải có quyền truy cập đầy đủ vào thuật toán Bobsons để chạy nó.

C. Ngôi làng tạo ra một máy chủ an toàn để lấy dữ liệu và thuật toán đó và chạy chúng cùng nhau. Tuy nhiên, cả Anna và Bob đều không thực sự tin tưởng bất cứ ai đủ để làm điều này và không tạo một bản sao dữ liệu hoặc sửa đổi điểm số, trừ khi có một số kiến ​​trúc cơ bản an toàn để làm điều đó. Ngoài ra tôi muốn điều này là một hệ thống P2P.


Điều gì xảy ra nếu thuật toán chấm điểm của Bob là, ví dụ, biểu diễn nhị phân của nếu Anna đã làm hoặc chưa thực hiện từng điều trong danh sách? (Vì vậy, 1 * <Anna đã làm điều 1> + 2 * <đã làm Anna làm điều 2> + 4 * <đã làm Anna làm điều 3> ...) Sau đó, Bob sẽ có quyền truy cập vào dữ liệu của Anna chỉ dựa trên đầu ra của thuật toán chấm điểm.
TLW

1
Tôi tự hỏi nếu mã hóa đồng hình có chơi ở đây không? Nó giải quyết loại vấn đề ngược mặc dù - nó cho phép một số hệ thống khác thực hiện tính toán trên dữ liệu mà không cần học các giá trị mà nó hoạt động.
Alan Wolfe

@TLW Tôi không hoàn toàn chắc chắn nếu tôi hiểu bạn đang nói gì ... ai đang chạy thuật toán trong tình huống này và làm sao chúng ta có thể chắc chắn giá trị cuối cùng không bị chặn và giả mạo?
Robin A

Câu trả lời:


9

Trong cộng đồng tiền điện tử, nhiệm vụ này được gọi là tính toán được ủy quyền hoặc ủy quyền có thể kiểm chứng. Bạn muốn để máy chủ ("đám mây") thực hiện công việc cho bạn, nhưng bạn cũng muốn đám mây cung cấp cho bạn một số bằng chứng rằng nó thực sự đã thực hiện tính toán (và không chỉ xuất ra một đầu ra ngẫu nhiên và bỏ chạy bằng tiền của bạn).

Một con trỏ, trên đỉnh đầu của tôi, là "Tính toán ủy quyền: bằng chứng tương tác cho những kẻ buôn lậu" (Goldwasser, Kalai, và Rothblum, J. ACM (62), 2015). Các giải pháp khác có thể tồn tại, nhìn vào bên trong.


1

Có một lĩnh vực mới về mã hóa đồng cấu thường phù hợp với yêu cầu của bạn:

Mã hóa đồng cấu là một dạng mã hóa cho phép thực hiện tính toán trên bản mã, do đó tạo ra kết quả được mã hóa, khi được giải mã, khớp với kết quả của các hoạt động được thực hiện trên bản rõ.

Thực thể xử lý không thể biết "bất cứ điều gì" về cyphertext, nó chỉ xuất hiện dưới dạng dữ liệu ngẫu nhiên, nó chỉ có thể làm hỏng tính toán và khách hàng cần một số cách để phát hiện / bảo vệ chống lại dữ liệu / tính toán bị hỏng. điều này có thể được thực hiện với thông báo tiêu hóatính toán chịu lỗi .

Mã hóa đồng hình chỉ được chứng minh là có thể về mặt lý thuyết gần đây do đó ở giai đoạn khái niệm nhiều hơn và dường như không được triển khai nhiều trong thực tế cho đến nay, nhưng cuối cùng ý tưởng là nó có thể hiển thị như một khả năng (ví dụ như các dịch vụ tiêu chuẩn khác như ảo hóa) trên các cụm tính toán tiêu chuẩn hóa lớn, ví dụ Amazon ECC hoặc công cụ tính toán google .


Điều này không trả lời câu hỏi đã được hỏi. Mã hóa đồng cấu không (tự nó) cho phép B xác minh rằng thuật toán chạy đúng và dữ liệu không bị giả mạo. Mã hóa đồng cấu đảm bảo chỉ bảo mật, không toàn vẹn, nhưng câu hỏi là về tính toàn vẹn.
DW

câu hỏi là về "chạy một thuật toán trên dữ liệu từ xa" đó là raison d'être của mã hóa homomorphic, và các địa chỉ câu trả lời trực tiếp cùng với những mối quan tâm thêm xáo trộn mà tiêu hóa nhắn & khoan dung lỗi tính toán địa chỉ kỹ thuật.
vzn
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.