1. 程式人生 > >【編碼】OTP加密以及基於群運算的One Time Element加密

【編碼】OTP加密以及基於群運算的One Time Element加密

1.基於群運算的

(連結:https://www.zhihu.com/question/25088082/answer)

下面用個例子來說明在一些設定下,One Time Element滿足完善保密性(perfect security)吧.
令這個群為 \mathbb{Z}_p^{*}, 其中p為素數,則此群含有p-1個不同元素。
加密演算法為 C=m \cdot g^{x}\mod p,
其中C是密文,m是明文,且m是1到p-1之間的整數。
g為此群的生成元(generator)。x是金鑰,x以平均概率從 \mathbb{Z}_{p}\backslash\{0\}隨機取值, 也就是說x是1到p-1的任意整數。
根據夏農定理。因為:
1. 金鑰空間K大小為p-1,因為x是1到p-1的任意整數。x的分佈為平均分佈。
2. 明文空間M大小為p-1,因為m只有p-1個不同的值。
3. 對於每個m, 能且只能算出來一個C,因此密文空間C的大小也是p-1。此外,確定m和c,可以算出唯一一個滿足條件的x。
所以此加密方式是完善保密的(perfect secure)
===========分割線=======================
下面對被反覆問到的一個問題作答:
OTE是不是 OTP?
答:不是。
原因:操作的集合不同,操作符不同。
OTP的定義見維基百科
en.m.wikipedia.org/wiki

In this technique, a plaintext is paired with random, secret key (or pad). Then, each bit or character of the plaintext is encrypted by combining it with the corresponding bit or character from the pad usingmodular addition. If the key is truly random, and at least as long as the plaintext, and never reused in whole or in part, and kept completely secret, then the resulting ciphertext will be impossible to decrypt or break.
其中清楚提到OTP的操作物件是bit,操作符是modular addition, 二進位制下就是XOR.
評論裡我也提到過,從夏農定理出發,只需要找到一個含有從兩個不同的自身元素到另一個自身元素、封閉的二元運算子的代數結構,以及對此操作符定義出來的逆元也在這個結構內,就可以構建perfect secure的加密方案。不是每個這種方案都有名字的。
另外,證明ElGama安全性的過程中, 用到的是OTE,不是OTP, 或者陳述為challenge中的密文和攻擊者之前收到的明文-密文對無關,所以優勢為0。