JP7123001B2 - 記録システム - Google Patents

記録システム Download PDF

Info

Publication number
JP7123001B2
JP7123001B2 JP2019086022A JP2019086022A JP7123001B2 JP 7123001 B2 JP7123001 B2 JP 7123001B2 JP 2019086022 A JP2019086022 A JP 2019086022A JP 2019086022 A JP2019086022 A JP 2019086022A JP 7123001 B2 JP7123001 B2 JP 7123001B2
Authority
JP
Japan
Prior art keywords
program
data
unit
plaintext
encrypted
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
JP2019086022A
Other languages
English (en)
Other versions
JP2020181522A (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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2019086022A priority Critical patent/JP7123001B2/ja
Publication of JP2020181522A publication Critical patent/JP2020181522A/ja
Application granted granted Critical
Publication of JP7123001B2 publication Critical patent/JP7123001B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

この開示は、記録システムに関し、暗号化されたプログラムの記録処理に関する。
近年では、マルチタスク環境でソリューションを複数社のプログラムを組み合わせて解決する手法が主流となっている。
一方で、各社のプログラムが互いに協調してソリューションを解決する場合には、プログラムが扱う情報の著作権や、プログラム自体の著作権を保護するために、プログラムの秘密を守る仕組みが必要となってくる。
マルチタスク環境で、プログラムとそれが扱う情報の覗き見や改変を防止するために、暗号化する手法がとられている。
しかしながら、互いに協調して動作するプログラムの場合には、相手プログラムが暗号化されていると、容易に取り扱うことはできない。
したがって、耐タンパのマイクロプロセッサ等の内部で暗号化したプログラムを復号化しながら動作させる方式等が提案されている(特許文献1および2)。
特開2003-280989号公報 特許第6048710号公報
しかしながら、特許文献1および2に記載の方式では、ハードウェアの内部処理中に復号処理や秘密保護判定処理等の処理が必要となり、処理負荷が大きいという課題がある。
また、当該処理の動作きっかけとして、OSからのタスク呼び出し時に解決するため、使用可能なのがマルチタスク環境下に限られるという問題も存在する。
本開示は、上記の課題を解決するためになされたものであって、簡易な方式で互いに協調して動作するプログラムの機密性を保護することが可能な記録システムを提供する。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
ある局面に従う記録システムは、第1データ生成部と、第2データ生成部と、データ記録部とを備える。第1データ生成部は、第1のプログラムに対して、コンパイルした第1の平文データを暗号化して第1暗号化データとして出力する。第2データ生成部は、第1のプログラムと協働して動作する第2のプログラムに対して、第1暗号化データと連結した連結プログラムを出力する。データ記録部は、第2データ生成部から出力された連結プログラムを格納する。第2データ生成部は、第2のプログラムをコンパイルした第2の平文データを生成するコンパイラ部と、第2の平文データを暗号化して第2暗号化データとして出力する暗号化処理部と、第1暗号化データと、第2暗号化データとを連結するリンカ部と、リンカ部で連結した連結プログラムをデータ記録部に出力するデバッガ部とを含む。コンパイラ部は、第2の平文データに対して、第1暗号化データとは別に送付される第1のプログラムのヘッダファイルに基づいて、第2のプログラムが参照する、第1のプログラムが有する関数モジュールのアドレスをプログラム実行時にデータ記録部に格納されている情報に基づいて設定するためのプログラムコードを生成する。データ記録部は、連結プログラムを復号化する復号化処理部と、復号化された第1および第2の平文データをブロック毎に格納する記憶部と、記憶部に格納された第1および第2の平文データのアドレス情報を記録するアドレス情報記憶部とを含む。
一実施例によれば、本開示のデータ記録システムは、簡易な方式で互いに協調して動作するプログラムの機密性を保護することが可能である。
実施形態に従うデータ記録システム1の概略構成を説明する図である。 実施形態に従うデータ生成装置2Aおよび2Bの機能ブロック図である。 実施形態に従うデータ生成装置2Aおよび2Bの具体的処理を説明する図である。 実施形態に従うデータ記録装置の機能ブロック図である。 実施形態に従うコンパイラ部30の処理について説明する図である。 実施形態に基づくコンパイラ部20の処理を説明するフロー図である。 実施形態に従うデータ記録装置10のデータ格納処理について説明するフロー図である。 実施形態に従うデータ記録装置10のデータ読出処理について説明するフロー図である。
実施形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付し、その説明は繰り返さない。
図1は、実施形態に従うデータ記録システム1の概略構成を説明する図である。
図1を参照して、データ記録システム1は、データ生成装置2A,2Bと、データ記録装置10とを含む。本例においては、データ記録装置10は、一例としてMCU(Micro Controller Unit)である。
データ生成装置2Aは、プログラムAの入力およびデータ生成装置2BからのプログラムBの暗号化データの入力に基づいてデータ記録装置10に格納するプログラムAおよびBの連結プログラムを出力する。なお、プログラムAは、プログラムBと協働して動作し、プログラムAは、プログラムBに含まれる関数モジュールを参照する。データ生成装置2Aは、データ生成装置2Bからの暗号化データとは別に送付されるプログラムBのヘッダファイルを取得する。
データ生成装置2Bは、データ生成装置2AにプログラムBの暗号化データを出力する。
なお、本例においては、2つのプログラムAおよびBの連結プログラムについて説明するが、特にこれに限られず2つ以上であれば良くその個数は限定されない。
図2は、実施形態に従うデータ生成装置2Aおよび2Bの機能ブロック図である。
図2を参照して、本例においては、X社およびY社がそれぞれプログラムAおよびBを作成する場合について説明する。
データ生成装置2Aは、コンパイラ部20と、暗号化処理部22と、リンカ部24と、デバッガ部25とを含む。
データ生成装置2Bは、コンパイラ部30と、暗号化処理部32とを含む。
コンパイラ部20は、本例においては、X社のプログラムAを平文データ(プログラムコードA)にコンパイルする。
コンパイラ部30は、Y社のプログラムBを平文データ(プログラムコードB)にコンパイルする。
暗号化処理部22は、コンパイラ部20でコンパイルされた平文データ(プログラムコードA)を暗号化処理する。本例においては、プログラムコードAが暗号化された状態であることがハッチングにより示されている。
暗号化処理部32は、コンパイラ部30でコンパイルされた平文データ(プログラムコードB)を暗号化処理する。本例においては、プログラムコードBが暗号化された状態であることがハッチングにより示されている。
リンカ部24は、暗号化処理部22,32から出力される暗号化データをそれぞれ受けて、連結プログラムを生成する。
デバッガ部26は、生成した連結プログラムをデータ記録装置10に出力する。
なお、本例においては、データ生成装置2Aにおいて、リンカ部24およびデバッガ部26を設けた構成について説明するが、特にこれに限らずデータ生成装置2Bがリンカ部24およびデバッガ部26を有する構成としても良い。
図3は、実施形態に従うデータ生成装置2Aおよび2Bの具体的処理を説明する図である。
図3を参照して、本例においては、X社およびY社がそれぞれプログラムAおよびBを作成する場合が示されている。一例として、プログラムAは、プログラムBと協働して動作し、プログラムAは、プログラムBに含まれるAPI(Application Programming Interface)(関数モジュール)を参照する。
コンパイラ部20および30は、それぞれプログラムAおよびBを平文データ(プログラムコード)にコンパイルする。
暗号化処理部22,32は、認証情報を含めた状態で平文データを暗号化処理する。暗号化処理は、公開鍵暗号方式を用いる。公開鍵は、X社およびY社に提供されており、公開鍵と対を成す秘密鍵はデータ記録装置10にあらかじめ格納されている。
リンカ部24は、暗号化処理部22,32で暗号化処理されたプログラムAの暗号化データと、プログラムBの暗号化データとを連結して1つの連結プログラムとしてデバッガ部25に出力する。
デバッガ部25は、当該連結プログラムをデータ記録装置10に出力する。
図4は、実施形態に従うデータ記録装置の機能ブロック図である。
図4を参照して、データ記録装置10は、I/F100と、コマンド解析部110と、復号処理部102と、書込部104と、実行部111と、読出部112と、開示制御部114と、プログラムメモリ106と、領域管理部108とを含む。
I/F100は、外部からのデータの授受を実行する。
I/F100は、データ生成装置2Aからの連結プログラムを受信した場合には、コマンド解析部110に出力する。
コマンド解析部110は、格納命令とともに連結プログラムを受信した場合には、復号処理部102に出力する。
復号処理部102は、秘密鍵により連結プログラムを構成する暗号化データを復号処理する。
復号処理部102は、復号処理した平文データを書込部104に出力する。
書込部104は、プログラムメモリ106に平文データを書き込む。書込部104は、プログラムメモリ106に平文データを書き込んだ際のプログラムメモリ106のアドレス情報を領域管理部108に登録する。また、書込部104は、平文データに対応する認証情報を領域管理部108に登録する。当該認証情報は、データ読出の際に用いられる。
コマンド解析部110は、I/F100を介して読出命令を受信した場合には、開示制御部114に出力する。
開示制御部114は、領域管理部108に格納されている認証情報に基づいてプログラムメモリ106に格納されている平文データのデータ読出の可否を判断する。
開示制御部114は、データ読出が可能であると判断した場合にはデータ読出処理を実行するように読出部112に指示する。読出部112は、プログラムメモリ106に格納されている平文データを読み出して、開示制御部114に出力する。開示制御部114は、I/F100を介して外部に出力する。
コマンド解析部110は、I/F100を介して実行命令を受信した場合には、実行部111に出力する。
実行部111は、コマンド解析部110からの実行指示に従ってプログラムメモリ106に格納されている平文データを実行する。
当該方式により、データ生成装置2Aは、データ記録装置10に格納する前段階において、プログラムAおよびBについて、それぞれ暗号化処理された暗号化データを連結する。そして、データ生成装置2Aは、連結プログラムをデータ記録装置10に出力する。
したがって、機密性が担保されている。すなわち、Y社は、X社にY社のプログラムBの暗号化データを提供するのみであり、平文データを提供していない。
また、データ記録装置10内部において、プログラムメモリ106には、プログラムAの平文データと、プログラムBの平文データとが格納されている。
実行部111は、プログラムメモリ106に格納されている平文データに基づいて所定の処理を実行することが可能である。したがって、実行部111がプログラムを実行する際には、復号処理や秘密保護判定処理等の処理が不要であり、高速な処理が可能である。
次に、実施形態に従うコンパイラ部20のコンパイルについて説明する。
図5は、実施形態に従うコンパイラ部20の処理の具体例について説明する図である。
図5(A)は、比較例として従来のコンパイルの一例について説明する図である。
本例においては、関数読み出し側(プログラムA)と、関数の被読み出し側(プログラムB)とがともに平文データとして示されている。
従来、リンカ部でプログラムAおよびBの連結処理を実行する場合、参照関係が規定された状態で連結処理が実行される。すなわち、プログラムAおよびBの平文データが入力されて、リンカ部でその参照関係を構築する結合処理を実行していた。
したがって、従来、リンカ部では平文データの結合処理を実行する必要があるためY社は、X社に対してプログラムBの平文データを提供する必要があった。
実施形態に従うリンカ部24には、プログラムAの暗号化データと、プログラムBの暗号化データが入力される。したがって、リンカ部24においては、参照関係を構築する結合処理は実行できない。
リンカ部24は、プログラムAの暗号化データと、プログラムBの暗号化データとを纏めた1つの連結プログラムを生成することができず,プログラム開発者に対してエラーを通知するのみであった。
図5(B)は、実施形態に従うコンパイラ部20の処理の一例について説明する図である。
コンパイラ部20は、プログラムAのコンパイルの前にデータ生成装置2Bからの暗号化データとは別に送付されるプログラムBのヘッダファイルを取得する。
プログラムBのヘッダファイルは、プログラムBに含まれるAPI(Application Programming Interface)関数のインタフェース仕様の明示にあたる「プロトタイプ宣言」を記載したものである。
また、プログラムBのヘッダファイルには、プログラムBに含まれるAPI関数のデータが暗号化されていることを示す記述が記載されている。
API関数が暗号化されていることをコンパイラ部20が知り得る必要が有るため、「#pragma」記述等を用いて「プロトタイプ宣言」の開始/終了点を明示したヘッダファイルが提供される。
一例として、ヘッダファイルには、下記の如く記述されている。
「#pragma crypted_api start
void api_XYZ0()
void api_XYZ1()
#pragma crypted_api end」
また、X社は、データ生成装置2Aに対して、ビルド情報を提供している。
具体的には、プログラムAをコンパイルし、プログラムBとリンカで連結する旨のビルド情報が提供されている。当該ビルド情報に基づいて、データ記録装置10内部のプログラムメモリ106に平文データを格納する際の登録順序を把握することが可能である。
具体的には、プログラムAの平文データが最初に登録される。そして、次に、プログラムBの平文データが登録される。
Y社は、プログラムBのAPI関数のエントリテーブルを設けている。
一例として、下記の如く記述されている。
「_api_xyz0:jmp_entitiy_XYZ0
_api_xyz1:jmp_entitiy_XYZ1」
コンパイラ部20は、ヘッダファイルの「#pragma」記述により開始/終了点に宣言されたAPI関数が暗号化されている点を認識する。
コンパイラ部20は、「api_XYZ1()関数」を呼び出す際に、「api_XYZ1()関数」を直接呼び出すと「api_XYZ1()関数」のラベル名称がX社の平文データに残存し、リンカ部24はこのラベルを解決できないためリンクエラーとなる。
したがって、コンパイラ部20は、コンパイルの際に「api_XYZ1()関数」の呼び出しを検出すると、ヘッダファイルに格納されている「プロトタイプ宣言」から、Y社のプログラムBの暗号化データ内に当該参照するAPI関数が存在することを識別する。
コンパイラ部20は、Y社のプログラムBの平文データが最終的に配置されるアドレスは分からない。一方で、データ生成装置2Aに対するビルド情報からY社のプログラムBの平文データが2番目に配置される平文データであることを識別する。さらに、コンパイラ部20は、プログラムBのヘッダファイルに格納されている「プロトタイプ宣言」から「api_XYZ1()関数」がY社のプログラムBの2番目のAPI関数であることを識別する。
コンパイラ部20は、上記識別結果に基づいて、領域管理部108に2番目に格納されたデータのアドレス情報をプログラムBのエントリテーブルの先頭アドレスと認識する。
コンパイラ部20は、プログラムBのヘッダファイルの「プロトタイプ宣言」において、「api_XYZ1()」が2番目に宣言されていることに従って、エントリテーブル内の2つ目が「api_XYZ1()」に到達する分岐命令が書かれている場所と認識する。
コンパイラ部20は、上記2つの認識結果に基づいて、エントリテーブル内の2つ目の配置アドレスを「api_XYZ1()」のエントリアドレスとして関数呼び出しを行うプログラムコードを生成する。
一例として、下記の如く生成する。
「mov Base,エントリテーブル開始番地
CALL[Base+Offset1]」
コンパイラ部20により生成されたプログラムコードは、実行部111によるプログラムメモリ106上での動作時に領域管理部108からY社の平文データのエントリテーブルの開始アドレスを読み出し、エントリテーブル内のオフセットアドレスOffset1を加算した値を「api_XYZ1()関数」のエントリアドレスとして関数呼び出しを実行する。
このように、「api_XYZ1()関数」の開始アドレス値は、動作時における算出により設定される。
図6は、実施形態に基づくコンパイラ部20の処理を説明するフロー図である。
図6を参照して、ソースの記述は、API関数の呼び出しであるか否かを判断する(ステップS2)。
ステップS2において、ソースの記述が、API関数の呼び出しであると判断した場合(ステップS2においてYES)には、呼び出す関数の実体は、ヘッダファイルに基づいて暗号化データに含まれるか否かを判断する(ステップS4)。ヘッダファイルの「#pragma」記述により開始/終了点に宣言されたAPI関数が含まれているか否かを判断する。
ステップS4において、呼び出す関数の実体は、ヘッダファイルに基づいて暗号化データに含まれると判断した場合(ステップS4においてYES)には、API関数を間接的に呼び出すプログラムコードを生成する(ステップS6)。
具体的には、平文データからプログラムコードを生成する際に「Base」「Offset」を規定して生成する。
「Base」は、領域管理部108から取得するエントリテーブルの開始番地となる。
「Offset」は、「api_XYZ1()関数」のプロトタイプ宣言順位にエントリテーブルで使用している分岐命令の命令長を乗じた値となる。
「FunctionEntryAddress」は、実施形態の一例として説明用に設けた「Base+Offset」の値を示す用語である。「FunctionEntryAddress」の値は、エントリテーブルに書かれた「api_XYZ1()関数」の仮のエントリアドレスとなる。
「FunctionEntryAddress」を呼び出すプログラムコードを生成する。
そして、次に、ファイル終端か否かを判断する(ステップS10)。
ステップS10において、ファイル終端であると判断した場合(ステップS10においてYES)には、処理を終了する(エンド)。
一方、ステップS10において、ファイル終端で無いと判断した場合(ステップS10においてNO)には、解析対象を次の行に変更する(ステップS12)。
そして、ステップS2に進み、上記処理を繰り返す。
一方、ステップS2において、ソースの記述がAPI関数の呼び出しでないと判断した場合(ステップS2においてNO)あるいは、ステップS4において、呼び出す関数の実体は、ヘッダファイルに基づいて暗号化データに含まれないと判断した場合(ステップS4においてNO)には、通常の平文データを生成する(ステップS8)。
そして、ステップS10に進む。
図7は、実施形態に従うデータ記録装置10のデータ格納処理について説明するフロー図である。
図7を参照して、データ記録装置10は、データを取得する(ステップS20)。具体的には、I/F100は、データ生成装置2Aから連結プログラムを受信する。I/F100は、受信した連結プログラムをコマンド解析部110に出力する。コマンド解析部110は、格納命令に従って復号処理部102に連結プログラムを出力する。
次に、データ記録装置10は、復号処理を実行する(ステップS22)。復号処理部102は、秘密鍵に基づいて復号処理する。そして、復号処理部102は、書込部104に復号処理した連結プログラムの平文データを出力する。
次に、データ記録装置10は、データ書込を実行する(ステップS24)。書込部104は、復号処理部102から出力された平文データをプログラムメモリ106に格納するデータ書込を実行する。具体的には、復号処理された連結プログラムは、プログラムAおよびBの平文データを含む。したがって、書込部104は、プログラムAおよびBの平文データをそれぞれブロック単位でプログラムメモリ106に格納するデータ書込を実行する。
次に、データ記録装置10は、管理情報を書き込む(ステップS26)。書込部104は、プログラムAおよびBの平文データをブロック単位でプログラムメモリ106に格納する際に書き込んだ開始番地および終了番地に関する管理情報を領域管理部108に格納する。また、書込部104は、プログラムAおよびBの認証情報を管理情報として領域管理部108に格納する。
次に、データ記録装置10は、他に書き込むデータがあるか否かを判断する(ステップS30)。
ステップS30において、データ記録装置10は、他に書き込むデータがあると判断した場合(ステップS30においてYES)には、ステップS20に戻り、上記処理を繰り返す。一方、ステップS30において、データ記録装置10は、他に書き込むデータが無いと判断した場合(ステップS30においてNO)には、処理を終了する(エンド)。
図8は、実施形態に従うデータ記録装置10のデータ読出処理について説明するフロー図である。
図8を参照して、データ記録装置10は、読出指示があるか否かを判断する(ステップS40)。具体的には、I/F100は、外部からコマンドを受信した場合には、コマンド解析部110に出力する。コマンド解析部110は、外部からのコマンドが読出指示であるか否かを判断する。
ステップS40において、データ記録装置10は、読出指示があると判断した場合(ステップS40においてYES)には、認証情報を取得する(ステップS42)。コマンド解析部110は、外部からのコマンドが読出指示であると判断した場合には、開示制御部114に通知する。開示制御部114は、コマンド解析部110からの通知に従って認証情報を取得する。具体的には、外部からのコマンドに認証情報が含まれている場合には、当該認証情報を取得しても良いし、あるいは、開示制御部114が読出指示を出力した外部装置に対して認証情報を要求し、当該要求に対して外部装置から認証情報を取得しても良い。
次に、データ記録装置10は、認証情報が一致するか否かを判断する(ステップS44)。開示制御部114は、読出指示に含まれているデータ読出のデータの認証情報が一致するか否かを判断する。具体的には、プログラムAのデータ読出の場合には、領域管理部108に格納されている認証情報を読み出して、それが取得した認証情報と一致するか否かを判断する。あるいは、プログラムBのデータ読出の場合には、領域管理部108に格納されている認証情報を読み出して、それが取得した認証情報と一致するか否かを判断する。
ステップS44において、データ記録装置10は、認証情報が一致すると判断した場合(ステップS44においてYES)には、データ読出を許可する(ステップS46)。開示制御部114は、認証情報が一致すると判断した場合には、データ読出を許可して読出部112に通知する。読出部112は、開示制御部114からの指示に従ってプログラムメモリ106に格納されている指定されたプログラムの平文データを読み出す。そして、開示制御部114に出力する。開示制御部114は、読出部112から読み出されたデータをI/F100を介して外部装置に出力する。
そして、処理を終了する(エンド)
一方、ステップS44において、データ記録装置10は、認証情報が一致しないと判断した場合(ステップS44においてNO)には、データ読出を不許可とする(ステップS48)。開示制御部114は、認証情報が一致しないと判断した場合には、データ読出を不許可として読出部112に通知しない。
そして、処理を終了する(エンド)。
実施形態に従う方式により、データ記録装置10の外部においては、暗号化データとして機密性が保護される。
また、データ記録装置10の内部においては、平文データとしてプログラムメモリ106に格納されるためデータの取り扱いが容易であり処理負荷を軽減することが可能である。
また、認証情報が一致する場合にデータ読出が許可されるためプログラムメモリ106に格納される平文データの機密性を担保することが可能である。
以上、本開示を実施形態に基づき具体的に説明したが、本開示は、実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
1 データ記録システム、2A,2B データ生成装置、10 データ記録装置、20,30 コンパイラ部、22,32 暗号化処理部、24 リンカ部、25 デバッガ部、102 復号処理部、104 書込部、106 プログラムメモリ、108 領域管理部、110 コマンド解析部、111 実行部、112 読出部、114 開示制御部。

Claims (6)

  1. 第1のプログラムに対して、コンパイルした第1の平文データを暗号化して第1暗号化データとして出力する第1データ生成部と、
    前記第1のプログラムと協働して動作する第2のプログラムに対して、前記第1暗号化データと連結した連結プログラムを出力する第2データ生成部と、
    前記第2データ生成部から出力された前記連結プログラムを格納するデータ記録部とを備え、
    前記第2データ生成部は、
    前記第2のプログラムをコンパイルした第2の平文データを生成するコンパイラ部と、
    前記第2の平文データを暗号化して第2暗号化データとして出力する暗号化処理部と、
    前記第1暗号化データと、前記第2暗号化データとを連結するリンカ部と、
    前記リンカ部で連結した連結プログラムを前記データ記録部に出力するデバッガ部とを含み、
    前記コンパイラ部は、前記第2の平文データに対して、前記第1暗号化データとは別に送付される前記第1のプログラムのヘッダファイルに基づいて、前記第2のプログラムが参照する、前記第1のプログラムが有する関数モジュールのアドレスをプログラム実行時に前記データ記録部に格納されている情報に基づいて設定するためのプログラムコードを生成し、
    前記データ記録部は、
    前記連結プログラムを復号化する復号化処理部と、
    復号化された第1および第2の平文データをブロック毎に格納する記憶部と、
    前記記憶部に格納された前記第1および第2の平文データのアドレス情報を記録するアドレス情報記憶部とを含む、記録システム。
  2. 前記データ記録部は、前記記憶部に格納された前記第1および第2の平文データを実行する実行部をさらに含み、
    前記実行部は、前記プログラムコードに従って、前記アドレス情報記憶部に格納されている前記第1の平文データの先頭アドレスと、前記ヘッダファイルに含まれている関数プロトタイプ宣言データに基づいて前記関数モジュールのエントリアドレスを設定する、請求項1記載の記録システム。
  3. 前記第1および第2の暗号化データは、公開鍵に基づいて暗号化され、
    前記復号化処理部は、前記公開鍵と対を成す秘密鍵に基づいて前記連結プログラムに含まれる前記第1および第2の暗号化データを復号化する、請求項1記載の記録システム。
  4. 前記アドレス情報記憶部は、前記第1および第2の平文データにそれぞれ対応する認証情報を格納する、請求項1記載の記録システム。
  5. 前記データ記録部は、前記アドレス情報記憶部に格納されている認証情報に基づいて前記記憶部に格納されている前記第1および第2の平文データに対するアクセスの可否を判断する開示制御部をさらに含む、請求項4記載の記録システム。
  6. 前記コンパイラ部は、
    前記第1のプログラムのヘッダファイルに基づいて、前記第2のプログラムが参照する、前記第1のプログラムが有する関数モジュールが前記第1暗号化データに含まれるか否かを判断し、
    前記関数モジュールが含まれると判断した場合に、前記第1のプログラムの登録順位および前記関数モジュールの順位に基づいて、前記第2のプログラムが参照する、前記第1のプログラムが有する関数モジュールのアドレスをプログラム実行時に前記データ記録部に格納されている情報に基づいて設定するためのプログラムコードを生成する、請求項1記載の記録システム。
JP2019086022A 2019-04-26 2019-04-26 記録システム Active JP7123001B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019086022A JP7123001B2 (ja) 2019-04-26 2019-04-26 記録システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019086022A JP7123001B2 (ja) 2019-04-26 2019-04-26 記録システム

Publications (2)

Publication Number Publication Date
JP2020181522A JP2020181522A (ja) 2020-11-05
JP7123001B2 true JP7123001B2 (ja) 2022-08-22

Family

ID=73024330

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019086022A Active JP7123001B2 (ja) 2019-04-26 2019-04-26 記録システム

Country Status (1)

Country Link
JP (1) JP7123001B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002132371A (ja) 2000-08-15 2002-05-10 Sony Computer Entertainment Inc 情報処理システム、実行可能モジュール生成方法および記憶媒体
JP2007148575A (ja) 2005-11-24 2007-06-14 Fuji Xerox Co Ltd 保護済み実行プログラムの作成のためのプログラム、方法及び装置
JP2009512087A (ja) 2005-10-17 2009-03-19 エヌエックスピー ビー ヴィ プログラム実行可能イメージの暗号化
JP2010231477A (ja) 2009-03-27 2010-10-14 Fuji Xerox Co Ltd プログラム及びプログラム実行装置
WO2014147748A1 (ja) 2013-03-19 2014-09-25 株式会社東芝 コード処理装置およびプログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002132371A (ja) 2000-08-15 2002-05-10 Sony Computer Entertainment Inc 情報処理システム、実行可能モジュール生成方法および記憶媒体
JP2009512087A (ja) 2005-10-17 2009-03-19 エヌエックスピー ビー ヴィ プログラム実行可能イメージの暗号化
JP2007148575A (ja) 2005-11-24 2007-06-14 Fuji Xerox Co Ltd 保護済み実行プログラムの作成のためのプログラム、方法及び装置
JP2010231477A (ja) 2009-03-27 2010-10-14 Fuji Xerox Co Ltd プログラム及びプログラム実行装置
WO2014147748A1 (ja) 2013-03-19 2014-09-25 株式会社東芝 コード処理装置およびプログラム

Also Published As

Publication number Publication date
JP2020181522A (ja) 2020-11-05

Similar Documents

Publication Publication Date Title
JP5689472B2 (ja) 悪意ある実行環境内での静的および動的攻撃からJavaバイトコードを保護するシステムおよび方法
JP5460699B2 (ja) ソフトウェアアプリケーションのホワイトボックス実装を生成するためのシステムおよび方法
JP4099039B2 (ja) プログラム更新方法
US7254586B2 (en) Secure and opaque type library providing secure data protection of variables
RU2439669C2 (ru) Способ предотвращения обратного инжиниринга программного обеспечения, неавторизованной модификации и перехвата данных во время выполнения
JP4976991B2 (ja) 情報処理装置、プログラム検証方法及びプログラム
JP4912921B2 (ja) セキュアプロセッサシステム、セキュアプロセッサ及びセキュアプロセッサシステムの制御方法
KR100792287B1 (ko) 자체 생성한 암호화키를 이용한 보안방법 및 이를 적용한보안장치
RU2289157C2 (ru) Способ и система распределенной разработки программы для программируемого портативного носителя информации
EP3038004A1 (en) Method for providing security for common intermediate language-based program
US8090959B2 (en) Method and apparatus for protecting .net programs
CN109992987B (zh) 基于Nginx的脚本文件保护方法、装置及终端设备
US8843766B2 (en) Method and system for protecting against access to a machine code of a device
CN111656345B (zh) 启用容器文件中加密的软件模块
EP3126973A1 (en) Method, apparatus, and computer-readable medium for obfuscating execution of application on virtual machine
CN107430650B (zh) 保护计算机程序以抵御逆向工程
CN101957903A (zh) 一种保护类文件的方法和装置
CN110309630B (zh) 一种Java代码加密方法及装置
WO2011134207A1 (zh) 软件保护方法
KR20130120985A (ko) 소프트웨어 무결성을 보장하기위한 프로세서 실행 방법
JP2007233426A (ja) アプリケーション実行装置
KR20200136142A (ko) 소프트웨어 보안을 위한 메모리 데이터의 암호화 및 복호화 방법, 이를 수행하기 위한 기록매체 및 장치
JP7123001B2 (ja) 記録システム
JP2010231477A (ja) プログラム及びプログラム実行装置
JP7331714B2 (ja) 情報処理装置、情報処理方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211005

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220630

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220809

R150 Certificate of patent or registration of utility model

Ref document number: 7123001

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150