JP4098959B2 - ディジタル回路 - Google Patents
ディジタル回路 Download PDFInfo
- Publication number
- JP4098959B2 JP4098959B2 JP2001006708A JP2001006708A JP4098959B2 JP 4098959 B2 JP4098959 B2 JP 4098959B2 JP 2001006708 A JP2001006708 A JP 2001006708A JP 2001006708 A JP2001006708 A JP 2001006708A JP 4098959 B2 JP4098959 B2 JP 4098959B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- transfer
- data
- registers
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Storage Device Security (AREA)
Description
【発明の属する技術分野】
本発明は、ディジタル回路に係り、特に、データ及び処理のセキュリティを考慮したディジタル回路に関する。
【0002】
【従来の技術】
セキュリティを考慮したディジタル回路に関する従来技術として、
(1)パスワードのチェックを行う回路を設けることによりメモリ、レジスタへのアクセスを制限する機構を持つディジタル回路、
(2)モードを記憶する回路を設け、このモードが指定する状態により、メモリ、レジスタへのアクセスを制限するようなディジタル回路、
(3)メモリにアクセスする際に用いるアドレスに何らかの変換を行う回路を設けることにより、変換後のアドレスが正常な値とならなければ所定の位置にアクセスできないようにするディジタル回路、
の概ね3種が知られている。
【0003】
前述の(1)に分類される従来技術として、例えば、特開平5−12130号公報、特開平5−2535号公報、特開平5−174491号公報、特開平7−121448号公報、特開平8−111097号公報、特開平5−136019号公報、特開平9−62583号公報、特開平9−190236号公報等に記載された技術が知られている。これらの従来技術は、いずれも、セキュリティを守るため、ハードウエアにあらかじめパスワード等のアクセスが許される者しか知らない情報を格納しておき、アクセスの際に、この格納された情報とアクセスの際に入力した情報とを比較し、一致した場合に、メモリ・レジスタへのアクセスを許可するというものである。
【0004】
また、前述の(2)に分類される従来技術として、特開平5−94299号公報、特開平5−224828号公報、特開平10−228422号公報等に記載された技術が知られている。これらの従来技術は、いずれも、モードを設定する回路が用意されており、このモードの設定によってはメモリ・レジスタへのアクセスが制限されるよう構成されているというものである。
【0005】
前述した(1)及び(2)の従来技術は、いずれも、ハードウエアを構成する上で非常に小規模なセキュリティ用の機構を設けることだけでセキュリティを確保することができるという利点を有するものであるが、その反面、パスワード・モードといった簡便な方法であるため、セキュリティを確保しながら柔軟に運用していく自由度が小さいものである。例えば、パスワードを定期的に変更することはセキュリティ上必須とされているが、これらの従来技術は、パスワードをROMに格納しているため、パスワードの書き換えができず、パスワードの書き換えには、ハードウエアを入れ換える必要が生じてしまうものである。
【0006】
また、前述の(3)に分類される従来技術として、例えば、特開平6−4407号公報、特開平6−139151号公報、特開平7−6096号公報等に記載された技術が知られている。これらの従来技術は、いずれも、あるメモリ・レジスタにアクセスする際に指定されたアドレス等をハードウエアにより変換(スクランブル)を行って、その結果を用いてアクセスを行うというものである。この従来技術は、アクセスが正しく行われなくても、アクセス自体は行われるものであるが、正しいデータを読み出すことができないため、これにより、セキュリティを確保することができるようにしている。しかし、これらの従来技術は、正しいデータが読み出すことができたのか否かが判然としないという問題を有し、読み出しが許されないものに対し、格納されている他のアドレスのデータを読み出す可能性もあり、セキュリティの観点で問題を有するものである。
【0007】
前述した3種類以外の他の従来技術として、例えば、FIPS PUB 140-1(FEDERAL INFORMATION PROCESSING STANDARDS PUBLICATION 140-1)等に記載された技術が知られている。この従来技術は、セキュリティを確保する上で行うべきこととして、セキュリティを確保しなくてはならないディジタル回路にプログラムを読み込む場合に、メッセージ認証技術を用いて、読み込まれたプログラムが正しいか否かを検証しなくてはならないようにしたものである。この従来技術は、プログラムによってセキュリティを考慮した機能を実現していくことができるため、前述した(1)の従来技術のように硬直したセキュリティでなく、柔軟なセキュリティを実現することができる。しかし、この従来技術は、プログラムを読み込む毎にメッセージ認証を行うことが必須となるため、この認証のための処理が性能上オーバヘッドとなるという問題を含んでいる。そして、この従来技術は、仮に、電源オン時のみ認証を行うようにして、性能オーバヘッドを実際の動作時にはないようにすることができるが、そのために、全てのプログラムを読み込むことができるだけの大容量のメモリを用意する必要が生じるものである。
【0008】
【発明が解決しようとする課題】
前述した従来技術は、セキュリティ上アクセスを制限したいメモリ・レジスタに対し、アクセスの許可・不許可の機構をハードウエアで実現した場合、結局のところ単純な機構しか実現することができず、セキュリティといった観点で、柔軟な方法を実現していくことが困難であるという問題点を有している。
【0009】
また、メッセージ認証技術を用いて、プログラムが正しいか否かを認証する従来技術、セキュリティの観点では柔軟な方式を実現することができるが、認証を行うため性能に関してオーバヘッドをもたらすか、あるいは、プログラムのローディング領域の確保によるハードウエア資源にオーバヘッドをもたらすかのいずれかを覚悟する必要があるという問題点を有している。
【0010】
本発明の目的は、前述した従来技術の問題点を解決し、処理のオーバヘッドを大きくすることなく、柔軟な方式でセキュリティーの向上を図ることを可能にしたディジタル回路を提供することにある。
【0011】
【課題を解決するための手段】
本発明によれば前記目的は、第1のプログラムをキューイングする第1のキューと、第2のプログラムをキューイングする第2のキューと、前記第1のキューに接続され第1のプログラムの認証コードを生成する認証コード生成回路と、生成した認証コードを格納するレジスタと、認証コードとリファレンス認証コードとの一致を検出する回路と、一致が検出されると“1”がセットされるラッチと、データを格納するレジスタと、該レジスタからの出力データの演算を行い該レジスタへの書き込みを行う演算回路とを備え、前記第1のキューに読み込んだ第1のプログラムの真偽を、第1のプログラムから生成した認証コードとリファレンス認証コードとを比較して認証し、一致した場合にセキュリティに関するチェックを行わずに第1のプログラムを実行する機能と、前記第2のキューに読み込んだ第2のプログラムをメッセージ認証を行うことなく1命令単位にセキュリティに関するチェックを行い、問題がない場合にその命令を実行する機能とを有することにより達成される。
【0012】
前述の手段を備えて構成される本発明によるセキュリティ機構をもったディジタル回路は、2種類の命令実行形態を持つ。一方は、メッセージ認証技術を用いて読み込み時にプログラムが正しいか否かの認証を行ってから命令が実行されるものであり、他方は、認証を行わずに命令が実行されるものである。但し、他方のものは、セキュリティに関して問題のない命令のみに実行が制限される。本発明は、性能の要求されるような頻繁に用いる機能に関しては他方のプログラムにより実行することができるようにしており、これにより、性能のオーバヘッドを実効的にはないように見せることができる。しかも、前者のプログラムにより、セキュリティの観点で柔軟な方式を実現することも可能である。
【0013】
また、本発明によれば、セキュリティに関して問題のない命令体系を構成するために新たに問題となる制限方法の具体的な方法に関して、内部のレジスタを5種類に分類し、また、命令を3種類に分類することにより、単純であるが完全なるセキュリティ体系を構成することができる。
【0014】
【発明の実施の形態】
以下、本発明によるディジタル回路の一実施形態を図面により詳細に説明する。
【0015】
図1は本発明の一実施形態によるディジタル回路を含む暗号モジュールの構成例を示すブロック図、図2はデータ転送の規則について説明する図である。図1において、1は暗号モジュール、10Fは実行用命令キュー、10Cは認証用命令キュー、20は演算器、21は認証コード生成回路、22は一致検出回路、30SP、30ST、30PP、30PT、30Oはレジスタ、30Cは認証コードレジスタ、40、41はラッチ、50SP1、50SP2、50ST1、50PP1、50PT1、50O1、50O2、50、50C、50F、60C、60F1、60F2、60SP、60ST、60PP、60PT、60Oはセレクタ、70INは暗号モジュールの外部からの入力バス、70OUTは暗号モジュールの外部への出力バスである。
【0016】
図1に示す暗号モジュールは、計算機システムの中に組み込まれて使用することができ、あるいは、ICカードとして使用することができるものである。図示暗号モジュールは、計算機システムの中に組み込まれて使用される暗号モジュール内の本発明のディジタル回路の部分を示すものであり、実行用命令キュー10F、認証用命令キュー10C、演算器20、認証コード生成回路21、一致検出回路22、認証コードレジスタ30C、及び、レジスタ30SP、30ST、30PP、30PT、30Oを主要な構成要素として備えて構成されている。
【0017】
この暗号モジュール1の内部にあるレジスタ等に格納されているデータは秘匿性が保たれており、ICカードとして使用される場合、一般に、内部に蓄えられたデータは、正しい手順以外では読み出すことができないようにされている。このようなICカードは、不正な読み出し、例えば、侵襲的な方法で読み出しが行われた場合、ICカード内部の検出機構によりそれを検知することができ、さらに、不正な読み出しを検知すると内部データを消去し、データの値が漏洩しないようにされている。前述したように、従来から暗号モジュール1の内部にあるレジスタの秘匿性を保つことは可能である。このため、以下に説明する本発明の実施形態は、暗号モジュール1の内部の秘匿性が保たれているということを前提とする。また、逆に、どのような手段により暗号モジュール1を実現するかについては本発明の範囲外とする。
【0018】
次に、暗号モジュール1の内部にあるディジタル回路の動作の概要について説明する。
【0019】
図1において、外部入力バス70INは、外部からの信号を暗号モジュール1に転送する役割を持つ。外部入力バス70IN上のデータは、タグ部とデータ部とからなり、さらに、タグ部は、タグ部1とタグ部2とからなる。タグ部1は、2種の意味を持つ(タグ部2については後述する)。すなわち、タグ部1は、「認証用命令キューへキューイングせよ」または「実行用命令キューへキューイングせよ」の2種の意味を持つ。この結果、外部入力バス70INからタグ部とデータ部とが入力されたとき、タグ部1の意味が前者である場合、タグ部2とデータ部とが認証用キュー10Cキューイングされ、タグ部1の意味が後者である場合、タグ部2とデータ部とが実行命令キュー10Fへキューイングされる。ここで、セレクタ60F2は、通常外部入力バス70INからのデータを選択しており、他方を選択する場合については後述する。
【0020】
タグ部2は、「Fコード命令」、「Fコードデータ」、「Aコード命令」、「Aコードデータ」、「Cコード命令」または「Cコードデータ」の6種類の意味を持つ。そして、タグ部1とタグ部2との組み合わせで、許される組み合わせは、
「認証用命令キューへキューイングせよ」+「Aコード命令」、「Aコードデータ」、「Cコード命令」または「Cコードデータ」と、
「実行用命令キューへキューイングせよ」+「Fコード命令」または「Fコードデータ」との合計6種類である。これら以外の組み合わせを持つタグ部が外部入力バス70INから入力された場合、その信号は無視される。すなわち、キューイングは行われない。
【0021】
タグ部1とタグ部2とが「実行用命令キューへキューイングせよ」+「Fコード命令」または「Fコードデータ」であるデータが外部入力バス70INから入力された場合、この入力されたデータをFコードと呼ぶことにし、「認証用命令キューへキューイングせよ」+「Aコード命令」または「Aコードデータ」の場合、入力されたデータをAコードと呼ぶことにする。また、「認証用命令キューへキューイングせよ」+「Cコード命令」または「Cコードデータ」の場合、入力されたデータをCコードと呼ぶことにする。
【0022】
本発明の特徴の1つは、暗号モジュール1で実行される命令(及び、それに用いるデータ)として、FコードとAコードとの2種類を持つことにある。これらの命令は、以下で詳細に説明する動作により明確になるが、セキュリティに対する考え方が異なるものである。すなわち、Aコードは、コードが暗号モジュール1で実行される前に認証が行われ、認証が成功すればそのコードが実行され、そうでなければマシンチェック(マシンチェック時の動作は後述する)となる。認証の具体的な方法については後述する。また、Fコードは、認証が行われずに、実行される前にコードの1命令単位にセキュリティチェックが行われ、これに問題がなければ実行され、そうでなければマシンチェックとなる。このセキュリティチェックは、Aコード実行前には行われない。
【0023】
これらの2種類のコードは、コードで用いられる命令体系は同一である。そして、Fコードは、1命令毎にセキュリティチェックを行うことにより高速な実行が可能とされており、Aコードは、コード自体の認証を行うことにより、セキュリティチェックを解除し、これにより、Fコードでは実現することができない複雑な動作を可能とするものである。すなわち、基本的に、Aコードは、本発明によるディジタル回路において、実行前に認証チェックが行われるが、その動作内容がセキュリティ上問題ないか否かをチェックするセキュリティチェックは行われない。従って、暗号モジュール1のセキュリティを完全なものにするためにAコードのコーディングは、ある制限を守って行われていなくてはならない。この制限をセキュリティポリシと呼ぶことにする。以下では、Aコードは、このセキュリティポリシに沿ってコーディングされているものとする。セキュリティポリシについては後述する。
【0024】
次に、Fコードの動作について説明する。
Fコードは、前述説明したように、外部入力バス70INから実行用命令キュー10Fに直接キューイングされる。実行用命令キュー10Fにキューイングされたタグ部2とデータ部とは、1エントリづつキューから読み出される。キューであるので、エントリは、FIFO、すなわち、キューに書き込まれた順番に読み出しが行われる。
【0025】
読み出された1つのエントリは、まずタグ部2がデコードされる。タグ部2は、「Fコード命令」または「Fコードデータ」のはずである。最初に読み出したエントリが「Fコードデータ」である場合、マシンチェックとなる。そして、タグ部2が「Fコード命令」であって、かつ、マシンチェックが起こっていなければ(起こっていればここで動作が停止する)、データ部がデコードされ、セキュリティチェックが行われる。その結果問題がければ(問題があった場合にはマシンチェックとなる)、その結果を用いて暗号モジュール1内のリソースが制御され、「Fコード命令」で指定された動作が行われる。このとき、実行用命令キュー10Fの次のエントリが「Fコードデータ」である場合があり、このデータは、この命令動作中にデータとして使用される。「Fコード命令」で指定された動作で「Fコードデータ」を使用しないのにも関わらず、次のエントリが「Fコードデータ」であった場合にはマシンチェックとなる。
【0026】
「Fコード命令」で指定される動作は、以下のようなものである。すなわち、レジスタ30SP、30ST、30PP、30PT、30Oの内、「Fコード命令」で指定されたレジスタからデータを読み出し(指定によっては複数回読み出しを行う)、読み出したデータを演算器20に入力し、「Fコード命令」で指定された演算を演算器20内部で行い、その結果をレジスタ30SP、30ST、30PP、30PT、30Oに書き込む。指定する動作がすべて完了すれば、次の「Fコード命令」の読み出しを行って前述の動作を繰り返す。
【0027】
本発明の実施形態は、前述の動作を行うために次に説明するような機構を備えている。
【0028】
レジスタ30SP、30ST、30PP、30PT、30Oは、データを格納しているレジスタであり、単位長(ここでは8バイト長とする)を1エントリとして、単一もしくは複数のエントリを格納することができる。セレクタ50SP1、50SP2、50ST1、50PP1、50PT1、50O1、50O2は、それぞれ、レジスタ30SP、30ST、30PP、30PT、30Oに格納されているデータから、ある1つのエントリを読み出す。セレクタ50は、演算器20への入力データを選択する。このようなレジスタから1つのエントリを読み出し、演算器20に入力するという一連の動作は、命令によっては1回も行われない場合もあれば複数回行われることもある。また、この読み出し動作を高速に複数回行うために、セレクタ50SP1、50SP2、50ST1、50PP1、50PT1、50O1、50O2、50と同じ論理を複数セットをインプリメントしてもよい。
【0029】
演算器20は、演算に必要なデータがそろった段階で、データの演算を行う。ここで行う演算とは、一般のプロセッサで行うことができる演算(四則演算、論理演算等)に加え、暗号・復号演算(例えば、DES暗号等)及びハッシュ演算(例えばSHA1等)を行うことができるものであってよい。セレクタ60SP、60ST、60PP,60PT、60Oは、それぞれ、レジスタ30SP、30ST、30PP、30PT、30Oの1つのエントリに書き込みを行う。これらの演算器及びセレクタは、「Fコード命令」のデコードにより生成された制御信号により制御される。
【0030】
次に、セキュリティチェックの方法について説明するが、まず、レジスタ30SP、30ST、30PP、30PT、30Oの分類について説明する。
【0031】
レジスタは、3つの観点から分類されている。3つの観点とは、レジスタに格納されているデータが暗号モジュール1の外部から読み出しを行うことができるもの(出力レジスタに相当)と、書き込みあるいは暗号モジュール1の外部への読み出しがAコード、Fコードの両方で可能であるか、それともAコードでのみ可能であるかの観点である。情報の種類という観点からすると、秘密(Secret)情報は、暗号モジュール1の外部への読み出しがAコードでのみ可能であるものに分類されるべきであり、公開(Public)情報は、暗号モジュール1の外部への読み出しがAコード、Fコードの両方で可能であるものに分類されるべきである。また、書き込みの情報に関しても、Aコードでのみ可能なものと、Aコード、Fコードの両方で可能であるものに分類することができる。例えば、認証に用いる公開鍵は、Aコードでないと書き換えができないもの(Permanent)に分類されるべきであり、それ以外の主に演算に用いられる一時的なデータは、Fコードでも書き換えができるもの(Temporary)に分類されるべきである。
【0032】
前述の観点から本発明の実施形態は、暗号モジュール1内のレジスタを次に示す5つに分類している。すなわち、これらは、
(1)SP(Secret-Permanent):恒久的に秘密情報を保持するレジスタ、
(2)PP(Public-Permanent):恒久的に公開情報を保持するレジスタ、
(3)ST(Secret-Temporary):一時的に秘密情報を保持するレジスタ、
(4)PT(Public-Temporary):一時的に公開情報を保持するレジスタ、
(5)O(出力レジスタ) :暗号モジュール1の出力レジスタ(レジスタの出力が外部出力バス70OUTに接続されており、暗号モジュール1の外部にそのデータの読み出しを行うことができる)
の5つである。
【0033】
これらの分類に従って、図1に示すレジスタ30SP、30ST、30PP、30PT、30Oは、それぞれ、SP、ST、PP、PT、Oに分類されている。
【0034】
次に、命令の分類について説明する。本発明の実施形態は、命令を、その命令により指定される動作内容から次に示すように分類している。
【0035】
(1)秘密情報を公開情報に変換する命令
この命令には、SPに属するレジスタに格納されたデータをキーとして用いる暗号動作を指定する命令、あるいは、ハッシュ化する演算を指定する命令が分類される。SPに属するレジスタに格納されたデータは、Fコードでの読み出しを行うことができず、かつ、Aコードによっても、セキュリティポリシに従うことにより権威なき書き換え、読み出しが許されないものであるため、このデータをキーとして暗号化を行うことにより、その暗号化前のデータ(いわゆる平文)を秘匿することができる。従って、この場合、平文を秘密情報、暗号文を公開情報と位置付けても問題が生じることはない。また、ハッシュ化する演算は、その特性上、出力データから入力データを求めることができないため、これについても、入力データが秘密情報であっても、出力データを公開情報として問題が生じることはない。
【0036】
(2)公開情報を秘密情報に変換する命令
この命令には、SPに属するレジスタに格納されたデータをキーとして用いる復号動作を指定する命令が分類される。この命令は、前述の(1)に分類される命令の逆変換に相当するものであり、このような分類が妥当であることは明らかである。
【0037】
(3)公開情報の入力に対しては公開情報として、秘密情報の入力に対しては秘密情報として出力する命令
この命令には、レジスタからレジスタへの転送、四則演算を行う命令が分類される。
【0038】
前述した(1)〜(3)の命令の分類に関して、注意すべきことは、(1)と(2)とでいう暗号化、復号化を単純にとらえてはならないということである。例えば、トリプルDESと呼ばれる技術が知られているが、このトリプルDESは、DES演算を3回繰り返すことにより暗号強度を高める技術である。そして、この技術は、3回の演算を、暗号化・暗号化・暗号化という順で行う方法もあれば、暗号化・復号化・暗号化という順で行う方法もある。問題は、後者の方法にある。この場合の問題は、単純に、SPをキーに用いるDES暗号及びトリプルDES暗号を(1)に分類し、逆に、SPをキーに用いるDES復号及びトリプルDES復号を(2)に分類すると、せっかくSPでトリプルDES暗号を行ったデータも、SPを用いたDES復号を行い、さらに、SPを用いたDES暗号を行うと、その結果が公開情報となってしまうため、トリプルDESの暗号強度が実質的にDES暗号の強度となってしまうという問題である。この場合の回避策は、SPを用いたトリプルDES暗号・復号の命令を(1)、(2)に分類することとした場合、SPを用いたDES暗号・復号の命令を(1)でも(2)でもなくFコードでの実行は禁止されるべき(つまり命令があってはならない)命令に分類する必要がある。
【0039】
次に、データ転送規則について、図2を参照して説明する。このデータ転送規則を決定する基本的な考え方は以下に説明する通りである。すなわち、これらの考え方の基本は、
・レジスタ30SP、PPへの書き込みは、セキュリティポリシにより定義される権威付けが必要なためFコードでの書き換えは許さない、
・レジスタ30SP、STからのレジスタ30Oへの転送は、暗号モジュール1の外部への秘密情報の読み出しに相当するためFコードでは許さない、
・レジスタ30SP、STからのレジスタ30PTへの転送は、秘密情報の公開情報への変換を意味するためFコードでは許さない。
【0040】
・レジスタ30SPからレジスタ30STへの転送は、前述したトリプルDESで示した問題が起こるためFコードでは許さない、
の4つである。
そして、この4つの考え方の基本に基づいてレジスタ相互間でのデータ転送の可否を纏めたのが図2に示すものである。
【0041】
次に、前述までに説明した命令の分類と転送規則とを用いて、本発明の実施形態の場合におけるセキュリティチェックに関して説明する。
【0042】
前述の(3)に分類される命令が最も簡単であるので、まず、これについて説明する。この場合、転送規則における転送元は入力レジスタであり、転送先は出力レジスタである。これらの転送元、転送先の各レジスタがSP、ST、PP、PT、Oのいずれであるかによって、転送規則で転送可能か否かがチェックされる。転送不可となった場合が、セキュリティチェックで問題があったということになり、マシンチェックとなる。
【0043】
前述の(1)に分類される命令の場合、命令の演算により公開情報に変換されるため、転送規則における転送元レジスタはPT扱いとなる。転送先は出力レジスタと決定され、転送規則で転送可能か否かがチェックされる。転送不可となった場合が、セキュリティチェックで問題があったということになり、マシンチェックとなる。
【0044】
前述の(2)に分類される命令の場合、命令の演算により秘密情報に変換されるため、転送規則における転送元レジスタはST扱いとなる。転送先は出力レジスタと決定され、転送規則で転送可能か否かがチェックされる。転送不可となった場合が、セキュリティチェックで問題があったということになり、マシンチェックとなる。
【0045】
前述までがFコードの動作の説明であり、次に、Aコードの動作について説明する。
【0046】
Aコードの認証動作を説明する。まず、認証に用いる特別な命令であるCコードについて説明する。Cコードは、次に説明する3種類に分類され、
(1)ACGMAC:オペランドとしてAコードを指定し、そのAコードの認証コードの生成を行う、
(2)SETACEN:オペランドとしてリファレンス認証コードを指定し、前述の(1)に分類されたコードで生成された認証コードと比較し、一致した場合にAコードの実行が可能状態にする、
(3)RSTACEN:前述の(1)に分類されたコードで生成された認証コードを無効化し、前述の(2)に分類されたコードでセットしたAコードの実行可能な状態をリセットして不可状態にする、
である。
【0047】
これらの3種類を用いて、Aコードは外部入力バス70INから次に示す順序で入力される。以下では、「タグ部2の指定」:「データ部」で示す。
【0048】
(1)「Cコード命令」:「RSTACEN」
(2)「Cコード命令」:「ACGMAC」
(3)「Aコード命令」:「(Aコードの命令)」
(4)「Aコード命令」または「Aコードデータ」:「(Aコードの命令またはデータ)」
(5)「Cコード命令」:「SETACEN」
(6)「Cコードデータ:「リファレンス認証コード」
前述の(1)〜(6)は、すでに説明したとおり、タグ部1が「認証用命令キューへキューイングせよ」と指定し、全てが認証用キュー10Cにキューイングされる。ここから順にエントリが読み出されて実行される。以下、これらを順に説明する。
【0049】
(1)「Cコード命令」:「RSTACEN」の動作
マシンチェックが起こっていなければ命令が実行される。
そして、この命令は、認証コードレジスタ30Cを無効化し、Aコードの実行可能・不可状態を示すラッチ40を実行不可を示すように“0”クリアし、セレクタ60F2の選択を外部入力バス70IN側となるようにする。
【0050】
(2)「Cコード命令」:「ACGMAC」の動作
マシンチェックが起こっていなければ命令が実行される。
そして、この命令は、セレクタ60F2の選択を認証用命令キューのセレクタ50Cの出力側となるようにする。その後、実行用命令キューが空となり、全ての命令の実行が完了した状態となるまで待ち、ラッチ40を“0”クリアして、レジスタ30SPから認証コード生成に用いるキーを読み出す(どれを用いるかは固定)。認証コードレジスタ30Cからデータを読み出し、これを認証コード生成時の初期値(30Cが無効状態の場合、初期値“0”)とする。その後、(3)と(4)とのAコードを順に認証用命令キュー10Cから読み出して認証コードの生成を行って30Cに格納(格納が1回でも行われると、30Cは有効化される)していく。その際、キューから読み出したAコードは、実行用命令キュー10Fにキューイングされる。実行用命令キュー10Fからの読み出しはラッチ40が“0”である間、抑止されるため、実行用命令キュー10Fにキューイングされた命令が実行されることはない。
【0051】
(5)「Cコード命令」:「SETACEN」の動作
マシンチェックが起こっていなければ命令が実行される。
認証コードレジスタ30Cと、認証用命令キュー10Cから読み出した(6)のリファレンス認証コードとを比較し、一致すればラッチ40を“1”にセットし(Aコード実行可能状態を示す)、そうでなければマシンチェックを起こす。
【0052】
一致した場合、ラッチ40が“1”にセットされるので、実行用命令キュー10Fから命令が読み出され、Aコードの実行が開始される。この後の動作は、前述で説明したFコードの動作と同一であるが、ただ一点のみ異なる。この異なる動作は、Aコードの実行ではセキュリティチェックなしで命令が実行される点である。
【0053】
マシンチェックが起こった場合、前述で説明した部分と重複するが、認証用命令キュー10Cの命令実行(これはCコードの実行を指す)が停止し、実行用命令キュー10Fの命令実行(これはFコード及びAコードの実行を指す)が停止するため、暗号モジュール1内の命令実行はすべて停止する。これは、セキュリティを確保するためである。このマシンチェックの状態を解除できる方法は唯一リセットのみである。
【0054】
次に、リセットの動作について説明する。
リセットは、暗号モジュール1においてセキュリティを確保する上で重要である。リセットにより、少なくともマシンチェック状態がリセットされ、また、レジスタ30SP、30ST、ラッチ40、ラッチ41及び認証コードレジスタ30Cがリセットされる。但し、この場合、レジスタ30SPに、認証コード生成回路21でキーとして用いるデータが格納されるレジスタにある特別な秘密の値が格納される。これは、リセット後に実行するAコードの認証においてもセキュリティの確保を行うことが必要なためである。
【0055】
最後に、セキュリティポリシの考え方について説明する。
本発明は、すでに説明してきたようにセキュリティに関する機構を提供することが目的であるが、実際に本発明を実現するためには、Aコードのコーディングがある一定の制限の下に行われないとセキュリティを損なうことになる。前述した本発明の実施形態は、Fコードでの読み出し、書き込みが制限されているレジスタに対して、Aコードでの読み出し、書き込みが可能であるとしているが、これを実行するために、ある一定の権威付けの方法を定義して、それが行われた場合にのみAコードでの読み出し、書き込みを実行することができるようにしておく必要がある。
【0056】
前述の権威づけの方法として、例えば、レジスタ30SP、PPのエントリを階層化し、より上位のエントリをキーとして用いて認証を行い、認証が成功した場合のみ、より下位のエントリの読み出し、書き込みを行うことができるようにするという方法がある。この場合、最終的に最上位となるエントリに、例えば、リセット時に特別な値にセットする、あるいは、より下位のエントリをキーとして用いた認証を複数のエントリで認証が通らないと書き換えられないようにする等の方法がある。このような機能は、Aコードであれば自由にコーディングができるわけであるから実現が容易であり、新たなるハードウエア機構は必要とされない。
【0057】
Aコードでのコーディングは、前述したように、まず、認証を行い、その後、レジスタにアクセスするようにコーディングが行われればよい。但し、セキュリティを確保する機構として、認証に失敗すればマシンチェックとなるようにするか、あるいは、少なくとも失敗すれば、キューイングされているそれ以降のAコードがクリアされて実行されないようにしておくことが必要である。
【0058】
図3はデータ転送の規則についての他の例を説明する図であり、以下、これについて説明する。
【0059】
このデータ転送の規則は、ハードウエアに1ビットのモードラッチ41設けることにより、ESモードの設定を行った場合のデータ転送規則である。ESモードは、レジスタ30SPからレジスタ30PTへのデータの転送を可能とするモードである。そして、このモードラッチ41は、レジスタ30SPからレジスタ30PTへのデータの転送が行われるとオンとされる。これは、レジスタ30SPからレジスタ30PTへの転送が行われることにより、レジスタ30PTをレジスタ分類としてはSP扱いにするためである。他の転送も同様である。
【0060】
図3に示すように、ESモードがオンである場合、レジスタ30PTからレジスタ30Oへの転送は禁止される。これは、ESモードオン時には、前述で説明したように、レジスタPTにレジスタ30SP等の秘密情報を含む可能性があるためである。
【0061】
前述のESモードを設けたことにより、このESモードをリセットする命令を追加する必要があるが、このリセットの際、レジスタ30STと30PTとは、“0”にクリアされる。
【0062】
【発明の効果】
以上説明したように本発明によれば、処理のオーバヘッドを大きくすることなく、柔軟な方式でセキュリティーの向上を図ることができる。
【図面の簡単な説明】
【図1】本発明の一実施形態によるディジタル回路を含む暗号モジュールの構成例を示すブロック図である。
【図2】データ転送の規則について説明する図である。
【図3】データ転送の規則についての他の例を説明する図である。
【符号の説明】
1 暗号モジュール
10F 実行用命令キュー
10C 認証用命令キュー
20 演算器
21 認証コード生成回路
22 一致検出回路
30SP、30ST、30PP、30PT、30O レジスタ
30C 認証コードレジスタ
40、41 ラッチ
50SP1、50SP2、50ST1、50PP1、50PT1、50O1、50O2、50、50C、50F、60C、60F1、60F2、60SP、60ST、60PP、60PT、60O セレクタ
70IN 入力バス、
70OUT 出力バス
Claims (3)
- 第1のプログラムをキューイングする第1のキューと、第2のプログラムをキューイングする第2のキューと、前記第1のキューに接続され第1のプログラムの認証コードを生成する認証コード生成回路と、生成した認証コードを格納するレジスタと、認証コードとリファレンス認証コードとの一致を検出する回路と、一致が検出されると“1”がセットされるラッチと、データを格納するレジスタと、該レジスタからの出力データの演算を行い該レジスタへの書き込みを行う演算回路とを備え、前記第1のキューに読み込んだ第1のプログラムの真偽を、第1のプログラムから生成した認証コードとリファレンス認証コードとを比較して認証し、一致した場合にセキュリティに関するチェックを行わずに第1のプログラムを実行する機能と、前記第2のキューに読み込んだ第2のプログラムをメッセージ認証を行うことなく1命令単位にセキュリティに関するチェックを行い、問題がない場合にその命令を実行する機能とを有することを特徴とするディジタル回路。
- 前記演算回路が用いるデータを格納している前記レジスタは、第1から第5の5種類に分類されており、第5のレジスタのデータは、外部回路から読み出すことが可能であり、前記レジスタ間のデータ転送規則として、第1のレジスタから他のレジスタへの転送を許可せず、第2のレジスタから第2のレジスタへの転送を許可してそれ以外のレジスタへの転送を許可せず、第3、4及び5のレジスタから第2、4及び5のレジスタへの転送を許可しそれ以外のレジスタへの転送を許可しないという転送規則を設け、また、前記第2のキューに格納される第2のプログラムの命令は、演算回路での演算内容により、第1から第3の3種類に分類され、第1の命令は、第1から第5の分類のレジスタのいずれかのレジスタからデータを読み出して演算を行い、その出力データは、演算によるデータの加工作用により第4の分類のレジスタのデータとみなされて、転送元を第4のレジスタとした前記転送規則が適用され、第2の命令は、第1から第5の分類のレジスタのいずれかのレジスタからデータを読み出して演算を行い、その出力データは、演算によるデータの加工作用により第2の分類のレジスタのデータとみなされて、転送元を第2のレジスタとした前記転送規則が適用され、第3の命令は、第1から第5の分類のレジスタのいずれかのレジスタからデータを読み出して演算を行い、その出力データは、演算によるデータの加工作用により読み出し元のレジスタの分類のレジスタのデータとみなされて、転送元を読み出し元のレジスタとした前記転送規則が適用され、かつ、前記第1から第3の命令は、いずれも、転送先レジスタを演算の出力データが転送される先のレジスタとし、前記転送規則に従って決定された許可、不許可によってセキュリティに関するチェックを行ってから実行され、前記第1のキューに格納される第1のプログラムの命令は、前記認証が得られた場合、セキュリティに関するチェックを行わず、前記全ての分類のレジスタから全ての分類へのレジスタへの転送が許可されて実行されることを特徴とする請求項1記載のディジタル回路。
- モードラッチ1個を有し、前記演算回路が用いるデータを格納している前記レジスタは、第1から第5の5種類に分類されており、第5のレジスタのデータが外部回路から読み出すことが可能であり、前記レジスタ間のデータ転送規則として、第1のレジスタから第2及び第4のレジスタへの転送を許可し、転送が行われた場合に前記モードラッチを“1”セットし、それ以外のレジスタへの転送を許可せず、第2のレジスタから第2のレジスタへの転送を許可し、第4のレジスタへの転送を許可し、転送が行われた場合に前記モードラッチを“1”セットし、それ以外を許可せず、第3及び5のレジスタから第2、4及び5のレジスタへの転送を許可しそれ以外を許可せず、前記モードラッチが“0”の場合、第4のレジスタから第2、4及び5のレジスタへの転送を許可しそれ以外のレジスタ経の転送を許可せず、前記モードラッチが“1”の場合、第4のレジスタがら第2及び4のレジスタへの転送を許可しそれ以外のレジスタへの転送を許可しないという転送規則を設け、また、前記第2のキューに格納される第2のプログラムの命令は、演算回路での演算内容により、第1から第3の3種類に分類され、第1の命令は、第1から第5の分類のレジスタのいずれかのレジスタからデータを読み出して演算を行い、その出力データは、演算によるデータの加工作用により第4の分類のレジスタのデータとみなされて、転送元を第4のレジスタとした前記転送規則が適用され、第2の命令は、第1から第5の分類のレジスタのいずれかのレジスタからデータを読み出して演算を行い、その出力データは、演算によるデータの加工作用により第2の分類のレジスタのデータとみなされて、転送元を第2のレジスタとした前記転送規則が適用され、第3の命令は、第1から第5の分類のレジスタのいずれかのレジスタからデータを読み出して演算を行い、その出力データは、演算によるデータの加工作用により読み出し元のレジスタの分類のレジスタのデータとみなされて、転送元を読み出し元のレジスタとした前記転送規則が適用され、かつ、前記第1から第3の命令は、いずれも、転送先レジスタを演算の出力データが転送される先のレジスタとし、前記転送規則に従って決定された許可、不許可によってセキュリティに関するチェックを行ってから実行され、前記第1のキューに格納される第1のプログラムの命令は、前記認証が得られた場合、セキュリティに関するチェックを行わず、前記全ての分類のレジスタから全ての分類へのレジスタへの転送が許可されて実行されることを特徴とする請求項1記載のディジタル回路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001006708A JP4098959B2 (ja) | 2001-01-15 | 2001-01-15 | ディジタル回路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001006708A JP4098959B2 (ja) | 2001-01-15 | 2001-01-15 | ディジタル回路 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002215459A JP2002215459A (ja) | 2002-08-02 |
JP4098959B2 true JP4098959B2 (ja) | 2008-06-11 |
Family
ID=18874558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001006708A Expired - Fee Related JP4098959B2 (ja) | 2001-01-15 | 2001-01-15 | ディジタル回路 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4098959B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100459659C (zh) * | 2003-09-17 | 2009-02-04 | 松下电器产业株式会社 | 应用执行设备、应用执行方法、和集成电路 |
JP4713878B2 (ja) * | 2004-12-14 | 2011-06-29 | 株式会社東芝 | 携帯可能電子装置 |
US10802990B2 (en) | 2008-10-06 | 2020-10-13 | International Business Machines Corporation | Hardware based mandatory access control |
-
2001
- 2001-01-15 JP JP2001006708A patent/JP4098959B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002215459A (ja) | 2002-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2710754B2 (ja) | チップ・カードのキーを保護する装置 | |
US9575906B2 (en) | Method and system for process working set isolation | |
KR100996784B1 (ko) | 공개 키 암호화에 기초한 데이터의 저장 및 검색을 위한, 컴퓨팅 장치에서 구현되는 방법, 시스템 및 복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체 | |
CN101026455B (zh) | 安全处理器 | |
KR101067399B1 (ko) | 대칭 키 암호화에 기초한 데이터의 저장 및 검색을 위한, 컴퓨팅 장치에서 구현되는 방법, 시스템 및 복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체 | |
US7874009B2 (en) | Data processing device | |
US5214698A (en) | Method and apparatus for validating entry of cryptographic keys | |
US9703945B2 (en) | Secured computing system with asynchronous authentication | |
JPS6016670B2 (ja) | 端末ユ−ザの身元を認証するためのシステム | |
US8683208B2 (en) | Information processing device, program developing device, program verifying method, and program product | |
CN110825672B (zh) | 用于联机加密处理的高性能自主硬件引擎 | |
Arnold et al. | IBM 4765 cryptographic coprocessor | |
US20090193261A1 (en) | Apparatus and method for authenticating a flash program | |
US11809610B2 (en) | Hardware protection of inline cryptographic processor | |
US20080263422A1 (en) | Control of the integrity of a memory external to a microprocessor | |
JP2005216027A (ja) | 暗号化装置及びこれを備えた暗号化システム並びに復号化装置及びこれを備えた半導体システム | |
US11281434B2 (en) | Apparatus and method for maintaining a counter value | |
WO2016053407A2 (en) | Speculative cryptographic processing for out of order data | |
JP4098959B2 (ja) | ディジタル回路 | |
KR101656092B1 (ko) | 비동기적인 인증을 갖는 보안 컴퓨팅 시스템 | |
JPWO2006046484A1 (ja) | 認証方法 | |
CN114237492A (zh) | 非易失性存储器保护方法及装置 | |
CN110443070A (zh) | 多主机共享存储系统及数据完整性保护方法 | |
US12088722B2 (en) | Method for executing a computer program by means of an electronic apparatus | |
US11651086B2 (en) | Method for executing a computer program by means of an electronic apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050107 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071130 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071211 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080212 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080304 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080314 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110321 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |