(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024142936
(43)【公開日】2024-10-11
(54)【発明の名称】情報処理装置及び情報処理方法
(51)【国際特許分類】
G06F 21/75 20130101AFI20241003BHJP
【FI】
G06F21/75
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2023055356
(22)【出願日】2023-03-30
(71)【出願人】
【識別番号】591128453
【氏名又は名称】株式会社メガチップス
(74)【代理人】
【識別番号】100115381
【弁理士】
【氏名又は名称】小谷 昌崇
(74)【代理人】
【識別番号】100136353
【弁理士】
【氏名又は名称】高尾 建吾
(72)【発明者】
【氏名】中野 正隆
(57)【要約】
【課題】不正アクセスから秘密情報を確実に保護することが可能な情報処理装置を得る。
【解決手段】情報処理装置は、入力された入力データに対して、処理時間が異なる実現方式を用いた処理を実行することによって、同一値の入力データに対して同一値の出力データを異なる出力タイミングで出力する、複数の演算回路と、乱数値を出力する乱数生成回路と、前記複数の演算回路から出力された複数の出力データを前記乱数値に基づいて配列又は選択する出力回路と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
入力された入力データに対して、処理時間が異なる実現方式を用いた処理を実行することによって、同一値の入力データに対して同一値の出力データを異なる出力タイミングで出力する、複数の演算回路と、
乱数値を出力する乱数生成回路と、
前記複数の演算回路から出力された複数の出力データを前記乱数値に基づいて配列又は選択する出力回路と、
を備える、情報処理装置。
【請求項2】
前記実現方式はアルゴリズムを含む、
請求項1に記載の情報処理装置。
【請求項3】
前記実現方式は実装方式を含む、
請求項1に記載の情報処理装置。
【請求項4】
前記複数の演算回路の各々へ入力される入力データは、複数バイトのデータのバイト単位のデータであり、
前記複数の演算回路の各々から出力される出力データは、複数バイトのデータのバイト単位のデータであり、
前記出力回路は、前記複数の演算回路から出力された複数の出力データを前記乱数値に基づくシフト量だけ第1方向に巡回シフトすることによって配列する第1巡回シフト回路を有する、
請求項1に記載の情報処理装置。
【請求項5】
前記複数の演算回路へ入力すべき複数の入力データを前記乱数値に基づくシフト量だけ前記第1方向とは逆の第2方向に巡回シフトする第2巡回シフト回路をさらに備える、
請求項4に記載の情報処理装置。
【請求項6】
前記複数の演算回路の各々へ入力される入力データは、複数バイトのデータのバイト単位のデータであり、
前記複数の演算回路の各々から出力される出力データは、複数バイトのデータのバイト単位のデータであり、
前記出力回路は、前記複数の演算回路のうち少なくとも二つの演算回路から出力された少なくとも二つの出力データの中から一の出力データを前記乱数値に基づいて選択する第1選択回路を有する、
請求項1に記載の情報処理装置。
【請求項7】
前記少なくとも二つの演算回路へ入力すべき少なくとも二つの入力データを前記乱数値に基づいて選択する第2選択回路をさらに備える、
請求項6に記載の情報処理装置。
【請求項8】
前記出力回路は、前記複数の演算回路から出力された複数の出力データの中から一の出力データを前記乱数値に基づいて選択する選択回路を有する、
請求項1に記載の情報処理装置。
【請求項9】
前記複数の演算回路には同一の前記入力データが入力される、
請求項8に記載の情報処理装置。
【請求項10】
前記複数の演算回路のうち少なくとも二つの演算回路から出力された少なくとも二つの出力データの比較結果に基づいて、故障攻撃を検出する検出回路と、
前記検出回路が故障攻撃を検出した場合に、前記乱数生成回路を起動する制御回路と、
をさらに備える、
請求項9に記載の情報処理装置。
【請求項11】
前記制御回路はさらに、前記検出回路が故障攻撃を検出した場合に、前記複数の演算回路のうち前記二つの演算回路以外の演算回路の動作を有効化する、
請求項9に記載の情報処理装置。
【請求項12】
複数の演算回路が、入力された入力データに対して、処理時間が異なる実現方式を用いた処理を実行することによって、同一値の入力データに対して同一値の出力データを異なる出力タイミングで出力し、
乱数生成回路が、乱数値を出力し、
出力回路が、前記複数の演算回路から出力された複数の出力データを前記乱数値に基づいて配列又は選択する、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置及び情報処理方法に関する。
【背景技術】
【0002】
特許文献1には、コマンド実行部、検出部、及び保護処理部を備える情報処理装置が開示されている。コマンド実行部は、取得したコマンドに対応する処理を実行する。検出部は、不正アクセスを検出する。保護処理部は、検出部が不正アクセスを検出した場合に、コマンド実行部によるコマンドの実行開始タイミングを、乱数に基づいてランダムに変化させる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に開示された情報処理装置によると、検出部による不正アクセスの検出機能が攻撃者によって回避又は無効化された場合には、保護処理部が動作しないために不正アクセスを許してしまうという問題がある。
【0005】
本発明はかかる問題を解決するために成されたものであり、不正アクセスから秘密情報を確実に保護することが可能な情報処理装置及び情報処理方法を得ることを目的とする。
【課題を解決するための手段】
【0006】
本発明の第1態様に係る情報処理装置は、入力された入力データに対して、処理時間が異なる実現方式を用いた処理を実行することによって、同一値の入力データに対して同一値の出力データを異なる出力タイミングで出力する、複数の演算回路と、乱数値を出力する乱数生成回路と、前記複数の演算回路から出力された複数の出力データを前記乱数値に基づいて配列又は選択する出力回路と、を備える。
【0007】
第1態様によれば、複数の演算回路に同一値の入力データが入力された時の出力データの出力タイミングは演算回路毎に異なるため、それに応じて出力回路からのデータ出力タイミングも乱数値によって変動する。従って、クロックラインへグリッチを挿入すること等によってフォールトを発生させ、入力データの入力値とフォールトの発生に成功したグリッチ挿入タイミングとの関係性を解析することによって秘密情報を窃取する故障感度攻撃を受けた場合であっても、上記関係性は乱数値に応じて変動するため、故障感度攻撃は成立しない。その結果、故障感度攻撃による不正アクセスから秘密情報を確実に保護することが可能となる。また、演算回路の演算処理に伴う遅延時間を、採用する実現方式によってロジック設計段階で設定できるため、遅延素子によって遅延時間を設定する場合と比較すると、後工程での厳密な調整が不要となるため実装を容易化でき、また、温度等の環境要因に対する耐性を向上することが可能となる。
【0008】
本発明の第2態様に係る情報処理装置は、第1態様において、前記実現方式はアルゴリズムを含む。
【0009】
第2態様によれば、複数の演算回路のアルゴリズムを異ならせることによって、複数の演算回路の処理時間を異ならせることができる。
【0010】
本発明の第3態様に係る情報処理装置は、第1態様において、前記実現方式は実装方式を含むと良い。
【0011】
第3態様によれば、複数の演算回路の実装方式を異ならせることによって、複数の演算回路の処理時間を異ならせることができる。
【0012】
本発明の第4態様に係る情報処理装置は、第1態様において、前記複数の演算回路の各々へ入力される入力データは、複数バイトのデータのバイト単位のデータであり、前記複数の演算回路の各々から出力される出力データは、複数バイトのデータのバイト単位のデータであり、前記出力回路は、前記複数の演算回路から出力された複数の出力データを前記乱数値に基づくシフト量だけ第1方向に巡回シフトすることによって配列する第1巡回シフト回路を有する。
【0013】
第4態様によれば、乱数値に応じて第1巡回シフト回路のシフト量を異ならせることによって、入力値とグリッチ挿入タイミングとの関係性の変動を実現する。従って、非選択の場合に演算結果に寄与しない無駄な演算回路が不要となるため、回路規模を削減することが可能となる。
【0014】
本発明の第5態様に係る情報処理装置は、第4態様において、前記複数の演算回路へ入力すべき複数の入力データを前記乱数値に基づくシフト量だけ前記第1方向とは逆の第2方向に巡回シフトする第2巡回シフト回路をさらに備える。
【0015】
第5態様によれば、第1巡回シフト回路の巡回シフト動作に対応する巡回シフト動作を第2巡回シフト回路が実行することにより、入力データと出力データとを適切に対応付けることが可能となる。
【0016】
本発明の第6態様に係る情報処理装置は、第1態様において、前記複数の演算回路の各々へ入力される入力データは、複数バイトのデータのバイト単位のデータであり、前記複数の演算回路の各々から出力される出力データは、複数バイトのデータのバイト単位のデータであり、前記出力回路は、前記複数の演算回路のうち少なくとも二つの演算回路から出力された少なくとも二つの出力データの中から一の出力データを前記乱数値に基づいて選択する第1選択回路を有する。
【0017】
第6態様によれば、巡回シフト回路ではなく選択回路によって、入力値とグリッチ挿入タイミングとの関係性の変動を実現する。従って、巡回シフト回路を使用する場合と比較すると、回路規模を削減できるとともに、乱数値の必要ビット幅を削減できるため乱数生成処理の負荷を低減することが可能となる。
【0018】
本発明の第7態様に係る情報処理装置は、第6態様において、前記少なくとも二つの演算回路へ入力すべき少なくとも二つの入力データを前記乱数値に基づいて選択する第2選択回路をさらに備える。
【0019】
第7態様によれば、第1選択回路の選択動作に対応する選択動作を第2選択回路が実行することにより、入力データと出力データとを適切に対応付けることが可能となる。
【0020】
本発明の第8態様に係る情報処理装置は、第1態様において、前記出力回路は、前記複数の演算回路から出力された複数の出力データの中から一の出力データを前記乱数値に基づいて選択する選択回路を有する。
【0021】
第8態様によれば、複数の演算回路から出力された複数の出力データの中から一の出力データを乱数値に基づいて選択することによって、入力値とグリッチ挿入タイミングとの関係性の変動を実現する。従って、複数の演算回路の前段への巡回シフト回路又は他の選択回路等の実装が不要となり、これらの回路の処理に伴う遅延時間の発生を回避できるため、高速動作が可能となる。また、各演算回路の処理は独立しているため、故障感度攻撃の対策処理を無効化したい場合には、複数の演算回路のうち演算処理に伴う遅延時間が最も短い演算回路を選択することによって、他の演算回路の影響を受けることなく遅延時間を最小化できるため、高速動作が可能となる。さらに、複数の演算回路の個数を削減することによって乱数値の必要ビット幅を削減できるため、乱数生成処理の負荷を低減することが可能となる。
【0022】
本発明の第9態様に係る情報処理装置は、第8態様において、前記複数の演算回路には同一の前記入力データが入力される。
【0023】
第9態様によれば、複数の演算回路には同一の入力データが入力されるため、複数の演算回路は、同一値の入力データに対して同一値の出力データを異なる出力タイミングで出力することが可能となる。
【0024】
本発明の第10態様に係る情報処理装置は、第9態様において、前記複数の演算回路のうち少なくとも二つの演算回路から出力された少なくとも二つの出力データの比較結果に基づいて、故障攻撃を検出する検出回路と、前記検出回路が故障攻撃を検出した場合に、前記乱数生成回路を起動する制御回路と、をさらに備える。
【0025】
第10態様によれば、検出回路は、演算回路の出力データの比較結果に基づいて故障攻撃を検出するため、電圧センサ等のアナログセンサを用いる場合と比較して、故障攻撃の検出精度を向上することが可能となる。また、制御回路は、検出回路が故障攻撃を検出した場合に乱数生成回路を起動し、故障攻撃の検出前には乱数生成回路は動作しないため、消費電力を削減することが可能となる。
【0026】
本発明の第11態様に係る情報処理装置は、第10態様において、前記制御回路はさらに、前記検出回路が故障攻撃を検出した場合に、前記複数の演算回路のうち前記二つの演算回路以外の演算回路の動作を有効化する。
【0027】
第11態様によれば、制御回路はさらに、検出回路が故障攻撃を検出した場合に、複数の演算回路のうち二つの演算回路以外の演算回路の動作を有効化し、故障攻撃の検出前には二つの演算回路以外の演算回路の動作は有効化しないため、消費電力をさらに削減することが可能となる。
【0028】
本発明の第12態様に係る情報処理方法は、複数の演算回路が、入力された入力データに対して、処理時間が異なる実現方式を用いた処理を実行することによって、同一値の入力データに対して同一値の出力データを異なる出力タイミングで出力し、乱数生成回路が、乱数値を出力し、出力回路が、前記複数の演算回路から出力された複数の出力データを前記乱数値に基づいて配列又は選択する。
【0029】
第12態様によれば、複数の演算回路に同一値の入力データが入力された時の出力データの出力タイミングは演算回路毎に異なるため、それに応じて出力回路からのデータ出力タイミングも乱数値によって変動する。従って、クロックラインへグリッチを挿入すること等によってフォールトを発生させ、入力データの入力値とフォールトの発生に成功したグリッチ挿入タイミングとの関係性を解析することによって秘密情報を窃取する故障感度攻撃を受けた場合であっても、上記関係性は乱数値に応じて変動するため、故障感度攻撃は成立しない。その結果、故障感度攻撃による不正アクセスから秘密情報を確実に保護することが可能となる。また、演算回路の演算処理に伴う遅延時間を、採用する実現方式によってロジック設計段階で設定できるため、遅延素子によって遅延時間を設定する場合と比較すると、後工程での厳密な調整が不要となるため実装を容易化でき、また、温度等の環境要因に対する耐性を向上することが可能となる。
【発明の効果】
【0030】
本発明によれば、不正アクセスから秘密情報を確実に保護することが可能となる。
【図面の簡単な説明】
【0031】
【
図1】第1実施形態に係る情報処理装置の構成を簡略化して示す図である。
【
図2】SubBytes処理回路における処理の流れを模式的に示す図である。
【
図3】情報処理装置が故障感度攻撃を受けている状況を模式的に示す図である。
【
図4】第1実施形態の変形例に係る情報処理装置のうち、SubBytes処理回路の構成の一部を抜き出して示す図である。
【
図5】第2実施形態に係る情報処理装置のうち、SubBytes処理回路の構成を示す図である。
【
図6】第2実施形態の第1変形例に係る情報処理装置のうち、SubBytes処理回路の構成を示す図である。
【
図7】第2実施形態の第2変形例に係る情報処理装置のうち、SubBytes処理回路の構成を示す図である。
【発明を実施するための形態】
【0032】
以下、本発明の実施形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。また、以下に述べる複数の実施形態は任意に組み合わせて適用することが可能である。
【0033】
<第1実施形態>
図1は、本発明の第1実施形態に係る情報処理装置100Aの構成を簡略化して示す図である。本実施形態の例において、情報処理装置100Aは、共通鍵暗号方式の一つであるAES(Advanced Encryption Standard)の暗号化回路として構成されている。
【0034】
例えばAESの暗号化回路は、SubBytes処理回路1A、ShiftRows処理回路2、MixColumns処理回路3、レジスタ回路4、及びAddRoundKey処理回路5を備えている。SubBytes処理回路1Aは、例えば第1バイト~第16バイトのバイトB1~B16を含む16バイトの入力データD1に対して、1バイト単位でS-BOXを用いたデータ変換処理を行う。ShiftRows処理回路2は、SubBytes処理回路1Aから入力されたデータに対して、行単位でデータシフトによる順序の入れ替え処理を行う。MixColumns処理回路3は、ShiftRows処理回路2から入力されたデータに対して、列単位で行列演算処理を行う。AddRoundKey処理回路5は、MixColumns処理回路3からレジスタ回路4を介して入力されたデータに対して、1バイト単位でラウンド鍵を用いたデータ変換処理を行う。レジスタ回路4には、クロックCが入力される。これら一連の処理を1ラウンドとし、AddRoundKey処理回路5からの出力データを入力データD1としてSubBytes処理回路1Aに入力しつつ、例えば10ラウンドの処理が繰り返し実行される。なお、入力データD1のバイト数及び繰り返しのラウンド数は、本実施形態の例に限られない。また、本発明は、AESに限らず、Blowfish,Twofish,Camellia,又はCLEFIA等の、S-BOXを用いた任意の共通鍵暗号方式に適用可能である。
【0035】
SubBytes処理回路1Aは、巡回シフト回路11と、その後段に接続された演算回路12と、その後段に接続された巡回シフト回路13と、巡回シフト回路11,13に接続された乱数生成回路14とを有している。
【0036】
演算回路12は、複数(この例では16個)の演算回路12-1~12-16を含む。巡回シフト回路11から各演算回路12-1~12-16へ入力される入力データは、16バイトの入力データD1の1バイト単位のデータである。演算回路12-1~12-16は、入力された入力データに対して、異なる実現方式を用いたデータ変換処理を実行することによって、互いに異なる出力タイミングで出力データを出力する。実現方式は、アルゴリズム又は実装方式を含む。複数の演算回路12のアルゴリズム又は実装方式を異ならせることによって処理の所要時間を異ならせることができ、その結果、出力データの出力タイミングを異ならせることができる。また、演算回路12-1~12-16は、入力データが同一値である場合には、同一値の出力データを出力する。各演算回路12-1~12-16から出力される出力データは、1バイト単位のデータである。S-BOXを用いた演算回路12-1~12-16のアルゴリズムとしては、合成体方式、拡大体方式、又は伊藤・辻井のアルゴリズム等、処理時間が異なる既知のアルゴリズムを任意に使用することができる。また、S-BOXを用いた演算回路12-1~12-16の実装方式としては、SOP(sum of product)を用いた実装方式、BDD(binary decision diagram)を用いた実装方式、又はテーブル方式等、処理時間が異なる既知の実装方式を任意に使用することができる。
【0037】
なお、
図1に示した例では、16バイトの入力データD1に対して1バイト単位の16個の演算回路12-1~12-16を実装することによって1ラウンドが1サイクルで実行される。この例に限らず、例えば、8個の演算回路12-1~12-8を実装することによって1ラウンドが2サイクルで実行されても良いし、4個の演算回路12-1~12-4を実装することによって1ラウンドが4サイクルで実行されても良い。また、各演算回路12の処理単位は、1バイトに限らず、1バイト未満であっても良いし、複数バイトであっても良い。
【0038】
乱数生成回路14は、疑似乱数生成回路又は真正乱数生成回路等の既知の回路を任意に使用することができる。乱数生成回路14は、乱数値Rを生成する。乱数値Rは、巡回シフト回路11,13に入力される。巡回シフト回路13は第1巡回シフト回路であり、巡回シフト回路13の巡回シフト方向は第1方向であり、巡回シフト回路11は第2巡回シフト回路であり、巡回シフト回路11の巡回シフト方向は第2方向である。
【0039】
巡回シフト回路11は、乱数値Rに基づいて設定されるシフト量だけ、AddRoundKey処理回路5から入力された入力データD1を第2方向(例えば左方向)にシフトする。
【0040】
巡回シフト回路13は、入力された乱数値Rに基づいて設定される、巡回シフト回路11のシフト量と同一のシフト量だけ、演算回路12-1~12-16から入力された入力データを、第2方向とは逆の第1方向(例えば右方向)にシフトする。巡回シフト回路13は、複数の演算回路12-1~12-16から出力された複数の出力データを乱数値Rに基づいて配列する出力回路の一例に相当する。
【0041】
図2は、SubBytes処理回路1Aにおける処理の流れを模式的に示す図である。(A)に示すように、巡回シフト回路11には、バイトB1~B16を含む16バイトの入力データD1が入力される。(B)に示すように、巡回シフト回路11は、乱数値Rに基づいてランダムに設定されるシフト量だけ、入力されたデータを左方向にシフトする。シフト量は、各演算回路12の処理単位の整数倍である。この例では各演算回路12の処理単位が1バイトであるため、シフト量は例えば3バイト分となっている。(C)に示すように、演算回路12-1~12-16は、S-BOXを用いたデータ変換処理によって、バイトB1~B16をバイトB1’~B16’に変換する。(D)に示すように、巡回シフト回路13は、乱数値Rに基づいてランダムに設定されるシフト量(この例では3バイト分)だけ、入力されたデータを右方向にシフトする。これにより、ランダムにシフトされたバイト配列を入力データD1のバイト配列に戻す。
【0042】
図3は、情報処理装置100Aが故障感度攻撃(Fault Sensitivity Analysis:FSA)を受けている状況を模式的に示す図である。故障感度攻撃では、攻撃者は、情報処理装置100Aのクロックラインへグリッチを挿入すること等によってフォールトを発生させ、入力データの特定バイトの入力値とフォールトの発生に成功したグリッチ挿入タイミングとの関係性を解析することによって、情報処理装置100Aから秘密情報を窃取しようと試みる。その際、攻撃者は、フォールトを発生させるグリッチ挿入タイミングの限界値を特定するために、同一の入力値に対してグリッチ挿入タイミングを変更しながら、複数回のグリッチ挿入を試行する。
【0043】
攻撃者は、入力データD1の特定バイト(以下の例ではバイトB1とする)を攻撃対象として、故障感度攻撃を行う。攻撃場所は例えばレジスタ回路4の入出力であり、レジスタ回路4からのデータ出力タイミングからレジスタ回路4へのデータ入力タイミングまでの期間内にグリッチ挿入が行われる。
【0044】
図3を参照して、時刻T0は、レジスタ回路4からのデータ出力タイミングである。バイトB1は、乱数値Rに応じて複数の演算回路12-1~12-16のいずれかで処理される。攻撃1回目では、バイトB1を処理した演算回路12からのデータ出力は時刻T1において完了する。攻撃者が時刻T1より前の時刻T2においてグリッチを挿入したことにより、攻撃1回目ではバイトB1のフォールトに成功する。
【0045】
攻撃1回目でフォールトに成功したことにより、攻撃者は、攻撃2回目では時刻T2より前の時刻T4においてグリッチを挿入する。バイトB1は、乱数値Rに応じて複数の演算回路12-1~12-16のいずれかで処理される。攻撃2回目では、バイトB1を処理した演算回路12からのデータ出力は時刻T4より前の時刻T3において完了する。従って、攻撃者が時刻T3より後の時刻T4においてグリッチを挿入したことにより、攻撃2回目ではバイトB1のフォールトに失敗する。
【0046】
攻撃2回目でフォールトに失敗したことにより、攻撃者は、攻撃3回目では時刻T2より前かつ時刻T4より後の時刻T6においてグリッチを挿入する。バイトB1は、乱数値Rに応じて複数の演算回路12-1~12-16のいずれかで処理される。攻撃3回目では、バイトB1を処理した演算回路12からのデータ出力は時刻T6より後の時刻T5において完了する。従って、攻撃者が時刻T5より前の時刻T6においてグリッチを挿入したことにより、攻撃3回目ではバイトB1のフォールトに成功する。その結果、攻撃者は、入力データD1のバイトB1にフォールトを発生させるグリッチ挿入タイミングの限界値は、時刻T6であると特定する。
【0047】
ところが、本実施形態において入力データD1のバイトB1は、演算回路12-1に限らず、乱数値Rに基づいてランダムにシフトされた複数の演算回路12-1~12-16のいずれかで処理される。バイトB1に対する演算処理に要する時間は、演算回路12-1~12-16によって異なる。従って、グリッチの挿入タイミングを異ならせて攻撃者がグリッチの挿入を繰り返し行ったとしても、バイトB1を攻撃対象とする攻撃にはなっておらず、故障感度攻撃は成立しない。つまり、攻撃者は、バイトB1に関するグリッチ挿入タイミングの限界値は時刻T6であると誤認していることになる。
【0048】
このように本実施形態に係る情報処理装置100Aによれば、複数の演算回路12に同一値の入力データが入力された時の出力データの出力タイミングは演算回路12毎に異なるため、それに応じて巡回シフト回路13(出力回路)からのデータ出力タイミングも乱数値Rによって変動する。従って、クロックラインへグリッチを挿入すること等によってフォールトを発生させ、入力データの入力値とフォールトの発生に成功したグリッチ挿入タイミングとの関係性を解析することによって秘密情報を窃取する故障感度攻撃を受けた場合であっても、上記関係性は乱数値Rに応じて変動するため、故障感度攻撃は成立しない。その結果、故障感度攻撃による不正アクセスから秘密情報を確実に保護することが可能となる。また、演算回路12の演算処理に伴う遅延時間を、採用する実現方式によってロジック設計段階で設定できるため、遅延素子によって遅延時間を設定する場合と比較すると、後工程での厳密な調整が不要となるため実装を容易化でき、また、温度等の環境要因に対する耐性を向上することが可能となる。
【0049】
また、本実施形態に係る情報処理装置100Aによれば、乱数値Rに応じて巡回シフト回路11,13のシフト量を異ならせることによって、入力値とグリッチ挿入タイミングとの関係性の変動を実現する。従って、非選択の場合に演算結果に寄与しない無駄な演算回路が不要となるため、回路規模を削減することが可能となる。
【0050】
なお、本実施形態に係る情報処理装置100Aでは、複数の演算回路12-1~12-16が、処理時間が異なる実現方式(アルゴリズム又は実装方式)を用いたデータ変換処理を実行することによって、互いに異なる出力タイミングで出力データを出力するように構成したが、出力タイミングを異ならせる手法はこの例に限られない。実現方式を異ならせる手法とは異なる手法ではあるが、例えば、巡回シフト回路11の出力と各演算回路12-1~12-16の入力との間に少なくとも一つ遅延素子を挿入し、挿入する遅延素子の個数を演算回路12-1~12-16毎に異ならせることによって、出力データの出力タイミングを異ならせても良い。後述する他の実施形態及び他の変形例についても同様である。
【0051】
図4は、第1実施形態の変形例に係る情報処理装置100Bのうち、SubBytes処理回路1Bの構成の一部を抜き出して示す図である。巡回シフト回路11に代えて選択回路15(15a,15b,・・・)が実装されており、巡回シフト回路13に代えて選択回路16(16a,16b,・・・)が実装されている。
【0052】
選択回路15aは、乱数生成回路14から入力される乱数値Rに基づく選択によって、バイトB1,B2の一方を演算回路12-1に入力し、他方を演算回路12-2に入力する。同様に、選択回路15bは、乱数生成回路14から入力される乱数値Rに基づく選択によって、バイトB3,B4の一方を演算回路12-3に入力し、他方を演算回路12-4に入力する。選択回路16は第1選択回路であり、選択回路15は第2選択回路である。
【0053】
S-BOXを用いたデータ変換処理によって、演算回路12-1はバイトB1,B2の一方をバイトB1’,B2’の一方に変換し、演算回路12-2はバイトB1,B2の他方をバイトB1’,B2’の他方に変換する。同様に、S-BOXを用いたデータ変換処理によって、演算回路12-3はバイトB3,B4の一方をバイトB3’,B4’の一方に変換し、演算回路12-4はバイトB3,B4の他方をバイトB3’,B4’の他方に変換する。
【0054】
選択回路16aは、乱数生成回路14から入力される乱数値Rに基づく選択によって、バイトB1’を第1バイトのデータとして出力し、バイトB2’を第2バイトのデータとして出力する。同様に、選択回路16bは、乱数生成回路14から入力される乱数値Rに基づく選択によって、バイトB3’を第3バイトのデータとして出力し、バイトB4’を第4バイトのデータとして出力する。選択回路16a,16b,・・・は、複数の演算回路12-1~12-16から出力された複数の出力データを乱数値Rに基づいて選択する出力回路の一例に相当する。
【0055】
図4では省略したが、第5バイト~第16バイトのバイトB5~B16についても同様の構成及び動作が適用される。
【0056】
なお、
図4に示した例では、選択回路15,16は互いに隣接する二つの演算回路12に関して入力データ及び出力データの選択を行ったが、この例に限られない。選択回路15,16は、互いに隣接する又は隣接しない二つ以上の演算回路12に関して入力データ及び出力データの選択を行えば良い。
【0057】
本変形例に係る情報処理装置100Bによれば、巡回シフト回路11,13ではなく選択回路15,16によって、入力値とグリッチ挿入タイミングとの関係性の変動を実現する。従って、巡回シフト回路11,13を使用する場合と比較すると、回路規模を削減できるとともに、乱数値Rの必要ビット幅を削減できるため乱数生成処理の負荷を低減することが可能となる。
【0058】
<第2実施形態>
図5は、本発明の第2実施形態に係る情報処理装置100Cのうち、入力データD1のバイトB1に関するSubBytes処理回路1Cの構成を示す図である。SubBytes処理回路1Cは、演算回路12と、その後段に接続された選択回路16と、選択回路16に接続された乱数生成回路14とを有している。入力データD1の他のバイトB2~B16についても、
図5と同様のSubBytes処理回路1Cが構成される。ここで、入力データD1のバイト毎に乱数生成回路14が個別に設けられても良いし、一の乱数生成回路14が全バイトで共有されても良い。乱数生成回路14を入力データD1の全バイトで共有する場合は、乱数生成回路14が生成した例えば2ビットの乱数値Rを全バイトで共通に使用しても良いし、乱数生成回路14が生成した例えば32ビットの乱数値Rのうちの各2ビットを各バイトで個別に使用しても良い。
【0059】
演算回路12は、複数(この例では3個)の演算回路12-1~12-3を含む。但し、演算回路12の個数は3個に限らず2個以上であれば良い。各演算回路12-1~12-3へ入力される入力データは、1バイト長のバイトB1である。演算回路12-1~12-3は、入力されたバイトB1に対して、異なる実現方式を用いたデータ変換処理を実行することによって、互いに異なる出力タイミングでバイトB1a~B1cを出力する。また、演算回路12-1~12-3は、入力されたバイトB1が同一値である場合には、同一値のバイトB1a~B1cを出力する。各演算回路12-1~12-3から出力される出力データは、1バイト長のバイトB1a~B1cである。
【0060】
乱数生成回路14は、疑似乱数生成回路又は真正乱数生成回路等の既知の回路を任意に使用することができる。乱数生成回路14は、乱数値Rを生成する。乱数値Rは、選択回路16に入力される。
【0061】
選択回路16は、複数の演算回路12-1~12-3から出力された複数のバイトB1a~B1cの中から一のバイトB1を乱数値Rに基づいて選択し、選択した一のバイトB1を出力する。選択回路16は、複数の演算回路12-1~12-3から出力された複数のバイトB1a~B1cを乱数値Rに基づいて選択する出力回路の一例に相当する。
【0062】
本実施形態に係る情報処理装置100Cによれば、複数の演算回路12-1~12-3から出力された複数のバイトB1a~B1cの中から一のバイトB1を乱数値Rに基づいて選択することによって、入力値とグリッチ挿入タイミングとの関係性の変動を実現する。従って、複数の演算回路12-1~12-3の前段への巡回シフト回路11又は他の選択回路15等の実装が不要となり、これらの回路の処理に伴う遅延時間の発生を回避できるため、高速動作が可能となる。また、各演算回路12-1~12-3の処理は独立しているため、故障感度攻撃の対策処理を無効化したい場合には、複数の演算回路12-1~12-3のうち演算処理に伴う遅延時間が最も短い演算回路を選択することによって、他の演算回路の影響を受けることなく遅延時間を最小化できるため、高速動作が可能となる。さらに、複数の演算回路12-1~12-3の個数を削減することによって乱数値Rの必要ビット幅を削減できるため、乱数生成処理の負荷を低減することが可能となる。
【0063】
図6は、第2実施形態の第1変形例に係る情報処理装置100Dのうち、入力データD1のバイトB1に関するSubBytes 処理回路1Dの構成を示す図である。
図5に示した構成に対して、制御回路17及び検出回路18が追加されている。情報処理装置100Dが故障感度攻撃を受けていない通常時において、乱数生成回路14の動作は停止されている。
【0064】
検出回路18には、演算回路12-1~12-3から出力されたバイトB1a~B1cが入力される。検出回路18は、バイトB1a~B1cを比較器によって比較し、全てのバイトB1a~B1cが一致していることによって故障攻撃(以下の例では故障感度攻撃とする)を受けていないことを検出し、少なくとも一つのバイトB1a~B1cが一致していないことによって故障感度攻撃を受けていることを検出する。検出回路18は、その検出結果を制御回路17に入力する。
【0065】
検出回路18が故障感度攻撃を受けていないことを検出している場合には、制御回路17は、制御信号S1によって乱数生成回路14の動作を停止する。また、制御回路17は、バイトB1a~B1cの多数決をとることにより、制御信号S2によって、多数派である正常なバイトB1a~B1cのいずれかを選択回路16に選択させる。選択回路16は、制御信号S2に基づいて、多数派である正常なバイトB1a~B1cのいずれかを選択して出力する。グリッチの挿入等によってバイトB1a~B1cの過半数にフォールトが発生するまでは、多数決によって正常な出力データバイトB1a~B1cが出力されることが保証される。
【0066】
検出回路18が故障感度攻撃を受けていることを検出している場合には、制御回路17は、制御信号S1によって乱数生成回路14を起動し、また、制御信号S2によって選択回路16に乱数値Rに基づく選択動作を実行させる。選択回路16は、乱数値Rに基づいて、演算回路12-1~12-3から選択回路16に入力されたバイトB1a~B1cのいずれかを選択して出力する。選択回路16は、複数の演算回路12-1~12-3から出力された複数のバイトB1a~B1cを乱数値Rに基づいて選択する出力回路の一例に相当する。
【0067】
なお、検出回路18は、演算回路12-1~12-3から出力されたバイトB1a~B1cの全てを比較する必要はなく、演算回路12-1~12-3のうち少なくとも二つの演算回路から出力された少なくとも二つのバイトB1a~B1cの比較結果に基づいて故障感度攻撃を検出すれば良い。
【0068】
本変形例に係る情報処理装置100Dによれば、検出回路18は、演算回路12-1~12-3から出力されたバイトB1a~B1cの比較結果に基づいて故障感度攻撃を検出するため、電圧センサ等のアナログセンサを用いる場合と比較して、故障感度攻撃の検出精度を向上することが可能となる。また、制御回路17は、検出回路18が故障感度攻撃を検出した場合に乱数生成回路14を起動し、故障感度攻撃の検出前には乱数生成回路14は動作しないため、消費電力を削減することが可能となる。
【0069】
図7は、第2実施形態の第2変形例に係る情報処理装置100Eのうち、SubBytes処理回路1Eの構成を示す図である。
図5に示した構成に対して、制御回路17、検出回路18、及び選択回路19,20が追加されている。情報処理装置100Eが故障感度攻撃を受けていない通常時において、乱数生成回路14の動作は停止されており、選択回路19,20は0を出力している。選択回路19から0が入力されることにより、演算回路12-3は有効な動作を停止する。選択回路20から0が入力されることにより、選択回路16はバイトB1aを選択して出力する。
【0070】
検出回路18には、演算回路12-1,12-2から出力されたバイトB1a,B1bが入力される。検出回路18は、バイトB1a,B1bを比較器によって比較し、バイトB1a,B1bが一致していることによって故障感度攻撃を受けていないことを検出し、バイトB1a,B1bが一致していないことによって故障感度攻撃を受けていることを検出する。検出回路18は、その検出結果を制御回路17に入力する。
【0071】
検出回路18が故障感度攻撃を受けていないことを検出している場合には、制御回路17は、制御信号S1によって乱数生成回路14の動作を停止し、また、制御信号S3によって選択回路19に0を出力させ、また、制御信号S4によって選択回路20に0を出力させる。
【0072】
検出回路18が故障感度攻撃を受けていることを検出している場合には、制御回路17は、制御信号S1によって乱数生成回路14を起動し、また、制御信号S3によって選択回路19にバイトB1を出力させ、また、制御信号S4によって選択回路20に乱数値Rを出力させる。選択回路19からバイトB1が入力されることにより、演算回路12-3は有効な動作を開始し、バイトB1cを出力する。選択回路20から乱数値Rが入力されることにより、選択回路16は、乱数値Rに基づいて、演算回路12-1~12-3から選択回路16に入力されたバイトB1a~B1cのいずれかを選択して出力する。選択回路16は、複数の演算回路12-1~12-3から出力された複数のバイトB1a~B1cを乱数値Rに基づいて選択する出力回路の一例に相当する。
【0073】
本変形例に係る情報処理装置100Eによれば、制御回路17は、検出回路18が故障感度攻撃を検出した場合に、複数の演算回路12-1~12-3のうち演算回路12-1,12-2以外の演算回路12-3の動作を有効化し、故障感度攻撃の検出前には演算回路12-3の動作は有効化しないため、消費電力をさらに削減することが可能となる。
【0074】
ここに開示される要素の機能は、当該開示される要素を実行するように構成された、あるいは当該開示される機能を実行するようにプログラミングされた汎用プロセッサ、専用プロセッサ、集積回路、ASIC(「特定用途向け集積回路」)、従来の回路構成及び/又はそれらの組み合わせを含む回路構成あるいは処理回路構成が用いられて実装されてもよい。プロセッサは、それが、その中にトランジスタ及び他の回路構成を含むとき、処理回路構成あるいは回路構成として見なされる。本開示において、回路構成、ユニットあるいは手段は、挙げられた機能を実行するハードウェア、あるいは当該機能を実行するようにプログラミングされたハードウェアである。ハードウェアは、挙げられた機能を実行するようにプログラミングされた、あるいは当該機能を実行するように構成された、ここで開示されるいかなるハードウェアあるいは既知の他のものであってもよい。ハードウェアが、あるタイプの回路構成として見なされるかもしれないプロセッサであるとき、回路構成、手段あるいはユニットは、ハードウェアとソフトウェアの組み合わせ、ハードウェアを構成するために用いられるソフトウェア及び/またはプロセッサである。
【符号の説明】
【0075】
11,13 巡回シフト回路
12(12-1~12-16) 演算回路
14 乱数生成回路
15(15a,15b),16(16a,16b),19,20 選択回路
17 制御回路
18 検出回路
100A~100E 情報処理装置