以下、図面を参照しつつ、本発明の様々な実施形態について説明する。ただし、本発明の技術的範囲はそれらの実施形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶ点に留意されたい。
本実施形態の通信装置は、所定のサービスを提供する外部装置と通信するための通信装置であって、外部装置との間において電子証明書を用いた所定の認証処理を実行する。また、通信装置は、一つのIC(Integrated Circuit)の中に、少なくともCPU(Central Processing Unit)等のチップ制御部、ROM、フラッシュメモリ又はRAM(Random Access Memory)等のチップ記憶部、I/Oポート(Input/Output Port)等を有するワンチップマイコンを備える。
ワンチップマイコンが有するチップ記憶部は、ワンチップマイコンの製造段階において、外部装置との間での認証処理に用いられる電子証明書のデータに固有の固定値を記憶する。なお、電子証明書に固有の固定値は、当該電子証明書を構成する一部のデータに基づいた値であり、例えば、当該電子証明書を構成する一部のデータからハッシュ関数を用いて変換されたフィンガープリント(ハッシュ値)である。なお、固定値は、フィンガープリントに限らず、電子証明書を構成する公開鍵を少なくとも含む一部のデータに基づいて一意に生成された値であればどのようなデータであってもよい。
また、通信装置は、チップ記憶部に記憶された固定値と、外部装置とは異なる他の装置から受信した電子証明書に含まれる固定値とを比較することより、他の装置から受信した電子証明書が真正であるか否かを判定する判定部を更に備える。そして、通信装置は、判定部によって、他の装置から受信した電子証明書が真正であると判定された場合に限り、外部装置との間で、当該電子証明書を用いた所定の認証処理を実行可能とする端末認証処理部を備える。なお、判定部及び端末認証処理部は、ワンチップマイコンが有するチップ制御部によって実行されるプログラムにより実現される機能モジュールを想定するが、通信装置が備えるワンチップマイコンとは異なる制御部によって実行されるプログラムにより実現される機能モジュールであってもよい。以下、固定値として、フィンガープリントを例にして説明する。
図1は、通信システム1の概略構成の一例を示す図である。通信システム1は、複数の端末装置2、証明書管理装置3及びサーバ装置4を有する。複数の端末装置2、証明書管理装置3及びサーバ装置4は、有線又は無線のネットワーク5で接続され、相互に各種の情報を送受信する。
端末装置2は、証明書管理装置3と通信し、証明書管理装置3から電子証明書を受信する機能と、サーバ装置4と通信し、サーバ装置4から所定のサービスの提供を受ける機能とを有する。端末装置2は、例えば、警備に用いられるコントローラ等である。なお、端末装置2は、通信装置の一例である。
証明書管理装置3は、端末装置2によって用いられる電子証明書を管理するための装置であり、例えば、データベース装置及びウェブサーバ等により構成される。なお、証明書管理装置3は、他の装置の一例である。
電子証明書は、一又は複数の認証局によって、認証の対象機器である端末装置2及びサーバ装置4に対して発行(生成)される。一又は複数の認証局は、電子証明書として、端末装置2を認証するために用いられるクライアント証明書、及び、サーバ装置4を認証するために用いられるサーバ証明書を発行する。また、一又は複数の認証局は、電子証明書として、クライアント証明書及びサーバ証明書を検証するために、クライアント証明書及びサーバ証明書を発行した認証局の認証局証明書を発行する。なお、クライアント証明書は、自装置証明書の一例であり、サーバ証明書は、外部装置証明書の一例である。
サーバ装置4は、複数の端末装置2と通信し、複数の端末装置2のそれぞれに対して所定のサービスを提供するための装置であり、例えば、ウェブサーバ等によって構成される。なお、サーバ装置4は、外部装置の一例である。
なお、証明書管理装置3及びサーバ装置4は、同一のウェブサーバ装置等によって構成されてもよい。例えば、サーバ装置4が証明書管理装置3の全ての機能を備えるように構成されてもよく、また、証明書管理装置3がサーバ装置4の全ての機能を備えるように構成されてもよい。
図2は、端末装置2の概略構成の一例を示す図である。端末装置2は、ワンチップマイコン24を有し、ワンチップマイコン24に記憶されたフィンガープリントテーブル2421に含まれる各フィンガープリントと、証明書管理装置3から受信した電子証明書に含まれるフィンガープリントとを比較し、受信した電子証明書が真正であるか否かを判定する機能を有する。また、端末装置2は、証明書管理装置3から受信した電子証明書が真正であると判定された場合に限り、当該電子証明書を用いた所定の認証処理を実行する機能を有する。本実施形態では、端末装置2は、端末通信部21、入力部22、表示部23、ワンチップマイコン24を備える。
端末通信部21は、有線又は無線のLAN(Local Area Network)の通信インターフェース、USB(Universal Serial Bus)等と接続するためのインターフェース、所定の周波数帯を感受帯域とするアンテナを含む、通信インターフェース等である。端末装置2は、端末通信部21を介して証明書管理装置3又はサーバ装置4等と接続され、端末通信部21は、ワンチップマイコン24から供給されたデータを、証明書管理装置3又はサーバ装置4等に送信する。また、端末通信部21は、証明書管理装置3又はサーバ装置4等から受信したデータをワンチップマイコン24に供給する。
入力部22は、キーボード若しくはテンキー、又は外部入力端子等によって構成される。例えば、入力部22は、工場出荷時又はサービス開始時等において、初期設定に係る情報を入力するために用いられる。なお、入力部22が外部入力端子によって構成される場合では、外部入力端子に接続されたモバイル端末等からの情報が入力される。
表示部23は、例えば、有機EL(Electro−Luminescence)ディスプレイ、液晶ディスプレイ、又は、タッチパネル式の表示デバイス、LED等である。表示部23は、ワンチップマイコン24から供給された出力データに応じた表示出力を行う。
ワンチップマイコン24は、電子証明書を構成する一部のデータに基づいて生成されたフィンガープリントを記憶する機能を有する。また、ワンチップマイコン24は、記憶したフィンガープリントを用いて、証明書管理装置3から送信された電子証明書が真正であるか否かを判定する機能を有する。また、ワンチップマイコン24は、電子証明書が真正であると判定された場合、当該電子証明書を用いた所定の認証処理を実行する機能を有する。そのために、ワンチップマイコン24は、チップ制御部241、チップ記憶部242を有する。
チップ制御部241は、例えば、CPU等のプロセッサであり、チップ記憶部242に記憶されているプログラムに基づいて各種処理を実行する。チップ制御部241は、少なくとも判定部2411、端末認証処理部2412、認証局証明書要求部2413、自装置証明書要求部2414を備える。これらの各部は、チップ制御部241が備えるプロセッサで実行されるプログラムにより実現される機能モジュールである。
判定部2411は、端末通信部21を介して証明書管理装置3から電子証明書を受信した場合、受信した電子証明書に含まれるフィンガープリントと、後述するフィンガープリントテーブル2421に記憶されたフィンガープリントとを比較する。複数のフィンガープリントが記憶されている場合は、判定部2411はそれぞれとの比較を行う。次に、判定部2411は、電子証明書に含まれるフィンガープリントに合致するフィンガープリントがフィンガープリントテーブル2421に記憶されている場合、受信した電子証明書が真正であると判定する。また、判定部2411は、真正であると判定したクライアント証明書を、チップ記憶部242を構成するRAM又は図示しないデータ記憶部に記憶する。
端末認証処理部2412は、受信された電子証明書(認証局証明書、クライアント証明書)が判定部2411によって真正であると判定された場合、当該電子証明書を用いて認証処理を実行する。
認証局証明書要求部2413は、認証シーケンスにおいて端末通信部21を介してサーバ装置4からサーバ証明書を受信した場合、当該サーバ証明書を検証するための認証局証明書の送信を要求する認証局証明書要求を、端末通信部21を介して証明書管理装置3に送信する。
自装置証明書要求部2414は、認証シーケンスにおけるサーバ認証が終了した後に、サーバ装置4に自ら(端末装置2)を認証させるためのクライアント証明書の送信を要求するクライアント証明書要求を、端末通信部21を介して証明書管理装置3に送信する。
チップ記憶部242は、ROM、フラッシュメモリ、RAM等から構成され、チップ制御部241での処理に用いられるプログラム及びデータ等を記憶する。なお、プログラム及びデータは、ワンチップマイコン24の製造段階において、後述するワンチップマイコン記録装置6等によってチップ記憶部242に書き込まれる。また、チップ記憶部242は、データとして、後述するフィンガープリントテーブル2421等を記憶する。チップ記憶部242が記憶しているフィンガープリントテーブル2421には、複数の電子証明書のそれぞれに対応して証明書IDとフィンガープリント(固定値)が記憶されている。これらの電子証明書には自装置証明書、認証局証明書が含まれる。
図3は、証明書管理装置3の概略構成の一例を示す図である。証明書管理装置3は、端末装置2によって用いられる電子証明書を記憶し、端末装置2からの要求に応じて、記憶する電子証明書(認証局証明書、クライアント証明書)を端末装置2に送信する機能を有する。また、証明書管理装置3は、後述する認証局7にクライアント証明書の発行を要求する機能を有する。また、証明書管理装置3は、後述するワンチップマイコン記録装置6にフィンガープリントを送信する機能を有する。そのために、証明書管理装置3は、少なくとも管理通信部31、管理記憶部32、管理制御部33を備える。
管理通信部31は、有線又は無線のLANの通信インターフェース、USB等と接続するためのインターフェース、所定の周波数帯を感受帯域とするアンテナを含む、通信インターフェース等である。証明書管理装置3は、管理通信部31を介して端末装置2等と接続され、管理通信部31は、管理制御部33から供給されたデータを、端末装置2等に送信する。また、管理通信部31は、端末装置2等から受信したデータを管理制御部33に供給する。
管理記憶部32は、例えば、ROM、RAM等の半導体メモリ装置、又は、ハードディスク、光ディスク等を備え、管理制御部33での処理に用いられるプログラム、データ等を記憶するデータベース装置等によって構成される。なお、プログラムは、例えばCD−ROM(Compact Disk Read Only Memory)、DVD−ROM(Digital Versatile Disk Read Only Memory)等のコンピュータ読み取り可能な可搬型記録媒体から、公知のセットアッププログラム等を用いて管理記憶部32にインストールされてもよい。また、管理記憶部32は、データとして、後述する証明書管理テーブル321等を記憶する。
管理制御部33は、一又は複数個のプロセッサ及びその周辺回路を備える。管理制御部33は、証明書管理装置3の全体的な動作を統括的に制御するものであり、例えば、CPUである。管理制御部33は、管理記憶部32に記憶されているプログラムに基づいて処理を実行する。管理制御部33は、少なくとも証明書管理部331を備える。証明書管理部331は、管理制御部33が備えるプロセッサで実行されるプログラムにより実現される機能モジュールである。あるいは、証明書管理部331は、ファームウェアとして証明書管理装置3に実装されてもよい。
証明書管理部331は、認証局7から送信された認証局証明書を、管理通信部31を介して受信した場合、受信した認証局証明書を証明書管理テーブル321に記憶する。また、証明書管理部331は、認証局7から送信されたクライアント証明書を、管理通信部31を介して受信した場合、受信したクライアント証明書を証明書管理テーブル321に記憶する。また、証明書管理装置3の証明書管理部331は、ワンチップマイコン記録装置6によって送信されたクライアント証明書発行要求を、管理通信部31を介して受信した場合、受信したクライアント証明書発行要求を、管理通信部31を介して認証局7に送信する。
図4は、サーバ装置4の概略構成の一例を示す図である。サーバ装置4は、端末装置2からのTLS(Transport Layer Security)接続要求に応じて、自ら(サーバ装置4)に発行された予め記憶するサーバ証明書を端末装置2に送信する機能を有する。また、サーバ装置4は、端末装置2から受信したクライアント証明書が検証できた場合、端末装置2とのTLS接続を確立し、端末装置2に所定のサービスを提供する機能を有する。そのために、サーバ装置4は、少なくともサーバ通信部41、サーバ記憶部42、サーバ制御部43を備える。なお、端末装置2からの接続要求は、TLSに限らず、DTLS(Datagram Transport Layer Security)、IPSec(Security Architecture for Internet Protocol)等、他の標準的なセキュアチャネルプロトコルを用いてもよい。
サーバ通信部41は、有線又は無線のLANの通信インターフェース、USB等と接続するためのインターフェース、所定の周波数帯を感受帯域とするアンテナを含む、通信インターフェース等である。サーバ装置4は、サーバ通信部41を介して端末装置2等と接続され、サーバ通信部41は、サーバ制御部43から供給されたデータを、端末装置2等に送信する。また、サーバ通信部41は、端末装置2等から受信したデータをサーバ制御部43に供給する。
サーバ記憶部42は、例えば、ROM、RAM等の半導体メモリ装置、又は、ハードディスク、光ディスク等を備え、サーバ制御部43での処理に用いられるプログラム、データ等を記憶する。なお、プログラムは、例えばCD−ROM、DVD−ROM等のコンピュータ読み取り可能な可搬型記録媒体から、公知のセットアッププログラム等を用いてサーバ記憶部42にインストールされてもよい。また、サーバ記憶部42は、データとして、後述するサーバ証明書、認証局証明書等を記憶する。
サーバ制御部43は、一又は複数個のプロセッサ及びその周辺回路を備える。サーバ制御部43は、サーバ装置4の全体的な動作を統括的に制御するものであり、例えば、CPUである。サーバ制御部43は、サーバ記憶部42に記憶されているプログラムに基づいて処理を実行する。サーバ制御部43は、少なくともサーバ認証処理部431を備える。サーバ認証処理部431は、サーバ制御部43が備えるプロセッサで実行されるプログラムにより実現される機能モジュールである。あるいは、サーバ認証処理部431は、ファームウェアとしてサーバ装置4に実装されてもよい。
サーバ認証処理部431は、サーバ通信部41を介して端末装置2からTLS接続要求を受信した場合、サーバ記憶部42に記憶されたサーバ証明書421を、サーバ通信部41を介して端末装置2に送信する。また、サーバ認証処理部431は、サーバ通信部41を介して端末装置2からクライアント証明書、生成した署名及び暗号文を受信した場合、当該クライアント証明書の検証を行う。また、サーバ認証処理部431は、受信した署名を、クライアント証明書に含まれる公開鍵(Public Key)を用いて検証することで、端末装置2が、クライアント証明書に含まれる公開鍵に対応する真正な秘密鍵を所有していることを確認する。さらにサーバ認証処理部431は、受信した暗号文を、サーバ装置4が記憶するサーバ証明書の公開鍵に対応する秘密鍵によって復号することによりseedを取得し、取得したseedから共通鍵を生成する。また、サーバ認証処理部431は、生成した共有鍵を用いて、端末装置2とのTLS接続を確立する。
以下、図5(a)〜(c)を参照して、クライアント証明書、サーバ証明書及び認証局証明書の各電子証明書について説明する。なお、電子証明書は、例えば、ITU−T(国際電気通信連合―電気通信標準化部門, International Telecommunication Union Telecommunication Standardization Sector)によって定められた規格である「X.509 v3 証明書フォーマット」に対応するデータ構造等によって構成される。
図5は、電子証明書のデータ構造の一例を示す図であり、同図(a)がクライアント証明書、同図(b)がサーバ証明書、同図(c)が認証局証明書のデータ構造の一例を示している。これらの電子証明書は、発行者ID(identification)、証明書ID、端末ID/サーバID/認証局ID、公開鍵、有効期間開始、有効期間終了、署名値、フィンガープリント等から構成される。
発行者IDは、電子証明書を発行(生成)した認証局を一意に識別するための識別情報の一例である。証明書IDは、同一発行者(認証局)によって発行された電子証明書を一意に識別するための識別情報の一例である。すなわち、異なる発行者によって発行された電子証明書の証明書IDと同一の証明書IDの証明書が他の発行者によって発行されることがある。
端末ID/サーバID/認証局IDは、電子証明書によって認証される対象である端末装置2/サーバ装置4/認証局7を一意に識別するための識別情報の一例である。公開鍵は、秘密鍵によって署名された情報を検証するための鍵情報であり、秘密鍵に基づいて生成される。
有効期間開始は、電子証明書が有効である期間の開始日時を示す情報であり、有効期間終了は、電子証明書が有効である期間の終了日時を示す情報である。有効期間開始及び有効期間終了によって、電子証明書の有効期間が規定される。
署名値は、電子証明書を構成する、発行者ID、証明書ID、端末ID/サーバID/認証局ID、公開鍵、有効期間開始及び有効期間終了の一連のデータ列を、電子証明書の発行者である認証局の秘密鍵によって署名した情報である。なお、認証局は階層構造で関連付けられており、例えば、最上位の認証局(所謂「ルート認証局」)等は、下位の認証局の認証局証明書を発行する。また、ルート認証局は、自身に対して認証局証明書を発行する。
フィンガープリントは、クライアント証明書を構成する、発行者ID、証明書ID、端末ID/サーバID/認証局ID、公開鍵、有効期間開始、有効期間終了及び署名値の一連のデータ列が、ハッシュ関数によって生成(変換)されたハッシュ値である。フィンガープリントは、電子証明書のデータ量に関わらず同じ固定長を有する、電子証明書に対して固有の英数字の文字列情報である。なお、ハッシュ関数は、例えば、NIST(National Institute of Standards and Technology)によって標準化されたSHA−1、SHA−2等が用いられる。
図6(a)は、証明書管理テーブル321のデータ構造の一例を示す図である。証明書管理テーブル321には、端末ID、発行者ID及び証明書種別と、各電子証明書とが互いに関連付けて記憶される。端末IDは、各電子証明書の送信先として規定された端末装置2を識別するための端末IDである。発行者IDは、各電子証明書を発行した認証局を識別するための発行者IDである。証明書種別には、「クライアント証明書」及び「認証局証明書」のいずれか一方を示す種別情報が記憶される。電子証明書には、図5(a)及び図5(c)に示すデータ構造のクライアント証明書及び認証局証明書のいずれか一方のデータ本体が記憶される。なお、証明書管理テーブル321において、発行者IDが各電子証明書に関連付けて記憶されなくてもよい。この場合、各電子証明書内に記憶された発行者IDが参照される。
図6(b)は、フィンガープリントテーブルのデータ構造の一例を示す図である。フィンガープリントテーブルには、各電子証明書を識別するための証明書IDとフィンガープリントとが互いに関連付けて記憶されている。すなわち、図5(a)〜(c)で示される各種電子証明書のデータ構造における、証明書IDとフィンガープリントとのデータセットが、フィンガープリントテーブルに記憶される。なお、異なる認証局から同じ証明書IDの電子証明書が発行される場合を想定して、証明書IDだけでなく発行者IDについても関連付けて記憶してもよい。
図7は、端末装置2のワンチップマイコン24に内蔵されるチップ記憶部242にフィンガープリントテーブル2421を記憶させる際に利用される製造システムの動作シーケンスの一例を示す図である。
製造システムは、一又は複数の認証局7と証明書管理装置3とワンチップマイコン記録装置6とを有する。一又は複数の認証局7、証明書管理装置3及びワンチップマイコン記録装置6は、有線又は無線のネットワーク5で接続され、相互に各種の情報を送受信する。
ワンチップマイコン記録装置6は、ワンチップマイコン24を製造するときに用いられる製造装置の一種であり、ワンチップマイコン24のチップ記憶部242にデータ等を記録するための装置である。すなわち、ワンチップマイコン記録装置6は、端末装置2の動作に必要な各種データ(例えば、フィンガープリントテーブル2421、ブートローダー等の各種プログラム)をチップ記憶部242に書き込む。この動作シーケンスは、製造システムが有する、一又は複数の認証局7と証明書管理装置3とワンチップマイコン記録装置6との各要素が協働して実行される。
最初に、認証局7は、所定のタイミングにおいて、自ら(認証局7)の認証局証明書を、証明書管理装置3に送信する(ステップS101)。所定のタイミングは、例えば、証明書管理装置3から送信された認証局証明書の送信要求が受信されたとき、又は、直前に用いていた自らの認証局証明書の有効期間の終了日時が経過したとき若しくは終了日時の所定時間前、等である。なお、直前に用いられていた認証局証明書の有効期間の終了日時が経過したとき若しくは終了日時の所定時間前に送信される認証局証明書は、新たに生成された次の認証局証明書である。
次に、証明書管理装置3の証明書管理部331は、認証局7から送信された認証局証明書を、管理通信部31を介して受信した場合、受信した認証局証明書を証明書管理テーブル321に記憶する(ステップS102)。以下、認証局証明書の記憶処理の一例について説明する。まず、証明書管理部331は、受信した認証局証明書を用いる端末装置2を決定する。例えば、証明書管理装置3は、複数の端末装置2ごとに定められた、各端末装置2で用いられる認証局証明書を示す使用情報を記憶しており、証明書管理部331は、使用情報に基づいて、受信した認証局証明書を用いる端末装置2を決定する。そして、証明書管理部331は、決定された端末装置2の端末IDと、受信した認証局証明書に記された発行者IDと、受信した認証局証明書の種別を示す証明書種別と、受信した認証局証明書とを関連付けて証明書管理テーブルに記憶する。以上により、認証局証明書の記憶処理が終了する。
次に、ワンチップマイコン記録装置6は、ワンチップマイコン24の製造段階において、ワンチップマイコン24を搭載する端末装置2の端末ID、有効期間開始及び有効期間終了を含むクライアント証明書発行要求を、証明書管理装置3に送信する(ステップS103)。なお、クライアント証明書発行要求に含まれる端末IDは複数であってもよい。例えば、100台の端末装置2のクライアント証明書が必要となった場合、当該100台の端末装置2のそれぞれの端末IDを含むクライアント証明書発行要求を送信する。なお、ステップS103の処理に代えて、USBメモリ等の記録媒体に、製造段階の端末装置2の端末IDを記録させておき、証明書管理装置3が、当該USBメモリを介して端末装置2の端末IDを取得するようにしてもよい。
次に、証明書管理装置3の証明書管理部331は、ワンチップマイコン記録装置6によって送信されたクライアント証明書発行要求を、管理通信部31を介して受信した場合、受信したクライアント証明書発行要求を認証局7に送信する(ステップS104)。
次に、認証局7は、証明書管理装置3から送信されたクライアント証明書発行要求を受信した場合、受信したクライアント証明書発行要求に基づいてクライアント証明書を生成する(ステップS105)。以下、クライアント証明書の生成処理の一例について説明する。まず、認証局7は、クライアント証明書発行要求から端末ID、有効期間開始及び有効期間終了を抽出し、抽出した端末IDごとに、秘密鍵と当該秘密鍵に対応する公開鍵とを生成する。次に、認証局7は、当該認証局7を識別する発行者ID、新たに付与した証明書ID、抽出した端末ID、生成した公開鍵、抽出した有効期間開始及び有効期間終了の一連のデータ列を特定する。次に、認証局7は、自ら(認証局7)の秘密鍵を用いて、特定したデータ列から署名値を生成する。次に、認証局7は、特定したデータ列と署名値を、所定のハッシュ関数を用いて変換したフィンガープリントを生成する。そして、認証局は、特定したデータ列、署名値、フィンガープリントに基づいて、クライアント証明書を生成し、クライアント証明書の生成処理を終了する。なお、クライアント証明書発行要求に複数の端末IDが含まれている場合、認証局7は、各端末IDに対して上述の生成処理を実行することにより、各端末装置に対応するクライアント証明書を生成する。
次に、認証局7は、生成したクライアント証明書と当該クライアント証明書に含まれる公開鍵に対応する秘密鍵とを、クライアント証明書発行要求を送信した証明書管理装置3に送信する(ステップS106)。この際、秘密鍵を含むクライアント証明書のデータ形式(PKCS#12(Public Key Cryptography Standards # 12))によって送信してもよい。
次に、証明書管理装置3の証明書管理部331は、認証局7から送信されたクライアント証明書を証明書管理テーブル321に記憶する(ステップS107)。以下、クライアント証明書の記憶処理の一例について説明する。まず、証明書管理部331は、受信したクライアント証明書を用いる端末装置2を決定する。例えば、証明書管理装置3は、複数の端末装置2ごと定められた、各端末装置2で用いられるクライアント証明書を示す使用情報を記憶しており、証明書管理部331は、使用情報に基づいて、受信したクライアント証明書を用いる端末装置2を決定する。なお、使用情報を用いずに、受信したクライアント証明書に記された端末IDを参照することにより、当該クライアント証明書を用いる端末装置2を決定してもよい。そして、証明書管理装置3は、決定された端末装置2の端末IDと、クライアント証明書とともに受信した発行者IDと、受信したクライアント証明書の種別を示す証明書種別と、受信したクライアント証明書とを関連付けて証明書管理テーブルに記憶して、クライアント証明書の記憶処理を終了する。
次に、証明書管理部331は、証明書管理テーブルを参照して、ステップS103において送信されたクライアント証明書発行要求に含まれる端末IDごとに、フィンガープリントの読み出し処理を実行する(ステップS108)。以下、フィンガープリントの読み出し処理の一例について説明する。まず、証明書管理部331は、クライアント証明書発行要求に含まれる端末IDごとに、各端末IDに関連付けられた各電子証明書(クライアント証明書及び認証局証明書)を証明書管理テーブルから抽出する。次に、証明書管理部331は、各端末IDに対応する抽出した電子証明書に含まれる証明書ID及びフィンガープリントを読み出す。そして、証明書管理部331は、各端末IDに対して、読み出した証明書ID及びフィンガープリントを対応付ける。以上により、フィンガープリントの読み出し処理が終了する。
次に、証明書管理部331は、各端末IDに対応付けられた証明書ID及びフィンガープリントを、ワンチップマイコン記録装置6に送信する(ステップS109)。なお、ステップS109の処理に代えて、USBメモリ等の記録媒体に、各端末IDに対応付けられた証明書ID及びフィンガープリントを記録させておき、ワンチップマイコン記録装置6が、当該USBメモリを介して各端末IDに対応付けられた証明書ID及びフィンガープリントを取得するようにしてもよい。
そして、ワンチップマイコン記録装置6は、受信した証明書ID及びフィンガープリントを、対応する端末IDのワンチップマイコン24に書き込む(ステップS110)。なお、製造が完了したワンチップマイコンは、端末IDごとに出荷管理される。
なお、本実施形態では、フィンガープリントの読み出し処理では、読み出した証明書ID及びフィンガープリントを各端末IDに対応付けて管理したが、これに限らず、証明書管理テーブル321に記憶された全ての電子証明書に含まれるフィンガープリントの総データサイズがワンチップマイコン24のチップ記憶部242の記憶容量よりも小さい場合では、証明書管理テーブル321に記憶された全ての電子証明書に含まれる証明書ID及びフィンガープリントをワンチップマイコン記録装置6に送信してもよい。この場合、ワンチップマイコン記録装置6は、各端末IDのワンチップマイコン24に、受信した全ての証明書ID及びフィンガープリントを書き込む。これにより、全てのワンチップマイコン24に同じフィンガープリントテーブル2421を記憶すればよいため、ワンチップマイコンを端末IDごとに出荷管理しなくてよく、ワンチップマイコン24の出荷管理が容易になり管理コストも圧縮できる。
図8は、通信システム1の動作シーケンスの一例を示す図である。この動作シーケンスは、予めチップ記憶部242、管理記憶部32及びサーバ記憶部42に記憶されているプログラムに基づいて、主にチップ制御部241、管理制御部33及びサーバ制御部43により、端末装置2、証明書管理装置3及びサーバ装置4の各要素と協働して実行される。
最初に、端末装置2の端末認証処理部2412は、例えば、ユーザによる入力部22の操作に応じた指示に従って、TLS接続要求をサーバ装置4に送信する(ステップS201)。
次に、サーバ装置4のサーバ認証処理部431は、端末装置2からTLS接続要求を受信した場合、サーバ記憶部42に記憶されたサーバ証明書421とランダムな情報とを、サーバ通信部41を介して端末装置2に送信する(ステップS202)。
次に、端末装置2の認証局証明書要求部2413は、サーバ装置4からサーバ証明書421を受信した場合、受信したサーバ証明書421に含まれる発行者IDを抽出し、自身の端末ID及び抽出した発行者IDを含む認証局証明書要求を、証明書管理装置3に送信する(ステップS203)。
次に、証明書管理装置3の証明書管理部331は、端末装置2から認証局証明書要求を受信した場合、証明書管理テーブル321から、認証局証明書要求に含まれる端末ID及び発行者IDに関連付けられた認証局証明書を選択し(ステップS204)、選択した認証局証明書を端末装置2に送信する(ステップS205)。
次に、端末装置2の判定部2411は、証明書管理装置3から受信した認証局証明書に含まれるフィンガープリントとフィンガープリントテーブル2421に記憶されたフィンガープリントとを比較する。判定部2411は、認証局証明書に含まれるフィンガープリントに合致するフィンガープリントがフィンガープリントテーブル2421に記憶されている場合、受信した認証局証明書が真正であると判定する(ステップS206)。
次に、端末装置2の端末認証処理部2412は、判定部2411によって受信された認証局証明書が真正であると判定された場合、ステップS202において送信されたサーバ証明書に含まれる署名値を、真正であると判定された認証局証明書に含まれる公開鍵を用いて署名検証を行う(ステップS207)。端末認証処理部2412は、署名検証ができた場合、サーバ認証が成功したと判定し、サーバ認証済みのサーバ証明書を、チップ記憶部242を構成するRAM又は図示しないデータ記憶部に記憶するとともにステップS208に処理を進め、署名検証ができなかった場合、サーバ認証が失敗したと判定して、TLS接続シーケンスを終了する。なお、サーバ認証は、ステップS201〜S207の一連の手続による認証である。
次に、端末装置2の自装置証明書要求部2414は、自身の端末ID及びサーバ認証済みのサーバ証明書に含まれる発行者IDを含むクライアント証明書要求を、証明書管理装置3に送信する(ステップS208)。なお、クライアント証明書要求は、送信要求の一例である。
次に、証明書管理装置3の証明書管理部331は、端末装置2からクライアント証明書要求を受信した場合、証明書管理テーブル321から、クライアント証明書要求に含まれる端末ID及び発行者IDに関連付けられたクライアント証明書を選択する(ステップS209)。なお、端末装置2がクライアント証明書要求としてサーバIDも含んで送信され、且つ証明書管理装置3の管理記憶部32が、サーバ装置4ごとに、各サーバ装置4が信頼している認証局7を示す所定のテーブル(サーバ装置4のサーバIDと認証局7の発行者IDとが互いに対応付けられたテーブル)を記憶してもよい。この場合、クライアント証明書を選択する処理において、証明書管理部331は、選択された一又は複数のクライアント証明書の中から、所定のテーブルを参照して、クライアント証明書要求とともに受信したサーバIDに対応付けられた発行者IDを含むクライアント証明書を更に選択してもよい。
次に、証明書管理装置3の証明書管理部331は、選択したクライアント証明書を、当該クライアント証明書に含まれる公開鍵に対応する秘密鍵とともに、管理通信部31を介して端末装置2に送信する(ステップS210)。なお、秘密鍵を含むクライアント証明書のデータ形式(PKCS#12)によって送信してもよい。なお、認証局7と証明書管理装置3との間で秘密鍵が送信されるため、予め認証局7と証明書管理装置3との間でセキュアチャネルを確立しておくことが望ましい。また、端末装置2が、予め当該秘密鍵を記憶している場合は、秘密鍵は送信されない。
次に、端末装置2の判定部2411は、証明書管理装置3からクライアント証明書を受信した場合、受信したクライアント証明書に含まれるフィンガープリントとフィンガープリントテーブル2421に記憶されたフィンガープリントとを比較する。そして、合致するフィンガープリントがフィンガープリントテーブル2421に記憶されている場合、受信したクライアント証明書が真正であると判定する(ステップS211)。なお、判定部2411は、真正であると判定したクライアント証明書を、チップ記憶部242を構成するRAM又は図示しないデータ記憶部に記憶する。
次に、端末装置2の端末認証処理部2412は、クライアント証明書とともに受信した秘密鍵によって、S202で受信したランダムな情報を使って署名を生成するとともに、サーバ認証済みのサーバ証明書に含まれる公開鍵によって、seedを暗号化した暗号文を生成する(ステップS212)。なお、seedは、端末認証処理部2412によって生成された所定長のデータ列である。次に、端末認証処理部2412は、クライアント証明書、生成した署名及び暗号文を、端末通信部21を介してサーバ装置4に送信する(ステップS213)。
次に、サーバ装置4のサーバ認証処理部431は、端末装置2からクライアント証明書、生成した署名及び暗号文を受信した場合、クライアント証明書に含まれる署名値を、サーバ記憶部42に記憶された認証局証明書422に含まれる公開鍵を用いて署名検証を行う(ステップS214)。サーバ認証処理部431は、署名検証ができた場合、ステップS215に処理を進め、署名検証ができなかった場合、クライアント認証が失敗したと判定して、TLS接続シーケンスを終了する。なお、クライアント認証は、ステップS208〜S215の一連の手続による認証である。
次に、サーバ認証処理部431は、受信した(ランダムな情報になされた)署名を、クライアント証明書に含まれる公開鍵を用いて検証することで、端末装置2が、クライアント証明書に含まれる公開鍵に対応する真正な秘密鍵を所有していることを確認し、且つ、受信した暗号文を、サーバ装置4が記憶するサーバ証明書の公開鍵に対応する秘密鍵によって復号することによりseedを取得し、取得したseedから共通鍵を生成する(ステップS215)。
次に、サーバ認証処理部431は、生成した共有鍵を用いて、端末装置2とのTLS接続を確立する(ステップS216)。なお、TLS接続が確立した後又はサービス終了後に、端末装置2の端末認証処理部2412は、証明書管理装置3から受信した各種電子証明書を消去してもよい。そして、サーバ装置4は、確立したTLS接続のセキュアチャネルを介して所定のサービスを端末装置2に提供する(ステップS217)。
上述のとおり、端末装置2は、電子証明書の一部のデータから生成された固定値を予め記憶するチップ記憶部を有するワンチップマイコンと、チップ記憶部に記憶された固定値と、他の装置から受信した電子証明書に含まれる固定値とを比較することより、受信した電子証明書が真正であるか否かを判定する判定部と、判定部によって受信した電子証明書が真正であると判定された場合に限り、受信した電子証明書を用いた所定の認証処理を実行可能とする認証処理部を備えることにより、必要に応じて別途入手した電子証明書の真正性の判定を行うことができ、複数の電子証明書を予め記憶させることなく、低コストで安全性の高い機器認証が可能となる。
上述した実施形態では、端末装置2は、認証処理の都度、必要な電子証明書(クライアント証明書又は認証局証明書)を証明書管理装置3から受信し、受信した電子証明書をワンチップマイコン24のRAM領域に一時記憶し、チップ記憶部242に予め記憶してあるフィンガープリントと合致することにより真正性を判定した上で、認証処理を実行していた。しかしながら、上述の電子証明書を都度受信する方法に限らず、端末装置20は、証明書管理装置3から認証処理で用いられる複数の電子証明書を一括で受信し、これら複数の電子証明書の真正性を判定した上で、真正な電子証明書のみを端末記憶部25(フラッシュメモリ、EEPROM等)に記憶し、当該記憶した電子証明書を用いて認証処理を実行してもよい。
図9は、証明書管理装置3から認証処理で用いられる複数の電子証明書を一括で受信する端末装置20の概略構成の一例を示す図である。図9において、図2に示す端末装置2と同じ構成については同じ符号を付し、その説明を省略する。
端末装置2は、端末通信部21、入力部22、表示部23、ワンチップマイコン24とともに、さらに端末記憶部25を備える。端末記憶部25は、端末装置2の製造段階において、チップ記憶部242とは異なる記憶素子として追加された記憶領域(フラッシュメモリ、EEPROM等)であり、チップ記憶部242よりも記憶容量が大きい。
端末記憶部25は、端末装置2が認証処理で用いる電子証明書(クライアント証明書及び認証局証明書)を記憶する。クライアント証明書は、当該クライアント証明書に含まれる公開鍵に対応する秘密鍵を含む形式(PKCS#12)に従って記憶される。なお、秘密鍵は端末記憶部25とは異なる他の記憶領域に別途記憶されてもよい。例えば、秘密鍵へのアクセスが制限されたチップ記憶部242に記憶されることにより、よりセキュリティレベルを上げることが可能となる。
製造システムにおける、端末装置20に搭載されるワンチップマイコン24の製造工程を示す動作シーケンスは、図7に示される動作シーケンスのステップS101〜S110と同じであるため説明を省略する。本実施形態では、ステップS110の実行後、所定のタイミングにおいて端末装置20は利用する電子証明書を一括ダウンロードする処理を実行する。ここで所定のタイミングとは、例えば、端末装置20を製造する工場において端末装置20の出荷前のタイミングだったり、製造された端末装置20がユーザ宅に設置されるタイミングだったりする。この際、端末装置20は、証明書管理装置3に対して自らの端末IDを含む電子証明書ダウンロード要求を送信する。証明書管理装置3の証明書管理部331は、電子証明書ダウンロード要求を受信した場合、証明書管理テーブルを参照して、電子証明書ダウンロード要求に含まれる端末IDに関連付けられた全ての電子証明書を読み出し、電子証明書ダウンロード要求を送信した端末装置20に送信する。
一又は複数の電子証明書を受信した端末装置20の判定部2411は、受信した全ての電子証明書に含まれるフィンガープリントとフィンガープリントテーブル2421に記憶されたフィンガープリントとを比較し、合致するフィンガープリントを含む電子証明書が真正であると判定する。そして、判定部2411は、真正であると判定された電子証明書のみを端末記憶部25に記憶する。判定部2411は、受信した電子証明書が真正でないと判定された場合、表示部23にその旨を知らせるエラー表示を出力する。また、端末認証処理部2412は、認証処理において、必要な電子証明書を端末記憶部25に記憶していない場合は、認証処理の失敗として、表示部にその旨を知らせるエラー表示を出力する。
なお、判定部2411は、認証処理で用いられる複数の電子証明書を(真正性を確認することなく)予め端末記憶部25に記憶し、端末装置2の起動時に、端末記憶部25に記憶している全ての電子証明書の真正性を判定してもよい。この場合、判定部2411は、端末記憶部25に記憶している電子証明書が真正でないと判定された場合、当該電子証明書を端末記憶部25から消去してもよい。また、判定部2411は、端末記憶部25に記憶している電子証明書が真正でないと判定された場合、不正とみなして端末装置2を正常起動させない制御を行ってもよい。
また、判定部2411は、認証処理で用いられる複数の電子証明書を(真正性を確認することなく)予め端末記憶部25に記憶し、端末装置2における認証処理の開始時に、当該認証処理で用いられる電子証明書の真正性を判定してもよい。この際、判定部2411は、端末記憶部25に記憶している電子証明書が真正でないと判定された場合、その旨を知らせるエラー表示を出力してもよい。
当業者は、本発明の精神及び範囲から外れることなく、様々な変更、置換及び修正をこれに加えることが可能であることを理解されたい。