見えない脅威:サイドチャネル攻撃とは?仕組み・具体例・対策を解説

AIの初心者
「サイドチャネル攻撃」って、どんな攻撃なんですか?暗号で守っている情報も盗まれてしまうのでしょうか?

AI専門家
機器が処理するときの時間や消費電力、電磁波などを手がかりに、秘密を推測する攻撃だよ。暗号の計算方法そのものが安全でも、実際に動く機器やプログラムから情報が漏れる場合があるんだ。

AIの初心者
では、パソコンの音や熱を調べるだけで、秘密の鍵がすぐにわかるのですか?

AI専門家
いつでもわかるわけではないよ。秘密に結び付く違いを測れることや、その違いを分析できることが必要なんだ。機器への接近が必要な手法もあれば、条件によってはネットワーク越しに処理時間を調べる手法もある。何が漏れ、どこから観測できるかを考えることが大切だね。
サイドチャネル攻撃とは、情報処理に伴う副次的な情報を観測し、暗号鍵などの秘密を推測する攻撃です。「暗号で保護されていること」と「処理中にも情報が漏れないこと」は別の問題であり、この違いが対策を考える出発点になります。
この記事では、時間差や物理的な信号が秘密の手がかりになる仕組みから、代表的な手法、ICカード・IoT・クラウドでの考え方、漏えい経路に合った対策までを説明します。まずは、保護された情報そのものに加え、その情報を扱う際に外から観測できる変化にも目を向けてみましょう。

サイドチャネル攻撃とは何か
コンピュータは、計算を進めるたびに電力を使い、メモリにアクセスします。処理には時間がかかり、機器から電磁波や音が生じたり、温度が変化したりすることもあります。これらは本来、秘密を相手に伝えるための情報ではありません。それでも、扱う秘密によって変化の仕方が異なれば、攻撃者にとって推測の材料になります。
例えば、暗号鍵の値によって実行する処理や参照するメモリの場所が変わる実装では、その違いが処理時間や消費電力に現れる場合があります。鍵をファイルから直接読み出せなくても、動作の特徴から鍵に関する情報が得られる可能性があるのです。部品を直接見ることや、機器を分解することがサイドチャネル攻撃の定義ではありません。何を観測するかによって、必要な環境は変わります。
通常の暗号解読との違いは、主に狙う場所にあります。暗号方式の数学的な弱点を探す攻撃に対し、サイドチャネル攻撃は、暗号をプログラムや回路として動かした際の漏えいに着目します。数学的に強い暗号方式を選んでも、それをどう実装し、どのような環境で使うかまで確認しなければ、安全性を十分に判断できません。
関連する攻撃とは、次のように区別すると理解しやすくなります。
- 通信内容そのものの盗聴は、やり取りされるデータを読み取る行為です。サイドチャネル攻撃では、処理時間など、秘密を直接表していない情報から推測する点に注目します。
- 故障注入攻撃は、電圧やクロックなどへの干渉によって意図的に誤動作を起こし、その結果を利用する手法です。動作に伴う情報を観測するサイドチャネル攻撃とは、基本的な働きかけが異なります。
- サイドチャネル攻撃でも、観測のために入力を与えたり処理を繰り返させたりする場合があります。「何もせず眺めているだけの攻撃」とも限りません。
実際の評価では複数の手法を組み合わせることもありますが、まずは「秘密そのもの」「処理から漏れる手がかり」「意図的に起こした誤動作」を分けて考えることが大切です。
わずかな違いから秘密を推測する仕組み
サイドチャネル攻撃が成り立つには、秘密に依存する処理の違いが、外から観測できる違いとして現れる必要があります。機器から音や熱が出ているというだけでは、直ちに秘密がわかるわけではありません。その変化と秘密の間に、分析に利用できる関係があることが重要です。
- 秘密の値によって、計算の手順、途中の値、メモリへのアクセスなどに違いが生じます。
- その違いが、処理時間、電力の波形、電磁波などの観測値に反映されます。
- 観測結果を比較し、統計処理や信号処理を使って、秘密の候補を絞り込みます。
この流れは、足音から人の動きを推測することに似ています。足音は居場所そのものではありませんが、歩き方や床の状態を知っていれば手がかりになります。同じように、対象の実装についての知識があるほど、観測した差の意味を判断しやすくなります。

