DTCPIP 入門の前に、その4、 楕円曲線暗号を一言で説明すると”割り算ができない”数を利用した暗号

The specification を読んでいると、4.4.3 章でいきなり楕円曲線暗号が出てきて挫けてしまわれたかたもいらっしゃるのではないでしょうか。

RSA の理屈はよくしっているんだけど楕円はどうも、という方も多いのではないでしょうか。
また、最近では楕円曲線暗号だけを取り扱った日本語の本も手ごろな値段ででているのですが、買ってきて読み始めて途中で嫌になって投げ出された方もいらっしゃるのではないでしょうか。

私も数学科出身者ではないので、数学的な厳密性をすべて犠牲にして大胆に10秒で説明してしまうと、「掛け算はできるのだけれど、割り算が不可能」という大変都合のよい数(体)が存在する、というところがこの暗号の味噌というか肝になっております。

解説書にはこの数(体)上での足し算、掛け算の幾何学的な意味が解説してあるものもありますが、これもあまりわかりやすくないかもしれません。もっと大胆に言ってしまうと、この数体上での足し算、掛け算を変な形の回転みたいなものを想像してみてください。ある点を100回でも1000回でもぐるぐる回すことはできる。しかし、ある点は別の点から何回まわした結果(割り算)なのかは分からない、というイメージしていただければ納得できますでしょうか。

この数体を利用して、Alice と Bob(の二人の名前を出すと話が暗号のプロっぽくなります)は以下のようにして秘密鍵を共有することができます。

1. 楕円曲線の形と回転の原点(0でも1でもないもの)Pが仕様で万民に共有されている。
2. Alice は乱数 a を思いつき、掛け算の結果 aP をノンセキュアなインターネットを通じて Bob に渡す。
3. Bob も乱数 b を思いつき、同じように bP を Alice に渡す。
4. Alice は Bob から受け取った bP に自分の a を掛けて共有鍵 abP を得る。
5. Bob は Alice から受け取った aP に自分の b を掛けてbaP(回転なので交換則が成り立つ)= abP を得る
6. 盗聴していた第三者は aP, bP, P を知っても、割り算ができないので abP を入手できない、つまり abPP から P を割れない。

上記のようにディフィー・ヘルマン鍵共有アルゴリズム楕円曲線だとRSAより実は簡単なんですね。

尚、もし数学的に厳密に(なぜ3点は有理点になることが保障されるのか、なぜ体になることが証明できるのか云々)しりたいというかたには、多分、一番よい資料はちょっと高いのですが、IEEE P1363 の仕様書自体だとおもいます。この仕様書は凄くて、全体200ページ強のうち、最初の70ページほどが仕様の定義で、つぎに Annex A として 100 ページほどつかって数学的バックグラウンドをものすごく丁寧に、しかも前提知識を仮定せずにかいてくれているようです。私はまじめに読んでないですが。そしてのこりは実際につかう場合の注意点などがかいてあります。まじめに(私はまじめではないですが)勉強するには大変よいドキュメントなので私はエンジニアに読むことを進めています。

言及した仕様へのリンクは以下です