JP2011003020A - Computer system and program starting method - Google Patents

Computer system and program starting method Download PDF

Info

Publication number
JP2011003020A
JP2011003020A JP2009145671A JP2009145671A JP2011003020A JP 2011003020 A JP2011003020 A JP 2011003020A JP 2009145671 A JP2009145671 A JP 2009145671A JP 2009145671 A JP2009145671 A JP 2009145671A JP 2011003020 A JP2011003020 A JP 2011003020A
Authority
JP
Japan
Prior art keywords
program
client device
server device
update
client
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.)
Pending
Application number
JP2009145671A
Other languages
Japanese (ja)
Inventor
Hisashi Oguma
寿 小熊
Kensuke Hanaoka
健介 花岡
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.)
Toyota Motor Corp
Toyota InfoTechnology Center Co Ltd
Original Assignee
Toyota Motor Corp
Toyota InfoTechnology Center Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toyota Motor Corp, Toyota InfoTechnology Center Co Ltd filed Critical Toyota Motor Corp
Priority to JP2009145671A priority Critical patent/JP2011003020A/en
Publication of JP2011003020A publication Critical patent/JP2011003020A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

PROBLEM TO BE SOLVED: To provide a technology to safely start a program.SOLUTION: An OS program is encrypted or given an electronic signature and stored in a storage of a client device, and the program is obtained from a server device by a boot program which is executed when starting a terminal. The program obtained from the server device is a verification program which decrypts or verifies a signature of an execution object program, and the program is executed after the safety of the OS program is checked by the verification program. When updating the OS program, the server device transmits the reboot program to the client device after downloading the update program. If the safety of the server device is secured, the OS program can be safely started only by securing the safety of communication between client servers without providing a special device to the client device.

Description

本発明は、プログラムを安全に実行可能なコンピューターシステムおよびプログラム起動方法に関する。   The present invention relates to a computer system and a program starting method that can safely execute a program.

コンピューターシステムの普及に伴い、セキュリティ保証の重要性がますます高まっている。プログラムとして機能するソフトウェアコードそのものを保護するために、物理的または仮想的に作業領域を分割して保護する方法が考えられている(特許文献1)。また、TCG(Trusted Computing Group)は、TPM(Trusted Platform Module)と呼ばれるセキュリティチップの規格を策定している。TPMを用いることで、ハードウェアの改変やソフトウェアの改ざんがないことを連鎖的に検証してプログラムを起動することで、セキュリティを確保できる。   With the spread of computer systems, the importance of security assurance is increasing. In order to protect the software code itself that functions as a program, a method of protecting the work area by physically or virtually dividing it is considered (Patent Document 1). The TCG (Trusted Computing Group) has formulated a security chip standard called TPM (Trusted Platform Module). By using the TPM, security can be ensured by starting the program after continually verifying that there is no hardware alteration or software alteration.

ソフトウェアを実行するシステムでは、製品出荷後でもソフトウェアを更新することで、機能の修正や追加を行うことができる。このような場合はネットワークを介して修正されたプログラムを取得することになるが、取得したプログラムが改ざんされていないことを検証する必要がある。電子証明書を利用して、かつ端末に常駐するアプリケーションから隠蔽することで安全なプログラムの取得および実行を実現する方法が提案されている(特許文献2)。   In a system that executes software, functions can be corrected or added by updating the software even after the product is shipped. In such a case, a corrected program is acquired via the network, but it is necessary to verify that the acquired program has not been tampered with. There has been proposed a method for realizing acquisition and execution of a secure program by using an electronic certificate and hiding it from an application residing in a terminal (Patent Document 2).

特開2004−199693号公報Japanese Patent Laid-Open No. 2004-199693 特表2007−528064号公報Special table 2007-528064 gazette 特開2002−24175号公報JP 2002-24175 A

しかしながら、特許文献1に記載された方法のように、端末に特殊なハードウェアを導入すると、数多くの端末が存在するシステムでは導入コストが肥大してしまう。たとえば、自動車には多数のECU(Electronic Control Unit)が搭載されており、ECUの搭
載数は今後ますます増加することが予想される。このような多数のECUの全てに特殊なハードウェアを導入することはコストの観点からも望ましくない。
However, when special hardware is introduced into a terminal as in the method described in Patent Document 1, the introduction cost is increased in a system in which many terminals exist. For example, automobiles are equipped with a large number of ECUs (Electronic Control Units), and the number of ECUs to be mounted is expected to increase in the future. Introducing special hardware to all of such a large number of ECUs is not desirable from the viewpoint of cost.

また、特許文献2に記載された方法は、資源に乏しいコンピューターを対象としたダウンロードを想定しているが、ある程度の大きさを持つプログラムを対象としているため即時応答性などダウンロード時間を短くしたいという要求を満たすことは難しい。   In addition, the method described in Patent Document 2 assumes download for a computer with scarce resources, but it is intended for a program having a certain size, so it is desired to shorten download time such as immediate response. It is difficult to meet the requirements.

本発明はこのような問題点を考慮してなされたものであり、その目的は、低コストにコンピューターにおいてプログラムを安全に起動する技術を提供することにある。   The present invention has been made in consideration of such problems, and an object of the present invention is to provide a technique for safely starting a program in a computer at a low cost.

上記目的を達成するために本発明では、クライアント装置の起動時に、サーバー装置から得られる情報に基づいて実行対象プログラムの正当性を検証してから、そのプログラムを実行する。これにより、実行対象のプログラムが改ざんされているか否かを判別可能である。   In order to achieve the above object, according to the present invention, when the client device is activated, the validity of the execution target program is verified based on information obtained from the server device, and then the program is executed. This makes it possible to determine whether or not the execution target program has been tampered with.

〈第一の態様〉
本発明の第一の態様に係るコンピューターシステムは、互いに通信可能なクライアント装置とサーバー装置とから構成されるコンピューターシステムである。クライアント装置は、装置起動時に実行されるプログラムであるブートプログラムを記憶する第1の記憶手段と、実行対象のプログラムを記憶する第2の記憶手段とを有する。サーバー装置は、前記実行対象のプログラムを検証および起動するための検証プログラムを記憶する記憶手段を有する。ここで、ブートプログラムは、サーバー装置からプログラムを取得して実行する処理を含む。また、サーバー装置は、クライアント装置のブートプログラムからの要求に応じて検証プログラムをクライアント装置に送信し、クライアント装置は、取得した検証プログラムを用いて実行対象のプログラムを検証し、検証に成功した後に当該プログラムを実行する。
<First embodiment>
The computer system according to the first aspect of the present invention is a computer system including a client device and a server device that can communicate with each other. The client device includes a first storage unit that stores a boot program that is a program executed when the device is activated, and a second storage unit that stores a program to be executed. The server device has storage means for storing a verification program for verifying and starting the execution target program. Here, the boot program includes processing for acquiring and executing the program from the server device. In addition, the server device transmits a verification program to the client device in response to a request from the boot program of the client device, and the client device verifies the execution target program using the acquired verification program and succeeds in verification. Run the program.

クライアント装置に記憶されている実行対象プログラムの正当性を検証する手法として、復号処理による方法と電子署名による方法とを挙げることができる。   As a method for verifying the validity of the execution target program stored in the client device, a method using a decryption process and a method using a digital signature can be cited.

プログラム検証の第1の手法は、実行対象プログラムを暗号化された状態で第2の記憶手段に記憶しておき、検証プログラムはそのプログラムを復号するという手法である。実行対象プログラムが暗号化されて保存されている場合は、正しく復号できた場合にプログラムが改ざんされていないと判断できる。第三者によって改ざんが行われた場合には正しく復号できないので、改ざんを検知可能である。さらに、第三者から実行対象プログラムを秘匿化することができる。   The first method of program verification is a method in which the execution target program is stored in the second storage means in an encrypted state, and the verification program decrypts the program. When the execution target program is encrypted and saved, it can be determined that the program has not been tampered with when the execution target program is correctly decrypted. If the data is altered by a third party, the data cannot be decrypted correctly, so that the alteration can be detected. Furthermore, the execution target program can be concealed from a third party.

ブートプログラムの安全性を保証するためには、第1の記憶手段として書き換え不可能あるいは書き換えが困難な記憶手段を採用すればよい。一方、実行対象プログラムを記憶する第2の記憶手段としては、プログラム更新などを可能とするために書き換え可能な記憶手段を採用することが好ましい。   In order to guarantee the safety of the boot program, a storage means that cannot be rewritten or difficult to rewrite may be employed as the first storage means. On the other hand, as the second storage means for storing the execution target program, it is preferable to adopt a rewritable storage means for enabling program update or the like.

また、サーバー装置から取得されるプログラムの正当性を検証するためには、クライアント・サーバー間の通信に秘匿通信または署名付き通信を利用することが好ましい。このような秘匿通信または署名付き通信によりサーバー装置から送信されるプログラム等の正当性を検証できる。なお、サーバー装置からクライアント装置への通信に公開鍵暗号方式による署名付き通信を採用することが好ましい。この場合は、クライアント装置にサーバー装置の公開鍵を格納するだけで良く、公開鍵は秘匿化する必要がないので改ざん不可能なマスクロムなどに格納しておけば十分なためである。つまり、クライアント装置側に特殊な装置を要しないという利点がある。ただし、共通鍵暗号方式を採用して秘匿通信を行ったり、クライアント装置の秘密鍵を要する公開鍵暗号方式の通信(サーバーからクライアントへの秘匿通信およびクライアントからサーバーへの署名付き通信)を行う場合はクライアント装置側にセキュリティチップ(耐タンパデバイス)を設ける必要があるが、本発明はこのような方式を除外するものではない。   In order to verify the validity of the program acquired from the server device, it is preferable to use secret communication or signed communication for communication between the client and the server. It is possible to verify the legitimacy of a program or the like transmitted from the server device by such secret communication or signed communication. In addition, it is preferable to employ communication with a signature by a public key cryptosystem for communication from the server device to the client device. In this case, it is only necessary to store the public key of the server device in the client device, and since it is not necessary to conceal the public key, it is sufficient to store it in a mask chrome that cannot be tampered with. That is, there is an advantage that no special device is required on the client device side. However, when secret communication is performed using a common key encryption method, or communication using a public key encryption method that requires the secret key of the client device (secret communication from the server to the client and communication with a signature from the client to the server) Needs to be provided with a security chip (tamper resistant device) on the client device side, but the present invention does not exclude such a method.

第1の手法においては、実行対象のプログラムをクライアント装置に暗号化して記憶しているので、第三者がその内容を知ることができないという利点がある。ただし、この暗号化プログラムを復号するための検証プログラム(ここでは復号処理プログラムという)がクライアント・サーバー間で通信される。この通信が平文で行われると、第三者が復号処理プログラムを取得可能であり、暗号化プログラムを復号できてしまう。したがって、実行対象プログラムを第三者から秘匿するためには、復号処理プログラムを通信により入手した後は実行対象プログラムの暗号鍵または暗号アルゴリズムを変更することが好ましい。そのために、クライアント装置は、第2の記憶手段に記憶されているプログラムとは異なる暗号アルゴリズムまたは異なる暗号鍵を用いて暗号化された、実行対象のプログラムをサーバー装置から取得し、第2の記憶手段に格納する機能を有することが好ましい。
また、サーバー装置は、前記クライアント装置へ送信した実行対象のプログラムを復号するための暗号アルゴリズムおよび暗号鍵を記憶しておき、次に前記クライアント装置のブートプログラムからプログラムの要求があったときに、クライアント装置に記憶されている実行対象のプログラムに対応した検証プログラムをクライアント装置へ送信することが好ましい。この場合、新しい暗号方式による暗号化プログラムの取得は、クライアント装置の実行終了時に行うことが処理負荷の観点から好ましい。
In the first method, since the execution target program is encrypted and stored in the client device, there is an advantage that the contents cannot be known by a third party. However, a verification program (hereinafter referred to as a decryption processing program) for decrypting the encryption program is communicated between the client and the server. If this communication is performed in plain text, a third party can acquire the decryption processing program, and the encryption program can be decrypted. Therefore, in order to keep the execution target program secret from a third party, it is preferable to change the encryption key or the encryption algorithm of the execution target program after obtaining the decryption processing program by communication. For this purpose, the client device acquires a program to be executed, which is encrypted using a different encryption algorithm or a different encryption key from the program stored in the second storage means, from the server device, and stores it in the second storage. It is preferable to have a function of storing in the means.
Further, the server device stores an encryption algorithm and an encryption key for decrypting the execution target program transmitted to the client device, and then when a program request is received from the boot program of the client device, It is preferable to transmit a verification program corresponding to the execution target program stored in the client device to the client device. In this case, it is preferable from the viewpoint of processing load that acquisition of the encryption program by the new encryption method is performed at the end of execution of the client device.

また、上記のように実行対象プログラムの暗号鍵または暗号アルゴリズムを変更する場合、サーバー装置は暗号化方法に対応した復号処理プログラムをクライアント装置に送信しなければならない。そのため、サーバー装置はクライアント装置へ送信した実行対象プログラムを復号するための暗号アルゴリズムおよび暗号鍵を記憶する。そして、クライアント装置のブートプログラムからプログラムの要求があったときに、クライアント装置に記憶されている実行対象プログラムに対応した復号処理プログラムをクライアント装置に送信する。   Further, when changing the encryption key or encryption algorithm of the execution target program as described above, the server device must transmit a decryption processing program corresponding to the encryption method to the client device. Therefore, the server device stores an encryption algorithm and an encryption key for decrypting the execution target program transmitted to the client device. When a program request is received from the boot program of the client device, a decryption processing program corresponding to the execution target program stored in the client device is transmitted to the client device.

また、実行対象プログラムを更新する場合は、クライアント装置のブートプログラムがサーバー装置にプログラムを要求したときに、サーバー装置が更新作業用プログラムをクライアント装置に送信すればよい。ここで、更新作業用プログラムは、新しい実行対象プログラムを通信により取得して第2の記憶手段に格納し、その後に再起動を行うプログラムである。クライアント装置のブートプログラムは、サーバー装置から取得したプログラムを実行するので、更新作業用プログラムに含まれる処理、すなわち、更新および再起動がクライアント装置において実行される。また、ここではブートプログラムによるサーバー装置へのプログラム要求に対してサーバー装置が更新作業用プログラムを送信しているが、クライアント装置の終了時に実行されるプログラム(停止処理プログラム)がサーバー装置へプログラムを要求し、サーバー装置はこの要求に対して更新作業用プログラムを送信しても構わない。起動前に更新を行う手法は更新があった場合に新しいプログラムを実行できるというメリットがある一方、プログラム起動までに時間を要するというデメリットがある。停止前に更新を行う手法は、プログラム起動が早くなるというメリットがある一方、更新があった場合に古いプログラムを実行してしまうというデメリットがある。したがって、更新の重要性に応じて起動前もしくは停止前のいずれで更新処理を行うか切り替えることも好ましい。   When the execution target program is updated, the server device may transmit the update work program to the client device when the boot program of the client device requests the server device for the program. Here, the update work program is a program that acquires a new execution target program by communication, stores it in the second storage means, and then restarts the program. Since the boot program of the client device executes the program acquired from the server device, the processing included in the update work program, that is, update and restart are executed in the client device. Also, here, the server device transmits an update work program in response to a program request to the server device by the boot program, but a program (stop processing program) executed when the client device is terminated sends a program to the server device. The server apparatus may send an update work program in response to this request. The method of updating before starting has a merit that a new program can be executed when there is an update, but has a demerit that it takes time to start the program. The method of updating before stopping has a merit that the program is started earlier, but has a demerit that an old program is executed when there is an update. Therefore, it is also preferable to switch whether to perform the update process before starting or stopping according to the importance of updating.

プログラム検証の第2の手法は、実行対象プログラムを電子署名が付与された状態で第2の記憶手段に記憶しておき、検証プログラムは署名検証するという手法である。実行対象プログラムに署名が付与されている場合は、プログラム本体から算出される認証コードと付与された署名とが一致する場合にプログラムが改ざんされていないと判断できる。実行対象プログラムを暗号化して記憶しておき実行時に復号処理を施す第1の手法は、プログラムの起動に比較的時間を要する。これに対して署名検証による本手法は、実行対象プログラムが平文の状態で格納されるため第三者がその内容を知ることができてしまうが、より高速に検証処理が実施できるという利点がある。   The second method of program verification is a method in which an execution target program is stored in a second storage unit with an electronic signature attached, and the verification program verifies the signature. When a signature is assigned to the execution target program, it can be determined that the program has not been tampered with when the authentication code calculated from the program body matches the assigned signature. The first method of encrypting and storing an execution target program and performing a decryption process at the time of execution requires a relatively long time to start the program. On the other hand, this method based on signature verification has the advantage that verification processing can be performed at a higher speed, although the execution target program is stored in a plain text state so that a third party can know the contents. .

