JP6078555B2 - 鍵駆動の難読化を用いる仮想マシンデバイス及び方法 - Google Patents

鍵駆動の難読化を用いる仮想マシンデバイス及び方法 Download PDF

Info

Publication number
JP6078555B2
JP6078555B2 JP2014550776A JP2014550776A JP6078555B2 JP 6078555 B2 JP6078555 B2 JP 6078555B2 JP 2014550776 A JP2014550776 A JP 2014550776A JP 2014550776 A JP2014550776 A JP 2014550776A JP 6078555 B2 JP6078555 B2 JP 6078555B2
Authority
JP
Japan
Prior art keywords
encoded
encoding
data
instruction
virtual machine
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
JP2014550776A
Other languages
English (en)
Other versions
JP2015504279A (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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips NV
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 Koninklijke Philips NV filed Critical Koninklijke Philips NV
Publication of JP2015504279A publication Critical patent/JP2015504279A/ja
Application granted granted Critical
Publication of JP6078555B2 publication Critical patent/JP6078555B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は、受信した一連の命令を実行するように構成される仮想マシンデバイスに関する。本発明は、受信した一連の命令を実行するために構成された方法にも関する。
近年では、クラウドコンピューティングが、消費者のインターネットサービスから着想を得た新たな消費及び配信モデルとなっている。クラウドコンピューティングは、ITプロビジョニングのサービスモデルであり、しばしば仮想的な分散コンピューティング技術に基づいており、典型的にはオンデマンドである。クラウドコンピューティングの紹介については、欧州ネットワーク情報セキュリティ庁(ENISA:European Network and Information Security Agency)による2009年11月の「クラウドコンピューティング:情報セキュリティに関わる利点、リスクおよび推奨事項(Cloud computing:benefits, risks and recommendations for information security)」を参照されたい。
クラウドコンピューティングアーキテクチャの利点には、高度に抽象化されたリソース、ほぼ瞬間的なスケーラビリティとフレキシビリティ、ほぼ瞬間的なプロビジョニング、共有リソース(例えばハードウェア、データベース、メモリ)、通常「都度払いの」課金システムを用いる「サービスオンデマンド」、例えばWebサービスAPIを介したプログラムの管理が含まれる。クラウドコンピューティングにより、企業は、新たなインフラストラクチャに投資する必要なく、要求に応じて計算能力又は記憶能力を瞬間的にスケールアップすることができる。
クラウドコンピューティングは、3つのサービスモデル、すなわち、ソフトウェア・アズ・ア・サービス(SaaS)、プラットフォーム・アズ・ア・サービス(PaaS)及びインフラストラクチャ・アズ・ア・サービス(IaaS)を組み込むことによって、インフラストラクチャのレイヤ化された概念をサポートする。
クラウドのインフラストラクチャ・アズ・ア・サービス(IaaS)は、サービスAPIを通じて制御され得る仮想マシンや他の概念的なハードウェア及びオペレーティングシステムを提供する。加入者に提供される能力は、処理、ストレージ、ネットワーク及び消費者が任意のソフトウェアを展開して実行することが可能であり、オペレーティングシステムとアプリケーションを含むことができる他の基本的なコンピューティングリソースを設定することである。IaaSをハードウェア・アズ・ア・サービスとしてみる場合、IaaSを理解するのはより容易である。我々は、ハードウェア・アズ・ア・サービスを、(i)サーバに基づいて仮想マシンを提示する計算・アズ・ア・サービス(CaaS:Computation as a Service)と、(ii)データストレージ空間を提示するデータ・アズ・ア・サービス(DaaS)とに分類する。
クラウドのプラットフォーム・アズ・ア・サービス(PaaS)では、顧客は、遠隔で展開・設定可能なAPIを使用して、新たなアプリケーションを開発することができる。提示されるプラットフォームは、開発ツール、設定管理及び展開用のプラットフォームを含む。顧客に提供される能力は、クラウドのインフラストラクチャ上で、プロバイダによってサポートされるプログラミング言語及びツールを使用して作成される顧客作成又は取得アプリケーションを展開することである。PaaSモデルは典型的に、IaaSより1つ上のレベルで動作する。OS環境及びアプリケーション展開フレームワークは既に提示されているが、PaaSはアプリケーション環境で動作する。
ソフトウェア・アズ・ア・サービス(SaaS)は、クラウドインフラストラクチャ上で動作するプロバイダのアプリケーションの使用を可能にする、顧客に提供されるソフトウェアである。アプリケーションは、様々なクライアントデバイスから、ウェブブラウザのようなシンクライアント・インタフェースを通じてアクセス可能である。顧客は、ネットワーク、サーバ、オペレーティングシステム、ストレージ又は限られたユーザ固有のアプリケーション構成設定の可能な例外を伴う個々のアプリケーションの能力をも含め、基礎となるインフラストラクチャを管理せず、制御もしない。
クラウドコンピューティングの1つの特徴は、例えばマシン利用への投資に対する利益を最大にするように、異なるアプリケーション間でリソースを仮想化して共有する能力である。各アプリケーションが自身のサーバ上で動作する非仮想化環境とは異なり、仮想化は、1つのホストマシンが複数の独立のオペレーティングシステム及びアプリケーションをサポートするように仮想化されることを可能にする。これは、例えばハードウェアの入手やメンテナンスコストについての加入者のコストの節約につながる可能性がある。
仮想化は、ソフトウェアのシミュレーション及び/又は他のソフトウェアが動作しているハードウェアのシミュレーションである。VM(virtual machine)と呼ばれる仮想マシンは、仮想化によって作成されるシミュレート環境である。仮想マシンは、ハイパーバイザとも呼ばれる仮想マシンモニタ(VMM)によって管理される。ハイパーバイザは、ホストマシン上のゲストOSを管理し、ゲストOSと物理的なハードウェアとの間の命令フローを制御する仮想化コンポーネントである。
クラウドコンピューティングは、ネットワーク、サーバ、ストレージ又はソフトウェアアプリケーションのようなコンピューティングリソースを配信するための新たなモデルである。クラウドコンピューティングはますます使用される。しかしながら、健康管理のような繊細なデータを扱う特定の市場セクタは、プライバシ及びセキュリティ上の課題のためにためらっている。クラウド内に繊細なデータ及び/又はアプリケーションを格納することには、法的なビジネス上の倫理的問題が生じる。データの機密性だけでなく、ソフトウェアの機密性も課題である。例えばコモディティのパブリックなクラウドに格納されるアプリケーションが、標準的な仮想マシン(VM)により実行される場合、データが開示され、アプリケーションの実行が観測される可能性がある。
"Cloud computing:benefits, risks and recommendations for information security"、European Network and Information Security Agency(ENISA)、2009年11月 S. Chow,P. Eisen,H. Johnson,及びP.C. van Oorschot,"A White-Box DES Implementation for DRM Applications",Computer Science 2003,the book Digital Rights Management of the Lecture Notes 2002年[42,43]
クラウドコンピューティングの利点はしばしば、信頼性、プライバシ及びセキュリティに関する課題に悩まされる。これは、非常に繊細な健康上のデータを扱い、信頼性が非常に重要な役割を担うヘルスケアの領域の場合に特にそうである。患者データの多くのレコードの開示を含む、クラウドにおけるプライバシの侵害は、多くの企業及びヘルスケアプロバイダにとって重大なことである。単にデータを暗号化して暗号化されたデータをクラウド上に格納することは、データの処理を可能にするために、その鍵もクラウド上に格納されなければならないので、多くの制限を生じる。これは、潜在的に悪用可能な脆弱性を生じる。さらに、クライド上でデータ処理を行うアプリケーションを動かすことによって、多くの企業は、そのアルゴリズム及び方法が開示されることになり、そして顕著な特徴及び競争上の優位性を失うことになることについて悩まされる(「クリニカル決定サポート」(CDS)の影響アルゴリズムとナレッジを例にとる)。上述の問題により、多くの企業及び公的機関はまだ、クラウドコンピューティングの利点を用いることをためらい、クラウドソリューションの信頼性、機密性及びセキュリティを向上させるソリューションを待っている。
有利な仮想マシンデバイスは、特定の命令を実行するように各々が構成される複数のオペレーションルーチンと、符号化された命令を受信するように構成されたセレクタとを備える。符号化された命令は、コード符号化(code encoding)により平文命令(plane instruction)を符号化することによって取得されたものである。セレクタは、複数のオペレーションルーチンのうち対応するオペレーションルーチンを選択してアクティブにするように構成される。対応するオペレーションルーチンは、符号化された命令に対応する平文命令を実行するように構成される。セレクタは、符号化された命令をルックアップするルックアップ手段を備え、対応するオペレーションルーチンを選択する。
「平文」とは、「プレーンテキスト」、すなわち符号化されていないテキスト又は暗号化されていないテキストを指す。例えば平文コードは、符号化されていない/暗号化されていないコードである。
典型的に、セレクタは、一連の暗号化された命令を受信するように構成されることがあり、この一連の暗号化された命令は、一連の平文命令をコード符号化(code encoding)により暗号化することによって取得される。セレクタは次いで、上記一連の暗号化された命令のうち次の暗号化された命令を反復的に選択し、複数のオペレーションルーチンのうち対応するオペレーションルーチンをアクティブにするように構成される。ここで、対応するオペレーションルーチンは、選択された次の暗号化された命令に対応する平文命令を実行するように構成される。
仮想化の公知のアプローチでは、クラウド上の仮想マシンのデータ及び実行は、外部の敵と例えばクラウドサービスプロバイダのような悪意ある内部関係者との双方によって観測可能である。この可観測性及び計算プロセスの情報開示は、以下のことが保証されることを望む場合に問題となり得る。
1.クラウド上のデータの機密性(例えばクラウドにアップロードされた患者の健康上のデータ)
2.プログラムにおけるアルゴリズムの知的財産権の保護を保証するため、仮想化されたプログラム又はオペレーティングシステムのプライベートな実行
3.データを特定のVM及びアプリケーションへバインドして、指定されたVM及びアプリケーションのみがクラウド上に格納されたデータを復号することができるようにすること。
本発明は、クラウド上のデータ、アプリケーション及びクラウド上で動作する仮想マシンの機密性及び不観測性、並びに仮想マシン及びアプリケーションへのデータのバインドについての技術的向上に対処する。
データ及びコードは、入力及びコードから観測可能なナレッジがないか、限定的なナレッジしかないようにVMにリンクされる。また出力も、VMの出力から抽出されるナレッジも限定されるようにVMにリンクされる。
本発明は、データ及び/又はアプリケーションコードを、暗号化されたクラウド上に保持することによって、クラウドのユーザが、クラウド上のプライバシ侵害のリスクを大幅に低減することを可能にする。暗号化鍵はクラウド上において、これらの鍵を隠し、仮想マシン及びその上で動作するアプリケーションへとバインドすることで保護される。アプリケーションの入力、意味及び出力は再構築することが難しい(困難である)。プログラムの意味を再構築することは、一般に面倒なタスクである。コード化及び再コード化を通じてアプリケーションへリンクされるVM、すなわち、命令の意味にアクセスせずにリンクされるVMの場合、これには何年もかかる可能性がある。
本発明及び好ましい実施形態の多くは、符号化(上記のコード符号化、入力符号化、出力符号化、内部符号化等)を使用する。符号化は、ある範囲の整数を同じ範囲へとマッピングする双射(bijection)(双射関数、すなわち1対1対応としても知られる)である。その範囲は典型的には0(ゼロ)で開始し、典型的に2マイナス1の累乗まで及ぶ。整数はデータ又は命令を表すことがある。符号化の反対が復号化として示される。
符号化は、例えば特定の典型的には固定の鍵を用いる暗号化を含む。例えば符号化は、例えばブロック暗号(block cipher)のような暗号の実装としてもよい。好ましくは、符号化として使用されるホワイトボックスの暗号の実装が使用される。
符号化の重要なプロパティは、符号化がテーブルTで構成される場合に、これらが新しいテーブルへとシームレスに一緒に結合することである。符号化がO(オー)として示される場合、新たなテーブルは(O°T,T°O−1)のうちの1つであろう。同じことがWBとして示されるテーブルネットワークについても当てはまり、これは(WB[E]°T,T°WB[D])のうちのいずれか1つとなる。
有利には、符号化はテーブルとして実装される。テーブルを使用することの利点は、テーブルとしても表される後続のオペレーションが実行されるべき場合、これらのテーブルを新たなテーブルへと結合することができ、この新たなテーブルは、一方のテーブルを他方の後に適用することによって得られる。
符号化は、特定の鍵についての暗号化として表されることもある。これは諸実装をいくらか容易にする。例えばコード符号化は、暗号化鍵を用いる暗号化として得られることがある。
ルックアップテーブル手段は、好ましくはルックアップテーブルである。しかしながら、このようなテーブルは様々な形式で実装されてもよく、例えばif/then/elseのステートメントの長いシーケンスとして又は多くの分岐を用いるケースステートメントとして実装されてもよい。
一実施形態において、ルックアップ手段は、符号化された命令をインデックスとしてとり、正しい対応するルーチンへのポインタを作成する。対応するオペレーションルーチンへのポインタを使用して、対応するオペレーションをアクティブにしてもよい。
更なる実施形態において、即時データ(immediate data)も、対応するルーチンによる使用のために生成される。
ルックアップ手段は、ルックアップテーブル、例えばインデックスに従ってソートされてルックアップされるべきアイテムのリストである可能性がある。上記の場合、ルックアップテーブルは、符号化された命令に従ってソートされる、正しい対応するルーチンへのポインタのリストである可能性がある。この方法では、テーブルは1つの列のみを必要とする。いくつかの符号化された命令が使用される場合、これらの命令は、ダミーポインタ、例えばオールゼロのポインタを用いて表されることがある。
ルックアップ手段は、2つ(又はそれ以上)の列を有するテーブルとしてもよい。例えば第1の列がインデックス、例えば符号化された命令を含み、第2の列がルックアップされるオブジェクト、例えば対応するポインタを含むテーブルとしてもよい。
一実施形態において、ルックアップテーブルは、平文命令を受信するように構成される標準の仮想マシンデバイスのルックアップテーブルを再順序付けすることによって取得されることもある。興味深いことに、明示的な暗号解除又は復号化オペレーションは、符号化された命令の復号化を、正しいオペレーションを得るための命令の解析と組み合わせることによって回避される。
符号化された命令は、命令を符号化することだけで得られることがある。これは小さなルックアップ手段を提供する。例えば256の命令があり得る場合、ルックアップ手段を、ポインタのサイズの256倍のサイズのルックアップテーブルとして実装してもよい。
しかしながら、符号化された命令は、平文命令を即時データと一緒に符号化することによって得られることもある。これは、より大きなルックアップ手段を提供することになる。例えば即時データが1バイトである場合、次いでルックアップ手段を、ポインタ+1のバイトサイズの256×256倍のサイズのルックアップテーブルとして実装してもよい。
これは、ルックアップ手段を拡大することになるが、難読化の量は大幅に向上する。命令とテーブル内の特定の行との間には固定の関係は存在しないことになる。
即時データは、命令が機能すべきコードストリーム内に含まれるデータであり、定数、パラメータ又は命令が対応するオペレーションが機能すべきオペランドを含む。
即時データは、例えば否定オペレーションのための単一のデータアイテムを含んでもよい。即時データは、例えば追加のための例えば2つのデータアイテムのような、複数のデータアイテムを含んでもよい。
例として、符号化された命令は、平文命令を即時データとともにブロック暗号の単一のブロックで符号化することによって得られた。
符号化された命令は、即時データの第2の部分は用いずに、即時データの第1の部分を上記命令とともに符号化することによって得られることもあることに留意されたい。これにより、テーブルのサイズは小さく保たれることになる。第2の部分は入力符号化により符号化され得る。入力符号化は内部符号化へと再コード化され得るが、命令上のままであってもよく、この場合オペレーションルーチンは、入力符号化により符号化された第2の部分を受信するように適合され得る。特に、即時データがコードチャネルの一部、すなわちコードストリーム又はコードシーケンスである場合、後者の選択肢は、コードを解析する必要性を回避するので好ましい。
即時データは、コード符号化により平文命令とともに符号化される前に、入力符号化により符号化される可能性がある。
一実施形態において、仮想マシンデバイスは、オペレーションルーチンによる使用のための追加のデータを受信するように構成された入力再コーダ(recoder)を備える。この追加のデータは、入力符号化により符号化されており、入力再コーダは、入力復号化によりデータを復号化し、内部符号化により符号化するように構成される。例えば入力再コーダは、符号化された追加のデータをルックアップして、テーブル内で再符号化された追加のデータを見つけるためのルックアップ手段を含み得る。例えばコードは、医療データ、例えばピクチャを分析するための専用のアルゴリズム(proprietary algorithm)を表すことがあり、追加のデータは、医療データ自体を表すことがある。
入力再コーダは、オペレーションルーチンによる使用のためのオペランドを受信するように構成され得る。入力再コーダは、入力暗号解除鍵を用いて暗号解除するように構成された暗号解除器を備えることがある。暗号解除器はホワイトボックス暗号解除器とすることができる。入力再コード化の結果は典型的に、仮想マシンデバイスのメモリ内に記憶される。
一実施形態において、仮想マシンデバイスは、オペレーションルーチンによって生成されるデータ結果を受信するように構成される出力再コーダを備える。出力再コーダは、内部復号化により復号化されたデータ結果を再コード化して、出力符号化により符号化されるデータ結果にするように構成される。
入力再コーダ、出力再コーダ、内部再コーダ等のような再コーダは、最初に復号化オペレーションを適用し、次いで符号化オペレーションを適用することによって得られる。これらの2つのオペレーションを結合して、単一のオペレーションにしてもよく、例えばルックアップテーブルのような単一のルックアップ手段としてもよい。
出力再コーダは、出力暗号化鍵により暗号化するように構成された暗号化器を備えることが可能である。この暗号化器はホワイトボックス暗号化器とすることができる。
データ及びアルゴリズムに関するIPの開示のリスクは、符号化を、VMの(オプションの)入力関数、VMのデコーダ又は/及びVMの(オプションの)出力関数とマージすることにより減少する。データ及びアプリケーションはクラウド上で暗号化されるが、その鍵は知られない(符号化が暗号化に対応する場合)。ランダムな双射を介するような難読化の場合、データアイテム「k」は単に、攻撃者に対して知られていない難読化の設定のk番目の要素であるので、攻撃者はそのデータアイテム「k」が何を表すのかわからない。
一実施形態において、複数のオペレーションルーチン及び/又は特に対応するオペレーションルーチンは、第1の符号化により符号化されたデータを受信し、第2の内部符号化により符号化された結果を生成するように構成される。符号化された結果は、
− 符号化されたデータを、第1の復号化により復号化するステップと、
− 結果を得るため、符号化された命令に対応する平文命令を、上記の復号化された符号化データに対して実行するステップと、
− その結果を、第2の内部符号化により符号化するステップと、
によって得られる。
好ましくは、上記の復号化するステップ、実行するステップ及び符号化するステップは、単一のテーブル又はテーブルネットワークへと結合される。
第1の符号化は内部符号化としてよい。第2の内部符号化は、第1の符号化と同じ符号化としてよい。第1の符号化は入力符号化としてもよい。
一実施形態において、仮想マシンデバイスは、1つ又は複数の再コード化命令を備える。例えばこれらの命令を、テーブル{O−1 及びO}、{O及びO−1 }の構成とするか、テーブルネットワーク{Wb[E]及びWb[D]}、{Wb[E]及びWb[D]}の構成としてもよい。
第1の符号化により符号化されたデータは、次のうちのいずれか1つである。すなわち、符号化された即時データと、仮想マシンのメモリから得られる内部符号化により符号化されたデータと、仮想マシンデバイスのレジスタから得られる内部符号化により符号化されたデータと、入力符号化により符号化された受信データとのうちのいずれか1つである。
対応するオペレーションルーチンは、ルックアップ手段、例えばルックアップテーブルとして又はテーブルネットワークとして実装され得る。ルックアップ手段は、符号化されたデータをルックアップして結果を取得するように構成される。そのようなテーブルは、全ての可能な入力についてオペレーションの結果を列挙することによって編纂され得る。
オペレーションが無制限のジャンプである場合、ルックアップテーブルは必要とされないことがある。有利には、コード及び/又はデータの符号化を、アドレス空間の符号化と組み合わせてもよいことに留意されたい。これにはアドレスの符号化と、コードの対応する再順序付けしか必要とされない。オペレーションを作り上げているコードが該コードを越えて広がり得るという結果を有する。条件付きジャンプのオペレーションは、その条件が関連するオペランドを入力として取るルックアップ手段、及びそのジャンプを行うべきかどうか(又は入力を与えたターゲットのテーブルであるか)を指示する単一の出力ビットを含むことがある。
オペレーションが、即時データのようなデータ又はメモリ/レジスタからのデータに対して作用するとき、そのオペレーションをそのようなデータ全てについて実行することによってテーブルが生成され得る。即時データに対する符号化を除去する復号化テーブルがこのテーブルに先行し得る。このテーブルの後に、例えば内部符号化のような符号化が続くことがある。
オペレーションがデータの移動又は書き込みを必要とする場合、そのようなオペレーションは、使用される場合、アドレス符号化を考慮して通常通り行われることがある。
平文命令はjava(登録商標)のバイトコードに対応し得る。また「javaカップ(cup)」も使用され得る。
本発明の更なる態様は、コード符号化により命令を符号化し、オプションで入力符号化によりデータを符号化するように構成される命令エンコーダである。命令エンコーダは、コンパイラの一部とすることができ、又は好ましくは例えばポストリンクステップの一部のようなリンカの一部とすることができる。ポストリンクステップは、少なくとも2つの鍵を使用することがあり、その1つは即時データ用に、もう1つは命令を暗号化するために使用することがあることに留意されたい。
例えば命令の即時データを、1つ又は複数の入力鍵により暗号化してもよく、これが行われた後、暗号化された即時データを含む命令が、命令鍵によって暗号化される。
本発明の更なる態様は、命令エンコーダと仮想マシンデバイスとを備える分散実行システムである。
本発明の更なる態様は、仮想マシンの方法に関する。仮想マシンの方法は、平文命令をコード符号化により符号化することによって得られる符号化された命令を受信するステップと、該符号化された命令をルックアップして、複数のオペレーションルーチンのうち対応するオペレーションルーチンであって、上記符号化された命令に対応する平文命令を実行するように構成される対応するオペレーションルーチンを選択するステップと、該対応するオペレーションルーチンをアクティブにするステップとを備える。
一実施形態において、上記方法は、一連の平文命令のそれぞれ1つをコード符号化により符号化すること、例えば一連の平文命令のそれぞれ1つをコード暗号化鍵により暗号化することによって、一連の暗号化された命令を取得するステップを備える。
いくつかのクラウドコンピューティングの使用ケースも可能である。例えばデータをクラウドへシフトすることは、プライバシ保護を保ちつつ、ハードウェアを低減させる。例えば患者のデータのようなプライバシの繊細な情報をクラウドに格納することができる。繊細なデータの漏洩を回避するために、データの処理全体が、暗号化された領域内で、すなわち暗号化された命令及びデータを使用することによって実行され得る。好ましくはVMの入力データと出力データの双方が暗号化される。
分散実行環境は、仮想マシンデバイスからの結果を受信するレシーバも含むことがある。レシーバは、仮想マシンデバイスの出力符号化を除去する出力デコーダを含むことがある。例えばレシーバを、医療データを処理するのに仮想マシンデバイスを使用する病院に配置してもよい。
仮想マシンデバイスは、電子デバイス内、特にサーバ内で具現化されることがある。仮想マシンデバイスは、モバイルデバイス、例えばモバイルフォンやセットトップボックス、コンピュータ、タブレット等内で具現化されることもある。
仮想マシンデバイスは、セキュリティトークンにおいて具現化されることがある。セキュリティトークンは仮想マシンデバイスを備え、チャレンジレスポンスプロトコルを実行するコード及びチャレンジを受信するように構成される。コードは、コード符号化により符号化され、チャレンジは入力符号化により符号化される。セキュリティトークンは従ってソフトウェアで実装され、信頼性のない環境において動作することがある。
本発明に係る方法は、コンピュータ実行方法としてコンピュータにおいて実装されるか、又は専用のハードウェアにおいて、又はその双方の組み合わせで実装され得る。本発明に係る方法の実行可能コードが、コンピュータプログラム製品に格納されることがある。コンピュータプログラム製品の例には、メモリデバイス、光ストレージデバイス、集積回路、サーバ、オンラインソフトウェア等が含まれる。好ましくは、コンピュータプログラム製品は、該プログラム製品がコンピュータ上で実行されると本発明に係る方法を実行するために、コンピュータ読取可能媒体上に格納される非一時的なプログラムコード手段を備える。
好適な実施形態にいて、コンピュータプログラムは、該コンピュータプログラムがコンピュータ上で実行されると、本発明に係る方法のステップを全て実行するように適合されたコンピュータプログラムコード手段を備える。好ましくは、コンピュータプログラムはコンピュータ読取可能媒体上に具現化される。
本発明は、例として添付の図面を参照して更に詳細に説明される。
図面を通じて、同様又は対応する機能は同じ参照符号によって示される。
本発明に係る仮想マシンを示すブロック図である。 オペレーションルーチン、特にオペレーションルーチン126の可能な実装を示すブロック図である。 本発明に係る仮想マシンを使用するシステムを示すブロック図である。 ホワイトボックス暗号を示すブロック図である。 コード及び/又はデータの暗号化の様々な方法を示す図である。 コード及び/又はデータの暗号化の様々な方法を示す図である。 コード及び/又はデータの暗号化の様々な方法を示す図である。 コード及び/又はデータの暗号化の様々な方法を示す図である。 コード及び/又はデータの暗号化の様々な方法を示す図である。 本発明の一実施形態を示す図である。 オペレーションについてのルックアップテーブルの構築を示す図である。 コード、データの暗号化及び出力の暗号解除を図示するブロック図である。 本発明に係る仮想マシンを示すブロック図である。 本発明に係る方法を図示するフローチャートである。
本発明は、多くの異なる形式の実施形態が可能であるが、本発明は、本開示が本発明の原理の例示として解釈されるべきであり、本発明は図示及び説明される具体的な実施形態に限定されるようには意図されていないという理解の下で、図面に示されており、本明細書において詳細に1つ又は複数の具体的な実施形態について説明される。
<ホワイトボックス暗号法>
本発明は、ホワイトボックス暗号法の使用を可能にすることができる。ホワイトボックス暗号法は、ホワイトボックスモデルにおける脅威に対処する。ホワイトボックスの攻撃モデルを使用して、信頼できない実行環境、すなわちアプリケーションが、実行プラットフォームからの攻撃の対象となる環境において動作するアルゴリズムを分析する。
暗号システムにおける敵の攻撃能力をキャプチャする3つの主な攻撃モデルを区別することができる。これら3つの攻撃モデルには以下のものがある。
・ブラックボックスモデルは、敵が暗号システムの機能性に対するアクセスのみを有することを保証するモデルであり、従来の攻撃モデルである。
・グレーボックスモデルは、敵が、漏洩機能(leakage function)によりサイドチャネル暗号解読技術を展開するのを可能にする。
・ホワイトボックスモデルは、敵が暗号システムのソフトウェア実装について全体的な可視性を有し、その実行プラットフォームに対する完全な制御を有するのを可能にする。ホワイトボックスモデルは最悪のモデルと言われることがある。
ホワイトボックスの攻撃モデルは、したがって、これらに応えるための予防措置を必要とし、条件を有する。様々なアルゴリズムについてホワイトボックスの実装が存在し、これらを本発明において用いてよい。ブロック暗号のDES及びAESの例では、暗号化と暗号解除の双方にホワイトボックスの実装が利用可能である。
既存のホワイトボックスの実装の欠点は、これが1つの目的にのみ、すなわち暗号化又は暗号解除、典型的には1つの特定の鍵に対してのみ適切であるに過ぎないことである。本発明は、ホワイトボックス攻撃モデルにおけるセキュリティを依然として提供しつつ、任意のコードの実行を可能にする仮想マシンを提供することである。
ホワイトボックスを、本発明において、例えばいずれか1つの入力復号化に使用してよい。しかし、ホワイトボックス暗号と本発明に係る仮想マシンは全く異なる。ホワイトボックス暗号はコードを実行することができない。
ホワイトボックス暗号化又は暗号解除のプリミティブは、典型的に、対称暗号のような暗号を実装する。好ましくは、ブロック暗号のホワイトボックス実装が使用される。例えば入力再コーダ(潜在的に、入力復号化と内部符号化の一方又は双方)、出力再コーダ(潜在的に、内部復号化と出力符号化の一方又は双方)又は再コード化命令のうちのいずれか1つが、ホワイトボックス暗号化又は暗号解除として実装されてもよく、あるいはホワイトボックス暗号化又は暗号解除を備えてもよい。
ホワイトボックス暗号は、ソフトウェア実装であり、この場合、秘密鍵がインスタンス化される。その目標は、ホワイトボックス暗号の成果が、少なくとも基礎となる暗号に対するブラックボックス(例えば総当たりの)攻撃と同程度となることである。1つの理想的な解決策は、暗号を1つの大きなルックアップテーブルとして実装することであろう。しかしながら、これは実際のブロック暗号にとって実現可能ではない。この理想に近づくホワイトボックスのストラテジは、非特許文献2(S. Chow,P. Eisen,H. Johnson,及びP.C. van Oorschot,“A White-Box DES Implementation for DRM Applications”, Computer Science 2003,the book Digital Rights Management of the Lecture Notes 2002 [42,43])に紹介されている。特定のブロック暗号において、計算は、鍵情報がネットワーク全体にわたって広がるようにランダム化されるルックアップテーブルのネットワークとして実装され得る。ブロックを構築することはそれぞれ、鍵とは独立にシームレスに行われる。そのため、敵は、秘密鍵の情報を得るために、完全なネットワークを分析することを余儀なくされる。テーブルのネットワークの難読化は、難読化変換を、テーブル内に記録される変換に対してプリペンド及びアペンドすることによって可能である。このようにして、全ての難読化変換の組み合わせが取り消される一方、それぞれ個々のテーブルはランダム化される。
図3は、テーブルのネットワークを図示する。ほとんどの機能をテーブルのネットワークとして表してよい。例えばテーブルのネットワークは、例えば暗号のホワイトボックス実装としてもよい。ここで示されているのは、複数のテーブルのうちの8つのテーブルである。テーブルは、入力値を、該入力値のテーブルルックアップによって出力値に変換する。ホワイトボックス実装の外部から入力を受信するための複数の入力テーブル310の3つが示されている。複数の出力テーブル330の1つが示されている。複数の出力テーブル330は一緒に、例えば連結によってホワイトボックス実装の出力を形成する。複数の中間テーブル320の4つが示されている。中間テーブルは、少なくとも1つの入力をこれらのテーブルのうちの別のテーブルから受け取り、少なくとも1つの他のテーブルへの入力として使用するための出力を生成する。テーブル310、320及び330は一緒にネットワークを形成する。暗号はブロック暗号とすることができ、ブロック暗号は暗号化又は暗号解除のために構成され得る。ブロック暗号は、特定の鍵についてブロック暗号、例えばAESを暗号化し、テーブルはその特定の鍵に依存する。
図1aは、仮想マシン100を示すブロック図である。仮想マシン100は、コードチャネル210からコードを、入力チャネル240から入力データを受信し、出力チャネル260への出力を生成する。この説明ではチャネルを抽象化する。仮想マシン100は典型的に、ソフトウェアで実装され、コンピュータ(図示せず)上で動作する。
コードチャネル210から、仮想マシン100は、命令としても知られる一連のオペレーションを受け取る。例えば命令は、例えばjavaバイトコード等のバイトコード又は8086アセンブリ命令としてもよい。例えばコードチャネル210は、インターネットのようなネットワークから又はコードファイルが格納されるファイルサーバからコードを受信するための入力部とすることができる。コードを、仮想マシン100がホストされるのと同じコンピュータに格納してもよい。典型的に、オペレーションはデータアイテム、例えばコードワードとして表される。議論を簡単にするために、オペレーションの正確な起点を、コードチャネル210として抽象化する。
仮想マシン100は、セレクタ110を備える。セレクタ110は、コードチャネル210から受信した一連のオペレーションから1つのオペレーションを読み取り、該オペレーションを実行するための適切なオペレーションルーチンを決定する。セレクタ110は、いわゆる「ケース」ステートメントとして実装され得る。そのようなケースステートメントは、入力として、例えば数値オペランドとして表されるオペレーションを受信し、出力として、実行のために適切なルーチンにジャンプする。あるいはセレクタ110は、受信したオペレーションと、オペレーションルーチンによって表されるオペレーションとの間の等価性をテストする、一連の比較ステートメントとして実装されることもある。比較ステートメントが成功である場合、すなわち等価性がある場合、次いでコントロールが、対応するオペレーションルーチンへと、例えばgo−toコマンドによって移されることがある。
仮想マシン100内の複数のオペレーションルーチンのうち、図1aに示されているのは、オペレーションルーチン122、124及び126である。例として、オペレーションルーチン126が詳細に描かれている。しかしながら、ルーチン122及び124も、オペレーションルーチン126と同じように構成される。セレクタ110は、コードチャネル210から受信したオペランドに応じて、オペレーションルーチンの実行を開始する。例として、オペレーションルーチン126がセレクタ110によって選択されると想定する。アドレス暗号化が使用される場合、ルーチン122、124及び126を含むオペレーションルーチンの元のアドレスは、単に他のアドレスとなるだけであることに留意されたい。
図1の実施形態では、全ての符号化が、暗号化として、例えば特定の鍵についての対称暗号として実装されると想定する。符号化を暗号化として表すことにより、ランダムな双射を選択する効果的な方法が提供される。暗号化が符号化のために使用される場合、ときどきエンコーダの代わりに暗号化器という用語を使用し、デコーダの代わりに暗号解除器という用語を使用することがあるだろう。しかしながら、必ずしも符号化をいずれか特定の暗号化に制限する必要はなく、特に符号化、復号化及び再コード化がルックアップ手段により実装される場合、例えばランダム双射又は特別なプロパティを有する双射等の任意のランダムな双射であることもあり、例えば双射の一部は、仮想マシンデバイスが実装される基礎となるハードウェアのプロパティに依存する可能性がある。
コードチャネル210から受信されるオペレーションは、暗号化する暗号(encrypting cipher)により、例えばコード暗号化器414によって、秘密鍵の制御の下ですでに暗号化される。例えばブロック暗号を使用して、コードを、例えばコードブックモードで暗号化してもよい。
図6はこのことを図示している。VMを使用する前に、平文コードは、コード鍵、すなわち鍵kを用いて、例えばまず平文コードを作成することによって、すなわち本明細書では平文コードチャネル412として表される一連の平文命令によって暗号化される。オペレーションは、コード暗号化器414によって暗号化され、その結果として、コードチャネル210上で使用され得る暗号化されたオペレーションが得られる。好ましくは、コードの暗号化は、編纂の後に、例えばリンク中に行われる。オペレーションの暗号化を補償するため、興味深いことに、対応する復号化ステップは、VM100において明示的に必要とはされない。例えば複数のオペレーションルーチンは、暗号化されたオペレーションに応答してセレクタ110が正しいオペレーションルーチンを選択するようにシャッフルされ得る。ホワイトボックスの実装がオペレーションルーチンに使用される場合、後に、暗号化されたオペレーションから正しいオペレーションを再構築することは難しくなる。その後、ケースラベルが再順序付けされる、例えばソートされ得る。
好ましくは、コード暗号化器414は、全ての可能なオペレーションを表す値の範囲から、同じ範囲まで暗号化する。あるいは、小さな範囲の暗号化器が使用されることもあり、例えばバイトコードが使用される場合、バイトサイズのブロック暗号が使用され得る。また16ビットサイズのブロック暗号が使用されることもある。例えばコード暗号化器414は、固定のビットサイズのワードとして表される1つの平文命令を暗号化して、同じビットサイズのワードとして表される複数の暗号化された命令としてもよく、典型的にビットサイズは4、8、16及び32を含む。例えばブロック暗号は、より長いブロックサイズから小さいものへと適合され得る。例えばDESのようなFeistel暗号は、ラウンド関数をトランスケートして、所望のブロックサイズを半分にするように適合され得る。例えばAESは各ラウンドを所望の数のバイト又はワードに制限することによって適合され得る。一例として、コード暗号化器414はコードブックモードを使用する可能性がある。
図6は、平文入力チャネル422及び入力暗号化器434も示す。入力を仮想マシンデバイス100へ送信する前に、入力暗号化器424を使用して平文入力を暗号化することがある。図6は、出力暗号解除器464も示しており、出力暗号解除器464を使用して、仮想マシン100の出力を暗号解除することができる。
図1aは更に、メモリ132及びレジスタファイル134を示す。例えばオペレーションルーチン126等のオペレーションルーチンは、ローカルの一時的な又は非揮発性のストレージに対して読み書きを行うことがある。
例えばオペレーション126等のオペレーションルーチンは、該オペレーションルーチンが実装するオペレーションについて、1つ又は複数のオペレランドを必要とすることがある。仮想マシン100は、入力チャネル240へのアクセスを有する。再び複数の代替構成が、特にクラウドにおける入力チャネル240について可能である。例えば仮想マシン100は、分散ストレージ又は分散コンピューティングを用いて、他のコンピュータを介して入力を受信することがある。仮想マシン100は、ユーザ等からの入力を受信することがある。仮想マシン100への入力は、暗号化されてもされなくてもよい。この入力は、オペレーションルーチンによって内部的に使用される符号化に向けて、入力再コーダ140によって再コード化され得る。オペレーションルーチンが、典型的には一時的に格納される中間結果に対して更に作用する場合、これらは、オペレーションルーチン126によって使用される符号化において既に格納されているので、メモリ132又はレジスタファイル134は通常再コード化を必要としない。ホワイトボックス暗号法と難読化の対は、特に符号化、復号化及び再コード化に適している。
例えばオペレーション126等のオペレーションルーチンは、そのオペレーションのために1つ又は複数のオペランドを使用することがある。仮想マシン100は、入力チャネル240へのアクセスを有する。再び複数の代替構成が、特にクラウドにおける入力チャネル240について可能である。例えば仮想マシン100は、分散ストレージ又は分散コンピューティングを用いて、他のコンピュータを介して入力を受信することがある。仮想マシン100は、ユーザ等からの入力を受信することがある。仮想マシン100への入力は、暗号化されてもされなくてもよい。この入力は、オペレーションルーチンによって内部的に使用される符号化に向けて、入力再コーダ140によって再コード化され得る。外部符号化が、入力すなわちオペランドの内部符号化と同じである場合、又は入力データの暗号化が使用されない場合、入力再コーダ140を省略してもよい。
オペレーションルーチンは、エクスポート用のデータ、すなわち仮想マシン100の出力も生成することがある。出力は出力チャネル260に送信される。出力は、仮想マシン100から複数の方法でエクスポートされ得る。例えば出力結果は、別のコンピュータへ、例えば受信した入力を送ったのと同じコンピュータへと、例えばネットワークを介して送信され得る。出力は、恐らくは異なるコンピュータ上の、恐らくは分散コンピューティング及び/又はストレージの一部として更に使用するためのファイルへと書き込まれることがある。仮想マシン100の出力は暗号化されても、されなくてもよい。仮想マシン100が内部暗号化を使用しない場合、例えばコードチャネル210に対してのみ暗号化を使用する場合、あるいは仮想マシン100が内部使用に対するものと同じ暗号化を出力に使用する場合、出力再コーダ160を省略してもよい。出力再コーダ160を使用して、データを、外部により使用される暗号化へと再コード化することができる。
コードチャネル210及び入力チャネル240は、結合、例えばインターリーブされ得る。
仮想マシン100は、ホワイトボックス暗号又は他の符号化を様々な方法で使用してよい。
セレクタ110は、以下のように実装され得る。
While (true)
Do
{
Fetch (instruction);
Decode (instruction);
Execute (instruction); // incorporating Instruction = next (instruction);
}
仮想マシン100における実行用にアプリケーションを準備するため、コード、すなわち一連の命令を、暗号化関数E及び鍵kを使用して暗号化する。暗号化関数Eは、好ましくはブロック暗号とすることができる。コードは次いで、一連の暗号化された命令、すなわち一連のE_k(命令)となる。E_kは、鍵kによる暗号化を示す。VMのメインループの復号化オペレーションは、鍵kを用いてインスタンス化される暗号解除関数のホワイトボックス実装、すなわちWB[D_k]を用いて拡張され得る。例えば関数のホワイトボックス実装を、WB[ ]により該関数を包含することによってテーブルのネットワークとして示す。
仮想マシン100のメインループは次のようである可能性がある。
While (true)
Do
{
Fetch (instruction);
Decode (WB [Dk] (instruction));
Execute (instruction); // incorporating Instruction = next (instruction);
}
驚くべきことに、DecodeとWB[Dk]の構成を「融解(melt)」して、Melted_WB_and_decoder(x) == Decode (WB[Dk] (x)にすることができる。命令の実行を行う復号化ケースの規約は、単にその「融解」の結果として再順序付けされ得る。特に命令の実装、すなわちオペレーションルーチンが、ホワイトボックスで行われるか又は他の方法で難読化される場合、これは、システムの攻撃の可能な開始点、すなわちWB[Dk]関数を除去する。ホワイトボックスがオペレーションで使用されない場合であってもケース規約の任意の再順序付けが起こり得る。
命令の暗号化は、単独では入力データ又は出力データの難読化を提供しない。改善された実施形態では、入力チャネル240のためのデータが暗号化される。この暗号化を補償するために、入力再コーダ140は、例えば読み取りを介して入力チャネル240にアクセスするVM内の命令の一部として、WB[Dk’]を備えている。
別の改良では、上記のものと組み合わせてもよいが、アプリケーションの出力チャネルへの書込みが、ホワイトボックス暗号化WB[Ek’’]を用いて暗号化される。後にその結果が、例えばセキュアなプラットフォーム上で取得され、Dk’を使用して暗号解除され得る。
更なる改善では、命令の実際のオペレーションが観測から隠される。オペレーションの機能性を隠すために、WB暗号化のエンコードとデコードの対、すなわちWB[EK’’’]とWB[DK’’’]が使用される。機能性はそのような対によって包含される。例えば(単項の)オペレーションの機能性がfであるとすると、新たな機能性は、new_f(x)==WB[EK’’’](f(WB[DK’’’](x)))なる。オペレーションが2項である場合、2項オペレーションのCurry形式が使用される。そのようにすることによって、レジスタ及びメモリ内の全ての情報はWB[EK’’’]によって暗号化されることになる。オペレータのほとんどの機能性について、(命令の意味の)包含は、分離不可能であることに留意されたい。簡潔性のために、ホワイトボックスを通じた上記符号化を、単項のオペレーションに対してのみ使用し得る。
後者は、入力及び出力チャネルに対する結果も有する。全てのオペレーションは、VMデータがWB[EK’’’]によって暗号化されることを期待するので、出力チャネルへ書き込む前に、入力チャネルを暗号化して暗号解除しなければならない。
入力チャネルに対する読み取りは、WB[EK’’’]及びWB[Dk.’]の構成であり、出力チャネルに対する書き込みは、WB[DK’’’]及びWB[Ek’’]の構成であろう。WBの意味において、これらは、好ましくは分離不可能に構成されることに再び留意されたい。分離不可能であることにより、部分的な分解が行われる可能性がないことを意味し、これは難読化のチャネル、レジスタ又は命令を提示するであろう。
鍵k’’’は、全てのVMに対して固有である。鍵k、k’、k”は、VMとアプリケーションとの間で共有される秘密である。
以下に、入力再コーダ140、出力再コーダ160及びオペレーション126において暗号化(符号化/再コード化)する様々なオプションを列挙する。
Figure 0006078555
ここで、“o”は関数の構成(function composition)を示す。関数の構成は右から左へ読まれる。右にある関数が最初に適用され、左にある関数が最後に適用される。Identityは、識別情報の変換(変更なし)を示す。Operは、オペレーションルーチン、例えばオペレーションルーチン126で実行されるオペレーションを示す。また、コード暗号化は鍵kを用いて使用され得る。セレクタ110はこの場合、WB[d_k]を備えるか再順序付けされて、暗号化を補償する。
上記の表は、単一のコード鍵、単一の入力鍵及び単一の内部鍵のみが使用されることを想定している。再コード化命令は、ある内部符号化から別のものへシフトするのに使用され得るので、これは拡張可能である。実装が鍵を使用する場合、1つより多くの鍵が存在する可能性がある。再コーダの命令のために、難読化は、アプリケーションとVMとの間で広がる可能性がある。
図1bは更に、内部オペレーションの暗号化を図示している。内部プリコーダ126aは、WB[Dk’’’]のために構成され、オペレーション126bは実際のオペレーションを実行し、そしてポストコーダ126cはWB[Ek’’’]のために構成される。この手法では、その後、内部暗号化鍵k’’’による内部暗号化が初めに除去され、次いでオペレーションが実行されて、その後内部暗号化が再び適用される。しかしながら、実際のオペレーションを実行するブロック126bが、テーブルネットワークを使用して実装される場合、次いでこれらはプリコーダ126a及びポストコーダ126cを用いて統合され得る。このようにして、オペレーションルーチン126のオペレーションは、コード自体が調査されたとしても、十分に難読化される。
図7は、仮想マシンを図示しており、ここで、コードは鍵kにより、入力は鍵’k’により、出力は鍵k’’により、内部オペレーションは鍵k’’’により暗号化される。
仮想マシン100は、VMを全て実行することができ、Ekによって暗号化されたコードを使用するサーバの環境において使用され得る。そのようにすることによって、アプリケーションのコードは、ホワイトボックス暗号化の使用を通じて完全に難読化される。暗号化されない状態で現れるコードはない。関係はVMとアプリケーションとの間の秘密の共有によって強化され得る。
さらに、VMを実行することができるサーバの環境において、入力チャネルがEk’を用いて暗号化されることもある。そのようにすることによって、アプリケーションの入力チャネル(複数可)が難読化される。暗号化されない状態で現れる入力値はない。関係はVMとアプリケーションとの間の秘密の共有によって強化され得る。
また、VMを実行することができるサーバの環境において、出力チャネルがEk’’を用いて暗号化されることがある。そのようにすることによって、アプリケーションの出力チャネル(複数可)が、ホワイトボックスの暗号化の使用を通じて難読化される。暗号化されない状態で現れる計算値はない。関係はVMとアプリケーションとの間の秘密の共有によって強化され得る。
コード鍵k、入力鍵k’又は出力鍵k’’のうちのいずれか1つを、デバイスIDにバインドしてもよい。例えば鍵がIDを備える可能性がある。この結果、VMが、正しいIDを有するデバイスにおいて実現されることが可能になる。
図4a、図4b、図4c、図4d及び図4eは、命令及びデータを符号化する様々な方法を示す。これらの符号化は、命令エンコーダによって、例えばリンカ又はポストリンクステップの一部として実行される可能性がある。
図4aは、平文の即時データ520とともに平文命令510を示す。平文命令510は、コード符号化550により、例えばコードエンコーダ550を通じて符号化され、符号化された命令515が得られる。即時データは、入力符号化570を用いて、例えば入力エンコーダ570を通じて別個に暗号化され、符号化されたデータ525が得られる。このタイプの符号化を使用するために、仮想マシンは、符号化された命令を正しいオペレーションにマップするルックアップ手段、例えばポインタと、符号化されたデータを、(外部符号化と異なる場合)内部符号化に従って符号化されたデータにマップするルックアップ手段を必要とするだけである。したがって小さなテーブルのみが必要とされるだけである。
図4bは、平文命令510と平文の即時データが双方ともコード暗号化により直接的に符号化される符号化タイプを示す。これは、平文命令510と平文の即時データが一緒に復号化されること必要とするので、難読性はより高いが、より大きなテーブルとなる。更なる即時データが必要とされる場合、この即時データは別個に、例えば入力符号化によって符号化され得ることに留意されたい。符号化された命令517を復号化するのに使用されるルックアップ手段は、2つのテーブルに分離され得る。すなわち、第1のテーブルが、符号化された命令に応答してオペレーションルーチンを取得し、第2のテーブルが即時データに応答して取得する。テーブルは、即時データを任意の適切な暗号化で、例えば内部符号化を用いて符号化された即時データを与え得ることに留意されたい。
図4cは、第3の方法の符号化を示している。ここでは、全ての即時データが入力符号化により符号化される。次に、命令が符号化され、この命令は場合によって即時データを含むことも含まないこともある。
図4dは、部分的な符号化を示す。命令510は即時データ520及び512とともにアセンブルされる。図4cのように、全ての即時データが入力符号化570を用いて符号化される。しかしながら、命令510及び符号化されたデータ525のみがコード符号化550により符号化され、符号化された命令516が得られる。符号化された命令516は、符号化されたデータ526と結合される。即時データの部分的符号化は、テーブルのサイズを小さい状態に保つ。
部分的符号化を、図4bのシステムを使用して行うことも可能であることに留意されたい。これは図4eに図示されている。命令510及び即時データ520は、コード符号化により符号化されて、符号化された命令517が得られる。追加の即時データ521は入力符号化により符号化される。
これらの符号化の全てがインプレースで行われ得ることに留意されたい。即時データは典型的に命令に隣接して置かれる。
1つには、命令セットは符号化スキーマを簡潔にするように適合される。例えば全ての命令が所定のサイズ、例えば1バイト、又は例えば1ビットのような1ワードの1つの即時データを正確に実行するように、命令のセットを設計することがある。複数のオペラント(例えば追加)を必要とする命令は、レジスタから残りのオペレランドを取ることがある。残りのオペランドは、命令に先行することによってレジスタ内に置かれている。オペランドを必要としない命令は、オペランドフィールド内にダミー値を有することがある。
図5aは、セレクタがどのように機能し得るかを示している。まず、セレクタは、符号化された命令を受信する。この例において、全ての命令は固定のサイズであり、例えば1バイトである(他のサイズも可能である)。この例において、符号化された命令は、4b又は4cのスキーマを使用して符号化される。例えば平文の命令は0xaaであり、平文の即時データは0x12である。(この例では)これらは一緒に符号化されて0x34abとなる。符号化された命令は、ルックアップ手段(この場合はルックアップテーブル710)を通じてルックアップされる。これにより、正しいオペレーションルーチン及びそのルーチンで使用するためのオぺランドへポイントする情報が見つかる。例えば0x22b3が見つかり、ここで0x22は特定のテーブルへポイントする(0x22からポインタアドレスへ行く中間のルックアップテーブルが存在し得ることに留意されたい)。「0x22」というオペレーションは、ルックアップテーブル720によって表される。ルックアップテーブル710の結果(0x22b3)において、0xb3の部分は、この例では0x12の即時データの符号化されたバージョンである。この符号化は、内部符号化により行われ得る。次に、テーブル720において0xb3がルックアップされる。この場合、オペレーションは、単一のオペランド、例えば否定オペレーションをとる。0xb3は、ここでは0xcaという結果を探すルックアップである。結果は、内部符号化によりすでに符号化される。内部符号化は同じものであってよく、異なる内部符号化であってもよい。
ルックアップテーブル710は、符号化された命令をルックアップして対応するオペレーションルーチンを選択するためにセレクタが備えるルックアップ手段の例である。
結果の0xcaは、オペレーションルーチン又は出力における更なる使用の可能性のために、仮想マシンデバイスのレジスタ内又はメモリ内に置かれることがある。
オペレーションは、このような単一のテーブルとして実装され得る。オペレーションは、複数のオペランドが必要とされる場合であっても単一のテーブルとして実装されてよい。この場合において、複数のオペランドを、ルックアップの前に連結してもよい。オペレーションはテーブルのネットワークとして実装されてもよい。オペレーションは標準のコードも含み得る。例えばジャンプ、条件付き又は無条件のものを標準のコードとして実装してもよい。条件付きの移動(conditional move)をテーブルとして実装してもよく、この場合、条件は追加の1ビットのオペランドであることに留意されたい。
図5bは、テーブルがどのように構築され得るかを示している。この場合、テーブルは2つのオペランドのオペレーションのためのものである。ルックアップテーブル750は、平文オペレーションのルックアップテーブルを表し、ここで、全ての可能な入力に対するオペレーションの全ての結果が単に、再現可能な順序で、すなわちソートされて列挙される。ルックアップテーブル730及び740は、入力を復号化するための内部復号化オペレーションを表す。ルックアップテーブル760は、結果に対する内部符号化を表す。730と740の復号化及び/又は760の符号化は全て、同じ内部符号化に対応し得るが、これは必ずしも必要ではない。最後に全てのオペレーションが構成される。例えば全ての可能な入力ついてテーブルを調べて、全ての結果をリストすることが可能である。
図8は、本発明に係る仮想マシンの方法600を図示する。ステップ610は、例えば一連の暗号化された命令を取得することにより、符号化された命令を受信することを備える。符号化された命令は、平文の命令をコード符号化により符号化することによって得られたものであり得る。一連の暗号化された命令は、一連の平文命令のそれぞれ1つを、コード暗号化鍵により暗号化することによって得られたものであり得る。平文命令は、例えば整数の数字として表される、デジタルデータアイテムとすることができる。ステップ620は、符号化された命令をルックアップして、複数のオペレーションルーチンのうちの対応するオペレーションルーチンを選択することを備える。対応するオペレーションルーチンは、符号化された命令に対応する平文命令を実行するように構成される。ステップ630は、対応するオペレーションルーチンをアクティブにすることを備える。
典型的に、命令の符号化は、ステップ610、620及び630とは異なるコンピュータにおいて実行されるであろう。この方法は、好ましくはコンピュータで実施される方法である。
当業者には明らかであるように、本方法を実行する多くの異なる様式が可能である。例えばステップの順序を変えることが可能であり、あるいは一部のステップを並行に実行してもよい。さらに、ステップの間に他の方法のステップを挿入してもよい。挿入されたステップは、本明細書で説明されるような方法の改良を表してもよく、あるいは本方法に関係のないものでもよい。例えばステップ620と630を、少なくとも部分的に並行に実行してもよい。さらに所与のステップは、次のステップが開始される前に完全に終了していなくてもよい。
本発明に係る方法は、プロセッサシステムに方法600を実行させる命令を備えるソフトウェアを使用して実行されてもよい。ソフトウェアは、システムの特定のサブエンティティによって行われるこれらのステップのみを含むことがある。ソフトウェアは、ハードディスク、フロッピー(登録商標)、メモリ等のような適切な記憶媒体に格納され得る。ソフトウェアは、有線若しくは無線により、又は例えばインターネットのようなデータネットワークを使用して信号として送信されてもよい。ソフトウェアは、サーバ上でのダウンロードに及び/又はリモート利用に利用可能にされ得る。
本発明は、コンピュータプログラムにまで広がること、特に本発明を実践的にするために適合される、搬送波上に又は搬送波内のコンピュータプログラムにまで広がることが認識されよう。プログラムは、ソースコード、オブジェクトコード、部分的に編纂される形式のようなコード中間ソース及びオブジェクトコードの形式、あるいは本発明に係る実装での使用に適した任意の他の形式とすることができる。コンピュータプログラム製品に関する実施形態は、説明された方法の少なくとも1つの方法の処理ステップの各々に対応するコンピュータ実行可能命令を備える。これらの命令は、サブルーチンにサブ分割され鵜か、静的に又は動的にリンクされ得る1つ又は複数のファイル内に格納され得る。コンピュータプログラム製品に関する別の実施形態は、説明されたシステム及び/又は製品の少なくとも1つシステム/製品についての手段の各々に対応するコンピュータ実行可能命令を備える。
上述の実施形態は、本発明を限定するのではなく例示するものであって、当業者には、特許請求の範囲から逸脱することなく、多くの代替的な実施形態を設計することが可能であることに留意されたい。特許請求の範囲において、括弧内に記載されるいずれかの参照符号は、請求項を限定するものとして解釈されるべきでない。「備える」という動詞及びその活用形の使用は、請求項内に記載されている要素又はステップ以外の要素又はステップの存在を排除するものではない。ある要素に先行する「1つの、ある(a、an)」という冠詞は、複数のそのような要素の存在を排除するものではない。本発明は、いくつかの別個の要素を備えるハードウェアの手段によって、適切にプログラムされたコンピュータの手段によって実装され得る。いくつかの手段を列挙するデバイスの請求項において、これらの手段のいくつかを、1つ及びハードウェアの同じアイテムによって具現化してもよい。特定の方策が異なる従属項おいて記載されているという単なる事実は、これらの方策の組み合わせを有利に用いることができないことを示すものではない。
100 仮想マシン
110 セレクタ
122、124、126 オペレーションルーチン
125a プリコーダ
125b オペレーション
125c ポストコーダ
132 メモリ
134 レジスタファイル
140 入力再コーダ
160 出力再コーダ
210 コードチャネル
222、224 ユーザデバイス
230 サーバ
240 入力チャネル
260 出力チャネル
310 入力テーブル
320 中間テーブル
330 出力テーブル
412 平文コードチャネル
424 入力暗号化器
462 平文出力チャネル
464 出力暗号解除器
510 平文命令
515、516、517 符号化された命令
520 平文即時データ
525、526 符号化された即時データ
521 追加の即時データ
550 コード符号化
570 入力符号化
710、720、730、740、750、760 ルックアップテーブル
600 仮想マシンの方法
610 符号化された命令を受信
620 符号化された命令をルックアップして、複数のオペレーションルーチンのうち対応するオペレーションルーチンを選択

Claims (15)

  1. 仮想マシンデバイスであって、
    − 特定の命令を実行するように各々が構成される複数のオペレーションルーチンと、
    − 符号化された命令を受信するように構成されるセレクタであって、平文命令をコード符号化により符号化することによって得られる前記符号化された命令を受信するように構成されるセレクタと、
    を備え、
    − 前記セレクタは、前記複数のオペレーションルーチンのうち対応するオペレーションルーチンを選択してアクティブにするように構成され、前記対応するオペレーションルーチンは、前記符号化された命令に対応する前記平文命令を実行するように構成され、
    − 前記セレクタは、符号化された命令をルックアップして前記対応するオペレーションルーチンを選択するためのルックアップ手段を備え、
    前記対応するオペレーションルーチンは、第1の符号化により符号化されたデータを受信し、第2の内部符号化により符号化された結果を生成するように構成され、該符号化された結果は、
    − 前記符号化されたデータを、第1の復号により復号するステップと、
    − 結果を取得するため、前記符号化された命令に対応する前記平文命令を前記の復号された符号化されたデータに対して実行するステップと、
    −前記結果を第2の内部符号化により符号化するステップと
    によって取得される、仮想マシンデバイス。
  2. 前記符号化された命令は、前記平文命令とともに使用するための即時データと一緒に前記平文命令を前記コード符号化により符号化することによって得られ、前記ルックアップ手段は、前記符号化された命令をルックアップして前記即時データを取得するように構成され、前記セレクタは、前記即時データにより前記対応するオペレーションルーチンをアクティブにするように構成される、請求項1に記載の仮想マシンデバイス。
  3. 前記符号化された命令は、前記平文命令を前記即時データと一緒にブロック暗号の単一のブロックで符号化することによって得らえたものである、請求項2に記載の仮想マシンデバイス。
  4. 前記即時データは、前記コード符号化により前記平文命令と一緒に符号化される前に、入力符号化を用いて符号化される、請求項2又は3に記載の仮想マシンデバイス。
  5. オペレーションルーチンによって使用するための追加のデータを受信するように構成された入力再コーダを備え、前記追加のデータは、入力符号化により符号化され、前記入力再コーダは、入力復号により前記データを復号し、内部符号化により符号化するように構成される、請求項1乃至4のいずれか1項に記載の仮想マシンデバイス。
  6. オペレーションルーチンによって生成されるデータ結果を受信するように構成された出力再コーダを備え、前記出力再コーダは、内部復号により復号された前記データ結果を再コード化して、出力符号化により符号化されたデータ結果にする、請求項1乃至5のいずれか1項に記載の仮想マシンデバイス。
  7. 前記の復号するステップ、実行するステップ及び符号化するステップは、単一のテーブル又はテーブルネットワークを使用して行われる、請求項1乃至6のいずれか1項に記載の仮想マシンデバイス。
  8. 第1の内部符号化により符号化されたデータは、符号化された即時データと、当該仮想マシンデバイスのメモリから取得される内部符号化により符号化されたデータと、当該仮想マシンデバイスのレジスタから取得される内部符号化により符号化されたデータとのうちのいずれか1つである、請求項1乃至7のいずれか1項に記載の仮想マシンデバイス。
  9. 前記対応するオペレーションルーチンは、符号化されたデータをルックアップして結果を取得するように構成されたルックアップ手段として構成される、請求項1乃至8のいずれか1項に記載の仮想マシンデバイス。
  10. 前記複数のオペレーションルーチンは、再コード化オペレーションを備え、該再コード化オペレーションは再コード化命令に対応し、該再コード化オペレーションは、第1の符号化により符号化されるデータを再コード化して、第2の符号化により符号化されるデータにするように構成される、請求項1乃至9のいずれか1項に記載の仮想マシンデバイス。
  11. 前記平文命令はjavaのバイトコードに対応する、請求項1乃至10のいずれか1項に記載の仮想マシンデバイス。
  12. コード符号化により命令を符号化し、オプションとして入力符号化によりデータを符号化するように構成される命令エンコーダと、
    請求項1乃至11のいずれか1項に記載の仮想マシンデバイスと
    を備える、分散実行システム。
  13. 仮想マシンにおいて実行される方法であって、
    − 符号化された命令を受信するステップであって、該符号化された命令は、コード符号化により平文命令を符号化することによって取得される、ステップと、
    − 前記符号化された命令をルックアップして、複数のオペレーションルーチンのうち対応するオペレーションルーチンを選択するステップであって、前記対応するオペレーションルーチンは、前記符号化された命令に対応する平文命令を実行するように構成される、ステップと、
    − 前記対応するオペレーションルーチンをアクティブにするステップと
    を備え、前記対応するオペレーションルーチンは、第1の符号化により符号化されたデータを受信し、第2の内部符号化により符号化された結果を生成するように構成され、該符号化された結果は、
    − 前記符号化されたデータを、第1の復号により復号するステップと、
    − 結果を取得するため、前記符号化された命令に対応する前記平文命令を前記の復号された符号化されたデータに対して実行するステップと、
    −前記結果を第2の内部符号化により符号化するステップと
    によって取得される、方法。
  14. コンピュータ上で実行されると、請求項13に記載の方法に係るステップの全てを実行するように適合されたコンピュータプログラムコードを備えたコンピュータプログラム。
  15. コンピュータ読取可能記憶媒体上に具現化される、請求項14に記載のコンピュータプログラム。
JP2014550776A 2012-01-09 2012-12-27 鍵駆動の難読化を用いる仮想マシンデバイス及び方法 Active JP6078555B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261584335P 2012-01-09 2012-01-09
US61/584,335 2012-01-09
PCT/IB2012/057739 WO2013104969A1 (en) 2012-01-09 2012-12-27 Virtual machine device having key driven obfuscation and method

Publications (2)

Publication Number Publication Date
JP2015504279A JP2015504279A (ja) 2015-02-05
JP6078555B2 true JP6078555B2 (ja) 2017-02-08

Family

ID=47790269

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014550776A Active JP6078555B2 (ja) 2012-01-09 2012-12-27 鍵駆動の難読化を用いる仮想マシンデバイス及び方法

Country Status (7)

Country Link
US (1) US10191754B2 (ja)
EP (1) EP2803009B1 (ja)
JP (1) JP6078555B2 (ja)
CN (1) CN104025104B (ja)
BR (1) BR112014016536A8 (ja)
RU (1) RU2620712C2 (ja)
WO (1) WO2013104969A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR112015014470A2 (pt) 2012-12-21 2017-07-11 Koninklijke Philips Nv compilador configurado para compilar um programa de computador, dispositivo de computação configurado para executar um programa de computador compilado por um compilador, método para executar um programa de computador compilado por um compilador e programa de computador
US10678709B2 (en) 2013-07-15 2020-06-09 Infineon Technologies Ag Apparatus and method for memory address encryption
US10176121B2 (en) * 2013-07-15 2019-01-08 Infineon Technologies Ag Apparatus and method for memory address encryption
EP2876593B1 (en) * 2013-11-21 2018-09-26 Nxp B.V. Method of generating a structure and corresponding structure
JP6357091B2 (ja) * 2014-12-03 2018-07-11 Kddi株式会社 情報処理装置、及びコンピュータプログラム
WO2016102180A1 (en) 2014-12-22 2016-06-30 Koninklijke Philips N.V. Hiding of a program execution
WO2016102202A1 (en) 2014-12-24 2016-06-30 Koninklijke Philips N.V. Cryptographic system and method
KR102311340B1 (ko) * 2015-01-15 2021-10-15 한국전자통신연구원 암호화 장치 및 방법
WO2016184695A1 (en) 2015-05-19 2016-11-24 Koninklijke Philips N.V. Computing with encrypted values
US10505709B2 (en) * 2015-06-01 2019-12-10 Nxp B.V. White-box cryptography interleaved lookup tables
US10110566B2 (en) * 2015-07-21 2018-10-23 Baffle, Inc. Systems and processes for executing private programs on untrusted computers
US9767318B1 (en) * 2015-08-28 2017-09-19 Frank Dropps Secure controller systems and associated methods thereof
US10102151B2 (en) * 2015-11-06 2018-10-16 International Business Machines Corporation Protecting a memory from unauthorized access
DE102017204020A1 (de) * 2017-03-10 2018-09-13 Siemens Aktiengesellschaft Verfahren zur rechnergestützten Obfuskation von Programmcode
WO2019020830A1 (en) 2017-07-28 2019-01-31 Koninklijke Philips N.V. EVALUATION OF A MONITORING FUNCTION
EP3439225A1 (en) * 2017-08-02 2019-02-06 Gemalto Sa Method to secure a software code performing accesses to look-up tables
US10140612B1 (en) 2017-12-15 2018-11-27 Clover Network, Inc. POS system with white box encryption key sharing
FR3079638B1 (fr) * 2018-03-29 2021-04-09 Airtag Procede de mise en oeuvre d'une fonction cryptographique pour une cle secrete
CN114189324B (zh) * 2021-11-12 2024-03-22 湖南遥昇通信技术有限公司 一种消息安全签名方法、系统、设备及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4120398A1 (de) * 1991-06-20 1993-01-07 Standard Elektrik Lorenz Ag Datenverarbeitungsanlage
JPH10301772A (ja) * 1997-04-30 1998-11-13 Sony Corp 情報処理装置および情報処理方法、並びに記録媒体
JP2000029790A (ja) * 1998-07-15 2000-01-28 Matsushita Electric Ind Co Ltd データセキュリティシステム
US6779114B1 (en) * 1999-08-19 2004-08-17 Cloakware Corporation Tamper resistant software-control flow encoding
US7124170B1 (en) * 1999-08-20 2006-10-17 Intertrust Technologies Corp. Secure processing unit systems and methods
US8220058B2 (en) * 2003-09-25 2012-07-10 Oracle America, Inc. Rendering and encryption engine for application program obfuscation
WO2006118086A1 (ja) * 2005-04-28 2006-11-09 Matsushita Electric Industrial Co., Ltd. プログラム変換装置、暗号処理装置、暗号処理方法
JP4938766B2 (ja) * 2006-04-28 2012-05-23 パナソニック株式会社 プログラム難読化システム、プログラム難読化装置及びプログラム難読化方法
US8584109B2 (en) * 2006-10-27 2013-11-12 Microsoft Corporation Virtualization for diversified tamper resistance
US8670559B2 (en) * 2008-03-05 2014-03-11 Irdeto Corporate B.V. White-box implementation
WO2009109884A1 (en) 2008-03-05 2009-09-11 Koninklijke Philips Electronics N.V. Cryptographic system
US8484661B2 (en) * 2010-03-19 2013-07-09 At&T Mobility Ii Llc Agnostic execution cluster for an agnostic execution environment

Also Published As

Publication number Publication date
EP2803009B1 (en) 2019-11-20
RU2620712C2 (ru) 2017-05-29
CN104025104A (zh) 2014-09-03
CN104025104B (zh) 2018-05-29
US20140380311A1 (en) 2014-12-25
WO2013104969A1 (en) 2013-07-18
BR112014016536A2 (pt) 2017-06-13
RU2014132881A (ru) 2016-02-27
EP2803009A1 (en) 2014-11-19
US10191754B2 (en) 2019-01-29
BR112014016536A8 (pt) 2017-07-04
JP2015504279A (ja) 2015-02-05

Similar Documents

Publication Publication Date Title
JP6078555B2 (ja) 鍵駆動の難読化を用いる仮想マシンデバイス及び方法
KR102363264B1 (ko) 하드웨어로 보호되는 디지털 권한 관리를 구비한 미디어 디코딩 제어
US8868925B2 (en) Method and apparatus for the secure processing of confidential content within a virtual machine of a processor
CN104298937B (zh) 用于存储器地址加密的装置和方法
US8135964B2 (en) Apparatus, system, method, and computer program product for executing a program utilizing a processor to generate keys for decrypting content
EP2352251A1 (en) Content decoding apparatus, content decoding method and integrated circuit
US20130142330A1 (en) Binding of protected video content to video player with block cipher hash
CN102484581A (zh) 使用中间数据更改的具有可配置密钥的白盒密码系统
CN111656345B (zh) 启用容器文件中加密的软件模块
CN110008662B (zh) 应用程序的运行方法、装置、电子设备及可读存储介质
RU2370897C2 (ru) Система блочной криптографической защиты, использующая преобразования для сокрытия основной функции криптографической защиты каждого цикла шифрования
US10867017B2 (en) Apparatus and method of providing security and apparatus and method of executing security for common intermediate language
JP2013175179A (ja) 少なくとも1つの暗号化された命令を備えるソフトウェアアプリケーションの協調実行のためのシステム、デバイスおよび方法
Wang et al. CS-DRM: a cloud-based SIM DRM scheme for mobile internet
KR101734663B1 (ko) 안드로이드 어플리케이션의 역공학 방지 방법 및 이를 수행하는 장치
CN114547558B (zh) 授权方法、授权控制方法及装置、设备和介质
CN103605927B (zh) 一种基于嵌入式Linux系统实现加密和解密方法及装置
US9838199B2 (en) Initialization vectors generation from encryption/decryption
US20210143978A1 (en) Method to secure a software code performing accesses to look-up tables
CN110516468A (zh) 一种虚拟机内存快照加密的方法和装置
EP3451214A1 (en) Computing device with computer program bounded thereto
GURUNADH et al. Secrete Image Transmission using AES Algorithm on Raspberry Pi
JP6162556B2 (ja) 記憶装置及び情報処理システム
KR20200136315A (ko) 주어진 비밀 키를 갖는 암호화 알고리즘을 구현하고 난독화하기 위한 방법
JP2008124824A (ja) 暗号化方法、復号方法、暗号化装置、及び復号装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161011

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161115

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170116

R150 Certificate of patent or registration of utility model

Ref document number: 6078555

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250