JP6089998B2 - 暗号処理装置および情報処理装置 - Google Patents
暗号処理装置および情報処理装置 Download PDFInfo
- Publication number
- JP6089998B2 JP6089998B2 JP2013128791A JP2013128791A JP6089998B2 JP 6089998 B2 JP6089998 B2 JP 6089998B2 JP 2013128791 A JP2013128791 A JP 2013128791A JP 2013128791 A JP2013128791 A JP 2013128791A JP 6089998 B2 JP6089998 B2 JP 6089998B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- unit
- encryption
- random number
- code 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.)
- Active
Links
Images
Description
本発明は、入力した元データに対して暗号化もしくは復号のための暗号処理を行い、処理済データを出力する暗号処理装置およびこれを用いた情報処理装置に関する。
現代社会では、パソコン、スマートフォン、電子タブレット、ICカードなど、様々な情報処理装置が社会生活に欠かせない電子機器として普及している。このように、社会生活に組み込まれて利用される情報処理装置には、セキュリティを確保する上で、暗号処理が欠かせない機能となってきており、多くの情報処理装置には暗号処理機能が組み込まれている。
多くの情報処理装置は、基本的に、コンピュータプログラムを実行することにより所望の情報処理を実行する装置であり、この情報処理装置に組み込まれた暗号処理装置の機能も、コンピュータプログラムによって実現される。一般的な情報処理装置では、その本来の機能を果たすためのメインプログラムとは別に、暗号処理装置としての機能を果たすための暗号処理サブルーチンが組み込まれており、メインプログラムの実行上、暗号処理が必要になったときに、適宜、暗号処理サブルーチンを呼び出して暗号処理を依頼する形式が採られる。
たとえば、メインプログラムにおいて暗号化を行う必要が生じた場合には、メインプログラムから暗号処理サブルーチンに平文データを引き渡し、暗号処理サブルーチンにおいて、当該平文データを暗号データに変換する処理を行い、得られた暗号データをメインプログラムに引き渡す処理が行われる。また、メインプログラムにおいて復号を行う必要が生じた場合には、メインプログラムから暗号処理サブルーチンに暗号データを引き渡し、暗号処理サブルーチンにおいて、当該暗号データを元の平文データに変換する処理を行い、得られた平文データをメインプログラムに引き渡す処理が行われる。
暗号の秘密性を維持するためには、暗号処理サブルーチン内で実行される処理を秘密に保つ必要がある。このため、暗号処理サブルーチン内では、固有の秘密暗号アルゴリズムが採用され、かつ、固有の暗号鍵を用いた暗号処理が実行される。したがって、どのような暗号鍵を用いてどのようなアルゴリズムで暗号処理が行われたかが秘匿されている限り、暗号の秘密性は維持されることになる。
任意の暗号鍵を用いた暗号処理を行うには、メインプログラムから暗号処理サブルーチンに対して、処理対象となる元データとともに暗号鍵を引き渡し、暗号処理サブルーチンでは、当該暗号鍵を用いた暗号処理を実施し、処理済データをメインプログラムへ戻す処理を行うことになる。ところが、クラッカーの不正行為により、暗号処理に用いられた暗号鍵が漏洩してしまうと、暗号処理サブルーチン内で実行された暗号処理の内容が解析されるおそれがあり、暗号処理装置の耐タンパ性が損なわれることになる。したがって、暗号処理サブルーチンにおいて実施される暗号処理について、耐タンパ性を確保する1つの方法は、暗号処理に利用される暗号鍵の秘密性を維持することである。
このような観点から、たとえば、下記の特許文献1には、移動体通信端末などの通信機器において暗号処理を実行する際に、必要となる暗号鍵を当該通信機器の内部に格納する代わりに、メモリモジュールを組み込んだ指輪に格納しておき、暗号処理が必要なときには、この指輪から暗号鍵を読み出して利用する技術が開示されている。この技術を採用すれば、通信機器が盗難にあったとしても、一緒に指輪が盗まれない限り、暗号鍵が漏洩することはなく、耐タンパ性を確保することができる。
一方、特許文献2には、移動体通信端末などの通信機器において暗号処理を実行する際に、必要となる暗号鍵を外部の管理サーバからダウンロードするようにし、一定時間が経過したときに、当該情報処理装置内から暗号鍵を消去することにより、暗号鍵の漏洩を防ぎ、耐タンパ性を確保する技術が開示されている。また、特許文献3には、暗号鍵を複数に分割し、一方の分割暗号鍵を情報処理装置内に格納しておき、他方の分割暗号鍵を外部の管理サーバに格納しておき、暗号処理に必要な時点で、管理サーバから他方の分割暗号鍵をダウンロードして、元の暗号鍵を復元する方法が提案されている。
上述したとおり、暗号処理機能を備えた情報処理装置において、暗号処理に利用する暗号鍵を当該装置の内部に格納しておくと、クラッカーの不正行為により暗号鍵が漏洩する可能性があり、耐タンパ性を損なう要因になる。そこで、前掲の特許文献1では、メモリモジュールを組み込んだ指輪に暗号鍵を格納しておく方法が提案されているが、ユーザは、通信機器を利用する際に常に指輪を携行する必要があり、実用上、利用の便宜性は著しく低下してしまう。
一方、前掲の特許文献2,3には、暗号鍵もしくはその一部の部分暗号鍵を、外部の管理サーバからダウンロードして入手する方法が提案されており、この方法を採用すれば、情報処理装置から暗号鍵が直接的に盗まれてしまうことを防止することはできるが、クラッカーは、ダウンロード経路から間接的に暗号鍵を盗み取ることが可能であり、また、情報処理装置自体を入手したクラッカーは、管理サーバからダウンロードした上で暗号鍵を盗み取ることもできるので、十分な耐タンパ性を確保することができない。
そこで本発明は、所定の暗号鍵を用いた所定の暗号アルゴリズムに基づいて暗号処理を実行する際に、利便性を損なうことなしに、耐タンパ性を確保することが可能な暗号処理装置およびこれを組み込んだ情報処理装置を提供することを目的とする。
(1) 本発明の第1の態様は、入力した元データに対して暗号化もしくは復号のための暗号処理を行い、処理済データを出力する暗号処理装置において、
暗号処理の対象となる元データと、暗号処理に必要な暗号鍵と、暗号処理に用いる暗号アルゴリズムを指定するための符号データと、を外部から入力するデータ入力部と、
データ入力部が入力した暗号鍵を用いた所定の暗号アルゴリズムに基づいて、データ入力部が入力した元データに対して暗号処理を実施し、処理済データを生成する暗号処理部と、
生成された処理済データを外部に出力するデータ出力部と、
それぞれ固有のセル番号が付与された複数M個のセルに、ランダムにN通り(M≧N)の数値を収容した乱数テーブルを格納する乱数テーブル格納部と、
乱数テーブルを参照することにより、データ入力部が入力した符号データを構成する数値を、当該数値をセル番号とするセルに収容されている数値に置き換える変換処理を行い、当該変換処理を経て得られるデータをアルゴリズム指定子として暗号処理部に与える符号変換部と、
を設け、
暗号処理部が、複数通りの暗号アルゴリズムのうち、アルゴリズム指定子によって指定された暗号アルゴリズムを用いて暗号処理を実施するようにしたものである。
暗号処理の対象となる元データと、暗号処理に必要な暗号鍵と、暗号処理に用いる暗号アルゴリズムを指定するための符号データと、を外部から入力するデータ入力部と、
データ入力部が入力した暗号鍵を用いた所定の暗号アルゴリズムに基づいて、データ入力部が入力した元データに対して暗号処理を実施し、処理済データを生成する暗号処理部と、
生成された処理済データを外部に出力するデータ出力部と、
それぞれ固有のセル番号が付与された複数M個のセルに、ランダムにN通り(M≧N)の数値を収容した乱数テーブルを格納する乱数テーブル格納部と、
乱数テーブルを参照することにより、データ入力部が入力した符号データを構成する数値を、当該数値をセル番号とするセルに収容されている数値に置き換える変換処理を行い、当該変換処理を経て得られるデータをアルゴリズム指定子として暗号処理部に与える符号変換部と、
を設け、
暗号処理部が、複数通りの暗号アルゴリズムのうち、アルゴリズム指定子によって指定された暗号アルゴリズムを用いて暗号処理を実施するようにしたものである。
(2) 本発明の第2の態様は、上述した第1の態様に係る暗号処理装置において、
暗号処理部が、全N通りの暗号アルゴリズムの中から指定された暗号アルゴリズムを用いて暗号処理を実施する機能を有し、
アルゴリズム指定子が、0〜(N−1)の範囲の値をもった整数により、N通りの暗号アルゴリズムのうちの1つを指定し、
乱数テーブル格納部が、0〜(M−1)の範囲の連続したセル番号が付与された複数M個のセルに、0〜(N−1)の範囲の連続するN通りの整数を重複を許してランダムに収容した乱数テーブルを格納しており、
符号変換部が、0〜(M−1)の範囲の値をもった整数によって構成された符号データを、0〜(N−1)の範囲の値をもった整数によって構成されるアルゴリズム指定子に置き換える変換処理を行うようにしたものである。
暗号処理部が、全N通りの暗号アルゴリズムの中から指定された暗号アルゴリズムを用いて暗号処理を実施する機能を有し、
アルゴリズム指定子が、0〜(N−1)の範囲の値をもった整数により、N通りの暗号アルゴリズムのうちの1つを指定し、
乱数テーブル格納部が、0〜(M−1)の範囲の連続したセル番号が付与された複数M個のセルに、0〜(N−1)の範囲の連続するN通りの整数を重複を許してランダムに収容した乱数テーブルを格納しており、
符号変換部が、0〜(M−1)の範囲の値をもった整数によって構成された符号データを、0〜(N−1)の範囲の値をもった整数によって構成されるアルゴリズム指定子に置き換える変換処理を行うようにしたものである。
(3) 本発明の第3の態様は、上述した第2の態様に係る暗号処理装置において、
M=Nに設定し、
乱数テーブル格納部に、N個のセルにN通りの整数をそれぞれ1個ずつ収容した乱数テーブルを格納するようにしたものである。
M=Nに設定し、
乱数テーブル格納部に、N個のセルにN通りの整数をそれぞれ1個ずつ収容した乱数テーブルを格納するようにしたものである。
(4) 本発明の第4の態様は、上述した第2の態様に係る暗号処理装置において、
M>Nに設定し、
乱数テーブル格納部に、M個のセルにN通りの整数がそれぞれ少なくとも1個ずつ収容され、一部のセルには他のセルと同一の整数が重複して収容されている乱数テーブルを格納するようにしたものである。
M>Nに設定し、
乱数テーブル格納部に、M個のセルにN通りの整数がそれぞれ少なくとも1個ずつ収容され、一部のセルには他のセルと同一の整数が重複して収容されている乱数テーブルを格納するようにしたものである。
(5) 本発明の第5の態様は、上述した第1〜第4の態様に係る暗号処理装置において、
乱数テーブル格納部が、複数K通りの乱数テーブルを格納しており、
データ入力部が、元データ、暗号鍵、符号データとともに、特定の乱数テーブルを指定するテーブル指定子を外部から入力し、
符号変換部が、テーブル指定子で指定された乱数テーブルを参照することにより変換処理を行うようにしたものである。
乱数テーブル格納部が、複数K通りの乱数テーブルを格納しており、
データ入力部が、元データ、暗号鍵、符号データとともに、特定の乱数テーブルを指定するテーブル指定子を外部から入力し、
符号変換部が、テーブル指定子で指定された乱数テーブルを参照することにより変換処理を行うようにしたものである。
(6) 本発明の第6の態様は、上述した第5の態様に係る暗号処理装置において、
データ入力部が、元データと、暗号鍵と、単位データを複数L個羅列することにより構成される符号データと、この符号データを構成する個々の単位データごとに、もしくは、複数の単位データからなる個々の単位データ群ごとに、それぞれ特定の乱数テーブルを指定する固有のテーブル指定子と、を外部から入力し、
符号変換部が、符号データを構成する個々の単位データごとに、もしくは、複数の単位データからなる個々の単位データ群ごとに、それぞれ固有のテーブル指定子で指定された乱数テーブルを参照することにより変換処理を行うようにしたものである。
データ入力部が、元データと、暗号鍵と、単位データを複数L個羅列することにより構成される符号データと、この符号データを構成する個々の単位データごとに、もしくは、複数の単位データからなる個々の単位データ群ごとに、それぞれ特定の乱数テーブルを指定する固有のテーブル指定子と、を外部から入力し、
符号変換部が、符号データを構成する個々の単位データごとに、もしくは、複数の単位データからなる個々の単位データ群ごとに、それぞれ固有のテーブル指定子で指定された乱数テーブルを参照することにより変換処理を行うようにしたものである。
(7) 本発明の第7の態様は、上述した第1〜第4の態様に係る暗号処理装置において、
乱数テーブル格納部が、複数K通りの乱数テーブルを格納しており、
符号変換部が、K通りの乱数テーブルを所定の規則で順次指定するテーブル指定パターンを複数通り記憶しており、
データ入力部が、元データと、暗号鍵と、単位データを複数L個羅列することにより構成される符号データと、特定のテーブル指定パターンを選択するパターン選択子と、を外部から入力し、
符号変換部が、パターン選択子によって選択されたテーブル指定パターンに基づいて、符号データを構成する個々の単位データごとに乱数テーブルを指定し、指定された乱数テーブルを参照することにより変換処理を行うようにしたものである。
乱数テーブル格納部が、複数K通りの乱数テーブルを格納しており、
符号変換部が、K通りの乱数テーブルを所定の規則で順次指定するテーブル指定パターンを複数通り記憶しており、
データ入力部が、元データと、暗号鍵と、単位データを複数L個羅列することにより構成される符号データと、特定のテーブル指定パターンを選択するパターン選択子と、を外部から入力し、
符号変換部が、パターン選択子によって選択されたテーブル指定パターンに基づいて、符号データを構成する個々の単位データごとに乱数テーブルを指定し、指定された乱数テーブルを参照することにより変換処理を行うようにしたものである。
(8) 本発明の第8の態様は、上述した第1〜第7の態様に係る暗号処理装置において、
データ入力部が、元データ、暗号鍵、符号データとともに、乱数テーブルの各セル内の数値をシフトさせる規則を示すシフト指示子を外部から入力し、
符号変換部が、乱数テーブル内の各数値をシフト指示子によって示される規則に基づいてシフトさせ、シフト後の数値を用いて変換処理を行うようにしたものである。
データ入力部が、元データ、暗号鍵、符号データとともに、乱数テーブルの各セル内の数値をシフトさせる規則を示すシフト指示子を外部から入力し、
符号変換部が、乱数テーブル内の各数値をシフト指示子によって示される規則に基づいてシフトさせ、シフト後の数値を用いて変換処理を行うようにしたものである。
(9) 本発明の第9の態様は、上述した第8の態様に係る暗号処理装置において、
データ入力部が、正もしくは負のいずれかのシフト方向とシフト量dとを示すシフト指示子を入力し、
符号変換部が、シフト方向が正の場合には、乱数テーブルの第i番目のセル番号をもつセル内の数値を第(i+d)番目のセル番号をもつセルにシフトさせ、シフト方向が負の場合には、乱数テーブルの第i番目のセル番号をもつセル内の数値を第(i−d)番目のセル番号をもつセルにシフトさせるシフト処理(但し、シフト後のセルが、セル番号の範囲から外れる場合には、シフト後のセル番号にセルの総数Mを加算もしくは減算してセル番号の範囲内となるようにする処理)を行うようにしたものである。
データ入力部が、正もしくは負のいずれかのシフト方向とシフト量dとを示すシフト指示子を入力し、
符号変換部が、シフト方向が正の場合には、乱数テーブルの第i番目のセル番号をもつセル内の数値を第(i+d)番目のセル番号をもつセルにシフトさせ、シフト方向が負の場合には、乱数テーブルの第i番目のセル番号をもつセル内の数値を第(i−d)番目のセル番号をもつセルにシフトさせるシフト処理(但し、シフト後のセルが、セル番号の範囲から外れる場合には、シフト後のセル番号にセルの総数Mを加算もしくは減算してセル番号の範囲内となるようにする処理)を行うようにしたものである。
(10) 本発明の第10の態様は、上述した第8の態様に係る暗号処理装置において、
乱数テーブル格納部が、複数K通りの乱数テーブルを格納しており、
データ入力部が、元データ、暗号鍵、符号データとともに、特定の乱数テーブルを指定するテーブル指定子と、複数の乱数テーブルを跨いでシフトさせる規則を示すシフト指示子と、を外部から入力し、
符号変換部が、シフト指示子によって示される規則に基づくシフト処理を行い、当該シフト処理後に、テーブル指定子で指定された乱数テーブルを参照することにより変換処理を行うようにしたものである。
乱数テーブル格納部が、複数K通りの乱数テーブルを格納しており、
データ入力部が、元データ、暗号鍵、符号データとともに、特定の乱数テーブルを指定するテーブル指定子と、複数の乱数テーブルを跨いでシフトさせる規則を示すシフト指示子と、を外部から入力し、
符号変換部が、シフト指示子によって示される規則に基づくシフト処理を行い、当該シフト処理後に、テーブル指定子で指定された乱数テーブルを参照することにより変換処理を行うようにしたものである。
(11) 本発明の第11の態様は、上述した第1〜第10の態様に係る暗号処理装置において、
データ入力部が、暗号鍵を、乱数テーブルを用いて符号化された符号化暗号鍵の形式で入力し、
符号変換部が、乱数テーブルを参照することにより符号データをアルゴリズム指定子に変換する処理を行うとともに、乱数テーブルを参照することにより符号化暗号鍵を暗号鍵に変換する処理を行い、これらの変換処理を経て得られるアルゴリズム指定子および暗号鍵を暗号処理部に与えるようにしたものである。
データ入力部が、暗号鍵を、乱数テーブルを用いて符号化された符号化暗号鍵の形式で入力し、
符号変換部が、乱数テーブルを参照することにより符号データをアルゴリズム指定子に変換する処理を行うとともに、乱数テーブルを参照することにより符号化暗号鍵を暗号鍵に変換する処理を行い、これらの変換処理を経て得られるアルゴリズム指定子および暗号鍵を暗号処理部に与えるようにしたものである。
(12) 本発明の第12の態様は、上述した第1〜第11の態様に係る暗号処理装置において、
所定の方法で暗号化された暗号化符号データを復号して、元の符号データを得る符号データ復号部を更に備え、
データ入力部が、暗号化符号データを外部から入力し、
符号データ復号部が、データ入力部が入力した暗号化符号データを復号し、復号された符号データを符号変換部に与え、
符号変換部が、復号された符号データをアルゴリズム指定子に変換する変換処理を行うようにしたものである。
所定の方法で暗号化された暗号化符号データを復号して、元の符号データを得る符号データ復号部を更に備え、
データ入力部が、暗号化符号データを外部から入力し、
符号データ復号部が、データ入力部が入力した暗号化符号データを復号し、復号された符号データを符号変換部に与え、
符号変換部が、復号された符号データをアルゴリズム指定子に変換する変換処理を行うようにしたものである。
(13) 本発明の第13の態様は、上述した第12の態様に係る暗号処理装置において、
符号データ復号部が複数H通りの復号鍵を記憶しており、
データ入力部が、複数H通りの復号鍵のうちの第i番目の復号鍵を用いて復号が可能な状態で暗号化された暗号化符号データと、第i番目の復号鍵を指定する復号鍵指定子と、を外部から入力し、
符号データ復号部が、復号鍵指定子で指定された復号鍵を用いた復号を行うようにしたものである。
符号データ復号部が複数H通りの復号鍵を記憶しており、
データ入力部が、複数H通りの復号鍵のうちの第i番目の復号鍵を用いて復号が可能な状態で暗号化された暗号化符号データと、第i番目の復号鍵を指定する復号鍵指定子と、を外部から入力し、
符号データ復号部が、復号鍵指定子で指定された復号鍵を用いた復号を行うようにしたものである。
(14) 本発明の第14の態様は、上述した第13の態様に係る暗号処理装置において、
符号データ復号部が、公開鍵暗号方式に利用可能な公開鍵および秘密鍵を構成する複数H組の鍵ペアーのそれぞれについて、公開鍵および秘密鍵のうちの一方の鍵を記憶しており、
データ入力部が、H組の鍵ペアーのうちの第i番目の鍵ペアーについての他方の鍵を用いて暗号化された暗号化符号データと、第i番目の鍵ペアーを指定する復号鍵指定子と、を外部から入力し、
符号データ復号部が、復号鍵指定子で指定された鍵ペアーについての一方の鍵を復号鍵として用いた復号を行うようにしたものである。
符号データ復号部が、公開鍵暗号方式に利用可能な公開鍵および秘密鍵を構成する複数H組の鍵ペアーのそれぞれについて、公開鍵および秘密鍵のうちの一方の鍵を記憶しており、
データ入力部が、H組の鍵ペアーのうちの第i番目の鍵ペアーについての他方の鍵を用いて暗号化された暗号化符号データと、第i番目の鍵ペアーを指定する復号鍵指定子と、を外部から入力し、
符号データ復号部が、復号鍵指定子で指定された鍵ペアーについての一方の鍵を復号鍵として用いた復号を行うようにしたものである。
(15) 本発明の第15の態様は、上述した第1〜第11の態様に係る暗号処理装置と、この暗号処理装置に暗号処理を依頼する主装置と、によって情報処理装置を構成し、
主装置には、
所定の情報処理を実行する情報処理部と、
情報処理部から引き渡された元データと、予め記憶されていたもしくは外部から受け取った暗号鍵もしくは符号化暗号鍵と、予め記憶されていたもしくは外部から受け取った符号データと、必要に応じて、更に、テーブル指定子、パターン選択子、シフト指示子の群の中から選択された1つもしくは複数の項目とを、暗号処理装置のデータ入力部に与える暗号処理依頼部と、
暗号処理装置のデータ出力部から出力された処理済データを受け取り、情報処理部に引き渡す暗号処理結果受信部と、
を設けるようにしたものである。
主装置には、
所定の情報処理を実行する情報処理部と、
情報処理部から引き渡された元データと、予め記憶されていたもしくは外部から受け取った暗号鍵もしくは符号化暗号鍵と、予め記憶されていたもしくは外部から受け取った符号データと、必要に応じて、更に、テーブル指定子、パターン選択子、シフト指示子の群の中から選択された1つもしくは複数の項目とを、暗号処理装置のデータ入力部に与える暗号処理依頼部と、
暗号処理装置のデータ出力部から出力された処理済データを受け取り、情報処理部に引き渡す暗号処理結果受信部と、
を設けるようにしたものである。
(16) 本発明の第16の態様は、上述した第12または第13の態様に係る暗号処理装置と、この暗号処理装置に暗号処理を依頼する主装置と、によって情報処理装置を構成し、
主装置には、
所定の情報処理を実行する情報処理部と、
情報処理部から引き渡された元データと、予め記憶されていたもしくは外部から受け取った暗号鍵もしくは符号化暗号鍵と、予め記憶されていたもしくは外部から受け取った暗号化符号データと、必要に応じて、更に、テーブル指定子、パターン選択子、シフト指示子の群の中から選択された1つもしくは複数の項目とを、暗号処理装置のデータ入力部に与える暗号処理依頼部と、
暗号処理装置のデータ出力部から出力された処理済データを受け取り、情報処理部に引き渡す暗号処理結果受信部と、
を設けるようにしたものである。
主装置には、
所定の情報処理を実行する情報処理部と、
情報処理部から引き渡された元データと、予め記憶されていたもしくは外部から受け取った暗号鍵もしくは符号化暗号鍵と、予め記憶されていたもしくは外部から受け取った暗号化符号データと、必要に応じて、更に、テーブル指定子、パターン選択子、シフト指示子の群の中から選択された1つもしくは複数の項目とを、暗号処理装置のデータ入力部に与える暗号処理依頼部と、
暗号処理装置のデータ出力部から出力された処理済データを受け取り、情報処理部に引き渡す暗号処理結果受信部と、
を設けるようにしたものである。
(17) 本発明の第17の態様は、上述した第14の態様に係る暗号処理装置と、この暗号処理装置に暗号処理を依頼する主装置と、によって情報処理装置を構成し、
主装置には、
所定の情報処理を実行する情報処理部と、
情報処理部から引き渡された元データと、予め記憶されていたもしくは外部から受け取った暗号鍵もしくは符号化暗号鍵と、予め記憶されていたもしくは外部から受け取った暗号化符号データと、復号鍵指定子と、必要に応じて、更に、テーブル指定子、パターン選択子、シフト指示子の群の中から選択された1つもしくは複数の項目とを、暗号処理装置のデータ入力部に与える暗号処理依頼部と、
暗号処理装置のデータ出力部から出力された処理済データを受け取り、情報処理部に引き渡す暗号処理結果受信部と、
を設け、
復号鍵指定子は、暗号処理装置の符号データ復号部に記憶されている「H組の鍵ペアーについての復号鍵として用いる一方の鍵」の第i番目を指定する情報であり、
暗号化符号データは、所定の符号データに対して、第i番目の一方の鍵に対応する他方の鍵を用いて暗号化を行って得られるデータであるようにしたものである。
主装置には、
所定の情報処理を実行する情報処理部と、
情報処理部から引き渡された元データと、予め記憶されていたもしくは外部から受け取った暗号鍵もしくは符号化暗号鍵と、予め記憶されていたもしくは外部から受け取った暗号化符号データと、復号鍵指定子と、必要に応じて、更に、テーブル指定子、パターン選択子、シフト指示子の群の中から選択された1つもしくは複数の項目とを、暗号処理装置のデータ入力部に与える暗号処理依頼部と、
暗号処理装置のデータ出力部から出力された処理済データを受け取り、情報処理部に引き渡す暗号処理結果受信部と、
を設け、
復号鍵指定子は、暗号処理装置の符号データ復号部に記憶されている「H組の鍵ペアーについての復号鍵として用いる一方の鍵」の第i番目を指定する情報であり、
暗号化符号データは、所定の符号データに対して、第i番目の一方の鍵に対応する他方の鍵を用いて暗号化を行って得られるデータであるようにしたものである。
(18) 本発明の第18の態様は、上述した第1〜第11の態様に係る暗号処理装置に与える符号データを生成する符号データ生成装置において、
暗号処理装置内の乱数テーブル格納部に格納されている乱数テーブルと同一の乱数テーブルを記憶した乱数テーブル記憶部と、
暗号処理装置内の暗号処理部による暗号処理に用いる暗号アルゴリズムを指定するアルゴリズム指定子を入力するアルゴリズム指定子入力部と、
乱数テーブル記憶部に記憶されている乱数テーブルを用いて、暗号処理装置内の符号変換部によって行われる変換処理とは逆の変換処理を行い、アルゴリズム指定子入力部が入力したアルゴリズム指定子に対応する符号データを生成する符号データ生成部と、
を設けるようにしたものである。
暗号処理装置内の乱数テーブル格納部に格納されている乱数テーブルと同一の乱数テーブルを記憶した乱数テーブル記憶部と、
暗号処理装置内の暗号処理部による暗号処理に用いる暗号アルゴリズムを指定するアルゴリズム指定子を入力するアルゴリズム指定子入力部と、
乱数テーブル記憶部に記憶されている乱数テーブルを用いて、暗号処理装置内の符号変換部によって行われる変換処理とは逆の変換処理を行い、アルゴリズム指定子入力部が入力したアルゴリズム指定子に対応する符号データを生成する符号データ生成部と、
を設けるようにしたものである。
(19) 本発明の第19の態様は、上述した第12または第13の態様に係る暗号処理装置に与える符号データを生成する符号データ生成装置において、
暗号処理装置内の乱数テーブル格納部に格納されている乱数テーブルと同一の乱数テーブルを記憶した乱数テーブル記憶部と、
暗号処理装置内の暗号処理部による暗号処理に用いる暗号アルゴリズムを指定するアルゴリズム指定子を入力するアルゴリズム指定子入力部と、
乱数テーブル記憶部に記憶されている乱数テーブルを用いて、暗号処理装置内の符号変換部によって行われる変換処理とは逆の変換処理を行い、アルゴリズム指定子入力部が入力したアルゴリズム指定子に対応する符号データを生成する符号データ生成部と、
符号データ生成部によって生成された符号データに対して、暗号処理装置内の符号データ復号部によって復号可能な方法で暗号化を行って暗号化符号データを生成する暗号化符号データ生成部と、
を設けるようにしたものである。
暗号処理装置内の乱数テーブル格納部に格納されている乱数テーブルと同一の乱数テーブルを記憶した乱数テーブル記憶部と、
暗号処理装置内の暗号処理部による暗号処理に用いる暗号アルゴリズムを指定するアルゴリズム指定子を入力するアルゴリズム指定子入力部と、
乱数テーブル記憶部に記憶されている乱数テーブルを用いて、暗号処理装置内の符号変換部によって行われる変換処理とは逆の変換処理を行い、アルゴリズム指定子入力部が入力したアルゴリズム指定子に対応する符号データを生成する符号データ生成部と、
符号データ生成部によって生成された符号データに対して、暗号処理装置内の符号データ復号部によって復号可能な方法で暗号化を行って暗号化符号データを生成する暗号化符号データ生成部と、
を設けるようにしたものである。
(20) 本発明の第20の態様は、上述した第14の態様に係る暗号処理装置に与える符号データを生成する符号データ生成装置において、
暗号処理装置内の乱数テーブル格納部に格納されている乱数テーブルと同一の乱数テーブルを記憶した乱数テーブル記憶部と、
暗号処理装置内の暗号処理部による暗号処理に用いる暗号アルゴリズムを指定するアルゴリズム指定子を入力するアルゴリズム指定子入力部と、
乱数テーブル記憶部に記憶されている乱数テーブルを用いて、暗号処理装置内の符号変換部によって行われる変換処理とは逆の変換処理を行い、アルゴリズム指定子入力部が入力したアルゴリズム指定子に対応する符号データを生成する符号データ生成部と、
暗号処理装置内の符号データ復号部に記憶されている「H組の鍵ペアーのうち一方の鍵」にそれぞれ対応する「H組の鍵ペアーのうちの他方の鍵」を記憶しており、符号データ生成部によって生成された符号データに対して、「H組の鍵ペアーのうちの他方の鍵」の中の任意の第i番目の鍵を用いて暗号化を行って暗号化符号データを生成する暗号化符号データ生成部と、
を設けるようにしたものである。
暗号処理装置内の乱数テーブル格納部に格納されている乱数テーブルと同一の乱数テーブルを記憶した乱数テーブル記憶部と、
暗号処理装置内の暗号処理部による暗号処理に用いる暗号アルゴリズムを指定するアルゴリズム指定子を入力するアルゴリズム指定子入力部と、
乱数テーブル記憶部に記憶されている乱数テーブルを用いて、暗号処理装置内の符号変換部によって行われる変換処理とは逆の変換処理を行い、アルゴリズム指定子入力部が入力したアルゴリズム指定子に対応する符号データを生成する符号データ生成部と、
暗号処理装置内の符号データ復号部に記憶されている「H組の鍵ペアーのうち一方の鍵」にそれぞれ対応する「H組の鍵ペアーのうちの他方の鍵」を記憶しており、符号データ生成部によって生成された符号データに対して、「H組の鍵ペアーのうちの他方の鍵」の中の任意の第i番目の鍵を用いて暗号化を行って暗号化符号データを生成する暗号化符号データ生成部と、
を設けるようにしたものである。
(21) 本発明の第21の態様は、上述した第1〜第14の態様に係る暗号処理装置を、コンピュータにプログラムを組み込むことにより構成したものである。
(22) 本発明の第22の態様は、上述した第15〜第17の態様に係る情報処理装置を、コンピュータにプログラムを組み込むことにより構成したものである。
(23) 本発明の第23の態様は、上述した第22の態様に係る暗号処理装置に組み込まれるプログラムに、主装置としてコンピュータを機能させるためのメインプログラムと、暗号処理装置としてコンピュータを機能させるための暗号処理サブルーチンプログラムと、を含ませ、メインプログラムは、高級言語もしくは中間言語によって記述されており、暗号処理サブルーチンプログラムは、マシン語によって記述されているようにしたものである。
(24) 本発明の第24の態様は、上述した第18〜第20の態様に係る暗号処理用符号データ生成装置を、コンピュータにプログラムを組み込むことにより構成したものである。
(25) 本発明の第25の態様は、メインプログラムと暗号処理サブルーチンプログラムとが組み込まれたコンピュータが、暗号化もしくは復号のための暗号処理を行う暗号処理方法において、
コンピュータが、メインプログラムを実行することにより、暗号処理の対象となる元データと、暗号処理に必要な暗号鍵と、暗号処理に用いる暗号アルゴリズムを指定するための符号データと、を暗号処理サブルーチンプログラムに引き渡す前処理段階と、
コンピュータが、暗号処理サブルーチンプログラムを実行することにより、それぞれ固有のセル番号が付与された複数M個のセルに、ランダムにN通り(M≧N)の数値が収容された乱数テーブルを参照して、符号データを構成する数値を、当該数値をセル番号とするセルに収容されている数値に置き換える変換処理を行い、当該変換処理を経て得られるアルゴリズム指定子によって指定された暗号アルゴリズムに基づいて、元データに対して暗号処理を実施し、処理済データをメインプログラムに引き渡す暗号処理段階と、
コンピュータが、メインプログラムを実行することにより、処理済みデータを用いて所定の処理を続行する後処理段階と、
を行うようにしたものである。
コンピュータが、メインプログラムを実行することにより、暗号処理の対象となる元データと、暗号処理に必要な暗号鍵と、暗号処理に用いる暗号アルゴリズムを指定するための符号データと、を暗号処理サブルーチンプログラムに引き渡す前処理段階と、
コンピュータが、暗号処理サブルーチンプログラムを実行することにより、それぞれ固有のセル番号が付与された複数M個のセルに、ランダムにN通り(M≧N)の数値が収容された乱数テーブルを参照して、符号データを構成する数値を、当該数値をセル番号とするセルに収容されている数値に置き換える変換処理を行い、当該変換処理を経て得られるアルゴリズム指定子によって指定された暗号アルゴリズムに基づいて、元データに対して暗号処理を実施し、処理済データをメインプログラムに引き渡す暗号処理段階と、
コンピュータが、メインプログラムを実行することにより、処理済みデータを用いて所定の処理を続行する後処理段階と、
を行うようにしたものである。
(26) 本発明の第26の態様は、上述した第25の態様に係る暗号処理方法において、
前処理段階で、0〜(M−1)の範囲の値をもった整数により構成される符号データを暗号処理サブルーチンプログラムに引き渡す処理を行い、
暗号処理段階で、0〜(M−1)の範囲の連続したセル番号が付与された複数M個のセルに、0〜(N−1)の範囲の連続するN通りの整数をランダムに収容した乱数テーブルを用い、符号データを、0〜(N−1)の範囲の値をもった整数により構成されるアルゴリズム指定子に置き換える変換処理を行うようにしたものである。
前処理段階で、0〜(M−1)の範囲の値をもった整数により構成される符号データを暗号処理サブルーチンプログラムに引き渡す処理を行い、
暗号処理段階で、0〜(M−1)の範囲の連続したセル番号が付与された複数M個のセルに、0〜(N−1)の範囲の連続するN通りの整数をランダムに収容した乱数テーブルを用い、符号データを、0〜(N−1)の範囲の値をもった整数により構成されるアルゴリズム指定子に置き換える変換処理を行うようにしたものである。
(27) 本発明の第27の態様は、上述した第25または第26の態様に係る暗号処理方法において、
前処理段階で、符号データの代わりに、当該符号データに対して所定の方法で暗号化を行って生成された暗号化符号データを暗号処理サブルーチンプログラムに引き渡す処理を行い、
暗号処理段階で、暗号化符号データを復号して得られる元の符号データをアルゴリズム指定子に変換する変換処理を行うようにしたものである。
前処理段階で、符号データの代わりに、当該符号データに対して所定の方法で暗号化を行って生成された暗号化符号データを暗号処理サブルーチンプログラムに引き渡す処理を行い、
暗号処理段階で、暗号化符号データを復号して得られる元の符号データをアルゴリズム指定子に変換する変換処理を行うようにしたものである。
本発明に係る暗号処理装置には、複数の暗号アルゴリズムが用意されており、外部から所定の暗号鍵とともに、特定の暗号アルゴリズムを指定する指示を与えると、与えられた暗号鍵を用いて、指定された暗号アルゴリズムに基づく暗号処理が実行される。しかも、暗号アルゴリズムを指定する情報をもったアルゴリズム指定子は、乱数テーブルを用いて符号化され、符号データという形で外部から与えられる。このため、この符号データが漏洩したとしても、アルゴリズム指定子の情報まで察知されることはなく、どの暗号アルゴリズムを用いて暗号処理が行われたかは秘密の状態に維持される。
より具体的には、本発明に係る暗号処理装置には、乱数テーブルと、この乱数テーブルを用いて、与えられた符号データをアルゴリズム指定子に変換する符号変換部と、が備わっているため、暗号アルゴリズムを指定するアルゴリズム指定子そのものではなく、上記乱数テーブルを利用して作成した符号データを用いて暗号処理の依頼を行うことができる。処理依頼を受けた暗号処理装置は、与えられた符号データを上記乱数テーブルを利用して内部でアルゴリズム指定子に変換した上で、当該アルゴリズム指定子によって指定された特定の暗号アルゴリズムを用いて暗号処理を実行することになる。このため、当該暗号処理装置を組み込んで構成される情報処理装置には、アルゴリズム指定子の代わりに上記符号データを用意しておけば足り、クラッカーによる不正行為が行われても、アルゴリズム指定子が漏洩することを防ぐことができる。かくして、利便性を損なうことなしに、耐タンパ性を確保することが可能になる。
また、本発明に係る暗号処理用符号データ生成装置を用いれば、上記乱数テーブルを利用して、任意のアルゴリズム指定子に対応した符号データを生成することができるので、本発明に係る暗号処理装置および本発明に係る情報処理装置の利便性を向上させることができる。
以下、本発明を図示する実施形態に基づいて説明する。
<<< §0. 情報処理装置における暗号処理形態 >>>
はじめに、一般的な情報処理装置において利用されている暗号処理形態を簡単に説明しておく。前述したように、パソコン、スマートフォン、電子タブレット、ICカードなど、一般的な情報処理装置は、コンピュータプログラムを実行することにより所望の情報処理を実行する装置であり、この情報処理装置に組み込まれた暗号処理装置の機能は、通常、メインプログラムとは別個に設けられた暗号処理サブルーチンにより実現される。
はじめに、一般的な情報処理装置において利用されている暗号処理形態を簡単に説明しておく。前述したように、パソコン、スマートフォン、電子タブレット、ICカードなど、一般的な情報処理装置は、コンピュータプログラムを実行することにより所望の情報処理を実行する装置であり、この情報処理装置に組み込まれた暗号処理装置の機能は、通常、メインプログラムとは別個に設けられた暗号処理サブルーチンにより実現される。
図1は、一般的な情報処理装置において、メインプログラムからサブルーチンを呼び出すことにより暗号処理を実行する形態を示すブロック図である。ここで、メインプログラムは、当該情報処理装置の本来の機能を果たすためのプログラムであり、サブルーチンプログラムは、必要なときに適宜メインプログラムから呼び出され、メインプログラムから依頼された個別処理を実行するプログラムである。
図1(a) には、メインプログラムMが、平文データPを暗号化して暗号データCを得る必要が生じたときに、当該暗号化処理を、暗号化処理サブルーチンR1を呼び出して実行させる処理形態が示されている。すなわち、メインプログラムMは、平文データPに対して暗号化する必要が生じると、暗号化処理サブルーチンR1を呼び出して平文データPを引き渡す処理を行う。暗号化処理サブルーチンR1は、この平文データPに対して、所定のアルゴリズムに基づく暗号化処理を行った後、得られた暗号データCをメインプログラムMに引き渡す処理を行う。メインプログラムMは、受け取った暗号データCを用いて、その後の処理を実行する。
同様に、図1(b) には、メインプログラムMが、暗号データCを復号して元の平文データPを得る必要が生じたときに、当該復号処理を、復号処理サブルーチンR2を呼び出して実行させる処理形態が示されている。すなわち、メインプログラムMは、暗号データCを復号する必要が生じると、復号処理サブルーチンR2を呼び出して暗号データCを引き渡す処理を行う。復号処理サブルーチンR2は、この暗号データCに対して、所定のアルゴリズムに基づく復号処理を行った後、得られた平文データPをメインプログラムMに引き渡す処理を行う。メインプログラムMは、受け取った平文データPを用いて、その後の処理を実行する。
暗号化処理サブルーチンR1が暗号化処理を行う場合や、復号処理サブルーチンR2が復号処理を行う場合、固有の暗号アルゴリズムAとともに固有の暗号鍵Kが用いられる(暗号鍵Kは、暗号化処理だけでなく、復号処理にも利用される)。たとえば、簡単な例を示せば、アルファベット26文字からなる英文を平文データとして暗号化処理を行う場合、「アルファベットの並び順に従ってn文字だけシフトして暗号を作成する」という暗号アルゴリズムAと、「n=+2」という暗号鍵Kと、を用いることにより、「DOG」という英単語は、各文字をアルファベット順に2文字ずらすことにより、「FQI」という暗号に変換されることになり、逆に「FQI」という暗号は「DOG」という英単語に復号されることになる。この場合、暗号化や復号を行うには、暗号アルゴリズムAと暗号鍵Kとが必須である。ここで、暗号アルゴリズムAは、暗号化処理および復号処理の処理手順を示すものであり、暗号鍵Kは、当該処理手順に利用される数値や符号ということになる。
図2は、図1に示す各サブルーチンR1,R2において、暗号鍵Kを利用した暗号化処理および復号処理を行う場合の形態を示すブロック図である。図2(a) に示す暗号化処理サブルーチンR1は、入力した平文データPを暗号化して、暗号データCを出力する暗号化処理を行うが、当該暗号化処理には、所定の暗号アルゴリズムAと所定の暗号鍵Kが用いられる。これに対して、図2(b) に示す復号処理サブルーチンR2は、サブルーチンR1により出力された暗号データCを入力し、これを復号して、元の平文データPに戻して出力する復号処理を行うが、当該復号処理にも、所定の暗号アルゴリズムAと所定の暗号鍵Kが用いられる。
ここで、サブルーチンR1,R2では、同一の暗号アルゴリズムAおよび同一の暗号鍵Kが用いられる(もちろん、暗号アルゴリズムAに基づいて暗号化処理を行う手順と、同じ暗号アルゴリズムAに基づいて復号処理を行う手順とは、アルゴリズムを逆に適用した手順ということになる)。
別言すれば、暗号アルゴリズムAおよび暗号鍵Kを用いた暗号化処理によって得られた暗号データCを、元の平文データPに戻すためには、同じ暗号アルゴリズムAおよび暗号鍵Kを用いた復号処理を行う必要があるので、どのような暗号アルゴリズムAを採用して、どのような暗号鍵Kを用いて暗号化が行われたかを知らなければ、暗号データCに対する復号処理を行うことはできない。結局、暗号処理の耐タンパ性を確保するには、用いる暗号アルゴリズムAおよび暗号鍵Kの秘密性が維持されればよいことになる。
図1に示すとおり、一般的な情報処理装置では、本来の機能を果たすためのメインプログラムMから、暗号化処理サブルーチンR1や復号処理サブルーチンR2を呼び出すことにより、暗号化や復号の処理が行われる。通常、メインプログラムMとしては、高級言語もしくは中間言語によって記述されたプログラムが用いられ、各サブルーチンR1,R2としては、マシン語によって記述されたプログラムが用いられる。これは、暗号化処理サブルーチンR1や復号処理サブルーチンR2は、予め定められた暗号アルゴリズムに基づく定型論理演算を高速に実行する必要があるため、マシン語によって記述するのが適しているためである。また、後述するように、マシン語によって記述しておけば、リバースエンジニアリング(プログラムの解析)が困難なため、不正な解析を受けにくいというメリットも得られる。一方、メインプログラムMは、要望に応じて多様かつ複雑な処理を実行する必要があり、しかも頻繁にアップデートして適宜改良を加えてゆく必要もあるため、高級言語もしくは中間言語によって記述するのが適している。
たとえば、アンドロイドOS(登録商標)が組み込まれたスマートフォンの場合、通常、メインプログラムとしては、中間言語を採用したJAVA(登録商標)アプリが用いられ、サブルーチンとしては、マシン語によって記述された様々なプログラムが用いられる。図3は、アンドロイドOSにおけるJAVA(登録商標)実行環境を示す模式図である。図示のとおり、アンドロイドOS(Android OS)が組み込まれた情報処理装置には、JAVA(登録商標)アプリの実行環境である「JAVA(登録商標) Virtual Machine」と、様々なサブルーチン群の集合体である「Shared Object」とが用意されており、JAVA(登録商標)アプリとしてインストールされたメインプログラムは、図示の処理実行ルートxで示すように、「JAVA (登録商標)Virtual Machine」を介して「Android OS」に命令を伝達して所望の処理を実行して処理結果を受け取ることもできるし、図示の処理実行ルートyで示すように、「Shared Object」として用意されたサブルーチンを呼び出して所望の処理を実行し、処理結果を受け取ることもできる。
したがって、アンドロイドOSが組み込まれたスマートフォンの場合、通常、暗号化処理サブルーチンR1や復号処理サブルーチンR2は、「Shared Object」として用意され、メインプログラムMとしてのJAVA(登録商標)アプリから呼び出されて利用される。
なお、暗号化処理は、図2(a) に示すように、平文データPを暗号データCに変換する処理であり、復号処理は、図2(b) に示すように、暗号データCを平文データPに戻す処理であるが、いずれも所定の暗号鍵Kを利用して所定の暗号アルゴリズムAに基づく演算を行う処理であり、その実体に根本的な違いはない。そこで、本願では、「暗号化処理」と「復号処理」とを包括して「暗号処理」と呼ぶことにする。別言すれば、本願における「暗号処理」とは、平文データPを暗号データCに変換する「暗号化処理」のみを意味するものではなく、暗号データCを平文データPに戻す「復号処理」も含んだ処理を言う。
同様の理由により、本願では、暗号化処理サブルーチンR1および復号処理サブルーチンR2を包括して、暗号処理サブルーチンRと呼ぶことにする。したがって、本願において、暗号処理サブルーチンRと言った場合、暗号化処理サブルーチンR1のみを指す場合もあれば、復号処理サブルーチンR2のみを指す場合もあれば、その両方の機能を備えたサブルーチンを指す場合もある。ただ、便宜上、以下の説明では、暗号処理サブルーチンRが暗号化処理サブルーチンR1である場合を例にとり、暗号処理サブルーチンRにより、平文データPを暗号データCに変換する暗号化処理が実行される場合について説明を行うことにする。
図4は、図3に示すJAVA(登録商標)実行環境において、JAVA(登録商標)アプリとして用意されたメインプログラムMから、「Shared Object」として用意された暗号処理サブルーチンRに対して暗号処理を依頼する場合の3通りの形態を示すブロック図である。
図4(a) に示す第1の形態は、暗号処理サブルーチンR内に、暗号アルゴリズムAと暗号鍵Kとの双方を組み込んだ例である。この第1の形態を採る場合は、メインプログラムMから暗号処理サブルーチンRに対して平文データPを引き渡して暗号処理を依頼すればよい。暗号処理サブルーチンRは、受け取った平文データPに対して、組み込まれている暗号鍵Kを用いて、組み込まれている暗号アルゴリズムAに基づく暗号化処理を行い、得られた暗号データCをメインプログラムMに返す処理を行うことになる。
これに対して、図4(b) に示す第2の形態は、暗号処理サブルーチンR内に暗号アルゴリズムAを組み込み、メインプログラムM内に暗号鍵Kを組み込んだ例である。この第2の形態を採る場合は、メインプログラムMから暗号処理サブルーチンRに対して、平文データPとともに暗号鍵Kを引き渡して暗号処理を依頼することになる。暗号処理サブルーチンRは、受け取った平文データPに対して、受け取った暗号鍵Kを用いて、組み込まれている暗号アルゴリズムAに基づく暗号化処理を行い、得られた暗号データCをメインプログラムMに返す処理を行うことになる。
上述したとおり、アンドロイドOSを採用した電子機器の場合、通常、メインプログラムMとしては、中間言語を採用したJAVA(登録商標)アプリが用いられ、暗号処理サブルーチンRとしては、マシン語によって記述された「Shared Object」が用いられる。一般に、マシン語によって記述されたプログラムの解析は困難であるが、中間言語によって記述されたプログラムの解析は容易である。このため、上記構成を採用した電子機器の場合、メインプログラムM(中間言語で記述されたJAVA(登録商標)アプリ)は、ソースコードに戻して内容の解析(リバースエンジニアリング)を行うことが容易であるのに対して、暗号処理サブルーチンR(マシン語で記述されたShared Object)は内容の解析が困難である。したがって、耐タンパ性を考慮した場合、暗号鍵Kを暗号処理サブルーチンR内に組み込んだ第1の形態(図4(a) )の方が、暗号鍵KをメインプログラムM内に組み込んだ第2の形態(図4(b) )に比べて、クラッカーの不正解析を受けにくいために好ましい、と言える。すなわち、第2の形態では、クラッカーにより暗号鍵Kが盗み取られやすい。
しかしながら、利便性を考慮した場合、図4(a) に示す第1の形態は使い勝手が悪く、実用上は、図4(b) に示す第2の形態が利用されることが多い。これは、暗号処理サブルーチンRが「Shared Object」として電子機器に組み込まれ、多数のアプリケーションプログラム(メインプログラム)から共通して利用されるプログラムであるため、暗号鍵KについてはメインプログラムMによって任意の鍵を指定して自由度を高めたいという要望があるためである。
たとえば、図4(a) に示す第1の形態を採用した場合、業者Xが提供するアプリケーションプログラムMx(メインプログラム)も、業者Yが提供するアプリケーションプログラムMy(メインプログラム)も、「Shared Object」として用意された暗号処理サブルーチンR内の共通の暗号アルゴリズムAと共通の暗号鍵Kとを用いて暗号処理を行うことになる。このように、他社と同じ暗号鍵Kを用いた暗号処理は、セキュリティ上好ましくない。また、図4(a) に示す第1の形態を採用した場合、毎回、同じ暗号鍵Kが利用されることになり、この点においても、セキュリティの低下を招くことになる。
図4(b) に示す第2の形態を採用すれば、業者Xが提供するアプリケーションプログラムMxでは暗号鍵Kxを用い、業者Yが提供するアプリケーションプログラムMyでは暗号鍵Kyを用いる、というように、各社で個別の暗号鍵を用いることができる。また、同じアプリケーションプログラムMxでも、暗号鍵Kx1,Kx2,Kx3,... ,というように、毎回、異なる暗号鍵を用いることも可能になる。
このように、実用上は、第2の形態を採り、暗号処理に用いる暗号鍵Kに自由度をもたせた方が、利便性が向上することになる。ただ、上述したとおり、この第2の形態は、耐タンパ性に問題があり、メインプログラムM内に組み込まれた暗号鍵Kが外部に漏洩しやすい。
そこで、前掲の特許文献1では、メインプログラムM内ではなく、指輪に暗号鍵を格納しておく方法が提案されているが、ユーザは、常に指輪を携行する必要があり、利便性は著しく低下してしまう。また、前掲の特許文献2,3には、暗号鍵を外部の管理サーバからダウンロードして入手する方法が提案されているが、クラッカーはダウンロード経路から暗号鍵を盗み取ることが可能であり、十分な耐タンパ性を確保することができない。
本発明は、このような実情を鑑み、所定の暗号鍵を用いた所定の暗号アルゴリズムに基づいて暗号処理を実行する際に、利便性を損なうことなしに、耐タンパ性を確保することが可能な暗号処理装置およびこれを組み込んだ情報処理装置を提供することを目的とするものである。
図4(c) に示す第3の形態は、このような目的を達成するため、図3に示すJAVA(登録商標)実行環境について本発明を適用した形態である。この第3の形態も、基本的には、図4(b) に示す第2の形態と同様に、暗号処理サブルーチンR内に暗号アルゴリズムAを組み込み、メインプログラムM内に暗号鍵Kを組み込み、メインプログラムMから暗号処理サブルーチンRに対して、平文データPとともに暗号鍵Kを引き渡して暗号処理を依頼する。
ただ、この第3の形態の場合、暗号処理サブルーチンR内には、複数N通りの暗号アルゴリズムA0〜A(N−1)が用意されており、メインプログラムMから暗号処理サブルーチンRに対して、どの暗号アルゴリズムを用いて暗号処理を実施するかを示すアルゴリズム指定子aを引き渡して暗号処理を依頼することになる。しかも、アルゴリズム指定子aは、後述する特有の方法により符号化して符号データFの形式で引き渡される。
結局、図4(c) に示す形態の場合、メインプログラムMから暗号処理サブルーチンRに対して、平文データPおよび暗号鍵Kとともに符号データFを引き渡して暗号処理を依頼することになる。暗号処理サブルーチンRは、まず、受け取った符号データFをアルゴリズム指定子aに変換する。そして、N通りの暗号アルゴリズムA0〜A(N−1)のうち、アルゴリズム指定子aによって指定された特定の暗号アルゴリズムAi(i=0〜N−1)と受け取った暗号鍵Kを用いて、平文データPに対する暗号化処理を行い、得られた暗号データCをメインプログラムMに返す処理を行うことになる。
このように、第3の形態を採用すれば、メインプログラムM側において用意した任意の暗号鍵Kを用いた暗号処理が可能になるので、第2の形態と同様に、暗号処理に用いる暗号鍵Kに十分な自由度を確保することができ、利便性が向上する。一方、暗号処理サブルーチンR側で実施される具体的な暗号処理を特定するには、暗号鍵Kを入手するだけでは不十分であり、アルゴリズム指定子aも併せて入手する必要がある。すなわち、クラッカーが不正行為を行うには、暗号処理サブルーチンR内に用意されているN通りの暗号アルゴリズムA0〜A(N−1)を類推するとともに、暗号鍵Kとアルゴリズム指定子aとの双方を入手する必要がある。しかも、アルゴリズム指定子aは、特有の方法によって符号化され、符号データFという形で引き渡されるため、万一、符号データFが漏洩したとしても、それだけでは、アルゴリズム指定子aが漏洩したことにはならない。
かくして、本発明に係る第3の形態によれば、任意の暗号鍵を用いて自由度の高い暗号処理を行うという利便性を損なうことなしに、耐タンパ性を確保することが可能になる。以下、本発明を、いくつかの具体的な実施形態について詳述する。
<<< §1. 本発明の第1の実施形態 >>>
図5は、本発明の第1の実施形態に係る情報処理装置100の構成を示すブロック図である。この第1の実施形態は、本発明の最も基本的な実施形態である。図示のとおり、この情報処理装置100は、主装置110と暗号処理装置120とによって構成されている。
図5は、本発明の第1の実施形態に係る情報処理装置100の構成を示すブロック図である。この第1の実施形態は、本発明の最も基本的な実施形態である。図示のとおり、この情報処理装置100は、主装置110と暗号処理装置120とによって構成されている。
もっとも、実際には、この情報処理装置100は、パソコン、スマートフォン、電子タブレット、ICカードなど、コンピュータを含む電子機器に、所定のプログラムを組み込むことによって構成される。図示の例の場合、主装置110の機能は、この電子機器にアプリケーションプログラム(もしくは、OSプログラムでもよい)として組み込まれたメインプログラムMを実行することにより得られ、暗号処理装置120の機能は、この電子機器にサブルーチンプログラムの1つとして組み込まれた暗号処理サブルーチンRを実行することにより得られる。
たとえば、§0で述べたアンドロイドOSが組み込まれたスマートフォンを情報処理装置100として利用する場合、主装置110の機能は、JAVA(登録商標)アプリとしてインストールされたメインプログラムMによって実現され、暗号処理装置120の機能は、「Shared Object」として用意された暗号処理サブルーチンRによって実現されることになる。このように、ここに示す実施例の場合、図5に示す個々のブロックは、実際には、コンピュータのハードウエア資源を利用したソフトウエアの機能として実現されるものである。
すなわち、主装置110として機能するメインプログラムMにおいて、暗号処理(暗号化処理もしくは復号処理)が必要になった場合、暗号処理装置120として機能する暗号処理サブルーチンRを呼び出し、必要な暗号処理を依頼することになる。その際、図示のとおり、元データD、暗号鍵K、符号データFが暗号処理装置120(暗号処理サブルーチンR)に引き渡されることになる。暗号処理装置120は、この依頼に基づき暗号処理を実行し、その結果として得られる処理済データEを、主装置110(メインプログラムM)に戻すことになる。主装置110は、この処理済データEを用いて、必要な処理を続行する。
図示のとおり、メインプログラムMによって実現される主装置110は、情報処理部111、暗号処理依頼部112、暗号処理結果受信部113を有している。ここで、情報処理部111は、メインプログラムMの目的となる所定の情報処理を実行する構成要素であり、実行される情報処理の内容は、メインプログラムMの目的により様々である。たとえば、当該メインプログラムMが、何らかの決済処理を行うアプリケーションプログラムである場合は、情報処理部111の指示に基づいて、外部の決済サーバと通信が行われ、ユーザの認証や決済金額の送信などの情報処理が実行されることになる。
情報処理部111が情報処理を行う際に、何らかのデータに対して暗号処理が必要になると、暗号処理の対象となるデータを暗号処理依頼部112に引き渡して暗号処理を行うよう指示する。ここでは、暗号処理の対象となるデータを元データDと呼ぶことにする。なお、前述したように、本願における「暗号処理」とは、「暗号化処理(平文データPを暗号データCに変換する処理)」と「復号処理(暗号データCを平文データPに戻す処理)」との双方を意味するものである。したがって、元データDが平文データPの場合に行われる「暗号処理」は「暗号化処理」ということになり、元データDが暗号データCの場合に行われる「暗号処理」は「復号処理」ということになる。
暗号処理依頼部112は、情報処理部111から引き渡された元データDと、予め記憶されていた暗号鍵Kおよび符号データFを、暗号処理装置120内のデータ入力部121に与える処理を行う。ここで、符号データFは、前述したとおり、アルゴリズム指定子aを特有の方法によって符号化したデータであり、その実体については、後に詳述する。この暗号処理依頼部112が行う処理は、実際には、メインプログラムMから暗号処理サブルーチンRを呼び出し、暗号処理サブルーチンRに、元データD、暗号鍵K、符号データFを引き渡す処理ということになる。
一方、暗号処理結果受信部113は、暗号処理装置120のデータ出力部125から出力された処理済データEを受け取り、これを情報処理部111に引き渡す処理を行う。処理済データEは、暗号処理装置120による処理結果であり、元データDが平文データPであった場合には、これを暗号化して得られる暗号データCということになり、元データDが暗号データCであった場合には、これを復号して得られる平文データPということになる。この暗号処理結果受信部113が行う処理は、実際には、暗号処理サブルーチンRから戻される処理済データEを変数として取り込み、メインプログラムMの後続処理ステップ(サブルーチンコール命令に後続する命令)に引きつぐ処理ということになる。情報処理部111は、得られた処理済データEを用いて、後続する情報処理を続行する。
続いて、暗号処理装置120(暗号処理サブルーチンR)の構成を説明する。図示のとおり、暗号処理装置120は、データ入力部121、符号変換部122、乱数テーブル格納部123、暗号処理部124、データ出力部125を有しており、入力した元データDに対して暗号化もしくは復号のための暗号処理を行い、処理済データEを出力する機能を果たす。
データ入力部121は、暗号処理の対象となる元データDと、暗号処理に必要な暗号鍵Kと、暗号処理に用いる暗号アルゴリズムを指定するための符号データFと、を外部(主装置110)から入力する構成要素であり、暗号処理サブルーチンRにおいて、メインプログラムMから元データD、暗号鍵K、符号データFの引き渡しを受ける処理を行う部分に相当する。ここで、データ入力部121が入力した元データDおよび暗号鍵Kは暗号処理部124に与えられ、符号データFは符号変換部122に与えられる。
符号変換部122は、データ入力部121が入力した符号データFをアルゴリズム指定子aに変換する処理を行う。乱数テーブル格納部123は、この変換処理を行う際に参照される乱数テーブルTを格納する構成要素であり、符号変換部122による変換処理の結果は、この乱数テーブルTの内容に基づいて一義的に決定される。符号変換部122による変換処理で得られたアルゴリズム指定子aは、暗号処理部124に与えられる。
暗号処理部124は、データ入力部121が入力した暗号鍵Kを用いた所定の暗号アルゴリズムに基づいて、データ入力部121が入力した元データDに対して暗号処理を実施し、処理済データEを生成する処理を行う。ここで重要な点は、暗号処理部124が、複数N通りの暗号アルゴリズムA0〜A(N−1)のうち、符号変換部122から与えられたアルゴリズム指定子aによって指定された特定の暗号アルゴリズムを用いて暗号処理を実施する点である。図示のとおり、暗号処理部124内には、予め複数N通りの暗号アルゴリズムA0〜A(N−1)が用意されており、毎回、アルゴリズム指定子aで指定された暗号アルゴリズムが利用されることになる。
たとえば、アルゴリズム指定子aが、第i番目(i=0〜N−1)の暗号アルゴリズムAiを指定するデータであった場合、暗号処理部124は、データ入力部121から与えられた元データDに対して、データ入力部121から与えられた暗号鍵Kを用いて、第i番目の暗号アルゴリズムAiに基づく暗号処理を実施し、処理済データEを生成する処理を行う。このように、所定の暗号鍵を用いた所定の暗号アルゴリズムに基づいて、元データDに対して暗号処理を施す具体的な処理方法は、既に様々な方法が公知となっているため、ここでは詳しい説明は省略する。暗号処理部124で生成された処理済データEは、データ出力部125に与えられる。
データ出力部125は、こうして生成された処理済データEを外部(主装置110)に出力する構成要素であり、暗号処理サブルーチンRにおいて、処理済データEをメインプログラムMに引き渡す処理を行う部分に相当する。図示のとおり、処理済データEは、主装置110(メインプログラムM)の暗号処理結果受信部113に引き渡される。上述したとおり、処理済データEは、元データDが平文データPであった場合には、これを暗号化して得られる暗号データCであり、元データが暗号データCであった場合には、これを復号して得られる平文データPである。
続いて、乱数テーブルTの実体と、符号データFとアルゴリズム指定子aとの関係を説明しよう。本発明において用いられる乱数テーブルTは、それぞれ固有のセル番号が付与された複数M個のセルに、ランダムにN通り(M≧N)の数値を収容したテーブルであり、乱数テーブル格納部123に格納されている。別言すれば、暗号処理サブルーチンR内にテーブルとして組み込まれていることになる。
図6は、このような乱数テーブルTの具体例を示す表である。この表において、実線の矩形は個々のセルを示しており、16行16列の合計256個のセルが設けられている。すなわち、図6に示す例は、M=256に設定し、256個のセルを有する乱数テーブルTを定義した例ということになる。個々のセルは、破線によって上下2段に分けられているが、上段の数値は当該セルに付された固有のセル番号(第0番〜第255番)を示し、下段の数値は当該セルに収容されている数値を示している。図では、便宜上、上段のセル番号も下段の数値も16進表示で記載してある。
上段に示すセル番号は、第1行第1列のセルを「00」として、右方向に「01」,「02」,... と順に増加してゆき、右端の「0F」から第2行第1列の「10」へと続き、以下同様にして、列に関しては左から右の順に、行に関しては上から下の順に、それぞれ番号を付し、最後に第16行第16列のセル(右下隅のセル)の番号を「FF」としている。
一方、この例では、各セルの下段に収容されている数値も、0〜255の256通り(N=256)の整数としており、16進表示で「00」〜「FF」なる256通りの数値が、いずれかのセルに収容されている。ただ、収容場所はランダムになっており、テーブル全体が乱数テーブルを構成している。たとえば、この例の場合、セル番号第0番(「00」)のセルには「5B」なる数値が収容され、セル番号第1番(「01」)のセルには「D3」なる数値が収容され、セル番号第2番(「02」)のセルには「8A」なる数値が収容されている。
結局、この乱数テーブルTは、セル番号として与えられる0〜255の中の所定の整数(上段)と、セルに収容されている数値として与えられる0〜255の中の所定の整数(下段)とを1対1に対応づけた256組のペアーを定義するテーブルになっている。このため、任意のセル番号を指定すると、これに対応する数値が1つだけ定まり、逆に、任意の数値を指定すると、これに対応するセル番号が1つだけ定まることになる。たとえば、セル番号「00」を指定すれば数値「5B」が一義的に定まり、数値「D3」を指定すれば、セル番号「01」が一義的に定まる。
なお、図6では、説明の便宜上、個々のセルの上段にセル番号を付して示したが、実際の乱数テーブルでは、セル番号を必ずしもデータとして格納しておく必要はない。たとえば、個々のセルをアドレス値として特定することができるのであれば、当該アドレス値がセル番号として機能するので、乱数テーブルとしては、単に、セル内に収容される合計256バイトの数値を羅列したデータであってもかまわない。
このような乱数テーブルTを利用すれば、1バイトのデータからなるアルゴリズム指定子aを、同じく1バイトのデータからなる符号データFに変換することができ、その逆の変換を行うこともできる。図7は、図6に示す乱数テーブルTを参照することにより、アルゴリズム指定子aと符号データFとの間の相互変換を行った例を示す図である。この例の場合、アルゴリズム指定子aは、「3A」というデータ(10進表現では「58」)によって構成されているが、「3A」という数値が収容されているセルのセル番号を図6に示す乱数テーブルTから特定すると、数値「3A」はセル番号「1D」のセルに収容されていることが特定できるので、「3A」なる数値からなるアルゴリズム指定子aは、「1D」なる数値からなる符号データFに変換することができ、その逆の変換もできる。
結局、図6に示す乱数テーブルTを予め用意しておけば、図7に例示するように、アルゴリズム指定子aと符号データFとの間で相互変換を行うことができる。そこで、本発明では、主装置110から暗号処理装置120に対して、アルゴリズム指定子aを引き渡す代わりに、このアルゴリズム指定子aに対応する符号データFを引き渡すという方法を採用することにより、アルゴリズム指定子aが漏洩することを防止している。
前述したとおり、図5に示す情報処理装置100では、暗号処理依頼部112が、情報処理部111から与えられた元データDと、予め記憶している暗号鍵Kおよび符号データFを暗号処理装置120に引き渡す処理を行うことになるが、ここで暗号処理依頼部112が予め記憶している符号データFは、アルゴリズム指定子aを、乱数テーブル格納部123内に格納されている乱数テーブルTを用いて変換することにより得られる符号データになっており、アルゴリズム指定子aは、暗号処理装置120内の暗号処理部124が暗号処理を行う際に実際に用いる特定の暗号アルゴリズムを指定するデータになっている。
別言すれば、図示の例のように、暗号処理部124内に複数N通りの暗号アルゴリズムA0〜A(N−1)が用意されている場合に、第i番目(i=0〜N−1)の暗号アルゴリズムAiを利用して暗号処理を実施させたい場合には、主装置110として機能するメインプログラムMの作成者は、第i番目の暗号アルゴリズムAiを指定するアルゴリズム指定子a(たとえば、数値「i」)を、図6に示すような乱数テーブルT(乱数テーブル格納部123に格納されているテーブル)を参照して、符号データFに変換し、これをメインプログラムM内に組み込んでおけばよい。
たとえば、N=256に設定した場合、暗号処理部124内には、合計256通りの暗号アルゴリズムA0〜A255が用意される。このうち、第58番目の暗号アルゴリズムA58を用いて暗号処理を実施させる場合には、アルゴリズム指定子aとして、「3A」という1バイトのデータ(10進表現では「58」)について、図6に示す乱数テーブルTを用いた変換を行い、図7に示すように、「1D」という1バイトのデータからなる符号データFを作成しておけばよい。
この場合、主装置110から暗号処理装置120に対して暗号処理の依頼が行われる際に(すなわち、メインプログラムMから暗号処理サブルーチンRが呼び出される際に)、元データDおよび暗号鍵Kとともに、「1D」という符号データFが引き渡されることになる。そして、符号変換部122により、「1D」なる符号データFは「3A」なるアルゴリズム指定子aに変換されるので、暗号処理部124は、「3A」(10進表現では「58」)なるアルゴリズム指定子aで指定された第58番目の暗号アルゴリズムA58を用いて暗号処理を実施することになる。かくして、メインプログラムMの作成者の意図どおりの暗号処理を実行することができる。
このように、本発明に係る暗号処理装置120には、複数の暗号アルゴリズムA0〜A(N−1)が用意されており、外部から所定の暗号鍵Kとともに、どの暗号アルゴリズムを利用するかを指定するアルゴリズム指定子aを与えることにより、与えられた暗号鍵Kを用い、指定された暗号アルゴリズムに基づく暗号処理を実行させることができる。しかも、アルゴリズム指定子aは、乱数テーブルを用いて符号化され、符号データFという形で外部から与えられるため、この符号データFが漏洩したとしても、アルゴリズム指定子aの情報まで察知されることはなく、どの暗号アルゴリズムを用いて暗号処理が行われたかは秘密の状態に維持される。
乱数テーブルTは、暗号処理装置120内に組み込まれているが、上述したとおり、暗号処理装置120は、マシン語によって記述された「Shared Object」内の暗号処理サブルーチンRの機能として実現されるものであるため、これを解析して、乱数テーブルTを抜き出す作業は、メインプログラムMを解析する作業に比べて極めて困難である。かくして、利便性を損なうことなしに、耐タンパ性を確保することが可能になる。
なお、アルゴリズム指定子aを符号データFに変換するには、乱数テーブルTが必要になるので、メインプログラムMの作成者などが希望すれば、当該希望者には乱数テーブルTのデータを開示する必要がある。したがって、当該開示を受けた者は、乱数テーブルTの内容が漏洩しないよう、厳重に管理する必要がある。なお、乱数テーブルTの内容を開示せずにアルゴリズム指定子aから符号データFへの変換を可能にする方法については、§7で述べる。
以上、暗号処理依頼部112内に予め暗号鍵Kおよび符号データFを記憶させておき、暗号処理を依頼する際には、暗号処理依頼部112が、情報処理部111から与えられた元データDとともに、予め記憶していた暗号鍵Kおよび符号データFを暗号処理装置120に与える例を述べたが、暗号鍵Kや符号データFは、必ずしも暗号処理依頼部112内に記憶させておく必要はなく、外部装置や外部のサーバから受け取るようにしてもかまわない。
たとえば、暗号鍵Kおよび符号データFのいずれか一方もしくは双方を、情報処理装置100とは別の外部装置に記憶しておき、必要なときに、これらを暗号処理依頼部112によって読み出して利用するような形態を採ることも可能である。あるいは、これらを外部のサーバに用意しておき、必要なときに暗号処理依頼部112によってダウンロードして利用するような形態も可能である。もちろん、符号データFは、必要になるたびに、外部のサーバにおいて乱数テーブルTを参照してアルゴリズム指定子aから生成するようにしてもかまわない。また、データ入力部121が、暗号処理依頼部112を介さずに、暗号鍵Kや符号データFを外部装置や外部のサーバから直接入力するような形態を採ることもできる。
なお、図6には、本発明に用いる乱数テーブルTの一例として、0〜255のセル番号が付された合計256個のセルに、0〜255の256通りの数値をランダムに収容したテーブルを示したが、もちろん、本発明に利用可能な乱数テーブルは、このようなテーブルに限定されるものではない。
本発明で利用する乱数テーブルは、それぞれ固有のセル番号が付与された複数M個のセルに、ランダムにN通り(M≧N)の数値を収容したテーブルであれば、どのようなテーブルであってもかまわない。符号変換部122は、このような乱数テーブルを参照することにより、データ入力部121が入力した符号データFを構成する数値を、当該数値をセル番号とするセルに収容されている数値に置き換える変換処理を行い、変換後のデータをアルゴリズム指定子aとして暗号処理部124に与える処理を行えばよい。
より具体的には、図5に示す例の場合、暗号処理部124は、全N通りの暗号アルゴリズムA0〜A(N−1)の中から指定された暗号アルゴリズムを用いて暗号処理を実施する機能を有しているので、アルゴリズム指定子aとしては、0〜(N−1)の範囲の値をもった整数を用い、N通りの暗号アルゴリズムA0〜A(N−1)のうちの1つを指定できるようにするのが好適である。そこで、乱数テーブルTとしては、0〜(M−1)の範囲の連続したセル番号が付与された複数M個のセルに、0〜(N−1)の範囲の連続するN通りの整数をランダムに収容したテーブルを用意すればよい。そうすれば、符号変換部122は、0〜(M−1)の範囲の値をもった整数によって構成された符号データFを、0〜(N−1)の範囲の値をもった整数によって構成されるアルゴリズム指定子aに置き換える変換処理を行うことができる。
特に、M=Nに設定し、N個のセルにN通りの整数をそれぞれ1個ずつ収容した乱数テーブルを用いるようにすれば、図8に示すように、アルゴリズム指定子aを構成する個々のデータも、符号データFを構成する個々のデータも、いずれも0〜(N−1)の範囲の値をもったN通りの整数になるので利便性が向上する。図6に示す乱数テーブルTは、M=N=256に設定した例ということになる。実用上、コンピュータのデータ処理は、1バイトのデータを1つの単位として取り扱うことになるので、M=N=256に設定した例は最も実用的な例と言うことができる。
すなわち、M=N=256に設定すれば、0〜255の連続セル番号が付与された256個のセルに、0〜255の整数をそれぞれ1個ずつランダムに収容した乱数テーブルT(図6の例)を定義することができるので、符号変換部122は、1バイトのデータからなる符号データFを1バイトのデータからなるアルゴリズム指定子aに置き換える変換処理を行うことができ、暗号処理部124は、このアルゴリズム指定子aによって指定された暗号アルゴリズムを用いて暗号処理を行うことができる。
もっとも、本発明に用いる乱数テーブルでは、必ずしもセルの数Mと、セルに収容される数値のバリエーションの数Nとについて、M=Nの関係が成り立つ必要はない。すなわち、図9に示すとおり、セルの数をM個として、0〜(M−1)の範囲内のセル番号を付与し、個々のセル内に収容される数値を、0〜(N−1)の範囲内のN通りの整数とした場合、M≧Nの関係が維持されていればよい。別言すれば、M>Nの関係にあってもよい。M>Nに設定した場合は、M個のセルにN通りの整数がそれぞれ少なくとも1個ずつ収容され、一部のセルには他のセルと同一の整数が重複して収容されることになる。結局、本発明に用いる乱数テーブルは、複数M個(M≧N)のセルに、0〜(N−1)の範囲の整数を重複を許してランダムに収容したテーブルであればよいことになる。
特に、N=256、M>256に設定した場合、乱数テーブル格納部123には、0〜(M−1)の連続セル番号が付与されたM個のセルに、0〜255の整数をそれぞれ少なくとも1個ずつランダムに収容した乱数テーブルが格納されることになるが、そのような乱数テーブルを用いた場合でも、符号変換部122は、与えられた符号データFに対応するアルゴリズム指定子aを一義的に決定することができる。
たとえば、N=256、M=512に設定した場合、512個のセルに、0〜255の整数が少なくとも1個ずつ含まれるように、各整数をランダムに収容した乱数テーブルが得られる。この場合、ある特定の整数が、1つのセルのみに収容されている場合もあれば、複数のセルに重複して収容されている場合もある。一方、符号データFを構成する個々のデータは、0〜511の512個のセルを特定するセル番号を示すことになるので、1バイト(8ビット)では足りず、9ビットのビット長をもったデータということになる。それでも、符号変換部122は、符号データFを構成する9ビットのデータを、当該データで特定されるセル番号のセルに収容されている8ビットのデータに置き換える処理を行うことにより、符号データFを一義的にアルゴリズム指定子aに変換することができる。
もっとも、M>Nに設定した場合は、1つの整数が複数のセルに重複して収容されることになるので、当該整数が収容されているセルのセル番号が、複数通り存在することになる。その場合、いずれのセル番号を用いてもよいことになる。その結果、同一のアルゴリズム指定子aに対して、複数通りの符号データFを定義することができ、符号データFの決定に冗長性が加わることになる。このような冗長性は、耐タンパ性を向上させる上で有益である。すなわち、異なる複数通りの符号データFを用いて、同一のアルゴリズム指定子aを発生させることができるようになるので、統計的な手段を利用した不正な解析を困難にする効果が得られる。
なお、アルゴリズム指定子aと個々の暗号アルゴリズムとは、必ずしも1対1の対応関係である必要はなく、少なくとも、アルゴリズム指定子aによって1つの暗号アルゴリズムが特定できる関係になっていれば足りる。たとえば、0〜255の範囲内の整数をアルゴリズム指定子aとして用いれば、256通りの暗号アルゴリズムのいずれかを指定することができるが、暗号処理部124に用意されている暗号アルゴリズムが8通りしかない場合でも、0〜255の範囲内の整数からなるアルゴリズム指定子aによって、特定の暗号アルゴリズムを指定することができる。具体的には、8通りの暗号アルゴリズムを、第0番目〜第7番目のアルゴリズムとした場合、アルゴリズム指定子aを用いて「i=INT(a/32)」なる演算(INTは整数部のみを抽出する演算子)を行い、第i番目のアルゴリズムを指定されたアルゴリズムとする運用を行えばよい。
また、アルゴリズム指定子aは、必ずしも、乱数テーブルTから得られる単一の整数で構成する必要はなく、複数の整数列によって構成してもかまわない。たとえば、図6に示す乱数テーブルTを用いれば、1バイトの整数からなる符号データFを1バイトの整数からなるアルゴリズム指定子aに変換することができる。そこで、符号データFを、1バイトの整数を複数L個集めたデータによって構成しておけば、同じく1バイトの整数を複数L個集めたデータによって構成されるアルゴリズム指定子aを得ることができる。したがって、たとえば、L=2に設定し、「AD」,「31」という2バイトからなる符号データFを与えれば、「26」,「5C」という2バイトからなるアルゴリズム指定子aに変換することができる。このように2バイトからなるアルゴリズム指定子aを用いれば、最大、65536通りの暗号アルゴリズムを指定することが可能になる。
<<< §2. 本発明の第2の実施形態 >>>
続いて、本発明の第2の実施形態を説明する。図10は、この第2の実施形態に係る情報処理装置100Aの構成を示すブロック図である。この第2の実施形態の構成の大部分は、図5を参照しながら§1において述べた第1の実施形態の構成と同じである。そこで、図10に示す第2の実施形態の各構成要素の符号には、図5に示す第1の実施形態の対応する構成要素の符号の末尾に「A」を付した符号を用いて示すことにし、ここでは、図5に示す第1の実施形態の対応する構成要素との相違点のみを説明することにする。
続いて、本発明の第2の実施形態を説明する。図10は、この第2の実施形態に係る情報処理装置100Aの構成を示すブロック図である。この第2の実施形態の構成の大部分は、図5を参照しながら§1において述べた第1の実施形態の構成と同じである。そこで、図10に示す第2の実施形態の各構成要素の符号には、図5に示す第1の実施形態の対応する構成要素の符号の末尾に「A」を付した符号を用いて示すことにし、ここでは、図5に示す第1の実施形態の対応する構成要素との相違点のみを説明することにする。
図10に示す第2の実施形態の特徴は、暗号処理装置120Aが複数の乱数テーブルを用いる点にある。図示のとおり、乱数テーブル格納部123Aには、複数K通り(図示の例の場合、K=16)の乱数テーブルT0〜T15が格納されている。個々の乱数テーブルT0〜T15は、いずれも図6に例示した乱数テーブルTと同様に、合計256個のセルに、0〜255の整数をそれぞれ1個ずつランダムに収容したテーブルになっている。ただ、ランダムの状態は、16枚の乱数テーブルT0〜T15のそれぞれについて異なっているため、16枚の乱数テーブルT0〜T15の内容は互いに異なっている。
一方、主装置110A内の暗号処理依頼部112Aは、情報処理部111Aから与えられた元データDと、予め記憶されていたもしくは外部から受け取った暗号鍵Kおよび符号データFに加えて、更に、複数K通りの乱数テーブルの中の1つを指定するテーブル指定子tをデータ入力部121Aに対して与える機能を有している。このため、データ入力部121Aは、元データD、暗号鍵K、符号データFとともに、特定の乱数テーブルを指定するテーブル指定子tを入力する処理を行うことになる。ここで、元データDおよび暗号鍵Kは暗号処理部124Aに与えられ、符号データFおよびテーブル指定子tは符号変換部122Aに与えられる。
そして、符号変換部122Aは、複数K通りの乱数テーブルのうち、与えられたテーブル指定子tで指定された特定の乱数テーブルを参照することにより、符号データFをアルゴリズム指定子aに変換する変換処理を行う。その他の各構成要素の機能は、図5に示す第1の実施形態の対応する構成要素の機能と同様である。
図11は、図10に示す第2の実施形態で利用されるテーブル指定子tの具体例を示す図である。図11(a) に示す例は、1バイトの符号データFの先頭に1バイトのテーブル指定子tを付加した形態を示す。すなわち、この例の場合、「06」(16進表示)なる1バイトのテーブル指定子により乱数テーブルT6が特定されており、後続する1バイトのデータ「1D」からなる符号データFは、乱数テーブルT6を用いてアルゴリズム指定子aに変換されることになる。符号変換部122Aは、このようなデータが与えられると、まず、乱数テーブル格納部123A内に格納されている複数の乱数テーブルT0〜T15の中から、テーブル指定子tによって指定された乱数テーブルT6を選択し、この乱数テーブルT6を用いて、アルゴリズム指定子aへの変換処理を行う。
もちろん、テーブル指定子tによって異なる乱数テーブルを指定すれば、符号変換部122Aによる変換によって得られるアルゴリズム指定子aの値も異なってくる。したがって、メインプログラムMの作成者は、暗号処理部124Aに意図どおりの暗号アルゴリズムを用いた暗号処理を行わせるために、まず、当該暗号アルゴリズムを指定するためのアルゴリズム指定子aを定め、続いて、乱数テーブルT0〜T15の中から1つの乱数テーブルを選択し、選択した乱数テーブルを用いてアルゴリズム指定子aを符号データFに変換する作業を行う。そして、得られた符号データFに、選択した乱数テーブルを指定するためのテーブル指定子tを付して暗号処理依頼部112Aに記憶させておくようにすればよい(あるいは、外部のサーバからダウンロードさせてもよい)。
このように、第2の実施形態では、乱数テーブル格納部123A内に複数の乱数テーブルを用意しておき、符号データFとともに特定の乱数テーブルを指定するテーブル指定子tを与えることになる。複数の乱数テーブルを使い分けることができるため、同じアルゴリズム指定子aに変換可能な複数通りの符号データが存在することになる。このため、クラッカーによる不正な解析を一層困難にすることができ、耐タンパ性を向上させることができる。
また、この第2の実施形態は、複数の異なるプログラム提供業者に、同一の暗号処理サブルーチンRを利用させる場合に、業者相互間でのセキュリティ維持にも貢献する。たとえば、プログラム提供業者X,Y,Zの三者が、この情報処理装置100Aで利用可能なアプリケーションプログラムとして、それぞれメインプログラムMx,My,Mzを開発した場合を考えてみる。ここで、これらのメインプログラムMx,My,Mzは、いずれも同一の暗号処理サブルーチンRを利用して暗号処理を行うものとしよう。
暗号処理部124Aにおいて暗号処理を行う際に、所望の暗号アルゴリズムを用いた処理が行われるようにするためには、予め特定の乱数テーブルを用いて、当該暗号アルゴリズムを指定するアルゴリズム指定子aに対応する符号データFを作成する必要がある。このため、プログラム提供業者X,Y,Zの三者には、乱数テーブルの内容を開示する必要がある。この第2の実施形態の場合、乱数テーブル格納部123A内には、複数通りの乱数テーブルT0〜T15が用意されているので、個々の業者に特定の乱数テーブルを割り当てるようにすれば、各業者には、割り当てられた特定の乱数テーブルの内容のみを開示すればよい。
たとえば、乱数テーブルT0を業者Xに割り当て、乱数テーブルT1を業者Yに割り当て、乱数テーブルT2を業者Zに割り当てたとすれば、業者Xには乱数テーブルT0のみを開示し、業者Yには乱数テーブルT1のみを開示し、業者Zには乱数テーブルT2のみを開示すれば足りる。そうすれば、たとえば、業者Xには、乱数テーブルT1,T2の内容は開示されないので、業者Y,Zが提供するメインプログラムMy,Mzが取り扱う符号データFの内容が業者Xに露呈したとしても、業者Xは、これをアルゴリズム指定子aに変換することはできない。したがって、同一の暗号処理サブルーチンRが、三者X,Y,Zによって共用されることになっても、業者相互間でのセキュリティ維持に支障は生じない。
もちろん、上例の場合、メインプログラムMxから暗号処理サブルーチンRに引き渡される符号データFについては、乱数テーブルT0を指定するテーブル指定子txが付されることになり、メインプログラムMyから暗号処理サブルーチンRに引き渡される符号データFについては、乱数テーブルT1を指定するテーブル指定子tyが付されることになり、メインプログラムMzから暗号処理サブルーチンRに引き渡される符号データFについては、乱数テーブルT2を指定するテーブル指定子tzが付されることになる。したがって、このような利用形態では、テーブル指定子tx,ty,tzは、個々の業者X,Y,Zを示す業者指定子として機能することになる。
図11(a) には、1バイトの符号データFに対して、特定の乱数テーブルを指定して変換を行う例を述べたが、符号データFを複数L個の単位データによって構成した場合は、これらL個の単位データについて共通する1つの乱数テーブルを指定して変換を行うこともできるし、個々の単位データごとに、もしくは、複数の単位データからなる個々の単位データ群ごとに、それぞれ異なる乱数テーブルを指定して変換を行うこともできる。
たとえば、図11(b) に示す例は、符号データFを3個の単位データf1,f2,f3によって構成した例である。この例では、各単位データは、それぞれ4ビット(1ニブル)のデータによって構成されており、16進表示では、0〜Fのいずれかの値をとることになる。図には、それぞれ4ビットからなる4個のデータ「0,A,8,D」が示されているが、先頭のデータ「0」はテーブル指定子tであり、後続する3個のデータ「A,8,D」が符号データFを構成している。
また、図11(b) の下段には、この例において用いられる複数の乱数テーブルT0,T1,T2,...の一例が示されている。各乱数テーブルは、0〜F(16進表示)のセル番号が付与された16個のセルに、0〜F(16進表示)の数値をランダムに収容したテーブルになっている。図11(b) の上段に示す例の場合、先頭のテーブル指定子tは「0」であり、第0番目のテーブルT0を指定するものになっている。このため、後続する3個のデータ「A,8,D」によって構成される符号データFは、いずれも共通したテーブルT0を参照することにより、3個のデータ「1,2,B」によって構成されるアルゴリズム指定子aに変換される。これら3個のデータはいずれも4ビットのデータであり、これらを羅列して12ビットのデータを構成すれば、10進表示で「299」なる整数が得られる。したがって、当該アルゴリズム指定子aは、第299番目の暗号アルゴリズムを指定するデータということになる。
一方、図11(c) に示す例は、図11(b) に示す例と同様に、「A,8,D」なる3個の単位データによって符号データFを構成した例であるが、個々の単位データごとに独立して乱数テーブルを指定した例である。この例では、「3,A,0,8,D」なる5つのデータ(いずれも4ビットのデータ)が並べて示されているが、先頭のデータ「3」は、第1のテーブル指定子t1であり、後続するデータ「A」(単位データf1)に対しては第3番目の乱数テーブルT3を指定することを示している。また、これに続くデータ「0」は、第2のテーブル指定子t2であり、後続するデータ「8,D」(単位データf2,f3)に対しては第0番目の乱数テーブルT0を指定することを示している。
この図11(c) に示す例の場合、符号データFを構成する「A,8,D」なる3個の単位データのうち、単位データ「A」については第3のテーブルT3を参照した変換処理が行われ、単位データ群「8,D」については第0のテーブルT0を参照した変換処理が行われることになる。
結局、図11(c) に示す例を実施する場合は、データ入力部121Aが、元データDと、暗号鍵Kと、単位データを複数L個羅列することにより構成される符号データFと、この符号データFを構成する個々の単位データごとに、もしくは、複数の単位データからなる個々の単位データ群ごとに、それぞれ特定の乱数テーブルを指定する固有のテーブル指定子tと、を外部から入力するようにし、符号変換部122Aが、符号データFを構成する個々の単位データごとに、もしくは、複数の単位データからなる個々の単位データ群ごとに、それぞれ固有のテーブル指定子で指定された乱数テーブルを参照することにより変換処理を行うようにすればよい。
<<< §3. 本発明の第3の実施形態 >>>
ここでは、本発明の第3の実施形態を説明する。図12は、この第3の実施形態に係る情報処理装置100Bの構成を示すブロック図である。この第3の実施形態の構成の大部分は、図5を参照しながら§1において述べた第1の実施形態の構成と同じである。そこで、図12に示す第3の実施形態の各構成要素の符号には、図5に示す第1の実施形態の対応する構成要素の符号の末尾に「B」を付した符号を用いて示すことにし、ここでは、図5に示す第1の実施形態の対応する構成要素との相違点のみを説明することにする。
ここでは、本発明の第3の実施形態を説明する。図12は、この第3の実施形態に係る情報処理装置100Bの構成を示すブロック図である。この第3の実施形態の構成の大部分は、図5を参照しながら§1において述べた第1の実施形態の構成と同じである。そこで、図12に示す第3の実施形態の各構成要素の符号には、図5に示す第1の実施形態の対応する構成要素の符号の末尾に「B」を付した符号を用いて示すことにし、ここでは、図5に示す第1の実施形態の対応する構成要素との相違点のみを説明することにする。
図12に示す第3の実施形態の特徴は、§2で述べた第2の実施形態の特徴と同様に、暗号処理装置120Bが複数の乱数テーブルを用いる点にある。図示の乱数テーブル格納部123Bは、図10に示す乱数テーブル格納部123Aと全く同じ構成要素であり、複数K通り(図示の例の場合、K=16)の乱数テーブルT0〜T15を格納している。ただ、第2の実施形態の場合、これら複数の乱数テーブルの中の特定の乱数テーブルを指定するために、テーブル指定子tを用いていたが、この第3の実施形態の場合、テーブル指定子tの代わりにパターン選択子pが用いられる。
一方、符号変換部122Bは、図10に示す符号変換部122Aと同様に、特定の乱数テーブルを参照して、符号データFをアルゴリズム指定子aに変換する処理を行う機能を有しているが、予め、乱数テーブル格納部123Bが格納しているK通りの乱数テーブルを所定の規則で順次指定するテーブル指定パターンを複数通り記憶している。図12には、3通りのテーブル指定パターンP1〜P3が格納されている状態が示されている。
主装置110B内の暗号処理依頼部112Bは、情報処理部111Bから与えられた元データDと、暗号鍵Kと、複数L個の単位データを羅列することにより構成される符号データF(予め記憶されていたデータであってもよいし、外部から受け取ったデータであってもよい)と、パターン選択子pと、をデータ入力部121Bに対して与える機能を有している。ここで、パターン選択子pは、符号変換部122Bに記憶されている複数のテーブル指定パターン(図示の例では、3通りのテーブル指定パターンP1〜P3)のいずれを選択するかを示すデータである。
したがって、データ入力部121Bは、元データDと、暗号鍵Kと、単位データを複数L個羅列することにより構成される符号データFと、特定のテーブル指定パターンを選択するパターン選択子pと、を外部から入力する処理を行うことになる。ここで、元データDおよび暗号鍵Kは暗号処理部124Bに与えられ、符号データFおよびパターン選択子pは符号変換部122Bに与えられる。
符号変換部122Bは、このパターン選択子pによって選択されたテーブル指定パターンに基づいて、符号データFの個々の単位データごとに乱数テーブルを指定し、指定された乱数テーブルを参照することにより変換処理を行い、アルゴリズム指定子aを生成することになる。その他の各構成要素の機能は、図5に示す第1の実施形態の対応する構成要素の機能と同様である。
ここで、テーブル指定パターンP1〜P3は、符号データFを構成するL個の単位データに対して、どのような規則で乱数テーブルを指定するかを定義したものである。ここに示す例は、符号データFを、2個の単位データf1,f2によって構成した例である。たとえば、各単位データf1,f2を、それぞれ4ビット(1ニブル)のデータによって構成しておけば、1つの単位データは、0〜15の範囲内の数値を表すことになる。したがって、図11(b) の下段に示すような乱数テーブルを用意しておけば、やはり4ビットのデータからなる2組のデータに変換することができ、結局、8ビットからなるアルゴリズム指定子aを生成することができる。
§1で述べた第1の実施形態では、図6に例示するような乱数テーブルTを用いて、8ビットからなる符号データFを8ビットからなるアルゴリズム指定子aに変換する例を述べた。ここで述べる実施形態では、8ビットからなる符号データFが8ビットからなるアルゴリズム指定子aに変換される点は同じであるが、符号データFは、4ビットからなる2個の単位データf1,f2に分けられ、それぞれ独立したテーブルを利用した変換が行われることになる。
図13は、このように符号データFを2個の単位データf1,f2によって構成するという前提において、テーブル指定パターンによって定義される指定規則の一例を示す図である。指定規則の欄に記載された各ますは、符号データFを構成する個々の単位データf1,f2に対応するものであり、各ますに記入された符号T0〜T5は、指定対象となる乱数テーブルを示す符号である。
たとえば、図13のテーブル指定パターンP1は、「T0,T1」という順序で乱数テーブルを順次指定する規則を示している。したがって、図14(a) に示すように、テーブル指定パターンP1を選択するパターン選択子pとともに、符号データF(単位データf1,f2によって構成される)が与えられた場合、符号変換部122Bは、図示のとおり、符号データFの第1番目の単位データf1については乱数テーブルT0を参照して変換を行い、符号データFの第2番目の単位データf2については乱数テーブルT1を参照して変換を行うことになる。
また、図13のテーブル指定パターンP2は、「T1,T3」という順序で乱数テーブルを順次指定する規則を示している。したがって、図14(b) に示すように、テーブル指定パターンP2を選択するパターン選択子pとともに、符号データF(単位データf1,f2によって構成される)が与えられた場合、符号変換部122Bは、図示のとおり、符号データFの第1番目の単位データf1については乱数テーブルT1を参照して変換を行い、符号データFの第2番目の単位データf2については乱数テーブルT3を参照して変換を行うことになる。
一方、図13のテーブル指定パターンP3は、「T5,T5」という順序で乱数テーブルを順次指定する規則を示している(いずれも、同一の乱数テーブルT5が指定される)。したがって、図14(c) に示すように、テーブル指定パターンP3を選択するパターン選択子pとともに、符号データF(単位データf1,f2によって構成される)が与えられた場合、符号変換部122Bは、図示のとおり、符号データFを構成するいずれの単位データf1,f2についても、同じ乱数テーブルT5を参照して変換を行うことになる。
ここでは、3通りのテーブル指定パターンP1〜P3の具体例を示したが、もちろん、テーブル指定パターンとしては、乱数テーブル格納部123B内に格納されている複数通りの乱数テーブルを所定の規則で順次指定するものであれば、どのような規則に基づくパターンを採用してもかまわない。要するに、この第3の実施形態では、乱数テーブル格納部123B内に、複数K通りの乱数テーブルを格納しておき、符号変換部122Bに、これらK通りの乱数テーブルを所定の規則で順次指定するテーブル指定パターンを複数通り記憶させておけばよい。そうすれば、符号変換部122Bは、外部から与えられたパターン選択子pによって選択された特定のテーブル指定パターンに基づいて、符号データFを構成する個々の単位データごとに乱数テーブルを指定し、指定された乱数テーブルを参照することにより変換処理を行うことができる。
このように、第3の実施形態では、符号データFは複数の単位データf1,f2,... によって構成され、個々の単位データごとに、所定のテーブル指定パターンに基づいて、それぞれ独立して乱数テーブルを指定することができる。たとえば、8ビットからなる符号データFを8ビットからなるアルゴリズム指定子aに変換する場合、§1で述べた第1の実施形態では、図6に例示するような乱数テーブルT(8ビットのデータ同士の変換を行うテーブル)を参照した変換が行われる。これに対して、ここで述べた第3の実施形態では、8ビットの符号データFが4ビットからなる2組の単位データf1,f2として独立して取り扱われ、図11(b) 下段に示すような複数の乱数テーブルT0,T1,T2,... (4ビットのデータ同士の変換を行うテーブル)のいずれかが、パターン選択子pによって選択されたテーブル指定パターンに基づいて指定され、それぞれ指定された乱数テーブルを参照して変換が行われる。このため、符号データFとアルゴリズム指定子aとの対応関係がより複雑になり、クラッカーによる不正な解析を一層困難にすることができ、耐タンパ性を向上させることができる。
もちろん、メインプログラムを提供する業者ごとに特定のテーブル指定パターンを割り当てる運用を採ることも可能である。たとえば、業者Xにはテーブル指定パターンP1を割り当て、業者Yにはテーブル指定パターンP2を割り当て、業者Zにはテーブル指定パターンP3を割り当てるようにすればよい。この場合、パターン選択子pは、個々の業者X,Y,Zを示す業者指定子として機能することになる。
<<< §4. 本発明の第4の実施形態 >>>
ここでは、本発明の第4の実施形態を説明する。図15は、この第4の実施形態に係る情報処理装置100Cの構成を示すブロック図である。この第4の実施形態の構成の大部分は、図5を参照しながら§1において述べた第1の実施形態の構成と同じである。そこで、図15に示す第4の実施形態の各構成要素の符号には、図5に示す第1の実施形態の対応する構成要素の符号の末尾に「C」を付した符号を用いて示すことにし、ここでは、図5に示す第1の実施形態の対応する構成要素との相違点のみを説明することにする。
ここでは、本発明の第4の実施形態を説明する。図15は、この第4の実施形態に係る情報処理装置100Cの構成を示すブロック図である。この第4の実施形態の構成の大部分は、図5を参照しながら§1において述べた第1の実施形態の構成と同じである。そこで、図15に示す第4の実施形態の各構成要素の符号には、図5に示す第1の実施形態の対応する構成要素の符号の末尾に「C」を付した符号を用いて示すことにし、ここでは、図5に示す第1の実施形態の対応する構成要素との相違点のみを説明することにする。
図10に示す第2の実施形態や、図12に示す第3の実施形態では、複数の乱数テーブルを用いることにより、耐タンパ性を更に向上させる工夫を施した。図15に示す第4の実施形態では、乱数テーブル格納部123C内には単一の乱数テーブルT(たとえば、図6に示すような乱数テーブル)のみが用意されているが、この乱数テーブルTの各セルに収容されている数値を所定の規則でシフトさせることにより、擬似的に複数の乱数テーブルを用いたのと同様の効果を奏する工夫が施されている。
まず、主装置110C内の暗号処理依頼部112Cは、情報処理部111Cから与えられた元データD、暗号鍵K、予め記憶されていたもしくは外部から受け取った符号データFに加えて、更に、乱数テーブルTの各セル内の数値をシフトさせる規則を示すシフト指示子sをデータ入力部121Cに対して与える機能を有している。このため、データ入力部121Cは、元データD、暗号鍵K、符号データFとともに、シフト指示子sを入力する処理を行うことになる。ここで、元データDおよび暗号鍵Kは暗号処理部124Cに与えられ、符号データFおよびシフト指示子sは符号変換部122Cに与えられる。
一方、符号変換部122Cは、乱数テーブル格納部123C内に格納されている乱数テーブルT内の各数値を、シフト指示子sによって示される規則に基づいてシフトさせ、シフト後の数値を用いて変換を行い、アルゴリズム指定子aを生成する変換処理を行う。その他の各構成要素の機能は、図5に示す第1の実施形態の対応する構成要素の機能と同様である。
図16は、図15に示す第4の実施形態で利用されるシフト指示子sの具体例を示す図である。この例では、シフト指示子sは、正もしくは負のいずれかのシフト方向とシフト量dとを示すデータによって構成されている。たとえば、「+5」なるシフト指示子sは、正方向にシフト量5だけシフトすることを示し、「−3」なるシフト指示子sは、負方向にシフト量3だけシフトすることを示している。
符号変換部122Cは、与えられたシフト指示子sによって示されるシフト方向が正の場合には、乱数テーブルTの第i番目のセル番号をもつセル内の数値を第(i+d)番目のセル番号をもつセルにシフトさせ、シフト方向が負の場合には、乱数テーブルTの第i番目のセル番号をもつセル内の数値を第(i−d)番目のセル番号をもつセルにシフトさせるシフト処理を行う機能を有しており、シフト後の数値を用いて変換を行い、アルゴリズム指定子aを生成する。但し、シフト後のセルが、セル番号の範囲から外れる場合には、シフト後のセル番号にセルの総数Mを加算もしくは減算してセル番号の範囲内となるようにする修正処理を行う。
上記シフト処理は、いわゆるローテーションシフトと呼ばれているシフト方法である。図17は、8行8列に並べられた合計64個のセル(ここでは、セル番号を1〜64とする)からなる乱数テーブルに対して、このようなローテーションシフトを行った例を示す図である。図17(a) および図17(b) の左側に示す乱数テーブルは、乱数テーブル格納部123Cに格納されている元の乱数テーブルを示している。なお、ここでは、説明の便宜上、各セル内に1〜64の数字を順番に収容した例を示してあるが、実際には、各セルにはランダムに数値が収容されている。
図17(a) の右側に示すテーブルは、元の乱数テーブルに対して、「+5」なるシフト指示子sに基づくシフト処理を行うことにより得られるテーブルである。個々のセル内の数値は、正方向に5セル分だけシフトされており、第i番目のセル番号をもつセル内の数値は第(i+5)番目のセル番号をもつセルに移動されている。但し、第65〜69番目のセルにシフトされるべき数値「60」〜「64」については、セル番号の範囲(1〜64)から外れるため、セルの総数64を減算して、第1〜5番目のセルに移動させている。
一方、図17(b) の右側に示すテーブルは、元の乱数テーブルに対して、「−3」なるシフト指示子sに基づくシフト処理を行うことにより得られるテーブルである。個々のセル内の数値は、負方向に3セル分だけシフトされており、第i番目のセル番号をもつセル内の数値は第(i−3)番目のセル番号をもつセルに移動されている。但し、第−2〜0番目のセルにシフトされるべき数値「1」〜「3」については、セル番号の範囲(1〜64)から外れるため、セルの総数64を加算して、第62〜64番目のセルに移動させている。
もちろん、図17に示すシフト方法は、一例として示したものであり、シフト指示子sによって示されるシフト方法としては、任意の規則を採用することができる。なお、実用上は、乱数テーブル格納部123Cに格納されている乱数テーブルTに対して、実際に数値をシフトした新たなテーブルを作成する必要はなく、符号変換部122Cが、乱数テーブルT内の特定のセルを参照する際に、参照対象となるセルの位置をシフトさせれば十分である。たとえば、「+5」なるシフト指示子sが与えられた場合、符号変換部122Cは、第i番目のセル内の数値を参照する代わりに、第(i+5)番目のセル内の数値を参照すればよい。
このように、シフト指示子sによって示される所定のシフト方法により、乱数テーブル格納部123C内に格納されている乱数テーブル内の各数値をシフトさせ、シフト後の数値を用いて変換を行い、暗号鍵Kを生成するようにすれば、符号データFと暗号鍵Kとの対応関係がより複雑になる。このため、クラッカーによる不正な解析を一層困難にすることができ、耐タンパ性を向上させることができる。
<<< §5. 本発明の第5の実施形態 >>>
次に、本発明の第5の実施形態を説明する。図18は、この第5の実施形態に係る情報処理装置100Dの構成を示すブロック図である。この第5の実施形態の構成の大部分は、図5を参照しながら§1において述べた第1の実施形態の構成と同じである。そこで、図18に示す第5の実施形態の各構成要素の符号には、図5に示す第1の実施形態の対応する構成要素の符号の末尾に「D」を付した符号を用いて示すことにし、ここでは、図5に示す第1の実施形態の対応する構成要素との相違点のみを説明することにする。
次に、本発明の第5の実施形態を説明する。図18は、この第5の実施形態に係る情報処理装置100Dの構成を示すブロック図である。この第5の実施形態の構成の大部分は、図5を参照しながら§1において述べた第1の実施形態の構成と同じである。そこで、図18に示す第5の実施形態の各構成要素の符号には、図5に示す第1の実施形態の対応する構成要素の符号の末尾に「D」を付した符号を用いて示すことにし、ここでは、図5に示す第1の実施形態の対応する構成要素との相違点のみを説明することにする。
本発明に係る情報処理装置では、主装置から暗号処理装置に対して、元データD、暗号鍵K、アルゴリズム指定子aという3つの情報を引き渡す必要がある。暗号処理装置は、アルゴリズム指定子aで指定された暗号アルゴリズムに基づいて、元データDに対して暗号鍵Kを用いた暗号処理を実施することになる。これまで述べてきた実施形態では、アルゴリズム指定子aに対して乱数テーブルTを用いて符号化を施すことにより、符号データFという形で暗号処理装置に対する引き渡しを行っている。したがって、この符号データFが漏洩したとしても、アルゴリズム指定子aの情報まで察知されることはなく、どの暗号アルゴリズムを用いて暗号処理が行われたかは秘密の状態に維持される。
図18に示す第5の実施形態の特徴は、アルゴリズム指定子aだけでなく、暗号鍵Kに対しても符号化を行い、符号化暗号鍵Qという形で引き渡しを行う点にある。すなわち、この実施形態では、主装置110Dから暗号処理装置120Dに対して、元データD、符号化暗号鍵Q、符号データFが引き渡されることになる。ここで、符号化暗号鍵Qは、乱数テーブルTを用いて暗号鍵Kを符号化して得られるデータであり、符号データFは、乱数テーブルTを用いてアルゴリズム指定子aを符号化して得られるデータである。
なお、前者と後者とを対比する上では、前者を「符号化暗号鍵Q」と呼び、後者を「符号化アルゴリズム指定子F」と呼ぶべきであるが、ここでは、これまでの実施形態で用いてきた用語をそのまま踏襲して、後者については「符号データF」と呼ぶことにする。
主装置110D内の暗号処理依頼部112Dは、情報処理部111Dから与えられた元データDと、予め記憶されていたもしくは外部から受け取った符号化暗号鍵Qおよび符号データFをデータ入力部121Dに対して与える機能を有している。したがって、データ入力部121Dは、暗号鍵Kをそのまま入力する代わりに、乱数テーブルTを用いて符号化された符号化暗号鍵Qという形式で入力することになる。ここで、元データDは暗号処理部124Dに与えられ、符号化暗号鍵Qおよび符号データFは符号変換部122Dに与えられる。
符号変換部122Dは、乱数テーブル格納部123Dに格納されている乱数テーブルTを参照することにより符号データFをアルゴリズム指定子aに変換する処理を行うとともに、乱数テーブルTを参照することにより符号化暗号鍵Qを暗号鍵Kに変換する処理を行う。そして、これらの変換処理を経て得られるアルゴリズム指定子aおよび暗号鍵Kを暗号処理部124Dに与える。暗号処理部124Dが、複数N通りの暗号アルゴリズムA0〜A(N−1)のうち、アルゴリズム指定子aで指定された特定の暗号アルゴリズムに基づいて、元データDに対して暗号鍵Kを用いた暗号処理を行う点は、これまで述べてきた実施形態と全く同じである。生成された処理済データEは、データ出力部125Dを介して、主装置110Dへ戻される。
このように、第5の実施形態では、アルゴリズム指定子aのみならず、暗号鍵Kについても符号化した状態で引き渡しが行われるため、クラッカーによる不正な解析を一層困難にすることができ、耐タンパ性を向上させることができる。
なお、暗号鍵Kに対する符号化を行い、符号化暗号鍵Qを作成する方法は、これまで述べてきたアルゴリズム指定子aに対する符号化の手法と同様の方法を利用すればよい。一般に、暗号鍵Kとしては、複数Lバイトからなるデータが用いられるので、図6に示すような乱数テーブルT(1バイトのデータから1バイトのデータに変換するテーブル)を用意しておき、この乱数テーブルTを参照しながら個々のバイトごとに変換を行えば、符号化暗号鍵Qを作成することができる。符号変換部122Dでは、この乱数テーブルTを参照した逆変換を行えば、元の暗号鍵Kを得ることができる。
もちろん、符号化暗号鍵Qを作成する際にも、§2の第2の実施形態で述べたように、乱数テーブル格納部123D内に複数の乱数テーブルを用意しておき、テーブル指定子tによって参照すべきテーブルを指定する運用を採ることもできるし、§3の第3の実施形態で述べたように、パターン選択子pを用いて特定のテーブル指定パターンを選択させるようにし、当該パターンに基づいて、個々のバイトごとに参照すべきテーブルを指定することもできる。また、§4の第4の実施形態で述べたように、シフト指示子sによって乱数テーブルに対するシフト処理を行うようにし、シフト処理後のテーブルを用いて暗号鍵Kの符号化を行うようにしてもよい。
<<< §6. 本発明の第6の実施形態 >>>
続いて、本発明の第6の実施形態を説明する。図19は、この第6の実施形態に係る情報処理装置100Eの構成を示すブロック図である。この第6の実施形態の構成の大部分は、図5を参照しながら§1において述べた第1の実施形態の構成と同じである。そこで、図19に示す第6の実施形態の各構成要素の符号には、図5に示す第1の実施形態の対応する構成要素の符号の末尾に「E」を付した符号を用いて示すことにし、ここでは、図5に示す第1の実施形態の対応する構成要素との相違点のみを説明することにする。
続いて、本発明の第6の実施形態を説明する。図19は、この第6の実施形態に係る情報処理装置100Eの構成を示すブロック図である。この第6の実施形態の構成の大部分は、図5を参照しながら§1において述べた第1の実施形態の構成と同じである。そこで、図19に示す第6の実施形態の各構成要素の符号には、図5に示す第1の実施形態の対応する構成要素の符号の末尾に「E」を付した符号を用いて示すことにし、ここでは、図5に示す第1の実施形態の対応する構成要素との相違点のみを説明することにする。
図19に示す第6の実施形態の特徴は、主装置110Eから暗号処理装置120Eに対して引き渡す符号データF(アルゴリズム指定子aを乱数テーブルTを用いて符号化したデータ)を、所定の方法で暗号化する点にある。別言すれば、第1の実施形態で引き渡していた符号データFの代わりに、これを所定の方法で暗号化した暗号化符号データGを用意しておき、主装置110Eから暗号処理装置120Eに対して、元データDおよび暗号鍵Kとともに、この暗号化符号データGを引き渡すようにする(図示されている復号鍵指定子wについては後述する)。そのため、主装置110E内の暗号処理依頼部112Eには、符号データFの代わりに、暗号化符号データGを記憶させておくようにする。もちろん、暗号化符号データGを外部のサーバなどに用意しておき、暗号処理依頼部112Eが、外部から暗号化符号データGを受け取るようにしてもよい。
一方、暗号処理装置120E内には、新たな構成要素として、与えられた暗号化符号データGを復号して、元の符号データFを得る処理を行う符号データ復号部126Eを設けておくようにする。データ入力部121Eは、元データD、暗号鍵K、暗号化符号データGを入力する処理を行うことになる。ここで、元データDおよび暗号鍵Kは暗号処理部124Eに与えられ、暗号化符号データGは符号データ復号部126Eに与えられる。符号データ復号部126Eは、与えられた暗号化符号データGを復号し、復号された符号データFを符号変換部122Eに与える。符号変換部122Eが、乱数テーブル格納部123Eに格納されている乱数テーブルTを用いて、復号された符号データFをアルゴリズム指定子aに変換し、これを暗号処理部124Eに与える点は、第1の実施形態と同様である。その他の各構成要素の機能は、図5に示す第1の実施形態の対応する構成要素の機能と同様である。
このように、第6の実施形態では、符号データFを暗号化し、暗号化符号データGとして取り扱うようにしたため、主装置110E内には、符号データFさえ存在しない状態が実現できる。結局、アルゴリズム指定子aは、乱数テーブルTを用いて符号化された上、更に、暗号化され、暗号化符号データGという形で、主装置110Eから暗号処理装置120Eへ引き渡されることになる。このため、クラッカーによる不正な解析によりアルゴリズム指定子aが盗まれる可能性を更に低減することができ、耐タンパ性を向上させることができる。
なお、図19に示す実施例では、符号データ復号部126E内に複数H通りの復号鍵(図示の例では、4通りの公開鍵W1〜W4)を記憶させておき、暗号処理依頼部112Eが、元データDおよび暗号鍵Kとともに、この複数H通りの復号鍵のうちの第i番目の復号鍵を用いて復号が可能な状態で暗号化された暗号化符号データGと、この第i番目の復号鍵を指定する復号鍵指定子wと、をデータ入力部121Eに与えるようにしている。
したがって、データ入力部121Eは、元データDおよび暗号鍵Kと、第i番目の復号鍵を用いて復号が可能な状態で暗号化された暗号化符号データGと、この第i番目の復号鍵を指定する復号鍵指定子wと、を入力する処理を行うことになる。ここで、元データDおよび暗号鍵Kは暗号処理部124Eに与えられ、暗号化符号データGおよび復号鍵指定子wは符号データ復号部126Eに与えられる。符号データ復号部126Eは、この復号鍵指定子wで指定された復号鍵を用いて、暗号化符号データGに対する復号処理を行い、符号データFを得ることになる。
ここでは、より具体的に、公開鍵暗号方式に利用可能な公開鍵および秘密鍵を用いた例を説明する。図20は、一般的な公開鍵暗号方式に利用可能な鍵ペアーを示す表である。公開鍵暗号方式では、公開鍵と秘密鍵との鍵ペアーが利用される。ここで、一対の鍵ペアーを構成する公開鍵と秘密鍵は、一方の鍵を暗号化用の鍵として用いて所定のデータに対して暗号化処理を行って暗号データを生成させると、他方の鍵を復号鍵として用いて当該暗号データに対して復号処理を行うことができる、という特殊な関係を有している。
図20に示す例では、このような関係をもった鍵ペアーが合計H組用意されており、たとえば、第i番目の秘密鍵Viを用いて暗号化処理を行った場合、対応する第i番目の公開鍵Wiを復号鍵として用いて復号処理を行うことができる。そこで、符号データ復号部126Eには、このような公開鍵暗号方式に利用可能な公開鍵および秘密鍵を構成する複数H組の鍵ペアーのそれぞれについて、公開鍵および秘密鍵のうちの一方の鍵を復号鍵として記憶させておく。図19に示す例の場合、符号データ復号部126Eに、4組の公開鍵W1〜W4を復号鍵として記憶させておく例が示されている。
一方、暗号処理依頼部112Eに予め記憶されている(もしくは、外部から受け取る)暗号化符号データGは、元になる符号データFに対して、H組の鍵ペアーのうちの第i番目の一方の鍵(符号データ復号部126Eに記憶されている鍵)に対応する他方の鍵を用いて暗号化を行って得られるデータであるようにしておく。暗号処理依頼部112Eは、当該暗号化符号データGとともに、その復号処理に用いることができる復号鍵を指定する復号鍵指定子wをデータ入力部121Eに与えるようにする。すなわち、この復号鍵指定子wは、暗号処理装置120Eの符号データ復号部126Eに記憶されている「H組の鍵ペアーについての復号鍵として用いる一方の鍵」の第i番目を指定する情報ということになる。
結局、データ入力部121Eは、H組の鍵ペアーのうちの第i番目の鍵ペアーについての他方の鍵を用いて暗号化された暗号化符号データGと、第i番目の鍵ペアーを指定する復号鍵指定子wと、を入力することになるので、符号データ復号部126Eは、この復号鍵指定子wで指定された第i番目の鍵ペアーについての一方の鍵を復号鍵として用いた復号を行うことができる。
図19に示すように、公開鍵W1〜W4を4組の復号鍵として符号データ復号部126Eに格納しておいた場合、符号データFの暗号化には、これら公開鍵W1〜W4に対応する秘密鍵V1〜V4のいずれかを用いればよい。たとえば、秘密鍵V3を用いて符号データFを暗号化して暗号化符号データGを用意した場合は、暗号処理依頼部112Eは、この暗号化符号データGとともに、復号鍵となる公開鍵W3を指定する復号鍵指定子wを、データ入力部121Eに与える処理を行うことになる。その結果、符号データ復号部126Eは、復号鍵指定子wによって指定された公開鍵W3を用いて、暗号化符号データGを復号し、元の符号データFを得る処理を行うことになる。
このように、公開鍵暗号方式に利用可能な公開鍵および秘密鍵を複数H組利用する実施例は、複数の異なるプログラム提供業者に、同一の暗号処理サブルーチンRを利用させる場合に、業者相互間でのセキュリティを維持するために有効である。たとえば、前述したように、プログラム提供業者X,Y,Zの三者が、この情報処理装置100Eで利用可能なアプリケーションプログラムとして、それぞれメインプログラムMx,My,Mzを開発した場合に、この第6の実施形態を適用させる場合を考えてみる。これらのメインプログラムMx,My,Mzは、いずれも同一の暗号処理サブルーチンRを利用して暗号処理を行うアプリケーションプログラムであり、それぞれ暗号化符号データGx,Gy,Gzを暗号処理サブルーチンRに引き渡すことにより、それぞれ所望の暗号鍵Kx,Ky,Kzを用いた暗号処理が実施されるようにする機能を有しているものとしよう。
この場合、業者X,Y,Zには、それぞれ秘密鍵V1,V2,V3を渡しておき、これら秘密鍵V1,V2,V3をそれぞれ用いて、符号データFx,Fy,Fzを暗号化し、暗号化符号データGx,Gy,Gzを用意してもらうようにする。そして、メインプログラムMxから暗号処理サブルーチンRに暗号処理依頼を行う際には、暗号化符号データGxとともに公開鍵W1を指定する復号鍵指定子wxを引き渡すようにする。そうすれば、符号データ復号部126Eは、公開鍵W1を用いて、暗号化符号データGxを復号し、元の符号データFxに戻す処理を行うことができる。メインプログラムMy,Mzから暗号処理依頼を行う場合も同様である。
このような実施形態を採れば、全く同一の暗号処理サブルーチンが業者X,Y,Zによって共用されることになるが、業者X,Y,Zに渡す秘密鍵V1,V2,V3はそれぞれ異なるため、業者相互間でのセキュリティは十分に維持されることになる。もちろん、公開鍵と秘密鍵の役割を逆にし、符号データ復号部126E内に秘密鍵V1,V2,V3を格納しておき、業者X,Y,Zに公開鍵W1,W2,W3を渡して暗号化を行うようにしてもかまわない。
<<< §7. 本発明に用いる符号データ生成装置 >>>
本発明を実施する上では、予め所定の乱数テーブルを利用して、所望のアルゴリズム指定子aに対応する符号データFを作成しておく必要がある。所望のアルゴリズム指定子aに基づいて、これに対応する符号データFを作成する作業は、乱数テーブルTがあれば手作業で行うことも可能である。たとえば、図7に示す例のように、アルゴリズム指定子aとして「3A」なる値を用いる場合、図6に示す乱数テーブルを用いて、符号データFとして「1D」なる値を得ることができる。
本発明を実施する上では、予め所定の乱数テーブルを利用して、所望のアルゴリズム指定子aに対応する符号データFを作成しておく必要がある。所望のアルゴリズム指定子aに基づいて、これに対応する符号データFを作成する作業は、乱数テーブルTがあれば手作業で行うことも可能である。たとえば、図7に示す例のように、アルゴリズム指定子aとして「3A」なる値を用いる場合、図6に示す乱数テーブルを用いて、符号データFとして「1D」なる値を得ることができる。
したがって、メインプログラムMの作成者に、暗号処理サブルーチンR内に組み込まれている乱数テーブルTと同一の乱数テーブルを渡しておけば、当該作成者は、所望のアルゴリズム指定子aに対応する符号データFを予め用意することができ、これを暗号処理依頼部112内に記憶させたり(実際には、メインプログラムM内に符号データFを書き込んでおくことになる)、あるいは、外部の装置やサーバに当該符号データFを格納しておき、必要に応じて、暗号処理依頼部112がこれを調達できるようにしたりすることができる(実際には、メインプログラムM内に、符号データFを外部から読み込む処理プログラムを用意しておくことになる)。
ただ、実用上は、メインプログラムMの作成者に、手作業で符号データFを作成してもらう代わりに、符号データFを自動的に生成する機能をもった符号データ生成装置を利用してもらい、この符号データ生成装置により符号データFの生成を行うようにするのがアルゴリズム指定子aの秘密保持の観点からも好ましい。そこで、ここでは、このような符号データ生成装置の構成例を説明する。
図21は、このような暗号処理用の符号データ生成装置300の基本構成を示すブロック図である。この装置は、§1で述べた第1の実施形態に係る暗号処理装置120に与える符号データFを生成するのに適した符号データ生成装置であり、図示のとおり、アルゴリズム指定子入力部310と、符号データ生成部320と、乱数テーブル記憶部330と、を有している。実際には、この符号データ生成装置300は、たとえば、汎用のパソコンにアプリケーションプログラムを組み込むことにより構成することができる。あるいは、この符号データ生成装置300を、ネットワークに接続されたサーバ装置によって構成し、ネットワーク経由で利用できるようにしてもよい。
ここで、アルゴリズム指定子入力部310は、暗号処理装置120内の暗号処理部124による暗号処理に用いる暗号アルゴリズムを指定するアルゴリズム指定子aを入力する構成要素である。パソコンによって符号データ生成装置300を構成した場合、アルゴリズム指定子入力部310は、このパソコンに備わっているキーボードによって構成することができる。
一方、乱数テーブル記憶部330は、暗号処理装置120内の乱数テーブル格納部123に格納されている乱数テーブルTと同一の乱数テーブルTを記憶するための構成要素であり、パソコンによって符号データ生成装置300を構成した場合、乱数テーブル記憶部330は、このパソコンに備わっているメモリや、このパソコンに接続された種々の記憶装置によって構成することができる。
そして、符号データ生成部320は、この乱数テーブル記憶部330に記憶されている乱数テーブルTを用いて、暗号処理装置120内の符号変換部122によって行われる変換処理とは逆の変換処理を行い、アルゴリズム指定子入力部310が入力したアルゴリズム指定子aに対応する符号データFを生成する処理を行う。パソコンによって符号データ生成装置300を構成した場合、符号データ生成部320は、このパソコンに備わっているCPUと変換処理プログラムとによって構成することができる。
結局、この暗号処理用符号データ生成装置300は、与えられた任意のアルゴリズム指定子aについて、乱数テーブルTを利用して、対応する符号データFを生成し、これを出力する機能を果たすことになる。
メインプログラムMの作成者は、メインプログラムMを作成する作業を行う際に、この符号データ生成装置300を利用すれば、所望のアルゴリズム指定子aに対応する符号データFを自動的に得ることができ、得られた符号データFをメインプログラムMに組み込んだり、外部の装置やサーバなどに格納して提供したりすることができる。メインプログラムMの作成者は、手作業で符号データFを作成する必要はないので、当該作成者に対して、乱数テーブルTの内容を開示する必要はなくなる。
なお、乱数テーブルTを記憶した乱数テーブル記憶部330は、ICカードやUSBメモリなど、パソコンに接続される外部記憶装置によって構成することもできる。特に、ICカードによって乱数テーブル記憶部330を構成しておけば、内部に記憶されている乱数テーブルTの秘匿性を確保することができる。もちろん、符号データ生成装置300全体を、ICカードによって構成してもかまわない。
また、乱数テーブル記憶部330の部分を、外部のサーバによって構成することも可能である。この場合、符号データ生成部320は、ネットワークを介して、当該サーバをアクセスして、乱数テーブルTを参照することになる。もちろん、符号データ生成装置300全体を外部のサーバによって構成してもよい。この場合、メインプログラムMの作成者は、ネットワークを介してアルゴリズム指定子aを符号データ生成装置300に送信し、ネットワークを介して符号データFを受信することになる。
以上、図21を参照しながら、§1で述べた第1の実施形態に係る暗号処理装置120に与える符号データFを生成するのに適した符号データ生成装置300の構成を述べたが、§2〜§5で述べた第2〜第5の実施形態に係る暗号処理装置120A〜120Dに与える符号データFを生成するのに適した符号データ生成装置300A〜300Dも、ほぼ同様の構成で実現できる。
たとえば、第2の実施形態に係る暗号処理装置120Aでは、複数の乱数テーブルT0〜T15が利用されるので、符号データ生成装置300A内の乱数テーブル記憶部330Aにも複数の乱数テーブルT0〜T15を記憶させておき、任意の乱数テーブルを選択して符号データFを生成するようにすればよい。もっとも、複数の異なるプログラム提供業者に、同一の暗号処理サブルーチンRを利用させ、業者相互間でのセキュリティの維持を図る場合は、§2で述べたとおり、個々の業者にそれぞれ特定の乱数テーブルを割り当てる運用が採られるので、個々の業者に提供する符号データ生成装置300Aには、当該業者に割り当てられた乱数テーブルのみを記憶させておけば足りる。
たとえば、プログラム提供業者X,Y,Zの三者に、それぞれ乱数テーブルT0,T1,T2を割り当てる運用を採る場合、業者Xに提供する符号データ生成装置には乱数テーブルT0のみを記憶させておき、業者Yに提供する符号データ生成装置には乱数テーブルT1のみを記憶させておき、業者Zに提供する符号データ生成装置には乱数テーブルT2のみを記憶させておけば足りる。また、乱数テーブル記憶部330をサーバ上に設ける場合は、業者Xには乱数テーブルT0に対するアクセス権を与え、業者Yには乱数テーブルT1に対するアクセス権を与え、業者Zには乱数テーブルT2に対するアクセス権を与える運用を採ればよい。
一方、第3の実施形態に係る暗号処理装置120Bでは、符号変換部122Bがテーブル指定パターンP1〜P3に基づいて複数の乱数テーブルを指定する処理を行うことになるので、符号データ生成装置300B内の乱数テーブル記憶部330B内に複数の乱数テーブルT0〜T15を記憶させておくとともに、符号データ生成部320Bにも、同一のテーブル指定パターンP1〜P3を格納しておくようにし、選択した特定のテーブル指定パターンに基づいて、アルゴリズム指定子aを構成する単位データごとに、所定の乱数テーブルが指定されるようにすればよい。
もちろん、業者ごとに特定のテーブル指定パターンを割り当てる運用を採る場合は、個々の業者に提供する符号データ生成装置300Bには、当該業者に割り当てられたテーブル指定パターンのみを格納しておけば足りる。
また、第4の実施形態に係る暗号処理装置120Cでは、符号変換部122Cがシフト指示子sに基づいてシフト処理を行うことになるので、符号データ生成装置300C内の符号データ生成部320Cにも、所望のシフト指示子sに基づいてシフト処理を行う機能を設けておくようにすればよい。
第5の実施形態に係る暗号処理装置120Dにおける符号変換部122Dの機能は、第1の実施形態に係る暗号処理装置120における符号変換部122の機能と同じであるため、第5の実施形態に係る暗号処理装置120Dに与える符号データFを生成するには、図21に示す符号データ生成装置300をそのまま利用すればよい。
一方、第6の実施形態に係る暗号処理装置120Eについては、符号データFの代わりに暗号化符号データGを引き渡す必要があるので、符号データ生成装置には、符号データFに対する暗号化機能を付加しておき、暗号化符号データGを生成できるようにしておくのが好ましい。
図22に示す符号データ生成装置300Eは、この第6の実施形態に係る暗号処理装置120Eに与える暗号化符号データGを生成するのに適した符号データ生成装置であり、図示のとおり、アルゴリズム指定子入力部310Eと、符号データ生成部320Eと、乱数テーブル記憶部330Eと、暗号化符号データ生成部340Eと、を有している。実際には、この符号データ生成装置300Eも、たとえば、汎用のパソコンにアプリケーションプログラムを組み込むことにより構成することができる。
ここで、アルゴリズム指定子入力部310E、符号データ生成部320E、乱数テーブル記憶部330Eの機能は、図21に示す符号データ生成装置300の構成要素であるアルゴリズム指定子入力部310、符号データ生成部320、乱数テーブル記憶部330の機能と全く同じである。別言すれば、図22に示す符号データ生成装置300Eは、図21に示す符号データ生成装置300に、更に、暗号化符号データ生成部340Eを追加することにより構成されている。ここで、暗号化符号データ生成部340Eは、符号データ生成部320Eによって生成された符号データFに対して、図19に示す暗号処理装置120E内の符号データ復号部126Eによって復号可能な方法で暗号化を行って暗号化符号データGを生成し、これを出力する機能を有する。したがって、この符号データ生成装置300Eに対して、所望のアルゴリズム指定子aを与えれば、暗号化符号データGが出力されることになる。
より具体的に説明すれば、暗号化符号データ生成部340Eは、図19に示す暗号処理装置120E内の符号データ復号部126Eに記憶されている「H組の鍵ペアーのうち一方の鍵(図示の例では公開鍵W1〜W4)」にそれぞれ対応する「H組の鍵ペアーのうちの他方の鍵(図示の例では秘密鍵V1〜V4)」を記憶しており、符号データ生成部320Eによって生成された符号データFに対して、この「H組の鍵ペアーのうちの他方の鍵(図示の例では秘密鍵V1〜V4)」の中の任意の第i番目の鍵を用いて暗号化を行って暗号化符号データGを生成する処理を行う。ここで、暗号化に用いる第i番目の鍵は復号鍵となり、復号鍵指定子wによって指定されることになる。
もちろん、暗号化符号データ生成部340Eは、ICカードやUSBメモリなど、パソコンに接続される外部記憶装置によって構成してもよいし、暗号化符号データ生成部340Eの部分を、外部のサーバによって構成してもよい。あるいは、符号データ生成装置300E全体を外部のサーバによって構成してもよい。
なお、複数の異なるプログラム提供業者に、同一の暗号処理サブルーチンRを利用させ、業者相互間でのセキュリティの維持を図る場合は、個々の業者にそれぞれ特定の鍵ペアーを割り当てる運用が採られるので、個々の業者に提供する符号データ生成装置300Eの暗号化符号データ生成部340Eには、当該業者に割り当てられた鍵のみを格納しておけば足りる。
たとえば、§6で述べたように、業者X,Y,Zには、それぞれ秘密鍵V1,V2,V3を用いて符号データFに対する暗号化を行わせる運用を採る場合は、業者Xが利用する符号データ生成装置300E内の暗号化符号データ生成部340Eには秘密鍵V1のみを格納し、業者Yが利用する符号データ生成装置300E内の暗号化符号データ生成部340Eには秘密鍵V2のみを格納し、業者Zが利用する符号データ生成装置300E内の暗号化符号データ生成部340Eには秘密鍵V3のみを格納しておけばよい。
もっとも、符号データ生成装置300Eを、パソコンではなくICカードによって構成すれば、暗号化符号データ生成部340Eが利用する秘密鍵もICカード内に記録されることになるため、これを不正な方法で外部に読み出すことは極めて困難である。したがって、符号データ生成装置300EをICカードで構成する場合は、業者ごとに異なる鍵ペアーを用いる必要はなく、共通の単一鍵ペアーを用いるようにしても、実用上、業者相互間でのセキュリティの問題は生じない。具体的には、この場合、図22に示す暗号化符号データ生成部340E内には、共通の鍵ペアーの秘密鍵を格納しておき、図19に示す符号データ復号部126E内には、当該共通の鍵ペアーの公開鍵を格納しておけば足りる。
一方、図23に示す符号データ生成装置300E′は、図22に示す符号データ生成装置300Eの変形例である。この変形例に係る符号データ生成装置300E′は、外部から取り込んだ鍵生成用データDkに基づいて内部で鍵を生成する機能を有しており、図示のとおり、鍵生成部350Eを備えている。図22に示す符号データ生成装置300Eとの相違点は、この鍵生成部350Eを付加した点と、暗号化符号データ生成部340Eが、鍵生成部350Eにおいて生成された生成鍵Kgを用いて符号データFに対する暗号化を行う点だけである。
図23には、鍵生成部350Eが、ICカード400から鍵生成用データDkを読み込み、この鍵生成用データDkに対して所定のアルゴリズムに基づく鍵生成演算を行って鍵を生成し、得られた生成鍵Kgを暗号化符号データ生成部340Eに与える処理を行う例が示されている。鍵生成用データDkは、必ずしもICカード400を用いて提供する必要はなく、たとえば、ネットワークを介してサーバから提供するようにしてもかまわない。ただ、ICカードは、高いセキュリティをもってデータを保管する機能を有し、取り扱いや配布も容易であるため、実用上は、図示の例のように、ICカード400に鍵生成用データDkを格納しておき、鍵生成部350Eが、これを読み出して利用できるようにするのが好ましい。
このように、図23に示す符号データ生成装置300E′は、外部から与えられた鍵生成用データDkに基づいて固有の生成鍵Kgを生成し、この生成鍵Kgを用いて符号データFを暗号化し、暗号化符号データGを出力する機能を有している。したがって、同一の符号データ生成装置300E′を用いたとしても、鍵生成用データDkが異なれば、異なる鍵を用いた暗号化が行われることになる。これは、複数の業者に同一の符号データ生成装置300E′を利用させる場合に、相互間のセキュリティを確保する上で効果的である。
たとえば、この符号データ生成装置300E′を、汎用パソコンに専用のプログラムを組み込むことによって構成したものとしよう。ここでは、上例と同様に、業者X,Y,Zにこの符号データ生成装置300E′を利用させる場合を考えてみる。この場合、各業者には、全く同一のプログラム(コンピュータを符号データ生成装置300E′として機能させるためのプログラム)を提供し、汎用パソコンにインストールしてもらえばよい。そうすると、業者X,Y,Zは、全く同一の符号データ生成装置300E′を利用することになる。それでも、業者Xには、鍵生成用データDk(X)が格納されたICカード400Xを提供し、業者Yには、鍵生成用データDk(Y)が格納されたICカード400Yを提供し、業者Zには、鍵生成用データDk(Z)が格納されたICカード400Zを提供するようにすれば、三者相互間のセキュリティを確保することができる。
すなわち、上例の場合、業者Xが符号データ生成装置300E′を利用して暗号化符号データGを生成する際には、鍵生成用データDk(X)に基づいて生成された業者X専用の生成鍵Kg(X)を用いた暗号化が行われることになる。もちろん、業者X用の暗号処理装置120E(暗号処理サブルーチン)内の符号データ復号部126Eには、当該生成鍵Kg(X)を用いた復号が行われるようにしておく。このような運用を行えば、業者Y,Zに対しては、鍵生成用データDk(X)および生成鍵Kg(X)は秘密に保たれるので、三者相互間にセキュリティ上の問題は生じない。
なお、ここで説明した符号データ生成装置は、§5で述べたように、「暗号鍵K」を符号化して「符号化暗号鍵Q」を生成する処理を実行する場合にも利用可能である。たとえば、図21に示す符号データ生成装置300を用いて、「アルゴリズム指定子a」の代わりに「暗号鍵K」を入力すれば、「符号データF」の代わりに「符号化暗号鍵Q」が自動的に出力されることになる。
<<< §8. その他の変形例 >>>
これまで、本発明に係る情報処理装置(主装置および暗号処理装置)を6つの実施形態について説明し、更に、これらに利用可能な暗号処理用符号データ生成装置についての説明を行った。ここでは、最後に、その他の変形例をいくつか述べておく。
これまで、本発明に係る情報処理装置(主装置および暗号処理装置)を6つの実施形態について説明し、更に、これらに利用可能な暗号処理用符号データ生成装置についての説明を行った。ここでは、最後に、その他の変形例をいくつか述べておく。
(1) 暗号化処理と復号処理
既に述べたとおり、本願では、「暗号化処理」と「復号処理」とを包括して「暗号処理」と呼んでいる。したがって、各実施形態における暗号処理部124,124A,124B,124C,124D,124Eにおいて暗号鍵Kを用いて実行される「暗号処理」とは、平文データPとして与えられた元データDを暗号データCに変換する「暗号化処理」だけでなく、暗号データCとして与えられた元データDを平文データPに変換する「復号処理」も含むものである。したがって、暗号処理サブルーチンRは、暗号化処理サブルーチンR1であってもよいし、復号処理サブルーチンR2であってもよいし、これら両方を含むサブルーチンであってもよい。
既に述べたとおり、本願では、「暗号化処理」と「復号処理」とを包括して「暗号処理」と呼んでいる。したがって、各実施形態における暗号処理部124,124A,124B,124C,124D,124Eにおいて暗号鍵Kを用いて実行される「暗号処理」とは、平文データPとして与えられた元データDを暗号データCに変換する「暗号化処理」だけでなく、暗号データCとして与えられた元データDを平文データPに変換する「復号処理」も含むものである。したがって、暗号処理サブルーチンRは、暗号化処理サブルーチンR1であってもよいし、復号処理サブルーチンR2であってもよいし、これら両方を含むサブルーチンであってもよい。
(2) 各実施形態相互の組合わせ
§1〜§6では、それぞれ固有の特徴をもった第1〜第6の実施形態を個別に述べたが、これらの各実施形態は、相互に組み合わせて実行することができる。たとえば、複数の乱数テーブルを用いる第2の実施形態と、乱数テーブルに対するシフトを行う第4の実施形態と、を組み合わせて用いてもよい。この場合、主装置(メインプログラムM)から暗号処理装置(暗号処理サブルーチンR)に対しては、元データD、暗号鍵K、符号データF、テーブル指定子t、シフト指示子s、が引き渡されることになる。
§1〜§6では、それぞれ固有の特徴をもった第1〜第6の実施形態を個別に述べたが、これらの各実施形態は、相互に組み合わせて実行することができる。たとえば、複数の乱数テーブルを用いる第2の実施形態と、乱数テーブルに対するシフトを行う第4の実施形態と、を組み合わせて用いてもよい。この場合、主装置(メインプログラムM)から暗号処理装置(暗号処理サブルーチンR)に対しては、元データD、暗号鍵K、符号データF、テーブル指定子t、シフト指示子s、が引き渡されることになる。
もちろん、更に、第6の実施形態を組み合わせて、符号データFの代わりに暗号化符号データGを引き渡すことも可能である。要するに、これまで述べてきたいくつかの実施形態は、矛盾が生じない限り、相互に組み合わせて実施することが可能であり、主装置(メインプログラムM)から暗号処理装置(暗号処理サブルーチンR)に対しては、採用した実施形態に応じて、必要な情報を引き渡すようにすればよい。
なお、複数の乱数テーブルを用いる第2もしくは第3の実施形態と、乱数テーブルに対するシフトを行う第4の実施形態とを組み合わせる場合は、複数の乱数テーブルを跨いだシフトが行われるようにすることもできる。すなわち、複数の乱数テーブルを用いる場合、これら複数の乱数テーブルを一時的に結合することにより、結合テーブルを作成し、この結合テーブルに対して、たとえばローテーションシフトを行い、その後、個々の乱数テーブルに分離する処理を行えばよい。結合テーブルについて行われたシフト処理は、複数の乱数テーブルを跨いだシフト処理ということになり、耐タンパ性を更に向上させるメリットが得られる。
たとえば、図17には、8行8列に並べられた合計64個のセルからなる乱数テーブルTに対してローテーションシフトを行う例が示されている。これに対して、64個のセルからなる乱数テーブルを2組結合して結合テーブルを作成することにすれば、合計128個のセルからなる結合テーブル上でシフト処理が行われることになる。こうして、結合テーブル上のセル内の数値に対するシフトが完了したら、元どおり、64個のセルからなる2組の乱数テーブルに分離すればよい。
具体的には、第1の乱数テーブルTaを構成する64個のセルのセル番号を1〜64とし、第2の乱数テーブルTbを構成する64個のセルのセル番号を65〜128とすれば、セル番号1〜128が付された128個のセルからなる結合テーブルを一時的に作成し、当該結合テーブル上で、たとえば、図17に例示するようなローテーションシフトを行い、その後、64個のセルをもった2つの乱数テーブルに分離する処理を行えばよい。この場合、第1の乱数テーブルTaから押し出された数値は第2の乱数テーブルTbへ移動し、第2の乱数テーブルTbから押し出された数値は第1の乱数テーブルTaへ移動する。
たとえば、シフト前の第1の乱数テーブルTaに「1〜64」なる数値が収容され、シフト前の第2の乱数テーブルTbに「65〜128」なる数値が収容されている状態において、これら2つの乱数テーブルを跨いで、「+5」なるシフト指示子sに基づくローテーションシフトを行うと、シフト後の第1の乱数テーブルTa内の数値は「124,125,126,127,128,1,2,3,...,57,58,59」となり、シフト後の第2の乱数テーブルTa内の数値は「60,61,62,63,64,65,66,67,...,121,122,123」となる。2つの乱数テーブルを跨いだシフトが行われたため、耐タンパ性は更に向上する。
以上、2つの乱数テーブルTa,Tbを結合させて結合テーブルを作成する例を述べたが、もちろん、3つ以上の乱数テーブルを結合させてもかまわない。要するに、乱数テーブル格納部に複数K通りの乱数テーブルが格納されている場合、データ入力部が、元データ、暗号鍵、符号データとともに、特定の乱数テーブルを指定するテーブル指定子と、複数の乱数テーブルを跨いでシフトさせる規則を示すシフト指示子と、を外部から入力するようにし、符号変換部が、このシフト指示子によって示される規則に基づいて、複数の乱数テーブルを跨いだシフト処理を行い、当該シフト処理後に、テーブル指定子で指定された乱数テーブルを参照することにより変換処理を行うようにすればよい。
(3) 方法発明としての把握
本発明は、暗号処理装置として把握することもできるし、当該暗号処理装置に主装置を加えて構成される情報処理装置として把握することもできるし、更に、当該暗号処理装置に引き渡す符号データFもしくは暗号化符号データGを生成するための暗号処理用符号データ生成装置として把握することもできる。これまでの説明は、このように、本発明を様々な装置発明として捉えたものである。一方、本発明は、暗号処理方法という方法発明として捉えることも可能である。
本発明は、暗号処理装置として把握することもできるし、当該暗号処理装置に主装置を加えて構成される情報処理装置として把握することもできるし、更に、当該暗号処理装置に引き渡す符号データFもしくは暗号化符号データGを生成するための暗号処理用符号データ生成装置として把握することもできる。これまでの説明は、このように、本発明を様々な装置発明として捉えたものである。一方、本発明は、暗号処理方法という方法発明として捉えることも可能である。
方法発明として捉えると、本発明は、メインプログラムMと暗号処理サブルーチンプログラムRとが組み込まれたコンピュータが、暗号化もしくは復号のための暗号処理を行う暗号処理方法ということになり、当該方法は、次の3つの処理段階から構成されることになる。
まず、第1の処理段階は、コンピュータが、メインプログラムMを実行することにより、暗号処理の対象となる元データDと、暗号処理に必要な暗号鍵Kと、暗号処理に用いる暗号アルゴリズムを指定するための符号データFと、を暗号処理サブルーチンプログラムRに引き渡す前処理段階である。
続く、第2の処理段階は、コンピュータが、暗号処理サブルーチンプログラムRを実行することにより、それぞれ固有のセル番号が付与された複数M個のセルに、ランダムにN通り(M≧N)の数値が収容された乱数テーブルTを参照して、符号データFを構成する数値を、当該数値をセル番号とするセルに収容されている数値に置き換える変換処理を行い、当該変換処理を経て得られるアルゴリズム指定子aによって指定された暗号アルゴリズムに基づいて、元データDに対して暗号処理を実施し、処理済データEをメインプログラムに引き渡す暗号処理段階である。
そして、第3の処理段階は、コンピュータが、メインプログラムMを実行することにより、処理済みデータEを用いて所定の処理を続行する後処理段階である。
より具体的には、前処理段階では、0〜(M−1)の範囲の値をもった整数により構成される符号データFを暗号処理サブルーチンプログラムRに引き渡す処理を行い、暗号処理段階では、0〜(M−1)の範囲の連続したセル番号が付与された複数M個のセルに、0〜(N−1)の範囲の連続するN通りの整数をランダムに収容した乱数テーブルTを用い、符号データFを、0〜(N−1)の範囲の値をもった整数により構成されるアルゴリズム指定子aに置き換える変換処理を行うようにすればよい。
また、上述した第6の実施形態を採用する場合は、前処理段階で、符号データFの代わりに、当該符号データFに対して所定の方法で暗号化を行って生成された暗号化符号データGを暗号処理サブルーチンプログラムRに引き渡す処理を行い、暗号処理段階では、この暗号化符号データGを復号して得られる元の符号データFをアルゴリズム指定子aに変換する変換処理を行うようにすればよい。
100,100A,100B,100C,100D,100E:情報処理装置
110,110A,110B,110C,110D,110E:主装置(メインプログラム)
111,111A,111B,111C,111D,111E:情報処理部
112,112A,112B,112C,112D,112E:暗号処理依頼部
113,113A,113B,113C,113D,113E:暗号処理結果受信部
120,120A,120B,120C,120D,120E:暗号処理装置(暗号処理サブルーチン)
121,121A,121B,121C,121D,121E:データ入力部
122,122A,122B,122C,122D,122E:符号変換部
123,123A,123B,123C,123D,123E:乱数テーブル格納部
124,124A,124B,124C,124D,124E:暗号処理部
125,125A,125B,125C,125D,125E:データ出力部
126E:符号データ復号部
300,300E,300E´:符号データ生成装置
310,310E:アルゴリズム指定子入力部
320,320E:符号データ生成部
330,330E:乱数テーブル記憶部
340E:暗号化データ生成部
350E:鍵生成部
400:ICカード
A,A0〜A(N−1):暗号アルゴリズム
a:アルゴリズム指定子
C:暗号データ
D:元データ
Dk:鍵生成用データ
d:シフト量
E:処理済データ
F:符号データ
f1〜f3:符号データFを構成する個々の単位データ
G:暗号化符号データ
K:暗号鍵
Kg:生成鍵
M:メインプログラム
P:平文データ
P1〜P3:テーブル指定パターン
p:パターン選択子
Q:符号化暗号鍵
R:暗号処理サブルーチン
R1:暗号化処理サブルーチン
R2:復号処理サブルーチン
s:シフト指示子
T,T0〜T15:乱数テーブル
t,t1,t2:テーブル指定子
V1〜VH:秘密鍵
W1〜WH:公開鍵
w:復号鍵指定子
X,Y,Z:アプリケーションプログラム(メインプログラムM)の提供業者
x,y:処理実行ルート
110,110A,110B,110C,110D,110E:主装置(メインプログラム)
111,111A,111B,111C,111D,111E:情報処理部
112,112A,112B,112C,112D,112E:暗号処理依頼部
113,113A,113B,113C,113D,113E:暗号処理結果受信部
120,120A,120B,120C,120D,120E:暗号処理装置(暗号処理サブルーチン)
121,121A,121B,121C,121D,121E:データ入力部
122,122A,122B,122C,122D,122E:符号変換部
123,123A,123B,123C,123D,123E:乱数テーブル格納部
124,124A,124B,124C,124D,124E:暗号処理部
125,125A,125B,125C,125D,125E:データ出力部
126E:符号データ復号部
300,300E,300E´:符号データ生成装置
310,310E:アルゴリズム指定子入力部
320,320E:符号データ生成部
330,330E:乱数テーブル記憶部
340E:暗号化データ生成部
350E:鍵生成部
400:ICカード
A,A0〜A(N−1):暗号アルゴリズム
a:アルゴリズム指定子
C:暗号データ
D:元データ
Dk:鍵生成用データ
d:シフト量
E:処理済データ
F:符号データ
f1〜f3:符号データFを構成する個々の単位データ
G:暗号化符号データ
K:暗号鍵
Kg:生成鍵
M:メインプログラム
P:平文データ
P1〜P3:テーブル指定パターン
p:パターン選択子
Q:符号化暗号鍵
R:暗号処理サブルーチン
R1:暗号化処理サブルーチン
R2:復号処理サブルーチン
s:シフト指示子
T,T0〜T15:乱数テーブル
t,t1,t2:テーブル指定子
V1〜VH:秘密鍵
W1〜WH:公開鍵
w:復号鍵指定子
X,Y,Z:アプリケーションプログラム(メインプログラムM)の提供業者
x,y:処理実行ルート
Claims (27)
- 入力した元データに対して暗号化もしくは復号のための暗号処理を行い、処理済データを出力する暗号処理装置であって、
暗号処理の対象となる元データと、暗号処理に必要な暗号鍵と、暗号処理に用いる暗号アルゴリズムを指定するための符号データと、を外部から入力するデータ入力部と、
前記データ入力部が入力した暗号鍵を用いた所定の暗号アルゴリズムに基づいて、前記データ入力部が入力した元データに対して暗号処理を実施し、処理済データを生成する暗号処理部と、
生成された前記処理済データを外部に出力するデータ出力部と、
それぞれ固有のセル番号が付与された複数M個のセルに、ランダムにN通り(M≧N)の数値を収容した乱数テーブルを格納する乱数テーブル格納部と、
前記乱数テーブルを参照することにより、前記データ入力部が入力した符号データを構成する数値を、当該数値をセル番号とするセルに収容されている数値に置き換える変換処理を行い、当該変換処理を経て得られるデータをアルゴリズム指定子として前記暗号処理部に与える符号変換部と、
を備え、
前記暗号処理部が、複数通りの暗号アルゴリズムのうち、前記アルゴリズム指定子によって指定された暗号アルゴリズムを用いて暗号処理を実施することを特徴とする暗号処理装置。 - 請求項1に記載の暗号処理装置において、
暗号処理部が、全N通りの暗号アルゴリズムの中から指定された暗号アルゴリズムを用いて暗号処理を実施する機能を有し、
アルゴリズム指定子が、0〜(N−1)の範囲の値をもった整数により、前記N通りの暗号アルゴリズムのうちの1つを指定し、
乱数テーブル格納部が、0〜(M−1)の範囲の連続したセル番号が付与された複数M個のセルに、0〜(N−1)の範囲の連続するN通りの整数を重複を許してランダムに収容した乱数テーブルを格納しており、
符号変換部が、0〜(M−1)の範囲の値をもった整数によって構成された符号データを、0〜(N−1)の範囲の値をもった整数によって構成されるアルゴリズム指定子に置き換える変換処理を行うことを特徴とする暗号処理装置。 - 請求項2に記載の暗号処理装置において、
M=Nに設定し、
乱数テーブル格納部が、N個のセルにN通りの整数をそれぞれ1個ずつ収容した乱数テーブルを格納していることを特徴とする暗号処理装置。 - 請求項2に記載の暗号処理装置において、
M>Nに設定し、
乱数テーブル格納部が、M個のセルにN通りの整数がそれぞれ少なくとも1個ずつ収容され、一部のセルには他のセルと同一の整数が重複して収容されている乱数テーブルを格納していることを特徴とする暗号処理装置。 - 請求項1〜4のいずれかに記載の暗号処理装置において、
乱数テーブル格納部が、複数K通りの乱数テーブルを格納しており、
データ入力部が、元データ、暗号鍵、符号データとともに、特定の乱数テーブルを指定するテーブル指定子を外部から入力し、
符号変換部が、前記テーブル指定子で指定された乱数テーブルを参照することにより変換処理を行うことを特徴とする暗号処理装置。 - 請求項5に記載の暗号処理装置において、
データ入力部が、元データと、暗号鍵と、単位データを複数L個羅列することにより構成される符号データと、この符号データを構成する個々の単位データごとに、もしくは、複数の単位データからなる個々の単位データ群ごとに、それぞれ特定の乱数テーブルを指定する固有のテーブル指定子と、を外部から入力し、
符号変換部が、符号データを構成する個々の単位データごとに、もしくは、複数の単位データからなる個々の単位データ群ごとに、それぞれ固有のテーブル指定子で指定された乱数テーブルを参照することにより変換処理を行うことを特徴とする暗号処理装置。 - 請求項1〜4のいずれかに記載の暗号処理装置において、
乱数テーブル格納部が、複数K通りの乱数テーブルを格納しており、
符号変換部が、前記K通りの乱数テーブルを所定の規則で順次指定するテーブル指定パターンを複数通り記憶しており、
データ入力部が、元データと、暗号鍵と、単位データを複数L個羅列することにより構成される符号データと、特定のテーブル指定パターンを選択するパターン選択子と、を外部から入力し、
符号変換部が、前記パターン選択子によって選択されたテーブル指定パターンに基づいて、符号データを構成する個々の単位データごとに乱数テーブルを指定し、指定された乱数テーブルを参照することにより変換処理を行うことを特徴とする暗号処理装置。 - 請求項1〜7のいずれかに記載の暗号処理装置において、
データ入力部が、元データ、暗号鍵、符号データとともに、乱数テーブルの各セル内の数値をシフトさせる規則を示すシフト指示子を外部から入力し、
符号変換部が、乱数テーブル内の各数値を前記シフト指示子によって示される規則に基づいてシフトさせ、シフト後の数値を用いて変換処理を行うことを特徴とする暗号処理装置。 - 請求項8に記載の暗号処理装置において、
データ入力部が、正もしくは負のいずれかのシフト方向とシフト量dとを示すシフト指示子を入力し、
符号変換部が、前記シフト方向が正の場合には、乱数テーブルの第i番目のセル番号をもつセル内の数値を第(i+d)番目のセル番号をもつセルにシフトさせ、前記シフト方向が負の場合には、乱数テーブルの第i番目のセル番号をもつセル内の数値を第(i−d)番目のセル番号をもつセルにシフトさせるシフト処理(但し、シフト後のセルが、セル番号の範囲から外れる場合には、シフト後のセル番号にセルの総数Mを加算もしくは減算してセル番号の範囲内となるようにする処理)を行うことを特徴とする暗号処理装置。 - 請求項8に記載の暗号処理装置において、
乱数テーブル格納部が、複数K通りの乱数テーブルを格納しており、
データ入力部が、元データ、暗号鍵、符号データとともに、特定の乱数テーブルを指定するテーブル指定子と、複数の乱数テーブルを跨いでシフトさせる規則を示すシフト指示子と、を外部から入力し、
符号変換部が、前記シフト指示子によって示される規則に基づくシフト処理を行い、当該シフト処理後に、前記テーブル指定子で指定された乱数テーブルを参照することにより変換処理を行うことを特徴とする暗号処理装置。 - 請求項1〜10のいずれかに記載の暗号処理装置において、
データ入力部が、暗号鍵を、乱数テーブルを用いて符号化された符号化暗号鍵の形式で入力し、
符号変換部が、乱数テーブルを参照することにより符号データをアルゴリズム指定子に変換する処理を行うとともに、乱数テーブルを参照することにより前記符号化暗号鍵を暗号鍵に変換する処理を行い、これらの変換処理を経て得られるアルゴリズム指定子および暗号鍵を暗号処理部に与えることを特徴とする暗号処理装置。 - 請求項1〜11のいずれかに記載の暗号処理装置において、
所定の方法で暗号化された暗号化符号データを復号して、元の符号データを得る符号データ復号部を更に備え、
データ入力部が、前記暗号化符号データを外部から入力し、
前記符号データ復号部が、前記データ入力部が入力した暗号化符号データを復号し、復号された符号データを符号変換部に与え、
符号変換部が、前記復号された符号データをアルゴリズム指定子に変換する変換処理を行うことを特徴とする暗号処理装置。 - 請求項12に記載の暗号処理装置において、
符号データ復号部が複数H通りの復号鍵を記憶しており、
データ入力部が、前記複数H通りの復号鍵のうちの第i番目の復号鍵を用いて復号が可能な状態で暗号化された暗号化符号データと、前記第i番目の復号鍵を指定する復号鍵指定子と、を外部から入力し、
符号データ復号部が、前記復号鍵指定子で指定された復号鍵を用いた復号を行うことを特徴とする暗号処理装置。 - 請求項13に記載の暗号処理装置において、
符号データ復号部が、公開鍵暗号方式に利用可能な公開鍵および秘密鍵を構成する複数H組の鍵ペアーのそれぞれについて、公開鍵および秘密鍵のうちの一方の鍵を記憶しており、
データ入力部が、前記H組の鍵ペアーのうちの第i番目の鍵ペアーについての他方の鍵を用いて暗号化された暗号化符号データと、前記第i番目の鍵ペアーを指定する復号鍵指定子と、を外部から入力し、
符号データ復号部が、前記復号鍵指定子で指定された鍵ペアーについての前記一方の鍵を復号鍵として用いた復号を行うことを特徴とする暗号処理装置。 - 請求項1〜11のいずれかに記載の暗号処理装置と、この暗号処理装置に暗号処理を依頼する主装置と、を備える情報処理装置であって、
前記主装置は、
所定の情報処理を実行する情報処理部と、
前記情報処理部から引き渡された元データと、予め記憶されていたもしくは外部から受け取った暗号鍵もしくは符号化暗号鍵と、予め記憶されていたもしくは外部から受け取った符号データと、必要に応じて、更に、テーブル指定子、パターン選択子、シフト指示子の群の中から選択された1つもしくは複数の項目とを、前記暗号処理装置のデータ入力部に与える暗号処理依頼部と、
前記暗号処理装置のデータ出力部から出力された処理済データを受け取り、前記情報処理部に引き渡す暗号処理結果受信部と、
を備えることを特徴とする情報処理装置。 - 請求項12または13に記載の暗号処理装置と、この暗号処理装置に暗号処理を依頼する主装置と、を備える情報処理装置であって、
前記主装置は、
所定の情報処理を実行する情報処理部と、
前記情報処理部から引き渡された元データと、予め記憶されていたもしくは外部から受け取った暗号鍵もしくは符号化暗号鍵と、予め記憶されていたもしくは外部から受け取った暗号化符号データと、必要に応じて、更に、テーブル指定子、パターン選択子、シフト指示子の群の中から選択された1つもしくは複数の項目とを、前記暗号処理装置のデータ入力部に与える暗号処理依頼部と、
前記暗号処理装置のデータ出力部から出力された処理済データを受け取り、前記情報処理部に引き渡す暗号処理結果受信部と、
を備えることを特徴とする情報処理装置。 - 請求項14に記載の暗号処理装置と、この暗号処理装置に暗号処理を依頼する主装置と、を備える情報処理装置であって、
前記主装置は、
所定の情報処理を実行する情報処理部と、
前記情報処理部から引き渡された元データと、予め記憶されていたもしくは外部から受け取った暗号鍵もしくは符号化暗号鍵と、予め記憶されていたもしくは外部から受け取った暗号化符号データと、復号鍵指定子と、必要に応じて、更に、テーブル指定子、パターン選択子、シフト指示子の群の中から選択された1つもしくは複数の項目とを、前記暗号処理装置のデータ入力部に与える暗号処理依頼部と、
前記暗号処理装置のデータ出力部から出力された処理済データを受け取り、前記情報処理部に引き渡す暗号処理結果受信部と、
を備え、
前記復号鍵指定子は、暗号処理装置の符号データ復号部に記憶されている「H組の鍵ペアーについての復号鍵として用いる一方の鍵」の第i番目を指定する情報であり、
前記暗号化符号データは、所定の符号データに対して、前記第i番目の一方の鍵に対応する他方の鍵を用いて暗号化を行って得られるデータであることを特徴とする情報処理装置。 - 請求項1〜11のいずれかに記載の暗号処理装置に与える符号データを生成する符号データ生成装置であって、
暗号処理装置内の乱数テーブル格納部に格納されている乱数テーブルと同一の乱数テーブルを記憶した乱数テーブル記憶部と、
暗号処理装置内の暗号処理部による暗号処理に用いる暗号アルゴリズムを指定するアルゴリズム指定子を入力するアルゴリズム指定子入力部と、
前記乱数テーブル記憶部に記憶されている乱数テーブルを用いて、暗号処理装置内の符号変換部によって行われる変換処理とは逆の変換処理を行い、前記アルゴリズム指定子入力部が入力したアルゴリズム指定子に対応する符号データを生成する符号データ生成部と、
を備えることを特徴とする暗号処理用符号データ生成装置。 - 請求項12または13に記載の暗号処理装置に与える暗号化符号データを生成する符号データ生成装置であって、
暗号処理装置内の乱数テーブル格納部に格納されている乱数テーブルと同一の乱数テーブルを記憶した乱数テーブル記憶部と、
暗号処理装置内の暗号処理部による暗号処理に用いる暗号アルゴリズムを指定するアルゴリズム指定子を入力するアルゴリズム指定子入力部と、
前記乱数テーブル記憶部に記憶されている乱数テーブルを用いて、暗号処理装置内の符号変換部によって行われる変換処理とは逆の変換処理を行い、前記アルゴリズム指定子入力部が入力したアルゴリズム指定子に対応する符号データを生成する符号データ生成部と、
前記符号データ生成部によって生成された符号データに対して、暗号処理装置内の符号データ復号部によって復号可能な方法で暗号化を行って暗号化符号データを生成する暗号化符号データ生成部と、
を備えることを特徴とする暗号処理用符号データ生成装置。 - 請求項14に記載の暗号処理装置に与える暗号化符号データを生成する符号データ生成装置であって、
暗号処理装置内の乱数テーブル格納部に格納されている乱数テーブルと同一の乱数テーブルを記憶した乱数テーブル記憶部と、
暗号処理装置内の暗号処理部による暗号処理に用いる暗号アルゴリズムを指定するアルゴリズム指定子を入力するアルゴリズム指定子入力部と、
前記乱数テーブル記憶部に記憶されている乱数テーブルを用いて、暗号処理装置内の符号変換部によって行われる変換処理とは逆の変換処理を行い、前記アルゴリズム指定子入力部が入力したアルゴリズム指定子に対応する符号データを生成する符号データ生成部と、
暗号処理装置内の符号データ復号部に記憶されている「H組の鍵ペアーのうち一方の鍵」にそれぞれ対応する「H組の鍵ペアーのうちの他方の鍵」を記憶しており、前記符号データ生成部によって生成された符号データに対して、前記「H組の鍵ペアーのうちの他方の鍵」の中の任意の第i番目の鍵を用いて暗号化を行って暗号化符号データを生成する暗号化符号データ生成部と、
を備えることを特徴とする暗号処理用符号データ生成装置。 - 請求項1〜14のいずれかに記載の暗号処理装置としてコンピュータを機能させるためのプログラム。
- 請求項15〜17のいずれかに記載の情報処理装置としてコンピュータを機能させるためのプログラム。
- 請求項22に記載のプログラムにおいて、主装置としてコンピュータを機能させるためのメインプログラムと、暗号処理装置としてコンピュータを機能させるための暗号処理サブルーチンプログラムと、を含み、前記メインプログラムは、高級言語もしくは中間言語によって記述されており、前記暗号処理サブルーチンプログラムは、マシン語によって記述されていることを特徴とするプログラム。
- 請求項18〜20のいずれかに記載の暗号処理用符号データ生成装置としてコンピュータを機能させるためのプログラム。
- メインプログラムと暗号処理サブルーチンプログラムとが組み込まれたコンピュータが、暗号化もしくは復号のための暗号処理を行う暗号処理方法であって、
コンピュータが、前記メインプログラムを実行することにより、暗号処理の対象となる元データと、暗号処理に必要な暗号鍵と、暗号処理に用いる暗号アルゴリズムを指定するための符号データと、を前記暗号処理サブルーチンプログラムに引き渡す前処理段階と、
コンピュータが、前記暗号処理サブルーチンプログラムを実行することにより、それぞれ固有のセル番号が付与された複数M個のセルに、ランダムにN通り(M≧N)の数値が収容された乱数テーブルを参照して、前記符号データを構成する数値を、当該数値をセル番号とするセルに収容されている数値に置き換える変換処理を行い、当該変換処理を経て得られるアルゴリズム指定子によって指定された暗号アルゴリズムに基づいて、前記元データに対して暗号処理を実施し、処理済データを前記メインプログラムに引き渡す暗号処理段階と、
コンピュータが、前記メインプログラムを実行することにより、前記処理済みデータを用いて所定の処理を続行する後処理段階と、
を有することを特徴とする暗号処理方法。 - 請求項25に記載の暗号処理方法において、
前処理段階で、0〜(M−1)の範囲の値をもった整数により構成される符号データを暗号処理サブルーチンプログラムに引き渡す処理を行い、
暗号処理段階で、0〜(M−1)の範囲の連続したセル番号が付与された複数M個のセルに、0〜(N−1)の範囲の連続するN通りの整数をランダムに収容した乱数テーブルを用い、前記符号データを、0〜(N−1)の範囲の値をもった整数により構成されるアルゴリズム指定子に置き換える変換処理を行うことを特徴とする暗号処理方法。 - 請求項25または26に記載の暗号処理方法において、
前処理段階で、符号データの代わりに、当該符号データに対して所定の方法で暗号化を行って生成された暗号化符号データを暗号処理サブルーチンプログラムに引き渡す処理を行い、
暗号処理段階で、前記暗号化符号データを復号して得られる元の符号データをアルゴリズム指定子に変換する変換処理を行うことを特徴とする暗号処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013128791A JP6089998B2 (ja) | 2013-06-19 | 2013-06-19 | 暗号処理装置および情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013128791A JP6089998B2 (ja) | 2013-06-19 | 2013-06-19 | 暗号処理装置および情報処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015004743A JP2015004743A (ja) | 2015-01-08 |
JP6089998B2 true JP6089998B2 (ja) | 2017-03-08 |
Family
ID=52300712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013128791A Active JP6089998B2 (ja) | 2013-06-19 | 2013-06-19 | 暗号処理装置および情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6089998B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2581287A (en) * | 2017-10-31 | 2020-08-12 | Mitsubishi Heavy Ind Mach Systems Ltd | Information relay device, information relay method, and program |
CN112241516B (zh) * | 2019-07-16 | 2023-11-10 | 福建省天奕网络科技有限公司 | 项目开发过程的源码保护方法、存储介质 |
CN114915471B (zh) * | 2022-05-17 | 2023-11-24 | 深圳市西城微科电子有限公司 | 一种基于动态查表的串口加密传输方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2689383B2 (ja) * | 1988-02-18 | 1997-12-10 | 株式会社 日立製作所 | 暗号化通信システム |
JPH1024956A (ja) * | 1996-07-09 | 1998-01-27 | Oohashi Tekunika:Kk | 管端へのキャップ取付装置及び管端キャップ装置 |
JP5691586B2 (ja) * | 2010-09-28 | 2015-04-01 | 沖電気工業株式会社 | 秘話通信システム、装置及びプログラム |
-
2013
- 2013-06-19 JP JP2013128791A patent/JP6089998B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2015004743A (ja) | 2015-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI750223B (zh) | 區塊鏈加密射頻晶片存儲設計方法 | |
CN100576196C (zh) | 内容加密方法、系统和利用该加密方法通过网络提供内容的方法 | |
CN103250163B (zh) | 用于加密和解密虚拟盘的计算机可读存储介质 | |
CN104025104B (zh) | 具有密钥驱动的混淆的虚拟机设备和方法 | |
US20060177065A1 (en) | System and methods for encrypting data utilizing one-time pad key | |
US6845159B1 (en) | Processing method and apparatus for converting information from a first format into a second format | |
JP2008061197A (ja) | 暗号化装置、復号装置、情報システム、暗号化方法、復号方法及びプログラム | |
US20090077388A1 (en) | Information processing apparatus and computer readable medium | |
CN103853943B (zh) | 程序保护方法及装置 | |
CN106131049A (zh) | 一种数据传输加解密的方法 | |
US8438112B2 (en) | Host device, portable storage device, and method for updating meta information regarding right objects stored in portable storage device | |
JP6089998B2 (ja) | 暗号処理装置および情報処理装置 | |
CN100561396C (zh) | 修改数字权限对象的方法及其所用的电子设备 | |
CN100367144C (zh) | 用于加密的应用程序安装的结构 | |
WO2021005748A1 (ja) | 暗号システム、鍵生成装置、暗号化装置、復号装置、方法及びプログラム | |
JP4582619B2 (ja) | 暗号化もしくは復号化処理用のicカードならびにこれを用いた暗号通信システムおよび暗号通信方法 | |
CN110113151A (zh) | 一种对elf格式程序的非侵入式实时加解密方法 | |
JP2001101055A (ja) | データベース管理装置、データベースシステム、暗号化装置及び記録媒体 | |
JPH08286904A (ja) | ソフトウエア暗号化・復号化方法、ソフトウエア暗号化システムおよびソフトウエア復号化システム | |
WO2014109059A1 (ja) | データの暗号化記憶システム及び方法 | |
JP6094255B2 (ja) | 暗号処理装置および情報処理装置 | |
JP2005094790A (ja) | ソフトウェアの保護機能付き情報処理装置およびソフトウェアの保護機能付き情報処理方法 | |
JP7046424B2 (ja) | ホワイトボックス暗号を利用したデータの暗号化/復号化方法及び装置 | |
JP5530025B2 (ja) | データ分割装置およびデータ分割プログラム | |
JP2005039864A (ja) | ソフトウェアの保護機能付き情報処理装置およびソフトウェアの保護機能付き情報処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160425 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20170110 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170123 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6089998 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |