1. HOME
  2. ブログ
  3. 情報セキュリティ教育プログラム「enPiT2-Security」における岡山大学の活動 ~岡大セキュリティ人材育成エコシステム 暗号ハードウェアを対象としたセキュリティ実装演習~ セキュリティ人材育成法(第3回)

情報セキュリティ教育プログラム「enPiT2-Security」における岡山大学の活動 ~岡大セキュリティ人材育成エコシステム 暗号ハードウェアを対象としたセキュリティ実装演習~ セキュリティ人材育成法(第3回)

21世紀も四半世紀になろうとしています。人々はモバイル端末を持ち、ウェアラブル機器を身に付け、野外にはセンサーネットワークが張り巡らされ、自動車もインターネットに接続されつつあります。人々だけでなく企業などの法人も、さらには製品などのモノもインターネットを介して互いに接続され、ディジタルエコシステムが形成されるようになっています。多種多様な主体やモノが、さまざまな情報を送受信し、保持・保管しています。さらに20世紀とは異なり、人々が物理的にアクセス可能な場所にある機器(ハードウェア)が、個人情報や機密情報などのセンシティブな情報を扱ったり、そのような情報が交換されるネットワークへの侵入口になり得たりします。そのため、身近にあるハードウェアのセキュア実装が情報セキュリティにとっての主要な技術課題となっています。

暗号ハードウェアに対する暗号解読攻撃から守る設計に必要なことは?

ハードウェアの中でも暗号ハードウエアのセキュリティが重要になっています。アメリカ国立標準技術研究所(NIST:National Institute of Standards and Technology)が策定した「FIPS140-2」や「FIPS140-3」においても、暗号モジュールの安全性に関する要求事項が定められています。実際、暗号鍵の管理、暗号演算の実行、乱数の生成などを安全に実行することを謳った「ハードウェアセキュリティモジュール」(HSM)が複数のベンダーより提供されています。

その一方で、暗号ハードウェアに対する暗号解読攻撃として「サイドチャネル攻撃」(詳細は後述)が知られています。Kocherらによる1997年の発見以降、サイドチャネル攻撃の方法は進化し、暗号ハードウェアに対する現実的な脅威となっています。一般に、暗号演算の機能はディジタル集積回路(IC:Integrated Circuit)に実装されますが、サイドチャネル攻撃に対して安全な暗号ハードウェアを設計するためには、暗号アルゴリズムやディジタル回路設計の知識だけでなく、電気回路や電子回路、電子計測まで幅広い知識が必要となります。大学でそれらを学べる科目は、情報系、電気電子系、そして通信系の学科等に分かれて開講されることが多く、網羅的に学習できる科目は少ないのが現状です。

岡山大学が実施するサイドチャネル攻撃に関するPBL演習

サイドチャネル攻撃に対抗する設計のためには、サイドチャネル攻撃の存在を知り、攻撃メカニズムの何が脅威かを知っているエンジニアを増やすことが不可欠です。そこで、筆者らは「enPiT2-Security Basic SecCapコース」の一科目として暗号ハードウェアに対するサイドチャネル攻撃に関する演習科目を構築しました。現在は、岡山大学工学部情報・電気・数理データサイエンス系が中心となり、3年次選択科目として「ハードウェアセキュリティ実験」を開講しています。その受講生は、マイクロコントローラ(以下、マイコン)へ暗号アルゴリズムをソフトウェア実装し、実装した暗号アルゴリズムに対するサイドチャネル攻撃を実行する「PBL」 (Project Based Learning) 演習に取り組みます。

本科目では、代表的な暗号アルゴリズムである「RSA」(Rivest–Shamir–Adleman)暗号と「AES」 (Advanced Encryption Standard)や、その基礎となる代数学および離散数学に関する知識を習得し、RSAアルゴリズムをマイコンに実装します。さらに暗号処理中にマイコンより漏洩するサイドチャネル情報を観測し、RSAとAESを解読します。それらの一連の演習を通して、不用意な暗号実装のサイドチャネル攻撃に対する危険性を実感するとともに、対策方法の基本的な考え方を理解することを目的としています。

