JP5184489B2 - 命令レベルのソフトウェア暗号化のための方法及び装置 - Google Patents

命令レベルのソフトウェア暗号化のための方法及び装置 Download PDF

Info

Publication number
JP5184489B2
JP5184489B2 JP2009261037A JP2009261037A JP5184489B2 JP 5184489 B2 JP5184489 B2 JP 5184489B2 JP 2009261037 A JP2009261037 A JP 2009261037A JP 2009261037 A JP2009261037 A JP 2009261037A JP 5184489 B2 JP5184489 B2 JP 5184489B2
Authority
JP
Japan
Prior art keywords
instruction
encrypted
label
instructions
subsequent
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.)
Expired - Fee Related
Application number
JP2009261037A
Other languages
English (en)
Other versions
JP2010140473A (ja
JP2010140473A5 (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.)
Thomson Licensing SAS
Original Assignee
Thomson Licensing SAS
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 Thomson Licensing SAS filed Critical Thomson Licensing SAS
Publication of JP2010140473A publication Critical patent/JP2010140473A/ja
Publication of JP2010140473A5 publication Critical patent/JP2010140473A5/ja
Application granted granted Critical
Publication of JP5184489B2 publication Critical patent/JP5184489B2/ja
Expired - Fee Related 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
    • 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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2924/00Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
    • H01L2924/30Technical effects
    • H01L2924/301Electrical effects
    • H01L2924/30107Inductance

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Storage Device Security (AREA)

Description

本発明は、ソフトウェアに関し、特にソフトウェアの暗号化と、プロセッサにおけるその復号及び実行とに関する。
このセクションは、以下に説明して特許を請求する本発明の様々な態様に関連する様々な態様の技術を読者に紹介することを意図するものである。この説明は、本発明の様々な態様の理解を容易にする背景情報を読者に提供する役に立つと思われる。従って、言うまでもなくこれらの記載は上記を考慮して読むべきであり、先行技術として認める(admissions of prior art)ものではない。
ソフトウェアコードを暗号化により保護し、そのソフトウェアコードを実行時のみに命令ごとに復号する技術は、従来、例えば特許文献1及び特許文献2により知られている。これらのシステムの欠点は、比較的容易にハッカーが命令を変更して何をしているか知ってしまうことである。
この欠点を解消するため、特許文献3は、コードの基本ブロック(basic blocks)をスクランブルして、シグネチャ(signature)を生成することによりインテグリティ(integrity)を確保することを提案している。このソリューションの欠点は、インテグリティを考慮しないでハッキングされたシステムでは、そのシステムをハックしようとするとき、まだ命令を置き換えることが可能だということである。
それゆえ言うまでもなく、背景技術の欠点の少なくとも一部を解消するソフトウェア暗号化ソリューションが必要である。本発明はかかるソリューションを提供するものである。
米国特許公報第5,386,469号 米国特許公報第6,345,359号 米国特許出願公開第2005/108507号
第1の態様では、本発明は、複数の分岐命令とラベル命令とを含む、コンパイルされたコンピュータコード命令のセットを暗号化して、実行時に命令ごとに復号する、コンパイルされたコンピュータコード命令の暗号化されたセットを求める方法に関する。前記コンパイルされたコンピュータコード命令のセットの実行は前記複数の分岐命令の各々から前記ラベル命令に直接続く。暗号化されたラベル命令が少なくとも前記ラベル命令の値と、前記複数の分岐命令の選択された分岐命令の値に依存するように、チェイン化(chained)された暗号関数を用いて前記ラベル命令を暗号化する。前記ラベル命令の直前に前記複数の分岐命令のどれが実行されても、実行時に同じ結果となるように、前記複数の分岐命令のうちの前記選択された分岐命令以外の少なくとも1つの分岐命令の各々に、前記暗号化されたラベル命令の復号の調整に用いる補償値を関連づける。
第1の好ましい実施形態において、前記ラベル命令の暗号化は、前記ラベル命令と関連づけられた擬似乱数にさらに依存する。
第2の好ましい実施形態において、コード鍵と、前記擬似乱数を生成する命令のオフセットとの関数として前記擬似乱数を生成する。
第3の好ましい実施形態において、前記ラベル命令の値と前記複数の分岐命令のうちの前記選択した分岐命令の値とは、それぞれのオプコード部分の値である。
第4の好ましい実施形態において、前記暗号化は、前記ラベル命令の値と、前記複数の分岐命令のうちの選択された分岐命令の値との排他的論理和をとることにより実行される。
第2の態様において、本発明は、チェイン化された暗号関数を用いて暗号化された、コンパイルされたコンピュータコード命令のセットを復号する方法に関する。コンパイルされたコンピュータコード命令の実行時、実行される関数の補償値と後続の暗号化された関数を求める。後続の暗号化された関数は、コンパイルされたコンピュータコード命令の実行時に、実行される関数に続くものである。前記後続の暗号化関数の擬似乱数を求める。前記チェイン化された暗号化関数に対応する暗号化関数を用いて前記後続の暗号化された命令を復号する。前記暗号化関数は少なくとも前記後続の暗号化された命令と、前記実行された命令と、前記擬似乱数と、前記補償値とから後続の関数を生成する。
第1の好ましい実施形態において、コード鍵と、後続の暗号化された関数のオフセットとの関数として擬似乱数を生成する。
第2の好ましい実施形態において、暗号化された関数は暗号化されたオプコードと、もしあれば暗号化されていないパラメータとを含み、前記実行された関数と前記後続の暗号化された関数のオプコードの部分のみを復号に用いる。
第3の好ましい実施形態において、前記後続の暗号化された命令の値と、前記実行された関数の値と、前記擬似乱数と、前記補償値の排他的論理和をとることにより復号を行う。
第3の態様では、本発明は、複数の分岐命令とラベル命令とを含むコンパイルされたコンピュータコード命令のセットを暗号化して、実行時に命令ごとに復号する、コンパイルされたコンピュータコード命令の暗号化されたセットを求める装置に関する。前記コンパイルされたコンピュータコード命令のセットの実行は前記複数の分岐命令の各々から前記ラベル命令に直接続く。この装置は、暗号化されたラベル命令が少なくとも前記ラベル命令の値と、前記複数の分岐命令の選択された分岐命令の値に依存するように、チェイン化された暗号関数を用いて前記ラベル命令を暗号化し、前記ラベル命令の直前に前記複数の分岐命令のどれが実行されても、実行時に、同じ結果となるように、前記複数の分岐命令のうちの前記選択された分岐命令以外の少なくとも1つの分岐命令の各々に、前記暗号化されたラベル命令の復号の調整に用いる補償値を関連づけるように構成されたプロセッサを含む。
第4の態様において、本発明は、チェイン化された暗号関数を用いて暗号化された、コンパイルされたコンピュータコード命令のセットを復号する装置に関する。この装置は、コンパイルされたコンピュータコード命令の実行時に、実行する関数の補償値を求め、前記コンパイルされたコンピュータコード命令の実行中に実行される関数に続く、後続の暗号化された関数を求め、前記後続の暗号化された関数の擬似乱数を求め、前記チェイン化された暗号化関数に対応する暗号化関数を用いて前記後続の暗号化された命令を復号するように構成されたプロセッサを含む。前記暗号化関数は少なくとも前記後続の暗号化された命令と、前記実行された命令と、前記擬似乱数と、前記補償値とから後続の関数を生成するように構成されたプロセッサを有する。
第5の態様において、本発明は、コンピュータにおいて実行したとき、本発明の第2の態様による方法を実行するコンピュータコード命令を含むデジタルサポート媒体に関する。
添付した図面を参照して、限定的でない例示により、本発明の好ましい特徴をここに説明する。
本発明の好ましい実施形態による、一般的なチェイニングモード暗号化方式を示す図である。 本発明の好ましい実施形態による、命令の暗号化法を詳細に示す図である。 本発明の好ましい実施形態を用いて暗号化したジャンプを有するコードの例を示す図である。 本発明の好ましい実施形態による、コード暗号化及び復号システムを示す図である。
本発明は、暗号化とその後の復号とによる、コンパイルしたソフトウェアコード命令のソフトウェアの保護を提案するものである。この説明を目的として、ハイレベルのコード命令は少なくとも下記の1つよりなる:
−ベーシックブロック(basic block)、すなわち常に順次に実行される一組のマシンレベル命令。ベーシックブロックがジャンプまたはそれと同様の命令を含む場合、最後のマシンレベルの命令である。これは、次のマシンレベルの命令は、通常はコードが実行された時に決まるからである。
−ラベル。これはジャンプ命令の行き先と言える。ベーシックブロックがラベルを含む場合、そのラベルは常に最初の命令として現れる。
図1は、本発明の好ましい実施形態による、一般的なチェイニングモード(chaining mode)暗号化方式を示す図である。通常、命令は、その命令と乱数とその前の命令との排他的論理和(XOR)をとることにより暗号化される。図1に示した例では、3つの命令を暗号化しているだけであるが、これをより多数(または少数)の場合に一般化できることは言うまでもない。
暗号化する命令である命令1、命令2、命令3を左端から第1列に示した。第2列は擬似乱数であり、命令ごとに異なることが好ましい。これらの擬似乱数は秘密鍵を用いたストリーム暗号102により提供される擬似乱数ストリームである。秘密鍵はコンパイルされた各コードに対して一意的であることが好ましい。ストリーム暗号は原始的な暗号(cryptographic primitives)であり、RC4やSalsaは非限定的な例である。ストリーム暗号として効果的に動作するように、カウンタモードのAES(AES−CTR)等のブロック暗号を用いることもできる。
第3列は前に暗号化された命令の値である。ただし、命令1には前の命令がないので、その替わりに初期化ベクトルIVを用いている。第4列は結果として得られた暗号化機能である。
図から分かるように、命令1は擬似乱数1及び初期化ベクトルIVと排他的論理和(XOR)され、暗号化命令1すなわち{命令1}となる。しかし、命令2は、擬似乱数2及び命令1とXORされ、暗号化命令2すなわち{命令2}となる。その他の命令も、擬似乱数及び前の命令とXORされ、同様に暗号化される。
当業者には言うまでもないことであるが、図1に示したチェイニングモード(chaining mode)は基本ブロックの暗号化にはうまく機能する。しかし、それ以外には使えない。例えばジャンプ命令などで複数の場所から来られる命令は、前の命令が複数あり、これらは互いに異なるからである。このため、1つの場合、すなわち「正しい」前の命令から後の命令に来た場合にのみ正しく復号することができる。
しかし、本発明は、コード全体をチェイン化することができる。このために、少なくとも一部(場合によっては全部)の命令に乱数補償値(compensator)を関連づける(associate)。この乱数補償値を用いて次の命令を暗号化及び復号する。後で説明するように、これらの乱数補償値により、前の命令がどれであっても命令を正しく暗号化できる。念のために言っておくと、乱数補償値は通常はランダムではないが、擬似乱数を補償する値である。
例えば、命令I14には2つの前の命令I13とIとがあり得ると仮定する。各先行命令には乱数補償値C13とCがそれぞれ関連付けられている。
乱数補償値が無い場合、命令I13からチェイン化された命令I14の暗号化は、次の通りである:
Figure 0005184489
ここで、
[外1]
Figure 0005184489
はXOR(排他的論理和)演算を示し、中括弧は暗号化された命令を示す。
同様に、命令Iからチェイニングする場合の命令I14の暗号化は、次の通りである:
Figure 0005184489
(多くの場合のように)IとI13とが異なれば、{I14}が取り得る値は2つある。乱数補償値C13とCは、{I14}の暗号値を同じにするために用いる。式は以下のようになる:
Figure 0005184489
上の2つの式の結果が同じになるようにするには、右辺が等しくなければならない。すなわち、
Figure 0005184489
この式を簡単にすると、
Figure 0005184489
この式は、
[外2]
Figure 0005184489
である場合に、暗号化結果が同じになることを意味している。
乱数補償値は、ランダムコレクションテーブル(RCT)に格納され、見出しには好ましくは暗号化されたバイナリコードが設けられる。
コードの復号はそのコードを実行する直前に行うのが好ましい。プロセッサ420は、秘密鍵を入力としたストリーム暗号202を用いて、各命令を復号する正しい擬似乱数値を生成できる。乱数補償値がある場合、命令Iから命令I14の復号は、次の通りである:
Figure 0005184489
また、命令I13から命令I14の復号は、次の通りである:
Figure 0005184489
2つの式は同じ復号結果I14を与える。
図2は、本発明の好ましい実施形態による、命令の暗号化法を詳細に示す図である。ソフトウェアコードをコンパイルするとき、コンパイラはジャンプを実行する命令に関する情報を提供する。この情報を用いて、コンパイルしたコードを暗号化する。
図1に示したように、命令2は、先行する命令1及び擬似乱数とXORをとることにより暗号化され、暗号化命令{命令2}となる。
図2は、擬似乱数の生成を詳細に示す図である。擬似乱数は(図1の場合と同様に、好ましくはRC4、Salsa、またはAES−CTRである)ストリーム暗号202により生成される。ストリーム暗号202は、入力として、コード鍵と命令オフセット206とを用いる。RCT204も命令オフセット206を入力として用い、乱数補償値Cを生成する。命令2の暗号化が補正(correction)を必要としない場合(これは命令2がラベルではない場合である)、RCT204には、命令オフセット206に関連づけられた情報は無いことが好ましい。
命令オフセット206はストリーム暗号202に情報を提供し、1つの命令に対して毎回同じ乱数値が生成されるようにする。当業者には言うまでもないが、かかる命令オフセットは、図1では必要ない。コードブロックは所定の順序で生成されるからである。一方、図2ではコードをジャンプすることが許される。すなわち、7番目に実行される命令は、必ずしもコードの7番目の命令ではない。
言うまでもなく、どのジャンプ命令の乱数補償値もゼロに設定し、コードの完全なチェイニングを可能とするように、補正すべき命令の乱数補償値の計算を必要に応じて繰り返すことが可能である。
図3は、本発明の好ましい実施形態を用いて暗号化したジャンプを有するコードの例を示す図である。図から分かるように、最後の命令Iには異なる2つの命令IとIとから行かれる。暗号化命令{命令8}が先行する命令にかかわらず同じになるようにするため、
[外3]
Figure 0005184489
となるようにする。簡単のため、図3には、命令を暗号化するのに用いる乱数Riは示していない。
を設定すると、C
[外4]
Figure 0005184489
として計算できる。一方、Cを設定すると、C
[外5]
Figure 0005184489
として計算できる。すでに述べたように、どちらの乱数補償値を設定するかは通常は問題ではなく、重要なことは、可能性のあるすべての先行命令から来る命令を復号できることである。
乱数補償値の値は上記のRCTテーブルに格納される。
図4は、本発明の好ましい実施形態による、コード暗号化及び復号システム400を示す図である。システム400は、コンパイルされたバイナリコード「コード」を受け取り、暗号化するように構成された暗号化装置410を有する。暗号化装置410は、前記のように、バイナリコードをスクランブルするように構成されている。暗号化装置410は、スクランブルされたコード{コード}Kが対象とする(intended)プロセッサ420の公開鍵Kpubを格納し、秘密コード鍵Kを生成する。この秘密コード鍵は毎回変わる(すなわち、コードごとに異なる)ことが好ましい。公開鍵Kpubは対象とする装置(または複数の装置)に対して一意的である。ストリーム暗号は秘密鍵Kを用いて、ランダムストリームを生成する。秘密鍵Kは、安全に送信するため、公開鍵Kpubを用いて暗号化され、暗号化された秘密鍵{K}Kpubとなる。{K}Kpubには、好ましくはそのヘッダに、バイナリコードが提供される。
暗号化装置410は、1つ以上のプロセッサで実施され、またはコードをコンパイルするように構成されたコンパイラを含み、さらに少なくとも1つの通信部とメモリとをさらに含む装置の一部で実施される。暗号化装置410は、コンパイルされたコードを分析し、暗号化するのに必要なラベル等の情報を見つけるように構成されている。
暗号化装置410は、スクランブルされたコード{コード}Kと暗号化された秘密鍵{K}Kpubとを、同じチャネルまたは別々のチャネルを介して、プロセッサ420に送信するようにさらに構成されている。言うまでもなく、スクランブルされたコード{コード}Kは、暗号化された秘密鍵{K}Kpubといっしょに、またはそれ無しに、CD−ROM等のデジタルサポート媒体430で、または任意の適切なデジタル配信ネットワーク(例えば、インターネット、LAN、UMTS)で配信してもよい。
プロセッサ420はバイナリコードヘッダから暗号化された秘密鍵{K}Kpubを取り出す。プロセッサ420は、好ましくは、公開鍵に対応する秘密鍵Kprivを用いて{K}Kpubを復号するように構成された暗号プロセッサ421を有する。秘密鍵Kprivは好ましくはセキュアな(不正操作できない)記憶場所に格納される。暗号プロセッサは、秘密鍵Kを用いて、スクランブルされたコード{コード}Kをデスクランブル(descramble)し、バイナリコードを求めるように構成されている。命令がデスクランブルされると、このバイナリコードは、キャッシュ423に送られ、キャッシュ423からさらに第2のプロセッサ(CPU)424に送られ、実行される。プロセッサ420は、RCTを格納するように構成されたメモリ(RAM)422をさらに有する。
本システムと方法は通常のプロセッサを用いて実施してもよいが、言うまでもなく、いわゆる暗号プロセッサ(crypto-processor)を用いるとより安全になり有利である。
上記の説明では、命令が暗号化されていると説明した。当業者には言うまでもなく、命令の長さはいわゆるオプコード(opcode)に付随(associated)する変数の数により変化し得る。
第1の変形例では、各命令のオプコードのみを暗号化し、変数は暗号化しない。
第2の変形例では、暗号化に用いる擬似乱数を最も長い命令と同じ長さにする。そうすれば、オプコードを最初に復号して、そのオプコードにリンクされている変数の長さを知ることができる。次に、第2のパスで、変数を復号する。第2の変形例を用いて命令をチェイン化するため、現在の命令と比較して先行する命令の方が長ければ、その先行する命令を現在の命令の長さに切り捨てる(truncate)。しかし、先行する命令の方が短ければ(または長さが同じなら)、切り捨ては必要ない。
当業者には言うまでもなく、問題となる命令に先だってどの命令が実行されても、暗号化値が同じになるように乱数補償値を計算した場合に、命令を暗号化するのに用いる擬似乱数を、その命令自体またはそれに先行する命令に付随させることが可能である。
明細書、特許請求の範囲、及び図面に開示した各特徴は、独立に設けることもできるし、適切に組み合わせて設けることもできる。ハードウェアで実施されると説明した機能はソフトウェアでも実施できるし、その逆の場合もある。
特許請求の範囲に示す参照符号は例示であり、請求項の範囲を限定するものではない。

Claims (12)

  1. 複数の分岐命令とラベル命令とを含むコンパイルされたコンピュータコード命令のセットを暗号化して、実行時に命令ごとに復号する、コンパイルされたコンピュータコード命令の暗号化されたセットを求める方法であって、
    前記コンパイルされたコンピュータコード命令のセットの実行は前記複数の分岐命令の各々から前記ラベル命令に続き、
    前記方法は一装置において、
    前記ラベル命令と、前記複数の分岐命令のうちの選択された分岐命令の値とを入力とするチェイン化された暗号化関数を用いて前記ラベル命令を暗号化するステップと、
    前記複数の分岐命令のうちの前記選択された分岐命令以外の少なくとも1つの分岐命令の各々を、前記暗号化されたラベル命令と前記ラベル命令の直前に実行された分岐命令とを入力とする復号関数を用いる前記暗号化されたラベル命令の復号に用いる補償値と関連づけるステップと、
    を含む方法。
  2. 前記ラベル命令の暗号化は、前記ラベル命令と関連づけられた擬似乱数にさらに依存する、請求項1に記載の方法。
  3. コード鍵と、前記擬似乱数を生成する命令のオフセットとの関数として前記擬似乱数を生成するステップをさらに含む、請求項2に記載の方法。
  4. 前記ラベル命令の値と前記複数の分岐命令のうちの前記選択した分岐命令の値とは、それぞれのオプコード部分の値である、請求項1に記載の方法。
  5. 前記暗号化は、前記ラベル命令の値と、前記複数の分岐命令のうちの選択された分岐命令の値との排他的論理和をとることにより実行される、請求項1に記載の方法。
  6. チェイン化された暗号化関数を用いて暗号化された、コンパイルされたコンピュータコード命令のセットを復号する方法であって、
    前記コンパイルされたコンピュータコード命令の実行時に、一装置において、
    実行された命令の補償値を求めるステップと、
    前記コンパイルされたコンピュータコード命令の実行中に、前記実行された命令に続く後続の暗号化された命令であって前記後続の命令と擬似乱数と第3の命令とを入力として前記チェイン化された暗号化関数を用いて暗号化された前記後続の暗号化された命令を求めるステップと、
    前記後続の暗号化された命令のための前記擬似乱数を求めるステップと、
    前記チェイン化された暗号化関数に対応する復号関数を用いて前記後続の暗号化された命令を復号して前記後続の命令を生成するステップであって、前記暗号化関数は前記後続の暗号化された命令と、前記実行された命令と、前記擬似乱数と、前記補償値を入力とする、復号するステップと、を含む方法。
  7. コード鍵と、前記後続の暗号化された命令のオフセットとの関数として前記擬似乱数を生成するステップをさらに含む、請求項6に記載の方法。
  8. 暗号化された命令は暗号化されたオプコードと、もしあれば暗号化されていないパラメータとを含み、前記実行された命令と前記後続の暗号化された命令のオプコードの部分のみを復号に用いる、請求項6に記載の方法。
  9. 前記後続の暗号化された命令の値と、前記実行された関数の値と、前記擬似乱数と、前記補償値の排他的論理和をとることにより復号を行う、請求項6に記載の方法。
  10. 複数の分岐命令とラベル命令とを含む、コンパイルされたコンピュータコード命令のセットを暗号化して、実行時に命令ごとに復号する、コンパイルされたコンピュータコード命令の暗号化されたセットを求める装置であって、
    前記コンパイルされたコンピュータコード命令のセットの実行は前記複数の分岐命令の各々から前記ラベル命令に直接続き、
    前記ラベル命令と、前記複数の分岐命令のうちの選択された分岐命令の値とを入力とするチェイン化された暗号化関数を用いて前記ラベル命令を暗号化し、
    前記複数の分岐命令のうちの前記選択された分岐命令以外の少なくとも1つの分岐命令の各々を、前記暗号化されたラベル命令と前記ラベル命令の直前に実行された分岐命令とを入力とする復号関数を用いる前記暗号化されたラベル命令の復号に用いる補償値と関連づけるように構成されたプロセッサを有する装置。
  11. チェイン化された暗号化関数を用いて暗号化された、コンパイルされたコンピュータコード命令のセットを復号する装置であって、
    前記コンパイルされたコンピュータコード命令の実行時に、
    実行された命令の補償値を求め、
    前記コンパイルされたコンピュータコード命令の実行中に、前記実行された命令に続く後続の暗号化された命令であって前記後続の命令と擬似乱数と第3の命令とを入力として前記チェイン化された暗号化関数を用いて暗号化された前記後続の暗号化された命令を求め、
    前記後続の暗号化された命令のための前記擬似乱数を求め、
    前記チェイン化された暗号化関数に対応する復号関数であって前記後続の暗号化された命令と前記実行された命令と前記擬似乱数と前記補償値とを入力とする復号関数を用いて前記後続の暗号化された命令を復号して前記後続の命令を生成するように構成されたプロセッサを有する装置。
  12. コンピュータにおいて実行したとき、前記コンピュータに請求項6乃至9いずれか一項の方法を実行させるコンピュータプログラム。
JP2009261037A 2008-12-15 2009-11-16 命令レベルのソフトウェア暗号化のための方法及び装置 Expired - Fee Related JP5184489B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP08305946A EP2196937A1 (en) 2008-12-15 2008-12-15 Methods and devices for instruction level software encryption
EP08305946.9 2008-12-15

Publications (3)

Publication Number Publication Date
JP2010140473A JP2010140473A (ja) 2010-06-24
JP2010140473A5 JP2010140473A5 (ja) 2011-01-13
JP5184489B2 true JP5184489B2 (ja) 2013-04-17

Family

ID=40627567

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009261037A Expired - Fee Related JP5184489B2 (ja) 2008-12-15 2009-11-16 命令レベルのソフトウェア暗号化のための方法及び装置

Country Status (7)

Country Link
US (1) US8341426B2 (ja)
EP (2) EP2196937A1 (ja)
JP (1) JP5184489B2 (ja)
KR (1) KR101632658B1 (ja)
CN (1) CN101751243B (ja)
AT (1) ATE520091T1 (ja)
TW (1) TWI478050B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11918175B2 (en) 2018-10-23 2024-03-05 Amicro Semiconductor Co., Ltd. Control method for carpet drift in robot motion, chip, and cleaning robot

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2541196C2 (ru) * 2010-07-22 2015-02-10 Награвисьон С.А. Способ обеспечения целостности программного обеспечения
US8745408B2 (en) * 2011-04-08 2014-06-03 Infineon Technologies Ag Instruction encryption/decryption arrangement and method with iterative encryption/decryption key update
CN104272317B (zh) 2012-06-01 2017-09-15 英特尔公司 在更安全的执行环境中标识并执行多个指令的子集
US8812873B2 (en) 2012-09-26 2014-08-19 Intel Corporation Secure execution of a computer program using binary translators
US9311493B2 (en) * 2013-07-30 2016-04-12 Battelle Memorial Institute System for processing an encrypted instruction stream in hardware
EP2884692B1 (en) * 2013-12-13 2020-05-20 Nxp B.V. Updating software on a secure element
US9547758B2 (en) 2014-05-19 2017-01-17 Nxp B.V. Program cable obfuscation based upon recently executed program code
EP2978159A1 (en) 2014-07-21 2016-01-27 Nxp B.V. Nonce generation for encryption and decryption
DE102015201430A1 (de) * 2015-01-28 2016-07-28 Ihp Gmbh - Innovations For High Performance Microelectronics / Leibniz-Institut Für Innovative Mikroelektronik Intrinsische Authentifizierung von Programcode
CN104917610B (zh) * 2015-06-15 2018-03-06 上海交通大学 基于量子真随机数的通信中继服务器安全系统及方法
FR3047100B1 (fr) * 2016-01-26 2018-03-02 Commissariat A L'energie Atomique Et Aux Energies Alternatives Methode de chiffrement d'un flot d'instructions et execution d'un flot d'instructions ainsi chiffre.
TWI760546B (zh) * 2017-08-23 2022-04-11 安地卡及巴布達商區塊鏈控股有限公司 用於高安全性高速資料加密及傳輸的電腦實施系統與方法
EP3614293A1 (en) * 2018-08-24 2020-02-26 Nagravision S.A. Securing data stored in a memory of an iot device during a low power mode
CN109698504A (zh) * 2019-03-08 2019-04-30 张文韬 潮流计算结果分析方法及系统
EP4002165A1 (en) * 2020-11-18 2022-05-25 Thales DIS France SA Code flow protection with error propagation
US11409846B2 (en) * 2021-01-14 2022-08-09 Safelishare, Inc. User controlled trusted and isolated computing environments
US20220342655A1 (en) * 2021-04-22 2022-10-27 STMicroelectronics (Grand Ouest) SAS Microcontroller, computer program product, and method for adding an additional function to a computer program

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4562305A (en) * 1982-12-22 1985-12-31 International Business Machines Corporation Software cryptographic apparatus and method
US5386469A (en) 1993-08-05 1995-01-31 Zilog, Inc. Firmware encryption for microprocessor/microcomputer
US5675645A (en) * 1995-04-18 1997-10-07 Ricoh Company, Ltd. Method and apparatus for securing executable programs against copying
JPH1055273A (ja) * 1996-06-05 1998-02-24 Matsushita Electric Ind Co Ltd ソフトウェア保護装置
US6061449A (en) * 1997-10-10 2000-05-09 General Instrument Corporation Secure processor with external memory using block chaining and block re-ordering
US6345359B1 (en) 1997-11-14 2002-02-05 Raytheon Company In-line decryption for protecting embedded software
US6333983B1 (en) * 1997-12-16 2001-12-25 International Business Machines Corporation Method and apparatus for performing strong encryption or decryption data using special encryption functions
US6971022B1 (en) * 1999-06-15 2005-11-29 Matsushita Electric Industrial Co., Ltd. Cryptographic apparatus for performing cryptography on a specified area of content data
ATE366443T1 (de) * 2000-05-22 2007-07-15 Infineon Technologies Ag Sicherheits-datenverarbeitungseinheit sowie dazugehöriges verfahren
JP4098478B2 (ja) * 2001-01-31 2008-06-11 株式会社東芝 マイクロプロセッサ
JP2004246637A (ja) * 2003-02-14 2004-09-02 Fainaaku Kk 固有情報化プロセッサ、これを備えた処理装置および記憶装置、関連するプログラム実行方法、およびコンピュータプログラム
JP2005050116A (ja) * 2003-07-28 2005-02-24 Matsushita Electric Ind Co Ltd 命令実行装置およびその方法
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
JP4737592B2 (ja) * 2005-02-16 2011-08-03 ルネサスエレクトロニクス株式会社 データ処理装置
US8495367B2 (en) * 2007-02-22 2013-07-23 International Business Machines Corporation Nondestructive interception of secure data in transit
US8538012B2 (en) * 2007-03-14 2013-09-17 Intel Corporation Performing AES encryption or decryption in multiple modes with a single instruction
JP2009169489A (ja) * 2008-01-11 2009-07-30 Oki Electric Ind Co Ltd 暗号化方法、復号化方法、暗号化装置、復号化装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11918175B2 (en) 2018-10-23 2024-03-05 Amicro Semiconductor Co., Ltd. Control method for carpet drift in robot motion, chip, and cleaning robot

Also Published As

Publication number Publication date
EP2196938B1 (en) 2011-08-10
ATE520091T1 (de) 2011-08-15
US20100153745A1 (en) 2010-06-17
CN101751243A (zh) 2010-06-23
TW201023031A (en) 2010-06-16
KR101632658B1 (ko) 2016-06-22
JP2010140473A (ja) 2010-06-24
TWI478050B (zh) 2015-03-21
CN101751243B (zh) 2015-02-18
EP2196937A1 (en) 2010-06-16
EP2196938A1 (en) 2010-06-16
US8341426B2 (en) 2012-12-25
KR20100069588A (ko) 2010-06-24

Similar Documents

Publication Publication Date Title
JP5184489B2 (ja) 命令レベルのソフトウェア暗号化のための方法及び装置
JP5779434B2 (ja) セキュリティ装置及びセキュリティシステム
US8538015B2 (en) Flexible architecture and instruction for advanced encryption standard (AES)
US8634549B2 (en) Ciphertext key chaining
US8416947B2 (en) Block cipher using multiplication over a finite field of even characteristic
US9515818B2 (en) Multi-block cryptographic operation
JP5167348B2 (ja) ソフトウェア暗号化方法およびソフトウェア暗号解読方法およびソフトウェア暗号化装置およびソフトウェア暗号解読装置
JP6880017B2 (ja) 信頼できないコンピュータ上でプライベートプログラムを実行するためのシステム及びプロセス
US20060023875A1 (en) Enhanced stream cipher combining function
KR20100017844A (ko) 데이터를 보호할 때 적용되는 프로그램 가능한 프로세싱 단계들을 정의하기위한 시스템 및 방법
EP2629225A1 (en) System, devices and methods for collaborative execution of a software application comprising at least one encrypted instruction
US8804953B2 (en) Extensive ciphertext feedback
US8041033B2 (en) Cipher feedback with variable block chaining
JP2018514816A (ja) 変形鍵を用いる高速aes
JPS6281145A (ja) デ−タ暗号化方式
Mahalakshmi et al. “Security-as-a-Service” for files in cloud computing—A novel application model
JP5268413B2 (ja) 開示制限処理装置及びデータ処理システム及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101119

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120327

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120627

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120828

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121127

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130116

R150 Certificate of patent or registration of utility model

Ref document number: 5184489

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160125

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees