*目次 [#jb0e0a76]

#contents

*宣伝 [#g266a185]

 当サイトにおける暗号に関するページでは、説明が足りなかったり、誤った記述をしていたりするところがあります。今後、少しずつ修正する予定です。~

 暗号理論の『暗号技術のすべて』が発売されています。初心者向けの暗号本です。これまで暗号本に何度か挑戦しつつも挫折してしまった方、学校の課題で悩んでいる方、資格試験にて暗号の問題が苦手な方などにお勧めです。

[[&ref(http://s-akademeia.sakura.ne.jp/main/books/cipher/img/cover_mini.jpg,nolink,『暗号技術のすべて』宣伝サイト);>http://s-akademeia.sakura.ne.jp/main/books/cipher/]]

 興味がある方は[[宣伝サイト:http://s-akademeia.sakura.ne.jp/main/books/cipher/]]を参照してください。[[Amazon:https://www.amazon.co.jp/dp/4798148814/securityakade-22]]でも発売中です。


*DH鍵共有プロトコルの方式 [#i59f6122]

[1]ネットワーク公開情報

 ネットワーク全体で共通に使用する情報として、ランダムに生成された素数pとZSUB{p};SUP{*};の原始元gが公開されていると仮定する。

[2]鍵生成アルゴリズム

・アリスは0≦a≦p-2となるaをランダムに選び、ySUB{A};=gSUP{a}; (mod p)を計算する。

[補講]ZSUB{p};={0,…,p-1}(要素がp個)、ZSUB{p};SUP{*};={1,…,p-1}(要素がp-1個)である。つまり、0≦a≦p-2は、0からカウントするのでp-1個で一致している。

 次に、ySUB{A};を公開鍵として公開し、aを秘密鍵として秘密に保持する。

・ボブは0≦b≦p-2となるbをランダムに選び、ySUB{B};=gSUP{b}; (mod p)を計算する。

 次に、ySUB{B};を公開鍵として公開し、bを秘密鍵として秘密に保持する。

[3]鍵共有アルゴリズム

・アリスは自分の秘密鍵aとボブの公開鍵ySUB{B};を入力として、次を計算する。

&mimetex("K_{A}=\( y_{B} \)^{a} \, \( mod \, p\)");

・ボブは自分の秘密鍵bとアリスの公開鍵ySUB{A};を入力として、次を計算する。

&mimetex("K_{B}=\( y_{A} \)^{b} \, \( mod \, p\)");

 ここで、K=gSUP{ab}; (mod p)とおくと、K=KSUB{A};=KSUB{B};となる。

 よってアリスとボブは秘密鍵Kを秘密に共有できる。

#img(http://s-akademeia.sakura.ne.jp/main/image9/K.jpg)
#img(,clear)


*DH鍵共有プロトコルに関する仮定 [#j5c7c435]

 DHの鍵配送における公開情報はp,g,ySUB{A};(=gSUP{a}; mod p),ySUB{B};(=gSUP{b}; mod p)である。

 敵はこれらからK=gSUP{ab}; (mod p)を求めようとする問題を''CDH問題(Diffie-Hellman Problem:DHP)''と呼ぶ。すなわち、DH問題とは素数p、ZSUB{p};SUP{*};の原始元g,gSUP{a};∈ZSUB{p};SUP{*};,gSUP{b};∈ZSUB{p};SUP{*};が与えられたとき、gSUP{ab}; (mod p)を求める問題である。

#img(http://s-akademeia.sakura.ne.jp/main/image9/dh.jpg)
#img(,clear)

 pが十分に大きいとき、DH問題を解く効率的((多項式時間で解けること))なアルゴリズムは見つかっていない。DH問題を解く効率的なアルゴリズムが作れないという仮定を''[[CDH仮定]]''という。


*参考文献 [#k84f815f]

-『現代暗号の基礎数理』