JP2019050507A - 情報処理装置、情報処理方法およびプログラム - Google Patents

情報処理装置、情報処理方法およびプログラム Download PDF

Info

Publication number
JP2019050507A
JP2019050507A JP2017173995A JP2017173995A JP2019050507A JP 2019050507 A JP2019050507 A JP 2019050507A JP 2017173995 A JP2017173995 A JP 2017173995A JP 2017173995 A JP2017173995 A JP 2017173995A JP 2019050507 A JP2019050507 A JP 2019050507A
Authority
JP
Japan
Prior art keywords
message
unit
key
authentication code
message authentication
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
JP2017173995A
Other languages
English (en)
Other versions
JP6903529B2 (ja
Inventor
真也 内匠
Shinya Takumi
真也 内匠
嘉一 花谷
Kiichi Hanatani
嘉一 花谷
洋美 春木
Hiromi Haruki
洋美 春木
小池 正修
Masanobu Koike
正修 小池
直樹 小椋
Naoki Ogura
直樹 小椋
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2017173995A priority Critical patent/JP6903529B2/ja
Priority to US15/900,458 priority patent/US10963543B2/en
Publication of JP2019050507A publication Critical patent/JP2019050507A/ja
Application granted granted Critical
Publication of JP6903529B2 publication Critical patent/JP6903529B2/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/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • 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/604Tools and structures for managing or administering access control systems
    • 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/606Protecting data by securing the transmission between two devices or processes
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the 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/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3557Indexed addressing using program counter as base address

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Automation & Control Theory (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】OSとプロセス間の通信に対してセキュリティ機能を実現し、プロセスの保護を図る。
【解決手段】実施形態の情報処理装置は、プロセス管理部で管理されるプロセスを有する情報処理装置であって、前記プロセスは、鍵生成部と、認証コード生成部と、出力部と、を備える。鍵生成部は、前記プロセス管理部が割り当てたプロセス固有情報を用いて第1メッセージ認証鍵を生成する。認証コード生成部は、前記第1メッセージ認証鍵と第1メッセージを用いて第1メッセージ認証コードを生成する。出力部は、前記第1メッセージと前記第1メッセージ認証コードを前記プロセス管理部に送信する。
【選択図】図2

Description

本発明の実施形態は、情報処理装置、情報処理方法およびプログラムに関する。
一般的な計算機システムでは、ハードウェア資源を管理するOS(Operating System)が動作し、OSによって管理されるプロセス群が動作することで、処理を実行する。プロセス内のバグやプロセスへの攻撃により想定外の挙動が生じたときに、その影響がOSに及んでしまうと計算機システム全体に影響が及ぶ虞があるため、OSが管理する資源に対するプロセスによるアクセスは制限するように設計されている。そのため、OSとプロセス間でデータを交換する場合には、これらの間の通信機能が必要となる。また、OSとプロセス間の通信を保護し、安全なシステムを構築するためには、通信機能に通信データの完全性、通信相手のなりすまし防止、通信データの秘匿などのセキュリティ機能が必要となる。
一般的なネットワークにおける機器間の通信では、SSL(Secure Sockets Layer)やTLS(Transport Layer Security)により通信のセキュリティが保たれている。一方、OSとプロセス間の通信について、SSLやTLSなどの技術は、これらの技術を利用するための設定の観点で適しておらず、セキュリティ機能を実現するための技術は存在していなかった。そのため、OSとプロセス間の通信に対してセキュリティ機能を実現し、プロセスの保護を図ることが求められている。
RFC 6101 The Secure Sockets Layer(SSL)Protocol Version 3.0 RFC 5246 The Transport Layer Security(TLS)Protocol Version 1.2
本発明が解決しようとする課題は、OSとプロセス間の通信に対してセキュリティ機能を実現し、プロセスの保護を図ることができる情報処理装置、情報処理方法およびプログラムを提供することである。
実施形態の情報処理装置は、プロセス管理部で管理されるプロセスを有する情報処理装置であって、前記プロセスは、鍵生成部と、認証コード生成部と、出力部と、を備える。鍵生成部は、前記プロセス管理部が割り当てたプロセス固有情報を用いて第1メッセージ認証鍵を生成する。認証コード生成部は、前記第1メッセージ認証鍵と第1メッセージを用いて第1メッセージ認証コードを生成する。出力部は、前記第1メッセージと前記第1メッセージ認証コードを前記プロセス管理部に送信する。
情報処理装置の概略構成を示すブロック図。 第1実施形態のOSおよびプロセスの機能的な構成例を示すブロック図。 アドレス情報の一例を示す図。 ベースアドレスを取得する方法の一例を説明する図。 プロセス生成部による処理手順の一例を示すフローチャート。 メッセージ送信時におけるOSの処理手順の一例を示すフローチャート。 メッセージ受信時におけるプロセスの処理手順の一例を示すフローチャート。 メッセージ送信時におけるプロセスの処理手順の一例を示すフローチャート。 メッセージ受信時におけるOSの処理手順の一例を示すフローチャート。 変形例のOSおよび管理プロセスの機能的な構成例を示すブロック図。 管理プロセス判定部による処理手順の一例を示すフローチャート。 実行判定部による処理手順の一例を示すフローチャート。 プロセス実行制御部による処理手順の一例を示すフローチャート。 第2実施形態のOSおよびプロセスの機能的な構成例を示すブロック図。 第3実施形態のOSおよびプロセスの機能的な構成例を示すブロック図。 第4実施形態のOSおよびプロセスの機能的な構成例を示すブロック図。 第5実施形態のVMMおよびOSの機能的な構成例を示すブロック図。 メッセージ送信時におけるVMMの処理手順の一例を示すフローチャート。 メッセージ受信時におけるOSの処理手順の一例を示すフローチャート。 メッセージ送信時におけるOSの処理手順の一例を示すフローチャート。 メッセージ受信時におけるVMMの処理手順の一例を示すフローチャート。
以下、実施形態の情報処理装置、情報処理方法およびプログラムについて、図面を参照して詳細に説明する。なお、以下の説明において、同様の機能を持つ構成要素については同一の符号を付して、重複した説明を適宜省略する。
<第1実施形態>
図1は、本実施形態に係る情報処理装置10の概略構成を示すブロック図である。情報処理装置10は、図1に示すように、プロセッサ回路、メモリ、ストレージなどのハードウェア11と、ハードウェア11の機能を操作するOS12(「プロセス管理部」の一例)と、OS12の機能を利用して動作するプロセス13とを有する。OS12上では1つ以上のプロセス13が動作し、OS12は複数のプロセス13が並列・並行動作できるように、ハードウェア11のプロセッサ回路やメモリなどを適切に割り当てて、プロセス13を管理する。なお、OS12とハードウェア11の間にXen,KVM、Hyper−VなどのVMM(Virtual Machine Monitor)・ハイパーバイザが動作してもよく、OS12から見えるハードウェア11は仮想ハードウェアでもよい。また、OS12などのプロセス管理部は情報処理装置10の外部にあり、外部のプロセス管理部によって情報処理装置10内のプロセス13が管理される構成であってもよい。
図2は、OS12およびプロセス13の機能的な構成例を示すブロック図である。OS12はプロセス13を起動させるために、実行ファイルをメモリに割り当ててプロセス13を生成する。プロセス13は、プロセスの識別情報であるpidにより管理される。プロセス13が起動すると、OS12とプロセス13はデータを交換するための通信を行う。図2は、主に、このOS12とプロセス13間の通信を安全に行うための機能的な構成例を示している。
まず、OS12の機能について説明する。OS12は、図2に示すように、プロセス生成部101と、アドレス情報保存部102と、ベースアドレス取得部103と、鍵生成部104と、鍵保存部105と、認証コード生成部106と、出力部107と、入力部108と、認証コード検証部109と、プロセス起動確認部110とを備える。
プロセス生成部101は、プロセス13の生成処理を行う。例えばプロセス生成部101は、プロセス13の実行ファイルをメモリにマッピングするためのベースアドレスを設定し、設定したベースアドレスを含むアドレス情報を生成して、アドレス情報保存部102に格納する。また、プロセス生成部101は、生成したプロセス13の起動確認メッセージの送信要求を出力部107に送るといった処理を行う。
図3は、アドレス情報保存部102に格納されるアドレス情報の一例を示す図である。図3に例示するアドレス情報は、実行ファイル“/bin/test”のコード領域をメモリにマッピングする場合に生成されるアドレス情報の例であり、プロセス13のpidに対応付けて、「実行ファイル」、「ファイルオフセット」、「サイズ」、「ベースアドレス」および「マッピングフラグ」の各項目を含む。「実行ファイル」は、メモリにマッピングする実行ファイルのファイル名、「ファイルオフセット」は、マッピングする実行ファイルのオフセット値、「サイズ」は、マッピングする実行ファイルのサイズ、「ベースアドレス」は、実行ファイルをマッピングするために確保したメモリの開始アドレス、「マッピングフラグ」は、メモリのアクセス権限をそれぞれ示している。図3の例において、プロセス生成部101は実行ファイル“/bin/test”のコード領域をマッピングするために、実行・読取りの権限を付与し、ベースアドレス“0x0000555555554000”でサイズ“0x2000”のメモリ領域を確保する。
ここでメモリとは、MaskROM(Mask Read Only Memory)、PROM(Programmable Read Only Memory)、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically Erasable Programmable Read Only Memory)、NAND型フラッシュメモリ、NOR型フラッシュメモリ、MRAM(Magnetoresistive Random Access Memory:磁気抵抗メモリ)、PRAM(Phase change Random Access Memory:相変化メモリ)、ReRAM(Resistive Random Access Memory:抵抗変化型メモリ)、FeRAM(Ferroelectric Random Access Memory:強誘電体メモリ)、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)を含み、またその他の半導体メモリや量子メモリでもよい。
実行ファイルがコード領域、データ領域、スタック領域などの複数の領域を持つ場合、複数のベースアドレスが設定されてもよい。実行ファイルをマッピングするメモリアドレスは仮想アドレスでも物理アドレスでもよい。また、実行ファイルは再配置可能な形式であり、プロセス生成部101は一定のランダム性を持ってベースアドレスを設定する。ベースアドレスはOS12が管理するため、ベースアドレスを生成して起動しようとしているプロセス13のベースアドレスは、その他のプロセス13から盗聴することはできない。
ベースアドレス取得部103は、鍵生成部104からの要求に応じて、通信対象のプロセス13のpidをキーとしてアドレス情報保存部102を検索し、通信対象のプロセス13に対応するベースアドレスを取得して鍵生成部104に返す。なお、通信対象のプロセス13に対して複数のベースアドレスが設定されている場合は、例えばコード領域に対応するベースアドレスなど、取得するベースアドレスの種類が予め決められているものとする。
鍵生成部104は、認証コード生成部106あるいは認証コード検証部109からの要求に応じて、ベースアドレス取得部103により取得されたベースアドレス(「プロセス固有情報」の一例)を用いて、後述のメッセージ認証コードを生成・検証するためのメッセージ認証鍵(「第2メッセージ認証鍵」の一例)を生成する。例えば鍵生成部104は、PBKDF2やArgon2などの鍵導出関数を使用・併用し、予め定められた方法で、ベースアドレス取得部103により取得されたベースアドレスを鍵導出関数に入力してメッセージ認証鍵を生成する。また、鍵生成部104は、TPM(Trusted Platform Module)、HSM(Hardware Security Module)などのHW鍵生成モジュールを使用した構成であってもよい。鍵生成部104が生成したメッセージ認証鍵は、要求元の認証コード生成部106あるいは認証コード検証部109に渡されるとともに、pidと対応付けて鍵保存部105に格納される。
認証コード生成部106は、出力部107からの要求に応じて、鍵生成部104により生成されたメッセージ認証鍵と、通信対象のプロセス13に送信するメッセージ(「第2メッセージ」の一例)とを用いて、このメッセージに付与するメッセージ認証コードを生成する。例えば認証コード生成部106は、出力部107から通信対象のプロセス13のpidとメッセージを受け取り、鍵保存部105を参照して通信対象のプロセス13のpidに対応するメッセージ認証鍵が保存されているかを確認する。そして、通信対象のプロセス13のpidに対応するメッセージ認証鍵が保存されていればそのメッセージ認証鍵を取得し、保存されていなければ鍵生成部104にメッセージ認証鍵の生成を依頼して、鍵生成部104からメッセージ認証鍵を取得する。そして、認証コード生成部106は、取得したメッセージ認証鍵と、出力部107から受け取ったメッセージとを用いてメッセージ認証コードを生成し、メッセージ認証コードをメッセージに付与して出力部107に返す。
出力部107は、認証コード生成部106により生成されたメッセージ認証コードが付与されたメッセージを、通信対象のプロセス13に送信する。例えば出力部107は、プロセス生成部101からプロセス13の起動確認メッセージの送信要求を受け取ると、プロセス13のpidをメッセージとして、認証コード生成部106にメッセージ認証コードの生成を要求する。そして、認証コード生成部106からメッセージ認証コードが付与されたメッセージを受け取ると、このメッセージ認証コードが付与されたメッセージをプロセス13に送信する。
なお、ここではプロセス13の起動確認のために起動確認メッセージを送信する場合を例に挙げたが、通信対象のプロセス13に対して他のメッセージを送信する場合も同様に、出力部107は、メッセージ認証コードが付与されたメッセージを送信する。この場合もメッセージに付与されるメッセージ認証コードは、上述のように、プロセス13の固有情報であるベースアドレスを用いて生成されたメッセージ認証鍵を用いて、認証コード生成部106により生成される。
入力部108は、通信対象のプロセス13からメッセージ認証コード(「第1メッセージ認証コード」の一例)が付与されたメッセージ(「第1メッセージ」の一例)を受信する。
認証コード検証部109は、入力部108からの要求に応じて、鍵生成部104により生成されたメッセージ認証鍵と、入力部108が受信したメッセージに付与されたメッセージ認証コードとを用いて、入力部108が受信したメッセージを検証する。例えば認証コード検証部109は、入力部108から通信対象のプロセス13のpidとメッセージ認証コードが付与されたメッセージを受け取り、鍵保存部105を参照して通信対象のプロセス13のpidに対応するメッセージ認証鍵が保存されているかを確認する。そして、通信対象のプロセス13のpidに対応するメッセージ認証鍵が保存されていればそのメッセージ認証鍵を取得し、保存されていなければ鍵生成部104にメッセージ認証鍵の生成を依頼して、鍵生成部104からメッセージ認証鍵を取得する。そして、認証コード検証部109は、取得したメッセージ認証鍵と、入力部108から受け取ったメッセージ認証コードとを用いて、入力部108が受信したメッセージが、通信対象のプロセス13が送信した正当なデータであるかどうかを検証し、検証結果を入力部108に返す。
入力部108がプロセス13から受信したメッセージが後述の起動応答メッセージである場合、入力部108は、プロセス13から受信した起動応答メッセージと認証コード検証部109による検証結果をプロセス起動確認部110に渡す。プロセス起動確認部110は、起動応答メッセージと認証コード検証部109による検証結果をもとに、プロセス生成部101が生成したプロセス13が正常に起動したかどうかを確認する。
次に、プロセス13の機能について説明する。プロセス13は、図2に示すように、ベースアドレス取得部201と、鍵生成部202と、鍵保存部203と、認証コード生成部204と、出力部205と、入力部206と、認証コード検証部207と、起動応答部208とを備える。
ベースアドレス取得部201は、鍵生成部202からの要求に応じて、自プロセスの生成時にOS12のプロセス生成部101により設定されたベースアドレスを取得して鍵生成部202に返す。ベースアドレスは、上述のように、自プロセスの実行ファイルをメモリにマッピングするために確保されたメモリの開始アドレスである。自プロセスに対して、コード領域のベースアドレス、データ領域のベースアドレス、スタック領域のベースアドレスといったように複数のベースアドレスが設定されている場合は、例えばコード領域に対応するベースアドレスなど、予め決められた種類のベースアドレスを取得すればよい。
図4は、プロセス13のベースアドレス取得部201がベースアドレスを取得する方法の一例を説明する図であり、プログラムカウンタからベースアドレスを取得する例を示している。
図4中の(1)では、mov命令により、プログラムカウンタが格納されているripレジスタからプログラムカウンタを取得し、raxレジスタに格納している。プログラムカウンタを取得する命令はcall命令でもよく、プログラムカウンタできれば命令の種類は問わない。また、プログラムカウンタを格納するレジスタはraxレジスタ以外でもよく、メモリに格納してもよい。
図4中の(2)では、mov命令により、プログラムカウンタを取得した命令のファイル内オフセット0×100をrbxレジスタに格納している。実行ファイル内のアドレスはコンパイル時に決定するため、実行ファイルの実行前でも、プログラムカウンタを取得した命令の実行ファイル内オフセットは計算できる。また、定数値を格納する命令であれば、プログラムカウンタを取得した命令のファイル内オフセットを格納する命令の種類は問わない。プログラムカウンタを取得した命令のファイル内オフセットを格納するレジスタはrbxレジスタ以外でもよく、メモリに格納してもよい。
図4中の(3)では、sub命令により、(1)で取得したプログラムカウンタから、プログラムカウンタを取得した命令の実行ファイル内オフセットを引くことで、ベースアドレスを取得している。レジスタやメモリ間で減算できる命令であれば、sub命令以外の命令でも良い。
上記の方法以外でも、実行ファイルのシンボル情報を実行・起動時に解決する動的リンカを利用して、ベースアドレスを取得してもよい。プロセスが再配置可能な動的リンクライブラリを呼び出す場合、動的リンクライブラリもベースアドレスを持つ。プロセス13のベースアドレス取得部201は、動的リンクライブラリのベースアドレスを取得してもよい。
鍵生成部202は、認証コード生成部204あるいは認証コード検証部207からの要求に応じて、ベースアドレス取得部201により取得されたベースアドレス(「プロセス固有情報」の一例)を用いて、OS12の鍵生成部104が生成するメッセージ認証鍵と共通のメッセージ認証鍵(「第1メッセージ認証鍵」の一例)を生成する。例えば鍵生成部202は、OS12の鍵生成部104と同じ鍵導出関数を用い、ベースアドレス取得部201により取得されたベースアドレスを鍵導出関数に入力してメッセージ認証鍵を生成する。また、鍵生成部202は、OS12の鍵生成部104と同様に、TPMやHSMなどのHW鍵生成モジュールを使用した構成であってもよい。鍵生成部202が生成したメッセージ認証鍵は、要求元の認証コード生成部204あるいは認証コード検証部207に渡されるとともに、鍵保存部203に格納される。
認証コード生成部204は、出力部205からの要求に応じて、鍵生成部202により生成されたメッセージ認証鍵と、OS12に送信するメッセージ(「第1メッセージ」の一例)とを用いて、このメッセージに付与するメッセージ認証コードを生成する。例えば認証コード生成部204は、出力部205からOS12に送信するメッセージを受け取ると、鍵保存部203を参照してメッセージ認証鍵が保存されているかを確認する。そして、鍵保存部203にメッセージ認証鍵が保存されていればそのメッセージ認証鍵を取得し、保存されていなければ鍵生成部202にメッセージ認証鍵の生成を依頼して、鍵生成部202からメッセージ認証鍵を取得する。そして、認証コード生成部204は、取得したメッセージ認証鍵と、出力部205から受け取ったメッセージとを用いてメッセージ認証コードを生成し、メッセージ認証コードをメッセージに付与して出力部205に返す。
出力部205は、認証コード生成部204により生成されたメッセージ認証コードが付与されたメッセージを、OS12に送信する。例えば出力部205は、後述の起動応答部208から起動応答メッセージの送信要求を受け取ると、例えば、起動成功を示す“success”あるいは起動失敗を示す“fail”といった文字列をプロセス13のpidに付加したものをメッセージとして、認証コード生成部204にメッセージ認証コードの生成を要求する。そして、認証コード生成部204からメッセージ認証コードが付与されたメッセージを受け取ると、このメッセージ認証コードが付与されたメッセージをOS12に送信する。この起動応答メッセージは、起動の成功と失敗を区別できるものであれば、内容・形式は問わない。
なお、ここでは起動応答メッセージを送信する場合を例に挙げたが、OS12に対して他のメッセージを送信する場合も同様に、出力部205は、メッセージ認証コードが付与されたメッセージを送信する。この場合もメッセージに付与されるメッセージ認証コードは、上述のように、プロセス13の固有情報であるベースアドレスを用いて生成されたメッセージ認証鍵を用いて、認証コード生成部204により生成される。
入力部206は、OS12からメッセージ認証コード(「第2メッセージ認証コード」の一例)が付与されたメッセージ(「第2メッセージ」の一例)を受信する。
認証コード検証部207は、入力部206からの要求に応じて、鍵生成部202により生成されたメッセージ認証鍵と、入力部206が受信したメッセージに付与されたメッセージ認証コードとを用いて、入力部206が受信したメッセージを検証する。例えば認証コード検証部207は、入力部206からメッセージ認証コードが付与されたメッセージを受け取ると、鍵保存部203を参照してメッセージ認証鍵が保存されているかを確認する。そして、メッセージ認証鍵が鍵保存部203に保存されていればそのメッセージ認証鍵を取得し、保存されていなければ鍵生成部202にメッセージ認証鍵の生成を依頼して、鍵生成部202からメッセージ認証鍵を取得する。そして、認証コード検証部207は、取得したメッセージ認証鍵と、入力部206から受け取ったメッセージ認証コードとを用いて、入力部206が受信したメッセージが、OS12が送信した正当なデータであるかどうかを検証し、検証結果を入力部206に返す。
入力部206がOS12から受信したメッセージが起動確認メッセージである場合、入力部206は、OS12から受信した起動確認メッセージと認証コード検証部207による検証結果を起動応答部208に渡す。起動応答部208は、プロセス13の起動に成功したかどうかをOS12に通知するために、上述の起動応答メッセージの送信を出力部205に要求する。
以上のように、本実施形態の情報処理装置10では、OS12とプロセス13間で通信を行う場合に、OS12がプロセス13に割り当てた固有情報であるベースアドレスを用いて、OS12とプロセス13の双方で共通のメッセージ認証鍵を生成し、このメッセージ認証鍵を用いてメッセージ認証コードの生成やメッセージの検証を行う。したがって、OS12とプロセス13間でセキュアな通信が可能となる。なお、図2においては1つのプロセス13のみを図示しているが、OS12と通信するプロセス13は複数存在してもよい。
次に、プロセス13の起動時にOS12からプロセス13に起動確認メッセージを送信し、その応答としてプロセス13からOS12に起動応答メッセージを送信するシーンを想定して、本実施形態の情報処理装置10の動作をフローチャートに沿って説明する。
まず、OS12のプロセス生成部101の処理について説明する。図5は、プロセス生成部101による処理手順の一例を示すフローチャートである。この図5のフローチャートで示す一連の処理は、再配置可能な実行ファイルに基づいたプロセス13の生成要求があった場合に開始される。
再配置可能な実行ファイルに基づいたプロセス13の生成要求があると、プロセス生成部101は、実行ファイルをメモリにマッピングするためのベースアドレスを設定する(ステップS101)。そして、プロセス生成部101は、ステップS101で設定したベースアドレスをもとに、実行ファイルをメモリにマッピングしてプロセス13を生成する(ステップS102)。さらに、プロセス生成部101は、ステップS101で設定したベースアドレスを含むプロセス13のアドレス情報を生成し、アドレス情報保存部102に格納する(ステップS103)。
次に、OS12からプロセス13にメッセージを送信する際の処理について説明する。図6は、メッセージ送信時におけるOS12の処理手順の一例を示すフローチャートである。
まず、プロセス生成部101は、自身が生成したプロセス13が正常に起動できたことを確認するために、生成したプロセス13のpidを出力部107に渡してメッセージの送信を要求する(ステップS201)。なお、メッセージ送信要求は、プロセス13が起動したときやプロセス13がシステムコールを発行したときに発生してもよい。また、ハードウェア11からの割込みが発生したときやハードウェア11の状態に変化が発生したときにメッセージ送信要求が発生してもよく、任意のタイミングや任意の操作でメッセージ送信要求が発生してもよい。また、ここでは起動確認メッセージにプロセス13のpidを用いることを想定するが、pidの代わりにプロセス13を識別できる特徴を持つ他の情報を用いてもよい。また、起動確認メッセージは、pidあるいはこれを代用する情報に加えて、プロセス13の起動時刻や情報処理装置10の位置情報などのコンテキスト情報を含んでいてもよい。
出力部107は、OS12からプロセス13へのメッセージ送信をセキュアにするために、通信対象のプロセス13に送信するメッセージを認証コード生成部106に渡してメッセージ認証コードの生成を要求する(ステップS202)。認証コード生成部106は、まず、通信対象のプロセス13に対応するメッセージ認証鍵が鍵保存部105に保存されているか否かを確認する(ステップS203)。ここで、通信対象のプロセス13に対応するメッセージ認証鍵が鍵保存部105に保存されていれば(ステップS203:Yes)、認証コード生成部106は、そのメッセージ認証鍵を鍵保存部105から取得する(ステップS204)。
一方、通信対象のプロセス13に対応するメッセージ認証鍵が鍵保存部105に保存されていなければ(ステップS203:No)、認証コード生成部106は、鍵生成部104にメッセージ認証鍵の生成を要求する(ステップS205)。鍵生成部104は、ベースアドレス取得部103に対して通信対象のプロセス13に対応するベースアドレスの取得を要求する(ステップS206)。ベースアドレス取得部103は、アドレス情報保存部102を検索して通信対象のプロセス13に対応するベースアドレスを取得し(ステップS207)、取得したベースアドレスを鍵生成部104に返す。鍵生成部104は、ベースアドレス取得部103から受け取ったベースアドレスを用いてメッセージ認証鍵を生成し(ステップS208)、生成したメッセージ認証鍵を認証コード生成部106に返すとともに、鍵保存部105に格納する。
次に、認証コード生成部106は、ステップS202で出力部107から受け取ったメッセージと、ステップS204で鍵保存部105から取得したメッセージ認証鍵あるいはステップS208で鍵生成部104により生成されたメッセージ認証鍵とを用い、メッセージ認証コードを生成する(ステップS209)。そして、生成したメッセージ認証コードをメッセージに付加して出力部107に返す。このとき、メッセージは、メッセージ認証鍵を用いて暗号化されてもよい。出力部107は、認証コード生成部106から受け取ったメッセージ認証コードが付加されたメッセージを、通信対象のプロセス13に送信する(ステップS210)。
次に、プロセス13がOS12からメッセージを受信する際の処理について説明する。図7は、メッセージ受信時におけるプロセス13の処理手順の一例を示すフローチャートである。
プロセス13の入力部206は、OS12の出力部107から送信されたメッセージ認証コードが付与されたメッセージを受信すると(ステップS301)、受信したメッセージの安全性を確認するために、メッセージ認証コードが付与されたメッセージを認証コード検証部207に渡してメッセージの検証を要求する(ステップS302)。認証コード検証部207は、まず、OS12と共通のメッセージ認証鍵が鍵保存部203に保存されているか否かを確認する(ステップS303)。ここで、OS12と共通のメッセージ認証鍵が鍵保存部203に保存されていれば(ステップS303:Yes)、認証コード検証部207は、そのメッセージ認証鍵を鍵保存部203から取得する(ステップS304)。
一方、OS12と共通のメッセージ認証鍵が鍵保存部203に保存されていなければ(ステップS303:No)、認証コード検証部207は、鍵生成部202にメッセージ認証鍵の生成を要求する(ステップS305)。鍵生成部202は、ベースアドレス取得部201に対してベースアドレスの取得を要求する(ステップS306)。ベースアドレス取得部201は、例えば、上述したようにプログラムカウンタからベースアドレスを取得し(ステップS307)、取得したベースアドレスを鍵生成部202に返す。鍵生成部202は、ベースアドレス取得部201から受け取ったベースアドレスを用いてメッセージ認証鍵を生成し(ステップS308)、生成したメッセージ認証鍵を認証コード検証部207に返すとともに、鍵保存部203に格納する。
次に、認証コード検証部207は、ステップS302で入力部206から受け取ったメッセージに付与されたメッセージ認証コードと、ステップS304で鍵保存部203から取得したメッセージ認証鍵あるいはステップS308で鍵生成部202により生成されたメッセージ認証鍵とを用い、ステップS302で入力部206から受け取ったメッセージを検証する(ステップS309)。具体的には認証コード検証部207は、例えば、メッセージ認証鍵を用いて入力部206から受け取ったメッセージをもとにメッセージ認証コードを生成し、生成したメッセージ認証コードがメッセージに付加されたメッセージ認証コードと一致するか否かにより、入力部206が受信したメッセージが、OS12が送信した正当なデータであるか否かを確認し、メッセージの改ざんやなりすましを検知する。なお、検証時にメッセージが暗号化されていた場合、メッセージ認証鍵によってメッセージを復号してもよい。
認証コード検証部207は、入力部206が受信したメッセージに対する検証結果を入力部206に返す。入力部206は、認証コード検証部207から検証結果を受け取ると、メッセージと検証結果を起動応答部208に渡す(ステップS310)。
次に、プロセス13からOS12にメッセージを送信する際の処理について説明する。図8は、メッセージ送信時におけるプロセス13の処理手順の一例を示すフローチャートである。
まず、起動応答部208は、プロセス13が正常に起動できたかどうかをOS12に知らせるために、プロセス13のpidと起動の成否を示す情報を出力部205に渡してメッセージの送信を要求する(ステップS401)。
出力部205は、プロセス13からOS12へのメッセージ送信をセキュアにするために、OS12に送信するメッセージを認証コード生成部204に渡してメッセージ認証コードの生成を要求する(ステップS402)。認証コード生成部204は、上述の認証コード検証部207と同様に、まず、OS12と共通のメッセージ認証鍵が鍵保存部203に保存されているか否かを確認するが、ここでは起動確認メッセージの受信時にメッセージ認証鍵が生成されて鍵保存部203に格納されている。このため、認証コード生成部204は、鍵保存部203からメッセージ認証鍵を取得する(ステップS403)。
なお、出力部205がOS12に送信するメッセージが、起動確認メッセージに対する応答である起動応答メッセージのような応答メッセージではなく、プロセス13が主体的にOS12に送信するメッセージである場合は、OS12と共通のメッセージ認証鍵が鍵保存部203に保存されていない場合もある。この場合は、上述の例と同様に、認証コード生成部204が鍵生成部202に対してメッセージ認証鍵の生成を要求し、鍵生成部202がベースアドレス取得部201により取得されたベースアドレスを用いて生成したメッセージ認証鍵を、鍵生成部202から受け取ればよい。
次に、認証コード生成部204は、ステップS402で出力部205から受け取ったメッセージと、ステップS403で鍵保存部203から取得したメッセージ認証鍵とを用い、メッセージ認証コードを生成する(ステップS404)。そして、生成したメッセージ認証コードをメッセージに付加して出力部205に返す。このとき、メッセージは、メッセージ認証鍵を用いて暗号化されてもよい。出力部205は、認証コード生成部204から受け取ったメッセージ認証コードが付加されたメッセージを、OS12に送信する(ステップS405)。
次に、OS12がプロセス13からメッセージを受信する際の処理について説明する。図9は、メッセージ受信時におけるOS12の処理手順の一例を示すフローチャートである。
OS12の入力部108は、プロセス13の出力部205から送信されたメッセージ認証コードが付与されたメッセージを受信すると(ステップS501)、受信したメッセージの安全性を確認するために、メッセージ認証コードが付与されたメッセージを認証コード検証部109に渡してメッセージの検証を要求する(ステップS502)。認証コード検証部109は、上述の認証コード生成部106と同様に、まず、メッセージを送信したプロセス13(通信対象のプロセス13)のpidに対応するメッセージ認証鍵が鍵保存部105に保存されているか否かを確認するが、ここでは起動確認メッセージの送信時にメッセージ認証鍵が生成されて鍵保存部105に格納されている。このため、認証コード検証部109は、鍵保存部105からメッセージ認証鍵を取得する(ステップS503)。
なお、入力部108がプロセス13から受信するメッセージが応答メッセージではなく、プロセス13が主体的にOS12に送信するメッセージである場合は、プロセス13のpidに対応するメッセージ認証鍵が鍵保存部105に保存されていない場合もある。この場合は、上述の例と同様に、認証コード検証部109が鍵生成部104に対してメッセージ認証鍵の生成を要求し、鍵生成部104がベースアドレス取得部103により取得されたベースアドレスを用いて生成したメッセージ認証鍵を、鍵生成部104から受け取ればよい。
次に、認証コード検証部109は、ステップS502で入力部108から受け取ったメッセージに付与されたメッセージ認証コードと、ステップS503で鍵保存部105から取得したメッセージ認証鍵とを用い、ステップS502で入力部108から受け取ったメッセージを検証する(ステップS504)。具体的には認証コード検証部109は、例えば、メッセージ認証鍵を用いて入力部108から受け取ったメッセージをもとにメッセージ認証コードを生成し、生成したメッセージ認証コードがメッセージに付加されたメッセージ認証コードと一致するか否かにより、入力部108が受信したメッセージが、プロセス13が送信した正当なデータであるか否かを確認し、メッセージの改ざんやなりすましを検知する。なお、検証時にメッセージが暗号化されていた場合、メッセージ認証鍵によってメッセージを復号してもよい。また、認証コード検証部109による検証と併せて、出力部107が送信したメッセージに含まれるpidなどのプロセス13を特定する情報と、このメッセージに対する応答としてプロセス13から送信されて入力部108が受信したメッセージに含まれるpidなどのプロセス13を特定する情報とが一致するか否かにより、メッセージの改ざんやなりすましを検出する処理を行ってもよい。
認証コード検証部109は、入力部108が受信したメッセージに対する検証結果を入力部108に返す。入力部108は、認証コード検証部109から検証結果を受け取ると、メッセージと検証結果をプロセス起動確認部110に渡す(ステップS505)。プロセス起動確認部110は、入力部108から受け取ったメッセージと検証結果をもとに、プロセス生成部101が生成したプロセス13が正常に起動したかどうかを確認する(ステップS506)。
以上、具体的な例を挙げながら詳細に説明したように、本実施形態によれば、OS12がプロセス13に割り当てたプロセス固有情報であるベースアドレスを用いて、OS12とプロセス13間で共通のメッセージ認証鍵を生成する。そして、OS12とプロセス13との間で通信を行う際に、このメッセージ認証鍵を用いてメッセージ認証コードの生成およびメッセージ認証コードを用いたメッセージの検証を行うようにしている。したがって、OS12とプロセス13間の通信に対してセキュリティ機能を実現し、プロセス13の保護を図ることができる。
特に本実施形態では、メッセージ認証鍵の生成にOS12がプロセス13に割り当てたプロセス固有情報であるベースアドレスを用いるため、一般的なネットワークにおける機器間でセキュアな通信を実現するための技術として普及しているSSLやTLSなどのように、認証付鍵交換処理を必要とせずに、OS12とプロセス13間で共通のメッセージ認証鍵を生成することができる。このため、認証付鍵交換処理にかかる通信オーバヘッドを軽減することができる。また、OS12のイメージやプロセス13の基となる実行ファイルの内部に事前に鍵を埋め込む必要がないため、ストレージに格納したOS12のイメージやプロセス13の基となる実行ファイルの内部に埋め込んだ鍵が漏洩、改ざんされる攻撃を考慮しなくてもよい。
(変形例)
次に、上述の第1実施形態の変形例について説明する。本変形例は、ホワイトリスト実行制御を行うプロセス13とOS12間においてセキュアな通信を実現するものである。ホワイトリスト実行制御は、実行が許可された実行ファイルのリスト(ホワイトリスト)に基づいて、ホワイトリストに記述されていない実行ファイルの起動を防止する技術である。本変形例では、OS12が実行ファイルを基にしたプロセス13の起動を検知し、ホワイトリスト実行制御を行うプロセス13において、起動が検知されたプロセス13の実行可否を判定する。以下では、OS12により管理されるプロセス13のうち、ホワイトリスト実行制御を行うプロセス13を管理プロセス13Aと表記し、起動が検知されたプロセス13を起動プロセス13Bと表記する。
図10は、本変形例のOS12および管理プロセス13Aの機能的な構成例を示すブロック図である。図2に示した構成例と比較して、OS12に管理プロセス判定部111が追加され、プロセス起動確認部110がプロセス実行制御部112に置き換わっている。また、起動プロセス13Bの実行判定を行うためにOS12と通信を行う管理プロセス13Aには、ホワイトリスト取得部209が追加され、起動応答部208が実行判定部210に置き換わっている。なお、起動プロセス13Bの構成は図2に示したプロセス13の構成と同様であるため、図示を省略する。
管理プロセス判定部111は、プロセス生成部101が生成するプロセス13が管理プロセス13Aであるか否か、管理プロセス13Aではない場合には管理プロセス13Aはすでに起動されているか否かを判定する。
プロセス実行制御部112は、プロセス生成部101が生成するプロセス13が管理プロセス13Aではない、つまり起動プロセス13Bであり、管理プロセス13Aはすでに起動されていると管理プロセス判定部111により判定された場合に、管理プロセス13Aの実行判定部210の判定結果に応じて、起動プロセス13Bの実行を制御する。
ホワイトリスト取得部209は、実行が許可された実行ファイルのリスト(ホワイトリスト)を取得する。
実行判定部210は、ホワイトリスト取得部209により取得されたホワイトリストに基づいて、起動プロセス13Bの実行可否を判定する。
図11は、管理プロセス判定部111による処理手順の一例を示すフローチャートである。管理プロセス判定部111は、予め管理プロセス13Aの実行ファイルのパス名とハッシュ値を持つ。実行ファイルのパス名はinode番号とデバイス番号のセットでもよく、ファイルを一意に特定できる特徴を持つ情報であれば内容・形式は問わない。
本変形例では、プロセス生成部101は、プロセス13の生成要求に応じて生成処理を開始すると、生成するプロセス13の実行ファイルのパス名を管理プロセス判定部111に渡す。管理プロセス判定部111は、プロセス生成部101から受け取ったパス名で特定される実行ファイルのハッシュ値を計算し、得られたハッシュ値が予め持っているハッシュ値と一致するか否かにより、プロセス生成部101が生成するプロセス13が管理プロセス13Aであるか否かを判定する(ステップS501)。
プロセス生成部101が生成するプロセス13が管理プロセス13Aであると判定した場合(ステップS501:Yes)、管理プロセス判定部111は、管理プロセス13Aが起動済みかどうかを確認する(ステップS502)。そして、管理プロセス13Aが起動していなければ(ステップS502:No)、管理プロセス判定部111は、ベースアドレス取得部103に管理プロセスのpidを記録する(ステップS503)。ここでベースアドレス取得部103に登録する情報は、管理プロセス13Aを識別できる情報であれば、pid以外の情報であってもよい。そして、管理プロセス判定部111は、プロセス生成部101に処理を戻し、プロセス生成部101による管理プロセス13Aの生成処理を継続させる(ステップS504)。
一方、管理プロセス13Aが起動済みであれば(ステップS502:Yes)、管理プロセス判定部111は、pidの登録などの処理を行わずにプロセス生成部101に処理を戻し、管理プロセス13Aの生成処理を中止させる(ステップS505)。
また、プロセス生成部101が生成するプロセス13が管理プロセス13Aではなく、起動プロセス13Bであると判定した場合(ステップS501:No)、管理プロセス判定部111は、管理プロセス13Aが起動済みかどうかを確認する(ステップS506)。そして、管理プロセス13Aが起動していなければ(ステップS506:No)、プロセス生成部101に処理を戻し、起動プロセス13Bの生成処理を中止させる(ステップS507)。なお、本変形例では、管理プロセス13Aの起動前には全ての起動プロセス13Bの実行を禁止する構成を採用したが、管理プロセス13Aが起動していない場合でも起動プロセス13Bの実行を許可するように構成してもよい。この場合、ステップS506の判定結果がNoの場合に、管理プロセス判定部111は、プロセス生成部101に処理を戻し、プロセス生成部101による起動プロセス13Bの生成処理を継続させる。
一方、管理プロセス13Aが起動済みであれば(ステップS506:Yes)、管理プロセス判定部111は、起動プロセス13Bのpidや実行ファイルのパス名など、起動プロセス13Bに関する情報をプロセス実行制御部112に渡し(ステップS508)、処理を終了する。この場合、プロセス実行制御部112は、起動プロセス13Bの実行可否を問い合わせるために、出力部107に起動プロセス13Bのpidや実行ファイルのパス名を送り、管理プロセス13Aへのメッセージの送信を要求する。出力部107は、起動プロセス13Bのpidと実行ファイルのパス名をメッセージとし、上述の第1実施形態と同様にメッセージ認証コードが付与されたメッセージを管理プロセス13Aに送信する。なお、実行ファイルのパス名はinode番号とデバイス番号のセットでもよく、起動プロセス13Bの実行ファイルを一意に特定できる特徴を持つ情報であれば内容・形式は問わない。また、管理プロセス13Aに送信するメッセージは、時刻、ユーザID、グループID、実行回数、位置などのコンテキスト情報を含んでもよい。
次に、管理プロセス13Aにメッセージを送信する際のOS12の処理手順について説明する。なお、以下で説明する処理手順は、メッセージの送信要求がプロセス生成部101ではなくプロセス実行制御部112から発行され、送信するメッセージが起動プロセス13Bのpidと実行ファイルのパス名からなる以外は、図6のフローチャートを用いて説明した上述の処理手順と同様である。
まず、プロセス実行制御部112は、起動プロセス13Bの実行が許可されているか否かを確認するために、起動プロセス13Bのpidと実行ファイルのパス名とを出力部107に渡して、管理プロセス13Aへのメッセージの送信を出力部107に要求する。
出力部107は、OS12から管理プロセス13Aへのメッセージ送信をセキュアにするために、管理プロセス13Aに送信するメッセージ、つまり、起動プロセス13Bのpidと実行ファイルのパス名とを含んだメッセージを認証コード生成部106に渡してメッセージ認証コードの生成を要求する。
認証コード生成部106は、まず、管理プロセス13Aに対応するメッセージ認証鍵が鍵保存部105に保存されているか否かを確認し、管理プロセス13Aに対応するメッセージ認証鍵が鍵保存部105に保存されていれば、管理プロセス13Aに対応するメッセージ認証鍵を鍵保存部105から取得する。一方、管理プロセス13Aに対応するメッセージ認証鍵が鍵保存部105に保存されていなければ、認証コード生成部106は、鍵生成部104にメッセージ認証鍵の生成を要求する。
鍵生成部104は、ベースアドレス取得部103に対して管理プロセス13Aに対応するベースアドレスの取得を要求する。ベースアドレス取得部103は、管理プロセス13Aの起動時に管理プロセス判定部111によって登録されたpidをキーとしてアドレス情報保存部102を検索し、管理プロセス13Aに対応するベースアドレスを取得して鍵生成部104に返す。鍵生成部104は、ベースアドレス取得部103から受け取ったベースアドレスを用いてメッセージ認証鍵を生成し、生成したメッセージ認証鍵を認証コード生成部106に返すとともに、鍵保存部105に格納する。
次に、認証コード生成部106は、出力部107から受け取ったメッセージと、鍵保存部105から取得したメッセージ認証鍵あるいは鍵生成部104により生成されたメッセージ認証鍵とを用い、メッセージ認証コードを生成する。そして、生成したメッセージ認証コードをメッセージに付加して出力部107に返す。このとき、メッセージは、メッセージ認証鍵を用いて暗号化されてもよい。出力部107は、認証コード生成部106から受け取ったメッセージ認証コードが付加されたメッセージを、管理プロセス13Aに送信する。
次に、OS12からメッセージを受信する際の管理プロセス13Aの処理手順について説明する。なお、以下で説明する処理手順は、受信するメッセージが起動プロセス13Bのpidと実行ファイルのパス名からなり、メッセージと検証結果が起動応答部208ではなく実行判定部210に渡される以外は、図7のフローチャートを用いて説明した上述の処理手順と同様である。
管理プロセス13Aの入力部206は、OS12の出力部107から送信されたメッセージ認証コードが付与されたメッセージを受信すると、受信したメッセージの安全性を確認するために、メッセージ認証コードが付与されたメッセージを認証コード検証部207に渡してメッセージの検証を要求する。
認証コード検証部207は、まず、OS12と共通のメッセージ認証鍵が鍵保存部203に保存されているか否かを確認する。ここで、OS12と共通のメッセージ認証鍵が鍵保存部203に保存されていれば、認証コード検証部207は、そのメッセージ認証鍵を鍵保存部203から取得する。一方、OS12と共通のメッセージ認証鍵が鍵保存部203に保存されていなければ、認証コード検証部207は、鍵生成部202にメッセージ認証鍵の生成を要求する。
鍵生成部202は、ベースアドレス取得部201に対してベースアドレスの取得を要求する。ベースアドレス取得部201は、例えば、上述したようにプログラムカウンタからベースアドレスを取得し、取得したベースアドレスを鍵生成部202に返す。鍵生成部202は、ベースアドレス取得部201から受け取ったベースアドレスを用いてメッセージ認証鍵を生成し、生成したメッセージ認証鍵を認証コード検証部207に返すとともに、鍵保存部203に格納する。
次に、認証コード検証部207は、入力部206から受け取ったメッセージに付与されたメッセージ認証コードと、鍵保存部203から取得したメッセージ認証鍵あるいは鍵生成部202により生成されたメッセージ認証鍵とを用い、入力部206から受け取ったメッセージを検証する。具体的には認証コード検証部207は、例えば、メッセージ認証鍵を用いて入力部206から受け取ったメッセージをもとにメッセージ認証コードを生成し、生成したメッセージ認証コードがメッセージに付加されたメッセージ認証コードと一致するか否かにより、入力部206が受信したメッセージが、OS12が送信した正当なデータであるか否かを確認し、メッセージの改ざんやなりすましを検知する。なお、検証時にメッセージが暗号化されていた場合、メッセージ認証鍵によってメッセージを復号してもよい。
認証コード検証部207は、入力部206が受信したメッセージに対する検証結果を入力部206に返す。入力部206は、認証コード検証部207から検証結果を受け取ると、メッセージと検証結果を実行判定部210に渡す。
図12は、実行判定部210による処理手順の一例を示すフローチャートである。実行判定部210は、起動プロセス13Bのpidと実行ファイルのパス名とからなるメッセージとそのメッセージの検証結果を入力部206から受け取る(ステップS601)。そして、実行判定部210は、まず入力部206から受け取った検証結果を参照し、入力部206から受け取ったメッセージが、改ざんやなりすましなどによる不正なメッセージでないかを確認する(ステップS602)。
ここで、入力部206から受け取ったメッセージが不正なメッセージであれば(ステップS602:Yes)、そのメッセージに関する処理を終了する。一方、入力部206から受け取ったメッセージが不正なメッセージでなければ(ステップS602:No)、実行判定部210は、ホワイトリスト取得部209からホワイトリストを受け取り、ホワイトリストによる実行判定処理を行う。
ホワイトリストは、例えばファイルの形式でファイルシステム上に存在し、ホワイトリスト取得部209はホワイトリストのファイルを読み込むことでホワイトリストを取得することができる。また、ホワイトリストを管理プロセス13Aの実行ファイルに予め組み込んでおき、プロセス起動時に読込まれるようにしておいてもよい。ホワイトリストは、例えば、実行が許可されるプロセス13の実行ファイルのパス名とハッシュ値をカラムとした表形式で記録される。ホワイトリストは、時刻、ユーザID、グループID、実行回数、位置などの実行ファイルを起動してもよい条件や禁止条件のコンテキスト情報をカラムに加えた構成であってもよい。
ホワイトリストによる実行判定処理では、実行判定部210は、まず、入力部206から受け取ったメッセージに含まれる起動プロセス13Bの実行ファイルのパス名が、ホワイトリストに記載されたパス名と一致するか否かを確認する(ステップS603)。ここでパス名が一致しない場合(ステップS603:No)、実行判定部210は想定外の実行ファイルが起動したと判断し、実行禁止メッセージの送信を出力部205に要求して(ステップS604)、処理を終了する。
一方、パス名が一致した場合(ステップS603:Yes)、実行判定部210は、次に起動プロセス13Bの実行ファイルを読込んでそのハッシュ値を計算し、得られたハッシュ値がホワイトリストに記載されたハッシュ値と一致するか否かを確認する(ステップS605)。ここでハッシュ値が一致しない場合(ステップS605:No)、実行判定部210は、実行ファイルが想定外に書き換わったと判断し、実行禁止メッセージの送信を出力部205に要求して(ステップS606)、処理を終了する。
一方、ハッシュ値が一致した場合(ステップS605:Yes)、実行判定部210は、正常な実行ファイルが起動したと判断し、実行許可メッセージの送信を出力部205に要求して(ステップS607)、処理を終了する。なお、ホワイトリストにコンテキスト情報が加えられている場合、実行判定部210は、情報処理装置10の実行中のコンテキストを取得し、実行中のコンテキストとホワイトリストから取得したコンテキストとの比較処理を追加してもよい。コンテキストに違反している場合、実行判定部210は、実行禁止メッセージの送信を出力部205に要求してもよい。
実行判定部210が出力部205に送信を要求するメッセージは、例えば、実行可否の判定の対象となった起動プロセス13Bのpidと、実行許可メッセージであれば0、実行禁止メッセージであれば−1などの実行可否を示す情報とを含む。また、このメッセージには、ランダムに生成した値やメッセージごとにインクリメントするメッセージシーケンス番号などがさらに含まれていてもよい。また、このメッセージには、実行可否の判定の対象となった起動プロセス13Bの実行ファイルのパス名がさらに含まれていてもよい。また、OS12から受信したメッセージを全てこのメッセージに加えてもよい。
次に、OS12にメッセージを送信する際の管理プロセス13Aの処理手順について説明する。なお、以下で説明する処理手順は、メッセージの送信要求が起動応答部208ではなく実行判定部210から発行され、送信するメッセージが実行許可メッセージまたは実行禁止メッセージである以外は、図8のフローチャートを用いて説明した上述の処理手順と同様である。
実行判定部210は、起動プロセス13Bの実行可否をOS12に知らせるために、起動プロセス13Bのpidと実行可否を示す情報を出力部205に渡して実行許可メッセージまたは実行禁止メッセージの送信を要求する。
出力部205は、管理プロセス13AからOS12へのメッセージ送信をセキュアにするために、OS12に送信するメッセージを認証コード生成部204に渡してメッセージ認証コードの生成を要求する。認証コード生成部204は、鍵保存部203からメッセージ認証鍵を取得し、出力部205から受け取ったメッセージと、鍵保存部203から取得したメッセージ認証鍵とを用い、メッセージ認証コードを生成する。そして、生成したメッセージ認証コードをメッセージに付加して出力部205に返す。このとき、メッセージは、メッセージ認証鍵を用いて暗号化されてもよい。出力部205は、認証コード生成部204から受け取ったメッセージ認証コードが付加されたメッセージを、OS12に送信する。
次に、管理プロセス13Aからメッセージを受信する際のOS12の処理手順について説明する。なお、以下で説明する処理手順は、受信するメッセージが実行許可メッセージまたは実行禁止メッセージであり、メッセージと検証結果がプロセス起動確認部110ではなくプロセス実行制御部112に渡される以外は、図9のフローチャートを用いて説明した上述の処理手順と同様である。
OS12の入力部108は、管理プロセス13Aの出力部205から送信されたメッセージ認証コードが付与されたメッセージを受信すると、受信したメッセージの安全性を確認するために、メッセージ認証コードが付与されたメッセージを認証コード検証部109に渡してメッセージの検証を要求する。認証コード検証部109は、鍵保存部105からメッセージ認証鍵を取得し、入力部108から受け取ったメッセージに付与されたメッセージ認証コードと、鍵保存部105から取得したメッセージ認証鍵とを用いて、入力部108から受け取ったメッセージを検証する。なお、検証時にメッセージが暗号化されていた場合、メッセージ認証鍵によってメッセージを復号してもよい。また、認証コード検証部109による検証と併せて、出力部107が送信したメッセージに含まれるpidなどのプロセス13を特定する情報と、このメッセージに対する応答としてプロセス13から送信されて入力部108が受信したメッセージに含まれるpidなどのプロセス13を特定する情報とが一致するか否かにより、メッセージの改ざんやなりすましを検出する処理を行ってもよい。
認証コード検証部109は、入力部108が受信したメッセージに対する検証結果を入力部108に返す。入力部108は、認証コード検証部109から検証結果を受け取ると、メッセージと検証結果をプロセス実行制御部112に渡す。プロセス実行制御部112は、入力部108から受け取ったメッセージと検証結果をもとに、起動プロセス13Bの実行を制御する。
図13は、プロセス実行制御部112による処理手順の一例を示すフローチャートである。プロセス実行制御部112は、起動プロセス13Bのpidと実行可否を示す情報とを含むメッセージとそのメッセージの検証結果を入力部108から受け取る(ステップS701)。そして、プロセス実行制御部112は、まず入力部108から受け取った検証結果を参照し、入力部108から受け取ったメッセージが、改ざんやなりすましなどによる不正なメッセージでないかを確認する(ステップS702)。
ここで、入力部108から受け取ったメッセージが不正なメッセージであれば(ステップS702:Yes)、そのメッセージに関する処理を終了する。一方、入力部108から受け取ったメッセージが不正なメッセージでなければ(ステップS702:No)、プロセス実行制御部112は、入力部108から受け取ったメッセージに含まれる実行可否を示す情報を参照し、そのメッセージが実行許可メッセージであるか否かを確認する(ステップS703)。そして、入力部108から受け取ったメッセージが実行許可メッセージであれば(ステップS703:Yes)、プロセス実行制御部112は、プロセス生成部101に対して起動プロセス13Bの生成継続を要求し(ステップS704)、処理を終了する。一方、入力部108から受け取ったメッセージが実行禁止メッセージであれば(ステップS703:No)、プロセス実行制御部112は、プロセス生成部101に対して起動プロセス13Bの生成中止を要求し(ステップS705)、処理を終了する。
なお、OS12から管理プロセス13Aに対して起動プロセス13Bの実行可否を問い合わせるメッセージを送信してから一定時間(例えば1秒)内に、実行許可メッセージまたは実行禁止メッセージが管理プロセス13Aから受信できない場合に、プロセス実行制御部112は、起動プロセス13Bの実行可否を問い合わせるメッセージの再送を出力部107に要求してもよい。さらに、起動プロセス13Bの実行可否を問い合わせるメッセージを所定回数(例えば10回)再送しても、実行許可メッセージまたは実行禁止メッセージが管理プロセス13Aから受信できない場合に、プロセス実行制御部112は、プロセス生成部101に対して起動プロセス13Bの生成中止を要求してもよい。さらに、起動プロセス13Bの実行可否を問い合わせるメッセージに含まれるpidなどのプロセス13を特定する情報が、実行許可メッセージまたは実行禁止メッセージに含まれるプロセス13を特定する情報と異なる場合に、プロセス実行制御部112は、起動プロセス13Bを停止させてもよい。
以上のように、本変形例によれば、OS12とホワイトリスト実行制御を行う管理プロセス13Aとの間で通信を行う際に、OS12と管理プロセス13Aとで共通のメッセージ認証鍵を用いてメッセージ認証コードの生成およびメッセージ認証コードを用いたメッセージの検証を行うので、OS12と管理プロセス13A間の通信に対してセキュリティ機能を実現し、管理プロセス13Aの保護を図ることができる。また、OS12と管理プロセス13A間の通信の安全性が保証されるため、起動プロセス13Bに対するホワイトリスト実行制御を適切に実施することができる。
<第2実施形態>
次に、第2実施形態について説明する。本実施形態は、プロセス13の実行ファイルをメモリにマッピングするためのベースアドレスに加え、プロセス13の起動時にOS12がプロセス13との間で共有する特定のメモリ領域に書き込んだランダム値を用いて、OS12とプロセス13とで共通のメッセージ認証鍵を生成し、OS12とプロセス13間のセキュアな通信を実現する。
メモリ空間は、通常2の64乗、2の32乗程度の空間しかなく、加えてOS12が実行ファイルのベースアドレスを設定するメモリ空間は限られているため、上述の第1実施形態やその変形例では、メッセージ認証鍵の情報エントロピーに課題があった。これに対し本実施形態では、ベースアドレスにランダム値を加えてメッセージ認証鍵を生成することで情報エントロピーの増加が可能となり、メッセージ認証鍵の推測が困難となる。
図14は、本実施形態のOS12およびプロセス13の機能的な構成例を示すブロック図である。図2に示した構成例と比較して、OS12にランダム値生成部113が追加され、OS12の鍵生成部104は、ベースアドレス取得部103により取得されたベースアドレスとランダム値生成部113により生成されたランダム値とを用いて、プロセス13と共通のメッセージ認証鍵を生成する構成となっている。また、プロセス13の鍵生成部202は、ランダム値生成部113が生成したランダム値が格納されるランダム値格納領域300からランダム値を読み出し、ベースアドレス取得部201により取得されたベースアドレスとランダム値格納領域300から読み出したランダム値とを用いて、OS12と共通のメッセージ認証鍵を生成する構成となっている。
本実施形態では、OS12のプロセス生成部101が、出力部107に対してメッセージの送信を要求する前に、鍵生成部104にランダム値の生成を要求する。このランダム値生成の要求は、認証コード生成部106と認証コード検証部109がメッセージ認証鍵の生成を鍵生成部104に要求するときに同時に行ってもよい。ランダム値生成の要求を受け取った鍵生成部104は、ランダム値生成部113にランダム値の生成を依頼する。ランダム値生成部113がランダム値を生成する方法は、OS12に予め格納された固定値、PUF(Physically Unclonable Function)、パスワードをシードとした疑似乱数生成機能を使用してもよいし、Intel社製(Intelは登録商標)CPUのrdrand命令、HSM、TPMのようなHWモジュールのランダム値生成機能を利用してもよい。
ランダム値生成部113は、生成したランダム値を鍵生成部104に渡すとともに、メモリ上のランダム値格納領域300に格納する。ランダム値格納領域300は、プロセス13の実行ファイルのベースアドレスより一意に定まる特定のメモリ領域である。また、ランダム値格納領域300は、DS、FS、GSなどのセグメントレジスタから求められるメモリ領域でもよい。鍵生成部104は、ベースアドレス取得部103から受け取ったベースアドレスと、ランダム値生成部113から受け取ったランダム値とから計算される値をシードにして鍵導出関数を実行し、プロセス13と共通のメッセージ認証鍵を生成する。
一方、プロセス13の鍵生成部202は、認証コード生成部204あるいは認証コード検証部207からの要求に応じて、OS12と共通のメッセージ認証鍵を生成する。鍵生成部202は、メッセージ認証鍵の生成が要求されると、ランダム値格納領域300からランダム値を取得し、取得したランダム値とベースアドレス取得部201により取得されたベースアドレスとから計算される値をシードにして鍵導出関数を実行し、OS12と共通のメッセージ認証鍵を生成する。なお、メッセージ認証鍵を用いたメッセージ認証コードの生成、メッセージ認証コードを用いたメッセージの検証などの処理は上述の第1実施形態と同様であるため、詳細な説明は省略する。
以上のように、本実施形態によれば、プロセス13の実行ファイルをメモリにマッピングするためのベースアドレスに加え、プロセス13の起動時にOS12がプロセス13との間で共有する特定のメモリ領域に書き込んだランダム値を用いて、OS12とプロセス13とで共通のメッセージ認証鍵を生成するようにしている。したがって、メッセージ認証鍵の推測を困難なものとして、OS12とプロセス13間の通信の安全性を高めることができる。
<第3実施形態>
次に、第3実施形態について説明する。本実施形態は、メッセージの検証で異常が発見された場合にログを出力する機能を追加したものである。ログを出力する機能を追加することで、意図しない通信が発生することを検知することができ、その原因を解析することができる。また、ログの解析に基づいて原因となるプロセスの停止やメッセージの再送などの対応処理を行ってもよい。
図15は、本実施形態のOS12およびプロセス13の機能的な構成例を示すブロック図である。図2に示した構成例と比較して、OS12にログ出力部114、プロセス13にログ出力部211がそれぞれ追加されている。
プロセス13のログ出力部211は、起動応答部208からメッセージと認証コード検証部207によるメッセージの検証結果を受け取り、受け取ったメッセージと検証結果に基づき、ログの出力を制御する。例えば、検証結果よりメッセージに改ざんやなりすましが認められる場合、ログ出力部211は、改ざんやなりすましがあったことを表すログをファイルに出力する。ログは出力せずにプロセス13の内部に保存してもよく、他のプロセス13や仮想化機能により情報処理装置10上で動作する別のOS12あるいはプロセス13に送信したり、無線あるいは有線の通信手段を利用して、外部のネットワーク上の他の端末、PC、サーバ、プリンタ、電子機器などに送信したりしてもよい。また、ログに対して暗号化や署名を付ける処理を行ってもよい。ログの形式は文字列に限らず、画像や動画などの他の形式に変更してもよく、7z、ZIP、RAP、LZH、ISO、TAR、DMG、MSIなど形式に圧縮してもよい。ログは生成時にすぐに出力せずに一定時間後に出力してもよく、一定時間待って他のログと一緒に出力してもよい。また、生成されたログを読込み、ログの結果に基づいて新しい処理を実行してもよい。例えば、ログに基づき、通信に失敗したプロセス13の停止、ptraceなどを用いて通信に失敗したプロセス13の監視強化、コンテナなどの仮想化技術を利用してプロセス13を隔離するなどの処理を実行してもよい。
OS12のログ出力部114は、プロセス13から起動失敗のメッセージを受信した場合、起動失敗を表すログをファイルに出力する。そのような起動失敗のログは、情報処理装置10の異常の検証に利用できる。また、OS12のログ出力部114は、プロセス13から起動成功のメッセージを受信した場合、起動成功を表すログをファイルに出力してもよい。プロセス13のログ出力部211が出力するログと同様に、OS12のログ出力部114が出力するログは圧縮処理や暗号化を行ってもよく、出力先は任意のデバイスでよい。また、OS12は、ログ出力部114が出力したログに基づいて、実行する処理を選択してもよい。例えば、ログ出力部114がログを出力したファイルにプロセス13の起動失敗を表すログが記録されていた場合、OS12は、プロセス13を強制的終了させる処理を行ってもよい。また、ログ出力部114がログを出力したファイルに、プロセス13が連続して起動失敗したことを表すログが記録されていた場合、OS12は、自身を再起動する処理を行ってもよい。このように構成することで、OS12はログに基づいて情報処理装置10が異常な状態であること検知し、異常な状態から回復するための対処を行うことができる。
以上のように、本実施形態によれば、メッセージの検証で異常が発見された場合にログを出力するようにしているので、意図しない通信が発生することを検知することができ、その原因を解析することができる。
<第4実施形態>
次に、第4実施形態について説明する。本実施形態では、プロセス13の起動時にOS12がプロセス13との間で共有する特定のメモリ領域にメッセージ認証鍵を書き込み、プロセス13がこのメッセージ認証鍵を取得できるようにする。メッセージ認証鍵は、事前にOS12の中に組み込んでおいてもよいし、プロセス13の実行時に生成してもよい。プロセス13の実行時にメッセージ認証鍵を生成する場合は、例えば、プロセス13を起動した時刻をシードとし、PBKDF2やArgon2などの鍵導出関数を使用・併用してメッセージ認証鍵を生成してもよい。また、シードはPUFや実行ファイルのベースアドレス、パスワード、Intel社製(Intelは登録商標)CPUのrdrand命令、HSM、TPMのようなHWモジュールのランダム値生成機能により生成される値を使用してもよいし、これらを併用してもよい。また、鍵導出関数を使用したメッセージ認証鍵の生成を行わずに、他のプロセス13や仮想化機能により情報処理装置10上で動作する別のOS12あるいはプロセス13からメッセージ認証鍵を取得したり、無線あるいは有線の通信手段を利用して、外部のネットワーク上の他の端末、PC、サーバ、プリンタ、電子機器などからメッセージ認証鍵を取得したりしてもよい。
図16は、本実施形態のOS12およびプロセス13の機能的な構成例を示すブロック図である。図2に示した構成例と比較して、OS12がアドレス情報保存部102とベースアドレス取得部103を備えておらず、OS12の鍵生成部104は、上述した方法でメッセージ認証鍵を生成あるいは取得して、鍵保存部105とメッセージ認証鍵格納領域310とに格納する構成となっている。また、プロセス13はベースアドレス取得部201を備えておらず、鍵生成部202が鍵取得部212に置き換わっている。
プロセス13の鍵取得部212は、認証コード生成部204あるいは認証コード検証部207からの要求に応じて、メッセージ認証鍵格納領域310からメッセージ認証鍵を取得する。メッセージ認証鍵格納領域310は、プロセス13の実行ファイルのベースアドレスより一意に定まる特定のメモリ領域であり、OS12の鍵生成部104によって生成あるいは取得されたメッセージ認証鍵が格納されている。なお、メッセージ認証鍵を用いたメッセージ認証コードの生成、メッセージ認証コードを用いたメッセージの検証などの処理は上述の第1実施形態と同様であるため、詳細な説明は省略する。
以上のように、本実施形態によれば、OS12がプロセス13に割り当てたプロセス固有情報であるベースアドレスにより一意に定まる特定のメモリ領域にメッセージ認証鍵を格納し、OS12とプロセス13との間で通信を行う際に、このメッセージ認証鍵を用いてメッセージ認証コードの生成およびメッセージ認証コードを用いたメッセージの検証を行うようにしている。したがって、上述の第1実施形態と同様に、OS12とプロセス13間の通信に対してセキュリティ機能を実現し、プロセス13の保護を図ることができる。
また、本実施形態では、第1実施形態と比較してメッセージ認証鍵の生成における自由度が向上するので、推測困難なメッセージ認証鍵を生成することができ、OS12とプロセス13間の通信の安全性を高めることができる。
<第5実施形態>
次に、第5実施形態について説明する。本実施形態は、VMMとOS12間の通信においてセキュリティ機能を実現する例である。VMMはハイパーバイザでもよく、複数のOS12を管理する機能を有していれば形式・形態は問わない。また、OS12は複数動作してもよい。本実施形態では、VMMがOS12と共通のメッセージ認証鍵を生成し、OS12に専用の仮想デバイスにメッセージ認証鍵を書き込むことで、OS12がこのメッセージ認証鍵を取得できるようにする。そして、VMMとOS12との間で通信を行う際に、このメッセージ認証鍵を用いてメッセージ認証コードの生成およびメッセージ認証コードを用いたメッセージの検証を行うことで、VMMとOS12間の通信をセキュアにする。
本実施形態の構成は、上述の第4実施形態におけるプロセス13がOS12に置き換わり、上述の第4実施形態におけるOS12がVMMに置き換わったものとみなすことができる。つまり、VMMはOS12をプロセスとして管理する「プロセス管理部」とみなすことができ、OS12はVMMとの関係において「プロセス」とみなすことができる。ただし、上述の第4実施形態では、OS12がプロセス13との間で共有する特定のメモリ領域にメッセージ認証鍵を格納したが、本実施形態では、VMMがOS12に専用の仮想デバイスにメッセージ認証鍵を格納する。
図17は、本実施形態のVMMおよびOS12の機能的な構成例を示すブロック図である。VMM14は、OS12を生成・起動するOS生成部401と、メッセージ認証鍵を生成して鍵保存部403およびメッセージ認証鍵格納仮想デバイス500とに格納する鍵生成部402と、鍵生成部402が生成したメッセージ認証鍵を保存する鍵保存部403と、メッセージ認証鍵を用いてメッセージ認証コードを生成する認証コード生成部404と、メッセージ認証コードが付与されたメッセージをOS12に送信する出力部405と、OS12からメッセージ認証コードが付与されたメッセージを受信する入力部406と、メッセージ認証鍵を用いてOS12から受信したメッセージを検証する認証コード検証部407と、OS12から受信したメッセージに基づいてOS12の起動確認を行うOS起動確認部408とを備える。メッセージ認証鍵格納仮想デバイス500は、上述したように、OS12に専用の仮想デバイスである。
また、OS12は、メッセージ認証鍵格納仮想デバイス500からメッセージ認証鍵を取得して鍵保存部152に格納する鍵取得部151と、鍵取得部151が取得したメッセージ認証鍵を保存する鍵保存部152と、メッセージ認証鍵を用いてメッセージ認証コードを生成する認証コード生成部153と、メッセージ認証コードが付与されたメッセージをVMM14に送信する出力部154と、VMM14からメッセージ認証コードが付与されたメッセージを受信する入力部155と、メッセージ認証鍵を用いてVMM14から受信したメッセージを検証する認証コード検証部156と、OS12の起動が成功したか否かをVMM14に応答する起動応答部157とを備える。起動応答の例として、OS12は起動成功時には“success”、起動失敗時には“fail”という文字列のメッセージをVMM14に送信する。このメッセージは起動の成功と失敗を区別できるものであれば、内容・形式は問わない。なお、図17においては1つのOS12のみを図示しているが、VMM14と通信するOS12は複数存在してもよい。
次に、OS12の起動時にVMM14からOS12に起動確認メッセージを送信し、その応答としてOS12からVMM14に起動応答メッセージを送信するシーンを想定して、本実施形態の情報処理装置10の動作をフローチャートに沿って説明する。
まず、VMM14からOS12にメッセージを送信する際の処理について説明する。図18は、メッセージ送信時におけるVMM14の処理手順の一例を示すフローチャートである。
まず、OS生成部401は、自身が生成したOS12が正常に起動できたことを確認するために、生成したOS12の識別情報であるosidを出力部405に渡してメッセージの送信を要求する(ステップS801)。なお、メッセージ送信要求は、OS12が起動したときやOS12がハイパーコールを発行したときに発生してもよい。また、ハードウェア11からの割込みが発生したときやハードウェア11の状態に変化が発生したときにメッセージ送信要求が発生してもよく、任意のタイミングや任意の操作でメッセージ送信要求が発生してもよい。また、ここでは起動確認メッセージにOS12のosidを用いることを想定するが、osidの代わりにOS12を識別できる特徴を持つ他の情報を用いてもよい。また、起動確認メッセージは、osidあるいはこれを代用する情報に加えて、OS12の起動時刻や情報処理装置10の位置情報などのコンテキスト情報を含んでいてもよい。
出力部405は、VMM14からOS12へのメッセージ送信をセキュアにするために、通信対象のOS12に送信するメッセージを認証コード生成部404に渡してメッセージ認証コードの生成を要求する(ステップS802)。認証コード生成部404は、まず、通信対象のOS12に対応するメッセージ認証鍵が鍵保存部403に保存されているか否かを確認する(ステップS803)。ここで、通信対象のOS12に対応するメッセージ認証鍵が鍵保存部403に保存されていれば(ステップS803:Yes)、認証コード生成部404は、そのメッセージ認証鍵を鍵保存部403から取得する(ステップS804)。
一方、通信対象のOS12に対応するメッセージ認証鍵が鍵保存部403に保存されていなければ(ステップS803:No)、認証コード生成部404は、鍵生成部402にメッセージ認証鍵の生成を要求する(ステップS805)。鍵生成部402は、所定の鍵導出関数を使用してメッセージ認証鍵を生成し(ステップS806)、生成したメッセージ認証鍵を認証コード生成部404に返すとともに、鍵保存部403に格納する。さらに鍵生成部402は、生成したメッセージ認証鍵を、通信対象のOS12に固有の仮想デバイスであるメッセージ認証鍵格納仮想デバイス500に格納する(ステップS807)。
メッセージ認証鍵格納仮想デバイス500は、VMM14上で複数のOS12が動作している場合でも、通信対象のOS12のみが参照でき、他のOS12は参照できないという特徴を持つ。鍵導出関数のシードには、例えばOS12を起動した時刻を使用することができる。また、シードはPUFや実行ファイルのベースアドレス、パスワード、Intel社製(Intelは登録商標)CPUのrdrand命令、HSM、TPMのようなHWモジュールのランダム値生成機能により生成される値を使用してもよいし、これらを併用してもよい。また、鍵導出関数を使用したメッセージ認証鍵の生成を行わずに、プロセス13や仮想化機能により情報処理装置10上で動作する別のOS12あるいはプロセス13からメッセージ認証鍵を取得したり、無線あるいは有線の通信手段を利用して、外部のネットワーク上の他の端末、PC、サーバ、プリンタ、電子機器などからメッセージ認証鍵を取得したりしてもよい。
次に、認証コード生成部404は、ステップS802で出力部405から受け取ったメッセージと、ステップS804で鍵保存部403から取得したメッセージ認証鍵あるいはステップS806で鍵生成部402により生成されたメッセージ認証鍵とを用い、メッセージ認証コードを生成する(ステップS808)。そして、生成したメッセージ認証コードをメッセージに付加して出力部405に返す。このとき、メッセージは、メッセージ認証鍵を用いて暗号化されてもよい。出力部405は、認証コード生成部404から受け取ったメッセージ認証コードが付加されたメッセージを、通信対象のOS12に送信する(ステップS809)。
次に、OS12がVMM14からメッセージを受信する際の処理について説明する。図19は、メッセージ受信時におけるOS12の処理手順の一例を示すフローチャートである。
OS12の入力部155は、VMM14の出力部405から送信されたメッセージ認証コードが付与されたメッセージを受信すると(ステップS901)、受信したメッセージの安全性を確認するために、メッセージ認証コードが付与されたメッセージを認証コード検証部156に渡してメッセージの検証を要求する(ステップS902)。認証コード検証部156は、まず、VMM14により生成されたメッセージ認証鍵が鍵保存部152に保存されているか否かを確認する(ステップS903)。ここで、VMM14により生成されたメッセージ認証鍵が鍵保存部152に保存されていれば(ステップS903:Yes)、認証コード検証部156は、そのメッセージ認証鍵を鍵保存部152から取得する(ステップS904)。
一方、VMM14により生成されたメッセージ認証鍵が鍵保存部152に保存されていなければ(ステップS903:No)、認証コード検証部156は、鍵取得部151にメッセージ認証鍵の取得を要求する(ステップS905)。鍵取得部151は、認証コード検証部156からの要求に応じてメッセージ認証鍵格納仮想デバイス500からメッセージ認証鍵を取得し(ステップS906)、取得したメッセージ認証鍵を認証コード検証部156に返すとともに、鍵保存部152に格納する。
次に、認証コード検証部156は、ステップS902で入力部155から受け取ったメッセージに付与されたメッセージ認証コードと、ステップS904で鍵保存部152から取得したメッセージ認証鍵あるいはステップS906で鍵取得部151により取得されたメッセージ認証鍵とを用い、ステップS902で入力部155から受け取ったメッセージを検証する(ステップS907)。具体的には認証コード検証部156は、例えば、メッセージ認証鍵を用いて入力部155から受け取ったメッセージをもとにメッセージ認証コードを生成し、生成したメッセージ認証コードがメッセージに付加されたメッセージ認証コードと一致するか否かにより、入力部155が受信したメッセージが、VMM14が送信した正当なデータであるか否かを確認し、メッセージの改ざんやなりすましを検知する。なお、検証時にメッセージが暗号化されていた場合、メッセージ認証鍵によってメッセージを復号してもよい。
認証コード検証部156は、入力部155が受信したメッセージに対する検証結果を入力部155に返す。入力部155は、認証コード検証部156から検証結果を受け取ると、メッセージと検証結果を起動応答部157に渡す(ステップS908)。
次に、OS12からVMM14にメッセージを送信する際の処理について説明する。図20は、メッセージ送信時におけるOS12の処理手順の一例を示すフローチャートである。
まず、起動応答部157は、OS12が正常に起動できたかどうかをVMM14に知らせるために、OS12のosidと起動の成否を示す情報を出力部154に渡してメッセージの送信を要求する(ステップS1001)。
出力部154は、OS12からVMM14へのメッセージ送信をセキュアにするために、VMM14に送信するメッセージを認証コード生成部153に渡してメッセージ認証コードの生成を要求する(ステップS1002)。認証コード生成部153は、上述の認証コード検証部156と同様に、まず、VMM14により生成されたメッセージ認証鍵が鍵保存部152に保存されているか否かを確認するが、ここでは起動確認メッセージの受信時に鍵取得部151によってメッセージ認証鍵格納仮想デバイス500からメッセージ認証鍵が取得されて鍵保存部152に格納されている。このため、認証コード生成部153は、鍵保存部152からメッセージ認証鍵を取得する(ステップS1003)。
次に、認証コード生成部153は、ステップS1002で出力部154から受け取ったメッセージと、ステップS1003で鍵保存部152から取得したメッセージ認証鍵とを用い、メッセージ認証コードを生成する(ステップS1004)。そして、生成したメッセージ認証コードをメッセージに付加して出力部154に返す。このとき、メッセージは、メッセージ認証鍵を用いて暗号化されてもよい。出力部154は、認証コード生成部153から受け取ったメッセージ認証コードが付加されたメッセージを、VMM14に送信する(ステップS1005)。
次に、VMM14がOS12からメッセージを受信する際の処理について説明する。図21は、メッセージ受信時におけるVMM14の処理手順の一例を示すフローチャートである。
VMM14の入力部406は、OS12の出力部154から送信されたメッセージ認証コードが付与されたメッセージを受信すると(ステップS1101)、受信したメッセージの安全性を確認するために、メッセージ認証コードが付与されたメッセージを認証コード検証部407に渡してメッセージの検証を要求する(ステップS1102)。認証コード検証部407は、上述の認証コード生成部404と同様に、まず、通信対象のOS12に対応するメッセージ認証鍵が鍵保存部403に保存されているか否かを確認するが、ここでは起動確認メッセージの送信時にメッセージ認証鍵が生成されて鍵保存部403に格納されている。このため、認証コード検証部407は、鍵保存部403からメッセージ認証鍵を取得する(ステップS1103)。
次に、認証コード検証部407は、ステップS1102で入力部406から受け取ったメッセージに付与されたメッセージ認証コードと、ステップS1103で鍵保存部403から取得したメッセージ認証鍵とを用い、ステップS1102で入力部406から受け取ったメッセージを検証する(ステップS1104)。具体的には認証コード検証部407は、例えば、メッセージ認証鍵を用いて入力部406から受け取ったメッセージをもとにメッセージ認証コードを生成し、生成したメッセージ認証コードがメッセージに付加されたメッセージ認証コードと一致するか否かにより、入力部406が受信したメッセージが、OS12が送信した正当なデータであるか否かを確認し、メッセージの改ざんやなりすましを検知する。なお、検証時にメッセージが暗号化されていた場合、メッセージ認証鍵によってメッセージを復号してもよい。また、認証コード検証部407による検証と併せて、出力部405が送信したメッセージに含まれるosidなどのOS12を特定する情報と、このメッセージに対する応答としてOS12から送信されて入力部406が受信したメッセージに含まれるosidなどのOS12を特定する情報とが一致するか否かにより、メッセージの改ざんやなりすましを検出する処理を行ってもよい。
認証コード検証部407は、入力部406が受信したメッセージに対する検証結果を入力部406に返す。入力部406は、認証コード検証部407から検証結果を受け取ると、メッセージと検証結果をOS起動確認部408に渡す(ステップS1105)。OS起動確認部408は、入力部406から受け取ったメッセージと検証結果をもとに、OS生成部401が生成したOS12が正常に起動したかどうかを確認する(ステップS1106)。
以上、具体的な例を挙げながら詳細に説明したように、本実施形態によれば、VMM14がOS12に割り当てた専用の仮想デバイスであるメッセージ認証鍵格納仮想デバイス500に、VMM14が生成したメッセージ認証鍵を格納し、このメッセージ認証鍵をOS12が取得できるようにしている。そして、VMM14とOS12との間で通信を行う際に、このメッセージ認証鍵を用いてメッセージ認証コードの生成およびメッセージ認証コードを用いたメッセージの検証を行うようにしている。したがって、VMM14とOS12間の通信に対してセキュリティ機能を実現し、OS12の保護を図ることができる。
<補足説明>
上述した各実施形態の情報処理装置10におけるOS12、プロセス13、VMM14の機能は、例えば、ハードウェア11として情報処理装置10に搭載されたプロセッサ回路により実行されるソフトウェアなどのプログラムとして実現することができる。このとき、上述した各実施形態の情報処理装置10は、上記のプログラムをあらかじめインストールすることでOS12、プロセス13、VMM14の機能を実現してもよいし、記録媒体に記録あるいはネットワークを介して配布された上記プログラムを適宜インストールすることでOS12、プロセス13、VMM14の機能を実現してもよい。
以上、本発明の実施形態を説明したが、ここで説明した実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。ここで説明した新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。ここで説明した実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
10 情報処理装置
12 OS
13 プロセス
14 VMM
104 鍵生成部
106 認証コード生成部
107 出力部
108 入力部
109 認証コード検証部
114 ログ出力部
202 鍵生成部
204 認証コード生成部
205 出力部
206 入力部
207 認証コード検証部
209 ホワイトリスト取得部
210 実行判定部
211 ログ出力部
212 鍵取得部

