0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

数学的に安全な暗号が寿命を迎える2つの理由【CySec復習ログ#7】

0
Last updated at Posted at 2026-07-20

はじめに

少し前の私は、TLS 証明書や SSH の鍵を作るとき、鍵長を選ぶ画面で「大きいほうが安全なんでしょう」と、いちばん大きい値を選んで満足していました。RSA-2048 や AES-256 という数字を見て「ビット数が大きいから当分大丈夫」と思い込んでいたのです。

そのころの私には、説明できないことが2つありました。1つは「数学的に正しいはずの暗号が、なぜ寿命を迎えるのか」。もう1つは「サイドチャネル攻撃とは結局、暗号の何を破っているのか」です。「暗号が破られる」と聞くと、私はいつも「アルゴリズムにバグ(脆弱性)が見つかったのだろう」と考えていました。ところが実際の暗号の世界は、それとは違う言葉で寿命を語ります。

この記事は、CySec(東京電機大学が提供する社会人向けのサイバーセキュリティ教育プログラム「国際化サイバーセキュリティ学特別コース」)で学んだ内容を、自分の言葉で再構成した復習ログです。本シリーズの通し番号では #7 にあたります。想定読者は、少し前の私と同じく「RSA-2048 や AES-256 を鍵長の数字だけで『当分安全』と思っていて、数学的に正しい暗号がなぜ寿命を迎えるのかを説明できないエンジニア」です。

この記事の軸になる見方を、先に1行で書いておきます。

暗号は「脆弱性」ではなく「危殆化」する。数学が安全でも、計算機の進化(理論)と実装の隙(物理)という2つの外的要因で寿命が来る。

結論を先に3点でまとめておきます(TL;DR)。本文はこれをほどいていく形です。

  1. 暗号が安全でなくなることを、暗号の世界では「脆弱性」ではなく「危殆化」と呼ぶ。 脆弱性が「もともと持っていた弱さ」なら、危殆化は「外的な要因で、後から安全性が削れていくこと」です。
  2. 第1の軸は理論的危殆化(計算機が暗号に追いつく)。 素因数分解のアルゴリズムは数十年大きく変わっていませんが、計算資源は伸び続け、量子コンピュータがそれを早めます。だから鍵長の数字には賞味期限があります。
  3. 第2の軸は実装的危殆化(数学は無傷でも物理で漏れる)。 消費電力や処理時間から鍵を盗むサイドチャネル攻撃は、アルゴリズムを1ビットも壊さずに鍵を抜きます。「数学的な安全性」と「実装の安全性」は別物です。

「鍵長を大きくしたから安心」も「最新のアルゴリズムだから安心」も、どこまで効いて、どこから効かないかがあります。読み終えたとき、鍵長の数字を見て「で、いつまで安全なの?」と問い返せるようになっていれば成功です。なお私自身まだ学習中なので、間違いがあれば指摘していただけると助かります。

なお、RSA や AES の 仕組み(共通鍵・公開鍵・署名・ハッシュがどう成り立っているか)は、同シリーズの第4回(暗号)で詳しく扱いました。また 2030年問題・耐量子暗号(PQC)・鍵管理 は第5回(認証)で扱っています。この記事ではこれらを再解説せず、「なぜ寿命が来るのか(危殆化)」という1点に絞ります。仕組みや2030年問題そのものが気になったら、それぞれの回を参照してください(第4回=暗号・第5回=認証とも公開済み。末尾の「あわせて読みたい」を参照)。

「脆弱性」と「危殆化」は違う ── 暗号が死ぬときの言葉

まず、この記事でいちばん持ち帰ってほしい言葉の区別から始めます。講義の冒頭でも、ここがいちばん最初に押さえられていました。

  • 脆弱性(vulnerability): そのもの がもともと持っている弱さ です。設計や実装のミスなど、最初から内側に潜んでいた欠陥を指します。
  • 危殆化(compromise): 外的な要因によって、後から安全性が低下していくこと です。時間の経過、計算機の進歩、新しい攻撃手法の登場などで、もともとは十分だった安全性が削れていく状況を指します。

