JP2007006184A - 暗号処理装置及び認証アプリケーションプログラム - Google Patents
暗号処理装置及び認証アプリケーションプログラム Download PDFInfo
- Publication number
- JP2007006184A JP2007006184A JP2005184613A JP2005184613A JP2007006184A JP 2007006184 A JP2007006184 A JP 2007006184A JP 2005184613 A JP2005184613 A JP 2005184613A JP 2005184613 A JP2005184613 A JP 2005184613A JP 2007006184 A JP2007006184 A JP 2007006184A
- Authority
- JP
- Japan
- Prior art keywords
- cryptographic
- random number
- specific data
- cpu
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】 演算速度をさほど低下させることなく、サイドチャネル攻撃に対する安全性を向上させ、なおかつ製造コストを低く抑える。
【解決手段】 データ値生成命令が入力されたことを契機に、暗号処理装置の暗号演算特定データ生成部において、演算処理内容を特定する暗号演算特定データを生成し、これをデータ記憶部に格納する。また、暗号演算部は、演算処理内容は前記データ記憶部に格納された前記暗号演算特定データに従って変化するがその演算結果は所定の暗号アルゴリズムによるものと等しくなる演算を実行する。
【選択図】 図6
【解決手段】 データ値生成命令が入力されたことを契機に、暗号処理装置の暗号演算特定データ生成部において、演算処理内容を特定する暗号演算特定データを生成し、これをデータ記憶部に格納する。また、暗号演算部は、演算処理内容は前記データ記憶部に格納された前記暗号演算特定データに従って変化するがその演算結果は所定の暗号アルゴリズムによるものと等しくなる演算を実行する。
【選択図】 図6
Description
本発明は、暗号処理技術に関し、特に、サイドチャネル攻撃対策を講じた暗号処理技術に関する。
ICカードや携帯電話など、その内部において暗号演算を行う情報機器に対し、暗号演算時の消費電力変動や放射電磁波から、情報機器の暗号演算で使用する秘密鍵を不正に取得するサイドチャネル攻撃技術が注目されている。これを防ぐ方法の一つとして、マスク演算手法が提案されている(非特許文献1参照)。これは、入力データや秘密鍵に乱数を乗算もしくは加算するとともに、その乱数に応じて鍵暗号演算のアルゴリズムを変形して演算することで、暗号演算の入出力は変えずに、暗号演算時の消費電力変動や放射電磁波と秘密鍵との相関を薄め、秘密鍵の取得を困難とする方法である。図14にマスク演算手法の概念図を示す。ここで、DESやAESに代表される共通鍵暗号方式の実装では、演算のうち非線形性を有する換字選択処理を、あらかじめ用意された換字テーブルを参照して実現することが多い。マスク演算手法では、この換字テーブルを乱数に応じて書き換える必要がある。また、マスク演算手法に使用する乱数の値が判明してしまうと、マスク演算手法で実装された暗号演算であってもサイドチャネル攻撃で秘密鍵の取得が可能であるため、演算毎に乱数を生成し、換字テーブルを書き換えることが好ましいとされている。
M.L.Akkar, "An Implementation of DES and AES, Secure against Some Attacks", Proceedings of CHES 2001, Springer-Verlag, PP.309-318
M.L.Akkar, "An Implementation of DES and AES, Secure against Some Attacks", Proceedings of CHES 2001, Springer-Verlag, PP.309-318
マスク演算手法を実際の暗号処理装置に実装する場合、換字テーブルは読み書き速度が高速なRAM上に保持されるのが好ましい。上述した換字テーブルの書き換え処理や暗号演算処理を高速に行うためである。
しかし、ICカードや携帯電話のRAM容量は、換字テーブルの容量より小さく、RAM上に保持することが不可能な場合が多い。また、換字テーブルをEEPROM等の不揮発性メモリに保持すると、書き換え時間が非常に長いというデバイスの特性のため、演算毎に換字テーブルを書き換えることで演算時間が著しく低下し、現実的に利用することができない。
しかし、ICカードや携帯電話のRAM容量は、換字テーブルの容量より小さく、RAM上に保持することが不可能な場合が多い。また、換字テーブルをEEPROM等の不揮発性メモリに保持すると、書き換え時間が非常に長いというデバイスの特性のため、演算毎に換字テーブルを書き換えることで演算時間が著しく低下し、現実的に利用することができない。
これらの制限より、ICカードや携帯電話等の実装制約が制限された情報機器上では、ある固定の乱数から演算された換字テーブルをEEPROMに保持し、換字テーブルの換字テーブルの書き換えは行わない、という実装をせざるを得ない。この場合、1つの情報機器で使用される乱数は固定であるため、暗号演算を繰り返し行うようなサイドチャネル攻撃によって固定の乱数が取得され、秘密鍵の取得が容易になってしまうというセキュリティ上の問題があった。
また上記に加え、同じ固定値(固定の乱数)を使用する情報機器が複数頒布されている場合、1つの情報機器で使用される乱数が判明してしまうと、同じ固定値を使用する全ての情報機器の秘密鍵の取得が容易になってしまうという問題もあった。これを防ぐために、全ての情報機器で異なる乱数を使用することもできるが、製造工程が煩雑となり、製造コストが上昇するという問題があった。特に、ICカードシステムのように、マスク暗号演算を暗号処理装置上のソフトウェアプログラムで実装し、ソフトウェアプログラムを頒布して情報機器にダウンロードするようなシステムでは、ソフトウェアプログラムを頒布する際に証明書を添付する必要があるが、この証明書を全てのソフトウェアプログラム毎に発行する必要があり、製造コストが著しく上昇するという問題があった。
また上記に加え、同じ固定値(固定の乱数)を使用する情報機器が複数頒布されている場合、1つの情報機器で使用される乱数が判明してしまうと、同じ固定値を使用する全ての情報機器の秘密鍵の取得が容易になってしまうという問題もあった。これを防ぐために、全ての情報機器で異なる乱数を使用することもできるが、製造工程が煩雑となり、製造コストが上昇するという問題があった。特に、ICカードシステムのように、マスク暗号演算を暗号処理装置上のソフトウェアプログラムで実装し、ソフトウェアプログラムを頒布して情報機器にダウンロードするようなシステムでは、ソフトウェアプログラムを頒布する際に証明書を添付する必要があるが、この証明書を全てのソフトウェアプログラム毎に発行する必要があり、製造コストが著しく上昇するという問題があった。
以上まとめると以下のようになる。まず、マスク演算手法を使用する暗号処理装置では、容量の関係上、換字テーブルをRAMに保持することが不可能な場合が多い。一方、不揮発性メモリを用いた場合、演算のたびに換字テーブルを書き換えると演算速度が著しく低下してしまう。また、全ての暗号処理装置で同一の乱数を使用すると、その同一の乱数が判明した場合に、サイドチャネル攻撃によって、その秘密鍵を不正に取得されるというセキュリティ上の問題が生じる。また、全ての暗号処理装置で異なる乱数を使用しようとすると、その製造コストが著しく上昇するという問題が生じる。
本発明はこのような点に鑑みてなされたものであり、演算速度をさほど低下させることなく、サイドチャネル攻撃に対する安全性を向上させ、なおかつ製造コストを低く抑えることが可能な技術を提供することを目的とする。
本発明では、データ値生成命令が入力されたことを契機に、暗号処理装置の暗号演算特定データ生成部において、演算処理内容を特定する暗号演算特定データを生成し、これをデータ記憶部に格納する。また、暗号演算部は、演算処理内容は前記データ記憶部に格納された前記暗号演算特定データに従って変化するがその演算結果は所定の暗号アルゴリズムによるものと等しくなる演算を実行する。
ここで、暗号演算特定データ生成部が暗号演算特定データの生成を行うのは、データ値生成命令が入力された場合のみである。そのため、暗号演算を行うたびに暗号演算特定データの生成を行う場合に比べ、データ記憶部へのデータ格納頻度を低減させることができる。これにより、データ記憶部の動作速度に起因する演算速度の低下を抑制できる。また、暗号演算特定データの生成は暗号処理装置ごとに個別に行われる。これにより、サイドチャネル攻撃に対する安全性が向上する。さらに、暗号演算特定データの生成は暗号処理装置において行われる。そのため、暗号処理装置の製造過程や頒布時において、各装置における暗号演算特定データの相違を考慮する必要がない。これにより、製造コストを低減させることができる。
また、本発明において好ましくは、所定の暗号アルゴリズムが、換字テーブルを用いて換字処理を行う暗号アルゴリズムであり、暗号演算特定データが、換字テーブルを変形した変形換字テーブルと、演算処理に利用される被演算子であるマスクパラメータとを具備するデータである。
さらに、本発明において好ましくは、暗号処理装置は、乱数を生成する乱数生成部をさらに有し、暗号演算特定データ生成部は、乱数を用いて暗号演算特定データを生成する。これにより、各暗号処理装置間における暗号演算特定データの相関を推測することが困難となる。
さらに、本発明において好ましくは、暗号処理装置は、乱数を生成する乱数生成部をさらに有し、暗号演算特定データ生成部は、乱数を用いて暗号演算特定データを生成する。これにより、各暗号処理装置間における暗号演算特定データの相関を推測することが困難となる。
また、本発明において好ましくは、暗号処理装置は、サーバ装置から送信された乱数を受信する乱数受信部をさらに有し、暗号演算特定データ生成部は、乱数を用いて暗号演算特定データを生成する。
さらに、本発明において好ましくは、暗号処理装置は、送信された任意の定数を受信する定数受信部と、任意の定数と所定の関数とを用いて乱数を生成する乱数生成部と、をさらに有し、暗号演算特定データ生成部が、乱数を用いて暗号演算特定データを生成する。またこの場合、好ましくは、乱数生成部は、任意の定数とハッシュ関数とを用いて乱数を生成する。
さらに、本発明において好ましくは、暗号処理装置は、送信された任意の定数を受信する定数受信部と、任意の定数と所定の関数とを用いて乱数を生成する乱数生成部と、をさらに有し、暗号演算特定データ生成部が、乱数を用いて暗号演算特定データを生成する。またこの場合、好ましくは、乱数生成部は、任意の定数とハッシュ関数とを用いて乱数を生成する。
また、本発明において好ましくは、暗号演算特定データ生成部は、サーバ装置から送信されたデータ値生成命令が入力されたことを契機に、暗号演算特定データを生成する。これにより、サーバ装置において各暗号処理装置の暗号演算特定データの更新を制御できる。
さらに、本発明において好ましくは、暗号処理装置は、サーバ装置から送信された認証アプリケーションプログラムを受信するプログラム受信部と、認証アプリケーションプログラムを格納するプログラム記憶部と、CPUと、を有し、暗号演算特定データ生成部及び暗号演算部が、CPUにおいて認証アプリケーションプログラムが読み込まれることにより構成されるものであり、データ記憶部には、暗号演算特定データ生成部によって生成された暗号演算特定データが格納される。
さらに、本発明において好ましくは、暗号処理装置は、サーバ装置から送信された認証アプリケーションプログラムを受信するプログラム受信部と、認証アプリケーションプログラムを格納するプログラム記憶部と、CPUと、を有し、暗号演算特定データ生成部及び暗号演算部が、CPUにおいて認証アプリケーションプログラムが読み込まれることにより構成されるものであり、データ記憶部には、暗号演算特定データ生成部によって生成された暗号演算特定データが格納される。
ここで、暗号演算特定データを生成する暗号演算特定データ生成部は、各暗号処理装置に配布された認証アプリケーションプログラムがそれぞれのCPUにおいて実行されることにより構成されるものである。即ち、暗号演算特定データは、各暗号処理装置に配布された後に生成され、システム運営者側は暗号演算特定データを管理する必要がない。その結果、システム運営者側は、データの繁雑な取扱いに起因するコストを低減させることができる。また、各暗号処理装置に配布する認証アプリケーションプログラムとそれに添付する証明書は一組で良いため、証明書の付与・管理に起因するコストも低減させることができる。
また、本発明において好ましくは、暗号処理装置は、暗号演算特定データ生成部が暗号演算特定データを生成する前に、変換済みフラグ変数に第1定数を代入してフラグメモリに格納し、暗号演算特定データの生成後に、当該変換済みフラグ変数に第2定数を代入して当該フラグメモリに格納するフラグ演算部をさらに有する。これにより、暗号演算特定データ生成途中に生じた不具合を検出することが可能となる。
以上より本発明では、演算速度をさほど低下させることなく、サイドチャネル攻撃に対する安全性を向上させ、なおかつ製造コストを低く抑えることができる。
以下、本発明の実施の形態を図面を参照して説明する。
〔第1の発明の実施の形態〕
本形態は、ICカード用認証アプリケーションプログラム(以下「認証AP」と呼ぶ)が、アプリケーション頒布用サーバ装置(以下「サーバ装置」と呼ぶ)からICカード(「暗号処理装置」に相当)にダウンロードされ、このICカードにおいて暗号処理を実行する例である。なお、本形態では、換字テーブルを用いて換字処理を行う暗号アルゴリズム、具体的にはDESをベースとした暗号方式を採用する。
〔第1の発明の実施の形態〕
本形態は、ICカード用認証アプリケーションプログラム(以下「認証AP」と呼ぶ)が、アプリケーション頒布用サーバ装置(以下「サーバ装置」と呼ぶ)からICカード(「暗号処理装置」に相当)にダウンロードされ、このICカードにおいて暗号処理を実行する例である。なお、本形態では、換字テーブルを用いて換字処理を行う暗号アルゴリズム、具体的にはDESをベースとした暗号方式を採用する。
<構成>
図1は、本形態における暗号処理システム1を例示した図である。
この図に例示するように、この例の暗号処理システム1は、サーバ装置10と、ICカード20と、リーダライタ30とを有している。また、サーバ装置10とリーダライタ30とは、ネットワーク40を通じて通信可能に接続され、さらに、ICカード20とリーダライタ30とが通信可能に構成されている。
図1は、本形態における暗号処理システム1を例示した図である。
この図に例示するように、この例の暗号処理システム1は、サーバ装置10と、ICカード20と、リーダライタ30とを有している。また、サーバ装置10とリーダライタ30とは、ネットワーク40を通じて通信可能に接続され、さらに、ICカード20とリーダライタ30とが通信可能に構成されている。
<サーバ装置>
図2は、本形態におけるサーバ装置10の構成を例示したブロック図である。
図2に示すように、この例のサーバ装置10は、ハードディスク装置や半導体メモリ等である補助記憶装置11、各処理を実行するCPU(central processing unit)12、一時記憶メモリであるRAM(Random Access Memory)13、ネットワーク40を通じた通信を行うための通信部14及び各種データやコマンドの伝送を行うバス15から構成されている。この例の補助記憶装置11には、変形DES実行コード11aaとデータ変換実行コード11abと制御コード11acとを有する認証AP11aと、その認証AP11aにサーバ装置10の署名用秘密鍵で署名された証明書11bとが一対となり保管されている。さらに補助記憶装置11には、ダウンロード制御コード11cやデータ値生成命令コード11dも保管されている。
図2は、本形態におけるサーバ装置10の構成を例示したブロック図である。
図2に示すように、この例のサーバ装置10は、ハードディスク装置や半導体メモリ等である補助記憶装置11、各処理を実行するCPU(central processing unit)12、一時記憶メモリであるRAM(Random Access Memory)13、ネットワーク40を通じた通信を行うための通信部14及び各種データやコマンドの伝送を行うバス15から構成されている。この例の補助記憶装置11には、変形DES実行コード11aaとデータ変換実行コード11abと制御コード11acとを有する認証AP11aと、その認証AP11aにサーバ装置10の署名用秘密鍵で署名された証明書11bとが一対となり保管されている。さらに補助記憶装置11には、ダウンロード制御コード11cやデータ値生成命令コード11dも保管されている。
ここで、変形DES実行コード11aaは、演算処理内容は変形換字テーブルやマスクパラメータ従って変化するが、その演算結果はDES暗号アルゴリズムによるものと等しくなるマスクDES演算を、ICカード20のCPUに実行させるためのプログラムである。また、データ変換実行コード11abは、マスクDES演算に必要な変形換字テーブルやマスクパラメータの生成処理を、ICカード20のCPUに実行させるためのプログラムである。また、制御コード11acは、変形換字テーブル等の更新やマスクDES演算の制御を、ICカード20のCPUに実行させるためのプログラムである。
なお、変形換字テーブルとは、DESの換字テーブルをデータ変換実行コード11abが示す処理に従って変形したテーブルである。また、マスクパラメータとは、当該変形に伴って暗号演算に必要となる付加演算に利用される被演算子である。なお、これらの詳細については後述する。また、変形換字テーブル及びマスクパラメータは、「演算処理内容を特定する暗号演算特定データ」に相当する。
また、ダウンロード制御コード11cは、認証AP11aや証明書11bのダウンロード処理の制御をサーバ装置10のCPU12に実行させるためのプログラムである。また、データ値生成命令コード11dは、所定の契機で、サーバ装置10がデータ値生成命令をICカード20に送信するための処理を、サーバ装置10のCPU12に実行させるためのプログラムである。なお、データ値生成命令とは、サーバ装置10がICカード20に対し、変形換字テーブルやマスクパラメータの生成や更新を指示する命令を意味する。
また、ダウンロード制御コード11cは、認証AP11aや証明書11bのダウンロード処理の制御をサーバ装置10のCPU12に実行させるためのプログラムである。また、データ値生成命令コード11dは、所定の契機で、サーバ装置10がデータ値生成命令をICカード20に送信するための処理を、サーバ装置10のCPU12に実行させるためのプログラムである。なお、データ値生成命令とは、サーバ装置10がICカード20に対し、変形換字テーブルやマスクパラメータの生成や更新を指示する命令を意味する。
<ICカード>
図3は、本形態におけるICカード20の構成を例示したブロック図である。
図3に示すように、この例のICカード20には、不揮発性メモリであるEEPRROM(Electronically Erasable and Programmable Read Only Memory)21、レジスタ22aを具備するCPU22、一時記憶メモリであるRAM23、乱数を生成する乱数生成器24、リーダライタ30との通信を行う通信部25及びバス26が搭載されている。
ここで、初期段階のEEPROM21内には、ICカード20がダウンロードする各種認証APの真正性を確認するため、その署名者として信用するサーバ装置10の公開鍵証明書21eや、サーバ装置10からのダウンロード処理をCPU22に実行させるためのプログラムであるダウンロード制御コード21fや他のAP(アプリケーションプログラム)21gが格納されている。また、サーバ装置10からのダウンロードによって、EEPROM21内には、変形DES実行コード21aa、データ変換実行コード21ab及び制御コード21acを具備する認証AP21aと、証明書21bとが格納される。さらに、後述するICカード20での処理に応じ、EEPROM21内には変形換字テーブル21c及びマスクパラメータ21dが格納される。
図3は、本形態におけるICカード20の構成を例示したブロック図である。
図3に示すように、この例のICカード20には、不揮発性メモリであるEEPRROM(Electronically Erasable and Programmable Read Only Memory)21、レジスタ22aを具備するCPU22、一時記憶メモリであるRAM23、乱数を生成する乱数生成器24、リーダライタ30との通信を行う通信部25及びバス26が搭載されている。
ここで、初期段階のEEPROM21内には、ICカード20がダウンロードする各種認証APの真正性を確認するため、その署名者として信用するサーバ装置10の公開鍵証明書21eや、サーバ装置10からのダウンロード処理をCPU22に実行させるためのプログラムであるダウンロード制御コード21fや他のAP(アプリケーションプログラム)21gが格納されている。また、サーバ装置10からのダウンロードによって、EEPROM21内には、変形DES実行コード21aa、データ変換実行コード21ab及び制御コード21acを具備する認証AP21aと、証明書21bとが格納される。さらに、後述するICカード20での処理に応じ、EEPROM21内には変形換字テーブル21c及びマスクパラメータ21dが格納される。
<認証AP設定処理>
次に、ICカード20が、サーバ装置10から認証AP11aをダウンロードし、EEPROM21内に認証AP21aを設定する際の処理について説明する。図4は、この処理を説明するためのフローチャートである。以下、この図に沿って説明を行っていく。
ICカード20は、サーバ装置10から認証AP11a及びその証明書11bをダウンロードする(ステップS1)。具体的には、例えばまず、ダウンロード制御コード21fがロードされた(読み込まれた)CPU22が、リーダライタ30から送信された問い合わせ情報に対し、通信部25からアクセス要求情報を返信する。これを受けたリーダライタ30は、ネットワーク40を通じてサーバ装置10にアクセスし、サーバ装置10に格納された認証AP11a及び証明書11bの返送を要求する。サーバ装置10は、この要求情報を通信部14で受信し、当該CPU12は、補助記憶装置11に格納された認証AP11a及び証明書11bを通信部14からネットワーク40を通じリーダライタ30に返信する。サーバ装置10から送信された認証AP11a及び証明書11bは、ネットワーク40及びリーダライタ30を通じ、ICカード20の通信部25(「プログラム受信部」に相当)において受信される。そして、これらの認証AP11a及び証明書11bは、認証AP21a及び証明書21bとしてEEPROM21(「プログラム記憶部」に相当)に格納される。また、この格納の際には、変形換字テーブル21c及びマスクパラメータ21dを格納するための領域もEEPROM21内に確保される。なお、ここで確保されるEEPROM21内のデータ値は不定でよい。また、ICカード10のOS(Operating System)の種類によっては、プログラム領域と同じ大きさしかEEPROM21上の領域を確保できない場合がある。この場合には、サーバ装置10に用意する認証AP11a内に、予め変形換字テーブル及びマスクパラメータを記憶できる容量の分だけダミーのデータを入れておき、それをダウンロードすればよい。
次に、ICカード20が、サーバ装置10から認証AP11aをダウンロードし、EEPROM21内に認証AP21aを設定する際の処理について説明する。図4は、この処理を説明するためのフローチャートである。以下、この図に沿って説明を行っていく。
ICカード20は、サーバ装置10から認証AP11a及びその証明書11bをダウンロードする(ステップS1)。具体的には、例えばまず、ダウンロード制御コード21fがロードされた(読み込まれた)CPU22が、リーダライタ30から送信された問い合わせ情報に対し、通信部25からアクセス要求情報を返信する。これを受けたリーダライタ30は、ネットワーク40を通じてサーバ装置10にアクセスし、サーバ装置10に格納された認証AP11a及び証明書11bの返送を要求する。サーバ装置10は、この要求情報を通信部14で受信し、当該CPU12は、補助記憶装置11に格納された認証AP11a及び証明書11bを通信部14からネットワーク40を通じリーダライタ30に返信する。サーバ装置10から送信された認証AP11a及び証明書11bは、ネットワーク40及びリーダライタ30を通じ、ICカード20の通信部25(「プログラム受信部」に相当)において受信される。そして、これらの認証AP11a及び証明書11bは、認証AP21a及び証明書21bとしてEEPROM21(「プログラム記憶部」に相当)に格納される。また、この格納の際には、変形換字テーブル21c及びマスクパラメータ21dを格納するための領域もEEPROM21内に確保される。なお、ここで確保されるEEPROM21内のデータ値は不定でよい。また、ICカード10のOS(Operating System)の種類によっては、プログラム領域と同じ大きさしかEEPROM21上の領域を確保できない場合がある。この場合には、サーバ装置10に用意する認証AP11a内に、予め変形換字テーブル及びマスクパラメータを記憶できる容量の分だけダミーのデータを入れておき、それをダウンロードすればよい。
次に、ICカード20は、ダウンロードした証明書21bを用い、サーバ装置10からダウンロードした認証AP21aの真正性を検証する(ステップS2)。具体的には、次のような処理を行う。即ち、ダウンロード制御コード21fがロードされたCPU22は、まずEEPROM21からダウンロードした認証AP21aを読み込み、そのハッシュ演算を行い、その結果であるダイジェストをRAM23に格納する。次に、当該CPU22は、EEPROM21から、ダウンロードした証明書21bに含まれるダイジェスト値と、あらかじめEEPROM21に格納してあるサーバ装置の公開鍵証明書21eに含まれる公開鍵とを読み込み、このダイジェスト値に対し当該公開鍵を用いた署名検証演算を行う。そして、当該CPU22は、この演算結果と先にRAM23に格納したダイジェストとを比較し、一致すれば真正性検証が成功したと判断し、一致しなければ真正性検証を失敗したと判断する。なお、上記では認証AP21aをEEPROM21にダウンロードしてからハッシュ演算を行ったが、ハッシュ演算は入力の先頭から逐次的に処理を行う演算であるため、ダウンロードを行いながら同時にハッシュ演算を行ってもよい。
ここで、ダウンロードした認証AP21aが真正でないと判断されると、ダウンロード制御コード21fがロードされたCPU22aは、EEPROM21にダウンロードした認証AP21a及び証明書21bを削除し、処理をエラー終了させる(ステップS3)。
一方、ダウンロードした認証AP21aが真正であると判断されると、データ値生成命令コード11dがロードされたサーバ装置10のCPU12は、ICカード20上の認証AP21aに対する変形換字テーブル21c及びマスクパラメータ21dのデータ値生成命令の送信を通信部14に指示する。
一方、ダウンロードした認証AP21aが真正であると判断されると、データ値生成命令コード11dがロードされたサーバ装置10のCPU12は、ICカード20上の認証AP21aに対する変形換字テーブル21c及びマスクパラメータ21dのデータ値生成命令の送信を通信部14に指示する。
通信部14は、このデータ値生成命令を送信し、データ値生成命令は、ネットワーク40及びリーダライタ30を通じ、ICカード20の通信部25に受信入力される(ステップS4)。なお、本命令はICカード20の外部から入力されればよく、例えば、サーバ装置10の代わりにICカード20と直接接続されたPC端末装置からICカード20に入力されることとしてもよい。
ICカード20の通信部25にデータ値生成命令が入力されたことを契機に、認証AP21aのデータ変換実行コード21abがCPU22上にロードされ、このデータ変換実行コード21abがロードされたCPU22(「暗号演算特定データ生成部」に相当)は、変形換字テーブル21c及びマスクパラメータ21dのデータ値を生成し、これらをEEPRPM21(「データ記憶部」に相当)に格納する(ステップS5)。
ICカード20の通信部25にデータ値生成命令が入力されたことを契機に、認証AP21aのデータ変換実行コード21abがCPU22上にロードされ、このデータ変換実行コード21abがロードされたCPU22(「暗号演算特定データ生成部」に相当)は、変形換字テーブル21c及びマスクパラメータ21dのデータ値を生成し、これらをEEPRPM21(「データ記憶部」に相当)に格納する(ステップS5)。
図5は、このステップS6の処理の詳細を説明するためのフローチャートである。以下、この図に沿って、ステップS6の処理の詳細を説明する。
まず、データ変換実行コード21abがロードされたCPU22は、ICカード20内の乱数生成器24に乱数生成命令を送信し、乱数生成器24で64ビットの乱数値Xを生成させ、これを取得する(ステップS11)。そして、このCPU22は、取得した乱数値XをマスクパラメータXとしてEEPROM21に格納する。なお、サーバ装置10や他の外部装置に乱数値Xを生成させ、これをICカード20に送信させ、ICカード20の通信部25(「乱数受信部」に相当)で受信し、CPU22に送ることとしてもよい。また、より好適には、外部装置からICカード20に乱数等の任意の定数を送信させ、ICカード20の通信部25(「定数受信部」に相当)で受信してCPU22に送る。CPU22(「乱数生成部」に相当)は、認証AP21a内部もしくはICカード20内のその他のAP21gを読み込んで実行し、送られた任意の定数を種として所定の関数の演算を行い、乱数値Xを生成する。なお、生成される乱数値Xのランダム性を考慮すると、この場合の所定の関数としてSHA−1等のハッシュ関数を用いることが好適である。
まず、データ変換実行コード21abがロードされたCPU22は、ICカード20内の乱数生成器24に乱数生成命令を送信し、乱数生成器24で64ビットの乱数値Xを生成させ、これを取得する(ステップS11)。そして、このCPU22は、取得した乱数値XをマスクパラメータXとしてEEPROM21に格納する。なお、サーバ装置10や他の外部装置に乱数値Xを生成させ、これをICカード20に送信させ、ICカード20の通信部25(「乱数受信部」に相当)で受信し、CPU22に送ることとしてもよい。また、より好適には、外部装置からICカード20に乱数等の任意の定数を送信させ、ICカード20の通信部25(「定数受信部」に相当)で受信してCPU22に送る。CPU22(「乱数生成部」に相当)は、認証AP21a内部もしくはICカード20内のその他のAP21gを読み込んで実行し、送られた任意の定数を種として所定の関数の演算を行い、乱数値Xを生成する。なお、生成される乱数値Xのランダム性を考慮すると、この場合の所定の関数としてSHA−1等のハッシュ関数を用いることが好適である。
乱数値Xを取得した当該CPU22は、次に、EEPROM21に格納された乱数値であるマスクパラメータXを用い、64ビットのマスクパラメータX1=IP(X)を算出し、EEPROM21に格納する(ステップS12)。なお、IP(α)は、αに対しDESで定義されている初期転置(初期置換)(例えば、岡本龍明,山本博資著,「現代暗号」,第3刷,産業図書株式会社,P82〜87等参照)を施すことを意味する。
次に当該CPU22は、EEPROM21に格納されたマスクパラメータX1を用い、48ビットのマスクパラメータX2=EP(X132−63)を算出し、これをEEPROM21に格納する(ステップS13)。なお、EP(α)は、αに対しDESで定義されている拡張転置(拡大置換)を施すことを意味する。また、X132−63は、X1の下位32ビットを意味する。
次に当該CPU22は、EEPROM21に格納されたマスクパラメータX1を用い、48ビットのマスクパラメータX2=EP(X132−63)を算出し、これをEEPROM21に格納する(ステップS13)。なお、EP(α)は、αに対しDESで定義されている拡張転置(拡大置換)を施すことを意味する。また、X132−63は、X1の下位32ビットを意味する。
次に当該当該CPU22は、EEPROM21に格納されたマスクパラメータX1を用い、32ビットのマスクパラメータX3=P−1(X10−31(+)X132−63)を算出し、これをEEPROM21に格納する(ステップS14)。なお、P−1(α)は、αに対しDESで定義されている転置Pの逆演算を示す。即ちP−1(P(α))=αを満たす。また、X10−31はX1の上位32ビットを意味する。また、α(+)βは、ビット値αとビット値βとの排他的論理和演算を示す。
次に当該当該CPU22は、EEPROM21に格納されたマスクパラメータX1を用い、32ビットのマスクパラメータX4=X10−31(+)X132−63を算出し、これをEEPROM21に格納する(ステップS15)。以上の処理により、EEPROM21には4つのマスクパラメータ(X,X1〜X4)21dが格納された。
次に当該当該CPU22は、EEPROM21に格納されたマスクパラメータX1を用い、32ビットのマスクパラメータX4=X10−31(+)X132−63を算出し、これをEEPROM21に格納する(ステップS15)。以上の処理により、EEPROM21には4つのマスクパラメータ(X,X1〜X4)21dが格納された。
次に当該当該CPU22は、EEPROM21に格納された認証AP21aのデータ変換実行コード21abが具備する8個のDESの換字テーブルS−Box_n(n=1,...,8)と、マスクパラメータX2,X3とを用い、下記の演算を実行し、8個の変形換字テーブル〔SM−Box_n(A)(n=1,...,8)〕21cを求め、これをEEPROM21に格納する(ステップS16)。
MS-Box_n(A)=S-Box_n(A(+)X2_n)(+)X3_n (n=1,...,8) …(1)
ここで、式(1)中の関数及びパラメータの意味は以下の通りである。
MS-Box_n(A)=S-Box_n(A(+)X2_n)(+)X3_n (n=1,...,8) …(1)
ここで、式(1)中の関数及びパラメータの意味は以下の通りである。
S−Box_n(α):DESのn番目の換字テーブルS−Box_nに従い、6ビットのαを4ビットの値に換字する処理。
A:SM−Box_nによる換字処理の対象となる8ビットの値。SM−Box_nのアドレスを示す。
X2_n:X2のうちビット位置6*(n−1)から6*(n−1)+5の範囲に該当する6ビットの値。
X3_n:X3のうちビット位置4*(n−1)から4*(n−1)+3の範囲に該当する4ビットの値。
すなわち、DESの換字テーブルを表す8個の配列それぞれについて、配列のアドレスと要素とをそれぞれX2及びX3の所定範囲の値で変形した配列を、変形換字テーブル21cとして、EEPROM21に格納する。
A:SM−Box_nによる換字処理の対象となる8ビットの値。SM−Box_nのアドレスを示す。
X2_n:X2のうちビット位置6*(n−1)から6*(n−1)+5の範囲に該当する6ビットの値。
X3_n:X3のうちビット位置4*(n−1)から4*(n−1)+3の範囲に該当する4ビットの値。
すなわち、DESの換字テーブルを表す8個の配列それぞれについて、配列のアドレスと要素とをそれぞれX2及びX3の所定範囲の値で変形した配列を、変形換字テーブル21cとして、EEPROM21に格納する。
<変形DES実行処理及び認証AP更新処理>
以上のように認証APが設定されたICカード20は、他のAP21gの実行に伴うコマンドの発生や、外部のサーバ装置10等から送信されたコマンドの入力に従い、変形DESの実行や、変形換字テーブル21c及びマスクパラメータ21dの更新を行う。
以上のように認証APが設定されたICカード20は、他のAP21gの実行に伴うコマンドの発生や、外部のサーバ装置10等から送信されたコマンドの入力に従い、変形DESの実行や、変形換字テーブル21c及びマスクパラメータ21dの更新を行う。
図6は、これらの処理を説明するためのフローチャートである。以下、このフローチャートに沿って説明を行っていく。
まず、制御コード21acがロードされたCPU22は、コマンドの発生や入力があったか否かを判定する(ステップS21)。なお、この例のコマンドは、他のAP21gをCPU22で実行することに伴い発生する暗号演算命令であるDES演算コマンドと、外部のサーバ装置10等が所定の契機で送信し、通信部25で受信され、当該CPU22に入力されるデータ値生成命令であるパラメータ書き換えコマンドとがある。なお、DES演算コマンドには、マスクDES演算を行う対象となるメッセージMが格納されているアドレスが含まれている。
まず、制御コード21acがロードされたCPU22は、コマンドの発生や入力があったか否かを判定する(ステップS21)。なお、この例のコマンドは、他のAP21gをCPU22で実行することに伴い発生する暗号演算命令であるDES演算コマンドと、外部のサーバ装置10等が所定の契機で送信し、通信部25で受信され、当該CPU22に入力されるデータ値生成命令であるパラメータ書き換えコマンドとがある。なお、DES演算コマンドには、マスクDES演算を行う対象となるメッセージMが格納されているアドレスが含まれている。
ここで、コマンドの発生や入力がなかった場合には、ステップS21の待ちうけ判定を繰り返す。一方、コマンドの発生や入力があった場合、当該CPU22は、そのコマンドの種別がパラメータ書き換えコマンドであるかDES演算コマンドであるかを判定する(ステップS22)。
ここで、コマンドの種別がパラメータ書き換えコマンドであった場合、CPU22に認証AP21aのデータ変換実行コード21abがロードされる。そして、データ変換実行コード21abがロードされたCPU22は、前述したステップS11〜S16と同様な処理により、変形換字テーブル21cとマスクパラメータ21dとを新たに生成し、これらをEEPROM21に格納する(ステップS23)。
ここで、コマンドの種別がパラメータ書き換えコマンドであった場合、CPU22に認証AP21aのデータ変換実行コード21abがロードされる。そして、データ変換実行コード21abがロードされたCPU22は、前述したステップS11〜S16と同様な処理により、変形換字テーブル21cとマスクパラメータ21dとを新たに生成し、これらをEEPROM21に格納する(ステップS23)。
一方、コマンドの種別がDES演算コマンドであった場合、CPU22に認証AP21aの変形DES実行コード21aaがロードされる。そして、変形DES実行コード21aaがロードされたCPU22は、EEPROM21に格納された変形換字テーブル21c及びマスクパラメータ21dを用いてマスクDES演算を行う(ステップS24)。
図7は、変形DES実行コード21aaがロードされたCPU22(「暗号演算部」に相当)が実行するマスクDES演算の詳細を例示した図である。以下、この図に従い、マスクDES演算の詳細を説明する。
図7は、変形DES実行コード21aaがロードされたCPU22(「暗号演算部」に相当)が実行するマスクDES演算の詳細を例示した図である。以下、この図に従い、マスクDES演算の詳細を説明する。
まず、当該CPU22は、DES演算コマンドが有するアドレスが指定するRAM23等の記憶領域から暗号化対象のメッセージMを読み込み、さらにEEPROM21からマスクパラメータXを読み込む。そして、当該CPU22は、これらの排他的論理和〔M(+)X〕を算出してレジスタ22aに格納する(ステップS31)。
次に、変形DES実行コード21aaがロードされたCPU22は、レジスタ22aに格納されたM(+)Xに対し、DESで定義されている初期転置(初期置換)IPを施し、その演算結果をレジスタ22aに格納する(ステップS32)。そして、当該CPU22は、ステップS32でレジスタ22aに格納された値に対し、後述する変形DES演算を16段繰り返し、その演算結果をレジスタ22aに格納する(ステップS33)。
次に、変形DES実行コード21aaがロードされたCPU22は、レジスタ22aに格納されたM(+)Xに対し、DESで定義されている初期転置(初期置換)IPを施し、その演算結果をレジスタ22aに格納する(ステップS32)。そして、当該CPU22は、ステップS32でレジスタ22aに格納された値に対し、後述する変形DES演算を16段繰り返し、その演算結果をレジスタ22aに格納する(ステップS33)。
次に、当該CPU22は、ステップS33でレジスタ22aに格納された上位半分のビット及び下位半分のビットのそれぞれとマスクパラメータX4との排他的論理和を求め(ステップS34,S35)、各演算結果のビット位置を入れ換えたビット列をレジスタ22aに格納する。次に、当該CPU22は、レジスタ22aから当該ビット列を読み込み、そのFP演算を行い(ステップS36)、レジスタ22aに格納する。なお、FP演算とは、DESで定義されている最終転置を意味する。最後に、当該CPU22は、レジスタ22aからステップS36の演算結果を読み込み、EEPROM21からマスクパラメータXを読み込み、これらの排他的論理和演算を行い、その演算結果をメッセージMの変形DES暗号DESk(M)として出力する(ステップS37)。
図8(a)は、図7の変形DES演算(ステップS33)の1段分の処理を示した図であり、図8(b)は、図8(a)のステップS43の処理を示した図である。以下、これらの図に沿って、ステップS33の1段分の処理の詳細を説明する。
まず、変形DES実行コード21aaがロードされたCPU22は、レジスタ22aに格納された値の下位半分のビットを読み込み、DESで定義されている拡張転置(拡大置換)EPを施し(ステップS41)、その演算結果をレジスタ22aに格納する。次に、次に、ステップS41でレジスタ22aに格納された値と、DESのサブ鍵Kn(例えば、予めEEPROM21に格納)との排他的論理和を求め、これをレジスタ22aに格納する(ステップS42)。次に、当該CPU22は、ステップS42でレジスタ22aに格納された48ビットの値を6ビットずつに分け、それぞれにDESで定義されているMS−Box_1〜8による換字処理を実行し(ステップS50−1〜8)、その演算結果のビットを結合した32ビットの値をレジスタ22aに格納する(ステップS43)。そして、当該CPU22は、この32ビットの値に対し、DESで定義された転置Pを施し、レジスタ22aに格納する(ステップS44)。さらに、当該CPU22は、ステップS44でレジスタ22aに格納された値と、ステップS41で用いられなかった上位半分のビットとの排他的論理和を求め、これをレジスタ22aに格納する(ステップS45)。また、当該CPU22は、ステップS41でレジスタ22aに格納された値と、EEPRROM21に格納されているマスクパラメータX4とを読み込み、これらの排他的論理和を求めてレジスタ22aに格納する(ステップS46)。最後に、ステップS45でレジスタ22aに格納した値を上位半分のビットとし、ステップS46でレジスタ22aに格納した値を下位半分のビットとした値をレジスタ22aに格納する。
まず、変形DES実行コード21aaがロードされたCPU22は、レジスタ22aに格納された値の下位半分のビットを読み込み、DESで定義されている拡張転置(拡大置換)EPを施し(ステップS41)、その演算結果をレジスタ22aに格納する。次に、次に、ステップS41でレジスタ22aに格納された値と、DESのサブ鍵Kn(例えば、予めEEPROM21に格納)との排他的論理和を求め、これをレジスタ22aに格納する(ステップS42)。次に、当該CPU22は、ステップS42でレジスタ22aに格納された48ビットの値を6ビットずつに分け、それぞれにDESで定義されているMS−Box_1〜8による換字処理を実行し(ステップS50−1〜8)、その演算結果のビットを結合した32ビットの値をレジスタ22aに格納する(ステップS43)。そして、当該CPU22は、この32ビットの値に対し、DESで定義された転置Pを施し、レジスタ22aに格納する(ステップS44)。さらに、当該CPU22は、ステップS44でレジスタ22aに格納された値と、ステップS41で用いられなかった上位半分のビットとの排他的論理和を求め、これをレジスタ22aに格納する(ステップS45)。また、当該CPU22は、ステップS41でレジスタ22aに格納された値と、EEPRROM21に格納されているマスクパラメータX4とを読み込み、これらの排他的論理和を求めてレジスタ22aに格納する(ステップS46)。最後に、ステップS45でレジスタ22aに格納した値を上位半分のビットとし、ステップS46でレジスタ22aに格納した値を下位半分のビットとした値をレジスタ22aに格納する。
〔第2の実施の形態〕
本形態は、第1の実施の形態の変形例であり、AESをベースとした暗号方式に本発明を適用した例である。なお、以下では、第1の実施の形態との相違点を中心に説明を行い、第1の実施の形態と共通する部分については説明を省略する。
<構成>
全体構成は、図1に例示した第1の実施の形態のものと同様であるが、サーバ装置10の代わりにサーバ装置110が設けられ、ICカード20の代わりにICカード120が設けられる点が第1の実施の形態と相違する。
本形態は、第1の実施の形態の変形例であり、AESをベースとした暗号方式に本発明を適用した例である。なお、以下では、第1の実施の形態との相違点を中心に説明を行い、第1の実施の形態と共通する部分については説明を省略する。
<構成>
全体構成は、図1に例示した第1の実施の形態のものと同様であるが、サーバ装置10の代わりにサーバ装置110が設けられ、ICカード20の代わりにICカード120が設けられる点が第1の実施の形態と相違する。
<サーバ装置>
図9は、本形態におけるサーバ装置110の構成を例示したブロック図である。なお、図9において第1の実施の形態と共通する部分については図2と同じ符号を付した。
図9に示すように、この例のサーバ装置110は、補助記憶装置11、各処理を実行するCPU12、RAM13、通信部14及びバス15から構成されている。この例の補助記憶装置11には、変形AES実行コード111aaとデータ変換実行コード111abと制御コード111acとを有する認証AP111aと、その認証AP111aにサーバ装置110の署名用秘密鍵で署名された証明書111bが一対となり保管されている。さらに補助記憶装置11には、ダウンロード制御コード11cやデータ値生成命令コード11dも保管されている。
図9は、本形態におけるサーバ装置110の構成を例示したブロック図である。なお、図9において第1の実施の形態と共通する部分については図2と同じ符号を付した。
図9に示すように、この例のサーバ装置110は、補助記憶装置11、各処理を実行するCPU12、RAM13、通信部14及びバス15から構成されている。この例の補助記憶装置11には、変形AES実行コード111aaとデータ変換実行コード111abと制御コード111acとを有する認証AP111aと、その認証AP111aにサーバ装置110の署名用秘密鍵で署名された証明書111bが一対となり保管されている。さらに補助記憶装置11には、ダウンロード制御コード11cやデータ値生成命令コード11dも保管されている。
ここで、変形AES実行コード111aaは、演算処理内容は変形換字テーブルやマスクパラメータ従って変化するが、その演算結果はAES暗号アルゴリズムによるものと等しくなるマスクAES演算を、ICカード120のCPUに実行させるためのプログラムである。また、データ変換実行コード111abは、マスクAES演算に必要な変形換字テーブルやマスクパラメータの生成処理を、ICカード120のCPUに実行させるためのプログラムである。また、制御コード111acは、変形換字テーブル等の更新やマスクAES演算の制御を、ICカード120のCPUに実行させるためのプログラムである。なお、本形態の変形換字テーブルとは、AESの換字テーブルをデータ変換実行コード111abが示す処理に従って変形したテーブルである。また、本形態のマスクパラメータとは、当該変形に伴って暗号演算に必要となる付加演算に利用される被演算子である。
<ICカード>
図10は、本形態におけるICカード120の構成を例示したブロック図である。
図10に示すように、この例のICカード120には、EEPRROM21、レジスタ22aを具備するCPU22、RAM23、乱数生成器24、通信部25及びバス26が搭載されている。
ここで、初期段階のEEPROM21内には、第1の実施の形態と同様な公開鍵証明書21eやダウンロード制御コード21fや21gが格納されている。また、サーバ装置110からのダウンロードによって、EEPROM21内には、変形AES実行コード121aa、データ変換実行コード121ab及び制御コード121acを具備する認証AP121aと、証明書21bとが格納される。さらに、ICカード120での処理に応じ、EEPROM21内には変形換字テーブル121c及びマスクパラメータ121dが格納される。さらに、本形態では、マスクAES演算前に、マスクAES演算コマンドの引数として、変形換字テーブルとマスクパラメータとを書き換えることを許容するか否かを決定付ける書き換え不可能オプションを設定できる。これは、書き換え不可能オプション変数121jの値としてEEPROM21に格納され、この値が1であるときには、変形換字テーブル及びマスクパラメータの書き換えの許可しない処理が実行され、0であるときにはこれらの買い替えを許可しうる処理が実行される。また、暗号ライブラリの内部変数として、演算カウンタと変換済みフラグが用いられる。これらは、演算カウンタ値121i及び変換済みフラグ変数121hの値としてEEPROM21に格納される。
図10は、本形態におけるICカード120の構成を例示したブロック図である。
図10に示すように、この例のICカード120には、EEPRROM21、レジスタ22aを具備するCPU22、RAM23、乱数生成器24、通信部25及びバス26が搭載されている。
ここで、初期段階のEEPROM21内には、第1の実施の形態と同様な公開鍵証明書21eやダウンロード制御コード21fや21gが格納されている。また、サーバ装置110からのダウンロードによって、EEPROM21内には、変形AES実行コード121aa、データ変換実行コード121ab及び制御コード121acを具備する認証AP121aと、証明書21bとが格納される。さらに、ICカード120での処理に応じ、EEPROM21内には変形換字テーブル121c及びマスクパラメータ121dが格納される。さらに、本形態では、マスクAES演算前に、マスクAES演算コマンドの引数として、変形換字テーブルとマスクパラメータとを書き換えることを許容するか否かを決定付ける書き換え不可能オプションを設定できる。これは、書き換え不可能オプション変数121jの値としてEEPROM21に格納され、この値が1であるときには、変形換字テーブル及びマスクパラメータの書き換えの許可しない処理が実行され、0であるときにはこれらの買い替えを許可しうる処理が実行される。また、暗号ライブラリの内部変数として、演算カウンタと変換済みフラグが用いられる。これらは、演算カウンタ値121i及び変換済みフラグ変数121hの値としてEEPROM21に格納される。
<認証AP設定処理>
本形態の認証AP設定処理のうち、ICカード120が認証APをダウンロードするまでの処理は、サーバ装置10及びICカード20が、サーバ装置110及びICカード120に置き換わり、認証AP11a,21aが認証AP111a,121aに置き換わる点以外は第1の実施の形態(ステップS1〜S4)と同様である。以下では、認証AP121aをダウンロードしたICカード120が実行する変形添え字テーブル121cとマスクパラメータ121dの生成処理のみを説明する。
本形態の認証AP設定処理のうち、ICカード120が認証APをダウンロードするまでの処理は、サーバ装置10及びICカード20が、サーバ装置110及びICカード120に置き換わり、認証AP11a,21aが認証AP111a,121aに置き換わる点以外は第1の実施の形態(ステップS1〜S4)と同様である。以下では、認証AP121aをダウンロードしたICカード120が実行する変形添え字テーブル121cとマスクパラメータ121dの生成処理のみを説明する。
図11は、本形態における変形添え字テーブル121cとマスクパラメータ121dの生成処理を説明するためのフローチャートである。
まず、データ変換実行コード121abがロードされたCPU22は、乱数生成器24等で生成された128ビットの乱数値Xを取得し、これをマスクパラメータXとしてEEPROM21に格納する(ステップS91)。次に、当該CPU22は、EEPROM21に格納されたマスクパラメータXを読み込み、128ビットのマスクパラメータX1=InvShiftRows(InvMixColumns(X))
を算出してEEPROM21に格納する(ステップS92)。なお、InvShiftRows(α)は、αに対し、AESで定義されている逆行シフト演算を施すことを意味する。また、InvMixColumns(α)は、αに対し、AESで定義されている逆列混合演算を施すことを意味する。また、当該CPU22は、EEPROM21に格納されたマスクパラメータXを読み込み、128ビットのマスクパラメータ
X2=InvMixColumns(X)
を算出してEEPROM21に格納する(ステップS93)。以上により、EEPROM21には、マスクパラメータ(X,X1,X2)121dが格納された。
まず、データ変換実行コード121abがロードされたCPU22は、乱数生成器24等で生成された128ビットの乱数値Xを取得し、これをマスクパラメータXとしてEEPROM21に格納する(ステップS91)。次に、当該CPU22は、EEPROM21に格納されたマスクパラメータXを読み込み、128ビットのマスクパラメータX1=InvShiftRows(InvMixColumns(X))
を算出してEEPROM21に格納する(ステップS92)。なお、InvShiftRows(α)は、αに対し、AESで定義されている逆行シフト演算を施すことを意味する。また、InvMixColumns(α)は、αに対し、AESで定義されている逆列混合演算を施すことを意味する。また、当該CPU22は、EEPROM21に格納されたマスクパラメータXを読み込み、128ビットのマスクパラメータ
X2=InvMixColumns(X)
を算出してEEPROM21に格納する(ステップS93)。以上により、EEPROM21には、マスクパラメータ(X,X1,X2)121dが格納された。
次に、当該CPU22は、上述のように算出したマスクパラメータX,X1と、認証AP121a内に予め格納されている1個のAESの換字テーブルSubBytes(A)とをEEPROM21から読み込む。そして、当該CPU22は、以下の演算によって、16個の変形換字テーブル〔M−SubBytes_n(A)(n=1,...,16)〕121cを算出してEEPROM21に格納する(ステップS94)。
M-SubBytes_n(A)=SubBytes(A(+)X_n)(+)X1_n(n=1,...,16) …(2)
ここで、式(2)中の関数及びパラメータの意味は以下の通りである。
A:M−SubBytes_n(A)による換字処理の対象となる8ビットの値。M−SubBytes_n(A)のアドレスを示す。
M-SubBytes_n(A)=SubBytes(A(+)X_n)(+)X1_n(n=1,...,16) …(2)
ここで、式(2)中の関数及びパラメータの意味は以下の通りである。
A:M−SubBytes_n(A)による換字処理の対象となる8ビットの値。M−SubBytes_n(A)のアドレスを示す。
SubBytes(α):AESの換字テーブルに従い、入力された8ビットの値αを8ビットの値に変換する処理。
X_n:Xのうちビット位置8*(n−1)から8*(n−1)+7の範囲に該当する8ビットの値。
X1_n:X1のうちビット位置8*(n−1)から8*(n−1)+7の範囲に該当する8ビットの値。
すなわち、AESの換字テーブルを表す1個の配列について、配列のアドレスと要素とをそれぞれX及びX1の所定範囲の値で変形した16個の配列を変形換字テーブル121cとして、EEPROM21に格納する。
X_n:Xのうちビット位置8*(n−1)から8*(n−1)+7の範囲に該当する8ビットの値。
X1_n:X1のうちビット位置8*(n−1)から8*(n−1)+7の範囲に該当する8ビットの値。
すなわち、AESの換字テーブルを表す1個の配列について、配列のアドレスと要素とをそれぞれX及びX1の所定範囲の値で変形した16個の配列を変形換字テーブル121cとして、EEPROM21に格納する。
<変形AES実行処理及び認証AP更新処理>
以上のように認証APが設定されたICカード120は、制御コード121acがロードされたCPU22の制御のもと、他のAP21gの実行に伴い発生したコマンドをトリガとして各処理を実行する。ここで、他のAP21gの実行に伴い発生するコマンドは、変形換字テーブル121cとマスクパラメータ121dとを書き換えるデータ値生成命令であるパラメータ書き換えコマンドと、実際にマスクAES演算を行う暗号演算命令であるAES演算コマンドとの2種類である。他のAP21gがロードされたCPU22が、その処理過程でEEPROM21内の変形換字テーブル121cとマスクパラメータ121dの書き換えを要求する場合、当該CPU22はパラメータ書き換えコマンドを発生させる。また、当該CPU22が、その処理過程でマスクAES演算を必要とする場合、当該CPU22はAES演算コマンドを発生させる。なお、このAES演算コマンドには、マスクAES演算を行う対象となるメッセージMが格納されているアドレスが含まれている。
以上のように認証APが設定されたICカード120は、制御コード121acがロードされたCPU22の制御のもと、他のAP21gの実行に伴い発生したコマンドをトリガとして各処理を実行する。ここで、他のAP21gの実行に伴い発生するコマンドは、変形換字テーブル121cとマスクパラメータ121dとを書き換えるデータ値生成命令であるパラメータ書き換えコマンドと、実際にマスクAES演算を行う暗号演算命令であるAES演算コマンドとの2種類である。他のAP21gがロードされたCPU22が、その処理過程でEEPROM21内の変形換字テーブル121cとマスクパラメータ121dの書き換えを要求する場合、当該CPU22はパラメータ書き換えコマンドを発生させる。また、当該CPU22が、その処理過程でマスクAES演算を必要とする場合、当該CPU22はAES演算コマンドを発生させる。なお、このAES演算コマンドには、マスクAES演算を行う対象となるメッセージMが格納されているアドレスが含まれている。
図12は、本形態の変形AES実行処理及び認証AP更新処理を説明するためのフローチャートである。以下、このフローチャートに沿って説明を行っていく。
まず、制御コード121acがロードされたCPU22は、上記コマンドの発生があったか否かを判定する(ステップS101)。ここで、コマンドの発生がなかった場合には、ステップS101の待ちうけ判定を繰り返す。一方、コマンドの発生があった場合、当該CPU22は、そのコマンドの種別がパラメータ書き換えコマンドであるかAES演算コマンドであるかを判定する(ステップS102)。
まず、制御コード121acがロードされたCPU22は、上記コマンドの発生があったか否かを判定する(ステップS101)。ここで、コマンドの発生がなかった場合には、ステップS101の待ちうけ判定を繰り返す。一方、コマンドの発生があった場合、当該CPU22は、そのコマンドの種別がパラメータ書き換えコマンドであるかAES演算コマンドであるかを判定する(ステップS102)。
ここで、コマンドの種別がパラメータ書き換えコマンドであると判定された場合、データ変換実行コード121abがCPU22にロードされ、当該CPU22(「フラグ演算部」に相当)は、まずEEPROM21(「フラグメモリ」に相当)の変更済みフラグ変数121hの値を0(「第1定数」に相当)とする(ステップS113)。次に、当該CPU22は、乱数値を生成し、その乱数値に基づき新たな変形換字テーブル121cとマスクパラメータ121dを生成し、これらでEEPROM21の内容を書き換える(ステップS114)。なお、変形換字テーブル121cとマスクパラメータ121dの生成手順は、ステップS91〜S94と同様である。この書き換え終了後、当該CPU22は、EEPROM21の変更済みフラグ変数121hの値を1(「第2定数」に相当)とし、処理を終了する(ステップS115)。
一方、ステップS102において、コマンドの種別がAES演算コマンドであると判定されると、変形AES実行コード121aaがCPU22にロードされ、当該CPU22は、引き続き、EEPROM21に格納された変換済みフラグ変数121hの値を確認する(ステップS103)。
ここで、変換済みフラグ変数121hの値が0であった場合、変形換字テーブル121cとマスクパラメータ121dの書き換え中に動作が異常終了するなど、何らかの理由で正しい変形換字テーブル121cとマスクパラメータ121dがEEPROM21に格納されていないと推測される。そこで、この場合にはCPU22にデータ変換実行コード121abがロードされ、当該CPU22は、ステップS113〜S115と同様な手順により、変形換字テーブル121cとマスクパラメータ121dの書き換えを実施する(ステップS109〜S111)。その書き換えが終了後、当該CPU22は、EEPROM21の演算カウンタ値121iを0に設定し(ステップS112)、再び、ステップS103の変換済みフラグ変数の判定処理に戻る。
ここで、変換済みフラグ変数121hの値が0であった場合、変形換字テーブル121cとマスクパラメータ121dの書き換え中に動作が異常終了するなど、何らかの理由で正しい変形換字テーブル121cとマスクパラメータ121dがEEPROM21に格納されていないと推測される。そこで、この場合にはCPU22にデータ変換実行コード121abがロードされ、当該CPU22は、ステップS113〜S115と同様な手順により、変形換字テーブル121cとマスクパラメータ121dの書き換えを実施する(ステップS109〜S111)。その書き換えが終了後、当該CPU22は、EEPROM21の演算カウンタ値121iを0に設定し(ステップS112)、再び、ステップS103の変換済みフラグ変数の判定処理に戻る。
一方、ステップS103において、変換済みフラグ変数121hの値が1であると判断された場合、制御コード121acがロードされたCPU22は、変形換字テーブル121cとマスクパラメータ121dが正しくEEPROM21に格納されていると判断し、次の書き換え不可能オプションの判定処理に移る。
書き換え不可能オプションの判定処理では、当該CPU22は、EEPROM21に格納された書き換え不可能オプション変数121jの値を判定する(ステップS104)。ここで、書き換え不可能オプション変数121jの値が0であった場合には、当該CPU22は、引き続き、書き換え判定を行う(ステップS105)。この書き換え判定は、予め制御コード21bに設定した判定条件に基づいて行われる。例えば、マスクAES演算が100回未満なら書き換えを行わず、100回に達したら書き換えを行う、などの判定条件をプログラム内に設定しておく。このように変形換字テーブル121cとマスクパラメータ121dを書き換えることなくマスクAES演算ができる上限回数を設定することで、サイドチャネル攻撃への耐性を高めることができる。
書き換え不可能オプションの判定処理では、当該CPU22は、EEPROM21に格納された書き換え不可能オプション変数121jの値を判定する(ステップS104)。ここで、書き換え不可能オプション変数121jの値が0であった場合には、当該CPU22は、引き続き、書き換え判定を行う(ステップS105)。この書き換え判定は、予め制御コード21bに設定した判定条件に基づいて行われる。例えば、マスクAES演算が100回未満なら書き換えを行わず、100回に達したら書き換えを行う、などの判定条件をプログラム内に設定しておく。このように変形換字テーブル121cとマスクパラメータ121dを書き換えることなくマスクAES演算ができる上限回数を設定することで、サイドチャネル攻撃への耐性を高めることができる。
ここで、書き換えを行うと判定されると、前述したステップS109以降の処理が実行される。一方、書き換えを行わないと判定されると、変形AES実行コード121aaがCPU22にロードされる。そして当該CPU22は、EEPROM21に格納された変形換字テーブル121c及びマスクパラメータ121dを用い、マスクAES演算を実行する(ステップS106)。その後、当該CPU22は、EEPROM21に格納された演算カウンタ値121iに1を加え、マスクAES演算の結果をコマンドの発生元に返却し、処理を終了する(ステップS108)。
なお、マスクAES演算の処理時間をできるだけ短くしたいときや、電源が不安定である判断される場合、上述の書き換え不可能オプション変数121jを1に設定しておくのが好適である。上述のように、この書き換え不可能オプション変数121jが1の場合、変形換字テーブル121cとマスクパラメータ121dの書き換えが行われることなく、すぐにマスクAES演算処理が行われる。よって、高速に処理ができたり、パラメータの書き換え中に電源断が起こり、変形換字テーブル121cとマスクパラメータ121dが正しく格納されなかったりすることを防ぐことができる。また、ICカード120のインタフェースが接触と非接触のコンビネーション型のときは、使用しているインタフェースに応じ、接触時には書き換え不可能オプション変数121jを0に、非接触時には書き換え不可能オプション変数121jを1にするのが好適である。これは、非接触インタフェースで動作しているときには、演算中に電源断となる可能性が、接触インタフェース動作ときに比べて高いためである。
次に、図12のステップS106の処理について説明する。
図13(a)(b)は、この処理の詳細を説明するためのフローチャートである。
まず、変形AES実行コード121aaがロードされたCPU22は、AES演算コマンドに含まれるアドレスが指定するRAM23等の記憶領域から暗号化対象となるメッセージMを読み込み、EEPROM21からマスクパラメータXを読み込む。そして、当該CPU22は、これらの排他的論理和を求め、レジスタ22aに格納する(ステップS131)。次に、当該CPU22は、このレジスタ22aに格納された値を読み込み、さらに予め変形AES実行コード121aaに設定されているラウンドキーを用いてAESで定義されているAddRoundKey変換を行う。そして、その演算結果AddRoundKey(M)(+)Xはレジスタ22aに格納される(ステップS132)。
図13(a)(b)は、この処理の詳細を説明するためのフローチャートである。
まず、変形AES実行コード121aaがロードされたCPU22は、AES演算コマンドに含まれるアドレスが指定するRAM23等の記憶領域から暗号化対象となるメッセージMを読み込み、EEPROM21からマスクパラメータXを読み込む。そして、当該CPU22は、これらの排他的論理和を求め、レジスタ22aに格納する(ステップS131)。次に、当該CPU22は、このレジスタ22aに格納された値を読み込み、さらに予め変形AES実行コード121aaに設定されているラウンドキーを用いてAESで定義されているAddRoundKey変換を行う。そして、その演算結果AddRoundKey(M)(+)Xはレジスタ22aに格納される(ステップS132)。
次に、当該CPU22は、レジスタ22aに格納されているAddRoundKey(M)(+)Xを読み込み、EEPROM21から変形換字テーブル121cを読み込む。そして、当該CPU22は、この変形換字テーブル121cを用い、AddRoundKey(M)(+)Xに対するM−SubBytes演算を行う(ステップS133)。即ち、AddRoundKey(M)(+)Xを8ビットごとの16個のビット列に分離し、各ビット列に対し、変形換字テーブル121cを用いた
M−SubBytes_n換字演算(式(2)参照)を行い(ステップS151−1〜16)、各演算結果であるビット列を結合する。そして、この演算結果はレジスタ22aに格納される。
M−SubBytes_n換字演算(式(2)参照)を行い(ステップS151−1〜16)、各演算結果であるビット列を結合する。そして、この演算結果はレジスタ22aに格納される。
次に、当該CPU22は、ステップS133でレジスタ22aに格納された値に対し、AESで定義されたShiftRows変換を行い(ステップS134)、さらにその結果対し、AESで定義されたMixColumns変換を行い(ステップS135)、その演算結果に対し、AddRoundKey変換を実行し(ステップS136)、その演算結果State1(+)Xをレジスタ22aに格納する。そして、当該CPU22は、ここでレジスタ22aに格納されている演算結果を入力としてステップS133〜S136と同様なラウンド処理を行い、さらにその出力値を次のラウンドの入力とする処理を合計9ラウンド繰り返す。
その後、当該CPU22は、レジスタ22aに格納されている9ラウンド目の出力値State9(+)Xを読み込み、EEPROM21から変形換字テーブル121cを読み込み、9ラウンド目の出力値State9(+)Xに対するM−SubBytes演算を行う(ステップS137)。さらに、当該CPU22は、レジスタ22aからこの演算結果を読み込み、その演算結果に対し、ShiftRows変換を行い(ステップS138)、さらにその演算結果に対し、AddRoundKey変換を実行し(ステップS139)、その演算結果State10(+)InvMixColumns(X)を
レジスタ22aに格納する。
レジスタ22aに格納する。
最後に、当該CPU22は、レジスタ22aに格納されているState10(+)InvMixColumns(X)を読み込み、EEPROM21に格納されているマスクパラメータX2を読み込み、これらの排他的論理和を算出し、それをマスクAESの演算結果AES128(M)として出力する(ステップS140)。なお、ここでは説明を省略するが、マスクAESの復号演算についても、各種パラメータを変更することにより同様に実行できる。
以上説明したように、この発明によれば、マスク演算手法を使用する暗号演算装置において、全ての暗号処理装置で異なる乱数を使用することができ、セキュリティ面で好適である。また、暗号処理装置をソフトウェアプログラムで実装した場合でも、ソフトウェアプログラムと添付する証明書は一組で良く、安価に製造できる。
以上説明したように、この発明によれば、マスク演算手法を使用する暗号演算装置において、全ての暗号処理装置で異なる乱数を使用することができ、セキュリティ面で好適である。また、暗号処理装置をソフトウェアプログラムで実装した場合でも、ソフトウェアプログラムと添付する証明書は一組で良く、安価に製造できる。
なお、本発明は上述の実施の形態に限定されるものではない。例えば、図12に示したような処理を、第1の実施の形態におけるマスクDES演算で実現してもよい。また、上述の各形態では、ICカードを暗号処理装置としたが、携帯電話、パームトップコンピュータ、パーソナルコンピュータ等を暗号処理装置としてもよい。また、上述の各形態ではDESやAESに対して本発明を適用することとしたが、他の暗号系に本発明の概念を適用することとしてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP−ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP−ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
本発明により、サイドチャネル攻撃に強い暗号処理を行うことが可能なICカードや携帯電話等を構成することが可能となる。
10,110 サーバ装置
20,120 ICカード(暗号処理装置)
20,120 ICカード(暗号処理装置)
Claims (10)
- 暗号演算を行う暗号処理装置であって、
データ値生成命令が入力されたことを契機に、演算処理内容を特定する暗号演算特定データを生成する暗号演算特定データ生成部と、
前記暗号演算特定データを格納するデータ記憶部と、
演算処理内容は前記データ記憶部に格納された前記暗号演算特定データに従って変化するがその演算結果は所定の暗号アルゴリズムによるものと等しくなる演算を実行する暗号演算部と、
を有することを特徴とする暗号処理装置。 - 請求項1に記載の暗号処理装置であって、
前記所定の暗号アルゴリズムが、
換字テーブルを用いて換字処理を行う暗号アルゴリズムであり、
前記暗号演算特定データが、
前記換字テーブルを変形した変形換字テーブルと、演算処理に利用される被演算子であるマスクパラメータとを具備するデータである、
ことを特徴とする暗号処理装置。 - 請求項1或いは2に記載の暗号処理装置であって、
乱数を生成する乱数生成部をさらに有し、
前記暗号演算特定データ生成部が、
前記乱数を用いて前記暗号演算特定データを生成する、
ことを特徴とする暗号処理装置。 - 請求項1或いは2に記載の暗号処理装置であって、
サーバ装置から送信された乱数を受信する乱数受信部をさらに有し、
前記暗号演算特定データ生成部が、
前記乱数を用いて前記暗号演算特定データを生成する、
ことを特徴とする暗号処理装置。 - 請求項1或いは2に記載の暗号処理装置であって、
送信された任意の定数を受信する定数受信部と、
前記任意の定数と所定の関数とを用いて乱数を生成する乱数生成部と、をさらに有し、
前記暗号演算特定データ生成部が、
前記乱数を用いて前記暗号演算特定データを生成する、
を有することを特徴とする暗号処理装置。 - 請求項5に記載の暗号処理装置であって、
前記乱数生成部が、前記任意の定数とハッシュ関数とを用いて前記乱数を生成する、
ことを特徴とする暗号処理装置。 - 請求項1から6の何れかに記載の暗号処理装置であって、
前記暗号演算特定データ生成部が、
サーバ装置から送信されたデータ値生成命令が入力されたことを契機に、前記暗号演算特定データを生成する、
ことを特徴とする暗号処理装置。 - 請求項1から7の何れかに記載の暗号処理装置であって、
サーバ装置から送信された認証アプリケーションプログラムを受信するプログラム受信部と、
前記認証アプリケーションプログラムを格納するプログラム記憶部と、
CPUと、を有し、
前記暗号演算特定データ生成部及び前記暗号演算部が、
前記CPUにおいて前記認証アプリケーションプログラムが読み込まれることにより構成されるものであり、
前記データ記憶部には、
前記暗号演算特定データ生成部によって生成された前記暗号演算特定データが格納される、
ことを特徴とする暗号処理装置。 - 請求項1から8の何れかに記載の暗号処理装置であって、
前記暗号演算特定データ生成部が前記暗号演算特定データを生成する前に、変換済みフラグ変数に第1定数を代入してフラグメモリに格納し、前記暗号演算特定データの生成後に、当該変換済みフラグ変数に第2定数を代入して当該フラグメモリに格納するフラグ演算部をさらに有する、
ことを特徴とする暗号処理装置。 - 請求項1から7の何れかに記載の暗号処理装置としてコンピュータを機能させるための認証アプリケーションプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005184613A JP2007006184A (ja) | 2005-06-24 | 2005-06-24 | 暗号処理装置及び認証アプリケーションプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005184613A JP2007006184A (ja) | 2005-06-24 | 2005-06-24 | 暗号処理装置及び認証アプリケーションプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007006184A true JP2007006184A (ja) | 2007-01-11 |
Family
ID=37691346
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005184613A Pending JP2007006184A (ja) | 2005-06-24 | 2005-06-24 | 暗号処理装置及び認証アプリケーションプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007006184A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009118829A1 (ja) | 2008-03-25 | 2009-10-01 | 三菱電機株式会社 | 暗号演算装置及び暗号演算プログラム及び記録媒体 |
JP2013029835A (ja) * | 2011-07-26 | 2013-02-07 | Crocus Technology Sa | サイドチャネル攻撃に対抗する方法 |
JP2015118439A (ja) * | 2013-12-17 | 2015-06-25 | Kddi株式会社 | 演算装置、演算方法およびコンピュータプログラム |
KR20150127735A (ko) * | 2007-05-10 | 2015-11-17 | 퓨얼 셀 에너지, 인크 | 연료전지 조립체 및 그 제조 방법 |
JP2019535036A (ja) * | 2016-10-13 | 2019-12-05 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 認証命令を含む暗号メッセージを実現するコンピュータ・プログラム製品、コンピュータ・システム、およびコンピュータ実装方法 |
EP4351080A1 (en) | 2022-10-03 | 2024-04-10 | Canon Kabushiki Kaisha | Encryption processing apparatus, encryption processing method for encryption processing apparatus, and storage medium |
-
2005
- 2005-06-24 JP JP2005184613A patent/JP2007006184A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150127735A (ko) * | 2007-05-10 | 2015-11-17 | 퓨얼 셀 에너지, 인크 | 연료전지 조립체 및 그 제조 방법 |
KR101665282B1 (ko) | 2007-05-10 | 2016-10-24 | 퓨얼 셀 에너지, 인크 | 연료전지 조립체 및 그 제조 방법 |
WO2009118829A1 (ja) | 2008-03-25 | 2009-10-01 | 三菱電機株式会社 | 暗号演算装置及び暗号演算プログラム及び記録媒体 |
JP2013029835A (ja) * | 2011-07-26 | 2013-02-07 | Crocus Technology Sa | サイドチャネル攻撃に対抗する方法 |
JP2015118439A (ja) * | 2013-12-17 | 2015-06-25 | Kddi株式会社 | 演算装置、演算方法およびコンピュータプログラム |
JP2019535036A (ja) * | 2016-10-13 | 2019-12-05 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 認証命令を含む暗号メッセージを実現するコンピュータ・プログラム製品、コンピュータ・システム、およびコンピュータ実装方法 |
JP7116050B2 (ja) | 2016-10-13 | 2022-08-09 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 認証命令を含む暗号メッセージを実現するコンピュータ・プログラム製品、コンピュータ・システム、およびコンピュータ実装方法 |
EP4351080A1 (en) | 2022-10-03 | 2024-04-10 | Canon Kabushiki Kaisha | Encryption processing apparatus, encryption processing method for encryption processing apparatus, and storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2399087C2 (ru) | Безопасное хранение данных с защитой целостности | |
EP2491510B1 (en) | Distribution system and method for distributing digital information | |
JP4723251B2 (ja) | 機器固有の機密保護データの安全な組み込みと利用 | |
JP6449970B2 (ja) | IoTデバイス | |
US7392393B2 (en) | Content distribution system | |
US6327660B1 (en) | Method for securing communications in a pre-boot environment | |
US7127067B1 (en) | Secure patch system | |
US20240323006A1 (en) | Secure Server Digital Signature Generation for Post-Quantum Cryptography Key Encapsulations | |
CA2717622C (en) | White-box implementation | |
US20090249492A1 (en) | Fabrication of computer executable program files from source code | |
US20230361994A1 (en) | System and Methods for Secure Communication Using Post-Quantum Cryptography | |
KR102397579B1 (ko) | 부채널 분석 방지를 위한 화이트박스 암호 방법 및 장치 | |
EP2372592B1 (en) | integrated circuit and system for installing computer code thereon | |
JP2009038603A (ja) | ソフトウェア無線通信装置、及びソフトウェア更新方法、並びに、ソフトウェア無線通信システム | |
JP2009543498A (ja) | デジタルデータ処理装置の耐改竄性 | |
EP2064648A1 (en) | Fabrication of computer executable program files from source code | |
JP4175386B2 (ja) | 情報処理システム、情報処理装置、および集積回路チップ | |
CN104854814A (zh) | 密钥共享网络设备及其配置 | |
JP2007006184A (ja) | 暗号処理装置及び認証アプリケーションプログラム | |
WO2007072615A1 (ja) | 認証システム及び認証対象装置 | |
JP3733027B2 (ja) | 秘密鍵式暗号化アルゴリズムを用いる電子構成部品内の対抗措置方法 | |
CN116455572B (zh) | 数据加密方法、装置及设备 | |
RU2710670C2 (ru) | Криптографическая система и способ | |
US20090239500A1 (en) | Maintaining secure communication of a network device | |
JP7070689B2 (ja) | 署名処理装置、署名処理方法、署名処理システム、及びプログラム |