JP2021051199A - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP2021051199A
JP2021051199A JP2019174291A JP2019174291A JP2021051199A JP 2021051199 A JP2021051199 A JP 2021051199A JP 2019174291 A JP2019174291 A JP 2019174291A JP 2019174291 A JP2019174291 A JP 2019174291A JP 2021051199 A JP2021051199 A JP 2021051199A
Authority
JP
Japan
Prior art keywords
entropy source
entropy
data protection
delivery
application
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
JP2019174291A
Other languages
English (en)
Other versions
JP7295761B2 (ja
Inventor
麻奈美 鈴木
Manami Suzuki
麻奈美 鈴木
渡辺 大
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 JP2019174291A priority Critical patent/JP7295761B2/ja
Priority to EP20193359.5A priority patent/EP3799348A1/en
Priority to US17/014,379 priority patent/US20210089346A1/en
Publication of JP2021051199A publication Critical patent/JP2021051199A/ja
Application granted granted Critical
Publication of JP7295761B2 publication Critical patent/JP7295761B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • 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
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Virology (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Bioethics (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】メモリ上のデータを暗号化する際に、マルウェアに盗聴されることなく高速に十分なエントロピーを有するエントロピー源を取得して暗号鍵を生成する。【解決手段】主記憶装置は、プログラムごとにリソースの割り当てを行うOSと、エントロピー源を収集し配送を行うエントロピー源収集・配送プログラムと、エントロピー源収集・配送プログラムが配送したエントロピー源を用いてデータの保護処理を行うデータ保護プログラムとを格納する。【選択図】図4

Description

本発明は、情報処理装置に関する。
モバイル端末の普及とWebサービスの高度化に伴い、サービスの種類も多様化している。特に近年では、モバイル決済のように、従来ATMや窓口、専用端末を経由していた支払いや送金に関するサービスをモバイル端末上で実行するサービスが流行の兆しを見せている。
このようなサービスを利用する際には、専用のアプリケーションソフトウェア(以下、単に「アプリ」という)をインストールし、そのアプリを介してサービスを利用するのが一般的である。
また、サービスの利用に際してユーザ認証(もしくは端末認証)を行う必要があるが、このとき、ユーザ(もしくは端末)のみが持つ秘密情報を用いる。このような処理は、SIMチップ状の領域内で行われることが望ましいが、上記のようにアプリ上で秘密情報を取り扱うケースがほとんどである。これは、サービス用アプリをインストールするためには、SIMチップの記憶容量や処理能力が低いことが理由である。
一方で、モバイル端末のセキュリティという観点では、一定の割合で端末が不正ソフトウェア(マルウェア)に感染しているという現実があり、金融サービスに特化したマルウェアの存在も確認されている。特に、メモリ上に置かれたデータを読み取りクレジットカード暗号などを取り出すマルウェアの存在が報告されており、アプリの実行中にメモリに置かれるデータを保護する必要がある。上記のような課題に対する対策として、メモリ上のデータを暗号化して格納する方法がある。
例えば、特許文献1は、CPUやメモリ機構などの特別のハードウェアのサポートを必要とせずにメモリ上にデータを格納する際に暗号化を行う方式を開示している。この方式は、暗号化処理を行うアプリが暗号化に用いる鍵(以下、単に「鍵」という)の生成をCPU内で行う。
鍵の生成には、鍵を生成するのに十分な値の揺らぎ(以下、「エントロピー」という)を有する値(以下、「エントロピー源」という)が必要である。鍵を生成するのに十分なエントロピーを有するエントロピー源の例として、乱数生成器から生成された乱数がある。
特開2019−74913号公報
特許文献1では、メモリ上のデータの暗号化を行うアプリは、鍵を生成するのに十分なエントロピーを有するエントロピー源をCPUが有するエントロピー発生源を用いて生成し、この値を用いて鍵生成を行う。
しかし、CPUが乱数生成器を有しない場合や、CPUが乱数生成器を有するがデータの暗号化を行うアプリがこれを使用できる権限を有しない場合がある。これらの場合では、単位時間当たりに生成するエントロピーは少ないがアプリが利用可能なエントロピー発生源(例えばCPUタイマのように、CPU内のノイズを有する機能を利用したもの)へ繰り返しアクセスし、エントロピー源を収集するという対策が考えられる。
しかし、このようなCPU内のエントロピー発生源から短時間で得られるエントロピーは小さいため、暗号鍵を生成するために必要となる十分なエントロピーを有するエントロピー源を収集するのには時間がかかる。
尚、メモリ上のデータの暗号化を行うアプリが、端末内の別のアプリが生成したエントロピー源を用いて鍵生成を行う方式も考えられる。しかし、この方式だとアプリ間の通信路はマルウェアがアクセス可能であるため、公開通信路とみなすことができ、マルウェアによる盗聴のリスクがある。
本発明の目的は、メモリ上のデータを暗号化する際に、マルウェアに盗聴されることなく高速に十分なエントロピーを有するエントロピー源を取得して暗号鍵を生成することにある。
本発明の一態様の情報処理装置は、主記憶装置に格納されたデータとプログラムをCPUが参照して演算することにより処理を行う情報処理装置であって、前記情報処理装置は、前記CPUを介して前記主記憶装置に接続され、エントロピー源を発生するエントロピー発生源を有し、前記主記憶装置は、前記プログラムごとにリソースの割り当てを行うOSと、前記エントロピー源を収集し配送を行うエントロピー源収集・配送プログラムと、前記エントロピー源収集・配送プログラムが配送した前記エントロピー源を用いて前記データの保護処理を行うデータ保護プログラムとを格納し、前記エントロピー源収集・配送プログラムは、前記エントロピー発生源から第1のエントロピー源を収集するエントロピー源収集部と、前記第1のエントロピー源から疑似乱数である第2のエントロピー源を生成して前記データ保護プログラムに前記第2のエントロピー源を配送するエントロピー源生成・配送部とを有し、前記データ保護プログラムは、前記エントロピー源収集・配送プログラムが配送した前記第2のエントロピー源を取得し、取得した前記第2のエントロピー源から第3のエントロピー源を生成するエントロピー源取得部と、前記データの保護処理を前記第3のエントロピー源を用いて行うデータ保護処理部とを有する。
本発明の一態様によれば、メモリ上のデータを暗号化する際に、マルウェアに盗聴されることなく高速に十分なエントロピーを有するエントロピー源を取得して暗号鍵を生成することができる。
実施例の情報処理装置(端末)が適用されるシステム構成の一例を示す図である。 実施例の情報処理装置(端末)が適用されるシステムの利用形態の一例を示す図である。 実施例の情報処理装置(端末)の機能構成を示す図である。 エントロピー源収集・配送アプリとデータ保護アプリの機能構成を示す図である。 エントロピー源収集・配送アプリが端末内で扱う機能構成を示す図である。 エントロピー源取集・配送アプリが有するエントロピー源2配送部における処理フローである。 データ保護アプリが端末内で扱う機能構成を示す図である。 データ保護アプリが有するエントロピー源3取得部における処理フローである。 エントロピー源の配送イメージを示す図である。 マルウェアによる通信路の盗聴イメージを示す図である。
実施形態では、CPUが乱数生成器を有しない、または、CPUが乱数生成器を有するがデータの暗号化を行うアプリが乱数生成器を使用できない場合において、メモリ上のデータを暗号化する際に、マルウェアに盗聴されることなく高速に十分なエントロピーを有するエントロピー源を取得し、暗号鍵を生成する。このため、以下に示すようなOSの機能を利用する。
OSは端末内の情報を用いて適宜アプリごとにリソースの割り当てを行う。複数のアプリから同時に同一リソースへアクセスする試行を繰り返した場合、リソースへのアプリのアクセス順は試行ごとに変動する。
OSが用意したAPIをアプリが呼び出すことで、OSはメモリ内に複数アプリがアクセスすることができる領域(以下、「共有メモリ領域」という)を確保する。
具体的には、実施形態では、以下のような手段を用いる。
エントロピー発生源からエントロピー源を収集する機能とメモリ上のデータを暗号化する機能をそれぞれ別のアプリがもつ。
エントロピー発生源からエントロピー源を収集する機能を有するアプリ(以下、「アプリ1」という)は収集したエントロピー源を用いて乱数を生成し、データを暗号化する機能を有するアプリ(以下、「アプリ2」という)とのメモリ上の共有メモリ領域に生成した乱数を書き込む処理を繰り返し行う。
アプリ1が共有メモリ領域に値を書き込む処理を繰り返し行っている間、アプリ2はアプリ1との共有メモリ領域の値の取得を繰り返し行う。アプリ2は、共有メモリ領域から取得した複数の値を用いて鍵生成を行う。
実施形態によれば、アプリが共有メモリ領域にアクセスできるタイミングはOSによって随時決定される。したがって、アプリ間で共有メモリを介してエントロピー源の配送を行うことで、マルウェアが共有メモリ領域にアクセスできる場合においても、メモリ上のデータの暗号化を行うアプリが鍵を生成するために共有メモリ領域から取得した値のすべてをマルウェアが取得することは難しい。
この結果、マルウェアは暗号鍵を復元することが難しくなり、マルウェアがメモリ上のデータの暗号化を無効化するリスクを軽減できる。
また、共有メモリに書き込まれる値の有するエントロピーは、CPU内のノイズを有する機能を利用したエントロピー発生源が1度に生成する値の有するエントロピーよりも大幅に大きい。したがって、上記手法によれば、鍵生成に十分なエントロピーを有するエントロピー源を取得するためにエントロピーを有する値を収集する回数が少なくて良い。このため、鍵生成に十分なエントロピー源を高速に取得することができる。
以下、図面を用いて実施例について説明する。
図1を参照して、実施例の情報処理装置(端末)が適用されるシステム構成例について説明する。
システムは、ネットワーク端末102を持つユーザ101とアプリ配信サーバ103で構成されており、ユーザ101はアプリ配信サーバ103からダウンロードしたアプリを端末102にダウンロードする。
アプリはサービス提供者110が提供する特定のサービスを利用するために用いられる。ユーザ101はアプリ配信サーバ103からダウンロードしたアプリを端末102にインストールした後に認証サーバ111に対してユーザ登録を実行する。サービスを利用する際には、サービスの認証サーバ111に対してユーザ認証(もしくは機器認証)をおこなった後に、アプリケーションサーバ112を通じてサービスを利用する。
図2を参照して、実施例の情報処理装置(端末)の利用イメージについて説明する。図2は、端末102が認証サーバ111に対してユーザ認証を行う利用イメージを表す図である。
端末102は一般的な計算機端末と同様にCPU206、メモリ205、ストレージ210を具備し、さらに生体情報201を取得するセンサ202、認証サーバ111やアプリケーションサーバ112と通信を行うためのネットワークインターフェース208を具備する。ストレージ210内には認証アプリ211が記憶されている。認証を実行する際には、センサ202はユーザ101の生体情報201を含むセンサデータ203を受け取り、適切な処理を施した結果(通信データ207)を認証サーバ111に送信する。
マルウェア感染による情報漏洩を防止するため、センサデータ203と通信データ207は暗号化してもよい。この場合、認証アプリ211はセンサ202及び認証サーバ111と暗号通信を行うための鍵を共有する。
図3を参照して、実施例の情報処理装置(端末)の機能構成について説明する。
端末102は、ネットワーク301を介して外部と情報のやり取りを行うネットワークインターフェース208、カメラやマイクなど物理情報を読み取るセンサ202、物理乱数生成器などのエントロピー発生源302、データやプログラムを保存するストレージ210、演算処理を行うCPU206、処理中の中間データやプログラムを保持するメモリ205などで構成される。これらの機能はデータバスで互いに繋がれており、メモリ205を介してデータをやり取りする。
CPU206は、演算処理で扱うデータを格納するための汎用レジスタ303を複数保持している。ストレージ210上にはアプリのバイナリデータや設定ファイルが保存されている。メモリ205には、OS304と呼ばれるプログラムが常駐しており、ハードウェアとアプリの仲介や、複数のアプリの実行権限とリソースの管理を行っている。
一般的なユーザアプリは、ユーザ権限とよばれる限られた権限の元で実行される。一方、OS304によるリソース管理に関わる処理などはより強い権限の元で実行される。メモリ205は、ユーザアプリが利用するユーザ空間320と、OS304の中心的な処理が利用するカーネル空間310に分けられる。
ストレージ210上に保管されているエントロピー源収集・配送アプリ(エントロピー源収集・配送プログラム)305、データ保護アプリ(データ保護プログラム)306は、実行されるとメモリ上のユーザ空間320上に展開される。また、エントロピー源収集・配送アプリ305はOS起動時に実行され、以後メモリ205上に常駐している。
メモリ205上のエントロピー源収集・配送アプリ(エントロピー源収集・配送プログラム)321やデータ保護アプリ(データ保護プログラム)324は、OS304がアプリ毎に割り当てるユーザ空間320上のメモリ利用領域(例えば、エントロピー源収集・配送アプリ321に割り当てられたエントロピー源収集・配送アプリ割り当て領域322や、データ保護アプリ324に割り当てられたデータ保護アプリ割り当て領域325)を使って処理を実行する。
これらのアプリのメモリ利用領域は、アプリ実行時に動的に確保してもよいし、実行の途中で動的に(C言語の標準ライブラリとして提供されるalloc関数などを介して)確保してもよい。一般的に、OS304によってアプリ毎に異なるメモリ領域がアプリの利用領域としてユーザ空間320上に割り当てられる。しかし、複数アプリ間でメモリ205内のユーザ空間320上に複数アプリがアクセス可能な共有メモリ領域323を確保することをアプリ実行時もしくは実行中にOS304へ明示することで、共有メモリ領域323を確保することができる。
本実施例では、エントロピー源収集・配送アプリ321とデータ保護アプリ324は共有メモリ領域323をもつ。また、本実施例では共有メモリ領域323の確保はデータ保護アプリ324が行ってもよいし、エントロピー源収集・配送アプリ321が行ってもよい。このため、本実施例に関する以降の説明では、データ保護アプリ324が共有メモリ領域323の確保を行うことを前提とした説明を行う。
複数のアプリを同時に実行する場合、OS304のプロセス管理機能はCPU206やメモリ205などのハードウェアリソースをあるアプリに割り当て、適宜この割り当ての切り替え(以下、「割り込み」と示す)を行う。
割り込みが発生する際は、実行中のアプリ(以下、「アプリ1」と示す)の汎用レジスタ303の情報をアプリ1に割り当てられたカーネル空間310上の退避領域(例えばデータ保護アプリに割り当てられたデータ保護アプリ退避領域311やエントロピー源収集・配送アプリに割り当てられたエントロピー源収集・配送アプリ退避領域312)へ格納する。
その後、新たにハードウェアリソースを割り当てるアプリ(以下、「アプリ2」と示す)にハードウェアリソースを割り当て、アプリ2の実行を開始する。アプリ2の実行が終了したら、アプリ1の退避領域のデータを汎用レジスタ303に復元し、アプリ1の処理を開始する。
OS304はサイクルカウンタなどの時刻情報やアプリごとの実行優先度情報などに基づいて、ハードウェアリソースを割り当てるアプリを決定し、必要に応じて割り込みのための処理を行う。
エントロピー源収集・配送アプリ321はエントロピー発生源302からエントロピー源を収集し、データ保護アプリ324との共有メモリ領域323を介してデータ保護アプリ324へエントロピー源の配送を行う。
データ保護アプリ324は、共有メモリ領域323を介してエントロピー源収集・配送アプリ321が配送したエントロピー源を取得し、このエントロピー源を用いてデータ保護アプリ324に割り当てられたメモリ領域内に含まれる保護対象データ326のデータ保護処理を行う。
保護対象データ326はセンサ202から取得したセンサデータ203やネットワークインターフェース208から取得した通信データ207である。また、保護対象データ326はストレージ210上に保存されているデータでもよい。
図4を参照して、メインの機能構成について説明する。
図4は、図3におけるメモリのユーザ空間320を詳細に表したものであり、本実施例におけるエントロピー源を収集し配送を行うエントロピー源収集・配送アプリ321とエントロピー源収集・配送アプリ321が配送したエントロピー源を用いてデータ保護処理を行うデータ保護アプリ324の機能構成を示している。エントロピー発生源302はCPU206を介してメモリ205に接続されているが、図4ではCPU206を省略している。
エントロピー源収集・配送アプリ321は、エントロピー発生源302からエントロピー源1を収集するエントロピー源1収集部401と、収集したエントロピー源1から疑似乱数(以下、「エントロピー源2」という)を生成しデータ保護アプリ324との共有メモリ領域323に書き込むことでデータ保護アプリ324にエントロピー源を配送するエントロピー源2生成・配送部410を備える。
エントロピー源1収集部401は、エントロピー発生源302にアクセスし、取得したエントロピー源1をエントロピープールにためることを繰り返す。エントロピー源1収集部401がエントロピー発生源302にアクセスするタイミングはアプリ内で定めてもよい。
エントロピー源2生成・配送部410は、エントロピープール内のエントロピー源1を用いてseedの生成を行うseed生成部411と、一定のルールに従ってseedからエントロピー源2を生成し共有メモリ領域323へ書き込みを行うエントロピー源2配送部412を備える。エントロピー源2配送部412は、疑似乱数生成器を用いてseedからエントロピー源2の生成を行うエントロピー源2生成部413を有する。
データ保護アプリ324は、主要処理部404と、エントロピー源収集・配送アプリ321が配送したエントロピー源2を一定のルールに従って取得し、この取得値からエントロピー源3を生成するエントロピー源3取得部402と、主要処理部404が扱う保護対象データ326のデータ保護処理をエントロピー源3を用いて行うデータ保護処理部403を備える。
図5を参照して、エントロピー源収集・配送アプリ321が端末内で扱う機能構成について説明する。図5はエントロピー源収集・配送アプリ321の実行時におけるCPU206およびメモリ205上に出現するデータについて図3を詳細に図示したものである。
ストレージ210内のエントロピー源収集・配送アプリ305がメモリ205のユーザ空間320上にエントロピー源取集・配送アプリ321として展開され、CPU内の汎用レジスタ303やメモリ205上のエントロピー源収集・配送アプリ割り当て領域322にプログラム変数や処理中のデータを格納しながらエントロピー源収集・配送アプリ321の処理が実行される。
汎用レジスタ303は、エントロピープール510を有しており、エントロピー発生源302から取得したエントロピー源1(511)が格納される。また、汎用レジスタ303内にはエントロピー収集・配送アプリのseed生成部411が生成したseed501やエントロピー源2生成部413が生成したエントロピー源2(502)が格納される。
ストレージ210内にはエントロピー源収取・配送アプリ305とデータ保護アプリ306の間でエントロピー源の配送を行うための情報を共有するための設定ファイル506が格納される。エントロピー収集・配送アプリ321によって共有メモリ領域323にエントロピー源2(505)が格納される。
エントロピー源収集・配送アプリ321の実行中に、マルウェア204を含む他のアプリによる割り込みが発生する場合、汎用レジスタ303上のデータ(例えばエントロピープール内のエントロピー源1(511)、seed501、エントロピー源2(502))は、カーネル空間310内のエントロピー源収集・配送アプリ退避領域312に格納される。このとき、割り込みによって実行されるアプリ(例えば、マルウェア204)はエントロピー源収集・配送アプリ退避領域312内のデータにアクセスすることはできない。
図6を参照して、エントロピー源2の生成・配送フローについて説明する。
図6は、本実施例において、エントロピー源収集・配送アプリ321が有するエントロピー源2配送部412の動作を表すフローチャートである。図5、6に従って、エントロピー源収集・配送アプリ321におけるエントロピー源2の生成・配送方法について説明する。
ステップ601では、エントロピー源2配送部412は、データ保護アプリ324との共有メモリ領域323のメモリ205上の場所を知るための情報(例えば共有メモリ領域323のアドレス)を取得する。この取得方法として、例えばデータ保護アプリ324が共有メモリ領域323を確保した際に、この領域のメモリ205上の場所を知るための情報を記した設定ファイル506を作成し、エントロピー源2配送部412がこの設定ファイル506を参照する方法がある。
ステップ602では、エントロピー源2配送部412はエントロピー源2生成部413を用いて汎用レジスタ303上のseed501からエントロピー源2(502)を生成する。このとき、seed501はエントロピー源収集・配送アプリ321のseed生成部411によって生成されたものであり、seed生成部411は汎用レジスタ303上のエントロピープール510内に格納されているエントロピー源1(511)を用いてseed501を生成し、汎用レジスタ303上に格納する。
ステップ603では、エントロピー源2配送部412は、ステップ601で取得した共有メモリ領域323の場所情報を用いて共有メモリ領域323にアクセスし、共有メモリ領域323にエントロピー源2(505)を書き込む。また、エントロピー源2配送部412が値を書き込む共有メモリ領域323内の場所は常に一定とし、エントロピー源2配送部412が書き込んだエントロピー源2(505)の値がすでに共有メモリ上に存在する場合はこの値を新たなエントロピー源2の値で完全に上書きする。
ステップ604では、エントロピー源2配送部412はデータ保護アプリ324からエントロピー源配送終了の合図を受信したか確認する。受信していない場合はステップ602〜603を繰り返す。
エントロピー源収集・配送アプリ321とデータ保護アプリ324の共有メモリ領域323の確保をエントロピー源収集・配送アプリ321が行う場合についてはステップ601のみ処理内容が異なる。このときのステップ601の具体的な処理内容については後述する。
図7を参照して、データ保護アプリ324が端末内で扱う機能構成について説明する。 図7はデータ保護アプリ324の実行時におけるCPU206およびメモリ205上に出現するデータについて図3を詳細に図示したものである。
ストレージ内210のデータ保護アプリ306がメモリ205のユーザ空間320上にデータ保護アプリ324として展開され、CPU206内の汎用レジスタ303やメモリ205上のデータ保護アプリ割り当て領域325にプログラム変数や処理中のデータを格納しながらデータ保護アプリ324の処理が実行される。
このとき、メモリ205上に共有メモリ323を初期化するための値(共有メモリ初期値707)やデータ保護アプリ324が取得するエントロピー源2のサイズ(取得目標サイズ708)が展開される。
汎用レジスタ303には、エントロピー源3取得部402が共有メモリ領域323から取得した共有メモリ一時取得値702や、共有メモリ取得値’701、エントロピー源3取得部402が生成したエントロピー源3(703)が格納される。また、汎用レジスタ303は取得エントロピープール710を有しており、共有メモリ取得値711が格納される。
ストレージ210内にはエントロピー源収取・配送アプリ305とデータ保護アプリ306の間でエントロピー源の配送を行うための情報を共有するための設定ファイル506が格納される。
データ保護アプリ324の実行中に、マルウェア204を含む他のアプリによる割り込みが発生する場合、汎用レジスタ303上のデータ(例えば取得エントロピープール710内の共有メモリ取得値711、共有メモリ取得値’701、エントロピー源3(703)、共有メモリ一時取得値702)はカーネル空間310内のデータ保護アプリ退避領域311に格納される。このとき、割り込みによって実行されるアプリ(例えば、マルウェア204)はデータ保護アプリ退避領域311内のデータにアクセスすることはできない。
図8を参照して、エントロピー源3取得部402の処理フローについて説明する。
図8は、本実施例において、データ保護アプリ324におけるエントロピー源3取得部402の処理フローである。
図8に従って、データ保護アプリがエントロピー源3(703)を取得する方法について説明する。
ステップ801では、エントロピー源3取得部402は、エントロピー源収集・配送アプリ321との共有メモリ領域323を確保する。
ステップ802では、エントロピー源3取得部402は、データ保護アプリ324内で定義されている共有メモリ初期値707を用いて、エントロピー源収集・配送アプリ321との共有メモリ領域323の値を共有メモリ初期値707で初期化する。
ステップ803では、エントロピー源3取得部402は、エントロピー源収集・配送アプリ321に共有メモリ領域323の場所を知らせるための情報(例えばメモリ番地)に関する情報を送信する。この送信方法の例として、例えばメモリ205上の場所を知るための情報を記した設定ファイル506をストレージ210上に作成する方法がある。
ステップ804では、エントロピー源3取得部402は、エントロピー源収集・配送アプリ321にエントロピー源配送開始の合図を送信する。
ステップ805では、エントロピー源3取得部402は、ステップ801で確保した共有メモリ323上のエントロピー源2(505)を共有メモリ一時取得値702として取得し、汎用レジスタ303上に格納する。
ステップ806では、エントロピー源3取得部402は、ステップ805で取得した共有メモリ一時取得値702が共有メモリ初期値707もしくは前回共有メモリ領域323から取得した値(以下、「共有メモリ取得値’701」と示す)と異なる値であるか確認する。共有メモリ一時取得値702が共有メモリ初期値707もしくは共有メモリ取得値’701と同一である場合は、エントロピー源3取得部402はステップ805を繰り返す。
ステップ807では、エントロピー源3取得部402は、共有メモリ取得値’701の値を共有メモリ一時取得値702の値に更新する。
ステップ808では、エントロピー源3取得部402は、共有メモリ一時取得値702の値を汎用レジスタ303上の取得エントロピープール710内の共有メモリ取得値711としてためる。
ステップ809では、エントロピー源3取得部402は、汎用レジスタ303上の取得エントロピープール710内のデータサイズが、データ保護アプリ324内で定義されているデータ保護に用いるための十分なサイズ(以下、「取得目標サイズ708」という)以上であるか確認する。不十分である場合はエントロピー源3取得部402はステップ805〜808を繰り返す。このときの取得目標サイズ708はデータ保護アプリ324をダウンロード時にデータ保護アプリ324内で定められている値を用いてもよいし、データ保護アプリ324の実行時に定めてもよい。
ステップ810では、エントロピー源3取得部402は、エントロピー源収集・配送アプリ321にエントロピー源配送終了の合図を送信する。
ステップ811では、エントロピー源3取得部402は、汎用レジスタ303上の取得エントロピープール710内に格納されている共有メモリ取得値711を用いてエントロピー源3(703)を生成し、汎用レジスタ303に格納する。エントロピー源3(703)の生成例として、ハッシュ関数を用いる方法があり、ハッシュ関数の入力を取得エントロピープール内の値、ハッシュ関数の出力をエントロピー源3(703)とすることでエントロピー源3(703)を生成する。
エントロピー源収集・配送アプリ321とデータ保護アプリ324の共有メモリ領域323の確保をエントロピー源収集・配送アプリ321が行う場合、図6のステップ601と、図8のステップ801〜ステップ803を交換すればよい。
図9を参照して、のエントロピー源2配送イメージについて説明する。
図9は、本実施例において、エントロピー源収集・配送アプリ321がデータ保護アプリ324へエントロピー源2を配送する様子を表している。図9に従って、エントロピー源2の配送方法を説明する。
まず、データ保護アプリ324はエントロピー源収集・配送アプリ321へエントロピー源配送開始の合図を送信する。
次に、エントロピー源収集・配送アプリ321は、データ保護アプリ324からエントロピー源配送開始の合図を受信した後、データ保護アプリ324からエントロピー源配送終了の合図を受信するまでの間、エントロピー源2(r0、r1、…)を生成し共有メモリ領域323へ書き込む。このとき、エントロピー源収集・配送アプリ321は共有メモリ領域323に書き込んだエントロピー源2の値を、データ保護アプリ324が取得したか否かを確認してもよいししなくてもよい。
次に、データ保護アプリ324は任意のタイミングで共有メモリ領域323へアクセスを行い、アクセス時に共有メモリ領域323に格納されている共有メモリ一時取得値(e0、e1、…、en)の取得を繰り返し行う。
データ保護アプリ324は、取得エントロピープール内の値のサイズが取得目標サイズ708以上になったとき、エントロピー源収集・配送アプリ321へエントロピー源配送終了の合図を送信し、共有メモリ領域323から共有メモリ一時取得値の取得をやめる。
図10を参照して、マルウェア204による通信路盗聴イメージについて説明する。
図10は、本実施例において、エントロピー源収集・配送アプリ321がデータ保護アプリ324へエントロピー源2を配送する際の通信路をマルウェア204が盗聴している様子を表している。図10に従って、マルウェア204が通信路を盗聴している場合においても本実施例はデータ保護処理が無効化されるリスクを軽減できることを説明する。
OS304が端末102内の情報をもとにリソースにアクセスできるアプリを随時決定している。このため、複数アプリが同時にOS304へ同一リソースへのアクセス要求を出す処理を繰り返したとき、リソースへのアクセス順は随時異なる。このためエントロピー源収集・配送アプリ321やデータ保護アプリ324が共有メモリ領域323へのアクセスを繰り返し行っている際に、共有メモリ領域323にアクセス可能なマルウェア204がこれらのアプリと同様に共有メモリ領域323へアクセスを行う処理を繰り返したとき、共有メモリ領域323にアクセスできるアプリの順序はOS304によって随時決定される。
よって、図8のようにマルウェア204がデータ保護アプリ324と同様に共有メモリ領域323の値の取得を繰り返し行った場合、データ保護アプリ324が共有メモリ領域323から取得した共有メモリ一時取得値(e0、e1、…、en)とマルウェア204が共有メモリ領域323から取得した値(e’0、e’1、…、e’m)が一致する確率は限りなく低い。
したがって、マルウェア204はデータ保護アプリ324がデータ保護処理部403で用いるエントロピー源3を復元できる確率は限りなく低くなる。このため、本実施例によってマルウェア204がデータ保護機能を無効化するリスクを軽減することができる。
上記実施例では、エントロピー源の収集・配送を行う機能とメモリ上のデータを暗号化するためのデータ保護機能をそれぞれ別のアプリがもち、各アプリはOSの機能を用いてエントロピー源の配送・受信を行う。エントロピー源を収集する機能を有するアプリは、エントロピー発生源からエントロピー源を収集し、収集したエントロピー源から乱数を生成しデータ保護機能を有するアプリに配送を行うことを繰り返す。データ保護機能を有するアプリは、エントロピー源を収集する機能を有するアプリが配送した値の取得を繰り返し、取得した値を用いて暗号鍵を生成し、暗号鍵を用いたデータ秘匿を行う。
上記実施例によれば、メモリ上のデータを暗号化する際に、マルウェアに盗聴されることなく高速に十分なエントロピーを有するエントロピー源を取得して暗号鍵を生成することができる。
尚、上記実施例では、エントロピー源収集・配送アプリ321がデータ保護アプリ324へエントロピー源2を配送する際にメモリ内の共有メモリ領域323を用いている。しかし、本発明はこれに限定されず、複数のアプリ間でデータを送受信するためにOS304が提供する機能(例えばメッセージキュー、名前付きパイプ、ソケット)を用いて、エントロピー源収集・配送アプリ321がデータ保護アプリ324へエントロピー源2を直接配送してもよい。
また、上記実施例では、エントロピー源収集・配送アプリ321とデータ保護アプリ324は同一の端末102内に配置されている。しかし、本発明はこれに限定されず、ネットワーク301を介して接続している2つの端末のそれぞれにエントロピー源収集・配送アプリ321とデータ保護アプリ324を分散して配置してもよい。この場合、エントロピー源収集・配送アプリ321はネットワーク301を用いてデータ保護アプリ324へエントロピー源2を配送する。
205 メモリ
206 CPU
302 エントロピー発生源
303 汎用レジスタ
321 エントロピー源収集・配送アプリ
401 エントロピー源1収集部
410 エントロピー源2生成・配送部
324 データ保護アプリ
402 エントロピー源3取得部
403 データ保護処理部
404 主要処理部
323 共有メモリ領域

Claims (10)

  1. 主記憶装置に格納されたデータとプログラムをCPUが参照して演算することにより処理を行う情報処理装置であって、
    前記情報処理装置は、
    前記CPUを介して前記主記憶装置に接続され、エントロピー源を発生するエントロピー発生源を有し、
    前記主記憶装置は、
    前記プログラムごとにリソースの割り当てを行うOSと、
    前記エントロピー源を収集し配送を行うエントロピー源収集・配送プログラムと、
    前記エントロピー源収集・配送プログラムが配送した前記エントロピー源を用いて前記データの保護処理を行うデータ保護プログラムと、を格納し、
    前記エントロピー源収集・配送プログラムは、
    前記エントロピー発生源から第1のエントロピー源を収集するエントロピー源収集部と、
    前記第1のエントロピー源から疑似乱数である第2のエントロピー源を生成して前記データ保護プログラムに前記第2のエントロピー源を配送するエントロピー源生成・配送部と、を有し、
    前記データ保護プログラムは、
    前記エントロピー源収集・配送プログラムが配送した前記第2のエントロピー源を取得し、取得した前記第2のエントロピー源から第3のエントロピー源を生成するエントロピー源取得部と、
    前記データの保護処理を前記第3のエントロピー源を用いて行うデータ保護処理部と、
    を有することを特徴とする情報処理装置。
  2. 前記OSは、
    前記エントロピー源収集・配送プログラムから前記データ保護プログラムに前記第2のエントロピー源を配送することを特徴とする請求項1に記載の情報処理装置。
  3. 前記OSは、
    前記エントロピー源収集・配送プログラムと前記データ保護プログラムとマルウェアを含む複数の前記プログラムから同時に同一の前記リソースへアクセスする試行を繰り返した場合、前記リソースへの前記プログラムのアクセス順を試行ごとに変動させることを特徴とする請求項1に記載の情報処理装置。
  4. 前記OSは、
    前記エントロピー源収集・配送プログラムの実行中に、前記マルウェアを含む複数の前記プログラムによる割り込みが発生した場合、
    前記第1のエントロピー源及び前記第2のエントロピー源を前記主記憶装置内のカーネル空間内のエントロピー源収集・配送プログラム退避領域に退避させ、
    前記割り込みによって実行される前記マルウェアが、前記エントロピー源収集・配送プログラム退避領域にアクセスできないようにすることを特徴とする請求項3に記載の情報処理装置。
  5. 前記OSは、
    前記データ保護プログラムの実行中に、前記マルウェアを含む複数の前記プログラムによる割り込みが発生した場合、
    前記第3のエントロピー源を前記主記憶装置内のカーネル空間内のデータ保護プログラム退避領域に退避させ、
    割り込みによって実行される前記マルウェアが、前記データ保護プログラム退避領域にアクセスできないようにすることを特徴とする請求項3に記載の情報処理装置。
  6. 前記主記憶装置は、
    前記エントロピー源収集・配送プログラムと前記データ保護プログラムを含む複数の前記プログラムがアクセス可能な共有メモリ領域を有し、
    前記エントロピー源収集・配送プログラムは、
    前記第2のエントロピー源を前記共有メモリ領域に書き込み、
    前記データ保護プログラムは、
    前記共有メモリ領域に書き込まれた前記第2のエントロピー源を取得することを特徴とする請求項1に記載の情報処理装置。
  7. 複数の前記プログラムはマルウェアを含み、
    前記OSは、
    複数の前記プログラムが前記共有メモリ領域にアクセスできるタイミングを随時決定することを特徴とする請求項6に記載の情報処理装置。
  8. 前記エントロピー源生成・配送部は、
    前記第1のエントロピー源を用いてseedの生成を行うseed生成部と、
    前記seedから前記第2のエントロピー源を生成して前記データ保護プログラムに配送するエントロピー源配送部と、
    を有することを特徴とする請求項1に記載の情報処理装置。
  9. 前記エントロピー源配送部は、
    疑似乱数生成器を用いて前記seedから前記第2のエントロピー源の生成を行うエントロピー源生成部を有することを特徴とする請求項8に記載の情報処理装置。
  10. 前記エントロピー源収集部は、
    前記エントロピー発生源にアクセスし、取得した前記第1のエントロピー源を前記CPUの汎用レジスタのエントロピープールにためる処理を繰り返すことを特徴とする請求項1に記載の情報処理装置。
JP2019174291A 2019-09-25 2019-09-25 情報処理装置 Active JP7295761B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019174291A JP7295761B2 (ja) 2019-09-25 2019-09-25 情報処理装置
EP20193359.5A EP3799348A1 (en) 2019-09-25 2020-08-28 Information processing apparatus
US17/014,379 US20210089346A1 (en) 2019-09-25 2020-09-08 Information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019174291A JP7295761B2 (ja) 2019-09-25 2019-09-25 情報処理装置

Publications (2)

Publication Number Publication Date
JP2021051199A true JP2021051199A (ja) 2021-04-01
JP7295761B2 JP7295761B2 (ja) 2023-06-21

Family

ID=72290906

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019174291A Active JP7295761B2 (ja) 2019-09-25 2019-09-25 情報処理装置

Country Status (3)

Country Link
US (1) US20210089346A1 (ja)
EP (1) EP3799348A1 (ja)
JP (1) JP7295761B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004038350A (ja) * 2002-07-01 2004-02-05 Hitachi Ltd 計算機の加速試験方法
US9270455B1 (en) * 2014-02-14 2016-02-23 Google Inc. CPU assisted seeding of a random number generator in an externally provable fashion
US20190286421A1 (en) * 2016-11-29 2019-09-19 Continental Teves Ag & Co. Ohg Method for providing random numbers for control units of a vehicle network, and vehicle network for performing said method

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8787564B2 (en) * 2011-11-30 2014-07-22 Certicom Corp. Assessing cryptographic entropy
US10887080B2 (en) * 2017-03-16 2021-01-05 King Fahd University Of Petroleum And Minerals Double-hashing operation mode for encryption
US10402169B2 (en) * 2017-07-12 2019-09-03 Dell Products L.P. Method and system of secure random seed generation for a cryptographically secure pseudo-random number generator
JP6899308B2 (ja) 2017-10-16 2021-07-07 株式会社日立製作所 情報処理装置および情報処理装置のデータ処理方法
US11646867B2 (en) * 2017-12-22 2023-05-09 The Boeing Company Systems and methods implementing countermeasures to phase tracking attacks on ring oscillator based entropy sources
JP7221596B2 (ja) 2018-03-28 2023-02-14 Jx金属株式会社 粒状試料の分析方法及び分析装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004038350A (ja) * 2002-07-01 2004-02-05 Hitachi Ltd 計算機の加速試験方法
US9270455B1 (en) * 2014-02-14 2016-02-23 Google Inc. CPU assisted seeding of a random number generator in an externally provable fashion
US20190286421A1 (en) * 2016-11-29 2019-09-19 Continental Teves Ag & Co. Ohg Method for providing random numbers for control units of a vehicle network, and vehicle network for performing said method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
渡辺 大: "暗号機能のソフトウェア実装におけるマルウェアの脅威に関する一考察", 電子情報通信学会技術研究報告, vol. 117, no. 316, JPN6023000358, 13 November 2017 (2017-11-13), JP, pages 35 - 40, ISSN: 0004964879 *

Also Published As

Publication number Publication date
EP3799348A1 (en) 2021-03-31
JP7295761B2 (ja) 2023-06-21
US20210089346A1 (en) 2021-03-25

Similar Documents

Publication Publication Date Title
JP5646631B2 (ja) デバイスの監査
CN110637301B (zh) 减少虚拟机中敏感数据的泄密
CN108345806B (zh) 一种硬件加密卡和加密方法
JP2019505887A (ja) 信頼できる実行環境を有するモバイル装置
US20190052651A1 (en) Real-time prevention of malicious content via dynamic analysis
US20130024936A1 (en) Auditing a device
EP3623980B1 (en) Ransomware encryption algorithm determination
Garay et al. Software integrity protection using timed executable agents
US11449612B2 (en) Ransomware remediation
US20150047001A1 (en) Application program execution device
CN115495746B (zh) 一种基于eBPF的安全防护方法、系统及电子设备
JP7295761B2 (ja) 情報処理装置
WO2021117638A1 (ja) 情報処理システム、プログラム間鍵共有方法、及びプログラム間鍵共有プログラム
Lee et al. Removing Secrets from Android's TLS.
JP2019074913A (ja) 情報処理装置および情報処理装置のデータ処理方法
CN108259490B (zh) 一种客户端校验方法及装置
WO2020226054A1 (ja) 情報処理方法、情報処理装置及び記憶媒体
WO2021117524A1 (ja) 実行ファイル生成装置、方法、およびプログラムが記録された非一時的記憶媒体
JP6297149B2 (ja) モバイル機器及び該モバイル機器の動作方法
US9058484B2 (en) Method for checking whether program instructions have been executed by a portable end device
CN116108418A (zh) 一种基于libevent库的可信验证通信方法
CN115828276A (zh) 一种接口数据的处理方法及装置、存储介质、计算机设备
CN116346330A (zh) 基于Redis缓存和c缓存的密钥存储读取方法
JP2018088574A (ja) プログラムイメージを保護する方法
Andersson Cryptographic Key Masking During Run-Time

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220323

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230215

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230609

R150 Certificate of patent or registration of utility model

Ref document number: 7295761

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150