図面 (/)

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

出願人 大日本印刷株式会社
発明者 山田真生
出願日 2015年6月11日 (5年6ヶ月経過) 出願番号 2015-118397
公開日 2017年1月5日 (3年11ヶ月経過) 公開番号 2017-004304
状態 特許登録済
技術分野 デジタルマーク記録担体 暗号化・復号化装置及び秘密通信
主要キーワード 割込み指令 サブコア サイドチャネル情報 メインコア 認証用デバイス 合計消費電力 ロックステップ 論理反転回路
関連する未来課題
重要な関連分野

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

図面 (4)

課題

複数のコアが同一の処理を実行してもサイドチャネル情報が増長されず、高い耐タンパ性を実現することが可能な演算装置ICカード演算方法、及び演算処理プログラムを提供する。

解決手段

ICチップCは、クロック生成回路3により生成されたクロック信号半周期遅延させるクロック信号遅延手段を備え、コア1は、クロック生成回路3により生成されたクロック信号を入力し、当該クロック信号に同期して処理を行い、コア2は、クロック生成回路3により半周期遅延したクロック信号を入力し、当該クロック信号に同期してコア1と同一の処理を行う。

概要

背景

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

概要

複数のコアが同一の処理を実行してもサイドチャネル情報が増長されず、高い耐タンパ性を実現することが可能な演算装置ICカード演算方法、及び演算処理プログラムを提供する。ICチップCは、クロック生成回路3により生成されたクロック信号半周期遅延させるクロック信号遅延手段を備え、コア1は、クロック生成回路3により生成されたクロック信号を入力し、当該クロック信号に同期して処理を行い、コア2は、クロック生成回路3により半周期遅延したクロック信号を入力し、当該クロック信号に同期してコア1と同一の処理を行う。

目的

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

効果

実績

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

この技術が所属する分野

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

請求項1

同一の処理を並列して実行する第1の演算ユニット及び第2の演算ユニットを備える演算装置であって、クロック信号生成手段により生成されたクロック信号を所定時間遅延させるクロック信号遅延手段を備え、前記第1の演算ユニットは、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記処理を行い、前記第2の演算ユニットは、前記クロック信号遅延手段により所定時間遅延したクロック信号を入力し、当該クロック信号に同期して前記処理を行うことを特徴とする演算装置。

請求項2

前記クロック信号遅延手段は、前記クロック信号を、前記所定時間として半周期遅延させることを特徴とする請求項1に記載の演算装置。

請求項3

前記処理は、セキュリティ処理であり、前記第2の演算ユニットは、前記セキュリティ処理以外の処理を行う場合、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して当該処理を行うことを特徴とする請求項1または2に記載の演算装置。

請求項4

同一の処理を並列して実行する第1の演算ユニット及び第2の演算ユニットを備える演算装置であって、クロック信号生成手段により生成されたクロック信号を所定時間期遅延させるクロック信号遅延手段を備え、前記第1の演算ユニットは、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記処理を行い、前記第2の演算ユニットは、前記クロック信号遅延手段により所定時間遅延したクロック信号を入力し、当該クロック信号に同期して前記処理を行うことを特徴とするICカード

請求項5

同一の処理を並列して実行する第1の演算ユニット及び第2の演算ユニットを備える演算装置における演算方法であって、クロック信号生成手段により生成されたクロック信号を所定時間遅延させるクロック信号遅延ステップを含み、前記第1の演算ユニットは、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記処理を行い、前記第2の演算ユニットは、前記クロック信号遅延ステップにより所定時間遅延したクロック信号を入力し、当該クロック信号に同期して前記処理を行うことを特徴とする演算方法。

請求項6

同一の処理を並列して実行する第1の演算ユニット及び第2の演算ユニットを備えるコンピュータに、クロック信号生成手段により生成されたクロック信号を所定時間遅延させるクロック信号遅延ステップを実行させ、前記第1の演算ユニットは、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記処理を行い、前記第2の演算ユニットは、前記クロック信号遅延ステップにより所定時間遅延したクロック信号を入力し、当該クロック信号に同期して前記処理を行うことを特徴とする演算処理プログラム

技術分野

0001

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

背景技術

0002

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

先行技術

0003

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

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

0004

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

0005

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

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

0006

上記課題を解決するために、請求項1に記載の発明は、同一の処理を並列して実行する第1の演算ユニット及び第2の演算ユニットを備える演算装置であって、クロック信号生成手段により生成されたクロック信号を所定時間遅延させるクロック信号遅延手段を備え、前記第1の演算ユニットは、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記処理を行い、前記第2の演算ユニットは、前記クロック信号遅延手段により所定時間遅延したクロック信号を入力し、当該クロック信号に同期して前記処理を行うことを特徴とする。

