説明

暗号化・復号化回路

【課題】データ格納部に鍵データの内容を送信するための配線の量の増加を抑制可能であって、回路レイアウトの複雑化を招来しない暗号化・復号化回路を実現する。
【解決手段】暗号・復号演算部に、暗号・復号演算回路とそれを回避する回避経路とを含ませ、入力されたデータを、暗号・復号演算回路において暗号化または復号化させるか、暗号・復号演算回路を迂回してそのまま出力させるか選択可能とする。セレクタから鍵格納部および初期値格納部への一本の配線を設けるだけで済み、鍵格納部および初期値格納部に鍵データの内容を送信するための配線の量の増加を抑制可能で、回路レイアウトの複雑化を招来しない暗号化・復号化回路を実現できる。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路に関する。
【背景技術】
【0002】
下記特許文献1には、並列入力されるストリームデータに対して、鍵選択の煩雑さを回避可能な暗号化・復号化回路が示されている。この回路によれば、複数の入力インタフェースには、TV放送のストリームデータやDVDに記録されたストリームデータ、CATV回線のストリームデータなどが並列に入力され(第0015段落参照)、その調停部によって、入力経路に対応した復号鍵と入力データとが暗復号演算部に出力される(第0038段落参照)。そして、暗復号演算部は調停部から入力された復号鍵を用いて、入力された暗号化データを復号演算処理して、復号化データを出力する(第0039段落参照)。
【0003】
【特許文献1】特開2004−88505号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
上記特許文献1においては、その図1のレジスタ131〜134内に鍵データの内容を設定する構成に関し、ただ“鍵131〜134は、レジスタで構成され、TV受信装置の制御部により、視聴者のチャネル選択に応じた番組の復号鍵がそれぞれ設定される”(第0025段落)と記述するだけで、具体的にどのような回路構成で鍵データ内容の設定を行うのかについて具体的記述を行ってはいない。よって、この記述に鑑みれば、単純に、入力インタフェースや入力ストリーム処理部から各レジスタ131〜134へと鍵データを供給するための配線が複数、設けられていると考えられる。しかし、このように入力インタフェースや入力ストリーム処理部から各レジスタ131〜134への配線を設けることは、配線量の増加と回路レイアウトの複雑化とを招くこととなる。
【0005】
また、上記特許文献1においては、その図1の鍵格納部が、暗号化または復号化されるデータのチャネルごとに一つのレジスタ(131〜134の各々)しか有していない。レジスタに記憶された鍵を用いて新たな鍵をストリームデータから生成する場合、レジスタに記憶された第1の鍵を用いて第2の鍵を復号し、第2の鍵をレジスタに上書きしなければならない。その後、第1の鍵を用いて第2の鍵とは別の鍵を復号する場合には、再度、レジスタに第1の鍵を上書きする必要がある。しかし、このような暗号・復号演算は、データ処理のスループット低下を招く。
【0006】
さらにまた、上記特許文献1においては、秘匿が必要な鍵の情報や、秘匿が必要な出力ストリームデータが、出力インタフェースを介して容易に外部に不正取得され、不正改ざんされやすい、との問題がある。
【0007】
例えばCBC(Cipher Block Chaining:暗号ブロック連鎖)方式やCFB(Cipher FeedBack:暗号フィードバック)方式などのブロック暗号化・復号化方式を採用する場合には、第1鍵生成用のIV(Initialization Vector:初期値ベクトル)を与える必要がある。このIVから生成された鍵は、暗号化・復号化回路を形成したチップ内、または、その外部に設けた不揮発性メモリ等に記憶させておけばよい。
【0008】
ところが、チップコスト削減のために微細化プロセスを採用した場合、鍵や暗号化・復号化プログラムを保管する不揮発性メモリを、暗号化・復号化回路を形成したチップ内に1チップ化することが困難となる。不揮発性メモリの微細化は困難であって、ゲート長サイズ90nmレベルの先端プロセスを採用した場合、暗号化・復号化回路を形成することは可能な一方、不揮発性メモリを同プロセスで1チップ内に形成することが困難だからである。
【0009】
もちろん、不揮発性メモリを暗号化・復号化回路を形成したチップ内に取り込んだ方が、鍵の安全性は高まる。不揮発性メモリを外付け構造にして汎用製品の不揮発性メモリを着脱可能とすると、不揮発性メモリを取り外して、記憶された鍵の内容を改ざんすることが容易に行われやすいからである。
【0010】
すなわち、従来の上記特許文献1に記載の暗号化・復号化回路においては、秘匿されるべき鍵の情報に対する安全性の保障が考慮されていなかった。
【0011】
この発明は上記の事情に鑑みてなされたもので、データ格納部に鍵データの内容を送信するための配線の量の増加を抑制可能であって、回路レイアウトの複雑化を招来しない暗号化・復号化回路の実現を目的とする。また、暗号・復号演算におけるスループットの向上が可能な暗号化・復号化回路の実現をも目的とする。さらに、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路の実現をも目的とする。
【課題を解決するための手段】
【0012】
請求項1に記載の発明は、入力部と、暗号・復号演算部と、出力部と、データ格納部とを備え、前記暗号・復号演算部は、前記入力部を介して入力されるデータに、暗号化または復号化を行う暗号・復号演算回路と、前記入力部を介して入力されるデータに、前記暗号・復号演算回路を迂回させる回避経路と、前記暗号・復号演算回路の出力と、前記回避経路の出力とのいずれかを選択的に出力するセレクタとを含み、前記セレクタの出力は、前記出力部および前記データ格納部に与えられ、前記データ格納部は、格納したデータを前記暗号・復号演算部に与える暗号化・復号化回路である。
【0013】
請求項3に記載の発明は、暗号・復号演算部と、鍵格納部とを備え、前記鍵格納部は、前記暗号・復号演算部にて暗号化または復号化される入力データの1チャネルに対して、複数の記憶部を含み、前記複数の記憶部の一つには、前記暗号化または復号化のための第1の鍵が記憶され、前記暗号・復号演算部は、前記複数の記憶部の前記一つに記憶された前記第1の鍵を用いて、前記暗号化または復号化のための第2の鍵を前記入力データから復号し、前記第2の鍵を前記複数の記憶部の他の一つに記憶する暗号化・復号化回路である。
【0014】
請求項5に記載の発明は、暗号・復号演算部と、鍵格納部とを備え、前記鍵格納部は、第1記憶部と、前記暗号・復号演算部にて暗号化または復号化される入力データの複数のチャネルにそれぞれ対応した、複数の第2記憶部とを含み、前記第1記憶部には、前記暗号化または復号化のための、前記複数のチャネルに共通する第1の鍵が記憶され、前記暗号・復号演算部は、前記第1記憶部に記憶された前記第1の鍵を用いて、前記暗号化または復号化のための第2の鍵を前記入力データから復号し、前記第2の鍵を前記複数の第2記憶部に記憶する暗号化・復号化回路である。
【0015】
請求項7に記載の発明は、鍵格納部と、所与の第1の鍵を用いて、復号化される入力データから前記復号化のための第2の鍵を復号し、前記第2の鍵を前記鍵格納部に格納する復号演算部と、鍵有効判定回路とを備え、前記鍵有効判定回路は、前記復号演算部にて前記第2の鍵が前記第1の鍵を用いて復号された場合には、前記第2の鍵が有効たることを示す鍵有効信号を活性化し、前記第2の鍵が前記第1の鍵以外の鍵を用いて復号された場合には、前記鍵有効信号を非活性化する暗号化・復号化回路である。
【0016】
請求項9に記載の発明は、鍵格納部と、所与の暗号鍵を用いて、前記暗号鍵により暗号化された入力データの復号化のための復号鍵を生成し、前記復号鍵を前記鍵格納部に格納する暗号・復号演算部と、復号鍵有効判定回路とを備え、前記復号鍵有効判定回路は、前記暗号・復号演算部にて前記復号鍵が前記暗号鍵を用いて生成された場合には、前記復号鍵が有効たることを示す復号鍵有効信号を活性化し、前記復号鍵が前記暗号鍵以外の鍵を用いて生成された場合には、前記復号鍵有効信号を非活性化する暗号化・復号化回路である。
【0017】
請求項11に記載の発明は、第1世代暗号鍵を格納した鍵格納部と、暗号・復号演算部と、暗号鍵・復号鍵世代一致判定回路とを備え、前記暗号・復号演算部は、前記第1世代暗号鍵を用いて、入力データの暗号化のための第2世代暗号鍵を生成し、前記第1世代暗号鍵を更新して前記第2世代暗号鍵を前記鍵格納部に格納し、順次、第n世代暗号鍵(n:自然数)を用いて、前記入力データの暗号化のための第n+1世代暗号鍵を生成し、前記第n世代暗号鍵を更新して前記第n+1世代暗号鍵を前記鍵格納部に格納し、前記第1世代暗号鍵を用いて、前記第1世代暗号鍵により暗号化された前記入力データの復号化のための第1世代復号鍵を生成し、前記第1世代復号鍵を前記鍵格納部に格納し、順次、前記第n+1世代までの暗号鍵をそれぞれ用いて、前記入力データの復号化のための第n+1世代までの復号鍵をそれぞれ生成し、前記第n世代復号鍵を更新して前記第n+1世代復号鍵を前記鍵格納部に格納し、前記暗号鍵・復号鍵世代一致判定回路は、前記暗号・復号演算部にて前記第n世代復号鍵が、対応する前記第n世代暗号鍵を用いて生成された場合には、前記第n世代復号鍵が有効たることを示す暗号・復号鍵世代一致信号を活性化し、前記第n世代復号鍵が、対応する前記第n世代暗号鍵以外の鍵を用いて生成された場合には、前記暗号・復号鍵世代一致信号を非活性化する暗号化・復号化回路である。
【0018】
請求項13に記載の発明は、第1世代暗号鍵を格納した鍵格納部と、暗号・復号演算部と、暗号鍵・復号鍵世代許可回路とを備え、前記暗号・復号演算部は、前記第1世代暗号鍵を用いて、入力データの暗号化のための第2世代暗号鍵を生成し、前記第1世代暗号鍵を更新して前記第2世代暗号鍵を前記鍵格納部に格納し、順次、第n世代暗号鍵(n:自然数)を用いて、前記入力データの暗号化のための第n+1世代暗号鍵を生成し、前記第n世代暗号鍵を更新して前記第n+1世代暗号鍵を前記鍵格納部に格納し、前記第1世代暗号鍵を用いて、前記第1世代暗号鍵により暗号化された前記入力データの復号化のための第1世代復号鍵を生成し、前記第1世代復号鍵を前記鍵格納部に格納し、順次、前記第n+1世代までの暗号鍵をそれぞれ用いて、前記入力データの復号化のための第n+1世代までの復号鍵をそれぞれ生成し、前記第n世代復号鍵を更新して前記第n+1世代復号鍵を前記鍵格納部に格納し、前記暗号鍵・復号鍵世代許可回路は、前記暗号・復号演算部にて前記第n世代復号鍵が、対応する前記第n世代暗号鍵を用いて有効に生成された場合には、前記第n世代復号鍵の生成のたびに、前記第n世代までの復号鍵が生成されたことを示す暗号鍵・復号鍵第n世代許可信号を生成する暗号化・復号化回路である。
【0019】
請求項14に記載の発明は、暗号・復号演算部と、鍵格納部と、複数の論理ゲート回路の組み合わせを含み、前記組み合わせにより所定の信号が生成され、前記所定の信号を開始鍵として出力する開始鍵出力回路とを備え、前記暗号・復号演算部は、前記開始鍵を用いて、入力データの暗号化または復号化のための所与の第1の鍵を暗号化し、前記第1の鍵を前記鍵格納部に格納する暗号化・復号化回路である。
【発明の効果】
【0020】
請求項1に記載の発明によれば、暗号・復号演算部は、暗号・復号演算回路と回避経路とセレクタとを含み、セレクタの出力は、出力部およびデータ格納部に接続され、データ格納部は、格納したデータを暗号・復号演算部に与える。よって、入力部を介して入力されたデータを、暗号・復号演算回路において暗号化または復号化して、出力部およびデータ格納部に出力することもできるし、暗号・復号演算回路を迂回してそのまま出力部およびデータ格納部に出力することもできる。従来技術のように、入力部からデータ格納部に配線を設ける構成を採用した場合、暗号・復号演算回路にCBCやCFBなどのブロック暗号化・復号化方式を採用すると、暗号・復号演算回路からデータ格納部への配線も必要となり、データ格納部への接続配線が二重に必要となる。一方、本発明によれば、セレクタからデータ格納部への一本の配線を設けるだけで済み、データ格納部に鍵データの内容を送信するための配線の量の増加を抑制可能で、回路レイアウトの複雑化を招来しない暗号化・復号化回路を実現できる。
【0021】
請求項3に記載の発明によれば、鍵格納部は、暗号・復号演算部にて暗号化または復号化される入力データの1チャネルに対して、複数の記憶部を含み、暗号・復号演算部は、複数の記憶部の一つに記憶された、暗号化または復号化のための第1の鍵を用いて、暗号化または復号化のための第2の鍵を入力データから復号し、第2の鍵を複数の記憶部の他の一つに記憶する。従来技術のように、鍵格納部が、暗号化または復号化される入力データのチャネルに対して一つの記憶部しか含まない場合には、一つの記憶部に記憶された第1の鍵を用いて第2の鍵を復号し、第2の鍵をその記憶部に上書きしなければならない。その後、第1の鍵を用いて第2の鍵とは別の鍵を復号する場合には、再度、その記憶部に第1の鍵を上書きする必要がある。一方、本発明によれば、鍵格納部が入力データのチャネルごとに複数の記憶部を含み、複数の記憶部の一つに上書きすることなく第1の鍵を保存し続けることができる。よって、暗号・復号演算におけるスループットを向上させることができる。
【0022】
請求項5に記載の発明によれば、鍵格納部は、暗号化または復号化のための、複数のチャネルに共通する第1の鍵が記憶される第1記憶部と、暗号・復号演算部にて暗号化または復号化される入力データの複数チャネルにそれぞれ対応した、複数の第2記憶部とを含み、暗号・復号演算部は、第1記憶部に記憶された第1の鍵を用いて、暗号化または復号化のための第2の鍵を入力データから復号し、第2の鍵を複数の記憶部の他の一つに記憶する。従来技術のように、鍵格納部が、暗号化または復号化される入力データの1チャネルに対して一つの記憶部しか含まない場合には、一つの記憶部に記憶された第1の鍵を用いて第2の鍵を復号し、第2の鍵をその記憶部に上書きしなければならない。その後、第1の鍵を用いて第2の鍵とは別の鍵を復号する場合には、再度、その記憶部に第1の鍵を上書きする必要がある。一方、本発明によれば、鍵格納部が、複数チャネルにそれぞれ対応した複数の第2記憶部とは別個の第1記憶部を含み、複数の第2記憶部に上書きすることなく第1の鍵を保存し続けることができる。よって、暗号・復号演算におけるスループットを向上させることができる。
【0023】
請求項7に記載の発明によれば、鍵有効判定回路は、復号演算部にて第2の鍵が第1の鍵を用いて復号された場合には、第2の鍵が有効たることを示す鍵有効信号を活性化し、第2の鍵が第1の鍵以外の鍵を用いて復号された場合には、鍵有効信号を非活性化する。よって、鍵有効信号の活性化・非活性化に基づいて、入力データから復号される第2の鍵が、正当な第1の鍵を用いて生成されたのか、それ以外の不正な鍵を用いて生成されたのか、復号演算部が判定することが可能となる。これにより、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【0024】
請求項9に記載の発明によれば、復号鍵有効判定回路は、暗号・復号演算部にて復号鍵が暗号鍵を用いて生成された場合には、復号鍵が有効たることを示す復号鍵有効信号を活性化し、復号鍵が暗号鍵以外の鍵を用いて生成された場合には、復号鍵有効信号を非活性化する。よって、復号鍵有効信号の活性化・非活性化に基づいて、暗号鍵から生成される復号鍵が、正当な暗号鍵を用いて生成されたのか、それ以外の不正な鍵を用いて生成されたのか、暗号・復号演算部が判定することが可能となる。これにより、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【0025】
請求項11に記載の発明によれば、暗号鍵・復号鍵世代一致判定回路は、暗号・復号演算部にて第n世代復号鍵が、対応する第n世代暗号鍵を用いて生成された場合には、第n世代復号鍵が有効たることを示す暗号・復号鍵世代一致信号を活性化し、第n世代復号鍵が、対応する第n世代暗号鍵以外の鍵を用いて生成された場合には、暗号・復号鍵世代一致信号を非活性化する。よって、暗号・復号鍵世代一致信号の活性化・非活性化に基づいて、暗号鍵から生成される復号鍵が、正当な暗号鍵を用いて生成されたのか、それ以外の不正な鍵を用いて生成されたのか、暗号・復号演算部が判定することが可能となる。これにより、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【0026】
請求項13に記載の発明によれば、暗号鍵・復号鍵世代許可回路は、暗号・復号演算部にて第n世代復号鍵が、対応する第n世代暗号鍵を用いて有効に生成された場合には、第n世代復号鍵の生成のたびに、第n世代までの復号鍵が生成されたことを示す暗号鍵・復号鍵第n世代許可信号を生成する。よって、世代の段階に応じて許可すべき演算処理を、暗号・復号演算部にて行うことができ、これにより、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【0027】
請求項14に記載の発明によれば、複数の論理ゲート回路の組み合わせを含み、組み合わせにより所定の信号が生成され、所定の信号を開始鍵として出力する開始鍵出力回路を備え、暗号・復号演算部は、開始鍵を用いて、入力データを暗号化または復号化するための所与の第1の鍵を暗号化し、第1の鍵を鍵格納部に格納する。複数の論理ゲート回路の組み合わせにより開始鍵が生成されるため、外部から開始鍵を変更することは不可能である。よって、その開始鍵により暗号化された第1の鍵の安全性は向上するため、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【発明を実施するための最良の形態】
【0028】
<実施の形態1>
本実施の形態は、暗号・復号演算部に、暗号・復号演算回路とそれを回避する回避経路とを含ませ、入力されたデータを、暗号・復号演算回路において暗号化または復号化させるか、暗号・復号演算回路を迂回してそのまま出力させるか選択可能とした暗号化・復号化回路であって、データ格納部に鍵データの内容を送信するための配線の量の増加を抑制可能としたものである。
【0029】
本発明に係る暗号化・復号化回路の構成例を図1に示す。この暗号化・復号化回路は、マイコン内蔵のIC(Integrated Circuit)チップ1で構成され、図1中の符号1の枠内の回路がワンチップ化されていることを示している。ICチップ1は、暗号化・復号化回路の動作を制御するためのCPU(Central Processing Unit)3、データをやり取りするためのバス4、演算データや一時データを格納するためのRAM(Random Access Memory)6、および、暗号化・復号化を行う暗号・復号演算装置5を備え、CPU3、RAM6および暗号・復号演算装置5の各部はいずれもバス4に接続されている。
【0030】
なお、ICチップ1の外部には、CPU3における動作プログラムや、暗号・復号演算装置5における演算に必要な鍵データを格納するための不揮発メモリ2が設けられており、不揮発メモリ2は、ICチップ1の外部にまで延在するバス4に接続されている。なお、不揮発メモリ2は、バス4に着脱可能な汎用品であっても良いし、ICチップ1とともに1チップ化された内蔵メモリであっても良い。
【0031】
暗号・復号演算装置5は、CPU3からの指示により暗号・復号演算装置5内各部を制御するための制御部51、演算処理を施す入力データを一時格納するための入力バッファ53、入力データの暗号化・復号化処理を行う際に必要な鍵データを保存する鍵格納部54、CBC(Cipher Block Chaining)方式などのブロック暗号化・復号化方式を採用する場合に必要なIV(Initialization Vector)を保存するための初期値格納部55、入力されたデータに対して暗号化・復号化演算を行う暗号・復号演算部52、および、演算結果を一時保存するための出力バッファ56を備える。
【0032】
ここで、CBC方式によるデータの暗号化を例に採り、データの大まかな流れを説明する。まず、CPU3により、不揮発メモリ2に保管されている鍵データをバス4を通して鍵格納部54へとコピーする。次にCPU3により初期値格納部55にIVを設定する。IVは隠蔽する必要がないため、ICチップ1および不揮発メモリ2の外部から与えても、あるいは、不揮発メモリ2の内部から転送してもよい。
【0033】
次に、CPU3を通して制御部51に演算内容についての指示を出す。ここでは、CBC方式によるデータの暗号化を行うという指示を設定する。最後に、暗号化したいデータを入力バッファ53に入力する。制御部51は、入力バッファ53に保管されたデータとIVとの排他的論理和(EXOR)の演算を暗号・復号演算部52に行わせ、その後、暗号・復号演算部52にて暗号化を行うよう指示し、演算結果を出力バッファ56に格納させる。CBC方式の場合、暗号・復号演算部52からの出力データは、次に入力されるデータのIVとして利用されるため、その出力データの内容は初期値格納部55に上書き保存される。
【0034】
図2は、図1における暗号・復号演算装置5内の詳細構成を示す図である。図2に示すように、入力バッファ53は、セレクタ53a〜53c,53g、および、入力バッファ(Input Buffer:InBuf1〜3)53d〜53fを備えている。鍵格納部54は、セレクタ54a,54e,54i、データ暗号化用の鍵格納部(Cipher Key:CKey1〜3)54b〜54d、および、データ復号化用の鍵格納部(Inverse Cipher Key:IKey1〜3)54f〜54hを備えている。初期値格納部55は、セレクタ55a,55e、および、初期値(Initialization Vector:IV1〜3)格納部55b〜55dを備えている。
【0035】
暗号・復号演算部52は、入力バッファ53のセレクタ53gからの出力と初期値格納部55のセレクタ55eからの出力とのEXOR演算を行う排他的論理和回路52a、排他的論理和回路52aの出力に対して暗号化または復号化を行う暗号・復号演算回路52b、入力バッファ53のセレクタ53gからの出力に、暗号・復号演算回路52bを迂回させる回避経路52d、および、暗号・復号演算回路52bの出力と、回避経路52dの出力とのいずれかを選択的に出力するセレクタ52cを備えている。出力バッファ56は、セレクタ56a,56e、および、出力バッファ(Output Buffer:OutBuf1〜3)56b〜56dを備えている。
【0036】
本実施の形態においては、3つの並列チャネルのデータストリーム処理を想定している。InBuf1,2,3などの数字の部分は、入力されるデータストリームのチャネルに対応している。ここでは各データストリームを処理する経路をチャネルという言葉で表現する。例えば、チャネル1にデータを入力する、などの表現を使用する。チャネル1〜3には、様々なデータ入力が可能であり、例えばチャネル1にTV放送のストリームデータを、チャネル2にDVDからのストリームデータ、チャネル3にCATV回線のストリームデータなどを割り当てることが可能である。なお、チャネル1に入力されるデータの演算には、添え字が1のIV1、InBuf1、CKey1、Ikey1、OutBuf1が利用される。他のチャネルも同様に同一の添え字が振られた回路を利用して処理される。暗号・復号演算部52は全チャネルで共通に使用される。
【0037】
本実施の形態においては、バス4との接続だけではなく複数の入力元(図中の“データ入力バス1,2,3”)との接続を可能にするため、入力バッファ53の初段にセレクタ53a〜53cを設けている。複数の入力元とは、例えばRAM6からの直接入力などである。これにより、バス4単独で全チャネルのデータを転送するよりも、効率よくデータ転送を行える。但し、複数チャネルのデータが同時に入力された場合に競合が発生するため、どのチャネルデータを暗号・復号演算部52で処理するのかを制御する回路が制御部51に必要となる。出力バッファ56も同様の考えで構成されている。データ入出力にバス4を使用するのか、それとも専用のデータ入力バス1,2,3を使用するのかは、予めCPU3から暗号・復号演算部52内の制御部51に指示をすればよい。
【0038】
ここで、本実施の形態に係る暗号化・復号化回路による複数チャネルを用いたデータ転送手順を説明する。3つのデータストリームは、セレクタ53a〜53cを介してそれぞれ入力バッファ53d〜53f(InBuf1,2,3)に入力される。そして、チャネル1の暗号鍵または復号鍵は入力バッファ53d(InBuf1)からセレクタ53gを介して回避経路52dを通り、セレクタ52c及びセレクタ54aまたは54eを介して鍵格納部54b(CKey1)または鍵格納部54f(IKey1)に保存される。また、チャネル1のIVは、同様にセレクタ53aを介して入力バッファ53d(InBuf1)に入力され、入力バッファ53d(InBuf1)からセレクタ53gを介して回避経路52dを通り、セレクタ52c,55aを介して初期値格納部55b(IV1)に保存される。
【0039】
これらのデータは、暗号・復号演算回路52bがセレクタ52c,56aを介して出力バッファ56へのデータ出力を行っていないタイミングで随時、保存することが可能である。セレクタ52cにおけるデータ転送の競合が起きないからである。暗号化・復号化したい平文データ(以後は“テキストデータ”と称する)が入力バッファ53d(InBuf1)に入力・保存されると、他チャネルの処理と競合が発生していないことを制御部51が確認した上で、入力バッファ53d(InBuf1)、鍵格納部54b(CKey1)または54f(IKey1)、初期値格納部55b(IV1)に保存されているデータを用いて暗号・復号演算部52にて演算が行われる。その演算結果は、出力バッファ56b(OutBuf1)に保存される。競合の判定には、次に示すチャネル優先処理判定部を用いる。
【0040】
図3は、複数チャネルの各々に対する、暗号・復号演算回路52bにおける暗号化または復号化の優先順位を判定するチャネル優先処理判定部51aのブロック図である。チャネル優先処理判定部51aは、制御部51内に設けられている。なお、図4は、チャネル優先処理判定部51aにて各チャネルが採りうる各ステート(00),(01),(1x)の状態遷移図の例である。
【0041】
優先処理判定部51aは、制御部51内部において、チャネル1,2,3からの各チャネル処理要求信号を受ける。優先処理判定部51aは、現在の各チャネルのステータスを保存しておくチャネル1,2,3ステータスレジスタSR1〜SR3、チャネル1,2,3処理要求信号とチャネル1,2,3ステータスレジスタ値とから各チャネルのデータ処理の優先順位を判定し、判定結果に基づいてチャネル1,2,3処理許可信号をそれぞれ出力するチャネル1,2,3優先順位判定回路SJ1〜SJ3、および、チャネル1,2,3処理許可信号から次のステートを決定するチャネル1,2,3次ステータス演算回路SO1〜SO3を含む。
【0042】
チャネル1,2,3処理要求信号は、入力バッファ53に演算可能な大きさのデータが格納されたことを受けて、制御部51にて優先処理判定部51aに出力される。優先順位は、ステータスレジスタSR1〜SR3内の各値に応じて決められる。図4の例では(00)を最優先ステート、(01)を次優先ステート、(1x)を低優先ステートにそれぞれ割り当てている。各チャネルは必ず(00)、(01)、(1x)、のいずれかのステートをとる。もちろん、チャネル数が増えた場合はステートを増やすことで対応する。
【0043】
最優先ステート(00)は、他チャネルと処理要求が競合した場合であっても必ず処理されることを示す。次優先ステート(01)は、最優先ステートのチャネルにデータ処理要求がない場合に処理されることを示す。低優先ステート(1x)は最優先、次優先ステートのチャネルにデータ処理要求がない場合にデータ処理されることを示す。電源投入後の初期値は、チャネル1のステートを(00)、チャネル2のステートを(01)、チャネル3のステートを(1x)にしておけばよい。
【0044】
図4においては、最優先ステート(00)に存在したチャネルが処理されると低優先ステート(1x)に遷移する(矢印a)。それに伴い、次優先ステート(01)に存在したチャネルが最優先ステート(00)に遷移し(矢印e)、低優先ステート(1x)に存在したチャネルが次優先ステート(01)に遷移する(矢印d)。最優先ステート(00)に存在するチャネルに処理要求がなく、次優先ステート(01)に存在するチャネルに処理要求があった場合は、次優先ステート(01)に存在したチャネルが処理される。そして、処理されたチャネルは低優先ステート(1x)に遷移し(矢印b)、代わりに低優先ステート(1x)に存在したチャネルが次優先ステート(01)に遷移する(矢印d)。最優先ステート(00)に存在するチャネルおよび次優先ステート(01)に存在するチャネルに処理要求がなく、低優先ステート(1x)に存在するチャネルに処理要求があった場合は、低優先ステート(1x)に存在したチャネルが処理される。この場合、処理されたチャネルは低優先ステート(1x)を維持する(矢印c)。
【0045】
図5は、チャネル1がデータ処理要求を受け、続いてチャネル1が、次にチャネル3が、その次にチャネル1および2が同時に、それぞれデータ処理要求を受けた場合の、各チャネルステータスレジスタSR1〜SR3の遷移を示す図である。図5におけるステート遷移を解説すれば、まず最初に最優先ステート(00)にあるチャネル1に処理要求があるので、チャネル1が処理される。処理後のチャネル1は低優先ステート(1x)に遷移する(矢印a)。それに伴い、次優先ステート(01)に存在したチャネル2が最優先ステート(00)に遷移し(矢印e)、低優先ステート(1x)に存在したチャネル3が次優先ステート(01)に遷移する(矢印d)。
【0046】
次に、チャネル1に処理要求があるので、低優先ステート(1x)に存在するチャネル1が処理される。この場合、処理されたチャネル1は低優先ステート(1x)を維持する(矢印c)。他のチャネル2および3も同じステートを維持する。次に、次優先ステート(01)に存在するチャネル3に処理要求があるので、次優先ステート(01)に存在したチャネル3が処理される。そして、処理されたチャネル3は低優先ステート(1x)に遷移し(矢印b)、代わりに低優先ステート(1x)に存在したチャネル1が次優先ステート(01)に遷移する(矢印d)。次に、次優先ステート(01)に存在するチャネル1および最優先ステート(00)に存在するチャネル2に処理要求があるので、最優先ステート(00)に存在するチャネル2が処理され、チャネル2は低優先ステート(1x)に遷移する(矢印a)。それに伴い、次優先ステート(01)に存在したチャネル1が最優先ステート(00)に遷移し(矢印e)、低優先ステート(1x)に存在したチャネル3が次優先ステート(01)に遷移する(矢印d)。
【0047】
このように、優先処理判定部51aは、複数チャネルの各々に、優先順位を定めた各所定の状態(ステート)を割り当て、複数チャネルの各々に対する暗号化または復号化の処理要求に基づいて、複数チャネルの各々にステート間を遷移させることにより、優先順位を判定する。
【0048】
なお、優先処理判定部51aによって判定されたチャネル処理許可信号に基づいて、図2の暗号・復号演算装置5中の各セレクタ53g,54a,54e,54i,55a,55e,52c,56aが制御部51により制御されることで、データ入力状況に依存せず、適切なチャネルのデータを滞りなく処理することが可能となる。複数のデータストリームを処理する場合、本発明に係る暗号・復号演算装置5ではデータストリームの切り替えに伴うオーバーヘッドがないため、各チャネルの最大スループット=演算回路の最大スループット/(チャネル数)と算出できる。
【0049】
本実施の形態に係る暗号化・復号化回路によれば、暗号・復号演算部52は、暗号・復号演算回路52bと回避経路52dとセレクタ52cとを含み、セレクタ52cの出力は、出力バッファ56、鍵格納部54および初期値格納部55に接続され、鍵格納部54および初期値格納部55は、格納したデータを暗号・復号演算部52に与える。よって、入力バッファ53を介して入力されたデータを、暗号・復号演算回路52bにおいて暗号化または復号化して、出力バッファ56、鍵格納部54および初期値格納部55に出力することもできるし、暗号・復号演算回路52bを迂回してそのまま出力バッファ56、鍵格納部54および初期値格納部55に出力することもできる。従来技術のように、入力バッファ53から鍵格納部54および初期値格納部55に配線を設ける構成を採用した場合、暗号・復号演算回路52bにCBCやCFBなどのブロック暗号化・復号化方式を採用すると、暗号・復号演算回路52bから鍵格納部54および初期値格納部55への配線も必要となり、鍵格納部54および初期値格納部55などのデータ格納部への接続配線が二重に必要となる。一方、本発明によれば、セレクタ52cから鍵格納部54および初期値格納部55への一本の配線を設けるだけで済み、鍵格納部54および初期値格納部55に鍵データの内容を送信するための配線の量の増加を抑制可能で、回路レイアウトの複雑化を招来しない暗号化・復号化回路を実現できる。
【0050】
さらに、本実施の形態に係る暗号化・復号化回路によれば、複数チャネルの各々に対する、暗号・復号演算回路52bにおける暗号化または復号化の優先順位を判定する優先処理判定部51aをさらに備える。よって、複数チャネルのうち処理優先度の高いデータを、適切に暗号・復号演算回路52bにおいて暗号化または復号化することが可能である。
【0051】
<実施の形態2>
本実施の形態は、実施の形態1に係る暗号化・復号化回路の変形例であって、実施の形態1における鍵格納部54において、入力データの1チャネルに対して、複数の記憶部(レジスタ)を設け、複数の記憶部の一つに入力データの暗号化または復号化のための第1の鍵を記憶させ、第1の鍵を用いて第2の鍵を入力データから復号し、第2の鍵を複数の記憶部の他の一つに記憶させるようにしたものである。
【0052】
本実施の形態においても、図1〜図5に示した各回路構成が採用されている。本実施の形態においては、鍵格納部54内の各鍵格納部54b〜54dの詳細構成が示される。
【0053】
鍵格納部54b(CKey1)の具体的な構成例を、図6および図7に鍵格納部54b1,54b2として示す。図6は、暗号・復号演算部52にて暗号化または復号化される入力データの1チャネルに対して格納できる鍵が1つの場合、図7は格納できる鍵が2つの場合を表している。なお、図6および図7においては、鍵格納部54b1,54b2(CKey1)のみを表記しているが、鍵格納部54c(CKey2)、鍵格納部54d(CKey3)についても同様の構成である。以下では、説明の簡略化のため、鍵格納部54b〜54dの代表として鍵格納部54b1,54b2(CKey1)の構成のみについて説明する。
【0054】
図6および図7において、点線で囲んだ部分が鍵格納部54b1,54b2(CKey1)を表す。鍵格納部54b1,54b2(CKey1)は、鍵長分のビットで構成された、記憶部たるレジスタR10(CKey1_0)と、データの選択回路S10とを含む。選択回路S10は、制御部51からのライト要求信号(図6および図7では“CKey1_0ライト要求信号”と表記)が活性化したときに、鍵データ(図6および図7では“データ入力”と表記)をレジスタR10の入力に対して出力するよう選択する。制御部51からのライト要求信号の非活性化時には、選択回路S10は、レジスタR10の出力を入力にフィードバックさせる(現在の値が保持される)。
【0055】
図7においては、レジスタR10および選択回路S10に加えて、もう1つのレジスタR11(CKey1_1)および選択回路S11が追加されている。レジスタR10および選択回路S10についての信号入力は図6の場合と同様である。また、ANDゲートA20,A10,A11、ORゲートO10、インバータI20も設けられている。
【0056】
ANDゲートA20には、制御部51からのライト要求信号(“CKey1_1ライト要求信号”と表記)と、レジスタR10(CKey1_0)に格納された鍵が暗号・復号演算部52への出力として選択されたことを示す、制御部51からのCKey1_0選択信号(“CKey1_0選択”と表記)にインバータI20を通過させたものとが入力される。また、ANDゲートA10には、CKey1_0選択信号とレジスタR10(CKey1_0)の出力とが入力され、ANDゲートA11には、レジスタR11(CKey1_1)に格納された鍵が暗号・復号演算部52への出力として選択されたことを示す、制御部51からのCKey1_1選択信号(“CKey1_1選択”と表記)とレジスタR11(CKey1_1)の出力とが入力される。ANDゲートA10,A11の各出力は、ORゲートO10に入力され、ORゲートO10の出力が鍵格納部54b2(CKey1)の出力となる。
【0057】
選択回路S11にはANDゲートA20の出力が与えられ、選択回路S11は、制御部51からのCKey1_1ライト要求信号が活性化し、かつ、レジスタR10(CKey1_0)に格納された鍵が暗号・復号演算部52に出力されなかった(CKey1_0が選択されなかった)場合に、選択回路S10に与えられるのと同じ鍵データ(データ入力)をレジスタR11の入力に対して出力するよう選択する。制御部51からのCKey1_1ライト要求信号の非活性化時またはレジスタR10(CKey1_0)に格納された鍵が暗号・復号演算部52に出力された(CKey1_0が選択された)ときには、選択回路S11は、レジスタR11の出力を入力にフィードバックさせる(現在の値が保持される)。
【0058】
このような構成により、CKey1_0ライト要求信号の活性化時には、レジスタR10(CKey1_0)の内容は、選択回路S10を介した鍵データ(データ入力)に書き換えられる。また、選択回路S11を介した鍵データ(データ入力)のレジスタR11(CKey1_1)への格納は、CKey1_1ライト要求信号があり、かつ、レジスタR10(CKey1_0)からのデータの暗号化・復号化演算結果がデータ入力でない場合に、可能となる。
【0059】
これはすなわち、特定の手順でしか鍵を生成することができないことを意味する。このように構成したのは、鍵の安全性の向上を目的としたからである。この例では、レジスタR11(CKey1_1)内の鍵データを暗号・復号演算部52にて暗号化・復号化させて再度、鍵格納部54b2に戻すと選択した場合には、その演算結果をレジスタR10(CKey1_0)およびレジスタR11(CKey1_1)の両方に保存できるのに対し、レジスタR10(CKey1_0)内の鍵データを暗号・復号演算部52にて暗号化・復号化させて再度、鍵格納部54b2に戻すと選択した場合には、その演算結果をレジスタR10(CKey1_0)内にしか保存できないという制限を設けている。
【0060】
暗号化・復号化が必要なデータに対して、1つの鍵しか使用しないアプリケーションもある(この場合は、図6の構成でよい)が、安全面から全てのデータ転送に同一の鍵を使用することは稀であり、ある元になる開始鍵を用いて暗号・復号演算部52が一時鍵を作成し、この一時鍵でデータの暗号化・復号化を行うことが多い。
【0061】
一時鍵の作成が複数回、行われることもよくある。一つのデータストリームに対し、不揮発メモリ2に保存された開始鍵とデータストリームに準備された一時鍵とを使用した暗号化演算の場合、図7の構成の鍵レジスタを用いることで、レジスタR11(CKey1_1)に不揮発メモリ2内の開始鍵を保存し、その開始鍵を用いてデータストリームから与えられる一時鍵を復号し、一時鍵をレジスタR10(CKey1_0)に保存する。図6の構成では、あるデータ長毎に一時鍵を更新する必要のあるデータの処理を行う場合、一時鍵の生成毎にレジスタR10(CKey1_0)への開始鍵の再設定が必要となる。図7の構成のように、一方の鍵が他方の鍵を復号できるような回路構成を持つことで、データ切り替え時に発生する一時鍵の切り替えによるスループットの低下をなくすことが可能となる。
【0062】
すなわち、本実施の形態においては、鍵格納部54に、暗号・復号演算部52にて暗号化される入力データの1チャネルに対して、複数のレジスタR10,R11を含ませる。そして、レジスタR11には、暗号化のための第1の鍵(開始鍵)を記憶させ、暗号・復号演算部52に、レジスタR11の一つに記憶された第1の鍵(開始鍵)を用いて、暗号化または復号化のための第2の鍵(一時鍵)を入力データから復号させる。そして、この第2の鍵(一時鍵)をレジスタR10に記憶する。
【0063】
従来技術のように、鍵格納部が、暗号化または復号化される入力データのチャネルに対して一つのレジスタしか含まない場合には、一つのレジスタに記憶された第1の鍵(開始鍵)を用いて第2の鍵を復号し、第2の鍵をそのレジスタに上書きしなければならない。その後、第1の鍵(開始鍵)を用いて第2の鍵とは別の鍵を復号する場合には、再度、そのレジスタに第1の鍵(開始鍵)を上書きする必要がある。一方、本発明によれば、鍵格納部54が入力データのチャネルごとに複数のレジスタR10,R11を含み、その一つに、上書きすることなく第1の鍵(開始鍵)を保存し続けることができる。よって、暗号・復号演算におけるスループットを向上させることができる。
【0064】
また、本実施の形態に係る暗号化・復号化回路によれば、暗号・復号演算部52は、レジスタR10に記憶された第2の鍵(一時鍵)を用いて、暗号化または復号化のための第3の鍵(更なる一時鍵)を入力データから復号した場合、第3の鍵(更なる一時鍵)をレジスタR11以外のもの(すなわちレジスタR10)に記憶する。よって、レジスタR11に記憶された第1の鍵(開始鍵)が、第2の鍵(一時鍵)を用いて復号された第3の鍵(更なる一時鍵)によって上書きされることが無く、レジスタR10,R11間で特定の方向にしか、復号した第3の鍵(更なる一時鍵)を保存することができない。これにより、不正な鍵を含ませて、レジスタR11に記憶された第1の鍵(開始鍵)を上書きすることが困難となり、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【0065】
なお、上記においては、鍵格納部54内の暗号鍵の各鍵格納部54b〜54dの構成を示したが、鍵格納部54内の復号鍵の各鍵格納部54f〜54hについても同様の構成を採用すれば良い。
【0066】
<実施の形態3>
本実施の形態は、実施の形態2に係る暗号化・復号化回路の変形例であって、実施の形態2におけるように、入力データの1チャネルに対して、複数の記憶部(レジスタ)を設け、かつ、あるチャネルの記憶部に記憶された第1の鍵を用いて、暗号化または復号化のための第2の鍵を入力データから復号し、その第2の鍵を異なるチャネルの記憶部の一つに記憶するようにしたものである。
【0067】
本実施の形態においても、図1〜図5に示した各回路構成が採用されている。また、本実施の形態においても、鍵格納部54内の各鍵格納部54b〜54dの詳細構成が示される。
【0068】
チャネル1,2で使用されるデータストリームが共通で、かつ、暗号化・復号化演算を行うデータ位置が異なる場合、例えば映像データを記録しながら、記録が終わったデータを再生するような場合、チャネル1,2の演算で使用される鍵の一部はチャネル1,2で共通のものとなる。例えば、開始鍵はデータストリーム全体として共通のもので、開始鍵からデータストリーム内の特定のデータ長単位で使用する鍵を作成し、更に短い単位で特定のデータ長単位で使用する鍵から一時鍵を復号して演算を行う場合を考える。上記の図6の構成の場合、レジスタR10(CKey1_0)にデータ全体で共通の開始鍵を設定し、レジスタR10(CKey1_0)の共通開始鍵からデータ長単位の鍵を復号してレジスタR10(CKey1_0)に上書き保存、その後、レジスタR10(CKey1_0)の鍵を使用して更に短いデータ単位で使用する一時鍵を復号し、レジスタR10(CKey1_0)に保存する、という作業が必要なため、一時鍵を生成するたびにこの操作が必要となり、データ転送のスループットが大きく落ちることが予想される。
【0069】
図8は、本実施の形態における、鍵格納部54b(CKey1),54c(CKey2),54d(CKey3)の具体的な構成例を示す図である。図8においては、上記各部を、鍵格納部54b3(CKey1),54c1(CKey2),54d1(CKey3)として表示している。ここでは、鍵格納部54d1(CKey3)のレジスタR31(CKey3_1)に設定された鍵を、鍵格納部54b3(CKey1),54c1(CKey2)において選択できる構成となっている。なお、チャネル1とチャネル2については機能に違いがないため、チャネル2の構成および信号についての説明は省略する。
【0070】
チャネル1の鍵格納部54b3(CKey1)の構成は、ANDゲートA20およびインバータI20が省略されて、選択回路S11に直接にCKey1_0ライト要求信号が与えられている点、および、ANDゲートA12が追加され、ORゲートO10に代わって、ANDゲートA10〜A12の各出力を受けるORゲートO11が採用されている点以外は、図7の鍵格納部54b2(CKey1)の構成と同様である。鍵格納部54b3(CKey1)に入力される信号の意味についても、図7の鍵格納部54b2(CKey1)の場合と同様であって、“CKey1_0選択”とは、チャネル1の暗号化演算に際して、レジスタR10(CKey1_0)に格納された鍵が暗号・復号演算部52に使用される場合に活性化する信号を指し、“データ入力”とは、セレクタ52cから出力されたデータの入力を指す。また、“CKey1_0ライト要求”とは、チャネル1でレジスタR10(CKey1_0)への鍵書き込み時に活性化する信号を指し、“CKey1_1ライト要求”とは、チャネル1でレジスタR11(CKey1_1)への鍵書き込み時に活性化する信号を指す。そして、“CKey1_1選択”とは、チャネル1の暗号化演算に際して、レジスタR11(CKey1_1)に格納された鍵が暗号・復号演算部52に使用される場合に活性化する信号を指す。
【0071】
また、鍵格納部54d1(CKey3)は、鍵長分のビットで構成された、記憶部たるレジスタR30(CKey3_0)と、データの選択回路S30とを含む。選択回路S30は、制御部51からのCKey3_0ライト要求信号が活性化したときに、鍵データ(“データ入力”)をレジスタR30の入力に対して出力するよう選択する。制御部51からのCKey3_0ライト要求信号の非活性化時には、選択回路S30は、レジスタR30の出力を入力にフィードバックさせる(現在の値が保持される)。
【0072】
鍵格納部54d1(CKey3)は、レジスタR30および選択回路S30に加えて、もう1つのレジスタR31(CKey3_1)および選択回路S31を有している。また、ANDゲートA30,A31、ORゲートO31も設けられている。
【0073】
ANDゲートA30には、レジスタR30(CKey3_0)の出力と、レジスタR30(CKey3_0)に格納された鍵が暗号・復号演算部52への出力として選択されたことを示す、制御部51からのCKey3_0選択信号(“CKey3_0選択”と表記)とが入力される。また、ANDゲートA31には、レジスタR31(CKey3_1)に格納された鍵が暗号・復号演算部52への出力として選択されたことを示す、制御部51からのCKey3_1選択信号とレジスタR31(CKey3_1)の出力とが入力される。ANDゲートA30,A31の各出力は、ORゲートO31に入力され、ORゲートO31の出力が鍵格納部54d1(CKey3)の出力となる。
【0074】
なお、チャネル3のレジスタR31(CKey3_1)の出力は、チャネル1のANDゲートA12の一端に入力される。ANDゲートA12の他端には、“CKey1でCKey3_1を選択”信号が入力される。この“CKey1でCKey3_1を選択”信号は、レジスタR31(CKey3_1)に格納された鍵が、暗号・復号演算部52にてチャネル1の暗号化演算に使用される場合に活性化する信号を指す。なお、“CKey3_0ライト要求”、“CKey3_1ライト要求”、“データ入力”、“CKey3_1選択”の各信号については、上述の“CKey1_0ライト要求”、“CKey1_1ライト要求”、“データ入力”、“CKey1_1選択”の各信号とは、チャネル1のレジスタR10,R11ではなくチャネル3のレジスタR30,R31である点だけが異なっている、同様の信号である。
【0075】
本実施の形態においては、チャネル3のレジスタR31(CKey3_1)にデータ全体で共通の鍵を設定し、レジスタR31(CKey3_1)の共通鍵からデータ長単位の鍵を復号してチャネル1のレジスタR11(CKey1_1)(チャネル2の場合はレジスタR21(CKey2_1))に保存、その後、レジスタR11(CKey1_1)(チャネル2の場合はレジスタR21(CKey2_1))の鍵を使用して更に短いデータ単位で使用する一時鍵を復号し、レジスタR10(CKey1_0)(チャネル2の場合はレジスタR20(CKey2_0))に保存する。
【0076】
すなわち、本実施の形態に係る暗号化・復号化回路によれば、鍵格納部54は、暗号化または復号化のための、チャネル1および2に共通する第1の鍵が記憶されるレジスタR30,R31と、暗号・復号演算部52にて暗号化または復号化される入力データのチャネル1および2にそれぞれ対応した、レジスタR10,R11,R20,R21とを含み、暗号・復号演算部52は、レジスタR31に記憶された第1の鍵を用いて、暗号化または復号化のための第2の鍵を入力データから復号し、第2の鍵をレジスタR10,R11,R20,R21の一つに記憶する。
【0077】
従来技術のように、鍵格納部が、暗号化または復号化される入力データの1チャネルに対して一つのレジスタしか含まない場合には、一つのレジスタに記憶された第1の鍵(共通鍵)を用いて第2の鍵(データ長単位の鍵)を復号し、第2の鍵(データ長単位の鍵)をそのレジスタに上書きしなければならない。その後、第1の鍵(共通鍵)を用いて第2の鍵(データ長単位の鍵)とは別の鍵(一時鍵)を復号する場合には、再度、その記憶部に第1の鍵(共通鍵)を上書きする必要がある。一方、本発明によれば、鍵格納部54が、チャネル1,2にそれぞれ対応したレジスタR10,R11,R20,R21とは別個のチャネル3のレジスタR30,R31を含み、レジスタR10,R11,R20,R21に上書きすることなく第1の鍵(共通鍵)を保存し続けることができる。よって、暗号・復号演算におけるスループットを向上させることができる。
【0078】
また、本実施の形態に係る暗号化・復号化回路によれば、暗号・復号演算部52は、レジスタR11,R21に記憶された第2の鍵(データ長単位の鍵)を用いて、暗号化または復号化のための第3の鍵(一時鍵)を入力データから復号した場合、第3の鍵(一時鍵)をレジスタR30,R31以外のレジスタR10,R20に記憶する。よって、レジスタR30,R31に記憶された第1の鍵(共通鍵)が、第2の鍵(データ長単位の鍵)を用いて復号された第3の鍵(一時鍵)によって上書きされることが無く、レジスタR30,R31およびレジスタR10,R11,R20,R21間で特定の方向にしか、復号した第3の鍵(一時鍵)を保存することができない。これにより、不正な鍵を含ませて、レジスタR30,R31に記憶された第1の鍵(共通鍵)を上書きすることが困難となり、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【0079】
なお、上記においては、鍵格納部54内の暗号鍵の各鍵格納部54b〜54dの構成を示したが、鍵格納部54内の復号鍵の各鍵格納部54f〜54hについても同様の構成を採用すれば良い。
【0080】
<実施の形態4>
本実施の形態は、実施の形態1に係る暗号化・復号化回路の変形例であって、実施の形態1における制御部51内に鍵有効判定回路を設け、鍵有効判定回路から出力される鍵有効信号の活性化・非活性化に基づいて、入力データから復号される第2の鍵が、正当な第1の鍵を用いて生成されたのか、それ以外の不正な鍵を用いて生成されたのか判定するようにしたものである。
【0081】
本実施の形態においても、図1〜図5に示した各回路構成が採用されている。本実施の形態においては、図2に示す制御部51内の鍵有効判定回路51bの詳細構成が示される。
【0082】
鍵の安全性(正当性)を保障するためには、鍵復号の際、所定の鍵から演算された鍵かあるいはそうでないかを判定するための判定回路が制御部51に必要となる。図9は、そのような鍵有効判定回路51bである。鍵有効判定回路51bは、インバータI50、ANDゲートA50、ORゲートO50およびレジスタR50を備えている。
【0083】
インバータI50の入力には無効鍵入力信号が与えられる。無効鍵入力信号は、例えば使用された鍵が指定の鍵ではなくCPU3から既知の鍵として与えられた場合や、鍵の作成手順から外れた鍵生成を要求された場合に制御部51にて活性化される。インバータI50の出力はANDゲートA50の一入力端に与えられる。ANDゲートA50の他入力端には、レジスタR50の出力が与えられる。
【0084】
ORゲートO50の一入力端には有効鍵入力信号が与えられる。有効鍵入力信号は、所定の手続きで鍵を更新した場合に制御部51にて活性化される。そして、ORゲートO50の出力はレジスタR50に入力される。レジスタR50の出力は鍵有効信号となる。
【0085】
すなわち、本実施の形態においては、暗号・復号演算部52にて、所与の第1の鍵を用いて、復号化される入力データから復号化のための第2の鍵を復号し、その第2の鍵を鍵格納部54に格納する構成において、鍵有効判定回路51bは、暗号・復号演算部52にて第2の鍵が第1の鍵を用いて復号された場合には、レジスタR50から出力される、第2の鍵が有効たることを示す鍵有効信号を活性化し、一方、第2の鍵が第1の鍵以外の鍵を用いて復号された場合には、鍵有効信号を非活性化する構成を採っている。
【0086】
よって、本実施の形態に係る暗号化・復号化回路によれば、鍵有効信号を暗号・復号演算部52に与えれば、鍵有効信号の活性化・非活性化に基づいて、入力データから復号される第2の鍵が、正当な第1の鍵を用いて生成されたのか、それ以外の不正な鍵を用いて生成されたのか、暗号・復号演算部52が判定することが可能となる。これにより、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【0087】
また、暗号・復号演算部52においては、与えられた鍵有効信号が非活性化している場合には、入力データの復号化を停止する、あるいは、復号化の演算結果を廃棄するようにしておけばよい。そうすれば、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【0088】
<実施の形態5>
本実施の形態は、実施の形態4に係る暗号化・復号化回路の変形例であって、実施の形態4における鍵有効判定回路51bに、暗号・復号演算部52にて復号鍵が暗号鍵を用いて生成された場合には、復号鍵が有効たることを示す復号鍵有効信号を活性化し、復号鍵が暗号鍵以外の鍵を用いて生成された場合には、復号鍵有効信号を非活性化する機能をさらに持たせて、復号鍵有効判定回路としたものである。
【0089】
鍵格納部54にあるレジスタR10(CKey1_0)などは機能的にリセットの必要がなく、またレジスタ数も多く、面積削減の点からもリセットなしのフリップフロップやラッチで構成されることが多い。だが、データを復号する際に使用される復号鍵IKeyを、与えられた暗号鍵CKeyから生成・保存する場合、正規の手続きで復号鍵を生成した後に不正な暗号鍵を入力し、復号鍵を生成しないことで、暗号鍵は不正鍵だが復号鍵は正規の鍵である状態を生み出すことが可能となる。これは、暗号鍵とは全く関連のない復号鍵で演算できることを意味する。
【0090】
暗号鍵が有効鍵でない場合に暗号・復号演算部52での演算機能を停止させるような構成の場合には大きな問題とはならないが、所定の手続きの他に、外部から所定の手続きとは関係のない既知の鍵が入力された場合に既知のテキストデータを処理することを許すような柔軟な条件下で暗号化・復号化回路を構成する場合には、データの安全性の低下を招き得る。このような場合を想定した上で、暗号鍵に対して復号鍵が有効かどうかを判定するための本実施の形態に係る復号鍵有効判定回路を図10に示す。
【0091】
図10に示すように、この復号鍵有効判定回路51cは、図9の鍵有効判定回路51bとほぼ同様の構成を有しており、インバータI51、ANDゲートA51、ORゲートO51およびレジスタR51を備えている。なお、復号鍵有効判定回路51cは、図9の鍵有効判定回路51bが有していないANDゲートA52をも備える。
【0092】
インバータI51の入力には無効鍵入力信号が与えられる。無効鍵入力信号は、図9の鍵有効判定回路51bにおいて示したのと同様の信号である。インバータI51の出力はANDゲートA51の一入力端に与えられる。ANDゲートA51の他入力端には、レジスタR51の出力が与えられる。
【0093】
ANDゲートA52の一入力端には有効鍵入力信号が与えられる。ANDゲートA52の他入力端には、有効な暗号鍵により復号鍵が生成されたことを示す信号(“有効鍵により復号鍵生成”と表記)が与えられる。そして、ORゲートO51の一入力端にはANDゲートA52の出力が与えられる。有効鍵入力信号も、図9の鍵有効判定回路51bにおいて示したのと同様の信号である。そして、ORゲートO51の出力はレジスタR51に入力される。レジスタR51の出力は復号鍵有効信号となる。
【0094】
すなわち、本実施の形態においては、暗号・復号演算部52にて、所与の暗号鍵を用いて、その暗号鍵により暗号化された入力データの復号化のための復号鍵を生成し、その復号鍵を鍵格納部54に格納する構成において、復号鍵有効判定回路51cは、暗号・復号演算部52にて復号鍵が対応する暗号鍵を用いて復号された場合には、レジスタR51から出力される、復号鍵が有効たることを示す復号鍵有効信号を活性化し、一方、復号鍵が対応する暗号鍵以外の鍵を用いて復号された場合には、復号鍵有効信号を非活性化する構成を採っている。
【0095】
また、この回路では、有効鍵入力信号が入力され、かつ有効鍵による復号鍵生成が行われた場合にのみ、復号鍵有効信号が設定される。なお、リセットが発生した場合、復号鍵有効信号は初期化(無効)される。
【0096】
本実施の形態に係る暗号化・復号化回路によれば、復号鍵有効判定回路51cは、暗号・復号演算部52にて復号鍵が対応する暗号鍵を用いて復号された場合には、復号鍵が有効たることを示す復号鍵有効信号を活性化し、復号鍵が対応する暗号鍵以外の鍵を用いて復号された場合には、復号鍵有効信号を非活性化する。よって、復号鍵有効信号を暗号・復号演算部52に与えれば、復号鍵有効信号の活性化・非活性化に基づいて、暗号鍵から生成される復号鍵が、正当な暗号鍵を用いて生成されたのか、それ以外の不正な鍵を用いて生成されたのか、暗号・復号演算部52が判定することが可能となる。これにより、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【0097】
また、復号鍵有効信号を暗号・復号演算部52に与え、暗号・復号演算部52においては、与えられた復号鍵有効信号が非活性化している場合には、入力データの復号化を停止する、あるいは、復号化の演算結果を廃棄するようにしておけばよい。そうすれば、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【0098】
<実施の形態6>
本実施の形態は、実施の形態5に係る暗号化・復号化回路の変形例であって、実施の形態5における復号鍵有効判定回路51cに、暗号鍵の世代と復号鍵の世代が一致しているか否かを検出する機能をさらに持たせて、暗号鍵・復号鍵世代一致判定回路としたものである。
【0099】
有効な手続きによる鍵生成であっても、演算開始時に元になる鍵(第一世代とする)、元になる鍵から復号されるデータ共通の鍵(第二世代とする)、データ共通の鍵から生成される一時鍵(第三世代)と、鍵生成とそれに伴う復号鍵の生成を続けた場合、世代の違う組み合わせの鍵を鍵セット(例えばCKey1_1のレジスタとIKey1_1のレジスタなど)に保管することが可能である。このような状態を禁止するため、図11に本実施の形態に係る、暗号鍵と復号鍵のセットが同一世代かどうかを判定する暗号鍵・復号鍵世代一致判定回路を示す。
【0100】
図11に示すように、この暗号鍵・復号鍵世代一致判定回路51dは、インバータI52、ANDゲートA53、選択回路S50およびレジスタR52を備えている。
【0101】
インバータI52の入力には無効鍵入力信号が与えられる。無効鍵入力信号は、図9の鍵有効判定回路51bにおいて示したのと同様の信号である。インバータI52の出力はANDゲートA53の一入力端に与えられる。ANDゲートA53の他入力端には、レジスタR52の出力が与えられる。
【0102】
選択回路S50には、ANDゲートA53の出力と、有効な暗号鍵により復号鍵が生成されたことを示す信号(“有効鍵により復号鍵生成”と表記)とが与えられる。また、選択回路S50には有効鍵入力信号も与えられ(有効鍵入力信号は、図9の鍵有効判定回路51bにおいて示したのと同様の信号である)、有効鍵入力信号の値に応じて、選択回路S50からANDゲートA53の出力を出力するか、有効な暗号鍵により復号鍵が生成されたことを示す信号を出力するかが決せられる。具体的には、有効鍵入力信号が活性化している場合に、有効な暗号鍵により復号鍵が生成されたことを示す信号が選択され、有効鍵入力信号が非活性化している場合に、ANDゲートA53の出力が選択される。そして、選択回路S50の出力はレジスタR52に入力される。レジスタR52の出力は暗号鍵・復号鍵世代一致信号となる。
【0103】
有効鍵入力信号が選択された場合で、かつ有効鍵による復号鍵生成が行われた場合に、暗号・復号鍵世代一致信号が設定される。世代一致信号は無効鍵入力信号が設定されるまで、例えば既知の鍵が入力された場合や、所定の鍵更新を行い、有効鍵入力信号が設定されている場合でも、復号鍵生成が選択されていない場合は、暗号・復号鍵世代一致信号はクリアされる。
【0104】
すなわち、本実施の形態においては、暗号・復号演算部52にて、鍵格納部54に格納された第1世代暗号鍵を用いて、入力データの暗号化のための第2世代暗号鍵を生成し、第1世代暗号鍵を更新して第2世代暗号鍵を鍵格納部54に格納し、順次、第n世代暗号鍵(n:自然数)を用いて、入力データの暗号化のための第n+1世代暗号鍵を生成し、第n世代暗号鍵を更新して第n+1世代暗号鍵を鍵格納部54に格納し、第1世代暗号鍵を用いて、第1世代暗号鍵により暗号化された入力データの復号化のための第1世代復号鍵を生成し、第1世代復号鍵を鍵格納部54に格納し、順次、第n+1世代までの暗号鍵をそれぞれ用いて、入力データの復号化のための第n+1世代までの復号鍵をそれぞれ生成し、第n世代復号鍵を更新して第n+1世代復号鍵を鍵格納部54に格納する構成において、暗号鍵・復号鍵世代一致判定回路51dは、暗号・復号演算部52にて第n世代復号鍵が、対応する第n世代暗号鍵を用いて生成された場合には、第n世代復号鍵が有効たることを示す暗号・復号鍵世代一致信号を活性化し、一方、第n世代復号鍵が、対応する第n世代暗号鍵以外の鍵を用いて生成された場合には、暗号・復号鍵世代一致信号を非活性化する構成を採っている。
【0105】
よって、本実施の形態に係る暗号化・復号化回路によれば、暗号・復号鍵世代一致信号を暗号・復号演算部52に与えることにより、暗号・復号鍵世代一致信号の活性化・非活性化に基づいて、暗号鍵から生成される復号鍵が、正当な暗号鍵を用いて生成されたのか、それ以外の不正な鍵を用いて生成されたのか、暗号・復号演算部52が判定することが可能となる。これにより、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【0106】
また、暗号・復号演算部52においては、与えられた暗号・復号鍵世代一致信号が非活性化している場合には、入力データの復号化を停止する、あるいは、復号化の演算結果を廃棄するようにしておけばよい。そうすれば、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【0107】
<実施の形態7>
本実施の形態は、実施の形態6に係る暗号化・復号化回路の変形例であって、暗号・復号演算部25にて第n世代復号鍵が、対応する第n世代暗号鍵を用いて有効に生成された場合には、第n世代復号鍵の生成のたびに、第n世代までの復号鍵が生成されたことを示す暗号鍵・復号鍵第n世代許可信号を生成する暗号化・復号化回路である。
【0108】
扱う暗号鍵・復号鍵が同一世代なのかだけではなく、鍵の更新により現状で、どの世代の鍵まで復号されたのかを管理することで、生成された鍵の世代単位のアクセス制御が可能となる。例えば第1世代ではチャネル1,2からレジスタR31(CKey3_1)への鍵の参照を禁止するなどである。
【0109】
このような機能を実現するための暗号鍵・復号鍵世代許可回路51eの回路例を図12に示す。本実施の形態においては、3世代までの生成鍵を管理可能な回路を例に採って説明する。
【0110】
暗号鍵・復号鍵世代許可回路51eは、インバータI53、世代1条件判定回路J51、世代1レジスタR53、世代2条件判定回路J52、世代2レジスタR54、世代3条件判定回路J53、世代3レジスタR55、を有している。なお、世代1条件判定回路J51、世代2条件判定回路J52、世代3条件判定回路J53は、いずれも多入力AND回路である。無効鍵入力信号(無効鍵入力信号は、図9の鍵有効判定回路51bにおいて示したのと同様の信号である)はインバータI53を介して、世代1条件判定回路J51、世代2条件判定回路J52、世代3条件判定回路J53の各部に与えられる。
【0111】
世代1条件判定回路J51には、開始鍵入力信号が与えられる。世代1条件判定回路J51の出力は、世代1レジスタR53に与えられる。世代1レジスタR53の出力(世代1許可信号)は世代2条件判定回路J52に与えられるとともに、世代1条件判定回路J51にもフィードバックされる。世代2条件判定回路J52には、有効鍵更新信号が与えられる。世代2条件判定回路J52の出力は、世代2レジスタR54に与えられる。世代2レジスタR54の出力(世代2許可信号)は世代3条件判定回路J53に与えられるとともに、世代2条件判定回路J52にもフィードバックされる。世代3条件判定回路J53にも、有効鍵更新信号が与えられる。世代3条件判定回路J53の出力は、世代3レジスタR55に与えられる。世代3レジスタR55の出力(世代3許可信号)は、世代3条件判定回路J53にフィードバックされる。
【0112】
世代1許可信号は、有効鍵として演算初回で使用される鍵(開始鍵と表記)が入力された場合に活性化される。世代2許可信号は、世代1許可信号が設定されている状態で、かつ、有効な鍵更新が行われた場合に活性化される。世代3許可信号は、世代1許可信号および世代2許可信号が活性化されている状態で、かつ、有効な鍵更新が行われている場合に活性化される。無効と判断される鍵が入力された場合には、各世代の許可信号はクリアされる。
【0113】
すなわち、本実施の形態においては、暗号・復号演算部52にて、第1世代暗号鍵(開始鍵)を用いて、入力データの暗号化のための第2世代暗号鍵を生成し、第1世代暗号鍵を更新して第2世代暗号鍵を鍵格納部54に格納し、順次、第n世代暗号鍵(n:自然数)を用いて、入力データの暗号化のための第n+1世代暗号鍵を生成し、第n世代暗号鍵を更新して第n+1世代暗号鍵を鍵格納部54に格納し、第1世代暗号鍵を用いて、第1世代暗号鍵により暗号化された入力データの復号化のための第1世代復号鍵を生成し、第1世代復号鍵を鍵格納部54に格納し、順次、第n+1世代までの暗号鍵をそれぞれ用いて、入力データの復号化のための第n+1世代までの復号鍵をそれぞれ生成し、第n世代復号鍵を更新して第n+1世代復号鍵を鍵格納部54に格納する構成において、暗号鍵・復号鍵世代許可回路51eは、暗号・復号演算部52にて第n世代復号鍵が、対応する第n世代暗号鍵を用いて有効に生成された場合には、第n世代復号鍵の生成のたびに、第n世代までの復号鍵が生成されたことを示す暗号鍵・復号鍵第n世代許可信号を生成する構成を採っている。
【0114】
よって、世代の段階に応じて許可すべき演算処理を、暗号・復号演算部52にて行うことができ、これにより、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【0115】
<実施の形態8>
本実施の形態は、実施の形態1に係る暗号化・復号化回路の変形例であって、複数の論理ゲート回路の組み合わせを含み、その組み合わせにより所定の信号を生成して、所定の信号を開始鍵として出力する開始鍵出力回路を設けて、暗号・復号演算部に、開始鍵を用いて入力データの暗号化または復号化を行うようにさせるものである。
【0116】
暗号化されたデータを供給するシステムにおいて、扱う全ての暗号化データに共通で使用される元となる鍵が存在する。この鍵は復号を行う装置側に搭載される。この暗号化データ共通で使用される元になる鍵を不揮発メモリ2内に保存すると、不揮発メモリ2からバス4を通り、暗号・復号演算装置5に鍵が設定されるため、バス4をデバッガで観測することで、鍵を簡単に特定することができる。これを防ぐための手段として、元になる鍵を暗号・復号演算装置5内に設けた鍵(これを開始鍵と称する)で暗号化した上で、不揮発メモリ2に保存し、暗号・復号演算装置5の外部への開始鍵の読み出しが不可能な回路構成にすることで、元となる鍵の漏洩を防ぐことができる。本実施の形態における鍵格納部54周辺の構成を図13に示す。
【0117】
図13においては、鍵格納部54内のチャネル3の鍵格納部54d2に開始鍵出力回路K1が接続されている。開始鍵出力回路K1は、固定の開始鍵を出力するための回路であって、暗号・復号演算装置5内に設けられる。開始鍵出力回路K1は、ANDゲートやORゲート等の複数の論理ゲート回路の組み合わせを含み、その組み合わせにより所定の信号が生成され、当該所定の信号を開始鍵として出力する。開始鍵出力回路K1は、論理ゲート回路の組み合わせで構成されるため、外部から開始鍵を変更することは不可能である。
【0118】
図8の鍵格納部54d1と比較すると、鍵格納部54d2においては、選択回路S31にデータ入力がそのまま与えられるのではなく、データ入力と開始鍵出力回路K1からの開始鍵の信号とを受ける他の選択回路S32の出力が、選択回路S31に与えられる。なお、他の選択回路S32の選択信号として、開始鍵選択信号が与えられる。
【0119】
鍵格納部54d2においては、開始鍵選択信号が活性化した場合、選択回路S32はデータ入力ではなく開始鍵の信号を選択回路S31に与える。そして、開始鍵がレジスタR31(CKey3_1)に記憶される。そして、暗号・復号演算部52は、開始鍵を用いて、入力データの暗号化または復号化のための所与の第1の鍵(この鍵は不揮発メモリ2から読み出す)を暗号化し、暗号化した第1の鍵を鍵格納部54のレジスタR31(CKey3_1)に上書きして格納する。
【0120】
開始鍵は最初にレジスタR31(CKey3_1)にのみ読み出される構成となっているため、出力バッファ56d(OutBuf3)を通して開始鍵を外部に読み出すことは不可能である。なお、開始鍵は、CPU3から制御部51への開始鍵選択要求により、開始鍵選択信号が設定されることでレジスタR31(CKey3_1)に保存される。
【0121】
すなわち、本実施の形態に係る暗号化・復号化回路によれば、複数の論理ゲート回路の組み合わせを含み、組み合わせにより所定の信号が生成され、所定の信号を開始鍵として出力する開始鍵出力回路K1を備え、暗号・復号演算部52は、開始鍵を用いて、入力データを暗号化または復号化するための所与の第1の鍵を暗号化し、第1の鍵を鍵格納部54に格納する。複数の論理ゲート回路の組み合わせにより開始鍵が生成されるため、外部から開始鍵を変更することは不可能である。よって、その開始鍵により暗号化された第1の鍵の安全性は向上するため、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【0122】
なお、データストリームはそのデータストリーム固有の鍵を持つものとし、データ共通の元になる鍵で暗号化されているものとする。また、ある特定の単位でデータストリーム内にデータストリーム固有の鍵で暗号化されたデータ鍵を持つものとする。また、データ鍵の単位よりもより小さい単位で、データ内にデータ鍵で暗号化された一時鍵を持つものとする。
【0123】
鍵の復号手順を図14のフローチャートに示す。まず、装置固有の鍵を開始鍵として、レジスタR31(CKey3_1)に保存する(ステップST1)。次に、不揮発メモリ2に保存されている暗号化されたデータ共通の元になる鍵を、レジスタR31(CKey3_1)内の開始鍵で復号し、復号後の鍵をレジスタR31(CKey3_1)に上書き保存する(ステップST2)。なお、データ共通の元になる鍵は不揮発メモリ内に開始鍵で暗号化されて保存されているものとする。
【0124】
次に、レジスタR31(CKey3_1)に保存された元になる鍵を用いて、入力データに含まれているデータ固有の鍵を復号し、再度、復号後の鍵をレジスタR31(CKey3_1)に上書き保存する(ステップST3)。次に、レジスタR31(CKey3_1)に保存されたデータ固有の鍵を用いて、入力データに含まれている特定のデータ長ごとに保管されたデータ鍵を復号し、復号後の鍵をレジスタR11(CKey1_1)またはレジスタR21(CKey2_1)に保存する(ステップST4)。
【0125】
次に、レジスタR11(CKey1_1)またはレジスタR21(CKey2_1)に保存されたデータ鍵を用いて、更に小さいデータごとに含まれている暗号化された一時鍵を復号し、復号後の鍵をレジスタR10(CKey1_0)またはレジスタR20(CKey2_0)に保存する(ステップST5)。
【0126】
そして、レジスタR10(CKey1_0)またはレジスタR20(CKey2_0)に保存された一時鍵を使用して、入力データの暗号化または復号化を実施する(ステップST6)。
【0127】
<実施の形態9>
本実施の形態は、実施の形態8に係る暗号化・復号化回路の変形例であって、所定の信号たる正当性評価鍵を出力する正当性評価鍵出力回路をさらに設けて、正当性評価鍵を用いて不揮発メモリ2に保存した鍵のハッシュ値を求め、ハッシュ値に基づいて不揮発メモリ2内の鍵に改ざんがあったかどうかを評価するものである。
【0128】
実施の形態8のように開始鍵を用いた場合でも、不揮発メモリ2内に存在している暗号化されたデータ共通の元になる鍵や鍵の復号を行うプログラムを改ざんすることは不可能ではなく、不正運用を完全に防ぐことはできない。このような状況下でより安全性を高めるのが本実施の形態である。
【0129】
図15に、本実施の形態における鍵格納部54周辺の構成を示す。図15においては、図13の構成に加えてさらに、鍵格納部54内のチャネル3の鍵格納部54d2にROM正当性評価鍵出力回路Q1が接続されている。ROM正当性評価鍵出力回路Q1は、所定の信号たるROM(不揮発メモリ2)の正当性を評価するための鍵を出力する、開始鍵出力回路K1と同様に複数の論理ゲートで構成された回路である。
【0130】
ROM正当性評価鍵出力回路Q1は、開始鍵出力回路K1からの開始鍵に代わって、正当性評価鍵の信号を選択回路S32に与えることができる。これにより、正当性評価鍵がレジスタR31(CKey3_1)に記憶可能である。
【0131】
暗号・復号演算部52は、暗号化された鍵を不揮発メモリ2へ格納する際に、正当性評価鍵を用いて当該鍵のハッシュ値を求め、そのハッシュ値をMAC(Message Authentication Code)として不揮発メモリ2に格納する。このときの不揮発メモリ2の記憶内容を示すのが、図16である。図16では、暗号化された鍵のデータがROMプログラム20と、ハッシュ値がMAC21と示されている。なお、ハッシュ関数は、暗号・復号演算部52に対して一方向性の関数になるよう設定すればよい。
【0132】
そして、暗号・復号演算部52にて演算を行う時には、暗号・復号演算部52内の正当性評価回路ESにて必ずROMプログラム20の正当性評価を行う。この評価においては、まず、レジスタR31(CKey3_1)にROM正当性評価鍵を読み出す。そして、ROM正当性評価鍵を用いて、外部より入力された所与の鍵の復号を行う。この復号された鍵がレジスタR31(CKey3_1)に上書き保存される。この復号化された鍵を用いて、ROMプログラム20全てをチャネル3から読み込み、MACを計算する。計算結果はレジスタR31(CKey3_1)に上書き保存する。なお、レジスタR31(CKey3_1)から出力バッファ56d(OutBuf3)へのMAC計算結果の出力は、実施の形態7の世代管理により禁止すればよい。MACの計算が終了した時点で、計算結果と、不揮発メモリ2内に保存されているMAC21を、正当性評価回路ESに入力する。
【0133】
図17は、正当性評価回路ESの具体構成例を、正当性評価回路ES1として示す図である。本実施の形態における正当性評価回路ES1は、比較回路CP1とレジスタR60とを備える。比較回路CP1は、読み込んだROMプログラム20から演算したMAC値と、入力バッファ53f(InBuf3)を介して読み込んだ、不揮発メモリ2内に保存されているMAC21の値とを比較する。両者が一致しておれば、比較回路CP1は出力を活性化させ、レジスタR60は比較回路CP1の出力を記憶する。また、両者が一致していなければ、比較回路CP1は出力を非活性化させる。レジスタR60の出力がROM正当性評価結果信号となる。なお、ROM正当性評価結果信号は、レジスタR31(CKey3_1)に上書き保存すればよい。
【0134】
すなわち、暗号・復号演算部52内の正当性評価回路ES1は、暗号化された鍵を不揮発メモリ2へ格納する際に、正当性評価鍵を用いて鍵のハッシュ値を求め、そのハッシュ値をMAC21として不揮発メモリ2に格納し、不揮発メモリ2に格納された鍵を用いた暗号化または復号化を行う際には、正当性評価鍵を用いて、不揮発メモリ2より読み出した鍵のハッシュ値を求め、そのハッシュ値と不揮発メモリ2に格納されたMAC21のハッシュ値とを比較する。
【0135】
よって、不揮発メモリ2に格納された鍵が改ざんされておれば、不揮発メモリ2より読み出した鍵のハッシュ値と、不揮発メモリ2に格納されたMAC21のハッシュ値とは異なるので、暗号・復号演算部52は、不揮発メモリ2から読み出した鍵を用いた暗号化または復号化を停止すればよい。よって、鍵の不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【0136】
<実施の形態10>
本実施の形態は、実施の形態9に係る暗号化・復号化回路の変形例であって、所定の信号たるデバッガ検証鍵を出力するデバッガ検証鍵出力回路をさらに設けて、デバッガを用いたデータの不正取得等を防ぐものである。
【0137】
デバッガは、チップ開発時に効率よくファームウェアをデバッグするために利用される装置である。デバッガを用いると簡単にプログラムカウンタを変更できるため、例えば暗号化・復号化回路において、暗号化手続きのプログラムをスキップして実行することができる。このため、デバッガの使用を禁止する手段がないと、データの安全性を保障することができない。このような状況下でより安全性を高めるのが本実施の形態である。
【0138】
図18に、本実施の形態における鍵格納部54周辺の構成を示す。図18においては、図15の構成に加えてさらに、鍵格納部54内のチャネル3の鍵格納部54d2にデバッガ検証鍵出力回路B1が接続されている。デバッガ検証鍵出力回路B1は、所定の信号たるデバッガ検証鍵を出力する、開始鍵出力回路K1と同様に複数の論理ゲートで構成された回路である。
【0139】
デバッガ検証鍵出力回路B1は、開始鍵出力回路K1からの開始鍵に代わって、デバッガ検証鍵の信号を選択回路S32に与えることができる。これにより、デバッガ検証鍵がレジスタR31(CKey3_1)に記憶可能である。
【0140】
暗号・復号演算部52は、デバッガ検証鍵を用いて所定の検証用データを暗号化または復号化する。また、暗号・復号演算部52は、デバッガが使用されていることを示すデバッガ使用信号を受け、デバッガが使用されていることを検知する。そして、デバッガが使用されていると検知した場合は、暗号化または復号化された検証用データと一致するパスワードの入力がない限り、入力データの暗号化または復号化を停止する。
【0141】
図19は、正当性評価回路ESの具体構成例を、正当性評価回路ES2として示す図である。本実施の形態における正当性評価回路ES2は、実施の形態9に示した比較回路CP1とレジスタR60とを備える。比較回路CP1は、デバッガ検証鍵を用いて暗号化または復号化された所定の検証用データと、入力バッファ53f(InBuf3)を介して読み込んだ、ユーザから与えられるパスワードとを比較する。両者が一致しておれば、比較回路CP1は出力を活性化させ、レジスタR60は比較回路CP1の出力を記憶する。また、両者が一致していなければ、比較回路CP1は出力を非活性化させる。レジスタR60の出力がデバッガ使用許可信号となる。なお、デバッガ使用許可信号は、レジスタR31(CKey3_1)に上書き保存すればよい。デバッガ使用許可信号の出力およびROM正当性評価結果信号の出力に当たり、比較回路CP1及びレジスタR60を共用しているが、ROM正当性評価結果信号およびデバッガ使用許可信号は、いずれもレジスタR31(CKey3_1)に上書き保存可能であるので、このような比較回路CP1及びレジスタR60の共用は可能である。
【0142】
本実施の形態における正当性評価回路ES2は、さらにORゲートO60,O61、およびレジスタR61を備える。ORゲートO60の一入力端にはデバッガ使用信号が与えられ、他入力端にはレジスタR61の正出力が与えられる。ORゲートO60の出力は、レジスタR61に入力される。レジスタR61の反転出力はORゲートO61の一入力端に与えられる。ORゲートO61の他入力端には、レジスタR62の出力(デバッガ使用許可信号)が与えられる。ORゲートO61の出力はデータ出力許可信号となる。
【0143】
ORゲートO60の他入力端にはレジスタR61の正出力が与えられるため、一度受け取ったデバッガ使用信号はレジスタR61により保持される。これは、デバッガを使用してプログラムをスキップした後、デバッガを切り離された場合に対応するためである。
【0144】
デバッガ使用信号が活性化すれば、レジスタR61の反転出力は非活性化するため、デバッガ使用許可信号が活性化しない限り、データ出力許可信号は活性化しない。
【0145】
すなわち、本実施の形態に係る暗号化・復号化回路によれば、暗号・復号演算部52は、デバッガ検証鍵を用いて所定の検証用データを暗号化または復号化し、デバッガが使用されていることを検知した場合には、暗号化または復号化された検証用データと一致するパスワードの入力がない限り、入力データの暗号化または復号化を停止する。よって、デバッガによる鍵の不正取得および不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【0146】
<実施の形態11>
本実施の形態は、実施の形態10に係る暗号化・復号化回路の変形例であって、暗号化または復号化された検証用データと一致するパスワードの入力がたとえあったとしても、不揮発メモリ2より読み出した鍵のハッシュ値と、不揮発メモリ2に格納されたMAC21のハッシュ値とが異なる場合には、入力データの暗号化または復号化を停止するようにしたものである。
【0147】
図20は、本実施の形態における正当性評価回路ESの具体構成例を、正当性評価回路ES3として示す図である。本実施の形態における正当性評価回路ES3は、図19の正当性評価回路ES2の構成(比較回路CP2、レジスタR61,R62、ORゲートO60,O61)に加え、ROM正当性評価鍵出力回路Q1の出力とデバッガ使用信号との演算を行って、演算結果をROM正当性評価鍵出力とする演算回路OP、および、図17のレジスタR60から出力されるROM正当性評価結果と、ORゲートO61の出力との論理積を演算するANDゲートA60を更に備える。
【0148】
演算回路OPは、デバッガ使用信号が非活性化状態にあるときは、ROM正当性評価鍵出力回路Q1からのROM正当性評価鍵をそのまま出力するが、デバッガ使用信号が活性化状態にあるときは、ROM正当性評価鍵出力回路Q1からのROM正当性評価鍵を改変して出力する。また、ANDゲートA60は、デバッガ使用許可信号とROM正当性評価結果とがともに活性化していない限り、データ出力許可信号を活性化しない。
【0149】
すなわち、暗号・復号演算部52は、暗号化または復号化された検証用データと一致するパスワードの入力がたとえあったとしても、不揮発メモリ2より読み出した鍵のハッシュ値と、不揮発メモリ2に格納されたMAC21のハッシュ値とが異なる場合には、入力データの暗号化または復号化を停止する。
【0150】
よって、デバッガによる鍵の不正取得および不正利用を防止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【0151】
<実施の形態12>
本実施の形態は、実施の形態11に係る暗号化・復号化回路の変形例であって、ICチップ1が入力データを、暗号・復号演算部52を介さずに転送可能である場合であっても、不揮発メモリ2より読み出した鍵のハッシュ値と、不揮発メモリ2に格納されたMAC21のハッシュ値とが異なる場合、および、デバッガの使用を検知し、パスワードの入力がない場合、のうち少なくとも一方の場合には、入力データの転送を停止するようにしたものである。
【0152】
図21は、本実施の形態に係る暗号化・復号化回路を示す図である。図21においては、実施の形態11にて生成されたROM正当性評価結果およびデバッガ使用許可信号が、暗号・復号演算装置5の外に設けられたANDゲートA70に入力され、ANDゲートA70への両入力がともに活性化した状態でないと、ICチップ1内に設けられたデータ転送用バスに載ったデータがチップ外に出力されないようにされている。具体的には、ANDゲートA71が設けられ、ANDゲートA70の出力とデータ転送用バスとがANDゲートA71に入力されている。ANDゲートA70の出力が活性化していないと、ANDゲートA71は、データ転送用バスに載ったデータをチップ外に出力することはできない。
【0153】
すなわち、本実施の形態においては、入力データを、暗号・復号演算部52を介さずに転送可能であり、不揮発メモリ2より読み出した鍵のハッシュ値と、不揮発メモリ2に格納されたMAC21のハッシュ値とが異なる場合、および、デバッガの使用を検知し、パスワードの入力がない場合、のうち少なくとも一方の場合には、入力データの転送を停止するようにされている。
【0154】
よって、暗号・復号演算部52を介さない入力データの転送をも禁止して、秘匿が必要なデータの安全性を保障可能な暗号化・復号化回路を実現できる。
【0155】
なお、本願発明においては、暗号・復号演算部52についての記述は特にしていないが、暗号・復号演算部52は一種類に限定されるものではない。例えば、データストリームを処理する際に利用する暗号の種類が複数ある場合は、図2の暗号・復号演算部52に複数の暗号・復号演算部を搭載することが可能である。また、1つの暗号・復号演算部52でスループットが足りない場合、同タイプの暗号・復号演算部を2つ搭載することも可能である。
【0156】
<その他>
上記においては、実施の形態9〜11に示した正当性評価回路、および、実施の形態12に示した暗号化・復号化回路については、いずれも実施の形態1の共通鍵暗号方式の暗号化・復号化回路を例に採り説明を行った。しかし、上記実施の形態9〜12の思想は、共通鍵暗号方式以外の暗号化・復号化回路にも適用することができる。
【図面の簡単な説明】
【0157】
【図1】本発明に係る暗号化・復号化回路の構成例を示す図である。
【図2】本発明に係る暗号・復号演算装置内の詳細構成を示す図である。
【図3】実施の形態1における各チャネルの優先順位を制御するチャネル優先処理判定部のブロック図である。
【図4】チャネル優先処理判定部にて採りうる各ステートの状態遷移図の例である。
【図5】各チャネルステータスレジスタの遷移を示す図である。
【図6】実施の形態2における鍵格納部(CKey1)の具体的な構成例を示す図である。
【図7】実施の形態2における鍵格納部(CKey1)の他の構成例を示す図である。
【図8】実施の形態3における鍵格納部(CKey1,CKey2,CKey3)の具体的な構成例を示す図である。
【図9】実施の形態4における鍵有効判定回路を示す図である。
【図10】実施の形態5における復号鍵有効判定回路を示す図である。
【図11】実施の形態6における暗号鍵・復号鍵世代一致判定回路を示す図である。
【図12】実施の形態7における暗号鍵・復号鍵世代許可回路を示す図である。
【図13】実施の形態8におけるチャネル3の鍵格納部周辺の構成を示す図である。
【図14】実施の形態8における復号処理を示すフローチャートである。
【図15】実施の形態9におけるチャネル3の鍵格納部周辺の構成を示す図である。
【図16】実施の形態9における不揮発性メモリの記憶内容を示す図である。
【図17】実施の形態9における正当性評価回路の具体構成例を示す図である。
【図18】実施の形態10におけるチャネル3の鍵格納部周辺の構成を示す図である。
【図19】実施の形態10における正当性評価回路の具体構成例を示す図である。
【図20】実施の形態11における正当性評価回路の具体構成例を示す図である。
【図21】実施の形態12に係る暗号化・復号化回路を示す図である。
【符号の説明】
【0158】
1 ICチップ、2 不揮発メモリ、3 CPU、4 バス、5 暗号・復号演算装置、51a 優先処理判定部、51b 鍵有効判定回路、51c 復号鍵有効判定回路、51d 暗号鍵・復号鍵世代一致判定回路、51e 暗号鍵・復号鍵世代許可回路、52 暗号・復号演算部、52b 暗号・復号演算回路、52d 回避経路、54 鍵格納部、K1 開始鍵出力回路、Q1 正当性評価鍵出力回路、ES 正当性評価回路、B1 デバッガ検証鍵出力回路。

