図面 (/)

技術 演算装置、演算方法、及び演算処理プログラム

出願人 大日本印刷株式会社
発明者 山田真生
出願日 2014年6月3日 (5年2ヶ月経過) 出願番号 2014-114810
公開日 2015年12月21日 (3年8ヶ月経過) 公開番号 2015-230495
状態 特許登録済
技術分野 ハードウェアの冗長性 記憶装置の機密保護 機械語命令の実行 ストアードプログラムにおける機密保護
主要キーワード サブコア サイドチャネル情報 メインコア 認証用デバイス 識別基準 ロックステップ 確認命令 対向機器
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2015年12月21日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (10)

課題

ロックステップ認証処理を同時に実行してもサイドチャネル情報が増長されず、高い耐タンパ性を実現することが可能な演算装置演算方法、及び演算処理プログラムを提供する。

解決手段

コア1は、不揮発性メモリ5から出力された命令コードを取得し、取得した命令コードを解釈し、解釈した命令コードに従って処理を実行する一方、コア2は、反転器32により2値論理反転された命令コードを取得し、取得した命令コードを、コア1とは反対の2値論理で解釈し、解釈した命令コードに従ってコア1とは反対の2値論理で処理を実行する。

概要

背景

故障すると安全性を損なう可能性のある制御装置等では、サブコア等の監視部によってメインコアを監視し、メインコアの異常を検出して制御装置の安全な動作を保証する策が講じられてきた。その一例として、特許文献1に開示されるように、ロックステップと称される技術が普及している。ロックステップとは、複数のコアが同じ処理を並列的に実行し、実行結果を比較して各コアが正常に動作していることを判断する技術である。ロックステップが故障の検出を目的とする一方で、例えば、特許文献2に開示されるように、暗号技術を用いて対向機器を認証することにより、安全な動作を保証する技術が知られている。

概要

ロックステップと認証処理を同時に実行してもサイドチャネル情報が増長されず、高い耐タンパ性を実現することが可能な演算装置演算方法、及び演算処理プログラムを提供する。コア1は、不揮発性メモリ5から出力された命令コードを取得し、取得した命令コードを解釈し、解釈した命令コードに従って処理を実行する一方、コア2は、反転器32により2値論理反転された命令コードを取得し、取得した命令コードを、コア1とは反対の2値論理で解釈し、解釈した命令コードに従ってコア1とは反対の2値論理で処理を実行する。

目的

本発明は、上記問題等に鑑みてなされたものであり、ロックステップと認証処理を同時に実行してもサイドチャネル情報が増長されず、高い耐タンパ性を実現することが可能な演算装置、演算方法、及び演算処理プログラムを提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

命令コードを記憶する不揮発性メモリと、前記不揮発性メモリから出力された命令コードを取得し、取得した命令コードを解釈し、解釈した命令コードに従って処理を実行し、当該処理の結果を示す第1結果データ内部メモリに記憶する第1演算ユニットと、前記不揮発性メモリから出力された前記命令コードを表現する2値論理反転する第1反転手段と、前記第1反転手段により2値論理が反転された命令コードを取得し、取得した命令コードを、前記第1演算ユニットとは反対の2値論理で解釈し、解釈した命令コードに従って前記第1演算ユニットとは反対の2値論理で処理を実行し、当該処理の結果を示す第2結果データを内部メモリに記憶する第2演算ユニットと、を備えることを特徴とする演算装置

請求項2

前記演算装置は、前記第2演算ユニットから出力された前記第2結果データを表現する2値論理を反転する第2反転手段を更に備え、前記不揮発性メモリは、前記第2反転手段により2値論理が反転された前記第2結果データを、所定の記憶領域に記憶することを特徴とする請求項1に記載の演算装置。

請求項3

前記第1演算ユニットは、前記第1結果データを前記不揮発性メモリにおける所定の記憶領域に書き込み、前記演算装置は、前記不揮発性メモリから出力された前記第1結果データを表現する2値論理を反転する第3反転手段を更に備え、前記第2演算ユニットは、前記第3反転手段により2値論理が反転された前記第1結果データを取得し、取得した第1結果データと、前記第2結果データとを比較することを特徴とする請求項1に記載の演算装置。

請求項4

命令コードを記憶する不揮発性メモリを備える演算装置における演算方法であって、前記不揮発性メモリから出力された命令コードを取得し、取得した命令コードを解釈し、解釈した命令コードに従って処理を実行し、当該処理の結果を示す第1結果データを内部メモリに記憶する第1演算ステップと、前記不揮発性メモリから出力された前記命令コードを表現する2値論理を反転するステップと、前記2値論理が反転された命令コードを取得し、取得した命令コードを、前記第1演算ステップとは反対の2値論理で解釈し、解釈した命令コードに従って前記第1演算ステップとは反対の2値論理で処理を実行し、当該処理の結果を示す第2結果データを内部メモリに記憶する第2演算ステップと、を含むことを特徴とする演算方法。

請求項5

命令コードを記憶する不揮発性メモリを備えるコンピュータに、前記不揮発性メモリから出力された命令コードを取得し、取得した命令コードを解釈し、解釈した命令コードに従って処理を実行し、当該処理の結果を示す第1結果データを内部メモリに記憶する第1演算ステップと、前記不揮発性メモリから出力された前記命令コードを表現する2値論理を反転するステップと、前記2値論理が反転された命令コードを取得し、取得した命令コードを、前記第1演算ステップとは反対の2値論理で解釈し、解釈した命令コードに従って前記第1演算ステップとは反対の2値論理で処理を実行し、当該処理の結果を示す第2結果データを内部メモリに記憶する第2演算ステップと、を実行させることを特徴とする演算処理プログラム

技術分野

0001

本発明は、複数のコアを備え、並列処理を行うことが可能な演算装置の技術分野に関する。

背景技術

0002

故障すると安全性を損なう可能性のある制御装置等では、サブコア等の監視部によってメインコアを監視し、メインコアの異常を検出して制御装置の安全な動作を保証する策が講じられてきた。その一例として、特許文献1に開示されるように、ロックステップと称される技術が普及している。ロックステップとは、複数のコアが同じ処理を並列的に実行し、実行結果を比較して各コアが正常に動作していることを判断する技術である。ロックステップが故障の検出を目的とする一方で、例えば、特許文献2に開示されるように、暗号技術を用いて対向機器を認証することにより、安全な動作を保証する技術が知られている。

先行技術

0003

特開2010−128627号公報
特開2013−138304号公報

発明が解決しようとする課題

0004

しかしながら、認証用デバイスとして知られているスマートカードTPM(Trusted Platform Module)等の分野においては、サイドチャネル攻撃が知られている。サイドチャネル攻撃とは、古くから暗号演算用制御装置において存在する脅威であり、演算時に消費される電力や発生する電磁波に代表される副次的な情報(サイドチャネル情報)を利用して演算内容推定する攻撃手法である。ロックステップと、認証処理とを、単一の演算装置にて実現しようとした場合には、ロックステップによって複数のコアが同一の処理を同時に実行することになり、消費電力や電磁波が増長されてサイドチャネル攻撃の標的になりやすくなってしまうことが問題となる。

0005

そこで、本発明は、上記問題等に鑑みてなされたものであり、ロックステップと認証処理を同時に実行してもサイドチャネル情報が増長されず、高い耐タンパ性を実現することが可能な演算装置、演算方法、及び演算処理プログラムを提供することを目的とする。

課題を解決するための手段

0006

上記課題を解決するために、請求項1に記載の発明は、命令コードを記憶する不揮発性メモリと、前記不揮発性メモリから出力された命令コードを取得し、取得した命令コードを解釈し、解釈した命令コードに従って処理を実行し、当該処理の結果を示す第1結果データ内部メモリに記憶する第1演算ユニットと、前記不揮発性メモリから出力された前記命令コードを表現する2値論理反転する第1反転手段と、前記第1反転手段により2値論理が反転された命令コードを取得し、取得した命令コードを、前記第1演算ユニットとは反対の2値論理で解釈し、解釈した命令コードに従って前記第1演算ユニットとは反対の2値論理で処理を実行し、当該処理の結果を示す第2結果データを内部メモリに記憶する第2演算ユニットと、を備えることを特徴とする。

0007

請求項2に記載の発明は、請求項1に記載の演算装置において、前記演算装置は、前記第2演算ユニットから出力された前記第2結果データを表現する2値論理を反転する第2反転手段を更に備え、前記不揮発性メモリは、前記第2反転手段により2値論理が反転された前記第2結果データを、所定の記憶領域に記憶することを特徴とする。

0008

請求項3に記載の発明は、請求項1に記載の演算装置において、前記第1演算ユニットは、前記第1結果データを前記不揮発性メモリにおける所定の記憶領域に書き込み、前記演算装置は、前記不揮発性メモリから出力された前記第1結果データを表現する2値論理を反転する第3反転手段を更に備え、前記第2演算ユニットは、前記第3反転手段により2値論理が反転された前記第1結果データを取得し、取得した第1結果データと、前記第2結果データとを比較することを特徴とする。

0009