0007

請求項2に記載の発明は、請求項1に記載の演算装置において、前記クロック信号遅延手段は、前記クロック信号を、前記所定時間として半周期遅延させることを特徴とする。

0008

請求項3に記載の発明は、請求項1または2に記載の演算装置において、前記処理は、セキュリティ処理であり、前記第2の演算ユニットは、前記セキュリティ処理以外の処理を行う場合、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して当該処理を行うことを特徴とする。

0009

請求項4に記載の発明は、同一の処理を並列して実行する第1の演算ユニット及び第2の演算ユニットを備える演算装置であって、クロック信号生成手段により生成されたクロック信号を所定時間遅延させるクロック信号遅延手段を備え、前記第1の演算ユニットは、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記処理を行い、前記第2の演算ユニットは、前記クロック信号遅延手段により所定時間遅延したクロック信号を入力し、当該クロック信号に同期して前記処理を行うことを特徴とする。

0010

請求項5に記載の発明は、同一の処理を並列して実行する第1の演算ユニット及び第2の演算ユニットを備える演算装置における演算方法であって、クロック信号生成手段により生成されたクロック信号を所定時間遅延させるクロック信号遅延ステップを含み、前記第1の演算ユニットは、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記処理を行い、前記第2の演算ユニットは、前記クロック信号遅延ステップにより所定時間遅延したクロック信号を入力し、当該クロック信号に同期して前記処理を行うことを特徴とする。

0011

請求項6に記載の発明は、同一の処理を並列して実行する第1の演算ユニット及び第2の演算ユニットを備えるコンピュータに、クロック信号生成手段により生成されたクロック信号を所定時間遅延させるクロック信号遅延ステップを実行させ、前記第1の演算ユニットは、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記処理を行い、前記第2の演算ユニットは、前記クロック信号遅延ステップにより所定時間遅延したクロック信号を入力し、当該クロック信号に同期して前記処理を行うことを特徴とする。

発明の効果

0012

本発明によれば、複数のコアが同一の処理を実行してもサイドチャネル情報が増長されず、高い耐タンパ性を実現することができる。

図面の簡単な説明

0013

ICチップCの概要構成例を示す図である。
コア1及びコア2が同じクロック信号に同期して同一の処理を行ったときの消費電力の一例を示す図である。
コア1がクロック信号に同期して認証処理を行うと共に、コア2が当該クロック信号から半周期遅延したクロック信号に同期して同一の認証処理を行ったときの消費電力の一例を示す図である。

実施例

0014

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

0015

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

0016

ICチップCは、図1に示すように、コア1、コア2、クロック生成回路3、クロック切替回路4、切替制御レジスタ5、RAM(Random Access Memory)6、フラッシュメモリ7、ROM(Read Only Memory)8、及びI/O回路9を備えて構成される。コア1は、第1の演算ユニットの一例である。コア2は、第2の演算ユニットの一例である。コア1とコア2とは並列処理が可能に構成されている。コア1、コア2、切替制御レジスタ5、RAM6、フラッシュメモリ7、ROM8、及びI/O回路9は、バス10に接続されている。バス10は、アドレスバスデータバスを備える。なお、クロック生成回路3はICチップCに備えられなくともよい。この場合、ICチップCは、外部端末に備えられたクロック生成回路からI/O回路9を介してクロック信号を入力する。

0017

コア1,2は、夫々、演算器内部メモリプログラムカウンタ、及び割込みコントローラ等を備え、同一の処理を並列して実行する。演算器は、それぞれ、命令レジスタ及びデコーダを備える。内部メモリは、それぞれ、データレジスタを備える。プログラムカウンタは、次に実行されるべき命令コードが記憶されているフラッシュメモリ7またはROM8上のアドレス番地)を保持する。割込みコントローラは、コア1とコア2とがバス10を介さずに互いに割込み指令を与えるためのものである。

0018

クロック生成回路3は、可変周波数発生回路PLL(Phase Locked Loop))等を備える。クロック生成回路3は、クロック信号生成手段の一例である。クロック生成回路3は、例えば、外部端末からI/O回路9を介して入力されたクロックCLK、またはICチップCが備える内部発振器(図示せず)から入力されたクロックCLKから可変周波数発生回路により、コア1、コア2、切替制御レジスタ5、RAM6、フラッシュメモリ7、ROM8、及びI/O回路9用のクロック信号を生成する。例えば、クロック生成回路3は、入力されたクロックCLKに基づいて、クロック周波数が60MHzのクロック信号(システムクロック)を生成し、生成したクロック信号をコア1及びクロック切替回路4へ出力する。また、クロック生成回路3は、入力されたクロックCLKを、切替制御レジスタ5、RAM6、フラッシュメモリ7、ROM8、及びI/O回路9へ出力する。

0019

クロック切替回路4は、インバータ論理反転回路)、及びセレクタ等を備える。インバータは、クロック信号遅延手段の一例である。インバータは、クロック生成回路3から入力されたクロック信号を半周期遅延(例えば、クロック周波数が60MHzである場合、1クロック(1周期)に相当する時間(17ns)の“1/2”の時間遅延)させる。言い換えれば、インバータは、入力されたクロック信号の論理レベルハイレベルローレベル)を反転させる。セレクタは、切替制御レジスタ5から出力された信号の論理レベルに応じて、クロック生成回路3から入力されたクロック信号と、インバータにより半周期遅延されたクロック信号との何れか一方のクロック信号を選択可能になっている。例えば、ハイレベルの信号が入力された場合、インバータにより半周期遅延されたクロック信号が選択される。これにより選択されたクロック信号がコア2へ出力される。図1の例では、インバータにより半周期遅延されたクロック信号が出力された例を示している。これにより、コア2へ入力されるクロック信号は、コア1へ入力されるクロック信号よりも半周期遅延(言い換えれば、クロック信号の論理レベルが反転)することになる。

0020

切替制御レジスタ5は、例えば8ビットレジスタであり、特定のビット(例えば最上位ビット)の2値状態(0または1)に応じた論理レベルの信号をクロック切替回路4のセレクタへ出力する。例えば、上記特定ビットは、初期状態では“0”が保持されているが、所定の条件下で、インバータの使用状態を表す「1」へ設定変更される。

0021

RAM6は、ワークメモリであり、コア1及びコア2による処理結果が一時的に記憶される。フラッシュメモリ7は、不揮発性メモリであり、コア1及びコア2に実行させるOS及びアプリケーション等のプログラムを記憶する。また、フラッシュメモリ7には、セキュアな記憶領域が設けられており、この記憶領域には、暗号鍵秘密鍵公開鍵の組であってもよい)が記憶されている。なお、フラッシュメモリ7の代わりに、「Electrically Erasable Programmable Read-Only Memory」を適用しても構わない。また、ROM8には、フラッシュメモリ7に記憶されるプログラムの一部が記憶される。

0022

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

0023

以上の構成において、コア1は、クロック生成回路3により生成されたクロック信号を入力し、当該クロック信号に同期して処理を行う。一方、コア2は、クロック生成回路3により生成されたクロック信号、またはクロック生成回路3により生成され切替制御レジスタ5のインバータにより半周期遅延したクロック信号を入力し、当該クロック信号に同期してコア1と同一の処理を行う。このような処理は、例えば外部端末からのコマンドが受信された場合に、以下の(1)〜(4)の流れで繰り返し行われる。

0024

(1)プログラムカウンタが指し示すアドレスに記憶されている命令コードが、フラッシュメモリ7から命令レジスタにフェッチされる(命令読出)。

0025

(2)フェッチされた命令コードがデコーダによって解釈デコード)される(命令解釈)。なお、命令コードは、アプリケーションまたはOSに記述されている。例えば、複数のアプリケーションから使用される暗号用命令コードなどは、OSに記述されている。

0026

(3)解釈された命令が実行される(命令実行)。なお、命令実行により、例えば、通常の算術演算論理演算暗号化演算復号演算等が行われる。

0027

(4)演算結果がRAM6に書き込まれる(書き込み)。書き込み後、プログラムカウンタの値が進められ、次の命令コードがフェッチされることになる。

0028

例えば、外部端末から受信されたコマンドが、暗号化演算または復号演算等を伴う認証処理(セキュリティ処理の一例)を要求するコマンド(認証コマンド)でない場合、コア1は、切替制御レジスタ5の特定ビットの設定変更を行うことなく(初期状態を表す“0”)、コア2へ認証処理の要求を行う。この場合、コア1及びコア2へは、クロック生成回路3により生成された同一のクロック信号が入力される。こうして、コア1及びコア2は、クロック生成回路3により生成されたクロック信号を入力し、当該クロック信号に同期して同一の処理を行う。なお、例えば認証処理であることが判定される際に、アプリケーションのレベルで判定される場合もあれば(認証コマンドを受信した場合など)、OSのレベルで判定される場合もある(暗号化演算実行時など)。

0029

