JP2005050116A - 命令実行装置およびその方法 - Google Patents

命令実行装置およびその方法 Download PDF

Info

Publication number
JP2005050116A
JP2005050116A JP2003281277A JP2003281277A JP2005050116A JP 2005050116 A JP2005050116 A JP 2005050116A JP 2003281277 A JP2003281277 A JP 2003281277A JP 2003281277 A JP2003281277 A JP 2003281277A JP 2005050116 A JP2005050116 A JP 2005050116A
Authority
JP
Japan
Prior art keywords
instruction
temporary
ciphertext
address
stored
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.)
Pending
Application number
JP2003281277A
Other languages
English (en)
Inventor
Yoshiyuki Watanabe
佳幸 渡邊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2003281277A priority Critical patent/JP2005050116A/ja
Publication of JP2005050116A publication Critical patent/JP2005050116A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

【課題】 メモリ上で暗号化されたプログラムが再配置された場合であっても命令の実行が可能な命令実行装置を提供する。
【解決手段】 暗号文命令から命令を復号し、実行する命令実行装置であって、複数の暗号文命令の各々は、複数の暗号文から1つの平文を復号可能な暗号化方式に従い暗号化された命令であり、実行対象の命令の命令アドレスから、当該命令を復号するために必要な暗号文命令が格納されている外部記憶手段の複数の一時命令アドレスを生成し、外部記憶手段の複数の一時命令アドレスにそれぞれ記憶された複数の暗号文命令を読み込む命令読み込み部300と、命令読み込み部300で読み込まれた複数の暗号文命令から1つの命令を復号する復号化部400と、命令読み込み部300に命令アドレスを供給し、復号化部400で復号された命令を実行するCPUコア200とを備える。
【選択図】 図1

Description

