(57)【要約】【課題】データ格納装置に格納されるデータの暗号処理を回路的に実現する装置において、悪意の第三者から不正アクセスがなされても、あるいは、悪意の第三者にデータ格納装置が物理的に入手された場合でも、第三者が暗号処理に係る鍵値を知ることを困難にし、従って、格納されたデータが確実に保護される手法を提供する【解決手段】入力されたデータに対し暗号鍵を用いた暗号化および／または復号化を行って出力する暗号処理装置であって、値が定められ、前記暗号鍵として使用可能な鍵データを外部からの書換え不可能にかつ外部への読出し不可能に予め格納する鍵格納回路と、前記暗号鍵を用いて前記データの暗号化および／または復号化を行う暗号処理回路と、外部からの指示に応答し前記鍵データを前記暗号鍵として前記暗号処理回路に提供する鍵供給回路とを備えることを特徴とする暗号処理装置。【選択図】図６
2009044630.tif 000002
【特許請求の範囲】
【請求項１】
入力されたデータに対し暗号鍵を用いた暗号化および／または復号化を行って出力する暗号処理装置であって、
値が定められ、前記暗号鍵として使用可能な鍵データを外部からの書換え不可能にかつ外部への読出し不可能に予め格納する鍵格納回路と、
前記暗号鍵を用いて前記データの暗号化および／または復号化を行う暗号処理回路と、
外部からの指示に応答し前記鍵データを前記暗号鍵として前記暗号処理回路に提供する鍵供給回路とを備えることを特徴とする暗号処理装置。
【請求項２】
前記鍵格納回路は複数の鍵データを格納し、
外部からの前記指示に応じて暗号鍵として提供する鍵データを選択する鍵選択回路をさらに備え、
前記鍵供給回路は、選択された鍵データを前記暗号処理回路に提供する請求項１に記載の暗号処理装置。
【請求項３】
前記鍵格納回路は、前記鍵データに加え、外部からの書換えが可能な鍵データを格納し得る請求項１または２に記載の暗号処理装置。
【請求項４】
前記鍵格納回路と前記鍵選択回路と前記鍵供給回路と前記暗号処理回路とは、各回路間および各回路内の信号が外部から検出できないよう一体に封止されてなる請求項１〜３の何れか一つに記載の暗号処理装置。
【請求項５】
前記鍵格納回路と前記鍵選択回路と前記鍵供給回路と前記暗号処理回路とは、一つの半導体集積回路に集積されてなる請求項４に記載の暗号処理装置。
【請求項６】
値が定められて予め格納された前記鍵データは、複数ビットの二進データであって二進「０」に対応する電圧を供給する第1電圧源と二進「１」に対応する電圧を供給する第２電圧源とからの配線を前記鍵格納回路内でビット順に配してなる信号列として構成され、
各ビットの配線の長さの和が所定の長さ以上になるよう各配線のパターンが定められてなる請求項１〜５の何れか一つの記載の暗号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、入力されたデータに対し暗号鍵を用いた暗号化および／または復号化を行って出力する暗号処理装置に関する。
【背景技術】
【０００２】
ハードディスク装置などのデータ格納装置に格納されるデータを暗号化および／または復号化（以下、簡単のために暗号処理という）して保護する装置が存在する。以下、この明細書中でそのような装置を暗号処理装置という。
【０００３】
例えば、パーソナルコンピュータ（以下、パソコンという。）等の補助記憶装置として、ハードディスク装置が多用されている。そのようなハードディスク装置に格納されるデータには、貴重な財産的価値を持つものがある。そのため、これを適切に保護することが従来から重要視されている。特に、インターネットが普及している今日においては、インターネットを経由して補助記憶装置に不正アクセスされることがしばしばある。このため、不正アクセスを効果的に防止するためのファイアウォール等の機器が幅広く開発されている。
【０００４】
しかし、データ保護の必要性は、インターネットを経由する補助記憶装置への不正アクセスに対するものだけではない。実際にパソコンが置かれている場所に物理的に侵入して補助記憶装置内の貴重なデータを盗み取るといった犯罪も少なくない。このため、物理的侵入をも想定したセキュリティ対策を行う必要がある。また、パソコンに対する侵入を防止する手段が万全であったとしても、パソコンを下取りに出す場合に補助記憶装置の物理フォーマットを怠ってしまう等の人為的なミスもありえる。そして、このような人為的ミスが原因で、補助記憶装置の内容が漏洩することがある。
【０００５】
従って、通信経路を介してパソコンに対する侵入を防止する対策を講じることだけでなく、万一、パソコンへの侵入を許してしまった場合や、パソコンごと他の者の手に渡ってしまった場合を想定し、そのような場合にも、補助記憶装置の内容が読み取られないようにすることが重要といえる。
【０００６】
そこで、従来技術の中には、ハードディスク（補助記憶装置）とパソコンとの間にデータの転送を制御するためのセキュリティボード（データ保護装置）を配置するものが知られている。そのようなものでは、パソコンからのデータを当該セキュリティボードにおいて暗号化した上でハードディスクに記憶するとともに、当該セキュリティボードにマスタキーを装着している場合にのみ補助記憶装置に記憶したデータを復号しながら読み出すことを可能にしている。それによって、正当な権限のある者のみが補助記憶装置内のデータにアクセスできるようにしてデータの保護を図っている。
【０００７】
暗号方式には、大別して共通鍵暗号方式と、公開鍵暗号方式がある。共通鍵暗号方式は、データの暗号化と復号化に共通の暗号鍵（共通鍵）を用いる方式である。公開鍵方式は、データの暗号化と復号化に異なる暗号鍵（公開鍵と秘密鍵）を用いる方式である。これらの方式は、それぞれの長所、短所を持ち、用途によって使い分けられたり、２つの方式を組み合わせて用いられたりしている。
【０００８】
前述のいずれの暗号方式も、暗号鍵を用いる点で共通する。暗号鍵とは、暗号処理に用いるデータである。暗号処理は、データ変換の一種であるといえ、当該データ変換の規則を示すデータが暗号鍵である。従って、いかに解読されにくい暗号方式を用いたとしても、暗号鍵を安全に保管できなければ、データの安全性は確保されない。これは、たとえばパスワードを用いて部外者のアクセスを制限するシステムにおいて、いかに複雑なパスワードを用いたとしても、部外者にそのパスワードが盗まれてしまえば、もはや部外者からのアクセスを制限できないのと同様である。
【０００９】
そこで、優れた暗号方式を用いることと同様に、暗号鍵を安全に保管する手法が重要になる。
【００１０】
例えば、仮想メモリシステムを用いたシステムにおいて、物理的なRAMの容量を超える際にディスク上にコピー・アウトされるコンテンツを不正な監視から保護するため、コンテンツを暗号処理するシステムにおいて、暗号化コーポーネント自身が共通鍵暗号方式のアルゴリズムの一つであるAES（Advanced Encryption Standard）を用いて鍵を生成する手法が提案されている。
【００１１】
暗号処理は、データ処理の一種であるので、CPUが暗号処理プログラムを実行することによって処理が可能である。しかし、プログラムが解読されると暗号処理の意味がなくなるため、暗号処理の一部または全部をハードウェアで実現するものがある。より具体的には、大規模集積（LSI）回路素子上に暗号処理を行う回路を集積したもの（暗号処理LSI）を用いて暗号処理を行うものである。
【特許文献１】特開２００５−１５８０４３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
従来の暗号処理回路は、暗号処理時に利用する暗号鍵の値（鍵値）を暗号処理LSI外部から直接にデータを暗号処理時の鍵値を書き込む回路構成であった。その結果、鍵値を見破ろうとするものに、鍵値の信号を容易に読み取られる危険性があった。
【００１３】
この発明は、以上のような事情を考慮してなされたものであって、データ格納装置に格納されるデータの暗号処理を回路的に実現する装置において、悪意の第三者から不正アクセスがなされても、あるいは、悪意の第三者にデータ格納装置が物理的に入手された場合でも、第三者が暗号処理に係る鍵値を知ることを困難にし、従って、格納されたデータが確実に保護される手法を提供するものである。
【課題を解決するための手段】
【００１４】
この発明は、入力されたデータに対し暗号鍵を用いた暗号化および／または復号化を行って出力する暗号処理装置であって、値が定められ、前記暗号鍵として使用可能な鍵データを外部からの書換え不可能にかつ外部への読出し不可能に予め格納する鍵格納回路と、前記暗号鍵を用いて前記データの暗号化および／または復号化を行う暗号処理回路と、外部からの指示に応答し前記鍵データを前記暗号鍵として前記暗号処理回路に提供する鍵供給回路とを備えることを特徴とする暗号処理装置を提供する。
【発明の効果】
【００１５】
この発明による暗号処理装置は、値が定められ、前記暗号鍵として使用可能な鍵データを外部からの書換え不可能にかつ外部への読出し不可能に予め格納する鍵格納回路と、外部からの指示に応答し前記鍵データを前記暗号鍵として前記暗号処理回路に提供する鍵供給回路とを備えるので、悪意の第三者から不正アクセスがなされても、あるいは、悪意の第三者にデータ格納装置が物理的に入手された場合でも、暗号処理に係る鍵値、即ち、鍵データをその第三者が知ることは困難である。
【００１６】
即ち、暗号鍵として提供される鍵データは外部からの書換えが不可能かつ外部への読出しが不可能であって、外部から直接鍵値を書き込む回路構成ではない。前記指示のみが外部から与えられる。従って、悪意の第三者に鍵値の信号が読み取られることを防ぐことはなく、格納されたデータが確実に保護される。
【００１７】
この発明による暗号処理装置は、データ格納装置に格納されるデータを保護するために用いられる。ここで、データ格納装置は、ハードディスク装置であってもよい。しかし、これに限定されず、例えば、フラッシュメモリなどの半導体素子によるデータ格納装置や、光ディスク装置などであってもよい。データを格納し得るするものであれば、その原理や方式は制限されない。
【００１８】
この発明による暗号処理装置が適用される対象は、たとえば、パソコンであってもよいが、これに限定されるものではない。データ格納装置を有する装置であれば、対象となり得る。例えば、画像データを格納して処理する画像処理装置、データの格納を主な機能とするデータストレージ、音声や楽曲のデータを格納して処理する音声録音および／または再生装置などであってもよい。
【００１９】
また、この発明による暗号処理装置は、データ格納装置の付近に配置されることが好ましいが、必ずしもこれに限定されない。データ格納装置を収容する装置と別の装置に暗号処理装置が収容され、通信線を介してデータ格納装置とやり取りするシステム内で暗号処理がなされる態様もこの発明の範囲に含まれる。
【００２０】
暗号処理のアルゴリズムは、暗号鍵を用いるものであれば特に限定されない。例えば、アルゴリズムは、共通鍵暗号方式のアルゴリズムとして広く知られているDES(Data Encryption Standard)やAES（Advanced Encryption Standard）であってもよいが、それ以外のものであってもよい。また、公開鍵暗号方式、共通鍵暗号方式と公開鍵暗号方式とを組合せた方式にも適用可能である。
【００２１】
以下、この発明の好ましい態様について説明する。
前記鍵格納回路は複数の鍵データを格納し、外部からの前記指示に応じて暗号鍵として提供する鍵データを選択する鍵選択回路をさらに備え、前記鍵供給回路は、選択された鍵データを前記暗号処理回路に提供してもよい。このようにすれば、複数の鍵データの一つを外部からの指示により選択し、暗号鍵とするので、悪意の第三者が暗号処理前後のデータの内容を対比して暗号を解読することがさらに困難になる。
【００２２】
また、前記鍵格納回路は、前記鍵データに加え、外部からの書換えが可能な鍵データを格納してもよい。このようにすれば、暗号処理LSIの設計データが不幸にして流出した場合など、外部から書換え不可能な鍵データ（固定値の鍵データ）の鍵値の機密が維持されなくなった場合でも、外部からの書換えが可能な鍵データを用いることにより、該当の暗号処理LSIを破棄せず、継続使用することが可能になる。また、その暗号処理LSIが適用されるパソコン等の装置を継続使用することが可能になる。
【００２３】
さらにまた、前記鍵格納回路と前記鍵選択回路と前記鍵供給回路と前記暗号処理回路とは、各回路間および各回路内の信号が外部から検出できないよう一体に封止されてなるものであってもよい。このようにすれば、悪意の第三者が各回路間および各回路内の信号を外部から検出し、読取るような攻撃を防ぐことができる。
【００２４】
さらに、前記鍵格納回路と前記鍵選択回路と前記鍵供給回路と前記暗号処理回路とは、一つの半導体集積回路に集積されてもよい。
【００２５】
また、値が定められて予め格納された前記鍵データは、複数ビットの二進データであって二進「０」に対応する電圧を供給する第1電圧源と二進「１」に対応する電圧を供給する第２電圧源とからの配線を前記鍵格納回路内でビット順に配してなる信号列として構成され、各ビットの配線の長さの和が所定の長さ以上になるよう各配線のパターンが定められてなるものであってもよい。
なお、ここで示した種々の好ましい態様は、それら複数を組み合わせることもできる。
【発明を実施するための最良の形態】
【００２６】
以下、図面を用いてこの発明をさらに詳述する。なお、以下の説明は、すべての点で例示であって、この発明を限定するものと解されるべきではない。
【００２７】
≪暗号処理装置の構成例≫
図１は、この発明による暗号処理装置のハードウェア構成の一例を示すブロック図である。図１に示すように、この発明による暗号処理回路は、CPU(101)、ROM(102)、RAM(103)、LSI-A(104)、LSI-B(105)およびメイン・バス（107）から構成される。また、図１には、暗号化されたデータを格納する補助記憶装置としてHDD(106)を記している。HDD(106)は、暗号処理装置の外部の装置である。
【００２８】
CPU(101)は、暗号処理装置の処理をコントロールするものである。ROM（102）には、暗号処理装置を動作させるためのファームウェア（制御プログラム）が格納されている。前記ファームウェアは、CPU(101)が動作を開始するときにROM（102）から読み出され、後述するRAM（103）に展開される。CPU(101)は、展開されたファームウェアの内容に従って順次処理を行う。これによって、暗号処理装置の各処理が実行される。RAM（103）は、ROM（102）から読み出されたファームウェアを展開するスペースを提供する。さらに、暗号処理装置の処理中、各種制御値等を一時的に格納する領域を提供する。
【００２９】
LSI-A（104）は、暗号処理における中心的な役割を担う部分である。後述するように、LSI-A（104）は暗号鍵となり得る鍵データを格納する回路、鍵データを共通暗号鍵として提供する鍵供給回路、提供された暗号鍵を用いて暗号化および復号化を行う暗号処理ブロックを含む。
【００３０】
なお、この実施形態では共通鍵暗号方式を前提に説明を行う。図１の実施形態は、HDD（106）に格納するデータを格納前に暗号化し、HDD（106）から読み出す際に復号化するものであって、暗号化／復号化を同じ暗号処理装置で行うものである。このような態様においては、1つの暗号鍵で暗号化／復号化を行う共通鍵暗号化方式を適用するのが合理的である。ただし、前述のように、この発明の本質は共通鍵暗号方式に限定されるものでなく公開鍵方式のものにも適用可能である。
【００３１】
LSI-B（105）は、HDD（106）へ格納すべきデータ、即ち、図示しない外部の機器から外部からメイン・バス107を介して暗号化対象のデータを取得し、LSI-A（104）へ送るものである。また、HDD（106）から読み出され、LSI-A（104）で復号化されたデータを外部へメイン・バス107を介して送るものである。
【００３２】
メイン・バス(107)は、CPU(101)、ROM(102)、RAM(103)、LSI-A(104)、LSI-B(105)および図示しない外部の機器との間でデータをやり取りするためのものである。ただし、LSI-A(104)とLSI-B(105)との間のデータの送受は、転送バス（108）を介して行われる。一方、例えば、CPU(101)がLSI-A(104)内のレジスタをアクセスするときは、メイン・バス(107)を介してLSI-A(104)をアクセスする。
【００３３】
HDD（106）は、暗号化されたデータを格納するものである。
【００３４】
なお、CPU(101)は、この発明による暗号処理装置の処理専用のものであってもよいが、暗号処理を行わないときに他の処理を実行してもよい。他の処理の内容は、前記ファームウェアと共にROM（102）に格納されていてもよい。
【００３５】
≪暗号処理に係るLSI-Aの詳細構成≫
図２は、図１に示すLSI-Aブロック(104)の内部構成例を示すブロック図である。図２に示すように、LSI-A(104)は、共通鍵暗号処理ブロック（201）、転送バスI/F（202）、HDD I/F（203）、鍵供給回路（204）、鍵データ（205）、セレクタ（206）、鍵セレクトレジスタ（207）およびCPU I/F（208）を含んでなる。
【００３６】
共通鍵暗号処理ブロック（201）は、前述のAESやDESなどの共通鍵暗号方式のアルゴリズムに基づき、共通鍵を用いたデータの暗号化および復号化を行う機能をもったハードウェア回路である。
【００３７】
転送バスI/F（202）は、LSI-B（105）から転送バス（108）を介して送信されたデータを、共通鍵暗号処理ブロック（201）に送るためのI/Fである。
【００３８】
HDD I/F（203）は、暗号化されたデータを、補助記憶装置であるハードディスクドライブ（106）に送るためのインターフェイス（I/F）回路である。
【００３９】
データを暗号処理してHDD(106)に格納するとき、処理対象のデータは転送バスI/F（202）から共通鍵暗号処理ブロック（201）へ入力され、暗号化された後、ハードディスクI/F（203）を介してLSI-A(104)に接続された外部のHDD(106)へ出力される。一方、HDD(106)に格納されたデータを読み出して復号化するとき、処理対象のデータはHDD(106)からハードディスクI/F（203）を介して共通鍵暗号処理ブロック（201）へ入力され、復号化された後、転送バスI/F（202）を介して外部へ出力される。
【００４０】
なお、前述のデータの流れが一般的な態様であるが、暗号化および復号化が逆の態様もあり得る。例えば、HDD(106)は、暗号化されていないデータを格納するものであり、HDD(106)に格納されたデータを暗号化してLSI-A(104)の外部へ転送する場合である。この場合は、暗号化および復号化時におけるそれぞれのデータの流れの方向は、前述したものと逆になる。
【００４１】
LSI-Aブロック(104)の内部構成についての説明を続ける。鍵供給回路（204）は、共通鍵暗号処理ブロック（201）に対して暗号化・復号化時に使用する鍵を供給するものである。図２の鍵供給回路（204）は、予め値が決められたN個の鍵データ（205）、即ち、鍵１〜鍵Nを格納している。図２では、Nは3より大きな自然数として示しているが、これは一例である。鍵データは１つだけ（N=1）でもよく、２個（N=2）あるいは３個（N=3）の場合もこの発明に含まれる。
【００４２】
セレクタ（206）は、N個の鍵データ（205）の鍵１〜鍵Nの中からいずれかの鍵を選択するものである。N=1の場合は、鍵の選択は必要ないが、外部（具体的には、CPU（101））が所定の値を設定したときに鍵データが提供されるようにするため、セレクタ（206）に変えてゲート回路が配置されてもよい。
【００４３】
鍵セレクタレジスタ（207）は、LSI-A(104)の動作を決定するためのCPUからアクセス可能なレジスタのうちの一つである。CPU（101）からCPU I/Fを通して鍵セレクトレジスタ（207）にライトアクセスをすることにより、鍵セレクトレジスタ（207）が保持している値（鍵データの選択に係る値）を書き換えることができる。なお、鍵データが１つ（N=1）の場合は、鍵セレクトレジスタ（207）が所定の値を保持している場合に鍵データ(205)が提供される。したがって、N=1の場合を含め、暗号鍵の値は、LSI-A(104)の外部から提供されることはない。N個の鍵データ（205）の鍵１〜鍵Nの値は、LSI-A(104)の外部から書き換えることはできない。また、鍵１〜鍵Nの値は、LSI-A(104)の外部へ読み出すことはできない。鍵１〜鍵Nの値は、必要に応じてLSI-A(104)の設計データ（仕様データ）として使用者に提供される。即ち、暗号鍵の値は、LSI-A(104)の提供者が設計データとして機密管理すれば、部外者に知られることはない。特に、共通鍵暗号方式を適用する場合、使用者は、暗号鍵の値を知らなくてもLSI-A(104)を用いて暗号処理を行うことができる。一般に、データの機密性をより確実にするため、データごとに、あるいはデータを細分化して複数のブロックに分割し、分割されたブロックごとに異なる暗号鍵を用いた暗号処理が行われる。図２のように、鍵データ(205)が複数あれば、鍵セレクトレジスタ（207）の値を指定することによって異なる暗号鍵を適用することができる。さらに、LSI-A(104)の提供者は、異なるユーザに対して、鍵セレクトレジスタ207が保持可能な値の範囲を異ならせたLSI-A(104)を提供し、あるいは、セレクタ(206)の選択特性を異ならせたLSI-A(104)を提供し、同じ値が鍵セレクトレジスタ（207）に設定された場合に異なる鍵データ(205)が選択されるようにしてもよい。あるいは、異なるユーザに対して鍵１〜鍵Nの各値を異ならせたLSI-A(104)を提供してもよい。このようにすれば、異なるユーザ間でにおいて、同一の鍵セレクトレジスタ値に対して暗号鍵の値が異なるので、データの機密性をより確実にすることができる。
【００４４】
CPU I/F（208）は、LSI-A(104)とCPU(101)との間のデータのやり取りを可能にするための回路である。CPU(101)は、LSI-A(104)の鍵セレクトレジスタにアクセスしてその値を書き換えたり、転送バスI/F(202)およびHDD I/F(203)にアクセスしてそれらの動作に係る条件設定をしたり、起動や停止の制御をしたりする。また、共通鍵暗号処理ブロック(201)の処理条件を設定したりする。
【００４５】
CPU（101）は、CPU I/F（208）を介して鍵セレクタレジスタ(207)にアクセスし、鍵データの選択に係る値を書き込む。セレクタ(206)は、鍵セレクタレジスタ(207)に書き込まれた値に応じて鍵データ(205)の鍵１〜鍵Nのいずれかを選択する。鍵セレクタレジスタ(207)の値によっては、いずれの鍵データ(205)も選択されていない状態（非選択状態）になってもよい。非選択状態では、共通鍵暗号処理ブロック(201)が暗号処理を行わず、入力されたデータをHDD（106）へスルーさせてもよい。また、HDD(106)から読み出されたデータを復号化せず、スルーで転送バス側へ転送してもよい。
【００４６】
≪鍵提供回路の詳細構成≫
図３及び図４は、鍵供給回路の詳細構成の例を模式的に示す説明図である。図３において、鍵1〜鍵Nは、複数ビット（例えば128ビット等）の二進データからなる鍵値である。鍵供給回路は、バスを介して各鍵値を外部（図３では、共通鍵暗号処理ブロック（201）へ供給する回路である。各ビットの値としては、二進「0」「1」にそれぞれ対応する電圧源からの信号が配線される。鍵提供回路の各鍵値は、暗号鍵としての値を提供する際に、セレクタへ読み出される。鍵値の例として、図３の鍵１は二進「1010」のビット列を生成し、鍵２は二進「0110」のビット列を生成し、鍵Nは二進「0001」のビット列を生成するように構成されている。具体的には、LSIはハードウェア記述言語で設計したデータに基づいてレイアウト工程を経てLSIチップが作成される。前記レイアウト工程において、前述の鍵データ値は何も考慮しなければ、LSIチップ中の極限られた狭い領域に配置されるのが通常である。
【００４７】
上の例は、簡単のために各鍵データが4ビットのビット列からなると説明しているが、実際には128ビットや256ビット等、使用されるアルゴリズムに応じて定められた暗号鍵のビット長に応じて構成される。
【００４８】
図４においては、LSIチップの狭い領域に鍵データ用の配線が集中すると、第三者がLSIを入手して分解し、チップの配線パターンをすることにより鍵データの解読が容易となる。そのため、鍵データ用の二進「0」および「1」の信号線が、LSIチップ内で複雑に配線されるようにし、第三者によるLSIチップの回路解析を非常に困難にした例を示している。ここで、回路解析とは、LSIパッケージを取り除き電子顕微鏡などでリバースエンジニアリングを実施するといったような手法である。第三者による悪意ある解析を想定している。
【００４９】
≪暗号処理の設定手順≫
続いて、この実施形態に係るLSI-Aの回路動作の順序を説明する。図５は、この発明による暗号処理装置を動作させる際の設定手順を示すフローチャートである。
【００５０】
図５に示すように、暗号処理を行う際、まず、共通鍵暗号処理ブロック（201）の動作モードの設定を行なう（ステップS401）。共通鍵暗号処理ブロック（201）には、動作モードを外部から設定するための図示しないレジスタが設けられている。CPU（101）は、前記レジスタにアクセスし、共通鍵暗号処理ブロック（201）の動作モードを設定する。
【００５１】
ここで、動作モードとは、例えば、共通鍵暗号処理ブロック（201）に暗号処理を行わせるか、復号処理を行わせるかの設定である。また、暗号鍵のビット長が設定できるようになっていてもよい。さらに、暗号化および復号化の処理に係るアルゴリズム（前述のAESやDESなど）が選択できるようになっていてもよい。また、共通鍵暗号方式には、ブロック暗号方式とストリーム暗号方式があることが知られており、それぞれの方式に応じたアルゴリズムが選択できるようになっていてもよい。
【００５２】
なお、ブロック暗号方式は、データを一定の長さに分割してそれぞれを暗号化する方式である。ストリーム暗号方式は、データを分割せずに逐次（１〜数ビット毎）暗号化する方式である。さらに、ブロック暗号方式においては、分割したブロックに対して個別に暗号化を行うと特定ブロックが第三者に解読されるおそれがある。例えば、同じようなパターンが頻出するデータでは同じ暗号データが繰り返されるので、内容が推測され易い。そのような危険性を回避するため、前のブロックの暗号結果を次のブロックの暗号化に使用することにより、各ブロックに相関関係を持たせるブロックチェイニングと呼ばれる方式が多用される。動作モードとして、ブロックチェイニングのモードがさらに設定できるようになっていてもよい。ブロックチェイニングのモードとしては、ECB（Electronic CodeBook）、CBC（Chpher Block Chaining）等が知られている。
【００５３】
続いて、CPU(101)は、鍵セレクタレジスタ(207)にアクセスして使用する暗号鍵を指定する（ステップS402）。
さらに、CPU（101）は、各種I/F、即ち、転送バスI/F（202）およびハードディスクI/F（203）の動作条件を設定する。（ステップS403）例えば、転送バスI/F（202）およびハードディスクI/F（203）には、データ転送量や転送の方向（HDDのリードかライトか）を設定するためのレジスタが設けられている。そのほかに、独自の設定項目が設けられていてもよい。CPU(101)は、これらのレジスタにアクセスして、転送バスI/F（202）およびハードディスクI/F（203）の動作条件を設定する。
【００５４】
以上の、各種動作条件の設定が終了したら、CPU（101）は、ライト信号をアサートすることによって、データの転送をスタートさせる（ステップS404）。この実施形態に係る構成の場合、通常HDDがデータ転送のマスターを担う。そのため、CPU（101）はHDD I/F（203）に対してデータ転送の指示を行う。
【００５５】
≪暗号処理に係るLSI-Aの変形例≫
LSI-Aの異なる構成例について説明する。図６は、図１のブロックLSI-Aの異なる構成例を示すブロック図である。図６の態様は、LSI-Aが書き換え可能な鍵データを有する構成例である。
【００５６】
図１に示すLSI-A(104)は、各鍵データの値は、予め定められている。図１の構成においても、鍵データは外部から書き込み、読み出し等ができないため、暗号鍵の値が外部に漏れる虞がなく、セキュリティ管理上、非常に堅牢なシステムが実現される。しかし、内部に保持するN個の鍵データ値の設計データが全て流出し、第三者に漏洩してしまった場合は、暗号化機能の機密性が維持できなくなってしまう。そのような場合、暗号鍵が漏洩した原因が設計データ管理という人為的なものであるにせよ、LSI-A(104)のハードウェアあるいはそれを含む暗号処理装置のハードウェアが継続使用できなくなる可能性がある。すると、少なくともLSI-A(104)を交換するか、それを含む暗号処理装置ごと交換をせざるを得なくなる。それらの費用を誰が負担するにせよ、機密漏洩による損害発生は相当な額になることが予想されうる。そこで、このような万一の事態が生じても、損害を最小限に抑えることのできるように、図６のLSI-A(104)は、鍵供給回路(204)が固定値の鍵データのみでなく、外部から書き換え可能な鍵データを保持し得るように構成されている。
【００５７】
図６で、鍵保持レジスタ（501）は、CPU（101）からCPU I/F(208)を介してライトアクセス可能なレジスタであり、鍵データ値を保持するレジスタである。また、鍵保持レジスタ（501）はリードアクセス可能であってもよい。
【００５８】
図６のLSI-A(104)における鍵データの選択方法は、図２の場合と同様である。即ち、鍵セレクトレジスタ（207）に保持された値に応じて、鍵値保持レジスタ（501）あるいは、固定値の鍵データ(205)の鍵１〜鍵Nのいずれかが選択される。鍵セレクトレジスタ（207）は、CPU（101）からCPU I/F(208)を介してライトアクセス可能なレジスタである。また、鍵セレクトレジスタ（207）に設定された値によっては、前述した非選択状態になってもよい。
【００５９】
なお、図６に示す鍵供給回路(204)において、鍵セレクトレジスタ(207)を無くし、それに代えてCPU(101)が、どの鍵データを用いたかの情報をRAM（103）やLSI-A(104)の外部の図示しない不揮発性メモリに保持させるように制御してもよい。処理対象のデータごとに異なる暗号鍵を用いる場合は、各データに対応して前記情報を保持させる用に制御してもよい。
前述した実施の形態の他にも、この発明について種々の変形例があり得る。それらの変形例は、この発明の範囲に属さないと解されるべきものではない。この発明には、請求の範囲と均等の意味および前記範囲内でのすべての変形とが含まれるべきである。
【図面の簡単な説明】
【００６０】
【図１】この発明による暗号処理装置のハードウェア構成の一例を示すブロック図である。
【図２】図１に示すLSI-Aブロックの内部構成例を示すブロック図である。
【図３】図２に示す鍵供給回路ブロックの詳細構成の第１の例を示す説明図である。
【図４】図２に示す鍵供給回路ブロックの詳細構成の第２の例を示す説明図である。
【図５】この発明による暗号処理装置を動作させる際の設定手順を示すフローチャートである。
【図６】図１のブロックLSI-Aの異なる構成例を示すブロック図であり、LSI-Aが書き換え可能な鍵データを有する構成例を示すブロック図である。
【符号の説明】
【００６１】
101：CPU
102：ROM
103：RAM
104：LSI-A
105：LSI-B
106：HDD、ハードディスクドライブ
107：メイン・バス
108：転送バス
201：共通鍵暗号処理ブロック
202：転送バスI/F
203：HDD I/F
204：鍵供給回路
205：鍵データ
206：セレクタ
207：鍵セレクトレジスタ
208：CPU I/F
501：鍵保持レジスタ
【図１】
2009044630.tif 000003
【図２】
2009044630.tif 000004
【図３】
2009044630.tif 000005
【図４】
2009044630.tif 000006
【図５】
2009044630.tif 000007
【図６】
2009044630.tif 000008