第2の手法には、サーバー装置から取得した検証プログラムに対する検証と、第2の記憶手段に記憶されている実行対象プログラムに対する検証の2つの検証動作がある。ここで、検証プログラムに対する検証処理は、クライアント装置の第1の記憶手段に格納されるものであるため、変更できない。そこで、長期間運用するために、鍵長を長くするなど堅牢なプログラムを用いる必要があり、比較的処理速度が遅くなる。これに対して実行対象プログラムの検証は、サーバー装置から送られる検証プログラムによって行われるので変更が可能である。そこで、その時点において高速な暗号アルゴリズムを用いることが好ましい。検証プログラムは実行対象プログラムと比較してサイズが小さいので、検証プログラムの検証に低速なアルゴリズムを利用し、実行対象プログラムに高速なアルゴリズム
を利用することで、検証処理に要する全体の時間は短くすることができる。
The second method includes two verification operations: verification for a verification program acquired from the server device and verification for an execution target program stored in the second storage unit. Here, the verification process for the verification program cannot be changed because it is stored in the first storage means of the client device. Therefore, in order to operate for a long period of time, it is necessary to use a robust program such as increasing the key length, and the processing speed is relatively slow. On the other hand, the execution target program is verified by a verification program sent from the server device and can be changed. Therefore, it is preferable to use a high-speed encryption algorithm at that time. Since the verification program is smaller in size than the execution target program, the overall time required for the verification process is shortened by using a low-speed algorithm for verification of the verification program and using a high-speed algorithm for the execution target program. be able to.

第2の手法においても、ブートプログラムを記憶する第1の記憶手段として書き換え不可能または書き換えが困難な記憶手段を採用し、実行対象プログラムを記憶する第2の記憶手段として書き換え可能な記憶手段を採用することが好ましい。また、クライアント・サーバー間の通信も、第1の手法と同様に、秘匿通信または署名付き通信を利用することが好ましい。   Also in the second method, a rewritable storage means is employed as the first storage means for storing the boot program, and a rewritable storage means is used as the second storage means for storing the execution target program. It is preferable to adopt. As for the communication between the client and the server, similarly to the first method, it is preferable to use a secret communication or a signed communication.

また、第2の手法においても、第1の手法で述べたのと同様の手法により実行対象プログラムの更新を行うことが好ましい。本手法においても、第1の手法の場合と同様に種々のタイミングで更新処理を行っても良い。ただし、第2の手法においてはプログラムを高速に起動することを目的としているので、クライアント装置の実行終了時にサーバー装置から更新作業用プログラムを取得して更新処理を行うことが好ましい。   Also in the second method, it is preferable to update the execution target program by the same method as described in the first method. Also in this method, the update process may be performed at various timings as in the case of the first method. However, since the second method aims to start the program at a high speed, it is preferable to perform the update process by obtaining the update work program from the server device when the execution of the client device is completed.

〈第二の態様〉
本発明の第二の態様では、サーバー装置が実行対象プログラムの任意のアドレスについてハッシュ値を要求し、これが正しいハッシュ値である場合に実行対象プログラムが正しいと判断する。サーバー装置側では正しいハッシュ値を把握できるように、クライアント装置の第2の記憶手段に格納されているプログラムの状態を管理する管理手段を設けることが好ましい。
<Second embodiment>
In the second aspect of the present invention, the server device requests a hash value for an arbitrary address of the execution target program, and determines that the execution target program is correct when this is a correct hash value. It is preferable to provide management means for managing the state of the program stored in the second storage means of the client device so that the server device can grasp the correct hash value.

第二の態様では、実行対象プログラムの更新処理が失敗に終わった場合にも正常に動作可能とする。更新処理が途中で異常終了した場合は、第2の記憶手段内に格納されている実行対象プログラムは一部が書き換え済みで、一部が古いままとなる。このような状態で復号処理や署名検証などの検証動作を行っても検証を通過せず、第一の態様による方法ではクライアント装置が起動できなくなる。そこで、本手法のようにサーバー装置側でクライアント装置のプログラムの更新状況を管理し、内容を把握しているアドレスについてのハッシュ値をクライアント装置に要求する。このように更新状況をサーバー装置側で管理し、ハッシュ値を用いたプログラム検証を行うため、更新処理が途中で異常終了した場合であってもクライアント装置の正当性を検証可能である。   In the second aspect, even when the update process of the execution target program fails, the normal operation is enabled. If the update process is terminated abnormally, a part of the execution target program stored in the second storage means has been rewritten, and part of the program remains old. Even if a verification operation such as decryption processing or signature verification is performed in such a state, the verification does not pass and the client apparatus cannot be activated by the method according to the first aspect. Therefore, as in this method, the server device side manages the update status of the program of the client device, and requests the client device for a hash value for the address whose contents are known. As described above, since the update status is managed on the server device side and the program verification using the hash value is performed, it is possible to verify the validity of the client device even when the update processing ends abnormally.

本態様において、実行対象のプログラムを更新する場合は、サーバー装置が新しい実行対象プログラムを所定のサイズに分割して1つずつクライアント装置へ送信し、クライアント装置は、取得した更新プログラムで第2の記憶手段の書き換えが完了した場合に、その旨をサーバー装置へ通知することが好ましい。そして、サーバー装置の管理手段が、クライアント装置からの書き換え完了通知に基づいて、クライアント装置において実行対象プログラムの更新がどの部分まで完了したかを管理することが好ましい。つまり、管理手段は、クライアント装置において更新が完了したアドレス領域(更新プログラムを送信しかつ書き換え完了通知を受領したアドレス領域)、更新が未完了なアドレス領域(更新プログラムを送信していないアドレス領域)、更新の完了・未完了が不明なアドレス領域(更新プログラムを送信したが書き換え完了通知を受領していないアドレス領域)とを管理することが好ましい。このような構成を採用することで、クライアント装置における実行対象プログラムが、どの部分まで更新が完了し、どの部分は更新が行われていないかが分かる。また、どの部分の更新中に異常終了が発生したかも分かる。そこで、サーバー装置は、更新完了または未完了と判断できるアドレスを指定してクライアント装置にハッシュ値を要求することができる。なお、ハッシュ値算出対象のアドレスは、更新が完了または未完了と把握されるアドレスの中からランダムに決定されることが好ましい。   In this aspect, when the execution target program is updated, the server device divides the new execution target program into a predetermined size and transmits the program to the client device one by one. When rewriting of the storage means is completed, it is preferable to notify the server device to that effect. Then, it is preferable that the management unit of the server device manages to which part the update of the execution target program is completed in the client device based on the rewrite completion notification from the client device. In other words, the management means includes an address area that has been updated in the client device (an address area that has transmitted the update program and has received a rewrite completion notification), an address area that has not been updated yet (an address area that has not transmitted the update program) It is preferable to manage the address area where the completion / uncompletion of the update is unknown (the address area where the update program is transmitted but the rewrite completion notification is not received). By adopting such a configuration, it is possible to know to what part the execution target program in the client device has been updated and which part has not been updated. In addition, it can be seen which part of the update was abnormally terminated. Thus, the server device can request a hash value from the client device by designating an address that can be determined to be update completion or incomplete. Note that it is preferable that the hash value calculation target address is determined at random from addresses for which update is recognized as being completed or not completed.

クライアント装置において、実行対象プログラムの更新処理が完了していない場合(途中で中断した場合)は、指定されたアドレスについてのハッシュ値に基づく検証が成功し
た後に、サーバー装置が更新処理を再開することが好ましい。一方、実行対象プログラムの更新処理が正常に完了している場合には、上記検証が成功した後に、実行対象プログラムを実施すべき旨の指示をサーバー装置からクライアント装置に送信する。
In the client device, if the update processing of the execution target program is not completed (if interrupted in the middle), the server device restarts the update processing after the verification based on the hash value for the specified address is successful. Is preferred. On the other hand, when the update process of the execution target program is normally completed, after the verification is successful, an instruction to execute the execution target program is transmitted from the server apparatus to the client apparatus.

このようにして、第二の態様では実行対象プログラムの更新処理が途中で異常終了した場合でも、クライアント装置に記憶されている実行対象プログラムを検証できる。なお、更新処理が途中で異常終了した場合の対処方法として、記憶手段を二重にしておき更新に失敗した場合にはロールバックする手法も存在するが、多くの計算機資源が必要となる。本態様では、多くの計算機資源を必要としないという利点がある。   In this manner, in the second aspect, even when the execution target program update process ends abnormally, the execution target program stored in the client device can be verified. In addition, as a countermeasure for the abnormal termination of the update process in the middle, there is a method of doubling the storage means and rolling back when the update fails, but a lot of computer resources are required. In this aspect, there is an advantage that many computer resources are not required.

なお、本発明は、上記手段の少なくとも一部を有するコンピューターシステムとして捉えることができる。また、本発明は、上記処理の少なくとも一部を含むプログラム起動方法、またはその方法を実行するプログラムとして捉えることもできる。上記手段および処理の各々は可能な限り互いに組み合わせて本発明を構成することができる。   The present invention can be understood as a computer system having at least a part of the above means. The present invention can also be understood as a program starting method including at least a part of the above processing or a program for executing the method. Each of the above means and processes can be combined with each other as much as possible to constitute the present invention.

本発明によれば、コンピューターにおける安全なプログラム起動を低コストに実現できる。   According to the present invention, safe program activation in a computer can be realized at low cost.

第1の実施形態に係るコンピューターシステムの概略構成を示す図。1 is a diagram showing a schematic configuration of a computer system according to a first embodiment. 第1の実施形態における各プログラムが有する機能を説明する図。The figure explaining the function which each program in a 1st embodiment has. 第1の実施形態におけるクライアント端末起動から停止までの全体的な処理の流れを示すフローチャート。3 is a flowchart showing an overall processing flow from start to stop of a client terminal according to the first embodiment. 第1の実施形態におけるサーバー装置が行う処理の流れを示すフローチャート。The flowchart which shows the flow of the process which the server apparatus in 1st Embodiment performs. 第1の実施形態におけるクライアント装置が端末起動時に行う処理の流れを示すフローチャート。The flowchart which shows the flow of the process which the client apparatus in 1st Embodiment performs at the time of terminal activation. 第1の実施形態におけるクライアント装置が端末停止時に行う処理の流れを示すフローチャート。The flowchart which shows the flow of the process which the client apparatus in 1st Embodiment performs when a terminal stops. 第2の実施形態に係るコンピューターシステムの概略構成を示す図。The figure which shows schematic structure of the computer system which concerns on 2nd Embodiment. 第2の実施形態のおける各プログラムが有する機能を説明する図。The figure explaining the function which each program in a 2nd embodiment has. 第2の実施形態におけるクライアント装置起動から停止までの全体的な処理の流れを示すフローチャート。9 is a flowchart showing an overall processing flow from start to stop of a client device according to the second embodiment. 第2の実施形態におけるサーバー装置が行う処理の流れを示すフローチャート。The flowchart which shows the flow of the process which the server apparatus in 2nd Embodiment performs. 第2の実施形態におけるクライアント装置が端末起動時に行う処理の流れを示すフローチャート。The flowchart which shows the flow of the process which the client apparatus in 2nd Embodiment performs at the time of terminal activation. 第2の実施形態におけるクライアント装置が端末停止時に行う処理の流れを示すフローチャート。The flowchart which shows the flow of the process which the client apparatus in 2nd Embodiment performs when a terminal stops. 第3の実施形態に係るコンピューターシステムの概略構成を示す図。The figure which shows schematic structure of the computer system which concerns on 3rd Embodiment. 第3の実施形態における各プログラムが有する機能を説明する図。The figure explaining the function which each program in a 3rd embodiment has. 第3の実施形態における更新プログラム管理部が有するクライアント装置の更新状況を記憶するためのテーブルの例。An example of the table for memorize | storing the update condition of the client apparatus which the update program management part in 3rd Embodiment has. 第3の実施形態におけるクライアント装置停止時における処理の流れを示す図。The figure which shows the flow of a process at the time of the client apparatus stop in 3rd Embodiment. 第3の実施形態におけるクライアント装置起動時における処理の流れを示す図。The figure which shows the flow of a process at the time of the client apparatus starting in 3rd Embodiment.

以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。   Exemplary embodiments of the present invention will be described in detail below with reference to the drawings.

(第1の実施形態)
〈構成〉
図1は本実施形態に係るコンピューターシステムの概略構成を示す図である。本実施形態に係るコンピューターシステムは、複数のクライアント装置100と、サーバー装置200とから構成される。各クライアント装置100はサーバー装置200と通信可能に構成されている。本システムを車載システムに適用した場合、クライアント装置100は個々のECU(Electronic Control Unit)に相当するものであり、クライアント装置10
0は計算機資源の乏しい装置である。サーバー装置200はシステム内に1台のみあればよいものであるため、豊富な計算機資源を備えセキュリティが確保された装置として構成することができる。サーバー装置200は、既存の車載システムに新しい装置として追加されても良いが、カーナビゲーション装置などの汎用的な処理を行う装置の一機能として実装されても良い。なお、本実施形態に係るコンピューターシステムは、車載システムだけでなくその他の任意にシステムに対して適用することができる。
(First embodiment)
<Constitution>
FIG. 1 is a diagram showing a schematic configuration of a computer system according to the present embodiment. The computer system according to this embodiment includes a plurality of client devices 100 and a server device 200. Each client device 100 is configured to be able to communicate with the server device 200. When this system is applied to an in-vehicle system, the client device 100 corresponds to each ECU (Electronic Control Unit), and the client device 10
0 is a device with scarce computer resources. Since only one server device 200 is required in the system, the server device 200 can be configured as a device having abundant computer resources and ensuring security. The server device 200 may be added as a new device to an existing in-vehicle system, but may be implemented as one function of a device that performs general-purpose processing such as a car navigation device. Note that the computer system according to the present embodiment can be applied not only to the in-vehicle system but also to any other system.

クライアント装置100およびサーバー装置200は、ハードウェアの観点からは、CPU(中央演算処理装置)、RAM、ROM、ストレージ装置、ネットワークインタフェース装置などから構成される。後述するように改ざんを防止するためにROMには書き換え不可能なマスクROMを採用することが好ましい。ストレージ装置としては、フラッシュメモリやHDD(Hard Disk Drive)、SSD(Solid State Drive)などを採用できる。また、クライアント装置100は後述するようにブート時にサーバー装置200へアクセスするのでネットワークブート可能な構成とする。たとえば、ネットワークインタフェース装置にPXE(Preboot eXcution Environment)に準拠したプログラムを搭載すればよい。また、サーバー装置200はクライアント装置に適切なプログラムを配信するTFTPサーバおよびクライアント装置にアドレスを割り当てるDHCPサーバー(またはBOOTPサーバー)として動作すればよい。   The client device 100 and the server device 200 are composed of a CPU (Central Processing Unit), a RAM, a ROM, a storage device, a network interface device, and the like from the viewpoint of hardware. As will be described later, it is preferable to employ a non-rewritable mask ROM as the ROM in order to prevent tampering. As the storage device, a flash memory, an HDD (Hard Disk Drive), an SSD (Solid State Drive), or the like can be adopted. Further, since the client device 100 accesses the server device 200 at the time of booting as will be described later, the client device 100 is configured to be network bootable. For example, a network interface device may be loaded with a program compliant with PXE (Preboot eXcution Environment). The server device 200 may operate as a TFTP server that distributes an appropriate program to the client device and a DHCP server (or BOOTP server) that assigns an address to the client device.