【特許請求の範囲】
【請求項1】
入力部と、
暗号・復号演算部と、
出力部と、
データ格納部と
を備え、
前記暗号・復号演算部は、
前記入力部を介して入力されるデータに、暗号化または復号化を行う暗号・復号演算回路と、
前記入力部を介して入力されるデータに、前記暗号・復号演算回路を迂回させる回避経路と、
前記暗号・復号演算回路の出力と、前記回避経路の出力とのいずれかを選択的に出力するセレクタと
を含み、
前記セレクタの出力は、前記出力部および前記データ格納部に与えられ、
前記データ格納部は、格納したデータを前記暗号・復号演算部に与える
暗号化・復号化回路。
【請求項2】
請求項1に記載の暗号化・復号化回路であって、
前記入力部を介して入力されるデータには、複数チャネルの各データが含まれ、
前記複数チャネルの各々に対する、前記暗号・復号演算回路における暗号化または復号化の優先順位を判定する優先処理判定部
をさらに備え、
前記優先処理判定部は、前記複数チャネルの各々に、前記優先順位を定めた各所定の状態を割り当て、前記複数チャネルの各々に対する暗号化または復号化の処理要求に基づいて、前記複数チャネルの各々に前記所定の状態間を遷移させることにより、前記優先順位を判定する
暗号化・復号化回路。
【請求項3】
暗号・復号演算部と、
鍵格納部と
を備え、
前記鍵格納部は、前記暗号・復号演算部にて暗号化または復号化される入力データの1チャネルに対して、複数の記憶部を含み、
前記複数の記憶部の一つには、前記暗号化または復号化のための第1の鍵が記憶され、
前記暗号・復号演算部は、前記複数の記憶部の前記一つに記憶された前記第1の鍵を用いて、前記暗号化または復号化のための第2の鍵を前記入力データから復号し、前記第2の鍵を前記複数の記憶部の他の一つに記憶する
暗号化・復号化回路。
【請求項4】
請求項3に記載の暗号化・復号化回路であって、
前記暗号・復号演算部は、前記複数の記憶部の前記他の一つに記憶された前記第2の鍵を用いて、前記暗号化または復号化のための第3の鍵を前記入力データから復号した場合、前記第3の鍵を前記複数の記憶部のうちの前記一つ以外のものに記憶する
暗号化・復号化回路。
【請求項5】
暗号・復号演算部と、
鍵格納部と
を備え、
前記鍵格納部は、第1記憶部と、前記暗号・復号演算部にて暗号化または復号化される入力データの複数のチャネルにそれぞれ対応した、複数の第2記憶部とを含み、
前記第1記憶部には、前記暗号化または復号化のための、前記複数のチャネルに共通する第1の鍵が記憶され、
前記暗号・復号演算部は、前記第1記憶部に記憶された前記第1の鍵を用いて、前記暗号化または復号化のための第2の鍵を前記入力データから復号し、前記第2の鍵を前記複数の第2記憶部に記憶する
暗号化・復号化回路。
【請求項6】
請求項5に記載の暗号化・復号化回路であって、
前記暗号・復号演算部は、前記複数の第2記憶部の一つに記憶された前記第2の鍵を用いて、前記暗号化または復号化のための第3の鍵を前記入力データから復号した場合、前記第3の鍵を前記第1記憶部以外の前記複数の第2記憶部に記憶する
暗号化・復号化回路。
【請求項7】
鍵格納部と、
所与の第1の鍵を用いて、復号化される入力データから前記復号化のための第2の鍵を復号し、前記第2の鍵を前記鍵格納部に格納する復号演算部と、
鍵有効判定回路と
を備え、
前記鍵有効判定回路は、
前記復号演算部にて前記第2の鍵が前記第1の鍵を用いて復号された場合には、前記第2の鍵が有効たることを示す鍵有効信号を活性化し、
前記第2の鍵が前記第1の鍵以外の鍵を用いて復号された場合には、前記鍵有効信号を非活性化する
暗号化・復号化回路。
【請求項8】
請求項7に記載の暗号化・復号化回路であって、
前記鍵有効信号は、前記復号演算部に与えられ、
前記復号演算部は、前記鍵有効信号が非活性化している場合には、前記復号化を停止する、あるいは、前記復号化の演算結果を廃棄する
暗号化・復号化回路。
【請求項9】
鍵格納部と、
所与の暗号鍵を用いて、前記暗号鍵により暗号化された入力データの復号化のための復号鍵を生成し、前記復号鍵を前記鍵格納部に格納する暗号・復号演算部と、
復号鍵有効判定回路と
を備え、
前記復号鍵有効判定回路は、
前記暗号・復号演算部にて前記復号鍵が前記暗号鍵を用いて生成された場合には、前記復号鍵が有効たることを示す復号鍵有効信号を活性化し、
前記復号鍵が前記暗号鍵以外の鍵を用いて生成された場合には、前記復号鍵有効信号を非活性化する
暗号化・復号化回路。
【請求項10】
請求項9に記載の暗号化・復号化回路であって、
前記復号鍵有効信号は、前記暗号・復号演算部に与えられ、
前記暗号・復号演算部は、前記復号鍵有効信号が非活性化している場合には、前記復号化を停止する、あるいは、前記復号化の演算結果を廃棄する
暗号化・復号化回路。
【請求項11】
第1世代暗号鍵を格納した鍵格納部と、
暗号・復号演算部と、
暗号鍵・復号鍵世代一致判定回路と
を備え、
前記暗号・復号演算部は、
前記第1世代暗号鍵を用いて、入力データの暗号化のための第2世代暗号鍵を生成し、前記第1世代暗号鍵を更新して前記第2世代暗号鍵を前記鍵格納部に格納し、
順次、第n世代暗号鍵(n:自然数)を用いて、前記入力データの暗号化のための第n+1世代暗号鍵を生成し、前記第n世代暗号鍵を更新して前記第n+1世代暗号鍵を前記鍵格納部に格納し、
前記第1世代暗号鍵を用いて、前記第1世代暗号鍵により暗号化された前記入力データの復号化のための第1世代復号鍵を生成し、前記第1世代復号鍵を前記鍵格納部に格納し、
順次、前記第n+1世代までの暗号鍵をそれぞれ用いて、前記入力データの復号化のための第n+1世代までの復号鍵をそれぞれ生成し、前記第n世代復号鍵を更新して前記第n+1世代復号鍵を前記鍵格納部に格納し、
前記暗号鍵・復号鍵世代一致判定回路は、
前記暗号・復号演算部にて前記第n世代復号鍵が、対応する前記第n世代暗号鍵を用いて生成された場合には、前記第n世代復号鍵が有効たることを示す暗号・復号鍵世代一致信号を活性化し、
前記第n世代復号鍵が、対応する前記第n世代暗号鍵以外の鍵を用いて生成された場合には、前記暗号・復号鍵世代一致信号を非活性化する
暗号化・復号化回路。
【請求項12】
請求項11に記載の暗号化・復号化回路であって、
前記暗号・復号鍵世代一致信号は、前記暗号・復号演算部に与えられ、
前記暗号・復号演算部は、前記暗号・復号鍵世代一致信号が非活性化している場合には、前記復号化を停止する、あるいは、前記復号化の演算結果を廃棄する
暗号化・復号化回路。
【請求項13】
第1世代暗号鍵を格納した鍵格納部と、
暗号・復号演算部と、
暗号鍵・復号鍵世代許可回路と
を備え、
前記暗号・復号演算部は、
前記第1世代暗号鍵を用いて、入力データの暗号化のための第2世代暗号鍵を生成し、前記第1世代暗号鍵を更新して前記第2世代暗号鍵を前記鍵格納部に格納し、
順次、第n世代暗号鍵(n:自然数)を用いて、前記入力データの暗号化のための第n+1世代暗号鍵を生成し、前記第n世代暗号鍵を更新して前記第n+1世代暗号鍵を前記鍵格納部に格納し、
前記第1世代暗号鍵を用いて、前記第1世代暗号鍵により暗号化された前記入力データの復号化のための第1世代復号鍵を生成し、前記第1世代復号鍵を前記鍵格納部に格納し、
順次、前記第n+1世代までの暗号鍵をそれぞれ用いて、前記入力データの復号化のための第n+1世代までの復号鍵をそれぞれ生成し、前記第n世代復号鍵を更新して前記第n+1世代復号鍵を前記鍵格納部に格納し、
前記暗号鍵・復号鍵世代許可回路は、
前記暗号・復号演算部にて前記第n世代復号鍵が、対応する前記第n世代暗号鍵を用いて有効に生成された場合には、前記第n世代復号鍵の生成のたびに、前記第n世代までの復号鍵が生成されたことを示す暗号鍵・復号鍵第n世代許可信号を生成する
暗号化・復号化回路。
【請求項14】
暗号・復号演算部と、
鍵格納部と、
複数の論理ゲート回路の組み合わせを含み、前記組み合わせにより所定の信号が生成され、前記所定の信号を開始鍵として出力する開始鍵出力回路と
を備え、
前記暗号・復号演算部は、
前記開始鍵を用いて、入力データの暗号化または復号化のための所与の第1の鍵を暗号化し、前記第1の鍵を前記鍵格納部に格納する
暗号化・復号化回路。
【請求項15】
請求項14に記載の暗号化・復号化回路であって、
所定の信号たる正当性評価鍵を出力する正当性評価鍵出力回路と、
他の鍵格納部と
をさらに備え、
前記暗号・復号演算部は、
前記正当性評価鍵を用いて所与の第2の鍵を復号化し、
暗号化された前記第1の鍵を前記他の鍵格納部へ格納する際に、復号化された前記第2の鍵を用いて前記第1の鍵の第1のハッシュ値を求め、前記第1のハッシュ値を前記他の鍵格納部に格納し、
前記第1の鍵を用いた前記暗号化または復号化を行う際には、復号化された前記第2の鍵を用いて、前記他の鍵格納部より読み出した前記第1の鍵の第2のハッシュ値を求め、前記第1および第2のハッシュ値を比較する
暗号化・復号化回路。
【請求項16】
請求項14に記載の暗号化・復号化回路であって、
所定の信号たるデバッガ検証鍵を出力するデバッガ検証鍵出力回路
をさらに備え、
前記暗号・復号演算部は、
前記デバッガ検証鍵を用いて所定の検証用データを暗号化または復号化し、
デバッガが使用されていることを検知した場合には、前記暗号化または復号化された前記検証用データと一致するパスワードの入力がない限り、前記入力データの暗号化または復号化を停止する
暗号化・復号化回路。
【請求項17】
請求項16に記載の暗号化・復号化回路であって、
所定の信号たる正当性評価鍵を出力する正当性評価鍵出力回路
をさらに備え、
前記暗号・復号演算部は、
前記正当性評価鍵を用いて所与の第2の鍵を復号化し、
暗号化された前記第1の鍵を前記鍵格納部へ格納する際に、復号化された前記第2の鍵を用いて前記第1の鍵の第1のハッシュ値を求め、前記第1のハッシュ値を前記鍵格納部に格納し、
前記第1の鍵を用いた前記暗号化または復号化を行う際には、復号化された前記第2の鍵を用いて、前記鍵格納部より読み出した前記第1の鍵の第2のハッシュ値を求め、前記第1および第2のハッシュ値を比較し、
前記暗号化または復号化された前記検証用データと一致するパスワードの入力がたとえあったとしても、前記第1および第2のハッシュ値が異なる場合には、前記入力データの暗号化または復号化を停止する
暗号化・復号化回路。
【請求項18】
請求項15乃至請求項17のいずれかに記載の暗号化・復号化回路であって、
前記入力データを、前記暗号・復号演算部を介さずに転送可能であり、
前記第1および第2のハッシュ値が異なる場合、および、デバッガの使用を検知し、前記パスワードの入力がない場合、のうち少なくとも一方の場合には、前記入力データの前記転送を停止する
暗号化・復号化回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate