JP6436794B2 - 情報処理装置、その制御方法及びプログラム - Google Patents

情報処理装置、その制御方法及びプログラム Download PDF

Info

Publication number
JP6436794B2
JP6436794B2 JP2015013531A JP2015013531A JP6436794B2 JP 6436794 B2 JP6436794 B2 JP 6436794B2 JP 2015013531 A JP2015013531 A JP 2015013531A JP 2015013531 A JP2015013531 A JP 2015013531A JP 6436794 B2 JP6436794 B2 JP 6436794B2
Authority
JP
Japan
Prior art keywords
data
signature
program
sub cpu
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
JP2015013531A
Other languages
English (en)
Other versions
JP2016139262A (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 JP2015013531A priority Critical patent/JP6436794B2/ja
Publication of JP2016139262A publication Critical patent/JP2016139262A/ja
Application granted granted Critical
Publication of JP6436794B2 publication Critical patent/JP6436794B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、情報処理装置、その制御方法及びプログラムに関する。
特許文献1には、複数のCPUを有するマルチCPUにおいて、各々のCPUのプログラムを更新する技術が提案されている。具体的には、プログラム更新用データの中に、CPU識別子を含むデータを含めて対称鍵暗号によって暗号化し、MAC認証値を付加した当該暗号化データがマルチCPUへ送出される。マルチCPUでは、秘密鍵を用いて復号化・検証した上で、各CPUのプログラム更新作業が行われる。
特開2006−178544号公報
しかしながら、上記従来技術には以下に記載する問題がある。上記従来技術では、プログラム更新用データの純正性を確認するために、送信先のCPUの内部に格納された秘密鍵と、対称アルゴリズム暗号を用いた確認方法が用いられている。したがって、送信先のCPUに格納された秘密鍵と認証アルゴリズムをリバースエンジニアリング等によって読み出すことによって、秘密鍵と認証アルゴリズムを暴露することが可能である。悪意ある第三者は暴露した秘密鍵と認証アルゴリズムを用いて、改竄したプログラム更新用データを作成してマルチCPUシステムに送信し、マルチCPUシステムを誤動作させることができ、セキュリティ上の懸念があった。
一般的には、データの純正性を確認する能力を向上させるためには、例えばRSA−PSS等を使った署名技術を用いた方法がある。この方法は、予めシステムには存在しないRSA秘密鍵と純正性を確認する対象データを入力して作成したデジタル署名とを対にしてシステムに送る。その後、システム内に格納した公開鍵を用いて署名を検証し、署名対象データの純正性を確認する上で検証した署名を用いる方法である。しかし、この方法では、以下の問題がある。
1.全てのデータをマルチCPUが受け取った後でないとデータの純正性を確認できない。
2.全てのデータをバッファリングするRAMが無い場合には、プログラム更新用データを送信する以前にプログラム更新用データを送信するCPU指定値を検証するためにCPU指定値だけについての署名が必要となる。
このような問題により、マルチCPUシステムのハードウェア又はファームウェアが肥大化してしまう。
本発明は、上述の問題に鑑みて成されたものであり、プログラム更新機能を有するマルチCPUシステムにおいて、プログラム更新用データのサイズの増大を抑制しつつ、不正なプログラム更新用データの不揮発メモリへの更新を防止する仕組みを提供することを目的とする。
本発明は、メインCPUと複数のサブCPUとを含むマルチCPUシステムの情報処理装置であって、前記メインCPUは、前記複数のサブCPUのうちの第1サブCPUへ、前記複数のサブCPUのうちの少なくとも1つのサブCPUのプログラムを更新するプログラム更新用データを一部分ずつ順次送信する送信手段を備え、前記第1サブCPUは、前記送信手段によって送信される前記プログラム更新用データの一部である署名データを受信すると、当該署名データを復号化して、更新するプログラムの本文データの一部を含む署名元データを取得する取得手段と、
前記取得手段によって取得した署名元データに含まれるCPU指定識別子が示すサブCPUが前記第1サブCPUとは異なる第2サブCPUであれば、該第2サブCPUへ、前記プログラム更新用データのうち前記署名データ以降のデータであって、前記本文データの他の部分を含む該データを認証しつつ転送する転送手段とを備えることを特徴とする。
また、本発明は、例えば、第1層制御部と第2層制御部と第3層制御部とを含む情報処理装置であって、前記第1層制御部は、前記第2層制御部へ、前記第2層制御部及び前記第3層制御部のうちの少なくとも1つのプログラムを更新するプログラム更新用データを一部分ずつ順次送信する送信手段を備え、前記第2層制御部は、前記送信手段によって送信される前記プログラム更新用データの一部である署名データを受信すると、当該署名データを復号化して、更新するプログラムの本文データの一部を含む署名元データを取得する取得手段と、前記取得手段によって取得した署名元データに含まれる識別子が前記第3層制御部であれば、該第3層制御部へ、前記プログラム更新用データのうち前記署名データ以降のデータであって、前記本文データの他の部分を含む該データを認証しつつ転送する転送手段とを備えることを特徴とする。
本発明は、複数の制御手段を含む情報処理装置であって、第1の制御手段は、複数の制御手段のうち少なくとも1つの制御手段のプログラムを更新するプログラム更新用データを受信する第1の受信手段と、前記プログラム更新用データから署名データを復号化して署名元データを取得し、前記署名データを認証する認証手段と、を備え、第2の制御手段は、前記第1の制御手段によって認証された前記プログラム更新用データを受信する第2の受信手段と、前記署名データを認証することなく、プログラムを更新する更新手段と、を備え、前記第1の制御手段は、前記取得した署名元データを不揮発メモリに格納する格納手段をさらに備え、前記第2の受信手段は、前記更新手段によって、受信した前記プログラム更新用データのうち前記署名データ以降のデータの更新が正常に終了すると、さらに、前記不揮発メモリに格納された前記署名元データに含まれる、更新するプログラムの本文データの一部を前記第1の制御手段から受信する。
本発明によれば、プログラム更新機能を有するマルチCPUシステムにおいて、プログラム更新用データのサイズの増大を抑制しつつ、不正なプログラム更新用データの不揮発メモリへの更新を防止することができる。
第1の実施形態に係る情報処理装置のブロック図。 第1の実施形態に係るサブCPUの不揮発メモリ内ブロック図。 第1の実施形態に係るプログラム更新用データの構造図。 第1の実施形態に係るプログラム更新作業フローチャート。 第2の実施形態に係るプログラム更新用データの構造図。 第2の実施形態に係るプログラム更新作業フローチャート。
以下、添付図面を参照して本発明の実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
<第1の実施形態>
<情報処理装置の構成>
以下では、図1乃至図4を参照して、本発明の第1の実施形態について説明する。まず、図1を参照して、本実施形態に係るプログラム更新機能を有する情報処理装置の構成について説明する。本情報処理装置は、マルチCPUシステムを有する。
101はプログラム更新用データ出力装置である。102はプログラム更新用データ出力装置101に接続されたプログラム更新機能を有するマルチCPUシステムのコントローラCPUボード102である。103はプログラム更新機能を有するマルチCPUシステムにおけるサブCPUボードシステム103である。サブCPUボードシステム103には、サブCPUボード104と、サブCPUボード105とが含まれて構成される。
サブCPUボード104は、シリアル通信制御部A112によってコントローラCPUボード102のシリアル通信制御部108に接続され、サブCPUボード105とシリアル通信制御部B111によって接続されるサブCPUボードである。サブCPUボード104は、サブCPU109、RAM110、シリアル通信制御部111、シリアル通信制御部112、不揮発メモリ113、及び署名検証処理部114を備える。不揮発メモリ113は、サブCPU109とサブCPU109の制御プログラムとを格納する。RAM110は、サブCPU109が処理を行う際に使用される。署名検証処理部114は、プログラム更新用データに含まれる署名の検証処理を行う。シリアル通信制御部B111は、サブCPUボード105と通信を行う。
サブCPUボード105は、シリアル通信制御部117によってサブCPUボード104のシリアル通信制御部B111に接続されたサブCPUボードである。サブCPUボード105は、サブCPU115、RAM116、シリアル通信制御部117、及び不揮発メモリ118を備える。不揮発メモリ118は、サブCPU115の制御プログラムを格納する。RAM116は、サブCPU115が処理を行う際に使用される。
<不揮発メモリの内容>
次に、図2を参照して、本実施形態のプログラム更新機能を有するマルチCPUシステムにおけるサブCPU用の制御プログラムを格納する不揮発メモリ113、118の内容について説明する。
不揮発メモリ113は、書き換え可能なブロック202と、書き換え不可能なブロック203とに分けて使用される。不揮発メモリ113の書き換え可能なブロック202には、サブCPU109用の動作プログラム204が格納される。また、不揮発メモリ113の書き換え不可能なブロック203には、CPU指定チェック番号206と、RSA公開鍵207と、復号用対称鍵208と、運用プログラム209とが格納されている。CPU指定チェック番号206は、サブCPU109用に割り振られる固有の識別子である。RSA公開鍵207は、署名を検証するための鍵データである。復号用対称鍵208は、サブCPU109向けの鍵データである。運用プログラム209は、プログラム更新作業を実施するための制御プログラムである。
不揮発メモリ118は、書き換え可能なブロック212と書き換え不可能なブロック213とに分けられる。不揮発メモリ118の書き換え可能なブロック212には、サブCPU115用の動作プログラム214が格納される。不揮発メモリ118の書き換え不可能なブロック213には、サブCPU115用に割り振られたCPU指定チェック番号215と、サブCPU115向けの復号用対称鍵216と、プログラム更新作業を実施するための運用プログラム217とが格納される。
<プログラム更新用データ>
次に、図3を参照して、本実施形態に係るプログラム更新用データのデータ構造について説明する。301はプログラム更新用データである。プログラム更新用データ301は、署名データ302と、本文復号データ生成用のデータ(初期ベクタ)303とを含む。さらに、プログラム更新用データ301は、プログラム更新用データを送信するサブCPUの書き換え不可能なブロックに格納された、プログラム更新用本文データ(1〜N−m)304〜305を含む。プログラム更新用本文データ(1〜N−m)304〜305は、対応するサブCPUの復号用対称鍵データと同じ暗号鍵で暗号化されている。mについては後で説明する。
311は、署名データ302を作成する際に用いられたデータであり、署名データ302を復号化すると得られる署名元データである。署名元データ311は、サブCPU109の不揮発メモリ113の書き換え不可能なブロック203に格納された公開鍵207と対になる秘密鍵と共に、ISO9796−2署名アルゴリズムで生成される。署名元データ311には、CPU指定識別子312、サイズ情報313、認証値データ314、プログラム更新用本文データ(N−m+1〜N)315〜316、及び認証値データ317が含まれる。サイズ情報313は、プログラム更新用本文データのサイズ情報を示す。認証値データ314は、サブCPU109がサブCPU115に送信するデータ303,304,305,315,316,317を検証するためのデータである。プログラム更新用本文データ(N−m+1〜N)315〜316は、プログラム更新用本文データN−m305をサブCPU115に送信した後に、サブCPU115に送信されるデータである。認証値データ317は、サブCPUがプログラム更新用データの正しさを認証するためのデータである。
認証値データ314、317は、必要な検証安全レベルに応じてHASH、CBCモードの暗号MAC、CRC、チェックサム等を用いる。ISO9796−2署名は、暗号化に用いるRSA鍵長、ハッシュ関数、ソルト長、又はトレイル長によって復元可能な元データの長さが決まる。mは署名元データ311が復元可能な元データサイズ以下になるような0以上の整数として定義することができ、mを大きくすることでプログラム更新用データ301のデータサイズを小さくすることができる。
<更新手順>
次に、図4を参照して、本実施形態のプログラム更新機能を有するマルチCPUシステムの処理手順について説明する。マルチCPUシステムのプログラム更新は、プログラム更新用データ301をプログラム更新用データ出力装置101からコントローラCPU(メインCPU)106に送信することによって開始される。
コントローラCPU(メインCPU、第1層制御部)106は、プログラム更新用データ出力装置101の送信した、プログラム更新用データ301を通信制御部107によって受信する。プログラム更新用データ301を受信すると、S401で、コントローラCPU106は、サブCPU109(第2層制御部)にCPU指定チェック番号を指定した、更新作業の開始コマンドをシリアル通信で送信する。このCPU指定チェック番号は、プログラム更新用データ301の最初に、更に平文でデータを追加することで定義可能である。サブCPU109は、指示されたCPU指定チェック番号を記憶する。S402で、コントローラCPU106は、サブCPU109にプログラム更新用データ301を一部分ずつシリアル通信制御部108を使って順次送信する。
サブCPU109は、予め定められたデータ長だけプログラム更新用データ301を受信してメモリ110に格納する。ここでは、署名データ302が受信される。署名データ302は、図3に示すように、プログラム更新用データ301の先頭のデータ部分である。即ち、ここでは、サブCPU109は、まずプログラム更新用データ301の中の署名データ302の部分のみを受信することになる。その後、S403で、サブCPU109は、取得手段として機能する署名検証処理部114に公開鍵207と署名データ302とを入力して、署名データ302の検証と、署名元データ311の復元・取得を行う。ここで、公開鍵207は、サブCPU109が含まれるサブCPUボード104に備えられた不揮発メモリ113に予め格納されている。復元された署名元データ311は、不揮発メモリ113へ格納される。
続いて、S404で、サブCPU109は、署名元データ311に含まれるCPU指定識別子312から更新対象のサブCPUを特定する。具体的には、サブCPU109は、S401で受信したCPU指定チェック番号と、署名元データ311の中のCPU指定識別子312とを比較する。比較の結果、一致しない場合にはS414に進み、サブCPU109は、コントローラCPU106にエラーを報知することにより、マルチCPUシステムのプログラム更新作業をエラー終了させる。
S404の比較の結果、一致していればS405に進み、サブCPU109は、CPU指定識別子312に一致するサブCPUがシステム内に存在するか否かを判定する。存在しない場合にはS414に進み、サブCPU109は、コントローラCPU106にエラーを報知することにより、マルチCPUシステムのプログラム更新作業をエラー終了させる。
S405の存在確認に成功した場合にはS406に進み、サブCPU109は、コントローラCPU106からのプログラム更新用データ301、即ち署名データ以降のデータの受信を継続する。即ち、プログラム更新用データ301に含まれる本文復号データ生成用データ302、プログラム更新用本文データ304〜305の受信を継続する。例えば、サブCPU115(第3層制御部)のCPU指定識別子がCPU指定識別子312と一致する場合には、S406で、サブCPU109は、プログラム更新用データを受信するたびに、当該データをサブCPU115へ転送する。なお、サブCPU109が指定されている場合は、当該データをサブCPU115へ転送する代わりに、自身の不揮発メモリ113へのプログラム更新作業へ移行することとなる。さらに、サブCPU109は、送信データに対して認証計算を繰り返し行う。即ち、サブCPU109は、これらの受信データをRAM110等に一旦全てのデータを格納して検証する必要がなく、受信した順にデータを都度使用することができ、メモリ資源を節約することができる。この認証計算はSHA−256などのHASH計算であってもよい。また、プログラム更新用データ301の署名元データ311の中に格納される認証値データ314と同一のアルゴリズムで計算される必要がある。
次に、S407で、サブCPU115は、プログラム更新用本文データを受信するたびに、不揮発メモリ118内の書き換え不可能なブロック213に格納されたデータを用いて、平文のプログラム更新用本文データ(1〜N−m)を算出する。ブロック213に格納されたデータとは、復号用の対称鍵216と、本文復号データ生成用データ303、及びプログラム更新用本文データ(1〜N−m)304〜305を含む。さらに、サブCPU115は、データを算出するたびに、動作制御プログラムを格納する不揮発メモリ118の中の書き換え可能ブロック212に書き込みを行い、動作プログラム214を取得(復号化)する。つまり、本実施形態によれば、サブCPU115においても、一旦全てのデータをRAM116等へ格納して、全てのデータを受信した後に検証する必要が無く、受信した順に所定の領域(不揮発メモリ118)へ書込みを行うことができる。よって、メモリ資源を節約することができる。
S408で、サブCPU109は、プログラム更新用本文データN−m305まで送信し終わったか否かを判定する。終わった場合はS409に進み、サブCPU109は、S403で取得した署名元データ311に格納された、プログラム更新用本文データ(N−m+1〜N)315〜316と、認証値データ317とを認証計算に追加し、最終的な認証計算値を取得する。続いて、S410で、サブCPU109は、最終的な認証チェック値と、S403で取得した署名元データ311に格納されている、サブCPU109用の認証値データ314とを比較してサブCPU115に送信するデータの認証を行う。認証チェック値と認証値データ314とが一致しない場合はS414に進み、サブCPU109は、コントローラCPU106にエラーを報知して、マルチCPUシステムのプログラム更新作業をエラー終了させる。一方、認証チェック値と認証値データ314とが一致する場合はS411に進み、サブCPU109は、S403で取得した署名元データ311に含まれる、残りのプログラム更新用本文データ(N−m+1〜N)315〜316をサブCPU115に送信する。
その後、サブCPU115は、残りのプログラム更新用本文データを受信するたびに、不揮発メモリ118内の書き換え不可能なブロック213に格納された、復号用の対称鍵217を用いて、平文のプログラム更新用本文データを算出する。さらに、サブCPU115は、データを算出するたびに、不揮発メモリ118の中の書き換え可能ブロック212に算出したデータを書き込み、動作プログラム214を取得(復号化)する。
次に、S412で、サブCPU115は、全てのプログラム更新用本文データを受信すると、受信した認証値データ317を用いて、受信したデータ又は不揮発メモリ118の書き換え可能なブロック213に書き込んだプログラム更新用データを認証する。さらに、サブCPU115は、認証に成功したか否かを判定する。認証に成功するとS413に進み、サブCPU115は、プログラム更新作業を正常終了させる。
一方、認証に失敗した場合にはS414に進み、サブCPU115は、プログラム更新作業をエラー終了させる。この場合、プログラム更新作業をエラー終了させるために、一部のプログラム更新用データを実際には不揮発メモリ118に書き込まず、RAM116にバッファしておいて、その後に認証が成功した場合に不揮発メモリ118に書き込んでもよい。最後に、サブCPU109は、コントローラCPU106に書き込み結果を報知して、マルチCPUシステムのプログラム更新作業は終了する。
上述したように、本実施形態によれば、マルチCPUシステム内で署名処理を行うために必要な記憶メモリは、署名データとプログラム更新用データを一度に記憶するだけの量ではなく、署名データを処理・記憶する分だけである。したがって、マルチCPUシステムの必要なメモリ容量の増大を防ぐことができる。また、mを大きくとることによって、プログラム更新用データの増大も防ぐことができる。また、プログラム更新用データに対して小さなRAMしか持てないマルチCPUシステムにおいても、データの増大を抑制することができ、本発明を適用することができる。さらに、1つの署名検証処理部しか持たずに、プログラム更新作業を行うCPU指定データとプログラム更新用データの純正性を非対称鍵を用いた安全性の高い署名アルゴリズムを用いてプログラム更新作業を行うことができる。なお、当該署名アルゴリズムによって署名されるデータはプログラム更新に必要なデータの一部であるため、処理負荷を低下させメモリ資源を効率的に使用することができる。なお、必要なデータのうちの他の部分については、上記署名アルゴリズムは用いられないものの、それらのデータのみでは意味のないデータとなってしまうため、プログラム更新用データの全体に対しての安全性を確保することができる。
以上説明したように、本実施形態によれば、マルチCPUシステムやプログラム更新用データを確保するための記憶領域の増大を抑制することができる。さらに、プログラム更新機能を有するマルチCPUシステムにおいて、プログラム更新用データをマルチCPUシステムによって認証することができる。不正であれば更新作業を行わず、プログラム更新機能を有するマルチCPUシステムの信頼性についての問題点を解決し、不正なプログラム更新用データによる不揮発メモリの更新を防止し、誤動作を防ぐことのできるマルチCPUシステムを構築しうる。
また、本実施形態によれば、プログラム更新用データのデータ長を低減することができ、たくさんの小さなサブCPUを含むマルチCPUシステムであってもデータ長の増加を抑制することができる。さらに、本実施形態に係る情報処理装置は、プログラム更新作業を行う各々のサブCPUで署名検証を行う場合であっても、署名検証を行うサブCPUの数だけ署名検証器を必要とすることなく署名検証を実施することができる。
<第2の実施形態>
以下では、図5及び図6を参照して、本発明の第2の実施形態について説明する。本発明の第2の実施形態は、複数のサブCPUに対して同時にプログラム更新作業を行う場合について説明する。図1に示すマルチCPUシステムと、図2に示す不揮発メモリ113,不揮発メモリ118の内容については本実施形態も同様であるため説明を省略する。
<プログラム更新用データ>
まず、図5を参照して、本実施形態のプログラム更新用データのデータ構造について説明する。501はプログラム更新用データである。プログラム更新用データ501は、署名データ502とサブCPU1用本文復号データ生成用のデータ(初期ベクタ)503と、サブCPU1用プログラム更新用本文データ(1〜N−m)504〜505とを含む。さらに、プログラム更新用データ501は、サブCPU2用本文復号データ生成用データ(初期ベクタ)506と、サブCPU1用プログラム更新用本文データ(1〜L−k)507〜508とを含む。
サブCPU1用プログラム更新用本文データ(1〜N−m)504〜505は、サブCPU109の書き換え不可能なブロック203に格納され、復号用対称鍵208と同じ暗号鍵で暗号化されている。サブCPU1用プログラム更新用本文データ(1〜L−k)507〜508は、サブCPU2の書き換え不可能なブロック213に格納され、復号用対称鍵データ216と同じ暗号鍵で暗号化されている。mとkについては後で説明する。
511は、署名データ502を作成する際に用いられたデータであり、署名データ502を復号化すると得られる署名元データである。署名元データ511は、サブCPU109の不揮発メモリ113内の書き換え不可能なブロック203に格納された公開鍵207と対になる秘密鍵と共にISO9796−2署名アルゴリズムに入力されデータである。署名元データ511には、CPU指定識別子512、プログラム更新用本文データのサイズ情報513と、サブCPU109がプログラム更新に利用するデータ503〜505,515〜517とが含まれる。さらに、署名元データ511には、サブCPU115に送信するデータ506〜508,518〜520の認証値データ514と、サブCPU1用プログラム更新用本文データ(N−m+1〜N)515〜516と、サブCPU1用認証データ517とが含まれる。サブCPU1用プログラム更新用本文データ(N−m+1〜N)515〜516は、サブCPU109がサブCPU1用プログラム更新用本文データN−mを用いてプログラム更新作業を行った後に使用される。サブCPU1用認証データ517は、サブCPU109がサブCPU1のプログラム更新作業を認証するためのデータである。
さらに、署名元データ511には、サブCPU2用プログラム更新用本文データ(L−k+1〜L)518〜519と、サブCPU2がプログラム更新用データを認証するためのサブCPU2用認証値データ520とが含まれる。サブCPU2用プログラム更新用本文データ(L−k+1〜L)518〜519は、サブCPU109がサブCPU2プログラム更新用データL−k508をサブCPU115に送信した後に、サブCPU115へ送信される。複数のCPUを指定する際のCPU指定識別子512は、”01+02”等のアスキー文字による接続等で指定することが可能である。また、その場合のサイズ情報513も”65536+2048”等のアスキー文字による接続等で指定することが可能である。
認証値データ1及び認証値データ2は、必要な検証安全性レベルに応じてHASH、CBCモードの暗号MAC、CRC、チェックサム等を用い、またサブCPU毎に個別の認証アルゴリズムを用いてもよい。ISO9796−2署名は、データ長が暗号化に用いるRSA鍵長、ハッシュ関数、ソルト長、トレイル長によって復元可能な元データの長さが決まる。つまり、署名元データ311のデータ長は、メッセージ復元型の署名を復元可能なデータ長以下となる。mとkは署名元データ511が復元可能な元データサイズ以下になるような0以上の整数として定義することができ、m+kを大きくすることでプログラム更新用データ501のデータサイズを小さくすることができる。また、一度にプログラム更新するサブCPUの種類が増えてしまった場合には、m=k=0として、各々のサブCPUに対する認証値データ2を短くすることで、多くのサブCPUのプログラム更新作業を一度に行うことができる。
<更新手順>
次に、図6を参照して、本実施形態のプログラム更新機能を有するマルチCPUシステムの更新手順について説明する。マルチCPUシステムのプログラム更新は、プログラム更新用データ501をプログラム更新用データ出力装置101からコントローラCPU106に送信することによって開始される。
コントローラCPU106は、プログラム更新用データ出力装置101の送信した、プログラム更新用データ501を通信制御部107によって受信する。プログラム更新用データ501を受信すると、S601で、コントローラCPU106は、サブCPU109にCPU指定チェック番号を指定した、更新作業の開始コマンドをシリアル通信制御部108によりシリアル通信で送信する。このCPU指定チェック番号は、プログラム更新用データ301の最初に、更に平文でデータを追加することで定義可能である。サブCPU109は、指定されたCPU指定チェック番号を記憶する。S602において、コントローラCPU106は、サブCPU109にプログラム更新用データ501をシリアル通信制御部108を使って送信する。
サブCPU109は、予め定められた署名のデータ長だけプログラム更新用データ501を受信してメモリ110に格納する。その後、S603で、サブCPU109は、署名検証処理部114に公開鍵207と署名データ502とを入力して、署名データ502の検証と、署名元データ511の復元・取得を行う。続いて、S604で、サブCPU109は、S601で受信したCPU指定チェック番号と、署名元データ511の中のCPU指定識別子512とを比較する。比較の結果、一致しない場合にはS620に進み、サブCPU109は、コントローラCPU106にエラーを報知することにより、マルチCPUシステムのプログラム更新作業をエラー終了させる。
S604の一致比較に成功した場合にはS605に進み、サブCPU109は、CPU指定識別子512に一致するサブCPUがシステム内に存在するか否かを判定する。存在しない場合にはS620に進み、サブCPU109は、コントローラCPU106にエラーを報知して、マルチCPUシステムのプログラム更新作業をエラー終了させる。一方、S605の存在確認に成功した場合にはS606に進み、サブCPU109は、仮にサブCPU109と、サブCPU115のCPU指定識別子がCPU指定識別子512と一致する場合には、自己のプログラム更新作業を開始する。
S606で、サブCPU109は、コントローラCPU106からのプログラム更新用データ501の受信を継続する。さらに、サブCPU109は、受信したプログラム更新用データ501のサブCPU1用本文復号データ生成用データ503と、サブCPU1用プログラム更新用本文データ(1〜N−m)504〜505とについて復号化前に認証計算を繰り返し行う。この認証計算はSHA−256などのHASH計算でよく、プログラム更新用データ501の署名元データ511の中に格納される認証値データ514と同一のアルゴリズムで計算される必要がある。
続いて、S607で、サブCPU109は、書き換え不可能なブロック203に格納された復号用の対称鍵208と、受信したサブCPU1用本文復号データ生成用データ503とを用いてデータの復号化を行う。具体的には、サブCPU109は、平文のサブCPU1用プログラム更新用本文データ(1〜N−m)504〜505を復号化し、不揮発メモリ113の中の書き換え可能ブロック202に書き込みを行い動作プログラム204にする。
S608で、サブCPU109は、プログラム更新用本文データN−m505まで送信し終わったか否かを判定する。終了していればS609に進み、サブCPU109は、コントローラCPU106から受信したプログラム更新用データをサブCPU115へ送信し、送信するデータに対して認証値計算を行う。ここで、サブCPU109は、サブCPU2用本文復号データ生成用データ506以降の部分から、データを受信する都度サブCPU115へ送信する。
S610で、サブCPU115は、プログラム更新用本文データを受信する度に、平文のサブCPU2用プログラム更新用本文データ(1〜L−k)を算出する。その際、サブCPU115は、書き換え不可能なブロック213に格納された、復号用の対称鍵216と、サブCPU2用本文復号データ生成用データ506と、サブCPU2用プログラム更新用本文データ(1〜L−k)507〜508とを用いる。さらに、サブCPU115は、算出したデータを、不揮発メモリ118の中の書き換え可能ブロック212に書き込むことにより、動作プログラム214にする。
次に、S611で、サブCPU109は、プログラム更新用本文データL−k508まで送信したか否かを判定する。送信が終了するとS612に進み、サブCPU115は、S603で取得した署名元データ511に格納された、プログラム更新用本文データ(N−m+1〜L)515〜519と、サブCPU2用認証データ520とを認証計算し最終的な認証計算値を取得する。
続いて、S613で、サブCPU109は、最終的な認証チェック値と、S603で取得した署名元データ511に格納された、サブCPU109用の認証データ514とを比較してプログラム更新用データの認証を行う。認証チェック値と認証データ514が一致しない場合にはS620に進み、サブCPU109は、コントローラCPU106にエラーを報知して、マルチCPUシステムのプログラム更新作業をエラー終了させる。
一方、認証チェック値と認証データ514が一致する場合にはS614に進み、サブCPU109は、S603で取得した署名元データ511に格納されたデータをサブCPU115に送信する。具体的には、残りのサブCPU2用のプログラム更新用本文データ(L−k+1〜L)518〜519と、サブCPU2用認証値データ520とをサブCPU115に送信する。サブCPU115は、プログラム更新用本文データを受信する度に、不揮発メモリ118内の書き換え不可能なブロック213に格納された、復号用の対称鍵217を用いて、平文のプログラム更新用本文データを算出する。算出する度に、サブCPU115は、不揮発メモリ118の中の書き換え可能ブロック212に書き込みを行い動作プログラム214にする。
S615で、サブCPU115は、全てのサブCPU2用プログラム更新用本文データを受信すると、受信した認証値データ520を用いて、受信したデータ又は不揮発メモリ118の書き換え可能なブロック213に書き込んだ動作プログラム214を認証する。認証に成功した場合にはS616に進み、サブCPU115は、サブCPU115のプログラム更新作業を正常終了させる。また、サブCPU115は、認証に失敗した場合にはプログラム更新作業をエラー終了させる。この場合、プログラム更新作業をエラー終了させるために、一部のプログラム更新用データを実際には不揮発メモリ118に書き込まず、RAM116にバッファしておいて、認証が成功した場合に不揮発メモリ118に書き込んでもよい。
次に、S617で、サブCPU109は、S603で取得した署名元データ511に格納された、残りのサブCPU115用プログラム更新用本文データ(N−m+1〜N)515〜516を、サブCPU1用復号対称鍵208を使って復号化する。さらに、サブCPU109は、不揮発メモリ113内の書き換え可能ブロック202に書き込み、動作プログラム204とする。
S618で、サブCPU109は、不揮発メモリ113の書き換え可能なブロック202に書き込んだ動作プログラム204と、サブCPU1用認証データ517とを用いて認証を実行する。認証に失敗した場合にはS620に進み、サブCPU109は、プログラム更新作業をエラー終了させる。一方、認証に成功した場合にはS619に進み、サブCPU109は、プログラム更新作業を正常終了させる。この場合、プログラム更新作業をエラー終了させるために、一部のプログラム更新用データを実際には不揮発メモリ113に書き込まず、RAM110にバッファしておいて、認証が成功した場合に不揮発メモリ113に書き込んでもよい。
最後に、S621で、サブCPU109は、コントローラCPU106に書き込み結果を報知して、マルチCPUシステムのプログラム更新作業を終了する。
以上説明したように、本実施形態によれば、マルチCPUシステム内で署名処理を行うために、最大でも署名データ分だけのデータ量を記憶する領域の増加で済み、プログラム更新用データを一度に全てバッファリングした上で署名検証を行う必要がない。よって、マルチCPUシステムのメモリの増大を防ぐことができる。また、プログラム更新用データに対して小さなRAMしか持てないマルチCPUシステムにおいても、データを大きく増大させることがない。加えて、1つの署名検証処理部しか持たずに、プログラム更新作業を行うCPU指定データとプログラム更新用データの純正性を非対称鍵を用いた安全性の高い署名アルゴリズムを用いてプログラム更新作業を行うことができる。
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
101:プログラム更新用データ出力装置、102:コントローラCPUボード、103:サブCPUシステム、104:サブCPU1ボード、105:サブCPU2ボード、106:コントローラCPU、109:サブCPU1、113:サブCPU1の不揮発メモリ1、114:署名検証処理部、115:サブCPU2、117:サブCPU2の不揮発メモリ2

Claims (22)

  1. メインCPUと複数のサブCPUとを含むマルチCPUシステムの情報処理装置であって、
    前記メインCPUは、
    前記複数のサブCPUのうちの第1サブCPUへ、前記複数のサブCPUのうちの少なくとも1つのサブCPUのプログラムを更新するプログラム更新用データを一部分ずつ順次送信する送信手段を備え、
    前記第1サブCPUは、
    前記送信手段によって送信される前記プログラム更新用データの一部である署名データを受信すると、当該署名データを復号化して、更新するプログラムの本文データの一部を含む署名元データを取得する取得手段と、
    前記取得手段によって取得した署名元データに含まれるCPU指定識別子が示すサブCPUが前記第1サブCPUとは異なる第2サブCPUであれば、該第2サブCPUへ、前記プログラム更新用データのうち前記署名データ以降のデータであって、前記本文データの他の部分を含む該データを認証しつつ転送する転送手段と
    を備えることを特徴とする情報処理装置。
  2. 前記第1サブCPUは、
    前記取得手段によって取得した署名元データを不揮発メモリに格納する格納手段をさらに備えることを特徴とする請求項1に記載の情報処理装置。
  3. 前記第2サブCPUは、
    前記転送手段によって転送されたデータを認証しつつ所定の領域へ書き込むことにより、プログラムを更新する更新手段を備え、
    前記転送手段は、前記更新手段によって、転送した前記プログラム更新用データのうち前記署名データ以降のデータの更新が正常に終了すると、さらに、前記不揮発メモリに格納した前記署名元データに含まれる前記本文データの一部を前記第2サブCPUへ転送することを特徴とする請求項2に記載の情報処理装置。
  4. 前記第1サブCPUは、
    前記CPU指定識別子が示すサブCPUが前記第1サブCPUであれば、前記プログラム更新用データのうち前記署名データ以降のデータであって、前記本文データの他の部分を含む該データを認証しつつ前記不揮発メモリへ書き込み、前記プログラム更新用データのうち前記署名データ以降のデータの更新が正常に終了すると、さらに、前記不揮発メモリに格納した前記署名元データに含まれる前記本文データの一部を前記不揮発メモリへ書き込むことにより、プログラムを更新する手段をさらに備えることを特徴とする請求項3に記載の情報処理装置。
  5. 前記第1サブCPUは、
    前記CPU指定識別子が示すサブCPUが存在しない場合は、プログラムを更新する処理をエラー終了することを特徴とする請求項1乃至4の何れか1項に記載の情報処理装置。
  6. 前記取得手段によって取得した前記署名元データには、前記プログラム更新用データのうち前記署名データ以降のデータであって、前記本文データの他の部分を含む該データを認証するための認証値が含まれることを特徴とする請求項1乃至5の何れか1項に記載の情報処理装置。
  7. 前記署名元データのデータ長は、メッセージ復元型の署名を復元可能なデータ長以下であることを特徴とする請求項1乃至6の何れか1項に記載の情報処理装置。
  8. 前記複数のサブCPUのそれぞれは、更新用の自身のプログラムを復号化するための復号対称鍵を予め記憶しており、
    前記プログラム更新用データのうち前記署名データ以降のデータであって、前記本文データの他の部分を含む該データは、対応するサブCPUの前記復号対称鍵と同じ暗号鍵で暗号化されていることを特徴とする請求項1乃至7の何れか1項に記載の情報処理装置。
  9. 前記署名データは、非対称鍵を用いるISO9796−2署名アルゴリズムによって暗号化されていることを特徴とする請求項1乃至8の何れか1項に記載の情報処理装置。
  10. 前記複数のサブCPUは、データの認証に失敗すると、プログラムを更新する処理をエラー終了することを特徴とする請求項1乃至9の何れか1項に記載の情報処理装置。
  11. メインCPUと複数のサブCPUとを含むマルチCPUシステムの情報処理装置の制御方法であって、
    前記メインCPUにおいて、
    送信手段が、前記複数のサブCPUのうちの第1サブCPUへ、前記複数のサブCPUのうちの少なくとも1つのサブCPUのプログラムを更新するプログラム更新用データを一部分ずつ順次送信する送信工程を実行し、
    前記第1サブCPUにおいて、
    取得手段が、前記送信工程で送信される前記プログラム更新用データの一部である署名データを受信すると、当該署名データを復号化して、更新するプログラムの本文データの一部を含む署名元データを取得する取得工程と、
    転送手段が、前記取得工程で取得した署名元データに含まれるCPU指定識別子が示すサブCPUが前記第1サブCPUとは異なる第2サブCPUであれば、該第2サブCPUへ、前記プログラム更新用データのうち前記署名データ以降のデータであって、前記本文データの他の部分を含む該データを認証しつつ転送する転送工程と
    を実行することを特徴とする情報処理装置の制御方法。
  12. 請求項11に記載の情報処理装置の制御方法における各工程をコンピュータに実行させるためのプログラム。
  13. 第1層制御部と第2層制御部と第3層制御部とを含む情報処理装置であって、
    前記第1層制御部は、
    前記第2層制御部へ、前記第2層制御部及び前記第3層制御部のうちの少なくとも1つのプログラムを更新するプログラム更新用データを一部分ずつ順次送信する送信手段を備え、
    前記第2層制御部は、
    前記送信手段によって送信される前記プログラム更新用データの一部である署名データを受信すると、当該署名データを復号化して、更新するプログラムの本文データの一部を含む署名元データを取得する取得手段と、
    前記取得手段によって取得した署名元データに含まれる識別子が前記第3層制御部であれば、該第3層制御部へ、前記プログラム更新用データのうち前記署名データ以降のデータであって、前記本文データの他の部分を含む該データを認証しつつ転送する転送手段と
    を備えることを特徴とする情報処理装置。
  14. 前記第2層制御部は、
    前記取得手段によって取得した署名元データを不揮発メモリに格納する格納手段をさらに備えることを特徴とする請求項13に記載の情報処理装置。
  15. 前記第3層制御部は、
    前記転送手段によって転送されたデータを認証しつつ所定の領域へ書き込むことにより、プログラムを更新する更新手段を備え、
    前記転送手段は、前記更新手段によって、転送した前記プログラム更新用データのうち前記署名データ以降のデータの更新が正常に終了すると、さらに、前記不揮発メモリに格納した前記署名元データに含まれる前記本文データの一部を前記第3層制御部へ転送することを特徴とする請求項14に記載の情報処理装置。
  16. 複数の制御手段を含む情報処理装置であって、
    第1の制御手段は、
    複数の制御手段のうち少なくとも1つの制御手段のプログラムを更新するプログラム更新用データを受信する第1の受信手段と、
    前記プログラム更新用データから署名データを復号化して署名元データを取得し、前記署名データを認証する認証手段と、を備え、
    第2の制御手段は、
    前記第1の制御手段によって認証された前記プログラム更新用データを受信する第2の受信手段と、
    前記署名データを認証することなく、プログラムを更新する更新手段と、を備え
    前記第1の制御手段は、
    前記取得した署名元データを不揮発メモリに格納する格納手段をさらに備え、
    前記第2の受信手段は、前記更新手段によって、受信した前記プログラム更新用データのうち前記署名データ以降のデータの更新が正常に終了すると、さらに、前記不揮発メモリに格納された前記署名元データに含まれる、更新するプログラムの本文データの一部を前記第1の制御手段から受信することを特徴とする情報処理装置。
  17. 前記第1の制御手段は、
    前記第1の制御手段のプログラムを更新する場合には、前記プログラム更新用データのうち前記署名データ以降のデータであって、前記本文データの他の部分を含む該データを認証しつつ前記不揮発メモリへ書き込み、前記プログラム更新用データのうち前記署名データ以降のデータの更新が正常に終了すると、さらに、前記不揮発メモリに格納した前記署名元データに含まれる前記本文データの一部を前記不揮発メモリへ書き込むことにより、プログラムを更新する手段をさらに備えることを特徴とする請求項16に記載の情報処理装置。
  18. 前記第2の受信手段によって受信した前記署名元データには、前記プログラム更新用データのうち前記署名データ以降のデータであって、前記本文データの他の部分を含む該データを認証するための認証値が含まれることを特徴とする請求項17に記載の情報処理装置。
  19. 前記署名元データのデータ長は、メッセージ復元型の署名を復元可能なデータ長以下であることを特徴とする請求項16乃至18の何れか1項に記載の情報処理装置。
  20. 前記第1の制御手段及び前記第2の制御手段のそれぞれは、更新用の自身のプログラムを復号化するための復号対称鍵を予め記憶しており、
    前記プログラム更新用データのうち前記署名データ以降のデータであって、前記本文データの他の部分を含む該データは、対応する制御手段の前記復号対称鍵と同じ暗号鍵で暗号化されていることを特徴とする請求項16に記載の情報処理装置。
  21. 複数の制御手段を含む情報処理装置の制御方法であって、
    第1の制御手段において、
    第1の受信手段が、複数の制御手段のうち少なくとも1つの制御手段のプログラムを更新するプログラム更新用データを受信する第1の受信工程と、
    認証手段が、前記プログラム更新用データから署名データを復号化して署名元データを取得し、前記署名データを認証する認証工程と、を実行し、
    第2の制御手段において、
    第2の受信手段が、前記第1の制御手段によって認証された前記プログラム更新用データを受信する第2の受信工程と、
    更新手段が、前記署名データを認証することなく、プログラムを更新する更新工程と、を実行し、
    前記第1の制御手段において、さらに、
    格納手段が、前記取得した署名元データを不揮発メモリに格納する格納工程を実行し、
    前記第2の制御手段において、さらに、
    前記第2の受信手段が、前記更新工程で、受信した前記プログラム更新用データのうち前記署名データ以降のデータの更新が正常に終了すると、さらに、前記不揮発メモリに格納された前記署名元データに含まれる、更新するプログラムの本文データの一部を前記第1の制御手段から受信する工程をさらに実行することを特徴とする情報処理装置の制御方法。
  22. 請求項21に記載の情報処理装置の制御方法における各工程をコンピュータに実行させるためのプログラム。
JP2015013531A 2015-01-27 2015-01-27 情報処理装置、その制御方法及びプログラム Active JP6436794B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015013531A JP6436794B2 (ja) 2015-01-27 2015-01-27 情報処理装置、その制御方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015013531A JP6436794B2 (ja) 2015-01-27 2015-01-27 情報処理装置、その制御方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2016139262A JP2016139262A (ja) 2016-08-04
JP6436794B2 true JP6436794B2 (ja) 2018-12-12

Family

ID=56559252

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015013531A Active JP6436794B2 (ja) 2015-01-27 2015-01-27 情報処理装置、その制御方法及びプログラム

Country Status (1)

Country Link
JP (1) JP6436794B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7243217B2 (ja) * 2019-01-25 2023-03-22 株式会社富士通ゼネラル 空気調和機及び空気調和システム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6708049B1 (en) * 1999-09-28 2004-03-16 Nellcor Puritan Bennett Incorporated Sensor with signature of data relating to sensor
JP2006163708A (ja) * 2004-12-06 2006-06-22 Canon Inc メモリ管理装置
JP4054802B2 (ja) * 2004-12-20 2008-03-05 キヤノン株式会社 データ処理装置及びそのプログラム更新方法
JP2008171041A (ja) * 2007-01-05 2008-07-24 Ricoh Co Ltd 画像形成装置、画像形成装置の起動方法、制御装置及び拡張ユニットの起動方法
JP2009064317A (ja) * 2007-09-07 2009-03-26 Canon Inc マルチcpuシステム
JP5556895B2 (ja) * 2010-10-14 2014-07-23 富士通株式会社 コンテンツデータ再生装置、更新管理方法、及び更新管理プログラム

Also Published As

Publication number Publication date
JP2016139262A (ja) 2016-08-04

Similar Documents

Publication Publication Date Title
US11218323B2 (en) Method and system for producing a secure communication channel for terminals
KR101999188B1 (ko) 비밀 공유를 위한 타원 곡선 암호를 사용하는 개인용 장치 보안
JP3999655B2 (ja) レベル化された機密保護があるアクセス制御のための方法及び装置
US8650654B2 (en) Memory device, memory system, and authentication method
US10887110B2 (en) Method for digital signing with multiple devices operating multiparty computation with a split key
CN112187544A (zh) 固件升级方法、装置、计算机设备及存储介质
US10581811B2 (en) Method and system for asymmetric key derivation
US20220216999A1 (en) Blockchain system for supporting change of plain text data included in transaction
US20170060775A1 (en) Methods and architecture for encrypting and decrypting data
US20220209946A1 (en) Key revocation for edge devices
US9182967B2 (en) Method for safely downloading application
JP6888122B2 (ja) 半導体装置、更新データ提供方法、更新データ受取方法およびプログラム
CN112400294A (zh) 来自非易失性存储器装置内的安全通信
JP6436794B2 (ja) 情報処理装置、その制御方法及びプログラム
JP6246516B2 (ja) 情報処理システム
JP7545490B2 (ja) 情報検証装置、電子制御装置、及び情報検証方法
JP6203556B2 (ja) 情報処理システム
US7971239B2 (en) Device control apparatus
JP7397403B2 (ja) 電子情報記憶媒体、認証コード生成方法、認証コード検証方法、及びプログラム
US20240086543A1 (en) Secure booting apparatus and operating method thereof
US20240249002A1 (en) Storage system including storage device and host provisioning certificate into the storage device, system including the storage system, and method of operating the system
US20240267208A1 (en) Utilization of a memory device for per-user encryption
WO2010109560A1 (ja) 半導体メモリ、当該半導体メモリと結合されるコンピュータマシン、及び、そのデータ処理方法
JP2015014839A (ja) 情報処理システム
WO2019142306A1 (ja) 半導体装置、データ提供方法、データ復号方法、およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180803

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180927

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181113

R151 Written notification of patent or utility model registration

Ref document number: 6436794

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151