クライアント装置100は、コストを抑えるために特殊な機器をできるだけ利用せずに構成する。セキュリティ確保のためにはTPMなどのハードウェア耐タンパ性を有するセキュリティチップを用いてセキュアブート機能を用いればよいが、クライアント装置の数が多い環境では個々のクライアントに特殊なハードウェアを導入するとコストが高くなってしまう。本実施形態ではクライアント装置側にセキュリティチップなどのハードウェアを導入せずに、クライアント装置の安全なプログラム実行および安全なプログラム更新を実現する。なお、サーバー装置200はシステム内に一台のみでよいので、TPMモジュールなどによってセキュリティが確保された構成を採用する。   The client device 100 is configured using as little special equipment as possible in order to reduce costs. In order to ensure security, a secure boot function may be used using a security chip having hardware tamper resistance such as TPM, but in an environment where there are a large number of client devices, it is costly to introduce special hardware to each client. Becomes higher. In the present embodiment, secure program execution and secure program update of the client device are realized without introducing hardware such as a security chip on the client device side. Since only one server device 200 is required in the system, a configuration in which security is ensured by a TPM module or the like is adopted.

以下で説明するクライアント装置100およびサーバー装置200の各機能部は、ROMやストレージ装置内に格納されているプログラムをCPUが実行することにより実現される。ただし、これらの機能の内の一部については、専用のハードウェアによって構成しても構わない。   Each functional unit of the client device 100 and the server device 200 described below is realized by the CPU executing a program stored in the ROM or the storage device. However, some of these functions may be configured by dedicated hardware.

クライアント装置100は、起動プログラム記憶部101、終了プログラム記憶部102、公開鍵記憶部103、外部通信部104、ダウンロードプログラム展開・実行部105、OS記憶部106を含む。起動プログラム記憶部101は、クライアント装置100の電源投入時に実行される起動プログラム(ブートプログラム)を記憶する。終了プログラム記憶部102は、クライアント装置100の終了時に実行されるプログラムを記憶する。公開鍵記憶部103は、サーバー装置200の公開鍵を記憶する。これらの各記憶部は実体としてはマスクロムである。外部通信部104はネットワークを介してサーバー装置200と通信する機能部である。ダウンロードプログラム展開・実行部105は、サー
バー装置から取得(ダウンロード)したプログラムの署名検証を行い、RAMに展開して実行する機能部である。外部通信部104およびダウンロードプログラム展開・実行部105は、マスクROMに記憶されたプログラムをCPUが実行することによって実現される。
The client device 100 includes an activation program storage unit 101, an end program storage unit 102, a public key storage unit 103, an external communication unit 104, a download program development / execution unit 105, and an OS storage unit 106. The startup program storage unit 101 stores a startup program (boot program) that is executed when the client apparatus 100 is powered on. The end program storage unit 102 stores a program that is executed when the client apparatus 100 ends. The public key storage unit 103 stores the public key of the server device 200. Each of these storage units is actually mascarp. The external communication unit 104 is a functional unit that communicates with the server device 200 via a network. The download program expansion / execution unit 105 is a functional unit that verifies the signature of a program acquired (downloaded) from the server device, expands it in the RAM, and executes it. The external communication unit 104 and the download program development / execution unit 105 are realized by the CPU executing a program stored in the mask ROM.

OS記憶部106は、クライアント装置100が実行するシステムプログラム(OS:オペレーティングシステム)を記憶する。OS記憶部106は、実体としてはストレージ装置である。本実施形態においては、OS記憶部106にOSプログラムが暗号化されて記憶されている。なお、本実施形態ではクライアント装置が安全に実行すべきプログラムがOSプログラムである例を説明しているが、実行対象のプログラムはOSである必要はなく任意のプログラムであって構わない。   The OS storage unit 106 stores a system program (OS: operating system) executed by the client device 100. The OS storage unit 106 is an actual storage device. In the present embodiment, an OS program is encrypted and stored in the OS storage unit 106. In this embodiment, an example is described in which the program to be safely executed by the client apparatus is an OS program. However, the execution target program does not need to be the OS and may be an arbitrary program.

サーバー装置200は、外部通信部201、アップロードプログラム選択部202、アップロードプログラム記憶部203、更新プログラム記憶部206、暗号化部207、暗号方法記憶部208を含む。外部通信部201は、ネットワークを介してクライアント装置100と通信する機能部である。本実施形態においては、サーバー装置200からクライアント装置100への通信は、公開鍵暗号方式による電子署名付き通信により行う。アップロードプログラム選択部202は、クライアント装置100からプログラムを要求されたときに、どのプログラムをクライアント装置100へ送信するかを選択する機能部である。アップロードプログラム記憶部203は、クライアント装置100に送信されるプログラムを記憶するものであり、通常ブート用プログラム204と更新作業用プログラム205を記憶する。通常ブート用プログラム204は、クライアント装置100においてOS記憶部106に格納されているOSプログラムを検証・実行するためのプログラムである。更新作業用プログラム205は、クライアント装置100において新しいOSプログラムを取得してOS記憶部106に格納するためのプログラムである。更新プログラム記憶部206は、クライアント装置100のOSプログラムの最新版を記憶する。更新プログラム記憶部206に新しいバージョンのOSプログラムを格納するためには、サーバー装置200が安全の確保された通信によって外部装置から新しいOSプログラムを取得する必要があるが、電子署名などの認証技術によって達成すればよい。暗号化部207は、更新プログラム記憶部206に記憶されている更新プログラムに所定の暗号アルゴリズムおよび暗号鍵を適用して暗号化する。暗号方式としてはAESやトリプルDESなどの共通鍵暗号方式、RSAや楕円曲線暗号などの公開鍵暗号公式などいずれの手法であっても良い。ただし、クライアント装置のOSプログラム実行前に復号処理を行うことを考慮すると、より高速な共通鍵暗号方式を採用することが好ましい。暗号方法記憶部208は、クライアント装置100のOS記憶部106に格納されている暗号化されたOSの、暗号アルゴリズムおよび暗号鍵を記憶する。なお、クライアント装置ごとに暗号アルゴリズム等が異なるので、暗号方法記憶部208はそれぞれにクライアント装置に対する暗号アルゴリズム等を記憶する。   The server apparatus 200 includes an external communication unit 201, an upload program selection unit 202, an upload program storage unit 203, an update program storage unit 206, an encryption unit 207, and an encryption method storage unit 208. The external communication unit 201 is a functional unit that communicates with the client device 100 via a network. In this embodiment, communication from the server device 200 to the client device 100 is performed by communication with an electronic signature using a public key cryptosystem. The upload program selection unit 202 is a functional unit that selects which program is transmitted to the client device 100 when a program is requested from the client device 100. The upload program storage unit 203 stores a program transmitted to the client device 100, and stores a normal boot program 204 and an update work program 205. The normal boot program 204 is a program for verifying and executing the OS program stored in the OS storage unit 106 in the client device 100. The update work program 205 is a program for acquiring a new OS program in the client apparatus 100 and storing it in the OS storage unit 106. The update program storage unit 206 stores the latest version of the OS program of the client device 100. In order to store a new version of the OS program in the update program storage unit 206, the server device 200 needs to acquire a new OS program from an external device through secure communication, but it is possible to use an authentication technique such as an electronic signature. You can achieve it. The encryption unit 207 encrypts the update program stored in the update program storage unit 206 by applying a predetermined encryption algorithm and encryption key. As the encryption method, any method such as a common key encryption method such as AES or Triple DES or a public key encryption formula such as RSA or elliptic curve encryption may be used. However, considering that the decryption process is performed before the OS program of the client device is executed, it is preferable to adopt a higher-speed common key encryption method. The encryption method storage unit 208 stores the encryption algorithm and encryption key of the encrypted OS stored in the OS storage unit 106 of the client device 100. Since the encryption algorithm and the like are different for each client device, the encryption method storage unit 208 stores the encryption algorithm and the like for the client device.

図2は、本実施形態における各種のプログラムが有する機能を説明する図である。図2(a)はクライアント装置100に格納されるプログラムの機能を説明する図である。起動プログラム記憶部101に格納されている起動プログラムは、プログラム要求機能101a、署名検証機能101b、および展開プログラム実行機能101cを有する。プログラム要求機能101aは、サーバー装置200に対してプログラムを要求する。このプログラム要求は、クライアント端末の識別子(ID)と起動時のプログラム要求である旨の通知を伴う。署名検証機能101bは、サーバー装置200から取得したプログラムに付されている署名を、公開鍵記憶部103に格納されているサーバー装置200の公開鍵を利用して検証する。展開プログラム実行機能101cは、サーバー装置200から取得したプログラムをRAMに展開して実行する機能である。もちろん、取得したプログラムの署名検証に成功した場合のみプログラムを実行する。   FIG. 2 is a diagram for explaining functions of various programs in the present embodiment. FIG. 2A is a diagram for explaining functions of a program stored in the client device 100. The activation program stored in the activation program storage unit 101 has a program request function 101a, a signature verification function 101b, and an expansion program execution function 101c. The program request function 101a requests the server device 200 for a program. This program request is accompanied by a client terminal identifier (ID) and a notification that it is a program request at startup. The signature verification function 101 b verifies the signature attached to the program acquired from the server device 200 using the public key of the server device 200 stored in the public key storage unit 103. The expansion program execution function 101c is a function for expanding a program acquired from the server device 200 into a RAM and executing the program. Of course, the program is executed only when the signature verification of the acquired program is successful.

終了プログラム記憶部102に格納されている終了プログラムは、プログラムダウンロード機能102a、署名検証機能102b、OS記憶部更新機能102cを有する。プログラムダウンロード機能102aは、OS記憶部106に記憶されている暗号化されたOSプログラムとは異なる暗号アルゴリズムまたは暗号鍵で暗号化されたOSプログラムをサーバー装置200から取得する機能である。署名検証機能102bは、サーバー装置200から取得したデータ(暗号化OSプログラム)に付された署名を、公開鍵記憶部103に格納されているサーバー装置200の公開鍵を利用して検証する。OS記憶部更新機能102cは、署名検証に成功した場合に、サーバー装置200から新たに取得したOSプログラムでOS記憶部106を更新する。   The termination program stored in the termination program storage unit 102 has a program download function 102a, a signature verification function 102b, and an OS storage unit update function 102c. The program download function 102 a is a function for acquiring from the server device 200 an OS program encrypted with an encryption algorithm or encryption key different from the encrypted OS program stored in the OS storage unit 106. The signature verification function 102 b verifies the signature attached to the data (encrypted OS program) acquired from the server device 200 using the public key of the server device 200 stored in the public key storage unit 103. The OS storage unit update function 102c updates the OS storage unit 106 with the OS program newly acquired from the server device 200 when the signature verification is successful.

図2(b)は、サーバー装置200に格納されるプログラムの機能を説明する図である。アップロードプログラム記憶部203に格納されている通常ブート用プログラム204は、OS復号機能204a、プログラム展開機能204b、展開プログラム実行機能204cを有する。OS復号機能204aは、クライアント装置100のOS記憶部106に格納されている暗号化されたOSプログラムを復号する機能である。OS復号機能204aは、OS記憶部106に格納されている暗号アルゴリズムおよび暗号鍵に対応する必要がある。このOS復号機能204aにより復号処理が成功した場合は、OS記憶部106に格納されているOSプログラムは改ざんされていないことが分かる。プログラム展開機能204bは、復号したOSプログラムをRAMに展開する機能である。展開プログラム実行機能204cは、RAM上に展開されたOSプログラムを実行する機能である。このように、通常ブート用プログラムをクライアント装置100で実行することで、OS記憶部106内に格納されているOSプログラムの検証およびその実行を実現できる。   FIG. 2B is a diagram for explaining functions of a program stored in the server device 200. The normal boot program 204 stored in the upload program storage unit 203 has an OS decryption function 204a, a program development function 204b, and a development program execution function 204c. The OS decryption function 204a is a function for decrypting the encrypted OS program stored in the OS storage unit 106 of the client apparatus 100. The OS decryption function 204a needs to correspond to the encryption algorithm and encryption key stored in the OS storage unit 106. If the decryption process is successful by the OS decryption function 204a, it can be seen that the OS program stored in the OS storage unit 106 has not been tampered with. The program expansion function 204b is a function for expanding the decrypted OS program into the RAM. The expanded program execution function 204c is a function for executing the OS program expanded on the RAM. As described above, by executing the normal boot program on the client device 100, verification and execution of the OS program stored in the OS storage unit 106 can be realized.

アップロードプログラム記憶部203に格納されている更新作業用プログラム205は、プログラムダウンロード機能205a、OS記憶部更新機能205b、再起動機能205cを有する。プログラムダウンロード機能205aは、サーバー装置200に更新されたOSプログラムを要求する機能である。OS記憶部更新機能205bは、サーバー装置200から新たに取得したOSプログラムでOS記憶部106を更新する。再起動機能205cは、クライアント装置100を再起動する機能である。   The update work program 205 stored in the upload program storage unit 203 has a program download function 205a, an OS storage unit update function 205b, and a restart function 205c. The program download function 205a is a function for requesting an updated OS program from the server apparatus 200. The OS storage unit update function 205 b updates the OS storage unit 106 with the OS program newly acquired from the server device 200. The restart function 205 c is a function for restarting the client device 100.

〈動作〉
・全体処理
第1の実施形態における処理の流れを説明する。まず、図3のフローチャートを参照して、全体的な処理の流れを説明する。
<Operation>
Overall Process A process flow in the first embodiment will be described. First, the overall processing flow will be described with reference to the flowchart of FIG.

クライアント装置100の電源が投入されると(S101)、起動プログラムが実行されて、サーバー装置200に対してプログラムを要求する(S102)。サーバー装置200からクライアント装置100に送信されるプログラムは状況により変化し、更新プログラムがない場合には通常ブート用プログラム204が送信され、更新プログラムがある場合には更新作業用プログラム205が送信される。   When the power of the client device 100 is turned on (S101), the startup program is executed to request the server device 200 for the program (S102). The program transmitted from the server apparatus 200 to the client apparatus 100 varies depending on the situation. When there is no update program, the normal boot program 204 is transmitted, and when there is an update program, the update work program 205 is transmitted. .

クライアント装置100がサーバー装置200から更新作業用プログラム205を取得した場合(S103)は、この更新作業用プログラム205をクライアント装置100が実行することでOSの更新を行う(S104)。そして、更新終了後に再起動する(S105)ので、再起動後に再びサーバーにプログラムを要求することになる(S102)。   When the client device 100 acquires the update work program 205 from the server device 200 (S103), the client device 100 executes the update work program 205 to update the OS (S104). Since the computer is restarted after the update is completed (S105), the program is requested to the server again after the restart (S102).

クライアント装置100が有するOSプログラムが最新のものである場合は、サーバー装置200から通常ブート用プログラム204がクライアント装置に送信される(S106)。クライアント装置100は通常ブート用プログラム204を実行してOS記憶部1
06内のOSプログラムを復号処理する(S107)。そして、正常に復号できた場合にはOSプログラムを実行する(S108)。
When the OS program of the client device 100 is the latest, the normal boot program 204 is transmitted from the server device 200 to the client device (S106). The client apparatus 100 executes the normal boot program 204 to execute the OS storage unit 1
The OS program in 06 is decrypted (S107). If the decryption is successful, the OS program is executed (S108).

OSプログラムの実行を終了するときは終了プログラムが実行され、サーバー装置からOS記憶部106に記憶されているものとは異なる方法により暗号化されたOSプログラムを取得する(S109)。クライアント装置100は取得した暗号化OSをOS記憶部106に格納して(S110)、端末の処理を終了する(S111)。   When the execution of the OS program is terminated, the termination program is executed, and an OS program encrypted by a method different from that stored in the OS storage unit 106 is acquired from the server device (S109). The client device 100 stores the acquired encrypted OS in the OS storage unit 106 (S110), and ends the processing of the terminal (S111).

・サーバー装置の処理
以下では、クライアント装置100およびサーバー装置200が行うそれぞれの処理をより詳しく説明する。まず、サーバー装置200が行う処理を図4のフローチャートを参照しつつ説明する。
Processing of Server Device Hereinafter, each processing performed by the client device 100 and the server device 200 will be described in more detail. First, processing performed by the server device 200 will be described with reference to the flowchart of FIG.

サーバー装置200は、基本的に、クライアント装置100からのプログラム要求を受けて、適切なプログラムを送信する処理を繰り返す。サーバー装置200のアップロードプログラム選択部202は、クライアント装置100からのプログラム要求を受信すると(S201)、要求の種類を判断する(S202)。すなわち、アップロードプログラム選択部202は、プログラム要求がクライアント端末起動時のものであるかクライアント端末停止時のものであるかを判断する。プログラム要求が端末起動時のものである場合には、アップロードプログラム選択部202はさらに更新プログラムがあるか否かを判断する(S203)。更新プログラムがない場合には、暗号方法記憶部208を参照して要求元のクライアント端末に格納されている暗号化OSを復号するための復号処理機能を有する通常ブート用プログラム204をクライアント装置100に送信する(S204)。送信する通常ブート用プログラム204には電子署名が付与される。一方、ステップS203の判定で更新プログラムがある場合には、アップロードプログラム選択部202はクライアント装置100に対して更新作業用プログラム205を送信する(S205)。送信する更新作業用プログラムには電子署名が付与される。そして、クライアント端末からの更新プログラムの要求を待つ(S206)。この要求を受信したら、最新のOSプログラムを暗号化部207によって暗号化する(S207)。この時の、暗号方法(暗号アルゴリズムおよび暗号鍵)はクライアント端末の識別子と関連付けて暗号方法記憶部208に記憶する。アップロードプログラム選択部202はさらに暗号化されたプログラムをクライアント端末に送信する(S208)。また、ステップS202での判定で要求の種類がクライアント端末停止時のものである場合には、ステップS207に進み最新のOSプログラムを異なる暗号方法で暗号化してクライアント端末に送信する。   The server apparatus 200 basically repeats the process of transmitting an appropriate program in response to a program request from the client apparatus 100. When receiving the program request from the client device 100 (S201), the upload program selection unit 202 of the server device 200 determines the type of request (S202). That is, the upload program selection unit 202 determines whether the program request is for when the client terminal is activated or when the client terminal is stopped. If the program request is for starting up the terminal, the upload program selection unit 202 determines whether there is an update program (S203). If there is no update program, the normal boot program 204 having a decryption processing function for decrypting the encrypted OS stored in the requesting client terminal with reference to the encryption method storage unit 208 is stored in the client device 100. Transmit (S204). An electronic signature is assigned to the normal boot program 204 to be transmitted. On the other hand, if there is an update program as determined in step S203, the upload program selection unit 202 transmits the update work program 205 to the client device 100 (S205). An electronic signature is given to the update work program to be transmitted. Then, it waits for an update program request from the client terminal (S206). When this request is received, the latest OS program is encrypted by the encryption unit 207 (S207). The encryption method (encryption algorithm and encryption key) at this time is stored in the encryption method storage unit 208 in association with the identifier of the client terminal. The upload program selection unit 202 further transmits the encrypted program to the client terminal (S208). If it is determined in step S202 that the request type is that when the client terminal is stopped, the process proceeds to step S207, and the latest OS program is encrypted with a different encryption method and transmitted to the client terminal.

・クライアント装置の処理
次にクライアント装置100が行う処理を説明する。まず、クライアント装置100が起動時に行う処理(図3のステップS101〜S105およびS101〜S108に相当)を図5のフローチャートを参照しつつ説明する。
Processing of client device Next, processing performed by the client device 100 will be described. First, processing (corresponding to steps S101 to S105 and S101 to S108 in FIG. 3) performed by the client device 100 at startup will be described with reference to the flowchart in FIG.

クライアント装置100の電源が投入されると(S301)、まず、マスクロムに格納されている起動プログラムが実行され(S302)、プログラム要求機能101aによりサーバー装置200に対するプログラム要求が行われる(S303)。クライアント装置100は、サーバー装置200から受け取ったプログラムを、起動プログラムの署名検証機能101bによって検証する(S304)。ここで、署名検証を通過しない場合(S305:NO)は、取得したプログラムはサーバー装置200からのものではない、または、改ざんされたおそれがあるため、プログラムの実行を中止する(S306)。なお、検証に失敗した場合の動作は本発明では特に規定しない。時間をおいて再度実行しても良いし、管理者に報知する処理を行っても良い。取得したプログラムが署名検証により正当なものであると判断された場合(S305:YES)は、起動プログラムの展開プログラム
実行機能101cにより、取得したプログラムをRAMに展開して実行する(S307)。
When the power of the client device 100 is turned on (S301), first, the activation program stored in the mask is executed (S302), and a program request is made to the server device 200 by the program request function 101a (S303). The client device 100 verifies the program received from the server device 200 by the signature verification function 101b of the activation program (S304). Here, if the signature verification is not passed (S305: NO), the acquired program is not from the server device 200 or may have been tampered with, so execution of the program is stopped (S306). Note that the operation when verification fails is not particularly defined in the present invention. It may be executed again after a while or a process of notifying the administrator may be performed. If it is determined by signature verification that the acquired program is valid (S305: YES), the acquired program is expanded in the RAM and executed by the expanded program execution function 101c of the activation program (S307).

サーバー装置200から受け取ったプログラムが更新作業用プログラム205の場合は、そのプログラムダウンロード機能205aにより、サーバー装置200へ更新プログラムを要求する(S308)。そして、サーバー装置200から受信された新しいバージョンのOSプログラムは、OS記憶部更新機能205bによりOS記憶部106に格納される(S309)。その後、再起動機能205cによりクライアント端末が再起動される(S310)。再起動後はステップS302に戻り、次のプログラム取得では通常ブート用プログラム204がサーバー装置200から得られることになる。   If the program received from the server device 200 is the update work program 205, the program download function 205a requests the server device 200 for an update program (S308). Then, the new version of the OS program received from the server device 200 is stored in the OS storage unit 106 by the OS storage unit update function 205b (S309). Thereafter, the client terminal is restarted by the restart function 205c (S310). After the restart, the process returns to step S302, and the normal boot program 204 is obtained from the server device 200 in the next program acquisition.

ステップS207においてサーバー装置200から受け取ったプログラムが通常ブート用プログラム204の場合は、そのOS復号機能204aによりOS記憶部106内の暗号化OSプログラムを復号する(S311)。そして、復号したOSプログラムをプログラム展開機能204bによりRAMに展開し(S312)、展開したOSプログラムを展開プログラム実行機能204cにより実行する(S313)。OS記憶部106内のOSプログラムが改ざんされていた場合は、復号処理が正常に完了せず改ざんが検知できる。もちろん、改ざんが検知された場合はOSプログラムの実行はしない。このようにして、実行するOSプログラムの正当性を担保できる。   If the program received from the server device 200 in step S207 is the normal boot program 204, the OS decrypting function 204a decrypts the encrypted OS program in the OS storage unit 106 (S311). The decrypted OS program is expanded in the RAM by the program expansion function 204b (S312), and the expanded OS program is executed by the expansion program execution function 204c (S313). If the OS program in the OS storage unit 106 has been tampered with, the decryption process is not completed normally and tampering can be detected. Of course, if alteration is detected, the OS program is not executed. In this way, the legitimacy of the OS program to be executed can be ensured.

次にクライアント装置100が終了時に行う処理(図3のステップS109〜S111に相当)を図6のフローチャートを参照しつつ説明する。   Next, a process (corresponding to steps S109 to S111 in FIG. 3) performed by the client apparatus 100 at the end will be described with reference to the flowchart in FIG.

クライアント装置100では、OSプログラムの実行が終了する(S401)と終了プログラム記憶部102内の終了プログラムが実行される(S402)。終了プログラムのプログラムダウンロード機能102aによりサーバー装置200に対する暗号化OSプログラムの要求が行われる(S403)。サーバー装置200から受け取ったプログラムは、署名検証機能102bによって検証される(S404)。ここで、署名検証を通過しない場合(S405:NO)は、取得したプログラムがサーバー装置200からのものではない、または、改ざんされたものであるおそれがあるため、OS記憶部106の更新処理を行わずに処理を終了する(S406)。不正プログラム受信時は、再度プログラムを要求したり、管理者に報知しても良い。一方、取得した暗号OSプログラムが署名検証により正当なものであると判断された場合(S406:YES)は、OS記憶部更新機能102cにより受信したプログラムをOS記憶部106に格納する。   In the client device 100, when the execution of the OS program ends (S401), the end program in the end program storage unit 102 is executed (S402). A request for the encrypted OS program is made to the server device 200 by the program download function 102a of the end program (S403). The program received from the server device 200 is verified by the signature verification function 102b (S404). Here, if the signature verification is not passed (S405: NO), the acquired program may not be from the server device 200 or may have been altered, so the update processing of the OS storage unit 106 is performed. The process ends without performing it (S406). When an illegal program is received, the program may be requested again or notified to the administrator. On the other hand, when it is determined that the acquired cryptographic OS program is valid by the signature verification (S406: YES), the program received by the OS storage unit update function 102c is stored in the OS storage unit 106.

〈実施形態の作用・効果〉
本実施形態によれば、クライアント装置側にはセキュリティチップなどの特殊な装置を導入することなく、OS記憶部に格納されているOSプログラムを安全に実行できる。また、クライアント装置のOSプログラムの更新も安全に行うことができる。したがって、クライアント装置において改ざんされたプログラムが実行されることを防止できる。
<Operation and effect of the embodiment>
According to the present embodiment, the OS program stored in the OS storage unit can be safely executed without introducing a special device such as a security chip on the client device side. In addition, the OS program of the client device can be updated safely. Therefore, it is possible to prevent the altered program from being executed in the client device.

クライアント装置の起動時に安全が確保される理由を順をおって説明する。まず、電源投入時に実行される起動プログラムはマスクロムに格納されており改ざんできないため、起動プログラムの安全性が確保される。したがって、電源投入からプログラム取得処理までの間(図3のS101〜S102)に脅威は存在しない。次に、サーバー装置200から取得されたプログラムには公開鍵暗号方式の電子署名が付されており、サーバー装置の公開鍵で検証するため、取得したプログラムが改ざんされていないことが保証される。なお、サーバー装置200のセキュリティが確保されていることは前提である。これにより、サーバー装置200から取得したプログラムが安全であることが保証される。すなわち、図3のステップS103、S106までに脅威が存在しない。   The reason why safety is ensured when the client device is activated will be described in order. First, since the startup program executed when the power is turned on is stored in mass chrome and cannot be tampered with, the safety of the startup program is ensured. Therefore, there is no threat in the period from power-on to program acquisition processing (S101 to S102 in FIG. 3). Next, the program acquired from the server apparatus 200 is attached with an electronic signature of a public key cryptosystem, and is verified with the public key of the server apparatus, so that it is guaranteed that the acquired program has not been tampered with. It is assumed that the security of server device 200 is ensured. This ensures that the program acquired from the server device 200 is safe. That is, no threat exists until steps S103 and S106 in FIG.

OS記憶部106に記憶されている暗号化OSを起動する際には、サーバー装置200から得られた通常ブート用プログラムによって復号処理をして、正常に復号できた場合のみOSプログラムを実行している。したがって、このOSプログラムの正当性も保証される(図3のS106〜S108まで安全)。   When starting the encrypted OS stored in the OS storage unit 106, the decryption process is performed by the normal boot program obtained from the server device 200, and the OS program is executed only when the decryption is successful. Yes. Therefore, the legitimacy of this OS program is also guaranteed (safe from S106 to S108 in FIG. 3).

なお、更新作業用プログラムによって取得される暗号化OSに対する検証処理は施していない。したがって、クライアント装置100のOS記憶部106に改ざんされた暗号化OSが格納される可能性はある。しかしながら、この場合も通常ブート用プログラムで暗号化OSの復号処理を行うときに改ざんが検知できるためクライアント装置の安全は確保される。もちろん、改ざんされたOSプログラムがOS記憶部106に格納されないように、更新作業用プログラム205にも署名検証機能を持たせ、サーバー装置200から取得される暗号化OSに対する署名検証を行うことも好ましい。ただし、本実施形態においてはクライアント装置起動時に更新処理を行っているため、署名検証処理を含ませると更新作業がある場合に起動までに時間が掛かってしまうというデメリットがある。したがって、セキュリティ要求と性能要求を考慮して署名検証動作を含めるか否かを適宜設計すればよい。   Note that the verification process for the encrypted OS acquired by the update work program is not performed. Therefore, there is a possibility that the encrypted OS that has been tampered with is stored in the OS storage unit 106 of the client device 100. However, also in this case, since the alteration can be detected when the decryption process of the encrypted OS is performed by the normal boot program, the security of the client device is ensured. Of course, it is also preferable that the update work program 205 is provided with a signature verification function so that the altered OS program is not stored in the OS storage unit 106 and the signature verification for the encrypted OS acquired from the server device 200 is performed. . However, in the present embodiment, the update process is performed when the client device is activated. Therefore, if the signature verification process is included, there is a demerit that it takes time until activation when there is an update operation. Therefore, it is only necessary to appropriately design whether or not to include a signature verification operation in consideration of security requirements and performance requirements.

また、本実施形態においてはOS記憶部106に格納されているOSプログラムは暗号化されているため、第三者に対してその内容を秘匿できる。ただし、OS復号機能204aを含む通常ブート用プログラム204は、クライアント・サーバー間を平文の状態で通信される。したがって、第三者がこの通常ブート用プログラム204を盗聴することで、OS記憶部106に格納されている暗号化OSを復号して内容を知ることができてしまう。そこで、クライアント装置100の終了時に異なる暗号アルゴリズムまたは暗号鍵で暗号化されたOSプログラムを取得してOS記憶部106に格納することで、電源がオフされた時に第三者がその中身を知ることができない。   In this embodiment, since the OS program stored in the OS storage unit 106 is encrypted, the contents can be concealed from a third party. However, the normal boot program 204 including the OS decryption function 204a is communicated between the client and the server in a plain text state. Therefore, when a third party eavesdrops on the normal boot program 204, the encrypted OS stored in the OS storage unit 106 can be decrypted to know the contents. Therefore, when the client device 100 is terminated, an OS program encrypted with a different encryption algorithm or encryption key is acquired and stored in the OS storage unit 106 so that the third party can know the contents when the power is turned off. I can't.

(第2の実施形態)
第1の実施形態においては、クライアント装置の起動時にOSプログラムの復号処理や更新処理を行っているため、起動に要する時間が長くなり要求を満足しない場合もある。そこで、本実施形態においては、より高速に起動するための構成を提供する。本実施形態と第1の実施形態との最も大きな相違点は、クライアント装置に格納するシステムプログラム(OSプログラム)を暗号化せずに、電子署名を付与した状態でストレージ装置に記憶している点である。また本実施形態は、OSプログラムの更新処理をクライアント装置の起動時ではなく終了時に行っている点においても第1の実施形態と異なる。
(Second Embodiment)
In the first embodiment, since the decryption process or update process of the OS program is performed when the client device is activated, the time required for activation may become long and the request may not be satisfied. Therefore, in the present embodiment, a configuration for starting up at higher speed is provided. The biggest difference between the present embodiment and the first embodiment is that the system program (OS program) stored in the client apparatus is stored in the storage apparatus with an electronic signature attached without being encrypted. It is. The present embodiment is also different from the first embodiment in that the OS program update process is performed when the client apparatus is not started but when the client apparatus is started.

〈構成〉
図7は本実施形態に係るコンピューターシステムの概略構成を示す図である。本実施形態に係るコンピューターシステムは、複数のクライアント装置100と、サーバー装置200とから構成される。なお、図7において、第1の実施形態と対応する構成については、同一の符号を付している。
<Constitution>
FIG. 7 is a diagram showing a schematic configuration of a computer system according to the present embodiment. The computer system according to this embodiment includes a plurality of client devices 100 and a server device 200. In FIG. 7, the same reference numerals are given to the components corresponding to those in the first embodiment.

上述したようにクライアント装置100のOS記憶部106には、平文のOSプログラムに電子署名が付加されて記憶されている点で第1の実施形態と異なる。また、クライアント装置100にTPMモジュールなどのセキュリティチップ(耐タンパデバイス)によって実現される通信検証部107が設けられている点でも第1の実施形態と異なる。本実施形態においてクライアント・サーバー間の通信は、改ざんおよびなりすましが防止できるように暗号処理を施す。ここでは、サーバー・クライアント間の通信として、共通鍵暗号方式によるメッセージ認証コード(MAC)を用いる署名付き通信を採用する。もっとも、サーバー・クライアント間の通信には、共通鍵方式による秘匿通信や、公開鍵暗号方
式による署名付き通信を採用しても良い。この共通鍵(公開鍵方式の場合は秘密鍵)は秘匿化する必要があるため通信検証部107にはセキュリティチップが利用される。なお、暗号アルゴリズムも(公開鍵方式の場合は加えて公開鍵も)セキュリティチップ内に格納されるものとして説明するが、暗号アルゴリズムは改ざんされてなければ十分なのでマスクROMに格納しても良い。
As described above, the OS storage unit 106 of the client device 100 is different from the first embodiment in that an electronic signature is added to a plain text OS program and stored. The client device 100 is also different from the first embodiment in that a communication verification unit 107 realized by a security chip (tamper resistant device) such as a TPM module is provided. In this embodiment, the communication between the client and the server is subjected to cryptographic processing so that tampering and spoofing can be prevented. Here, as the communication between the server and the client, a communication with a signature using a message authentication code (MAC) based on a common key cryptosystem is adopted. Of course, for communication between the server and the client, secret communication using a common key method or communication with a signature using a public key encryption method may be employed. Since this common key (secret key in the case of the public key method) needs to be concealed, a security chip is used for the communication verification unit 107. Although the description will be made assuming that the encryption algorithm is also stored in the security chip (in addition to the public key in the case of the public key method), the encryption algorithm may be stored in the mask ROM as long as it is not falsified.

サーバー装置200は基本的に第1の実施形態と同様であるが、OSプログラムの暗号化処理を行わないため、暗号化部207および暗号方法記憶部208が省略されている。また、アップロードプログラム記憶部203に、停止用プログラム209が格納されている。   The server device 200 is basically the same as that of the first embodiment, but the encryption unit 207 and the encryption method storage unit 208 are omitted because the OS program is not encrypted. The upload program storage unit 203 stores a stop program 209.

図8は、本実施形態における各種のプログラムが有する機能を説明する図である。図8(a)はクライアント装置100に格納されるプログラムの機能を説明する図である。起動プログラム記憶部101に格納されている起動プログラムは、プログラム要求機能101dとプログラム実行機能101eを有する。プログラム要求機能101dは、サーバー装置200に対してプログラムを要求する。このプログラム要求は、クライアント端末の識別子(ID)と起動時のプログラム要求である旨の通知を伴う。プログラム実行機能101eは、サーバー装置200から取得したプログラムを実行する機能である。   FIG. 8 is a diagram for explaining functions of various programs in the present embodiment. FIG. 8A is a diagram for explaining the function of a program stored in the client apparatus 100. The activation program stored in the activation program storage unit 101 has a program request function 101d and a program execution function 101e. The program request function 101d requests the server device 200 for a program. This program request is accompanied by a client terminal identifier (ID) and a notification that it is a program request at startup. The program execution function 101e is a function for executing a program acquired from the server device 200.

終了プログラム記憶部102に格納されている終了プログラムは、プログラム要求機能102dおよびプログラム実行機能102eを有する。終了プログラムは基本的に起動プログラムと同じ機能を有するが、端末停止時のプログラム要求である旨を通知してサーバー装置200にプログラムを要求する点で異なる。   The termination program stored in the termination program storage unit 102 has a program request function 102d and a program execution function 102e. The termination program basically has the same function as the startup program, but differs in that the program is requested to the server device 200 by notifying that the program is requested when the terminal is stopped.

図8(b)は、サーバー装置200に格納されるプログラムの機能を説明する図である。アップロードプログラム記憶部203に格納されている通常ブート用プログラム204は、OS検証機能204dおよびプログラム実行機能204eを有する。OS検証機能204dは、クライアント装置100のOS記憶部106に格納されているOSプログラムの署名を検証する機能である。プログラム実行機能204eは、OS記憶部106に格納されているOSプログラムの実行を指示する機能である。   FIG. 8B is a diagram for explaining functions of a program stored in the server device 200. The normal boot program 204 stored in the upload program storage unit 203 has an OS verification function 204d and a program execution function 204e. The OS verification function 204d is a function for verifying the signature of the OS program stored in the OS storage unit 106 of the client apparatus 100. The program execution function 204e is a function for instructing execution of an OS program stored in the OS storage unit 106.

アップロードプログラム記憶部203に格納されている更新作業用プログラム205は、プログラムダウンロード機能205d、OS記憶部更新機能205e、OS検証機能205fを有する。プログラムダウンロード機能205dは、サーバー装置200から更新されたOSプログラムを取得する機能である。OS記憶部更新機能205eは、取得したOSプログラムをOS記憶部106に格納する機能である。OS検証機能205fは、取得したOSプログラムの署名検証を行い、OSプログラムが正当なものであるか判定する機能である。   The update work program 205 stored in the upload program storage unit 203 has a program download function 205d, an OS storage unit update function 205e, and an OS verification function 205f. The program download function 205d is a function for acquiring an updated OS program from the server device 200. The OS storage unit update function 205e is a function of storing the acquired OS program in the OS storage unit 106. The OS verification function 205f is a function for verifying the signature of the acquired OS program and determining whether the OS program is valid.

アップロードプログラム記憶部203に格納されている停止用プログラム209は、実質的に何も処理を行わないプログラムである。   The stop program 209 stored in the upload program storage unit 203 is a program that performs substantially no processing.

ここで、署名検証動作として2つのケースがある点に注意されたい。一つはクライアント装置100の通信検証部107による、サーバー装置から取得されるプログラムに対する署名検証である。もう一つは、通常ブート用プログラム204による、OS記憶部106内のOSプログラムに対する署名検証である。通信検証部107による署名検証動作はROM(セキュリティチップ)に焼かれているため変更することができない。そこで汎用性の高い暗号アルゴリズムを採用し、かつ長期間運用するために鍵長を長く設定する。したがって、通信検証部107により検証処理は比較的速度の遅いアルゴリズムとなる。一方、OSプログラムに対する署名検証は、サーバー装置から取得するプログラムに含まれ
るため、任意に変更可能である。したがって、その時点で高速な暗号アルゴリズムを選択すればよい。
Note that there are two cases as signature verification operations. One is signature verification for a program acquired from the server device by the communication verification unit 107 of the client device 100. The other is signature verification for the OS program in the OS storage unit 106 by the normal boot program 204. The signature verification operation by the communication verification unit 107 cannot be changed because it is burned in a ROM (security chip). Therefore, a highly versatile cryptographic algorithm is adopted, and a long key length is set for long-term operation. Therefore, the verification process by the communication verification unit 107 is an algorithm with a relatively low speed. On the other hand, since the signature verification for the OS program is included in the program acquired from the server device, it can be arbitrarily changed. Therefore, a high-speed encryption algorithm may be selected at that time.

〈動作〉
・全体処理
第2の実施形態における処理の流れを説明する。まず、図9のフローチャートを参照して、全体的な処理の流れを説明する。
<Operation>
Overall Process A process flow in the second embodiment will be described. First, the overall processing flow will be described with reference to the flowchart of FIG.

クライアント装置100の電源が投入されると(S501)、起動プログラムが実行されて、サーバー装置200からブート用のプログラムを要求して取得する(S502)。取得したブート用のプログラムによってOSプログラムの署名検証を行い(S503)、検証を通過したらOSプログラムの実行を開始する(S504)。クライアント装置100の終了時(OSプログラムの実行終了時)には、終了プログラムが実行されて、サーバー装置にプログラムを要求する(S505)。OSプログラムの更新がない場合には停止処理用プログラムがサーバー装置から送信されて、クライアント装置100はそれ以上の処理を行わず終了する。一方、OSプログラムの更新がある場合には、更新作業用のプログラムがサーバーから送信される(S507)。クライアント装置100は、この更新作業用プログラムを用いてOSプログラムの更新を行い(S508)、正常に更新が完了したら(S509:YES)実行を停止する。更新に失敗した場合には(S509:NO)はOSの更新を再度行う。   When the client apparatus 100 is powered on (S501), the startup program is executed, and a boot program is requested and acquired from the server apparatus 200 (S502). The signature of the OS program is verified by the obtained boot program (S503), and if the verification is passed, the execution of the OS program is started (S504). When the client device 100 is terminated (when the OS program is terminated), the termination program is executed to request the server device for the program (S505). If the OS program is not updated, a stop processing program is transmitted from the server device, and the client device 100 terminates without performing any further processing. On the other hand, if there is an update of the OS program, a program for update work is transmitted from the server (S507). The client apparatus 100 updates the OS program using this update work program (S508), and stops the execution when the update is completed normally (S509: YES). If the update has failed (S509: NO), the OS is updated again.

このように本実施形態においては、クライアント装置の起動時には電子署名検証によるOSプログラムの検証を行い、OSプログラムの更新作業はクライアント装置の停止処理時に行う。   As described above, in the present embodiment, the OS program is verified by digital signature verification when the client device is activated, and the OS program update operation is performed when the client device is stopped.

・サーバー装置の処理
以下では、クライアント装置100及びサーバー装置200が行うそれぞれの処理をより詳しく説明する。まず、サーバー装置200が行う処理を図10のフローチャートを参照しつつ説明する。
Processing of Server Device Hereinafter, each processing performed by the client device 100 and the server device 200 will be described in more detail. First, processing performed by the server apparatus 200 will be described with reference to the flowchart of FIG.

サーバー装置200は、基本的に、クライアント装置100からのプログラム要求を受け付けて、適切なプログラムを送信する処理を繰り返す。サーバー装置200のアップロードプログラム選択部202は、クライアント装置100からのプログラム要求を受信すると(S601)、要求の種類を判断する(S602)。クライアント装置からのプログラム要求がブート用プログラムの要求、すなわちクライアント装置起動時のプログラム要求である場合には、アップロードプログラム選択部202は、通常ブート用プログラム204をクライアント装置100へ送信する(S603)。この通常ブート用プログラム204は、電子署名が付与されてクライアント装置100へ送信される。一方、クライアント装置100からのプログラム要求が更新プログラムの要求、すなわちクライアント装置停止時プログラムの要求である場合には、アップロードプログラム選択部202は更新プログラムがあるか否かを判断する(S604)。更新プログラムがない場合には、アップロードプログラム選択部202は、停止用プログラム209をクライアント装置100へ送信する(S605)。一方、更新プログラムがある場合は更新作業用プログラム205をクライアント装置100へ送信する(S606)。更新作業用プログラム205の送信後は、クライアント装置100からの更新プログラムの送信要求を待ち(S607)、要求を受けて更新プログラムをクライアント装置100へ送信する(S608)。   The server device 200 basically repeats the process of receiving a program request from the client device 100 and transmitting an appropriate program. When receiving the program request from the client device 100 (S601), the upload program selection unit 202 of the server device 200 determines the type of request (S602). If the program request from the client device is a request for a boot program, that is, a program request when starting the client device, the upload program selection unit 202 transmits the normal boot program 204 to the client device 100 (S603). The normal boot program 204 is sent with an electronic signature to the client apparatus 100. On the other hand, when the program request from the client apparatus 100 is an update program request, that is, a client apparatus stop program request, the upload program selection unit 202 determines whether there is an update program (S604). If there is no update program, the upload program selection unit 202 transmits the stop program 209 to the client device 100 (S605). On the other hand, if there is an update program, the update work program 205 is transmitted to the client apparatus 100 (S606). After the update work program 205 is transmitted, it waits for an update program transmission request from the client apparatus 100 (S607), and receives the request and transmits the update program to the client apparatus 100 (S608).

・クライアント装置の処理
次にクライアント装置100が行う処理を説明する。まず、クライアント装置100が起動時に行う処理(図9のステップS501〜S504に相当)を図11のフローチャー
トを参照しつつ説明する。
Processing of client device Next, processing performed by the client device 100 will be described. First, processing (corresponding to steps S501 to S504 in FIG. 9) that the client device 100 performs at startup will be described with reference to the flowchart in FIG.

クライアント装置100の電源が投入されると(S701)、まず、マスクロムに格納されている起動プログラムが実行され(S702)、プログラム要求機能101dによりサーバー装置200に対するプログラム要求が行われる(S703)。クライアント装置起動時のプログラム要求は通常ブート用プログラム204を要求するものであるため、クライアント装置100は、サーバー装置から通常ブート用プログラム204を取得する。取得された通常ブート用プログラム204の正当性を検証するために、通信検証部107が署名検証を実施する(S704)。ここで署名が一致せず改ざんやなりすましの危険性がある場合には(S705:NO)、プログラムの実行を停止する(S706)。なお、検証に失敗した場合の動作は本発明では特に規定しない。時間をおいて再度実行しても良いし、管理者に報知する処理を行っても良い。取得したプログラムが署名検証により正当なものであると判断された場合(S705:YES)は、プログラム実行機能101eにより取得した通常ブート用プログラム204を実行する(S707)。   When the client apparatus 100 is powered on (S701), first, the activation program stored in the mask is executed (S702), and a program request is made to the server apparatus 200 by the program request function 101d (S703). Since the program request at the time of starting the client device requests the normal boot program 204, the client device 100 acquires the normal boot program 204 from the server device. In order to verify the validity of the acquired normal boot program 204, the communication verification unit 107 performs signature verification (S704). If the signatures do not match and there is a risk of falsification or impersonation (S705: NO), the execution of the program is stopped (S706). Note that the operation when verification fails is not particularly defined in the present invention. It may be executed again after a while or a process of notifying the administrator may be performed. When it is determined that the acquired program is valid by the signature verification (S705: YES), the normal boot program 204 acquired by the program execution function 101e is executed (S707).

通常ブート用プログラム204が実行されると、そのOS検証機能204dにより、OS記憶部106に格納されているOSプログラムの署名検証が実施される(S708)。ここで、署名検証を通過しない場合(S709:NO)は、OS記憶部106内のOSプログラムが改ざんされたおそれがあるため、プログラムを実行せずに終了する(S710)。一方、署名検証を通過した場合(S709:YES)は、通常ブート用プログラム204に含まれるプログラム実行機能204eにより、OS記憶部106内のOSプログラムを実行する(S711)。   When the normal boot program 204 is executed, signature verification of the OS program stored in the OS storage unit 106 is performed by the OS verification function 204d (S708). If the signature verification is not passed (S709: NO), the OS program in the OS storage unit 106 may be falsified, and the process is terminated without executing the program (S710). On the other hand, if the signature verification is passed (S709: YES), the OS program in the OS storage unit 106 is executed by the program execution function 204e included in the normal boot program 204 (S711).

次にクライアント装置100が終了時に行う処理(図9のステップS505〜510に相当)を図12のフローチャートを参照しつつ説明する。   Next, processing (corresponding to steps S505 to 510 in FIG. 9) performed by the client device 100 at the end will be described with reference to the flowchart in FIG.

クライアント装置100では、OSプログラムの実行が終了する(S801)と終了プログラム記憶部102内の終了プログラムが実行される(S802)。終了プログラムのプログラム要求機能102dによりサーバー装置200に対してプログラムの要求が行われる(S803)。サーバー装置200から受け取ったプログラムに対しては、通信検証部107が署名検証処理を行う(S804)。受け取ったプログラムの検証が失敗した場合(S805:NO)は、改ざんまたはなりすましのおそれがあるのでそのプログラムを実行せずに終了する(S806)。一方、受け取ったプログラムの検証が成功した場合(S805:YES)は、プログラム実行機能102eによりそのプログラムを実行する(S806)。   In the client device 100, when the execution of the OS program ends (S801), the end program in the end program storage unit 102 is executed (S802). A program request is made to the server device 200 by the program request function 102d of the end program (S803). For the program received from the server apparatus 200, the communication verification unit 107 performs signature verification processing (S804). If verification of the received program fails (S805: NO), there is a possibility of falsification or impersonation, and the program is terminated without executing it (S806). On the other hand, when the received program has been successfully verified (S805: YES), the program is executed by the program execution function 102e (S806).

ここでOSプログラムの更新が必要ではない場合は、実質的に何も処理を行わない停止用プログラム209がサーバー装置200から送られるので、クライアント装置100は何も処理をせずに終了することになる(S812)。   If it is not necessary to update the OS program, a stop program 209 that does not perform any processing is sent from the server device 200, so that the client device 100 terminates without performing any processing. (S812).

