(57)【要約】【課題】外部メモリに記憶され暗号化された命令を暗号化されたままコンピュータに読み込みコンピュータ内で復号化して実行するコンピュータにおいて、暗号化と復号化の単位を大きくすることによって暗号強度を増大させる。【解決手段】バス制御手段が１回に読み込む暗号化された命令のサイズよりも大きなサイズの前記読み込まれた命令を記憶するための第１の命令記憶手段と、前記第１の命令記憶手段に記憶された命令を復号化する復号化手段と、前記復号化された命令を記憶する第２の命令記憶手段とを有し、前記第２の命令記憶手段に記憶された命令を読み出して実行する。【選択図】  図１
2004287754.tif 000002
【特許請求の範囲】
【請求項１】
外部記憶手段から外部バスを介して暗号化された命令を読み込むバス制御手段と、
前記バス制御手段が１回に読み込む暗号化された命令のサイズよりも大きなサイズの前記読み込まれた命令を記憶するための第１の命令記憶手段と、
前記第１の命令記憶手段に記憶された命令を復号化する復号化手段と、
前記復号化された命令を記憶する第２の命令記憶手段とを有し、
前記第２の命令記憶手段に記憶された命令を読み出して実行する、
コンピュータ。
【請求項２】
前記復号化手段は前記第１の命令記憶手段に記憶されている１又は複数の命令を１単位として復号化する、
請求項１に記載のコンピュータ。
【請求項３】
前記バス制御手段が外部バスを介して１回に読み込む暗号化された命令は必ず前記復号化の１単位に含まれる命令である、
請求項２に記載のコンピュータ。
【請求項４】
前記暗号化された命令による他の暗号化された命令の参照は相対アドレスによってのみ行われる、
請求項１から請求項３の何れか１項に記載のコンピュータ。
【請求項５】
外部記憶手段から外部バスを介して暗号化された命令を読み込むバス制御手順と、
前記バス制御手順で１回に読み込む暗号化された命令のサイズよりも大きなサイズで前記読み込まれた命令を記憶する第１の命令記憶手順と、
前記第１の命令記憶手順で記憶された命令を復号化する復号化手順と、
前記復号化された命令を記憶する第２の命令記憶手順と、
前記第２の命令記憶手順で記憶された命令を読み出して実行する、
命令処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、外部メモリに記憶されたプログラムに含まれる命令を逐次読み出して実行する、いわゆるストアドプログラム方式のノイマン型コンピュータ（以後単に「コンピュータ」と言う）に関するものである。
【０００２】
特に、プログラムを構成する命令は暗号化されて外部メモリに記憶されており、暗号化されたままコンピュータによって読み込まれ、コンピュータ内で復号化されて実行される、コンピュータに関するものである。
【０００３】
【従来の技術】
従来の、外部メモリに記憶され暗号化された命令を暗号化されたままコンピュータに読み込まれ、コンピュータ内で復号化されて実行されるコンピュータには例えば、下記特許文献１に記載のデータ処理システムがあった。
【０００４】
図４にこの従来のデータ処理システムの主要部の概略ブロック構成図を示す。
【０００５】
データ処理システム９２０は、外部ユーザがアクセスできないデータキャッシュメモリ９４４と命令キャッシュメモリ９４６を有している。
【０００６】
データ処理システム９２０が使用するプログラムとデータは、例えば３２ビット幅の外部バス９１２を介して接続されたＲＡＭ９１０と外部メディア９１４に記憶されている。このＲＡＭ９１０と外部メディア９１４に記憶されたデータとプログラムは暗号化されている。但し、必ずしも全てのプログラムとデータが暗号化されているとは限らない。
【０００７】
この暗号化された又は暗号化されていないプログラムやデータはデータ処理システム９２０の制御によって外部バス９１２を経由してデータ処理システム９２０に読み込まれる。
【０００８】
この制御の中心となるのはデータ処理システム９２０内のＢＩＵ（Ｂｕｓ  Ｉｎｔｅｒｆａｃｅ  Ｕｎｉｔ）部９２２である。
【０００９】
ＢＩＵ部９２２は、外部バス９１２から読み込んだプログラムやデータが暗号化されている場合、ＢＩＵ部９２２の一部である解読部９２４によって暗号が解読され、いわゆる平文に戻される。
【００１０】
平文に戻されたプログラムやデータはＢＩＵ部９２２から内部バス９３９を経由して命令キャッシュメモリ９４６又はデータキャッシュメモリ９４４に格納される。
【００１１】
元々暗号化されていないプログラムやデータは、外部バス９１２から直接ＢＩＵ部９２２を経由し、内部バス９３９を介して、命令キャッシュメモリ９４６又はデータキャッシュメモリ９４４に格納される。
【００１２】
３２ビットＣＰＵ９４２は、命令キャッシュメモリ９４６からプログラム（命令）を読み込み、データキャッシュメモリ９４４のデータを使って処理を実行する。
【００１３】
いわゆる平文に戻されたプログラムやデータは命令キャッシュメモリ９４６とデータキャッシュメモリ９４４に記憶されているが、これらのメモリは外部からアクセスすることができないため、セキュリティが維持される。
【００１４】
又、３２ビットＣＰＵで処理されたデータが、データキャッシュメモリ９４４から内部バス９３９を経由して外部バス９１２に出力される時には、逆にＢＩＵ部９２２の解読部９２４によって暗号化される。
【００１５】
この暗号化方式や、内部のキャッシュメモリに対して外部からのアクセスを制限する方式は、従来から多くのものが知られている。
【００１６】
例えば、暗号化方式には公開鍵方式と共通鍵方式があり、共通鍵方式にはストリーム暗号方式とブロック暗号方式がある。
【００１７】
ストリーム暗号方式には外部同期式と内部同期式があり、ブロック暗号方式にはＥＣＢ、ＣＢＣ、ＣＦＢ、ＯＦＢ等の方式が知られている。
【００１８】
しかしこれらの方式は、本願発明の本質とは直接関係しないので詳細な説明は省略する。
【００１９】
【特許文献１】
特開平６−１１２９３７号公報
【００２０】
【発明が解決しようとする課題】
しかしながら例えば前記データ処理システムのような、外部メモリに記憶され暗号化された命令を暗号化されたままコンピュータに読み込みコンピュータ内で復号化して実行するコンピュータでは、外部バスから命令を取り込みながら復号化し、復号化した命令を同時に命令キャッシュメモリに格納するため、暗号化と復号化の単位を外部バス幅に合わせなければならないと言う制限があった。
【００２１】
前記従来知られている種々の暗号化方式は一般的に、暗号化と復号化に使用する鍵のサイズと、これと共に暗号化と復号化の単位を大きくすれば大きくするほどその暗号強度が増大する、即ちその暗号が破られ難いと言う性質がある。
【００２２】
しかしながら前記従来のコンピュータでは、前記制限、即ち暗号化と復号化の単位を外部バス幅に合わせなければならないと言う制限のために、暗号強度を増大させるために暗号化と復号化の単位を大きくすることができなかった。
【００２３】
従って、暗号化と復号化の単位を大きくすることによって暗号強度を増大させることは限界があった。
【００２４】
【課題を解決するための手段】
本特許出願に係る請求項１に記載の発明は、外部記憶手段から外部バスを介して暗号化された命令を読み込むバス制御手段と、前記バス制御手段が１回に読み込む暗号化された命令のサイズよりも大きなサイズの前記読み込まれた命令を記憶するための第１の命令記憶手段と、前記第１の命令記憶手段に記憶された命令を復号化する復号化手段と、前記復号化された命令を記憶する第２の命令記憶手段とを有し、前記第２の命令記憶手段に記憶された命令を読み出して実行する、コンピュータである。
【００２５】
本特許出願に係る請求項２に記載の発明は、前記復号化手段は前記第１の命令記憶手段に記憶されている１又は複数の命令を１単位として復号化する、請求項１に記載のコンピュータである。
【００２６】
本特許出願に係る請求項３に記載の発明は、前記バス制御手段が外部バスを介して１回に読み込む暗号化された命令は必ず前記復号化の１単位に含まれる命令である、請求項２に記載のコンピュータである。
【００２７】
本特許出願に係る請求項４に記載の発明は、前記暗号化された命令による他の暗号化された命令の参照は相対アドレスによってのみ行われる、請求項１から請求項３の何れか１項に記載のコンピュータである。
【００２８】
本特許出願に係る請求項５に記載の発明は、外部記憶手段から外部バスを介して暗号化された命令を読み込むバス制御手順と、前記バス制御手順で１回に読み込む暗号化された命令のサイズよりも大きなサイズで前記読み込まれた命令を記憶する第１の命令記憶手順と、前記第１の命令記憶手順で記憶された命令を復号化する復号化手順と、前記復号化された命令を記憶する第２の命令記憶手順と、前記第２の命令記憶手順で記憶された命令を読み出して実行する、命令処理方法である。
【００２９】
【発明の実施の形態】
本特許出願に係る発明（以後、本発明とも言う）の実施の形態を図面を使って詳細に説明する。
【００３０】
（実施の形態１）
本発明のコンピュータの１実施の形態であるマイクロプロセッサ１２０の主要部の概略ブロック構成図を図１に示す。このマイクロプロセッサ１２０は又、本発明の命令処理方法の１実施の形態を実施するマイクロプロセッサ１２０でもある。
【００３１】
このマイクロプロセッサ１２０が実行するプログラムはメモリ部１１０に格納されている。
【００３２】
マイクロプロセッサ１２０は、ＢＣＵ（Ｂｕｓ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）部の制御によって外部バス１１２を経由してメモリ部１１０から命令を読み出して、その命令を実行する。
【００３３】
この命令は暗号化されている。但し、必ずしも全ての命令が暗号化されている必要は無く、一部の命令が暗号化されており、他の命令は暗号化されていなくても良い。
【００３４】
又、この暗号化の方式は前記従来技術で説明した種々の暗号化方式の何れであっても良く、それ以外の方式であっても良い。
【００３５】
このマイクロプロセッサ１２０の処理対象となるデータも、このメモリ部１１０に記憶される。しかし必ずしも全ての処理対象データがこのメモリ部１１０に記憶されることは必要で無く、他の種々の手段（図示せず）に記憶されていても良い。又、これらのデータは暗号化されていても良く、暗号化されていなくても良い。これらのことは本発明の本質と直接関係しないので説明を省略する。
【００３６】
外部バス１１２は３２ビット幅であり、命令はメモリ部１１０からＢＣＵ１２２を介して、３２ビット幅の命令ライン１３１を経由し、１ラインバッファ１２４に格納される。
【００３７】
本実施の形態のマイクロプロセッサではこの１ラインバッファ１２４は１２８ビットサイズであり、４回のバスアクセスが連続して実行されることによって、１ラインバッファ１２４に１２８ビットの命令が格納される。
【００３８】
１ラインバッファ１２４に１２８ビット分の命令が格納されると、その命令は１２８ビット幅の暗号化命令ライン１３３を経由して復号部１２６へ送られる。
【００３９】
復号部１２６は、暗号化命令ライン１３３から１２８ビット分の命令を１度に読み込み、これを１度に復号化する。即ち、ここでの復号化の単位は１２８ビットであり、外部バス幅３２ビットの４倍のサイズであり、このサイズか大きい分、暗号化の強度を増すことができる。
【００４０】
この暗号方式や復号方式は、既に上記した種々の方式を使うことができるし、或いは他の方式を使っても良い。この各種方式については本発明の本質と直接関係しないので説明を省略する。
【００４１】
復号部１２６で復号化され、いわゆる平文に戻された命令は、１２８ビット幅の復号化命令ライン１３５を経由して命令キャッシュメモリ１２８に送られ、命令キャッシュメモリ１２８に格納される。
【００４２】
又、命令が暗号化されていない時には、１ラインバッファ１２４に格納された１２８ビット分の命令は直接１２８ビット幅の非暗号化命令ライン１３７を経由して命令キャッシュメモリ１２８に送られ、命令キャッシュメモリ１２８に格納される。
【００４３】
この命令キャッシュメモリ１２８には、このようにして３２ビットマイコンコア１４２が実行可能な平文に戻された命令が格納される。
【００４４】
この命令キャッシュメモリ１２８は外部からアクセスできないように制御されるので、平文に戻された命令が外部から読み出されることは無く、セキュリティが維持される。
【００４５】
この命令キャッシュメモリ１２８が外部からアクセスできないように制御する方式も種々のものが知られているが、本発明の本質とは直接関係しないので説明を省略する。
【００４６】
３２ビットマイコンコア１４２は、命令アドレスライン１５７でアドレスを指定し、命令キャッシュメモリ１２８から平文に戻された命令を３２ビット幅の命令ライン１３９を介して読み出し、実行する。この時の読み出す単位は、外部バス幅と同じ３２ビットに戻されており、通常の３２ビットマイコンコアを使用することができる。
【００４７】
３２ビットマイコンコアが処理に使用するデータは、外部バス１１２を経由して、ＢＣＵ部１２２を介し、３２ビット幅のデータライン１５１を経てデータキャッシュメモリ１４４に記憶される。
【００４８】
３２ビットマイコンコア１４２は、命令を実行して処理を行うに際し、必要なデータを、データアドレスライン１５５でアドレスを指定し、３２ビット幅のデータライン１５３から読み込む。
【００４９】
或いは処理を実行したデータを、データアドレスライン１５５でアドレスを指定し、３２ビット幅のデータライン１５３を使ってデータキャッシュメモリ１４４に格納する。
【００５０】
データキャッシュメモリ１４４に格納されたデータは、３２ビットマイコンコア１４２の処理内容に応じて、３２ビット幅のデータライン１５１とＢＣＵ部１２２と外部バス１１２を経由して、外部のメモリ部１１０やその他の記憶手段に記憶される。
【００５１】
このデータについても暗号化される実施の形態もあり得るが、本発明の本質とは直接関係しないので説明を省略する。
【００５２】
（実施の形態２）
本発明のコンピュータの１実施の形態であるマイクロプロセッサ１２０が読み込む暗号化された命令が記憶されたメモリ部１１０の配置図を図２に示す。
【００５３】
図２は０ｘ００００番地（１６進数表現の０番地）から始まっているが、必ずしもメモリ部１１０の始めに限るものでは無く、途中に命令が配置される場合もあり、その時の配置も同様であるから説明を省略する。
【００５４】
本実施の形態では例えば命令は、１バイト命令、２バイト命令、３バイト命令、４バイト命令の４種類がある。しかし必ずしもこれらだけに限るものでは無く、５バイト命令、６バイト命令、７バイト命令、８バイト命令でも良く、スーパースカラ方式のコンピュータ等でも良く、このスーパースカラ方式のコンピュータの命令が例えば１６バイトや３２バイト、６４バイトであっても良く、又いわゆるＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）方式コンピュータのように１命令が１２８バイト、２５６バイト、５１２バイト、１０２４バイト、２０４８バイト、４０９６バイトであっても構わない。
【００５５】
例えば図４では命令５が１バイト命令であり、命令２が２バイト命令であり、命令１が３バイト命令であり、命令２７が４バイト命令である。
【００５６】
本実施の形態では、復号部１２６のサイズは１２８ビットであり、暗号化命令ライン１３３、復号化命令ライン１３５も１２８ビット幅であり、１２８ビット単位で暗号化されており、１２８単位で復号化される。
【００５７】
図２に示す例では、アドレス０ｘ００００からアドレス０ｘ０００Ｆに配置されている命令０１から命令０８が、この暗号化と復号化の１単位を構成し、１２８ビットから成っている。
【００５８】
同様に、アドレス０ｘ００１０からアドレス０ｘ００１Ｆに配置されている命令０９から命令１６が、この暗号化と復号化の１単位を構成し、１２８ビットから成っている。
【００５９】
同様に、アドレス０ｘ００２０からアドレス０ｘ００２Ｆに配置されている命令１７から命令２４が、この暗号化と復号化の１単位を構成し、１２８ビットから成っている。
【００６０】
同様に、アドレス０ｘ００３０からアドレス０ｘ００３Ｆに配置されている命令２５から命令３０が、この暗号化と復号化の１単位を構成し、１２８ビットから成っている。
【００６１】
その他のアドレスについては図示せず、説明もしないが同様である。
【００６２】
一方、外部バス１１２は３２ビット幅であり、ＢＣＵ１２２は外部バス幅である３２ビット単位にメモリ部１１０からの読み出し、メモリ部１１０への書き込みを行う。
【００６３】
この単位は図２では、例えばアドレス０ｘＸＸＸ０からアドレス０ｘＸＸＸ３、アドレス０ｘＸＸＸ４からアドレス０ｘＸＸＸ７、アドレス０ｘＸＸＸ８からアドレス０ｘＸＸＸＢ、アドレス０ｘＸＸＸＣからアドレス０ｘＸＸＸＦ（Ｘは任意の１桁の１６進数）である。
【００６４】
１つの命令は必ずしもこの１回の読み書きの単位に含まれているとは言えない。例えば、命令２はアドレス０ｘ００００からアドレス０ｘ０００３の単位とアドレス０ｘ０００４からアドレス０ｘ０００７の単位に跨っている。
【００６５】
しかし、この１回の読み書きの単位は必ず上記暗号化と復号化の１単位に含まれ、複数の暗号化と復号化の単位に跨ることはない。
【００６６】
即ち、ＢＣＵ１２２によって１回に読み込まれたデータ（３２ビット）が、復号部１２６による複数回の復号化の単位に跨ることは無い。
【００６７】
この実施の形態ではＢＣＵ１２２が４回データ（命令）を読み込む毎に同期して１回の暗号化と復号化が実行され、読み込んだデータ（命令）と復号化したデータ（命令）に過不足を生じることが無く、過不足が生じた場合に必要になるかも知れない時間的な調整や暗号化と復号化の単位を切り換えたり、復号化の過程で過不足を生じたデータ（命令）の一部を次の復号化のタイミングにシフトしたりする必要が無く、全ての命令を完全に同期しながら簡単な構成でしかも無駄な時間を生じること無く復号化することができる。
【００６８】
（実施の形態３）
多くのコンピュータではプログラムを補助記憶装置、例えばハードディスクドライブ（ＨＤＤ）等から読み出して、例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で構成される主記憶装置であるメモリ部１１０に記憶する（ロード）時、その主記憶装置上のアドレスを決定することが行われる。
【００６９】
これを再配置（Ｒｅｌｏｃａｔｉｏｎ）と言い、このようなプログラムを再配置可能（Ｒｅｌｏｃａｔａｂｌｅ）と言う。
【００７０】
図３にこの再配置されるプログラムの例を示す。
【００７１】
図３（ａ）と図３（ｂ）に示すプログラムは実質的に同一プログラムであるが、図３（ａ）のプログラムでは例えば、条件付き分岐命令であるＪＮＺ（Ｊｕｍｐ  Ｎｏｎ  Ｚｅｒｏ）の分岐先アドレスが、絶対アドレスで「Ｐ１０２」と記述されている。
【００７２】
一方、図３（ｂ）のプログラムでは例えば、同じ条件付き分岐命令であるＪＮＺ（Ｊｕｍｐ  Ｎｏｎ  Ｚｅｒｏ）の分岐先アドレスが、相対アドレスで「＊＋１６（自分自身のアドレス（ＪＮＺ命令のアドレス「＊」プラス１６番地）」と記述されている。
【００７３】
これらの命令を例えば、図３（ａ）に示すように例えば０ｘ１０００番地代に再配置するには、ＪＮＺ命令の分岐先を「Ｓｔｏｒｅ  Ｚ」命令の再配置先である０ｘ００１Ｃ番地に書き直さなければならない。
【００７４】
しかしながら主記憶装置にロードされる時点ではこのプログラムは暗号化されているため、この命令を解読してＪＮＺ命令の分岐先アドレスをＳｔｏｒｅ命令の再配置先である０ｘ００１Ｃ番地に書き直すことはできない。
【００７５】
一方、図３（ｂ）のプログラムでは例えば、同じ条件付き分岐命令であるＪＮＺ（Ｊｕｍｐ  Ｎｏｎ  Ｚｅｒｏ）の分岐先アドレスが、相対アドレスで「＊＋１６（自分自身のアドレス（ＪＮＺ命令のアドレス「＊」プラス１６番地）」と記述されている。
【００７６】
これらの命令を例えば、図３（ｂ）に示すように例えば０ｘ２０００番地代に再配置する時でも、ＪＮＺ命令の分岐先である「Ｓｔｏｒｅ  Ｚ」命令の再配置先が、ＪＮＺ命令が再配置されるアドレス「＊」プラス１６番地であることに変りは無く、ＪＮＺ命令を書き直す必要は生じない。
【００７７】
従って、主記憶装置にロードされる時点でこのプログラムが暗号化されていたとしても、そのまま再配置することがでる。
【００７８】
以上説明したように、暗号化されたプログラムの命令による他の暗号化された命令の参照は相対アドレスによってのみ行うことによって、このプログラムを暗号化したまま再配置することができる。
【００７９】
【発明の効果】
以上詳細に説明したように、本特許出願に係る発明によれば、バス制御手段が１回に読み込む暗号化された命令のサイズよりも大きなサイズの前記読み込まれた命令を記憶するための第１の命令記憶手段と、前記第１の命令記憶手段に記憶された命令を復号化する復号化手段と、前記復号化された命令を記憶する第２の命令記憶手段とを有し、前記第２の命令記憶手段に記憶された命令を読み出して実行することによって、暗号化と復号化の単位を大きくすることが可能となり、暗号強度を増大させることができる。
【図面の簡単な説明】
【図１】本発明のコンピュータの１実施の形態であるマイクロプロセッサの主要部の概略ブロック構成図
【図２】本発明のコンピュータの１実施の形態であるマイクロプロセッサが読み込む暗号化された命令が記憶されたメモリ部の配置図
【図３】本発明のコンピュータの１実施の形態であるマイクロプロセッサが読み込む再配置可能・再配置不可能な命令の配置図
【図４】従来のデータ処理システムを構成する主要部の概略ブロック構成図
【符号の説明】
１１０  メモリ部
１１２  外部バス
１２０  マイクロプロセッサ
１２２  ＢＣＵ部
１２４  １ラインバッファ部
１２６  復号部
１２８  命令キャッシュメモリ
１３１  命令ライン
１３３  暗号化命令ライン
１３５  復号化命令ライン
１３７  非暗号化命令ライン
１３９  命令ライン
１４２  ３２ビットマイコンコア
１４４  データキャッシュメモリ
１５１  データライン
１５３  データライン
１５５  データアドレスライン
１５７  命令アドレスライン
９１０  ＲＡＭ
９１２  外部バス
９１４  外部メディア
９２０  データ処理システム
９２２  ＢＩＵ部
９２４  解読部
９３９  内部バス
９４２  ３２ビットＣＰＵ
９４４  データキャッシュメモリ
９４６  命令キャッシュメモリ
【図１】
2004287754.tif 000003
【図２】
2004287754.tif 000004
【図３】
2004287754.tif 000005
【図４】
2004287754.tif 000006