処理時間の例として、文字列を先頭から順番に比べ、最初の不一致で処理を終える実装を考えてみましょう。この場合、先頭から一致する部分が長いほど比較する回数が増え、処理にかかる時間が変わる可能性があります。もしその差を十分な精度で観測できれば、「どの程度まで一致したか」という、本来は外に知らせたくない情報が漏れ得ます。
ただし、これは仕組みを理解するための概念例です。すべての認証処理がこのような文字列比較をしているわけではなく、安全な比較処理などによって差が出にくい実装もあります。また、実際の応答時間には、ほかの処理の負荷や通信の遅れも混ざります。
分析には、多数の測定結果を集めて傾向を見たり、必要な信号とノイズを分けたりする作業が必要になる場合があります。測定器の精度、観測できる回数、対象の動作の安定性なども結果を左右します。一度の観測で必ず暗号鍵全体が読めるわけではなく、一部の情報だけが得られる場合や、実用的な推測に至らない場合もあります。
代表的な手法と攻撃の成立条件
サイドチャネル攻撃には、物理的な信号を測るものだけでなく、ソフトウェアから時間差を観測するものもあります。手法の名前だけで危険度を決めるのではなく、何を観測でき、どの程度対象に近づけるのか、どの資源を共有しているのかを確認する必要があります。
| 手法 | 観測対象 | 主な観測環境・成立条件 | 制約・注意点 |
|---|---|---|---|
| タイミング攻撃 | 処理の実行時間や応答時間の差 | 秘密に依存する時間差があり、十分な精度で測れること。ネットワーク越しに成立する場合もある | 通信の揺らぎやサーバーの負荷が差を埋もれさせる。対象実装や測定回数に左右される |
| 電力解析 | 処理中の消費電力の変動 | 電力を測定できる機器や接点などが必要で、対象への物理的な接近を伴うことが多い | 電源回路、同時に動く処理、測定精度などの影響を受ける |
| 電磁波解析 | 回路の動作に伴う電磁波 | 対象付近で測定器やプローブを使い、必要な信号を捉えられること | 機器の構造、測定位置、遮蔽、周囲の電磁的なノイズに左右される |
| 音響解析 | 機器や部品から発生する音の変化 | 処理と音の間に関係があり、マイクなどで有用な音を観測できること | 対象機器、距離、周囲の音、録音性能に依存し、どの機器でも成立するわけではない |
| 熱を利用する解析 | 温度や発熱の変化 | 処理に関連する温度変化を、センサーなどで捉えられること | 熱の伝わり方や変化の遅さ、冷却の影響があり、得られる情報は条件によって限られる |
| キャッシュ攻撃 | キャッシュの利用状態に伴うメモリアクセス時間の差など | 対象と関連する計算資源を共有し、攻撃者が必要なコードを実行・計測できることなど | CPUの構造、隔離の仕組み、実行権限、共有の範囲によって成立条件が変わる |
タイミング攻撃は「時間差を使う」という広い分類です。キャッシュ攻撃でも時間差を利用しますが、こちらはメモリへのアクセスを高速化するキャッシュという共有資源に着目します。表の分類は完全に独立したものではなく、観測する情報と、その差が生じる原因の両面から捉えると理解しやすくなります。