一方、OSプログラムの更新が必要な場合には、サーバー装置200から更新作業用プログラム205が送信される。このプログラムが実行されると、更新作業用プログラム205に含まれるプログラムダウンロード機能205dにより、サーバー装置200に対して新しいOSプログラムを要求する(S807)。クライアント装置100は、受け取ったOSプログラムをOS記憶部更新機能205eによりOS記憶部106に格納し(S808)、OS検証機能205fによりOS記憶部106内のプログラムの署名検証を行う(S809)。OSプログラムが改ざん等されており検証が失敗した場合(S810:NO)は、再度サーバー装置200に対して更新プログラムを要求する。一方、OSプログラムの検証が成功した場合(S810:YES)は、そのまま処理を終了する(S811)。   On the other hand, when the OS program needs to be updated, an update work program 205 is transmitted from the server device 200. When this program is executed, a new OS program is requested to the server apparatus 200 by the program download function 205d included in the update work program 205 (S807). The client device 100 stores the received OS program in the OS storage unit 106 by the OS storage unit update function 205e (S808), and verifies the signature of the program in the OS storage unit 106 by the OS verification function 205f (S809). If the OS program has been tampered with and the verification has failed (S810: NO), the server apparatus 200 is requested again for an update program. On the other hand, if the verification of the OS program is successful (S810: YES), the process is terminated as it is (S811).

〈実施形態の作用・効果〉
本実施形態によっても、OSプログラムの正当性を保証した上で実行することができる。まず、電源投入時に実行される起動プログラムはマスクロムに格納されており改ざんできないので、この時点までの安全が保証される。起動プログラムはサーバー装置から通常ブート用プログラムを取得するが、通信検証部によって署名検証されるためサーバーとの間の通信もなりすましや改ざんのおそれがない。なお、通信検証部自体はセキュリティチップにより構成されているため安全であり、サーバー装置も前提として安全が確保されている。したがって、取得した通常ブート用プログラムの正当性が保証される。そして、この正当性が保証される通常ブート用プログラムによってOSプログラムの署名検証を行い検証が成功した場合にOSプログラムを実行するため、実行されるOSプログラムの正当性も保証される。
<Operation and effect of the embodiment>
This embodiment can also be executed while guaranteeing the legitimacy of the OS program. First, since the startup program that is executed when the power is turned on is stored in mass chrome and cannot be tampered with, safety up to this point is guaranteed. The boot program obtains a normal boot program from the server device, but since the signature is verified by the communication verification unit, there is no possibility of spoofing or tampering with communication with the server. Note that the communication verification unit itself is safe because it is composed of a security chip, and the server device is also secure on the premise. Therefore, the validity of the acquired normal boot program is guaranteed. Since the signature of the OS program is verified by the normal boot program for which the validity is guaranteed, and the verification is successful, the OS program is executed, the validity of the OS program to be executed is also guaranteed.

なお、本実施形態では署名検証によりOSプログラムを検証しているので、復号処理を行う第1の実施形態と比較してより高速なOSの起動が実現できる。また、OSプログラムの更新処理もクライアント装置の停止時に行っているため、クライアントの起動を高速に行える。   In this embodiment, since the OS program is verified by signature verification, the OS can be started at a higher speed than in the first embodiment in which decryption processing is performed. Since the OS program update process is also performed when the client apparatus is stopped, the client can be started up at high speed.

また、署名検証処理はサーバー装置から得られるプログラムに対してと、OS記憶部内のOSプログラムに対して行われる。ここで、サーバー装置から得られるプログラムに対する署名検証処理はROM(セキュリティチップ)に焼かれているため変更できず長期間運用する必要があるため、汎用性の高いアルゴリズムでかつ鍵長を長くする。つまり、取得したプログラムに対する検証処理は比較的速度の遅いアルゴリズムが必要となる。しかしながら、OSプログラムの署名検証処理はサーバー装置から得られる通常ブート用プログラムに含まれるので、その時点で高速なアルゴリズムを選択することができる。サーバー装置から取得するブート用プログラムとOSプログラムとでは、一般にOSプログラムの方が大容量である。サイズの大きいOSプログラムに対して高速なアルゴリズムを適用できるので、全体の検証時間はより短くなる。   The signature verification process is performed on the program obtained from the server device and on the OS program in the OS storage unit. Here, since the signature verification processing for the program obtained from the server device is burned in a ROM (security chip) and cannot be changed and needs to be operated for a long period of time, the algorithm is highly versatile and the key length is increased. In other words, the verification process for the acquired program requires an algorithm with a relatively low speed. However, since the signature verification process of the OS program is included in the normal boot program obtained from the server device, a high-speed algorithm can be selected at that time. Of the boot program and OS program acquired from the server device, the OS program generally has a larger capacity. Since a high-speed algorithm can be applied to a large-sized OS program, the overall verification time becomes shorter.

(第3の実施形態)
上記第1,2の実施形態においてOSプログラムの更新処理を行っているが、この更新処理が途中で異常終了すると、記憶部内のプログラムは一部が書き換えられ一部は古いままという不整合な状態となる。このような事態が発生した場合、復号処理や署名検証によるOSプログラムの検査で異常と判断されてしまいプログラムが起動できなくなる。このような事態に対処するために、クライアント装置のストレージを二重にして古いプログラムを残しておくことも考えられるが、多くの計算機資源を必要となりコストが上昇してしまう。そこで、本実施形態では、クライアント装置に多くの計算機資源を必要とすることなく、OSプログラムの更新処理が失敗した場合にも安全に起動(更新処理の再開)を行えるようにする。
(Third embodiment)
In the first and second embodiments, the OS program update process is performed, but if this update process ends abnormally, the program in the storage unit is partially rewritten and partly remains inconsistent. It becomes. When such a situation occurs, it is determined that the OS program is inspected by decryption processing or signature verification, and the program cannot be started. In order to cope with such a situation, it is conceivable to store the old program by doubling the storage of the client device, but it requires a lot of computer resources and the cost increases. Therefore, in this embodiment, without requiring a large amount of computer resources in the client device, it is possible to start up safely (resume the update process) even when the update process of the OS program fails.

〈構成〉
図13は本実施形態に係るコンピューターシステムの概略構成を示す図である。本実施形態は第1および第2の実施形態と類似する構成を有するため、異なる部分について主に説明する。本実施形態に係るコンピューターシステムは、複数のクライアント装置300と、サーバー装置400とから構成される。各クライアント装置300はサーバー装置400と通信可能に構成されている。
<Constitution>
FIG. 13 is a diagram showing a schematic configuration of a computer system according to the present embodiment. Since this embodiment has a configuration similar to that of the first and second embodiments, different portions will be mainly described. The computer system according to the present embodiment includes a plurality of client devices 300 and a server device 400. Each client device 300 is configured to be able to communicate with the server device 400.

クライアント装置300は、起動プログラム記憶部301、終了プログラム記憶部302、外部通信部304、更新プログラム展開部305、OS記憶部306、OS検査部308、暗号処理部307を備える。起動プログラム記憶部301および終了プログラム記
憶部302は、それぞれ、クライアント装置300の起動時および停止時に実行されるプログラムである起動プログラムおよび終了プログラムを記憶する。これらの記憶部は実体としてはマスクロムである。OS記憶部306はストレージ装置であり、OSプログラムを記憶する。本実施形態においては、OSプログラムは暗号化や電子署名付与されずに平文の状態でOS記憶部306に格納される。外部通信部304はネットワークを介してサーバー装置400と通信する機能部である。更新プログラム展開部305はサーバー装置400から取得した新しいOSプログラムをOS記憶部306に展開する。OS検査部308は、OS記憶部306の所定のアドレスのハッシュ値を求める機能を有する。外部通信部304、更新プログラム展開部305、OS検査部308は、マスクロムに格納されたプログラムをCPUが実行することで実現される。暗号処理部307は、TPMモジュールなどのセキュリティチップ(耐タンパデバイス)によって実現されるものであり、サーバー装置400との間で秘匿通信を行う。本実施形態ではクライアント・サーバー間の通信は共通鍵方式による秘匿通信により行う。
The client device 300 includes a start program storage unit 301, an end program storage unit 302, an external communication unit 304, an update program development unit 305, an OS storage unit 306, an OS inspection unit 308, and an encryption processing unit 307. The start program storage unit 301 and the end program storage unit 302 store a start program and an end program, which are programs executed when the client device 300 is started and stopped, respectively. These storage units are actually machrome. The OS storage unit 306 is a storage device and stores an OS program. In this embodiment, the OS program is stored in the OS storage unit 306 in a plain text state without being encrypted or digitally signed. The external communication unit 304 is a functional unit that communicates with the server device 400 via a network. The update program expansion unit 305 expands the new OS program acquired from the server device 400 in the OS storage unit 306. The OS inspection unit 308 has a function of obtaining a hash value of a predetermined address in the OS storage unit 306. The external communication unit 304, the update program development unit 305, and the OS inspection unit 308 are realized by the CPU executing a program stored in the mask. The encryption processing unit 307 is realized by a security chip (tamper resistant device) such as a TPM module, and performs secret communication with the server apparatus 400. In this embodiment, communication between the client and the server is performed by secret communication using a common key method.

なお、暗号処理部307の全てを耐タンパデバイスで構成する必要はない。共有鍵(公開鍵暗号方式を採用する場合は秘密鍵)は秘匿化する必要があるので耐タンパデバイスに格納する必要があるが、暗号アルゴリズム(および公開鍵暗号方式を採用する場合は公開鍵)は改ざんされなければ十分なのでマスクROMに格納すれば十分である。このような構成を採用すれば、耐タンパデバイスの導入を最小限にできコストの上昇を抑えることができる。   Note that it is not necessary to configure all of the cryptographic processing unit 307 with a tamper resistant device. Shared key (private key if public key cryptosystem is adopted) must be concealed and must be stored in a tamper-resistant device, but encryption algorithm (and public key if public key cryptosystem is adopted) Since it is sufficient if it is not altered, it is sufficient to store it in a mask ROM. By adopting such a configuration, it is possible to minimize the introduction of a tamper resistant device and suppress an increase in cost.

図14はクライアント装置300の起動プログラム記憶部301および終了プログラム記憶部302に格納される起動プログラムおよび終了プログラムの機能を説明する図である。起動プログラムのアドレス問い合わせ機能301aは、サーバー装置400にOSプログラムの検査対象アドレス(ハッシュ値を求めるアドレス)を問い合わせる機能である。ハッシュ値算出機能301bは、サーバー装置400から取得したアドレスについてのハッシュ値を、OS検査部308を用いて算出する機能部である。ハッシュ値送信機能301cは、算出したハッシュ値をサーバー装置400に送信する機能である。OS実行機能301dは、ハッシュ値送信に対する応答をサーバー装置400から取得して、ハッシュ値が正しいと判断された場合にOS記憶部306内のOSプログラムを実行する機能である。   FIG. 14 is a diagram for explaining the functions of the start program and the end program stored in the start program storage unit 301 and the end program storage unit 302 of the client device 300. The activation program address inquiry function 301a is a function for inquiring the server apparatus 400 about the OS program inspection target address (address for obtaining a hash value). The hash value calculation function 301 b is a function unit that calculates a hash value for an address acquired from the server device 400 using the OS inspection unit 308. The hash value transmission function 301 c is a function for transmitting the calculated hash value to the server device 400. The OS execution function 301d is a function for acquiring a response to the hash value transmission from the server device 400 and executing the OS program in the OS storage unit 306 when it is determined that the hash value is correct.

終了プログラムのプログラムダウンロード機能302aは、サーバー装置400からOSプログラムの更新版を取得する機能である。OS記憶部更新機能302bは、サーバー装置400から取得される更新版のOSプログラムをOS記憶部306に格納する機能である。なお、後述するようにサーバー装置400から更新版のOSプログラムがブロック単位に分割されて送信されるので、クライアント装置300においてもブロック単位で取得・更新処理を行う。更新完了通知機能302cは、OS記憶部306の更新が完了したことをブロック単位で通知する機能である。   The program download function 302 a for the end program is a function for acquiring an updated version of the OS program from the server device 400. The OS storage unit update function 302 b is a function that stores an updated OS program acquired from the server device 400 in the OS storage unit 306. As will be described later, since the updated OS program is divided from the server device 400 and transmitted in units of blocks, the client device 300 also performs acquisition / update processing in units of blocks. The update completion notification function 302c is a function for notifying that the update of the OS storage unit 306 is completed in units of blocks.

サーバー装置400は、外部通信部401、更新プログラム管理部402、検査部位決定部403、更新プログラム記憶部404、クライアントプログラム記憶部405、暗号処理部406を備える。外部通信部401は、ネットワークを介してクライアント装置300と通信する機能部である。クライアント装置300との間の通信は、暗号処理部406により秘匿化される。更新プログラム管理部402は、クライアント装置300に対するOSプログラムの更新処理および更新状況の管理(把握)を行う機能部である。更新プログラム記憶部404は、クライアント装置300において実行するOSプログラムに更新がある場合に、最新版のOSプログラムを記憶する。クライアントプログラム記憶部405は、更新前のOSプログラムを記憶する。なお、サーバー装置400は、全体がセキュリティチップなどを用いて構成されることで、セキュリティが確保される。   The server device 400 includes an external communication unit 401, an update program management unit 402, an examination site determination unit 403, an update program storage unit 404, a client program storage unit 405, and an encryption processing unit 406. The external communication unit 401 is a functional unit that communicates with the client device 300 via a network. Communication with the client device 300 is concealed by the encryption processing unit 406. The update program management unit 402 is a functional unit that performs OS program update processing and update status management (grasping) for the client device 300. The update program storage unit 404 stores the latest version of the OS program when the OS program executed in the client device 300 is updated. The client program storage unit 405 stores the OS program before update. The server device 400 is configured using a security chip or the like as a whole to ensure security.

更新プログラム管理部402についてより詳細に説明する。更新プログラム管理部402は、更新プログラムをクライアント装置300が一度に受信可能なサイズに分割して送信する。また、更新プログラム管理部402は、クライアント装置300における各ブロックの書き換え完了・未完了などを管理する。図14は、更新プログラム管理部402が保持する更新状況テーブルであり、更新プログラム管理部402はこの更新状況テーブルを用いてクライアント装置300の更新状況を記憶する。この更新状況テーブルには、ブロックID402aごとに、対応する更新プログラム記憶部内のアドレス402bと、サーバー装置からクライアント装置に更新プログラムを送信したか否かを表す送付済みフィールド402c、クライアント装置から書き換え済みの通知を受けたか否かを表す書き換え済みフィールド402dを含む。送付済みフィールド402cおよび書き換え済みフィールド402dの両方が「完了」となっているブロックはクライアント装置において更新完了済みであり、OS記憶部306内のこのブロックには新しいプログラムが格納されていることが分かる。逆に両方が「未実施」となっているブロックにクライアント装置において更新が未完了であり、OS記憶部306内にこのブロックには古いプログラムが格納されていることが分かる。送付済みフィールド402cが「完了」であり、書き換え済みフィールド402dが「未実施」のブロックについては、クライアント装置において更新されたか否かが把握不能である。検査部位決定部403は、更新プログラム管理部402から得られる更新状況を元にクライアント装置300にどのアドレスのハッシュ値を要求するか決定する機能部である。検査部位決定部403は、サーバー装置400において内容が把握可能なクライアント装置300のアドレスのうちから、ハッシュ値算出対象のアドレスをランダムに決定する。また、検査部位決定部403は、更新プログラム記憶部404とクライアントプログラム記憶部405を参照して、指定したアドレスにおける正しいハッシュ値を算出する。   The update program management unit 402 will be described in more detail. The update program management unit 402 divides the update program into sizes that can be received by the client device 300 at a time and transmits the update program. Further, the update program management unit 402 manages completion / uncompletion of rewriting of each block in the client device 300. FIG. 14 is an update status table held by the update program management unit 402. The update program management unit 402 stores the update status of the client device 300 using the update status table. In this update status table, for each block ID 402a, the address 402b in the corresponding update program storage unit, the sent field 402c indicating whether or not the update program has been transmitted from the server device to the client device, and the rewritten from the client device A rewritten field 402d indicating whether or not a notification has been received is included. It is understood that the block in which both the sent field 402c and the rewritten field 402d are “completed” has been updated in the client device, and a new program is stored in this block in the OS storage unit 306. . On the contrary, it can be seen that the update is incomplete in the client apparatus in the block in which both are “not implemented”, and the old program is stored in this block in the OS storage unit 306. With respect to a block in which the sent field 402c is “completed” and the rewritten field 402d is “not implemented”, it is impossible to grasp whether or not the block has been updated in the client device. The examination site determination unit 403 is a functional unit that determines which address of the hash value is requested from the client device 300 based on the update status obtained from the update program management unit 402. The examination site determination unit 403 randomly determines an address of a hash value calculation target from the addresses of the client device 300 whose contents can be grasped by the server device 400. The examination site determination unit 403 refers to the update program storage unit 404 and the client program storage unit 405 to calculate a correct hash value at the specified address.

〈動作〉
・クライアント停止時(更新処理)
第3の実施形態における処理の流れを説明する。まず、クライアント装置終了時における更新処理を図16を参照して説明する。
<Operation>
-When the client is stopped (update processing)
The flow of processing in the third embodiment will be described. First, update processing at the end of the client device will be described with reference to FIG.

クライアント装置300においてOSプログラムの実行が終了する(S901)と、終了プログラム記憶部302内の終了プログラムが実行されて、そのプログラムダウンロード機能302aによりサーバー装置400へ更新プログラムの有無が問い合わされる(S902)。この要求を受信したサーバー装置400の更新プログラム管理部402は、クライアント装置300に送信する更新プログラムがあるか判断する(S903)。更新プログラムがない場合(S903:NO)は、その旨がクライアント装置300に通知され、クライアント装置300はそれ以上の処理を行わず停止する(S904)。   When the execution of the OS program ends in the client device 300 (S901), the end program in the end program storage unit 302 is executed, and the server device 400 is inquired of the server device 400 by the program download function 302a (S902). . Upon receiving this request, the update program management unit 402 of the server device 400 determines whether there is an update program to be transmitted to the client device 300 (S903). If there is no update program (S903: NO), the client device 300 is notified of this, and the client device 300 stops without performing any further processing (S904).

更新プログラムがある場合(S903:YES)には、更新プログラム管理部402は、ブロック単位に分割された更新プログラムの一部を暗号化してクライアント装置300へ送信する(S905)。送信が完了したら、更新プログラム管理部402は、送信したブロックの送信済みフィールド402cを「完了」にして、クライアント装置へ送信したことを記憶する。クライアント装置300は、更新プログラムを受信し、終了プログラムのOS記憶部更新機能302bによりOS記憶部306を更新する(S906)。OS記憶部306の更新が完了したら、更新完了通知機能302cにより、このブロックの更新が完了した旨を暗号化してサーバー装置400へ送信する(S907)。更新プログラム管理部402は、この更新完了通知を受け取ると、このブロックの書き換え済みフィールドを「完了」にして、クライアント装置において更新が完了したことを記憶する(S908)。更新プログラム管理部402は、更新プログラムの全てのブロックについて更新が完了したか判断し、未処理のブロックがある場合(S909:NO)は送信を繰り返す。
全てのブロックの更新が完了した場合(S909:YES)は、更新処理が完了したことをクライアント装置300へ通知する(S910)。クライアント装置300は、この通知を受け取ると停止する(S911、S912)。
When there is an update program (S903: YES), the update program management unit 402 encrypts a part of the update program divided into blocks and transmits it to the client device 300 (S905). When the transmission is completed, the update program management unit 402 sets the transmission completed field 402c of the transmitted block to “completed” and stores the transmission to the client device. The client apparatus 300 receives the update program and updates the OS storage unit 306 by the OS storage unit update function 302b of the end program (S906). When the update of the OS storage unit 306 is completed, the update completion notification function 302c encrypts the fact that the block has been updated and transmits it to the server device 400 (S907). Upon receiving this update completion notification, the update program management unit 402 sets the rewritten field of this block to “completed” and stores that the update has been completed in the client device (S908). The update program management unit 402 determines whether or not the update has been completed for all the blocks of the update program. If there is an unprocessed block (S909: NO), the transmission is repeated.
When the update of all the blocks is completed (S909: YES), the client apparatus 300 is notified that the update process is completed (S910). The client device 300 stops upon receiving this notification (S911, S912).

このように更新プログラムをブロック単位に分割してクライアント装置300に送信し、更新完了通知によって更新完了を確認しつつ処理を進めるため、更新処理の途中でクライアント装置300の電源が切れるなどの事態が発生しても、どのアドレスまで更新処理が完了しているかをサーバー装置400は把握可能である。たとえば、更新プログラム管理部402の更新状況テーブルが図15の場合を例に説明する。ブロックID0x0001, 0x0002については、送付済みフィールド402c・書き換え済みフィールド402dの両方が「完了」となっているため、更新プログラムがクライアント装置に送信され、実際にOS記憶部306が更新されたことが分かる。ブロックID0x0003については、送付済みフィールド402cは「完了」であるものの、書き換え済みフィールド402dが「未実施」となっている。このブロックに関しては、サーバー装置側ではクライアント装置のOS記憶部306内の状態は判断不可能である。OS記憶部306が更新されていない状況もあり得るし、更新されたが更新完了通知を送信できなかったという場合もあり得る。ブロックID0x0004以降については、送付済みフィールド402cが「未実施」であるため、クライアント装置300のOS記憶部306は更新前の状態であることが分かる。このように、更新状況テーブルを参照することで、クライアント装置ごとに更新作業が全て正常に完了したか否か、および、全て完了していない場合はどのブロックまで更新が完了しているかを把握できる。   In this way, the update program is divided into block units and transmitted to the client apparatus 300, and the process proceeds while confirming the update completion by the update completion notification. Therefore, the client apparatus 300 may be powered off during the update process. Even if it occurs, the server apparatus 400 can grasp to which address update processing has been completed. For example, a case where the update status table of the update program management unit 402 is shown in FIG. 15 will be described as an example. Regarding the block IDs 0x0001 and 0x0002, since both the sent field 402c and the rewritten field 402d are “completed”, it can be seen that the update program is transmitted to the client device and the OS storage unit 306 is actually updated. . For the block ID 0x0003, the sent field 402c is “completed”, but the rewritten field 402d is “not implemented”. Regarding this block, the server device cannot determine the state in the OS storage unit 306 of the client device. There may be a situation where the OS storage unit 306 is not updated, and there may be a case where the OS storage unit 306 has been updated but an update completion notification has not been transmitted. For block ID 0x0004 and later, since the sent field 402c is “not implemented”, it can be seen that the OS storage unit 306 of the client device 300 is in a state before update. In this way, by referring to the update status table, it is possible to grasp whether or not all the update operations have been normally completed for each client device, and to what block the update has been completed if not all have been completed. .

・クライアント起動時(プログラム実行・更新処理再開)
次に、クライアント装置300の起動時の処理について、図17のフローチャートを参照しつつ説明する。
-When the client is started (program execution / update process restart)
Next, processing when the client device 300 is activated will be described with reference to the flowchart of FIG.

クライアント装置300が起動すると(S1001)、起動プログラムが実行されて、そのアドレス問い合わせ機能301aにより、OS記憶部306内のどのアドレスを対象に検査するかをサーバー装置400に問い合わせる(S1002)。この要求を受信したサーバー装置400の更新プログラム管理部402は、更新状況テーブルを参照して検査可能なアドレスをランダムに選択しクライアント装置300に通知する(S1003)。検査可能なアドレスとは、サーバー装置で状態を把握しているアドレス(ブロック)であり、より具体的には更新状況テーブルで送付済みフィールド402cおよび書き換え済みフィールド402dの両方が「完了」または両方が「未実施」であるアドレスである。   When the client device 300 is activated (S1001), the activation program is executed, and the address inquiry function 301a inquires the server device 400 which address in the OS storage unit 306 is to be inspected (S1002). Upon receiving this request, the update program management unit 402 of the server device 400 refers to the update status table, randomly selects an inspectable address, and notifies the client device 300 of it (S1003). The address that can be inspected is an address (block) whose state is known by the server device. More specifically, both the sent field 402c and the rewritten field 402d are “completed” or both in the update status table. The address is “not implemented”.

クライアント装置300は、サーバー装置400から指定されたアドレスを対象に、OS検査部308を用いてハッシュ値を算出してサーバー装置400へ送信する(S1004)。クライアント装置300において算出されたハッシュ値を受信したサーバー装置400は、そのハッシュ値が想定値と一致するか否か比較して、クライアント装置300の正当性を検証する(S1005)。更新プログラム管理部402ではクライアント装置300のOS記憶部306の状態を把握しているので、指定したアドレスについて正しいハッシュ値を算出可能である。クライアント装置300から送信されたハッシュ値が想定される値と異なる場合(S1006:NG)は、クライアント装置300は不正な端末であると判断し認証に失敗したことを通知する(S1007)。一方、クライアント装置300から送信された値と一致する場合(S1006:OK)は、クライアント装置が正当なものであると判断できる。このとき、更新プログラム管理部402は更新状況テーブルを参照して、クライアント装置において更新処理に未完了な部分があるか判断する(S1008)。未完了な部分がない場合(S1008:NO)、サーバー装置400は、クライアント装置300に対して、認証成功の通知およびOS記憶部306内のOSプログラムの実行すべき旨の通知を送信する(S1009)。一方、更新処理に未完了な部分がある
場合、すなわち、更新処理の途中である場合(S1008:YES)は、サーバー装置400は、クライアント装置300に対して、認証成功の通知および更新処理を再開すべき旨の通知を送信する(S1010)。
The client device 300 calculates a hash value using the OS checking unit 308 for the address specified by the server device 400, and transmits the hash value to the server device 400 (S1004). The server device 400 that has received the hash value calculated in the client device 300 verifies whether or not the hash value matches the assumed value, and verifies the validity of the client device 300 (S1005). Since the update program management unit 402 knows the state of the OS storage unit 306 of the client device 300, a correct hash value can be calculated for the designated address. If the hash value transmitted from the client device 300 is different from the assumed value (S1006: NG), the client device 300 determines that the client device 300 is an unauthorized terminal and notifies that authentication has failed (S1007). On the other hand, if the value matches the value transmitted from the client device 300 (S1006: OK), it can be determined that the client device is valid. At this time, the update program management unit 402 refers to the update status table to determine whether there is an incomplete part of the update process in the client device (S1008). If there is no incomplete part (S1008: NO), the server device 400 transmits a notification of successful authentication and a notification that the OS program in the OS storage unit 306 should be executed to the client device 300 (S1009). ). On the other hand, if there is an incomplete part in the update process, that is, if the update process is in progress (S1008: YES), the server apparatus 400 resumes the authentication success notification and update process to the client apparatus 300. A notification to the effect is transmitted (S1010).

クライアント装置300はサーバー装置400から認証結果を受け取る(S1011)。認証が失敗した場合(S1012:NG)は、プログラムの実行を中止する(S1013)。認証に成功した場合(S1012:OK)は、サーバー装置400からの指示にしたがった動作、すなわち、OSプログラムの実行または更新作業の再開を行う(S1014)
〈実施形態の作用・効果〉
本実施形態においては、クライアント装置300内のOSプログラムのハッシュ値を検証して、クライアント装置の正当性を判断している。クライアント装置300でOSプログラムが改ざんされた場合、ハッシュ値が想定される値と異なるものになるため改ざんを検知できる。なお、ハッシュ値算出対象のアドレスはランダムに決定されるので、クライアント・サーバー間の通信を盗聴して、それに含まれるハッシュ値と同じ値を返すという攻撃も阻止できる。
The client device 300 receives the authentication result from the server device 400 (S1011). If the authentication fails (S1012: NG), the program execution is stopped (S1013). When the authentication is successful (S1012: OK), the operation according to the instruction from the server device 400, that is, the execution of the OS program or the resumption of the update work is performed (S1014).
<Operation and effect of the embodiment>
In this embodiment, the validity of the client device is determined by verifying the hash value of the OS program in the client device 300. When the OS program is falsified in the client device 300, the hash value is different from the assumed value, so that falsification can be detected. Since the hash value calculation target address is determined at random, an attack in which the communication between the client and the server is eavesdropped and the same value as the hash value included therein can be prevented can be prevented.

さらに、本実施形態においては、クライアント装置のOSプログラムの更新作業が途中で中断した場合であっても、サーバー装置側で更新状況を把握しているため、ハッシュ値による正当性の検証が可能である。つまり、更新作業が中断した場合もクライアント装置の正当性を検証し、更新処理を再開することができる。   Furthermore, in the present embodiment, even if the update operation of the OS program of the client device is interrupted in the middle, the update status is grasped on the server device side, so that the validity can be verified by the hash value. is there. That is, even when the update operation is interrupted, the validity of the client device can be verified and the update process can be resumed.

100,300 クライアント装置
200,400 サーバー装置
101,301 起動プログラム記憶部
102,302 終了プログラム記憶部
106,306 OS記憶部
202 アップロードプログラム選択部
203 アップロードプログラム記憶部
204 通常ブート用プログラム
205 更新作業用プログラム
308 OS検査部
402 更新プログラム管理部
403 検査部位決定部
DESCRIPTION OF SYMBOLS 100,300 Client apparatus 200,400 Server apparatus 101,301 Startup program storage part 102,302 End program storage part 106,306 OS storage part 202 Upload program selection part 203 Upload program storage part 204 Normal boot program 205 Update work program 308 OS inspection unit 402 Update program management unit 403 Inspection site determination unit

Claims (17)

