JP2019074913A - 情報処理装置および情報処理装置のデータ処理方法 - Google Patents

情報処理装置および情報処理装置のデータ処理方法 Download PDF

Info

Publication number
JP2019074913A
JP2019074913A JP2017200362A JP2017200362A JP2019074913A JP 2019074913 A JP2019074913 A JP 2019074913A JP 2017200362 A JP2017200362 A JP 2017200362A JP 2017200362 A JP2017200362 A JP 2017200362A JP 2019074913 A JP2019074913 A JP 2019074913A
Authority
JP
Japan
Prior art keywords
processing
cpu
data
program
encryption
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.)
Granted
Application number
JP2017200362A
Other languages
English (en)
Other versions
JP6899308B2 (ja
Inventor
渡辺 大
Masaru Watanabe
大 渡辺
高橋 健太
Kenta Takahashi
健太 高橋
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2017200362A priority Critical patent/JP6899308B2/ja
Publication of JP2019074913A publication Critical patent/JP2019074913A/ja
Application granted granted Critical
Publication of JP6899308B2 publication Critical patent/JP6899308B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】CPUやメモリ機構などの特別のハードウェアのサポート無しで、メインメモリ上に書き込むデータの暗号化、復号化を可能にすることにより、データに対するセキュリティを向上させる情報処理装置およびデータ処理方法を提供する。【解決手段】プログラムのインストーラは、CPU情報に基づいて、インストールするプログラムの処理を分割して、主記憶装置に格納された暗号化されたデータを読み出して復号する復号処理と、平文データを暗号化する暗号処理と、サブルーチンとを合わせた実行単位の実行時間が、所定の単位時間を越えないようなコードを生成してインストールを行う。そして、所定の単位時間の間に、CPUが、主記憶装置に格納された暗号化されたデータを読み出して復号する復号処理と、プログラムのサブルーチンの実行をする処理と、平文データを暗号化する暗号処理と、暗号化されたデータを主記憶装置に書き込む処理とを実行する。【選択図】図6

Description

本発明は、情報処理装置および情報処理装置のデータ処理方法に係り、特に、スマートフォンやパーソナルコンピュータにおけるデータの盗用を防止し、セキャリティを確保することのできる情報処理装置および情報処理装置のデータ処理方法に関する。
モバイル端末の普及とWebサービスの高度化に伴い、サービスの種類も多様化している。特に近年では、モバイル決済のように、従来ATMや窓口、専用端末を経由していた支払や送金に関するサービスをモバイル端末上で実行するサービスが流行の兆しを見せている。
このようなサービスを利用する際には、専用のアプリケーションソフトウェア(以下、単に「アプリ」という)をインストールし、そのアプリを介してサービスを利用するのが一般的である。
また、サービスの利用に際してユーザ認証(または端末認証)を行う必要があるが、このとき、ユーザ(または端末)のみが有する秘密情報を用いる。このような処理は、SIMチップ上の領域内で行われることが望ましいが、上記のようにアプリ上で秘密情報を取り扱うケースがほとんどである。これは、サービス用アプリをインストールするためには、SIMチップの記憶容量や処理能力が低いことが理由である。
一方で、モバイル端末のセキュリティという観点では、一定の割合で端末がマルウェア(不正ソフトウェア)に感染しているという現実があり、金融サービスに特化したマルウェアの存在も確認されている。特に、メモリ上に置かれたデータを読み取りクレジットカード番号などを取り出すマルウェアが報告されており、アプリの実行中にメモリに置かれるデータを保護する必要がある。
上記のような課題に対する対策として、メインメモリ上のデータを暗号化して格納する方法が知られている。例えば、特許文献1には、メインメモリ上のデータを暗号化して格納する方法が開示されている。
米国特許出願公開第2013/159726号明細書
上記特許文献1は、CPU(Central Processing Unit)の機能として、ハードウェア的にセキュアな領域の確保およびOSとは独立にメインメモリへのアクセス制御機能を提供するものである。その一方で、この機能は利用端末を限定することになり、サービス提供者にとって機会損失となる可能性がある。
本発明の目的は、CPUやメモリ機構などの特別のハードウェアのサポート無しで、メインメモリ上に書き込むデータの暗号化、復号化を可能にすることにより、情報処理装置におけるデータに対するセキュリティを向上させることにある。
本発明の情報処理装置の構成は、好ましくは、主記憶装置に格納されたデータとプログラムをCPU(Central Processing Unit)が参照して演算することにより処理をおこなう情報処理装置であって、プログラムのインストーラは、CPU情報に基づいて、インストールするプログラムの処理を分割して、主記憶装置に格納された暗号化されたデータを読み出して復号する復号処理と、平文データを暗号化する暗号処理と、サブルーチンとを合わせた実行単位の実行時間が、所定の単位時間を越えないようなコードを生成してインストールをおこない、所定の単位時間の間に、CPUが、主記憶装置に格納された暗号化されたデータを読み出して復号する復号処理と、CPUが、プログラムのサブルーチンの実行をする処理と、CPUが、平文データを暗号化する暗号処理と、CPUが、暗号化されたデータを主記憶装置に書き込む処理とを実行するようにしたものである。
本発明によれば、CPUやメモリ機構などの特別のハードウェアのサポート無しで、メインメモリ上に書き込むデータの暗号化、復号化を可能にすることにより、情報処理装置におけるデータに対するセキュリティを向上させることができる。
情報処理装置が用いられるシステムのシステム構成図である。 ネットワーク端末の機能構成を表す図である。 アプリのインストーラの機能構成図である。 RAM暗号化機能を内蔵したアプリをインストールする手順を表したフローチャートである。 図4のS405の処理分割を説明するイメージ図である。 実施形態1における定期的なソフトウェア割り込み時にデータを暗号化および復号を行う場合の処理を示す図である。 割り込みが発生しないタイミングでRAM250に書き込むデータを暗号化する場合の処理を示す図である。 CPUのハードウェア機構と暗号処理の関係について説明する図である。 32ビットARMプロセッサ上で実行可能な暗号処理の具体例を示した図である。 実施形態2における定期的なソフトウェア割り込み時にデータを暗号化および復号を行う場合の処理を示す図である。 図10の処理を詳細に示すフローチャートである。
以下、本発明に係る各実施形態を、図1ないし図11を用いて説明する。
〔実施形態1〕
以下、本発明に係る実施形態1を、図1ないし図9を用いて説明する。
実施形態1の情報処理装置は、シングルCPUで構成された装置の例について説明する。
先ず、図1を用いて情報処理装置が用いられるシステム構成について説明する。
ユーザが情報処理装置を用いるシステムにおける情報処理端末は、スマートフォンなどのネットワーク端末であり、システムは、ユーザ101が携帯するネットワーク端末102と、アプリ配信サーバ103、サービス提供者104における認証サーバ110、アプリケーションサーバ111で構成されている。
ユーザ101は、アプリ配信サーバ103からアプリをネットワーク端末102にダウンロードする。ダウンロードしたアプリは、サービス提供者104が提供する特定のサービスを利用するために用いられる。ユーザ101は、アプリ配信サーバ103からダウンロードしたアプリをネットワーク端末102に、インストールした後に認証サーバに対してユーザ登録を実行する。サービスを利用する際には、サービスの認証サーバ110に対してユーザ認証または機器認証を行った後に、アプリケーションサーバ111を通じてサービスを利用する。
次に、図2を用いてネットワーク端末の機能構成について説明する。
ネットワーク端末(以下、単に「端末」という)102は、ネットワークインターフェース210、センサ220、ストレージ230、CPU240、処理中の中間データやプログラムを保持するRAM(Random Access Memory)250(主記憶装置)などで構成される。
ネットワークインターフェース210は、3G、4Gなどの規格、IEEE802.11などのLANの規格による無線通信、または、Ethernet(登録商標)の有線通信の規格により、外部と情報のやり取りを行うインタフェース部である。センサ220は、加速度や光などの物理情報を読み取る装置である。ストレージ230は、データやプログラムを保存する不揮発性の記憶装置である。CPU240は、プログラムを実行し、演算処理や端末102制御を行う。RAM(Random Access Memory)250は、情報処理装置の主記憶装置として用いられ、処理中の中間データやプログラムを保持する揮発性の記憶装置である。
これらの機能はデータバスで互いにつながれており、RAM250を介してデータのやり取りをする。
CPU240は複数のレジスタ241、演算器242の他、物理乱数生成器などのエントロピー発生源243や時計に相当するサイクルカウンタ244を内蔵している。
ストレージ230上には保存されているアプリ231のバイナリデータや設定ファイルが保存されている。処理対象データ251は、センサ220から取得したセンサデータ221やネットワークIF210から取得した通信データ221である。また、処理対象データ251は、ストレージ230上に保存されているデータでもよい。
端末102のハードウェア上では、通常OS(Operation System)が常駐しており、ハードウェアとアプリのやり取りを仲介や、複数のアプリの実行権限とリソースの管理を行っている。一般的なアプリ231と処理対象データ251は、ユーザ領域に格納され、ユーザ権限と呼ばれる限られた権限の元で実行される。一方、OSの実行するリソース管理などはより強い権限特権の元で実行され、特権領域には割り込み制御部245を有している。
これにより、実行中のアプリの一時中断などを行うことが可能となる。具体的には、OSは、サイクルカウンタ244などの時刻情報を基準にして、定期的に割り込み登録の有無を確認し、必要に応じて現在実行中のアプリを中断し、RAM250とレジスタ241の状態を退避して、他の処理にリソースを割り当てる。割り込み処理が終了したら、退避していたレジスタとRAMの状態を復元し、中断したアプリを再開する。
このようなシステムがマルウェアに感染した場合、機能間の通信路保護が課題となる。攻撃者にとって、もっともアクセスしやすいデータは、RAM上に置かれたデータである。本実施形態では、アプリが受け取り、RAM上に配置するデータを保護する方法を提供する。
次に、図3を用いてアプリのインストーラの機能構成について説明する。
本実施形態のアプリは、RAM上のデータを暗号化する機能(RAM暗号化機能)を有しており、端末102にアプリをインストールするためのプログラム(インストーラ)は、特有の機能を有する。
一般に、端末102は、機能構成として、記憶部300と演算部310と通信部320とを含む。また、端末は、端末固有の情報330を有する。端末固有の情報は、記憶部に記憶された情報でもよいし、CPUの型番や通信機能部のIDMACアドレスなどでもよい。
通信部320を介してダウンロードされたインストーラ340は、記憶部300に保存される。その後、インストーラ340が実行されると、端末固有の情報を補助情報として、保護対象のプログラムを分割処理し、不要な機能を消去したアプリインストール後のアプリ350を記憶部に書き込む。
インストーラ340は、単数または複数のサブルーチンからなる保護対象プログラム341、鍵生成部342、暗号化部343、復号部344、割り込み頻度取得部345、処理分割部346を内包している。なお、各々の機能部の処理は、後に詳説する。
また、インストール後のアプリ350は最構成された処理ブロック1(351)〜処理ブロックk′(352)および鍵を埋め込んだ暗号化部353と鍵を埋め込んだ復号部354で構成される。
なお、インストーラ340と保護対象プログラム341は別々にダウンロードしてもよい。例えば、保護対象プログラム341を含まないインストーラ340のみを先行してダウンロードし、インストーラ340が実行されると、インストーラは保護対象プログラム341を、改めてダウンロードしてもよい。この場合、インストーラ340は通信部320を利用して外部との通信を行う機能を具備する。
次に、図4および図5を用いてアプリのインストールの処理について説明する。
先ず、端末102は、ネットワーク201を介して図1に示したアプリ配信サーバ103に接続して、TLS(Transport layer Security)等の暗号通信を確立する(S401)。
次に、端末102は、アプリ配信サーバ103にアプリダウンロード要求を送信する(S402)。
次に、アプリ配信サーバ103は、受信したアプリダウンロード要求にしたがい、アプリのインストーラ340を端末102に送信する(S403)。
次に、端末102は、受信したインストーラ340をストレージ230またはRAM250に置き、インストーラを実行する(S404)。
次に、インストーラ340の割り込み頻度取得部345は、OS情報と、システム内に記録されている端末102のCPU情報とから、OSの単位時間ソフトウェア割り込みが発生する周期で実行可能な処理量を判断する。この情報に基づき、処理分割部346は、保護対象プログラム341の処理分割を行う(S405)。
次に、インストーラ340の鍵生成部342は、MACアドレスなどの端末固有の値や、時刻情報、システムログなどをエントロピー源として、暗号化部343と復号部344で用いる秘密鍵を生成する。さらに、鍵を埋め込んだ暗号化部353と鍵を埋め込んだ復号部354を生成して、インストール後のアプリ350を作成する(S406)。
最後に、端末102は、作成されたアプリイメージをストレージ230に格納する(S407)。
S406では、例えば、エントロピー源から擬似乱数を生成し、これに基づき関数やデータのアドレス配置のランダム化を施すことにより、マルウェアによるアプリの静的解析を困難にすることができる。また、同じくエントロピー源から生成された擬似乱数を鍵として、アプリ全体を暗号化するパッキングを施すこともできる。
次に、図5を用いて図4のS405の処理分割について説明する。
図5(a)は、処理を分割する前のアプリの処理構造の例、図5(b)は、処理を分割した後のアプリの処理構造の例を示している。
アプリは、一般に複数の関数、または処理ブロックから構成されている。アプリの作成時には、個々の関数または処理ブロックを単位時間で実行可能なサイズに分割しておく。例えば、図5の例では、保護対象プログラム341の中でfunction1()、function2()、function3()、function4()の四つの関数を実行する。これらの関数の実行には、それぞれ0.2ミリ秒、0.5ミリ秒、0.1ミリ秒、0.8ミリ秒を要するものとする。また、単位時間を1ミリ秒とする。ここで、単位時間は、OSのソフトウェア割込が発生する周期にすることが望ましい。例えば、周知のOSであるLinux(登録商標)では、1ミリ秒である。このとき、function1()とfunction2()を1回の単位時間で実行可能なので、この二つの関数をサブルーチン1(501)にまとめる。
次に、function3()を含むループ処理は、全体で2ミリ秒を要するため、複数のループに分割し、単位時間で終了するループをサブルーチン2(502)にまとめる。最後に残った処理をサブルーチン3(503)にまとめる。このようにして、アプリを単位時間で処理が完了する複数のサブルーチンに分割することができる。
本実施形態では、さらにサブルーチンの前後には、復号処理510と暗号処理511を付加する(暗号処理については後述する)。この暗復号処理は、図3における鍵を埋め込んだ復号部354と鍵を埋め込んだ暗号化部353を呼び出して実行する。ただし、これらを関数呼び出しでは無く、個々のサブルーチンの前後にコードを付加してもよい。この場合には、それぞれで用いる鍵として別の値を用いてもよい(サブルーチン1後の暗号化とサブルーチン2前の復号をセットで同じ鍵を用いるようにすればよい)。再帰処理や、処理時間が外部処理の応答に依存するような場合には、その前後で処理を分割する。
単位時間は端末102の機種等によって異なるため、インストーラがOSの単位時間で実行可能な処理量を判断し、適切な分割を行う。ただし、アプリを実行する機種が限定されている場合であれば、事前に処理を分割し、インストール時の処理を軽減してもよい。また、端末102がアプリ配信サーバ103に端末のハードウェア構成を送信して、アプリ配信サーバ103がアプリの分割を実行してもよい。また、アプリの分割を行うサーバを別に設けてもよい。
次に、図6を用いて定期的なソフトウェア割り込み時にデータを暗号化および復号を行う場合の処理について説明する。
以下、図6にしたがって、定期的なソフトウェア割り込みに伴う処理の中断および復帰と、中断時に退避されるデータの暗号化プロセスについて説明する。
アプリの分割した処理ブロック610は、暗号処理1(611)と復号処理1(612)、暗号処理および復号処理に用いる鍵1(613)、そしてアプリが本来行うべきサブルーチン614で構成される。
先ず、実行を中断されたアプリが割り込みから復帰すると、アプリは割り込みが発生する前にRAM250上に退避したデータ(暗号文C(620))を読み込む(ステップ1:615)。
次に、鍵1(613)をパラメータとして、読み込んだデータを復号し、復号文P(616)をレジスタ(241)またはRAM250上に置く(ステップ2:復号処理1(612))。
次に、アプリは、復号文P(616)に対して、サブルーチン614の処理を実行し、処理の結果として平文P′(617)を出力する(ステップ3)。
次に、アプリは、鍵1(613)をパラメータとして、平文P′(617)を暗号化し、暗号文C′(621)を出力する(ステップ4:暗号処理1(611))。
次に、アプリは、暗号文C・(621)をRAM250上に書き出す(ステップ5:618)。
同様にして、レジスタ上のデータも暗号化してRAMに書き出す(ステップ6:暗号処理1(611))。
次に、アプリはレジスタ上のデータを消去し、処理を中断する(ステップ7)。
最後に、OSは割り込み処理を実行し、アプリのプロセスを退避する(ステップ8:602)。
この構成により、割り込みが発生しても、退避されたデータはすべて暗号化されているため、マルウェアは秘密情報を取り出すことができない。
図6中の暗号処理1(611)と復号処理1(612)は一般的な共通鍵暗号アルゴリズム、例えばAES(Advanced Encryption Standard)を用いてもよい。図6中では、鍵1(613)は復号処理1(612)および暗号処理1(611)とは独立なデータとして描いているが、例えば、white-box AESのように、鍵1(613)を復号処理1(612)および暗号処理1(611)に隠蔽して埋め込んでもよい。
また、暗号処理と復号処理は秘密分散を用いて構成してもよい。このとき、暗号処理1(611)は、鍵1(613)を乱数情報として平文P・(617)を分散し、復号処理1(612)は、分散した情報(暗号文C)から復号文P(616)を復元する。さらに、暗号処理1(611)で分散した暗号文C・(621)をRAM250上にランダムに配置することにより、攻撃者がすべての分散した情報を入手することを困難にすることができる。
秘密分散を構成する方法の1つに、線形写像を用いる方法が知られている。特に排他的論理和のみを用いて構成する方法や、算術加算と減算のみを用いて構成する方法によれば、コンパクトな復号器を構成することができ、復号器の隠ぺいが容易になる。また、秘密分散を構成する別の方法として、All-Or-Not-Transformを用いてもよい。
また、図6では、便宜上サブルーチンの外側で退避するデータの暗号化を実施しているが、レジスタ上でのデータ渡しができない場合には、サブルーチンの開始直後に復号処理を行い、終了直前に暗号処理を行えばよい。
次に、図7を用いて割り込みが発生しないタイミングでRAM250に書き込むデータを暗号化する場合の処理について説明する。
サブルーチン614は、鍵生成処理701、鍵廃棄処理702、暗号処理2(703)、復号処理2(704)、RAMからのデータ読み込み処理707、RAMへのデータ書き込み処理706、そして、レジスタ上でのデータ処理708で構成される。
(I)短期鍵の生成
先ず、実行を中断されたアプリが割り込みから復帰すると、エントロピー発生源243からエントロピー源710を取得し、鍵2(711)を生成し、レジスタ上に配置する(ステップ1:鍵生成処理701)。
(II)復号文P616の暗号化
次に、鍵2(711)をパラメータとして復号文616を暗号化する(ステップ2:暗号処理2703)。
次に、は暗号文CT712をRAM250に書き込む(ステップ3:RAMへのデータ書き込み機能706)。
(III)処理中のRAMアクセスと暗号処理
次に、暗号文CT712をレジスタ上に読み込む(ステップ4:RAMからのデータ読み込み処理707))。
次に、鍵2(711)をパラメータとして暗号文CT712を復号する(ステップ5:復号処理2704)。
次に、復号されたデータに対してレジスタ上で処理を行う(ステップ6:レジスタ上でのデータ処理708)。処理後のデータは、ステップ2、ステップ3と同様に、暗号化してRAM上に保存する。
以下、必要に応じてステップ4〜ステップ6を繰り返す。
(IV)サブルーチン完了後の処理
最後に、サブルーチン614は、鍵2711を配置したレジスタをゼロリセットするまたは乱数を書き込むことで、鍵を廃棄し、処理を終了する(ステップ7:鍵廃棄処理702)。
なお、図7に示した処理では、サブルーチン614内で、RAM250にデータを書き込む際には、そのデータを暗号化して暗号文CT712として書き込む処理を行っている。そのため、プログラムを作成する際には、データのストア処理、ロード処理には、コンパイル時にそのようなコード生成を行うコンパイラを使用することが必要になる。
この構成により、マルウェアが割り込み以外の任意のタイミングでRAM上のデータを読み取ったとしても、すべてのデータは暗号化されているため、マルウェアは秘密情報を取り出すことができない。また、鍵2はサブルーチンの中で、レジスタ上で生成/保管/廃棄されるため、マルウェアはこれを入手することが困難である。
ここで、復号文P616は、図4におけるステップ2で復号されたデータであるが、アプリの外側から入力された暗号化されていないデータでもよい。
ステップ1で鍵生成に用いるエントロピー発生源243としては、CPUタイマ(サイクルカウンタ244)や、サブルーチン開始時の初期化されていないレジスタの値を用いてもよい。また、システム情報、時刻情報やOSの有する乱数生成機能などを利用してもよい。
次に、図8および図9を用いてCPUのハードウェア機構と暗号処理の関係について説明する。
CPUは、32ビットレジスタをm本有しているものとする。このうち2本のレジスタR[m−1]811、R[m]812に、鍵2(711)を配置する。また、暗号化されるデータ暗号化対象データ1801、暗号化対象データ2802はレジスタR[2]813、R[k]814に配置されているものとする。暗号処理2(703)では、暗号化対象データおよび鍵2を入力として、暗号文を生成する。暗号文は、レジスタ長に等しい二つのデータブロック暗号文データC1(803)と暗号文データC2(804)を生成し、レジスタR[2]、R[k]の値を書き換える。
図8の構成を具体的に32ビットARMプロセッサ上で実現し、暗号処理のための命令後も示すと、図9に示されるようになる。
32ビットARMアーキテクチャは、16本の汎用レジスタを有する。このうち、実際に利用可能なのはR0からR12の13本のレジスタである。図9の例では、鍵維持用レジスタにR0,R1を割り当てている。また、レジスタR2,R3に配置しているデータを暗号化対象とする。
R2,R3に配置されている暗号化対象データP1,P2と、R0,R1に配置されている鍵K0,K1と、それぞれ排他的論理和をとる(ステップ1)。
以下の処理を定められた回数繰り返す(ステップ2)。
R3←ADDR3,R2
R2←ROTL32R2,s1
R2←XORR2,R3
R3←ROTL32R3,s2
R3←ADDR3,R2
R2←ROTL32R2,s3
R2←XORR2,R3
R3←ROTL32R3,s4
ここで、Rx←funcは処理funcの結果をレジスタRxに代入する処理を表し、ADDRx,RyはレジスタRxとRy上のデータの加算を、XORRx,RyはレジスタRxとRy上のデータの排他的論理和を、ROTL32Rx,sはレジスタRx上のデータをsビット左巡回シフトする処理を、それぞれ表している。
次に、R2,R3に配置されている暗号化対象データP1,P2と、R0,R1に配置されている鍵K0,K1と、それぞれ排他的論理和をとる(ステップ3)。
この構成により、暗号処理対象データを配置したレジスタと、鍵を配置したレジスタのみで暗号処理を実行できる。復号処理は、暗号処理を逆順に行えばよい。
また、ここでは暗号化対象データを64ビットとし、暗号化のみを行っているが、例えば、レジスタR3の暗号化対象データを常にゼロとし、復号後にレジスタR3の値がゼロであるかどうかをチェックすることにより、RAM上に置かれたデータの改ざんを検出することができる。
以上、本実施形態の情報処理装置のデータ処理方法によれば、ソフトウェア割り込みの有無によらず、RAM上のデータは、常に暗号化して書き込まれる。そのため、マルウェアがRAM上のデータから秘密情報を得るためには、暗号化鍵の推定、またはアプリの実行内容の解析により割り込み発生時に秘匿されたデータを復号する必要があるため、秘密情報の漏えいリスクを軽減できる。
〔実施形態2〕
以下、本発明に係る実施形態2を、図10および図11を用いて説明する。
実施形態1では、シングルCPUでRAM上のデータを暗号化する処理について説明したが、本実施形態2の情報処理装置は、マルチCPU、マルチコアで構成された装置であり、マルチCPUで暗号処理を分割実行するものである。
以下、図10および図11にしたがって、定期的なソフトウェア割り込みに伴う処理の中断および復帰と、中断時に退避されるデータの暗号化プロセスについて説明する。
本実施形態では、CPUはマルチコアであり、アプリが同時に複数のサブルーチンを実行している場合を考える。アプリは処理ブロック1(1010)、処理ブロック2(1020)を、それぞれCPU1(1001)、CPU2(1002)上で実行しているものとする。実施形態1の場合と同様に、アプリ231は単位時間で実行可能な処理ブロックに分割されているものとする。
先ず、処理ブロック1(1010)がサブルーチンの処理を完了すると、暗号処理1(1011)として、鍵1(1012)をパラメータとして平文1013を暗号化し、暗号文1(1051)をRAM240に置く(ステップ1:S1101)。そして、処理ブロック1(1010)は、鍵1(1012)を廃棄し、処理を中断する。
次に、処理ブロック2(1020)の暗号処理2(1021)では、鍵2(1022)をパラメータとしてRAM240上の暗号文1(1051)をさらに暗号化した暗号文2(1052)をRAM240に置く(ステップ2:S1102)。そして、処理ブロック2(1020)は、鍵2(1022)を廃棄し、処理を中断する。
次に、割り込み処理1060から復帰後、鍵2(1042)と処理ブロック4(1040)で復号処理2(1041)として、RAM240から暗号文2(1052)を読み出し、鍵2(1042)と復号処理2(1041)で復号した暗号文1′(1053)を、RAM240に書き込む(ステップ3:S1104)。
次に、割り込み処理1060から復帰後、処理ブロック3(1030)で、復号処理1(1031)により、鍵1(1032)とRAM240から暗号文1′(1053)を読み出し、鍵1(1032)で暗号文1′(1053)を復号し、平文1033を得る(ステップ4:S1105))。その後、必要に応じてサブルーチン614に相当する処理を行う。
最後に、処理ブロック4(1040)で、エントロピー発生源(243)からエントロピー源を取得し、鍵生成処理2’(1043)により、鍵2’(1044)を生成し、鍵2(1042)を上書きし、処理ブロック3(1030)で、エントロピー発生源243からエントロピー源を取得し、鍵生成処理1(1034)により、鍵1’(1035)を生成し、鍵1(1032)を上書きする(ステップ5:S1106):。
この構成とRAMデータの暗号化方法により、RAM上のデータは、鍵1(1012)、鍵2(1022)で二重暗号化される。例えば、処理ブロック1(1010)がダンプされて鍵1(1012)が漏えいした場合であっても、同時に二つの処理ブロックをダンプすることは難しいため、鍵2(1022)は漏えいせず、秘密情報の漏えいを防止することができる。また、各処理ブロックで鍵を廃棄、更新していくため、攻撃者が次の割り込みタイミングで他の処理ブロックがダンプしたとしても、得られたデータは二つ以上の鍵で暗号化されているため、攻撃者はやはり秘密情報を取得することはできない。
図10ではマルチコアで二つのプロセスが同時に実行されているケースを想定しているが、三つ以上のプロセスによる多重暗号化を行ってもよい。また、多重暗号化を行う代わりに、複数の処理ブロックで秘密分散処理を行ってもよい。
また、ここではマルチコアのシステムを想定しているので、ステップ2(1022)において処理ブロック2(1020)は処理を中断せず、CPU1(1001)上で処理ブロック3(1030)が実行されるまで、RAM暗号処理とは、独立の処理を実行していてもよい。この場合、処理ブロック2(1020)と処理ブロック4(1040)は実質的に同一の処理ブロックであり、復号のタイミングまで鍵2(1022)は廃棄されない。処理ブロック1(1010)と処理ブロック3(1030)についても同様である。
また、図11で説明した処理では、CPU1(1001)上で実行される処理ブロック1(1010)の平文1013のみを二重暗号化しているが、同様にしてCPU2(1002)上で実行される処理ブロック2(1020)の保持するデータについても、処理ブロック1(1010)で多重暗号化を施してもよい。反対に、処理ブロック2(1020)は多重暗号化を施すための専用の処理ブロックでもよい。
以上、本実施形態では、RAM上のデータをマルチコアによって、多重に暗号化するため、セキュリティの強度を高めることが可能になる。
102…ネットワーク端末、210…ネットワークインターフェース、220…センサ、230…ストレージ、240…CPU、241…レジスタ、242…演算器、243…エントロピー発生源、244…サイクルカウンタ、
300…記憶部、310…演算部、320…通信部、330…端末固有の情報、340…インストーラ、341…保護対象プログラム、342…鍵生成部、343暗号化部、344…復号部、345…割り込み頻度取得部、346…処理分割部、351…処理ブロック1、352…処理ブロックk′、353…鍵を埋め込んだ暗号化部、354…鍵を埋め込んだ復号部