請求項4に記載の発明は、命令コードを記憶する不揮発性メモリを備える演算装置における演算方法であって、前記不揮発性メモリから出力された命令コードを取得し、取得した命令コードを解釈し、解釈した命令コードに従って処理を実行し、当該処理の結果を示す第1結果データを内部メモリに記憶する第1演算ステップと、前記不揮発性メモリから出力された前記命令コードを表現する2値論理を反転するステップと、前記2値論理が反転された命令コードを取得し、取得した命令コードを、前記第1演算ステップとは反対の2値論理で解釈し、解釈した命令コードに従って前記第1演算ステップとは反対の2値論理で処理を実行し、当該処理の結果を示す第2結果データを内部メモリに記憶する第2演算ステップと、を含むことを特徴とする。

0010

請求項5に記載の発明は、命令コードを記憶する不揮発性メモリを備えるコンピュータに、前記不揮発性メモリから出力された命令コードを取得し、取得した命令コードを解釈し、解釈した命令コードに従って処理を実行し、当該処理の結果を示す第1結果データを内部メモリに記憶する第1演算ステップと、前記不揮発性メモリから出力された前記命令コードを表現する2値論理を反転するステップと、前記2値論理が反転された命令コードを取得し、取得した命令コードを、前記第1演算ステップとは反対の2値論理で解釈し、解釈した命令コードに従って前記第1演算ステップとは反対の2値論理で処理を実行し、当該処理の結果を示す第2結果データを内部メモリに記憶する第2演算ステップと、を実行させることを特徴とする。

発明の効果

0011

本発明によれば、演算ユニットは、不揮発性メモリから出力された命令コードを取得し、取得した命令コードを解釈し、解釈した命令コードに従って処理を実行する一方、演算ユニットは、反転手段により2値論理が反転された命令コードを取得し、取得した命令コードを、演算ユニットとは反対の2値論理で解釈し、解釈した命令コードに従って演算ユニットとは反対の2値論理で処理を実行するように構成したので、例えばロックステップと認証処理を同時に実行してもサイドチャネル情報が増長されず、高い耐タンパ性を実現することができる。

図面の簡単な説明

0012

ICチップCの概要構成例を示す図である。
実施例1において、プログラムメモリPMから命令コードがフェッチされ、命令コードに従って処理が実行される様子を示す図である。
実施例1において、プログラムメモリPMから命令コードがフェッチされ、命令コードに従って処理が実行される様子を示す図である。
実施例1において、プログラムメモリPMから命令コードがフェッチされ、命令コードに従って処理が実行される様子を示す図である。
実施例1において、プログラムメモリPMから命令コードがフェッチされ、命令コードに従って処理が実行される様子を示す図である。
実施例1において、プログラムメモリPMから命令コードがフェッチされ、命令コードに従って処理が実行される様子を示す図である。
実施例2において、プログラムメモリPMから命令コードがフェッチされ、命令コードに従って処理が実行される様子を示す図である。
実施例2において、プログラムメモリPMから命令コードがフェッチされ、命令コードに従って処理が実行される様子を示す図である。
実施例2において、プログラムメモリPMから命令コードがフェッチされ、命令コードに従って処理が実行される様子を示す図である。

実施例

0013

以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、ICチップに対して本発明を適用した場合の実施の形態である。

0014

先ず、図1を参照して、本実施形態に係るICチップの概要構成について説明する。図1は、ICチップCの概要構成例を示す図である。ICチップCは、本発明の演算装置の一例である。なお、ICチップCは、キャッシュカードクレジットカード社員カード等に搭載されて使用される。或いは、ICチップCは、スマートフォン携帯電話機等の通信機器に組み込まれる。ICチップCは、通信機器の回路基板上に直接組み込んで構成するようにしてもよい。

0015

ICチップCは、図1に示すように、コア1、コア2、反転器3、RAM(Random Access Memory)4、不揮発性メモリ5、ROM(Read Only Memory)6、及びI/O回路7を備えて構成される。コア1は、第1演算ユニットの一例である。コア2は、第2演算ユニットの一例である。コア1とコア2とは並列処理が可能に構成されている。コア1、反転器3、RAM4、不揮発性メモリ5、ROM6、及びI/O回路7は、バス8に接続されている。一方、コア2は、反転器3に接続されている。反転器3は、命令コードや各種データ等を表現する2値論理(論理0と論理1)を反転(言い換えれば、低電位状態と高電位状態を反転)する第1〜第3反転手段の一例であり、NOT回路等により構成される。バス8は、アドレスバスデータバスを備える。

0016

RAM4は、ワークメモリであり、スタックメモリを備える。スタックメモリは、サブルーチンの呼び出しや割り込みに伴う戻りアドレス等の格納に使用される。不揮発性メモリ5は、プログラムメモリPMとデータメモリDMを備える。プログラムメモリPMには、プログラムを構成する複数の命令コードが記憶(格納)される。データメモリDMには、各種データが記憶される。なお、ROM6には、不揮発性メモリ5に記憶されるプログラムの一部が記憶されてもよい。

