JP7031070B1 - プログラム処理装置、プログラム処理方法、及び、プログラム - Google Patents
プログラム処理装置、プログラム処理方法、及び、プログラム Download PDFInfo
- Publication number
- JP7031070B1 JP7031070B1 JP2021544438A JP2021544438A JP7031070B1 JP 7031070 B1 JP7031070 B1 JP 7031070B1 JP 2021544438 A JP2021544438 A JP 2021544438A JP 2021544438 A JP2021544438 A JP 2021544438A JP 7031070 B1 JP7031070 B1 JP 7031070B1
- Authority
- JP
- Japan
- Prior art keywords
- entry address
- value
- fake
- program
- address
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
Description
設定値を複写したセーブ値と、前記設定値を記憶するストレージと、エントリーアドレスとを対応付けたコンフィグレーションデータを記憶した記憶部と、
アプリケーションプログラムの実行前に、前記セーブ値を用いて前記コンフィグレーションデータの前記エントリーアドレスをマスクした偽エントリーアドレスを生成し前記アプリケーションプログラムが使用しているエントリーアドレスを前記偽エントリーアドレスに置換するマスク処理を実行するエントリーアドレスマスク部と、
前記アプリケーションプログラムの実行中に、前記偽エントリーアドレスがロードされたかどうかを判定するメモリ監視部と、
前記偽エントリーアドレスがロードされたと前記メモリ監視部が判定した場合、前記ストレージから前記設定値をロードして前記設定値を用いて前記偽エントリーアドレスをアンマスクした新エントリーアドレスを生成して前記偽エントリーアドレスを前記新エントリーアドレスに置換するアンマスク処理を実行するエントリーアドレスアンマスク部と
を備えた。
***構成の説明***
図1に基づいて、プログラム処理装置100の構成を説明する。
プログラム処理装置100は、プロセッサ101と、主記憶メモリ102と、記憶装置103と、入出力インタフェース104と、ストレージ105とを備えるコンピュータである。これらのハードウェアは信号線を介して互いに接続されている。
プロセッサ101は、演算レジスタを有し、演算レジスタに命令とデータとをロードして命令に従ったデータ処理を実行する。
例えば、プロセッサ101は、CPUあるいはFPGAである。
ICは、Integrated Circuitの略称である。
CPUは、Central Processing Unitの略称である。
FPGAは、Field Programable Gated Arrayの略称である。
RAMは、Random Access Memoryの略称である。
ROMは、Read Only Memoryの略称である。
HDDは、Hard Disk Driveの略称である。
以下、アドレスとは、主記憶メモリ102のメモリアドレスをいう。
SPIは、Serial Peripheral Interfaceの略称である。
UARTは、Universal Asynchronous Receiver Transmitterの略称である。
I2Cは、Inter-Integrated Circuitの略称である。
JTAGは、Joint Test Action Groupの略称である。
SWDは、Serial Wire Debugの略称である。
ストレージ105の具体例は、メモリ、又は、レジスタである。
ストレージ105は、プロセッサ101によりアクセスされるデータを記憶する。
ストレージ105は、主記憶メモリ102の一部でも構わないし、記憶装置103の一部でも構わないし、プロセッサ101のレジスタでもよいし、独立した記憶デバイスでもよい。
エントリーアドレスマスク部110とエントリーアドレスアンマスク部112とはソフトウェアで実現される。
メモリ監視部111は、プロセッサに内蔵されるメモリ監視ユニットのようなハードウェアにより実現される。例えば、メモリ監視部111は、ソフトウェアが扱う論理アドレスとハードウェアが扱う物理アドレスとを変換するメモリ管理ユニットあるいはプログラムの不正なメモリアクセスを防止するためのメモリ保護ユニットである。
図1に示すように、主記憶メモリ102には、記憶装置103に記憶されたソフトウェアとデータが読み込まれる。
アプリケーションプログラム120は、保護の対象となる保護対象プログラムである。
実行モジュール130は、バイナリコードで記載されており、プロセッサ101が解釈できるマシンランゲージで記載されている。
図1は、プロセッサ101が、実行モジュール130を主記憶メモリ102に読み込み、実行モジュール130を実行する直前の状態を示している。
対策プログラム122は、エントリーアドレスマスク部110とエントリーアドレスアンマスク部112の機能を実現するプログラムである。
エントリーアドレスは、所定の機能を有するモジュールの実行開始アドレスである。メモリ領域にエントリーされているモジュールの実行開始の先頭のアドレスなのでエントリーアドレスという。具体的には、エントリーアドレスは、アプリケーションプログラム120が使用している遷移命令における遷移先のメモリアドレスである。
モジュールとは、アプリケーションプログラム120がプログラム内で使用しているサブルーチン又は関数でもよいし、別なアプリケーションプログラムでもよい。
設定値は、エントリーアドレスで始まるモジュールの属性値でもよいし、エントリーアドレスで始まるモジュールを加工した加工値でもよいし、エントリーアドレスで始まるモジュールとは関係のない乱数値であってもよい。
設定値の具体例は、エントリーアドレスに遷移する権限を記載した値である。
アプリケーションプログラム120が複数個所において遷移命令を有していても遷移先のメモリアドレスが同じであれば、遷移先は1つのエントリーアドレスになり、設定値は1つのエントリーアドレスに対応して1つとなる。アプリケーションプログラム120が複数個所において遷移命令を有しており遷移先のメモリアドレスが異なれば、遷移先は複数のエントリーアドレスとなり、設定値は複数のエントリーアドレスに対応して複数になる。
エントリーアドレスマスク部110は、設定値を複写したセーブ値とエントリーアドレスとのペアを利用してマスク処理をする。エントリーアドレスマスク部110は、セーブ値を用いてアプリケーションプログラム120が使用しているエントリーアドレスをマスクする。
メモリ監視部111は、マスクされたエントリーアドレスへのアクセスを監視する。
エントリーアドレスアンマスク部112は、メモリ監視部111がマスクされたエントリーアドレスへのアクセスがあったと判断した場合に、設定値を用いて、ロードしたマスクされたエントリーアドレスをアンマスクして元のエントリーアドレスを取り出す。
図2のコンフィグレーションデータ121は、対策プログラム122がアプリケーションプログラム120のセキュリティを強化するために使用するデータである。
コンフィグレーションデータ121は、
1.セーブ値と、
2.設定値のストレージ(ストレージの識別子)と、
3.アプリケーションプログラム120が使用しているエントリーアドレスと
を対応付けているテーブルである。
セーブ値とは、設定値を複写した値である。ストレージ105に記憶された設定値をコンフィグレーションデータ121にセーブしているのでセーブ値という。設定値とエントリーアドレスとは対応しているのでセーブ値とエントリーアドレスとも対応している。
セーブ値と設定値とは、エントリーアドレスに対応した値である。セーブ値と設定値は、改ざんを防ぐデータであり保護の対象となる保護対象データである。
図2のコンフィグレーションデータ121における各項目の意味は以下のとおりである。
「ペア」とは、セーブ値とそのセーブ値に対応するエントリーアドレスとの対をいう。図2では、Pair1とPair2との2つのペアが図示されている。
「セーブ値」とは、ストレージ105に記憶されている設定値を複写した値である。複写した直後は、設定値とセーブ値とは同じ値であるが、設定値が改ざんされれば、設定値とセーブ値とは異なる値になる。セーブ値(設定値)は、Pair1のように1個でもよいし、Pair2のように2個以上の複数の個数でもよい。
「設定値のストレージ」とは、設定値を記憶したメモリ又はレジスタである。図2では、設定値のストレージを識別するために、識別子として、設定値を記憶したレジスタのレジスタ名「Reg1」と、設定値を記憶したメモリのメモリアドレス「900」が記憶されている。
「エントリーアドレス」は、所定の機能を有するもモジュールの実行開始アドレスであり、図2では、遷移命令における遷移先のメモリアドレス「500」とメモリアドレス「659」とが記憶されている。
図2のアプリケーションプログラム120の実行モジュール130は、バイナリコードで記載されているが、説明をわかりやすくするために、図2では、テキスト形式で表現している。
図2の実行モジュール130は、メモリアドレス100で変数Xに値「500」が格納されており、メモリアドレス110のロード命令により変数Xの値「500」をロードし、メモリアドレス120のジャンプ命令によりメモリアドレス500にジャンプしている。
記憶装置103に記憶されているアプリケーションプログラム120、対策プログラム122、オペレーティングシステム、ネットワークドライバ及びストレージドライバは、主記憶メモリ102に読み込まれ、プロセッサ101によって実行される。
主記憶メモリ102には、コンフィグレーションデータ121が読み込まれ、プロセッサ101によりアクセスされる。
なお、アプリケーションプログラム120と、コンフィグレーションデータ121と、対策プログラム122との一部又は全部がオペレーティングシステムに組み込まれていてもよい。
アプリケーションプログラム120と、対策プログラム122とは、前記の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えた各処理、各手順あるいは各工程を、コンピュータに実行させる。
また、プログラム処理方法は、プログラム処理装置100がプログラムを実行することにより行われる方法である。
アプリケーションプログラム120と、対策プログラム122とは、コンピュータ読取可能な記録媒体に格納されて提供されてもよい。また、アプリケーションプログラム120と、対策プログラム122とは、プログラムプロダクトとして提供されてもよい。
プログラム処理装置100は、アプリケーションプログラム120の実行前に、セーブ値を用いてアプリケーションプログラム120が使用しているエントリーアドレスをマスクした偽エントリーアドレスを生成して、エントリーアドレスを偽エントリーアドレスに置換する。
プログラム処理装置100は、アプリケーションプログラム120の実行中に、偽エントリーアドレスがロードされた場合、ストレージ105から設定値をロードして、設定値を用いて偽エントリーアドレスをアンマスクした新エントリーアドレスを生成して、偽エントリーアドレスを新エントリーアドレスに置換する。
図3に基づいて、プログラム処理装置100の動作を説明する。
動作開始前には、ストレージ105には、設定値が格納され、コンフィグレーションデータ121には、値が設定されているものとする。具体的には、設定値がセーブ値としてコンフィグレーションデータ121に複写されているものとする。また、ストレージ105の識別子と、設定値と対応付けられたエントリーアドレスとがコンフィグレーションデータ121に設定されているものとする。
対策プログラム122は、アプリケーションプログラム120とコンフィグレーションデータ121を記憶装置103から主記憶メモリ102へ読み込む。この時点で、アプリケーションプログラム120の実行モジュール130が主記憶メモリ102へ読み込まれてアプリケーションプログラム120がプロセッサ101により実行可能な状態になる。
図4に基づいて、ステップS140のエントリーアドレスのマスク処理を説明する。
ステップS141において、エントリーアドレスマスク部110は、セーブ値を用いてペアとなっているエントリーアドレスをマスクし、マスクしたエントリーアドレスを計算する。以下、マスクしたエントリーアドレスを偽エントリーアドレスという。
具体的には、エントリーアドレスマスク部110は、セーブ値にハッシュ関数を適用した後、得られたハッシュ値とエントリーアドレスに対してXOR演算を適用する。この処理は、次の式(1)で表すことができる。
Addr[mask]=Addr[raw](+)Hash(data[0])(+)...(+)Hash(data[n]) 式(1)
ここで、
Addr[mask]は、偽エントリーアドレス(マスクされたエントリーアドレス)、
Addr[raw]は、ペアとして与えられた元のエントリーアドレス、
Hash()は、ハッシュ関数、
(+)は、XOR(eXclusive OR)演算、
dataは、ペアとして与えられたセーブ値、
data[i](i=0...n)は、i番目のセーブ値、
Hash(data[i])は、i番目のセーブ値のハッシュ値を表す。
図5のコンフィグレーションデータ121は、図2のコンフィグレーションデータ121に偽エントリーアドレスを追加したものである。
Pair1は、セーブ値が1個なので、式(1)は以下のようになる。
Addr[mask]=Addr[raw](+)Hash(data[0])
図5では、偽エントリーアドレスが256になったものとしている。
756=500(+)Hash(1000)
Pair2は、セーブ値が2個なので、式(1)は以下のようになる。
Addr[mask]=Addr[raw](+)Hash(data[0])(+)Hash(data[1])
図5では、偽エントリーアドレスが560になったものとしている。
560=659(+)Hash(6012)(+)Hash(6013)
md5は、Message Digest algorithm 5の略称である。
sha256は、Secure Hash Algorithmの略称である。
CRCは、Cyclic Redundancy Checksumの略称である。
図5の(a)の実行モジュール130の場合、エントリーアドレスマスク部110は、メモリアドレス110のロード命令と、メモリアドレス120のジャンプ命令を検出する。
図5の(a)の実行モジュール130の場合、エントリーアドレスマスク部110は、メモリアドレス100の変数Xに格納される値「500」を、偽エントリーアドレスの値「756」で置換する(図5の(b))。
ステップS150において、プロセッサ101は、エントリーアドレスのマスク処理を施したアプリケーションプログラム120の実行を開始する。同時に、メモリ監視部11はアプリケーションプログラム120の監視を開始する。
図5の場合は、プロセッサ101は、図5の(b)のアプリケーションプログラム120を実行する。メモリ監視部111は図5の(b)のアプリケーションプログラム120の監視を開始する。
図5の(b)のアプリケーションプログラム120の場合、メモリ監視部111は、メモリアドレス110の実行時に偽エントリーアドレスの値「756」がロードされたことを検出し、メモリアドレス120のジャンプ命令を検出する。メモリ監視部111は、ジャンプ命令を実行せずアプリケーションプログラム120の実行を中断させる。
なお、このように、ある条件に応じて特別な処理を実行させるためには、メモリ監視部111が例外又は割込みを生じさせることで実現できる。例外又は割込みにより、プロセッサ101に実行しているプログラムの処理を中断させ、ステップS170の処理を実行させることができる。
ステップS170において、プロセッサ101は、エントリーアドレスアンマスク部112を起動する。エントリーアドレスアンマスク部112は、コンフィグレーションデータ121に記憶された「設定値のストレージ」を参照して、ストレージ105から設定値をロードする。
図5の(b)のアプリケーションプログラム120の場合、偽エントリーアドレスの値「756」がロードされたことが検出されると、エントリーアドレスアンマスク部112は、偽エントリーアドレスの値「756」に対応するストレージ「Reg1」をアクセスして、設定値「1000」をロードする。
Addr[raw]=Addr[mask](+)Hash(data[0])(+)...(+)Hash(data[n]) 式(2)
エントリーアドレスアンマスク部112は、処理を終了したことをプロセッサ101に知らせ、処理を終了する。
エントリーアドレスアンマスク部112が、元のエントリーアドレスを復元できた場合、アプリケーションプログラム120は、元のエントリーアドレスにジャンプする。
図5の(c)の場合、元のエントリーアドレス500=新エントリーアドレス500となる。アプリケーションプログラム120は、エントリーアドレス「500」にジャンプする。
ステップS170及びステップS180の処理により偽エントリーアドレスが正しくアンマスクされていれば、続くジャンプ命令で正しいエントリーアドレスに遷移することができる。エントリーアドレスへの遷移が成功した場合、ストレージ105に正しい設定値が記憶されていることを保証できる。
一方で、ストレージ105の設定値が不正な攻撃により改ざんされた場合、偽エントリーアドレスが正しくアンマスクできず、エントリーアドレスが正しく復元できない。そのため、続くジャンプ命令では異常な遷移となり、不正な攻撃は成功しない。
メモリ監視部111の処理は、ステップS160の処理である。
エントリーアドレスアンマスク部の処理は、ステップS170及びステップS180の処理である。
アプリケーションプログラム120の処理は、ステップS150の処理である。
対策プログラム122の処理は、ステップS150とステップS160を除く図3のすべての処理である。
また、偽エントリーアドレスはハッシュ値によりマスクされた値なので、偽エントリーアドレスが攻撃者に読まれても問題ない。
実施の形態1をTrusted Execution Environment(TEE)に適用する場合について説明する。
TEEは、ソフトウェアだけではなくハードウェアによるサポートによって、アプリケーションの安全な実行環境を実現する。
TEEは、メモリアクセス監視に基づく資源分離機構を有するプロセッサにより提供される。
TEEを提供するシステムでは、プロセッサの有するメモリ保護機構(Physical Memory Protectionと呼ばれる機構等)を使用してアプリケーション間のアクセス制御を行う。メモリ保護機構は、メモリアクセスのたびにアクセス権限を確認する。メモリ保護機構は、他のアプリケーションプログラムへの遷移実行時に、他のアプリケーションのアクセス権限を設定する。メモリ保護機構は、アプリケーションプログラムの実行開始のたびにアクセス権限を確認する。メモリ保護機構は、アクセス権限に基づいてメモリアクセス制御を行う。
プログラム処理装置100は、故障注入攻撃の対策を適用した上で、記憶装置103に記憶されたアプリケーションプログラム120を実行する。
故障注入攻撃は、プロセッサの処理に誤りを発生させ、プロセッサの処理が遷移先に遷移する際のメモリ保護機構のアクセス権限の設定をスキップする攻撃である。
設定値は、アプリケーションプログラムごとに設定されたメモリ保護機構のアクセス権限を示す値である。設定値は、メモリ保護機構がメモリ領域に対して設定するアクセス権限を示す値である。
アクセス権限は、メモリ領域とそのメモリ領域に対する属性とで定義される。
メモリ領域は、メモリアドレスにより示されるメモリの範囲である。
属性は、メモリ領域のデータに対して、実行・読み込み・書き込みのいずれの行為が可能かを示した値である。
ストレージは、メモリ保護機構が参照するレジスタあるいはメモリであり、メモリ保護機構が利用するレジスタあるいはメモリである。具体的には、ストレージは、メモリ保護機構が有する特殊なレジスタあるいは特殊なメモリである。
●マスク処理
エントリーアドレスマスク部110は、アプリケーションプログラムのメモリアクセスを監視するために使用するアクセス権限を示す値(セーブ値)をもとにアプリケーションプログラムの実行開始アドレスをマスクして偽エントリーアドレスを生成する。そして、アプリケーションプログラムの実行開始アドレスを偽エントリーアドレスで置換する。
●監視処理
メモリ監視部111は、アプリケーションプログラム120の実行中に、コンフィグレーションデータ121の偽エントリーアドレスを参照し、偽エントリーアドレスがロードされたかどうかをチェックする。そして、他のアプリケーションプログラムへの遷移があるか否かをチェックする。
●アンマスク処理
エントリーアドレスアンマスク部112は、他のアプリケーションプログラムへの遷移実行開始時に、ストレージに記憶されたアクセス権限を示す値(設定値)をもとに偽エントリーアドレスのマスクを解除して新エントリーアドレスを生成する。エントリーアドレスアンマスク部112は、新エントリーアドレスを他のアプリケーションプログラムの実行開始アドレスとする。
実施の形態1のプログラム処理装置100は、アクセス権限が改ざんされた場合、正しいエントリーアドレスから実行を開始できない仕組みを提供している。したがって、メモリ保護機構のアクセス権限が改ざんされた場合、アプリケーションプログラムの実行開始アドレスから実行を開始することができないことになる。
実施の形態1のプログラム処理装置100は、故障注入攻撃により任意の処理がスキップされ得る攻撃環境下であっても、メモリ保護機構のアクセス権限が正しく設定されることを保証するものである。実施の形態1のプログラム処理装置100は、メモリ保護機構のアクセス権限の確認を保証し、アプリケーションプログラムの不正な実行を禁止することができる。
また、実施の形態1によれば、メモリ保護機構への故障注入攻撃を防ぐことができる。
プログラム処理装置100は、エントリーアドレスと、エントリーアドレスに対応した設定値とを使用するアプリケーションプログラムを処理する信号処理装置である。
プログラム処理装置は、設定値を複写したセーブ値と、設定値を記憶するストレージの識別子と、エントリーアドレスとを対応付けたコンフィグレーションデータを記憶した記憶部を有する。
エントリーアドレスマスク部110は、アプリケーションプログラム120の実行前に、以下のマスク処理を実行する。
1.コンフィグレーションデータ121のセーブ値を用いてコンフィグレーションデータ121のエントリーアドレスをマスクした偽エントリーアドレスを生成する。
2.アプリケーションプログラム120が使用するエントリーアドレスを偽エントリーアドレスに置換する。
メモリ監視部111は、アプリケーションプログラム120の実行中に、偽エントリーアドレスがロードされたかどうかを判定する。
エントリーアドレスアンマスク部112は、偽エントリーアドレスがロードされたとメモリ監視部111が判定した場合、以下のアンマスク処理を実行する。
1.ストレージ105から設定値をロードして設定値を用いて偽エントリーアドレスをアンマスクした新エントリーアドレスを生成する。
2.偽エントリーアドレスを新エントリーアドレスに置換する。
実施の形態1のプログラム処理装置100によれば、コンフィグレーションデータ121に基づいてアプリケーションプログラム120にマスク処理とアンマスク処理とからなる対策を適用してアプリケーションプログラム120を実行する。その結果、セーブ値と設定値が一致していなければ、エントリーアドレスへの正しい遷移ができない。これにより、エントリーアドレスへの遷移が成功した場合、ストレージに正しい設定値が記憶されていることを保証できる。
マスク処理は、秘密鍵を使用した暗号化処理を適用し、アンマスク処理は、秘密鍵を使用した復号処理を適用してもよい。
例えば、エントリーアドレスのマスク処理において、ステップS141に示す偽エントリーアドレスの計算式は以下のような式(3)であってもよい。
Addr[mask]=Addr[raw](+)Enc(data[0],key)(+)...(+)Enc(data[n],key) 式(3)
ここで、Enc()とkeyは、それぞれ暗号化処理と秘密鍵とを表す。Enc(data[0],key)は、data[0]を秘密鍵keyで暗号化したものである。暗号化処理は、AESやRSA(登録商標)のような暗号を使用してもよい。
エントリーアドレスのマスク処理を式(1)の代わりに式(3)に置き換えた場合、ステップS180に示すアンマスク処理を次のように置き換える必要がある。
Addr[raw]=Addr[mask](+)Enc(data[0],key)(+)...(+)Enc(data[n],key) 式(4)
AESは、Advanced Encryption Standardの略称である。
RSA(登録商標)は、Rivest-Shamir-Adleman cryptosystemの略称である。
マスク処理は、エントリーアドレスをデータとし、セーブ値を秘密鍵として、エントリーアドレスを暗号化して偽エントリーアドレスを生成し、アンマスク処理は、偽エントリーアドレスをデータとし、設定値を秘密鍵とし、新エントリーアドレスを復号してもよい。
例えば、エントリーアドレスのマスク処理において、ステップS141に示すマスクしたエントリーアドレスの計算式は以下のような式(5)であってもよい。
Addr[mask]=Enc(...Enc(Enc(Addr[raw],data[0]),data[1])...,data[n]) 式(5)
Enc(Addr[raw],data[0])は、Addr[raw]を鍵data[0]で暗号化したものである。
Enc(Enc(Addr[raw],data[0]),data[1])は、Addr[raw]を鍵data[0]で暗号化したものをさらに鍵data[1]で暗号化したものである。
式(5)は、暗号化処理のデータとして元のエントリーアドレスを与え、鍵としてセーブ値を与える処理である。さらに、そうして得られた暗号化結果をデータとして、繰りかえしセーブ値を鍵として暗号化を行う。
エントリーアドレスのマスク処理を式(1)の代わりに式(5)に置き換えた場合、ステップS180に示すアンマスク処理を次のように置き換える必要がある。
Addr[raw]=Dec(...Dec(Dec(Addr[mask],data[n]),data[n-1])...,data[0]) 式(6)
Dec(Addr[mask],data[n]は、Addr[mask]を鍵data[n]で復号したものである。
Dec(Dec(Addr[mask],data[n]),data[n-1])は、Addr[mask]を鍵data[n]で復号したものさらに、鍵data[n-1]で復号したものである。
ここで、Decは式(5)に示すEncと対となる復号処理である。暗号化処理とは逆順でdata[i]を与えていることに注意されたい。このような特徴から、式(5)と式(6)により実現されるエントリーアドレスのマスク処理及びアンマスク処理で使用する暗号は、共通鍵暗号でなくてはならない。例えば、AESやKCiper-2のようなブロック暗号又はストリーム暗号でもよい。
遷移命令は、ジャンプ命令でなくてもよく、GOTO命令、CALL命令、RETURN命令でもよいし、関数実行命令、サブルーチン実行命令でもよい。
アプリケーションプログラム120及びコンフィグレーションデータ121は、記憶装置103ではなく、入出力インタフェース104を経由して外部から供給されてもよい。
コンフィグレーションデータ121のエントリーアドレスには、エントリーアドレスマスク部110が、ロード命令とジャンプ命令との検索結果により判明した遷移先のメモリアドレスを設定してもよい。
実施の形態1のプログラム処理装置100を、セキュアブートの保護に使用してもよい。
セキュアブートでは、ブートコードのハッシュ値のチェック処理後にブートコードの起動処理に遷移する。故障注入攻撃では、このハッシュ値のチェック処理をスキップし、不正なブートコードで起動させる。
実施の形態1のプログラム処理装置100をセキュアブートの保護に適用する場合、設定値とセーブ値とをブートコードのハッシュ値とし、エントリーアドレスをブートコードの実行開始アドレスとすればよい。
設定値=セーブ値=ブートコードのハッシュ値
エントリーアドレス=ブートコードの実行開始アドレス
実施の形態1のプログラム処理装置100を、認証チェック処理の保護に使用してもよい。
認証チェック処理では、ユーザからパスワードを受信し、パスワード検証し、パスワードが正しい場合に認証後の処理に移行する。故障注入攻撃では、パスワード検証をスキップし、不正に認証後の処理を実行させる。
実施の形態1のプログラム処理装置100を認証チェック処理の保護に適用する場合、設定値とセーブ値とをパスワード検証結果の値とし、エントリーアドレスを認証後の処理の実行開始アドレスとすればよい。
設定値=セーブ値=パスワード検証結果の値
エントリーアドレス=認証後の処理の実行開始アドレス
実施の形態2では、実施の形態1と異なる点について説明する。
実施の形態2のプログラム処理装置200は、アプリケーションプログラム120のプログラムコード140を入出力インタフェース104から取得する。プログラム処理装置200は、プログラム処理装置100の動作をすべてソフトウェアだけで実現するアプリケーションプログラム120を生成する。具体的には、プログラム処理装置200は、プログラムコード140に対して故障注入攻撃対策を適用して対策済み実行モジュールを生成する。
図6に基づいて、プログラム処理装置200の構成を説明する。
プログラム処理装置200は、プロセッサ101と、主記憶メモリ102と、入出力インタフェース104とを備えるコンピュータである。これらのハードウェアは信号線を介して互いに接続されている。
対策プログラム122は、遷移特定部210とエントリーアドレスマスク部211とアンマスク処理追加部212とコード生成部213との機能を実現するプログラムである。
対策プログラム122は、プログラムコード140を編集するエディタであり、プログラムコード140は、対策プログラム122が編集するデータである。
図6は、対策プログラム122が、プログラムコード140を編集するデータとして、主記憶メモリ102に読み込んだ状態を示している。
図7に基づいて、プログラム処理装置200の動作を説明する。
ステップS210において、プロセッサ101は、入出力インタフェース104を経由して、アプリケーションプログラム120のプログラムコード140とコンフィグレーションデータ121を受信し、主記憶メモリ102に読み込む。
コンフィグレーションデータ121は、図2に示すものと同じものとする。
ステップS240の処理の多くは、実施の形態1のマスク処理(図4)と同じである。具体的には、ステップS241、ステップS242、ステップS243、ステップS244はそれぞれ、ステップS141,ステップS142,ステップS143、ステップS144に対応する。ただし、対策を適用する対象が、実施の形態1では実行開始直前の実行モジュール130であり、実施の形態2ではプログラムコード140であるという違いがある。
ステップS241において、エントリーアドレスマスク部211は、セーブ値を用いて式(1)により、マスクしたエントリーアドレスを計算する。以下、マスクしたエントリーアドレスを偽エントリーアドレスという。
図9は、エントリーアドレスマスク部110が改定したコンフィグレーションデータ121を示している。図9のコンフィグレーションデータ121は、図5に示すものと同じものである。
図9の(a)のプログラムコード140の場合、1行目で変数Xに値「500」が格納され、2行目で変数Xの値「500」をロードし、3行目のジャンプ命令でメモリアドレス200にジャンプしているものとする。エントリーアドレスマスク部211は、3行目のジャンプ命令を検出する。
ステップS245において、アンマスク処理追加部212は、ステップS242で特定したエントリーアドレスへのジャンプ命令の直前に設定値を用いて偽エントリーアドレスをアンマスクするアンマスク処理をプログラムコード140に追加する。具体的には、式(2)によるアンマスク処理コードを、プログラムコード140と同じ言語で記述して、プログラムコード140に追加する。
図9の(c)の場合、アンマスク処理追加部212は、ストレージ「Reg1」から設定値「1000」を変数Zにロードするロード命令「LOAD Reg1 to Z」と、式(2)に基づき新エントリーアドレスを計算する計算式「X=(x)(+)hash(Z)」とを追加する。したがって、アンマスク処理コードが実行されると元のエントリーアドレス=新エントリーアドレスとなる。
例えば、アプリケーションプログラム120が複数か所において同一のアプリケーションプログラムに遷移する場合、アンマスク処理コードは同じコードになり、同一のアンマスク処理コードは冗長であり不要な処理となる。したがって、アプリケーションプログラム120が同一のアプリケーションプログラムに遷移する重複分だけアンマスク処理を削除する。
実施の形態2のアプリケーションプログラム120をTEEに適用した場合、設定値はアプリケーションプログラムごとのアクセス権限の値であり、アクセス権限の値の格納先はメモリ保護機構が有する特殊レジスタである。この特殊レジスタは複数のアプリケーションに対して共通であるため、アクセス権限の値の格納先は同じである。したがって、アンマスク処理コードは他のアプリケーションプログラムに遷移する数だけプログラムコード140に追加されるものの、アンマスク処理コードは共通の特殊レジスタからアクセス権限の値をロードしてアンマスクするという同一コードになる。この冗長なアンマスク処理コードを除く処理がステップS250の効果である。
実行モジュール130は、偽エントリーアドレスをアクセスする前に、コンピュータに、以下の処理を実行させるプログラムである。
1.ストレージから設定値をロードして設定値を用いて偽エントリーアドレスをアンマスクした新エントリーアドレスを生成する処理
2.偽エントリーアドレスを新エントリーアドレスに置換する処理
エントリーアドレスマスク部211の処理は、ステップS210、ステップS2220、ステップS230、ステップS241及びステップS244である。
アンマスク処理追加部212の処理は、ステップS245である。
コード生成部213の処理は、ステップS250及びステップS260である。
実施の形態2のプログラム処理装置200は、プログラム生成時にエントリーアドレスのマスク処理をし、プログラムコードにアンマスク処理コードを埋め込むプログラムコード生成装置である。
プログラム処理装置200は、設定値を複写したセーブ値と、設定値を記憶したストレージと、プログラムコード140が使用しているエントリーアドレスとを対応付けたコンフィグレーションデータ121を記憶した記憶部を有する。
遷移特定部210は、プログラムコード140から、エントリーアドレスに遷移する遷移命令を特定する。
エントリーアドレスマスク部211は、以下のマスク処理を実行する。
1.セーブ値を用いてコンフィグレーションデータ121のエントリーアドレスをマスクした偽エントリーアドレスを生成する。
2.プログラムコード140が使用しているエントリーアドレスを偽エントリーアドレスに置換する。
アンマスク処理追加部212は、遷移特定部210により特定された遷移命令の直前に、以下のアンマスク処理コードを追加する。
1.ストレージ105から設定値をロードして設定値を用いて偽エントリーアドレスをアンマスクした新エントリーアドレスを生成するコード。
2.新エントリーアドレスを使用したアンマスク処理を実行するアンマスク処理コード。
プログラム処理装置200は、コンフィグレーションデータ121に基づいてアプリケーションプログラム120に対策を適用して対策済みコードを生成することにより、実施の形態1と同じ対策を、ソフトウェアのみで実現することができ、メモリ監視部111が不要となる。
また、冗長なアンマスク処理コードが対策済みコードから除かれている。
プログラム処理装置200が扱うプログラムコード140は、アンマスク処理追加部212が、アンマスク処理コードが追加できるプログラムコードであればよい。
プログラムコード140は、実行モジュールのコード、ソースコード、スクリプトコード、中間コード、HTML(ハイパーテキストマークアップランゲージ)テキスト、又は、その他のコードでもよい。
実施の形態3では、実施の形態1と2と異なる点について説明する。
実施の形態3では、エントリーアドレスが遷移先のメモリアドレスではなく、参照先のメモリアドレスである場合を説明する。
実施の形態3では、図12のコンフィグレーションデータ121が使用されるものとする。図12のコンフィグレーションデータ121は、図5のコンフィグレーションデータ121と同じである。
図12の(a)の実行モジュール130の場合、メモリアドレス500に値「333」が格納されており、メモリアドレス110のロード命令によりメモリアドレス500の値「333」をロードし、メモリアドレス120の比較命令により変数Xの値と値「333」とを比較しているものとする。エントリーアドレスマスク部110は、コンフィグレーションデータ121のエントリーアドレスを参照し、エントリーアドレス「500」を参照するロード命令を検出する。メモリアドレス110のロード命令がメモリアドレス500の値「333」をロードしているので、エントリーアドレスマスク部110は、メモリアドレス110のロード命令を検出する。
エントリーアドレスマスク部110は、メモリアドレス100に格納された値「500」を、偽エントリーアドレスの値「756」で置換する(図12の(b))。
プロセッサ101は、図12の(b)のアプリケーションプログラム120を実行する。メモリ監視部111は図12の(b)のアプリケーションプログラム120の監視を開始する。
図12の(b)のアプリケーションプログラム120の場合、メモリ監視部111は、メモリアドレス110の実行時に偽エントリーアドレスの値「756」がロードされたことを検出し、アプリケーションプログラム120の実行を中断させる。
偽エントリーアドレスの値「756」がロードされたことが検出されると、エントリーアドレスアンマスク部112は、偽エントリーアドレスの値「756」に対応するReg1をアクセスして、設定値「1000」をロードする。
図12の(c)の場合、元のエントリーアドレス500=新エントリーアドレス500となっている。アプリケーションプログラム120は、エントリーアドレス「500」の値{333}と変数Xの値とを比較することができる。
プログラム処理装置200が扱うエントリーアドレスも遷移先メモリアドレスではなく、参照先メモリアドレスでもよい。
Claims (10)
- 設定値を複写したセーブ値と、前記設定値を記憶するストレージと、エントリーアドレスとを対応付けたコンフィグレーションデータを記憶した記憶部と、
アプリケーションプログラムの実行前に、前記セーブ値を用いて前記コンフィグレーションデータの前記エントリーアドレスをマスクした偽エントリーアドレスを生成し前記アプリケーションプログラムが使用している複数のエントリーアドレスのうち前記コンフィグレーションデータの前記エントリーアドレスと同じ値のエントリーアドレスを前記偽エントリーアドレスに置換するマスク処理を実行するエントリーアドレスマスク部と、
前記アプリケーションプログラムの実行中に、前記偽エントリーアドレスがロードされたかどうかを判定するメモリ監視部と、
前記偽エントリーアドレスがロードされたと前記メモリ監視部が判定した場合、前記ストレージから前記設定値をロードして前記設定値を用いて前記偽エントリーアドレスをアンマスクした新エントリーアドレスを生成して前記偽エントリーアドレスを前記新エントリーアドレスに置換するアンマスク処理を実行するエントリーアドレスアンマスク部と
を備えたプログラム処理装置。 - 設定値を複写したセーブ値と、前記設定値を記憶するストレージと、エントリーアドレスとを対応付けたコンフィグレーションデータを記憶した記憶部と、
プログラムコードから、前記エントリーアドレスに遷移する遷移命令を特定する遷移特定部と、
前記セーブ値を用いて前記コンフィグレーションデータの前記エントリーアドレスをマスクした偽エントリーアドレスを生成し前記プログラムコードが使用しているエントリーアドレスを前記偽エントリーアドレスに置換するマスク処理を実行するエントリーアドレスマスク部と、
前記遷移特定部により特定された前記遷移命令の直前に、前記ストレージから前記設定値をロードして前記設定値を用いて前記偽エントリーアドレスをアンマスクして前記コンフィグレーションデータの前記エントリーアドレスと同じ値の新エントリーアドレスを生成して前記新エントリーアドレスを前記遷移命令により遷移するエントリーアドレスとして設定するアンマスク処理を実行するアンマスク処理コードを追加するアンマスク処理追加部と、
を備えたプログラム処理装置。 - 前記セーブ値は、メモリ保護機構がメモリに対して設定する設定値であり、
前記ストレージは、メモリ保護機構が利用するレジスタあるいはメモリである請求項1又は2に記載のプログラム処理装置。 - 前記エントリーアドレスは、Trusted Execution Environment(TEE)で動作するアプリケーションのエントリーアドレスである請求項1から3のいずれか1項に記載のプログラム処理装置。
- 前記マスク処理は、前記セーブ値にハッシュ関数を適用した後、得られたハッシュ値と前記エントリーアドレスとにXOR(eXclusive OR)演算を適用して、前記偽エントリーアドレスを生成し、
前記アンマスク処理は、前記設定値に前記ハッシュ関数を適用した後、得られたハッシュ値と前記偽エントリーアドレスとにXOR(eXclusive OR)演算を適用して、前記新エントリーアドレスを生成し、
前記マスク処理と前記アンマスク処理とは、前記ハッシュ関数として、暗号学的ハッシュ関数と、非暗号学的ハッシュ関数と、ユニバーサルハッシュ関数とのいずれかを適用する請求項1から4のいずれか1項に記載のプログラム処理装置。 - 前記マスク処理は、前記セーブ値に秘密鍵を使用した暗号化処理を適用した後、暗号化した値と前記エントリーアドレスとにXOR(eXclusive OR)演算を適用して、前記偽エントリーアドレスを生成し、
前記アンマスク処理は、前記設定値に前記秘密鍵を使用した前記暗号化処理を適用した後、暗号化した値と前記偽エントリーアドレスとにXOR(eXclusive OR)演算を適用して、前記新エントリーアドレスを生成する請求項1から4のいずれか1項に記載のプログラム処理装置。 - 前記マスク処理は、前記エントリーアドレスをデータとし、前記セーブ値を秘密鍵として、前記エントリーアドレスを暗号化して前記偽エントリーアドレスを生成し、
前記アンマスク処理は、前記偽エントリーアドレスをデータとし、前記設定値を秘密鍵とし、前記新エントリーアドレスを復号する請求項1から4のいずれか1項に記載のプログラム処理装置。 - 前記アンマスク処理追加部により加えられた冗長なアンマスク処理を削除して、プログラムコードを生成するコード生成部を備えた請求項2に記載のプログラム処理装置。
- 記憶部が、設定値を複写したセーブ値と、前記設定値を記憶するストレージと、エントリーアドレスとを対応付けたコンフィグレーションデータを記憶し、
エントリーアドレスマスク部が、アプリケーションプログラムの実行前に、前記セーブ値を用いて前記コンフィグレーションデータの前記エントリーアドレスをマスクした偽エントリーアドレスを生成し前記アプリケーションプログラムが使用している複数のエントリーアドレスのうち前記コンフィグレーションデータの前記エントリーアドレスと同じ値のエントリーアドレスを前記偽エントリーアドレスに置換するマスク処理を実行し、
メモリ監視部が、前記アプリケーションプログラムの実行中に、前記偽エントリーアドレスがロードされたかどうかを判定し、
エントリーアドレスアンマスク部が、前記偽エントリーアドレスがロードされたと前記メモリ監視部が判定した場合、前記ストレージから前記設定値をロードして前記設定値を用いて前記偽エントリーアドレスをアンマスクして前記コンフィグレーションデータの前記エントリーアドレスと同じ値の新エントリーアドレスを生成して前記偽エントリーアドレスを前記新エントリーアドレスに置換するアンマスク処理を実行するプログラム処理方法。 - 設定値を複写したセーブ値と、前記設定値を記憶するストレージと、エントリーアドレスとを対応付けたコンフィグレーションデータを記憶した記憶部を有するコンピュータに、
アプリケーションプログラムの実行前に、前記セーブ値を用いて前記コンフィグレーションデータの前記エントリーアドレスをマスクした偽エントリーアドレスを生成し前記アプリケーションプログラムが使用している複数のエントリーアドレスのうち前記コンフィグレーションデータの前記エントリーアドレスと同じ値のエントリーアドレスを前記偽エントリーアドレスに置換するマスク処理と、
前記アプリケーションプログラムの実行中に、前記偽エントリーアドレスがロードされたかどうかを判定するメモリ監視処理と、
前記偽エントリーアドレスがロードされたと前記メモリ監視処理が判定した場合、前記ストレージから前記設定値をロードして前記設定値を用いて前記偽エントリーアドレスをアンマスクして前記コンフィグレーションデータの前記エントリーアドレスと同じ値の新エントリーアドレスを生成して前記偽エントリーアドレスを前記新エントリーアドレスに置換するアンマスク処理と
を実行させるプログラム。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2021/006409 WO2022176164A1 (ja) | 2021-02-19 | 2021-02-19 | プログラム処理装置、プログラム処理方法、及び、プログラム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP7031070B1 true JP7031070B1 (ja) | 2022-03-07 |
| JPWO2022176164A1 JPWO2022176164A1 (ja) | 2022-08-25 |
Family
ID=81215081
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2021544438A Active JP7031070B1 (ja) | 2021-02-19 | 2021-02-19 | プログラム処理装置、プログラム処理方法、及び、プログラム |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US12259966B2 (ja) |
| JP (1) | JP7031070B1 (ja) |
| CN (1) | CN116868176A (ja) |
| WO (1) | WO2022176164A1 (ja) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB202112412D0 (en) * | 2021-08-31 | 2021-10-13 | Nordic Semiconductor Asa | Debug-port control circuitry |
| US12445303B2 (en) * | 2023-06-20 | 2025-10-14 | Nxp B.V. | Processor to accelerate and secure hash-based signature computations |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS513745A (ja) * | 1974-06-28 | 1976-01-13 | Tokyo Shibaura Electric Co | |
| US20080256346A1 (en) * | 2007-04-13 | 2008-10-16 | Samsung Electronics Co., Ltd. | Central processing unit having branch instruction verification unit for secure program execution |
| JP2009110113A (ja) * | 2007-10-26 | 2009-05-21 | Mitsubishi Electric Corp | プログラム変換装置及びプログラム及びプログラム変換方法 |
| US20170140148A1 (en) * | 2015-11-12 | 2017-05-18 | Samsung Electronics Co., Ltd. | Method and apparatus for protecting kernel control-flow integrity using static binary instrumentation |
Family Cites Families (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7086088B2 (en) * | 2002-05-15 | 2006-08-01 | Nokia, Inc. | Preventing stack buffer overflow attacks |
| JP4517636B2 (ja) | 2003-12-05 | 2010-08-04 | 富士ゼロックス株式会社 | 実行プログラム作成方法、関数プログラム、及び関数プログラム実行方法 |
| JP2010186386A (ja) | 2009-02-13 | 2010-08-26 | Oki Semiconductor Co Ltd | プロセッサ |
| JP5631334B2 (ja) | 2009-12-14 | 2014-11-26 | パナソニック株式会社 | 情報処理装置 |
| US9514285B2 (en) * | 2014-09-26 | 2016-12-06 | Intel Corporation | Creating stack position dependent cryptographic return address to mitigate return oriented programming attacks |
| DE102015113468A1 (de) * | 2015-08-14 | 2017-02-16 | Infineon Technologies Ag | Datenverarbeitungsvorrichtung und verfahren zum sichern einer datenverarbeitungsvorrichtung gegen angriffe |
| DE102016219202A1 (de) | 2016-10-04 | 2018-04-05 | Robert Bosch Gmbh | Verfahren und Vorrichtung zum Schützen eines Arbeitsspeichers |
-
2021
- 2021-02-19 CN CN202180093574.6A patent/CN116868176A/zh active Pending
- 2021-02-19 JP JP2021544438A patent/JP7031070B1/ja active Active
- 2021-02-19 WO PCT/JP2021/006409 patent/WO2022176164A1/ja not_active Ceased
-
2023
- 2023-06-26 US US18/214,020 patent/US12259966B2/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS513745A (ja) * | 1974-06-28 | 1976-01-13 | Tokyo Shibaura Electric Co | |
| US20080256346A1 (en) * | 2007-04-13 | 2008-10-16 | Samsung Electronics Co., Ltd. | Central processing unit having branch instruction verification unit for secure program execution |
| JP2009110113A (ja) * | 2007-10-26 | 2009-05-21 | Mitsubishi Electric Corp | プログラム変換装置及びプログラム及びプログラム変換方法 |
| US20170140148A1 (en) * | 2015-11-12 | 2017-05-18 | Samsung Electronics Co., Ltd. | Method and apparatus for protecting kernel control-flow integrity using static binary instrumentation |
Also Published As
| Publication number | Publication date |
|---|---|
| CN116868176A (zh) | 2023-10-10 |
| JPWO2022176164A1 (ja) | 2022-08-25 |
| WO2022176164A1 (ja) | 2022-08-25 |
| US12259966B2 (en) | 2025-03-25 |
| US20230334149A1 (en) | 2023-10-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8555089B2 (en) | Program execution apparatus, control method, control program, and integrated circuit | |
| US10303901B2 (en) | Secure processor and a program for a secure processor | |
| KR101067399B1 (ko) | 대칭 키 암호화에 기초한 데이터의 저장 및 검색을 위한, 컴퓨팅 장치에서 구현되는 방법, 시스템 및 복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체 | |
| US7930743B2 (en) | Information processing system, information processing method, information processing program, computer readable medium and computer data signal | |
| US8782435B1 (en) | System and method for validating program execution at run-time using control flow signatures | |
| KR101216995B1 (ko) | 인덱스 테이블 기반 코드 암호화 및 복호화 장치 및 그 방법 | |
| CN111052115A (zh) | 取决于调用路径的认证 | |
| KR20040094724A (ko) | 멀티-토큰 실 및 실 해제 | |
| US20160055331A1 (en) | Detecting exploits against software applications | |
| US12259966B2 (en) | Program processing device and program processing method that executes a mask process on an entry address used by an application program | |
| US20140359306A1 (en) | System, information processing apparatus, secure module, and verification method | |
| KR101954439B1 (ko) | 이중보안기능을 가지는 SoC 및 SoC의 이중보안방법 | |
| WO2025214368A1 (zh) | 安全通信方法及装置 | |
| CN119026179A (zh) | 数据完整性保护方法及相关装置 | |
| JP2007310688A (ja) | マイクロコンピュータおよびそのソフトウェア改竄防止方法 | |
| CN114816549B (zh) | 一种保护bootloader及其环境变量的方法及系统 | |
| CN114880651B (zh) | 一种基于文件扩展属性的进程白名单实现方法及装置 | |
| JP2009253490A (ja) | メモリシステムの暗号化方式 | |
| CN111291389B (zh) | 一种计算机核心程序全生命周期的保护方法及系统 | |
| CN119862551B (zh) | 一种防破解方法、电子设备、存储介质和程序产品 | |
| EP2202661B1 (en) | Apparatus and method for protecting asset in computer system | |
| CN120196088A (zh) | 一种控制器安全启动方法、装置、电子设备及介质 | |
| CN119422142A (zh) | 用于分支指令安全性的方法和装置 | |
| CN119422141A (zh) | 用于指针安全性的方法和装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210729 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210729 |
|
| A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20210729 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20211005 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20211104 |
|
| 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: 20220125 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220222 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 7031070 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |