JP2004172855A - 暗号処理装置 - Google Patents
暗号処理装置 Download PDFInfo
- Publication number
- JP2004172855A JP2004172855A JP2002335197A JP2002335197A JP2004172855A JP 2004172855 A JP2004172855 A JP 2004172855A JP 2002335197 A JP2002335197 A JP 2002335197A JP 2002335197 A JP2002335197 A JP 2002335197A JP 2004172855 A JP2004172855 A JP 2004172855A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- way function
- execution
- common key
- cryptographic
- 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.)
- Withdrawn
Links
Images
Abstract
【課題】暗号処理装置の回路規模を小型化し、コストを低下させること。
【解決手段】暗号処理装置1は、KPS方式による暗号処理において、暗号化を行うプロセッサ30によって、共通鍵を算出するための行列演算(実行IDと秘密アルゴリズムとの乗算)を行い、行列演算回路および行列演算のための入出力機能を省略することとしている。したがって、実行IDと秘密アルゴリズムとの乗算を行う回路を備える必要がないことから、回路規模を小型化することができ、低コスト化を実現することができる。
【選択図】 図1
【解決手段】暗号処理装置1は、KPS方式による暗号処理において、暗号化を行うプロセッサ30によって、共通鍵を算出するための行列演算(実行IDと秘密アルゴリズムとの乗算)を行い、行列演算回路および行列演算のための入出力機能を省略することとしている。したがって、実行IDと秘密アルゴリズムとの乗算を行う回路を備える必要がないことから、回路規模を小型化することができ、低コスト化を実現することができる。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、平文とその暗号文とを相互に変換する暗号処理装置に関する。
【0002】
【従来の技術】
従来、KPS(Key Predistribution System)方式による暗号鍵配送が利用されている。
図4は、KPS方式による暗号通信の概念を示す図である。
KPS方式においては、情報の送信に当たり、送信側および受信側にKPSセンターから秘密アルゴリズムがそれぞれ発行される。
【0003】
そして、送信側において、受信者の公開IDを一方向性関数によって処理した実行IDと、秘密アルゴリズムとを行列演算し、一方向性関数によって処理した結果を共通鍵として暗号化を行う。
より詳細には、送信側において、所定の乱数を発生させ、これをワーク鍵として平文を暗号化し、ワーク鍵である乱数を共通鍵によって暗号化する。
【0004】
そして、平文からの暗号文と、暗号化されたワーク鍵とを受信側に送信する。
受信側においては、送信者の公開IDを一方向性関数によって処理した実行IDと、秘密アルゴリズムとを行列演算し、一方向性関数によって処理した結果を共通鍵として復号化を行う。
より詳細には、受信側において、共通鍵によって、暗号化されたワーク鍵を復号化し、そのワーク鍵によって暗号文を平文に復号化する。
【0005】
ここで、KPS方式においては、一方向性関数として、所定の暗号化アルゴリズムを用い、また、平文の暗号化には、それとは異なる暗号化アルゴリズムを用いている。
したがって、KPS方式を実現するハードウェアにおいては、異なる暗号化アルゴリズムのための回路が必要となり、IC(Integrated Circuit)化する際には、回路規模が大きくなり、コストが増大すると言う問題があった。
【0006】
そこで、特開2000−286830号公報に記載された技術は、一方向性関数として用いるアルゴリズムと、平文の暗号化に用いるアルゴリズムとを共通のものとし、回路の小規模化や低コスト化を実現するものとしている。
【0007】
【特許文献1】
特開2000−286830号公報
【0008】
【発明が解決しようとする課題】
しかしながら、特開2000−286830号公報に記載された技術においては、一方向性関数と、平文の暗号化に用いるアルゴリズムとを共通化しているものの、共通鍵を算出する処理は、従来と同様に行っていることから、実行IDと秘密アルゴリズムとを行列演算する回路を別途設ける必要があった。
【0009】
このとき、実行IDと秘密アルゴリズムとを行列演算する回路を設けることにより、IC化を実現する上で、回路規模の小型化、低コスト化を妨げる要因となる場合があった。
本発明の課題は、暗号処理装置の回路規模を小型化し、コストを低下させることである。
【0010】
【課題を解決するための手段】
以上の課題を解決するため、請求項1記載の発明は、
暗号化された情報の送受信において、送信側および受信側が通信相手の識別情報(例えば、公開ID)を互いに取得しておき、送信側において、受信側の識別情報を第1の一方向性関数によって処理した第1の実行IDと送信側の秘密アルゴリズムとに対し、行列演算および第2の一方向性関数による処理を含む演算を施して共通鍵を生成し、所定の暗号化アルゴリズム(例えば、DES方式等)に基づいて、該共通鍵によって暗号化された情報を受信側に送信し、受信側において、送信側の識別情報を前記第1の一方向性関数によって処理した第2の実行IDと受信側の秘密アルゴリズムとに対し、行列演算および前記第2の一方向性関数による処理を含む演算を施して共通鍵を生成し、前記暗号化アルゴリズムに基づいて、前記暗号化された情報を該共通鍵によって復号化する暗号化処理方法に係る暗号処理装置であって、前記共通鍵によって暗号化する処理あるいは前記暗号化された情報を前記共通鍵によって復号化する処理を実行する暗号プロセッサ(例えば、図1のプロセッサ30)を含み、該暗号プロセッサは、送信側において前記第1の実行IDと送信側の秘密アルゴリズムとを行列演算する処理あるいは受信側において前記第2の実行IDと受信側の秘密アルゴリズムとを行列演算する処理を実行することを特徴としている。
【0011】
請求項2記載の発明は、
請求項1記載の暗号処理装置であって、
前記第1の一方向性関数あるいは前記第2の一方向性関数の少なくともいずれかとして暗号化アルゴリズムを用い、前記暗号プロセッサは、前記第1の一方向性関数あるいは前記第2の一方向性関数による処理を実行することを特徴としている。
【0012】
請求項3記載の発明は、
請求項1または2記載の暗号処理装置であって、
前記秘密アルゴリズムを暗号化して記憶し、前記第1の実行IDあるいは前記第2の実行IDと行列演算する際に、前記暗号プロセッサが前記秘密アルゴリズムを復号化して使用可能であることを特徴としている。
【0013】
請求項4記載の発明は、
請求項1〜3のいずれかに記載の暗号処理装置であって、
前記暗号プロセッサがデータを読み出す領域(例えば、図1のROM20)およびデータを書き込む領域(例えば、図1のRAM40)には所定のアドレスが割り当てられ、前記暗号プロセッサに対する命令がコード化され、前記暗号プロセッサに、所定命令を示すコードと、データの読み出し先および書き込み先に関する情報とを入力することにより、前記暗号プロセッサがデータの読み込み先および書き込み先にアクセスし、前記所定命令を実行可能であることを特徴としている。
【0014】
即ち、暗号プロセッサが、DMAC(Direct Memory Access Controller)回路とプログラムによりデータの入出力を管理したり、プログラムによってレジスタへのアクセスを行うことによりデータの入出力を管理したりすることなく、データの入出力を直接管理することにより、所定命令を実行可能である。
本発明によれば、KPS方式による暗号処理において、暗号化を行う暗号プロセッサによって、共通鍵を算出するための行列演算(実行IDと秘密アルゴリズムとの乗算)を行い、従来、暗号化あるいは復号化を行う部分とは別に備えられていた共通鍵を算出するための行列演算回路を暗号化プロセッサによって実現すると共に、暗号化プロセッサによって共通鍵を算出するために、データの入出力を簡略な方法(暗号化プロセッサに、実行される機能名、ソースアドレス、ディスティネーションアドレス等を与えることにより入出力を行う方法)により実現することとしている。
【0015】
したがって、実行IDと秘密アルゴリズムとの行列演算を行う回路を別途備える必要がないことから、回路規模を小型化することができ、低コスト化を実現することができる。
また、本発明によれば、秘密アルゴリズムを記憶しておくに当たり、秘密アルゴリズムのビット列を所定順序で入れ替えた状態で記憶している。
【0016】
したがって、暗号プロセッサが秘密アルゴリズムを読み出す際の信号をトレースされることにより、秘密アルゴリズムが盗用されることを防ぐことができる。
【0017】
【発明の実施の形態】
以下、図を参照して本発明に係る暗号処理装置の実施の形態を詳細に説明する。
図1は、本発明を適用した暗号処理装置1の機能構成を示すブロック図である。なお、暗号処理装置1は、KPS方式による暗号処理を行う装置である。
【0018】
図1において、暗号処理装置1は、乱数発生器10と、ROM(Read Only Memory)20と、プロセッサ30と、RAM(Random Access Memory)40とを含んで構成される。
乱数発生器10は、平文を暗号化する際のワーク鍵となる所定の乱数を発生させ、発生した乱数をプロセッサ30に出力する。
【0019】
ROM20は、外付けされたROMであり、KPS方式における秘密アルゴリズム(Private ID)を記憶している。
ここで、安全性を高めるため、ROM20には、スクランブルIDに基づいて秘密アルゴリズムのビット列が入れ替えられた状態で記憶されている。具体的には、秘密アルゴリズムは、スクランブルIDによってビット列の入れ替えが施されている。さらに、スクランブルIDは、スクランブルキーによってシングルDES(Data Encryption Standard)またはトリプルDESで暗号化されている。
【0020】
そして、ROM20には、ビット列が入れ替えられた秘密アルゴリズム(Encrypt Private ID)と、シングルDESまたはトリプルDESの共通鍵として使用されるスクランブルキー(FScramble Key)と、シングルDESまたはトリプルDESによって暗号化されたスクランブルID(Encrypt Scramble ID)とが併せて記憶されている。
【0021】
さらに、ROM20には、所定のアドレスが設定されており、プロセッサ30が、所定のアドレスにアクセスすることにより、データを読み出すことが可能である。
プロセッサ30は、DESのアルゴリズム(シングルDESまたはトリプルDES)に基づく暗号化あるいは復号化を行う。また、プロセッサ30は、一方向性関数として、この暗号化アルゴリズムを用いた処理を行うことにより、一方向性関数の演算回路としても共用される。
【0022】
さらに、プロセッサ30は、KPS方式に基づいて共通鍵を算出する際の行列演算回路としても機能する。即ち、KPSにおいては、送信者の公開IDを一方向性関数によって処理した実行IDと、秘密アルゴリズムとを行列演算する処理が行われるが、プロセッサ30は、この行列演算を行う回路としても機能する。そのために、プロセッサ30がROM20やRAM40の所定のアドレスにアクセスして、データの読み出しや書き込みを行うことが可能なように、ROM20およびRAM40に所定のソースアドレスが割り当てられ、RAM40に所定のデスティネーションアドレスが割り当てられている。また、プロセッサ30は、暗号化または復号化、一方向性関数の処理あるいは行列演算のいずれかを切り替えて実行するため、いずれの処理を行うか(機能名)が実行される処理に伴って入力される。
【0023】
図2は、プロセッサ30の機能の一部を示す図である。
図2において、プロセッサ30は、第1の一方向性関数f1の演算と、平文およびワーク鍵の暗号化と、平文の暗号文の復号化および暗号化されたワーク鍵の復号化と、共通鍵を算出するための行列演算と、ROM20からスクランブルキーを読み出し、RAM40に格納する処理と、スクランブルIDの復号化と、乱数を取得する処理と、第2の一方向性関数f2の演算とを行う機能を備えている。
【0024】
図2に示す機能のうち、平文の暗号化および暗号文の復号化は、従来の一般的な暗号処理に用いられるプロセッサにおいて行われている処理であり、さらに、特開2000−286830号公報に記載された技術においては、一方向性関数f1,f2の演算を行うこととしている。
一方、本実施の形態におけるプロセッサ30は、これらの処理に加えて、共通鍵を算出するための行列演算と、ROM20からビット列が入れ替えられた秘密アルゴリズムを読み出し、スクランブルIDに基づいて、入れ替えられたビット列を元に戻しつつ実行IDとの行列演算を行って、その結果をRAM40に格納する処理とを行う。
【0025】
このように、プロセッサ30が、共通鍵を算出するための行列演算を行うことにより、行列演算を行うための回路を別途設ける必要がなくなり、回路規模を縮小することができる。
なお、プロセッサ30は、論理積および排他的論理和の演算回路によって行列演算回路を構成している。
【0026】
また、ROM20には、上述のように、ビット列が入れ替えられた秘密アルゴリズムが記憶されているため、プロセッサ30は、ROM20から秘密アルゴリズムを読み出し、実行IDとの行列演算を行うに当たり、所定の復号処理を行う必要がある。以下、この処理の手順について説明する。
図3は、ROM20から、ビット列が入れ替えられた秘密アルゴリズム(Encrypt Private ID)が読み出される際にビット列が元に戻される(復号される)手順を示す図である。
【0027】
図3において、プロセッサ30は、初めに、ROM20からスクランブルキー(FScramble Key)を読み出し、RAM40に格納する(処理▲1▼)。
そして、プロセッサ30は、読み出したスクランブルキーを初期値として、シングルDESまたはトリプルDESによってスクランブルIDを復号化し(処理▲2▼)、そのスクランブルIDによって、ビット列が入れ替えられた秘密アルゴリズムを元のビット列に戻す(処理▲3▼)。
なお、このとき、プロセッサ30は、トリプルDESによる復号化を行う場合、DES回路を制御し、DES回路を3回機能させることにより、トリプルDESの演算を行う。これにより、トリプルDES回路を別途設ける必要がなくなり、回路規模を増やすことなく秘密アルゴリズムを安全に外付けのROM20に格納することができる。
【0028】
このような手順を経ることにより、ROM20から秘密アルゴリズム(Decrypt Private ID)が読み出される。
したがって、外付けのROMに秘密アルゴリズムを格納する場合であっても、プロセッサ30とROM20間において送受信される信号をトレースされることにより、第三者に秘密アルゴリズムが盗用されることを防ぐことができる。
【0029】
RAM40は、プロセッサ30が算出した各種データを所定のアドレス(デスティネーションアドレス)に記憶する。また、RAM40は、暗号化対象である平文やワーク鍵、復号化対象である暗号文や暗号化されたワーク鍵、通信相手の公開IDを記憶する。
上述の構成の下、プロセッサ30は、例えば、以下のような暗号化処理(送信側の処理)を行う。
【0030】
まず、プロセッサ30は、RAM40から読み出した通信相手の公開IDを一方向性関数によって処理し、得られた実行IDをRAM40に記憶する(ステップS1)。
次に、プロセッサ30は、ROM20から秘密アルゴリズムを読み出し、図3に示すビット列の入れ替えを行う(ステップS2)。
【0031】
そして、プロセッサ30は、RAM40から実行IDを読み出し、実行IDと秘密アルゴリズムとの行列演算を行う。さらに、プロセッサ30は、演算結果をRAM40に書き込む(ステップS3)。
ここで、プロセッサ30によって行列演算を行う際、プロセッサ30には、実行される機能名(コマンド名)、ソースアドレス、ソースデータ長、ディスティネーションアドレス、ディスティネーションデータ長、初期化ベクトル(Initialization Vector)格納アドレスおよび共通鍵格納アドレスが与えられ、これらの情報によって、プロセッサ30の各機能を起動することができる。
【0032】
したがって、従来のように、DMAC(Direct Memory Access Controller)回路とプログラムによりデータの入出力を管理したり、プログラムによってレジスタへのアクセスを行うことによりデータの入出力を管理したりする必要がなくなり、プロセッサ30へのデータの入出力を簡単に行うことができる。
続いて、プロセッサ30は、乱数発生器10によって発生されたワーク鍵としての乱数を読み出し、RAM40に記憶する(ステップS4)。
【0033】
そして、プロセッサ30は、RAM40から暗号化対象である平文と、ワーク鍵とを読み出し、平文に対し、シングルDES方式またはトリプルDES方式に基づく暗号化を行い、暗号文をRAM40に記憶する(ステップS5)。
さらに、プロセッサ30は、RAM40から実行IDと秘密アルゴリズムとの演算結果を読み出し、その演算結果を一方向性関数によって処理した結果(共通鍵)をRAM40に記憶する(ステップS6)。
【0034】
そして、プロセッサ30は、RAM40からワーク鍵を読み出し、ワーク鍵を共通鍵によって暗号化してRAM40に記憶する(ステップS7)。
以上の処理によって、送信側から受信側に送信される平文の暗号文と、暗号化されたワーク鍵とがRAM40に記憶されている状態となる。
なお、ここでは、送信側の処理について説明したが、受信側においては、ステップS4以降において、実行IDと秘密アルゴリズムとの演算結果を一方向性関数で処理することにより共通鍵を算出する、受信した暗号化されたワーク鍵を共通鍵によって復号化する、復号化したワーク鍵によって暗号文を復号化する、といった処理を行い、所定の平文を得ることができる。
【0035】
以上のように、本実施の形態に係る暗号処理装置1は、KPS方式による暗号処理において、暗号化を行うプロセッサ30によって、共通鍵を算出するための行列演算(実行IDと秘密アルゴリズムとの乗算)を行い、従来、暗号化あるいは復号化を行う部分とは別に備えられていた共通鍵を算出するための行列演算回路をプロセッサ30によって実現すると共に、プロセッサ30によって共通鍵を算出するために、データの入出力を簡略な方法(プロセッサ30に、実行される機能名、ソースアドレス、ソースデータ長、ディスティネーションアドレス、ディスティネーションデータ長、初期化ベクトル格納アドレスおよび共通鍵格納アドレスのうち必要なものを与えることにより入出力を行う方法)により実現することとしている。
【0036】
したがって、実行IDと秘密アルゴリズムとの行列演算を行う回路を別途備える必要がないことから、回路規模を小型化することができ、低コスト化を実現することができる。
なお、暗号処理装置1は、一方向性関数として、暗号化アルゴリズムを用いていることから、一方向性関数の処理もプロセッサ30によって行うことができ、回路規模の小型化および低コスト化をより効果的に実現することができる。
【0037】
また、本実施の形態に係る暗号化処理装置1は、秘密アルゴリズムをROM20に記憶する際、スクランブルIDに基づいて秘密アルゴリズムのビット列を入れ替えた状態で記憶している。
したがって、プロセッサ30とROM20との間で送受信される信号をトレースされることにより、秘密アルゴリズムが盗用されることを防ぐことができる。
【0038】
なお、本実施の形態において、暗号処理装置1は、暗号処理において必要となるデータの保持をRAM40によって行うものとして説明したが、RAMによってデータを保持する場合の他、フリップフロップ等、データ保持機能を備える他の装置によって行うことも可能である。
【0039】
【発明の効果】
本発明によれば、KPS方式による暗号処理において、暗号化を行う暗号プロセッサによって、共通鍵を算出するための行列演算(実行IDと秘密アルゴリズムとの乗算)を行い、従来、暗号化あるいは復号化を行う部分とは別に備えられていた共通鍵を算出するための行列演算回路を暗号化プロセッサによって実現すると共に、暗号化プロセッサによって共通鍵を算出するために、データの入出力を簡略な方法(暗号化プロセッサに、実行される機能名、ソースアドレス、ディスティネーションアドレス等を与えることにより入出力を行う方法)により実現することとしている。
【0040】
したがって、実行IDと秘密アルゴリズムとの行列演算を行う回路を別途備える必要がないことから、回路規模を小型化することができ、低コスト化を実現することができる。
また、本発明によれば、秘密アルゴリズムを記憶しておくに当たり、秘密アルゴリズムのビット列を所定順序で入れ替えた状態で記憶している。
【0041】
したがって、暗号プロセッサが秘密アルゴリズムを読み出す際の信号をトレースされることにより、秘密アルゴリズムが盗用されることを防ぐことができる。
【図面の簡単な説明】
【図1】本発明を適用した暗号処理装置1の機能構成を示すブロック図である。
【図2】プロセッサ30の機能の一部を示す図である。
【図3】ROM20から、ビット列が入れ替えられた秘密アルゴリズムが読み出される際にビット列が元に戻される手順を示す図である。
【図4】KPS方式による暗号通信の概念を示す図である。
【符号の説明】
1 暗号処理装置,10 乱数発生器,20 ROM,30 プロセッサ,40 RAM
【発明の属する技術分野】
本発明は、平文とその暗号文とを相互に変換する暗号処理装置に関する。
【0002】
【従来の技術】
従来、KPS(Key Predistribution System)方式による暗号鍵配送が利用されている。
図4は、KPS方式による暗号通信の概念を示す図である。
KPS方式においては、情報の送信に当たり、送信側および受信側にKPSセンターから秘密アルゴリズムがそれぞれ発行される。
【0003】
そして、送信側において、受信者の公開IDを一方向性関数によって処理した実行IDと、秘密アルゴリズムとを行列演算し、一方向性関数によって処理した結果を共通鍵として暗号化を行う。
より詳細には、送信側において、所定の乱数を発生させ、これをワーク鍵として平文を暗号化し、ワーク鍵である乱数を共通鍵によって暗号化する。
【0004】
そして、平文からの暗号文と、暗号化されたワーク鍵とを受信側に送信する。
受信側においては、送信者の公開IDを一方向性関数によって処理した実行IDと、秘密アルゴリズムとを行列演算し、一方向性関数によって処理した結果を共通鍵として復号化を行う。
より詳細には、受信側において、共通鍵によって、暗号化されたワーク鍵を復号化し、そのワーク鍵によって暗号文を平文に復号化する。
【0005】
ここで、KPS方式においては、一方向性関数として、所定の暗号化アルゴリズムを用い、また、平文の暗号化には、それとは異なる暗号化アルゴリズムを用いている。
したがって、KPS方式を実現するハードウェアにおいては、異なる暗号化アルゴリズムのための回路が必要となり、IC(Integrated Circuit)化する際には、回路規模が大きくなり、コストが増大すると言う問題があった。
【0006】
そこで、特開2000−286830号公報に記載された技術は、一方向性関数として用いるアルゴリズムと、平文の暗号化に用いるアルゴリズムとを共通のものとし、回路の小規模化や低コスト化を実現するものとしている。
【0007】
【特許文献1】
特開2000−286830号公報
【0008】
【発明が解決しようとする課題】
しかしながら、特開2000−286830号公報に記載された技術においては、一方向性関数と、平文の暗号化に用いるアルゴリズムとを共通化しているものの、共通鍵を算出する処理は、従来と同様に行っていることから、実行IDと秘密アルゴリズムとを行列演算する回路を別途設ける必要があった。
【0009】
このとき、実行IDと秘密アルゴリズムとを行列演算する回路を設けることにより、IC化を実現する上で、回路規模の小型化、低コスト化を妨げる要因となる場合があった。
本発明の課題は、暗号処理装置の回路規模を小型化し、コストを低下させることである。
【0010】
【課題を解決するための手段】
以上の課題を解決するため、請求項1記載の発明は、
暗号化された情報の送受信において、送信側および受信側が通信相手の識別情報(例えば、公開ID)を互いに取得しておき、送信側において、受信側の識別情報を第1の一方向性関数によって処理した第1の実行IDと送信側の秘密アルゴリズムとに対し、行列演算および第2の一方向性関数による処理を含む演算を施して共通鍵を生成し、所定の暗号化アルゴリズム(例えば、DES方式等)に基づいて、該共通鍵によって暗号化された情報を受信側に送信し、受信側において、送信側の識別情報を前記第1の一方向性関数によって処理した第2の実行IDと受信側の秘密アルゴリズムとに対し、行列演算および前記第2の一方向性関数による処理を含む演算を施して共通鍵を生成し、前記暗号化アルゴリズムに基づいて、前記暗号化された情報を該共通鍵によって復号化する暗号化処理方法に係る暗号処理装置であって、前記共通鍵によって暗号化する処理あるいは前記暗号化された情報を前記共通鍵によって復号化する処理を実行する暗号プロセッサ(例えば、図1のプロセッサ30)を含み、該暗号プロセッサは、送信側において前記第1の実行IDと送信側の秘密アルゴリズムとを行列演算する処理あるいは受信側において前記第2の実行IDと受信側の秘密アルゴリズムとを行列演算する処理を実行することを特徴としている。
【0011】
請求項2記載の発明は、
請求項1記載の暗号処理装置であって、
前記第1の一方向性関数あるいは前記第2の一方向性関数の少なくともいずれかとして暗号化アルゴリズムを用い、前記暗号プロセッサは、前記第1の一方向性関数あるいは前記第2の一方向性関数による処理を実行することを特徴としている。
【0012】
請求項3記載の発明は、
請求項1または2記載の暗号処理装置であって、
前記秘密アルゴリズムを暗号化して記憶し、前記第1の実行IDあるいは前記第2の実行IDと行列演算する際に、前記暗号プロセッサが前記秘密アルゴリズムを復号化して使用可能であることを特徴としている。
【0013】
請求項4記載の発明は、
請求項1〜3のいずれかに記載の暗号処理装置であって、
前記暗号プロセッサがデータを読み出す領域(例えば、図1のROM20)およびデータを書き込む領域(例えば、図1のRAM40)には所定のアドレスが割り当てられ、前記暗号プロセッサに対する命令がコード化され、前記暗号プロセッサに、所定命令を示すコードと、データの読み出し先および書き込み先に関する情報とを入力することにより、前記暗号プロセッサがデータの読み込み先および書き込み先にアクセスし、前記所定命令を実行可能であることを特徴としている。
【0014】
即ち、暗号プロセッサが、DMAC(Direct Memory Access Controller)回路とプログラムによりデータの入出力を管理したり、プログラムによってレジスタへのアクセスを行うことによりデータの入出力を管理したりすることなく、データの入出力を直接管理することにより、所定命令を実行可能である。
本発明によれば、KPS方式による暗号処理において、暗号化を行う暗号プロセッサによって、共通鍵を算出するための行列演算(実行IDと秘密アルゴリズムとの乗算)を行い、従来、暗号化あるいは復号化を行う部分とは別に備えられていた共通鍵を算出するための行列演算回路を暗号化プロセッサによって実現すると共に、暗号化プロセッサによって共通鍵を算出するために、データの入出力を簡略な方法(暗号化プロセッサに、実行される機能名、ソースアドレス、ディスティネーションアドレス等を与えることにより入出力を行う方法)により実現することとしている。
【0015】
したがって、実行IDと秘密アルゴリズムとの行列演算を行う回路を別途備える必要がないことから、回路規模を小型化することができ、低コスト化を実現することができる。
また、本発明によれば、秘密アルゴリズムを記憶しておくに当たり、秘密アルゴリズムのビット列を所定順序で入れ替えた状態で記憶している。
【0016】
したがって、暗号プロセッサが秘密アルゴリズムを読み出す際の信号をトレースされることにより、秘密アルゴリズムが盗用されることを防ぐことができる。
【0017】
【発明の実施の形態】
以下、図を参照して本発明に係る暗号処理装置の実施の形態を詳細に説明する。
図1は、本発明を適用した暗号処理装置1の機能構成を示すブロック図である。なお、暗号処理装置1は、KPS方式による暗号処理を行う装置である。
【0018】
図1において、暗号処理装置1は、乱数発生器10と、ROM(Read Only Memory)20と、プロセッサ30と、RAM(Random Access Memory)40とを含んで構成される。
乱数発生器10は、平文を暗号化する際のワーク鍵となる所定の乱数を発生させ、発生した乱数をプロセッサ30に出力する。
【0019】
ROM20は、外付けされたROMであり、KPS方式における秘密アルゴリズム(Private ID)を記憶している。
ここで、安全性を高めるため、ROM20には、スクランブルIDに基づいて秘密アルゴリズムのビット列が入れ替えられた状態で記憶されている。具体的には、秘密アルゴリズムは、スクランブルIDによってビット列の入れ替えが施されている。さらに、スクランブルIDは、スクランブルキーによってシングルDES(Data Encryption Standard)またはトリプルDESで暗号化されている。
【0020】
そして、ROM20には、ビット列が入れ替えられた秘密アルゴリズム(Encrypt Private ID)と、シングルDESまたはトリプルDESの共通鍵として使用されるスクランブルキー(FScramble Key)と、シングルDESまたはトリプルDESによって暗号化されたスクランブルID(Encrypt Scramble ID)とが併せて記憶されている。
【0021】
さらに、ROM20には、所定のアドレスが設定されており、プロセッサ30が、所定のアドレスにアクセスすることにより、データを読み出すことが可能である。
プロセッサ30は、DESのアルゴリズム(シングルDESまたはトリプルDES)に基づく暗号化あるいは復号化を行う。また、プロセッサ30は、一方向性関数として、この暗号化アルゴリズムを用いた処理を行うことにより、一方向性関数の演算回路としても共用される。
【0022】
さらに、プロセッサ30は、KPS方式に基づいて共通鍵を算出する際の行列演算回路としても機能する。即ち、KPSにおいては、送信者の公開IDを一方向性関数によって処理した実行IDと、秘密アルゴリズムとを行列演算する処理が行われるが、プロセッサ30は、この行列演算を行う回路としても機能する。そのために、プロセッサ30がROM20やRAM40の所定のアドレスにアクセスして、データの読み出しや書き込みを行うことが可能なように、ROM20およびRAM40に所定のソースアドレスが割り当てられ、RAM40に所定のデスティネーションアドレスが割り当てられている。また、プロセッサ30は、暗号化または復号化、一方向性関数の処理あるいは行列演算のいずれかを切り替えて実行するため、いずれの処理を行うか(機能名)が実行される処理に伴って入力される。
【0023】
図2は、プロセッサ30の機能の一部を示す図である。
図2において、プロセッサ30は、第1の一方向性関数f1の演算と、平文およびワーク鍵の暗号化と、平文の暗号文の復号化および暗号化されたワーク鍵の復号化と、共通鍵を算出するための行列演算と、ROM20からスクランブルキーを読み出し、RAM40に格納する処理と、スクランブルIDの復号化と、乱数を取得する処理と、第2の一方向性関数f2の演算とを行う機能を備えている。
【0024】
図2に示す機能のうち、平文の暗号化および暗号文の復号化は、従来の一般的な暗号処理に用いられるプロセッサにおいて行われている処理であり、さらに、特開2000−286830号公報に記載された技術においては、一方向性関数f1,f2の演算を行うこととしている。
一方、本実施の形態におけるプロセッサ30は、これらの処理に加えて、共通鍵を算出するための行列演算と、ROM20からビット列が入れ替えられた秘密アルゴリズムを読み出し、スクランブルIDに基づいて、入れ替えられたビット列を元に戻しつつ実行IDとの行列演算を行って、その結果をRAM40に格納する処理とを行う。
【0025】
このように、プロセッサ30が、共通鍵を算出するための行列演算を行うことにより、行列演算を行うための回路を別途設ける必要がなくなり、回路規模を縮小することができる。
なお、プロセッサ30は、論理積および排他的論理和の演算回路によって行列演算回路を構成している。
【0026】
また、ROM20には、上述のように、ビット列が入れ替えられた秘密アルゴリズムが記憶されているため、プロセッサ30は、ROM20から秘密アルゴリズムを読み出し、実行IDとの行列演算を行うに当たり、所定の復号処理を行う必要がある。以下、この処理の手順について説明する。
図3は、ROM20から、ビット列が入れ替えられた秘密アルゴリズム(Encrypt Private ID)が読み出される際にビット列が元に戻される(復号される)手順を示す図である。
【0027】
図3において、プロセッサ30は、初めに、ROM20からスクランブルキー(FScramble Key)を読み出し、RAM40に格納する(処理▲1▼)。
そして、プロセッサ30は、読み出したスクランブルキーを初期値として、シングルDESまたはトリプルDESによってスクランブルIDを復号化し(処理▲2▼)、そのスクランブルIDによって、ビット列が入れ替えられた秘密アルゴリズムを元のビット列に戻す(処理▲3▼)。
なお、このとき、プロセッサ30は、トリプルDESによる復号化を行う場合、DES回路を制御し、DES回路を3回機能させることにより、トリプルDESの演算を行う。これにより、トリプルDES回路を別途設ける必要がなくなり、回路規模を増やすことなく秘密アルゴリズムを安全に外付けのROM20に格納することができる。
【0028】
このような手順を経ることにより、ROM20から秘密アルゴリズム(Decrypt Private ID)が読み出される。
したがって、外付けのROMに秘密アルゴリズムを格納する場合であっても、プロセッサ30とROM20間において送受信される信号をトレースされることにより、第三者に秘密アルゴリズムが盗用されることを防ぐことができる。
【0029】
RAM40は、プロセッサ30が算出した各種データを所定のアドレス(デスティネーションアドレス)に記憶する。また、RAM40は、暗号化対象である平文やワーク鍵、復号化対象である暗号文や暗号化されたワーク鍵、通信相手の公開IDを記憶する。
上述の構成の下、プロセッサ30は、例えば、以下のような暗号化処理(送信側の処理)を行う。
【0030】
まず、プロセッサ30は、RAM40から読み出した通信相手の公開IDを一方向性関数によって処理し、得られた実行IDをRAM40に記憶する(ステップS1)。
次に、プロセッサ30は、ROM20から秘密アルゴリズムを読み出し、図3に示すビット列の入れ替えを行う(ステップS2)。
【0031】
そして、プロセッサ30は、RAM40から実行IDを読み出し、実行IDと秘密アルゴリズムとの行列演算を行う。さらに、プロセッサ30は、演算結果をRAM40に書き込む(ステップS3)。
ここで、プロセッサ30によって行列演算を行う際、プロセッサ30には、実行される機能名(コマンド名)、ソースアドレス、ソースデータ長、ディスティネーションアドレス、ディスティネーションデータ長、初期化ベクトル(Initialization Vector)格納アドレスおよび共通鍵格納アドレスが与えられ、これらの情報によって、プロセッサ30の各機能を起動することができる。
【0032】
したがって、従来のように、DMAC(Direct Memory Access Controller)回路とプログラムによりデータの入出力を管理したり、プログラムによってレジスタへのアクセスを行うことによりデータの入出力を管理したりする必要がなくなり、プロセッサ30へのデータの入出力を簡単に行うことができる。
続いて、プロセッサ30は、乱数発生器10によって発生されたワーク鍵としての乱数を読み出し、RAM40に記憶する(ステップS4)。
【0033】
そして、プロセッサ30は、RAM40から暗号化対象である平文と、ワーク鍵とを読み出し、平文に対し、シングルDES方式またはトリプルDES方式に基づく暗号化を行い、暗号文をRAM40に記憶する(ステップS5)。
さらに、プロセッサ30は、RAM40から実行IDと秘密アルゴリズムとの演算結果を読み出し、その演算結果を一方向性関数によって処理した結果(共通鍵)をRAM40に記憶する(ステップS6)。
【0034】
そして、プロセッサ30は、RAM40からワーク鍵を読み出し、ワーク鍵を共通鍵によって暗号化してRAM40に記憶する(ステップS7)。
以上の処理によって、送信側から受信側に送信される平文の暗号文と、暗号化されたワーク鍵とがRAM40に記憶されている状態となる。
なお、ここでは、送信側の処理について説明したが、受信側においては、ステップS4以降において、実行IDと秘密アルゴリズムとの演算結果を一方向性関数で処理することにより共通鍵を算出する、受信した暗号化されたワーク鍵を共通鍵によって復号化する、復号化したワーク鍵によって暗号文を復号化する、といった処理を行い、所定の平文を得ることができる。
【0035】
以上のように、本実施の形態に係る暗号処理装置1は、KPS方式による暗号処理において、暗号化を行うプロセッサ30によって、共通鍵を算出するための行列演算(実行IDと秘密アルゴリズムとの乗算)を行い、従来、暗号化あるいは復号化を行う部分とは別に備えられていた共通鍵を算出するための行列演算回路をプロセッサ30によって実現すると共に、プロセッサ30によって共通鍵を算出するために、データの入出力を簡略な方法(プロセッサ30に、実行される機能名、ソースアドレス、ソースデータ長、ディスティネーションアドレス、ディスティネーションデータ長、初期化ベクトル格納アドレスおよび共通鍵格納アドレスのうち必要なものを与えることにより入出力を行う方法)により実現することとしている。
【0036】
したがって、実行IDと秘密アルゴリズムとの行列演算を行う回路を別途備える必要がないことから、回路規模を小型化することができ、低コスト化を実現することができる。
なお、暗号処理装置1は、一方向性関数として、暗号化アルゴリズムを用いていることから、一方向性関数の処理もプロセッサ30によって行うことができ、回路規模の小型化および低コスト化をより効果的に実現することができる。
【0037】
また、本実施の形態に係る暗号化処理装置1は、秘密アルゴリズムをROM20に記憶する際、スクランブルIDに基づいて秘密アルゴリズムのビット列を入れ替えた状態で記憶している。
したがって、プロセッサ30とROM20との間で送受信される信号をトレースされることにより、秘密アルゴリズムが盗用されることを防ぐことができる。
【0038】
なお、本実施の形態において、暗号処理装置1は、暗号処理において必要となるデータの保持をRAM40によって行うものとして説明したが、RAMによってデータを保持する場合の他、フリップフロップ等、データ保持機能を備える他の装置によって行うことも可能である。
【0039】
【発明の効果】
本発明によれば、KPS方式による暗号処理において、暗号化を行う暗号プロセッサによって、共通鍵を算出するための行列演算(実行IDと秘密アルゴリズムとの乗算)を行い、従来、暗号化あるいは復号化を行う部分とは別に備えられていた共通鍵を算出するための行列演算回路を暗号化プロセッサによって実現すると共に、暗号化プロセッサによって共通鍵を算出するために、データの入出力を簡略な方法(暗号化プロセッサに、実行される機能名、ソースアドレス、ディスティネーションアドレス等を与えることにより入出力を行う方法)により実現することとしている。
【0040】
したがって、実行IDと秘密アルゴリズムとの行列演算を行う回路を別途備える必要がないことから、回路規模を小型化することができ、低コスト化を実現することができる。
また、本発明によれば、秘密アルゴリズムを記憶しておくに当たり、秘密アルゴリズムのビット列を所定順序で入れ替えた状態で記憶している。
【0041】
したがって、暗号プロセッサが秘密アルゴリズムを読み出す際の信号をトレースされることにより、秘密アルゴリズムが盗用されることを防ぐことができる。
【図面の簡単な説明】
【図1】本発明を適用した暗号処理装置1の機能構成を示すブロック図である。
【図2】プロセッサ30の機能の一部を示す図である。
【図3】ROM20から、ビット列が入れ替えられた秘密アルゴリズムが読み出される際にビット列が元に戻される手順を示す図である。
【図4】KPS方式による暗号通信の概念を示す図である。
【符号の説明】
1 暗号処理装置,10 乱数発生器,20 ROM,30 プロセッサ,40 RAM
Claims (4)
- 暗号化された情報の送受信において、送信側および受信側が通信相手の識別情報を互いに取得しておき、送信側において、受信側の識別情報を第1の一方向性関数によって処理した第1の実行IDと送信側の秘密アルゴリズムとに対し、行列演算および第2の一方向性関数による処理を含む演算を施して共通鍵を生成し、所定の暗号化アルゴリズムに基づいて、該共通鍵によって暗号化された情報を受信側に送信し、受信側において、送信側の識別情報を前記第1の一方向性関数によって処理した第2の実行IDと受信側の秘密アルゴリズムとに対し、行列演算および前記第2の一方向性関数による処理を含む演算を施して共通鍵を生成し、前記暗号化アルゴリズムに基づいて、前記暗号化された情報を該共通鍵によって復号化する暗号化処理方法に係る暗号処理装置であって、
前記共通鍵によって暗号化する処理あるいは前記暗号化された情報を前記共通鍵によって復号化する処理を実行する暗号プロセッサを含み、
該暗号プロセッサは、送信側において前記第1の実行IDと送信側の秘密アルゴリズムとを行列演算する処理あるいは受信側において前記第2の実行IDと受信側の秘密アルゴリズムとを行列演算する処理を実行することを特徴とする暗号処理装置。 - 前記第1の一方向性関数あるいは前記第2の一方向性関数の少なくともいずれかとして暗号化アルゴリズムを用い、前記暗号プロセッサは、前記第1の一方向性関数あるいは前記第2の一方向性関数による処理を実行することを特徴とする請求項1記載の暗号処理装置。
- 前記秘密アルゴリズムを暗号化して記憶し、前記第1の実行IDあるいは前記第2の実行IDと行列演算する際に、前記暗号プロセッサが前記秘密アルゴリズムを復号化して使用可能であることを特徴とする請求項1または2記載の暗号処理装置。
- 前記暗号プロセッサがデータを読み出す領域およびデータを書き込む領域には所定のアドレスが割り当てられ、前記暗号プロセッサに対する命令がコード化され、
前記暗号プロセッサに、所定命令を示すコードと、データの読み出し先および書き込み先に関する情報とを入力することにより、前記暗号プロセッサがデータの読み込み先および書き込み先にアクセスし、前記所定命令を実行可能であることを特徴とする請求項1〜3のいずれかに記載の暗号処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002335197A JP2004172855A (ja) | 2002-11-19 | 2002-11-19 | 暗号処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002335197A JP2004172855A (ja) | 2002-11-19 | 2002-11-19 | 暗号処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004172855A true JP2004172855A (ja) | 2004-06-17 |
Family
ID=32699396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002335197A Withdrawn JP2004172855A (ja) | 2002-11-19 | 2002-11-19 | 暗号処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004172855A (ja) |
-
2002
- 2002-11-19 JP JP2002335197A patent/JP2004172855A/ja not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3747520B2 (ja) | 情報処理装置及び情報処理方法 | |
JP4703791B2 (ja) | データ再暗号化装置および方法 | |
US20040146158A1 (en) | Cryptographic systems and methods supporting multiple modes | |
JPH08328962A (ja) | 端末機と、当該端末機に接続されるメモリカードからなるシステム | |
KR20070052233A (ko) | 기밀정보처리방법, 기밀정보처리장치, 및 컨텐츠데이터재생장치 | |
JPH1022994A (ja) | 暗号化装置および復号化装置、暗号化方法および復号化方法、ならびにそれらを用いた通信システム | |
US20050008162A1 (en) | System and method for encrypting and verifying messages using three-phase encryption | |
JP2008172736A (ja) | 暗号文復号権委譲システム | |
US20050138403A1 (en) | Data encryption in a symmetric multiprocessor electronic apparatus | |
JP5964460B2 (ja) | データの暗号化記憶システム | |
JP2006527412A (ja) | データを暗号化および/または復号化するプロセッサとこのプロセッサを使用してデータを暗号化および/または復号化する方法 | |
JP2004157535A (ja) | データ暗号化方法 | |
JPH0946332A (ja) | Rsa型手順により暗号化された通信文用通信システム | |
JP2001111539A (ja) | 暗号鍵生成装置および暗号鍵伝送方法 | |
JP2004172855A (ja) | 暗号処理装置 | |
US7392272B2 (en) | Calculation device and calculation method | |
JP2005309148A (ja) | データ変換装置およびデータ変換方法 | |
JP2005202048A (ja) | 暗号通信システム、そのシステムに使用される暗号装置および復号装置、暗号化方法および復号化方法、暗号化プログラムおよび復号化プログラム、ならびに記録媒体 | |
JPH0777933A (ja) | ネットワークデータ暗号化装置 | |
JP2000076144A (ja) | 論理回路、マイクロコンピュータ、および論理回路・記憶回路間の通信方法 | |
KR100546777B1 (ko) | Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 f함수 처리기 | |
JPH0744375A (ja) | 暗号化データ処理装置 | |
JPH0553921A (ja) | 集積回路 | |
JPH1155244A (ja) | 鍵回復方法および装置 | |
JPH04268843A (ja) | 暗号利用通信方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060207 |