0017

I/O回路7は、外部端末とのインターフェイスを担う。接触式のICチップCの場合、I/O回路7には、例えば、C1〜C8の8個の端子が備えられている。例えば、C1端子は電源端子、C2端子はリセット端子、C3端子はクロック端子、C5端子はグランド端子、C7端子は外部端末との間で通信を行うための端子である。一方、非接触式のICチップCの場合、I/O回路7には、例えば、アンテナ、及び変復調回路が備えられている。なお、外部端末の例としては、ICカード発行機ATM改札機認証用ゲート等が挙げられる。或いは、ICカード1が通信機器に組み込まれる場合、外部端末には通信機器の機能を担う制御部が該当する。

0018

コア1は、演算器11、内部メモリ12、プログラムカウンタ13、及び割込みコントローラ14を備える。コア2は、演算器21、内部メモリ22、プログラムカウンタ23、及び割込みコントローラ24を備える。演算器11,21は、それぞれ、命令レジスタ及びデコーダを備える。内部メモリ12,22は、それぞれ、データレジスタを備える。プログラムカウンタ13,23は、次に実行されるべき命令コードが記憶されているプログラムメモリPM上のアドレス番地)を保持する。割込みコントローラ14と割込みコントローラ24とは、バス8を介さずにデータ送受信可能に構成されている。ここで、コア2では、コア1における論理0と論理1の2値論理(言い換えれば、識別基準)が反転している。コア1が論理0を低電位状態によって表現する場合、コア2は論理0を高電位状態によって表現し、コア1が論理1を高電位状態によって表現する場合、コア2は論理1を低電位状態によって表現する。例えば、“9(10進数)”は、“1001(2進数)”と表記されるが、低電位状態=L、高電位状態=Hとして表現する場合、“1001(2進数)”は、コア1においては、“HLLH”と表現され、コア2においては、“LHHL”と表現される。同様にADD命令が、“000111(2進数) ” と表記される場合、コア1においては、“LLLHHH”と表示され、コア2においては、“HHHLLL”と表現される。

0019

演算器11は、プログラムカウンタ13が指し示すアドレスに記憶されている命令コードを、プログラムメモリPMから命令レジスタにフェッチ(取得)する。つまり、不揮発性メモリ5のプログラムメモリPMから出力された命令コードが演算器11によりフェッチされる。そして、演算器11は、取得した命令コードをデコーダによって解釈(デコード)し、解釈した命令コードに従って処理を実行し(例えば、四則演算論理演算等の演算処理を実行し)、当該処理の結果を示す第1結果データを内部メモリ12のデータレジスタに記憶する。

0020

一方、演算器21は、プログラムカウンタ23が指し示すアドレスに記憶されている命令コードを、プログラムメモリPMから反転器3を介して命令レジスタにフェッチ(取得)する。つまり、不揮発性メモリ5のプログラムメモリPMから出力され、反転器3により2値論理が反転された命令コードがフェッチされる。ここで、コア2から出力されるアドレス(プログラムカウンタ23が指し示すアドレス)は、反転器3によって2値論理が反転された後にアドレスバスへ送出され、これに応じて、プログラムメモリPMからデータバスに送出された命令コードは、反転器3によって2値論理が反転された後に、コア2に入力されることになる。そして、演算器21は、取得した命令コードを演算器11とは反対の2値論理でデコーダによって解釈し、解釈した命令コードに従って処理を実行し、当該処理の結果を示す第2結果データを内部メモリ22のデータレジスタに記憶する。

0021

次に、本実施形態に係るICチップの動作例について、実施例1と実施例2とに分けて説明する。

0022

(実施例1)
先ず、図2図6を参照して、実施例1について説明する。実施例1は、コア1とコア2とでデータメモリが共有される場合の動作例である。図2図6は、実施例1において、プログラムメモリPMから命令コードがフェッチされ、命令コードに従って処理が実行される様子を示す図である。なお、図2図6において、アドレスバス81とアドレスバス83は、分かれているが、単一のアドレスバスであってもよい。同様に、データバス82とデータバス84は、単一のデータバスであってもよい。また、図2図6の例では、命令コードの構成単位を3バイトとしている。図2(A)の状態は、命令コードがフェッチされる前の状態を示している。図2(A)の状態では、コア1における演算器11の命令レジスタには、初期値“00・・・(h)”が格納されている一方、コア2における演算器21の命令レジスタには、初期値“FF・・・(h)”が格納されている。ここで、“h”は、16進数であることを示す。また、図2(A)の状態では、コア1における内部メモリ12のデータレジスタには、初期値“00・・・(h)”が格納されている一方、コア2における内部メモリ22のデータレジスタには、初期値“FF・・・(h)”が格納されている。なお、図2(A)の例では、内部メモリ12と内部メモリ22には、それぞれ、データレジスタR1とデータレジスタR2との2つのデータレジスタを示しているが、実際には、これより多くのデータレジスタが設けられる。また、図2(A)の状態では、コア1におけるプログラムカウンタ13は、アドレス“0000(h)”を示している一方、コア2におけるプログラムカウンタ23は、アドレス“0000(h)”の反転値“FFFF(h) ”を示している。なお、以降、演算器11と演算器21とは並列的に処理を実行する。

