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.