Моя система знает только открытый ключ, поэтому она может рассчитать среднюю зарплату для конкретной должности.
На самом деле, вы можете вычислить сумму; вычисление среднего, то есть значения $\text{Encrypt}_k( \lfloor sum / n \rfloor )$ довольно хитрая (и операция пола необходима, если $сумма$ не обязательно кратно $n$ количество значений).
Это может быть обработано либо вычислением $\text{Зашифровать}_k(сумма)$, и отправив это и значение $n$ в компанию А, В, С (которые могут расшифровать и потом разделить). Или, заставив каждую компанию неявно умножать каждую зарплату, которую они зашифровали, на $к!$ (за разумную стоимость $к$); тогда (при условии $n$ не слишком велико), мы можем вычислить $\text{Зашифровать}_k( n^{-1} \cdot сумма)$, что было бы значением, которое мы хотим (с подразумеваемым коэффициентом масштабирования).
Чтобы избежать частотной атаки, я хочу также зашифровать текстовые данные (название компании и должность) с помощью pailler.
Компании будут шифровать название должности или вы? Если бы они зашифровали его, у вас не было бы доступа к нему, и поэтому вы бы не знали, что суммировать.
С другой стороны, если бы они предоставили названия должностей в открытом виде, а вы их зашифровали, это было бы нормально (хотя, на мой взгляд, немного бессмысленно).
Тем не менее, ваш вопрос действительно был:
Допустим, в моей системе произошла утечка данных, и у кого-то есть вся информация в зашифрованном виде (закрытый ключ не скомпрометирован), как вы думаете, он может провести какую-либо атаку для расшифровки данных?
Все будет в порядке — с Пайе злоумышленник не может извлечь никакой информации из зашифрованного текста (при условии, что закрытый ключ и случайные значения, используемые в процессе шифрования, безопасны); даже если бы он знал, что открытый текст является одним из двух значений, он все равно не мог бы определить, какое именно.