Implementation
為什麼代數證明適用於密碼學?
我們怎麼知道密碼學中使用的數論和代數結果為電腦中實現的整數行為提供了一個完美的模型?純數學整數和二進制補碼整數之間是否存在雙射,並且在模運算符下的二進制補碼整數的子集是否與相應的(數學)整數 mod n 同構?
如果是這樣,這些條件是否足以滿足所有依賴代數和數論的密碼證明?
在電腦上實現的整數運算與整數的理論定義同構。否則操作不會給出正確的結果。
鑑於您問題中的術語,我懷疑當您想到電腦上的整數運算時,您會想到對機器字的運算。密碼學使用不適合機器字的數字:任何適用於整數的密碼學程式碼(即一般而言的非對稱密碼學)都必須包含一個bignum 庫(或依賴第三方庫)。
二進制補碼是一種表示負整數的方法。它與密碼學無關,因為密碼學幾乎從不使用負整數:只有非負整數 ( $ \mathbb{N} $ , 或整數模 $ n $ 使用它們的代表在範圍內儲存 $ [0,n-1] $ .
您可以在許多地方找到 Peano 算術和二進製表示算術等價的正式證明,例如在
BitNat
Coq 的模組中。就獲得正確的結果而言,實現整數運算是沒有問題的,但它確實對安全性有影響。如果實施不小心,諸如時序和記憶體訪問模式之類的側通道可能會洩漏機密數據,這會危及協議的安全性,如果對手無法找到有關中間值的任何資訊,該協議將是安全的。