Please consider the following scenario: The user A and B use their keys, K1 and K2 respectively. Each client have a vector of elements. Each client separately permutes his vector using his key and outsources it to the untrusted server. This permutation prevents the server from learning the correct index of each element in this vector.
Now the clinet A and B wants to add exactly two values at the same index (i.e. the index in their original vector before permutation). Trivially, if they share a key, permute their vector using this key and then send each vector to the server, they can achieve what they want. However, they have used different keys to permute their vector, but want to do the same computation as before. Ideally they can interacts (after outsourcing the vectors) and exchange some information. Then the vector(s) at the server can be re-permuted similar to the situation the same key used for both.
Thus I am wondering such re-permutation exists, please. No matter if one client learns the key of the other, but the server should learn as little information as possible.