LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

ラックピープル | 

IoT分野で脅威になり得る、ハードウェアへの相関電力解析攻撃を解説

スマートデバイス診断グループの瀬戸口です。

近年、IoT分野におけるハードウェアセキュリティの重要性が増しています。IoT機器の多くは暗号化や認証などのセキュリティ対策がとられていますが、そのようなIoT機器においても今回解説するサイドチャネル攻撃※1 の1つである相関電力解析攻撃の脅威が存在する可能性があります。最近では海外製のサイドチャネル攻撃ツールを簡単に手に入れることが出来ますので、今回はその攻撃ツールを使用して、ハードウェアからデータ暗号化で使用される秘密鍵を実際に取り出してみます。

なおこの記事は、相関電力解析攻撃の脅威を解説することを目的としており、攻撃を助長するものではありません。この記事の内容をデバイスの所有者の許可なく実施しないようお願いいたします。

  • ※1 サイドチャネル攻撃:コンピューターや周辺機器の動作により生じる消費電力や処理時間などの物理量からセンシティブな情報(秘密鍵やパスワードなど)を盗み取る攻撃

相関電力解析攻撃とは

はじめに相関電力解析攻撃について解説します。相関電力解析攻撃(CPA, Correlation Power Analysis)とは、暗号回路の動作時の消費電力波形を複数観測し、それらを統計的に処理することで秘密鍵を求める攻撃手法です。統計処理には相関係数というある2つの値の関係の強さを示す数値を用います。

今回、サイドチャネル攻撃ツールの攻撃対象とするターゲットボードでは、ブロック暗号の中でも一般的によく使用されている鍵長128bitのAES(以下 AES-128)という暗号アルゴリズムが利用されています。ブロック暗号のアルゴリズムでは、個々のブロック暗号でラウンド関数が定義されており、ラウンド関数を繰り返す処理を行っています。AES-128は最初の鍵加算の後、ラウンド関数が10回※2 繰り返されて構成されていますが、今回は1ラウンド目S-box※3 出力に着目して攻撃を行うため、AES-128の平文入力から1ラウンド目出力までを図1に示します。 図1の赤い点線は攻撃の際に着目する1ラウンド目S-box出力の位置を示し、⊕は鍵とデータの排他的論理和を表します。また、0~15番目byteごとのデータ処理に0~15(青字)の番号をつけています。

  • ※2 厳密にはAES-128の10ラウンド目の構造は他のラウンドと少し異なる。
  • ※3 S-boxとはあるbit長データの換字変換を行う関数のことであり、AESで使用されているS-boxは8bit(1byte)入出力。図1ではSで示す。
図1 AES-128の平文入力から1ラウンド目出力まで
図1 AES-128の平文入力から1ラウンド目出力まで

次に攻撃の手順を説明します。
以下の手順を0~15番目byte(図1の青字)ごとに実行し、最終的に128bitの秘密鍵を推定していきます。

①消費電力波形の収集
ターゲットボード上の暗号回路で攻撃者が用意した複数の平文を暗号化し、その時の消費電力波形を収集します。
②ハミング距離※4 の算出
①で使用した全ての平文と対応する中間データ※5 のハミング距離を算出します。攻撃者は中間データの計算に必要な鍵の1byteを自ら仮定します。仮定する部分鍵の総数は28=256個であり、これら全ての値を仮定して計算します。
③相関係数の算出
①②で得た消費電力波形とハミング距離を用いて仮定した鍵の値ごとに相関係数を計算します。相関係数は-1から1の範囲で値をとり、絶対値が1に近いほど2つの値の相関が強いと言えます。一般的には消費電力とハミング距離にはリニア(線形)な相関があるため、相関係数を計算し一番値が大きいときの鍵の値を正しい鍵と推定することが出来ます。
  • ※4 ハミング距離とはある2つのbit列を比較したとき値の異なる位置の個数をいう。例えば8bit列「10000001」と「10000010」は左から7番目と8番目の値が異なるのでハミング距離は2となる。
  • ※5 中間データとは図1の赤い点線の位置でのデータを指す。

サイドチャネル攻撃ツール