本発明は、外部メモリに記憶されたプログラムに含まれる命令を逐次読み出して実行する命令実行装置に関するものであり、特に、暗号化された命令を復号しながら実行する命令実行装置に関する。
従来、プログラムの不正コピー等を防止することを目的として、暗号化された命令が格納されているプログラムがある。また、このプログラムを実行するコンピュータとして、予め暗号化されている命令を復号しながら実行するコンピュータがある(例えば、特許文献1参照。)。
図26は、特許文献1に記載の暗号化データ処理装置の概略構成を示すブロック図である。暗号化データ処理装置910は、暗号化されたプログラムを復号しながら実行する装置であり、復号された命令を実行するデータ処理部930と、暗号化されている命令を復号する復号回路940とを備える。暗号化データ処理装置910で実行される命令および当該命令実行時に参照されるデータは予め暗号化され、暗号化データ処理装置910の外部に存在するメモリ920に格納されている。暗号化には共通鍵暗号方式が用いられ、暗号化の鍵データとしては、暗号化された命令またはデータが格納されているメモリ920のアドレスが用いられる。
データ処理部930は、以下のようにして暗号化されている命令を実行する。すなわち、データ処理部930は、メモリ920にアドレスを供給し、暗号化されている命令またはデータを読み出す。復号回路940は、メモリ920より読み出された暗号化されている命令またはデータを入力として受ける。また、復号回路940は、当該命令またはデータが格納されているメモリ920のアドレスをデータ処理部930より入力として受ける。復号回路940は、データ処理部930より受けたアドレスを鍵データとして、当該命令またはデータを復号し、データ処理部930に供給する。データ処理部930は、復号された命令またはデータを用いて、データ処理を行ない、処理結果のデータをメモリ920に書き込む。
以上のような暗号化データ処理装置により、予め暗号化されている命令を復号しならが実行することができる。従来の復号化データ処理装置では、命令またはデータの暗号化の鍵データとしてメモリ920のアドレスを用いているため、同じ命令であっても異なるアドレスに配置されている場合には暗号文が異なるため解読が困難であり、プログラムの保護が図られる。このため、プログラムの不正コピー等を防止することが可能である。
特開平7−44375号公報
しかしながら、従来の復号化データ処理装置では、命令またはデータの暗号化の鍵データとしてメモリ920のアドレスを用いている。このため、暗号化処理時と異なるアドレスに暗号化されたプログラムを配置すると、当該プログラムを復号することができないため、暗号プログラムのメモリ920上での配置位置が固定化され、再配置不可能であるという問題がある。
本発明は上述の課題を解決するためになされたものであり、暗号化されたプログラムの解読が困難であり、かつ、メモリ上で暗号化されたプログラムが再配置された場合であっても命令の実行が可能な命令実行装置を提供することを目的とする。
本発明に係る命令実行装置は、暗号文命令から命令を復号し、実行する命令実行装置であって、前記暗号文命令は、複数の暗号文から1つの平文を復号可能な暗号化方式に従い暗号化された命令であり、実行対象の命令の命令アドレスから、当該命令を復号するために必要な暗号文命令が格納されている外部記憶手段の複数の一時命令アドレスを生成し、前記外部記憶手段の前記複数の一時命令アドレスにそれぞれ記憶された複数の暗号文命令を読み込む命令読み込み手段と、前記命令読み込み手段で読み込まれた前記複数の暗号文命令から1つの命令を復号する復号化手段と、前記命令読み込み手段に前記命令アドレスを供給する命令アドレス供給手段と、前記復号化手段で復号された前記命令を実行する命令実行手段とを備える。
この構成によると、暗号文命令は複数の暗号文から1つの平文を復号可能な暗号化方式に従い暗号化されている。このため、同一の暗号文命令であっても、元となる命令が同じであるとは限らない。言い換えると、暗号文命令は複数の文(暗号文または平文)を暗号化することにより生成される。このため、同一の命令であっても暗号文命令が同じであるとは限らない。よって、暗号化されたプログラムの解読が困難である。また、復号化手段は、外部記憶手段のアドレス情報を用いることなく暗号文命令を復号する。このため、暗号化されたプログラムの外部記憶手段上での配置位置は固定されず、再配置が可能である。
好ましくは、上記命令実行装置は、さらに、前記命令読み込み手段が読み込んだ前記複数の暗号文命令を一時的に記憶する一時命令記憶手段を備え、前記命令読み込み手段は、実行対象の命令の命令アドレスに基づいて、当該命令を復号するために必要な暗号文命令が格納されている外部記憶手段の複数の一時命令アドレスのうち、対応する暗号文命令が前記一時命令記憶手段に記憶されていない一時命令アドレスを生成し、前記外部記憶手段の当該一時命令アドレスに記憶された暗号文命令を読み込み、前記一時命令記憶手段に記憶し、前記復号化手段は、前記一時命令記憶手段に記憶された前記複数の暗号文命令から1つの命令を復号する。
この構成によると、前記命令読み込み手段が読み込んだ暗号文命令を一時命令記憶手段に記憶させることができ、命令読み込み手段は重複した暗号文命令の読み込みを排除することができる。このため、暗号文命令を高速に復号することができ、プログラムを高速に実行することができる。
なお、本発明は、以上のような命令実行装置として実現することができるだけでなく、その手段をステップとする命令実行方法として実現したり、命令実行装置で実行される暗号化されたプログラムとして実現することもできる。そのようなプログラムは、CD−ROM(Compact Disc-Read Only Memory)等の記録媒体やインターネット等の伝送媒体を介して配信することができるのは言うまでもない。
以上のように本発明によれば、暗号化されたプログラムの解読が困難であり、かつ、暗号化されたプログラムのメモリ上での配置位置は固定されず、再配置が可能である。
さらに、暗号文命令を高速に復号し、プログラムを高速に実行することができる。
以下、図面を参照しつつ本発明の実施の形態について説明する。
(実施の形態1)
図1は、本発明の実施の形態1に係る命令実行装置であるコンピュータのハードウェア構成を示すブロック図である。コンピュータ100は、外部メモリ600に記憶された暗号化されたプログラムを解読しながら実行する1チップマイクロプロセッサであり、CPUコア200と、命令読み込み部300と、復号化部400と、バスインタフェース500とを備えている。
外部メモリ600に記憶されたプログラムのうち命令は暗号化されており、データは暗号化されていないものとする。また、命令の暗号化の方式には、連鎖暗号の一種である内部同期式ストリーム暗号が用いられるものとする。内部同期式ストリーム暗号によると2つの暗号化された命令(以下「暗号化命令」という。)から1つの命令を復号することができる。内部同期式ストリーム暗号の詳細については後述する。
CPUコア200は、プログラム中の命令を順次実行する処理部であり、CPUコア200内部のプログラムカウンタ(図示せず)に格納された命令アドレスを命令読み込み部300に出力する。その後、CPUコア200は、復号化部400より命令420を受け、命令420を実行する。CPUコア200は、命令420の実行時に、バスインタフェース500を介して外部メモリ600にデータアドレス230を供給し、データアドレス230で指定される番地に格納されたデータを読み込んだり、当該番地にデータを書き込んだりする。
命令読み込み部300は、CPUコア200より命令アドレス210を受け、命令アドレス210より一時命令アドレス310および311を生成する。また、命令読み込み部300は、外部メモリ600上の一時命令アドレス310および311で指定される番地に格納されているデータを一時命令520および521としてそれぞれ読み込み、復号化部400に一時命令320および321としてそれぞれ出力する。なお、一時命令アドレス310は、命令アドレス210と同じアドレスであり、一時命令アドレス311は、命令アドレス210よりも1ワード(ここでは4バイト(32ビット))下位のアドレスとする。
復号化部400は、一時命令320および321より命令420を復号し、CPUコア200に供給する。図2は、復号化部400のハードウェア構成を示すブロック図である。復号化部400は、一時命令321を受け、一時命令321を入力として一時命令321と同一のビット数の擬似乱数を発生させる擬似乱数発生部400aと、一時命令320と擬似乱数発生部400aより出力される擬似乱数との間でビットごとの排他的論理和を求め、結果を命令420として出力する排他的論理和算出部400bとを備える。ここでは、擬似乱数発生部400aとして、LFSR(線形フィードバックシフトレジスタ)を用いるものとする。
図3は、暗号文命令と平文の命令(以下適宜「平文命令」という)との関係を示す図である。図3(a)は暗号文命令の一例を示す図であり、図3(b)は平文命令の一例を示す図である。図3(a)に示すように、内部同期式ストリーム暗号に従い、暗号文命令n(nは自然数)は、1つ前の番地の暗号文命令(n−1)を入力とする擬似乱数RNG(暗号文命令(n−1))と平文の命令nとの排他的論理和を算出することにより求められる。すなわち、暗号文命令nは、次式(1)および(2)のように定式化される。ここで、「A XOR B」は、AとBとのビットごとの排他的論理和を示すものとする。
暗号文命令n=命令n XOR RNG(暗号文命令(n−1)) …(1)
(nは2以上の整数)
暗号文命令1=命令1 XOR RNG(IV) …(2)
(IVは初期ベクトル)
例えば、暗号文命令2は次式(3)のように表される。
暗号文命令2=命令2 XOR RNG(暗号文命令1) …(3)
すなわち、暗号文命令2は、平文の命令2と暗号文命令1を入力とする擬似乱数との間でビットごとの排他的論理和を取った結果である。
逆に、命令nは、次式(4)および(5)のように定式化される。
命令n=暗号文命令n XOR RNG(暗号文命令(n−1)) …(4)
(nは2以上の整数)
命令1=暗号文命令1 XOR RNG(IV) …(5)
(IVは初期ベクトル)
以上のようにして生成された暗号文命令列とデータとが外部メモリ600に格納されている。
以上のように構成されたコンピュータ100の動作について次に説明する。図4は、コンピュータ100で実行される処理のフローチャートである。CPUコア200は、プログラムカウンタに格納されている命令アドレス210を命令読み込み部300に供給する(S2)。命令読み込み部300は、命令アドレス210より一時命令アドレス310を生成する(S4)。ここでは、一時命令アドレス310は、命令アドレス210と同一のものであるものとする。命令読み込み部300は、外部メモリ600の一時命令アドレス310に格納されている暗号文命令を一時命令520として読み込み、一時命令320として復号化部400に出力する(S6)。
次に、命令読み込み部300は、命令アドレス210より一時命令アドレス311を生成する(S8)。ここでは、一時命令アドレス311は、命令アドレス210より1ワード下位のアドレスであるものとする。すなわち、次式(6)のように表される。
一時命令アドレス311=命令アドレス210−0x0004 (6)
命令読み込み部300は、外部メモリ600の一時命令アドレス311に格納されている暗号文命令を一時命令521として読み込み、一時命令321として復号化部400に出力する(S10)。
復号化部400は、一時命令320と一時命令321とから命令420を生成する(S12)。すなわち、擬似乱数発生部400aが、一時命令321を入力として受け、擬似乱数RNG(一時命令321)を出力する。次に、排他的論理和算出部400bが、一時命令320とRNG(一時命令321)との間でビットごとの排他的論理和を算出して命令420としてCPUコア200に出力する。
CPUコア200は、復号化部400より命令420を受け、実行する(S14)。以上の処理を外部メモリ600に格納されたプログラム中の各命令について行なう。
図5は、図3に示される命令1〜4を順次実行する際のバスの状態を示す図である。図3(b)に示されるように、命令1は0x8000番地のデータをレジスタR1に格納する命令であり、命令2は0x8004番地のデータをレジスタR2に格納する命令であり、命令3はレジスタR1およびレジスタR2に格納された値を加算し、レジスタR3に格納する命令であり、命令4はレジスタR3の値を0x8008番地に格納する命令であるものとする。
例えば、図5に示されるように、CPUコア200より命令読み込み部300に命令アドレス210「0x1000」が供給されると、命令読み込み部300は一時命令アドレス310「0x1000」を生成し、バスインタフェース500を介して外部メモリ600に外部アドレス「0x1000」を供給する。命令読み込み部300は、外部メモリ600の0x1000番地に格納されている暗号文命令1を一時命令520として読み込み、一時命令320として復号化部400に出力する。次に、命令読み込み部300が一時命令アドレス311「0x0FFC」を生成し、バスインタフェース500を介して外部メモリ600に外部アドレス「0x0FFC」として供給する。命令読み込み部300は、外部メモリ600の0x0FFC番地に格納されている初期ベクトル「IV」を一時命令521として読み込み、一時命令321として復号化部400に出力する。
初期ベクトル「IV」が読み込まれた時点で、復号化部400により暗号文命令1が復号され、復号結果(命令1)が命令420としてCPUコア200に出力される。その後、CPUコア200が命令1を実行する。命令1は上述のように0x8000番地のデータをレジスタR1に書き込む命令である。このため、CPUコア200がデータアドレス230として「0x8000」を出力すると、バスインタフェース500を介して外部メモリ600へ外部アドレスとして「0x8000」が供給される。そして、外部メモリ600の0x8000番地に格納されたデータが、外部データおよび読み込みデータ540としてCPUコア200に読み込まれる。
以上のようにして暗号化された命令が復号されながら実行される。本実施の形態では暗号化方式として、内部同期式ストリーム暗号を用いている。内部同期式ストリーム暗号では、命令を暗号化する際に、その1ワード下位の暗号文命令を用いて暗号化が行なわれる。このため、同一の命令であっても暗号文命令が同じになるとは限らない。逆に、同一の暗号文命令であっても、元となる命令が同じであるとは限らない。このため、暗号化されたプログラムの解読が困難である。
また、暗号化時にメモリのアドレス情報を使用していない。このため、暗号化されたプログラムの外部メモリ上での配置位置は固定されず、再配置が可能である。
(実施の形態2)
次に、本発明の実施の形態2に係るコンピュータについて説明する。以下の実施の形態では同一の構成部品には同一の符号を付す。その名称および機能も同一であるため、適宜説明を省略する。
図6は、本実施の形態に係るコンピュータのハードウェア構成を示すブロック図である。本実施の形態に係るコンピュータ102は、図1に示す実施の形態1に係るコンピュータ100において、命令読み込み部300の代わりに命令読み込み部302を用い、復号化部400の代わりに復号化部402を用いたものである。
図1に示した実施の形態1に係る命令読み込み部300は、命令アドレス210を受け、命令アドレス210と同じ一時命令アドレス310と、命令アドレス210よりも1ワード下位の一時命令アドレス311とを生成し、外部メモリ600の当該2つのアドレスに格納されているデータを一時命令520および521として読み込んでいる。これに対し、本実施の形態に係る命令読み込み部302は、命令アドレス210を受け、命令アドレス210と同じ一時命令アドレス310と、命令アドレス210よりも1ワード上位の一時命令アドレス311とを生成し、外部メモリ600の当該2つのアドレスに格納されているデータを一時命令520および521として読み込む。
また、図7は本実施の形態に係る復号化部402のハードウェア構成を示すブロック図である。復号化部402は、一時命令320を受け、一時命令320を入力として一時命令320と同一のビット数の擬似乱数を発生させる擬似乱数発生部402aと、擬似乱数発生部402aより出力される擬似乱数と一時命令321との間でビットごとの排他的論理和を求め、結果を命令420として出力する排他的論理和算出部402bとを備える。擬似乱数発生部402aは、実施の形態1に係る擬似乱数発生部400aと同一の構成を有する。
図8は、暗号文命令と平文命令との関係を示す図である。図8(a)は暗号文命令の一例を示す図であり、図8(b)は平文命令の一例を示す図である。図3に示した実施の形態1に係る暗号文命令と平文命令との関係と同様、暗号文命令は、内部同期式ストリーム暗号に従い作成される。ただし、実施の形態1では、平文命令に対する命令アドレス210と、それに対応する暗号文命令が格納されている外部メモリ600のアドレスとが同一であるのに対し、本実施の形態では、平文命令に対する命令アドレス210が、それに対応する暗号文命令が格納されている外部メモリ600のアドレスよりも1ワード下位のアドレスである点が異なる。
以上のように構成されたコンピュータ102の動作について次に説明する。図9は、コンピュータ102で実行される処理のフローチャートである。命令アドレス210の供給処理(S2)から一時命令320の取得処理(S6)までは、実施の形態1と同様である。一時命令320の取得処理(S6)の後、命令読み込み部302は、命令アドレス210より一時命令アドレス311を生成する(S22)。ここでは、一時命令アドレス311は、命令アドレス210より1ワード上位のアドレスである。すなわち、次式(7)のように表される。
一時命令アドレス311=命令アドレス210+0x0004 …(7)
命令読み込み部302は、外部メモリ600の一時命令アドレス311に格納されている暗号文命令を一時命令521として読み込み、一時命令321として復号化部400に出力する(S10)。
復号化部400は、一時命令320と一時命令321とから命令420を生成する(S24)。すなわち、擬似乱数発生部402aが、一時命令320を入力として受け、擬似乱数RNG(一時命令320)を出力する。次に、排他的論理和算出部402bが、一時命令321とRNG(一時命令320)との間でビットごとの排他的論理和を算出して命令420としてCPUコア200に出力する。
CPUコア200は、復号化部402より命令420を受け、実行する(S14)。以上の処理を外部メモリ600に格納されたプログラム中の各命令について実行する。
図10は、図8に示される命令1〜4を順次実行する際のバスの状態を示す図である。命令1〜4の詳細は、図3に示したものと同じであるため、その詳細な説明はここでは繰り返さない。
例えば、図10に示されるように、CPUコア200より命令読み込み部302に命令アドレス210「0x1000」が供給されると、命令読み込み部302は一時命令アドレス310「0x1000」を生成し、バスインタフェース500を介して外部メモリ600に外部アドレス「0x1000」を供給する。命令読み込み部302は、外部メモリ600の0x1000番地に格納されている初期ベクトル「IV」を一時命令520として読み込み、一時命令320として復号化部402に出力する。次に、命令読み込み部302は一時命令アドレス311「0x1004」を生成し、バスインタフェース500を介して外部メモリ600に外部アドレス「0x1004」を供給する。命令読み込み部302は、外部メモリ600の0x1004番地に格納されている暗号文命令1を一時命令521として読み込み、一時命令321として復号化部402に出力する。
暗号文命令1が読み込まれた時点で復号化部402により暗号文命令1が復号され、復号結果(命令1)が命令420としてCPUコア200に出力される。その後、CPUコア200が命令1を実行する。命令1を実行することにより、CPUコア200がデータアドレス230として「0x8000」を出力し、外部メモリ600へ外部アドレスとして「0x8000」が供給される。そして、外部メモリ600の0x8000番地に格納されたデータが、外部データおよび読み込みデータ540としてCPUコア200に読み込まれる。
以上のようにして暗号化された命令が復号されながら実行される。本実施の形態においても実施の形態1と同様、暗号化方式として内部同期式ストリーム暗号を用いている。このため、暗号化されたプログラムの解読が困難である。
また、暗号化時にメモリのアドレス情報を使用していない。このため、暗号化されたプログラムの外部メモリ上での配置位置は固定されず、再配置が可能である。
(実施の形態3)
次に、本発明の実施の形態3に係るコンピュータについて説明する。本実施の形態では、暗号文命令は、上述の実施の形態1および2と同様に内部同期式ストリーム暗号を用いて平文命令の暗号化を行なうことにより作成される。しかし、実施の形態1および2とは異なり、上位アドレスから下位アドレスに向かって命令の暗号化が行なわれる。そのため、コンピュータの構成が上述の実施形態とは一部異なる。
図11は、本実施の形態に係るコンピュータのハードウェア構成を示すブロック図である。本実施の形態に係るコンピュータ103は、図1に示す実施の形態1に係るコンピュータ100において、命令読み込み部300の代わりに命令読み込み部302を用いたものである。命令読み込み部302は、図6に示した実施の形態2における命令読み込み部302と同様である。
図12は、暗号文命令と平文命令との関係を示す図である。図12(a)は暗号文命令の一例を示す図であり、図12(b)は平文命令の一例を示す図である。図12(a)に示すように、内部同期式ストリーム暗号に従い、暗号文命令n(nは自然数)は、1ワード上位の番地に格納されている暗号文命令(n+1)を入力とする擬似乱数RNG(暗号文命令(n+1))と平文の命令nとの間でビットごとの排他的論理和を算出することにより求められる。すなわち、暗号文命令nは、次式(8)および(9)のように定式化される。ただし、nの取り得る範囲は、1以上CN(CNは暗号文命令の総数)以下の自然数であるものとする。
暗号文命令n=命令n XOR RNG(暗号文命令(n+1)) …(8)
(nは1以上、(CN−1)以下の自然数)
暗号文命令CN=命令CN XOR RNG(IV) …(9)
(IVは初期ベクトル)
例えば、暗号文命令2は次式(10)のように表される。
暗号文命令2=命令2 XOR RNG(暗号文命令3) …(10)
すなわち、暗号文命令2は、平文の命令2と暗号文命令3を入力とする擬似乱数との間でビットごとの排他的論理和を取った結果である。
逆に、命令nは、次式(11)および(12)のように定式化される。
命令n=暗号文命令n XOR RNG(暗号文命令(n+1)) …(11)
(nは1以上、(CN−1)以下の自然数)
命令CN=暗号文命令CN XOR RNG(IV)) …(12)
(IVは初期ベクトル)
以上のようにして生成された暗号文命令列とデータとが外部メモリ600に格納されている。このように、本実施の形態の暗号化方式では、上位アドレスに配置された命令から順に暗号化される。
以上のように構成されたコンピュータ103の動作について次に説明する。図13は、コンピュータ103で実行される処理のフローチャートである。命令アドレス210の供給処理(S2)から、一時命令321(521)の取得処理(S10)までは、実施の形態2と同様である。すなわち、命令アドレス210と同一の一時命令アドレス310が生成され、外部メモリ600の一時命令アドレス310に格納された暗号文命令が一時命令320として復号化部400に出力される。また、命令アドレス210よりも1ワード上位のアドレスが一時命令アドレス311として生成され、外部メモリ600の一時命令アドレス311に格納された暗号文命令が一時命令321として復号化部400に出力される。
その後、復号化部400は、一時命令320と一時命令321とから命令420を生成し(S12)、CPUコア200が命令420を実行する(S14)。命令420の生成処理および実行処理(S12、S14)は、実施の形態1と同様である。以上の処理を外部メモリ600に格納されたプログラム中の各命令について行なう。
図14は、図12に示される命令1〜4を順次実行する際のバスの状態を示す図である。命令1〜4の詳細は、図3に示したものと同じであるため、その詳細な説明はここでは繰り返さない。
例えば、図14に示されるように、CPUコア200より命令読み込み部302に命令アドレス210「0x1000」が供給されると、命令読み込み部302は一時命令アドレス310「0x1000」を生成し、バスインタフェース500を介して外部メモリ600に外部アドレス「0x1000」を供給する。命令読み込み部302は、外部メモリ600の0x1000番地に格納されている暗号文命令を一時命令520として読み込み、一時命令320として復号化部400に出力する。次に、命令読み込み部302は一時命令アドレス311「0x1004」を生成し、バスインタフェース500を介して外部メモリ600に外部アドレス「0x1004」を供給する。命令読み込み部302は、外部メモリ600の0x1004番地に格納されている暗号文命令2を読み込み、一時命令321として復号化部402に出力する。
暗号文命令2が読み込まれた時点で復号化部402により暗号文命令1が復号され、復号結果(命令1)が命令420としてCPUコア200に出力される。その後、CPUコア200が命令1を実行する。命令1を実行することにより、CPUコア200がデータアドレス230として「0x8000」を出力し、外部メモリ600へ外部アドレスとして「0x8000」が供給される。そして、外部メモリ600の0x8000番地に格納されたデータが、外部データおよび読み込みデータ540としてCPUコア200に読み込まれる。
以上のようにして暗号化された命令が復号されながら実行される。本実施の形態においても実施の形態1と同様、暗号化方式として内部同期式ストリーム暗号を用いている。このため、暗号化されたプログラムの解読が困難である。
また、暗号化時にメモリのアドレス情報を使用していない。このため、暗号化されたプログラムの外部メモリ上での配置位置は固定されず、再配置が可能である。
(実施の形態4)
次に、本発明の実施の形態4に係るコンピュータについて説明する。本実施の形態では、上述の実施の形態3と同様に、暗号文命令は、上位アドレスから下位アドレスに向かって内部同期式ストリーム暗号を用いて平文命令を暗号化することにより作成される。ただし、実施の形態3とは異なり、初期ベクトルが2つ存在する。そのため、コンピュータの構成が上述の実施形態とは一部異なる。
図15は、本実施の形態に係るコンピュータのハードウェア構成を示すブロック図である。本実施の形態に係るコンピュータ104は、図11に示される実施の形態3に係るコンピュータ103において、命令読み込み部302の変わりに命令読み込み部304を用いたものである。
実施の形態3に係る命令読み込み部302は、命令アドレス210に基づいて、命令アドレス210と同一の一時命令アドレス310と、命令アドレス210よりも1ワード上位の一時命令アドレス311とを生成している。これに対し、本実施の形態に係る命令読み込み部304は、命令アドレス210に基づいて、命令アドレス210と同一の一時命令アドレス310と、命令アドレス210よりも2ワード上位の一時命令アドレス311とを生成し、外部メモリ600の当該2つのアドレスに格納されているデータを一時命令520および521として読み込む。
図16は、暗号文命令と平文命令との関係を示す図である。図16(a)は暗号文命令の一例を示す図であり、図16(b)は平文命令の一例を示す図である。図16(a)に示すように、内部同期式ストリーム暗号に従い、暗号文命令n(nは自然数)は、2ワード上位の番地に格納されている暗号文命令(n+2)を入力とする擬似乱数RNG(暗号文命令(n+2))と平文の命令nとの間でビットごとの排他的論理和を算出することにより求められる。すなわち、暗号文命令nは、次式(13)〜(15)のように定式化される。ただし、nの取り得る範囲は1以上CN(CNは暗号文命令の総数)以下の自然数であるものとする。
暗号文命令n=命令n XOR RNG(暗号文命令(n+2)) …(13)
(nは1以上、(CN−2)以下の自然数)
暗号文命令(CN−1)=命令(CN−1) XOR RNG(IV1)
…(14)
(IV1は初期ベクトル)
暗号文命令CN=命令CN XOR RNG(IV2) …(15)
(IV2は初期ベクトル)
例えば、暗号文命令2は次式(16)のように表される。
暗号文命令2=命令2 XOR RNG(暗号文命令4) …(16)
すなわち、暗号文命令2は、平文の命令2と暗号文命令4を入力とする擬似乱数との間でビットごとの排他的論理和を取った結果である。
逆に、命令nは、次式(17)〜(19)のように定式化される。
命令n=暗号文命令n XOR RNG(暗号文命令(n+2)) …(17)
(nは1以上、(CN−2)以下の自然数)
命令(CN−1)=暗号文命令(CN−1) XOR RNG(IV1)…(18)
(IV1は初期ベクトル)
命令CN=暗号文命令CN XOR RNG(IV2) …(19)
(IV2は初期ベクトル)
以上のようにして生成された暗号文命令列とデータとが外部メモリ600に格納されている。このように、本実施の形態の暗号化方式では、上位アドレスから配置された命令から順に1つ置きに暗号化される。
以上のように構成されたコンピュータ104の動作について次に説明する。図17は、コンピュータ104で実行される処理のフローチャートである。コンピュータ104は、命令読み込み部302で生成される一時命令アドレス311が異なる以外は実施の形態3に係るコンピュータ103の動作と同じである。命令アドレス210の供給処理(S2)から一時命令320の取得処理(S6)までは、実施の形態1と同様である。一時命令320の取得処理(S6)の後、命令読み込み部304は、命令アドレス210より一時命令アドレス311を生成する(S32)。ここでは、一時命令アドレス311は、命令アドレス210より2ワード上位のアドレスである。すなわち、一時命令アドレス311は次式(20)のように表される。
一時命令アドレス311=命令アドレス210+0x0008 …(20)
その後の、一時命令321の取得処理(S10)から命令420の実行処理(S14)までは実施の形態1と同様である。以上の処理を外部メモリ600に格納されたプログラム中の各命令について実行する。
図18は、図16に示される命令1〜4を順次実行する際のバスの状態を示す図である。命令1〜4の詳細は、図3に示したものと同じである。
例えば、図18に示されるように、CPUコア200より命令読み込み部304に命令アドレス210「0x1000」が供給されると、命令読み込み部304は一時命令アドレス310「0x1000」を生成し、バスインタフェース500を介して外部メモリ600に外部アドレス「0x1000」を供給する。命令読み込み部304は、外部メモリ600の0x1000番地に格納されている暗号文命令を一時命令520として読み込み、一時命令320として400に出力する。次に、命令読み込み部304は一時命令アドレス311「0x1008」を生成し、バスインタフェース500を介して外部メモリ600に外部アドレス「0x1008」を生成し、バスインタフェース500を介して外部メモリ600に外部アドレス「0x1008」を供給する。命令読み込み部304は、外部メモリ600の0x1008番地に格納されている暗号文命令3を一時命令521として読み込み、一時命令321として復号化部400に出力する。
暗号文命令3が読み込まれた時点で復号化部400により暗号文命令1が復号され、復号結果(命令1)が命令420としてCPUコア200に出力される。その後、CPUコア200が命令1を実行する。命令1を実行した際のバスの状態は、上述の実施の形態と同様であるため、ここでは説明は繰り返さない。
以上のようにして暗号化された命令が復号されながら実行される。本実施の形態においても、実施の形態1と同様、暗号化方式として内部同期式ストリーム暗号を用いている。このため、暗号化されたプログラムの解読が困難である。
また、暗号化時にメモリのアドレス情報を使用していない。このため、暗号化されたプログラムの外部メモリ上での配置位置は固定されず、再配置が可能である。
(実施の形態5)
次に、実施の形態5に係るコンピュータについて説明する。本実施の形態では、上述の実施形態と異なり、暗号化方式に共通鍵ブロック暗号のCBC(Cipher Block Chaining)モードを用いる。
図19は、本実施の形態に係るコンピュータのハードウェア構成を示すブロック図である。本実施の形態に係るコンピュータ105は、図1に示す実施の形態1に係るコンピュータ100において、復号化部400の変わりに復号化部405を用いたものである。
図20は、復号化部405のハードウェア構成を示すブロック図である。復号化部405は、一時命令320および一時命令321を入力として受け、共通鍵ブロック暗号のCBCモードに従い、一時命令を復号し命令420を出力する処理部であり、一時命令復号化部405aと、鍵格納部405bと、排他的論理和算出部405cとを備える。鍵格納部405bは、命令の暗号化時に使用した鍵データを格納しており、ROMなどから構成される。一時命令復号化部405aは、一時命令320を入力として受け、一時命令320を鍵格納部405bに格納された鍵データを用いて復号し、結果を出力する。排他的論理和算出部405cは、一時命令復号化部405aの復号結果と一時命令321とを入力として受け、当該復号結果と一時命令321との間でビットごとの排他的論理和を算出し、算出した結果を命令420として出力する。
図21は、暗号文命令と平文命令との関係を示す図である。図21(a)は暗号文命令の一例を示す図であり、図21(b)は平文命令の一例を示す図である。図21(a)に示すように、共通鍵ブロック暗号のCBCモードに従い、暗号文命令n(nは自然数)は、1つ前の番地の暗号文命令(n−1)と平文の命令nとの排他的論理和を共通鍵ブロック暗号で暗号化することにより求められる。すなわち、暗号文命令nは、次式(21)および(22)のように定式化される。ここで、ENC(X)とは、データXを共通鍵ブロック暗号で暗号化した結果を示すものとする。
暗号文命令n=ENC(命令n XOR 暗号文命令(n−1)) …(21)
(nは2以上の整数)
暗号文命令1=ENC(命令1 XOR IV) …(22)
(IVは初期ベクトル)
例えば、暗号文命令2は次式(23)のように表される
暗号文命令2=ENC(命令2 XOR 暗号文命令1) …(23)
すなわち、暗号文命令2は、平文の命令2と暗号文命令1との間でビットごとの排他的論理和を取った結果を共通鍵ブロック暗号で暗号化した結果である。
逆に、命令nは、次式(24)および(25)のように定式化される。ここで、DEC(X)とは、データXを共通鍵ブロック暗号で復号化した結果を示すものとする。なお、ENC(X)およびDEC(X)の鍵データは同じである。
命令n=DEC(暗号文命令n) XOR 暗号文命令(n−1) …(24)
(nは2以上の整数)
命令1=DEC(暗号文命令1) XOR IV …(25)
(IVは初期ベクトル)
以上のようにして生成された暗号文命令とデータとが外部メモリ600に格納されている。
以上のように構成されたコンピュータ105の動作について次に説明する。図22は、コンピュータ105で実行される処理のフローチャートである。命令アドレス210の供給処理(S2)から一時命令一時命令321の取得処理(S10)までは、実施の形態1と同様である。一時命令321の取得処理(S10)の後、復号化部405は、一時命令320と一時命令321とから命令420を生成する(S42)。すなわち、一時命令復号化部405aが、鍵格納部405bに格納された鍵データを用いて一時命令320を復号し、復号結果DEC(一時命令320)を排他的論理和算出部405cへ出力する。次に、排他的論理和算出部405cがDEC(一時命令320)と一時命令321との間でビットごとの排他的論理和を算出し、命令420としてCPUコア200に出力する。
CPUコア200は、復号化部402より命令420を受け、実行する(S14)。以上の処理を外部メモリ600に格納されたプログラム中の各命令について実行する。
図21に示される命令1〜4を順次実行する際のバスの状態は、図5に示したものと同様である。このため、その詳細な説明はここでは繰返さない。
以上のようにして暗号化された命令が復号されながら実行される。本実施の形態では暗号化方式として、共通鍵ブロック暗号のCBCモードを用いている。CBCモードでは、命令を暗号化する際に、その1ワード下位の暗号文命令を用いて暗号化が行なわれる。このため、同一の命令であっても暗号文命令が同じになるとは限らない。逆に、同一の暗号文命令であっても、元となる命令が同じであるとは限らない。このため、暗号化されたプログラムの解読が困難である。
また、暗号化時にメモリのアドレス情報を使用していない。このため、暗号化されたプログラムの外部メモリ上での配置位置は固定されず、再配置が可能である。
なお、暗号文命令と平文命令との対応関係を実施の形態2〜4のようにしてもよい。
(実施の形態6)
次に、本発明の実施の形態6に係るコンピュータについて説明する。本実施の形態に係るコンピュータは、上述の実施の形態とは異なり、外部メモリより読み込まれた一時命令を一時的に格納する一時命令メモリが設けられている点が異なる。上述の実施の形態では、図5に示すように1つの命令を実行するために2つの暗号文命令を外部メモリ600より読み込んでいる。このため、連続配置された命令を順次実行する際には、暗号文命令を重複して外部メモリ600より読み込んでいる。本実施の形態では、一時命令メモリを設けることにより、重複した暗号文命令の読み込みを行なわないようにしている。
図23は、本実施の形態に係るコンピュータのハードウェア構成を示すブロック図である。本実施の形態に係るコンピュータ106は、実施の形態1に係るコンピュータ100において、命令読み込み部300の代わりに命令読み込み部306および一時命令メモリ350を用いたものである。命令読み込み部306は、CPUコア200より命令アドレス210を受け、命令アドレス210と同じ一時命令アドレス310と、命令アドレス210よりも1ワード下位の一時命令アドレス311との双方またはいずれか一方を順次生成する。また、命令読み込み部306は、外部メモリ600の一時命令アドレス310に格納された暗号文命令を一時命令520として一時命令メモリ350に格納し、外部メモリ600の一時命令アドレス311に格納された暗号文命令を一時命令521として一時命令メモリ350に格納する。
一時命令メモリ350は、2つの一時命令を格納できる。一時命令メモリ350書き込まれたデータの読み出し、消去等の制御は命令読み込み部306が担当する。また、一時命令メモリ350には、一時命令と合わせて一時命令アドレスが保持されているものとする。
本実施の形態における暗号文命令と平文命令との関係は図3に示したものとの同じであるため、説明は繰返さない。
以上のように構成されたコンピュータ106の動作について次に説明する。図24は、コンピュータ106で実行される処理のフローチャートである。CPUコア200は、プログラムカウンタに格納されている命令アドレス210を命令読み込み部306に供給する(S2)。命令読み込み部306は、命令アドレス210に対応する一時命令320が一時命令メモリ350に格納されているか否かを調べる(S52)。これは、一時命令320に対応する一時命令アドレス310が一時命令メモリ350に記憶されているか否かを調べることにより分かる。
一時命令320が格納されていなければ(S52でYES)、命令読み込み部306は、命令アドレス210と同一の一時命令アドレス310を生成し(S4)、外部メモリ600の一時命令アドレス310に格納されている暗号文命令を一時命令520として一時命令メモリ350に格納する(S54)。
一時命令520が一時命令メモリ350に格納された後(S54、S52でNO)、命令読み込み部306は、命令アドレス210に対応する一時命令321が一時命令メモリ350に格納されているか否かを調べる(S56)。これは、一時命令321に対応する一時命令アドレス311が一時命令メモリ350に記憶されているか否かを調べることにより分かる。
一時命令321が格納されていなければ(S56でYES)、命令読み込み部306は、命令アドレス210よりも1ワード下位の一時命令アドレス311を生成し(S8)、外部メモリ600の一時命令アドレス311に格納されている暗号文命令を一時命令521として一時命令メモリ350に格納する(S58)。
一時命令520および521が一時命令メモリ350に格納された後(S58、S56でNO)、復号化部400は、一時命令320および321より命令420を生成する(S12)。命令420の生成処理は、実施の形態1と同様である。CPUコア200は、復号化部400より命令420を受け、実行する(S14)。以上の処理を外部メモリ600に格納されたプログラム中の各命令について行なう。
図25は、図3に示される命令1〜4を実行する際のバスの状態を示す図である。例えば、CPUコア200が命令読み込み部300に命令アドレス210「0x1000」を供給する。この時点では、外部メモリ600の0x1000番地に格納されている暗号文命令1は一時命令メモリ350に格納されていない。このため、命令読み込み部306は、外部メモリ600の0x1000番地に格納されている暗号文命令1を読み込み、一時命令メモリ350に格納する。また、この時点では、外部メモリ600の0x0FFC番地に格納されている初期ベクトル「IV」も一時命令メモリ350に格納されていない。このため、命令読み込み部306は、外部メモリ600の0x0FFC番地に格納されている初期ベクトル「IV」を読み込み、一時命令メモリ350に格納する。
初期ベクトル「IV」が一時命令メモリ350に格納された時点で、復号化部400により暗号文命令1が復号され、復号結果(命令1)が命令420としてCPUコア200に出力される。その後、CPUコア200が命令1を実行する。命令1の実行時のバスの状態は、実施の形態1と同様である。
命令1を実行後、CPUコア200は、命令アドレス210「0x1004」を命令読み込み部306に供給する。この時点では、一時命令メモリ350には暗号文命令1と初期ベクトル「IV」とが格納されている。このため、命令読み込み部306は、一時命令アドレス310「0x1004」を生成し、外部メモリ600の0x1004番地に格納されている暗号文命令2を読み込み、一時命令メモリ350に格納する。この時点で命令2を復号するための暗号文命令が一時命令メモリ350に格納されていることになるため、復号化部400は、一時命令メモリ350に格納されている暗号文命令1および暗号文命令2に基づいて、命令2を復号する。その後、命令2を実行する。
以上説明したように、本実施の形態に係るコンピュータは、上述の実施の形態の効果に加え、一時命令を一時命令メモリ350に格納し、重複した暗号文命令の読み込みを排除している。このため、暗号文命令を高速に復号することができ、プログラムを高速に実行することができる。
以上、本発明に係るコンピュータについて、実施の形態に基づいて説明したが、本発明はこれらの実施の形態に限定されるものではない。
例えば、コンピュータで実行される命令のすべてが必ずしも暗号化されている必要はなく、一部の命令が暗号化されており、その他の命令は暗号化されていなくても良い。
また、暗号化の方式として、内部同期式ストリーム暗号または共通鍵ブロック暗号のCBCモードを例に説明を行なったが、これらの暗号化方式に限定されるものではなく、共通鍵ブロック暗号のCFB(Cipher Feedback)モードなど少なくとも2つの暗号文から平文が復号可能な暗号化方式であれば、どのような暗号化方式であっても良い。
さらに、命令長は32ビット以外の長さであっても良い。
さらにまた、上述の実施の形態では、1つのプログラムに対し、暗号化方式は1種類として説明を行なったが、1つのプログラム中に複数の暗号化方式が含まれていても良い。例えば、命令n(nは奇数)を内部同期式ストリーム暗号に従い暗号化し、命令n(nは偶数)を共通鍵ブロック暗号のCBCモードに従い暗号化するようにしても良い。この場合、復号化部における暗号文命令の復号処理は、複数の暗号化方式のいずれかの方式を選択しながら暗号文命令を復号する。
また、擬似乱数の発生方法として線形合同法を用いても良い。
さらに、実施の形態4における初期ベクトルの個数は、3つ以上であってもよい。
さらにまた、本発明は、平文命令から暗号命令を生成する装置として実現することも可能である。
本発明に係る命令実行装置によると、暗号化された命令を実行する命令実行装置、プロセッサ、1チップマイクロコンピュータ、1チップコントローラ、セキュアCPU等として有用である。
本発明の実施の形態1に係るコンピュータのハードウェア構成を示すブロック図である。 実施の形態1に係る復号化部のハードウェア構成を示すブロック図である。 実施の形態1に係る暗号文命令と平文命令との関係を示す図である。 実施の形態1に係るコンピュータで実行される処理のフローチャートである。 図3に示される命令1〜4を順次実行する際のバスの状態を示す図である。 本発明の実施の形態2に係るコンピュータのハードウェア構成を示すブロック図である。 実施の形態2に係る復号化部のハードウェア構成を示すブロック図である。 実施の形態2に係る暗号文命令と平文命令との関係を示す図である。 実施の形態2に係るコンピュータで実行される処理のフローチャートである。 図8に示される命令1〜4を順次実行する際のバスの状態を示す図である。 本発明の実施の形態3に係るコンピュータのハードウェア構成を示すブロック図である。 実施の形態3に係る暗号文命令と平文命令との関係を示す図である。 実施の形態3に係るコンピュータで実行される処理のフローチャートである。 図12に示される命令1〜4を順次実行する際のバスの状態を示す図である。 本発明の実施の形態4に係るコンピュータのハードウェア構成を示すブロック図である。 実施の形態4に係る暗号文命令と平文命令との関係を示す図である。 実施の形態4に係るコンピュータで実行される処理のフローチャートである。 図16に示される命令1〜4を順次実行する際のバスの状態を示す図である。 本発明の実施の形態5に係るコンピュータのハードウェア構成を示すブロック図である。 実施の形態5に係る復号化部のハードウェア構成を示すブロック図である。 実施の形態5に係る暗号文命令と平文命令との関係を示す図である。 実施の形態5に係るコンピュータで実行される処理のフローチャートである。 本発明の実施の形態6に係るコンピュータのハードウェア構成を示すブロック図である。 実施の形態6に係るコンピュータで実行される処理のフローチャートである。 図3に示される命令1〜4を実行する際のバスの状態を示す図である。 従来の暗号化データ処理装置の概略構成を示すブロック図である。
符号の説明
100,102,103,104,105,106 コンピュータ
200 CPUコア
210 命令アドレス
230 データアドレス
241 書き込みデータ
300,302,304,306 命令読み込み部
310,311 一時命令アドレス
320,321,520,521 一時命令
350 一時命令メモリ
400,402,405 復号化部
400a,402a 擬似乱数発生部
400b,402b,405c 排他的論理和算出部
405a 一時命令復号化部
405b 鍵格納部
420 命令
500 バスインタフェース
540 読み込みデータ
600 外部メモリ
910 暗号化データ処理装置
920 メモリ
930 データ処理部
940 復号回路