暗号の世界では、アルゴリズムが安全でなくなることを「脆弱性が見つかった」とはあまり言わず、「危殆化した」と言います。これは言葉づかいの細かい話ではなく、考え方の違いを表しています。脆弱性は「見つけて直す」もの、危殆化は「時間とともに必ず進むので、いつ乗り換えるかを計画する」ものだからです。

JPNIC は「暗号アルゴリズムの危殆化」を次のように定義しています。

暗号アルゴリズムの危殆化とは、暗号アルゴリズムの安全性のレベルが低下した状況、または、その影響により暗号アルゴリズムが組み込まれているシステムなどの安全性が脅かされる状況を言います。

(JPNIC「インターネット10分講座:暗号アルゴリズムの危殆化」 より)

「安全性のレベルが低下した状況」という言い方がポイントです。ある日突然ゼロになるのではなく、レベルが下がっていく。だから危殆化は、点ではなく時間軸の話になります。

あの DES の最期は、典型的な危殆化だった

第4回(暗号)で、DES(56ビット鍵の共通鍵暗号)が破られた歴史に触れました。注目したいのは、DES が破られた主因がアルゴリズムの構造的な欠陥(脆弱性)ではなく、56ビットという鍵空間が計算機の進歩に追い越されたことだった、という点です。これがまさに危殆化です。DES のアルゴリズム自体は変わっていないのに、計算機が安くて速くなったという外的要因だけで、安全性のレベルが下がっていきました。

そして危殆化は、大きく2つの軸に分かれます。この記事の地図を先に示しておきます。

ここから先は、この2本の軸を順番にたどります。第1の軸は「計算が進化して、いつか暗号に追いつく」話。第2の軸は「数学は無傷なのに、実装の物理的な隙から鍵が漏れる」話です。

第1の軸:理論的危殆化 ── 計算機が暗号に追いつく

最初の軸は、計算する側が強くなって暗号に追いついてくる危殆化です。RSA を例に見ていきます。

RSA の安全性は「素因数分解の困難さ」に乗っている

RSA の仕組みそのものは第4回で扱ったので、ここでは安全性に関わる1点だけ再掲します。RSA は、大きな2つの素数 p, q から N = p × q を作り、N と公開鍵 e を公開します。秘密鍵 dN の公開情報から求めるには、結局 N を素因数分解して p, q を知る必要があります。掛け算(p × q → N)は一瞬ですが、その逆(N → p, q)が困難である、という非対称性の上に RSA は立っています。

講義メモには「RSA の正しさはフェルマーの小定理で証明できる」とありましたが、これは正確には オイラーの定理 にもとづきます。RSA では法 N = p × q が素数ではなく合成数なので、aN が互いに素のとき a^φ(N) ≡ 1 (mod N)(φ(N) = (p-1)(q-1))というオイラーの定理が必要になります。フェルマーの小定理は、法が素数のときに成り立つ特殊なケースで、オイラーの定理の一部に含まれます。

素因数分解は「飛躍が長く起きていない」── でも解読記録は伸びている

ここで2つの事実を並べると、危殆化の正体が見えてきます。

1つめ。現在、大きな整数の素因数分解で最速とされている古典アルゴリズムは 一般数体ふるい法(GNFS: General Number Field Sieve) です。GNFS は100桁を超える整数で、古典コンピュータ上の既知最速の方法とされています(Wikipedia: General number field sieve)。そして GNFS 以降、計算量のオーダーを大きく塗り替えるような一般的アルゴリズムの飛躍は、広くは知られていません。つまり「解き方」のブレークスルーは、しばらく起きていません。

2つめ。それでも、実際に分解できる鍵の大きさは年々伸びています。RSA社がかつて公開していた RSA Factoring Challenge の到達記録を見ると、それがはっきりします。

