(57)【特許請求の範囲】
【請求項１】
第１のプログラムをキューイングする第１のキューと、第２のプログラムをキューイングする第２のキューと、前記第１のキューに接続され第１のプログラムの認証コードを生成する認証コード生成回路と、生成した認証コードを格納するレジスタと、認証コードとリファレンス認証コードとの一致を検出する回路と、一致が検出されると“１”がセットされるラッチと、データを格納するレジスタと、該レジスタからの出力データの演算を行い該レジスタへの書き込みを行う演算回路とを備え、前記第１のキューに読み込んだ第１のプログラムの真偽を、第１のプログラムから生成した認証コードとリファレンス認証コードとを比較して認証し、一致した場合にセキュリティに関するチェックを行わずに第１のプログラムを実行する機能と、前記第２のキューに読み込んだ第２のプログラムをメッセージ認証を行うことなく１命令単位にセキュリティに関するチェックを行い、問題がない場合にその命令を実行する機能とを有することを特徴とするディジタル回路。
【請求項２】
前記演算回路が用いるデータを格納している前記レジスタは、第１から第５の５種類に分類されており、第５のレジスタのデータは、外部回路から読み出すことが可能であり、前記レジスタ間のデータ転送規則として、第１のレジスタから他のレジスタへの転送を許可せず、第２のレジスタから第２のレジスタへの転送を許可してそれ以外のレジスタへの転送を許可せず、第３、４及び５のレジスタから第２、４及び５のレジスタへの転送を許可しそれ以外のレジスタへの転送を許可しないという転送規則を設け、また、前記第２のキューに格納される第２のプログラムの命令は、演算回路での演算内容により、第１から第３の３種類に分類され、第１の命令は、第１から第５の分類のレジスタのいずれかのレジスタからデータを読み出して演算を行い、その出力データは、演算によるデータの加工作用により第４の分類のレジスタのデータとみなされて、転送元を第４のレジスタとした前記転送規則が適用され、第２の命令は、第１から第５の分類のレジスタのいずれかのレジスタからデータを読み出して演算を行い、その出力データは、演算によるデータの加工作用により第２の分類のレジスタのデータとみなされて、転送元を第２のレジスタとした前記転送規則が適用され、第３の命令は、第１から第５の分類のレジスタのいずれかのレジスタからデータを読み出して演算を行い、その出力データは、演算によるデータの加工作用により読み出し元のレジスタの分類のレジスタのデータとみなされて、転送元を読み出し元のレジスタとした前記転送規則が適用され、かつ、前記第１から第３の命令は、いずれも、転送先レジスタを演算の出力データが転送される先のレジスタとし、前記転送規則に従って決定された許可、不許可によってセキュリティに関するチェックを行ってから実行され、前記第１のキューに格納される第１のプログラムの命令は、前記認証が得られた場合、セキュリティに関するチェックを行わず、前記全ての分類のレジスタから全ての分類へのレジスタへの転送が許可されて実行されることを特徴とする請求項１記載のディジタル回路。
【請求項３】
モードラッチ１個を有し、前記演算回路が用いるデータを格納している前記レジスタは、第１から第５の５種類に分類されており、第５のレジスタのデータが外部回路から読み出すことが可能であり、前記レジスタ間のデータ転送規則として、第１のレジスタから第２及び第４のレジスタへの転送を許可し、転送が行われた場合に前記モードラッチを“１”セットし、それ以外のレジスタへの転送を許可せず、第２のレジスタから第２のレジスタへの転送を許可し、第４のレジスタへの転送を許可し、転送が行われた場合に前記モードラッチを“１”セットし、それ以外を許可せず、第３及び５のレジスタから第２、４及び５のレジスタへの転送を許可しそれ以外を許可せず、前記モードラッチが“０”の場合、第４のレジスタから第２、４及び５のレジスタへの転送を許可しそれ以外のレジスタ経の転送を許可せず、前記モードラッチが“１”の場合、第４のレジスタがら第２及び４のレジスタへの転送を許可しそれ以外のレジスタへの転送を許可しないという転送規則を設け、また、前記第２のキューに格納される第２のプログラムの命令は、演算回路での演算内容により、第１から第３の３種類に分類され、第１の命令は、第１から第５の分類のレジスタのいずれかのレジスタからデータを読み出して演算を行い、その出力データは、演算によるデータの加工作用により第４の分類のレジスタのデータとみなされて、転送元を第４のレジスタとした前記転送規則が適用され、第２の命令は、第１から第５の分類のレジスタのいずれかのレジスタからデータを読み出して演算を行い、その出力データは、演算によるデータの加工作用により第２の分類のレジスタのデータとみなされて、転送元を第２のレジスタとした前記転送規則が適用され、第３の命令は、第１から第５の分類のレジスタのいずれかのレジスタからデータを読み出して演算を行い、その出力データは、演算によるデータの加工作用により読み出し元のレジスタの分類のレジスタのデータとみなされて、転送元を読み出し元のレジスタとした前記転送規則が適用され、かつ、前記第１から第３の命令は、いずれも、転送先レジスタを演算の出力データが転送される先のレジスタとし、前記転送規則に従って決定された許可、不許可によってセキュリティに関するチェックを行ってから実行され、前記第１のキューに格納される第１のプログラムの命令は、前記認証が得られた場合、セキュリティに関するチェックを行わず、前記全ての分類のレジスタから全ての分類へのレジスタへの転送が許可されて実行されることを特徴とする請求項１記載のディジタル回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディジタル回路に係り、特に、データ及び処理のセキュリティを考慮したディジタル回路に関する。
【０００２】
【従来の技術】
セキュリティを考慮したディジタル回路に関する従来技術として、
（１）パスワードのチェックを行う回路を設けることによりメモリ、レジスタへのアクセスを制限する機構を持つディジタル回路、
（２）モードを記憶する回路を設け、このモードが指定する状態により、メモリ、レジスタへのアクセスを制限するようなディジタル回路、
（３）メモリにアクセスする際に用いるアドレスに何らかの変換を行う回路を設けることにより、変換後のアドレスが正常な値とならなければ所定の位置にアクセスできないようにするディジタル回路、
の概ね３種が知られている。
【０００３】
前述の（１）に分類される従来技術として、例えば、特開平５−１２１３０号公報、特開平５−２５３５号公報、特開平５−１７４４９１号公報、特開平７−１２１４４８号公報、特開平８−１１１０９７号公報、特開平５−１３６０１９号公報、特開平９−６２５８３号公報、特開平９−１９０２３６号公報等に記載された技術が知られている。これらの従来技術は、いずれも、セキュリティを守るため、ハードウエアにあらかじめパスワード等のアクセスが許される者しか知らない情報を格納しておき、アクセスの際に、この格納された情報とアクセスの際に入力した情報とを比較し、一致した場合に、メモリ・レジスタへのアクセスを許可するというものである。
【０００４】
また、前述の（２）に分類される従来技術として、特開平５−９４２９９号公報、特開平５−２２４８２８号公報、特開平１０−２２８４２２号公報等に記載された技術が知られている。これらの従来技術は、いずれも、モードを設定する回路が用意されており、このモードの設定によってはメモリ・レジスタへのアクセスが制限されるよう構成されているというものである。
【０００５】
前述した（１）及び（２）の従来技術は、いずれも、ハードウエアを構成する上で非常に小規模なセキュリティ用の機構を設けることだけでセキュリティを確保することができるという利点を有するものであるが、その反面、パスワード・モードといった簡便な方法であるため、セキュリティを確保しながら柔軟に運用していく自由度が小さいものである。例えば、パスワードを定期的に変更することはセキュリティ上必須とされているが、これらの従来技術は、パスワードをＲＯＭに格納しているため、パスワードの書き換えができず、パスワードの書き換えには、ハードウエアを入れ換える必要が生じてしまうものである。
【０００６】
また、前述の（３）に分類される従来技術として、例えば、特開平６−４４０７号公報、特開平６−１３９１５１号公報、特開平７−６０９６号公報等に記載された技術が知られている。これらの従来技術は、いずれも、あるメモリ・レジスタにアクセスする際に指定されたアドレス等をハードウエアにより変換（スクランブル）を行って、その結果を用いてアクセスを行うというものである。この従来技術は、アクセスが正しく行われなくても、アクセス自体は行われるものであるが、正しいデータを読み出すことができないため、これにより、セキュリティを確保することができるようにしている。しかし、これらの従来技術は、正しいデータが読み出すことができたのか否かが判然としないという問題を有し、読み出しが許されないものに対し、格納されている他のアドレスのデータを読み出す可能性もあり、セキュリティの観点で問題を有するものである。
【０００７】
前述した３種類以外の他の従来技術として、例えば、FIPS PUB 140-1(FEDERAL INFORMATION PROCESSING STANDARDS PUBLICATION 140-1)等に記載された技術が知られている。この従来技術は、セキュリティを確保する上で行うべきこととして、セキュリティを確保しなくてはならないディジタル回路にプログラムを読み込む場合に、メッセージ認証技術を用いて、読み込まれたプログラムが正しいか否かを検証しなくてはならないようにしたものである。この従来技術は、プログラムによってセキュリティを考慮した機能を実現していくことができるため、前述した（１）の従来技術のように硬直したセキュリティでなく、柔軟なセキュリティを実現することができる。しかし、この従来技術は、プログラムを読み込む毎にメッセージ認証を行うことが必須となるため、この認証のための処理が性能上オーバヘッドとなるという問題を含んでいる。そして、この従来技術は、仮に、電源オン時のみ認証を行うようにして、性能オーバヘッドを実際の動作時にはないようにすることができるが、そのために、全てのプログラムを読み込むことができるだけの大容量のメモリを用意する必要が生じるものである。
【０００８】
【発明が解決しようとする課題】
前述した従来技術は、セキュリティ上アクセスを制限したいメモリ・レジスタに対し、アクセスの許可・不許可の機構をハードウエアで実現した場合、結局のところ単純な機構しか実現することができず、セキュリティといった観点で、柔軟な方法を実現していくことが困難であるという問題点を有している。
【０００９】
また、メッセージ認証技術を用いて、プログラムが正しいか否かを認証する従来技術、セキュリティの観点では柔軟な方式を実現することができるが、認証を行うため性能に関してオーバヘッドをもたらすか、あるいは、プログラムのローディング領域の確保によるハードウエア資源にオーバヘッドをもたらすかのいずれかを覚悟する必要があるという問題点を有している。
【００１０】
本発明の目的は、前述した従来技術の問題点を解決し、処理のオーバヘッドを大きくすることなく、柔軟な方式でセキュリティーの向上を図ることを可能にしたディジタル回路を提供することにある。
【００１１】
【課題を解決するための手段】
本発明によれば前記目的は、第１のプログラムをキューイングする第１のキューと、第２のプログラムをキューイングする第２のキューと、前記第１のキューに接続され第１のプログラムの認証コードを生成する認証コード生成回路と、生成した認証コードを格納するレジスタと、認証コードとリファレンス認証コードとの一致を検出する回路と、一致が検出されると“１”がセットされるラッチと、データを格納するレジスタと、該レジスタからの出力データの演算を行い該レジスタへの書き込みを行う演算回路とを備え、前記第１のキューに読み込んだ第１のプログラムの真偽を、第１のプログラムから生成した認証コードとリファレンス認証コードとを比較して認証し、一致した場合にセキュリティに関するチェックを行わずに第１のプログラムを実行する機能と、前記第２のキューに読み込んだ第２のプログラムをメッセージ認証を行うことなく１命令単位にセキュリティに関するチェックを行い、問題がない場合にその命令を実行する機能とを有することにより達成される。
【００１２】
前述の手段を備えて構成される本発明によるセキュリティ機構をもったディジタル回路は、２種類の命令実行形態を持つ。一方は、メッセージ認証技術を用いて読み込み時にプログラムが正しいか否かの認証を行ってから命令が実行されるものであり、他方は、認証を行わずに命令が実行されるものである。但し、他方のものは、セキュリティに関して問題のない命令のみに実行が制限される。本発明は、性能の要求されるような頻繁に用いる機能に関しては他方のプログラムにより実行することができるようにしており、これにより、性能のオーバヘッドを実効的にはないように見せることができる。しかも、前者のプログラムにより、セキュリティの観点で柔軟な方式を実現することも可能である。
【００１３】
また、本発明によれば、セキュリティに関して問題のない命令体系を構成するために新たに問題となる制限方法の具体的な方法に関して、内部のレジスタを５種類に分類し、また、命令を３種類に分類することにより、単純であるが完全なるセキュリティ体系を構成することができる。
【００１４】
【発明の実施の形態】
以下、本発明によるディジタル回路の一実施形態を図面により詳細に説明する。
【００１５】
図１は本発明の一実施形態によるディジタル回路を含む暗号モジュールの構成例を示すブロック図、図２はデータ転送の規則について説明する図である。図１において、１は暗号モジュール、１０Ｆは実行用命令キュー、１０Ｃは認証用命令キュー、２０は演算器、２１は認証コード生成回路、２２は一致検出回路、３０ＳＰ、３０ＳＴ、３０ＰＰ、３０ＰＴ、３０Ｏはレジスタ、３０Ｃは認証コードレジスタ、４０、４１はラッチ、５０ＳＰ１、５０ＳＰ２、５０ＳＴ１、５０ＰＰ１、５０ＰＴ１、５０Ｏ１、５０Ｏ２、５０、５０Ｃ、５０Ｆ、６０Ｃ、６０Ｆ１、６０Ｆ２、６０ＳＰ、６０ＳＴ、６０ＰＰ、６０ＰＴ、６０Ｏはセレクタ、７０ＩＮは暗号モジュールの外部からの入力バス、７０ＯＵＴは暗号モジュールの外部への出力バスである。
【００１６】
図１に示す暗号モジュールは、計算機システムの中に組み込まれて使用することができ、あるいは、ＩＣカードとして使用することができるものである。図示暗号モジュールは、計算機システムの中に組み込まれて使用される暗号モジュール内の本発明のディジタル回路の部分を示すものであり、実行用命令キュー１０Ｆ、認証用命令キュー１０Ｃ、演算器２０、認証コード生成回路２１、一致検出回路２２、認証コードレジスタ３０Ｃ、及び、レジスタ３０ＳＰ、３０ＳＴ、３０ＰＰ、３０ＰＴ、３０Ｏを主要な構成要素として備えて構成されている。
【００１７】
この暗号モジュール１の内部にあるレジスタ等に格納されているデータは秘匿性が保たれており、ＩＣカードとして使用される場合、一般に、内部に蓄えられたデータは、正しい手順以外では読み出すことができないようにされている。このようなＩＣカードは、不正な読み出し、例えば、侵襲的な方法で読み出しが行われた場合、ＩＣカード内部の検出機構によりそれを検知することができ、さらに、不正な読み出しを検知すると内部データを消去し、データの値が漏洩しないようにされている。前述したように、従来から暗号モジュール１の内部にあるレジスタの秘匿性を保つことは可能である。このため、以下に説明する本発明の実施形態は、暗号モジュール１の内部の秘匿性が保たれているということを前提とする。また、逆に、どのような手段により暗号モジュール１を実現するかについては本発明の範囲外とする。
【００１８】
次に、暗号モジュール１の内部にあるディジタル回路の動作の概要について説明する。
【００１９】
図１において、外部入力バス７０ＩＮは、外部からの信号を暗号モジュール１に転送する役割を持つ。外部入力バス７０ＩＮ上のデータは、タグ部とデータ部とからなり、さらに、タグ部は、タグ部１とタグ部２とからなる。タグ部１は、２種の意味を持つ（タグ部２については後述する）。すなわち、タグ部１は、「認証用命令キューへキューイングせよ」または「実行用命令キューへキューイングせよ」の２種の意味を持つ。この結果、外部入力バス７０ＩＮからタグ部とデータ部とが入力されたとき、タグ部１の意味が前者である場合、タグ部２とデータ部とが認証用キュー１０Ｃキューイングされ、タグ部１の意味が後者である場合、タグ部２とデータ部とが実行命令キュー１０Ｆへキューイングされる。ここで、セレクタ６０Ｆ２は、通常外部入力バス７０ＩＮからのデータを選択しており、他方を選択する場合については後述する。
【００２０】
タグ部２は、「Ｆコード命令」、「Ｆコードデータ」、「Ａコード命令」、「Ａコードデータ」、「Ｃコード命令」または「Ｃコードデータ」の６種類の意味を持つ。そして、タグ部１とタグ部２との組み合わせで、許される組み合わせは、
「認証用命令キューへキューイングせよ」＋「Ａコード命令」、「Ａコードデータ」、「Ｃコード命令」または「Ｃコードデータ」と、
「実行用命令キューへキューイングせよ」＋「Ｆコード命令」または「Ｆコードデータ」との合計６種類である。これら以外の組み合わせを持つタグ部が外部入力バス７０ＩＮから入力された場合、その信号は無視される。すなわち、キューイングは行われない。
【００２１】
タグ部１とタグ部２とが「実行用命令キューへキューイングせよ」＋「Ｆコード命令」または「Ｆコードデータ」であるデータが外部入力バス７０ＩＮから入力された場合、この入力されたデータをＦコードと呼ぶことにし、「認証用命令キューへキューイングせよ」＋「Ａコード命令」または「Ａコードデータ」の場合、入力されたデータをＡコードと呼ぶことにする。また、「認証用命令キューへキューイングせよ」＋「Ｃコード命令」または「Ｃコードデータ」の場合、入力されたデータをＣコードと呼ぶことにする。
【００２２】
本発明の特徴の１つは、暗号モジュール１で実行される命令（及び、それに用いるデータ）として、ＦコードとＡコードとの２種類を持つことにある。これらの命令は、以下で詳細に説明する動作により明確になるが、セキュリティに対する考え方が異なるものである。すなわち、Ａコードは、コードが暗号モジュール１で実行される前に認証が行われ、認証が成功すればそのコードが実行され、そうでなければマシンチェック（マシンチェック時の動作は後述する）となる。認証の具体的な方法については後述する。また、Ｆコードは、認証が行われずに、実行される前にコードの１命令単位にセキュリティチェックが行われ、これに問題がなければ実行され、そうでなければマシンチェックとなる。このセキュリティチェックは、Ａコード実行前には行われない。
【００２３】
これらの２種類のコードは、コードで用いられる命令体系は同一である。そして、Ｆコードは、１命令毎にセキュリティチェックを行うことにより高速な実行が可能とされており、Ａコードは、コード自体の認証を行うことにより、セキュリティチェックを解除し、これにより、Ｆコードでは実現することができない複雑な動作を可能とするものである。すなわち、基本的に、Ａコードは、本発明によるディジタル回路において、実行前に認証チェックが行われるが、その動作内容がセキュリティ上問題ないか否かをチェックするセキュリティチェックは行われない。従って、暗号モジュール１のセキュリティを完全なものにするためにＡコードのコーディングは、ある制限を守って行われていなくてはならない。この制限をセキュリティポリシと呼ぶことにする。以下では、Ａコードは、このセキュリティポリシに沿ってコーディングされているものとする。セキュリティポリシについては後述する。
【００２４】
次に、Ｆコードの動作について説明する。
Ｆコードは、前述説明したように、外部入力バス７０ＩＮから実行用命令キュー１０Ｆに直接キューイングされる。実行用命令キュー１０Ｆにキューイングされたタグ部２とデータ部とは、１エントリづつキューから読み出される。キューであるので、エントリは、ＦＩＦＯ、すなわち、キューに書き込まれた順番に読み出しが行われる。
【００２５】
読み出された１つのエントリは、まずタグ部２がデコードされる。タグ部２は、「Ｆコード命令」または「Ｆコードデータ」のはずである。最初に読み出したエントリが「Ｆコードデータ」である場合、マシンチェックとなる。そして、タグ部２が「Ｆコード命令」であって、かつ、マシンチェックが起こっていなければ（起こっていればここで動作が停止する）、データ部がデコードされ、セキュリティチェックが行われる。その結果問題がければ（問題があった場合にはマシンチェックとなる）、その結果を用いて暗号モジュール１内のリソースが制御され、「Ｆコード命令」で指定された動作が行われる。このとき、実行用命令キュー１０Ｆの次のエントリが「Ｆコードデータ」である場合があり、このデータは、この命令動作中にデータとして使用される。「Ｆコード命令」で指定された動作で「Ｆコードデータ」を使用しないのにも関わらず、次のエントリが「Ｆコードデータ」であった場合にはマシンチェックとなる。
【００２６】
「Ｆコード命令」で指定される動作は、以下のようなものである。すなわち、レジスタ３０ＳＰ、３０ＳＴ、３０ＰＰ、３０ＰＴ、３０Ｏの内、「Ｆコード命令」で指定されたレジスタからデータを読み出し（指定によっては複数回読み出しを行う）、読み出したデータを演算器２０に入力し、「Ｆコード命令」で指定された演算を演算器２０内部で行い、その結果をレジスタ３０ＳＰ、３０ＳＴ、３０ＰＰ、３０ＰＴ、３０Ｏに書き込む。指定する動作がすべて完了すれば、次の「Ｆコード命令」の読み出しを行って前述の動作を繰り返す。
【００２７】
本発明の実施形態は、前述の動作を行うために次に説明するような機構を備えている。
【００２８】
レジスタ３０ＳＰ、３０ＳＴ、３０ＰＰ、３０ＰＴ、３０Ｏは、データを格納しているレジスタであり、単位長（ここでは８バイト長とする）を１エントリとして、単一もしくは複数のエントリを格納することができる。セレクタ５０ＳＰ１、５０ＳＰ２、５０ＳＴ１、５０ＰＰ１、５０ＰＴ１、５０Ｏ１、５０Ｏ２は、それぞれ、レジスタ３０ＳＰ、３０ＳＴ、３０ＰＰ、３０ＰＴ、３０Ｏに格納されているデータから、ある１つのエントリを読み出す。セレクタ５０は、演算器２０への入力データを選択する。このようなレジスタから１つのエントリを読み出し、演算器２０に入力するという一連の動作は、命令によっては１回も行われない場合もあれば複数回行われることもある。また、この読み出し動作を高速に複数回行うために、セレクタ５０ＳＰ１、５０ＳＰ２、５０ＳＴ１、５０ＰＰ１、５０ＰＴ１、５０Ｏ１、５０Ｏ２、５０と同じ論理を複数セットをインプリメントしてもよい。
【００２９】
演算器２０は、演算に必要なデータがそろった段階で、データの演算を行う。ここで行う演算とは、一般のプロセッサで行うことができる演算（四則演算、論理演算等）に加え、暗号・復号演算（例えば、ＤＥＳ暗号等）及びハッシュ演算（例えばＳＨＡ１等）を行うことができるものであってよい。セレクタ６０ＳＰ、６０ＳＴ、６０ＰＰ，６０ＰＴ、６０Ｏは、それぞれ、レジスタ３０ＳＰ、３０ＳＴ、３０ＰＰ、３０ＰＴ、３０Ｏの１つのエントリに書き込みを行う。これらの演算器及びセレクタは、「Ｆコード命令」のデコードにより生成された制御信号により制御される。
【００３０】
次に、セキュリティチェックの方法について説明するが、まず、レジスタ３０ＳＰ、３０ＳＴ、３０ＰＰ、３０ＰＴ、３０Ｏの分類について説明する。
【００３１】
レジスタは、３つの観点から分類されている。３つの観点とは、レジスタに格納されているデータが暗号モジュール１の外部から読み出しを行うことができるもの（出力レジスタに相当）と、書き込みあるいは暗号モジュール１の外部への読み出しがＡコード、Ｆコードの両方で可能であるか、それともＡコードでのみ可能であるかの観点である。情報の種類という観点からすると、秘密（Secret）情報は、暗号モジュール１の外部への読み出しがＡコードでのみ可能であるものに分類されるべきであり、公開（Public）情報は、暗号モジュール１の外部への読み出しがＡコード、Ｆコードの両方で可能であるものに分類されるべきである。また、書き込みの情報に関しても、Ａコードでのみ可能なものと、Ａコード、Ｆコードの両方で可能であるものに分類することができる。例えば、認証に用いる公開鍵は、Ａコードでないと書き換えができないもの(Permanent）に分類されるべきであり、それ以外の主に演算に用いられる一時的なデータは、Ｆコードでも書き換えができるもの(Temporary）に分類されるべきである。
【００３２】
前述の観点から本発明の実施形態は、暗号モジュール１内のレジスタを次に示す５つに分類している。すなわち、これらは、
（１）ＳＰ(Secret-Permanent)：恒久的に秘密情報を保持するレジスタ、
（２）ＰＰ(Public-Permanent)：恒久的に公開情報を保持するレジスタ、
（３）ＳＴ(Secret-Temporary)：一時的に秘密情報を保持するレジスタ、
（４）ＰＴ(Public-Temporary)：一時的に公開情報を保持するレジスタ、
（５）Ｏ（出力レジスタ）    ：暗号モジュール１の出力レジスタ（レジスタの出力が外部出力バス７０ＯＵＴに接続されており、暗号モジュール１の外部にそのデータの読み出しを行うことができる）
の５つである。
【００３３】
これらの分類に従って、図１に示すレジスタ３０ＳＰ、３０ＳＴ、３０ＰＰ、３０ＰＴ、３０Ｏは、それぞれ、ＳＰ、ＳＴ、ＰＰ、ＰＴ、Ｏに分類されている。
【００３４】
次に、命令の分類について説明する。本発明の実施形態は、命令を、その命令により指定される動作内容から次に示すように分類している。
【００３５】
（１）秘密情報を公開情報に変換する命令
この命令には、ＳＰに属するレジスタに格納されたデータをキーとして用いる暗号動作を指定する命令、あるいは、ハッシュ化する演算を指定する命令が分類される。ＳＰに属するレジスタに格納されたデータは、Ｆコードでの読み出しを行うことができず、かつ、Ａコードによっても、セキュリティポリシに従うことにより権威なき書き換え、読み出しが許されないものであるため、このデータをキーとして暗号化を行うことにより、その暗号化前のデータ（いわゆる平文）を秘匿することができる。従って、この場合、平文を秘密情報、暗号文を公開情報と位置付けても問題が生じることはない。また、ハッシュ化する演算は、その特性上、出力データから入力データを求めることができないため、これについても、入力データが秘密情報であっても、出力データを公開情報として問題が生じることはない。
【００３６】
（２）公開情報を秘密情報に変換する命令
この命令には、ＳＰに属するレジスタに格納されたデータをキーとして用いる復号動作を指定する命令が分類される。この命令は、前述の（１）に分類される命令の逆変換に相当するものであり、このような分類が妥当であることは明らかである。
【００３７】
（３）公開情報の入力に対しては公開情報として、秘密情報の入力に対しては秘密情報として出力する命令
この命令には、レジスタからレジスタへの転送、四則演算を行う命令が分類される。
【００３８】
前述した（１）〜（３）の命令の分類に関して、注意すべきことは、（１）と（２）とでいう暗号化、復号化を単純にとらえてはならないということである。例えば、トリプルＤＥＳと呼ばれる技術が知られているが、このトリプルＤＥＳは、ＤＥＳ演算を３回繰り返すことにより暗号強度を高める技術である。そして、この技術は、３回の演算を、暗号化・暗号化・暗号化という順で行う方法もあれば、暗号化・復号化・暗号化という順で行う方法もある。問題は、後者の方法にある。この場合の問題は、単純に、ＳＰをキーに用いるＤＥＳ暗号及びトリプルＤＥＳ暗号を（１）に分類し、逆に、ＳＰをキーに用いるＤＥＳ復号及びトリプルＤＥＳ復号を（２）に分類すると、せっかくＳＰでトリプルＤＥＳ暗号を行ったデータも、ＳＰを用いたＤＥＳ復号を行い、さらに、ＳＰを用いたＤＥＳ暗号を行うと、その結果が公開情報となってしまうため、トリプルＤＥＳの暗号強度が実質的にＤＥＳ暗号の強度となってしまうという問題である。この場合の回避策は、ＳＰを用いたトリプルＤＥＳ暗号・復号の命令を（１）、（２）に分類することとした場合、ＳＰを用いたＤＥＳ暗号・復号の命令を（１）でも（２）でもなくＦコードでの実行は禁止されるべき（つまり命令があってはならない）命令に分類する必要がある。
【００３９】
次に、データ転送規則について、図２を参照して説明する。このデータ転送規則を決定する基本的な考え方は以下に説明する通りである。すなわち、これらの考え方の基本は、
・レジスタ３０ＳＰ、ＰＰへの書き込みは、セキュリティポリシにより定義される権威付けが必要なためＦコードでの書き換えは許さない、
・レジスタ３０ＳＰ、ＳＴからのレジスタ３０Ｏへの転送は、暗号モジュール１の外部への秘密情報の読み出しに相当するためＦコードでは許さない、
・レジスタ３０ＳＰ、ＳＴからのレジスタ３０ＰＴへの転送は、秘密情報の公開情報への変換を意味するためＦコードでは許さない。
【００４０】
・レジスタ３０ＳＰからレジスタ３０ＳＴへの転送は、前述したトリプルＤＥＳで示した問題が起こるためＦコードでは許さない、
の４つである。
そして、この４つの考え方の基本に基づいてレジスタ相互間でのデータ転送の可否を纏めたのが図２に示すものである。
【００４１】
次に、前述までに説明した命令の分類と転送規則とを用いて、本発明の実施形態の場合におけるセキュリティチェックに関して説明する。
【００４２】
前述の（３）に分類される命令が最も簡単であるので、まず、これについて説明する。この場合、転送規則における転送元は入力レジスタであり、転送先は出力レジスタである。これらの転送元、転送先の各レジスタがＳＰ、ＳＴ、ＰＰ、ＰＴ、Ｏのいずれであるかによって、転送規則で転送可能か否かがチェックされる。転送不可となった場合が、セキュリティチェックで問題があったということになり、マシンチェックとなる。
【００４３】
前述の（１）に分類される命令の場合、命令の演算により公開情報に変換されるため、転送規則における転送元レジスタはＰＴ扱いとなる。転送先は出力レジスタと決定され、転送規則で転送可能か否かがチェックされる。転送不可となった場合が、セキュリティチェックで問題があったということになり、マシンチェックとなる。
【００４４】
前述の（２）に分類される命令の場合、命令の演算により秘密情報に変換されるため、転送規則における転送元レジスタはＳＴ扱いとなる。転送先は出力レジスタと決定され、転送規則で転送可能か否かがチェックされる。転送不可となった場合が、セキュリティチェックで問題があったということになり、マシンチェックとなる。
【００４５】
前述までがＦコードの動作の説明であり、次に、Ａコードの動作について説明する。
【００４６】
Ａコードの認証動作を説明する。まず、認証に用いる特別な命令であるＣコードについて説明する。Ｃコードは、次に説明する３種類に分類され、
（１）ＡＣＧＭＡＣ：オペランドとしてＡコードを指定し、そのＡコードの認証コードの生成を行う、
（２）ＳＥＴＡＣＥＮ：オペランドとしてリファレンス認証コードを指定し、前述の（１）に分類されたコードで生成された認証コードと比較し、一致した場合にＡコードの実行が可能状態にする、
（３）ＲＳＴＡＣＥＮ：前述の（１）に分類されたコードで生成された認証コードを無効化し、前述の（２）に分類されたコードでセットしたＡコードの実行可能な状態をリセットして不可状態にする、
である。
【００４７】
これらの３種類を用いて、Ａコードは外部入力バス７０ＩＮから次に示す順序で入力される。以下では、「タグ部２の指定」：「データ部」で示す。
【００４８】
（１）「Ｃコード命令」：「ＲＳＴＡＣＥＮ」
（２）「Ｃコード命令」：「ＡＣＧＭＡＣ」
（３）「Ａコード命令」：「（Ａコードの命令）」
（４）「Ａコード命令」または「Ａコードデータ」：「（Ａコードの命令またはデータ）」
（５）「Ｃコード命令」：「ＳＥＴＡＣＥＮ」
（６）「Ｃコードデータ：「リファレンス認証コード」
前述の（１）〜（６）は、すでに説明したとおり、タグ部１が「認証用命令キューへキューイングせよ」と指定し、全てが認証用キュー１０Ｃにキューイングされる。ここから順にエントリが読み出されて実行される。以下、これらを順に説明する。
【００４９】
（１）「Ｃコード命令」：「ＲＳＴＡＣＥＮ」の動作
マシンチェックが起こっていなければ命令が実行される。
そして、この命令は、認証コードレジスタ３０Ｃを無効化し、Ａコードの実行可能・不可状態を示すラッチ４０を実行不可を示すように“０”クリアし、セレクタ６０Ｆ２の選択を外部入力バス７０ＩＮ側となるようにする。
【００５０】
（２）「Ｃコード命令」：「ＡＣＧＭＡＣ」の動作
マシンチェックが起こっていなければ命令が実行される。
そして、この命令は、セレクタ６０Ｆ２の選択を認証用命令キューのセレクタ５０Ｃの出力側となるようにする。その後、実行用命令キューが空となり、全ての命令の実行が完了した状態となるまで待ち、ラッチ４０を“０”クリアして、レジスタ３０ＳＰから認証コード生成に用いるキーを読み出す（どれを用いるかは固定）。認証コードレジスタ３０Ｃからデータを読み出し、これを認証コード生成時の初期値（３０Ｃが無効状態の場合、初期値“０”）とする。その後、（３）と（４）とのＡコードを順に認証用命令キュー１０Ｃから読み出して認証コードの生成を行って３０Ｃに格納（格納が１回でも行われると、３０Ｃは有効化される）していく。その際、キューから読み出したＡコードは、実行用命令キュー１０Ｆにキューイングされる。実行用命令キュー１０Ｆからの読み出しはラッチ４０が“０”である間、抑止されるため、実行用命令キュー１０Ｆにキューイングされた命令が実行されることはない。
【００５１】
（５）「Ｃコード命令」：「ＳＥＴＡＣＥＮ」の動作
マシンチェックが起こっていなければ命令が実行される。
認証コードレジスタ３０Ｃと、認証用命令キュー１０Ｃから読み出した（６）のリファレンス認証コードとを比較し、一致すればラッチ４０を“１”にセットし（Ａコード実行可能状態を示す）、そうでなければマシンチェックを起こす。
【００５２】
一致した場合、ラッチ４０が“１”にセットされるので、実行用命令キュー１０Ｆから命令が読み出され、Ａコードの実行が開始される。この後の動作は、前述で説明したＦコードの動作と同一であるが、ただ一点のみ異なる。この異なる動作は、Ａコードの実行ではセキュリティチェックなしで命令が実行される点である。
【００５３】
マシンチェックが起こった場合、前述で説明した部分と重複するが、認証用命令キュー１０Ｃの命令実行（これはＣコードの実行を指す）が停止し、実行用命令キュー１０Ｆの命令実行（これはＦコード及びＡコードの実行を指す）が停止するため、暗号モジュール１内の命令実行はすべて停止する。これは、セキュリティを確保するためである。このマシンチェックの状態を解除できる方法は唯一リセットのみである。
【００５４】
次に、リセットの動作について説明する。
リセットは、暗号モジュール１においてセキュリティを確保する上で重要である。リセットにより、少なくともマシンチェック状態がリセットされ、また、レジスタ３０ＳＰ、３０ＳＴ、ラッチ４０、ラッチ４１及び認証コードレジスタ３０Ｃがリセットされる。但し、この場合、レジスタ３０ＳＰに、認証コード生成回路２１でキーとして用いるデータが格納されるレジスタにある特別な秘密の値が格納される。これは、リセット後に実行するＡコードの認証においてもセキュリティの確保を行うことが必要なためである。
【００５５】
最後に、セキュリティポリシの考え方について説明する。
本発明は、すでに説明してきたようにセキュリティに関する機構を提供することが目的であるが、実際に本発明を実現するためには、Ａコードのコーディングがある一定の制限の下に行われないとセキュリティを損なうことになる。前述した本発明の実施形態は、Ｆコードでの読み出し、書き込みが制限されているレジスタに対して、Ａコードでの読み出し、書き込みが可能であるとしているが、これを実行するために、ある一定の権威付けの方法を定義して、それが行われた場合にのみＡコードでの読み出し、書き込みを実行することができるようにしておく必要がある。
【００５６】
前述の権威づけの方法として、例えば、レジスタ３０ＳＰ、ＰＰのエントリを階層化し、より上位のエントリをキーとして用いて認証を行い、認証が成功した場合のみ、より下位のエントリの読み出し、書き込みを行うことができるようにするという方法がある。この場合、最終的に最上位となるエントリに、例えば、リセット時に特別な値にセットする、あるいは、より下位のエントリをキーとして用いた認証を複数のエントリで認証が通らないと書き換えられないようにする等の方法がある。このような機能は、Ａコードであれば自由にコーディングができるわけであるから実現が容易であり、新たなるハードウエア機構は必要とされない。
【００５７】
Ａコードでのコーディングは、前述したように、まず、認証を行い、その後、レジスタにアクセスするようにコーディングが行われればよい。但し、セキュリティを確保する機構として、認証に失敗すればマシンチェックとなるようにするか、あるいは、少なくとも失敗すれば、キューイングされているそれ以降のＡコードがクリアされて実行されないようにしておくことが必要である。
【００５８】
図３はデータ転送の規則についての他の例を説明する図であり、以下、これについて説明する。
【００５９】
このデータ転送の規則は、ハードウエアに１ビットのモードラッチ４１設けることにより、ＥＳモードの設定を行った場合のデータ転送規則である。ＥＳモードは、レジスタ３０ＳＰからレジスタ３０ＰＴへのデータの転送を可能とするモードである。そして、このモードラッチ４１は、レジスタ３０ＳＰからレジスタ３０ＰＴへのデータの転送が行われるとオンとされる。これは、レジスタ３０ＳＰからレジスタ３０ＰＴへの転送が行われることにより、レジスタ３０ＰＴをレジスタ分類としてはＳＰ扱いにするためである。他の転送も同様である。
【００６０】
図３に示すように、ＥＳモードがオンである場合、レジスタ３０ＰＴからレジスタ３０Ｏへの転送は禁止される。これは、ＥＳモードオン時には、前述で説明したように、レジスタＰＴにレジスタ３０ＳＰ等の秘密情報を含む可能性があるためである。
【００６１】
前述のＥＳモードを設けたことにより、このＥＳモードをリセットする命令を追加する必要があるが、このリセットの際、レジスタ３０ＳＴと３０ＰＴとは、“０”にクリアされる。
【００６２】
【発明の効果】
以上説明したように本発明によれば、処理のオーバヘッドを大きくすることなく、柔軟な方式でセキュリティーの向上を図ることができる。
【図面の簡単な説明】
【図１】本発明の一実施形態によるディジタル回路を含む暗号モジュールの構成例を示すブロック図である。
【図２】データ転送の規則について説明する図である。
【図３】データ転送の規則についての他の例を説明する図である。
【符号の説明】
１  暗号モジュール
１０Ｆ  実行用命令キュー
１０Ｃ  認証用命令キュー
２０  演算器
２１  認証コード生成回路
２２  一致検出回路
30SP、30ST、30PP、30PT、30O  レジスタ
３０Ｃ  認証コードレジスタ
４０、４１  ラッチ
50SP1、50SP2、50ST1、50PP1、50PT1、50O1、50O2、50、50C、50F、60C、60F1、60F2、60SP、60ST、60PP、60PT、60O  セレクタ
７０ＩＮ  入力バス、
７０ＯＵＴ  出力バス
【図１】
0004098959.tif 000002
【図２】
0004098959.tif 000003
【図３】
0004098959.tif 000004