2つのパートで実施する具体的な演習内容とは?

本演習科目は、大きく前後半の2パートに分けられます。前半は、現代暗号の基礎である代数学と離散数学を概説し(図1)、演習問題を通して暗号アルゴリズムを構成する各処理の数学的基礎と意義を理解します。その後、RSAをマイコンに実装します。後半は、RSA暗号とAESに対するサイドチャネル攻撃実験を行います(図2)。さらにサイドチャネル攻撃対策の基本的な考え方についても説明します。

図1 数学的基礎説明時の様子(前半)
図2 サイドチャネル攻撃実験の様子(後半)

演習項目その1(前半)~暗号アルゴリズムの数学的基礎とマイコン実装

RSAは1977年にL. Rivest、A. Shamir、そしてL. M. Adlemanによって開発された初めての実用公開鍵暗号で、現在でも鍵共有やディジタル署名に広く使用されています。RSA暗号の暗号化、および復号処理の大部分は「べき乗剰余演算」です。これはべき乗された値をある整数で割った余りを求める演算で、同様の演算は「楕円曲線暗号」などの他の公開鍵暗号アルゴリズムでも利用されます。つまり、暗号ハードウェア実装における基礎演算の一つです。そのべき乗剰余演算の数学的基盤である「法演算」「オイラーの定理」(フェルマーの小定理)、および「離散対数問題」について説明し、演習問題を通してそれらの性質を理解します。

AESは2001年にNISTが標準暗号として発効した共通鍵暗号であり、データや通信の暗号化に広く使用されています。AESによる暗号化、および復号の処理は、主に「SubBytes」「ShiftRows」「MixColumns」、そして「AddRoundKey」の4つの演算で構成されています。ShiftRowsはシーザー暗号のように文字の並びをシフトする処理、AddRoundKeyは暗号鍵(正確には暗号鍵よりある規則に従い作成されたラウンド鍵)を使用した加法処理(XOR演算)です。つまり、古典暗号でも使用された処理です。それに対してSubBytesとMixColumnsは多項式を利用した演算です。そこで、その基礎である「既約多項式」「法演算」、そして「有限体」について説明し、AESアルゴリズムをその基礎から理解します。

次に暗号アルゴリズムのハードウェアへの実装演習として、RSA暗号をマイコンへ実装します。実装するハードウェアとしてマイコンを選択している理由には、IoT機器における暗号利用が広がっていることがあります。多くのIoT機器では電源や販売価格などの制約から小型で安価なマイコンが広く利用されています。本演習科目では、市販マイコンモジュールである「Arduino Uno」を使用しています。

べき乗剰余演算アルゴリズムには代表的な「左バイナリ法」を使用します。左バイナリ法はサイドチャネル攻撃に対して脆弱であることが知られていますが、効率的な手法であることから多くの教科書などでも紹介されており、受講生がべき乗剰余演算アルゴリズムを理解するのに適しています。加えて、サンプルコードをインターネット上より入手するのも容易であり、RSA暗号を手軽にマイコン実装する助けとなります。そして、そのようにアルゴリズムを安易にハードウェアに実装するとサイドチャネル攻撃を受ける危険性があることを学習する目的にも適います。

演習項目その2(後半)~サイドチャンネル攻撃実験

後半は、まずサイドチャネル情報漏洩が発生するメカニズム、および攻撃方法を概説し、マイコンに実装したRSA暗号とAESに対するサイドチャネル攻撃実験を行います。さらにサイドチャネル攻撃対策の基本的な考え方についても説明します。サイドチャネル攻撃は必ずしも実現性が高いとは限りません。しかし、安易なハードウェア実装によって、攻撃者に対して攻撃の成功要件が成立する可能性を提供した状態にしてしまうと、暗号ハードウェアの脆弱性が高まります。そのようなリスクを受講生に体感してもらうことが目的です。