Claims (13)

  1. プロセス管理部で管理されるプロセスを有する情報処理装置であって、
    前記プロセスは、
    前記プロセス管理部が割り当てたプロセス固有情報を用いて第1メッセージ認証鍵を生成する第1鍵生成部と、
    前記第1メッセージ認証鍵と第1メッセージを用いて第1メッセージ認証コードを生成する第1認証コード生成部と、
    前記第1メッセージと前記第1メッセージ認証コードを前記プロセス管理部に送信する第1出力部と、を備える
    情報処理装置。
  2. 前記プロセス固有情報は、前記プロセスの実行ファイルがマッピングされるメモリ上の位置を示すベースアドレスであり、
    前記第1鍵生成部は、前記ベースアドレスと所定の鍵導出関数とを用いて前記第1メッセージ認証鍵を生成する
    請求項1に記載の情報処理装置。
  3. 前記第1鍵生成部は、前記ベースアドレスと該ベースアドレスをもとに特定されるメモリ領域に格納された乱数とから生成されるデータを前記鍵導出関数に入力して前記第1メッセージ認証鍵を生成する
    請求項2に記載の情報処理装置。
  4. 前記プロセスは、
    第2メッセージと第2メッセージ認証コードを前記プロセス管理部から受信する第1入力部と、
    前記第1メッセージ認証鍵と前記第2メッセージ認証コードを用いて前記第2メッセージを検証する第1認証コード検証部と、をさらに備える
    請求項1乃至3のいずれか一項に記載の情報処理装置。
  5. 前記プロセスは、
    前記第1認証コード検証部により前記第2メッセージの異常が発見された場合に異常を示すログを出力するログ出力部をさらに備える
    請求項4に記載の情報処理装置。
  6. 前記プロセス管理部は、
    前記プロセス固有情報を用いて第2メッセージ認証鍵を生成する第2鍵生成部と、
    前記第1メッセージと前記第1メッセージ認証コードを前記プロセスから受信する第2入力部と、
    前記第2メッセージ認証鍵と前記第1メッセージ認証コードを用いて前記第1メッセージを検証する第2認証コード検証部と、を備える
    請求項1乃至5のいずれか一項に記載の情報処理装置。
  7. 前記プロセス管理部は、
    前記第2メッセージ認証鍵と第2メッセージを用いて第2メッセージ認証コードを生成する第2認証コード生成部と、
    前記第2メッセージと前記第2メッセージ認証コードを前記プロセスに送信する第2出力部と、をさらに備える
    請求項6に記載の情報処理装置。
  8. 前記プロセスは、他のプロセスの実行を制御する管理プロセスであり、
    前記第2メッセージは、前記他のプロセスを特定する情報を含み、
    前記管理プロセスは、前記第2メッセージと、実行を許可するプロセスの実行ファイルのリストとに基づいて、前記他のプロセスの実行可否を判定する実行判定部をさらに備え、
    前記第1メッセージは、前記実行判定部による判定結果を含む
    請求項7に記載の情報処理装置。
  9. 前記プロセス管理部は、前記第1メッセージに含まれる判定結果に基づいて、前記他のプロセスの実行を制御するプロセス実行制御部をさらに備える
    請求項8に記載の情報処理装置。
  10. 前記第1メッセージは、前記他のプロセスを特定する情報をさらに含み、
    前記プロセス実行制御部は、前記第1メッセージに含まれる前記他のプロセスを特定する情報が、前記第2メッセージに含まれる前記他のプロセスを特定する情報と異なる場合に、前記他のプロセスを停止させる
    請求項9に記載の情報処理装置。
  11. プロセス管理部で管理されるプロセスを有する情報処理装置であって、
    前記プロセスは、
    前記プロセス管理部が割り当てたプロセス固有情報に基づいて特定されるメモリ領域から第1メッセージ認証鍵を取得する鍵取得部と、
    前記第1メッセージ認証鍵と第1メッセージを用いて第1メッセージ認証コードを生成する第1認証コード生成部と、
    前記第1メッセージと前記第1メッセージ認証コードを前記プロセス管理部に送信する第1出力部と、を備える
    情報処理装置。
  12. プロセス管理部で管理されるプロセスを有する情報処理装置において実行される情報処理方法であって、
    前記プロセスが、
    前記プロセス管理部が割り当てたプロセス固有情報を用いて第1メッセージ認証鍵を生成し、
    前記第1メッセージ認証鍵と第1メッセージを用いて第1メッセージ認証コードを生成し、
    前記第1メッセージと前記第1メッセージ認証コードを前記プロセス管理部に送信する
    情報処理方法。
  13. プロセス管理部で管理されるプロセスを有する情報処理装置において実行されるプログラムであって、
    前記プロセスに、
    前記プロセス管理部が割り当てたプロセス固有情報を用いて第1メッセージ認証鍵を生成する機能と、
    前記第1メッセージ認証鍵と第1メッセージを用いて第1メッセージ認証コードを生成する機能と、
    前記第1メッセージと前記第1メッセージ認証コードを前記プロセス管理部に送信する機能と、を実現させる
    プログラム。
