Implementation

LWE:錯誤和浮動操作

  • June 2, 2017

背景

我試圖理解 LWE 和 R-LWE 實現中的錯誤。在 LWE 和 R-LWE 中,誤差被添加到格中的向量中,使得在計算上無法恢復任何有意義的數據。

這裡有人說,在 PRNG 中使用浮點操作在不同的環境中不夠可靠。

不過,根據這個問題的公認答案,有可能“簡單地”生成加密安全、幾乎均勻的浮點小數分佈。

問題

  1. LWE 或 R-LWE 中使用的錯誤是否主要依賴於浮點運算?
  2. 浮點操作是否需要在有限域中才能安全?
  3. 在四捨五入發生之前,所有數字都是浮動小數嗎?

猜想

我的假設是情況 1 可能,但情況 2 是正確的。這使我相信只有錯誤項才被視為浮點小數,以作為保持效率和安全性的一種方式,但是將所有內容都取模一個數字或取模一個理想值會生成一個整數。所以實際上,取模數的誤差會產生一個格點(整數),或者取模一個理想的錯誤會產生一個格點(有限域)。

這是一個準確的評估嗎?

回答第 3 點,不。四捨五入浮點數只會導致浮點數。它只是有較少的有效數字。所以它們仍然表示為有效數和指數。這是當今廣泛接受的格式。整數是一種完全不同的儲存方法,不會導致累積錯誤。它們是 100% 精確的。浮點數精度的 24 個數量級的巨大差異加劇了均勻分佈問題:-

精度變異數

對舍入浮點數的進一步算術運算仍會以難以預測的方式產生舍入誤差。不同的語言有不同類型的數字。例如,Java 與 Perl 相比具有不同類型的數字,而這些數字與 C /C++ 不同。這增加了原生隨機浮點數生成器的難度。

如果要更改類型,通常將數字從一種類型轉換為另一種類型。

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