« 軍鶏三昧 | トップページ | ハードディスク分解・破壊(1) »

2009-12-13

メモ―暗号とハッシュ

容易に解釈できるデータを「平文」と、当事者以外による傍受、データ改竄、なりすまし行為が可能な通信経路を「ネットワーク」と呼ぼう。

平文を解釈できない別のデータに変換する。この別のデータを平文に再度変換できる方法もあるとする。このような場合、解釈できないデータを「暗号」、前者の変換を「暗号化」、後者の変換を「復号化」と呼ぶ。このような変換操作により先のエントリーに掲げた「C) 情報が当事者以外の手に落ちても解釈できないように工夫する」ことができる。

平文からずっと短いデータを生成する。情報量がはるかに減少しているので平文に戻すことはできない。しかし、少し修正された平文からはまったく異なる短いデータを生成する。複数の平文からまったく同一の短いデータが生成されることは在り得るものの、そのような平文は相互にまったく相関を持たないほどに異なる。このように生成された短いデータを「ハッシュ」と呼び、先のエントリーに掲げた「D) 改竄を検知する仕組み」や「F) 確かに意図している相手であることを確認する」ために用いられる。

現在の暗号化・復号化は、皆が同一の方法を用いていると言ってよい。しかし、ある者が暗号を生成しても誰もが復号化できてしまうようでは意味がない。そこで、個々の操作を特徴付けるようなパラメーター、つまり「鍵」が必要となり、議論の焦点は鍵の安全性に移る。

暗号化においてある特定の鍵を用いたら、ある特定の鍵でしか復号化できないことが必要である。暗号化する送信者と復号化する受信者の間では、用いる鍵の何らかの交換が必要となる。暗号化と復号化で同一の鍵を用いる方法は「共通鍵方式」と呼ばれ、異なる鍵を用いるものは「公開鍵・秘密鍵方式」と呼ばれる。

共通鍵方式だと、ネットワークを通じて両者で鍵を交換する時に危険に晒される。公開鍵・秘密鍵方式はこの困難を解決したもので、誰もが知る公開鍵で暗号化して送信し、受信者のみが知る秘密鍵で平文に復号化する。受信者が予め公開鍵と秘密鍵の対を作成し公開鍵のみを送信者側に送っておく操作が鍵の交換となる。秘密鍵だけは漏れてはならないが、これが守られれば、鍵の交換はネットワーク上でも安全に行える。

秘密鍵で暗号化したデータを公開鍵で復号化する操作もある。

公開鍵を知る者は誰でも平文を得られるので一見したところ何のご利益があるかわかりにくい。しかし、ハッシュの生成と組み合わせると改竄やなりすましの防止に使える。

平文を作成した送信者は、まずハッシュを生成し、そのハッシュを自身の秘密鍵で暗号化する。そして、平文と暗号のハッシュをセットにして受信者へ送る。受信者は手元で平文からハッシュを生成し、また、ハッシュの暗号を公開鍵で復号化する。これら2つのハッシュが一致すれば良し、一致しなければネットワーク上で当事者以外の「悪者」が介入したことを検知できる。

平文がネットワーク上で悪者に改竄された場合、受信者が手元で生成するハッシュと、正規の送信者から送られたハッシュの暗号を復号化したものは一致しない。悪者が正規の送信者になりすましてニセの送信を行う場合、悪者が生成するハッシュと受信者が手元で生成するハッシュは同一になろう。しかし、悪者がハッシュを送信するとき、あてずっぽうの秘密鍵で暗号化せざるを得ない。そうすると、やはり受信者が手元で生成するハッシュと、受信したハッシュの暗号を正規の送信者の公開鍵で復号化したものは一致しない。

このように、アルゴリズムの観点からは、改竄防止となりすまし防止は同一の手法である。この目的のために送信者が行う上述の一連の操作は「署名」と呼ばれる。ただし、正規の送信者の公開鍵を適切に受け取ることが重要である。

« 軍鶏三昧 | トップページ | ハードディスク分解・破壊(1) »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/546773/46997591

この記事へのトラックバック一覧です: メモ―暗号とハッシュ:

« 軍鶏三昧 | トップページ | ハードディスク分解・破壊(1) »