Shammer's Philosophy

My private adversaria

DHとは・・・

DHは、PKIの中で先駆け的な存在(一番最初に考えられた)。
これは非常にシンプルで、単に通信の当事者同士が鍵合意をするだけのアルゴリズム
つまり、通信相手が自分の意としている人であるかどうかはわからない。
実際に今通信している人との間で、何らかの秘密情報を共有できる、というもの。

通常、PKIはそれ自身では使用しない。大抵は鍵交換のみ行い、実際のデータの通信は
その交換した鍵を利用して、何らかのアルゴリズムでデータを暗号化し、当事者が事前に共有していた
秘密鍵でそのデータを複合化する。このDHでは、鍵交換はできるが、相手が誰かを保証する手段がないため、
下手するとman-in-the-middle攻撃を受ける。要するに、全然知らないどこかの誰かが、
自分が通信相手として期待する人になりすましている可能性があるため、相手を認証するための方法と
組み合わせて使う必要があるアルゴリズムである、ということを意味する。

また、DHだけではなりすましを防げない、という点とも関係してくるが、
データの改ざんが行われていてもそれを知る術はない。誰かがなりすましと同時に、
通信内容を改ざんしていても、通信の当事者はそれには気づけない、という問題もある。

これを防ぐためには、DHのみでなく、他の認証アルゴリズムと併用したり、
電子署名アルゴリズムと組み合わせて使用することも考えないといけない。
PKIアルゴリズムの中では、DSAとRSAはこれらも同時に行える。そのため、DHはほとんど使われていないかも。