Claims (22)

  1. 暗号文命令から命令を復号し、実行する命令実行装置であって、
    前記暗号文命令は、複数の暗号文から1つの平文を復号可能な暗号化方式に従い暗号化された命令であり、
    実行対象の命令の命令アドレスから、当該命令を復号するために必要な暗号文命令が格納されている外部記憶手段の複数の一時命令アドレスを生成し、前記外部記憶手段の前記複数の一時命令アドレスにそれぞれ記憶された複数の暗号文命令を読み込む命令読み込み手段と、
    前記命令読み込み手段で読み込まれた前記複数の暗号文命令から1つの命令を復号する復号化手段と、
    前記命令読み込み手段に前記命令アドレスを供給する命令アドレス供給手段と、
    前記復号化手段で復号された前記命令を実行する命令実行手段とを備える
    ことを特徴とする命令実行装置。
  2. 前記命令読み込み手段は、実行対象の命令の命令アドレスに基づいて、相互に所定のアドレス長離れた第1の一時命令アドレスと第2の一時命令アドレスとを生成し、前記外部記憶手段の前記第1および第2の一時命令アドレスにそれぞれ記憶された2つの暗号文命令を読み込む
    ことを特徴とする請求項1に記載の命令実行装置。
  3. 前記命令読み込み手段は、実行対象の命令の命令アドレスに基づいて、当該命令アドレスと同じ第1の一時命令アドレスと、当該命令アドレスよりも1ワード下位の第2の一時命令アドレスとを生成し、前記外部記憶手段の前記第1および第2の一時命令アドレスにそれぞれ記憶された2つの暗号文命令を読み込む
    ことを特徴とする請求項2に記載の命令実行装置。
  4. 前記命令読み込み手段は、実行対象の命令の命令アドレスに基づいて、当該命令アドレスと同じ第1の一時命令アドレスと、当該命令アドレスよりも1ワード上位の第2の一時命令アドレスとを生成し、前記外部記憶手段の前記第1および第2の一時命令アドレスにそれぞれ記憶された2つの暗号文命令を読み込む
    ことを特徴とする請求項2に記載の命令実行装置。
  5. 前記命令読み込み手段は、実行対象の命令の命令アドレスに基づいて、当該命令アドレスと同じ第1の一時命令アドレスと、当該命令アドレスよりも2ワード以上の予め定められたワードだけ離れた第2の一時命令アドレスとを生成し、前記外部記憶手段の前記第1および第2の一時命令アドレスにそれぞれ記憶された2つの暗号文命令を読み込む
    ことを特徴とする請求項2に記載の命令実行装置。
  6. 前記暗号化方式は連鎖暗号であり、
    前記復号化手段は、
    前記第2の一時命令アドレスに記憶された暗号文命令を入力として受け、当該暗号文命令に従い擬似乱数を発生する擬似乱数発生部と、
    前記第1の一時命令アドレスに記憶された暗号文命令および前記擬似乱数を入力として受け、当該暗号文命令および当該擬似乱数の間でビットごとの排他的論理和を算出し、算出結果を前記実行対象の命令として出力する排他的論理和算出部とを有する
    ことを特徴とする請求項3〜5のいずれか1項に記載の命令実行装置。
  7. 前記暗号化方式は連鎖暗号であり、
    前記復号化手段は、
    前記第1の一時命令アドレスに記憶された暗号文命令を入力として受け、当該暗号文命令に従い擬似乱数を発生する擬似乱数発生部と、
    前記擬似乱数および前記第2の一時命令アドレスに記憶された暗号文命令を入力として受け、当該擬似乱数および当該暗号文命令の間でビットごとの排他的論理和を算出し、算出結果を前記実行対象の命令として出力する排他的論理和算出部とを有する
    ことを特徴とする請求項4に記載の命令実行装置。
  8. 前記暗号化方式は共通鍵ブロック暗号のCBC(Cipher Block Chaining)モードであり、
    前記復号化手段は、
    命令の暗号時と同じ鍵データを格納する鍵格納部と、
    前記第1の一時命令アドレスに記憶された暗号文命令を前記鍵データに基づいて復号する一時命令復号化部と、
    前記一時命令復号化部で復号された命令と前記第2の一時命令アドレスに記憶された暗号文命令との間でビットごとの排他的論理和を算出し、算出結果を前記実行対象の命令として出力する排他的論理和算出部とを有する
    ことを特徴とする請求項2に記載の命令実行装置。
  9. さらに、前記命令読み込み手段が読み込んだ前記複数の暗号文命令を一時的に記憶する一時命令記憶手段を備え、
    前記命令読み込み手段は、実行対象の命令の命令アドレスに基づいて、当該命令を復号するために必要な暗号文命令が格納されている外部記憶手段の複数の一時命令アドレスのうち、対応する暗号文命令が前記一時命令記憶手段に記憶されていない一時命令アドレスを生成し、前記外部記憶手段の当該一時命令アドレスに記憶された暗号文命令を読み込み、前記一時命令記憶手段に記憶し、
    前記復号化手段は、前記一時命令記憶手段に記憶された前記複数の暗号文命令から1つの命令を復号する
    ことを特徴とする請求項1〜8のいずれか1項に記載の命令実行装置。
  10. 暗号文命令から命令を復号し、実行する命令実行方法であって、
    前記暗号文命令は、複数の暗号文から1つの平文を復号可能な暗号化方式に従い暗号化された命令であり、
    実行対象の命令の命令アドレスを生成する命令アドレス生成ステップと、
    前記実行対象の命令の命令アドレスから、当該命令を復号するために必要な暗号文命令が格納されている外部記憶手段の複数の一時命令アドレスを生成する一時命令アドレス生成ステップと、
    前記外部記憶手段の前記複数の一時命令アドレスにそれぞれ記憶された複数の暗号文命令を読み込む命令読み込みステップと、
    読み込まれた前記複数の暗号文命令から1つの命令を復号する復号化ステップと、
    復号された前記命令を実行する命令実行ステップとを含む
    ことを特徴とする命令実行方法。
  11. 前記一時命令アドレス生成ステップでは、前記実行対象の命令の命令アドレスに基づいて、相互に所定のアドレス長離れた第1の一時命令アドレスと第2の一時命令アドレスとを生成し、
    前記命令読み込みステップでは、前記外部記憶手段の前記第1および第2の一時命令アドレスにそれぞれ記憶された2つの暗号文命令を読み込む
    ことを特徴とする請求項10に記載の命令実行方法。
  12. 前記一時命令アドレス生成ステップは、
    前記実行対象の命令の命令アドレスと同じ第1の一時命令アドレスを生成する第1の生成ステップと、
    前記実行対象の命令の命令アドレスよりも1ワード下位の第2の一時命令アドレスを生成する第2の生成ステップとを含む
    ことを特徴とする請求項11に記載の命令実行方法。
  13. 前記一時命令アドレス生成ステップは、
    前記実行対象の命令の命令アドレスと同じ第1の一時命令アドレスを生成する第1の生成ステップと、
    前記実行対象の命令の命令アドレスよりも1ワード上位の第2の一時命令アドレスを生成する第2の生成ステップとを含む
    ことを特徴とする請求項11に記載の命令実行方法。
  14. 前記一時命令アドレス生成ステップは、
    前記実行対象の命令の命令アドレスと同じ第1の一時命令アドレスを生成する第1の生成ステップと、
    前記実行対象の命令の命令アドレスよりも2ワード以上の予め定められたワードだけ離れた第2の一時命令アドレスを生成する第2の生成ステップとを含む
    ことを特徴とする請求項11に記載の命令実行方法。
  15. 前記暗号化方式は連鎖暗号であり、
    前記復号化ステップは、
    前記第2の一時命令アドレスに記憶された暗号文命令を入力として受け、当該暗号文命令に従い擬似乱数を発生する擬似乱数発生ステップと、
    前記第1の一時命令アドレスに記憶された暗号文命令および前記擬似乱数を入力として受け、当該暗号文命令および当該擬似乱数の間でビットごとの排他的論理和を算出し、算出結果を前記実行対象の命令として出力する排他的論理和算出ステップとを含む
    ことを特徴とする請求項12〜14のいずれか1項に記載の命令実行方法。
  16. 前記暗号化方式は連鎖暗号であり、
    前記復号化ステップは、
    前記第1の一時命令アドレスに記憶された暗号文命令を入力として受け、当該暗号文命令に従い擬似乱数を発生する擬似乱数発生ステップと、
    前記擬似乱数および前記第2の一時命令アドレスに記憶された暗号文命令を入力として受け、当該擬似乱数および当該暗号文命令の間でビットごとの排他的論理和を算出し、算出結果を前記実行対象の命令として出力する排他的論理和算出ステップとを含む
    ことを特徴とする請求項13に記載の命令実行方法。
  17. 前記暗号化方式は共通鍵ブロック暗号のCBC(Cipher Block Chaining)モードであり、
    前記復号化ステップは、
    前記第1の一時命令アドレスに記憶された暗号文命令を命令の暗号時と同じ鍵データに基づいて復号する一時命令復号化ステップと、
    前記一時命令復号化ステップにおいて復号された命令と前記第2の一時命令アドレスに記憶された暗号文命令との間でビットごとの排他的論理和を算出し、算出結果を前記実行対象の命令として出力する排他的論理和算出ステップとを含む
    ことを特徴とする請求項11に記載の命令実行方法。
  18. コンピュータで実行される命令を暗号化した暗号文命令を格納するデータであって、
    前記暗号文命令は、複数の暗号文から1つの平文を復号可能な暗号化方式で暗号化された命令より構成される
    ことを特徴とするデータ。
  19. 前記暗号文命令は、連鎖暗号に従い暗号化された命令である
    ことを特徴とする請求項18に記載のデータ。
  20. 前記暗号文命令は、共通鍵ブロック暗号のCBC(Cipher Block Chaining)モードに従い暗号化された命令である
    ことを特徴とする請求項18に記載のデータ。
  21. 前記暗号文命令は、共通鍵ブロック暗号のCFB(Cipher Feedback)モードに従い暗号化された命令である
    ことを特徴とする請求項18に記載のデータ。
  22. 請求項18〜21のいずれか1項に記載のデータが記録されたコンピュータ読取可能な記録媒体。
