利用者:Meauk/暗号
提供: Yourpedia
目次
2014-04-06
受信者
- 大きな素数pを生成
- pに対する原始根としてgを選択
- 乱数として、p-1>a>1の範囲でrを生成。
- as ≡ 1 (mod p-1)
- g^a ≡ x (mod p)
- 秘密鍵(s)は秘密に所持し、公開鍵(p, g, x)は公開する。
送信者
- 乱数としてp-1>k≧1の範囲でkを生成。
- g^k ≡ e (mod p) (eがp-1と互いに素でないならば①からやり直し。)
- 秘密にするメッセージをMとするとき(Mは換字式暗号などで数列に変換してある。Mはp>M>1の範囲。)、M^e ≡ C (mod p)
- x^k ≡ y (mod p)
- 暗号(C, y)を送信
受信者
- y^s ≡ e (mod p)
- ed ≡ 1 (mod p-1)
- C^d ≡ M (mod p)
2014-05-05
鍵生成
- 2つの異なる素数PとQを生成し、積Nを計算する。
- φ(N)=(P-1)(Q-1)を求めて、PとQの値を破棄
- φ(N)と互いに素な数eをランダムに選択して、ed ≡ 1 (mod φ(N))が成り立つようにdを計算する。
- F×d+G ≡ 0 (mod φ(N))となるように、2つの奇数FとGを固定する。
- 公開鍵(N, e, F, G)を公開し、秘密鍵(d)を秘密に保持する。
暗号化
- M:メッセージ、K:乱数。M^e × K^F ≡ C (mod N)。K^G ≡ X (mod N)。暗号文(C, X)
復号
- C^d ≡ Y (mod N)。XY ≡ M (mod N)。
2014-05-09
鍵生成
- 素数pを生成する。
- pに対する原始根gを選択する。
- 自然数f, hをランダムに選択後、fd+h ≡ 0 (mod p-1) を計算する。
- g^f ≡ A (mod p) を計算する。
- g^h ≡ B (mod p) を計算する。
- 公開鍵(p, A, B)は公開し、秘密鍵(d)は秘密に保持する。
暗号化
- 乱数rを生成する。
- 周知の方法で数値に変換された平文をM(p未満)とするとき、M × B^r ≡ C (mod p) を計算する。
- A^r ≡ x (mod p) 計算する。
- 暗号文(C, x) を受信者に送信する。
復号
- x^d ≡ y (mod p) を計算する。
- Cy ≡ M (mod p) を計算する。
2014-06-11
鍵生成
- 素数pを生成する。
- pに対する原始根gを1つ選択する。
- φ(p)=(p-1)と互いに素な数eをランダムに選択する。
- ed ≡ -1 (mod p-1) となるdを計算する。
- x ≡ g^e (mod p) を計算する。
- 公開鍵(p, g, x)を公開し、秘密鍵(d)を秘密に保持する。
暗号化
- 乱数rを生成する。
- c ≡ m × g^r (mod p) を計算する。
- y ≡ x^r (mod p) を計算する。
- 暗号文(c, z)を受信者に送信する。
復号
m ≡ c × y^d (mod p) を計算する。
2014-06-12
鍵生成
- 素数p, qを生成する。
- n=pq, P=p^2, F=φ(P)=P-p を求める。
- (e, F)=1を満たすeをランダムに選択後、ed mod F = 1 より、dを計算する。
- (p+1)^e mod P = a を計算する。
- 公開鍵(a, n)を公開し、秘密鍵(d, p, q)を秘密に所持する。
暗号化
- メッセージを周知の方法で数値mに変えたあと、乱数rを生成する。
- N=n^2 を計算する。
- a^(m+nr) mod N = C
- 暗号文(C)を送る。
復号
- C^d mod P = x を計算する。
- (x-1)/p=m でmを得て、メッセージに戻す。
2014-07-14
鍵生成
素数 p, q。自然数x<q。F=φ(p^2)=p^2 - p。n=pq。P=p^2。(e, F) = 1 → ed ≡ 1 (mod F)。a = (Px + p + 1)^e mod n^2。
暗号化
メッセージ:m。乱数:r。a^(m+nr) mod n^2 = C(暗号文)
復号
{(C^d mod P) - 1} / p = m
2015-06-10
準備
- 2つの相違なる素数、pとqを生成。→ ただし、n=pq。
- pに対する原始根gを選択。
- d = [{g^(p - 1) mod p^2} - 1]/p を計算。
- 公開鍵(g, n) 秘密鍵(p, d)
暗号化
- 乱数 1<r<n^2 を生成。
- メッセージをmとする。→ C ≡ g^m × r^n (mod n^2) を計算。
- 暗号文(C)
複号
- D = [{C^(p - 1) mod p^2} - 1]/p を計算。
- D/d ≡ m (mod p) を計算。