0023

コア1における演算器11は、図2(B)に示すように、プログラムカウンタ13が指し示すアドレス“0000(h)”(つまり、プログラムカウンタ13の値)に記憶されている命令コード“08 01 09(h)”を、プログラムメモリPMからデータバス82を介して命令レジスタにフェッチする。つまり、プログラムカウンタ13が指し示すアドレス“0000(h)”がアドレスバス81へ送出され、これに応じて、プログラムメモリPMからデータバス82に送出された命令コードが命令レジスタにフェッチされる。そして、コア1における演算器11は、フェッチした命令コードをデコーダによって解釈(ロード(LOAD)命令であると解釈)し、解釈した命令コード(この例では、ロード命令)に従って、内部メモリ12におけるデータレジスタにデータをロードする。図2(B)の例では、命令コードに含まれる“08”は、演算器11のデコーダによりロード(LOAD)命令であると解釈され、当該命令コードに含まれる“09”が、演算対象のデータとして、内部メモリ12におけるデータレジスタR1(=01)にロードされている。

0024

一方、コア2における演算器21は、図2(B)に示すように、プログラムカウンタ23が指し示す“FFFF(h)”が反転(つまり、反転器31によって反転)されたアドレス(つまり、プログラムカウンタ23の反転値)“0000(h)”に記憶されている命令コード“08 01 09(h)”を、プログラムメモリPMからデータバス82及び反転器32を介して命令レジスタにフェッチする。つまり、プログラムカウンタ13が指し示すアドレス“FFF6(h)”が反転器31によって2値論理が反転された後にアドレスバス81へ送出され、これに応じて、プログラムメモリPMからデータバス82に送出された命令コードが反転器32によって2値論理が反転された後に命令レジスタにフェッチされる。そして、コア2における演算器21は、フェッチされた命令コードをデコーダによって解釈(演算器11とは反対の2値論理でロード(LOAD)命令であると解釈)し、解釈した命令コードに従って、内部メモリ22におけるデータレジスタR1にデータをロードする。図2(B)の例では、反転器32によって2値論理が反転された命令コード(つまり、命令コードの反転値)に含まれる“F7”は、演算器21のデコーダによりロード(LOAD)命令であると解釈され、当該反転された命令コードに含まれるデータ“F6”が、演算対象のデータとして、内部メモリ22におけるデータレジスタR1(=FE)にロードされている。

0025

次に、コア1における割込みコントローラ14は、図3(A)に示すように、内部メモリ12における少なくともデータレジスタR1とデータレジスタR2からデータを取得し、割込みコントローラ24へ出力する。一方、コア2における割込みコントローラ24は、割込みコントローラ14からのデータを取得し、且つ、内部メモリ22における少なくともデータレジスタR1とデータレジスタR2からデータを取得する。そして、割込みコントローラ24は、割込みコントローラ14から取得したデータの反転値と、内部メモリ22から取得したデータの値とを比較(データ比較)する。そして、このデータ比較の結果、互いのデータが一致していない場合、割込みコントローラ14,24は、異常と判断してコア1,2の内部リセットを実行する。一方、上記データ比較の結果、互いの値が一致している場合、図3(B)に示すように、コア1におけるプログラムカウンタ13は、プログラムカウンタ13の値(“0000(h)”)を3番地先へ進め(つまり、“0003(h)”へ進め)、コア2におけるプログラムカウンタ23は、プログラムカウンタ13の値(“FFFF(h)”)を3番地先(この例では、命令コードの構成単位が3バイトとしているため)へ進める(つまり、“FFFC(h)”へ進める)。

0026

