JP6955619B2 - セキュリティ・モジュールを備えた、コンピュータ・システム・ソフトウェア/ファームウェアおよび処理装置 - Google Patents

セキュリティ・モジュールを備えた、コンピュータ・システム・ソフトウェア/ファームウェアおよび処理装置 Download PDF

Info

Publication number
JP6955619B2
JP6955619B2 JP2020502203A JP2020502203A JP6955619B2 JP 6955619 B2 JP6955619 B2 JP 6955619B2 JP 2020502203 A JP2020502203 A JP 2020502203A JP 2020502203 A JP2020502203 A JP 2020502203A JP 6955619 B2 JP6955619 B2 JP 6955619B2
Authority
JP
Japan
Prior art keywords
security module
data
processor
cache
memory
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.)
Active
Application number
JP2020502203A
Other languages
English (en)
Other versions
JP2020528608A5 (ja
JP2020528608A (ja
Inventor
ヌネツメンシャス、エンジェル
ラング、ジャコブ、クリストファー
レクテンワルド、マーティン
メイヤー、ウルリッチ
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2020528608A publication Critical patent/JP2020528608A/ja
Publication of JP2020528608A5 publication Critical patent/JP2020528608A5/ja
Application granted granted Critical
Publication of JP6955619B2 publication Critical patent/JP6955619B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Description

本発明は、暗号化関連オペレーション(例えば、対象データの暗号化、対象データの解読、鍵管理)を行うために用いるセキュリティ・モジュール(SM:security module)に関する。
ハードウェア・セキュリティ・モジュール(HSM:hardware security module)は、厳密認証のためのデジタル鍵を保護、管理し、暗号化処理を提供する物理的コンピューティング・デバイスである。これらのモジュールは、従来から、コンピュータまたはネットワーク・サーバに直接装着するプラグイン・カードまたは外部デバイスの形で出回っている。HSMは、ロギングおよび警告など、改ざんの証拠を提供し、改ざんの検出に応じて鍵を削除するなど、改ざんへの抵抗を提供するための制御を処理することができる。各モジュールは、改ざんおよびバス利用カード探索を防止するための1つ以上の安全な暗号化プロセッサ・チップを包含する。
多くのHSMシステムは、コンピュータのオペレーティング・システムを介して包蔵された形態で、もしくは、外部のスマート・カードまたは何らかの他のセキュリティ・トークンを使って、それらシステムが扱う鍵を安全にバックアップするための手段を有する。多くの場合、HSMは、公開鍵インフラストラクチャ、またはオンライン・バンキング用途など、ミッションクリティカルなインフラストラクチャの一部であるため、HSMは、通常、高可用性のためにクラスタ化することが可能である。一部のHSMは、データ・センタ環境の高可用性要求に適応し、事業の継続を可能にするため、二重の電源、および冷却ファンなど現場交換が可能な部品を備えている。
HSMの安全な囲い内で、特別に開発されたモジュールを実行する能力を持つHSMはほとんどない。かかる能力は、例えば、特別なアルゴリズムまたはビジネス・ロジックを安全な制御された環境で実行しなければならない場合には有用である。このようなモジュールは、元来のC言語、NET、Java(R)、または他のプログラミング言語で開発することが可能である。これらの実行エンジンは、用途特化コードの安全確保の利益を提供しながらHSMの連邦情報処理規格(FIPS:Federal Information Processing Standard)またはコモン・クライテリア検証にも適合する。
ハードウェア・セキュリティ・モジュールは、デジタル鍵を使用する任意のアプリケーションにおいて用いることができる。通常、これらの鍵は高価値であるに違いない、すなわち、鍵が情報漏洩された場合、その持ち主には大きな悪影響があろう。HSMの機能は、(i)オンボードでの安全な暗号鍵の生成、(ii)オンボードでの安全な暗号鍵の保管および管理、(iii)暗号資料の使用、および(iv)極秘データ資料の使用、および(v)アプリケーション・サーバに完全な非対称暗号および対称暗号オフロードすること、である。また、HSMは、データベースに対する透過データ暗号鍵を管理するように展開される。HSMは、暗号鍵を含め、これらの資料を、許可されていない使用および潜在的攻撃者からの論理的および物理的双方の保護を提供する。ほとんどのHSMによって取り扱われる暗号化資料は、公開鍵暗号で使用される非対称鍵の対(および証明)である。また、一部のHSMは、対称鍵および他の任意のデータを取り扱うこともできる。
物理的HSMは生産コストが極めて高価である。さらに、HSMは、仮想マシン(またはドメインの定量の少なくとも1つ)に専用である。しかして、メインフレーム・コンピュータ中に多くの仮想マシンがあると、全ての仮想マシンをカバーするために十分な物理的HSMがないことがあるが、プライバシー/セキュリティ要件はなお適用される。現在通常的に用いられているHSMでは、暗号化処理のために暗号化メモリ・メカニズムを使うことが可能である。HSMの使用の他にも、通常、金融取引および個人識別などの電子処理に対して使われる、或る種の市販の暗号化アクセラレータまたは内蔵マイクロプロセッサを備えたプラスチック・カードも用いることができる。中央処理装置支援暗号化機能(CPACF:Central Processor Assist for Cryptographic Function)またはネットワークHSMとして知られるメカニズムのような、或る種の市販の情報セキュリティ・ソリューションもこれらの目的のために使用が可能である。
さらに、仮想化アプリケーション環境の外側で秘密データを格納し操作するためのソフトウェア・スイートである、いわゆる仮想HSM(VHSM:Virtual HSM)も使用できる。HSMはコンピュータに接続された物理的デバイスであるが、このソフトウェアは、リナックス・ベースのOpenVZ(R)コンテナ技術に基づいて、仮想環境中で、アプリケーション・プログラミング・インターフェース(API:application programming interface)を介してHSMの機能を提供する。
この仮想HSMのアーキテクチャは、以下の主要コンポーネントから成る。(i)VHSM仮想環境(VHSM VE:VHSM virtual environment)は、VHSMサーバおよび安全ストレージを包含する隔離環境である。このサーバは秘密データのオペレーションを実行し、ストレージは暗号化ユーザ・データを保管する。さらに、伝送によってクライアントとサーバ仮想環境との間でデータ交換する伝送層は、(i)リナックス・ベースのNetlink(R)ソケット技術、および(ii)クライアント環境からVHSMサーバにアクセスするためのクライアントAPIおよび付随するユーティリティを備えたクライアント仮想環境に基づいている。
さらに、当該技術分野において、エンクレーブと呼ばれるメモリの秘密領域を割り当てるためのユーザ・レベルでのコード化を可能にする、市販のCPU(central processing unit(中央処理装置))コード命令のセットがある。通常のプロセス・メモリと違って、「エンクレーブ」は、より高位の特権レベルで実行されているプロセスに対しても保護されている。
前の段落で述べたCPU中のCPU命令に対するサポートは、CPUIDコマンド「Structured Extended Feature Leaf(構造化拡張フィーチャ・リーフ)」、EBX bit02中に示されているが、アプリケーションへのその利用には、CPUID bitには反映されていない、BIOS(Basic Input/Output System(基本入力/出力システム))のサポートとオプトインの有効化とが必要である。前の段落で述べたCPU命令は、特別な信頼できるメモリ、換言すればプロセッサ留保のメモリに基づいている。さらなるコードは平文でマシンに送信される。
セキュリティ・モジュールを備えたコンピュータ・システム・ソフトウェアが提案され、本セキュリティ・モジュールは、秘密データのための守秘記憶機構、およびセキュリティ・モジュールと相互作用するためのオペレーティング・システム用のインターフェースを有し、格納されたセキュリティ・モジュールはコンピュータ・システムのメモリ中の公開鍵で暗号化され、このコンピュータ・システムは、少なくとも1つのプロセッサ・キャッシュを備えた少なくとも1つのプロセッサを含み、該インターフェースへのアクセスに応答して、本ソフトウェアは、(i)コンピュータ・システムのプロセッサを安全モードに切り替えるステップと、(ii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にするステップと、(iii)プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読するステップと、(iv)セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定するステップと、(v)インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行するステップと、(vi)プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化するステップと、(vii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするステップと、(viii)プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、を実行する。
有利には、セキュリティ・モジュールを備えた本発明のソフトウェアは、ソフトウェア、ファームウェア、もしくはハードウェアまたはこれらの組み合せにおいて、仮想ハードウェア・セキュリティ・モジュールをエミュレートすることが可能である。しかして、エミュレートされたセキュリティ・モジュールは、改ざんができず、システム管理者を信頼する必要がない。顧客は、自分自身の仮想セキュリティ・モジュールをプログラムし、そのセキュリティ・モジュールに自分自身の秘密事項または証明を組み入れ、エミュレートされたセキュリティ・モジュールでそれらを遠隔のシステムに展開することが可能である。ソフトウェア/ハードウェアは、セキュリティ・モジュールのコンテンツを暗号化すること、および読み取りアクセス処理を制限することによって、本仮想セキュリティ・モジュールのメモリもしくはインターフェースまたはその両方を保護する。解読されたセキュリティ・モジュールは、内部の情報を含め、決して処理装置チップから離去することはない。セキュリティ・モジュールのインターフェースは、オペレーティング・システムが管理することを可能にし、特に、オペレーティング・システムが、暗号化された状態においてだけ守秘記憶機構のコンテンツを読み出すことを可能にする。プロセッサ・キャッシュからメモリへの書込みプログラム・コードは、とりわけ自己書き換えコードに関連させてもよい。
或る実施形態によれば、非セキュア・フラグをタグされたデータに対しては、メモリへの書込みオペレーションを無効にすることができる。非セキュア・フラグの使用は、プロセッサ・チップから離去することが許されるデータと許されないデータとを区別することを有利に可能にする。
或る実施形態によれば、プロセッサ・キャッシュは、少なくとも第一レベル・キャッシュおよび第二レベル・キャッシュを含んでよい。異なるレベルのキャッシュを備えたプロセッサは、特定のプログラムまたはデータへのアクセスを無効にするために、異なる属性を有するプログラムまたはデータの可用性を制御することを有利に可能にする。
或る実施形態によれば、本セキュリティ・モジュールに対するインターフェースは、暗号化アーキテクチャを用いて、アプリケーション・プログラミング・インターフェースとして実装することができる。このようにして、顧客は、自分の秘密データに対する高い安全性が保証された自分自身のセキュリティ・モジュールをプログラムすることが可能である。
或る実施形態によれば、プロセッサへの割込み要求の間、本セキュリティ・モジュールの実行を一次停止することが可能で、割込み処理プログラムに制御を渡す前に、セキュリティ・モジュールを暗号化することができる。しかして、有利には、セキュリティ・モジュールの解読された秘密データへのアクセスを阻止することが可能である。
或る実施形態によれば、本セキュリティ・モジュールは、割込み要求の終了後に再開することができる。このようにして、割込み要求による中断の後にあっても、セキュリティ・モジュールの信頼可能な作動が達成可能である。
或る実施形態によれば、本セキュリティ・モジュールは、セキュリティ・モジュールの管理された休止の後で再開することができる。このようにして、割込み要求による中断の後であっても、セキュリティ・モジュールの信頼可能な作動が達成可能である。
或る実施形態によれば、複数のプログラムの間で共用されているセキュリティ・モジュールは、セキュリティ・モジュールによって使われているメモリの領域へのアクセスをシリアライズするために、セマフォ・メカニズムを用いてよい。しかして、相異なるプログラムによる同じメモリ領域もしくはデータまたはその両方の使用は、1つのプログラムのデータの別のプログラムによる破壊のリスクなしに、同期化された仕方で達成することができる。
或る実施形態によれば、プロセッサ上のマルチスレッディング処理における或るスレッドの実行において、セキュリティ・モジュールの実行の間は、マルチスレッディングは無効にすることが可能である。このようにして、プロセッサがスレッドの間でキャッシュを共用している場合にあっても、経時消失によるセキュリティ・モジュールのキャッシュ・ラインの喪失、もしくは他のスレッドによる解読データへのアクセスの問題またはその両方を回避することができる。
或る実施形態によれば、或るキャッシュ・ラインが他のスレッドにアクセスするのを妨止するため、もしくは、キャッシュ・ラインが他のスレッドによって消去されまたは経時消失するのを阻止するため、またはその両方のために、キャッシュ・ラインに非セキュア・フラグをタグすることが可能である。これにより、スレッドの間でキャッシュを共用しているプロセッサにおいて、有効化されたマルチスレッディングにあっても、無許可スレッドによるキャッシュへのアクセスを回避することができる。
或る実施形態によれば、プロセッサ上でマルチスレッディング処理中の或るスレッドの実行において、スレッドの間で共用されているキャッシュは、セキュリティ・モジュールの実行の間は無効化することが可能で、キャッシュ・ラインは、マルチスレッディングを再開する前に消去することができる。このようにして、経時消失によるセキュリティ・モジュールのキャッシュ・ラインの喪失、もしくは他のスレッドによる解読データへのアクセスまたはその両方の問題を回避することができる。
さらに、前述のソフトウェアが実装された、コンピュータ・システムのファームウェアが提案される。エミュレートされたセキュリティ・モジュールを備えたソフトウェアの実装は、コンピュータ・システムのセキュリティ・レベルを有利な仕方でさらに増大することができる。
さらに、セキュリティ・モジュールをソフトウェア中に実装するための、少なくとも1つのプロセッサ・キャッシュを含む少なくとも1つのプロセッサを備えた処理装置が提案され、本処理装置は、少なくとも1つの別のキャッシュ、秘密データのための守秘記憶機構、およびセキュリティ・モジュールと相互作用するためのオペレーティング・システム用のインターフェースを有し、格納されたセキュリティ・モジュールはコンピュータ・システムのメモリ中の公開鍵で暗号化され、該プロセッサは、該インターフェースへのアクセスに応答して、(i)安全モードに切り替わっていれば、プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にし、(ii)プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読し、(iii)セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定し、(iv)インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行し、(v)プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化し、(vi)通常のオペレーティング・システム・モードに切り替わっていれば、プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするように、構成される。
有利には、セキュリティ・モジュールをソフトウェア中に実装する本発明の処理装置は、ソフトウェア、ファームウェアもしくはハードウェア中、またはこれらの組み合せの中で、ハードウェア・セキュリティ・モジュールをエミュレートすることを可能にする。しかして、かかるエミュレートされたセキュリティ・モジュールは改ざんすることができないので、システム管理者を信頼する必要がない。顧客は、自分自身の仮想セキュリティ・モジュールをプログラムし、そのセキュリティ・モジュールに自分自身の秘密事項または証明を組み入れ、エミュレートされたセキュリティ・モジュールでそれらを遠隔のシステムに展開することが可能である。ソフトウェア/ハードウェアは、セキュリティ・モジュールのコンテンツを暗号化すること、および読み取りアクセス処理を制限することによって、本仮想セキュリティ・モジュールのメモリもしくはインターフェースまたはその両方を保護する。解読されたセキュリティ・モジュールは、内部の情報を含め、決して処理装置チップから離去することはない。セキュリティ・モジュールのインターフェースは、オペレーティング・システムが、暗号化された状態においてだけ、守秘記憶機構のコンテンツを管理し読み出すことを可能にする。
或る実施形態によれば、メモリへの書込みオペレーションは、非セキュア・フラグをタグされたデータに対しては無効にすることができる。非セキュア・フラグの使用は、プロセッサ・チップから離去することが許されるデータと許されないデータとを区別することを有利に可能にする。
或る実施形態によれば、プロセッサは、少なくとも第一レベル・キャッシュおよび第二レベル・キャッシュを含んでよく、さらに、該プロセッサは少なくとも第三レベル・キャッシュも含んでよく、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方は、第一もしくは第二キャッシュ・レベルまたはその両方、および第三キャッシュ・レベル中で使用されるときは解読されていてよい。異なるレベルのキャッシュを備えたプロセッサは、特定のプログラムまたはデータへのアクセスを無効にするために、異なる属性を有するプログラムまたはデータの可用性を制御することを有利に可能にする。
或る実施形態によれば、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方は、処理装置から離去するときは暗号化することができる。このようにして、セキュリティ・モジュール中に符号化された顧客データ、および、セキュリティ・モジュールを用い、インターフェースを介して顧客のプログラムによりアクセスされるデータに対する高度な守秘性が保証可能となる。
或る実施形態によれば、メモリ上で対比検証処理を行う上で、セマフォ・メカニズムを用いて、諸プロセスの間で共用されているメモリの領域へのアクセスをシリアライズすることができる。しかして、有利には、セキュリティ・モジュールを共用している複数のプロセスが、相互の間で、セキュリティ・モジュールのキャッシュ・ラインを使用しようとしている場合に、メモリの一貫性を維持することが可能である。
或る実施形態によれば、トランザクショナル・メモリの実行において、諸プロセスの間で共用されているメモリの領域へのアクセスをシリアライズするためにセマフォ・メカニズムを用いてよい。しかして、有利には、セキュリティ・モジュールを共用している複数のプロセスが、相互の間で、セキュリティ・モジュールのキャッシュ・ラインを使用しようとしている場合に、メモリの一貫性を維持することが可能である。
或る実施形態によれば、プロセッサへの割込み要求の間は、本セキュリティ・モジュールの実行は一次停止することが可能で、割込み処理プログラムに制御を渡す前に、セキュリティ・モジュールを暗号化しておくことができる。有利には、こうして、セキュリティ・モジュールの解読された秘密データへのアクセスを防止することが可能である。
或る実施形態によれば、本セキュリティ・モジュールは、割込み要求の終了後に再開することができる。このようにして、割込み要求による中断の後にあっても、セキュリティ・モジュールの信頼可能な作動が達成可能である。
或る実施形態によれば、本セキュリティ・モジュールは、セキュリティ・モジュールの管理された休止の後で再開することができる。このようにして、割込み要求による中断の後にあっても、セキュリティ・モジュールの信頼可能な作動が達成可能である。
或る実施形態によれば、プロセッサ上でマルチスレッディング中の或るスレッドの実行において、セキュリティ・モジュールの実行の間は、マルチスレッディングは無効にすることができる。このようにして、プロセッサがスレッドの間でキャッシュを共用している場合でも、経時消失によるセキュリティ・モジュールのキャッシュ・ラインの喪失、もしくは他のスレッドによる解読データへのアクセスの問題またはその両方を回避することができる。
或る実施形態によれば、或るキャッシュ・ラインが他のスレッドにアクセスするのを妨止するため、もしくは、キャッシュ・ラインが他のスレッドによって消去されまたは経時消失するのを阻止するため、またはその両方のために、キャッシュ・ラインに非セキュア・フラグをタグすることが可能である。しかして、無許可スレッドによるキャッシュへのアクセスを回避することができる。
或る実施形態によれば、プロセッサ上でマルチスレッディング中のスレッドの実行において、スレッドの間で共用されているキャッシュは、セキュリティ・モジュールの実行の間は無効化することが可能で、キャッシュ・ラインは、マルチスレッディング再開する前に消去することができる。このようにして、経時消失によるセキュリティ・モジュールのキャッシュ・ラインも喪失、もしくは他のスレッドによる解読データへのアクセスまたはその両方の問題は回避することができる。
セキュリティ・モジュールが作動している間にマルチスレッディングが可能にされると、別のスレッドがキャッシュ・ラインをロードし、これにより、現在、非セキュアとタグされているキャッシュ・ラインを置き換えるかもしれない。かかる状況は、対比検証と同様に取り扱うことができ、もしくは、NS−フラグをセットされているキャッシュ・ラインは、他のスレッドで置き換えられることから保護され、しかして経時消失から保護されることが可能であろう。
さらにまた、セキュリティ・モジュールをコンピュータ・システム・ソフトウェア中に実装するための有利な方法が提案され、本セキュリティ・モジュールは、秘密データのための守秘記憶機構、およびセキュリティ・モジュールと相互作用するためのオペレーティング・システム用のインターフェースを有し、格納されたセキュリティ・モジュールはコンピュータ・システムのメモリ中の公開鍵で暗号化され、このコンピュータ・システムは、少なくとも1つのプロセッサ・キャッシュを備えた少なくとも1つのプロセッサを含み、本方法は、該インターフェースへのアクセスに応答して、(i)コンピュータ・システムのプロセッサを安全モードに切り替えるステップと、(ii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にするステップと、(iii)プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読するステップと、(iv)セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定するステップと、(v)インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行するステップと、(vi)プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化するステップと、(vii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするステップと、(viii)プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、のソフトウェア・オペレーションを含む。
有利には、セキュリティ・モジュールを備えた本発明のソフトウェアは、ソフトウェア、ファームウェアもしくはハードウェアの中、またはこれらの組み合せの中で、ハードウェア・セキュリティ・モジュールをエミュレートすることを可能にする。しかして、エミュレートされたセキュリティ・モジュールは改ざんすることができないので、システム管理者を信頼する必要がない。顧客は、自分自身の仮想セキュリティ・モジュールをプログラムし、そのセキュリティ・モジュールに自分自身の秘密事項または証明を取り込み、エミュレートされたセキュリティ・モジュールでそれらを遠隔のシステムに展開することが可能である。ソフトウェア/ハードウェアは、セキュリティ・モジュールのコンテンツを暗号化すること、および読み取りアクセス処理を制限することによって、本仮想セキュリティ・モジュールのメモリもしくはインターフェースまたはその両方を保護する。解読されたセキュリティ・モジュールは、内部の情報を含め、決して処理装置チップから離去することはない。セキュリティ・モジュールのインターフェースは、オペレーティング・システムが管理することを可能にし、特に、オペレーティング・システムが、暗号化された状態においてだけ守秘記憶機構のコンテンツを読み出すことを可能にする。
或る実施形態によれば、メモリへの書込みオペレーションは、非セキュア・フラグをタグされたデータに対しては無効にすることができる。非セキュア・フラグの使用は、プロセッサ・チップから離去することが許されるデータと許されないデータとを区別することを有利に可能にする。
さらにまた、セキュリティ・モジュールをコンピュータ・システム・ソフトウェア中に実装するための有利なコンピュータ・プログラム製品が提案され、本セキュリティ・モジュールは、秘密データのための守秘記憶機構、およびセキュリティ・モジュールと相互作用するためのオペレーティング・システム用のインターフェースを有し、格納されたセキュリティ・モジュールはコンピュータ・システムのメモリ中の公開鍵で暗号化され、このコンピュータ・システムは、少なくとも1つのプロセッサ・キャッシュを備えた少なくとも1つのプロセッサを含み、本コンピュータ・プログラム製品は、具現化されたプログラム命令を有するコンピュータ可読ストレージ媒体を含み、コンピュータによって実行可能なこのプログラム命令は、該インターフェースへのアクセスに応答して、コンピュータに、(i)コンピュータ・システムのプロセッサを安全モードに切り替えるステップと、(ii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にするステップと、(iii)プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読するステップと、(iv)セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定するステップと、(v)インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行するステップと、(vi)プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化するステップと、(vii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするステップと、(viii)プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、のソフトウェア・オペレーションを含む方法を実行させる。
或る実施形態によれば、メモリへの書込みオペレーションは、非セキュア・フラグをタグされたデータに対しては無効にすることができる。非セキュア・フラグの使用は、プロセッサ・チップから離去することが許されるデータと許されないデータとを区別することを有利に可能にする。
さらになお、データ処理プログラムの実行のため、少なくとも1つのプロセッサを備えた少なくとも1つの処理装置を備える有利なデータ処理システムが提案され、該プログラムは、コンピュータ・システム・ソフトウェア中にセキュリティ・モジュールを実装するためのコンピュータ可読プログラム命令を含み、本セキュリティ・モジュールは、秘密データのための守秘記憶機構、およびセキュリティ・モジュールと相互作用するためのオペレーティング・システム用のインターフェースを有し、格納されたセキュリティ・モジュールはコンピュータ・システムのメモリ中の公開鍵で暗号化され、該インターフェースへのアクセスに応答して、このソフトウェアは、(i)コンピュータ・システムのプロセッサを安全モードに切り替えるステップと、(ii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にするステップと、(iii)プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読するステップと、(iv)セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定するステップと、(v)インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行するステップと、(vi)プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化するステップと、(vii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするステップと、(viii)プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、を実行する。
或る実施形態によれば、非セキュア・フラグをタグされたデータに対しては、メモリへの書込みオペレーションを無効にすることができる。非セキュア・フラグの使用は、プロセッサ・チップから離去することが許されるデータと許されないデータとを区別することを有利に可能にする。
或る実施形態によれば、揮発性メモリの中に、秘密データのための守秘記憶機構とオペレーティング・システムと相互作用するためのインターフェースとを設けるためのプログラム命令を含む、セキュリティ・モジュールとともに使用するための方法、コンピュータ・プログラム製品、もしくはシステムまたはこれらの組み合せがあり、該オペレーティング・システムは、(i)プロセッサのプロセッサ・キャッシュ中に、秘密鍵によって解読可能な暗号化形態のセキュリティ・モジュールを構成するデータを格納するステップと、(ii)コンピュータ・システムのプロセッサを安全モードに切り替えるステップと、(iii)安全モードへの切り替えに応じて、書込みオペレーションを無効にするステップであって、この書込みオペレーションは、セキュリティ・モジュールを構成するデータをプロセッサ・キャッシュから揮発性メモリに書込むオペレーションである、該無効にするステップと、(iv)プロセッサ・キャッシュ中で、セキュリティ・モジュールを構成するデータを秘密鍵を使って解読するステップと、(v)守秘記憶機構の外側の揮発性メモリの部分へのアクセスを阻止するため、動的アドレス変換を設定するステップと、(vi)セキュリティ・モジュールのインターフェースを介してデータを受信するステップと、(vii)プロセッサ・キャッシュ中で、セキュリティ・モジュールのインターフェースを介して受信されたデータを、セキュリティ・モジュールによって公開鍵を使って暗号化するステップと、(viii)書込みオペレーションを有効にするステップと、(ix)プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、のオペレーションを実行する(必ずしも上記の順序ではない)。
前述および他の目的と利点と併せ本発明は、以下の諸実施形態の詳細な説明から最善に理解できようが、但し、これらの実施形態に限定はされない。
本発明の或る実施形態による、コンピュータ・システム・ソフトウェア上へのセキュリティ・モジュールの実装のブロック図を表す。 本発明の或る実施形態による、セキュリティ・モジュールを備えたコンピュータ・システムのキャッシュおよびメモリの階層を表す。 本発明の或る実施形態による、2つのプログラムが、セマフォ・ロッキング・メカニズムによりアクセスを制限されながら、共用のセキュリティ・モジュールを使用するためのフロー図を表す。 本発明の或る実施形態による、コンピュータ・システム・ソフトウェア上に実装されたセキュリティ・モジュールを使用するためのフローチャートを表す。 本発明による方法を実行するためのデータ処理システムの或る例示の実施形態を表す。
これら図面において、同じエレメントは同等な参照符号で参照される。これら図面は、単なる概略的表現であり、本発明の具体的パラメータを反映することは意図されていない。さらに、これら図面は、本発明の典型的な実施形態だけを表しており、したがって、本発明の範囲を限定していると見なすべきではない。
背景技術のセクションで前述したように、エンクレーブと呼ばれるメモリの秘密領域を割り当てるためのユーザ・レベルでのコード化を可能にする、市販のCPU(中央処理装置)コード命令のセットがある。本発明のいくつかの実施形態は、これを(i)(CPUIDを使用するので)アプリケーションの特徴検出のため複雑さがます、もしくは(ii)(情報が平文で送信されるので)セキュリティ問題が生じる、またはその両方の可能性があると認識することができる。
本例示的な諸実施形態は、(i)セキュリティ・モジュールを備え、本セキュリティ・モジュールは、秘密データのための守秘記憶機構、およびセキュリティ・モジュールと相互作用するためのオペレーティング・システム用のインターフェースを有し、(ii)格納されたセキュリティ・モジュールはコンピュータ・システムのメモリ中で公開鍵を使って暗号化され、(iii)該コンピュータ・システムは、少なくとも1つのプロセッサ・キャッシュを備えた少なくとも1つのプロセッサを含む、コンピュータ・システム・ソフトウェア、を提供する。
本明細書において、これら例示的な諸実施形態は、場合によっては、説明の明瞭化のためだけの例として、具体的な技術を用いて説明される。これら例示的な諸実施形態は、インターフェースへのアクセスのために用いられることができ、ソフトウェアは、(i)コンピュータ・システムのプロセッサを安全モードに切り替えるステップと、(ii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にするステップと、(iii)プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読するステップと、(iv)セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定するステップと、(v)インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行するステップと、(vi)プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化するステップと、(vii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするステップと、(viii)プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、を実行すると。
図1は、本発明の或る実施形態による、コンピュータ・システム・ソフトウェア上への、仮想ハードウェア・セキュリティ・モジュール(vHSM:virtual hardware security module)として示された、セキュリティ・モジュール12の実装のブロック図を表す。また、セキュリティ・モジュール12を実装するためのソフトウェアも、コンピュータ・システム212のファームウェア10中に実装することが可能である。
図1のコンピュータ・システム212は、少なくとも1つのプロセッサ・キャッシュ20を備えた少なくとも1つのプロセッサ16を含み、プロセッサ16は、インターフェース40を使ってファームウェア/ハードウェア(FW/HW:firmware/hardware)環境10中で動作している。セキュリティ・モジュール12へのインターフェース40は、暗号化アーキテクチャを用いるアプリケーション・プログラミング・インターフェースとして実装される。プロセッサ・キャッシュ20は、例えば図2に示されるように、少なくとも第一レベル・キャッシュ22、24および第二レベル・キャッシュ26、28を含んでよい。コンピュータ・システム212は、メモリ18をさらに含み、オペレーティング・システムOS(operating system)によって作動される、プログラム14の実行が可能である。
セキュリティ・モジュール12は、秘密データのための守秘記憶機構を有し、顧客は、保護されたビルド環境48でソフトウェア開発キット(SDK:software development kit)50を使って該モジュールを生成することができる。セキュリティ・モジュール12は、プログラム14の要求によって、コンピュータ・システム212のメモリ18中の公開鍵42を使って暗号化されて格納される。公開鍵42は証明の公開部分であり、顧客が利用可能である。セキュリティ・モジュール12は、この公開鍵42によって暗号化され、コンピュータ・システム212に送信される。セキュリティ・モジュール12のプログラム・コードは、暗号化アーキテクチャによって記述されたインターフェース40を実装する。インターフェース40は、オペレーティング・システムが、セキュリティ・モジュール12の守秘記憶機構のコンテンツを暗号化された状態で管理し読み出すために、セキュリティ・モジュール12と相互作用するための機能を果たす。
プログラム14による、インターフェース40、セキュリティ・モジュール12のアドレスの参照、およびメモリ18の入力/出力領域へのメモリ・ポインタへのアクセスが、インターフェース40に送られる。ソフトウェアによって、コンピュータ・システム212のプロセッサ16が安全モードに切り替えられる。セキュリティ・モジュール12のプログラム・コードによって、非セキュア・フラグをタグされたデータに対して、プロセッサ・キャッシュ20からメモリ18へのデータの書込みオペレーションが無効にされる。セキュリティ・モジュール12のプログラム・コードもしくはデータまたはその両方は、プロセッサ・キャッシュ20の中で秘密鍵44を使って解読される。セキュリティ・モジュール12によって使われている領域の外側のメモリ18へのアクセスを阻止するために動的アドレス変換が設定されるが、但し、セキュリティ・モジュール12の入力/出力領域へのアクセスはなお許され、そのメモリ・ポインタは前もって送られている。ソフトウェアは、送られてきたパラメータを使ってセキュリティ・モジュール12の実行をトリガする。インターフェース40上に提供されたデータに対してセキュリティ・モジュール12のプログラム・コードが実行される。その後、セキュリティ・モジュール12のプログラム・コードによって、セキュリティ・モジュール・モードを終了するための命令が実行される。当該データは、プロセッサ・キャッシュ20中で、ソフトウェアによって公開鍵42を使って暗号化される。セキュリティ・モジュール12のプログラム・コードに対する、プロセッサ・キャッシュ20からメモリ18へのデータの書込みオペレーションが、ソフトウェアによって再有効化される。暗号化されたデータがメモリ18に書き戻され、ソフトウェアによって、プロセッサ16は通常のオペレーティング・システム・モードに切り替え戻される。プログラム14は、セキュリティ・モジュールのオペレーションの結果を回収し、その通常のオペレーションを継続する。
図2は、本発明の或る実施形態による、セキュリティ・モジュールを備えたコンピュータ・システム212のキャッシュおよびメモリの階層を表す。処理装置216は、コンピュータ・システム212の一部として、少なくともプロセッサ・キャッシュ20、22、24、26、28を含む少なくとも1つのプロセッサ16によって、セキュリティ・モジュールをソフトウェア中に実装する役割を果たし、該処理装置は、少なくとも別のキャッシュ30を含む。図2中の実施形態に示されたプロセッサ16は、2つの第一レベル・キャッシュ(命令キャッシュとしてL1iおよびデータ・キャッシュとしてL1d)22、24ならびに2つの第二レベル・キャッシュ(命令キャッシュとしてL2iおよびデータ・キャッシュとしてL2d)26、28を含む。処理装置216は、第三レベル・キャッシュ30(L3)をさらに含む。また、図2の実施形態中のコンピュータ・システム212は、第四レベル・キャッシュ32(L4)および主メモリ18も含む。キャッシュ・ラインは、通常、256バイトの長さを有する。この実施形態のレベル1および2のキャッシュ22、24、26、28は、例えば、8×64ビットのキャッシュ・ラインを含む。命令キャッシュ22および26は、一般に読み取り専用(RO:read−only)として構成され、一方、データ・キャッシュ24および28ならびにレベル3キャッシュ30のコンテンツは、(i)読み取り専用(RO)、(ii)専有使用(EX:exclusive)、または(iii)トランザクション・メモリ(TX:transactional memory)とフラグされてよい。レベル4キャッシュ32は、システム・コントローラ(SC:system controller)に関連する。
有利には、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方は、第一もしくは第二レベル・キャッシュまたはその両方22、24、26、28中、および第三レベル・キャッシュ30中で用いられるときには解読される。これは、プログラム・コードもしくはデータまたはその両方に、非セキュア・フラグ(NON−SECURE=NS)をタグすることによって達成される。プログラム・コードもしくはデータまたはその両方は、処理装置216から離去するときには暗号化され、しかして、レベル4キャッシュ32およびメモリ18は、(決してNSでなく)安全としてタグされたプログラム・コードもしくはデータまたはその両方だけを受信する。
パフォーマンスの観点からは、プロセッサ・チップ16内に所在可能なキャッシュ・ラインの量が重要である。しかして、キャッシュ・レベル1、2および3に対しNSフラグ/タグが用いられる。
また、命令処理とデータ処理との間には区別がある。当然ながらデータは格納される必要があり、しかして、セキュリティ・モジュールは、通常、解読されたデータが流出しないことを確実にする。これもまたNSフラグによって達成される。非セキュア・データは、チップ・キャッシュのレベルをまたがってライト・バック、またはライト・スルーできない。命令は、通常、読み取り専用でフェッチされる。但し、(例えば、L2とL3との間の境界に対比して、L1とL2との間の境界で)暗号化/解読オペレーションが行われる場所によっては、解読された命令のキャッシュ・ラインがL1からL2にライト・スルーしてもよい。
命令キャッシュ22および26は、データ・キャッシュ24および28から押し進めてこられた非セキュア・キャッシュ・ラインを受け取る。休止中は、非セキュア・キャッシュ・ラインは、データ・キャッシュ24および28ならびに命令キャッシュ22および26から消去される。レベル3キャッシュ30中の非セキュアとマークされたデータは、決して処理装置216を離去することはなく、だが、処理装置216から離去する前には、まず暗号化される。
メモリ一貫性メカニズムの一部として対比検証プロセス(XI)を行う上で、該対比検証プロセスは、キャッシュ・ラインが解読されている可能性のある、キャッシュ22、24、26、28、および30から、キャッシュ・ラインを除去する。システムの潜在的故障可能性があるので、この対比検証は保留または棄却されてはならないので、セキュリティ・モジュールは、キャッシュ・メモリのハードウェア拡張の役割をする。例えば、状態DO NOT STORE(格納不可)がキャッシュ中のキャッシュ・ラインに追加され、当該キャッシュ中で、同じキャッシュ・ラインを暗号化または解読することが可能である。
XIは、変更されないNSフラグされたキャッシュ・ラインを除去してよく、これは当然再フェッチすることができよう。このとき特別な処置は必要がなく、あるいはXIが修正されたキャッシュ・ラインを除去することも可能で、これは特別にフェッチされていなければならない。これは、いろいろなオプションをもたらすかもしれない。
セキュリティ・モジュール(vHSM)の記憶機構が、セキュリティ・モジュールの呼び出し時から既に生じていれば、XI処理は、キャッシュ・ラインが格納されるまで遅延されてよい。vHSMが自然に完了された場合、変更は格納されXI応答が送信される。vHSMのオペレーションが割込み可能点で停止された場合、変更は格納されXI応答が送信される。
vHSMの記憶機構が呼び出し時から生じていない場合、vHSMのオペレーションは、休止/無効にされるかもしれない。このとき、全ての修正済みのvHSMデータは廃棄され、XI応答が送信される。
セキュリティ・モジュールが複数のプロセスの間で共用される場合、対比検証プロセスは、それぞれのプロセスからキャッシュ・ラインを取得することも可能であろう。このときセキュリティ・モジュールのオペレーションは休止されてよい。フォアワード・プロセスが保証されていないので、プロセスの間で共用されているメモリ18の領域へのアクセスをシリアライズするためにセマフォ・メカニズムが用いられる。かかる状況では、フォアワード・プログレス・エスカレーションがトリガされる。
このメカニズムは、トランザクショナル・メモリ・オペレーションの実行に類似しており、プロセスの間で共用されているメモリ18の領域へのアクセスをシリアライズするためにセマフォ・メカニズムが用いられる。また、この状況でも、フォアワード・プログレス・エスカレーションがトリガされる。
マルチスレッディングが可能で、セキュリティ・モジュールが作動している場合、別のスレッドがキャッシュ・ラインをロードし、現在NSとフラグされているキャッシュ・ラインと置き換えるかもしれない。かかる状況は、対比検証、またはNSフラグをセットされたキャッシュ・ラインのいずれかと同様に取り扱うことができ、もしくは他のスレッドに置き換えられることから保護され、しかして経時消失から保護されてもよく、またはその両方が行われてもよい。
図3は、本発明の或る実施形態による、2つのプログラムAおよびBが、セマフォ・ロッキング・メカニズムによりアクセスを制限されながら、共用のセキュリティ・モジュール(vHSM)を使用するためのフロー図を表す。
図3によれば、セキュリティ・モジュールは、該セキュリティ・モジュールによって使われているメモリの領域へのアクセスをシリアライズするためにセマフォ・ロッキング・メカニズムを使いながら、複数のプログラムの間で共用することができる。セキュリティ・モジュールを使用する前に、プログラムAとBとは、オペレーションS300とS302とで、自分達のためにセキュリティ・モジュールをロックしようと試みることになる。これらプログラムのいずれかが、セマフォを取得、すなわち、オペレーションS304でセキュリティ・モジュールをロックした場合、そのことがオペレーションS308とS314とで確認され、該プログラムのいずれかは、オペレーションS306と316とでセキュリティ・モジュールを使用する。セマフォを取得しなかったプログラムは、オペレーションS300とS302とで、セキュリティ・モジュールをロックする試みに戻る。セキュリティ・モジュールを有効に使用した後、該モジュールは、オペレーションS310とS318とでそれを使用したプログラムによって解放されてよい。しかして、セキュリティ・モジュールは、他のプログラムがオペレーションS304でこれを使用することが自由になる。
割込みは、異なるプログラムに制御を与えるかもしれず、そのプログラムは、セキュリティ・モジュールの解読されたメモリ領域にアクセスしてはならないことになっている。有利には、適正なアドレスによる、処理装置のレベル1キャッシュへのアクセスが、このメモリへのアクセスを提供することができる。割込み要求に対しては遅れることなく処置する必要があるため、セキュリティ・モジュールはフォワード・プログレス・エスカレーションを確実にすることが可能で、これにより状態を内部的に追跡する。しかして、ソフトウェアは、割込みコードに分岐する前にセキュリティ・モジュールを暗号化することができる。プロセッサに対する割込み要求の過程で、セキュリティ・モジュールの実行は一時停止され、割込み処理プログラムに制御を渡す前にセキュリティ・モジュールは暗号化される。セキュリティ・モジュールは、割込み要求の終了の後で再開される。しかして、セキュリティ・モジュールは、該セキュリティ・モジュールの制御された休止の後再開することが可能である。
プロセッサ上でのマルチスレッディング処理における或るスレッドの実行の過程でも、セキュリティ・モジュールの実行の間は、マルチスレッディングは無効にされてよい。プロセッサが他のスレッド・キャッシュを実行していると、セキュリティ・モジュールのキャッシュ・ラインが経時消失で失われるかもしれず、または他のスレッドがセキュリティ・モジュールの解読されたデータにアクセスするかもしれない。
解読されたキャッシュ・ラインを他のスレッドから隠しておく処理のために以下の2つのオプションがある。(i)マルチスレッディングを停止し、キャッシュを消去してから、マルチスレッディングを再開する、または(ii)各キャッシュ・ラインに非セキュア・フラグをタグし、キャッシュ・アクセス・ヒット対比ロジックにおいて、アクセスが許されるスレッドだけが合致するように該フラグを使用することができる。上記により、非セキュア・フラグの設定、またはキャッシュの消去のためにソフトウェアが用いられてよい。このことは、他のスレッドへのキャッシュ・ラインのアクセスを妨止するため、もしくは、キャッシュ・ラインが、他のスレッドによって消去されまたは経時消失するのを阻止するため、またはその両方のために、諸キャッシュ・ラインに非セキュア・フラグをタグすることによって達成することができる。
あるいは、セキュリティ・モジュールの実行の間は、スレッド間のキャッシュの共用を無効にすることも可能で、マルチスレッディングを再開する前にキャッシュ・ラインを消去することが可能である。
図4は、本発明の或る実施形態による、コンピュータ・システム・ソフトウェア上に実装されたセキュリティ・モジュールを使用するためのフローチャートを表す。しかして、ソフトウェア中にセキュリティ・モジュールを実装するための方法もまた詳細に理解することが可能である。
オペレーションS400で、コンピュータ・システム上で実行されている或るプログラムが、セキュリティ・モジュールのオペレーションを必要とする場合、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方、あるいはそれらの部分が、オペレーションS402でメモリ中にロードされる。オペレーション404での、プログラムによる、暗号化アーキテクチャを備えたインターフェースへのアクセスは、セキュリティ・モジュールのアドレス、およびメモリの入力/出力領域へのメモリ・ポインタを参照する。次いで、オペレーションS406で、その情報が該インターフェースに送られる。オペレーションS408で、ソフトウェアによって、コンピュータ・システムのプロセッサが安全モードに切り替えられる。次に、オペレーションS410で、非セキュア・フラグをタグされたデータに対して、セキュリティ・モジュールのプログラム・コードによって、プロセッサ・キャッシュからメモリへの書込みオペレーションが無効にされる。オペレーションS412で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方が、プロセッサ・キャッシュの中で秘密鍵を使って解読される。動的アドレス変換(DAT:Dynamic address translation)は、オペレーションS414で、セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスは阻止するが、セキュリティ・モジュールの入力/出力領域へのアクセスは、そのメモリ・ポインタが以前に渡されており、なお許すように構成される。オペレーションS416で、ソフトウェアは、渡されたパラメータを使ってセキュリティ・モジュールの実行をトリガし、次いで、オペレーションS418で、インターフェース上に提供されたデータに対し、セキュリティ・モジュールのプログラム・コードを実行する。次いで、オペレーションS420で、セキュリティ・モジュールのプログラム・コードによって、セキュリティ・モジュール・モードを終了するための命令が実行される。オペレーションS422で、ソフトウェアによって、プロセッサ・キャッシュ中で、公開鍵を使ってデータが暗号化される。オペレーションS424で、セキュリティ・モジュールのプログラム・コードに対し、プロセッサ・キャッシュからメモリへのデータの書込みオペレーションが、ソフトウェアによって再有効化される。オペレーションS426で、暗号データがメモリ中に書き戻され、プロセッサは、ソフトウェアによって通常のオペレーティング・システム・モードに切り替え戻される。オペレーションS428で、当該プログラムは、入力/出力領域からセキュリティ・モジュールのオペレーションの結果を回収し、その通常の実行を継続する。
ここで図5を参照すると、データ処理装置210の一例の概略図が示されている。データ処理システム210は、適切なデータ処理システムの単なる一例であって、本明細書に記載された本発明の実施形態の使用の範囲、または機能性に関しいかなる限定をも示唆することは意図されていない。上記に関係なく、データ処理システム210は、上記で述べた機能性のいずれをも実装し、実行する能力を有する。
少なくとも1つのプロセッサを備えた少なくとも1つの処理装置216を備えるデータ処理システム210が、(i)コンピュータ・システム・ソフトウェア中にセキュリティ・モジュールを実装するためのコンピュータ可読プログラム命令と、(ii)秘密データのための守秘記憶機構、および守秘記憶機構のコンテンツを管理し読み出すためのオペレーティング・システム用のインターフェースを有するセキュリティ・モジュールと、(iii)コンピュータ・システム212のメモリ中の公開鍵で暗号化された、格納されたセキュリティ・モジュールと、を含むデータ処理プログラム240の実行のために、使用されてよい。インターフェースへのアクセスに応答して、該ソフトウェアは、(a)コンピュータ・システム212のプロセッサ16を安全モードに切り替えるステップと、(b)プロセッサ・キャッシュ20からメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にするステップと、(c)プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読するステップと、(d)セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定するステップと、(e)インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行するステップと、(f)プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化するステップと、(g)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするステップと、(h)プロセッサ16を通常のオペレーティング・システム・モードに切り替えるステップと、を実行することができる。非セキュア・フラグをタグされたデータに対し、メモリへの書込みオペレーションは無効にされてよい。
データ処理システム210中には、コンピュータ・システム/サーバ212があり、これは、数多の他の汎用または特殊用途のコンピューティング・システム環境または構成とともに動作可能である。コンピュータ・システム/サーバ212とともに用いるために適し得る、周知のコンピューティング・システム、環境、もしくは構成またはその組み合せには、以下に限らないが、(i)パーソナル・コンピュータ・システム、(ii)サーバ・コンピュータ・システム、(iii)シン・クライアント、(iv)シック・クライアント、(v)ハンドヘルドまたはラップトップ・デバイス、(vi)マルチプロセッサ・システム、(vii)マイクロプロセッサ・ベースのシステム、(viii)セット・トップ・ボックス、(ix)プログラマブル消費者用電子機器、(x)ネットワークPC、(xi)ミニコンピュータ・システム、(xii)メインフレーム・コンピュータ・システム、(xiii)上記のシステムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境など、を含む。
コンピュータ・システム/サーバ212は、コンピュータ・システムによって実行されるプログラム・モジュールなど、コンピュータ・システム実行可能命令の一般的文脈で表すことが可能である。一般に、プログラム・モジュールは、特定のタスクを実行する、または特定の抽象データ型を実装する、(i)ルーティン、(ii)プログラム、(iii)オブジェクト、(iv)、コンポーネント、(v)ロジック、(vi)データ構造体などを含んでよい。コンピュータ・システム/サーバ212は、通信ネットワークを介してリンクされた遠隔の処理デバイス群によってタスクが実行される、分散型クラウド・コンピューティング環境中で実践することが可能である。分散型クラウド・コンピューティング環境では、諸プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよび遠隔両方のコンピュータ・システム・ストレージ媒体中に配置されてよい。
図5に示されるように、データ処理システム210中のコンピュータ・システム/サーバ212は、汎用のコンピューティング・デバイスの形で示されている。コンピュータ・システム/サーバ212は、以下に限らないが、(i)1つ以上のプロセッサまたは処理装置216、(ii)システム・メモリ228、および(iii)システム・メモリ228を含め様々なシステム・コンポーネントをプロセッサ216に連結しているバス218を含んでよい。
バス218は、(i)メモリ・バスまたはメモリ・コントローラ、(ii)周辺機器バス、(iii)アクセラレーテッド・グラフィックス・ポート、または(iv)様々なバス・アーキテクチャのいずれかを使ったプロセッサまたはローカル・バス、を含むいくつかの種類のいずれか1つ以上を表す。限定でなく例として、かかるアーキテクチャは、(a)業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、(b)マイクロ・チャネル・アーキテクチャ(MCA:Micro Channel Architecture)バス、(c)拡張ISA(Enhanced ISA)バス、(d)ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA:Video Electronics Standards Association)ローカル・バス、(e)周辺機器相互接続(PCI:Peripheral Component Interconnect)バスを含む。
コンピュータ・システム/サーバ212は、通常、様々なコンピュータ・システム可読媒体を含む。かかる媒体は、コンピュータ・システム/サーバ212によるアクセスが可能な任意の媒体であってよく、これには、(i)揮発性媒体、(ii)不揮発性媒体、(iii)着脱式媒体、および(iv)固定式媒体が含まれる。
システム・メモリ228は、ランダム・アクセス・メモリ(RAM:random access memory)230もしくはキャッシュ・メモリ232またはその両方など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ212は、他の着脱式/固定式/揮発性/不揮発性コンピュータ・システム・ストレージ媒体をさらに含んでよい。単なる例として、ストレージ・システム234は、固定式、不揮発性磁気媒体からの読み取り、およびこれへの書込みのために設けることができる(図示されていず、通常、「ハード・ドライブ」と呼ばれる)。図示されていないが、着脱式の不揮発性磁気ディスク(例えば、「フレキシブル・ディスク」)から読み取りこれに書込むための磁気ディスク・ドライブ、およびCD−ROM、DVD−ROM、または他の光媒体などの着脱式の不揮発性光ディスクから読み取りこれに書込むための光ディスク・ドライブを設けることが可能である。かかるインスタンスにおいて、その各々は、1つ以上のデータ媒体インターフェースによってバス218に接続することができる。後記でさらに提示し説明するように、メモリ228は、本発明の諸実施形態の機能を遂行するように構成されたプログラム・モジュールの(例えば、少なくとも1つの)セットを有する少なくとも1つのプログラム製品を含むことが可能である。
プログラム・モジュール242の(少なくとも1つの)セットを有するプログラム/ユーティリティ240は、(i)限定でなく例として、メモリ228中に、(ii)オペレーティング・システムとして、(iii)1つ以上のアプリケーション・プログラムとして、(iv)他のプログラム・モジュールとして、および(v)プログラム・データとして、格納されてよい。オペレーティング・システム、1つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらの何らかの組み合せ、の各々はネットワーキング環境の実装を含んでよい。プログラム・モジュール242は、本明細書に記載した本発明の諸実施形態の機能もしくは方法またはその両方を全般的に遂行する。
また、コンピュータ・システム/サーバ212は、(i)キーボード、(ii)ポインティング・デバイス、(iii)ディスプレイ224、(iv)ユーザがコンピュータ・システム/サーバ212とやり取りするのを可能にする1つ以上のデバイス、もしくは(v)コンピュータ・システム/サーバ212が1つ以上の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)またはこれらの組み合せなど、1つ以上の外部デバイス214と通信することが可能である。かかる通信は、入力/出力(I/O)インターフェース222を介して行うことができる。さらになお、コンピュータ・システム/サーバ212は、(a)ローカル・エリア・ネットワーク(LAN:local area network)、(b)一般広域ネットワーク(WAN:wide area network)、もしくはネットワーク・アダプタ220を介する公衆ネットワーク(例えば、インターネット)またはこれらの組み合せなど、1つ以上のネットワークと通信することが可能である。図示のように、ネットワーク・アダプタ220は、バス218を介して、コンピュータ・システム/サーバ212の他のコンポーネントと通信する。当然のことながら、図示はされていないが、コンピュータ・システム/サーバ212とともに、他のハードウェアのコンポーネントもしくはソフトウェアのコンポーネントまたはその両方を用いることができよう。諸例には、以下に限らないが、(1)マイクロコード、(2)デバイス・ドライバ、(3)冗長処理装置、(4)外部のディスク・ドライブ・アレイ、(5)RAIDシステム、(6)テープ・ドライブ、および(7)データ・アーカイバル・ストレージ・システムが含まれる。
本発明は、(i)システム、(ii)方法、もしくは(iii)コンピュータ・プログラム製品またはこれらの組み合せであってよい。このコンピュータ・プログラム製品は、プロセッサに本発明の諸態様を遂行させるための、コンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(または媒体群を)含むことが可能である。
このコンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持および格納できる有形のデバイスとすることができる。該コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、(i)電子ストレージ・デバイス、(ii)磁気ストレージ・デバイス、(iii)光ストレージ・デバイス、(iv)電磁気ストレージ・デバイス、(v)半導体ストレージ・デバイス、または(vi)または上記の任意の適切な組み合せであってよい。該コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的なリストには、(a)携帯型コンピュータ・ディスケット、(b)ハードディスク、(c)ランダム・アクセス・メモリ(RAM)、(d)読み取り専用メモリ、(e)消去およびプログラム可能読み取り専用メモリ(EPROM:erasable programmable read−only memoryまたはフラッシュ・メモリ)、(f)静的ランダム・アクセス・メモリ(SRAM:static random access memory )、(g)携帯型コンパクトディスク読み取り専用メモリ(CD−ROM:compact disc read−only memory)、(h)デジタル多用途ディスク(DVD:digital versatile disk)、(i)メモリ・スティック、(j)フレキシブル・ディスク、(k)記録された命令を有する、パンチ・カードまたは溝中の隆起構造体など、機械的に符号化されたデバイス、および(l)上記の任意の適切な組み合せが含まれる。本明細書で用いるコンピュータ可読ストレージ媒体は、(1)無線波または他の自由に伝搬する電磁波、(2)導波管または他の送信媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または(3)ワイヤを通って送信される電気信号など、本質的に一時的な信号として解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、(i)コンピュータ可読ストレージ媒体から、(ii)外部のコンピュータに、(iii)外部のストレージ・デバイスに、例えば、インターネット、(iv)ローカル・エリア・ネットワーク、(v)広域ネットワーク、もしくは(vi)ワイヤレス・ネットワーク、またはこれらの組み合せ、などのネットワークを介して、それぞれのコンピューティング/処理デバイスにダウンロードすることができる。このネットワークは、(a)銅送信ケーブル、(b)光送信ファイバ、(c)ワイヤレス送信、(d)ルータ、(e)ファイヤーウォール、(f)交換機、(g)ゲートウェイ・コンピュータ、もしくは(h)エッジ・サーバまたはこれらの組み合せを含んでよい。各コンピューティング/処理デバイス中のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体中に保存するために転送する。
本発明のオペレーションを遂行するためのコンピュータ可読プログラム命令は、(i)アセンブラ命令、(ii)命令セットアーキテクチャ(ISA:instruction−set−architecture)命令、(iii)マシン命令、(iv)マシン依存命令、(v)マイクロコード、(vi)ファームウェア命令、(vii)状態設定データ、または(viii)Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および、“C”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、1つ以上のプログラミング言語の任意の組み合せで記述されたソース・コードもしくはオブジェクト・コードであってよい。このコンピュータ可読プログラム命令は、(a)全面的にユーザのコンピュータで、(b)部分的にユーザのコンピュータで、(c)スタンドアロン・ソフトウェア・パッケージとして、(d)一部をユーザのコンピュータで一部を遠隔コンピュータで、または(e)前面的に遠隔のコンピュータまたはサーバで、実行することができる。後者の場合は、(1)ローカル・エリア・ネットワーク(LAN)、(2)広域ネットワーク(WAN)を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは(3)(例えばインターネット・サービス・プロバイダを使いインターネットを介し)外部のコンピュータへの接続を行うことも可能である。いくつかの実施形態において、例えば、(I)プログラマブル・ロジック回路構成、(II)フィールド・プログラマブル・ゲート・アレイ(FPGA:field−programmable gate array)、または(III)プログラマブル・ロジック・アレイ(PLA:programmable logic array)を含む電気回路構成は、本発明の諸態様を実行するために、コンピュータ可読プログラム命令の状態情報を用いて該電気回路構成を個人用に設定することにより、該コンピュータ可読プログラム命令を実行することができる。
本明細書では、本発明の諸態様は、本発明の諸実施形態による、(i)方法、(ii)装置(システム)、および(iii)コンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら説明されている。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方のブロックの組み合せは、コンピュータ可読プログラム命令によって実装することが可能である。
これらのコンピュータ可読プログラム命令を、(i)汎用コンピュータ、(ii)特殊用途コンピュータ、または(iii)マシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するための手段を生成するようにすることができる。また、(a)コンピュータ、(b)プログラム可能データ処理装置、もしくは(c)他のデバイス、またはこれらの組み合せに対し特定の仕方で機能するよう命令することが可能なこれらのコンピュータ可読プログラム命令を、コンピュータ可読ストレージ媒体に格納し、格納された命令を有するコンピュータ可読ストレージ媒体が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能/動作の諸態様を実装する命令群を包含する製造品を構成するようにすることができる。
さらに、これらコンピュータ可読プログラム命令を、(i)コンピュータ、(ii)他のプログラム可能データ処理装置、または(iii)他のデバイスにロードし、(a)そのコンピュータ上で、(b)他のプログラム可能装置上で、または他のデバイス上で一連のオペレーション・ステップを実施させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上で、(c)他のプログラム可能装置上でもしくは(d)他のデバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するためのプロセスを提供するようにすることも可能である。
諸図面中のフローチャートおよびブロック図は、本発明の様々な実施形態による、(a)システム、(b)方法、および(c)コンピュータ・プログラム製品から可能となる実装の(i)アーキテクチャ、(ii)機能性、および(iii)オペレーションを表している。この点に関し、フローチャートまたはブロック図中の各ブロックは、特定の論理機能(群)を実装するための一つ以上の実行可能命令を含む、(1)モジュール、(2)セグメント、または(3)命令の部分を表し得る。一部の別の実装においては、ブロック中に記載された機能が、図面に記載された順序から外れて行われてよい。例えば、連続して示された2つのブロックが、関与する機能性に応じ、実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロック群の組み合せは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステムによって実装でき、または特殊用途ハードウェアとコンピュータ命令との組み合せによって実行できることにも留意すべきである。
本発明の様々な実施形態の説明は、例示目的で提示されたもので、網羅的であることも、または開示された実施形態に限定することも意図されていない。当業者には、本発明の範囲および趣旨から逸脱することのない多くの修改および変形が明白であろう。本明細書で用いられた用語は、諸実施形態の原理、実際上の応用、または市販の技術の技術的な改良を最善に説明し、他の当業者が本明細書に開示された諸実施形態を理解できるように選択されたものである。

Claims (10)

  1. 秘密データのための揮発性メモリ中の守秘記憶機構、およびオペレーティング・システムと相互作用するためのインターフェースを設けるためのプログラム命令を含むセキュリティ・モジュール、とともに用いるコンピュータ実装の方法であって、前記方法は、
    プロセッサのプロセッサ・キャッシュ中に、秘密鍵によって解読可能な暗号形式で前記セキュリティ・モジュールを構成しているデータを格納するステップと、
    前記プロセッサを安全モードに切り替えるステップと、
    前記安全モードに切り替える前記ステップに応じて書込みオペレーションを無効にするステップであって、前記書込みオペレーションは、前記セキュリティ・モジュールを構成している前記データを前記プロセッサ・キャッシュから揮発性メモリに書込むオペレーションである、前記無効にするステップと、
    前記プロセッサ・キャッシュ中で、前記秘密鍵によって前記セキュリティ・モジュールを構成している前記データを解読するステップと、
    前記守秘記憶機構の外側の前記揮発性メモリの部分へのアクセスを阻止するために動的アドレス変換を設定するステップと、
    前記セキュリティ・モジュールの前記インターフェースを介してデータを受信するステップと、
    前記プロセッサ・キャッシュの中で前記セキュリティ・モジュールによって、前記セキュリティ・モジュールの前記インターフェースを介して受信された前記データを、公開鍵を使って暗号化するステップと、
    前記書込みオペレーションを有効にするステップと、
    前記プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、
    を含む方法。
  2. 非セキュア・フラグをタグされたデータに対する前記書込みオペレーションを無効にするステップ、
    をさらに含む、請求項1に記載の方法。
  3. 前記プロセッサ・キャッシュが、第一レベル・キャッシュ(群)のセットおよび第二レベル・キャッシュ(群)のセットを含む、請求項1に記載の方法。
  4. 前記セキュリティ・モジュールの前記インターフェースが、暗号化アーキテクチャを用いるアプリケーション・プログラミング・インターフェースの形態である、請求項1に記載の方法。
  5. 前記プロセッサによって、割込み要求を受信するステップと、
    前記割込み要求に応答して、前記セキュリティ・モジュールの実行を一時停止するステップと、
    前記セキュリティ・モジュールの前記暗号化の後で、割込み処理プログラムに制御を渡すステップと、
    をさらに含む、請求項1に記載の方法。
  6. 前記割込み要求を終了するステップと、
    前記割込み要求の前記終了に応じて、前記セキュリティ・モジュールを再開するステップと、
    をさらに含む、請求項5に記載の方法。
  7. 前記揮発性メモリの前記守秘記憶機構へのアクセスをシリアライズするためセマフォ・メカニズムを用いて、複数のプログラムの間で前記セキュリティ・モジュールを共用するステップ、
    をさらに含む、請求項1に記載の方法。
  8. 請求項1〜7の何れか1項に記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
  9. 請求項8に記載の前記コンピュータ・プログラムをコンピュータ可読ストレージ媒体に記録した、ストレージ媒体。
  10. 請求項1〜7の何れか1項に記載の方法の各ステップをコンピュータ・ハードウェアによる手段として
    構成した、コンピュータ・システム。
JP2020502203A 2017-07-25 2018-07-23 セキュリティ・モジュールを備えた、コンピュータ・システム・ソフトウェア/ファームウェアおよび処理装置 Active JP6955619B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/658,441 US10534725B2 (en) 2017-07-25 2017-07-25 Computer system software/firmware and a processor unit with a security module
US15/658,441 2017-07-25
PCT/IB2018/055462 WO2019021153A1 (en) 2017-07-25 2018-07-23 COMPUTER SYSTEM SOFTWARE / COMPUTER SOFTWARE AND PROCESSOR UNIT WITH SECURITY MODULE

Publications (3)

Publication Number Publication Date
JP2020528608A JP2020528608A (ja) 2020-09-24
JP2020528608A5 JP2020528608A5 (ja) 2020-11-12
JP6955619B2 true JP6955619B2 (ja) 2021-10-27

Family

ID=65037918

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020502203A Active JP6955619B2 (ja) 2017-07-25 2018-07-23 セキュリティ・モジュールを備えた、コンピュータ・システム・ソフトウェア/ファームウェアおよび処理装置

Country Status (6)

Country Link
US (3) US10534725B2 (ja)
JP (1) JP6955619B2 (ja)
CN (1) CN110998545B (ja)
DE (1) DE112018002947T5 (ja)
GB (1) GB2578410B (ja)
WO (1) WO2019021153A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10534725B2 (en) 2017-07-25 2020-01-14 International Business Machines Corporation Computer system software/firmware and a processor unit with a security module
EP3814912B1 (en) * 2018-06-29 2023-11-01 INTEL Corporation Techniques to support a holistic view of cache class of service for a processor cache
US11307857B2 (en) * 2019-12-05 2022-04-19 Marvell Asia Pte, Ltd. Dynamic designation of instructions as sensitive for constraining multithreaded execution
US11372647B2 (en) 2019-12-05 2022-06-28 Marvell Asia Pte, Ltd. Pipelines for secure multithread execution
CN111343041B (zh) * 2020-01-19 2021-11-02 苏州浪潮智能科技有限公司 一种风扇状态监控方法和装置
CN115080158A (zh) * 2021-03-12 2022-09-20 Oppo广东移动通信有限公司 界面显示方法、装置、终端设备及计算机可读存储介质
US20230176901A1 (en) * 2021-12-03 2023-06-08 International Business Machines Corporation Scheduling a secure code segment on a processor core of a processing unit
US20230177143A1 (en) * 2021-12-03 2023-06-08 International Business Machines Corporation Operating a secure code segment on a processor core of a processing unit

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6789197B1 (en) * 1994-10-27 2004-09-07 Mitsubishi Corporation Apparatus for data copyright management system
JPH08305558A (ja) * 1995-04-27 1996-11-22 Casio Comput Co Ltd 暗号化プログラム演算装置
US6615349B1 (en) * 1999-02-23 2003-09-02 Parsec Sight/Sound, Inc. System and method for manipulating a computer file and/or program
JP2005227995A (ja) * 2004-02-12 2005-08-25 Sony Corp 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US20070014403A1 (en) * 2005-07-18 2007-01-18 Creative Technology Ltd. Controlling distribution of protected content
JP2010503052A (ja) 2006-08-24 2010-01-28 チャンビー・インダストリーズ・インコーポレイテッド ネットワーク化されたアプリケーション共有システムで利用するための構成可能なパーソナル音声映像デバイス
US8645714B2 (en) 2010-05-25 2014-02-04 Via Technologies, Inc. Branch target address cache for predicting instruction decryption keys in a microprocessor that fetches and decrypts encrypted instructions
US20140281587A1 (en) * 2013-03-14 2014-09-18 Ologn Technologies Ag Systems, methods and apparatuses for using a secure non-volatile storage with a computer processor
US9430384B2 (en) * 2013-03-31 2016-08-30 Intel Corporation Instructions and logic to provide advanced paging capabilities for secure enclave page caches
US9231923B1 (en) 2013-11-12 2016-01-05 Amazon Technologies, Inc. Secure data destruction in a distributed environment using key protection mechanisms
US9734355B2 (en) 2014-04-11 2017-08-15 Rubicon Labs, Inc. System and method for an efficient authentication and key exchange protocol
US10169618B2 (en) * 2014-06-20 2019-01-01 Cypress Semiconductor Corporation Encryption method for execute-in-place memories
US9928080B2 (en) 2014-09-30 2018-03-27 International Business Machines Corporation Hardware security module access management in a cloud computing environment
US9798678B2 (en) 2015-04-02 2017-10-24 International Business Machines Corporation Protecting storage from unauthorized access
US9715462B2 (en) 2015-04-02 2017-07-25 International Business Machines Corporation Protecting contents of storage
US10089245B2 (en) * 2015-05-18 2018-10-02 Hewlett Packard Enterprise Development Lp Management of encryption keys for multi-mode network storage device
US9767320B2 (en) * 2015-08-07 2017-09-19 Qualcomm Incorporated Hardware enforced content protection for graphics processing units
US9432183B1 (en) 2015-12-08 2016-08-30 International Business Machines Corporation Encrypted data exchange between computer systems
US10534725B2 (en) 2017-07-25 2020-01-14 International Business Machines Corporation Computer system software/firmware and a processor unit with a security module

Also Published As

Publication number Publication date
WO2019021153A1 (en) 2019-01-31
GB2578410A (en) 2020-05-06
CN110998545B (zh) 2023-05-26
US20200110712A1 (en) 2020-04-09
JP2020528608A (ja) 2020-09-24
US10528487B2 (en) 2020-01-07
US10534725B2 (en) 2020-01-14
DE112018002947T5 (de) 2020-04-02
US11204881B2 (en) 2021-12-21
US20190034357A1 (en) 2019-01-31
GB2578410B (en) 2020-10-28
CN110998545A (zh) 2020-04-10
GB202002174D0 (en) 2020-04-01
US20190034356A1 (en) 2019-01-31

Similar Documents

Publication Publication Date Title
JP6955619B2 (ja) セキュリティ・モジュールを備えた、コンピュータ・システム・ソフトウェア/ファームウェアおよび処理装置
US10235304B2 (en) Multi-crypto-color-group VM/enclave memory integrity method and apparatus
US10102152B2 (en) Protecting a memory from unauthorized access
US8856504B2 (en) Secure virtual machine bootstrap in untrusted cloud infrastructures
JP6347831B2 (ja) ハイパーバイザに制御されるシステムにおいてゲスト・イベントを処理するための方法、データ処理プログラム、コンピュータ・プログラム製品、およびデータ処理システム
US8812871B2 (en) Method and apparatus for trusted execution in infrastructure as a service cloud environments
US8990582B2 (en) Virtual machine memory compartmentalization in multi-core architectures
US10372628B2 (en) Cross-domain security in cryptographically partitioned cloud
US20170005990A1 (en) Systems, Methods and Computer Readable Medium To Implement Secured Computational Infrastructure for Cloud and Data Center Environments
Du et al. Secure encrypted virtualization is unsecure
US9779032B2 (en) Protecting storage from unauthorized access
WO2016075570A1 (en) Processing guest event in hypervisor-controlled system
US11755753B2 (en) Mechanism to enable secure memory sharing between enclaves and I/O adapters
US10310990B2 (en) Direct memory access encryption with application provided keys
US20230236870A1 (en) Safe entropy source for encrypted virtual machines
US9715462B2 (en) Protecting contents of storage

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200824

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201222

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: 20210928

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210930

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211001

R150 Certificate of patent or registration of utility model

Ref document number: 6955619

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150