JP4932033B2 - ソフトウェア更新装置、ソフトウェア更新システム、改ざん検証方法、及び改ざん検証プログラム - Google Patents
ソフトウェア更新装置、ソフトウェア更新システム、改ざん検証方法、及び改ざん検証プログラム Download PDFInfo
- Publication number
- JP4932033B2 JP4932033B2 JP2010505048A JP2010505048A JP4932033B2 JP 4932033 B2 JP4932033 B2 JP 4932033B2 JP 2010505048 A JP2010505048 A JP 2010505048A JP 2010505048 A JP2010505048 A JP 2010505048A JP 4932033 B2 JP4932033 B2 JP 4932033B2
- Authority
- JP
- Japan
- Prior art keywords
- update
- module
- protection control
- control module
- modules
- 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
Links
- 238000000034 method Methods 0.000 title claims description 303
- 238000012795 verification Methods 0.000 title claims description 131
- 230000008569 process Effects 0.000 claims description 268
- 238000003860 storage Methods 0.000 claims description 61
- 230000005540 biological transmission Effects 0.000 claims description 21
- 238000004891 communication Methods 0.000 claims description 18
- 230000004913 activation Effects 0.000 claims 1
- 238000001514 detection method Methods 0.000 description 105
- 238000012545 processing Methods 0.000 description 73
- 238000012544 monitoring process Methods 0.000 description 69
- 238000009826 distribution Methods 0.000 description 55
- 238000011084 recovery Methods 0.000 description 50
- 230000006870 function Effects 0.000 description 39
- 230000004075 alteration Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 19
- 238000013461 design Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 10
- 238000002360 preparation method Methods 0.000 description 10
- 230000004044 response Effects 0.000 description 9
- 230000000694 effects Effects 0.000 description 5
- 230000010354 integration Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 239000000470 constituent Substances 0.000 description 2
- 238000012938 design process Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000001172 regenerating effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Description
本発明は、従来よりも高確率で更新対象を正常に更新するソフトウェア更新装置を提供することを目的とする。
これにより、複数の更新モジュールの何れも不正動作をしないと検証した場合に、前記保護制御モジュールの更新が行われるので、改ざんされた更新モジュールによる更新を防止することができる。その結果、不正動作を行う更新モジュールを介して保護制御モジュールが不正な保護制御モジュールに更新されるのを防止でき、前記不正な保護制御モジュールによる前記所定のアプリケーションへの攻撃を防止できる。
これにより、複数の更新モジュールの何れかが不正動作を行う可能性があることを検証した場合であっても、不正動作を行う可能性がある更新モジュール以外の更新モジュールが前記保護制御モジュールを更新するので、複数の更新モジュールのうち一つでも正常な更新モジュールが存在すれば、保護制御モジュールの更新を行うことができる。したがって、保護制御モジュールの正常更新の確率を高めることができるので、その結果、アプリケーションが有する秘匿データが漏洩するリスクを低減することができる。
これにより、不正動作をしないことが検証された更新モジュールのうち、どの更新モジュールにより保護制御モジュールを更新するのかを秘密にできるので、保護制御モジュールの更新を担う更新モジュールが改ざんされるリスクを低減することができる。
これにより、複数の更新モジュールの何れかが不正動作を行う可能性があることを検証した場合、前記保護制御モジュールは更新されないので、改ざんされた更新モジュールによる更新を防止することができる。その結果、不正動作を行う更新モジュールを介して保護制御モジュールが不正な保護制御モジュールに更新されるのを防止でき、前記不正な保護制御モジュールによる前記所定のアプリケーションへの攻撃を防止できる。
これにより、前記受信した更新用の保護制御モジュールは、複数の暗号鍵で多重に暗号化されているので、仮に当該更新用の保護制御モジュールを取得した更新モジュールが改ざんされていたとしても、多重に暗号化された更新用の保護制御モジュールを復号することはできない。したがって、改ざんされた更新モジュールによる不正な更新を防止することができる。
ここで、前記複数の更新モジュールは、前記外部サーバに前記不正動作を行う可能性があることが検証された更新モジュールを通知し、複数の更新モジュールの何れかが不正動作を行う可能性があることが検証された場合、前記外部サーバが、前記不正動作を行う可能性があることが検証された更新モジュールに前記復号鍵を送信しないとしてもよい。
これにより、どの順序で検証結果が外部サーバに送信されるのかを攻撃者に事前に把握される危険を低減することができる。攻撃者は事前に検証結果の送信順序を把握できないので、例えば、実際に改ざんされている更新モジュールに対する検証結果を、改ざんされていない旨を示す検証結果に改ざんし、改ざんされた検証結果が外部サーバに通知されるのを防止できる。その結果、前記不正動作を行う可能性があることが検証された更新モジュールに復号鍵が送信されるのを防止できる。
これにより、前記更新用の保護制御モジュールが複数の部分保護制御モジュールに分割されているので、前記更新用の保護制御モジュールが外部に漏洩あるいは改ざんされたとしても、部分的な漏洩あるいは改ざんに留めることができる。
これにより、部分保護制御モジュールの各々が相互に異なる暗号鍵で暗号化されているので、共通の暗号鍵で暗号化されている場合と比較して、仮に一つの暗号鍵が漏洩した場合であっても他の暗号鍵が漏洩しない限り前記保護制御モジュールの復号を阻止できるので、前記保護制御モジュールの秘匿性を強化することができる。
これにより、複数の更新モジュールの何れかが不正動作を行う可能性があると検証された場合に、当該更新モジュールを更新することができるので、不正動作を行う可能性がある更新モジュールによる不正な処理を防止することができる。
これにより、例えば、アプリケーションが改ざんされている場合に当該アプリケーションを更新することができるので、アプリケーションが有する秘匿データが漏洩するリスクを低減することができる。
これにより、前記複数の更新モジュールの各々は、同期情報に基づいて前記検証を行うので、例えば、ある更新モジュールの検証後に当該更新モジュールが改ざんされることにより、改ざんが看過されるといった事態を回避でき、検証の実効性を高めることができる。また、同期情報を外部サーバから受信することにより、同期タイミングが検証前に漏洩することを回避できるので、検証後を狙った更新モジュールの改ざんを防止することができる。
これにより、前記保護制御モジュールの更新の際にも、前記複数の更新モジュールのそれぞれは、前記検証を継続して行うので、更新される保護制御モジュールの保護に万全を期すことができる。
これにより、前記複数の更新モジュールの各々は、前記保護制御モジュールが更新される際には、当該更新以前よりも高頻度で、前記検証を行うので、更新中の改ざん検証を強化することができ、更新される保護制御モジュールの保護に万全を期すことができる。
(実施の形態1)
1.ソフトウェア更新システム1000の構成
図1は、本発明の実施の形態1において、本発明に係るソフトウェア更新装置が適用されたソフトウェア更新システム1000の全体構成図である。ソフトウェア更新システム1000は、図1に示すように、機器100と更新サーバ200とから構成され、機器100は、ネットワークを介して更新サーバ200と接続されている。
機器100は、ネットワークを介して、例えば、コンテンツ配信サーバから音楽や映像等のコンテンツを購入し再生したり、金融機関のシステムにアクセスし、ネットバンキング(預金の残高照会や口座振り込み等)を行ったりするなど、ユーザに対してネットワークを利用した様々な機能を提供するデータ処理装置である。
アプリ110、111は、機器100を使用するユーザに対して、ネットワークを利用した機能を提供するソフトウェアであり、例えば、ネットワーク上のコンテンツ配信サーバ(不図示)から音楽や映像等のコンテンツを購入し、購入したコンテンツを再生するソフトウェアや、ネットワークを介して金融機関のシステム(不図示)にアクセスし、預金の残高照会や口座振り込み等のネットバンキングを行うソフトウェア等である。
保護制御モジュール120は、攻撃者によりアプリ110、111が解析され、認証鍵等の秘匿データが抜き取られないようにアプリ110、111を保護するための機能を有するモジュールである。アプリを保護するための機能としては、例えば、アプリを利用しない時には暗号化して保存しておき、アプリを利用する時にのみ復号してメモリへロードする復号ロード機能や、アプリが改ざんされていないかをチェックする改ざん検出機能、デバッガなどの解析ツールが動作していないかをチェックする解析ツール検出機能などがある。保護制御モジュール120は、これらの機能の動作を制御し、アプリ110、111を保護する。
更新モジュール群130は、複数の更新モジュール(ここでは3つ)から構成される。更新モジュール131、132、133は、機器100内部のソフトウェア(ここでは保護制御モジュール120)が改ざんされていないかを検出し、改ざんされている場合には、機器100外部の更新サーバ200から更新用のソフトウェア(保護制御モジュール121)をダウンロードし保護制御モジュールを更新する機能を持つ。
更新サーバ200は、機器100内部のソフトウェア(ここでは保護制御モジュール120)を更新するために必要な更新用のソフトウェア(保護制御モジュール121)を機器100に配布するソフトウェア配布装置である。
更新サーバ200は、更新用ソフトウェア配布モジュール210とアクセス情報取得鍵配布モジュール220とを含んで構成される。
アクセス情報取得鍵配布モジュール220は、機器100内部の更新モジュール131、132、133からのアクセス情報取得鍵取得要求に応じて、アクセス情報取得鍵を更新モジュールへ配布するモジュールである。
なお、機器100と更新サーバ200との間のネットワークを介した通信には、通信データが暗号化されるなど、セキュリティの確保された通信路を用いてもよい。
2.更新モジュールの詳細な構成
図2は、更新モジュールの機能ブロック図である。実際には、この構成は更新モジュールの数だけ存在するが、ここでは、代表的に更新モジュール131のものだけ示す。他の更新モジュールの構成も基本的に同一構成である。同図に示すように、更新モジュール131は、監視制御部301、改ざんチェック実行部302、更新制御部303、復号部304、認証部305、署名公開鍵保持部306、検証鍵保持部307、認証鍵対保持部308、MAC値保持部309、分散情報保持部310、アクセス情報取得部311、及び無効化処理部312を含んで構成される。
また、定期的あるいは不定期に、保護制御モジュール120の改ざんチェックを実施し、改ざんを検出した場合には、更新ソフトウェア配布モジュール210及び他の更新モジュールに改ざん検出通知を送信する。その一方で、他の更新モジュールから保護制御モジュール120の改ざん検出通知を受け付けた場合には、保護制御モジュール120の改ざんチェックを実施し、チェック結果を更新用ソフトウェア配布モジュール210に送信する。
更新制御部303は、機器100内部のソフトウェア(保護制御モジュール120)の更新を制御する。具体的には、他の更新モジュールまたは更新用ソフトウェア配布モジュール210から、暗号化されている更新用の保護制御モジュール121を受け取り、更新用ソフトウェア配布モジュール210から、更新用の保護制御モジュール121の証明書(例えば、更新用の保護制御モジュール121のハッシュ値が記述されている)、及び更新用の保護制御モジュール121を復号するための復号鍵を受け取ると、当該更新用の保護制御モジュール121を復号部304に復号させ、復号された更新用の保護制御モジュール121を他の更新モジュールへ送信し、あるいは機器100内部の保護制御モジュール120を復号された更新用の保護制御モジュール121に更新する。
復号部304は、暗号化された更新用の保護制御モジュール121の復号を更新制御部303から依頼されると、更新制御部303から入力される復号鍵を用いて、暗号化された更新用の保護制御モジュール121を復号する。更新用ソフトウェア配布モジュール210から入力される復号鍵は、復号部304が保持する、更新モジュール131固有の鍵を用いて暗号化された状態あるため、復号部304は、復号鍵を使用する前に、更新モジュール131固有の鍵を用いて当該復号鍵を復号する。
署名公開鍵保持部306は、署名公開鍵を保持する。署名公開鍵は、更新モジュール131が機器100内のソフトウェア(保護制御モジュール120)の改ざんチェックを、改ざん検出用証明書を用いて行う場合に使用される。署名公開鍵と更新用ソフトウェア配布モジュール210が保持する署名秘密鍵とは、公開鍵暗号方式における鍵対になる。
認証鍵対保持部308は、認証鍵対を保持する。認証鍵対は、更新モジュール131と更新用ソフトウェア配布モジュール210とが相互認証処理を行うときに用いられる。認証鍵対は、公開鍵暗号方式における公開鍵(認証公開鍵)と秘密鍵(認証秘密鍵)との鍵対で構成される。認証公開鍵には、更新用ソフトウェア配布モジュール210が保持する署名秘密鍵を用いて生成された証明書(認証鍵証明書)が付加されている。
分散情報保持部310は、保護制御モジュール120から入力される、分散情報(share)と暗復号鍵証明書とを保持する。
3.更新用ソフトウェア配布モジュール210の詳細な構成
図3は、本発明の実施の形態1における更新用ソフトウェア配布モジュール210の機能ブロック図である。同図に示すように、更新用ソフトウェア配布モジュール210は、暗号鍵生成部401、暗号処理部402、暗号鍵保持部403、認証部404、更新判定部405、不正モジュール判定部406、更新モジュール選択部407、証明書生成部408、署名秘密鍵保持部409、及び更新用ソフトウェア保持部410から構成される。
暗号処理部402は、更新用ソフトウェア保持部410から更新用の保護制御モジュール121を取得し、暗号鍵生成部401から入力される複数の暗号鍵を用いて、取得した更新用の保護制御モジュール121を多重に暗号化する。そして、暗号化された更新用の保護制御モジュール121及び複数の暗号鍵を更新モジュール選択部407に送信する。
認証部404は、更新モジュール131、132、133と相互認証の処理を行う。具体的には、更新モジュールから送信される認証鍵(公開鍵)を用いて更新モジュール131、132、133を認証し、認証結果を更新判定部405に送信する。
さらに、更新モジュール131、132、133から入力される検証結果通知に基づいて、保護制御モジュールが正しく更新されたか判定し、判定結果に応じて、保護制御モジュール120の更新終了通知を更新モジュール131、132、133に送信する。
また、正常な更新モジュールに対し、改ざんされた更新モジュールを無効化するよう指示するとともに、アクセス情報取得鍵配布モジュール220に無効化に関する情報を通知する。
署名秘密鍵保持部409は、証明書生成部408による証明書の生成に用いられる署名秘密鍵を保持する。
更新用ソフトウェア保持部410は、保護制御モジュール120が改ざんされた場合に用いられ、当該保護制御モジュールを更新するための更新用の保護制御モジュール121を保持する。ここで、更新用の保護制御モジュール121は、正常なものであることが保障されているものとし、必ずしも最新版の保護制御モジュールである必要はない。
4.保護制御モジュールの詳細な構成
図4は、本発明の実施の形態1における保護制御モジュール120の機能ブロック図である。同図に示すように、保護制御モジュール120は、制御部501、復号ロード部502、改ざん検出部503、解析ツール検出部504、暗復号鍵保持部505、暗復号鍵生成部506、暗復号鍵分散部507、証明書生成部508、及び暗復号鍵復元部509を含んで構成される。
復号ロード部502は、暗号化されて機器100内部に保持されているアプリ110、111が実行される際に、暗復号鍵保持部505に保持されている暗復号鍵を用いてアプリを復号し、メモリ上にロードする処理を行う。
さらに、後述する再暗号化処理において、暗復号鍵復元部509から入力される復元された旧暗復号鍵を用いてアプリ110、111を復号し、暗復号鍵保持部505に保持されている新たな暗復号鍵でアプリ110、111を暗号化する。
解析ツール検出部504は、攻撃者がアプリ110、111を攻撃しようとして、デバッガ等の解析ツールをインストールし動作させたときに、解析ツールの動作を検出する。検出方法としては、例えば、ファイル名を検索する方法や、デバッガが使用する特殊なレジスタが使われているかを調べる方法、デバッガが設定する割り込みを検出する方法などがある。
暗復号鍵生成部506は、暗復号鍵復元部509から暗復号鍵を復元した旨の通知を受け付けると、アプリ110、111を暗復号するための新たな暗復号鍵を生成する。生成した暗復号鍵を暗復号鍵保持部505、証明書生成部508、及び暗復号鍵分散部507に送信する。
証明書生成部508は、暗復号鍵生成部506から入力される暗復号鍵に基づいて証明書を生成し、生成した証明書を更新モジュール131、132、133に送信する。証明書は、暗復号鍵から生成される分散情報を復元する際に、正しく復元できたかの検証に使用される。
5.アクセス制御モジュール
図5は、本発明の実施の形態1におけるアクセス制御モジュール140の機能ブロック図である。同図に示すように、アクセス制御モジュール140は、通信部601と、アクセス情報保持部602とから構成される。
アクセス情報保持部602は、更新モジュール毎に当該更新モジュールを消去するためのアクセス情報を保持する。アクセス情報は、更新モジュール毎にそれぞれ個別のアクセス情報取得鍵で暗号化され、識別子(更新モジュール識別子)等により、各更新モジュールと対応付けられる。
6.アクセス情報取得鍵配布モジュール
図6は、本発明の実施の形態1におけるアクセス情報取得鍵配布モジュール220の機能ブロック図である。同図に示すように、アクセス情報取得鍵配布モジュール220は、通信部701と、アクセス情報取得鍵保持部702とから構成される。
7.機器100のハードウェア構成
続いて、機器100のハードウェア構成について説明する。図7は、機器100のハードウェア構成を示す図である。同図に示すように、機器100は、CPU(Central Processing Unit)11、不揮発メモリ(例えば、EEPROM(ElectricallyErasable and Programmable Read Only Memory))12、RAM(Random Access Memory)13、及びNIC(NetworkInterface Card)14等を含んで構成され、これらはバスを介して相互に通信可能に接続されている。
EEPROM12に格納されている制御用の各種モジュールをCPU11が実行することにより、各種モジュールの各機能部の制御は実現される。各機能部は、具体的には、コンピュータプログラムによって記述され実現される。
NICは、ネットワークに接続するための拡張カードである。
8.ソフトウェア階層
続いて、機器100におけるソフトウェア階層について説明する。図8は、機器100のソフトウェア階層を示す図である。同図に示すように、アクセス制御モジュール140及び更新モジュール群130は、OS150の中に組み込まれている。アプリ110、111はOS150上で動作し、保護制御モジュール120はブートローダ160等とともにOSの管理外にある。機器100の起動の際には、まず保護制御モジュール120及び更新モジュール群130が起動された上でアプリケーションが実行される。
9.ソフトウェア更新システム1000の動作
9.1.ソフトウェア更新システム1000の動作概略
続いて、ソフトウェア更新システム1000の動作を説明する。初めに、ソフトウェア更新システム1000の大まかな処理を説明する。大まかな処理として、以下の7つの処理がある。
2つ目の処理は、機器100内部のソフトウェア(保護制御モジュール120)が改ざんされていないかを検知する処理(検知処理)である。
4つ目の処理は、更新モジュール131、132、133と更新用ソフトウェア配布モジュール210とが互いに正しいソフトウェアであるかどうかを確認するために、相互に行う認証処理(相互認証処理)である。
6つ目の処理は、次のソフトウェア更新のための鍵データや分散情報を生成し、各更新モジュールに埋め込む処理(次ラウンド準備処理)である。
上記7つの処理のうち、無効化処理以外の6つの処理の関係は、図9に示す関係になる。無効化処理は、それぞれの処理の中で必要に応じて呼び出される。図9は、ソフトウェア更新システム1000の全体的な動作の流れを示すフローチャートである。
ユーザにより機器100が利用される際には、機器100内部では、保護制御モジュール120がアプリ110、111を攻撃者による攻撃から保護する。これと同時に、更新モジュール131、132、133が保護制御モジュール120の改ざん検出を実施し、保護制御モジュール120が攻撃されていないかをチェックする検知処理を行う(ステップS200)。
なお、上記すべての処理が必要ではなく、少なくとも外部から更新のトリガを与えられて、更新を行う処理(回復処理)があればよい。
9.2.初期設計時の動作
まず、初期化処理について説明する。図11は、初期設計時のソフトウェア更新システム1000の動作の流れを示すフローチャートである。本フローチャートにおいて、更新モジュール131、132、133の各々が個別に行う処理を、更新モジュール群としてまとめて記載している。
図11に戻って、各ソフトウェアのインストール後、機器100の初期設定を行うソフトウェアや、正常に動作するかをテストするためのソフトウェアなどを実行し、初期化処理を行い(ステップS102)、保護制御モジュール120及び更新モジュール131、132、133に初期化指示を送信する(ステップS103)。初期化指示を受信する保護制御モジュール120及び更新モジュール131、132、133でもそれぞれ初期化処理が行われる。
図12は、更新モジュール初期化処理を示すフローチャートである。本図では、代表的に更新モジュール131のものだけ示す。他の更新モジュールの動作も基本的に同一である。
改ざん検出対象となる他の更新モジュール及び保護制御モジュール120の改ざん検出用証明書の検証を実施する(ステップS112)。この検証は、各モジュールからハッシュ値を生成し、生成したハッシュ値とそれぞれの改ざん検出用証明書に記述されているハッシュ値とを比較することにより行われる。
9.3.検知時の動作
続いて、検知処理について説明する。機器100は、初期化処理を終えると工場から出荷され、ユーザの元へ送られる。ユーザが機器100を使用し、アプリ110、111を利用しているときには、機器100内部では、保護制御モジュール120が復号ロード機能や改ざん検出機能、解析ツール検出機能などの機能を制御し、アプリ110、111を攻撃者による攻撃から保護する。
保護制御モジュール120が改ざんされていないと判定した場合には(ステップS202でNo)、更新用ソフトウェア配布モジュール210や他の更新モジュールへの通知を行わず、改ざん検出処理(S201)へ戻る。
更新用ソフトウェア配布モジュール210は、更新モジュール131から改ざん検出通知を(ステップS204a)、更新モジュール132、133から改ざんチェック結果をそれぞれ受信する(ステップS207)。
続いて、解析判断処理について説明する。図14、15は、解析・判断時のソフトウェア更新システム1000の動作の流れを示すフローチャートである。本フローチャートにおいて、更新モジュール131、132、133の各々が個別に行う処理を、更新モジュール群としてまとめて記載している。
保護制御モジュール120が改ざんされていると判定した場合には(ステップS301でYes)、更新用ソフトウェア配布モジュール210は、更新モジュール131、132、133に対して保護制御モジュール120のどの部分が改ざんされたかを示す改ざん情報を通知するよう依頼する(ステップS303)。
更新用ソフトウェア配布モジュール210は、更新モジュール群から改ざん情報を受信すると(ステップS307)、受信した改ざん情報を解析し(ステップS308)、解析結果に基づいて、保護制御モジュール120を無効化するか否かを判断する(ステップS309)。
保護制御モジュール120を無効化しないと判断した場合には(ステップS309でNo)、保護制御モジュール120を更新するか否かを判断する(ステップS312)。
保護制御モジュール120を更新しないと判断した場合には(ステップS312でNo)、検知処理に戻る(ステップS302)。
9.5.相互認証時の動作
続いて、相互認証処理について説明する。解析・判断処理において、保護制御モジュール120を更新する必要があると判断され、更新モジュール131、132、133へ認証処理の開始を指示した後、更新用ソフトウェア配布モジュール210と各更新モジュール131、132、133との間で、それぞれ1対1の相互認証処理が行われる。これにより、機器100が不正な更新サーバへ接続されることや、更新サーバ200が不正な機器へ接続されることを防止することができる。相互認証には、更新サーバ200は署名秘密鍵と署名公開鍵を使用し、各更新モジュール131、132、133は認証鍵対(認証秘密鍵、認証公開鍵)を使用する。
更新用ソフトウェア配布モジュール210は、各更新モジュールからチャレンジデータを受信すると(ステップS403)、受信したチャレンジデータに対し、署名秘密鍵を用いて署名生成を行い(ステップS404)、生成した署名をレスポンスデータとして、送信してきた更新モジュールへ返信する(ステップS405)。
検証した結果、レスポンスデータが送信したチャレンジデータに対する署名になっている、すなわち、更新用ソフトウェア配布モジュール210が正当なモジュールである場合には(ステップS408でYes)、処理を継続する。
次に、更新用ソフトウェア配布モジュール210がそれぞれの更新モジュール131、132、133を認証する。図17は、更新用ソフトウェア配布モジュール210がそれぞれの更新モジュール131、132、133を認証する時のソフトウェア更新システム1000の動作の流れを示すフローチャートである。本フローチャートにおいて、更新モジュール131、132、133の各々が個別に行う処理を、更新モジュール群としてまとめて記載している。
更新モジュール群は、更新用ソフトウェア配布モジュール210からチャレンジデータを受信すると(ステップS413)、受信したチャレンジデータに対し、認証秘密鍵を用いて署名生成を行い(ステップS414)、生成した署名をレスポンスデータとして更新用ソフトウェア配布モジュール210へ返信する(ステップS415)。その際、認証公開鍵と認証鍵証明書とを併せて更新用ソフトウェア配布モジュール210へ返信する(ステップS415)。
検証した結果、認証鍵証明書あるいは認証公開鍵に問題があれば(ステップS418でNo)、処理を停止する(ステップS419)。
正当なモジュールであると検証できた更新モジュールが、回復処理に必要な数を満たすと判定した場合には(ステップS421でYes)、正当なモジュールであると検証できた更新モジュールに更新処理開始指示を送信し(ステップS422)、正当なモジュールであると検証された更新モジュールは、更新処理開始指示を受信する(ステップS423)。以上で相互認証処理を終了する。
9.6.回復時の動作
続いて、回復処理について図18〜24を用いて説明する。相互認証処理において、相互認証が成功した場合には、改ざんされた保護制御モジュール120を更新用の保護制御モジュール(更新用保護制御モジュール)121へ更新する回復処理を実施する。図18は、回復処理時のソフトウェア更新システム1000の動作の流れを示すフローチャートである。回復処理は、大きく3つの処理からなる。
2つ目の処理は、更新用保護制御モジュール121を用いて保護制御モジュール120を更新する更新処理(ステップS502)である。
3つ目の処理は、暗号化されたアプリ110、111を再暗号化する再暗号化処理(ステップS503)である。
上記3つの処理について、その詳細を順に説明する。
監視処理では、更新モジュール群130内の更新モジュール131、132、133が、更新モジュール群130内の他の更新モジュールに対して改ざん検出の処理を実施する。これにより、回復処理中に一部の更新モジュールが攻撃者により改ざんされた場合にも、改ざん検出が可能となる。さらに、監視処理を定期的に実施することで、更新用保護制御モジュール121が完全に漏洩する前に改ざんを検出し、漏洩を防止することが可能となる。
まず、更新モジュール131は、更新モジュール132に対し改ざん検出処理を実施し(ステップS511a)、更新モジュール132は、更新モジュール133に対し改ざん検出処理を実施し(ステップS511b)、更新モジュール133は、更新モジュール131に対し改ざん検出処理を実施する(ステップS511c)。改ざん検出は、更新モジュール131、132、133のMAC値を、検証鍵を使用して計算し、MAC値テーブルに保持されている、初期設計時に計算したMAC値と比較することにより、行われる。また、更新モジュール131、132、133のハッシュ値を算出し、算出したハッシュ値と、各更新モジュールに予め付加されている証明書に記述されているハッシュ値とを比較することにより行われるとしてもよい。
更新用ソフトウェア配布モジュール210は、各更新モジュールから改ざん検出結果を受信し(ステップS513)、改ざんされた更新モジュールがあるか否かを判定する(ステップS514)。
改ざんされた更新モジュールがないと判定した場合には(ステップS514でNo)、処理を継続する。
続いて更新処理について説明する。更新処理では、更新用ソフトウェア配布モジュール210が更新用保護制御モジュール121を複数の鍵を用いて多重に暗号化し、更新モジュール群130に含まれる更新モジュールを送信先として送信する。更新モジュール群130に含まれる複数の更新モジュールは、保護制御モジュール120を更新用保護制御モジュール121に更新する。この時、多重に暗号化された更新用保護制御モジュール121を復号するための複数の鍵を、更新モジュール群130に含まれる各更新モジュールへ送信するタイミングを更新用ソフトウェア配布モジュール210が制御することで、攻撃者が暗号化されていない更新用保護制御モジュール121を入手することを不可能にする。
まず、更新用ソフトウェア配布モジュール210は、更新用保護制御モジュール121が機器100に正しくインストールされたかを更新モジュール131、132、133が検証できるように、更新用保護制御モジュール121の証明書(更新検証証明書)を、証明書生成部408を用いて生成し(ステップS521)、生成した更新検証証明書を各更新モジュール131、132、133へ送信する(ステップS522)。更新検証証明書の生成には、署名秘密鍵を利用する。各更新モジュールは、更新検証証明書を受信する(ステップS523)。
更新モジュール131は、多重暗号化更新用保護制御モジュール121及び第1の鍵を受信すると(ステップS529)、第1の鍵を用いて、多重暗号化更新用保護制御モジュール121を復号し、暗号化更新用保護制御モジュール121を取得する(ステップS530)。復号が終了すると、復号終了通知を更新用ソフトウェア配布モジュール210に送信する(ステップS531)。
更新モジュール132は、更新用ソフトウェア配布モジュール210から第2の鍵を受信し(ステップS535)、更新モジュール131から暗号化更新用保護制御モジュール121を受信すると(ステップS539)、第2の鍵を用いて、暗号化更新用保護制御モジュール121を復号し、更新用保護制御モジュール121を取得する(ステップS540)。
更新用ソフトウェア配布モジュール210は、各更新モジュールから送信された検証結果を受信すると(ステップS546)、受信した検証結果から保護制御モジュール121が正しく更新されたかを判定し(ステップS547)、正しく更新されていないと判定した場合には(ステップS547でNo)、機器100を停止する(ステップS548)。
更新モジュール131、132、133はそれぞれ、更新処理の終了の通知を受けると(ステップS550)、保護制御モジュール121のMAC値を生成し、MAC値テーブルに保護制御モジュール121の識別子とMAC値との組を保存する(ステップS551)。
続いて、監視処理と更新処理との関係について説明する。上述した監視処理と更新処理とは、互いに連携しながら実行される。
監視処理は、更新用ソフトウェア配布モジュール210から、更新モジュール群130に含まれる更新モジュールを送信先として、複数の鍵が送られる時と、暗号化された更新用保護制御モジュールの更新モジュール群130に含まれる更新モジュールでの復号処理中に定期的に実施される。定期的に実施する際の時間間隔は、例えば、更新用保護制御モジュール121が通信路を通して完全に外部に出力されるまでの時間より短い間隔である。完全に外部に出力されるまでに1秒かかるのであれば、例えば、それより短い500ミリ秒間隔のタイミングで監視処理を実行する。
まず、回復処理の開始後、更新サーバ200から機器100へ多重暗号化更新用保護制御モジュール121が送付される前に、機器100内部で監視処理(監視1)を実施する。更新処理を開始するにあたって、不正な更新モジュールが機器100内部に存在しないことを検証するためである。
さらに、更新モジュール131が第1の鍵を受信し、第1の鍵を用いて多重暗号化更新用保護制御モジュール121を復号する間、定期的に更新モジュール131による復号処理を中断し、監視処理(監視3−1、3−2)を実施する。これにより、復号処理中に、更新モジュール131、132、133の何れかが攻撃されたとしても、暗号化更新用保護制御モジュール121が全て漏洩する前に攻撃者による攻撃を検出することができ、暗号化更新用保護制御モジュール121の漏洩を防止することが可能となる。
さらに、更新モジュール132が第2の鍵を受信した後、第2の鍵を用いて暗号化更新用保護制御モジュール121を復号する間、定期的に更新モジュール132による復号処理を中断し、監視処理(監視5−1、5−2)を実施する。これにより、更新用保護制御モジュール121が全て漏洩する前に攻撃者による攻撃を検出することができ、更新用保護制御モジュール121の漏洩を防止することが可能となる。
続いて、再暗号化処理について説明する。再暗号化処理では、更新用保護制御モジュール121が、各更新モジュールが保持している分散情報を取得し、取得した分散情報から、更新前の保護制御モジュール120が保持していた暗復号鍵(旧暗復号鍵)を復元する。さらに、新たに暗復号鍵(新暗復号鍵)を生成し、復元した旧暗復号鍵を用いて、暗号化されたアプリ110、111を復号した後、新暗復号鍵を用いて、アプリ110、111を再暗号化する。
まず、更新された保護制御モジュール121が、各更新モジュール131、132、133に対して、それぞれが保持している分散情報と暗復号鍵証明書とを送信するよう依頼する(ステップS561)。
保護制御モジュール121は、更新モジュール群から分散情報と暗復号鍵証明書とを受信すると(ステップS564)、受信した分散情報から更新前の保護制御モジュール120が使用していた暗復号鍵(旧暗復号鍵)を復元する(ステップS565)。そして、旧暗復号鍵が正しく復元されたか否かを、暗復号鍵証明書を用いて検証する(ステップS566)。
ここで、不正な更新モジュールを特定するための方法としては、以下の方法がある。まず、保護制御モジュール121は、各更新モジュールから分散情報のペアを取得し、取得した各分散情報に、どの更新モジュールから取得したかを識別するための識別情報をつける。次に、同じ識別子が付された、同一の値となるべき分散情報同士をグループ化し、各グループ中の分散情報同士の値を比較し、同じ値になる分散情報同士をさらにグループ化(サブグループ)する。そして、全てのグループからサブグループを1つずつ選び出す組み合わせの全てに対して、それぞれ旧暗復号鍵を生成し、正しい旧暗復号鍵が生成できたかを検証する。検証した結果、正しい旧暗復号鍵が生成できた場合は、当該組み合わせで選択されているサブグループに検証を通ったことを表す検証通過識別情報を付す。全ての組み合わせで旧暗復号鍵の生成及び検証を行った後、検証通過識別情報が付されているサブグループに含まれる分散情報を取り除く。ここで取り除かれずに残った分散情報が不正な値になっている分散情報である。そして、この分散情報の識別情報から当該分散情報を保持していた更新モジュールを特定する。これにより、識別情報に対応する更新モジュールが不正な分散情報を保持していた不正な更新モジュールであると特定することができる。
続いて、次ラウンド準備処理について説明する。回復処理の終了後、次の回復処理のための準備を行う次ラウンド準備処理を実施する。次ラウンド準備処理では、初期設計時の初期化処理と同様に、分散情報の生成と埋め込みを行う。
図25は、次ラウンド準備時のソフトウェア更新システム1000の動作の流れを示すフローチャートである。本フローチャートにおいて、更新モジュール131、132、133の各々が個別に行う処理を、更新モジュール群としてまとめて記載している。
なお、この時、相互認証時において認証に失敗した不正な更新モジュールや、回復処理内の監視処理において検出した不正な更新モジュール、回復処理内の再暗号化処理において炙り出した不正な更新モジュールに対しては、分散情報を送信しない。
続いて、無効化処理について説明する。無効化処理は、相互認証時において認証に失敗した更新モジュールが存在した場合や、回復処理内の監視処理において改ざんされた更新モジュールを検出した場合、回復処理内の再暗号化処理において不正な更新モジュールを炙り出した場合等に、機器100内部に存在する不正な更新モジュールを無効化する処理である。
まず、更新用ソフトウェア配布モジュール210は、監視処理において更新モジュール131、132、133から受信した改ざん検出結果に基づいて、どの更新モジュールが改ざんされたかを判定する(ステップS701)。この例では、更新モジュール133が改ざんされていると判定し、それ以外の更新モジュールは改ざんされていないと判定する。
正しい依頼であると判断した場合には(ステップS709でYes)、依頼元の更新モジュール131へ、更新モジュール133を無効化するためのアクセス情報取得鍵を送付する(ステップS710)。
更新モジュール131は、アクセス制御モジュール140から暗号化アクセス情報を受信し(ステップS713)、アクセス情報取得鍵配布モジュール220からアクセス情報取得鍵を受信すると(ステップS714)、受信したアクセス情報取得鍵を用いて暗号化アクセス情報を復号し、アクセス情報を取得する(ステップS715)。取得したアクセス情報は、更新モジュール133を消去するための専用ドライバである。更新モジュール131は、そのドライバを利用して、RAM13上に展開されている、改ざんされた不正な更新モジュール133を無効化する(ステップS716)。
以上のように本実施の形態によれば、回復処理において、更新モジュール群内の複数の更新モジュールが監視処理を行うので、改ざんされた更新モジュールを検出することが可能となり、ソフトウェア更新システムの信頼性を高めることができる。
(実施の形態2)
実施の形態2では、保護制御モジュール120が、復号ロード機能や改ざん検出機能、解析ツール検出機能等の機能を制御し、アプリ110、111を攻撃者による攻撃から保護するだけではなく、更新モジュール131、132、133を攻撃者による攻撃から保護する。これにより、更新モジュール131、132、133が一方的に保護制御モジュール120の改ざんを検出するだけでなく、更新モジュール131、132、133と保護制御モジュール120とが相互に監視し合う構成とすることができる。
改ざんを検出しなかった場合には、更新用ソフトウェア配布モジュール210への通知は行わない。
以降の処理は、本発明の実施の形態1における検知処理において、更新モジュール131、132、133から更新用ソフトウェア配布モジュール210へ、保護制御モジュール120の改ざんを検出した旨の通知があった場合の処理と同様であるので、ここでは省略する。
(実施の形態3)
実施の形態3では、各更新モジュールに保護制御モジュール120を更新するための機能を予め持たせるのではなく、保護制御モジュール120の改ざんを検出し、保護制御モジュール120を更新する必要が生じた時に、保護制御モジュール120を更新するためのアクセス情報を取得することにより、保護制御モジュール120を更新する機能を更新モジュールに付加する。
また、本実施の形態におけるアクセス情報モジュール140は、各更新モジュールのアクセス情報に加え、保護制御モジュール120を更新するための暗号化アクセス情報を保持している。
更新処理(ステップS502)において、更新用ソフトウェア配布モジュール210が更新用保護制御モジュール121を複数の鍵を用いて多重に暗号化し、多重暗号化更新用保護制御モジュールと第1の鍵とを、更新モジュール群に含まれる更新モジュール131を送信先として送信する(ステップS521からS528)。
更新用保護制御モジュールを取得後、更新モジュール132は、保護制御モジュール120を更新用保護制御モジュール121へ更新するために、アクセス情報取得鍵配布モジュール220に対し保護制御モジュール120を更新するためのアクセス情報取得鍵を送付するよう依頼する。さらに、アクセス制御モジュール140に対し保護制御モジュール120を更新するためのアクセス情報を送信するよう依頼する。
更新モジュール132は、アクセス情報取得鍵配布モジュール220からアクセス情報取得鍵を受信し、アクセス制御モジュール140から暗号化アクセス情報を受信すると、受信したアクセス情報取得鍵を用いて、暗号化アクセス情報を復号し、アクセス情報を取得する。取得したアクセス情報は、保護制御モジュール120を更新するための専用ドライバである。更新モジュール132は、そのドライバを利用して、保護制御モジュール120を更新用保護制御モジュール121へ更新する(ステップS541)。そして、更新の終了を他の更新モジュールへ通知する(ステップS542)。
(その他の変形例)
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
図28〜30は、基本的には、図20〜22と同様である。異なる点は、更新対象となる更新モジュール133には、更新検証証明書や、復号終了通知、更新終了通知が送信されないことである。
また、一つでも更新モジュールが改ざんされている場合には、改ざんされていない更新モジュールが全ての更新モジュール及び保護制御モジュールを更新あるいは無効化するとしてもよい。
(6)上記実施の形態では、アクセス情報取得鍵配布モジュール220は、更新サーバ200にあり、アクセス制御モジュール140は、機器100にあるとしたが、これに限定するものではなく、アクセス情報取得鍵配布モジュール220とアクセス制御モジュール140とはそれぞれ、機器100にあってもよいし、更新サーバ200にあってもよいし、各更新モジュール内にあってもよい。また、アクセス情報取得鍵配布モジュール220とアクセス制御モジュール140とは、別々のモジュールではなく1つのモジュールであってもよい。アクセス情報取得鍵配布モジュール220とアクセス制御モジュール140とが1つのモジュールである場合には、更新モジュールへアクセス情報取得鍵と暗号化アクセス情報とを送信するのではなく、アクセス情報を直接送信してもよい。さらに、アクセス情報取得鍵配布モジュール220やアクセス制御モジュール140が機器100内にあるときには、耐タンパ化などにより攻撃から保護される領域にあるとしてもよい。
(9)上記実施の形態では、初期設計時の動作として、改ざん検出用証明書及び認証鍵証明書は、更新用ソフトウェア配布モジュール210が保持する署名秘密鍵を用いて生成された証明書であるとしたが、これに限定するものではなく、それぞれ別の鍵を用いて生成されてもよいし、更新用ソフトウェア配布モジュール210以外の証明書発行装置により発行された証明書でもよい。
さらに、通常時と回復処理時とにおける検知頻度を変更するとしてもよい。例えば、通常時より回復処理時の検知頻度を高くすることにより、回復処理中の保護制御モジュールの保護に万全を期すことができる。検知頻度の変更は、回復処理中であってもよい。
(30)本発明の実施の形態1において、無効化時の動作として、アクセス情報は、更新モジュールを消去するための専用ドライバであるとしたが、これに限定するものではなく、更新モジュールを消去するための専用プログラムであってもよいし、更新モジュールを消去するための手順が記された手順書であってもよいし、消去する更新モジュールのアドレスであってもよいし、更新モジュールを消去するプログラムのアドレスであってもよいし、更新モジュールを消去するための機能を動作させるためのレジスタやメモリのアドレスやレジスタやメモリに設定する値であってもよい。また、アクセス情報は、コード部分を消去する旨が記述された情報であってもよい。この場合、コード位置はヘッダに格納されており、ヘッダを参照して消去すべきコード部分を判断するとしてもよい。さらに、アクセス制御モジュール自体が暗号鍵で暗号化されているとしてもよい。その場合には、改ざんされていない更新モジュールは、更新サーバから、アクセス制御モジュールを暗号化した暗号鍵に対応する復号鍵を取得し、取得した復号鍵を用いてアクセス制御モジュールを復号し、改ざんされた更新モジュールに対応するアクセス情報をアクセス制御モジュールから取得し、取得したアクセス情報に基づいて、改ざんされた更新モジュールを無効化するとしてもよい。
(35)本発明の実施の形態2では、保護制御モジュール120から更新用ソフトウェア配布モジュール210へ、更新モジュール131、132、133の改ざんを検出した旨の通知があった場合、更新用ソフトウェア配布モジュール210は、保護制御モジュール120が改ざんされていないかを確認するために、更新モジュール131、132、133へ保護制御モジュール120の改ざん検出を依頼するとしたが、これに限定するものではなく、保護制御モジュール120から更新用ソフトウェア配布モジュール210へ、更新モジュール131、132、133の改ざんを検出した旨の通知があった場合、検出された更新モジュールが改ざんされていると判断し、当該更新モジュールを相互認証処理や回復処理に使用しないとしてもよいし、保護制御モジュール120が無効化処理を実施するとしてもよい。この時、保護制御モジュール120は、耐タンパー化された領域で動作するなど、攻撃から保護されていることが望ましい。
(38)上記の各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
また、前記コンピュータプログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記コンピュータプログラムまたは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(42)上記実施の形態では、アクセス制御モジュール140及び更新モジュール群130は、OS150の中に組み込まれているとしたが、更新モジュールがOSを更新する機能を備えている場合等には、更新モジュールは、OSの管理外にプログラムとして格納されているとしてもよい。また、保護制御モジュールがOSに組み込まれているとしてもよい。
(45)上記実施の形態では、アクセス情報は、更新モジュール毎にそれぞれ個別のアクセス情報取得鍵で暗号化されているとしたが、同一のアクセス情報取得鍵で暗号化されているとしてもよい。その場合には、正常な更新モジュールが更新サーバにアクセスして、アクセス情報取得鍵に対応した復号鍵を取得し、取得した復号鍵を用いてアクセス制御モジュールを復号し、アクセス制御モジュールから、改ざんされた更新モジュールに対応するアクセス情報を取得し、取得したアクセス情報に基づいて、改ざんされた更新モジュールを無効化するとしてもよい。
以下に、脱退処理及び追加処理の詳細を説明する。ここでは、機器100Aは6つの更新モジュール121A〜126Aを備えるものとして説明する。
脱退処理の動作
脱退処理について、図30にて示す流れ図を用いて説明する。
この処理では、更新モジュールが不正な動作を行う可能性を考え、更新モジュール間で送信されるデータが正しいデータであるかを常に検証することで、不正な動作を行う更新モジュールが存在した場合に検知できるようにしている。さらに、各処理において、分散情報の値を更新する場合には、更新前の分散情報の値を退避しておき、脱退処理中に不正な動作を行う更新モジュールの存在を検知した場合には、脱退処理を中止し、分散情報の値を脱退処理前の値に戻すことで、分散情報が不正な値になることを防止する。
また、当該処理では、脱退する更新モジュールが所有する分散情報と同じ分散情報を持つ更新モジュールが分散情報の生成及び配布を行うものとする。この様な処理にすることで、脱退する更新モジュールが脱退処理を行わなくても分散情報を更新することが可能となり、不正な動作を行う更新モジュールを無効化する処理などにも利用できる。
なお、脱退対象となるモジュールを更新モジュール121Aとし、部分情報の生成を更新モジュール126Aが行うものとして、以下説明する。
更新モジュール126Aは、外部の装置(図示せず)から、脱退対象の更新モジュール121Aが有する分散情報“d_1”と同一の他モジュール分散情報から部分情報を生成する旨の脱退時の部分情報生成指示を受け取る。
更新モジュール126Aは、第1他モジュール分散情報“d1_1”から5つの分散情報を生成し、配布する処理を行う(ステップS4000)。言い換えると、更新モジュール126Aは、第1他モジュール分散情報“d1_1”を、5つの分散情報に分散(分解)する。
更新モジュール122A〜126Aは、脱退時における第1及び第2更新処理を行い、それぞれが保持する分散情報、第1及び第2他モジュール分散情報を更新する(ステップS4100、S4150)。
全ての装置にて更新が正常に行われていない場合には(ステップS4200における「NO」)、更新モジュール126Aは、更新モジュール122A〜125Aへその旨を通知する。更新モジュール126A、及び通知を受けた更新モジュール122A〜125Aは、脱退処理を中止し、自装置の分散情報の値を脱退処理の前に戻し、処理を終了する。
なお、セキュリティの確保された通信路で分散情報を送りあい、受信した分散情報と同じ値かどうかを検証するとしたが、これに限定するものではなく、ゼロ知識証明などの暗号プロトコルを使用して検証してもよい。ゼロ知識証明については、非特許文献1の132〜150ページに、暗号プロトコルについては、非特許文献1の224〜225ページに詳しく説明されている。
(部分情報の生成処理)
ここでは、図30のステップS4000にて示す部分情報の生成処理について、図31にて示す流れ図を用いて説明する。
更新モジュール126Aの分散情報分割部261_6は、第1他モジュール分散情報“d1_1”211_6から5つの部分情報(d_1_1〜d_1_5)を生成する(ステップS4500)。このとき、各部分情報は、次式を満たすものとする。
(式) d1_1=d_1_1+d_1_2+d_1_3+d_1_4+d_1_5 mod L
具体的には、分散情報分割部261_6は、乱数生成器を用いて、(k−2)個(=4個)の乱数を生成することにより、部分情報(d_1_1〜d_1_4)を生成する。次に、分散情報分割部261_6は、
d_1_5 = d1_1 − (d_1_1+d_1_2+d_1_3+d_1_4)
により、d_1_5を算出する。このとき、減算結果が負の数になる事もあるが、そのまま部分情報として扱う。
具体的には、分散情報分割部261_6は、以下のように各部分情報を配布する。
分散情報分割部261_6は、部分情報d_1_1、d_1_2を更新モジュール122Aへ送信する(ステップS4600)。分散情報分割部261_6は、部分情報d_1_1、d_1_2、d_1_3を更新モジュール123Aへ送信する(ステップS4610)。分散情報分割部261_6は、部分情報d_1_2、d_1_3、d_1_4を更新モジュール124Aへ送信する(ステップS462)。分散情報分割部261_6は、部分情報d_1_3、d_1_4、d_1_5を更新モジュール125Aへ送信する(ステップS4630)。分散情報分割部261_6は、部分情報d_1_4、d_1_5を分散情報更新部260_6へ出力し、一時的に記憶する。i番目の更新モジュールは、受信した各部分情報を分散情報更新部260_jに一時的に格納する。
(分散情報の検証処理)
ここでは、図30のステップS4050にて示す分散情報の検証処理について、図32にて示す流れ図を用いて説明する。
部分情報検証部264_2は、更新モジュール126Aから部分情報検証指示を、受信部257_jを介して受け取ると、更新モジュール121Aを除く残りのモジュール123A、124A、125A及び126Aそれぞれから部分情報d_1_2、d_1_3、d_1_4、d_1_5を収集する(ステップS4700)。
部分情報検証部264_2は、分散情報更新部260_jにて記憶しているd_1_1と、受信した各部分情報d_1_2、d_1_3、d_1_4、d_1_5とを加算し、値s’を算出し、算出した値s’が正当であるか否かを検証する(ステップS4800)。具体的には、部分情報検証部264_2は、算出した値s’と、他モジュール分散情報格納部252_jに格納されている第2他モジュール分散情報“d2_1”とが一致するか否かを判断する。
(脱退時の第1更新処理)
ここでは、図30のステップS410にて示す脱退時の第1更新処理について、図33及び図34にて示す流れ図を用いて説明する。
(脱退時の第2更新処理)
ここでは、図30のステップS415にて示す脱退時の第2更新処理について、図35にて示す流れ図を用いて説明する。
更新モジュール122Aの分散情報更新部260_2は、分散情報“d_2’”を更新モジュール126Aへ出力する(ステップS6050)。
分散情報更新部260_6は、分散情報“d_2’”及び“d2_2’”を収集する(ステップS6100)。このとき、更新モジュール123Aの分散情報更新部260_3は分散情報“d2_2’”を送信する(ステップS6110)。
分散情報更新部260_6は、収集した分散情報“d_2’”及び“d2_2’”が一致するか否かを判断する(ステップS6200)。一致すると判断する場合には(ステップS6200における「YES」)、分散情報更新部260_6は、第1他モジュール分散情報を“d_2’”とする(ステップS6250)。
分散情報更新部260_2は、収集した分散情報“d_6’”及び“d2_6’”が一致するか否かを判断する(ステップS6300)。一致すると判断する場合には(ステップS6300における「YES」)、分散情報更新部260_2は、第2他モジュール分散情報を“d_6’”とする(ステップS6350)。
(具体例)
脱退処理後の更新モジュール122A〜126Aのそれぞれが保持する分散情報、第1及び第2他モジュール分散情報を、図36にて示す。
ここで、更新後の各分散情報“d_2’”〜“d_6’”により、秘密鍵“d”が回復されることを以下に示す。
d_2’+d_3’+d_4’+d_5’+d_6’
= (d_2+d_1_1)+(d_3+d_1_2)+(d_4+d_1_3)
+(d_5+d_1_4)+(d_6+d_1_5)
= (d_1_1+d_1_2+d_1_3+d_1_4+d_1_5)
+(d_2+d_3+d_4+d_5+d_6)
= d_1+d_2+d_3+d_4+d_5+d_6
= d
このように、更新モジュール121Aが脱退後も、それぞれの更新モジュールが保持する分散情報の総和を一定とすることが可能となるため、脱退処理時において、ソフトウェア更新システムは、新しい秘密鍵“d”を復元し分散情報を再生成することなく、更新モジュールを脱退させることが可能となる。
追加処理の動作
ここでは、追加処理について、図37にて示す流れ図を用いて説明する。
更新モジュール121A、及び126Aが、変形情報を生成し、各更新モジュールへ配布する配布処理を行う(ステップS7000)。
追加対象の更新モジュール127A及び、更新モジュール127Aと同一の分散情報を保持する更新モジュール121A、及び126Aとが分散情報を生成する分散情報の生成処理を行う(ステップS7050)。
更新モジュール127Aが、第1及び第2他モジュール分散情報を格納する他モジュール分散情報の格納処理を行う(ステップS7100)。
更新モジュール121A、122A、125A〜127Aは、更新が正常に行われたか否かを判断する(ステップS7150)。更新モジュール121A、122A、125A及び126Aは、検証結果を更新モジュール127Aへ通知し、更新モジュール127Aは、検証結果を一時的に保持する。
分散情報更新部260_7は、更新モジュール121A及び126Aから収集した証明書が正当であるか否かを判断する(ステップS7250)。具体的には、分散情報更新部260_7は、収集した2つの証明書が同一であるか否かを判断する。
次に、更新モジュール121Aが、自身が保持する分散情報から7つの部分情報を生成し、生成した各部分情報を各更新モジュールへ配布する追加時の第1分割処理を行う(ステップS7350)。
更新モジュール121A〜127Aは、更新が正常に行われたか否かを判断する(ステップS7450)。このとき、更新モジュール122A〜127Aは、判断結果を部分情報送信元である更新モジュール121Aへ通知する。具体的には、分散情報を共通に持っている更新モジュール同士で、分散情報検証部262_j及び他モジュール分散情報検証部263_jを用いて、互いに持っている分散情報が同じ値に更新されたかを、セキュリティの確保された通信路で分散情報を送りあい、受信した分散情報と各自が保持していた分散情報が同じ値かどうかを検証する。更新モジュール122A〜127Aは、検証結果を更新モジュール121Aへ通知し、更新モジュール121Aは、検証結果を一時的に保持する。
更新モジュール121A〜127Aは、配布された部分情報を用いて分散情報を更新する追加時の第2更新処理を行う(ステップS7550)。
全ての更新モジュールにて更新が正常に行われた場合には(ステップS7600における「YES」)、更新モジュール126Aは、配布先リストT100を更新する。更新モジュール126Aは、更新後の配布先リストをリスト格納部254_6へ格納するとともに、更新モジュール121A〜125A、127A及び保護制御モジュールへ送信する。更新モジュール121A〜125A、127A及び保護制御モジュールは、現在格納している配布先リストから更新後の配布先リストへと更新する(ステップS7650)。
また、ステップS7600における「NO」の場合も同様に、更新モジュール121A〜127Aは、脱退処理を中止し、自モジュールの分散情報の値を脱退処理の前に戻し、処理を終了する。
(配布処理)
ここでは、図37のステップS7000にて示す部分情報の生成処理について、図38にて示す流れ図を用いて説明する。
更新モジュール126Aの変形情報生成部265_6は、外部装置から追加時の分散情報生成指示を受け取ると、変形情報nを生成する(ステップS8000)。
更新モジュール121Aの変形情報生成部265_1は、外部装置から追加時の分散情報生成指示を受け取ると、変形情報mを生成する(ステップS8050)。
変形情報生成部265_1は、生成した変形情報mを更新モジュール122A、126A、及び127Aへ出力する(ステップS8150)。
更新モジュール126Aの分散情報更新部260_6は、変形情報mを受け取ると、受け取った変形情報mを一時的に格納する(ステップS8200)。
分散情報更新部260_6は、生成した変形情報nを用いて、新たな分散情報“d_6’(=d_6−n)”を生成し、分散情報格納部251_6に格納されている分散情報“d_6“を“d_6’”へと更新する(ステップS8300)。
分散情報更新部260_1は、生成した変形情報mを用いて、新たな分散情報“d_1’(=d_1−m)”を生成し、分散情報格納部251_1に格納されている分散情報“d_1”を“d_1’”へと更新する(ステップS8350)。
更新モジュール127Aの分散情報更新部260_7は、変形情報n及びmを受け取ると、受け取った変形情報n及びmを一時的に格納する(ステップS8450)。
(分散情報の生成処理)
ここでは、図37のステップS705にて示す分散情報の生成処理について、図39にて示す流れ図を用いて説明する。
分散情報更新部260_7は、変形情報n及びmを用いて分散情報“d_7=(m+n)”を生成する(ステップS8700)。分散情報更新部260_7は、分散情報格納部251_7に生成した分散情報“d_7”を格納する(ステップS8750)。
(他モジュール分散情報の格納処理)
ここでは、図37のステップS7100にて示す他モジュール分散情報の格納処理について、図40にて示す流れ図を用いて説明する。
同一であると判断する場合には(ステップS9050における「YES」)、分散情報更新部260_7は、収集した分散情報“d_1’”を第1他モジュール分散情報として他モジュール分散情報格納部252_7へ格納する(ステップS9100)。
同一であると判断する場合には(ステップS9200における「YES」)、分散情報更新部260_7は、収集した分散情報“d_6’”を第2他モジュール分散情報として他モジュール分散情報格納部252_7へ格納する(ステップS9250)。
(追加時の第1分割処理)
ここでは、図37のステップS7350にて示す追加時の第1分割処理について、図41にて示す流れ図を用いて説明する。
(式) d_1’= d_1_1+d_1_2+d_1_3+d_1_4+d_1_5
+d_1_6+d_1_7 mod L
具体的には、分散情報分割部261_1は、乱数生成器を用いて、6個の乱数を生成することにより、部分情報(d_1_1〜d_1_6)を生成する。次に、分散情報分割部261_1は、
d_1_7 = d_1’ − (d_1_1+d_1_2+・・・+d_1_6)
により、d_1_7を算出する。このとき、減算結果が負の数になる事もあるが、そのまま部分情報として扱う。
具体的には、分散情報分割部261_1は、更新モジュール122A及び127に対して生成した部分情報d_1_2〜d_1_7を配布する(ステップS9560及びS9610)。他のモジュール123A〜126Aにおけるi番目のモジュールに対しては、部分情報d_1_(i−1)、d_1_i及びd_1_(i+1)を配布する(ステップS9570、S9580、S9590及びS9600)。
更新モジュール122A〜127Aは、受信した各部分情報を分散情報更新部260_jに一時的に格納する。
(追加時の第1更新処理)
ここでは、図37のステップS7400にて示す追加時の第1更新処理について、図42から図44にて示す流れ図を用いて説明する。
(追加時の第2分割処理)
ここでは、図37のステップS750にて示す追加時の第2分割処理について、図45にて示す流れ図を用いて説明する。
(式) D_6= d_6_1+d_6_2+d_6_3+d_6_4+d_6_5
+d_6_6+d_6_7 mod L
具体的には、分散情報分割部261_6は、乱数生成器を用いて、6個の乱数を生成することにより、部分情報(d_6_1〜d_6_6)を生成する。次に、分散情報分割部261_6は、
d_6_7 = D_6 − (d_6_1+d_6_2+・・・+d_6_6)
により、d_6_7を算出する。このとき、減算結果が負の数になる事もあるが、そのまま部分情報として扱う。
更新モジュール125A及び127Aに対して生成した部分情報d_6_1〜d_6_5及びd_6_7を配布する(ステップS10600及びS10610)。他のモジュール121A〜124Aにおけるi番目のモジュールに対しては、部分情報d_6_(i−1)、d_6_i及びd_6_(i+1)を配布する(ステップS10560、S10570、S10580及びS10590)。なお、i−1=0の場合には、部分情報d_6_7を配布する。
(追加時の第2更新処理)
ここでは、図37のステップS7550にて示す追加時の第2更新処理について、図46から図48にて示す流れ図を用いて説明する。
更新モジュール121Aの分散情報更新部260_1は、更新モジュール126Aから受け取った部分情報“d_6_1”を用いて、新たな分散情報“D_1’(=D_1+d_6_1)”を生成し、分散情報格納部251_1に格納されている分散情報“D_1”を新たな分散情報“D_1’”に更新する(ステップS10700)。分散情報更新部260_1は、更新モジュール126Aから受け取った部分情報“d_6_2”及び“d_6_7”を用いて新たな第1及び第2他モジュール分散情報“D1_2’(=D1_2+d_6_2)”及び“D2_7’(=D2_7+d_6_7)”を生成し、分散情報格納部251_1に格納されている第1及び第2他モジュール分散情報“D1_2”及び“D2_7’”を新たな第1及び第2他モジュール分散情報“D1_2’”及び“D2_7’”に更新する(ステップS10750)。
(具体例)
追加処理後の更新モジュール121A〜127Aのそれぞれが保持する分散情報、第1及び第2他モジュール分散情報を、図49にて示す。
ここで、更新後の各分散情報“D_1’”〜“D_7’”により、秘密鍵“d”が回復されることを以下に示す。
D_1’+D_2’+D_3’+D_4’+D_5’+D_6’+D_7’
= (D_1+d_6_1)+(D_2+d_6_2)+(D_3+d_6_3)
+(D_4+d_6_4)+(D_5+d_6_5)+(d_6_6)+(D_7+d_6_7)
= D_1+D_2+D_3+D_4+D_5+D_7
+d_6_1+d_6_2+d_6_3+d_6_4+d_6_5+d_6_6+d_6_7
= D_1+D_2+D_3+D_4+D_5+D_6+D_7
= (d_1_1)+(d_2+d_1_2)+(d_3+d_1_3)+(d_4+d_1_4)
+(d_5+d_1_5)+(d_6’+d_1_6)+(d_7+d_1_7)
= d_2+d_3+d_4+d_5+d_6’+d_7
+d_1_1+d_1_2+d_1_3+d_1_4+d_1_5+d_1_6+d_1_7
= d_1’+d_2+d_3+d_4+d_5+d_6’+d_7
= (d_1−m)+d_2+d_3+d_4+d_5+(d_6−n)+m+n
= d_1+d_2+d_3+d_4+d_5+d_6+d_7
= d
このように、更新モジュール127Aの追加後も、それぞれの更新モジュールが保持する分散情報の総和を一定とすることが可能となるため、追加処理時において、ソフトウェア更新システムは、新しい秘密鍵“d”を復元し分散情報を再生成することなく、更新モジュールを追加させることが可能となる。
(追加処理時の第1及び第2更新処理の必要性)
追加時における第1及び第2更新処理は、更新モジュール121Aと126Aが分散情報を持ちすぎるために必要になる処理である。
(49)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
100 機器
110 アプリケーション
111 アプリケーション
120 保護制御モジュール
130 更新モジュール群
131 更新モジュール
132 更新モジュール
133 更新モジュール
140 アクセス制御モジュール
200 更新サーバ
210 更新用ソフトウェア配布モジュール
220 アクセス情報取得鍵配布モジュール
301 監視制御部
302 改ざんチェック実行部
303 更新制御部
304 復号部
305 認証部
306 署名公開鍵保持部
307 検証鍵保持部
308 認証鍵対保持部
309 MAC値保持部
310 分散情報保持部
311 アクセス情報取得部
312 無効化処理部
401 暗号鍵生成部
402 暗号処理部
403 暗号鍵保持部
404 認証部
405 更新判定部
406 不正モジュール判定部
407 更新モジュール選択部
408 証明書生成部
409 署名秘密鍵保持部
410 更新用ソフトウェア保持部
501 制御部
502 復号ロード部
503 改ざん検出部
504 解析ツール検出部
505 暗復号鍵保持部
506 暗復号鍵生成部
507 暗復号鍵分散部
508 証明書生成部
509 暗復号鍵復元部
601 通信部
602 アクセス情報保持部
701 通信部
702 アクセス情報取得鍵保持部
Claims (22)
- 所定のアプリケーションと、
前記所定のアプリケーションが改ざんされていないかを検証する保護制御モジュールと、
前記保護制御モジュールを更新する更新用の保護制御モジュールを外部サーバから受信し前記保護制御モジュールを更新する更新モジュールを複数含む更新モジュール群と、を備え、
前記更新モジュール群に含まれる複数の更新モジュールの各々は、
同時に起動している全ての更新モジュールが、少なくとも他の一つの更新モジュールの検証対象となるように、検証対象を選定して不正動作を行わないか検証を行う
ことを特徴とするソフトウェア更新装置。 - 前記複数の更新モジュールの何れも不正動作をしないと検証した場合、前記更新モジュール群に含まれる複数の更新モジュールが、前記受信した更新用の保護制御モジュールを用いて前記保護制御モジュールを更新する
ことを特徴とする請求項1記載のソフトウェア更新装置。 - 前記複数の更新モジュールの何れかが不正動作を行う可能性があることを検証した場合、前記更新モジュール群に含まれる不正動作をしないことが検証された何れかの更新モジュールが、前記保護制御モジュールを更新する
ことを特徴とする請求項2記載のソフトウェア更新装置。 - 前記更新モジュール群に含まれ、不正動作をしないことが検証された何れの更新モジュールが前記保護制御モジュールを更新するかの指定を前記外部サーバが行う
ことを特徴とする請求項3記載のソフトウェア更新装置。 - 前記複数の更新モジュールの何れかが不正動作を行う可能性があることを検証した場合、前記複数の更新モジュールの各々は、前記保護制御モジュールを更新しない
ことを特徴とする請求項2記載のソフトウェア更新装置。 - 前記受信した更新用の保護制御モジュールは、複数の暗号鍵で暗号化されている
ことを特徴とする請求項2記載のソフトウェア更新装置。 - 前記複数の暗号鍵に対応する複数の復号鍵の各々は、前記更新モジュール群に含まれる複数の更新モジュールの各々が、別々の復号鍵を保有するように前記外部サーバから送信され、複数の更新モジュールの何れも不正動作を行わないことを検証した場合、前記複数の更新モジュールは、前記複数の復号鍵の全てを用いて前記暗号化された更新用の保護制御モジュールを復号して前記保護制御モジュールを更新する
ことを特徴とする請求項6記載のソフトウェア更新装置。 - 前記受信した更新用の保護制御モジュールは、暗号鍵で暗号化されており、
前記暗号鍵に対応する復号鍵は、複数の部分復号鍵に分割されており、
複数の更新モジュールの中で不正動作を行わないことが検証された更新モジュールを、当該更新モジュールを検証対象として検証した更新モジュールが前記外部サーバに通知し、
前記外部サーバが、前記不正動作を行わないことが検証された更新モジュールを送信先として、全ての部分復号鍵を送信し、
前記全ての部分復号鍵を受信した複数の更新モジュールは、前記部分復号鍵の全てを用いて前記暗号化された更新用の保護制御モジュールを復号して前記保護制御モジュールを更新する
ことを特徴とする請求項2記載のソフトウェア更新装置。 - 前記複数の更新モジュールは、前記外部サーバに前記不正動作を行う可能性があることが検証された更新モジュールを通知し、
複数の更新モジュールの何れかが不正動作を行う可能性があることが検証された場合、前記外部サーバが、前記不正動作を行う可能性があることが検証された更新モジュールに前記復号鍵を送信しない
ことを特徴とする請求項7記載のソフトウェア更新装置。 - 前記更新モジュール群に含まれる複数の更新モジュールの各々は、前記外部サーバにより指定される順序で、検証結果を前記外部サーバに通知する
ことを特徴とする請求項8または9の何れかに記載のソフトウェア更新装置。 - 前記更新用の保護制御モジュールは、複数の部分保護制御モジュールに分割され、
前記部分保護制御モジュールの各々は、更新モジュールと一対一に対応する形態で、前記外部サーバから送信される
ことを特徴とする請求項1記載のソフトウェア更新装置。 - 前記部分保護制御モジュールの各々は、相互に異なる暗号鍵で暗号化されている
ことを特徴とする請求項11記載のソフトウェア更新装置。 - 前記更新モジュール群に含まれる複数の更新モジュールの各々はさらに、前記選定した更新モジュールを更新する更新用の更新モジュールを前記外部のサーバから受信し前記選定した更新モジュールを更新する
ことを特徴とする請求項1記載のソフトウェア更新装置。 - 前記更新モジュール群に含まれる複数の更新モジュールの各々はさらに、前記所定のアプリケーションを更新する更新用のアプリケーションを外部から受信し前記所定のアプリケーションを更新する
ことを特徴とする請求項1記載のソフトウェア更新装置。 - 前記保護制御モジュールを更新する機能を持たず、検証対象となる更新モジュールが不正動作を行わないかを検証する機能のみを有する検証モジュールをさらに備える
ことを特徴とする請求項1記載のソフトウェア更新装置。 - 前記更新モジュール群に含まれる複数の更新モジュールの各々は、検証のタイミングを同期させるための同期情報を前記外部サーバから受信し、前記同期情報に基づいて前記検証を行う
ことを特徴とする請求項1記載のソフトウェア更新装置。 - 前記更新モジュール群に含まれる複数の更新モジュールの各々は、前記受信した更新用の保護制御モジュールを用いて前記保護制御モジュールを更新する以前に前記検証を行い、当該更新の際にも、前記検証を行う
ことを特徴とする請求項2記載のソフトウェア更新装置。 - 前記保護制御モジュールの更新の際における検証の頻度は、当該更新以前より高い
ことを特徴とする請求項17記載のソフトアェア更新装置。 - 前記複数の更新モジュールの各々は、前記選定した更新モジュールのハッシュ値を算出し、当該更新モジュールに予め付加されているハッシュ値と、算出したハッシュ値が一致するか判断することにより、前記検証を行う
ことを特徴とする請求項1記載のソフトウェア更新装置。 - ソフトウェア更新装置と当該ソフトウェア更新装置に接続されるサーバとを含むソフトウェア更新システムであって、
前記ソフトウェア更新装置は、
所定のアプリケーションと、
前記所定のアプリケーションが改ざんされていないかを検証する保護制御モジュールと、
前記保護制御モジュールを更新する更新用の保護制御モジュールを前記サーバから受信し前記保護制御モジュールを更新する更新モジュールを複数含む更新モジュール群と、を備え、
前記サーバは、
前記保護制御モジュールを更新する更新用の保護制御モジュールを格納する格納部と、
前記更新用の保護制御モジュールを前記ソフトウェア更新装置に送信する通信部と、を備え、
前記更新モジュール群に含まれる複数の更新モジュールの各々は、
同時に起動している全ての更新モジュールが、少なくとも他の一つの更新モジュールの検証対象となるように、検証対象を選定して不正動作を行わないか検証を行う
ことを特徴とするソフトウェア更新システム。 - 改ざん検証方法であって、
所定のアプリケーションが改ざんされていないかを検証する保護制御モジュールと、前記保護制御モジュールを更新する更新用の保護制御モジュールを外部サーバから受信し前記保護制御モジュールを更新する更新モジュールを複数含む更新モジュール群とを起動する起動ステップと、
前記所定のアプリケーションを実行する実行ステップとを含み、
前記更新モジュール群に含まれる複数の更新モジュールの各々は、
同時に起動している全ての更新モジュールが、少なくとも他の一つの更新モジュールの検証対象となるように、検証対象を選定して不正動作を行わないか検証を行う
ことを特徴とする改ざん検証方法。 - 改ざん検証プログラムであって、
所定のアプリケーションが改ざんされていないかを検証する保護制御モジュールと、前記保護制御モジュールを更新する更新用の保護制御モジュールを外部サーバから受信し前記保護制御モジュールを更新する更新モジュールを複数含む更新モジュール群とを起動する起動手順と、
前記所定のアプリケーションを実行する実行手順とを含む処理をコンピュータに行わせ、
前記更新モジュール群に含まれる複数の更新モジュールの各々は、
同時に起動している全ての更新モジュールが、少なくとも他の一つの更新モジュールの検証対象となるように、検証対象を選定して不正動作を行わないか検証を行う
ことを特徴とする改ざん検証プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010505048A JP4932033B2 (ja) | 2008-03-28 | 2008-11-06 | ソフトウェア更新装置、ソフトウェア更新システム、改ざん検証方法、及び改ざん検証プログラム |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008087300 | 2008-03-28 | ||
JP2008087300 | 2008-03-28 | ||
PCT/JP2008/003207 WO2009118800A1 (ja) | 2008-03-28 | 2008-11-06 | ソフトウェア更新装置、ソフトウェア更新システム、改ざん検証方法、及び改ざん検証プログラム |
JP2010505048A JP4932033B2 (ja) | 2008-03-28 | 2008-11-06 | ソフトウェア更新装置、ソフトウェア更新システム、改ざん検証方法、及び改ざん検証プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2009118800A1 JPWO2009118800A1 (ja) | 2011-07-21 |
JP4932033B2 true JP4932033B2 (ja) | 2012-05-16 |
Family
ID=41113044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010505048A Active JP4932033B2 (ja) | 2008-03-28 | 2008-11-06 | ソフトウェア更新装置、ソフトウェア更新システム、改ざん検証方法、及び改ざん検証プログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US8464347B2 (ja) |
EP (1) | EP2259205B1 (ja) |
JP (1) | JP4932033B2 (ja) |
WO (1) | WO2009118800A1 (ja) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5405986B2 (ja) * | 2008-11-26 | 2014-02-05 | パナソニック株式会社 | ソフトウェア更新システム、管理装置、記録媒体及び集積回路 |
US8171547B2 (en) * | 2008-12-03 | 2012-05-01 | Trend Micro Incorporated | Method and system for real time classification of events in computer integrity system |
CN101888311B (zh) * | 2009-05-11 | 2013-02-06 | 北京神州绿盟信息安全科技股份有限公司 | 一种防止网络内容被篡改的设备、方法和系统 |
EP2449499B1 (en) * | 2009-07-01 | 2014-11-26 | Panasonic Corporation | Secure boot method and secure boot apparatus |
US8683214B2 (en) | 2009-09-17 | 2014-03-25 | Panasonic Corporation | Method and device that verifies application program modules |
US8555059B2 (en) * | 2010-04-16 | 2013-10-08 | Microsoft Corporation | Secure local update of content management software |
JP5681028B2 (ja) | 2010-04-26 | 2015-03-04 | パナソニック株式会社 | 改ざん監視システム、管理装置及び管理方法 |
US8800038B2 (en) | 2010-04-26 | 2014-08-05 | Panasonic Corporation | Tampering monitoring system, control device, and tampering control method |
US9450928B2 (en) | 2010-06-10 | 2016-09-20 | Gemalto Sa | Secure registration of group of clients using single registration procedure |
WO2012056656A1 (ja) | 2010-10-28 | 2012-05-03 | パナソニック株式会社 | 改ざん監視システム、保護制御モジュール及び検知モジュール |
CN102893284B (zh) * | 2011-03-15 | 2016-07-06 | 松下电器产业株式会社 | 篡改监视系统、管理装置、保护控制模组及检测模组 |
US8914784B2 (en) | 2011-06-10 | 2014-12-16 | International Business Machines Corporation | Method and system for checking the consistency of application jar files |
JP2013026964A (ja) * | 2011-07-25 | 2013-02-04 | Denso Corp | 車両用情報更新装置および車両用情報更新方法 |
JP6098251B2 (ja) * | 2013-03-14 | 2017-03-22 | 日本電気株式会社 | 二重化システム |
KR101482700B1 (ko) * | 2013-09-27 | 2015-01-14 | (주)잉카엔트웍스 | 해시를 이용한 프로그램의 무결성 검증 방법 |
CN104102519A (zh) * | 2014-07-24 | 2014-10-15 | 英业达科技有限公司 | 机架式服务器系统的固件更新方法及其装置 |
US9195809B1 (en) * | 2014-08-14 | 2015-11-24 | Synack, Inc. | Automated vulnerability and error scanner for mobile applications |
US9448785B1 (en) * | 2015-11-06 | 2016-09-20 | AO Kaspersky Lab | System and method updating full disk encryption software |
US10013558B1 (en) | 2015-12-17 | 2018-07-03 | Lockheed Martin Corporation | Method and computer readable medium for secure software installation mechanism |
US10419401B2 (en) * | 2016-01-08 | 2019-09-17 | Capital One Services, Llc | Methods and systems for securing data in the public cloud |
JP2017163280A (ja) * | 2016-03-08 | 2017-09-14 | キヤノン株式会社 | 情報処理装置及び情報処理装置における暗号化ユニットの搭載判別方法、及びプログラム |
JP6779702B2 (ja) * | 2016-08-09 | 2020-11-04 | 株式会社日立製作所 | プログラムを保護する方法 |
WO2019120586A1 (en) * | 2017-12-22 | 2019-06-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Method for restricting memory write access in iot devices |
JP6808158B2 (ja) * | 2018-11-16 | 2021-01-06 | 株式会社シティーデジタル | サーバ |
US11121864B1 (en) * | 2020-03-13 | 2021-09-14 | International Business Machines Corporation | Secure private key distribution between endpoint instances |
JP7218932B2 (ja) * | 2020-05-28 | 2023-02-07 | 株式会社シティーデジタル | サーバ、真贋判定システム、及びデータ構造 |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5991399A (en) * | 1997-12-18 | 1999-11-23 | Intel Corporation | Method for securely distributing a conditional use private key to a trusted entity on a remote system |
JPH11252067A (ja) | 1998-03-03 | 1999-09-17 | Nippon Telegr & Teleph Corp <Ntt> | セキュリティオペレーション制御方法およびその記録媒体 |
JP3056732B1 (ja) | 1999-04-09 | 2000-06-26 | コナミ株式会社 | コンピュ―タシステム、コンピュ―タプログラムの実行方法及びコンピュ―タプログラム記録媒体 |
US6874087B1 (en) * | 1999-07-13 | 2005-03-29 | International Business Machines Corporation | Integrity checking an executable module and associated protected service provider module |
CN1182479C (zh) * | 2000-01-07 | 2004-12-29 | 国际商业机器公司 | 有效地收集、整理和访问证书吊销表的系统和方法 |
US20070271191A1 (en) * | 2000-03-09 | 2007-11-22 | Andres Torrubia-Saez | Method and apparatus for secure distribution of software |
JP3644494B2 (ja) * | 2001-04-13 | 2005-04-27 | 日本電気株式会社 | 情報検索装置 |
US20030009681A1 (en) * | 2001-07-09 | 2003-01-09 | Shunji Harada | Digital work protection system, recording medium apparatus, transmission apparatus, and playback apparatus |
JP2003044155A (ja) * | 2001-07-30 | 2003-02-14 | Hitachi-Lg Data Storage Inc | ソフトウェアのインストール方法及びファームウェアのアップデート方法及びそれらに用いる記録再生装置及び記録媒体 |
CN100359425C (zh) * | 2002-08-01 | 2008-01-02 | 松下电器产业株式会社 | 用于解密已加密数据并在存储器空间中定位用于执行的解密数据的方法和设备 |
US7240200B2 (en) * | 2002-09-26 | 2007-07-03 | International Business Machines Corporation | System and method for guaranteeing software integrity via combined hardware and software authentication |
JP2004234645A (ja) * | 2003-01-10 | 2004-08-19 | Canon Inc | 画像形成装置の監視装置、該監視装置による制御方法、及び該制御方法を実行するプログラム、並びに管理装置、該管理装置による制御方法、及び該制御方法を実行するプログラム |
US20060168580A1 (en) * | 2003-02-21 | 2006-07-27 | Shunji Harada | Software-management system, recording medium, and information-processing device |
US20040202324A1 (en) * | 2003-04-11 | 2004-10-14 | Matsushita Electric Industrial Co., Ltd | Program electronic watermark processing apparatus |
US7249353B2 (en) * | 2003-04-17 | 2007-07-24 | Hewlett-Packard Development Company, L.P. | Image-formation device firmware having modular upgrade capability |
KR100568228B1 (ko) * | 2003-05-20 | 2006-04-07 | 삼성전자주식회사 | 고유번호를 이용한 프로그램 탬퍼 방지 방법과 난독처리된 프로그램 업그레이드 방법, 상기 방법을 위한 장치 |
JP4676724B2 (ja) * | 2003-08-12 | 2011-04-27 | 株式会社リコー | 情報処理装置、情報処理方法、情報処理プログラム、及び記録媒体 |
CA2548546A1 (en) * | 2003-12-18 | 2005-06-30 | Matsushita Electric Industrial Co., Ltd. | Method for storing, authenticalting and executing an application program |
JP4335707B2 (ja) * | 2004-02-06 | 2009-09-30 | Necエレクトロニクス株式会社 | プログラム改竄検出装置、及びプログラム改竄検出プログラムおよびプログラム改竄検出方法 |
US7325126B2 (en) * | 2004-03-05 | 2008-01-29 | Microsoft Corporation | System and method for distributed module authentication |
CN100580611C (zh) * | 2004-06-30 | 2010-01-13 | 松下电器产业株式会社 | 程序执行设备及该程序执行方法 |
JP4475511B2 (ja) * | 2004-07-02 | 2010-06-09 | 日本電信電話株式会社 | 発展型コンテンツ作成装置、コンテンツ発展装置及びそのプログラム |
GB2419198A (en) * | 2004-10-14 | 2006-04-19 | Hewlett Packard Development Co | Identifying performance affecting causes in a data storage system |
JP4496061B2 (ja) * | 2004-11-11 | 2010-07-07 | パナソニック株式会社 | 機密情報処理装置 |
JP4828517B2 (ja) * | 2005-02-10 | 2011-11-30 | パナソニック株式会社 | プログラム変換装置及びプログラム実行装置 |
US20080168562A1 (en) * | 2005-02-25 | 2008-07-10 | Tomoyuki Haga | Secure Processing Device and Secure Processing System |
US20060248107A1 (en) * | 2005-04-11 | 2006-11-02 | Coronado Juan A | Apparatus system and method for updating software while preserving system state |
US7509528B2 (en) * | 2006-03-10 | 2009-03-24 | Alcatel Lucent | Transaction bundling for improved redundancy |
US8645942B2 (en) * | 2006-05-26 | 2014-02-04 | Oracle International Corporation | Software update syndication |
JP2008016014A (ja) * | 2006-06-07 | 2008-01-24 | Matsushita Electric Ind Co Ltd | 機密情報保護システム、機密情報復元装置、及び割符生成装置 |
US20080005800A1 (en) * | 2006-06-07 | 2008-01-03 | Kaoru Yokota | Confidential information protection system, confidential information restoring device, and tally generating device |
US7424398B2 (en) * | 2006-06-22 | 2008-09-09 | Lexmark International, Inc. | Boot validation system and method |
JP4048382B1 (ja) | 2006-09-01 | 2008-02-20 | 富士ゼロックス株式会社 | 情報処理システムおよびプログラム |
US20080244557A1 (en) * | 2007-04-02 | 2008-10-02 | Inventec Corporation | Knowledge management system and method for implementing management software using the same |
US9053323B2 (en) * | 2007-04-13 | 2015-06-09 | Hewlett-Packard Development Company, L.P. | Trusted component update system and method |
US8612773B2 (en) * | 2007-05-03 | 2013-12-17 | International Business Machines Corporation | Method and system for software installation |
US20080301667A1 (en) * | 2007-05-30 | 2008-12-04 | Google Inc. | Dynamically Updating Software Applications on a Device |
US8225105B2 (en) * | 2007-08-13 | 2012-07-17 | International Business Machines Corporation | Method and apparatus for verifying integrity of computer system vital data components |
-
2008
- 2008-11-06 EP EP08873668.1A patent/EP2259205B1/en active Active
- 2008-11-06 WO PCT/JP2008/003207 patent/WO2009118800A1/ja active Application Filing
- 2008-11-06 US US12/601,894 patent/US8464347B2/en active Active
- 2008-11-06 JP JP2010505048A patent/JP4932033B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JPWO2009118800A1 (ja) | 2011-07-21 |
EP2259205B1 (en) | 2018-04-25 |
WO2009118800A1 (ja) | 2009-10-01 |
EP2259205A1 (en) | 2010-12-08 |
EP2259205A4 (en) | 2012-12-26 |
US8464347B2 (en) | 2013-06-11 |
US20100180343A1 (en) | 2010-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4932033B2 (ja) | ソフトウェア更新装置、ソフトウェア更新システム、改ざん検証方法、及び改ざん検証プログラム | |
JP4932034B2 (ja) | ソフトウェア更新装置、ソフトウェア更新システム、無効化方法、及び無効化プログラム | |
JP5411282B2 (ja) | 情報処理装置、管理装置、不正モジュール検知システム、不正モジュール検知方法、不正モジュール検知プログラムを記録している記録媒体、管理方法、管理プログラムを記録している記録媒体および集積回路 | |
US8935530B2 (en) | Control device and computer readable medium | |
TWI567579B (zh) | 用於對硬體裝置提供金鑰的方法和設備 | |
JP4763368B2 (ja) | 通信カード、機密情報処理システム、機密情報転送方法およびプログラム | |
US8707430B2 (en) | Tampering monitoring system, management apparatus, and management method | |
US8745735B2 (en) | Monitoring system, program-executing device, monitoring program, recording medium and integrated circuit | |
US8516574B2 (en) | Software update system, management apparatus, recording medium, and integrated circuit | |
US8769312B2 (en) | Tampering monitoring system, protection control module, and detection module | |
JP6720581B2 (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム | |
JPWO2010041462A1 (ja) | 情報処理装置、情報処理方法、情報処理プログラム及び集積回路 | |
CN102656592A (zh) | 信息处理设备、信息处理系统、软件例程执行方法和远程认证方法 | |
JP5453323B2 (ja) | 改竄監視システム、管理装置及び改竄管理方法 | |
KR20180066111A (ko) | 시큐리티 장치, 및 시큐리티 방법 | |
KR20160098756A (ko) | 하드웨어 보안 모듈, 상기 하드웨어 보안 모듈에 저장된 무결성 검증 값을 업데이트하는 방법, 상기 하드웨어 보안 모듈을 이용하여 단말에 저장된 프로그램을 업데이트하는 방법 | |
US8800038B2 (en) | Tampering monitoring system, control device, and tampering control method | |
CN113626803A (zh) | 一种bmc固件的保护方法、系统、装置及可读存储介质 | |
JP2008033512A (ja) | セキュリティチップ及びプラットフォーム | |
JP2004282391A (ja) | 認証機能を有する情報処理装置及び認証機能付与方法 | |
EP3460705A1 (en) | Distributed deployment of unique firmware | |
JP2023164669A (ja) | 情報処理装置、サーバ装置、通信システム、通信方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110829 |
|
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: 20120117 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120214 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4932033 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150224 Year of fee payment: 3 |