次に、コア1における演算器11は、図示しないが、プログラムカウンタ13が指し示すアドレス“0003(h)”に記憶されている命令コード“08 02 01(h)”を、プログラムメモリPMからデータバス82を介して命令レジスタにフェッチし、当該命令コードをデコーダによって解釈(ロード(LOAD)命令であると解釈)し、解釈した命令コードに従って、内部メモリ12におけるデータレジスタR2にデータをロードする。一方、コア2における演算器21は、図示しないが、プログラムカウンタ23が指し示す“FFFC(h)”が反転されたアドレス“0003(h)”に記憶されている命令コード“08 02 01(h)”を、プログラムメモリPMからデータバス82及び反転器32を介して命令レジスタにフェッチし、当該命令コードをデコーダによって解釈(ロード(LOAD)命令であると解釈)し、解釈した命令コードに従って、内部メモリ22におけるデータレジスタR2にデータをロードする。そして、割込みコントローラ24は、命令コード“08 01 09(h)”の場合と同じように内部メモリ12,22のデータ比較を行い、互いの値が一致している場合、コア1におけるプログラムカウンタ13は、プログラムカウンタ13の値(“0003(h)”)を3番地先へ進め(つまり、“0006(h)”へ進め)、コア2におけるプログラムカウンタ23は、プログラムカウンタ23の値(“FFFC(h)”)を3番地先へ進める(つまり、“FFF9(h)”へ進める)。

0027

次に、コア1における演算器11は、図示しないが、プログラムカウンタ13が指し示すアドレス“0006(h)”に記憶されている命令コード“30 01 02(h)”を、プログラムメモリPMからデータバス82を介して命令レジスタにフェッチし、当該命令コードをデコーダによって解釈(加算(ADD)命令であると解釈)する。そして、演算部11は、解釈した命令コード(この例では、加算命令)に従って、内部メモリ12におけるデータレジスタR1におけるデータ“09(h)”に、内部メモリ12におけるデータレジスタR2におけるデータ“11(h)”を加算する処理を実行し、当該処理の結果を示すデータ(第1結果データの一例)を内部メモリ12におけるデータレジスタR1に記憶する。つまり、内部メモリ12におけるデータレジスタR1のデータは、“1A(h)”に書き換えられる。一方、コア2における演算器21は、図示しないが、プログラムカウンタ23が指し示す“FFF9(h)”が反転されたアドレス“0006(h)”に記憶されている命令コード“30 01 02(h)”を、プログラムメモリPMからデータバス82及び反転器32を介して命令レジスタにフェッチし、当該命令コードをデコーダによって解釈(加算(ADD)命令であると解釈)する。そして、演算部21は、解釈した命令コードに従って、内部メモリ22におけるデータレジスタR1におけるデータ“F6(h)”に、内部メモリ22におけるデータレジスタR2におけるデータ“EE(h)”を加算(演算器11とは反対の2値論理で加算)する処理を実行し、当該処理の結果を示すデータ(第2結果データの一例)を内部メモリ22に記憶する。つまり、内部メモリ12におけるデータレジスタR1のデータは、“E5(h)”に書き換えられる。

0028

次に、割込みコントローラ24は、命令コード“08 01 09(h)”の場合と同じように内部メモリ12,22のデータ比較を行い、互いの値が一致している場合、コア1におけるプログラムカウンタ13は、プログラムカウンタ13の値(“0006(h)”)を図4(A)に示すように3番地先へ進め(つまり、“0009(h)”へ進め)、コア2におけるプログラムカウンタ23は、プログラムカウンタ23の値(“FFF9(h)”)は、図4(A)に示すように3番地先へ進める(つまり、“FFF6(h)”へ進める)。

0029

次に、コア1における演算器11は、図4(B)に示すように、プログラムカウンタ13が指し示すアドレス“0009(h)”に記憶されている命令コード“52 01 00(h)”を、プログラムメモリPMからデータバス82を介して命令レジスタにフェッチし、当該命令コードをデコーダによって解釈(ストア(STORE)命令であると解釈)する。一方、コア2における演算器21は、図4(B)に示すように、プログラムカウンタ23が指し示す“FFF6(h)”が反転されたアドレス“0009(h)”に記憶されている命令コード“52 01 00(h)”を、プログラムメモリPMからデータバス82及び反転器32を介して命令レジスタにフェッチし、当該命令コードをデコーダによって解釈(ストア(STORE)確認命令であると解釈)する。

0030

次に、コア1における演算器11は、解釈したSTORE命令のコード体系倍長であることを認識すると、コア1におけるプログラムカウンタ13は、プログラムカウンタ13の値(“0009(h)”)を図5(A)に示すように、3番地先へ進める(つまり、“000C(h)”へ進める)。一方、コア2における演算器21は、解釈したストア確認命令のコード体系が倍長であることを認識すると、コア2におけるプログラムカウンタ23は、プログラムカウンタ23の値(“FFF6(h)”)を図5(A)に示すように、3番地先へ進める(つまり、“FFF3(h)”へ進める)。