JP2003281277A 2003-07-28 2003-07-28 命令実行装置およびその方法 Pending JP2005050116A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003281277A JP2005050116A (ja) 2003-07-28 2003-07-28 命令実行装置およびその方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003281277A JP2005050116A (ja) 2003-07-28 2003-07-28 命令実行装置およびその方法

Publications (1)

Publication Number Publication Date
JP2005050116A true JP2005050116A (ja) 2005-02-24

Family

ID=34266838

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003281277A Pending JP2005050116A (ja) 2003-07-28 2003-07-28 命令実行装置およびその方法

Country Status (1)

Country Link
JP (1) JP2005050116A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010140473A (ja) * 2008-12-15 2010-06-24 Thomson Licensing 命令レベルのソフトウェア暗号化のための方法及び装置
JP2010176697A (ja) * 2010-03-29 2010-08-12 Hyper Tec:Kk 暗号化プログラム復号方法及び暗号化プログラム復号プログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010140473A (ja) * 2008-12-15 2010-06-24 Thomson Licensing 命令レベルのソフトウェア暗号化のための方法及び装置
KR20100069588A (ko) * 2008-12-15 2010-06-24 톰슨 라이센싱 명령어 레벨의 소프트웨어 암호화를 위한 방법 및 디바이스
US8341426B2 (en) 2008-12-15 2012-12-25 Thomson Licensing Methods and devices for instruction level software encryption
KR101632658B1 (ko) * 2008-12-15 2016-06-22 톰슨 라이센싱 명령어 레벨의 소프트웨어 암호화를 위한 방법 및 디바이스
JP2010176697A (ja) * 2010-03-29 2010-08-12 Hyper Tec:Kk 暗号化プログラム復号方法及び暗号化プログラム復号プログラム

