総合テストベッドインタビュー Vol.002
「114ビット位数の楕円ペアリング暗号に対する大規模解読実験」
教授/野上 保之(のがみ やすゆき)氏 講師/日下 卓也(くさか たくや)氏 <左から>
第2回インタビューでは、IoT時代の次世代暗号といわれている高機能暗号「楕円ペアリング暗号」の研究でStarBEDを利用いただき、2017年8月に安全性評価で"世界一"を樹立された岡山大学の野上教授と日下講師にお話を伺いました。
<インタビューのポイント>
●「楕円ペアリング暗号」と研究のポイント
●今回の実験にStarBEDを選んでいただいた理由と実際のメリット
●今後の研究の方向性とStarBEDの役割
1. IoT時代の次世代暗号「楕円ペアリング暗号」*1と今回の実験背景
― インターネットで使われるRSA暗号に比べて格段に鍵長(bit)が小さく、IoTデバイスでも使える軽い暗号 ―
───基本的な質問になりますが、機密情報保護の暗号技術としてよく聞くRSA暗号と「楕円ペアリング暗号」はどう違うのでしょうか?
日下講師(以下、日下):RSA暗号は「巨大な2つの素数の積を求めるのは簡単だが、それを素因数分解するのに非常に時間がかかり、困難である」ことを利用した暗号で、40年以上の歴史を持ち、インターネットでもよく使われています。それが楕円曲線暗号、楕円ペアリング暗号に変わりつつあるというのが、野上教授の視点です。
野上教授(以下、野上):楕円ペアリング暗号は、楕円曲線暗号を利用した高度な暗号(【図1】を参照)ですし、右図に示すように楕円曲線離散対数問題を含む4つの数学的・計算量的な問題の困難性によってその安全性が担保されていますから、まずはRSA暗号と楕円曲線暗号の違いについてお話します。RSA暗号は素数の積が巨大なことがポイントですが、暗号化処理に用いられる暗号鍵の大きさ「鍵長」が2000bit~ぐらいないと安全性を担保できないと言われています。これに対して楕円曲線暗号は160bit~で同じ安全性を担保できるんです(【図2】を参照)。実際どれぐらいの大きさが違うのかをみるためにbit数を10進数に換算*2してみましょう。2000bitは約10600 つまり600桁の数字、160bitは約1048 で48桁の数字になりますから、bit数では10倍ぐらいの違いに見えますが、両暗号の鍵長はなんと「0」が552個つく数字の倍数ほども違うのです。IoTデバイスのマイコンは16bitや32bitぐらいなのでRSA暗号は重くて全く利用できませんが、楕円曲線暗号なら十分利用可能ですから、IoT時代に必要な暗号技術と言えます。とはいえまだそれなりに重いので、本当はどこまでのbit数なら攻撃され、どこまでなら安全なのかを調べようとしたのが今回の実験です。
───素因数分解の困難さを利用したRSA暗号に対して、短い鍵長で安全性を担保できる楕円曲線暗号は、何の困難さを利用しているのですか?
日下:まず楕円曲線という言葉自体がわかりにくいですよね。左の【図3】に示すようなy2=x3+ax+bという数式のグラフで、楕円と曲線が組み合わさったものを指しています。見慣れないグラフですが、aとbの定数が決まっていれば、xに数値を入れてそれを満たすyを計算しながら座標点をプロットすれば高校生でもこういう曲線を描けます。しかし、この座標点は実数ですが、このうち整数のみの点=有理点*3だけを探そうとすると一気に難しくなります。さらにその有理点Pについて楕円曲線上で楕円加算*4を繰り返すと、【図4】のように加算結果の座標点2P 3P・・・sPが順番にきれいに並ばずバラバラな位置に離散するので、PとsPがわかっていても、それがs番目という数値を求めるのは非常に困難です。これらの困難さを楕円曲線離散対数問題、Elliptic Curve Discrete Logarithm Problem(略称:ECDLP)と言い、これにより暗号の安全性を保証しています。
───難しいですが、雰囲気は少しわかったような感じです。では、いよいよ2017年に世界一を達成された「114bitECDLP攻撃実験」の内容を教えてください。
日下:野上先生の話にもありましたが、今、160bit~の楕円曲線暗号なら実用的で安全と言われています。この暗号技術の実用化に向けて、実際に攻撃してみて本当はどこまでのbit数なら攻撃され、どこまでなら安全なのかを調べたいと考えました。今回の私たちの実験では、「y2=x3+3(定数a=0、b=3)」という楕円ペアリング暗号にも使われる形の楕円曲線を対象に114bitの楕円曲線離散対数問題(ECDLP)に限定し、有理点をランダムに生成してすべてを記憶しながら、任意に決めた楕円加算結果と一致(衝突)する有理点「sP」の座標点を探す、衝突攻撃手法を行いました。
限定と言っても114bitですから、2114=(210)11.4=(1024)11.4≒(103)11.4≒1034個の有理点の中から探す必要があるんです。この座標点の(x,y)が暗号の鍵になるので、鍵を設定する側はその座標点を適当に1つ選ぶだけですが、鍵を探して攻撃する側はこんな膨大な1034個もの座標点を記憶しながら1つを見つけていくわけですから、既存のコンピュータでは気の遠くなるような不可能な話です。
野上:ややこしいでしょう? そんな小難しい楕円加算の結果を膨大な有理点の中から見つけようとしたって、一致させるのは難しい。つまり、コストも時間もかかるから安全なんです。
日下:でも世の中にはハッカーのような悪い人がいて、いろいろな方法で安全性を破ろうとする。ランダムに有理点を生成するには並列して計算できますし、さらに実験・経験的に正しいと考えられている『並列rho(ギリシャ文字のρ:ロー)法』という効率的な手法を使うと、この場合なら「5×1016個程度*5の有理点を生成し、そのうち108個程度の記憶をすることで攻撃を成功させることができる」ということも知られています。1034個と比べると桁違いに減りますので、私たちもこの方法を利用して「114bit ECDLP攻撃実験」をする計画を立てました。
この実験をするにあたり並列計算をするため多くのコンピュータが必要となり、当初は岡山大学だけでなく北九州市立大学とも協力していましたが、とても足りませんでした。そんなとき、NICT総合テストベッドの担当者と話をする機会があったんです。
野上:その担当の方はもともと「次世代IoTテストベッドを考える上でセキュリティは無視できないので、コメントやアイデアを聞かせてほしい」ということで私のところにいらしたんです。そこで「ECDLP攻撃実験」について紹介しつつ、コンピュータが足りないという話をしていたら、「私たちの『NICT総合テストベッド』の中には、"StarBED"という1000台規模のPCサーバで構築されたテストベッドがある」というお話が出たので、もしかしたら攻撃実験ができるかもしれないと考えたわけです。
日下:それで「ぜひ使わせてください」ということで相談が始まったのですが、人と人がつながるとこういうチャンスにつながるんですね。
RSA暗号や楕円曲線暗号と同様、機密情報保護のための暗号技術「公開鍵暗号」の1種。楕円曲線暗号を高度に拡張して実現される暗号であり、IDベース暗号(メールアドレスなどで認証可能)、検索可能暗号(データを暗号化したままでのキーワード検索が可能)、匿名認証(個人情報を介さずにユーザを認証可能)などが実現できるなど、クラウドに適した次世代暗号技術としてIoT機器への実装が期待されている。楕円離散対数問題を含む4つの数学的・計算量的な問題の困難性によってその安全性が担保されている。
*2:bit数を10進数に換算
bitは2進数なので、2000bitは22000と表せる。つまり、
(210)200=(1024)200≒(103)200=10600
となり、10進数で約600桁の巨大な数字だということがわかる。
同様に160bitは2160と表せるので、
(210)16=(1024)16≒(103)16=1048
となり、10進数では約48桁の数字になる。
*3:有理点と有理数
各座標の値が全て有理数であるような空間の点を言う。有理数とは実数のうち、整数または分数の形で表せる数の総称。
*4:楕円加算
楕円曲線の2つの有理点PとQに対して、その2点を通る直線は楕円曲線と3点目R’で交わる。そこを通る直線の傾きも有理数となり、点R’も有理点になる。また、楕円曲線の式からグラフはx軸に対して対称となることから、点R’をx軸で ひっくり返した点Rも有理点となることがわかる。以後、このように得られた点Rを、「R=P+Q」と書くこととする。ここで+記号を使っているが、普通の有理数の足し算という意味ではなく、2つの有理点PとQに対して、新しい有理点Rを対応させる操作という意味を表す。これを楕円加算という。
*5:並列rho法を用いる場合に必要となる時間(計算量)は、楕円曲線の有理点の総数rに対する平方根に比例することが知られている。
つまり、114bitの有理点数は約1034個だが、実際にはその平方根にある定数をかけた55,949,787,111,122,966=5×1016個程度の有理点を生成すればよいと考えている。
2. StarBEDのPCサーバを使った「114bit ECDLP攻撃実験」とそのメリット
― StarBEDは自由度の高さが魅力。StarBEDのスタッフと打合せし、疎結合タイプの並列スパコンとして運用! ―
───楕円曲線暗号の安全性を調べるための「114bit ECDLP攻撃実験」には、実際、StarBEDが持つ約1000台のPCサーバのうちどのくらいを使われたのですか?
日下:当初StarBED設備*6のうちグループIとグループKをお借りしたのですが、このノード1台で試験プログラムを走行させたところ、実測値で1秒あたり73,209,673個の有理点を生成できることが確認できました。そこで「200台程度を常時使うと14,641,934,600個の有理点を生成できるので、44日程度で攻撃が成功する*7だろう」と想定したのです。1年以上も前、2017年の話です。でも実際は、「114bit ECDLP攻撃実験」の成功に約88日を要しました。ただPCサーバが1台以上動いていたのは77日しかなく、保守メンテナンスや事故などで完全に止まっていたときもありましたので、200台をフルパワーで使用したと換算すると「62日で攻撃成功」という計算になります。実験成功後で細かいパラメータを盛り込んで検算したところ、この62日というのは平均的な時間であるということも検証できました。
───200台をフルパワーで使って攻撃しても、成功までに実質62日間もかかるんですね。でも、どうして攻撃の成功が安全性の保証になるのですか?
日下:この攻撃実験は、成功してウィキペディアで「世界初」と認められて喜ぶことが目的ではありません。StarBEDのグループIと同等のノード200台をフルパワーで使って攻撃する者がいた場合でも、現在実用的と言われている160bitの楕円曲線暗号への攻撃は114bitと比べて100万倍を超える難しさ*8ですから、62日間≒2か月の100万倍と考えると10万年以上かかる計算になります。ましてや、昨今使用を求められることが多い256bitの楕円曲線暗号の場合は160bitと比べて100兆倍の難しさ*9になるので、10万年の100兆倍と天文学的な数字の時間がかかることになります。このことから、「StarBEDクラスのPCサーバ200台を使ってフルパワーで攻撃したとしても、160bitや256bitの楕円曲線暗号の安全が担保できた」ということが、本来の我々の実験結果です。
野上:ちなみにウィキペディアにもこの成果が掲載されているのは、自分達で勝手に書き込んだわけではなく、学術的な情報や論文を添えて結果を提出しているので、楕円曲線暗号の研究者コミュニティが認めてくれたからだと思っています。
───160bitの楕円曲線暗号解読に10万年。256bitの場合なら160bitと比べてその100兆倍かかるわけですから、現状では10万年の100兆倍もかかる計算ですね。地球の歴史46億年よりも格段に長くかかりますから、十分安全だと思えます。
日下:はい、当面は軍事情報でも大丈夫です。ただPCの能力はどんどん進歩しますから、人のゲノム情報など子々孫々まで秘匿しなければならない遺伝情報のセキュリティに対しては、完全に安全とは言えません。しかし、IoTではそこまでターゲットにしていないので、今回の実験結果により、「鍵長が256bitの暗号でIoTで扱うぐらいの情報に対してなら、全く問題ない」ことが確認できたわけです。
野上:これをRSA暗号で同じ位の安全を担保するには3000~4000bitぐらいの鍵長が必要ですから、例えば腕時計のようなIoTデバイスで血圧や脈拍を随時測定しスマホに転送しようとしても、暗号処理に時間がかかりすぎてしまいます。RSAはIoTには向かない暗号ですね。
日下:RSA暗号の場合、表層的には桁数が大きいので、「利用者にとっては重く、時間がかかる」のですが、ベースとしている数学やその安全性を支える因数分解問題はシンプルなもので、攻撃者にとってはトライし易いものです。これに対して楕円曲線暗号の場合は256bitなので利用者は軽いですが、1つ1つの有理点を計算から導くために足し算・引き算・掛け算を複雑に交えて行わなければならず、攻撃者にとっては面倒で大変なんです。
───StarBEDはこれまでエミュレーションやシミュレーションに適した設備という印象でしたが、今回の実験ではどのような使い方をなさったのですか?
野上:StarBEDのリソースを初めて計算機としてフルに活動させた実験例ではないかと思います。
日下:つまり本来のStarBEDとは違う、かなり特殊な使い方です。それを「いつもとは違うが、ユーザの使い方にできるだけ沿うようにする」というスタンスでStarBEDのスタッフの方たちに対応していただいた結果、疎結合*10タイプの並列型スーパーコンピュータ*11として運用できるようになり、大変ありがたかったです。
もともとStarBEDは各ユーザの希望するエミュレーションやシミュレーションで使うために自由度の高い汎用テストベッドだったのですが、私たちにはそれがとても魅力的でした。アプリケーションはもちろん、ハードウェアの構成も自由ですし、OSも利用者が管理・運用できるので、ユーザの努力次第でなんでも可能なのです。通常はサービス提供側が構築したシステムの作法に従ったアプリケーションの構築とジョブの管理・運用が求めれらるものですが、StarBEDの場合はそのような制約は全くありませんでした。これはとても良かったですね。
───「自由度の高い汎用テストベッドが魅力的」とのことですが、その分、200台のPCサーバを使うシステム構築は大変だったのではないでしょうか?
日下:使う前にはStarBEDのスタッフの方としっかり打合せをしましたので、おかげで200台のPCサーバをコントロールするための会話がスムーズに進みました。実際にStarBED設備を確認するために北陸StarBED技術センターにお邪魔したのはなんと1回だけ。あとはメールと電話での打合せで、StarBEDのノードを利用する準備ができました。
野上:普通、1回ではすまないと思いますよ。日下先生がこういう仕組みの制作に慣れているスーパーマンだったし(笑)、StarBED側のアシストが良かったからだと思います。
日下:「114bit ECDLP攻撃システム」の実装については、サーバノード*12を1台構築し、ディスクレスのNFSクライアント200台を収容するサーバクライアント型の設計としました。このシステム構築の手間は、「1台のサーバノード構築」と「1台のクライアントノード用NFS提供ファイルシステム構築」という事実上2台分のノード構築だけなので、ファイルの転送時間を除いて、正味1日で完了しました。
───全部で200台以上を運用する攻撃システムなのに、ノード構築は2台分だけ。しかも1日で実装完了とは驚きの早さです。他のノードはどのように運用したのですか?
日下:はい、私たちの実装は1日で大丈夫でした。通常の実装で考えると、最初に200台のハードディスクにOSや必要なシステムを1つずつコピーして記憶させる作業があるので、200倍の日数がかかると思います。しかし私たちの場合、残りの200台は全てディスクレスなので、当然何も記憶させません。その代わりシステム運用にあたっては、サーバノードの電源を投入するときに1ギガビットのイーサネット経由・リモートshellベースでクライアントに情報を転送する設計*13にしました。ですから、1台あたりはほんの数秒、200台全てのノードでも10分程度で利用できるようになります。
───StarBED側にあるノードにリモートで情報を転送するということは、岡山大学ですべて運用できる仕組みなんですね。
日下:はい、下の写真のような「FortiClient Console」を使って北陸にあるStarBEDとインターネット経由で安全につないでいます。実際に管理・運用を行っているPCは別の部屋(右写真を参照)にありますが、この画面はそれを呼び出して見ていただいています。今回の実験ではStarBEDノードに岡山大学側から情報を転送するだけでなく、StarBED側サーバにある計算結果を継続してずっと岡山大学側に収集する必要があるため、双方向のSSLトンネリング*14という技術を使った仕組みも作成しました。各クライアントでは攻撃プログラムをスクリプト処理とrshコマンドを使って半自動で制御しつつ、非常時にはcronにより全プログラムが自動停止する設計です。また「FortiClient Console」の裏側にある黒い画面において、各ノードの状況も確認できますし、コマンドを入力してクライアントノード1つずつの電源をON/OFFするだけでなく、200台全部の操作やノードの増減も簡単に実行できますから、保守管理にもコストがかかりません。
───効率的なシステムです。StarBED側にある200台で有理点を並列計算させて、その結果を岡山大学側のPCサーバに収集しているということですが・・・
野上:先ほどもお話した並列rho法を利用しているので、「114bit ECDLP攻撃実験」ではStarBEDのNFSクライアント200台を並列に使って約5×1016個の有理点を生成し続け、そのうちの約108個だけを1台のサーバノードに記憶させています。それ以外はボロボロ捨てているんです。
日下:そして、StarBED側のサーバノードに記憶させた計算データは転送量も大きくないので、岡山大学側のサーバに自動収集し、ここで暗号解読のための衝突判定を行っているのです。これが「114bit ECDLP攻撃実験」の仕組みです。先ほどもお話をしましたが、StarBEDを利用する以前、2016年頃から北九州市立大学と協力して両大学のサーバを使って実験していたので、衝突判定のサーバは岡山大学に置く設計にしていたからです(上の【図5】参照)。
───実験を始めた当初は計算用のノードが足りなかったというお話でしたね。
日下:はい、野上先生が実験を開始してから攻撃成功までの日数は716日、その後他大学からお借りしてからの実験日数でも451日です。つまりStarBEDの設備が使用できていなければ、まだ攻撃は成功していなかったことになります。それくらい難しい問題なんです。
StarBEDをお借りできたおかげで「114bit ECDLP攻撃実験」に成功したというのが真相です。ありがとうございます。
*6:StarBED設備の詳細については、以下ページで確認できる。
【「StarBEDの設備構成」ページ】
*7:並列rho法を用いて算出した有理点55,949,787,111,122,966個を200台のPCサーバを使って生成する時間を計算すると、55,949,787,111,122,966個÷14,641,934,600個≒3,821,201秒。この秒数を日数に換算すると、
3,821,201秒÷(60秒×60分×24時間)≒約44日となる。
*8:生成する有理点の差は
2(160-114)=246=(210)4.6=(1024)4.6≒(103)4.6≒1013倍となる。このとき実際解読にかかる時間は、この数値の平方根になるので、106.5倍となる。これを少なめに見て106倍=100万倍という計算をしている。
*9:*8と同様に計算すると、生成する有理点が 2(256-160)=296=(210)9.6=(1024)9.6≒(103)9.6 ≒1028倍となり、実際解読にかかる時間は平方根となるので、1014倍=100兆倍という計算になる。
*10:疎結合
情報システムにおいて、2つのシステムが緩やかに結びついた状態。システム同士が標準的なインターフェースに基づき接続されているため、一方が他方を容易に取り替えられる状態をいう。対義語は「密結合」。
*11並列型スーパーコンピュータ
クラスタ型の並列・分散計算機を指している。
*12:このサーバノードは、FreeBSD/amd64を用いてPXEboot対応のDHCP、TFTP、DNS、NFS、RSH、SSHサーバ機能を有している。
*13:常識的には200台のNFSクライアントを「12コアCPU/40GB主記憶/500GBのHDD/1GbitのEthernet」のサーバノード1台に収容する設計は機能しないと考えるが、ECDLPの攻撃システムでは実際有効に機能する、極めて妥当な設計といえる。
*14:SSLトンネリング
サーバ公開ルールを使い、以下のようにクライアント/サーバ間で暗号化されたSSLトンネルを確立し、双方向で安全に情報をやり取りすることが可能となる。
3. 今後の研究の方向性とStarBEDの役割
― 次の目標は新しいタイプの安定したStarBEDノードだけで、2019年中に「116ビットでの解読」で世界一を達成 ―
───StarBEDとしても、世界初の「114bit ECDLP攻撃実験」成功に貢献できてありがたいお話です。
日下:実は私もStarBEDのお話を聞くまでは、この実験の成功は難しいなぁと考えていました。でもStarBEDの持つPCサーバの規模をお聞きして、ようやくできそうな気がしたんです。
野上:大規模なサーバ群を持つ商用サービスを使えばできますが、これを使うとすると攻撃成功まで数千万円~1億円弱はかかってしまうと思いますので、とても使えません。StarBEDは国立研究開発法人 情報通信研究機構(NICT)が持っている設備ですし、日本の研究者をサポートしてくれるというお話を伺ったので、ぜひ使わせていただこうと思いました。
日下:実際に使わせていただいた結果の結論として、StarBEDはハードウェア・ネットワーク・ソフトウェアの自由度の高い点が我々の実験に非常にマッチしていたと言えると思います。
───StarBEDの大規模なサーバ群と自由度の高さが今回の実験にマッチしていたわけですね。先ほども拝見したように、成功後も実験を続けられていますが、現在はどのようなことをなさっているのでしょう?
日下:2017年の114bitのECDLP攻撃実験成功の後も、各種確認のためにECDLPの実験を続けています。ただし114bitだと62日間かかってしまいますので、112bitに落としてECDLPの検証実験を行っています。
野上:鍵長をたった2bit落としただけですが、有理点数は1/4になります。並列rho法の実行時間はその平方根の1/2となりますので、実験期間も半分の1か月間になります。1か月なら検証実験を何度も実行することが可能ですから、実験手法や合理的根拠など仮説を立てながら論理的に整理ができるのです。実は今までやってきた実験、例えば2014年に他大学が攻撃成功した113bitの例*15などを見ても、「何をどうして、こう破ったという情報」がないのです。こういう論法で検証しているのは、日下先生が初めてじゃないかと思います。
日下:1回だけの成功なら、ラッキーパンチの可能性も考えられます。そこでたくさん実験をして根拠を整理するため、鍵長を小さくして実験を繰り返しています。でも鍵長を64bitぐらいに落としすぎると問題が簡単すぎて、本当かどうかわからない。それで112bitで実験しています。おかげさまで良い結果が得られつつあります。それをもとに、次は「116bit ECDLP攻撃実験」の成功に向け、計画を策定しているところです(【図6】を参照)。
───興味深いお話です。112bitで何回も攻撃実験を行って検証をしながら、次の世界一を目指して「116bit ECDLP攻撃実験」の計画を着々と進められているんですね。目標はいつ頃でしょう?
日下:「116bit ECDLP攻撃実験」の開始後、1年以内を予定しています。たぶん2019年度中には、発表できるのではないでしょうか。この実験が計画通りに完了すると、「ハードウェアとソフトウェアの進歩を盛り込んだ場合でも、楕円曲線暗号はまだまだ安全である」ということを実証することができます。
───「世界一の更新、再び」、楽しみです。
日下:そのためには、ぜひStarBEDさんのノードをあと100台ぐらい追加でお借りして、StarBEDの設備だけで「116bit ECDLP攻撃実験」を成功させたいと考えています。この実験には今まで以上に電源が安定していることが重要となりますから、現在主に利用しているグループIより導入時期が新しいグループのノードで実験を進めていきたいです。ぜひよろしくお願いします。
───次の世界一のECDLP攻撃実験は「StarBEDのノードだけを使って成功させたい」ということですね。今日は難しい内容がたくさんありましたが、夢が膨らむIoT時代の暗号技術のお話を伺えて楽しかったです。
今後ともよろしくお願いいたします。
<2018.12/岡山大学 工学部(情報セキュリティ工学研究室)にてインタビュー>
【総合テストベッド/StarBEDに関するお問合せはこちら】
tb-info[アット]ml.nict.go.jp
*15:113bitの成功例
岡山大学の攻撃成功以前に解読できた最大の大きさとしては、探索対象の個数を2113(113ビット、10進数で34桁ほど)を持つ楕円曲線離散対数問題の解読に成功したという報告がある(2014 年、Erich Wenger, Paul Wolfger, Graz University of Technology)。