0031

次に、コア1における演算器11は、図5(B)に示すように、プログラムカウンタ13が指し示すアドレス“000C(h)”に記憶されているコード“01 00 00(h)”を、プログラムメモリPMからデータバス82を介して命令レジスタ(既に格納された命令コード“52 01 00(h)”の後)にフェッチする。一方、コア2における演算器21は、図5(B)に示すように、プログラムカウンタ23が指し示す“FFF3(h)”が反転されたアドレス“000C(h)”に記憶されているコード“01 00 00(h)”を、プログラムメモリPMからデータバス82及び反転器32を介して命令レジスタ(既に格納された命令コード“AEFE FF(h)”の後)にフェッチする。

0032

次に、コア1における割込みコントローラ14は、図6(A)に示すように、解釈した命令コード(この例では、ストア命令)に従って、内部メモリ12におけるデータレジスタR1におけるデータ“1A(h)”を、データバス84を介して、不揮発性メモリ5におけるデータメモリDM中の所定の記憶領域(命令コードに含まれるアドレス“00 10 00 00(h)”)に書き込む処理を実行する。そして、コア2における割込みコントローラ24は、解釈した命令コード(この例では、ストア確認命令)に従って、データメモリDMに書き込まれたデータの確認処理を実行する。具体的には、割込みコントローラ24は、図6(B)に示すように、コア1によりデータメモリDMの記憶領域(命令コードに含まれるアドレス“00 10 00 00(h)”)に書き込まれたデータ“1A(h)”を、データバス84及び反転器34を介して取得し、且つ、内部メモリ22におけるデータレジスタR1からデータ“E5(h)”を取得する。つまり、図6(B)に示すように、命令レジスタに格納されている“FFEF FF FF(h)”が反転器33によって2値論理が反転された後にアドレスバス83へ送出され、これに応じて、データメモリDM2からデータバス84に送出されたデータが反転器34によって2値論理が反転された後に取得(この例では、データ“E5(h)”が取得)される。そして、割込みコントローラ24は、取得した互いのデータの値を比較(データ比較)し、当該データ比較の結果、互いのデータが一致していない場合、異常と判断してコア2の内部リセットを実行し、且つ、互いのデータが一致していないことを割込みコントローラ14に伝える。これにより、割込みコントローラ14は、コア1の内部リセットを実行する。一方、当該データ比較の結果、互いの値が一致している場合、コア1におけるプログラムカウンタ13は、プログラムカウンタ13の値を3番地先へ進め(つまり、“000F(h)”へ進め)、コア2におけるプログラムカウンタ23は、プログラムカウンタ13の値を3番地先へ進める(つまり、“FFF0(h)”へ進める)。以降、上記と同じように処理が進行する。

0033

(実施例2)
次に、図7図9を参照して、実施例2について説明する。実施例2は、コア1とコア2とでデータメモリが共有されない場合の動作例である。図7図9は、実施例2において、プログラムメモリPMから命令コードがフェッチされ、命令コードに従って処理が実行される様子を示す図である。図7図9の例では、データメモリDMは、コア1用のデータメモリDM1と、コア2用のデータメモリDM2とに区分される。なお、実施例2においても、実施例1で図2及び図3を参照して説明した処理と同様の処理が行われるので、重複する説明を省略する。

0034

図7(A)の状態は、図4(A)の状態と同様である。コア1における演算器11は、図7(B)に示すように、プログラムカウンタ13が指し示すアドレス“0009(h)”に記憶されている命令コード“52 01 00(h)”を、プログラムメモリPMからデータバス82を介して命令レジスタにフェッチし、当該命令コードをデコーダによって解釈(ストア(STORE)命令であると解釈)する。一方、コア2における演算器21は、図7(B)に示すように、プログラムカウンタ23が指し示す“FFF6(h)”が反転されたアドレス“0009(h)”に記憶されている命令コード“52 01 00(h)”を、プログラムメモリPMからデータバス82及び反転器32を介して命令レジスタにフェッチし、当該命令コードをデコーダによって解釈する。この場合、実施例1とは異なり、命令コード“52 01 00(h)”の反転値である“AD FE FF(h)”は、ストア(STORE)命令であると解釈される。

0035

次に、コア1における演算器11は、解釈したSTORE命令のコード体系が倍長であることを認識すると、コア1におけるプログラムカウンタ13は、プログラムカウンタ13の値(“0009(h)”)を、図8(A)に示すように3番地先へ進める。一方、コア2における演算器21は、解釈したストア確認命令のコード体系が倍長であることを認識すると、コア2におけるプログラムカウンタ23は、プログラムカウンタ23の値(“FFF6(h)”)を図8(A)に示すように3番地先へ進める。