一方、外部端末から受信されたコマンドが、暗号化演算または復号演算等を伴う認証処理(セキュリティ処理の一例)を要求するコマンドである場合、コア1は、切替制御レジスタ5の特定ビットを、初期状態を表す“0”から、インバータの使用状態を表す“1”へ設定変更する。これにより、クロック切替回路4のセレクタは、切替制御レジスタ5から出力された信号の論理レベル(例えば、ハイレベル)に応じて、インバータにより半周期遅延されたクロック信号を選択するように切り替える。そして、コア1は、コア2へ認証処理の要求を行う。この場合、コア1へは、クロック生成回路3により生成されたクロック信号が入力される一方、コア2へは、当該クロック信号から半周期遅延されたクロック信号が入力される。

0030

こうして、コア1は、クロック生成回路3により生成されたクロック信号を入力し、当該クロック信号に同期して処理を行う一方、コア2は、クロック生成回路3により生成され切替制御レジスタ5のインバータにより半周期遅延したクロック信号を入力し、当該クロック信号に同期してコア1と同一の処理を行う。

0031

図2は、コア1及びコア2が同じクロック信号に同期して同一の処理を行ったときの消費電力の一例を示す図である。図2の場合、命令実行時に消費電力が最も高くなっており、コア1の命令実行とコア2の命令実行とが同じタイミングであることから、合計消費電力が2倍に増長されている。一方、図3は、コア1がクロック信号に同期して認証処理を行うと共に、コア2が当該クロック信号から半周期遅延したクロック信号に同期して同一の認証処理を行ったときの消費電力の一例を示す図である。図3の場合、コア1の命令実行とコア2の命令実行とが半周期ずれていることから、図2の場合に比べ、合計消費電力が平坦化されている。

0032

以上説明したように、上記実施形態によれば、ICチップCは、クロック生成回路3により生成されたクロック信号を半周期遅延させるインバータを備え、コア1は、クロック生成回路3により生成されたクロック信号を入力し、当該クロック信号に同期して処理を行い、コア2は、クロック生成回路3により半周期遅延したクロック信号を入力し、当該クロック信号に同期してコア1と同一の処理を行うように構成したので、コア1及びコア2が同一の処理を実行してもサイドチャネル情報が増長されず、高い耐タンパ性を実現することができる。また、コア2は、認証処理等のセキュリティ処理以外の処理を行う場合、コア1と同じクロック信号を入力し、当該クロック信号に同期して当該処理を行うように構成したので、クロック信号の遅延による処理時間の遅延を最低限に抑えることができる。

0033

なお、上記実施形態においては、クロック信号遅延手段としてインバータを適用した場合を説明したが、クロック信号の立ち上がりエッジ立ち下がりエッジとを検出するクロック検知回路を用いてクロック信号を半周期遅延させるように構成してもよい。この場合、ICチップCには、クロック切替回路4に代えてクロック検知回路が備えられ、当該クロック検知回路は、コア1とコア2のそれぞれに接続される。ここで、コア1とコア2の共通のクロック検知回路が備えられてもよいし、コア1とコア2と別々のクロック検知回路が備えられてもよい。そして、コア1に接続されるクロック検知回路はクロック信号の立ち上がりエッジを検出してクロックの開始位置とし、コア2に接続されるクロック検知回路はクロック信号の立ち下がりエッジを検出してクロックの開始位置とする。これにより、コア2は、コア1に入力されるクロック信号に対して半周期遅延したクロック信号を入力し、当該クロック信号に同期して前記処理を行うことができる。また、上記実施形態においては、クロック信号遅延手段としてインバータを例にとり、入力されたクロック信号を半周期(0.5周期)遅延(所定時間遅延の一例)させるように構成した。この場合、処理速度と、本発明の効果(サイドチャネル情報が増長されない)との兼ね合いから好適であるが、半周期遅延させることに代えて、クロック信号遅延手段は、入力されたクロック信号を1.5周期または2周期(或いは0.5周期、1.5周期、及び2周期以外の時間)遅延させるように構成してもよく、この構成であっても本発明の効果を発揮することができる。また、上記実施形態においては、2つのコアを備えたICチップを例にとって説明したが、3つ以上のコアを備えるマルチコアプロセッサに対しても本発明は適用可能である。

0034

1,2コア
3クロック生成回路
4クロック切替回路
5切替制御レジスタ
6 RAM
7フラッシュメモリ
8 ROM
9 I/O回路
10バス
C ICチップ

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

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

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

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

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

関連性が強い 技術一覧

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

関連性が強い人物一覧

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

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

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

関連する公募課題一覧

astavision 新着記事

サイト情報について

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

主たる情報の出典

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