Similar Documents

Publication Publication Date Title
US7472285B2 (en) Apparatus and method for memory encryption with reduced decryption latency
KR100445406B1 (ko) 데이터 암호화 장치 및 그 방법
JP4551802B2 (ja) プロセッサ、メモリ、コンピュータシステムおよびデータ転送方法
US8428251B2 (en) System and method for stream/block cipher with internal random states
JP5306465B2 (ja) セキュアなメモリに応用するメッセージ認証コードの事前計算
US8555084B2 (en) Data encryption device and memory card
JP6714735B2 (ja) ランダムコード発生装置
NO20006385L (no) Blokk-chiffere med heltallsmultiplikasjon og dataavhengig og fast antall rotasjoner i hver runde
US7720225B2 (en) Table splitting for cryptographic processes
JP2010140473A (ja) 命令レベルのソフトウェア暗号化のための方法及び装置
JPWO2006033347A1 (ja) 機密情報処理方法、機密情報処理装置、およびコンテンツデータ再生装置
US20100124328A1 (en) Extensive ciphertext feedback
JP2005050116A (ja) 命令実行装置およびその方法
US9058507B2 (en) Signal processor with an encrypting or decrypting device in a memory system
US7707431B2 (en) Device of applying protection bit codes to encrypt a program for protection
JPS6281145A (ja) デ−タ暗号化方式
JP7063628B2 (ja) 暗号化装置、暗号化方法およびプログラム
US11121884B2 (en) Electronic system capable of self-certification
RU2759862C1 (ru) Способ шифрования данных
JP2000076144A (ja) 論理回路、マイクロコンピュータ、および論理回路・記憶回路間の通信方法
JP7317261B2 (ja) 暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム
JP2005204128A (ja) 個別鍵生成装置及びプログラム
CN117375806A (zh) 密码装置及其密码方法
JPH0725436U (ja) ファイル暗号化方式
JP2007226525A (ja) マイクロコンピュータのデータ保護システムおよび保護方法