Điểm:0

An toàn hệ thống mật mã Pailler

lá cờ cn

Tôi đang làm việc trên hệ thống có thể tính toán mức lương trung bình cho các vị trí khác nhau trong các công ty lớn. Tôi muốn sử dụng lược đồ pailler để thực hiện phép tính đó.

Tôi có 3 trường mà tôi muốn mã hóa: Tên công ty, chức vụ, thâm niên và tiền lương

Giả sử tôi có 3 công ty khác nhau muốn tính mức lương trung bình cho các vị trí khác nhau nhưng họ không muốn chia sẻ dữ liệu giữa họ. Chúng tôi có bộ dữ liệu như vậy

TÊN CHỨC VỤ CÔNG VIỆC thâm niên Lương
CÔNG TY NGƯỜI QUẢN LÝ 2 10000
CÔNG TY NGƯỜI QUẢN LÝ 3 15000
CÔNG TY nhà phát triển 1 18000
CÔNG TY nhà phát triển 5 11000
TÊN CHỨC VỤ CÔNG VIỆC thâm niên Lương
CÔNG TYC NGƯỜI QUẢN LÝ 2 12000
CÔNG TYC NGƯỜI QUẢN LÝ 3 15000
CÔNG TYC nhà phát triển 1 8000
CÔNG TYC nhà phát triển 5 15000

Công ty A, B và C trước khi gửi dữ liệu đến hệ thống của tôi đã mã hóa chúng bằng Pailler (tất cả họ đều sử dụng cùng một khóa), sau đó họ gửi dữ liệu đến hệ thống của tôi. Hệ thống của tôi chỉ biết khóa công khai để có thể tính mức lương trung bình cho chức danh công việc cụ thể, hệ thống của tôi có thể gửi kết quả được mã hóa cho tất cả các công ty và họ có thể giải mã nó bằng khóa riêng và kiểm tra mức lương trung bình cho các vị trí cụ thể có tính đến mức lương trong tài khoản các công ty khác.

Để tránh bị tấn công tần suất, tôi cũng muốn mã hóa dữ liệu văn bản (tên công ty và chức danh công việc) bằng pailler. Tôi có thể cho rằng tên công ty và chức danh công việc không dài hơn 20 byte. Bây giờ câu hỏi của tôi: Bạn có nghĩ rằng hệ thống đó là an toàn? Hệ thống của tôi lưu trữ tất cả thông tin ở dạng mã hóa nhưng không biết khóa riêng nên không thể giải mã được. Giả sử trong hệ thống của tôi bị rò rỉ dữ liệu và ai đó có tất cả thông tin ở dạng được mã hóa (khóa riêng không bị xâm phạm), bạn có nghĩ rằng anh ta có thể thực hiện bất kỳ cuộc tấn công nào để giải mã dữ liệu không? Chức danh công việc chủ yếu là dữ liệu từ điển. Mức lương và thâm niên đó là một phạm vi hẹp của các con số. Bạn nghĩ sao? Đặc biệt cảm ơn vì bất cứ đóng góp nào!

Điểm:0
lá cờ my

Hệ thống của tôi chỉ biết khóa công khai để có thể tính mức lương trung bình cho chức danh công việc cụ thể

Trên thực tế, bạn có thể tính tổng; tính giá trị trung bình, tức là giá trị $\text{Encrypt}_k( \lfloor sum / n \rfloor )$ khá phức tạp hơn (và thao tác sàn là cần thiết nếu $sum$ không nhất thiết phải là bội số của $n$ số lượng giá trị).

Điều này có thể được xử lý bởi một trong hai máy tính $\text{Mã hóa}_k( tổng )$, và gửi nó và giá trị của $n$ sang công ty A, B, C (có thể giải mã rồi chia). Hoặc, bằng cách yêu cầu mỗi công ty ngầm nhân mỗi mức lương mà họ mã hóa với $k!$ (đối với một giá trị hợp lý của $k$); thì (giả sử $n$ không quá lớn), chúng ta có thể tính toán $\text{Encrypt}_k( n^{-1} \cdot sum )$, đó sẽ là giá trị chúng tôi muốn (với hệ số tỷ lệ ngụ ý vẫn còn đó).

Để tránh bị tấn công tần suất, tôi cũng muốn mã hóa dữ liệu văn bản (tên công ty và chức danh công việc) bằng pailler.

Các công ty sẽ mã hóa chức danh công việc hay bạn? Nếu họ mã hóa nó, bạn không có quyền truy cập vào nó và vì vậy bạn sẽ không biết phải tính tổng.

Mặt khác, nếu họ cung cấp các chức danh công việc rõ ràng và bạn mã hóa nó, điều đó sẽ ổn thôi (nếu, theo ý kiến ​​của tôi, hơi vô nghĩa).

Tuy nhiên, câu hỏi của bạn thực sự là:

Giả sử hệ thống của tôi bị rò rỉ dữ liệu và ai đó có tất cả thông tin ở dạng được mã hóa (khóa riêng tư không bị xâm phạm), bạn có nghĩ rằng anh ta có thể thực hiện bất kỳ cuộc tấn công nào để giải mã dữ liệu không?

Bạn sẽ ổn thôi - với Paillier, kẻ tấn công không thể truy xuất bất kỳ thông tin nào từ bản mã (giả sử rằng khóa riêng và các giá trị ngẫu nhiên được sử dụng trong quá trình mã hóa là an toàn); ngay cả khi anh ta biết rằng bản rõ là một trong hai giá trị, anh ta vẫn không thể xác định đó là giá trị nào.

Điểm:0
lá cờ cn

Về mức trung bình, tôi đã nghĩ đến việc nhân mỗi mục với $2$ để đảm bảo nó đều. Số lượng của tất cả các phần tử được biết trong dịch vụ của tôi để tôi có thể chia các số được mã hóa cho các giá trị không được mã hóa. Sau đó, kết quả được mã hóa có thể được gửi đến tất cả các công ty và họ có thể chia nó cho $2$ để có được kết quả cuối cùng, bạn nghĩ nó ổn chứ?

Về điểm thứ hai, tôi đã quên mất rằng tôi sẽ không thể biết liệu hai chức danh công việc có bằng nhau khi sử dụng Pailler hay không. Trước đây tôi đã nghĩ đến việc lưu trữ các giá trị băm nhưng sẽ rất dễ bị tấn công vì số lượng các tên công việc khác nhau bị hạn chế. Tôi phải tìm một thuật toán tốt hơn cho điều đó.

poncho avatar
lá cờ my
"o tôi có thể chia số được mã hóa cho giá trị không được mã hóa"; Paillier không có thao tác 'chia' đồng hình. Bạn có thể nhân với nghịch đảo của 'giá trị không được mã hóa'; tuy nhiên, trừ khi số được mã hóa chỉ là bội số, điều đó sẽ dẫn đến một giá trị rất lớn.
sorror avatar
lá cờ cn
Bằng cách chia tôi có nghĩa là nhân với nghịch đảo của N (số phần tử). Mỗi mục nhập trước đó sẽ được nhân với 2 và kết quả cuối cùng ở phía khách hàng sẽ được chia cho 2. Tôi nghĩ rằng nó sẽ hoạt động cho tất cả các số, phải không?
poncho avatar
lá cờ my
Không, nó sẽ không hoạt động nếu N=3 và SUM=100...
sorror avatar
lá cờ cn
À đúng rồi! bây giờ tôi đã hiểu quan điểm của bạn với k! cho k=3! tôi sẽ không bao giờ nhận được tổng = 100 (tôi có thể có 96 hoặc 102) điều đó thật tuyệt nhưng có lẽ tôi sẽ có rất nhiều mục nên k! không phải là những gì tôi muốn. Có vẻ như giải pháp tốt nhất là gửi tổng được mã hóa và giá trị không được mã hóa n. Cảm ơn bạn đã giúp đỡ!

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