互いに通信可能なクライアント装置とサーバー装置とから構成されるコンピューターシステムであって、
クライアント装置は、装置起動時に実行されるプログラムであるブートプログラムを記憶する第1の記憶手段と、実行対象のプログラムを記憶する第2の記憶手段とを有し、
サーバー装置は、前記実行対象のプログラムを検証するための検証プログラムを記憶する記憶手段を有し、
前記ブートプログラムは、サーバー装置からプログラムを取得して実行する処理を含み、
前記サーバー装置は、クライアント装置のブートプログラムからの要求に応じて、前記検証プログラムをクライアント装置に送信し、
前記クライアント装置は、取得した検証プログラムを用いて前記実行対象のプログラムを検証し、検証に成功した後に当該プログラムを実行する
ことを特徴とするコンピューターシステム。
A computer system composed of a client device and a server device that can communicate with each other,
The client device includes a first storage unit that stores a boot program that is a program that is executed when the device is started, and a second storage unit that stores a program to be executed.
The server device has storage means for storing a verification program for verifying the execution target program,
The boot program includes processing for acquiring and executing a program from a server device,
In response to a request from the client device boot program, the server device transmits the verification program to the client device,
The client system verifies the execution target program using the acquired verification program, and executes the program after the verification is successful.
前記実行対象のプログラムは、暗号化された状態で前記第2の記憶手段に記憶されており、
前記検証プログラムは、実行対象のプログラムを復号する処理を含む
ことを特徴とする請求項1に記載のコンピューターシステム。
The execution target program is stored in the second storage means in an encrypted state,
The computer system according to claim 1, wherein the verification program includes a process of decoding a program to be executed.
前記クライアント装置は、実行対象のプログラムの実行終了時に、第2の記憶手段に記憶されている実行対象のプログラムとは異なる暗号アルゴリズムまたは異なる暗号鍵を用いて暗号化された、実行対象のプログラムをサーバー装置から取得し、第2の記憶手段に格納する機能を有し、
前記サーバー装置は、前記クライアント装置へ送信した実行対象のプログラムを復号するための暗号アルゴリズムおよび暗号鍵を記憶しておき、次に前記クライアント装置のブートプログラムからプログラムの要求があったときに、クライアント装置に記憶されている実行対象のプログラムに対応した検証プログラムをクライアント装置へ送信する
ことを特徴とする請求項2に記載のコンピューターシステム。
When the execution of the execution target program ends, the client device stores the execution target program encrypted using a different encryption algorithm or different encryption key from the execution target program stored in the second storage unit. Having a function of acquiring from the server device and storing in the second storage means;
The server device stores an encryption algorithm and an encryption key for decrypting an execution target program transmitted to the client device, and then when a program request is received from the boot program of the client device, the client device The computer system according to claim 2, wherein a verification program corresponding to an execution target program stored in the apparatus is transmitted to the client apparatus.
前記実行対象のプログラムを更新する場合は、
前記サーバー装置は、前記クライアント装置のブートプログラムからの要求があったときに、新しい実行対象プログラムを第2の記憶手段に格納した後に再起動を行うプログラムを、クライアント装置に送信する
ことを特徴とする請求項2または3に記載のコンピューターシステム。
When updating the program to be executed,
The server device, when requested by the boot program of the client device, transmits a program for restarting after storing a new execution target program in the second storage means to the client device. The computer system according to claim 2 or 3.
前記実行対象のプログラムは、電子署名が付加された状態で前記第2の記憶手段に記憶されており、
前記検証プログラムは、実行対象のプログラムの電子署名を検証する処理を含む
ことを特徴とすることを特徴とする請求項1に記載のコンピューターシステム。
The execution target program is stored in the second storage unit with an electronic signature added thereto,
The computer system according to claim 1, wherein the verification program includes a process of verifying an electronic signature of a program to be executed.
前記クライアント装置は、前記実行対象プログラムの実行終了時に、前記サーバー装置に対してプログラムを要求する機能を含む停止処理プログラムを有しており、
前記サーバー装置は、前記クライアント装置の前記停止処理プログラムからプログラムの要求があったときに、前記実行対象のプログラムを更新する場合は、新しい実行対象プログラムを第2の記憶手段に格納した後に再起動を行うプログラムをクライアント装置に送信する
ことを特徴とする請求項5のいずれかに記載のコンピューターシステム。
The client device has a stop processing program including a function of requesting a program to the server device at the end of execution of the execution target program;
When the server device updates the execution target program when a program request is received from the stop processing program of the client device, the server device restarts after storing the new execution target program in the second storage unit The computer system according to claim 5, wherein a program for performing is transmitted to the client device.
前記サーバー装置は、前記検証プログラムに電子署名を付加してクライアント装置に送信し、
前記ブートプログラムは、取得した検証プログラムの電子署名を検証する処理を含む
ことを特徴とする請求項1〜6のいずれかに記載のコンピューターシステム。
The server device adds an electronic signature to the verification program and sends it to the client device,
The computer system according to claim 1, wherein the boot program includes a process of verifying an electronic signature of the acquired verification program.
前記第1の記憶手段は、書き換え不可能な不揮発性メモリであり、
前記第2の記憶手段は、書き換え可能な不揮発性メモリである
ことを特徴とする請求項1〜7のいずれかに記載のコンピューターシステム。
The first storage means is a non-rewritable nonvolatile memory,
The computer system according to claim 1, wherein the second storage unit is a rewritable nonvolatile memory.
互いに通信可能なクライアント装置とサーバー装置とから構成されるコンピューターシステムであって、
クライアント装置は、装置起動時に実行されるプログラムであるブートプログラムを記憶する第1の記憶手段と、実行対象のプログラムを記憶する第2の記憶手段とを有し、
サーバー装置は、前記クライアント装置の第2の記憶手段に格納されているプログラムの状態を管理する管理手段と、前記クライアント装置に所定のアドレスについてのハッシュ値を要求し前記管理手段から判断可能な正しいハッシュ値と一致するか否かを判定しクライアント装置に通知する判定手段を含み、
前記ブートプログラムは、前記サーバー装置からハッシュ値を算出する対象のアドレスを取得し、取得したアドレスについてハッシュ値を求めて、サーバー装置に送信する機能を有し、サーバー装置からハッシュ値が正しいという通知を受けた後に前記第2の記憶手段に格納されている実行対象のプログラムを実行する
ことを特徴とするコンピューターシステム。
A computer system composed of a client device and a server device that can communicate with each other,
The client device includes a first storage unit that stores a boot program that is a program that is executed when the device is started, and a second storage unit that stores a program to be executed.
The server device is a management unit that manages the state of the program stored in the second storage unit of the client device, and that the client device requests a hash value for a predetermined address from the client device and is correct that can be determined from the management unit A determination unit that determines whether or not the hash value matches, and notifies the client device;
The boot program has a function of acquiring a target address for calculating a hash value from the server device, obtaining a hash value for the acquired address, and transmitting the hash value to the server device. A computer system that executes an execution target program stored in the second storage means after receiving the data.
クライアント装置とサーバー装置との間の通信は、秘匿通信または署名付き通信により行われることを特徴とする請求項9に記載のコンピューターシステム。   The computer system according to claim 9, wherein the communication between the client device and the server device is performed by secret communication or communication with a signature. 前記実行対象のプログラムを更新する場合は、
前記サーバー装置は、新しい実行対象プログラムを分割して1つずつクライアント装置へ送信し、
前記クライアント装置は、取得した更新プログラムで前記第2の記憶手段の書き換えが完了した場合にその旨を示す完了通知をサーバー装置へ通知し、
前記サーバー装置の管理手段は、クライアント装置において更新が完了したアドレス領域と更新が未完了なアドレス領域と更新の完了・未完了が不明なアドレス領域とを管理することを特徴とする請求項9または10に記載のコンピューターシステム。
When updating the program to be executed,
The server device divides a new execution target program and sends it to the client device one by one,
When the client device completes rewriting of the second storage means with the acquired update program, the client device notifies the server device of a completion notification indicating that,
The management unit of the server apparatus manages an address area in which update is completed in the client apparatus, an address area in which update is not completed, and an address area in which update completion / uncomplete is unknown. 10. The computer system according to 10.
前記判定手段は、ハッシュ値算出の対象となるアドレスを、前記管理手段によって更新が完了または未完了と把握されているアドレス領域の中からランダムに決定することを特徴とする請求項11に記載のコンピューターシステム。   12. The determination unit according to claim 11, wherein the determination unit randomly determines an address for which a hash value is to be calculated, from an address area that is known to be updated or not updated by the management unit. Computer system. 前記サーバー装置は、前記クライアント装置から送信されたハッシュ値が正しいと判定された場合に、前記クライアント装置における実行対象プログラムの更新処理が未完了であると前記管理手段から判断される場合は、更新処理を再開する
ことを特徴とする請求項12に記載のコンピューターシステム。
When the server device determines that the update processing of the execution target program in the client device is incomplete when it is determined that the hash value transmitted from the client device is correct, the server device updates The computer system according to claim 12, wherein the processing is resumed.
互いに通信可能なクライアント装置とサーバー装置とから構成されるコンピューターシステムにおける、クライアント装置のストレージ手段に格納された実行対象プログラムを起動するプログラム起動方法であって、
クライアント装置は、装置起動時に実行されるブートプログラムにより、サーバー装置からプログラムを取得し、
サーバー装置は、クライアント装置からのプログラム要求に応じて、実行対象プログラ
ムを検証するためのプログラムをクライアント装置に送信し、
クライアント装置は、取得した検証プログラムによって実行対象プログラムを検証し、検証に成功した後に当該実行対象プログラムを実行する
ことを特徴とするプログラム起動方法。
In a computer system composed of a client device and a server device that can communicate with each other, a program starting method for starting an execution target program stored in storage means of a client device,
The client device acquires a program from the server device by a boot program executed when the device is started,
The server device transmits a program for verifying the execution target program to the client device in response to the program request from the client device,
A client apparatus verifies an execution target program by using an acquired verification program, and executes the execution target program after the verification is successful.
前記実行対象プログラムは、暗号化された状態でストレージ手段に格納されており、
前記検証プログラムは、実行対象プログラムを復号する処理を含む
ことを特徴とする請求項14に記載のプログラム起動方法。
The execution target program is stored in the storage means in an encrypted state,
The program starting method according to claim 14, wherein the verification program includes a process of decoding the execution target program.
前記実行対象プログラムは、電子署名が付加された状態でストレージ手段に格納されており、
前記検証プログラムは、実行対象プログラムの電子署名を検証する処理を含む
ことを特徴とする請求項14に記載のプログラム起動方法。
The execution target program is stored in a storage unit with an electronic signature added thereto,
The program activation method according to claim 14, wherein the verification program includes a process of verifying an electronic signature of an execution target program.
互いに通信可能なクライアント装置とサーバー装置とから構成されるコンピューターシステムにおける、クライアント装置のストレージ手段に格納された実行対象プログラムを起動するプログラム起動方法であって、
サーバー装置は、クライアント装置のストレージ手段に格納されているプログラムの状態を管理しており、
クライアント装置は、装置起動時に実行されるブートプログラムにより、サーバー装置からハッシュ値を算出する対象のアドレスを取得し、当該アドレスのハッシュ値を算出してサーバー装置に送信し、
サーバー装置は、クライアント装置から送信されるハッシュ値が、正しいハッシュ値と一致するか否かを判定してクライアント装置に通知し、
クライアント装置は、サーバー装置からハッシュ値が正しいという通知を受けた後に実行対象のプログラムを実行する
ことを特徴とするプログラム起動方法。
In a computer system composed of a client device and a server device that can communicate with each other, a program starting method for starting an execution target program stored in storage means of a client device,
The server device manages the state of the program stored in the storage means of the client device,
The client device acquires a target address for calculating a hash value from the server device by a boot program executed at the time of starting the device, calculates a hash value of the address, and transmits the hash value to the server device.
The server device determines whether or not the hash value transmitted from the client device matches the correct hash value, and notifies the client device,
The client apparatus executes a program to be executed after receiving a notification from the server apparatus that the hash value is correct.
JP2009145671A 2009-06-18 2009-06-18 Computer system and program starting method Pending JP2011003020A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009145671A JP2011003020A (en) 2009-06-18 2009-06-18 Computer system and program starting method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009145671A JP2011003020A (en) 2009-06-18 2009-06-18 Computer system and program starting method

Publications (1)

Publication Number Publication Date
JP2011003020A true JP2011003020A (en) 2011-01-06

Family

ID=43560927

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009145671A Pending JP2011003020A (en) 2009-06-18 2009-06-18 Computer system and program starting method

Country Status (1)

Country Link
JP (1) JP2011003020A (en)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015103163A (en) * 2013-11-27 2015-06-04 株式会社オートネットワーク技術研究所 Program update system and program update method
JP2015225376A (en) * 2014-05-26 2015-12-14 Kddi株式会社 Computer system, computer, semiconductor device, information processing method, and computer program
JP2016010031A (en) * 2014-06-25 2016-01-18 Kddi株式会社 Remote integrity verification system, method and program
JP2017511921A (en) * 2014-02-13 2017-04-27 フジツウ テクノロジー ソリューションズ インタレクチュアル プロパティ ゲーエムベーハー How to boot a production computer system
KR101765209B1 (en) * 2016-06-02 2017-08-04 한국전자통신연구원 Apparatus and method for safe booting
JP2019075000A (en) * 2017-10-18 2019-05-16 キヤノン株式会社 Information processing apparatus, control method thereof, and program
JP2020024579A (en) * 2018-08-07 2020-02-13 トヨタ自動車株式会社 On-vehicle device
JP2020142565A (en) * 2019-03-04 2020-09-10 株式会社オートネットワーク技術研究所 On-vehicle update device, update processing program and method of updating program
JP2021524633A (en) * 2018-05-23 2021-09-13 ロベルト・ボッシュ・ゲゼルシャフト・ミト・ベシュレンクテル・ハフツングRobert Bosch Gmbh A method and control for exchanging an executable first program code for an executable second program code

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10289146A (en) * 1997-04-15 1998-10-27 Casio Comput Co Ltd Network system, network terminal device, host device and recording medium
JPH11249900A (en) * 1998-02-27 1999-09-17 Toshiba Corp Computer system, boot method for system and recording medium
JPH11258985A (en) * 1998-03-12 1999-09-24 Nissin Electric Co Ltd File generating device for sending cipher data, recording medium where program thereof is recorded, and storage medium storing file for sending cipher data
JP2003108384A (en) * 2001-09-28 2003-04-11 Dainippon Printing Co Ltd Apparatus for loading ic card application program and processing method thereof
JP2007094879A (en) * 2005-09-29 2007-04-12 Toshiba Corp Authentication system for basic program of operating system, computer used for the same, and computer program
JP2009043085A (en) * 2007-08-09 2009-02-26 Nec Corp Alteration detection system, alteration detection method, wireless network controller, and mobile phone terminal

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10289146A (en) * 1997-04-15 1998-10-27 Casio Comput Co Ltd Network system, network terminal device, host device and recording medium
JPH11249900A (en) * 1998-02-27 1999-09-17 Toshiba Corp Computer system, boot method for system and recording medium
JPH11258985A (en) * 1998-03-12 1999-09-24 Nissin Electric Co Ltd File generating device for sending cipher data, recording medium where program thereof is recorded, and storage medium storing file for sending cipher data
JP2003108384A (en) * 2001-09-28 2003-04-11 Dainippon Printing Co Ltd Apparatus for loading ic card application program and processing method thereof
JP2007094879A (en) * 2005-09-29 2007-04-12 Toshiba Corp Authentication system for basic program of operating system, computer used for the same, and computer program
JP2009043085A (en) * 2007-08-09 2009-02-26 Nec Corp Alteration detection system, alteration detection method, wireless network controller, and mobile phone terminal

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015080108A1 (en) * 2013-11-27 2015-06-04 株式会社オートネットワーク技術研究所 Program update system and program update method
JP2015103163A (en) * 2013-11-27 2015-06-04 株式会社オートネットワーク技術研究所 Program update system and program update method
US10114654B2 (en) 2014-02-13 2018-10-30 Fujitsu Technology Solutions Intellectual Property Gmbh Method of booting a production computer system
JP2017511921A (en) * 2014-02-13 2017-04-27 フジツウ テクノロジー ソリューションズ インタレクチュアル プロパティ ゲーエムベーハー How to boot a production computer system
JP2015225376A (en) * 2014-05-26 2015-12-14 Kddi株式会社 Computer system, computer, semiconductor device, information processing method, and computer program
JP2016010031A (en) * 2014-06-25 2016-01-18 Kddi株式会社 Remote integrity verification system, method and program
KR101765209B1 (en) * 2016-06-02 2017-08-04 한국전자통신연구원 Apparatus and method for safe booting
JP2019075000A (en) * 2017-10-18 2019-05-16 キヤノン株式会社 Information processing apparatus, control method thereof, and program
JP2021524633A (en) * 2018-05-23 2021-09-13 ロベルト・ボッシュ・ゲゼルシャフト・ミト・ベシュレンクテル・ハフツングRobert Bosch Gmbh A method and control for exchanging an executable first program code for an executable second program code
US11429375B2 (en) 2018-05-23 2022-08-30 Robert Bosch Gmbh Method for exchanging a first executable program code and a second executable program code, and a control unit
JP2020024579A (en) * 2018-08-07 2020-02-13 トヨタ自動車株式会社 On-vehicle device
JP2020142565A (en) * 2019-03-04 2020-09-10 株式会社オートネットワーク技術研究所 On-vehicle update device, update processing program and method of updating program
CN113453959A (en) * 2019-03-04 2021-09-28 株式会社自动网络技术研究所 Vehicle-mounted updating device, update processing program, and program updating method
JP7111030B2 (en) 2019-03-04 2022-08-02 株式会社オートネットワーク技術研究所 In-vehicle update device, update processing program, and program update method

Similar Documents

Publication Publication Date Title
JP5690412B2 (en) Hardware device key provisioning method and apparatus
JP2011003020A (en) Computer system and program starting method
EP3646173B1 (en) Theft and tamper resistant data protection
TWI489315B (en) System and method for temporary secure boot of an electronic device
JP6371919B2 (en) Secure software authentication and verification
JP5564453B2 (en) Information processing system and information processing method
TW201732669A (en) Controlled secure code authentication
JP2010011400A (en) Cipher communication system of common key system
JP2010003235A (en) Secure boot with optional component method
TW201735578A (en) Controlled secure code authentication
CN106790045B (en) distributed virtual machine agent device based on cloud environment and data integrity guarantee method
CN110730159B (en) TrustZone-based secure and trusted hybrid system starting method
JP2011108167A (en) Computer system
CN111433771A (en) Secure booting of kernel modules
KR20160098756A (en) Hardware secure module, method for updating integrity check value stored in the hardware secure module and program stored in terminal by the hardware secure module
CN111177709A (en) Execution method and device of terminal trusted component and computer equipment
JP2009169841A (en) Information processor and portable telephone device
JP6888122B2 (en) Semiconductor device, update data provision method, update data reception method and program
CN117453343A (en) Virtual machine measurement and secret calculation authentication method, device, system and storage medium
US20220209946A1 (en) Key revocation for edge devices
CN112347481B (en) Safe starting method, controller and control system
CN116305092B (en) Method and system for realizing trusted virtualization system
WO2023092958A1 (en) Safe starting method and apparatus for vehicle, and electronic control unit and storage medium
WO2022185570A1 (en) Control apparatus
US11526598B2 (en) Microcontroller and semiconductor device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130226

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130625