Are there any commutative one-way functions for floating points?
I tried to explain why I need these functions.
First, I describe the problem on a high level and then I further formalize it;
There are three parties. Alice, Bob, and Charlie. Charlie wants to check if Alice and Bob have the same value without knowing the exact value except if it is the same. This problem is called the socialist millionaire problem. However, there are four extra additional constraints/requirements in this situation:
- There are three parties instead of two. Alice and Bob don't want the other parties to know their values.
- The values to be compared are not integers, they are floating numbers.
- We would like to know if the values are roughly the same.
- There is no back and forth communication possible between Alice and Bob and Charlie. Only two one-way messages. One from Alice to Charlie and one from Bob to Charlie.
More formally,
$x_a$ and $x_b$ are the values of Alice and Bob respectively.
They are represented by floating numbers, $x_a, x_b\in\mathbb{R}$.
Charlie wants to check if the values are roughly the same: $x_a \approx x_b$.
This can be written as $|x_a - x_b| < \epsilon$, with $\epsilon$, a small positive floating number.
If we would have commutative one-way functions for floating numbers, it could help here to keep the exact values secret.
Alice and Bob would transform their values with the one-way function:
$y_a = f(x_a, k_a)$, with $k_a$, a public key produced by Alice
$y_b = f(x_b, k_b)$, with $k_b$, a public key produced by Bob
Then Alice would share ($y_a$, $k_a$) and Bob would share ($y_b$, $k_b$) by sending a single message to Charlie .
Charlie can then check if $|x_a - x_b| < \epsilon$ by checking
$|f(y_a, k_b) - f(y_b, k_a)|<\delta$, which is equivalent to
$|f(f(x_a, k_a), k_b) - f(f(x_b, k_b), k_a)|<\delta$
Is my assumption correct that I need commutative one-way functions for floating points?
Does anyone know of any commutative one-way functions for floating points?