(57)【要約】【課題】メモリシステムのデータ保護のためにデータは暗号化されている。しかしデータ暗号化の変換規則が原理的に推定でき、暗号化されたデータが解読されるという問題がある。【解決手段】完全に非公開で、外部からは変更することだけが可能な基準キーと、データの所有者が設定する所有者キーと、基準キーと所有者キーから生成される変換キーを有し、その変換キーによってメモリデータを暗号化する。【選択図】図１
2009253490.tif 000002
【特許請求の範囲】
【請求項１】
暗号化手段を有するメモリシステムの暗号化方式において、完全に非公開で、外部からは変更することだけが可能な基準キーと、データの所有者が設定する所有者キーと、前記基準キーと前記所有者キーから生成される変換キーを有し、該変換キーによってメモリデータを暗号化することを特徴とするメモリシステムの暗号化方式。
【請求項２】
前記変換キーは、第３者による暗号化を解読するために必要とする回数の変換が行われる前に更新されることを特徴とする請求項１に記載のメモリシステムの暗号化方式。
【請求項３】
前記変換キーは、決められた間隔で更新されることを特徴とする請求項１に記載のメモリシステムの暗号化方式。
【請求項４】
前記変換キーは、管理対象のページ単位に設定されることを特徴とする請求項１乃至３のいずれかに記載のメモリシステムの暗号化方式。
【請求項５】
前記基準キーは、データの所有者毎に設定されることを特徴とする請求項１乃至４のいずれかに記載のメモリシステムの暗号化方式。
【請求項６】
前記所有者キーは、プロセスを起動したときに、プロセスＩＤと組として設定されることを特徴とする請求項１乃至５のいずれかに記載のメモリシステムの暗号化方式。
【請求項７】
前記所有者キーは、暗号化されていることを特徴とする請求項１乃至６のいずれかに記載のメモリシステムの暗号化方式。
【請求項８】
前記メモリデータは、ＲＯＭに記憶されるデータであることを特徴とする請求項１乃至７のいずれかに記載のメモリシステムの暗号化方式。
【請求項９】
前記ＲＯＭを２つ備え、一方のＲＯＭをアクセス可能なメモリとし、他方のＲＯＭに新しくデータを展開させ、データ展開後に２つのＲＯＭを切り替えてアクセスすることを特徴とする請求項８に記載のメモリシステムの暗号化方式。
【請求項１０】
完全に非公開で、外部からは変更することだけが可能な基準キーを保持する基準キー保持手段と、データの所有者が設定する所有者キーを保持する所有者キー保持手段と、前記基準キーと前記所有者キーから生成される変換キーを保持する変換キー保持手段と、送信されたデータを前記変換キーにより暗号化してメモリに送信する暗号化手段と、を有することを特徴とするメモリシステム。
【請求項１１】
前記変換キー手段は第３者による暗号化を解読するために必要とする回数の変換が行われる前に、前記変換キーを更新することを特徴とする請求項１０に記載のメモリシステム。
【請求項１２】
メモリシステムの暗号化方法において、完全に非公開で、外部からは変更することだけが可能な基準キーと、データの所有者が設定する所有者キーと、前記基準キーと前記所有者キーから生成される変換キーを有し、該変換キーによってメモリデータを暗号化し、その暗号化の回数が定められた回数になると前記変換キーを更新することを特徴とするメモリシステムの暗号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサとともにコンピュータシステムの基本機能を実現するメモリシステムに関し、特に暗号化手段を有するメモリシステムの暗号化方式に関する。
【背景技術】
【０００２】
コンピュータシステム等の装置は、プログラムを解読し、データ処理するマイクロプロセッサや、このプログラムやデータを記憶するメモリシステムから構成されている。これらの装置のメモリシステム内に記憶されているプログラムやデータは知的財産であり、非常に重要なものである。そのため一般的に、プログラムやデータは外部から盗用、改変されないように暗号化して保護され、装置間でデータ転送されている。
【０００３】
このように装置間でプログラムやデータを安全に運ぶために高い強度を持つ暗号化方式が実用化されている。しかし、プログラムやデータを安全な形で運ぶことができても、プログラムであれば、実行前に、暗号化を解除して実行可能な形式に戻す必要がある。データであれば、そのデータを扱うプログラムを実行する時点で、暗号化を解除してプログラムがデータを読み込めるようにしなければならない。このようなファイルレベルの暗号化では、暗号化を解除されたプログラムやデータのファイルに対するアクセスを制限することにより、プログラムやデータを第３者に解読されることがないような仕組みが整えられている。しかし、管理上のミスから、容易に悪意の第３者にアクセス権を取得される可能性があり、アクセス権を取得された場合、プログラムやデータを簡単に解読されてしまう非常に脆弱なシステムであった。
【０００４】
一方で、プログラムやデータを知的財産として有償で、不特定多数のユーザに提供するようなケースが一般的となっている。このようなケースでは、ユーザは管理者権限を持ち、暗号化が解除されたプログラムやデータへ簡単にアクセスすることが可能である。悪意のユーザは、例えば、ライセンスの認証を行っているプログラムの部分を改変することによって、提供側が意図したライセンスの管理の仕組みを回避することが可能である。
【０００５】
このような暗号化が解除された状態のプログラムやデータを手に入れることができるというファイルレベルの暗号化の問題点に対し、プログラムが高度な暗号化に対応し、プログラムが暗号化された状態のデータにアクセスする方式が提案されている。この場合、データやプログラムをファイルとして入手することができても、暗号化された状態なので、その解読は一般には困難である。
【０００６】
だが、このような方式を採用しても、やはり、暗号化されたプログラムは実行時に暗号化を解除し、メモリ上に実行可能な状態で展開される。また、データも、例えば、数値データであれば、ハードウェアが扱える演算に適した形に暗号化を解除してメモリ上に展開する必要がある。メモリ上の計算の途中結果等も暗号化されないので、メモリを参照することが可能であれば、ファイルレベルの暗号化同様、プログラムやデータの解読が可能である。他のユーザが使用しているメモリを参照したり、悪意の第３者がメモリを参照できないようにする仕組みが提供されている場合もある。しかしこの場合でも、例えば、管理者権限を手に入れメモリダンプを不正に採取する等、メモリを参照する手段がないわけではない。
【０００７】
ファイルレベルの暗号化と同様に、人的要因から管理者権限を不正に取得されることがある。これらを考慮すれば、プログラムが暗号化に対応したとしても、プログラムやデータを悪意の第３者に解読されることを想定する必要がある。特に、悪意のユーザがシステム管理者の権限を持つ、前述のライセンス管理の回避を行うようなケースでは、メモリの参照は容易に可能である。そのため、これらの悪意のユーザによりメモリを参照されるようなことがあっても、保護すべきプログラムやデータを解読されることが無いようにする手段が求められている。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上記したように、悪意のユーザによりメモリを参照されるようなことがあっても、保護すべきプログラムやデータを解読されることが無いようにする手段が必要となる。悪意のユーザがメモリを参照しても、データを解読することができないようにするためには、メモリ上のデータもまた暗号化すればよい。以下の説明においては、メモリ上のプログラムも一種のデータであり、特別に区別する必要が無い限り、データの一種として扱うことにする。
【０００９】
一般的な、コンピュータシステムでは、プロセッサはキャッシュを持つ。キャッシュ上のデータをアクセスする時間は短く、処理を高速に行うことができる。しかし、キャッシュの量には限界があるので、使う可能性の低いデータからメモリ上に退避させ、必要になった時点で再度キャッシュ上に取り込むといった制御が行われている。ここで、キャッシュ上のデータは処理を行うために、例えば、数値データであれば、定型的な数値表現形式で２進数として、つまり、容易に解読が可能な形式で格納される。メモリはキャッシュの退避領域として利用されため、キャッシュ上のデータと全く同じものを格納するのが一般的である。そのためキャッシュ上のデータをメモリに退避する際に変換処理を加え、データをメモリからキャッシュ上に取り込む際に、元に戻るような逆変換処理を行う。このような変換処理を行うことによって、メモリ上のデータは暗号化されるので、容易には解読できない。
【００１０】
このような変換処理は、データを保護したいと考えるものが容易に考えつく方式である。しかし、変換されるデータとして適当なデータセットを用意すれば、その変換処理の処理規則が原理的に推定でき、データが解読されるという問題がある。また、実装に大きく依存するが、現状の技術ではメモリアクセスの性能低下が見込まれたため、データの保護の価値が認められてこなかった状況では、得られる効果の価値が相対的に小さく、具体的な実施例を見出すことができない。すなわち現状では、有効な暗号化方式がないという問題もある。
【００１１】
本発明の目的は、データの暗号化の変換規則が原理的に推定でき、データが解読されるという問題を解決するメモリシステムの暗号化方式を提供することにある。
【課題を解決するための手段】
【００１２】
上記の課題を解決するため、本願発明の暗号化手段を有するメモリシステムの暗号化方式は、完全に非公開で、外部からは変更することだけが可能な基準キーと、データの所有者が設定する所有者キーと、基準キーと所有者キーから生成される変換キーを有し、該変換キーによってメモリデータを暗号化することを特徴とする。
【００１３】
また本願発明の暗号化手段を有するメモリシステムは、完全に非公開で、外部からは変更することだけが可能な基準キーを保持する基準キー保持手段と、データの所有者が設定する所有者キーを保持する所有者キー保持手段と、基準キーと所有者キーから生成される変換キーを保持する変換キー保持手段と、送信されたデータを変換キーにより暗号化してメモリに送信する暗号化手段と、を有することを特徴とする。
【００１４】
さらに本願発明のメモリシステムの暗号化方法は、完全に非公開で、外部からは変更することだけが可能な基準キーと、データの所有者が設定する所有者キーと、基準キーと所有者キーから生成される変換キーを有し、該変換キーによってメモリデータを暗号化し、その暗号化の回数が定められた回数になると変換キーを更新することを特徴とする。
【発明の効果】
【００１５】
本発明においては、仮に悪意のユーザが管理者権限を持ち、変換を推定するためのデータセットを用意し、変換後のメモリ上のデータを取得することができても、データを解読することを困難ならしめ、データの安全性を高めることができる。
【００１６】
本発明によれば、データの安全性を高めることができるメモリシステムの暗号化方式が得られる。
【発明を実施するための最良の形態】
【００１７】
本発明の実施の形態について、添付した図面を参照しながら、詳細に説明する。
【００１８】
（第１の実施の形態）
本発明の第１の実施形態として、図１を参照して詳細に説明する。図１には本発明のコンピュータシステム構成図を示す。図１において、１はマイクロプロセッサ、２は本特許のメモリアクセス暗号化方式の一実施形態であるメモリアクセス暗号化／復号化手段、３はメモリ、４はリロード用のバイパス、２１は基準キー保持手段、２２は所有者キー保持手段、２６はプロセスＩＤ保持手段、２３は変換キー保持手段、２４は暗号化手段、２５は復号化手段である。本発明においては、メモリアクセス暗号化／復号化手段２、及びメモリ３を総称して、メモリシステムと呼称する。また、以下の説明では暗号化について説明し、復号化については、暗号化とそのデータの流れが逆であるが同様であり理解できることからその詳細説明は省略している。
【００１９】
基準キー保持手段２１は基準キーを、所有者キー保持手段２２は所有者キーを、変換キー保持手段２３は変換キーをそれぞれ保持する。変換キーは基準キーと所有者キーから生成される。例えば、状態遷移マシンなどを採用することによって、同じ基準キーと所有者キーの組み合わせから複数の変換キーを生成し、さらに、生成された複数の変換キーから容易に生成方式を類推できないようにすることも可能である。このようなキーの生成方式は周知の技術として確立されている。暗号化手段２４はメモリに書き込まれるデータを前記変換キーで暗号化する手段である。復号化手段２５はメモリから読み込まれる、前記変換キーで暗号化されたメモリ上に格納されていたデータを復号化する手段である。
【００２０】
マイクロプロセッサ１はプログラムを実行するためにメモリアクセス暗号化／復号化手段２を介してメモリ３に格納されたデータをアクセスする。マイクロプロセッサ１は仮想メモリ機構を採用していて、マイクロプロセッサ１上のアドレス変換手段によって、ページを単位として論理／物理アドレス変換が行われる。論理アドレスはプロセスに指定する拡張部分を持ち、プロセス別に独立した論理アドレス空間を持ことができる。前記プロセスＩＤ保持手段２６は該プロセスを指定する論理アドレスの拡張部分を保持する。
【００２１】
本発明のコンピュータシステムを構成するマイクロプロセッサ１、メモリ３、および仮想メモリ機構の動作は、当業者にとってよく知られており、また本発明とは直接関係しないので、その詳細な構成は省略する。以下本発明に関する動作について説明する。
【００２２】
本実施形態では、メモリ上のデータの暗号化を行うために、以下の３つのキーを持つ。
【００２３】
基準キー  ：完全に非公開、外部からは変更することだけが可能である。  
所有者キー：データの所有者が設定する。  
変換キー  ：基準キーと所有者キーから生成される。この変換キーを使ってデータの暗号            化を行う。
【００２４】
悪意のある第３者がコンピュータの完全な制御を手にいれたとしても、解析できるのは暗号化に直接的に関与する変換キーである。この変換キーは決められた間隔で更新されるようになっている。そのため悪意のある第３者が変換キーを解析するためのデータセットを用意し、変換キーを解析するための変換を行ったとしても、すべての変換が完了する前に変換キーが更新され、変換の規則を求めることはできない。変換キーの更新に関する考え方に支障があり、変換キーを解析されたとしても、決められた間隔で更新されるので、データの解読はほとんど困難である。つまり、解析した変換キーで解読できるデータのほとんどが変換キーを解析するために自分で設定したデータとなり、それ以外に得られるデータ、つまり、解析されるデータは少ない。
【００２５】
第３者が変換キーによる暗号化を解読するためには、変換キーを解析するためのデータセットを用意し、そのデータを変換させ、変換キーを解析する必要がある。このように第３者が変換キーによる暗号化を解読するためには、ある程度の変換回数が必要である。この変換キーによる暗号化を解読するために必要とする回数の変換が行われる回数より少ない回数の間隔を、変換キーを更新する間隔とする。このように変換キーによる暗号化を解読するために必要とする回数の変換が行われる前の決められた間隔で、変換キーを更新することで、悪意のある第３者が変換の規則を求めることを困難にできる。
【００２６】
さらに変換キーの更新に支障があり、連続して変換キーを解析された場合、この悪意のユーザは所有者キーを持つことから、基準キーを求めることが原理的に可能である。基準キーを求められた場合、基準キーと所有者キーがあれば、変換キーの生成が可能であるから、暗号化のシステムが破られることになる。もし、このような事態に陥ったとしても、ユーザごとに基準キーを変更するようにすれば、悪意のあるユーザが別のユーザのデータを解読することはできない。
【００２７】
本実施形態では、プロセッサのメモリアクセスパイプライン上に、ページ内のアドレスの変換とデータの変換を行う暗号化手段を有する。暗号化手段は内部に基準キーを有する。該基準キーはいなかる手段を用いても読み出すことはできない。暗号化手段にプロセスＩＤを指定して、所有者キーを与えると、暗号化手段は規則に基づき、基準キーと所有者キーから変換キーを生成し、該プロセスＩＤをもったプロセスが行ったアクセスに対してのみデータの暗号化を行う。データを読み出す場合には復号化を行う。
【００２８】
悪意の第３者が、不正なメモリの読み出し操作を行っても、プロセス番号が違うので、データの復号化は行われず、データを正しく読み出すことはできない。また、暗号化の設定を行っても、異なる変換キーで暗号化／複合化が行われるので、所有者キーを有するものにしかデータを解読することはできない。所有者キーはデータの所有者のみしか知らないので管理者にもメモリの内容は解読できない。
【００２９】
また、何らかの不正な操作が行われたことを検出した場合、基準キーを更新することによって、メモリ上のデータは瞬時に破壊する、厳密には、解読できないようにすることができ、データをより安全に保護できる。
【００３０】
プロセスＩＤは所有者キーと必ず組として設定されるようになっていて、所有者キーを知らないものが該プロセスＩＤを変更することはできない。また、いかなる手段をもっても、該所有者キーを読み出すことはできない。
【００３１】
プロセスＩＤと所有者キーの書き込みは、プロセスを起動したときに一度だけ行えばよいので、処理の時間は問題とはならない。従って所有者キーを強度の高い暗号化の手段を用いて暗号化しておき、その復号化を暗号化手段内部で行うようにすることができる。つまり、所有者キーをプロセッサ上で扱わないようにして、よりセキュリティを強化することも可能である。
【００３２】
暗号化手段は管理対象のページに対応した数の変換キーを有する。１つのページに対応した変換キーは該ページに所定の回数書き込みが行われると更新される。更新前の変換キーを変換キー１、更新後の変換キーを変換キー２とする。変換キーの更新を行う場合、更新前に強制的にページアウトを発生させ、変換キーを更新後直ちにページインを行う。これによって変換キー１で復号化され、再度、変換キー２で暗号化された状態でメモリ上にデータが格納される。このページアウト・ページインのオーバヘッドが無視できない場合、暗号化手段に専用のリロード用のバイパス４を設けても良い。
【００３３】
本実施形態では、ページアウトの場合、変換キーで複合化し、スワップファイル暗号化復号化手段で別途高い強度の暗号化を行い、暗号化されたデータをＨＤＤへ書き込む。スワップインの場合には、スワップファイル暗号化／複合化手段で概高い強度の暗号の複合化を行い、その時点で与えられる変換キーで暗号化を行いメモリに書き込む。ページアウト／インはＨＤＤへのアクセスが発生するような操作であるから、ある程度の暗号化にともなう遅延が容認できるが、このような暗号化の手段をとらず、以下のような手段をとっても良い。
【００３４】
ページアウトの場合は、ページは暗号化されていない普通のページと同様に扱われ、ページファイルに書き込まれる。すなはち、ページファイル上でもデータは暗号化されている。ページインの場合も、暗号化されていない普通のページと同様に扱いメモリに読み込まれる。ページアウトの状態では、そのページに対するデータの書き込みがないので、ページアウトする前の変換キーが有効である。データは、さらにプロセッサに読み込まれる時点で、該変換キーを用いて元のデータへと復号化される。この場合には、該ページの暗号化に使った変換キーを別途保持する。変換キーを改竄した場合、データは破壊されるので、改竄に対する対策は重要ではない。しかし、変換キーを調べることによって、変換規則を見出すことが可能となるので、変換キー自体を読み出すことができないように別途暗号化する。
【００３５】
本実施形態によれば、基準キーと、所有者キーと、基準キーと所有者キーから生成される変換キーを有し、該変換キーによってデータの暗号化／復号化を行う。さらに悪意の第３者が変換キーによる暗号化を解読するために必要とする回数の前に、変換キーを更新する。このようにして、データを解読することを困難ならしめ、データの安全性が高いメモリシステムの暗号化方式が得られる。
【００３６】
（第２の実施の形態）
本発明の第２の実施形態を、以下詳細に説明する。本実施形態は、ＥＣＵ（エンジンコントロールユニット）への適用例である。図１におけるメモリ３には、例えばフラッシュメモリ等のＲＯＭを含み、マイクロプロセッサ１にはエンジンコントローラとしての機能を備えている。しかしこれらの構成は特に限定されるものではなく、種々の構成とすることができる。
【００３７】
このＥＣＵのようなシステムでは、データの格納されたＲＯＭへのアクセスが可能で、ＲＯＭ上に格納されたデータの解析によって、制御パラメータを特定し、例えば、エンジンの出力を変更するといった、不正な改造が原理的には可能である。
【００３８】
本実施形態例では、エンジン起動時に、暗号化され格納された元データを展開し、フラッシュメモリに格納する。走行時にはフラッシュメモリに格納されたデータを使ってプログラムよりエンジンに関わる各種制御を行う。走行後、何らかの方法によって、フラッシュメモリに格納されたデータを採取しても変換されたデータなので解読が困難である。また、エンジンを起動する度に暗号化キーが変更されるため、同じ場所のデータが常に変わりデータの解析は困難である。
【００３９】
さらに、重要な点は、万が一パラメータの解析を行うことができ、動作を変えるためにフラッシュメモリ上のデータを変更された場合にはデータが改変されたことを容易に検出することができる。つまり、データが変更され、設定しようとする値は以前使用したことのある暗号化キーによって生成されたものなので、これから使用される新しい暗号化キーでは正常に複合化できず、データが改変されたことを容易に検出できることになる。
【００４０】
本実施形態では、フラッシュメモリ上のデータの更新をエンジン起動時に行うこととした。しかし、例えば、データの改変を目的として、エンジンが停止したことを検出させないようにシステムを改変されることも想定される。このような改変を想定し、データを格納するフラッシュメモリを２つ用意することもできる。一方を使用してエンジンを制御しながら、所定時間毎に、もう一方のフラッシュメモリ上に新しくデータを展開する。展開後制御に用いるフラッシュメモリを切り替えるといった制御を行うことも可能である。このような制御を行うことによって、改造の効果を一定時間以上維持することができないようにすることができる。更新の間隔を短く設定すれば、ほぼリアルタイムで暗号を解析する必要があって、改変を事実上不可能とすることができる。
【００４１】
本実施形態においても、データを解読することを困難ならしめ、データの安全性が高いメモリシステムの暗号化方式が得られる。
【００４２】
本発明によれば、完全に非公開で、外部からは変更することだけが可能な基準キーと、データの所有者が設定する所有者キーと、基準キーと所有者キーから生成される変換キーを有し、該変換キーによってメモリデータを暗号化することを特徴とするメモリシステムの暗号化方式が得られる。
【００４３】
この変換キーは、第３者による暗号化を解読するために必要とする回数の変換が行われる前に更新することができ、さらに変換キーは、決められた間隔で更新することもできる。このように、規則的な変換を推定するために必要な変換を行う前に、変換の規則を変える。定められた間隔で、変換の規則を変ることにより、仮に悪意のユーザが管理者権限を持ち、変換後のメモリ上のデータを取得することができても、データを解読することを困難ならしめ、データの安全性を高めるができる。
【００４４】
また、変換キーは管理対象のページ単位に、基準キーはデータの所有者毎に、設定することができる。さらに所有者キーはプロセスを起動したときに、プロセスＩＤと組として設定され、その所有者キーは暗号化することもできる。さらにメモリデータは、ＲＯＭに記憶されるデータであってもよい。そのＲＯＭを２つ備え、一方のＲＯＭをアクセス可能なメモリとし、他方のＲＯＭに新しくデータを展開させ、データ展開後に２つのＲＯＭを切り替えてアクセスすることもできる。
【００４５】
さらに本発明によれば、完全に非公開で、外部からは変更することだけが可能な基準キーを保持する基準キー保持手段と、データの所有者が設定する所有者キーを保持する所有者キー保持手段と、前記基準キーと前記所有者キーから生成される変換キーを保持する変換キー保持手段と、送信されたデータを前記変換キーにより暗号化してメモリに送信する暗号化手段と、を有するメモリシステムが得られる。このメモリシステムでは、変換キー手段が第３者による暗号化を解読するために必要とする回数の変換が行われる前に、前記変換キーを更新することができる。
【００４６】
また本発明によれば、完全に非公開で、外部からは変更することだけが可能な基準キーと、データの所有者が設定する所有者キーと、前記基準キーと前記所有者キーから生成される変換キーを有し、該変換キーによってメモリデータを暗号化し、その暗号化の回数が定められた回数になると前記変換キーを更新することを特徴とするメモリシステムの暗号化方法が得られる。
【００４７】
上記したように実施形態を参照して本願発明を説明したが、本願発明は上記の実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【図面の簡単な説明】
【００４８】
【図１】本発明に係るコンピュータシステム構成図である。
【符号の説明】
【００４９】
１    マイクロプロセッサ
２    メモリアクセス暗号化／復号化手段
３    メモリ
４    リロード用のバイパス
２１    基準キー保持手段
２２    所有者キー保持手段
２３    変換キー保持手段
２４    暗号化手段
２５    復号化手段
２６    プロセスＩＤ保持手段
【図１】
2009253490.tif 000003