マイコンをはじめ、ディジタルICは、それを構成するディジタル回路が暗号演算を実行するとサイドチャネル情報が漏洩し、それを悪意を持った第三者が観測すると暗号解読されてしまいます。そのメカニズムについて説明します。どれほど洗練された最先端の数学に基づいた暗号アルゴリズムであっても、ディジタルICに実装するとあらゆる数値や情報は”0”と”1”のみを含む2値系列として扱われます。

さらに、RSA暗号やAESのように暗号アルゴリズムが公開されていると、暗号処理の中で算出されるあらゆる中間値は一定の条件下で推定可能です。これは、あらゆる中間値に含まれる”1”の個数(ハミング重み)や、ある中間値が次の中間値に変換されたときに各ビットの値が”0”から”1”に、あるいは”1”から”0”に変化したビットの数(ハミング距離)を推定できることを意味します。そのような中間値に関する推定と、暗号演算中にマイコン周辺で観測される電圧、電流、電磁界、音、温度などの物理的な変化を比較し、それらの相関を分析することで暗号鍵を特定できます。そのように、暗号アルゴリズムに関する知識と、暗号ハードウェアの物理挙動の観測に基づき、暗号鍵を読み解く暗号解読法がサイドチャネル攻撃です。

本演習では、サイドチャネル攻撃の原理を電気回路学、電子回路学、および電子計測の基礎知識とともに説明します。そして、実際にArduino UNOにソフトウェア実装したRSA暗号とAESに対してサイドチャネル攻撃を実行して暗号鍵を読み取ります。

Arduino UNOはマイコンを駆動するDCバイアス電圧の変動が小さくなるように設計されています。サイドチャネル漏洩を観測するためのプローブを接続する端子も実装されていません。そこで、本科目ではサイドチャネル漏洩を観測できるようにプリント基板を改造します。図3は改造後のArduino UNOの写真です。マイコンのVSSピンに抵抗器を半田付けしています。

図3 サイドチャネル漏洩を容易に観測できるように、Arduino UNOのVSSピンに抵抗器を付けして改造

改造後のArduino UNOで、RSA暗号の複号処理を実行中に観測したサイドチャネル漏洩波形が図4です。青色の波形を見ると、電圧の変動が大きい区間と小さい区間を明瞭に区別できています。受講生は前半に学習した左バイナリ法に関する知識に基づき、べき乗剰余演算で実行される2種類の二乗算(S0とS1)、および1種類の乗算(M)が実行された区間を特定し、そこから秘密鍵のビット列を1101101001110…と読み取ります。従来の暗号解読攻撃によりRSA暗号を攻撃した場合、スーパーコンピュータを使用しても数年は必要と言われています。しかし、サイドチャネル攻撃が成立すると、図4のように一つの観測波形のみから秘密鍵が特定されてしまいます。

図4 RSA暗号の復号処理時のサイドチャネル漏洩波形と秘密鍵の読み取り

同じく、AESに対しても改造したArduino UNOを使用してサイドチャネル漏洩波形を観測し、AESのようなブロック暗号に対する代表的なサイドチャネル攻撃法である「相関電力解析」(CPA)を実行します。演習時間の制約のため、AESをマイコン実装するためのプログラムとCPAプログラムは予め準備したものを受講生に配布します。

受講生は配布されたAESプログラムをArduino UNOに書き込み、100通りの平文(ひらぶん)を暗号化中のサイドチャネル漏洩波形をオシロスコープで観測し保存します。保存した波形に対してCPAを実行し、AESの第10ラウンドのラウンド鍵を1バイトずつ、全16バイト特定できることを確認します。AESの秘密鍵を総当たり攻撃する場合の天文学的な探索空間に対して、サイドチャネル攻撃が成立すると鍵探索空間が約4,000まで縮小され、限られた演習時間の中でさえ鍵を特定できてしまいます。

