Homomorphic-Encryption

浮點的單向函式

  • October 10, 2019

浮點數是否有任何可交換的單向函式?

我試圖解釋為什麼我需要這些功能。

首先,我從高層次上描述問題,然後進一步形式化它;

有三方。愛麗絲、鮑勃和查理。Charlie 想在不知道確切值的情況下檢查 Alice 和 Bob 是否具有相同的值,除非它相同。這個問題叫做社會主義百萬富翁問題。但是,在這種情況下還有四個額外的限制/要求:

  1. 有三方而不是兩方。Alice 和 Bob 不希望對方知道他們的價值觀。
  2. 要比較的值不是整數,它們是浮點數。
  3. 我們想知道這些值是否大致相同。
  4. Alice 與 Bob 和 Charlie 之間不可能進行來回通信。只有兩個單向消息。一份從愛麗絲到查理,另一份從鮑勃到查理。

更正式地說,

$ x_a $ 和 $ x_b $ 分別是 Alice 和 Bob 的值。

它們由浮點數表示, $ x_a, x_b\in\mathbb{R} $ .

Charlie 想檢查這些值是否大致相同: $ x_a \approx x_b $ .

這可以寫成 $ |x_a - x_b| < \epsilon $ , 和 $ \epsilon $ ,一個小的正浮點數。

如果我們有浮點數的可交換單向函式,它可以幫助在這裡保持精確值的秘密。

Alice 和 Bob 將使用單向函式轉換他們的值:

$ y_a = f(x_a, k_a) $ , 和 $ k_a $ ,由 Alice 生成的公鑰

$ y_b = f(x_b, k_b) $ , 和 $ k_b $ , Bob 生成的公鑰

然後 Alice 將共享 ( $ y_a $ , $ k_a $ ) 和 Bob 會分享 ( $ y_b $ , $ k_b $ ) 通過向查理髮送一條消息。

然後查理可以檢查是否 $ |x_a - x_b| < \epsilon $ 通過檢查

$ |f(y_a, k_b) - f(y_b, k_a)|<\delta $ , 相當於

$ |f(f(x_a, k_a), k_b) - f(f(x_b, k_b), k_a)|<\delta $

我的假設是否正確,即我需要浮點的可交換單向函式?

有誰知道浮點的任何可交換單向函式?

這似乎是不可能的。

你需要那個 $ |x_1 - x_2| < \epsilon $ 暗示 $ |f(f(x_a, k_a), k_b) - f(f(x_b, k_b), k_a)|<\delta $ ; 這意味著 $ f(f(x_a, k_a), k_b) $ 是連續的 $ x_a $ .

現在查理知道了 $ k_a, k_b $ 並且可以計算目標值 $ f(f(x_a, k_a), k_b) $ ; 對函式進行簡單的二分搜尋 $ f(f(x, k_a), k_b) $ 會讓他恢復 $ x_a $ (或者至少是一個很好的近似值)。

引用自:https://crypto.stackexchange.com/questions/74941