楕円曲線暗号をなにかに例えると

こんにちは。ゆうせいです。

楕円曲線暗号を説明するとき、「ビリヤードの玉が跳ね回るようなもの」という例えを聞いたことはないでしょうか。直感的で分かりやすい反面、そのまま使うと受講者に誤解を与えます。この記事では、この例えのどこが合っていて、どこがずれているのかを整理し、研修でそのまま使える言い換えまで示します。

結論

ビリヤードの例えは惜しい例えです。一方向性の感覚は伝わりますが、三つの点で誤解を生みます。ただし、隠しているものを「経路」ではなく「突いた回数」に言い換えれば、研修で十分に使える例えになります。より正確に伝えたい場合は、時計の針を使った例えをおすすめします。

楕円曲線暗号の安全性の根拠

まず前提を確認します。楕円曲線暗号では、曲線上にあらかじめ決めた基準点 G を用意します。この点を、決まったルールにしたがって秘密の回数 k だけ足し合わせ、次の点を作ります。

Q = kG

ここで公開されるのは G Q です。秘密鍵は回数 k です。

この計算には、次の性質があります。

  • k が分かっていれば Q は高速に求められる。256ビットの鍵でも数百回程度の演算で済む
  • G Q が分かっていても、k を求める効率的な方法は見つかっていない
  • 最良の一般的攻撃法でも、およそ 2^{128} 回の演算が必要になる

この「掛け算は簡単だが割り算にあたる操作が難しい」という問題を、楕円曲線離散対数問題と呼びます。英語では Elliptic Curve Discrete Logarithm Problem、略して ECDLP です。

ビリヤードの例えが合っている点

楕円曲線上の点の足し算は、幾何学的には次の手順です。

  1. 二つの点を通る直線を引く
  2. その直線が曲線と交わる三つ目の点を求める
  3. その点を x 軸で反転する

直線を引いて交点を求め、反転するという流れは、玉が壁で跳ね返る様子と見た目が重なります。足すたびに点があちこちへ移動し、規則性が見えなくなっていく感覚は、確かにビリヤードのイメージに近いといえます。

ずれている三つの点

論点ビリヤードの例え楕円曲線暗号の実際
秘密にしているもの玉が通った経路何回足したかという回数 k
逆算できない理由物理的なカオス、測定精度の限界効率的な計算方法が数学的に見つかっていない
舞台連続的な平面有限体上の、飛び飛びの点の集合

もっとも重要なのは一行目です。楕円曲線暗号では、曲線の形も、基準点 G も、足し算のルールも、すべて公開されています。k さえ分かれば、誰でも同じ計算を再現できます。隠しているのは経路ではなく、回数です。

二行目も見過ごせません。ビリヤードは物理法則の上で動くため、原理的には時間を巻き戻せば逆算できます。この例えを使うと、「測定精度を上げれば解ける」という誤解につながります。楕円曲線暗号が安全なのは、測定の問題ではなく、計算量の問題です。

三行目は、実際の楕円曲線暗号が連続的な曲線ではなく、有限個の点の集合の上で動いているという点です。グラフで描かれる滑らかな曲線は、あくまで説明用の図です。

修正版の言い方

ビリヤードの例えを活かすなら、次のように言い換えてください。

ビリヤード台があります。玉を突くルールは全員に公開されています。開始位置も公開です。私はそのルールで玉を何回か突き、最後に止まった位置だけを皆さんに見せます。皆さんは同じルールを知っているのに、私が何回突いたのかを当てられません。この回数が秘密鍵です。

この言い方であれば、公開情報と秘密情報の切り分けが正しく伝わります。

より正確な代替案は時計

楕円曲線離散対数問題の構造に、もっとも素直に対応するのは時計です。

文字盤が12まである時計を考えます。針は0時の位置から始まり、一回操作するごとに、必ず5時間分だけ進むと決めます。このルールは公開です。

操作を繰り返すと、針の位置は次のように変化します。

5k \bmod 12

k = 1 のとき5、k = 2 のとき10、k = 3 のとき3、k = 4 のとき8、k = 5 のとき1、というように進みます。

