(57)【特許請求の範囲】
【請求項１】
鍵格納部と、
所与の第１の鍵を用いて、復号化される入力データから前記復号化のための第２の鍵を復号し、前記第２の鍵を前記鍵格納部に格納する復号演算部と、
鍵有効判定回路と
を備え、
前記鍵有効判定回路は、
前記復号演算部にて前記第２の鍵が前記第１の鍵を用いて復号された場合には、前記第２の鍵が有効たることを示す鍵有効信号を活性化し、
前記第２の鍵が前記第１の鍵以外の鍵を用いて復号された場合には、前記鍵有効信号を非活性化する
暗号化・復号化回路。
【請求項２】
請求項１に記載の暗号化・復号化回路であって、
前記鍵有効信号は、前記復号演算部に与えられ、
前記復号演算部は、前記鍵有効信号が非活性化している場合には、前記復号化を停止する、あるいは、前記復号化の演算結果を廃棄する
暗号化・復号化回路。
【請求項３】
第１世代暗号鍵を格納した鍵格納部と、
暗号・復号演算部と、
暗号鍵・復号鍵世代一致判定回路と
を備え、
前記暗号・復号演算部は、
前記第１世代暗号鍵を用いて、入力データの暗号化のための第２世代暗号鍵を生成し、前記第１世代暗号鍵を更新して前記第２世代暗号鍵を前記鍵格納部に格納し、
順次、第ｎ世代暗号鍵（ｎ：自然数）を用いて、前記入力データの暗号化のための第ｎ＋１世代暗号鍵を生成し、前記第ｎ世代暗号鍵を更新して前記第ｎ＋１世代暗号鍵を前記鍵格納部に格納し、
前記第１世代暗号鍵を用いて、前記第１世代暗号鍵により暗号化された前記入力データの復号化のための第１世代復号鍵を生成し、前記第１世代復号鍵を前記鍵格納部に格納し、
順次、前記第ｎ＋１世代までの暗号鍵をそれぞれ用いて、前記入力データの復号化のための第ｎ＋１世代までの復号鍵をそれぞれ生成し、前記第ｎ世代復号鍵を更新して前記第ｎ＋１世代復号鍵を前記鍵格納部に格納し、
前記暗号鍵・復号鍵世代一致判定回路は、
前記暗号・復号演算部にて前記第ｎ世代復号鍵が、対応する前記第ｎ世代暗号鍵を用いて生成された場合には、前記第ｎ世代復号鍵が有効たることを示す暗号・復号鍵世代一致信号を活性化し、
前記第ｎ世代復号鍵が、対応する前記第ｎ世代暗号鍵以外の鍵を用いて生成された場合には、前記暗号・復号鍵世代一致信号を非活性化する
暗号化・復号化回路。
【請求項４】
請求項３に記載の暗号化・復号化回路であって、
前記暗号・復号鍵世代一致信号は、前記暗号・復号演算部に与えられ、
前記暗号・復号演算部は、前記暗号・復号鍵世代一致信号が非活性化している場合には、前記復号化を停止する、あるいは、前記復号化の演算結果を廃棄する
暗号化・復号化回路。
【請求項５】
第１世代暗号鍵を格納した鍵格納部と、
暗号・復号演算部と、
暗号鍵・復号鍵世代許可回路と
を備え、
前記暗号・復号演算部は、
前記第１世代暗号鍵を用いて、入力データの暗号化のための第２世代暗号鍵を生成し、前記第１世代暗号鍵を更新して前記第２世代暗号鍵を前記鍵格納部に格納し、
順次、第ｎ世代暗号鍵（ｎ：自然数）を用いて、前記入力データの暗号化のための第ｎ＋１世代暗号鍵を生成し、前記第ｎ世代暗号鍵を更新して前記第ｎ＋１世代暗号鍵を前記鍵格納部に格納し、
前記第１世代暗号鍵を用いて、前記第１世代暗号鍵により暗号化された前記入力データの復号化のための第１世代復号鍵を生成し、前記第１世代復号鍵を前記鍵格納部に格納し、
順次、前記第ｎ＋１世代までの暗号鍵をそれぞれ用いて、前記入力データの復号化のための第ｎ＋１世代までの復号鍵をそれぞれ生成し、前記第ｎ世代復号鍵を更新して前記第ｎ＋１世代復号鍵を前記鍵格納部に格納し、
前記暗号鍵・復号鍵世代許可回路は、
前記暗号・復号演算部にて前記第ｎ世代復号鍵が、対応する前記第ｎ世代暗号鍵を用いて有効に生成された場合には、前記第ｎ世代復号鍵の生成のたびに、前記第ｎ世代までの復号鍵が生成されたことを示す暗号鍵・復号鍵第ｎ世代許可信号を生成する
暗号化・復号化回路。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路に関する。
【背景技術】
【０００２】
下記特許文献１には、並列入力されるストリームデータに対して、鍵選択の煩雑さを回避可能な暗号化・復号化回路が示されている。この回路によれば、複数の入力インタフェースには、ＴＶ放送のストリームデータやＤＶＤに記録されたストリームデータ、ＣＡＴＶ回線のストリームデータなどが並列に入力され（第００１５段落参照）、その調停部によって、入力経路に対応した復号鍵と入力データとが暗復号演算部に出力される（第００３８段落参照）。そして、暗復号演算部は調停部から入力された復号鍵を用いて、入力された暗号化データを復号演算処理して、復号化データを出力する（第００３９段落参照）。
【０００３】
【特許文献１】特開２００４−８８５０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記特許文献１においては、その図１のレジスタ１３１〜１３４内に鍵データの内容を設定する構成に関し、ただ“鍵１３１〜１３４は、レジスタで構成され、ＴＶ受信装置の制御部により、視聴者のチャネル選択に応じた番組の復号鍵がそれぞれ設定される”（第００２５段落）と記述するだけで、具体的にどのような回路構成で鍵データ内容の設定を行うのかについて具体的記述を行ってはいない。よって、この記述に鑑みれば、単純に、入力インタフェースや入力ストリーム処理部から各レジスタ１３１〜１３４へと鍵データを供給するための配線が複数、設けられていると考えられる。しかし、このように入力インタフェースや入力ストリーム処理部から各レジスタ１３１〜１３４への配線を設けることは、配線量の増加と回路レイアウトの複雑化とを招くこととなる。
【０００５】
また、上記特許文献１においては、その図１の鍵格納部が、暗号化または復号化されるデータのチャネルごとに一つのレジスタ（１３１〜１３４の各々）しか有していない。レジスタに記憶された鍵を用いて新たな鍵をストリームデータから生成する場合、レジスタに記憶された第１の鍵を用いて第２の鍵を復号し、第２の鍵をレジスタに上書きしなければならない。その後、第１の鍵を用いて第２の鍵とは別の鍵を復号する場合には、再度、レジスタに第１の鍵を上書きする必要がある。しかし、このような暗号・復号演算は、データ処理のスループット低下を招く。
【０００６】
さらにまた、上記特許文献１においては、秘匿が必要な鍵の情報や、秘匿が必要な出力ストリームデータが、出力インタフェースを介して容易に外部に不正取得され、不正改ざんされやすい、との問題がある。
【０００７】
例えばＣＢＣ（Cipher Block Chaining：暗号ブロック連鎖）方式やＣＦＢ（Cipher FeedBack：暗号フィードバック）方式などのブロック暗号化・復号化方式を採用する場合には、第１鍵生成用のＩＶ（Initialization Vector：初期値ベクトル）を与える必要がある。このＩＶから生成された鍵は、暗号化・復号化回路を形成したチップ内、または、その外部に設けた不揮発性メモリ等に記憶させておけばよい。
【０００８】
ところが、チップコスト削減のために微細化プロセスを採用した場合、鍵や暗号化・復号化プログラムを保管する不揮発性メモリを、暗号化・復号化回路を形成したチップ内に１チップ化することが困難となる。不揮発性メモリの微細化は困難であって、ゲート長サイズ９０ｎｍレベルの先端プロセスを採用した場合、暗号化・復号化回路を形成することは可能な一方、不揮発性メモリを同プロセスで１チップ内に形成することが困難だからである。
【０００９】
もちろん、不揮発性メモリを暗号化・復号化回路を形成したチップ内に取り込んだ方が、鍵の安全性は高まる。不揮発性メモリを外付け構造にして汎用製品の不揮発性メモリを着脱可能とすると、不揮発性メモリを取り外して、記憶された鍵の内容を改ざんすることが容易に行われやすいからである。
【００１０】
すなわち、従来の上記特許文献１に記載の暗号化・復号化回路においては、秘匿されるべき鍵の情報に対する安全性の保障が考慮されていなかった。
【００１１】
この発明は上記の事情に鑑みてなされたもので、データ格納部に鍵データの内容を送信するための配線の量の増加を抑制可能であって、回路レイアウトの複雑化を招来しない暗号化・復号化回路の実現を目的とする。また、暗号・復号演算におけるスループットの向上が可能な暗号化・復号化回路の実現をも目的とする。さらに、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路の実現をも目的とする。
【課題を解決するための手段】
【００１５】
請求項１に記載の発明は、鍵格納部と、所与の第１の鍵を用いて、復号化される入力データから前記復号化のための第２の鍵を復号し、前記第２の鍵を前記鍵格納部に格納する復号演算部と、鍵有効判定回路とを備え、前記鍵有効判定回路は、前記復号演算部にて前記第２の鍵が前記第１の鍵を用いて復号された場合には、前記第２の鍵が有効たることを示す鍵有効信号を活性化し、前記第２の鍵が前記第１の鍵以外の鍵を用いて復号された場合には、前記鍵有効信号を非活性化する暗号化・復号化回路である。
【００１７】
請求項３に記載の発明は、第１世代暗号鍵を格納した鍵格納部と、暗号・復号演算部と、暗号鍵・復号鍵世代一致判定回路とを備え、前記暗号・復号演算部は、前記第１世代暗号鍵を用いて、入力データの暗号化のための第２世代暗号鍵を生成し、前記第１世代暗号鍵を更新して前記第２世代暗号鍵を前記鍵格納部に格納し、順次、第ｎ世代暗号鍵（ｎ：自然数）を用いて、前記入力データの暗号化のための第ｎ＋１世代暗号鍵を生成し、前記第ｎ世代暗号鍵を更新して前記第ｎ＋１世代暗号鍵を前記鍵格納部に格納し、前記第１世代暗号鍵を用いて、前記第１世代暗号鍵により暗号化された前記入力データの復号化のための第１世代復号鍵を生成し、前記第１世代復号鍵を前記鍵格納部に格納し、順次、前記第ｎ＋１世代までの暗号鍵をそれぞれ用いて、前記入力データの復号化のための第ｎ＋１世代までの復号鍵をそれぞれ生成し、前記第ｎ世代復号鍵を更新して前記第ｎ＋１世代復号鍵を前記鍵格納部に格納し、前記暗号鍵・復号鍵世代一致判定回路は、前記暗号・復号演算部にて前記第ｎ世代復号鍵が、対応する前記第ｎ世代暗号鍵を用いて生成された場合には、前記第ｎ世代復号鍵が有効たることを示す暗号・復号鍵世代一致信号を活性化し、前記第ｎ世代復号鍵が、対応する前記第ｎ世代暗号鍵以外の鍵を用いて生成された場合には、前記暗号・復号鍵世代一致信号を非活性化する暗号化・復号化回路である。
【００１８】
請求項５に記載の発明は、第１世代暗号鍵を格納した鍵格納部と、暗号・復号演算部と、暗号鍵・復号鍵世代許可回路とを備え、前記暗号・復号演算部は、前記第１世代暗号鍵を用いて、入力データの暗号化のための第２世代暗号鍵を生成し、前記第１世代暗号鍵を更新して前記第２世代暗号鍵を前記鍵格納部に格納し、順次、第ｎ世代暗号鍵（ｎ：自然数）を用いて、前記入力データの暗号化のための第ｎ＋１世代暗号鍵を生成し、前記第ｎ世代暗号鍵を更新して前記第ｎ＋１世代暗号鍵を前記鍵格納部に格納し、前記第１世代暗号鍵を用いて、前記第１世代暗号鍵により暗号化された前記入力データの復号化のための第１世代復号鍵を生成し、前記第１世代復号鍵を前記鍵格納部に格納し、順次、前記第ｎ＋１世代までの暗号鍵をそれぞれ用いて、前記入力データの復号化のための第ｎ＋１世代までの復号鍵をそれぞれ生成し、前記第ｎ世代復号鍵を更新して前記第ｎ＋１世代復号鍵を前記鍵格納部に格納し、前記暗号鍵・復号鍵世代許可回路は、前記暗号・復号演算部にて前記第ｎ世代復号鍵が、対応する前記第ｎ世代暗号鍵を用いて有効に生成された場合には、前記第ｎ世代復号鍵の生成のたびに、前記第ｎ世代までの復号鍵が生成されたことを示す暗号鍵・復号鍵第ｎ世代許可信号を生成する暗号化・復号化回路である。
【発明の効果】
【００２３】
請求項１に記載の発明によれば、鍵有効判定回路は、復号演算部にて第２の鍵が第１の鍵を用いて復号された場合には、第２の鍵が有効たることを示す鍵有効信号を活性化し、第２の鍵が第１の鍵以外の鍵を用いて復号された場合には、鍵有効信号を非活性化する。よって、鍵有効信号の活性化・非活性化に基づいて、入力データから復号される第２の鍵が、正当な第１の鍵を用いて生成されたのか、それ以外の不正な鍵を用いて生成されたのか、復号演算部が判定することが可能となる。これにより、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【００２５】
請求項３に記載の発明によれば、暗号鍵・復号鍵世代一致判定回路は、暗号・復号演算部にて第ｎ世代復号鍵が、対応する第ｎ世代暗号鍵を用いて生成された場合には、第ｎ世代復号鍵が有効たることを示す暗号・復号鍵世代一致信号を活性化し、第ｎ世代復号鍵が、対応する第ｎ世代暗号鍵以外の鍵を用いて生成された場合には、暗号・復号鍵世代一致信号を非活性化する。よって、暗号・復号鍵世代一致信号の活性化・非活性化に基づいて、暗号鍵から生成される復号鍵が、正当な暗号鍵を用いて生成されたのか、それ以外の不正な鍵を用いて生成されたのか、暗号・復号演算部が判定することが可能となる。これにより、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【００２６】
請求項５に記載の発明によれば、暗号鍵・復号鍵世代許可回路は、暗号・復号演算部にて第ｎ世代復号鍵が、対応する第ｎ世代暗号鍵を用いて有効に生成された場合には、第ｎ世代復号鍵の生成のたびに、第ｎ世代までの復号鍵が生成されたことを示す暗号鍵・復号鍵第ｎ世代許可信号を生成する。よって、世代の段階に応じて許可すべき演算処理を、暗号・復号演算部にて行うことができ、これにより、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【発明を実施するための最良の形態】
【００２８】
＜実施の形態１＞
本実施の形態は、暗号・復号演算部に、暗号・復号演算回路とそれを回避する回避経路とを含ませ、入力されたデータを、暗号・復号演算回路において暗号化または復号化させるか、暗号・復号演算回路を迂回してそのまま出力させるか選択可能とした暗号化・復号化回路であって、データ格納部に鍵データの内容を送信するための配線の量の増加を抑制可能としたものである。
【００２９】
本発明に係る暗号化・復号化回路の構成例を図１に示す。この暗号化・復号化回路は、マイコン内蔵のＩＣ（Integrated Circuit）チップ１で構成され、図１中の符号１の枠内の回路がワンチップ化されていることを示している。ＩＣチップ１は、暗号化・復号化回路の動作を制御するためのＣＰＵ（Central Processing Unit）３、データをやり取りするためのバス４、演算データや一時データを格納するためのＲＡＭ（Random Access Memory）６、および、暗号化・復号化を行う暗号・復号演算装置５を備え、ＣＰＵ３、ＲＡＭ６および暗号・復号演算装置５の各部はいずれもバス４に接続されている。
【００３０】
なお、ＩＣチップ１の外部には、ＣＰＵ３における動作プログラムや、暗号・復号演算装置５における演算に必要な鍵データを格納するための不揮発メモリ２が設けられており、不揮発メモリ２は、ＩＣチップ１の外部にまで延在するバス４に接続されている。なお、不揮発メモリ２は、バス４に着脱可能な汎用品であっても良いし、ＩＣチップ１とともに１チップ化された内蔵メモリであっても良い。
【００３１】
暗号・復号演算装置５は、ＣＰＵ３からの指示により暗号・復号演算装置５内各部を制御するための制御部５１、演算処理を施す入力データを一時格納するための入力バッファ５３、入力データの暗号化・復号化処理を行う際に必要な鍵データを保存する鍵格納部５４、ＣＢＣ（Cipher Block Chaining）方式などのブロック暗号化・復号化方式を採用する場合に必要なＩＶ（Initialization Vector）を保存するための初期値格納部５５、入力されたデータに対して暗号化・復号化演算を行う暗号・復号演算部５２、および、演算結果を一時保存するための出力バッファ５６を備える。
【００３２】
ここで、ＣＢＣ方式によるデータの暗号化を例に採り、データの大まかな流れを説明する。まず、ＣＰＵ３により、不揮発メモリ２に保管されている鍵データをバス４を通して鍵格納部５４へとコピーする。次にＣＰＵ３により初期値格納部５５にＩＶを設定する。ＩＶは隠蔽する必要がないため、ＩＣチップ１および不揮発メモリ２の外部から与えても、あるいは、不揮発メモリ２の内部から転送してもよい。
【００３３】
次に、ＣＰＵ３を通して制御部５１に演算内容についての指示を出す。ここでは、ＣＢＣ方式によるデータの暗号化を行うという指示を設定する。最後に、暗号化したいデータを入力バッファ５３に入力する。制御部５１は、入力バッファ５３に保管されたデータとＩＶとの排他的論理和（ＥＸＯＲ）の演算を暗号・復号演算部５２に行わせ、その後、暗号・復号演算部５２にて暗号化を行うよう指示し、演算結果を出力バッファ５６に格納させる。ＣＢＣ方式の場合、暗号・復号演算部５２からの出力データは、次に入力されるデータのＩＶとして利用されるため、その出力データの内容は初期値格納部５５に上書き保存される。
【００３４】
図２は、図１における暗号・復号演算装置５内の詳細構成を示す図である。図２に示すように、入力バッファ５３は、セレクタ５３ａ〜５３ｃ，５３ｇ、および、入力バッファ（Input Buffer：InBuf1〜3）５３ｄ〜５３ｆを備えている。鍵格納部５４は、セレクタ５４ａ，５４ｅ，５４ｉ、データ暗号化用の鍵格納部（Cipher Key：CKey1〜3）５４ｂ〜５４ｄ、および、データ復号化用の鍵格納部（Inverse Cipher Key：IKey1〜3）５４ｆ〜５４ｈを備えている。初期値格納部５５は、セレクタ５５ａ，５５ｅ、および、初期値（Initialization Vector：IV1〜3）格納部５５ｂ〜５５ｄを備えている。
【００３５】
暗号・復号演算部５２は、入力バッファ５３のセレクタ５３ｇからの出力と初期値格納部５５のセレクタ５５ｅからの出力とのＥＸＯＲ演算を行う排他的論理和回路５２ａ、排他的論理和回路５２ａの出力に対して暗号化または復号化を行う暗号・復号演算回路５２ｂ、入力バッファ５３のセレクタ５３ｇからの出力に、暗号・復号演算回路５２ｂを迂回させる回避経路５２ｄ、および、暗号・復号演算回路５２ｂの出力と、回避経路５２ｄの出力とのいずれかを選択的に出力するセレクタ５２ｃを備えている。出力バッファ５６は、セレクタ５６ａ，５６ｅ、および、出力バッファ（Output Buffer：OutBuf1〜3）５６ｂ〜５６ｄを備えている。
【００３６】
本実施の形態においては、３つの並列チャネルのデータストリーム処理を想定している。InBuf1，2，3などの数字の部分は、入力されるデータストリームのチャネルに対応している。ここでは各データストリームを処理する経路をチャネルという言葉で表現する。例えば、チャネル１にデータを入力する、などの表現を使用する。チャネル１〜３には、様々なデータ入力が可能であり、例えばチャネル１にＴＶ放送のストリームデータを、チャネル２にＤＶＤからのストリームデータ、チャネル３にＣＡＴＶ回線のストリームデータなどを割り当てることが可能である。なお、チャネル１に入力されるデータの演算には、添え字が1のIV1、InBuf1、CKey1、Ikey1、OutBuf1が利用される。他のチャネルも同様に同一の添え字が振られた回路を利用して処理される。暗号・復号演算部５２は全チャネルで共通に使用される。
【００３７】
本実施の形態においては、バス４との接続だけではなく複数の入力元（図中の“データ入力バス1,2,3”）との接続を可能にするため、入力バッファ５３の初段にセレクタ５３ａ〜５３ｃを設けている。複数の入力元とは、例えばＲＡＭ６からの直接入力などである。これにより、バス４単独で全チャネルのデータを転送するよりも、効率よくデータ転送を行える。但し、複数チャネルのデータが同時に入力された場合に競合が発生するため、どのチャネルデータを暗号・復号演算部５２で処理するのかを制御する回路が制御部５１に必要となる。出力バッファ５６も同様の考えで構成されている。データ入出力にバス４を使用するのか、それとも専用のデータ入力バス1,2,3を使用するのかは、予めＣＰＵ３から暗号・復号演算部５２内の制御部５１に指示をすればよい。
【００３８】
ここで、本実施の形態に係る暗号化・復号化回路による複数チャネルを用いたデータ転送手順を説明する。３つのデータストリームは、セレクタ５３ａ〜５３ｃを介してそれぞれ入力バッファ５３ｄ〜５３ｆ（InBuf1,2,3）に入力される。そして、チャネル１の暗号鍵または復号鍵は入力バッファ５３ｄ（InBuf1）からセレクタ５３ｇを介して回避経路５２ｄを通り、セレクタ５２ｃ及びセレクタ５４ａまたは５４ｅを介して鍵格納部５４ｂ（CKey1）または鍵格納部５４ｆ（IKey1）に保存される。また、チャネル１のＩＶは、同様にセレクタ５３ａを介して入力バッファ５３ｄ（InBuf１）に入力され、入力バッファ５３ｄ（InBuf1）からセレクタ５３ｇを介して回避経路５２ｄを通り、セレクタ５２ｃ，５５ａを介して初期値格納部５５ｂ（IV1）に保存される。
【００３９】
これらのデータは、暗号・復号演算回路５２ｂがセレクタ５２ｃ，５６ａを介して出力バッファ５６へのデータ出力を行っていないタイミングで随時、保存することが可能である。セレクタ５２ｃにおけるデータ転送の競合が起きないからである。暗号化・復号化したい平文データ（以後は“テキストデータ”と称する）が入力バッファ５３ｄ（InBuf1）に入力・保存されると、他チャネルの処理と競合が発生していないことを制御部５１が確認した上で、入力バッファ５３ｄ（InBuf1）、鍵格納部５４ｂ（CKey1）または５４ｆ（IKey1）、初期値格納部５５ｂ（IV1）に保存されているデータを用いて暗号・復号演算部５２にて演算が行われる。その演算結果は、出力バッファ５６ｂ（OutBuf1）に保存される。競合の判定には、次に示すチャネル優先処理判定部を用いる。
【００４０】
図３は、複数チャネルの各々に対する、暗号・復号演算回路５２ｂにおける暗号化または復号化の優先順位を判定するチャネル優先処理判定部５１ａのブロック図である。チャネル優先処理判定部５１ａは、制御部５１内に設けられている。なお、図４は、チャネル優先処理判定部５１ａにて各チャネルが採りうる各ステート（００），（０１），（１ｘ）の状態遷移図の例である。
【００４１】
優先処理判定部５１ａは、制御部５１内部において、チャネル1,2,3からの各チャネル処理要求信号を受ける。優先処理判定部５１ａは、現在の各チャネルのステータスを保存しておくチャネル1,2,3ステータスレジスタＳＲ１〜ＳＲ３、チャネル1,2,3処理要求信号とチャネル1,2,3ステータスレジスタ値とから各チャネルのデータ処理の優先順位を判定し、判定結果に基づいてチャネル1,2,3処理許可信号をそれぞれ出力するチャネル1,2,3優先順位判定回路ＳＪ１〜ＳＪ３、および、チャネル1,2,3処理許可信号から次のステートを決定するチャネル1,2,3次ステータス演算回路ＳＯ１〜ＳＯ３を含む。
【００４２】
チャネル1,2,3処理要求信号は、入力バッファ５３に演算可能な大きさのデータが格納されたことを受けて、制御部５１にて優先処理判定部５１ａに出力される。優先順位は、ステータスレジスタＳＲ１〜ＳＲ３内の各値に応じて決められる。図４の例では（００）を最優先ステート、（０１）を次優先ステート、（１ｘ）を低優先ステートにそれぞれ割り当てている。各チャネルは必ず（００）、（０１）、（１ｘ）、のいずれかのステートをとる。もちろん、チャネル数が増えた場合はステートを増やすことで対応する。
【００４３】
最優先ステート（００）は、他チャネルと処理要求が競合した場合であっても必ず処理されることを示す。次優先ステート（０１）は、最優先ステートのチャネルにデータ処理要求がない場合に処理されることを示す。低優先ステート（１ｘ）は最優先、次優先ステートのチャネルにデータ処理要求がない場合にデータ処理されることを示す。電源投入後の初期値は、チャネル１のステートを（００）、チャネル２のステートを（０１）、チャネル３のステートを（１ｘ）にしておけばよい。
【００４４】
図４においては、最優先ステート（００）に存在したチャネルが処理されると低優先ステート（１ｘ）に遷移する（矢印ａ）。それに伴い、次優先ステート（０１）に存在したチャネルが最優先ステート（００）に遷移し（矢印ｅ）、低優先ステート（１ｘ）に存在したチャネルが次優先ステート（０１）に遷移する（矢印ｄ）。最優先ステート（００）に存在するチャネルに処理要求がなく、次優先ステート（０１）に存在するチャネルに処理要求があった場合は、次優先ステート（０１）に存在したチャネルが処理される。そして、処理されたチャネルは低優先ステート（１ｘ）に遷移し（矢印ｂ）、代わりに低優先ステート（１ｘ）に存在したチャネルが次優先ステート（０１）に遷移する（矢印ｄ）。最優先ステート（００）に存在するチャネルおよび次優先ステート（０１）に存在するチャネルに処理要求がなく、低優先ステート（１ｘ）に存在するチャネルに処理要求があった場合は、低優先ステート（１ｘ）に存在したチャネルが処理される。この場合、処理されたチャネルは低優先ステート（１ｘ）を維持する（矢印ｃ）。
【００４５】
図５は、チャネル１がデータ処理要求を受け、続いてチャネル１が、次にチャネル３が、その次にチャネル１および２が同時に、それぞれデータ処理要求を受けた場合の、各チャネルステータスレジスタＳＲ１〜ＳＲ３の遷移を示す図である。図５におけるステート遷移を解説すれば、まず最初に最優先ステート（００）にあるチャネル１に処理要求があるので、チャネル１が処理される。処理後のチャネル１は低優先ステート（１ｘ）に遷移する（矢印ａ）。それに伴い、次優先ステート（０１）に存在したチャネル２が最優先ステート（００）に遷移し（矢印ｅ）、低優先ステート（１ｘ）に存在したチャネル３が次優先ステート（０１）に遷移する（矢印ｄ）。
【００４６】
次に、チャネル１に処理要求があるので、低優先ステート（１ｘ）に存在するチャネル１が処理される。この場合、処理されたチャネル１は低優先ステート（１ｘ）を維持する（矢印ｃ）。他のチャネル２および３も同じステートを維持する。次に、次優先ステート（０１）に存在するチャネル３に処理要求があるので、次優先ステート（０１）に存在したチャネル３が処理される。そして、処理されたチャネル３は低優先ステート（１ｘ）に遷移し（矢印ｂ）、代わりに低優先ステート（１ｘ）に存在したチャネル１が次優先ステート（０１）に遷移する（矢印ｄ）。次に、次優先ステート（０１）に存在するチャネル１および最優先ステート（００）に存在するチャネル２に処理要求があるので、最優先ステート（００）に存在するチャネル２が処理され、チャネル２は低優先ステート（１ｘ）に遷移する（矢印ａ）。それに伴い、次優先ステート（０１）に存在したチャネル１が最優先ステート（００）に遷移し（矢印ｅ）、低優先ステート（１ｘ）に存在したチャネル３が次優先ステート（０１）に遷移する（矢印ｄ）。
【００４７】
このように、優先処理判定部５１ａは、複数チャネルの各々に、優先順位を定めた各所定の状態（ステート）を割り当て、複数チャネルの各々に対する暗号化または復号化の処理要求に基づいて、複数チャネルの各々にステート間を遷移させることにより、優先順位を判定する。
【００４８】
なお、優先処理判定部５１ａによって判定されたチャネル処理許可信号に基づいて、図２の暗号・復号演算装置５中の各セレクタ５３ｇ，５４ａ，５４ｅ，５４ｉ，５５ａ，５５ｅ，５２ｃ，５６ａが制御部５１により制御されることで、データ入力状況に依存せず、適切なチャネルのデータを滞りなく処理することが可能となる。複数のデータストリームを処理する場合、本発明に係る暗号・復号演算装置５ではデータストリームの切り替えに伴うオーバーヘッドがないため、各チャネルの最大スループット＝演算回路の最大スループット／（チャネル数）と算出できる。
【００４９】
本実施の形態に係る暗号化・復号化回路によれば、暗号・復号演算部５２は、暗号・復号演算回路５２ｂと回避経路５２ｄとセレクタ５２ｃとを含み、セレクタ５２ｃの出力は、出力バッファ５６、鍵格納部５４および初期値格納部５５に接続され、鍵格納部５４および初期値格納部５５は、格納したデータを暗号・復号演算部５２に与える。よって、入力バッファ５３を介して入力されたデータを、暗号・復号演算回路５２ｂにおいて暗号化または復号化して、出力バッファ５６、鍵格納部５４および初期値格納部５５に出力することもできるし、暗号・復号演算回路５２ｂを迂回してそのまま出力バッファ５６、鍵格納部５４および初期値格納部５５に出力することもできる。従来技術のように、入力バッファ５３から鍵格納部５４および初期値格納部５５に配線を設ける構成を採用した場合、暗号・復号演算回路５２ｂにＣＢＣやＣＦＢなどのブロック暗号化・復号化方式を採用すると、暗号・復号演算回路５２ｂから鍵格納部５４および初期値格納部５５への配線も必要となり、鍵格納部５４および初期値格納部５５などのデータ格納部への接続配線が二重に必要となる。一方、本発明によれば、セレクタ５２ｃから鍵格納部５４および初期値格納部５５への一本の配線を設けるだけで済み、鍵格納部５４および初期値格納部５５に鍵データの内容を送信するための配線の量の増加を抑制可能で、回路レイアウトの複雑化を招来しない暗号化・復号化回路を実現できる。
【００５０】
さらに、本実施の形態に係る暗号化・復号化回路によれば、複数チャネルの各々に対する、暗号・復号演算回路５２ｂにおける暗号化または復号化の優先順位を判定する優先処理判定部５１ａをさらに備える。よって、複数チャネルのうち処理優先度の高いデータを、適切に暗号・復号演算回路５２ｂにおいて暗号化または復号化することが可能である。
【００５１】
＜実施の形態２＞
本実施の形態は、実施の形態１に係る暗号化・復号化回路の変形例であって、実施の形態１における鍵格納部５４において、入力データの１チャネルに対して、複数の記憶部（レジスタ）を設け、複数の記憶部の一つに入力データの暗号化または復号化のための第１の鍵を記憶させ、第１の鍵を用いて第２の鍵を入力データから復号し、第２の鍵を複数の記憶部の他の一つに記憶させるようにしたものである。
【００５２】
本実施の形態においても、図１〜図５に示した各回路構成が採用されている。本実施の形態においては、鍵格納部５４内の各鍵格納部５４ｂ〜５４ｄの詳細構成が示される。
【００５３】
鍵格納部５４ｂ（CKey1）の具体的な構成例を、図６および図７に鍵格納部５４ｂ１，５４ｂ２として示す。図６は、暗号・復号演算部５２にて暗号化または復号化される入力データの１チャネルに対して格納できる鍵が１つの場合、図７は格納できる鍵が２つの場合を表している。なお、図６および図７においては、鍵格納部５４ｂ１，５４ｂ２（CKey1）のみを表記しているが、鍵格納部５４ｃ（CKey2）、鍵格納部５４ｄ（CKey3）についても同様の構成である。以下では、説明の簡略化のため、鍵格納部５４ｂ〜５４ｄの代表として鍵格納部５４ｂ１，５４ｂ２（CKey1）の構成のみについて説明する。
【００５４】
図６および図７において、点線で囲んだ部分が鍵格納部５４ｂ１，５４ｂ２（CKey1）を表す。鍵格納部５４ｂ１，５４ｂ２（CKey1）は、鍵長分のビットで構成された、記憶部たるレジスタＲ１０（CKey1_0）と、データの選択回路Ｓ１０とを含む。選択回路Ｓ１０は、制御部５１からのライト要求信号（図６および図７では“CKey1_0ライト要求信号”と表記）が活性化したときに、鍵データ（図６および図７では“データ入力”と表記）をレジスタＲ１０の入力に対して出力するよう選択する。制御部５１からのライト要求信号の非活性化時には、選択回路Ｓ１０は、レジスタＲ１０の出力を入力にフィードバックさせる（現在の値が保持される）。
【００５５】
図７においては、レジスタＲ１０および選択回路Ｓ１０に加えて、もう１つのレジスタＲ１１（CKey1_1）および選択回路Ｓ１１が追加されている。レジスタＲ１０および選択回路Ｓ１０についての信号入力は図６の場合と同様である。また、ＡＮＤゲートＡ２０，Ａ１０，Ａ１１、ＯＲゲートＯ１０、インバータＩ２０も設けられている。
【００５６】
ＡＮＤゲートＡ２０には、制御部５１からのライト要求信号（“CKey1_1ライト要求信号”と表記）と、レジスタＲ１０（CKey1_0）に格納された鍵が暗号・復号演算部５２への出力として選択されたことを示す、制御部５１からのCKey1_0選択信号（“CKey1_0選択”と表記）にインバータＩ２０を通過させたものとが入力される。また、ＡＮＤゲートＡ１０には、CKey1_0選択信号とレジスタＲ１０（CKey1_0）の出力とが入力され、ＡＮＤゲートＡ１１には、レジスタＲ１１（CKey1_1）に格納された鍵が暗号・復号演算部５２への出力として選択されたことを示す、制御部５１からのCKey1_1選択信号（“CKey1_1選択”と表記）とレジスタＲ１１（CKey1_1）の出力とが入力される。ＡＮＤゲートＡ１０，Ａ１１の各出力は、ＯＲゲートＯ１０に入力され、ＯＲゲートＯ１０の出力が鍵格納部５４ｂ２（CKey1）の出力となる。
【００５７】
選択回路Ｓ１１にはＡＮＤゲートＡ２０の出力が与えられ、選択回路Ｓ１１は、制御部５１からのCKey1_1ライト要求信号が活性化し、かつ、レジスタＲ１０（CKey1_0）に格納された鍵が暗号・復号演算部５２に出力されなかった（CKey1_0が選択されなかった）場合に、選択回路Ｓ１０に与えられるのと同じ鍵データ（データ入力）をレジスタＲ１１の入力に対して出力するよう選択する。制御部５１からのCKey1_1ライト要求信号の非活性化時またはレジスタＲ１０（CKey1_0）に格納された鍵が暗号・復号演算部５２に出力された（CKey1_0が選択された）ときには、選択回路Ｓ１１は、レジスタＲ１１の出力を入力にフィードバックさせる（現在の値が保持される）。
【００５８】
このような構成により、CKey1_0ライト要求信号の活性化時には、レジスタＲ１０（CKey1_0）の内容は、選択回路Ｓ１０を介した鍵データ（データ入力）に書き換えられる。また、選択回路Ｓ１１を介した鍵データ（データ入力）のレジスタＲ１１（CKey1_1）への格納は、CKey1_1ライト要求信号があり、かつ、レジスタＲ１０（CKey1_0）からのデータの暗号化・復号化演算結果がデータ入力でない場合に、可能となる。
【００５９】
これはすなわち、特定の手順でしか鍵を生成することができないことを意味する。このように構成したのは、鍵の安全性の向上を目的としたからである。この例では、レジスタＲ１１（CKey1_1）内の鍵データを暗号・復号演算部５２にて暗号化・復号化させて再度、鍵格納部５４ｂ２に戻すと選択した場合には、その演算結果をレジスタＲ１０（CKey1_0）およびレジスタＲ１１（CKey1_1）の両方に保存できるのに対し、レジスタＲ１０（CKey1_0）内の鍵データを暗号・復号演算部５２にて暗号化・復号化させて再度、鍵格納部５４ｂ２に戻すと選択した場合には、その演算結果をレジスタＲ１０（CKey1_0）内にしか保存できないという制限を設けている。
【００６０】
暗号化・復号化が必要なデータに対して、１つの鍵しか使用しないアプリケーションもある（この場合は、図６の構成でよい）が、安全面から全てのデータ転送に同一の鍵を使用することは稀であり、ある元になる開始鍵を用いて暗号・復号演算部５２が一時鍵を作成し、この一時鍵でデータの暗号化・復号化を行うことが多い。
【００６１】
一時鍵の作成が複数回、行われることもよくある。一つのデータストリームに対し、不揮発メモリ２に保存された開始鍵とデータストリームに準備された一時鍵とを使用した暗号化演算の場合、図７の構成の鍵レジスタを用いることで、レジスタＲ１１（CKey1_1）に不揮発メモリ２内の開始鍵を保存し、その開始鍵を用いてデータストリームから与えられる一時鍵を復号し、一時鍵をレジスタＲ１０（CKey1_0）に保存する。図６の構成では、あるデータ長毎に一時鍵を更新する必要のあるデータの処理を行う場合、一時鍵の生成毎にレジスタＲ１０（CKey1_0）への開始鍵の再設定が必要となる。図７の構成のように、一方の鍵が他方の鍵を復号できるような回路構成を持つことで、データ切り替え時に発生する一時鍵の切り替えによるスループットの低下をなくすことが可能となる。
【００６２】
すなわち、本実施の形態においては、鍵格納部５４に、暗号・復号演算部５２にて暗号化される入力データの１チャネルに対して、複数のレジスタＲ１０，Ｒ１１を含ませる。そして、レジスタＲ１１には、暗号化のための第１の鍵（開始鍵）を記憶させ、暗号・復号演算部５２に、レジスタＲ１１の一つに記憶された第１の鍵（開始鍵）を用いて、暗号化または復号化のための第２の鍵（一時鍵）を入力データから復号させる。そして、この第２の鍵（一時鍵）をレジスタＲ１０に記憶する。
【００６３】
従来技術のように、鍵格納部が、暗号化または復号化される入力データのチャネルに対して一つのレジスタしか含まない場合には、一つのレジスタに記憶された第１の鍵（開始鍵）を用いて第２の鍵を復号し、第２の鍵をそのレジスタに上書きしなければならない。その後、第１の鍵（開始鍵）を用いて第２の鍵とは別の鍵を復号する場合には、再度、そのレジスタに第１の鍵（開始鍵）を上書きする必要がある。一方、本発明によれば、鍵格納部５４が入力データのチャネルごとに複数のレジスタＲ１０，Ｒ１１を含み、その一つに、上書きすることなく第１の鍵（開始鍵）を保存し続けることができる。よって、暗号・復号演算におけるスループットを向上させることができる。
【００６４】
また、本実施の形態に係る暗号化・復号化回路によれば、暗号・復号演算部５２は、レジスタＲ１０に記憶された第２の鍵（一時鍵）を用いて、暗号化または復号化のための第３の鍵（更なる一時鍵）を入力データから復号した場合、第３の鍵（更なる一時鍵）をレジスタＲ１１以外のもの（すなわちレジスタＲ１０）に記憶する。よって、レジスタＲ１１に記憶された第１の鍵（開始鍵）が、第２の鍵（一時鍵）を用いて復号された第３の鍵（更なる一時鍵）によって上書きされることが無く、レジスタＲ１０，Ｒ１１間で特定の方向にしか、復号した第３の鍵（更なる一時鍵）を保存することができない。これにより、不正な鍵を含ませて、レジスタＲ１１に記憶された第１の鍵（開始鍵）を上書きすることが困難となり、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【００６５】
なお、上記においては、鍵格納部５４内の暗号鍵の各鍵格納部５４ｂ〜５４ｄの構成を示したが、鍵格納部５４内の復号鍵の各鍵格納部５４ｆ〜５４ｈについても同様の構成を採用すれば良い。
【００６６】
＜実施の形態３＞
本実施の形態は、実施の形態２に係る暗号化・復号化回路の変形例であって、実施の形態２におけるように、入力データの１チャネルに対して、複数の記憶部（レジスタ）を設け、かつ、あるチャネルの記憶部に記憶された第１の鍵を用いて、暗号化または復号化のための第２の鍵を入力データから復号し、その第２の鍵を異なるチャネルの記憶部の一つに記憶するようにしたものである。
【００６７】
本実施の形態においても、図１〜図５に示した各回路構成が採用されている。また、本実施の形態においても、鍵格納部５４内の各鍵格納部５４ｂ〜５４ｄの詳細構成が示される。
【００６８】
チャネル１，２で使用されるデータストリームが共通で、かつ、暗号化・復号化演算を行うデータ位置が異なる場合、例えば映像データを記録しながら、記録が終わったデータを再生するような場合、チャネル１，２の演算で使用される鍵の一部はチャネル１，２で共通のものとなる。例えば、開始鍵はデータストリーム全体として共通のもので、開始鍵からデータストリーム内の特定のデータ長単位で使用する鍵を作成し、更に短い単位で特定のデータ長単位で使用する鍵から一時鍵を復号して演算を行う場合を考える。上記の図６の構成の場合、レジスタＲ１０（CKey1_0）にデータ全体で共通の開始鍵を設定し、レジスタＲ１０（CKey1_0）の共通開始鍵からデータ長単位の鍵を復号してレジスタＲ１０（CKey1_0）に上書き保存、その後、レジスタＲ１０（CKey1_0）の鍵を使用して更に短いデータ単位で使用する一時鍵を復号し、レジスタＲ１０（CKey1_0）に保存する、という作業が必要なため、一時鍵を生成するたびにこの操作が必要となり、データ転送のスループットが大きく落ちることが予想される。
【００６９】
図８は、本実施の形態における、鍵格納部５４ｂ（CKey1），５４ｃ（CKey2），５４ｄ（CKey3）の具体的な構成例を示す図である。図８においては、上記各部を、鍵格納部５４ｂ３（CKey1），５４ｃ１（CKey2），５４ｄ１（CKey3）として表示している。ここでは、鍵格納部５４ｄ１（CKey3）のレジスタＲ３１（CKey3_1）に設定された鍵を、鍵格納部５４ｂ３（CKey1），５４ｃ１（CKey2）において選択できる構成となっている。なお、チャネル１とチャネル２については機能に違いがないため、チャネル２の構成および信号についての説明は省略する。
【００７０】
チャネル１の鍵格納部５４ｂ３（CKey1）の構成は、ＡＮＤゲートＡ２０およびインバータＩ２０が省略されて、選択回路Ｓ１１に直接にCKey1_0ライト要求信号が与えられている点、および、ＡＮＤゲートＡ１２が追加され、ＯＲゲートＯ１０に代わって、ＡＮＤゲートＡ１０〜Ａ１２の各出力を受けるＯＲゲートＯ１１が採用されている点以外は、図７の鍵格納部５４ｂ２（CKey1）の構成と同様である。鍵格納部５４ｂ３（CKey1）に入力される信号の意味についても、図７の鍵格納部５４ｂ２（CKey1）の場合と同様であって、“CKey1_0選択”とは、チャネル１の暗号化演算に際して、レジスタＲ１０（CKey1_0）に格納された鍵が暗号・復号演算部５２に使用される場合に活性化する信号を指し、“データ入力”とは、セレクタ５２ｃから出力されたデータの入力を指す。また、“CKey1_0ライト要求”とは、チャネル１でレジスタＲ１０（CKey1_0）への鍵書き込み時に活性化する信号を指し、“CKey1_1ライト要求”とは、チャネル１でレジスタＲ１１（CKey1_1）への鍵書き込み時に活性化する信号を指す。そして、“CKey1_1選択”とは、チャネル１の暗号化演算に際して、レジスタＲ１１（CKey1_1）に格納された鍵が暗号・復号演算部５２に使用される場合に活性化する信号を指す。
【００７１】
また、鍵格納部５４ｄ１（CKey3）は、鍵長分のビットで構成された、記憶部たるレジスタＲ３０（CKey3_0）と、データの選択回路Ｓ３０とを含む。選択回路Ｓ３０は、制御部５１からのCKey3_0ライト要求信号が活性化したときに、鍵データ（“データ入力”）をレジスタＲ３０の入力に対して出力するよう選択する。制御部５１からのCKey3_0ライト要求信号の非活性化時には、選択回路Ｓ３０は、レジスタＲ３０の出力を入力にフィードバックさせる（現在の値が保持される）。
【００７２】
鍵格納部５４ｄ１（CKey3）は、レジスタＲ３０および選択回路Ｓ３０に加えて、もう１つのレジスタＲ３１（CKey3_1）および選択回路Ｓ３１を有している。また、ＡＮＤゲートＡ３０，Ａ３１、ＯＲゲートＯ３１も設けられている。
【００７３】
ＡＮＤゲートＡ３０には、レジスタＲ３０（CKey3_0）の出力と、レジスタＲ３０（CKey3_0）に格納された鍵が暗号・復号演算部５２への出力として選択されたことを示す、制御部５１からのCKey3_0選択信号（“CKey3_0選択”と表記）とが入力される。また、ＡＮＤゲートＡ３１には、レジスタＲ３１（CKey3_1）に格納された鍵が暗号・復号演算部５２への出力として選択されたことを示す、制御部５１からのCKey3_1選択信号とレジスタＲ３１（CKey3_1）の出力とが入力される。ＡＮＤゲートＡ３０，Ａ３１の各出力は、ＯＲゲートＯ３１に入力され、ＯＲゲートＯ３１の出力が鍵格納部５４ｄ１（CKey3）の出力となる。
【００７４】
なお、チャネル３のレジスタＲ３１（CKey3_1）の出力は、チャネル１のＡＮＤゲートＡ１２の一端に入力される。ＡＮＤゲートＡ１２の他端には、“CKey1でCKey3_1を選択”信号が入力される。この“CKey1でCKey3_1を選択”信号は、レジスタＲ３１（CKey3_1）に格納された鍵が、暗号・復号演算部５２にてチャネル１の暗号化演算に使用される場合に活性化する信号を指す。なお、“CKey3_0ライト要求”、“CKey3_1ライト要求”、“データ入力”、“CKey3_1選択”の各信号については、上述の“CKey1_0ライト要求”、“CKey1_1ライト要求”、“データ入力”、“CKey1_1選択”の各信号とは、チャネル１のレジスタＲ１０，Ｒ１１ではなくチャネル３のレジスタＲ３０，Ｒ３１である点だけが異なっている、同様の信号である。
【００７５】
本実施の形態においては、チャネル３のレジスタＲ３１（CKey3_1）にデータ全体で共通の鍵を設定し、レジスタＲ３１（CKey3_1）の共通鍵からデータ長単位の鍵を復号してチャネル１のレジスタＲ１１（CKey1_1）（チャネル２の場合はレジスタＲ２１（CKey2_1））に保存、その後、レジスタＲ１１（CKey1_1）（チャネル２の場合はレジスタＲ２１（CKey2_1））の鍵を使用して更に短いデータ単位で使用する一時鍵を復号し、レジスタＲ１０（CKey1_0）（チャネル２の場合はレジスタＲ２０（CKey2_0））に保存する。
【００７６】
すなわち、本実施の形態に係る暗号化・復号化回路によれば、鍵格納部５４は、暗号化または復号化のための、チャネル１および２に共通する第１の鍵が記憶されるレジスタＲ３０，Ｒ３１と、暗号・復号演算部５２にて暗号化または復号化される入力データのチャネル１および２にそれぞれ対応した、レジスタＲ１０，Ｒ１１，Ｒ２０，Ｒ２１とを含み、暗号・復号演算部５２は、レジスタＲ３１に記憶された第１の鍵を用いて、暗号化または復号化のための第２の鍵を入力データから復号し、第２の鍵をレジスタＲ１０，Ｒ１１，Ｒ２０，Ｒ２１の一つに記憶する。
【００７７】
従来技術のように、鍵格納部が、暗号化または復号化される入力データの１チャネルに対して一つのレジスタしか含まない場合には、一つのレジスタに記憶された第１の鍵（共通鍵）を用いて第２の鍵（データ長単位の鍵）を復号し、第２の鍵（データ長単位の鍵）をそのレジスタに上書きしなければならない。その後、第１の鍵（共通鍵）を用いて第２の鍵（データ長単位の鍵）とは別の鍵（一時鍵）を復号する場合には、再度、その記憶部に第１の鍵（共通鍵）を上書きする必要がある。一方、本発明によれば、鍵格納部５４が、チャネル１，２にそれぞれ対応したレジスタＲ１０，Ｒ１１，Ｒ２０，Ｒ２１とは別個のチャネル３のレジスタＲ３０，Ｒ３１を含み、レジスタＲ１０，Ｒ１１，Ｒ２０，Ｒ２１に上書きすることなく第１の鍵（共通鍵）を保存し続けることができる。よって、暗号・復号演算におけるスループットを向上させることができる。
【００７８】
また、本実施の形態に係る暗号化・復号化回路によれば、暗号・復号演算部５２は、レジスタＲ１１，Ｒ２１に記憶された第２の鍵（データ長単位の鍵）を用いて、暗号化または復号化のための第３の鍵（一時鍵）を入力データから復号した場合、第３の鍵（一時鍵）をレジスタＲ３０，Ｒ３１以外のレジスタＲ１０，Ｒ２０に記憶する。よって、レジスタＲ３０，Ｒ３１に記憶された第１の鍵（共通鍵）が、第２の鍵（データ長単位の鍵）を用いて復号された第３の鍵（一時鍵）によって上書きされることが無く、レジスタＲ３０，Ｒ３１およびレジスタＲ１０，Ｒ１１，Ｒ２０，Ｒ２１間で特定の方向にしか、復号した第３の鍵（一時鍵）を保存することができない。これにより、不正な鍵を含ませて、レジスタＲ３０，Ｒ３１に記憶された第１の鍵（共通鍵）を上書きすることが困難となり、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【００７９】
なお、上記においては、鍵格納部５４内の暗号鍵の各鍵格納部５４ｂ〜５４ｄの構成を示したが、鍵格納部５４内の復号鍵の各鍵格納部５４ｆ〜５４ｈについても同様の構成を採用すれば良い。
【００８０】
＜実施の形態４＞
本実施の形態は、実施の形態１に係る暗号化・復号化回路の変形例であって、実施の形態１における制御部５１内に鍵有効判定回路を設け、鍵有効判定回路から出力される鍵有効信号の活性化・非活性化に基づいて、入力データから復号される第２の鍵が、正当な第１の鍵を用いて生成されたのか、それ以外の不正な鍵を用いて生成されたのか判定するようにしたものである。
【００８１】
本実施の形態においても、図１〜図５に示した各回路構成が採用されている。本実施の形態においては、図２に示す制御部５１内の鍵有効判定回路５１ｂの詳細構成が示される。
【００８２】
鍵の安全性（正当性）を保障するためには、鍵復号の際、所定の鍵から演算された鍵かあるいはそうでないかを判定するための判定回路が制御部５１に必要となる。図９は、そのような鍵有効判定回路５１ｂである。鍵有効判定回路５１ｂは、インバータＩ５０、ＡＮＤゲートＡ５０、ＯＲゲートＯ５０およびレジスタＲ５０を備えている。
【００８３】
インバータＩ５０の入力には無効鍵入力信号が与えられる。無効鍵入力信号は、例えば使用された鍵が指定の鍵ではなくＣＰＵ３から既知の鍵として与えられた場合や、鍵の作成手順から外れた鍵生成を要求された場合に制御部５１にて活性化される。インバータＩ５０の出力はＡＮＤゲートＡ５０の一入力端に与えられる。ＡＮＤゲートＡ５０の他入力端には、レジスタＲ５０の出力が与えられる。
【００８４】
ＯＲゲートＯ５０の一入力端には有効鍵入力信号が与えられる。有効鍵入力信号は、所定の手続きで鍵を更新した場合に制御部５１にて活性化される。そして、ＯＲゲートＯ５０の出力はレジスタＲ５０に入力される。レジスタＲ５０の出力は鍵有効信号となる。
【００８５】
すなわち、本実施の形態においては、暗号・復号演算部５２にて、所与の第１の鍵を用いて、復号化される入力データから復号化のための第２の鍵を復号し、その第２の鍵を鍵格納部５４に格納する構成において、鍵有効判定回路５１ｂは、暗号・復号演算部５２にて第２の鍵が第１の鍵を用いて復号された場合には、レジスタＲ５０から出力される、第２の鍵が有効たることを示す鍵有効信号を活性化し、一方、第２の鍵が第１の鍵以外の鍵を用いて復号された場合には、鍵有効信号を非活性化する構成を採っている。
【００８６】
よって、本実施の形態に係る暗号化・復号化回路によれば、鍵有効信号を暗号・復号演算部５２に与えれば、鍵有効信号の活性化・非活性化に基づいて、入力データから復号される第２の鍵が、正当な第１の鍵を用いて生成されたのか、それ以外の不正な鍵を用いて生成されたのか、暗号・復号演算部５２が判定することが可能となる。これにより、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【００８７】
また、暗号・復号演算部５２においては、与えられた鍵有効信号が非活性化している場合には、入力データの復号化を停止する、あるいは、復号化の演算結果を廃棄するようにしておけばよい。そうすれば、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【００８８】
＜実施の形態５＞
本実施の形態は、実施の形態４に係る暗号化・復号化回路の変形例であって、実施の形態４における鍵有効判定回路５１ｂに、暗号・復号演算部５２にて復号鍵が暗号鍵を用いて生成された場合には、復号鍵が有効たることを示す復号鍵有効信号を活性化し、復号鍵が暗号鍵以外の鍵を用いて生成された場合には、復号鍵有効信号を非活性化する機能をさらに持たせて、復号鍵有効判定回路としたものである。
【００８９】
鍵格納部５４にあるレジスタＲ１０（CKey1_0）などは機能的にリセットの必要がなく、またレジスタ数も多く、面積削減の点からもリセットなしのフリップフロップやラッチで構成されることが多い。だが、データを復号する際に使用される復号鍵IKeyを、与えられた暗号鍵CKeyから生成・保存する場合、正規の手続きで復号鍵を生成した後に不正な暗号鍵を入力し、復号鍵を生成しないことで、暗号鍵は不正鍵だが復号鍵は正規の鍵である状態を生み出すことが可能となる。これは、暗号鍵とは全く関連のない復号鍵で演算できることを意味する。
【００９０】
暗号鍵が有効鍵でない場合に暗号・復号演算部５２での演算機能を停止させるような構成の場合には大きな問題とはならないが、所定の手続きの他に、外部から所定の手続きとは関係のない既知の鍵が入力された場合に既知のテキストデータを処理することを許すような柔軟な条件下で暗号化・復号化回路を構成する場合には、データの安全性の低下を招き得る。このような場合を想定した上で、暗号鍵に対して復号鍵が有効かどうかを判定するための本実施の形態に係る復号鍵有効判定回路を図１０に示す。
【００９１】
図１０に示すように、この復号鍵有効判定回路５１ｃは、図９の鍵有効判定回路５１ｂとほぼ同様の構成を有しており、インバータＩ５１、ＡＮＤゲートＡ５１、ＯＲゲートＯ５１およびレジスタＲ５１を備えている。なお、復号鍵有効判定回路５１ｃは、図９の鍵有効判定回路５１ｂが有していないＡＮＤゲートＡ５２をも備える。
【００９２】
インバータＩ５１の入力には無効鍵入力信号が与えられる。無効鍵入力信号は、図９の鍵有効判定回路５１ｂにおいて示したのと同様の信号である。インバータＩ５１の出力はＡＮＤゲートＡ５１の一入力端に与えられる。ＡＮＤゲートＡ５１の他入力端には、レジスタＲ５１の出力が与えられる。
【００９３】
ＡＮＤゲートＡ５２の一入力端には有効鍵入力信号が与えられる。ＡＮＤゲートＡ５２の他入力端には、有効な暗号鍵により復号鍵が生成されたことを示す信号（“有効鍵により復号鍵生成”と表記）が与えられる。そして、ＯＲゲートＯ５１の一入力端にはＡＮＤゲートＡ５２の出力が与えられる。有効鍵入力信号も、図９の鍵有効判定回路５１ｂにおいて示したのと同様の信号である。そして、ＯＲゲートＯ５１の出力はレジスタＲ５１に入力される。レジスタＲ５１の出力は復号鍵有効信号となる。
【００９４】
すなわち、本実施の形態においては、暗号・復号演算部５２にて、所与の暗号鍵を用いて、その暗号鍵により暗号化された入力データの復号化のための復号鍵を生成し、その復号鍵を鍵格納部５４に格納する構成において、復号鍵有効判定回路５１ｃは、暗号・復号演算部５２にて復号鍵が対応する暗号鍵を用いて復号された場合には、レジスタＲ５１から出力される、復号鍵が有効たることを示す復号鍵有効信号を活性化し、一方、復号鍵が対応する暗号鍵以外の鍵を用いて復号された場合には、復号鍵有効信号を非活性化する構成を採っている。
【００９５】
また、この回路では、有効鍵入力信号が入力され、かつ有効鍵による復号鍵生成が行われた場合にのみ、復号鍵有効信号が設定される。なお、リセットが発生した場合、復号鍵有効信号は初期化（無効）される。
【００９６】
本実施の形態に係る暗号化・復号化回路によれば、復号鍵有効判定回路５１ｃは、暗号・復号演算部５２にて復号鍵が対応する暗号鍵を用いて復号された場合には、復号鍵が有効たることを示す復号鍵有効信号を活性化し、復号鍵が対応する暗号鍵以外の鍵を用いて復号された場合には、復号鍵有効信号を非活性化する。よって、復号鍵有効信号を暗号・復号演算部５２に与えれば、復号鍵有効信号の活性化・非活性化に基づいて、暗号鍵から生成される復号鍵が、正当な暗号鍵を用いて生成されたのか、それ以外の不正な鍵を用いて生成されたのか、暗号・復号演算部５２が判定することが可能となる。これにより、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【００９７】
また、復号鍵有効信号を暗号・復号演算部５２に与え、暗号・復号演算部５２においては、与えられた復号鍵有効信号が非活性化している場合には、入力データの復号化を停止する、あるいは、復号化の演算結果を廃棄するようにしておけばよい。そうすれば、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【００９８】
＜実施の形態６＞
本実施の形態は、実施の形態５に係る暗号化・復号化回路の変形例であって、実施の形態５における復号鍵有効判定回路５１ｃに、暗号鍵の世代と復号鍵の世代が一致しているか否かを検出する機能をさらに持たせて、暗号鍵・復号鍵世代一致判定回路としたものである。
【００９９】
有効な手続きによる鍵生成であっても、演算開始時に元になる鍵（第一世代とする）、元になる鍵から復号されるデータ共通の鍵（第二世代とする）、データ共通の鍵から生成される一時鍵（第三世代）と、鍵生成とそれに伴う復号鍵の生成を続けた場合、世代の違う組み合わせの鍵を鍵セット（例えばCKey1_1のレジスタとIKey1_1のレジスタなど）に保管することが可能である。このような状態を禁止するため、図１１に本実施の形態に係る、暗号鍵と復号鍵のセットが同一世代かどうかを判定する暗号鍵・復号鍵世代一致判定回路を示す。
【０１００】
図１１に示すように、この暗号鍵・復号鍵世代一致判定回路５１ｄは、インバータＩ５２、ＡＮＤゲートＡ５３、選択回路Ｓ５０およびレジスタＲ５２を備えている。
【０１０１】
インバータＩ５２の入力には無効鍵入力信号が与えられる。無効鍵入力信号は、図９の鍵有効判定回路５１ｂにおいて示したのと同様の信号である。インバータＩ５２の出力はＡＮＤゲートＡ５３の一入力端に与えられる。ＡＮＤゲートＡ５３の他入力端には、レジスタＲ５２の出力が与えられる。
【０１０２】
選択回路Ｓ５０には、ＡＮＤゲートＡ５３の出力と、有効な暗号鍵により復号鍵が生成されたことを示す信号（“有効鍵により復号鍵生成”と表記）とが与えられる。また、選択回路Ｓ５０には有効鍵入力信号も与えられ（有効鍵入力信号は、図９の鍵有効判定回路５１ｂにおいて示したのと同様の信号である）、有効鍵入力信号の値に応じて、選択回路Ｓ５０からＡＮＤゲートＡ５３の出力を出力するか、有効な暗号鍵により復号鍵が生成されたことを示す信号を出力するかが決せられる。具体的には、有効鍵入力信号が活性化している場合に、有効な暗号鍵により復号鍵が生成されたことを示す信号が選択され、有効鍵入力信号が非活性化している場合に、ＡＮＤゲートＡ５３の出力が選択される。そして、選択回路Ｓ５０の出力はレジスタＲ５２に入力される。レジスタＲ５２の出力は暗号鍵・復号鍵世代一致信号となる。
【０１０３】
有効鍵入力信号が選択された場合で、かつ有効鍵による復号鍵生成が行われた場合に、暗号・復号鍵世代一致信号が設定される。世代一致信号は無効鍵入力信号が設定されるまで、例えば既知の鍵が入力された場合や、所定の鍵更新を行い、有効鍵入力信号が設定されている場合でも、復号鍵生成が選択されていない場合は、暗号・復号鍵世代一致信号はクリアされる。
【０１０４】
すなわち、本実施の形態においては、暗号・復号演算部５２にて、鍵格納部５４に格納された第１世代暗号鍵を用いて、入力データの暗号化のための第２世代暗号鍵を生成し、第１世代暗号鍵を更新して第２世代暗号鍵を鍵格納部５４に格納し、順次、第ｎ世代暗号鍵（ｎ：自然数）を用いて、入力データの暗号化のための第ｎ＋１世代暗号鍵を生成し、第ｎ世代暗号鍵を更新して第ｎ＋１世代暗号鍵を鍵格納部５４に格納し、第１世代暗号鍵を用いて、第１世代暗号鍵により暗号化された入力データの復号化のための第１世代復号鍵を生成し、第１世代復号鍵を鍵格納部５４に格納し、順次、第ｎ＋１世代までの暗号鍵をそれぞれ用いて、入力データの復号化のための第ｎ＋１世代までの復号鍵をそれぞれ生成し、第ｎ世代復号鍵を更新して第ｎ＋１世代復号鍵を鍵格納部５４に格納する構成において、暗号鍵・復号鍵世代一致判定回路５１ｄは、暗号・復号演算部５２にて第ｎ世代復号鍵が、対応する第ｎ世代暗号鍵を用いて生成された場合には、第ｎ世代復号鍵が有効たることを示す暗号・復号鍵世代一致信号を活性化し、一方、第ｎ世代復号鍵が、対応する第ｎ世代暗号鍵以外の鍵を用いて生成された場合には、暗号・復号鍵世代一致信号を非活性化する構成を採っている。
【０１０５】
よって、本実施の形態に係る暗号化・復号化回路によれば、暗号・復号鍵世代一致信号を暗号・復号演算部５２に与えることにより、暗号・復号鍵世代一致信号の活性化・非活性化に基づいて、暗号鍵から生成される復号鍵が、正当な暗号鍵を用いて生成されたのか、それ以外の不正な鍵を用いて生成されたのか、暗号・復号演算部５２が判定することが可能となる。これにより、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【０１０６】
また、暗号・復号演算部５２においては、与えられた暗号・復号鍵世代一致信号が非活性化している場合には、入力データの復号化を停止する、あるいは、復号化の演算結果を廃棄するようにしておけばよい。そうすれば、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【０１０７】
＜実施の形態７＞
本実施の形態は、実施の形態６に係る暗号化・復号化回路の変形例であって、暗号・復号演算部２５にて第ｎ世代復号鍵が、対応する第ｎ世代暗号鍵を用いて有効に生成された場合には、第ｎ世代復号鍵の生成のたびに、第ｎ世代までの復号鍵が生成されたことを示す暗号鍵・復号鍵第ｎ世代許可信号を生成する暗号化・復号化回路である。
【０１０８】
扱う暗号鍵・復号鍵が同一世代なのかだけではなく、鍵の更新により現状で、どの世代の鍵まで復号されたのかを管理することで、生成された鍵の世代単位のアクセス制御が可能となる。例えば第１世代ではチャネル１，２からレジスタＲ３１（CKey3_1）への鍵の参照を禁止するなどである。
【０１０９】
このような機能を実現するための暗号鍵・復号鍵世代許可回路５１ｅの回路例を図１２に示す。本実施の形態においては、３世代までの生成鍵を管理可能な回路を例に採って説明する。
【０１１０】
暗号鍵・復号鍵世代許可回路５１ｅは、インバータＩ５３、世代１条件判定回路Ｊ５１、世代１レジスタＲ５３、世代２条件判定回路Ｊ５２、世代２レジスタＲ５４、世代３条件判定回路Ｊ５３、世代３レジスタＲ５５、を有している。なお、世代１条件判定回路Ｊ５１、世代２条件判定回路Ｊ５２、世代３条件判定回路Ｊ５３は、いずれも多入力ＡＮＤ回路である。無効鍵入力信号（無効鍵入力信号は、図９の鍵有効判定回路５１ｂにおいて示したのと同様の信号である）はインバータＩ５３を介して、世代１条件判定回路Ｊ５１、世代２条件判定回路Ｊ５２、世代３条件判定回路Ｊ５３の各部に与えられる。
【０１１１】
世代１条件判定回路Ｊ５１には、開始鍵入力信号が与えられる。世代１条件判定回路Ｊ５１の出力は、世代１レジスタＲ５３に与えられる。世代１レジスタＲ５３の出力（世代１許可信号）は世代２条件判定回路Ｊ５２に与えられるとともに、世代１条件判定回路Ｊ５１にもフィードバックされる。世代２条件判定回路Ｊ５２には、有効鍵更新信号が与えられる。世代２条件判定回路Ｊ５２の出力は、世代２レジスタＲ５４に与えられる。世代２レジスタＲ５４の出力（世代２許可信号）は世代３条件判定回路Ｊ５３に与えられるとともに、世代２条件判定回路Ｊ５２にもフィードバックされる。世代３条件判定回路Ｊ５３にも、有効鍵更新信号が与えられる。世代３条件判定回路Ｊ５３の出力は、世代３レジスタＲ５５に与えられる。世代３レジスタＲ５５の出力（世代３許可信号）は、世代３条件判定回路Ｊ５３にフィードバックされる。
【０１１２】
世代１許可信号は、有効鍵として演算初回で使用される鍵（開始鍵と表記）が入力された場合に活性化される。世代２許可信号は、世代１許可信号が設定されている状態で、かつ、有効な鍵更新が行われた場合に活性化される。世代３許可信号は、世代１許可信号および世代２許可信号が活性化されている状態で、かつ、有効な鍵更新が行われている場合に活性化される。無効と判断される鍵が入力された場合には、各世代の許可信号はクリアされる。
【０１１３】
すなわち、本実施の形態においては、暗号・復号演算部５２にて、第１世代暗号鍵（開始鍵）を用いて、入力データの暗号化のための第２世代暗号鍵を生成し、第１世代暗号鍵を更新して第２世代暗号鍵を鍵格納部５４に格納し、順次、第ｎ世代暗号鍵（ｎ：自然数）を用いて、入力データの暗号化のための第ｎ＋１世代暗号鍵を生成し、第ｎ世代暗号鍵を更新して第ｎ＋１世代暗号鍵を鍵格納部５４に格納し、第１世代暗号鍵を用いて、第１世代暗号鍵により暗号化された入力データの復号化のための第１世代復号鍵を生成し、第１世代復号鍵を鍵格納部５４に格納し、順次、第ｎ＋１世代までの暗号鍵をそれぞれ用いて、入力データの復号化のための第ｎ＋１世代までの復号鍵をそれぞれ生成し、第ｎ世代復号鍵を更新して第ｎ＋１世代復号鍵を鍵格納部５４に格納する構成において、暗号鍵・復号鍵世代許可回路５１ｅは、暗号・復号演算部５２にて第ｎ世代復号鍵が、対応する第ｎ世代暗号鍵を用いて有効に生成された場合には、第ｎ世代復号鍵の生成のたびに、第ｎ世代までの復号鍵が生成されたことを示す暗号鍵・復号鍵第ｎ世代許可信号を生成する構成を採っている。
【０１１４】
よって、世代の段階に応じて許可すべき演算処理を、暗号・復号演算部５２にて行うことができ、これにより、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【０１１５】
＜実施の形態８＞
本実施の形態は、実施の形態１に係る暗号化・復号化回路の変形例であって、複数の論理ゲート回路の組み合わせを含み、その組み合わせにより所定の信号を生成して、所定の信号を開始鍵として出力する開始鍵出力回路を設けて、暗号・復号演算部に、開始鍵を用いて入力データの暗号化または復号化を行うようにさせるものである。
【０１１６】
暗号化されたデータを供給するシステムにおいて、扱う全ての暗号化データに共通で使用される元となる鍵が存在する。この鍵は復号を行う装置側に搭載される。この暗号化データ共通で使用される元になる鍵を不揮発メモリ２内に保存すると、不揮発メモリ２からバス４を通り、暗号・復号演算装置５に鍵が設定されるため、バス４をデバッガで観測することで、鍵を簡単に特定することができる。これを防ぐための手段として、元になる鍵を暗号・復号演算装置５内に設けた鍵（これを開始鍵と称する）で暗号化した上で、不揮発メモリ２に保存し、暗号・復号演算装置５の外部への開始鍵の読み出しが不可能な回路構成にすることで、元となる鍵の漏洩を防ぐことができる。本実施の形態における鍵格納部５４周辺の構成を図１３に示す。
【０１１７】
図１３においては、鍵格納部５４内のチャネル３の鍵格納部５４ｄ２に開始鍵出力回路Ｋ１が接続されている。開始鍵出力回路Ｋ１は、固定の開始鍵を出力するための回路であって、暗号・復号演算装置５内に設けられる。開始鍵出力回路Ｋ１は、ＡＮＤゲートやＯＲゲート等の複数の論理ゲート回路の組み合わせを含み、その組み合わせにより所定の信号が生成され、当該所定の信号を開始鍵として出力する。開始鍵出力回路Ｋ１は、論理ゲート回路の組み合わせで構成されるため、外部から開始鍵を変更することは不可能である。
【０１１８】
図８の鍵格納部５４ｄ１と比較すると、鍵格納部５４ｄ２においては、選択回路Ｓ３１にデータ入力がそのまま与えられるのではなく、データ入力と開始鍵出力回路Ｋ１からの開始鍵の信号とを受ける他の選択回路Ｓ３２の出力が、選択回路Ｓ３１に与えられる。なお、他の選択回路Ｓ３２の選択信号として、開始鍵選択信号が与えられる。
【０１１９】
鍵格納部５４ｄ２においては、開始鍵選択信号が活性化した場合、選択回路Ｓ３２はデータ入力ではなく開始鍵の信号を選択回路Ｓ３１に与える。そして、開始鍵がレジスタＲ３１（CKey3_1）に記憶される。そして、暗号・復号演算部５２は、開始鍵を用いて、入力データの暗号化または復号化のための所与の第１の鍵（この鍵は不揮発メモリ２から読み出す）を暗号化し、暗号化した第１の鍵を鍵格納部５４のレジスタＲ３１（CKey3_1）に上書きして格納する。
【０１２０】
開始鍵は最初にレジスタＲ３１（CKey3_1）にのみ読み出される構成となっているため、出力バッファ５６ｄ（OutBuf3）を通して開始鍵を外部に読み出すことは不可能である。なお、開始鍵は、ＣＰＵ３から制御部５１への開始鍵選択要求により、開始鍵選択信号が設定されることでレジスタＲ３１（CKey3_1）に保存される。
【０１２１】
すなわち、本実施の形態に係る暗号化・復号化回路によれば、複数の論理ゲート回路の組み合わせを含み、組み合わせにより所定の信号が生成され、所定の信号を開始鍵として出力する開始鍵出力回路Ｋ１を備え、暗号・復号演算部５２は、開始鍵を用いて、入力データを暗号化または復号化するための所与の第１の鍵を暗号化し、第１の鍵を鍵格納部５４に格納する。複数の論理ゲート回路の組み合わせにより開始鍵が生成されるため、外部から開始鍵を変更することは不可能である。よって、その開始鍵により暗号化された第１の鍵の安全性は向上するため、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【０１２２】
なお、データストリームはそのデータストリーム固有の鍵を持つものとし、データ共通の元になる鍵で暗号化されているものとする。また、ある特定の単位でデータストリーム内にデータストリーム固有の鍵で暗号化されたデータ鍵を持つものとする。また、データ鍵の単位よりもより小さい単位で、データ内にデータ鍵で暗号化された一時鍵を持つものとする。
【０１２３】
鍵の復号手順を図１４のフローチャートに示す。まず、装置固有の鍵を開始鍵として、レジスタＲ３１（CKey3_1）に保存する（ステップＳＴ１）。次に、不揮発メモリ２に保存されている暗号化されたデータ共通の元になる鍵を、レジスタＲ３１（CKey3_1）内の開始鍵で復号し、復号後の鍵をレジスタＲ３１（CKey3_1）に上書き保存する（ステップＳＴ２）。なお、データ共通の元になる鍵は不揮発メモリ内に開始鍵で暗号化されて保存されているものとする。
【０１２４】
次に、レジスタＲ３１（CKey3_1）に保存された元になる鍵を用いて、入力データに含まれているデータ固有の鍵を復号し、再度、復号後の鍵をレジスタＲ３１（CKey3_1）に上書き保存する（ステップＳＴ３）。次に、レジスタＲ３１（CKey3_1）に保存されたデータ固有の鍵を用いて、入力データに含まれている特定のデータ長ごとに保管されたデータ鍵を復号し、復号後の鍵をレジスタＲ１１（CKey1_1）またはレジスタＲ２１（CKey2_1）に保存する（ステップＳＴ４）。
【０１２５】
次に、レジスタＲ１１（CKey1_1）またはレジスタＲ２１（CKey2_1）に保存されたデータ鍵を用いて、更に小さいデータごとに含まれている暗号化された一時鍵を復号し、復号後の鍵をレジスタＲ１０（CKey1_0）またはレジスタＲ２０（CKey2_0）に保存する（ステップＳＴ５）。
【０１２６】
そして、レジスタＲ１０（CKey1_0）またはレジスタＲ２０（CKey2_0）に保存された一時鍵を使用して、入力データの暗号化または復号化を実施する（ステップＳＴ６）。
【０１２７】
＜実施の形態９＞
本実施の形態は、実施の形態８に係る暗号化・復号化回路の変形例であって、所定の信号たる正当性評価鍵を出力する正当性評価鍵出力回路をさらに設けて、正当性評価鍵を用いて不揮発メモリ２に保存した鍵のハッシュ値を求め、ハッシュ値に基づいて不揮発メモリ２内の鍵に改ざんがあったかどうかを評価するものである。
【０１２８】
実施の形態８のように開始鍵を用いた場合でも、不揮発メモリ２内に存在している暗号化されたデータ共通の元になる鍵や鍵の復号を行うプログラムを改ざんすることは不可能ではなく、不正運用を完全に防ぐことはできない。このような状況下でより安全性を高めるのが本実施の形態である。
【０１２９】
図１５に、本実施の形態における鍵格納部５４周辺の構成を示す。図１５においては、図１３の構成に加えてさらに、鍵格納部５４内のチャネル３の鍵格納部５４ｄ２にＲＯＭ正当性評価鍵出力回路Ｑ１が接続されている。ＲＯＭ正当性評価鍵出力回路Ｑ１は、所定の信号たるＲＯＭ（不揮発メモリ２）の正当性を評価するための鍵を出力する、開始鍵出力回路Ｋ１と同様に複数の論理ゲートで構成された回路である。
【０１３０】
ＲＯＭ正当性評価鍵出力回路Ｑ１は、開始鍵出力回路Ｋ１からの開始鍵に代わって、正当性評価鍵の信号を選択回路Ｓ３２に与えることができる。これにより、正当性評価鍵がレジスタＲ３１（CKey3_1）に記憶可能である。
【０１３１】
暗号・復号演算部５２は、暗号化された鍵を不揮発メモリ２へ格納する際に、正当性評価鍵を用いて当該鍵のハッシュ値を求め、そのハッシュ値をＭＡＣ（Message Authentication Code）として不揮発メモリ２に格納する。このときの不揮発メモリ２の記憶内容を示すのが、図１６である。図１６では、暗号化された鍵のデータがＲＯＭプログラム２０と、ハッシュ値がＭＡＣ２１と示されている。なお、ハッシュ関数は、暗号・復号演算部５２に対して一方向性の関数になるよう設定すればよい。
【０１３２】
そして、暗号・復号演算部５２にて演算を行う時には、暗号・復号演算部５２内の正当性評価回路ＥＳにて必ずＲＯＭプログラム２０の正当性評価を行う。この評価においては、まず、レジスタＲ３１（CKey3_1）にＲＯＭ正当性評価鍵を読み出す。そして、ＲＯＭ正当性評価鍵を用いて、外部より入力された所与の鍵の復号を行う。この復号された鍵がレジスタＲ３１（CKey3_1）に上書き保存される。この復号化された鍵を用いて、ＲＯＭプログラム２０全てをチャネル３から読み込み、ＭＡＣを計算する。計算結果はレジスタＲ３１（CKey3_1）に上書き保存する。なお、レジスタＲ３１（CKey3_1）から出力バッファ５６ｄ（OutBuf3）へのＭＡＣ計算結果の出力は、実施の形態７の世代管理により禁止すればよい。ＭＡＣの計算が終了した時点で、計算結果と、不揮発メモリ２内に保存されているＭＡＣ２１を、正当性評価回路ＥＳに入力する。
【０１３３】
図１７は、正当性評価回路ＥＳの具体構成例を、正当性評価回路ＥＳ１として示す図である。本実施の形態における正当性評価回路ＥＳ１は、比較回路ＣＰ１とレジスタＲ６０とを備える。比較回路ＣＰ１は、読み込んだＲＯＭプログラム２０から演算したＭＡＣ値と、入力バッファ５３ｆ（InBuf3）を介して読み込んだ、不揮発メモリ２内に保存されているＭＡＣ２１の値とを比較する。両者が一致しておれば、比較回路ＣＰ１は出力を活性化させ、レジスタＲ６０は比較回路ＣＰ１の出力を記憶する。また、両者が一致していなければ、比較回路ＣＰ１は出力を非活性化させる。レジスタＲ６０の出力がＲＯＭ正当性評価結果信号となる。なお、ＲＯＭ正当性評価結果信号は、レジスタＲ３１（CKey3_1）に上書き保存すればよい。
【０１３４】
すなわち、暗号・復号演算部５２内の正当性評価回路ＥＳ１は、暗号化された鍵を不揮発メモリ２へ格納する際に、正当性評価鍵を用いて鍵のハッシュ値を求め、そのハッシュ値をＭＡＣ２１として不揮発メモリ２に格納し、不揮発メモリ２に格納された鍵を用いた暗号化または復号化を行う際には、正当性評価鍵を用いて、不揮発メモリ２より読み出した鍵のハッシュ値を求め、そのハッシュ値と不揮発メモリ２に格納されたＭＡＣ２１のハッシュ値とを比較する。
【０１３５】
よって、不揮発メモリ２に格納された鍵が改ざんされておれば、不揮発メモリ２より読み出した鍵のハッシュ値と、不揮発メモリ２に格納されたＭＡＣ２１のハッシュ値とは異なるので、暗号・復号演算部５２は、不揮発メモリ２から読み出した鍵を用いた暗号化または復号化を停止すればよい。よって、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【０１３６】
＜実施の形態１０＞
本実施の形態は、実施の形態９に係る暗号化・復号化回路の変形例であって、所定の信号たるデバッガ検証鍵を出力するデバッガ検証鍵出力回路をさらに設けて、デバッガを用いたデータの不正取得等を防ぐものである。
【０１３７】
デバッガは、チップ開発時に効率よくファームウェアをデバッグするために利用される装置である。デバッガを用いると簡単にプログラムカウンタを変更できるため、例えば暗号化・復号化回路において、暗号化手続きのプログラムをスキップして実行することができる。このため、デバッガの使用を禁止する手段がないと、データの安全性を保障することができない。このような状況下でより安全性を高めるのが本実施の形態である。
【０１３８】
図１８に、本実施の形態における鍵格納部５４周辺の構成を示す。図１８においては、図１５の構成に加えてさらに、鍵格納部５４内のチャネル３の鍵格納部５４ｄ２にデバッガ検証鍵出力回路Ｂ１が接続されている。デバッガ検証鍵出力回路Ｂ１は、所定の信号たるデバッガ検証鍵を出力する、開始鍵出力回路Ｋ１と同様に複数の論理ゲートで構成された回路である。
【０１３９】
デバッガ検証鍵出力回路Ｂ１は、開始鍵出力回路Ｋ１からの開始鍵に代わって、デバッガ検証鍵の信号を選択回路Ｓ３２に与えることができる。これにより、デバッガ検証鍵がレジスタＲ３１（CKey3_1）に記憶可能である。
【０１４０】
暗号・復号演算部５２は、デバッガ検証鍵を用いて所定の検証用データを暗号化または復号化する。また、暗号・復号演算部５２は、デバッガが使用されていることを示すデバッガ使用信号を受け、デバッガが使用されていることを検知する。そして、デバッガが使用されていると検知した場合は、暗号化または復号化された検証用データと一致するパスワードの入力がない限り、入力データの暗号化または復号化を停止する。
【０１４１】
図１９は、正当性評価回路ＥＳの具体構成例を、正当性評価回路ＥＳ２として示す図である。本実施の形態における正当性評価回路ＥＳ２は、実施の形態９に示した比較回路ＣＰ１とレジスタＲ６０とを備える。比較回路ＣＰ１は、デバッガ検証鍵を用いて暗号化または復号化された所定の検証用データと、入力バッファ５３ｆ（InBuf3）を介して読み込んだ、ユーザから与えられるパスワードとを比較する。両者が一致しておれば、比較回路ＣＰ１は出力を活性化させ、レジスタＲ６０は比較回路ＣＰ１の出力を記憶する。また、両者が一致していなければ、比較回路ＣＰ１は出力を非活性化させる。レジスタＲ６０の出力がデバッガ使用許可信号となる。なお、デバッガ使用許可信号は、レジスタＲ３１（CKey3_1）に上書き保存すればよい。デバッガ使用許可信号の出力およびＲＯＭ正当性評価結果信号の出力に当たり、比較回路ＣＰ１及びレジスタＲ６０を共用しているが、ＲＯＭ正当性評価結果信号およびデバッガ使用許可信号は、いずれもレジスタＲ３１（CKey3_1）に上書き保存可能であるので、このような比較回路ＣＰ１及びレジスタＲ６０の共用は可能である。
【０１４２】
本実施の形態における正当性評価回路ＥＳ２は、さらにＯＲゲートＯ６０，Ｏ６１、およびレジスタＲ６１を備える。ＯＲゲートＯ６０の一入力端にはデバッガ使用信号が与えられ、他入力端にはレジスタＲ６１の正出力が与えられる。ＯＲゲートＯ６０の出力は、レジスタＲ６１に入力される。レジスタＲ６１の反転出力はＯＲゲートＯ６１の一入力端に与えられる。ＯＲゲートＯ６１の他入力端には、レジスタＲ６２の出力（デバッガ使用許可信号）が与えられる。ＯＲゲートＯ６１の出力はデータ出力許可信号となる。
【０１４３】
ＯＲゲートＯ６０の他入力端にはレジスタＲ６１の正出力が与えられるため、一度受け取ったデバッガ使用信号はレジスタＲ６１により保持される。これは、デバッガを使用してプログラムをスキップした後、デバッガを切り離された場合に対応するためである。
【０１４４】
デバッガ使用信号が活性化すれば、レジスタＲ６１の反転出力は非活性化するため、デバッガ使用許可信号が活性化しない限り、データ出力許可信号は活性化しない。
【０１４５】
すなわち、本実施の形態に係る暗号化・復号化回路によれば、暗号・復号演算部５２は、デバッガ検証鍵を用いて所定の検証用データを暗号化または復号化し、デバッガが使用されていることを検知した場合には、暗号化または復号化された検証用データと一致するパスワードの入力がない限り、入力データの暗号化または復号化を停止する。よって、デバッガによる鍵の不正取得および不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【０１４６】
＜実施の形態１１＞
本実施の形態は、実施の形態１０に係る暗号化・復号化回路の変形例であって、暗号化または復号化された検証用データと一致するパスワードの入力がたとえあったとしても、不揮発メモリ２より読み出した鍵のハッシュ値と、不揮発メモリ２に格納されたＭＡＣ２１のハッシュ値とが異なる場合には、入力データの暗号化または復号化を停止するようにしたものである。
【０１４７】
図２０は、本実施の形態における正当性評価回路ＥＳの具体構成例を、正当性評価回路ＥＳ３として示す図である。本実施の形態における正当性評価回路ＥＳ３は、図１９の正当性評価回路ＥＳ２の構成（比較回路ＣＰ２、レジスタＲ６１，Ｒ６２、ＯＲゲートＯ６０，Ｏ６１）に加え、ＲＯＭ正当性評価鍵出力回路Ｑ１の出力とデバッガ使用信号との演算を行って、演算結果をＲＯＭ正当性評価鍵出力とする演算回路ＯＰ、および、図１７のレジスタＲ６０から出力されるＲＯＭ正当性評価結果と、ＯＲゲートＯ６１の出力との論理積を演算するＡＮＤゲートＡ６０を更に備える。
【０１４８】
演算回路ＯＰは、デバッガ使用信号が非活性化状態にあるときは、ＲＯＭ正当性評価鍵出力回路Ｑ１からのＲＯＭ正当性評価鍵をそのまま出力するが、デバッガ使用信号が活性化状態にあるときは、ＲＯＭ正当性評価鍵出力回路Ｑ１からのＲＯＭ正当性評価鍵を改変して出力する。また、ＡＮＤゲートＡ６０は、デバッガ使用許可信号とＲＯＭ正当性評価結果とがともに活性化していない限り、データ出力許可信号を活性化しない。
【０１４９】
すなわち、暗号・復号演算部５２は、暗号化または復号化された検証用データと一致するパスワードの入力がたとえあったとしても、不揮発メモリ２より読み出した鍵のハッシュ値と、不揮発メモリ２に格納されたＭＡＣ２１のハッシュ値とが異なる場合には、入力データの暗号化または復号化を停止する。
【０１５０】
よって、デバッガによる鍵の不正取得および不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【０１５１】
＜実施の形態１２＞
本実施の形態は、実施の形態１１に係る暗号化・復号化回路の変形例であって、ＩＣチップ１が入力データを、暗号・復号演算部５２を介さずに転送可能である場合であっても、不揮発メモリ２より読み出した鍵のハッシュ値と、不揮発メモリ２に格納されたＭＡＣ２１のハッシュ値とが異なる場合、および、デバッガの使用を検知し、パスワードの入力がない場合、のうち少なくとも一方の場合には、入力データの転送を停止するようにしたものである。
【０１５２】
図２１は、本実施の形態に係る暗号化・復号化回路を示す図である。図２１においては、実施の形態１１にて生成されたＲＯＭ正当性評価結果およびデバッガ使用許可信号が、暗号・復号演算装置５の外に設けられたＡＮＤゲートＡ７０に入力され、ＡＮＤゲートＡ７０への両入力がともに活性化した状態でないと、ＩＣチップ１内に設けられたデータ転送用バスに載ったデータがチップ外に出力されないようにされている。具体的には、ＡＮＤゲートＡ７１が設けられ、ＡＮＤゲートＡ７０の出力とデータ転送用バスとがＡＮＤゲートＡ７１に入力されている。ＡＮＤゲートＡ７０の出力が活性化していないと、ＡＮＤゲートＡ７１は、データ転送用バスに載ったデータをチップ外に出力することはできない。
【０１５３】
すなわち、本実施の形態においては、入力データを、暗号・復号演算部５２を介さずに転送可能であり、不揮発メモリ２より読み出した鍵のハッシュ値と、不揮発メモリ２に格納されたＭＡＣ２１のハッシュ値とが異なる場合、および、デバッガの使用を検知し、パスワードの入力がない場合、のうち少なくとも一方の場合には、入力データの転送を停止するようにされている。
【０１５４】
よって、暗号・復号演算部５２を介さない入力データの転送をも禁止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【０１５５】
なお、本願発明においては、暗号・復号演算部５２についての記述は特にしていないが、暗号・復号演算部５２は一種類に限定されるものではない。例えば、データストリームを処理する際に利用する暗号の種類が複数ある場合は、図２の暗号・復号演算部５２に複数の暗号・復号演算部を搭載することが可能である。また、１つの暗号・復号演算部５２でスループットが足りない場合、同タイプの暗号・復号演算部を２つ搭載することも可能である。
【０１５６】
＜その他＞
上記においては、実施の形態９〜１１に示した正当性評価回路、および、実施の形態１２に示した暗号化・復号化回路については、いずれも実施の形態１の共通鍵暗号方式の暗号化・復号化回路を例に採り説明を行った。しかし、上記実施の形態９〜１２の思想は、共通鍵暗号方式以外の暗号化・復号化回路にも適用することができる。
【図面の簡単な説明】
【０１５７】
【図１】本発明に係る暗号化・復号化回路の構成例を示す図である。
【図２】本発明に係る暗号・復号演算装置内の詳細構成を示す図である。
【図３】実施の形態１における各チャネルの優先順位を制御するチャネル優先処理判定部のブロック図である。
【図４】チャネル優先処理判定部にて採りうる各ステートの状態遷移図の例である。
【図５】各チャネルステータスレジスタの遷移を示す図である。
【図６】実施の形態２における鍵格納部（CKey1）の具体的な構成例を示す図である。
【図７】実施の形態２における鍵格納部（CKey1）の他の構成例を示す図である。
【図８】実施の形態３における鍵格納部（CKey1,CKey2,CKey3）の具体的な構成例を示す図である。
【図９】実施の形態４における鍵有効判定回路を示す図である。
【図１０】実施の形態５における復号鍵有効判定回路を示す図である。
【図１１】実施の形態６における暗号鍵・復号鍵世代一致判定回路を示す図である。
【図１２】実施の形態７における暗号鍵・復号鍵世代許可回路を示す図である。
【図１３】実施の形態８におけるチャネル３の鍵格納部周辺の構成を示す図である。
【図１４】実施の形態８における復号処理を示すフローチャートである。
【図１５】実施の形態９におけるチャネル３の鍵格納部周辺の構成を示す図である。
【図１６】実施の形態９における不揮発性メモリの記憶内容を示す図である。
【図１７】実施の形態９における正当性評価回路の具体構成例を示す図である。
【図１８】実施の形態１０におけるチャネル３の鍵格納部周辺の構成を示す図である。
【図１９】実施の形態１０における正当性評価回路の具体構成例を示す図である。
【図２０】実施の形態１１における正当性評価回路の具体構成例を示す図である。
【図２１】実施の形態１２に係る暗号化・復号化回路を示す図である。
【符号の説明】
【０１５８】
１  ＩＣチップ、２  不揮発メモリ、３  ＣＰＵ、４  バス、５  暗号・復号演算装置、５１ａ  優先処理判定部、５１ｂ  鍵有効判定回路、５１ｃ  復号鍵有効判定回路、５１ｄ  暗号鍵・復号鍵世代一致判定回路、５１ｅ  暗号鍵・復号鍵世代許可回路、５２  暗号・復号演算部、５２ｂ  暗号・復号演算回路、５２ｄ  回避経路、５４  鍵格納部、Ｋ１  開始鍵出力回路、Ｑ１  正当性評価鍵出力回路、ＥＳ  正当性評価回路、Ｂ１  デバッガ検証鍵出力回路。
【図１】
0004818651.tif 000002
【図２】
0004818651.tif 000003
【図３】
0004818651.tif 000004
【図４】
0004818651.tif 000005
【図５】
0004818651.tif 000006
【図６】
0004818651.tif 000007
【図７】
0004818651.tif 000008
【図８】
0004818651.tif 000009
【図９】
0004818651.tif 000010
【図１０】
0004818651.tif 000011
【図１１】
0004818651.tif 000012
【図１２】
0004818651.tif 000013
【図１３】
0004818651.tif 000014
【図１４】
0004818651.tif 000015
【図１５】
0004818651.tif 000016
【図１６】
0004818651.tif 000017
【図１７】
0004818651.tif 000018
【図１８】
0004818651.tif 000019
【図１９】
0004818651.tif 000020
【図２０】
0004818651.tif 000021
【図２１】
0004818651.tif 000022