次に、冒頭で述べたサイドチャネル攻撃ツールを使用して秘密鍵を取り出してみます。攻撃に使用するソフトウェアは、必要なものが全てインストールされた仮想マシンイメージがオープンソースとして提供されています。図2の通り、サイドチャネル攻撃ツールのメインボードと攻撃対象とする付属のターゲットボードをケーブルでつなげ、サイドチャネル攻撃ツールのメインボードをPCにUSB接続します。図3、図4は仮想マシンに含まれているソフトウェアを起動したときのGUIです。図3は消費電力波形の収集、図4は収集したデータの相関電力解析に使用します。

図2 サイドチャネル攻撃ツールのメインボードとターゲットボード

図2 サイドチャネル攻撃ツールのメインボードとターゲットボード
図3 消費電力波形の収集に使用するソフトウェアのGUI
図3 消費電力波形の収集に使用するソフトウェアのGUI
図4 収集したデータの相関電力解析に使用するソフトウェアのGUI
図4 収集したデータの相関電力解析に使用するソフトウェアのGUI

消費電力波形の収集

図2の通りにつないだ後、図3のソフトウェアを使用して消費電力波形を収集します。今回はターゲットボードの秘密鍵を適当な値である「01 8D C5 66 29 EE 00 A3 CD F5 31 82 0A CB 54 BD」に設定し、解析するために必要な攻撃者が用意した平文とそれを暗号化した際の消費電力波形を収集します。得られたAES-128の1ラウンド目の波形の一部を図5に示します。

図5 AES-128 1ラウンド目の消費電力波形の一部
図5 AES-128 1ラウンド目の消費電力波形の一部

収集したデータの相関電力解析

図4のソフトウェアを用いて先ほど収集したデータからハミング距離を算出し、相関係数を求めます。得られた結果が図6です。これは0番目byteデータ処理における相関係数の比較です。仮定する部分鍵28=256個の値それぞれに対して、サンプリングポイント(Sample Number)での相関係数を計算し、グラフにしています。矢印の位置に相関係数のピークが現れており、この赤いグラフのときの値が正しい部分鍵であると推測できます。

図6 0番目byteデータ処理における相関係数の比較
図6 0番目byteデータ処理における相関係数の比較

そして図7が相関電力解析攻撃の結果です。byteごとの部分鍵の推定値を相関係数の大きいものから順に表示しています。0行目に表示された16個それぞれの値が最も正しい部分鍵と推定され、実際に最初に設定した秘密鍵の値「01 8D C5 66 29 EE 00 A3 CD F5 31 82 0A CB 54 BD」と同じため、相関電力解析攻撃が成功していることを確認できます。

図7 相関電力解析攻撃の結果
図7 相関電力解析攻撃の結果

まとめ

今回、海外製のサイドチャネル攻撃ツールを使用し、相関電力解析攻撃によって暗号回路内部の秘密鍵の推定が可能なことを解説しました。IPAの調査報告※6 では、相関電力解析攻撃の対策は困難と考えられています。ではどうすればよいのでしょうか。ハードウェアが奪われた場合、攻撃者によって解析されてしまうことを考慮し、ハードウェア自体に耐タンパー性※7 を持たせるなどのセキュリティ対策が必要と考えられます。

  • ※6 III.3.3.5 電力解析の対策
    (https://warp.ndl.go.jp/info:ndljp/pid/12446699/www.ipa.go.jp/security/enc/smartcard/node56.html)
  • ※7 平成14年度 耐タンパー性調査研究委員会報告書
    (https://warp.ndl.go.jp/info:ndljp/pid/11668329/www.ipa.go.jp/security/enc/CRYPTREC/fy15/documents/INSTAC_rep.pdf)

ラックではIoT機器のセキュリティ診断について、ご相談を受け付けております。お気軽にご相談ください。

より詳しく知るにはこちら

より詳しく知るにはこちら

IoT機器のセキュリティ対策が適切であるか、問題の有無を確認するための診断サービスです。各種センサー、通信装置、スマート家電、スマートホーム、医療機器など多種多様なIoT機器を診断対象とします。

この記事は役に立ちましたか?

はい いいえ