電力や電磁波を測る攻撃では、対象に近づけるかどうかが大きな論点になります。一方、ネットワーク経由のタイミング攻撃や共有環境でのキャッシュ攻撃は、必ずしも機器のそばにいる必要はありません。そのため、「サーバー室に入れないから問題はない」とも、「インターネットにつながっていれば誰でも鍵を読める」とも判断できません。
音や熱についても、観測可能であることと、暗号鍵などの秘密を推測できることは別です。特別な測定器を用意すれば簡単に成功するとは限りません。対象の実装を理解し、意味のある差を取り出せるかまで含めて評価する必要があります。
ICカード・IoT・クラウドでの具体例
サイドチャネル攻撃の考え方は、身近な端末からサーバーまで幅広く関係します。ただし、同じ手法がすべての機器で通用するわけではありません。製品の用途、設置場所、秘密を扱う処理、攻撃者に許される操作を具体的にすると、検討すべき漏えい経路が見えてきます。
ICカードや暗号処理用の機器では、内部に保存した鍵を外へ取り出せない設計でも、その鍵を使った計算は行います。このときの電力変動などが鍵に関する情報を含まないかは、耐性を評価するうえでの重要な観点です。鍵が画面に表示されず、通常の命令でも読み出せないことだけでは、処理中の漏えいまで否定できません。
IoT機器では、設置場所と第三者が触れられる範囲も問題になります。施錠された場所に置く装置と、共用スペースに長期間設置する装置では、攻撃者が近づいて測定したり、繰り返し動作させたりできる機会が異なります。回路への接触を制限する設計に加え、更新を継続できる仕組みや、機器内で扱う秘密の範囲も検討対象になります。
スマートフォンやパソコンも、機種名だけで一律に安全・危険と決めることはできません。CPUやOSの仕組み、暗号ライブラリの実装、動作しているアプリの権限などによって条件が変わります。一般利用者が音や発熱の変化から攻撃の有無を判断することも困難です。
クラウドでは、CPUなどの資源を複数の利用者が共有する構成に注目します。キャッシュは、よく使うデータを一時的に保持して処理を速める仕組みです。ある処理がキャッシュの状態を変え、その影響を別の処理が時間差として観測できる条件がそろうと、処理内容に関する手がかりが生じる場合があります。

ここでの論点は、どの資源を共有しているか、利用者間の隔離がどう実装されているか、攻撃者がどのようなコードを動かせるかです。同じクラウドサービスを契約しているだけで、ほかの利用者の秘密を読み取れるわけではありません。物理的な信号測定とは異なる条件を確認する必要があります。
この知識は、製品設計や調達、許可された脆弱性評価で役立ちます。例えば、調達時に「暗号機能があるか」だけを確認するのではなく、「どの観測手法を想定した評価か」「どの環境や構成が評価の対象か」まで確認すると、製品を使う条件とのずれを見つけやすくなります。評価では、守る情報、攻撃者の接近や実行権限、観測可能な範囲を先に定めることが大切です。
漏えい経路に合わせたハードウェアとソフトウェアの対策
対策の基本は、秘密と観測値の結び付きを弱めること、そして攻撃者が観測できる範囲を制限することです。漏えい経路ごとに有効な対策が異なるため、実装・機器・運用の対策を組み合わせて守る必要があります。
時間差への代表的な対策が、定数時間実装です。これは、秘密の値に応じて処理の分岐やメモリアクセスの仕方が変わらないようにする考え方です。例えば、比較の途中で不一致が見つかっても、その位置を処理時間から推測しにくい実装を使います。
「定数時間」は、すべての実行で時計が示す時間を完全に一致させるという意味ではありません。OSの割り込みやほかの処理の負荷による変動はあり得ます。重要なのは、秘密の値に依存する時間差を生まないことです。また、ソースコード上では配慮したつもりでも、コンパイラの最適化や実行するCPUによって性質が変わることがあるため、対象環境での確認が必要です。
| 対策 | 対応する漏えい経路・目的 | 採用時に確認すること |
|---|---|---|
| 定数時間実装 | 秘密に依存する分岐やメモリアクセスによる時間差を抑える | 対象の処理、ビルド条件、CPUなどを含めて確認する。物理的な漏えいをすべて防ぐものではない |
| 評価された暗号実装の利用 | 独自実装に伴う漏えいの見落としを減らす | 評価対象の機能や環境、更新状況を確認する。ライブラリを採用しただけで全処理が保護されるとは限らない |
| マスキング | 乱数を使って計算途中の値を保護し、電力や電磁波などと秘密の直接的な関係を弱める | 乱数の品質や実装方法が重要。単純に乱数を足すだけで安全になるわけではない |
| 共有資源の隔離・共有範囲の制限 | キャッシュなどを通じて別の処理の影響を観測できる機会を減らす | 実際に共有する資源と必要な隔離の範囲を確認し、性能や運用への影響も検討する |
| 物理的な接近の制限・遮蔽 | 測定器の接続や設置を難しくし、対象となる電磁的な信号の観測を抑える | 設置場所、筐体、測定対象に合わせて選ぶ。遮蔽だけで時間差などの漏えいは防げない |
| 継続的な評価と修正の適用 | 実装や構成に残る弱点を見つけ、既知の問題への対策を維持する | 修正の適用状況と、更新や構成変更による影響を確認する |
マスキングは、計算途中の値を乱数と組み合わせて分散させ、ある観測値だけでは秘密に直結しにくくする方法です。定数時間実装とは狙う漏えいが異なるため、両方の配慮が必要になることもあります。暗号処理を独自に作り込むよりも、必要な耐性が評価された実装を選び、推奨される条件で使うことが実務上の出発点になります。

一方、暗号方式を複雑にしたり、意味のない処理を挟んだりするだけでは、漏えいの原因がなくなるとは限りません。ノイズの追加やランダムな待ち時間は観測を難しくする場合がありますが、測定を繰り返して傾向を取り出せる状況では、効果が限られることがあります。秘密に依存する差が残っていないかを確かめず、これらだけに頼るのは避けるべきです。
どこまで対策するかは、守る情報の重要性と想定する攻撃条件によって決まります。例えば、ネットワーク上の応答時間が問題なら筐体の遮蔽だけでは足りず、電力波形が問題なら処理時間への配慮だけでは十分ではありません。対策を選ぶ前に漏えい経路を特定し、導入後に想定した効果が得られているかを評価することが重要です。
対策の限界と継続的な備え
サイドチャネル攻撃は、通常の侵入ログだけでは見つけにくい場合があります。例えば、機器の近くで物理的な信号を測っているだけなら、システムへの不正ログインが発生するとは限りません。繰り返しの要求や不審なプログラムの実行を監視することは役立ちますが、検知だけに頼らず、漏えいを抑える設計と評価を先に行うことが大切です。
また、一度の評価で安全性が永続的に保証されるわけではありません。CPU、ファームウェア、暗号ライブラリ、コンパイラ、実行環境などが変われば、当初の評価条件とずれる場合があります。評価結果は、対象となった構成と想定した観測手法の範囲を含めて読む必要があります。
開発・運用担当者は、次の対応を継続すると、対策の抜けを把握しやすくなります。
- 守る秘密と想定する攻撃者の権限を整理し、必要に応じて専門家による時間・電力・電磁波などの評価を受ける。
- 利用する製品やライブラリの脆弱性情報、提供元の案内を確認し、修正や推奨される設定変更を適用する。
- 更新や構成変更の際は、共有資源や実装の条件が変わっていないかを確認し、影響に応じて再評価する。
- 新しい攻撃手法や評価方法を学び、設計・実装・運用の担当者が判断に必要な知識を共有する。
新たな漏えいの分析方法が見つかれば、従来の対策だけでは十分でないこともあります。評価できる人材を育て、必要な場面で専門家と協力できる体制を持つことも備えの一部です。将来の攻撃を漠然と恐れるより、どの条件まで確認済みで、何が未確認かを把握しておくほうが、具体的な対応につながります。
一般利用者にとっては、OS・ファームウェア・アプリを更新し、提供元の案内に対応することが基本です。強いパスワードや不審なサイトを避ける習慣も情報保護には役立ちますが、それだけで実装由来の時間差や電力の漏えいを修正できるわけではありません。機器やサービス側の対策が必要な問題と、利用者が日常的にできる対策を区別して考えましょう。
サイドチャネル攻撃を理解する要点は、暗号の強さに加えて「秘密を扱う処理から何が外へ伝わるか」を考えることです。観測できる情報と成立条件を確認し、漏えい経路に合った対策を重ねて評価を続けることが、現実的な備えになります。
更新履歴
| 日付 | 内容 |
|---|---|
| 2025年2月2日 | 初回公開 |
| 2026年10月4日 | 観測手法ごとの成立条件と、漏えい経路に応じた対策の限界を追記 |