JP2017173995A 2017-09-11 2017-09-11 情報処理装置、情報処理方法およびプログラム Active JP6903529B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017173995A JP6903529B2 (ja) 2017-09-11 2017-09-11 情報処理装置、情報処理方法およびプログラム
US15/900,458 US10963543B2 (en) 2017-09-11 2018-02-20 Secure communication between operating system and processes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017173995A JP6903529B2 (ja) 2017-09-11 2017-09-11 情報処理装置、情報処理方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2019050507A true JP2019050507A (ja) 2019-03-28
JP6903529B2 JP6903529B2 (ja) 2021-07-14

Family

ID=65631642

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017173995A Active JP6903529B2 (ja) 2017-09-11 2017-09-11 情報処理装置、情報処理方法およびプログラム

Country Status (2)

Country Link
US (1) US10963543B2 (ja)
JP (1) JP6903529B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10891389B2 (en) 2018-03-13 2021-01-12 Kabushiki Kaisha Toshiba Information processing apparatus, information processing method, and computer program product
US10915623B2 (en) 2017-09-04 2021-02-09 Kabushiki Kaisha Toshiba Information processing apparatus, information processing method, and computer program product
JPWO2021065650A1 (ja) * 2019-09-30 2021-04-08
US11132467B2 (en) 2018-09-18 2021-09-28 Kabushiki Kaisha Toshiba Information processing device, information processing method, and computer program product

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PL3403369T3 (pl) * 2016-01-13 2020-10-19 Telefonaktiebolaget Lm Ericsson (Publ) Ochrona integralności
US11323275B2 (en) 2019-03-25 2022-05-03 Micron Technology, Inc. Verification of identity using a secret key
US11233650B2 (en) 2019-03-25 2022-01-25 Micron Technology, Inc. Verifying identity of a vehicle entering a trust zone
US11361660B2 (en) 2019-03-25 2022-06-14 Micron Technology, Inc. Verifying identity of an emergency vehicle during operation
US11218330B2 (en) * 2019-03-25 2022-01-04 Micron Technology, Inc. Generating an identity for a computing device using a physical unclonable function
US20220292062A1 (en) * 2019-07-23 2022-09-15 Sony Interactive Entertainment Inc. Digest value calculating device, access device, digest value calculating method, access method, and program
CN110719522B (zh) * 2019-10-31 2021-12-24 广州视源电子科技股份有限公司 一种视频显示方法、装置、存储介质及电子设备
JP7419941B2 (ja) * 2020-04-07 2024-01-23 富士フイルムビジネスイノベーション株式会社 履歴管理装置およびプログラム
CN112988412B (zh) * 2021-02-07 2023-06-27 中国联合网络通信集团有限公司 基于区块链网络的边缘缓存方法、基站和系统

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226383B1 (en) * 1996-04-17 2001-05-01 Integrity Sciences, Inc. Cryptographic methods for remote authentication
GB9828159D0 (en) 1998-12-19 1999-02-17 Global Financial Networks Gfn Protocol for computer software inter-application communication
US7508937B2 (en) * 2001-12-18 2009-03-24 Analog Devices, Inc. Programmable data encryption engine for advanced encryption standard algorithm
US8245032B2 (en) * 2003-03-27 2012-08-14 Avaya Inc. Method to authenticate packet payloads
CN100356342C (zh) * 2003-11-18 2007-12-19 株式会社瑞萨科技 信息处理装置
JP4587158B2 (ja) 2004-01-30 2010-11-24 キヤノン株式会社 セキュア通信方法、端末装置、認証サービス装置、コンピュータプログラム及びコンピュータ読み取り可能な記録媒体
ATE435538T1 (de) * 2004-02-05 2009-07-15 Research In Motion Ltd Speicherung auf einem chip,erzeugung und handhabung eines geheimschlüssels
US7987356B2 (en) * 2004-11-29 2011-07-26 Broadcom Corporation Programmable security platform
US7698744B2 (en) * 2004-12-03 2010-04-13 Whitecell Software Inc. Secure system for allowing the execution of authorized computer program code
US20070011429A1 (en) * 2005-07-07 2007-01-11 Vasudevan Sangili Virtual memory key generation
US7779307B1 (en) * 2005-09-28 2010-08-17 Oracle America, Inc. Memory ordering queue tightly coupled with a versioning cache circuit
US9177153B1 (en) * 2005-10-07 2015-11-03 Carnegie Mellon University Verifying integrity and guaranteeing execution of code on untrusted computer platform
JP2009100394A (ja) 2007-10-19 2009-05-07 Sony Corp 情報処理装置および方法、記録媒体、プログラム、並びに情報処理システム
US9336160B2 (en) * 2008-10-30 2016-05-10 Qualcomm Incorporated Low latency block cipher
US8972746B2 (en) * 2010-12-17 2015-03-03 Intel Corporation Technique for supporting multiple secure enclaves
US8688734B1 (en) * 2011-02-04 2014-04-01 hopTo Inc. System for and methods of controlling user access and/or visibility to directories and files of a computer
US8990561B2 (en) * 2011-09-09 2015-03-24 Microsoft Technology Licensing, Llc Pervasive package identifiers
JP5841467B2 (ja) 2012-03-15 2016-01-13 株式会社日立ソリューションズ 携帯型情報端末及びプログラム
US9462081B2 (en) * 2012-04-17 2016-10-04 Igt Cloud based virtual environment validation
US9106411B2 (en) * 2012-09-30 2015-08-11 Apple Inc. Secure escrow service
US9832217B2 (en) * 2014-03-13 2017-11-28 International Business Machines Corporation Computer implemented techniques for detecting, investigating and remediating security violations to IT infrastructure
JP6078688B2 (ja) 2014-04-22 2017-02-08 株式会社日立製作所 データ処理システム、データ処理方法
US10013363B2 (en) * 2015-02-09 2018-07-03 Honeywell International Inc. Encryption using entropy-based key derivation
JP6459637B2 (ja) 2015-03-02 2019-01-30 日本電気株式会社 情報処理装置、情報処理方法及びプログラム
US10089097B2 (en) * 2015-09-13 2018-10-02 Extreme Networks, Inc. Dynamic templates for virtualized systems
US10261782B2 (en) * 2015-12-18 2019-04-16 Amazon Technologies, Inc. Software container registry service
US10032032B2 (en) * 2015-12-18 2018-07-24 Amazon Technologies, Inc. Software container registry inspection
US10469265B2 (en) * 2016-03-31 2019-11-05 Intel Corporation Technologies for secure inter-enclave communications
US10817597B2 (en) * 2016-04-20 2020-10-27 Servicenow, Inc. Operational scoping with access restrictions
NL2017032B1 (en) * 2016-06-23 2018-01-19 Mindyourpass Holding B V Password generation device and password verification device
US10810321B2 (en) * 2016-08-11 2020-10-20 Intel Corporation Secure public cloud
GB2555961B (en) * 2016-11-14 2019-08-28 Google Llc System of enclaves
US9813303B1 (en) * 2017-03-30 2017-11-07 IP Company 8, LLC Enabling cross-realm authentication between tenant and cloud service provider
US10628197B2 (en) * 2017-07-20 2020-04-21 Vmware, Inc. Intelligent deployment of virtual processing instances from open virtual appliance templates
US10839080B2 (en) * 2017-09-01 2020-11-17 Microsoft Technology Licensing, Llc Hardware-enforced firmware security

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10915623B2 (en) 2017-09-04 2021-02-09 Kabushiki Kaisha Toshiba Information processing apparatus, information processing method, and computer program product
US10891389B2 (en) 2018-03-13 2021-01-12 Kabushiki Kaisha Toshiba Information processing apparatus, information processing method, and computer program product
US11132467B2 (en) 2018-09-18 2021-09-28 Kabushiki Kaisha Toshiba Information processing device, information processing method, and computer program product
JPWO2021065650A1 (ja) * 2019-09-30 2021-04-08
WO2021065650A1 (ja) * 2019-09-30 2021-04-08 積水メディカル株式会社 正規品自動認証方法
JP7153807B2 (ja) 2019-09-30 2022-10-14 積水メディカル株式会社 正規品自動認証方法