以上のように、RSA暗号とAESを対象としたサイドチャネル攻撃実験により秘密鍵を読み取る体験を通して、サイドチャネル攻撃の脅威を体感し、安易な暗号実装の危険性を理解することができるのです。

本演習の実施状況~他大学からの受講生を受け入れも

本科目は、平成29年度~令和2年度実施の情報セキュリティ教育プログラム「enPiT2-Security」において開発された、情報セキュリティ分野の実践的人材を育成するカリキュラム「Basic SecCapコース」のなかで、PBL演習科目の一つとして筆者らが立ち上げたものです。

2021年度以降は、岡山大学工学部の科目として開講しています。2021年度、2022年度は工学部電気通信系学科の選択科目「セキュリティ実装演習B」として、2023年度は工学部の学科再編に伴うカリキュラム再編もあり、科目名を「ハードウェアセキュリティ実験」と変更し、工学部情報・電気・数理データサイエンス系の選択科目として開講しました。いずれの場合も3年次科目として開講しています。

本科目には他大学からも受講生を受け入れています。これまでに岡山県立大学、岡山理科大学、九州工業大学、北九州市立大学、そして長崎県立大学より、2021年度~2023年度の3年間でそれぞれ36名、29名、24名を受け入れました。岡山大学工学部からの受講生は2021年度より36名、39名、48名と推移しており、各年の総受講生数はそれぞれ72名、68名、72名となっています。

これまでに説明した通り、本演習の内容は代数学や離散数学から暗号アルゴリズム、それをマイコン実装するためのソフトウェアのコーディング、さらに暗号ハードウェアの物理的特性や挙動と、それを計測する技術と幅広い分野に跨っています。そこで前半パートを代数学や離散数学、暗号アルゴリズムのスペシャリストであり、プログラミングにも習熟した野上保之教授が担当し、後半パートをディジタルICの電気回路・電子回路・電磁気学的特性、および計測技術に習熟した筆者が担当することで、暗号ハードウェアの実装とサイドチャネル攻撃について幅広く、かつ先進的な演習を提供しています。 実験科目では、測定器の設定ミス、機材の動作エラー、受講生のちょっとした勘違いなどによってもトラブルが発生します。そのようなトラブルは詳細な実験手順書の準備により回避可能かもしれませんが、分厚いマニュアルに従った作業は多くの場合は退屈であり、その結果としてミスも発生します。つまり、トラブルを完全に排除することは簡単ではありません。一方、そのようなトラブルは熟練者が現場を確認すれば、直ちに解決できることが多いです。そのため本演習科目は対面形式により実施しています。新型コロナウイルス禍の時期にはオンライン形式による実施も経験しましたが、2023年度は対面形式で実施しました。今後も原則として対面形式で実施する予定です。


セキュリティ人材育成法の過去記事はこちら


著者紹介
五百旗頭 健吾(Kengo Iokibe)
岡山大学 学術研究院環境生命自然科学学域(工学部兼担) 准教授

岡山大学卒。主な研究分野は暗号ハードウェアを中心にセキュアハードウェア実装、プリント回路基板や複合システムのEMC設計、EMCシミュレーション、ディジタル半導体集積回路やパワーエレクトロニクス回路のEMCモデリング、機械学習を利用した多目的設計手法について研究している。学生時代は大気エアロゾルを観測するライダ(LiDAR)システムを開発。電子情報通信学会(IEICE)シニア会員、および電気学会、エレクトロニクス実装学会、IEEE会員

「セキュリティ人材育成法」の最新話公開は、メールマガジンでもご案内致します。是非JAPANSecuritySummit Updateのメールマガジンにご登録ください。
メールマガジンの登録はこちらからお願いします

関連記事

サイバーセキュリティの課題をテーマ別に紹介中!!