対象 ビット長(10進桁数) 分解された時期 補足
RSA-768 768ビット(232桁) 2009年12月 GNFS、約2000 CPU 年規模の計算量
RSA-250 829ビット(250桁) 2020年2月 CADO-NFS による分解

(出典: Factorization of a 768-bit RSA modulus(2010)RSA Factoring Challenge(Wikipedia)。なお RSA Factoring Challenge 自体は2007年に終了し、以降の記録は賞金なしの研究として達成されたものです。)

ここに、理論的危殆化の本質があります。アルゴリズム(解き方)が進化しなくても、計算資源の物量が増えるだけで、危殆化はじわじわ進むのです。DES が鍵空間を計算機に追い越されたのと、同じ構図です。新しい攻撃法が見つかれば、それはさらに前倒しの要因になります。

鍵長を上げれば安全? ── 必要計算量は指数的に増える

「だったら鍵長を大きくすればいい」というのは、半分正しくて、半分注意が要ります。

正しい側から。鍵長を線形に(たとえば2048ビットから3072ビットへ)伸ばすと、攻撃に必要な計算量は線形ではなく、はるかに急峻に増えます。だから少し鍵長を延ばすだけで、攻撃側の負担を大きく稼げます。これが「鍵長を上げる」ことの効き目です。

注意が要る側。計算機は止まらず速くなり続けます。半導体の集積度はおよそ1.5〜2年で2倍になる(ムーアの法則)とされてきました。近年は鈍化しているものの、計算資源全体は分散化やハードウェアの専用化で伸び続けています。だから「いまの感覚で安全な鍵長」は、時間とともに削れていきます。

NIST と CRYPTREC の見立てでは、いま広く使われている RSA-2048 は「112ビット強度」とされ、この強度の暗号は 2030年末で非推奨(deprecated) に格下げされる方向で整理が進んでいます。この2030年問題、そして「行き先は鍵長を伸ばすことではなく耐量子暗号(PQC)である」という話は、第5回(認証)で鍵管理の観点から扱いました。ここでは「理論的危殆化には、すでに公的なタイムラインが引かれている」という事実だけ押さえておきます(詳細は第5回参照)。

講義メモには「ムーアの法則が続けば RSA-2048 は2040年頃、RSA-4096 は2070年頃まで安全」という具体的な予測年もありました。ただし、この種の予測は前提(ムーアの法則がいつまで続くか、攻撃アルゴリズムが進歩しないか、量子コンピュータがいつ実用化するか)に強く依存します。前提が崩れれば予測も崩れるので、本記事では特定の「安全な年」を断定しません。確実に言えるのは「鍵長の数字には賞味期限があり、公的にはまず2030年末という節目がある」という点です。

そして、この理論的危殆化を一気に早めるのが量子コンピュータです。ショアのアルゴリズム は、既存の解読アルゴリズムを単に高速化するものではなく、量子コンピュータ専用に設計された別の解き方です。これを十分大きな量子コンピュータで動かせると、素因数分解と離散対数がまとめて解けてしまいます。すると、それらの困難性に乗っている RSA・ECDH・ECDSA が同時に危殆化します。だからこそ耐量子暗号(PQC)が用意されました。NIST は2024年8月13日に PQC 標準 FIPS 203 / 204 / 205 を公開しています。この話も第5回で扱っているので、ここでは「量子は理論的危殆化を前倒しする要因」とだけ位置づけておきます(詳細は第5回参照)。

楕円曲線(ECC)は鍵長が小さい ── 等価安全性表

理論的危殆化の話の締めに、「同じ安全性を、より短い鍵で実現する」選択肢にも触れておきます。楕円曲線暗号(ECC)は、RSA と同じ強度をはるかに短い鍵長で得られます。NIST SP 800-57 が示す等価安全性の対応表を抜粋します。