Also Published As

Publication number Publication date
US10963543B2 (en) 2021-03-30
JP6903529B2 (ja) 2021-07-14
US20190080059A1 (en) 2019-03-14

Similar Documents

Publication Publication Date Title
JP6903529B2 (ja) 情報処理装置、情報処理方法およびプログラム
KR102137773B1 (ko) 보안 애플리케이션을 통해 안전한 데이터를 전송하기 위한 시스템 및 그에 관한 방법
KR102434444B1 (ko) 가상 트러스트 컴퓨팅 베이스를 이용한 기기 보안성 검증 방법 및 장치
CN109858265B (zh) 一种加密方法、装置及相关设备
US20110289294A1 (en) Information processing apparatus
US8935530B2 (en) Control device and computer readable medium
US8161285B2 (en) Protocol-Independent remote attestation and sealing
US11132468B2 (en) Security processing unit of PLC and bus arbitration method thereof
CN108073816B (zh) 信息处理装置
JP5346608B2 (ja) 情報処理装置およびファイル検証システム
JP5949572B2 (ja) 車両不正状態検出方法、車載システムにおける制御方法、およびシステム
TWI582632B (zh) 使用多重鑑別碼模組以進入安全計算環境之方法及系統、以及處理器
US9514001B2 (en) Information processing device, data management method, and storage device
CN102947795A (zh) 安全云计算的系统和方法
CN102656592A (zh) 信息处理设备、信息处理系统、软件例程执行方法和远程认证方法
JP6385842B2 (ja) 情報処理端末、情報処理方法、及び情報処理システム
JP2016099837A (ja) 情報処理装置、サーバ装置、情報処理システム、制御方法及びコンピュータプログラム
US20210176065A1 (en) Storage system and data protection method for storage system
JP6951375B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP2007310688A (ja) マイクロコンピュータおよびそのソフトウェア改竄防止方法
US20210073397A1 (en) Computing device and method for operating same
CN112540831B (zh) 虚拟可信环境加载、运行方法、数据处理及安全处理装置
JPWO2011141997A1 (ja) 外部ブートデバイス、外部ブートプログラム、外部ブート方法及びネットワーク通信システム
NL2022902B1 (en) Integrated circuit device for loT applications
JP6010672B2 (ja) セキュリティ設定システム、セキュリティ設定方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190816

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201214

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210623

R151 Written notification of patent or utility model registration

Ref document number: 6903529

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151