Claims (8)

  1. 主記憶装置に格納されたデータとプログラムをCPU(Central Processing Unit)が参照して演算することにより処理をおこなう情報処理装置であって、
    前記プログラムのインストーラは、
    CPU情報に基づいて、インストールするプログラムの処理を分割して、前記主記憶装置に格納された暗号化されたデータを読み出して復号する復号処理と、平文データを暗号化する暗号処理と、サブルーチンとを合わせた実行単位の実行時間が、前記所定の単位時間を越えないようなコードを生成してインストールをおこない、
    所定の単位時間の間に、
    前記CPUが、前記主記憶装置に格納された暗号化されたデータを読み出して復号する復号処理と、
    前記CPUが、前記プログラムのサブルーチンの実行をする処理と、
    前記CPUが、平文データを暗号化する暗号処理と、
    前記CPUが、暗号化されたデータを前記主記憶装置に書き込む処理とを実行することを特徴とする情報処理装置。
  2. 前記所定の単位時間は、ソフトウェア割込みの時間であることを特徴とする請求項1記載の情報処理装置。
  3. 前記プログラムのインストーラは、
    前記プログラムをインストールする際に、前記主記憶装置に格納された暗号化されたデータを読み出して復号する復号処理のコードと、平文データを暗号化する暗号処理のコードとをインストールし、
    前記主記憶装置に格納された暗号化されたデータを読み出して復号する復号処理のコードと、平文データを暗号化する暗号処理のコードとに共通の秘密鍵を埋め込むことを特徴とする請求項1記載の情報処理装置。
  4. 前記プログラムのサブルーチンは、
    前記主記憶装置に格納された暗号化されたデータを読み出して、前記CPUのレジスタ上に復号する復号処理と、
    前記CPUのレジスタ上にある平文データを暗号化する暗号処理とをおこない、
    前記情報処理装置は、エントロピー発生源を有し、
    前記エントロピー発生源の発生したエントロピー源に基づいて、
    前記復号処理と、前記暗号処理とで、共通の秘密鍵を生成することを特徴とする請求項1記載の情報処理装置。
  5. 前記情報処理装置は、複数のCPUを有し、
    各々のCPUがプロセスを並行に実行し、
    第一のCPUが実行する復号処理と暗号処理の共通の秘密鍵と、
    第二のCPUが実行する復号処理と暗号処理の共通の秘密鍵とは異なることを特徴とする請求項1記載の情報処理装置。
  6. 第一のCPUは、第一のCPUが実行する復号処理と暗号処理の共通の秘密鍵により、平文を暗号化して、前記主記憶装置に暗号文として書込み、
    前記第二のCPUは、前記第一のCPUが前記主記憶装置に書き込んだ暗号文を読み出して、さらに、第二のCPUが実行する復号処理と暗号処理の共通の秘密鍵によりその暗号文を暗号化して、前記主記憶装置に暗号文として書き込むことを特徴とする請求項5記載の情報処理装置。
  7. 主記憶装置に格納されたデータとプログラムをCPU(Central Processing Unit)が参照して演算することにより処理を行う情報処理装置のデータ処理方法であって、
    前記プログラムをインストールする際に、前記プログラムのサブルーチンの実行前に、前記主記憶装置に格納された暗号化されたデータを読み出して復号する復号処理のコードをインストールし、前記プログラムのサブルーチンの実行後に、平文を暗号化する暗号処理のコードとをインストールするステップとを有し、
    前記復号処理のコードと、前記暗号処理のコードとに共通の秘密鍵埋め込まれ、
    ソフトウェア割込みの復帰時に、前記主記憶装置に格納された暗号化されたデータを読み出して復号する復号処理を実行するステップと、
    前記復号処理を実行するステップの後に、前記プログラムのサブルーチンの実行するステップと、
    前記プログラムのサブルーチンの実行するステップの後に、平文を前記暗号処理により暗号化して、暗号文として、主記憶装置に書き込むステップとを有し、
    前記プログラムをインストールする際に、前記復号処理を実行するコードと、前記プログラムのサブルーチンを実行するコードと、前記平文を暗号化する暗号処理のコードが、合わせて所定の単位時間内に実行するようなコードを生成することを特徴とする情報処理装置のデータ処理方法。
  8. 主記憶装置に格納されたデータとプログラムをCPU(Central Processing Unit)が参照して演算することにより処理を行う情報処理装置のデータ処理方法であって、
    エントロピー発生源が、エントロピー源を発生するステップと、
    前記CPUが、暗号鍵を前記エントロピーに基づいて、暗号鍵を生成するステップと、
    前記CPUが、前記プログラムのサブルーチンの実行において、レジスタ上のデータを前記暗号鍵により暗号処理をして暗号文を生成するステップと、
    前記CPUが、前記プログラムのサブルーチンの実行において、前記生成した暗号文を主記憶装置に書き込むステップと、
    前記CPUが、前記プログラムのサブルーチンの実行において、前記主記憶装置に書き込まれた暗号文を読み出すステップと、
    前記CPUが、前記プログラムのサブルーチンの実行において、読み出された暗号文を、前記暗号鍵よりレジスタ上のデータとして復号化するステップと、
    前記CPUが、前記復号化の後は、前記暗号鍵を廃棄するステップとを有することを特徴とする請求項7記載の情報処理装置のデータ処理方法。