セキュリティ強度 共通鍵(対称) RSA(鍵長) ECC(曲線)
112ビット 3TDEA RSA-2048 P-224
128ビット AES-128 RSA-3072 P-256
192ビット AES-192 RSA-7680 P-384
256ビット AES-256 RSA-15360 P-521

(出典: NIST SP 800-57 Part 1 の等価安全性対応)

128ビット強度を得るのに、RSA は3072ビット必要なのに対し、ECC は256ビットで済みます。鍵長が短いほど、計算機の進化に追いつかれるまでの計算コストの差を、小さな鍵で維持できるわけです。ただし、ECC も「素因数分解ではなく楕円曲線上の離散対数問題」という別の困難性に乗っているだけで、量子コンピュータの前では RSA と同じく危殆化する点は変わりません。

第2の軸:実装的危殆化 ── 数学は無傷でも、物理で漏れる

ここから2本目の軸に移ります。この軸が、私がいちばん誤解していた部分でした。

これまで見てきた理論的危殆化は、「アルゴリズムを数学的に攻める」話でした。ところが講義によると、いまホットなのはそこではありません。ソフトウェア上で RSA を数学的に解く研究は「いかにきれいに実装するか」という洗練のフェーズに入り、頭打ち気味です。代わりに研究の最前線になっているのが、ハードウェアの物理的な隙を突く攻撃です。

ここに、この記事の独自の核心があります。数学的な安全性と、実装の安全性は別物だということです。式としては完全に正しい暗号でも、それを動かすチップが処理中に外へ漏らす情報から、鍵が抜けてしまいます。

サイドチャネル攻撃 ── 計算「結果」ではなく計算「中の漏れ」を盗む

サイドチャネル攻撃 は、暗号文そのものを解読する攻撃ではありません。暗号処理を行うデバイスが、計算の途中で副次的に漏らしてしまう物理情報 ── 消費電力、処理にかかった時間、放射される電磁波など ── を観測して、そこから秘密鍵を推定する攻撃です。

たとえるなら、金庫のダイヤルの「正しい数字」を理屈で導くのではなく、ダイヤルを回す人の手の動きや、金庫から漏れる小さな音を観測して当てにいくようなものです。金庫(数学)はびくともしていません。漏れているのは、金庫を操作する過程の物理現象です。

物理攻撃は、大きく2種類に分けられます。

種別 やり方
破壊的(侵襲的) チップを物理的に開封し、内部を直接観測する チップを開封して光を当て、内部の電流を観測する
非破壊的(非侵襲的) チップを壊さず、外に漏れる情報を観測する 消費電力や電磁波を測定する(=サイドチャネル攻撃)

このうち、暗号の危殆化として特に問題になるのが、非破壊的なサイドチャネル攻撃です。チップを壊さずに、しかも対象に痕跡を残さずに鍵を抜けてしまうからです。

SPA と DPA ── 1本の波形を読むか、大量の波形を統計処理するか

消費電力を使うサイドチャネル攻撃には、代表的な2つの手法があります。どちらも Kocher らが1990年代後半に提案したものです。

  • SPA(Simple Power Analysis、単純電力解析): 1回(または少数回)の暗号処理の電力波形を観測し、その形を直接読み取って鍵を求める手法です。RSA のべき乗剰余演算は「2乗」と「乗算」の繰り返しでできていて、秘密鍵のビットが 10 かで、行われる演算が変わります。すると電力波形の山の出方が変わるので、波形を目で追うだけで秘密鍵のビット列を読めてしまうことがあります。
  • DPA(Differential Power Analysis、差分電力解析): 大量の電力波形を集めて統計的に処理し、わずかな差から鍵を導く手法です。SPA が「1本の波形をじっと読む」のに対し、DPA は「何千本もの波形の平均的な差を取る」イメージです。AES などの共通鍵暗号に有効です。