0036

次に、コア1における演算器11は、図8(B)に示すように、プログラムカウンタ13が指し示すアドレス“000C(h)”に記憶されているコード“10 00 00(h)”を、プログラムメモリPMからデータバス82を介して命令レジスタにフェッチする。一方、コア2における演算器21は、図8(B)に示すように、プログラムカウンタ23が指し示す“FFF3(h)”が反転されたアドレス“000C(h)”に記憶されているコード“10 00 00(h)”を、プログラムメモリPMからデータバス82及び反転器32を介して命令レジスタにフェッチする。

0037

次に、コア1における割込みコントローラ14は、図9(A)に示すように、解釈した命令コード(この例では、ストア命令)に従って、内部メモリ12におけるデータレジスタR1におけるデータ“1A(h)”を、データバス84を介して、不揮発性メモリ5におけるデータメモリDM1中の所定の記憶領域(命令コードに含まれるアドレス“00 10 00 00(h)”)に書き込む処理を実行する。一方、コア2における割込みコントローラ24は、解釈した命令コード(この例では、ストア命令)に従って、内部メモリ22におけるデータレジスタR1におけるデータ“E5(h)”を、データバス84及び反転器34を介して不揮発性メモリ5におけるデータメモリDM2中の所定の記憶領域(アドレス“00 10 00 00(h)”)に書き込む処理を実行する。これにより、図9(A)に示すように、反転器34により2値論理が反転されたデータ“1A(h)”が所定の記憶領域に記憶される。

0038

次に、コア1における割込みコントローラ14は、図9(A)に示すように、データメモリDM1からデータ(ストア命令に従って書き込まれたデータ“1A(h)”)を取得し、割込みコントローラ24へ出力する。一方、コア2における割込みコントローラ24は、割込みコントローラ14からのデータを取得し、且つ、データメモリDM2からデータ(ストア命令に従って書き込まれたデータ“1A(h)”)を、データバス84及び反転器34を介して取得する。そして、割込みコントローラ24は、割込みコントローラ14から取得したデータの反転値と、データメモリDM2から取得したデータの値とを比較(データ比較)する。そして、このデータ比較の結果、互いのデータが一致していない場合、割込みコントローラ14,24は、異常と判断してコア1,2の内部リセットを実行する。一方、上記データ比較の結果、互いの値が一致している場合、コア1におけるプログラムカウンタ13は、プログラムカウンタ13の値を3番地先へ進め、コア2におけるプログラムカウンタ23は、プログラムカウンタ13の値を3番地先へ進める。以降、上記と同じように処理が進行する。

0039

以上説明したように、上記実施形態によれば、並列処理が可能なコア1とコア2とを備えたICチップCにおいて、コア1は、不揮発性メモリ5から出力された命令コードを取得し、取得した命令コードを解釈し、解釈した命令コードに従って処理を実行する一方、コア2は、反転器32により2値論理が反転された命令コードを取得し、取得した命令コードを、コア1とは反対の2値論理で解釈し、解釈した命令コードに従ってコア1とは反対の2値論理で処理を実行するように構成したので、例えばロックステップと認証処理を同時に実行してもサイドチャネル情報が増長されず、高い耐タンパ性を実現することができる。つまり、コア2では、コア1における論理0と論理1の2値論理(言い換えれば、識別基準)が反転するように構成したので、コア1とコア2との並列処理において、ハミングウェイトを均一化させることができ、サイドチャネル情報が収集されることを極力防ぐことができる。

0040

また、実施例1では、コア2は、コア1によりデータメモリDMに書き込まれた第1結果データを反転器34により2値論理が反転された後に取得し、当該取得した第1結果データと、内部メモリ22に格納されている第2結果データとを比較し、この結果、互いのデータが一致していない場合、コア1,2の内部リセットが実行されるように構成したので、ICチップC内の故障や外部からの攻撃による異常を適切に検出することができる。

0041

また、実施例2では、コア2は、データメモリDM2に書き込んだ第2結果データを反転器34を介して取得し、且つ、コア1によりデータメモリDM1に書き込まれた第1結果データをコア1の割込みコントローラ14を介して取得し、取得した互いのデータを比較し、この結果、互いのデータが一致していない場合、コア1,2の内部リセットが実行されるように構成したので、ICチップC内の故障や外部からの攻撃による異常を適切に検出することができる。

0042

なお、上記実施形態においては、2つのコアを備えたICチップを例にとって説明したが、3つ以上のコアを備えるマルチコアプロセッサに対しても本発明は適用可能である。

0043

1,2コア
3反転器
4 RAM
5不揮発性メモリ
6 ROM
7 I/O回路
8バス
C ICチップ

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