JP2017200362A 2017-10-16 2017-10-16 情報処理装置および情報処理装置のデータ処理方法 Active JP6899308B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017200362A JP6899308B2 (ja) 2017-10-16 2017-10-16 情報処理装置および情報処理装置のデータ処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017200362A JP6899308B2 (ja) 2017-10-16 2017-10-16 情報処理装置および情報処理装置のデータ処理方法

Publications (2)

Publication Number Publication Date
JP2019074913A true JP2019074913A (ja) 2019-05-16
JP6899308B2 JP6899308B2 (ja) 2021-07-07

Family

ID=66544774

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017200362A Active JP6899308B2 (ja) 2017-10-16 2017-10-16 情報処理装置および情報処理装置のデータ処理方法

Country Status (1)

Country Link
JP (1) JP6899308B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3799348A1 (en) 2019-09-25 2021-03-31 Hitachi, Ltd. Information processing apparatus
WO2021117524A1 (ja) * 2019-12-10 2021-06-17 株式会社日立製作所 実行ファイル生成装置、方法、およびプログラムが記録された非一時的記憶媒体

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004272816A (ja) * 2003-03-11 2004-09-30 Ntt Docomo Inc マルチタスク実行システム及びマルチタスク実行方法
JP2008033577A (ja) * 2006-07-28 2008-02-14 Kddi Corp マルチタスクスケジューリング機能搭載装置及びプログラム
JP2009278491A (ja) * 2008-05-16 2009-11-26 Casio Comput Co Ltd マイクロプロセッサ及びマイクロプロセッサ応用装置
US20150270956A1 (en) * 2014-03-20 2015-09-24 Microsoft Corporation Rapid Data Protection for Storage Devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004272816A (ja) * 2003-03-11 2004-09-30 Ntt Docomo Inc マルチタスク実行システム及びマルチタスク実行方法
JP2008033577A (ja) * 2006-07-28 2008-02-14 Kddi Corp マルチタスクスケジューリング機能搭載装置及びプログラム
JP2009278491A (ja) * 2008-05-16 2009-11-26 Casio Comput Co Ltd マイクロプロセッサ及びマイクロプロセッサ応用装置
US20150270956A1 (en) * 2014-03-20 2015-09-24 Microsoft Corporation Rapid Data Protection for Storage Devices

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
稲村 雄: "Cryptographic Memory System Get high with a little help from my kernel", 電子情報通信学会技術研究報告, vol. 103, no. 195, JPN6021007546, 10 July 2003 (2003-07-10), pages 121 - 126, ISSN: 0004458756 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3799348A1 (en) 2019-09-25 2021-03-31 Hitachi, Ltd. Information processing apparatus
WO2021117524A1 (ja) * 2019-12-10 2021-06-17 株式会社日立製作所 実行ファイル生成装置、方法、およびプログラムが記録された非一時的記憶媒体

