Encryption

將短消息非對稱加密成短字元串

  • December 10, 2021

我有一個字元串,其大小小於以下有限字元集中的 32 個字元。

  • 大寫和小寫拉丁字母:A to Z and a to z
  • 數字:0 to 9
  • 特殊字元:!#$%&'*+-/=?^_{|}~`

我希望使用生成的消息 < 64 個字元的公鑰加密此字元串。

我知道在大小和安全性之間會有一個權衡。

我希望使用生成的消息 < 64 個字元的公鑰加密此字元串。

實際上,如果您稍微降低安全性,您似乎可以。

一種方法是使用ECIES,例如 P-192。(EC-Elgamal 也是可行的——我認為這是一種更好的方法)

在這個方案中,私鑰是一個隨機值 $ r $ , 公鑰是一個值 $ P = rG $ , 在哪裡 $ G $ 是生成點。為了加密,我們選擇一個隨機值 $ s $ , 併計算兩者 $ sG $ 和 $ sP $ ; 我們發送點 $ sP $ (或者,在你的情況下,只是 x 座標)通過一個密鑰派生函式,它生成一個我們用來加密實際消息的密鑰。密文由值組成 $ sG $ (在你的情況下,只是 x 座標)和對稱加密。

現在,如果我們使用曲線 P-192,x 座標 $ sG $ 可以用192位表示;使用我們給定的字母表(有 81 個符號),這將需要 31 個字元(例如,通過將值從 0 轉換為 circa $ 2^{192} $ 進入基地 81)。

至於消息的對稱加密,我們可以使用 Format Preserving Encryption 方法

$$ 1 $$; 這可以將由 81 個符號的字母組成的消息轉換為相同字母和長度的密文。 因此,31 個符號的加密(您說您感興趣的最大符號)將加密為 31+31 = 62 個符號的消息 - 在您的要求範圍內。

安保費用:

  • P-192 具有“96 位安全性”;這比我們通常使用的要少一些 - 但是,它仍然相當不錯。
  • 我們確實洩漏了消息的長度(因為 Format Preserving Encryption 方法保留了長度);如果這是附加要求,您始終可以將消息填充到 32 個字節(最後一個字元表示消息的實際長度) - 這樣,我們仍然滿足長度要求

$$ 1 $$: 通常,對於 ECIES,我們在對稱加密中使用顯式完整性轉換。我認為在這種情況下不需要 - 對 FPE 的任何修改都會解密為隨機的東西,並且攻擊者總是可以用解密為隨機的東西替換密文(通過選擇隨機明文並加密它的簡單權宜之計)用公鑰)。

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