DPA は、Paul Kocher、Joshua Jaffe、Benjamin Jun の3名による論文「Differential Power Analysis」(CRYPTO '99、1999年)で提案されました(Springer LNCS 1666)。

講義メモには「サイドチャネル攻撃は2017年頃から出てきた」とありましたが、これは正確ではありません。SPA・DPA はいずれも1990年代後半に提案されており、DPA の原論文は1999年です。サイドチャネル攻撃の研究は、20年以上の歴史がある分野です。

DPA が手強いのは、鍵の探索を分割統治に持ち込める点にあります。AES-128 の鍵は128ビットなので、総当たりなら 2^128 通りという天文学的な数になります。ところが DPA では、鍵全体を一度に当てるのではなく、処理の途中で「鍵の1バイト分(8ビット=256通り)」だけが結果に効く瞬間に注目します。

なぜ部分探索で当たるのかが、この攻撃の肝です。攻撃者は、256通りの候補鍵バイトそれぞれについて「もしこの値が正解なら、計算の途中の中間値はこうなるはずだ」と予測します。その予測を使って、集めた大量の電力波形をグループ分けし、グループ間の差分を取ります。すると、候補が正解のときだけ差分に明確な山が出て、外れのときは差分がノイズに埋もれて平らになります。この山の有無で、1バイトを確定できます。これを16バイト分くりかえせば、鍵全体が決まります。こうして 2^128 の全探索が、256 × 16 = 4096 通りの部分探索に化けるのです。「全体を一度に」が「部分を順番に」に変わることで、現実的な計算量に落ちます。

AES-128 は10ラウンドで構成され、各ラウンドが SubBytes・ShiftRows・MixColumns・AddRoundKey からなり、最終(10ラウンド目)だけ MixColumns を行わないこと(FIPS 197)は第4回で扱いました。DPA は、この構造のなかでバイト単位の処理が電力に現れる瞬間を狙います。仕組みの詳細は第4回を参照してください。

対策の研究も、攻撃と並行して進んできました。代表的なものが2系統あります。

  • ハイディング(隠蔽): ダミーの演算を混ぜるなどして、消費電力の波形から処理の中身を読み取りにくくする手法です。RSA では「2乗」と「乗算」を常に同じ順で行うことで、波形のパターンから秘密鍵のビットを読まれないようにする方式(Montgomery powering ladder など)が知られます。
  • マスキング: 鍵や中間値に乱数を混ぜて、消費電力と鍵の相関を断つ手法です。

身近な実例 ── 車のイモビライザー

サイドチャネルや実装の弱さは、研究室の中だけの話ではありません。講義で紹介された身近な実例が、車のイモビライザー(エンジンの不正始動を防ぐ仕組み)です。

イモビライザーは、鍵に埋め込まれた RFID チップと車側が暗号で認証し合うことで、正規の鍵でなければエンジンがかからないようにしています。ところが、この認証に使われていた Megamos Crypto という暗号方式について、Roel Verdult、Flavio Garcia、Baris Ege の研究者らが、設計と実装の弱さを突いて鍵を復元できることを示しました。論文はもともと USENIX Security 2013 で発表される予定でしたが、自動車メーカー側の申し立てにより、2013年6月25日に英国高等法院が公表の仮差止めを命じ、発表は延期されました。最終的には2015年に公表されています(USENIX: Dismantling Megamos Crypto)。

ここでもう1つ、講義で語られた現実的な観察が刺さりました。脆弱性や危殆化が見つかっても、置き換えコストのほうが想定被害額より大きいと、運用が続いてしまうという話です。「弱いと分かっているのに使い続ける」状況は、技術だけでなく経済の問題でもあります。危殆化は、見つけただけでは止まりません。乗り換えるという経営判断とセットになって、はじめて止まります。

測る側の仕組み ── SASEBO と JCMVP

攻撃する研究が進むと、「では、あるチップがサイドチャネル攻撃にどれくらい耐えるのか」を公平に測る基盤も必要になります。

そのために日本で開発されたのが SASEBO(Side-channel Attack Standard Evaluation BOard) です。産業技術総合研究所(産総研)の情報セキュリティ研究センター(RCIS)と東北大学が、経済産業省(METI)の事業として開発した、サイドチャネル攻撃の標準評価ボードです(AIST RCIS: SASEBO)。

評価ボードで測った暗号モジュールが「規格を満たしているか」を検証する制度もあります。

  • CMVP(Cryptographic Module Validation Program): NIST と カナダの Canadian Centre for Cyber Security が共同で運用する、FIPS 140 にもとづく暗号モジュールの検証制度です(NIST CMVP)。
  • JCMVP(Japan Cryptographic Module Validation Program、暗号モジュール試験及び認証制度): IPA(情報処理推進機構)が運用する日本の制度です(IPA JCMVP)。

「攻撃を研究する側が、評価する基盤も整える」という構図です。実装的危殆化は、放っておいても直りません。攻撃手法を研究し、評価制度で測り、基準を満たさないモジュールを使わない、という運用の積み重ねで抑え込むものです。

まとめ

この記事では、CySec 第6回「暗号危殆化の現状と未来」の内容を、「暗号は『脆弱性』ではなく『危殆化』する。数学が安全でも、計算機の進化(理論)と実装の隙(物理)という2つの外的要因で寿命が来る」という1本の軸で再構成しました。タイトルの「数学的に安全な暗号が寿命を迎える2つの理由」とは、この2つの軸のことです。

この記事の幹は3つです。これだけ持ち帰れば十分です。

  1. 暗号は脆弱性ではなく危殆化する。 脆弱性が「もともとの弱さ」なら、危殆化は「外的要因で後から安全性が削れること」です。DES が鍵空間を計算機に追い越されて破られたのが、典型的な危殆化でした。だから暗号は「見つけて直す」だけでなく「いつ乗り換えるか」を計画する対象です。

  2. 第1の軸は理論的危殆化(計算機が暗号に追いつく)。 素因数分解の解き方(GNFS)に大きな飛躍が長く起きていなくても、計算資源の物量だけで解読記録は伸び続けます(RSA-768=2009年、RSA-250=2020年)。鍵長を伸ばせば計算量は急峻に増えますが、それでも賞味期限はあり、公的にはまず2030年末という節目があります。量子コンピュータ(ショアのアルゴリズム)はこれを前倒しします。だからこそ、いつでも乗り換えられる設計(クリプトアジリティ)が要ります。

  3. 第2の軸は実装的危殆化(数学は無傷でも物理で漏れる)。 サイドチャネル攻撃は、アルゴリズムを1ビットも壊さずに、消費電力や電磁波から鍵を抜きます(SPA・DPA)。DPA は 2^128 の探索を 4096 通りの部分探索に分割統治してしまいます。Megamos Crypto の例が示すように、これは現場で起きていることです。「暗号屋(理論)」と「システムセキュリティ屋(実装)」が乖離したままでは守れない、という講義の結びは、まさにこの2つの軸が地続きであることを言っています。

最後に、この記事で持ち帰ってほしい問いを1つ。自分の使っている暗号を「鍵長は十分か」だけでなく、「いつまで安全か」「実装は物理攻撃に耐えるか」で見直してみてください。 鍵長の数字を見て「で、いつまで?」と問い返せたら、少し前の私より一歩前に進んでいます。私自身、最大の鍵長を選んで満足していたころには、この問いを一度も立てたことがありませんでした。

暗号そのものの仕組み(共通鍵・公開鍵・署名・ハッシュ)は第4回で、2030年問題・PQC・鍵管理は第5回で扱っています。あわせて読むと、この記事の「危殆化」がより立体的に見えるはずです。ここまで読んでいただき、ありがとうございました。

参考資料

本記事で挙げた定義・年号・攻撃手法は、次の一次情報で確認できます。記事中の内容は学習・執筆時点(2026年6月現在)のもので、最新は各サイトで確認してください。

あわせて読みたい

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?