Also Published As

Publication number Publication date
JP6899308B2 (ja) 2021-07-07

Similar Documents

Publication Publication Date Title
KR102217501B1 (ko) 신뢰 실행 환경을 갖는 모바일 디바이스
US10853270B2 (en) Cryptographic pointer address encoding
US9734355B2 (en) System and method for an efficient authentication and key exchange protocol
US9054865B2 (en) Cryptographic system and methodology for securing software cryptography
US11061710B2 (en) Virtual machine exit support by a virtual machine function
US11263311B2 (en) Securing virtual-machine software applications
US10237059B2 (en) Diversified instruction set processing to enhance security
CN105450620A (zh) 一种信息处理方法及装置
US20160188874A1 (en) System and method for secure code entry point control
US9256756B2 (en) Method of encryption and decryption for shared library in open operating system
CN113569248A (zh) 数据处理的方法以及计算设备
JP6899308B2 (ja) 情報処理装置および情報処理装置のデータ処理方法
WO2021117524A1 (ja) 実行ファイル生成装置、方法、およびプログラムが記録された非一時的記憶媒体
WO2020226054A1 (ja) 情報処理方法、情報処理装置及び記憶媒体
JP2018026651A (ja) プログラムを保護する方法
EP3009952A1 (en) System and method for protecting a device against attacks on procedure calls by encrypting arguments
Vaslin ‘Hardware Core for Off-Chip Memory Security Management in Embedded Systems
ES2798077T3 (es) Sistema criptográfico y metodología para asegurar criptografía de software

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200325

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210427

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210614

R150 Certificate of patent or registration of utility model

Ref document number: 6899308

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150