ここで、最後に針が3を指していたとします。あなたは操作回数を当てられるでしょうか。文字盤が12しかないため、何周したかという情報は、針の位置からは完全に消えています。数が小さいうちは総当たりで調べられますが、文字盤の目盛りが 2^{256} 個あったらどうなるか、と続ければ、困難さの本質が伝わります。

この例えの優れている点は次の三つです。

  • ルールが公開されていることが自然に表現できる
  • 一周するたびに情報が失われるという、有限の世界特有の性質が伝わる
  • 秘密が「回数」であることが明確になる

有限の世界をぐるぐる回るため、位置を見ても回数が分からない。これが、有限体上の巡回群という実際の構造をそのまま表しています。

素因数分解との混同に注意

説明の際に素因数分解を持ち出すと、不正確になります。よくある混同なので、研修では明確に区別してください。

方式安全性の根拠内容
RSA素因数分解問題大きな合成数 N = pq から p q を求めるのが難しい
楕円曲線暗号離散対数問題Q = kG から k を求めるのが難しい

両者は別の数学的問題です。同じ安全性を得るために必要な鍵長も異なり、RSAで3072ビット必要な水準が、楕円曲線暗号では256ビット程度で実現できます。この差が、スマートフォンやICカードなど、計算資源の限られた機器で楕円曲線暗号が選ばれる理由です。

なお、量子コンピュータへの耐性を議論する場面でも、両者は分けて扱う必要があります。理論上はどちらもショアのアルゴリズムの影響を受けますが、必要な量子ビット数の見積もりや、移行が検討されている耐量子計算機暗号の議論の前提が変わります。

研修での教え方

新人エンジニア向けにこのテーマを扱う場合、次の順序をおすすめします。

  1. 公開鍵暗号とは何か。鍵を二つに分ける発想を先に理解させる
  2. 一方向性とは何か。計算は簡単だが逆算は難しい、という性質だけを取り出す
  3. 時計の例えで、離散対数問題の感覚をつかませる
  4. 楕円曲線暗号とRSAの違いを表で整理する
  5. 実務での使われ方。TLS、SSH鍵、ブロックチェーンの署名など

所要時間の目安は、演習を含めて60分から90分です。曲線の方程式や点の加算公式に踏み込むのは、対象者が興味を示した場合の補足にとどめてください。

受講者からよく出る質問と、その回答例を挙げます。

質問。ルールが公開されているなら、順番に試せば解けるのではないですか。 回答。理論上は解けます。ただし試す回数がおよそ 2^{128} 回になります。仮に1秒間に1兆回試せる計算機を用意しても、宇宙の年齢では終わりません。安全性とは、不可能という意味ではなく、現実的な時間で終わらないという意味です。

質問。ビリヤードの例えは間違いなのですか。 回答。間違いというより、隠しているものが違います。ビリヤードでは経路を隠したくなりますが、楕円曲線暗号では経路もルールも公開です。隠しているのは回数だけです。

理解度を確認する問い

  • 楕円曲線暗号において、公開される情報を三つ挙げてください
  • 秘密鍵にあたるのは何ですか
  • RSAと楕円曲線暗号は、それぞれ何の問題の難しさに支えられていますか
  • 同じ安全性を得るとき、鍵長に差が出るのはなぜですか

まとめと次の学習ステップ

ビリヤードの例えは、隠しているものを「経路」から「突いた回数」に言い換えれば使えます。より正確さを求めるなら、時計の針を使ってください。有限の世界を回り続けるため、位置から回数が復元できない。この一点が、楕円曲線暗号の安全性の核心です。

次に学ぶなら、鍵交換の仕組みに進むとよいでしょう。二人が秘密の回数をそれぞれ持ち、公開された点だけをやり取りして、同じ共有鍵にたどり着く手順です。この記事で扱った Q = kG という関係が、そのまま応用されます。

その先には、電子署名の仕組み、そして耐量子計算機暗号への移行という話題が続きます。暗号の勉強は積み上げが効く分野です。一つずつ順番に進めてください。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
海外放浪の末、2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。