JP2011003020A - Computer system and program starting method - Google Patents
Computer system and program starting method Download PDFInfo
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
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).
しかしながら、特許文献1に記載された方法のように、端末に特殊なハードウェアを導入すると、数多くの端末が存在するシステムでは導入コストが肥大してしまう。たとえば、自動車には多数のECU(Electronic Control Unit)が搭載されており、ECUの搭
載数は今後ますます増加することが予想される。このような多数のECUの全てに特殊なハードウェアを導入することはコストの観点からも望ましくない。
However, when special hardware is introduced into a terminal as in the method described in
また、特許文献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.
以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。 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
0 is a device with scarce computer resources. Since only one
クライアント装置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
クライアント装置100は、コストを抑えるために特殊な機器をできるだけ利用せずに構成する。セキュリティ確保のためにはTPMなどのハードウェア耐タンパ性を有するセキュリティチップを用いてセキュアブート機能を用いればよいが、クライアント装置の数が多い環境では個々のクライアントに特殊なハードウェアを導入するとコストが高くなってしまう。本実施形態ではクライアント装置側にセキュリティチップなどのハードウェアを導入せずに、クライアント装置の安全なプログラム実行および安全なプログラム更新を実現する。なお、サーバー装置200はシステム内に一台のみでよいので、TPMモジュールなどによってセキュリティが確保された構成を採用する。
The
以下で説明するクライアント装置100およびサーバー装置200の各機能部は、ROMやストレージ装置内に格納されているプログラムをCPUが実行することにより実現される。ただし、これらの機能の内の一部については、専用のハードウェアによって構成しても構わない。
Each functional unit of the
クライアント装置100は、起動プログラム記憶部101、終了プログラム記憶部102、公開鍵記憶部103、外部通信部104、ダウンロードプログラム展開・実行部105、OS記憶部106を含む。起動プログラム記憶部101は、クライアント装置100の電源投入時に実行される起動プログラム(ブートプログラム)を記憶する。終了プログラム記憶部102は、クライアント装置100の終了時に実行されるプログラムを記憶する。公開鍵記憶部103は、サーバー装置200の公開鍵を記憶する。これらの各記憶部は実体としてはマスクロムである。外部通信部104はネットワークを介してサーバー装置200と通信する機能部である。ダウンロードプログラム展開・実行部105は、サー
バー装置から取得(ダウンロード)したプログラムの署名検証を行い、RAMに展開して実行する機能部である。外部通信部104およびダウンロードプログラム展開・実行部105は、マスクROMに記憶されたプログラムをCPUが実行することによって実現される。
The
OS記憶部106は、クライアント装置100が実行するシステムプログラム(OS:オペレーティングシステム)を記憶する。OS記憶部106は、実体としてはストレージ装置である。本実施形態においては、OS記憶部106にOSプログラムが暗号化されて記憶されている。なお、本実施形態ではクライアント装置が安全に実行すべきプログラムがOSプログラムである例を説明しているが、実行対象のプログラムはOSである必要はなく任意のプログラムであって構わない。
The
サーバー装置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
図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
終了プログラム記憶部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
図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
アップロードプログラム記憶部203に格納されている更新作業用プログラム205は、プログラムダウンロード機能205a、OS記憶部更新機能205b、再起動機能205cを有する。プログラムダウンロード機能205aは、サーバー装置200に更新されたOSプログラムを要求する機能である。OS記憶部更新機能205bは、サーバー装置200から新たに取得したOSプログラムでOS記憶部106を更新する。再起動機能205cは、クライアント装置100を再起動する機能である。
The
〈動作〉
・全体処理
第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
クライアント装置100がサーバー装置200から更新作業用プログラム205を取得した場合(S103)は、この更新作業用プログラム205をクライアント装置100が実行することでOSの更新を行う(S104)。そして、更新終了後に再起動する(S105)ので、再起動後に再びサーバーにプログラムを要求することになる(S102)。
When the
クライアント装置100が有するOSプログラムが最新のものである場合は、サーバー装置200から通常ブート用プログラム204がクライアント装置に送信される(S106)。クライアント装置100は通常ブート用プログラム204を実行してOS記憶部1
06内のOSプログラムを復号処理する(S107)。そして、正常に復号できた場合にはOSプログラムを実行する(S108)。
When the OS program of the
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
・サーバー装置の処理
以下では、クライアント装置100およびサーバー装置200が行うそれぞれの処理をより詳しく説明する。まず、サーバー装置200が行う処理を図4のフローチャートを参照しつつ説明する。
Processing of Server Device Hereinafter, each processing performed by the
サーバー装置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
・クライアント装置の処理
次にクライアント装置100が行う処理を説明する。まず、クライアント装置100が起動時に行う処理(図3のステップS101〜S105およびS101〜S108に相当)を図5のフローチャートを参照しつつ説明する。
Processing of client device Next, processing performed by the
クライアント装置100の電源が投入されると(S301)、まず、マスクロムに格納されている起動プログラムが実行され(S302)、プログラム要求機能101aによりサーバー装置200に対するプログラム要求が行われる(S303)。クライアント装置100は、サーバー装置200から受け取ったプログラムを、起動プログラムの署名検証機能101bによって検証する(S304)。ここで、署名検証を通過しない場合(S305:NO)は、取得したプログラムはサーバー装置200からのものではない、または、改ざんされたおそれがあるため、プログラムの実行を中止する(S306)。なお、検証に失敗した場合の動作は本発明では特に規定しない。時間をおいて再度実行しても良いし、管理者に報知する処理を行っても良い。取得したプログラムが署名検証により正当なものであると判断された場合(S305:YES)は、起動プログラムの展開プログラム
実行機能101cにより、取得したプログラムをRAMに展開して実行する(S307)。
When the power of the
サーバー装置200から受け取ったプログラムが更新作業用プログラム205の場合は、そのプログラムダウンロード機能205aにより、サーバー装置200へ更新プログラムを要求する(S308)。そして、サーバー装置200から受信された新しいバージョンのOSプログラムは、OS記憶部更新機能205bによりOS記憶部106に格納される(S309)。その後、再起動機能205cによりクライアント端末が再起動される(S310)。再起動後はステップS302に戻り、次のプログラム取得では通常ブート用プログラム204がサーバー装置200から得られることになる。
If the program received from the
ステップ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
次にクライアント装置100が終了時に行う処理(図3のステップS109〜S111に相当)を図6のフローチャートを参照しつつ説明する。
Next, a process (corresponding to steps S109 to S111 in FIG. 3) performed by the
クライアント装置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
〈実施形態の作用・効果〉
本実施形態によれば、クライアント装置側にはセキュリティチップなどの特殊な装置を導入することなく、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
OS記憶部106に記憶されている暗号化OSを起動する際には、サーバー装置200から得られた通常ブート用プログラムによって復号処理をして、正常に復号できた場合のみOSプログラムを実行している。したがって、このOSプログラムの正当性も保証される(図3のS106〜S108まで安全)。
When starting the encrypted OS stored in the
なお、更新作業用プログラムによって取得される暗号化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記憶部106に格納されているOSプログラムは暗号化されているため、第三者に対してその内容を秘匿できる。ただし、OS復号機能204aを含む通常ブート用プログラム204は、クライアント・サーバー間を平文の状態で通信される。したがって、第三者がこの通常ブート用プログラム204を盗聴することで、OS記憶部106に格納されている暗号化OSを復号して内容を知ることができてしまう。そこで、クライアント装置100の終了時に異なる暗号アルゴリズムまたは暗号鍵で暗号化されたOSプログラムを取得してOS記憶部106に格納することで、電源がオフされた時に第三者がその中身を知ることができない。
In this embodiment, since the OS program stored in the
(第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
上述したようにクライアント装置100のOS記憶部106には、平文のOSプログラムに電子署名が付加されて記憶されている点で第1の実施形態と異なる。また、クライアント装置100にTPMモジュールなどのセキュリティチップ(耐タンパデバイス)によって実現される通信検証部107が設けられている点でも第1の実施形態と異なる。本実施形態においてクライアント・サーバー間の通信は、改ざんおよびなりすましが防止できるように暗号処理を施す。ここでは、サーバー・クライアント間の通信として、共通鍵暗号方式によるメッセージ認証コード(MAC)を用いる署名付き通信を採用する。もっとも、サーバー・クライアント間の通信には、共通鍵方式による秘匿通信や、公開鍵暗号方
式による署名付き通信を採用しても良い。この共通鍵(公開鍵方式の場合は秘密鍵)は秘匿化する必要があるため通信検証部107にはセキュリティチップが利用される。なお、暗号アルゴリズムも(公開鍵方式の場合は加えて公開鍵も)セキュリティチップ内に格納されるものとして説明するが、暗号アルゴリズムは改ざんされてなければ十分なのでマスクROMに格納しても良い。
As described above, the
サーバー装置200は基本的に第1の実施形態と同様であるが、OSプログラムの暗号化処理を行わないため、暗号化部207および暗号方法記憶部208が省略されている。また、アップロードプログラム記憶部203に、停止用プログラム209が格納されている。
The
図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
終了プログラム記憶部102に格納されている終了プログラムは、プログラム要求機能102dおよびプログラム実行機能102eを有する。終了プログラムは基本的に起動プログラムと同じ機能を有するが、端末停止時のプログラム要求である旨を通知してサーバー装置200にプログラムを要求する点で異なる。
The termination program stored in the termination
図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
アップロードプログラム記憶部203に格納されている更新作業用プログラム205は、プログラムダウンロード機能205d、OS記憶部更新機能205e、OS検証機能205fを有する。プログラムダウンロード機能205dは、サーバー装置200から更新されたOSプログラムを取得する機能である。OS記憶部更新機能205eは、取得したOSプログラムをOS記憶部106に格納する機能である。OS検証機能205fは、取得したOSプログラムの署名検証を行い、OSプログラムが正当なものであるか判定する機能である。
The
アップロードプログラム記憶部203に格納されている停止用プログラム209は、実質的に何も処理を行わないプログラムである。
The
ここで、署名検証動作として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
〈動作〉
・全体処理
第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
このように本実施形態においては、クライアント装置の起動時には電子署名検証による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
サーバー装置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
・クライアント装置の処理
次にクライアント装置100が行う処理を説明する。まず、クライアント装置100が起動時に行う処理(図9のステップS501〜S504に相当)を図11のフローチャー
トを参照しつつ説明する。
Processing of client device Next, processing performed by the
クライアント装置100の電源が投入されると(S701)、まず、マスクロムに格納されている起動プログラムが実行され(S702)、プログラム要求機能101dによりサーバー装置200に対するプログラム要求が行われる(S703)。クライアント装置起動時のプログラム要求は通常ブート用プログラム204を要求するものであるため、クライアント装置100は、サーバー装置から通常ブート用プログラム204を取得する。取得された通常ブート用プログラム204の正当性を検証するために、通信検証部107が署名検証を実施する(S704)。ここで署名が一致せず改ざんやなりすましの危険性がある場合には(S705:NO)、プログラムの実行を停止する(S706)。なお、検証に失敗した場合の動作は本発明では特に規定しない。時間をおいて再度実行しても良いし、管理者に報知する処理を行っても良い。取得したプログラムが署名検証により正当なものであると判断された場合(S705:YES)は、プログラム実行機能101eにより取得した通常ブート用プログラム204を実行する(S707)。
When the
通常ブート用プログラム204が実行されると、そのOS検証機能204dにより、OS記憶部106に格納されているOSプログラムの署名検証が実施される(S708)。ここで、署名検証を通過しない場合(S709:NO)は、OS記憶部106内のOSプログラムが改ざんされたおそれがあるため、プログラムを実行せずに終了する(S710)。一方、署名検証を通過した場合(S709:YES)は、通常ブート用プログラム204に含まれるプログラム実行機能204eにより、OS記憶部106内のOSプログラムを実行する(S711)。
When the
次にクライアント装置100が終了時に行う処理(図9のステップS505〜510に相当)を図12のフローチャートを参照しつつ説明する。
Next, processing (corresponding to steps S505 to 510 in FIG. 9) performed by the
クライアント装置100では、OSプログラムの実行が終了する(S801)と終了プログラム記憶部102内の終了プログラムが実行される(S802)。終了プログラムのプログラム要求機能102dによりサーバー装置200に対してプログラムの要求が行われる(S803)。サーバー装置200から受け取ったプログラムに対しては、通信検証部107が署名検証処理を行う(S804)。受け取ったプログラムの検証が失敗した場合(S805:NO)は、改ざんまたはなりすましのおそれがあるのでそのプログラムを実行せずに終了する(S806)。一方、受け取ったプログラムの検証が成功した場合(S805:YES)は、プログラム実行機能102eによりそのプログラムを実行する(S806)。
In the
ここでOSプログラムの更新が必要ではない場合は、実質的に何も処理を行わない停止用プログラム209がサーバー装置200から送られるので、クライアント装置100は何も処理をせずに終了することになる(S812)。
If it is not necessary to update the OS program, a
一方、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
〈実施形態の作用・効果〉
本実施形態によっても、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
クライアント装置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
なお、暗号処理部307の全てを耐タンパデバイスで構成する必要はない。共有鍵(公開鍵暗号方式を採用する場合は秘密鍵)は秘匿化する必要があるので耐タンパデバイスに格納する必要があるが、暗号アルゴリズム(および公開鍵暗号方式を採用する場合は公開鍵)は改ざんされなければ十分なのでマスクROMに格納すれば十分である。このような構成を採用すれば、耐タンパデバイスの導入を最小限にできコストの上昇を抑えることができる。
Note that it is not necessary to configure all of the
図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
終了プログラムのプログラムダウンロード機能302aは、サーバー装置400からOSプログラムの更新版を取得する機能である。OS記憶部更新機能302bは、サーバー装置400から取得される更新版のOSプログラムをOS記憶部306に格納する機能である。なお、後述するようにサーバー装置400から更新版のOSプログラムがブロック単位に分割されて送信されるので、クライアント装置300においてもブロック単位で取得・更新処理を行う。更新完了通知機能302cは、OS記憶部306の更新が完了したことをブロック単位で通知する機能である。
The
サーバー装置400は、外部通信部401、更新プログラム管理部402、検査部位決定部403、更新プログラム記憶部404、クライアントプログラム記憶部405、暗号処理部406を備える。外部通信部401は、ネットワークを介してクライアント装置300と通信する機能部である。クライアント装置300との間の通信は、暗号処理部406により秘匿化される。更新プログラム管理部402は、クライアント装置300に対するOSプログラムの更新処理および更新状況の管理(把握)を行う機能部である。更新プログラム記憶部404は、クライアント装置300において実行するOSプログラムに更新がある場合に、最新版のOSプログラムを記憶する。クライアントプログラム記憶部405は、更新前のOSプログラムを記憶する。なお、サーバー装置400は、全体がセキュリティチップなどを用いて構成されることで、セキュリティが確保される。
The
更新プログラム管理部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
〈動作〉
・クライアント停止時(更新処理)
第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
更新プログラムがある場合(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
When the update of all the blocks is completed (S909: YES), the
このように更新プログラムをブロック単位に分割してクライアント装置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
・クライアント起動時(プログラム実行・更新処理再開)
次に、クライアント装置300の起動時の処理について、図17のフローチャートを参照しつつ説明する。
-When the client is started (program execution / update process restart)
Next, processing when the
クライアント装置300が起動すると(S1001)、起動プログラムが実行されて、そのアドレス問い合わせ機能301aにより、OS記憶部306内のどのアドレスを対象に検査するかをサーバー装置400に問い合わせる(S1002)。この要求を受信したサーバー装置400の更新プログラム管理部402は、更新状況テーブルを参照して検査可能なアドレスをランダムに選択しクライアント装置300に通知する(S1003)。検査可能なアドレスとは、サーバー装置で状態を把握しているアドレス(ブロック)であり、より具体的には更新状況テーブルで送付済みフィールド402cおよび書き換え済みフィールド402dの両方が「完了」または両方が「未実施」であるアドレスである。
When the
クライアント装置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
クライアント装置300はサーバー装置400から認証結果を受け取る(S1011)。認証が失敗した場合(S1012:NG)は、プログラムの実行を中止する(S1013)。認証に成功した場合(S1012:OK)は、サーバー装置400からの指示にしたがった動作、すなわち、OSプログラムの実行または更新作業の再開を行う(S1014)
〈実施形態の作用・効果〉
本実施形態においては、クライアント装置300内のOSプログラムのハッシュ値を検証して、クライアント装置の正当性を判断している。クライアント装置300でOSプログラムが改ざんされた場合、ハッシュ値が想定される値と異なるものになるため改ざんを検知できる。なお、ハッシュ値算出対象のアドレスはランダムに決定されるので、クライアント・サーバー間の通信を盗聴して、それに含まれるハッシュ値と同じ値を返すという攻撃も阻止できる。
The
<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
さらに、本実施形態においては、クライアント装置の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
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.
前記検証プログラムは、実行対象のプログラムを復号する処理を含む
ことを特徴とする請求項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に記載のコンピューターシステム。 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.
前記検証プログラムは、実行対象のプログラムの電子署名を検証する処理を含む
ことを特徴とすることを特徴とする請求項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.
前記第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.
前記サーバー装置は、新しい実行対象プログラムを分割して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.
ことを特徴とする請求項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.
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)
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)
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 |
-
2009
- 2009-06-18 JP JP2009145671A patent/JP2011003020A/en active Pending
Patent Citations (6)
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)
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 |