JP6399763B2 - 情報処理装置、情報処理方法 - Google Patents

情報処理装置、情報処理方法 Download PDF

Info

Publication number
JP6399763B2
JP6399763B2 JP2014029967A JP2014029967A JP6399763B2 JP 6399763 B2 JP6399763 B2 JP 6399763B2 JP 2014029967 A JP2014029967 A JP 2014029967A JP 2014029967 A JP2014029967 A JP 2014029967A JP 6399763 B2 JP6399763 B2 JP 6399763B2
Authority
JP
Japan
Prior art keywords
system file
information processing
memory area
hash value
processing apparatus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014029967A
Other languages
English (en)
Other versions
JP2015156055A (ja
JP2015156055A5 (ja
Inventor
土樋 直基
直基 土樋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2014029967A priority Critical patent/JP6399763B2/ja
Priority to US14/615,861 priority patent/US9576132B2/en
Publication of JP2015156055A publication Critical patent/JP2015156055A/ja
Publication of JP2015156055A5 publication Critical patent/JP2015156055A5/ja
Application granted granted Critical
Publication of JP6399763B2 publication Critical patent/JP6399763B2/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)
  • Facsimiles In General (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、改ざんの有無の検出技術に関するものである。
近年の複合機(MFP)はネットワークインターフェイスを有し、ファイルサーバ機能やメール送受信機能などPCやサーバなどとそん色のない機能を有している。このような状況において、複合機においてもPCやサーバと同様に不正なハッキングによる機器の不正使用が問題視されている。
複合機のような組み込み型の情報処理装置の場合、多くの場合は、出荷時に想定されたファームウェアだけの使用を想定している。使用可能なファームウェアの個々のファイルの検証データを予め保管し、ファームウェアの使用時に検証データを用いて該ファームウェアに対する改ざん検証を行い、正しいファームウェアだけを使用可能とするホワイトリスト方式が一般的である。ここでいう検証データとは、ファームウェアの一意性を確認するために、ファームウェアが格納された個々のファイルのバイナリデータから、ハッシュ関数を用いて作成されたハッシュ値を用いるのが一般的である。ハッシュ関数は一方向性関数とも呼ばれる。ハッシュ関数を用いれば、ある値からハッシュ値を作成した際に、ハッシュ値を変更せずに元の値を改変することが不可能であるという特徴があり、正しいファームウェアであるかどうかの改ざん検証に使用することが可能である。また、改ざん確認とは、ファームウェアを実行する際やファイルをオープンする際にファイル全体のハッシュ値を算出し、ホワイトリストに保管された該ファイルに対する検証データと一致しているかを確認し、一致しなければ改ざんされたと見なして警告など使用者に通告を行うことを示している。
通常、ファームウェアは複数のファイルから構成されるため、検証データはファイルに対応した数だけ複数保管されている。このようなホワイトリスト方式の改ざん検証を行うソフトウェアは広く一般化しており、例えばTripwireなどの製品が存在する。
また、ファームウェアの改ざんを防ぐために、不揮発のディスクではなく、RAMにディスクのデータをコピーして、そのRAMをディスクとしてマウントする方法が提案されている(特許文献1)。
特開2004-206394号公報
以下に従来のホワイトリスト方式の問題を挙げる。
第1に、膨大なソフトウェアに対する個々の検証データを機器の内部に保管する必要があり、その場合、不揮発容量が限られた機器の場合には不揮発メモリ容量を増やす必要が発生し、機器のコストを増加させる、という問題がある。
第2に、膨大なソフトウェアの改ざん検証を行うと、個々のファイル読み込みやハッシュ算出のオーバーヘッドが大きくなることによって機器の動作負荷が高くなってしまい、動作性能を下げてしまう、という問題がある。
本発明はこのような問題に鑑みてなされたものであり、メモリ領域を多分に使用することなく、且つ処理負荷を増大させることなく、多量のシステムファイルに対する改ざん検証を実現させる技術を提供する。
本発明の一様態は、情報処理装置であって、
前記情報処理装置のシステムファイルを保持するメモリ領域に対する改竄検知を行うのか、前記システムファイルに対する改竄検知を行うのか、を設定する設定手段と、
前記設定手段による設定に応じて、前記メモリ領域に対する改竄検知若しくは前記システムファイルに対する改竄検知を行う改竄検知手段と
を備え
前記改竄検知手段が前記システムファイルに対する改竄検知に要した時間が、前記メモリ領域に対する改竄検知に要する時間として予め定められた時間を超えた場合には、前記設定手段は、前記メモリ領域に対する改竄検知を行う、と設定する
ことを特徴とする。
本発明の構成により、メモリ領域を多分に使用することなく、且つ処理負荷を増大させることなく、多量のシステムファイルに対する改ざん検証を実現させることができる。
システムの構成例を示すブロック図。 記憶装置107内の記憶領域(メモリ領域)の構成例を示す図。 システムファイルパーティション201内のシステムファイルの配置例を示す図。 ハッシュ値の算出処理について説明する図。 システムファイルパーティション201に対する改ざん例を示す図。 システムファイルパーティション201に対する改ざん例を示す図。 システムファイルパーティション201に対する改ざん例を示す図。 複合機101の機能構成例を示すブロック図。 複合機101が行う処理のフローチャート。 複合機101が行う処理のフローチャート。 従来方式と本方式の性能の傾向を説明するグラフ。 複合機101が行う処理のフローチャート。 複合機101が行う処理のフローチャート。 複合機101が行う処理のフローチャート。
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の1つである。
[第1の実施形態]
以下では、本実施形態に係る情報処理装置としての複合機(MFP)と、PC(パーソナルコンピュータ)と、を有するシステムを例にとり、該複合機による、システムファイルを保持するメモリ領域に対する改ざんの有無判断の為の処理について説明する。
先ず、本実施形態に係るシステムの構成例について、図1のブロック図を用いて説明する。図1に示す如く、本実施形態に係るシステムは、複合機101とPC125とを有しており、複合機101とPC125とはネットワーク126を介して互いに通信可能である。このネットワーク126は、LANやインターネットなどの周知のネットワークであって、有線であっても構わないし、無線であっても構わない。
先ず、PC125について説明する。PC125は、例えば、文書や画像などの印刷対象を作成して複合機101に送信し、該複合機101に該印刷対象を印刷させることができる。もちろん、PC125が複合機101に対して指示する内容は印刷に限るものではなく、スキャン指示やデータ保存指示など様々な指示がある。
CPU119は、RAM120に格納されているコンピュータプログラムやデータを用いて処理を実行することで、PC125全体の動作制御を行うと共に、PC125が行うものとして後述する各処理を実行する。
RAM120は、記憶装置122からロードされたコンピュータプログラムやデータ、ネットワーク通信部118を介して複合機101から受信した様々なデータ、を一時的に記憶するためのエリアを有する。また、RAM120は、CPU119が各種の処理を実行する際に用いるワークエリアを有する。すなわち、RAM120は、各種のエリアを適宜提供することができる。
記憶装置122は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。記憶装置122には、OS(オペレーティングシステム)や、PC125が行うものとして後述する各処理をCPU119に実行させるためのコンピュータプログラムやデータが保存されている。記憶装置122に保存されているコンピュータプログラムやデータは、CPU119による制御に従って適宜RAM120にロードされ、CPU119による処理対象となる。
入力部123は、キーボードやマウスなどにより構成されており、PC125の操作者が操作することで、各種の指示をCPU119に対して入力することができる。
ネットワーク通信部118は、PC125をネットワーク126に接続するためのもので、PC125は、このネットワーク通信部118を介して、ネットワーク126に接続されている複合機101とのデータ通信を行うことができる。
次に、複合機101について説明する。
CPU105は、RAM106に格納されているコンピュータプログラムやデータを用いて処理を実行することで、複合機101全体の動作制御を行うと共に、複合機101が行うものとして後述する各処理を実行する。
RAM106は、記憶装置107からロードされたコンピュータプログラムやデータ、ネットワーク通信部102を介してPC125から受信した様々なデータ、を一時的に記憶するためのエリアを有する。また、RAM106は、CPU105が各種の処理を実行する際に用いるワークエリアを有する。すなわち、RAM106は、各種のエリアを適宜提供することができる。
記憶装置107は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。記憶装置107には、OS(オペレーティングシステム)や、複合機101が行うものとして後述する各処理をCPU105に実行させるためのコンピュータプログラムやデータが保存されている。記憶装置107に保存されているコンピュータプログラムやデータは、CPU105による制御に従って適宜RAM106にロードされ、CPU105による処理対象となる。
印刷エンジン108は、PC125から送信された印刷データや、スキャナエンジン114から出力された画像データ、等を用いて、紙などの記録媒体上に印刷を行うものである。
スキャナエンジン114は、紙などの記録媒体上に記録されている画像や文字などの情報を読み取り、読み取った結果を画像データとして出力するものである。
UI(ユーザインターフェース)操作部103は、タッチパネル画面とハードキーとを有するものであり、各種の指示をCPU105に対して入力するために操作者が操作するものであると共に、CPU105による処理結果を画像や文字などでもって表示するものである。
ネットワーク通信部102は、複合機101をネットワーク126に接続するためのもので、複合機101は、このネットワーク通信部102を介して、ネットワーク126に接続されているPC125とのデータ通信を行うことができる。
なお、図1に示したPC125及び複合機101の構成はあくまでも一例であり、図1に示した構成に限るものではない。また、図1では説明を簡単にするために、PC125及び複合機101のそれぞれの台数を1としているが、2以上であっても構わない。
次に、記憶装置107内の記憶領域(メモリ領域)の構成例について、図2を用いて説明する。記憶装置107は通常、1個の記憶デバイス(ハードディスクドライブなど)から構成されるが、記憶装置107内の記憶領域を論理的な単位(パーティション)で分割することが可能である。図2の例では、記憶装置107内の記憶領域を、3つのパーティション(システムファイルパーティション201、設定データパーティション202、画像パーティション203)に分割している。
システムファイルパーティション201は、複合機101のシステムファイル、例えば、複合機101の基本動作に係るコンピュータプログラムやデータのファイル等、通常の利用では変更が発生しない固定ファイルを格納するためのパーティションである。
設定データパーティション202は、複合機101の様々な設定データを格納したり、ファイルを一時的に格納するために使用されるパーティションである。
画像パーティション203は、複合機101がネットワーク通信部102を介してPC125から受信した印刷データや、スキャナエンジン114から出力された画像データなどを一時的に格納するためのパーティションである。
上記で述べたように、システムファイルパーティション201に格納されるシステムファイルは通常利用(ソフトウェア更新を除く)では変更が入る余地がないため、常に内容は同一であると想定することができる。一方、設定データパーティション202や画像パーティション203については、ユーザによる設定変更や、日々のプリントやスキャン操作によって常に書換えが発生する。
なお、記憶装置107内のパーティション分割例はこれに限るものではなく、さらに詳細にパーティションを分割しても構わないが、上記のシステムファイルパーティション201に相当する記憶領域が設けられていることが前提である。
次に、複合機101の機能構成例について、図5のブロック図を用いて説明する。
FS(ファイルシステム)アクセス部501は、システムファイルパーティション201へのアクセスを行う。
ハッシュ算出部502は、与えられたデータのハッシュ値(該データ固有の固定サイズを有し、例えば32バイト)を、既知のハッシュ算出アルゴリズム(例えばSHA-256)に従って算出する。ハッシュ算出アルゴリズムの特徴としては、入力データから出力データを作るのは容易であるが、同じ出力データを出力するために異なる入力データを生成することが論理的に困難であるという一方向性を持っているのが特徴である。
暗号処理部503は、与えられたデータを、既知の暗号化アルゴリズム(例えばAES)に従って暗号化することで、暗号化データを生成する。なお、この暗号処理で用いる「複合機101固有の暗号鍵」は、予めシステムファイルパーティション201等に格納されており、外部から暗号鍵が読みとれない構成となっている。なお、暗号処理部503は、与えられた暗号化データを復号することもできる。
検証データ保管部504は、システムファイルパーティション201に対する改ざんの有無を検証するために使用するデータ(システムファイルパーティション201に対する正しいハッシュ値)を設定データパーティション202に登録する。
ソフトウェア更新部505は、システムファイルパーティション201内に格納されているソフトウェアを更新するものであり、例えば不具合や脆弱性が発覚した時に更新する。
改ざん確認部506は、システムファイルパーティション201に対する改ざんの有無(例えば、システムファイルパーティション201内のソフトウェアの改ざんや削除、不正なソフトウェアの導入)を検証する(改竄検知)ための処理を行う。
図5に示した各機能部は何れもコンピュータプログラムとして実装されるもので、上記のシステムファイルパーティション201内にシステムファイルとして格納されている。以下では、説明上、図5に示した各機能部を処理の主体として説明する場合があるが、実際には、CPU105が該機能部に相当するコンピュータプログラムを実行することでその処理がなされる。
次に、図2に示したシステムファイルパーティション201内のシステムファイル(管理領域301は除く)の配置例について、図3Aを用いて説明する。管理領域301は、システムファイルパーティション201内におけるそれぞれのシステムファイルの配置を管理するために使用される領域である。ブートローダ302は、起動時に立ち上げるプログラムを決定する。カーネル303は、OSの中核となるものである。デバイスドライバ304は、ネットワーク通信部102やUI操作部103を動作させるためのデバイスドライバである。常駐実行ファイル305は、ファームウェア307とは別に動作する常駐実行ファイルである。共有ライブラリ306は、ファームウェア307から参照され、実行される、分離した共有ライブラリである。ファームウェア307は、複合機101に様々な動作を行わせるものである。言語ファイル308は、複合機101が多国語に対応するためにファームウェア307から分離された言語ファイルである。HTMLコンテンツ309は、複合機101がHTTPを用いて外部から参照される時に使用されるものである。
また、斜線で示した領域310は、システムファイルパーティション201内の未使用領域(システムファイルが配置されていない領域)を示しており、この領域310には、所定の値を有するデータが登録されている。
なお、図3Aでは、説明をわかりやすくするために、個々のシステムファイルは1つずつとしているが、実際には複数存在する。例えば、デバイスドライバは接続されるデバイスに応じて複数存在する。
また、システムファイルパーティション201内でシステムファイルは整然とならんでいる必要はなく、図3Aにしめすように、実際には個々のシステムファイルはばらばらに配置される。これらシステムファイルの物理的な配置は管理領域301によって管理されており、どこに物理的に配置されているかをファームウェア307が管理する必要はない。このことは同一製品、同一バージョンのファームウェア構成の場合でも、記憶装置107に格納されている各システムファイルの配置が全く同じである必要はないことを示す。
次に、複合機101が、システムファイルパーティション201に対する改ざんの有無を検証するために用いるデータを生成するために行う処理について、同処理のフローチャートを示す図6を用いて説明する。なお、図6のフローチャートに従った処理は、複合機101を初めて起動したときや、システムファイルパーティション201内のシステムファイルが更新されるたびに行われるものとする。例えば、ユーザがUI操作部103を操作してソフトウェアの更新を指示し、システムファイルパーティション201内のシステムファイルの更新が完了したことをCPU105が検知すると、CPU105は、図6のフローチャートに従った処理を実行する。
ステップS601では、CPU105は、システムファイルパーティション201に対して、RW(Read/Write)マウントを行う。RWマウントとは、システムファイルパーティション201に対して読み書きができるようにする手順である。通常は読み込みしか行わないのでRO(Read Only)マウントを行うが、システムファイルの更新時だけは書き込みを行う必要があるため、RWマウントを行う。
ステップS602では、CPU105は、ネットワーク通信部102を介して外部機器(例えばPC125)から送信されたシステムファイル(例えばファームウェア)を受信し、記憶装置107内の設定データパーティション202内に一時的に格納する。
ステップS602では、例えば、更新ファイルを保持している更新サーバに接続し、システムソフトウェアをダウンロードし、該ダウンロードしたシステムソフトウェアを設定データパーティション202に一時的にコピーする。更新サーバは、例えば、インターネット上に置かれたメーカが提供するサーバである。更新サーバ以外にも、USBメモリなどの可搬デバイスからダウンロードしてもよい。すなわち、ステップS602では、システムファイルをダウンロードして設定データパーティション202に格納できるのであれば、ダウンロード先やダウンロード方法は問わない。
次に、ステップS603では、CPU105は、ステップS602で設定データパーティション202に格納したシステムファイルの署名を検証する。即ち、システムファイルにメーカの秘密鍵を用いて署名された署名データを付与し、複合機101に組み込まれた証明書を用いて検証を行い、正規なシステムファイルであるかの検証を行うものであり、転送経路に不正な改ざんがあったかを確認する仕組みである。
そして、この検証に成功した場合には、処理はステップS604を介してステップS605に進み、失敗した場合には、ステップS604を介して、図6のフローチャートに従った処理を完了させる。
ステップS605では、CPU105は、システムファイルパーティション201内のシステムファイルのアップデートを実施する。この場合のアップデートとは、ステップS602で設定データパーティション202に格納したシステムファイルを、システムファイルパーティション201内の規定の位置に移動させることに相当する。
ステップS606では、CPU105は、ステップS605におけるアップデートが成功したか否かを判断する。この判断の結果、成功した場合には、処理はステップS607に進み、失敗した場合には、図6のフローチャートに従った処理を完了させる。
ステップS607では、CPU105は、システムファイルパーティション201をRO(Read Only)でマウントし直す(リマウント)。このタイミングでシステムファイルパーティション201の書き換えは完了し、以降、次の更新が行われるまで通常はシステムファイルパーティション201の書き換えを行うことはない。
ステップS608では、CPU105は、システムファイルパーティション201内に格納されている全てのデータを読み出す。そしてステップS609では、CPU105は、ステップS608で読み出したデータを用いて1つのハッシュ値(該データのハッシュ値)を算出する。
ステップS609では、例えば、SHA−256ハッシュ算出アルゴリズムを用いてハッシュ値を算出する。このアルゴリズムは任意のサイズの入力データに対して、32バイトのハッシュ値を作成する。ハッシュ算出アルゴリズムの特徴としては入力データから出力データを作るのは容易であるが、同じ出力データを出力するために異なる入力データを算出することが論理的に困難であるという一方向性を持っているのが特徴である。この特徴を利用して、正規のシステムファイルパーティション201から構成されたハッシュ値は、不正な改ざんを行った結果から同じ値を導き出すことが現実的に不可能であるため、ハッシュ値を検証することにより改ざんの有無を検証することが可能となる。
ここで、システムファイルパーティション201内に格納されている全てのデータを用いて1つのハッシュ値(該データのハッシュ値)を算出する処理について、図3Bを用いて説明する。図3Bでは、図3Aで示したシステムファイルパーティション201の左上隅の位置からラスタスキャン順に格納データを読み出している様子を示しており、401はすでに読み出したデータの領域である。そしてこのようにして読み出したシステムファイルパーティション201内のデータを用いて、対応する1つのハッシュ値を算出する。ここで、ハッシュ値算出のためには、システムファイルのデータだけでなく、システムファイルパーティション201内の未使用領域(システムファイルが配置されていない領域)に格納されているデータも読み出され、読み出されたデータ全て、ハッシュ値算出のために使用される。すなわち、この算出するハッシュ値には、システムファイルのデータだけでなく、この未使用領域に格納されているデータも反映されている。然るに、システムファイルだけでなく、未使用領域についても、改ざんがあれば、ハッシュ値に変化が現れることになる。また、ハッシュ値は、システムファイルパーティション201内のデータ配置によって一意に作られた値であり、システムファイルパーティション201全体のデータが1ビットでも変わると全く異なったハッシュ値を算出することになる。そのため、任意のプログラムの改ざん、削除、不正な動作を行うファイルの追加を検知することができる。
ここで、システムファイルパーティション201内のあるシステムファイルを改ざんしたことによるシステムファイルパーティション201の改ざん例について、図4Aを用いて説明する。図4Aでは、常駐実行ファイル305が改ざんされ、改ざん常駐実行ファイル599となっている。常駐実行ファイル305が改ざんされて改ざん常駐実行ファイル599となれば、プログラムサイズの変化やプログラムの書き換えが発生し、それらはシステムファイルパーティション201全体の書き換えとしてハッシュ値に変化を及ぼすことになる。そのため、改ざん後のシステムファイルパーティション201のハッシュ値は、改ざん前のシステムファイルパーティション201のハッシュ値とは異なる値となり、この値の変化の検知により、図4Aのような改ざんの有無を検知することができる。
次に、システムファイルパーティション201に不正なファイルをインストール(配置)したことによるシステムファイルパーティション201の改ざん例について、図4Bを用いて説明する。不正ファイル601は、正規のシステムファイルとは異なる不正なファイルであり、不正ファイル601をシステムファイルパーティション201内に配置したことで、配置前における未使用領域から不正ファイル601の分だけ未使用領域が減ることになる。すなわち、配置の前後で未使用領域に変化が生じることになる。本実施形態では上記の通り、システムファイルのデータだけでなく、システムファイルパーティション201内の未使用領域に格納されているデータも、ハッシュ値算出のために使用されるので、未使用領域に変化があれば、ハッシュ値も変化することになる。然るに、ハッシュ値の変化の検知により、図4Bのような改ざんの有無を検知することができる。
次に、システムファイルパーティション201内のあるシステムファイルを削除したことによるシステムファイルパーティション201の改ざん例について、図4Cを用いて説明する。図4Cでは、システムファイルパーティション201から言語ファイル308が削除されている。システムファイルパーティション201から言語ファイル308が削除されると、削除前における未使用領域から言語ファイル308の分だけ未使用領域が増えることになる。すなわち、削除の前後で未使用領域に変化が生じることになる。本実施形態では上記の通り、システムファイルのデータだけでなく、システムファイルパーティション201内の未使用領域に格納されているデータも、ハッシュ値算出のために使用されるので、未使用領域に変化があれば、ハッシュ値も変化することになる。然るに、ハッシュ値の変化の検知により、図4Cのような改ざんの有無を検知することができる。
このように、本実施形態では、図4A〜4Cに例示したような改ざんを検知するために、システムファイルパーティション201に対するハッシュ値を算出する。ここで、従来のホワイトリスト方式においては、システムファイル単位でハッシュ値を算出しており、検証データと比較する。この場合、個々のシステムファイルはパーティション内にどのように配置されても、システムファイルの内容から生成されるハッシュ値は一意の値になるため、出荷段階でメーカ側が算出したハッシュ値を信頼することができる。
しかし、本実施形態のように、システムファイルパーティション全体でハッシュ値を取る場合、上記で説明している通り、個々のシステムファイルの物理的配置に制約がない。そのため、個体(複合機101)ごとにシステムファイルパーティションの配置が異なる場合がある。例えば、工場出荷においてバージョン1.0で出荷した製品を、出荷先(ユーザ)でバージョン1.1にバージョンアップした場合と、工場で最初からバージョン1.1で出荷した場合と、では複合機101の動作としては全く同じでも、システムファイルパーティションの物理的配置は全く異なる可能性がある。
よって、システムファイルパーティション全体のハッシュ値は出荷段階では全ての機体に共通な値をメーカが予め算出することができず、個々の複合機101において算出する必要がある。然るに、ハッシュ値の算出は、システムファイルの正規の更新時に行われる。
図6に戻って、次に、ステップS610では、CPU105は、ステップS609で算出したハッシュ値を暗号化する。ステップS611では、CPU105は、ステップS610で暗号化されたハッシュ値のデータ(暗号化ハッシュ値データ)を、設定データパーティション202(システムファイルパーティション201とは異なる別メモリ領域)に格納する。
ハッシュ値を暗号化するのは、ハッシュ値を平文で格納すると、不正な攻撃によってハッシュ値を書き換えられてしまう可能性があるからである。暗号化を行うことによって、この領域を不正に書き換えることをできないようにすることが可能である。もちろん、状況によってはこの暗号化は省いても構わない。
次に、システムファイルパーティション201に対する改ざん有無の検証処理について、同処理のフローチャートを示す図7を用いて説明する。なお、図7のフローチャートに従った処理は、複合機101の電源投入時に行っても構わないし、CPU105が、ユーザがUI操作部103を操作して検証処理の開始指示を入力したことを検知したことに応じて実行するようにしても構わない。また、CPU105は、自身が有するタイマ機能を使用して、毎週若しくは毎月の定時に図7のフローチャートに従った処理を実行するようにしても構わない。すなわち、図7のフローチャートに従った処理の実行タイミングは特定のタイミングに限るものではない。
ステップS701では、CPU105は、システムファイルパーティション201内に格納されている全てのデータを読み出す。そしてステップS702では、CPU105は、ステップS701で読み出したデータを用いて、上記のステップS609で使用したハッシュ算出アルゴリズムと同じハッシュ算出アルゴリズム(上記の例ではSHA−256ハッシュ算出アルゴリズム)に従って1つのハッシュ値(該データのハッシュ値)を算出する。
ステップS703では、CPU105は、上記のステップS611で設定データパーティション202に格納された暗号化ハッシュ値データを、該設定データパーティション202から読み出す。
ステップS704では、CPU105は、ステップS703で読み出した暗号化ハッシュ値データを復号することで、上記のステップS609で算出したハッシュ値(正解値)を復元する。
ステップS705では、CPU105は、ステップS702で算出したハッシュ値と、ステップS704で復元したハッシュ値と、を比較してそれぞれが一致しているか否かを判断する。この判断の結果、一致していると判断した場合には、システムファイルパーティション201に対する改ざんは何等行われていないと判断し、図7のフローチャートに従った処理を完了させる。一方、一致していないと判断した場合には、システムファイルパーティション201に対して何らかの改ざんが行われたものと判断し、処理はステップS706に進む。
ステップS706では、CPU105は、システムファイルパーティション201に対して改ざんがなされていたことを報知するための処理を実行する。報知方法には様々な方法が考えられ、本実施形態では如何なる報知方法を採用しても構わない。例えば、CPU105はネットワーク通信部102を制御して、特定のユーザ(例えばシステム管理者)の端末装置に対して改ざんがあった旨が記された電子メールを送信しても構わない。また、UI操作部103が有するタッチパネル画面に改ざんがあった旨のメッセージを表示しても構わない。
次に、改ざんの有無を検証する為の処理速度について説明する。改ざんの有無の検証処理において、対象となるシステムファイルを読み込み、ハッシュ値を算出する算出時間は、複合機101の動作性能を低下させる。従来のファイル単位でハッシュ値を持つホワイトリスト方式と本方式の差異について以下に述べる。
図8は従来方式と本方式の性能の傾向を説明するグラフである。縦軸はハッシュ算出時間(t)、横軸はシステムファイルの個数(n)を示している。801は従来方式の算出時間の傾向を示すグラフであり、802は本方式の算出時間の傾向を示すグラフを示している。なお、両方式とも、システムファイルパーティションの全容量の80%を利用している(すなわち残りの20%は未使用領域である)ことを想定している。ハッシュ値の算出速度は下記の算出式であらわされる
ハッシュ値の算出時間=(ファイルを開くオーバーヘッド+ファイル読み込み時間)+(ハッシュ値を算出するオーバーヘッド+ファイルのハッシュ値算出時間)
図8の例でいえば、従来方式はシステムファイルパーティションの80%のみ算出対象となるため、ファイルの読み込み時間と算出時間は80%に収まるが、ファイルを開くオーバーヘッド(HDDの場合には磁気ヘッドの移動時間やキャッシュのミスヒットが該当)とハッシュ値を算出するオーバーヘッド(ハッシュ関数の初期化やメモリの確保解放が該当)が存在し、システムファイルの個数nの増加とともにこの値の総時間が多くなり、算出性能が低下する。一方、本方式はシステムファイルパーティション全体をひとまとめとしてハッシュ値を算出するため、システムファイルの個数に関係なく算出時間は一定である。よって、システムファイルパーティション内のシステムファイルの個数が大きい場合には従来方式よりも本方式のほうが、性能が向上することがわかる。
このように、本実施形態によれば、システムファイルパーティションに対する改ざんの有無を検証するために予め算出するハッシュ値は、システムファイルパーティションに対して1つあればよく、しかも高々32バイト程度のハッシュ値を管理すればよい。このため、不揮発メモリ容量を抑えることが可能となり、機器のコスト増大を防ぐことが可能となる。
さらに、改ざん検証対象となるソフトウェアの個数およびサイズが十分に大きい場合、ソフトウェア単位にハッシュ値を算出するよりは、全体で1個のハッシュ値を算出することによって読み込みやハッシュ値算出のオーバーヘッドを防ぐことが可能となり、動作性能の低下を抑えることが可能となる。
[第2の実施形態]
動作中のファームウェアの安定を図るために、設定データパーティション202にシステムファイルをダウンロードすると複合機101を再起動させ、該再起動後に該システムファイルをシステムファイルパーティション201に移動させる処理(アップデート処理)を行うことが考え得る。しかし、この再起動を偽装して不正にアップデートを実施し、該アップデート後のハッシュ値を正解値として算出して設定データパーティション202に登録してしまうと、以降の改ざん確認において不正なシステムファイルパーティションを正しいと誤認してしまう場合がある。本実施形態は、このような点に鑑みて第1の実施形態を改良した実施形態である。以下では、第1の実施形態との差分について重点的に説明し、以下で特に触れない限りは第1の実施形態と同様であるものとする。
本実施形態では、システムファイルパーティション201に対する改ざんの有無を検証するために用いるデータを生成するために行う処理として、図6のフローチャートに従った処理の代わりに、図9,10のフローチャートに従った処理を実行する。
ステップS901では、CPU105は、上記のステップS601と同様にして、システムファイルパーティション201に対して、RW(Read/Write)マウントを行う。
ステップS902では、CPU105は、上記のステップS602と同様にして、ネットワーク通信部102を介して外部機器(例えばPC125)から送信されたシステムファイル(例えばファームウェア)を受信し、記憶装置107内の設定データパーティション202内に一時的に格納する。
ステップS903では、CPU105は、上記のステップS603と同様にして、ステップS902で設定データパーティション202に格納したシステムファイルの署名を検証する。そして、この検証に成功した場合には、処理はステップS904を介してステップS905に進み、失敗した場合には、ステップS904を介して図9のフローチャートに従った処理を完了させる。
ステップS905では、CPU105は、再起動中にアップデート処理を指示するためのアップデートフラグに「1」を設定する。そして更にCPU105は、このアップデートフラグに対して秘密鍵を用いて署名を行い、設定データパーティション202内の不図示のフラグ領域に書き込む。なお、アップデートフラグの初期値は「0」である。
そしてステップS906では、CPU105は、複合機101の再起動を開始する。CPU105は、ステップS906における再起動中に、図10のフローチャートに従った処理を実行する。
ステップS1001では、CPU105は、ステップS905で設定データパーティション202に書き込んだアップデートフラグを読み出す。そしてステップS1002では、CPU105は、ステップS1001で読み出したアップデートフラグに対し、証明書を用いて署名の検証を実施する。この検証に成功した場合には、処理はステップS1003を介してステップS1004に進み、失敗した場合には、処理はステップS1003を介してステップS1011に進む。
ステップS1004では、CPU105は、上記のステップS605と同様にして、システムファイルパーティション201内のシステムファイルのアップデートを実施する。
ステップS1005では、CPU105は、上記のステップS606と同様にして、ステップS1004におけるアップデートが成功したか否かを判断する。この判断の結果、成功した場合には、処理はステップS1006に進み、失敗した場合には、処理はステップS1011に進む。
ステップS1006では、CPU105は、上記のステップS607と同様にして、システムファイルパーティション201をRO(Read Only)でマウントし直す(リマウント)。
ステップS1007では、CPU105は、上記のステップS608と同様にして、システムファイルパーティション201内に格納されている全てのデータを読み出す。そしてステップS1008では、CPU105は、上記のステップS609と同様にして、ステップS1007で読み出したデータを用いて1つのハッシュ値(該データのハッシュ値)を算出する。
ステップS1009では、CPU105は、上記のステップS610と同様にして、ステップS1008で算出したハッシュ値を暗号化する。ステップS1010では、CPU105は、上記のステップS611と同様にして、ステップS1009で暗号化されたハッシュ値のデータ(暗号化ハッシュ値データ)を、設定データパーティション202(システムファイルパーティション201とは異なる別メモリ領域)に格納する。ステップS1011では、CPU105は、通常の起動処理を実施する。
このように、本実施形態によれば、ダウンロードしたシステムファイルの署名の検証に成功した場合にのみアップデートして正解値を算出するので、不正なファームウェアによる誤った正解値の作成を防ぐことが可能となる。
[第3の実施形態]
図8を用いて説明したように、システムファイルの個数が十分に少ない場合、あるいはシステムファイルパーティションの利用率が低い場合には、第1の実施形態に係る構成では、かえって速度が低下する場合がある。然るに、記憶装置107に十分な容量があり、従来のホワイトリスト方式が許容できる場合には、第1の実施形態に係る方式及び従来のホワイトリスト方式のうち、速度の速い方式を選択的に利用してもよい。
図8を用いて説明したように、システムファイルパーティション全体で改ざん確認をする場合、この確認に要する時間(確認時間)Tpはシステムファイルパーティションのサイズだけに依存しており、格納されているシステムファイルの個数やサイズには一切関係ないため、固定の時間となる。
然るに、本実施形態では、当初は従来のホワイトリスト方式で起動し、従来のホワイトリスト方式の改ざん確認時間Tfを測定する。そして確認時間Tfが確認時間Tpより大きくなることが確認されると、従来のホワイトリスト方式からシステムファイルパーティション全体で改ざん確認する方式に切り替える。これによって、改ざん確認による性能低下を極力抑えることが可能である。本実施形態に係る複合機101の起動処理について、同処理のフローチャートを示す図11を用いて説明する。
ステップS1101では、CPU105は、設定データパーティション202に格納されている改ざん確認モードを取得する。改ざん確認モードは、「ファイル単位で改ざん確認するモード」(第1のモード)、「システムファイルパーティション201単位で改ざん確認するモード」(第2のモード)の何れか一方のモードに設定されており、初期状態では第1のモードに設定されている。
ステップS1102では、CPU105は、ステップS1101で取得した改ざん確認モードが第1のモードに設定されているのか、第2のモードに設定されているのかを判断する。この判断の結果、第1のモードに設定されている場合には、処理はステップS1103に進み、第2のモードに設定されている場合には、処理はステップS1111に進む。
ステップS1111では、CPU105は、第1の実施形態で説明したシステムファイルパーティション201単位での改ざんの有無の検出処理を行う。そして改ざんがあると判断した場合には、処理はステップS1112を介してステップS1106に進み、改ざんがないと判断した場合には、処理はステップS1114に進む。
ステップS1106では、CPU105は、上記のステップS706と同様にして、改ざんがあったことを報知する。一方、ステップS1114では、CPU105は、上記のステップS1011と同様にして、通常の起動処理を実行する。
一方、ステップS1103では、CPU105は、自身のタイマ機能を用いて、現在の時刻Tpreを取得する。そしてステップS1104では、CPU105は、従来のホワイトリスト方式に従って、システムファイル単位での改ざんの有無の検出処理を行う。
そして改ざんがあると判断した場合には、処理はステップS1105を介してステップS1113に進み、改ざんがないと判断した場合には、処理はステップS1105を介してステップS1107に進む。ステップS1113では、CPU105は、上記のステップS706と同様にして、改ざんがあったことを報知する。
ステップS1107では、CPU105は、自身のタイマ機能を用いて、現在の時刻Tpostを取得する。そしてステップS1108では、CPU105は、従来のホワイトリスト方式に従って行った、システムファイル単位での改ざんの有無の検出処理に要した時間Tfを、Tf=(Tpost−Tpre)を計算することで求める。
ステップS1109では、CPU105は、Tf>Tpであるか否かを判断し、Tf>Tであれば、処理はステップS1110に進み、Tf≦Tであれば、処理はステップS1114に進む。ここで、Tpは常に固定であるため、複合機101のメーカ等が定数として予め定義して設定データパーティション202に登録している。ステップS1110では、CPU105は、改ざん確認モードを第2のモードに切り替える。
このように、本実施形態によれば、2つの改ざん確認方式のうち、より早く改ざん確認を行うことのできる方式を利用するため、改ざん確認による速度低下を低く抑えることが可能となる。
なお、図11のフローチャートに従った処理は、複合機101の起動時に行われる処理として説明したが、ステップS1101〜S1113の処理の実行タイミングは、他のタイミングであっても構わない。例えば、操作者がUI操作部103を操作して改ざんの有無の判断指示を入力したことをCPU105が検知したことに応じてステップS1101〜S1113の処理を実行しても構わない。また、予め設定された予約日時にステップS1101〜S1113の処理を実行するようにしても構わない。
[第4の実施形態]
第1乃至3の実施形態では、複合機101における「システムファイルを保持するメモリ領域に対する改ざんの有無判断」について説明した。しかし、図6,7に示すような処理は、システムファイルパーティション201に相当するメモリ領域を有する装置であれば、実行可能であるし、実行することに意義はある。然るに、システムファイルを保存するためのメモリ領域内に保存されている全てのデータを用いて1つのハッシュ値を算出し、該ハッシュ値をメモリ領域とは異なる別メモリ領域に登録する、という処理(第1の処理)は複合機101以外の装置が実行しても構わない。また、メモリ領域内に保存されているデータを用いて1つのハッシュ値を算出し、該算出したハッシュ値と、別メモリ領域に登録されているハッシュ値と、が一致しているか否かを判断し、一致していないと判断した場合に、メモリ領域に対する改ざんが行われたことを報知する、という処理(第2の処理)についても同様で、複合機101以外の装置が行っても構わない。また、第1の処理と第2の処理とは同じ装置が実行するようにしても構わないし、それぞれ異なる装置が実行するようにしても構わない。
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (9)

  1. 情報処理装置であって、
    前記情報処理装置のシステムファイルを保持するメモリ領域に対する改竄検知を行うのか、前記システムファイルに対する改竄検知を行うのか、を設定する設定手段と、
    前記設定手段による設定に応じて、前記メモリ領域に対する改竄検知若しくは前記システムファイルに対する改竄検知を行う改竄検知手段と
    を備え
    前記改竄検知手段が前記システムファイルに対する改竄検知に要した時間が、前記メモリ領域に対する改竄検知に要する時間として予め定められた時間を超えた場合には、前記設定手段は、前記メモリ領域に対する改竄検知を行う、と設定する
    ことを特徴とする情報処理装置。
  2. 前記改竄検知手段は、前記設定手段による設定に応じて、前記メモリ領域に対応するハッシュ値を用いて前記メモリ領域に対する改竄検知を行う、若しくは前記システムファイルに対応するハッシュ値を用いて前記システムファイルに対する改竄検知を行う、ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記改竄検知手段は、前記メモリ領域内のシステムファイルが更新されるたびに、該更新の後の該メモリ領域に対応するハッシュ値を算出することを特徴とする請求項2に記載の情報処理装置。
  4. 前記改竄検知手段は、前記システムファイルの更新に用いるファイルの署名の検証に成功した場合には、システムファイルの取得の後に前記情報処理装置を再起動し、前記メモリ領域に対応するハッシュ値を算出することを特徴とする請求項2に記載の情報処理装置。
  5. 前記改竄検知手段が算出したハッシュ値を暗号化してから前記メモリ領域とは異なる別メモリ領域に登録する登録手段を更に備えることを特徴とする請求項2乃至4の何れか1項に記載の情報処理装置。
  6. 前記改竄検知手段は、
    前記メモリ領域に対応するハッシュ値と、前記別メモリ領域に登録されているハッシュ値の復号結果と、が一致しているか否かを判断し、一致していないと判断した場合には、前記メモリ領域に対する改竄が行われたことを報知することを特徴とする請求項5に記載の情報処理装置。
  7. 前記メモリ領域は前記システムファイルを保持するパーティションであることを特徴とする請求項1乃至の何れか1項に記載の情報処理装置。
  8. 情報処理装置が行う情報処理方法であって、
    前記情報処理装置の設定手段が、前記情報処理装置のシステムファイルを保持するメモリ領域に対する改竄検知を行うのか、前記システムファイルに対する改竄検知を行うのか、を設定する設定工程と、
    前記情報処理装置の改竄検知手段が、前記設定工程による設定に応じて、前記メモリ領域に対する改竄検知若しくは前記システムファイルに対する改竄検知を行う改竄検知工程と
    を備え
    前記改竄検知工程で前記システムファイルに対する改竄検知に要した時間が、前記メモリ領域に対する改竄検知に要する時間として予め定められた時間を超えた場合には、前記設定工程では、前記メモリ領域に対する改竄検知を行う、と設定する
    ことを特徴とする情報処理方法。
  9. コンピュータを、請求項1乃至の何れか1項に記載の情報処理装置の各手段として機能させるためのコンピュータプログラム。
JP2014029967A 2014-02-19 2014-02-19 情報処理装置、情報処理方法 Active JP6399763B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014029967A JP6399763B2 (ja) 2014-02-19 2014-02-19 情報処理装置、情報処理方法
US14/615,861 US9576132B2 (en) 2014-02-19 2015-02-06 Information processing apparatus and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014029967A JP6399763B2 (ja) 2014-02-19 2014-02-19 情報処理装置、情報処理方法

Publications (3)

Publication Number Publication Date
JP2015156055A JP2015156055A (ja) 2015-08-27
JP2015156055A5 JP2015156055A5 (ja) 2017-03-16
JP6399763B2 true JP6399763B2 (ja) 2018-10-03

Family

ID=53798359

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014029967A Active JP6399763B2 (ja) 2014-02-19 2014-02-19 情報処理装置、情報処理方法

Country Status (2)

Country Link
US (1) US9576132B2 (ja)
JP (1) JP6399763B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10216456B2 (en) * 2016-07-22 2019-02-26 International Business Machines Corporation Estimating mount time completion in file systems
CN106945414B (zh) * 2017-03-24 2018-11-16 杭州旗捷科技有限公司 一种防破解芯片、***及其使用方法
JP6942601B2 (ja) * 2017-10-18 2021-09-29 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
JP7100502B2 (ja) * 2018-06-13 2022-07-13 キヤノン株式会社 情報処理装置とその制御方法、及びプログラム
JP7171339B2 (ja) * 2018-09-26 2022-11-15 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及び、プログラム
JP7321795B2 (ja) * 2019-06-27 2023-08-07 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
AU2019464433B2 (en) * 2019-09-03 2023-04-20 Nippon Telegraph And Telephone Corporation Verification device, verification system, verification method, and verification program
JP7367471B2 (ja) * 2019-11-07 2023-10-24 株式会社リコー 情報処理装置、ファイル保証方法、及びファイル保証プログラム
JP7316204B2 (ja) 2019-12-16 2023-07-27 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびファイルアクセス方法
JP7321917B2 (ja) * 2019-12-16 2023-08-07 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびファイルアクセス方法
JP7271410B2 (ja) 2019-12-16 2023-05-11 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびファイル記録方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004206394A (ja) 2002-12-25 2004-07-22 Nippon Yunishisu Kk ネットワークセキュリティ装置のオペレーティングシステムの起動方法、および、ネットワークセキュリティ装置
US20100062844A1 (en) * 2003-03-05 2010-03-11 Bally Gaming, Inc. Authentication and validation systems for gaming devices
JP5116325B2 (ja) * 2007-03-15 2013-01-09 株式会社リコー 情報処理装置、ソフトウェア更新方法及び画像処理装置
JP4991592B2 (ja) * 2008-02-18 2012-08-01 株式会社リコー ソフトウェア改ざん検知方法、ソフトウェア改ざん検知プログラム及び機器
JP5369502B2 (ja) * 2008-06-04 2013-12-18 株式会社リコー 機器、管理装置、機器管理システム、及びプログラム

Also Published As

Publication number Publication date
JP2015156055A (ja) 2015-08-27
US9576132B2 (en) 2017-02-21
US20150235028A1 (en) 2015-08-20

Similar Documents

Publication Publication Date Title
JP6399763B2 (ja) 情報処理装置、情報処理方法
JP6226709B2 (ja) 画像形成装置及びその制御方法、並びにプログラム
EP2907068B1 (en) System on chip to perform a secure boot
JP6595822B2 (ja) 情報処理装置及びその制御方法
CN109684849B (zh) 信息处理装置、其控制方法和存储介质
JP5369502B2 (ja) 機器、管理装置、機器管理システム、及びプログラム
JP6067449B2 (ja) 情報処理装置、情報処理プログラム
US20110321172A1 (en) Management apparatus, license management server, electronic equipment, electronic equipment management system, management method, program, and recording medium
US9665720B2 (en) Image forming apparatus that performs update of firmware, and control method therefor
KR20180015076A (ko) 정보 처리장치와 그 제어방법, 및 기억매체
CN112114842A (zh) 信息处理装置及其控制方法和储存介质
JP5255991B2 (ja) 情報処理装置、及びコンピュータプログラム
US9547487B2 (en) Image forming apparatus, control method therefor, and control program therefor
JP5309709B2 (ja) ソフトウェア改ざん検知方法及び機器
JP2009152878A (ja) 画像処理装置及びデータ消去方法
JP2023101738A (ja) 情報処理装置、情報処理方法およびプログラム
JP5617981B2 (ja) 機器、管理装置、機器管理システム、及びプログラム
JP6147240B2 (ja) 情報処理装置、該装置の制御方法、並びにプログラム
JP5961059B2 (ja) 情報処理装置およびその起動方法
KR102467636B1 (ko) 정보 처리장치, 정보 처리장치의 제어방법, 및 기억매체
JP4928795B2 (ja) 情報記録装置、画像形成装置、情報記録方法及び情報記録プログラム
JP2012160851A (ja) 画像形成装置
US11971991B2 (en) Information processing apparatus, control method for controlling the same and storage medium
JP2022157950A (ja) 画像形成装置
JP2023124500A (ja) 情報処理装置、情報処理装置の制御方法およびプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170210

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180528

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180718

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180904

R151 Written notification of patent or utility model registration

Ref document number: 6399763

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151