(57)【特許請求の範囲】
【請求項１】
半導体チップに内蔵される認証装置において、
前記半導体チップの外部から入力された利用者情報に対して、前記半導体チップ内部への入力および前記半導体チップから前記半導体チップの外部への出力を許可するための認証処理を行なう認証手段と、
前記利用者情報にそれぞれ対応し、前記認証処理に用いる認証情報を生成する処理を制御する複数のローダブルプログラム手段を格納する格納手段と、
前記格納された複数のローダブルプログラム手段に、処理の実行単位であるセッションをそれぞれ割り当て、前記入力された利用者情報に対応する前記複数のローダブルプログラム手段のいずれか一つを実行可能とするロード処理を、前記セッションを指定することにより行なう制御手段と、
を備えることを特徴とする認証装置。
【請求項２】
前記利用者情報には、固有のチャネルが設定され、前記制御手段は、前記利用者情報が前記固有のチャネルを介して入力された場合のみ、前記複数のローダブルプログラム手段のいずれか一つを実行可能とするロード処理を前記セッションを指定することにより行なう
ことを特徴とする請求項１に記載の認証装置。
【請求項３】
前記半導体チップ内部への入力および前記半導体チップから前記半導体チップの外部への出力を許可する利用者情報を予め前記該認証装置に登録する事を特徴とする請求項１に記載の認証装置。
【請求項４】
前記予め登録される利用者情報は、最初に登録される、他人の登録権限を有する初期利用者に関する情報と、前記初期利用者が登録する二次的利用者に関する情報とからなることを特徴とする請求項３に記載の認証装置。
【請求項５】
前記利用者情報は、利用者の名前と、該利用者が使用するチャネルと、実行するローダブルプログラム手段とを対応付けた情報である
ことを特徴とする請求項２に記載の認証装置。
【請求項６】
前記利用者情報を、前記利用者情報に対応する固有の暗号鍵で暗号化して、前記半導体チップの外部に送信することを特徴とする請求項５に記載の認証装置。
【請求項７】
前記利用者情報を、前記半導体チップ内に受信した後、前記利用者情報に対応する固有の復号鍵で復号することを特徴とする請求項６に記載の認証装置。
【請求項８】
前記認証情報は、生体情報であることを特徴とする請求項７に記載の認証装置。
【請求項９】
半導体チップに内蔵され、認証情報を取得する処理を制御する、ローダブルプログラムを備えた認証装置の制御方法において、
前記半導体チップの外部から入力された利用者情報に対して、前記半導体チップ内部への入力および前記半導体チップから前記半導体チップの外部への出力を許可するための認証処理を行ない、
複数のローダブルプログラムに、処理の実行単位であるセッションをそれぞれ割り当て、前記入力された利用者情報に対応する、前記半導体チップ内部のメモリに格納される前記複数のローダブルプログラムのいずれか一つを実行可能とするロード処理を、前記セッションを指定することにより行なう、
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュリティ機能を必要とするシステム全般に関し、特には、ローダブルプログラムをローディング等するときのLSI内での認証装置に関する。
【背景技術】
【０００２】
昨今、情報家電のデジタル化／ネットワーク化が加速される中、コンテンツ配信、遠隔医療等の多種多様サービスにおいては、情報家電の基盤技術として、セキュリティ技術がより一層不可欠であり、各種端末内でも耐タンパ性を具備したセキュリティチップ内の組込みソフトウェアプログラム（ローダブルプログラム）にて、生体情報制御（バイオメトリックス）／パスワード等の認証機能を使って、セキュアな環境下でのデータ認証機能を提供する製品が必要とされている。
【０００３】
これら生体情報制御機能を具備したセキュリティチップの認証プログラムは、多種多様化が進む中、認証プログラムの入替えを可能とするローダブル機能の配備、複数認証プログラムの常駐、これらの認証プログラム自体を3rdベンダーが提供する等、セキュリティチップの高機能化に伴い、実現されている。
【０００４】
図３５は、セキュアな環境下でのデータ認証機能を提供する製品を取り巻く状況を説明する図である。
ユーザが使用するデータ認証機能を有する端末４には、セキュリティチップ１が組み込まれている。セキュリティチップ１内は、チップ内のシステムを管理するシステムマネージャ２と、必要に応じてロードされて実行される、指紋認証処理ソフトなどのローダブルプログラム３とを含んでいる。セキュリティチップ１は、端末４の認証情報管理システムを構成する。端末４の認証情報管理システムで取得された、指紋などの情報は、ネットワーク５を介して、様々な認証サービスセンターに送られ、ユーザの認証が行なわれる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
複数のローダブルプログラムと、セキュリティチップ内に組み込まれた基本プログラムとのデータ連携をセキュリティの強度を落とす事なく実現すること、更に、複数の利用者情報を登録し、複数のローダブルプログラムを常駐可能とすることで、増大するセキュリティチップ内記憶装置の容量(メモリ量)を抑制することが現在の課題となっている。
【０００６】
本発明の課題は、セキュリティの強度を落とすことなく、複数の利用者情報を扱うことのできるローダブルプログラムの認証装置を提供することである。
【課題を解決するための手段】
【０００７】
本発明の認証装置は、半導体チップに内蔵され、取得した認証情報を外部とやり取りする認証装置において、利用者に、半導体チップ内部への入力や半導体チップからの出力の取得を許可するためのログイン処理を行なうログイン手段と、認証情報を取得する処理を制御する、インストール、アンインストール可能なローダブルプログラム手段と、該ローダブルプログラム手段をインストールし、実行する場合、該ローダブルプログラム手段に、処理の実行単位であるセッションを割り当て、該利用者に、該ローダブルプログラムの使用を、セッションを指定することにより行なわせる制御手段とを備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、セキュリティ強度を高く保ったまま、複数の利用者情報を扱うことのできる、ローダブルプログラムの認証装置を提供できる。
【発明を実施するための最良の形態】
【０００９】
本発明の実施形態においては、セキュリティチップに以下の機能を設ける。
１．利用者管理機能
システム（セキュリティチップ）を制御する利用者を管理し、登録した利用者以外の使用を抑止する。ログイン認証により、登録した利用者の使用を許可する。
システムは、初期状態で登録する初期利用者と初期利用者が登録する二次的利用者の２種類を管理する。
２．チャネル管理機能
初期利用者/二次的利用者が、システムへの指示（コマンドの送信）を行うことを可能とするため、ログイン（利用者と登録された利用者を認証する）が必要である。コマンドを送信する利用者をシステム内で特定するため、チャネルを使用する。チャネルは、利用者がログインする前に捕捉する必要がある。すなわち、ログインした利用者それぞれに固有のチャネルを割り当て、コマンドがどのチャネルを用いて送信されたかを検出することにより、利用者を特定できるようにする。
３．ローダブルプログラムの入替え制御（ローダ）機能
指紋認証プログラムや静脈認証プログラム、あるいは、パスワード認証プログラムなどのローダブルプログラムの入替えを行うための仕組みとして、プログラムのインストール／アンインストールを可能とする。
４．セッション管理機能
コマンドを送信するローダブルプログラムをシステム内で特定するため、セッションを定義する。セッションは、ローダブルプログラムをインストールした際にシステム内で決定する。すなわち、ある特定のローダブルプログラムを実行する場合には、対応したセッションが有効となっているというように、ローダブルプログラムの実行をセッション番号で管理するようにする。
５．認証情報登録時に生成する利用者情報（PI値の利用）管理機能
ログイン認証で使用するデータを利用者が生成する際、システムが利用者単位で個人認証識別値（PI値）を生成する。PI値は、ログイン後に生成したシステム内のリソースと連携させる。このログイン認証は、システムにロードされるローダブルプログラムによって取得され、外部のサーバで認証処理される生体情報等を用いた認証ではなく、利用者が認証に使用する端末の利用権を得るために行なうものであり、PI値は、端末内部で閉じた情報となる。
６．利用者情報の安全なエクスポート機能
ログイン認証で必要となる利用者情報およびログイン後に生成したリソース（生体認証情報等）を含めて安全にシステム外部へエクスポートする。ここで、エクスポートとは、セキュリティチップ内部から、セキュリティチップが搭載されている端末のハードディスク等へデータを移動することである。
７．利用者情報インポート機能
ログイン認証で必要となる利用者情報およびログイン後に生成したリソース（生体認証情報等）を含めて安全にシステムへインポートする。ここで、インポートとは、セキュリティチップが搭載されている端末のハードディスク等からセキュリティチップ内部にデータを移動することである。
８．利用者認証機能
ログイン認証完了により、個人認証識別値（PI値）に関連するリソース（暗号化のための鍵や、指紋認証を行なう場合では、指紋センサ等のハードウェア等）の使用を許可する。
【００１０】
以上の構成により、以下のことが可能となる。
１）認証情報管理システム内において、各機能（ローダブルプログラム）での単独動作、必要な機能単位で基本プログラムとの連携により、多様なニーズに合わせた提供が可能になる。
２）従来よりも強固なセキュリティ環境でのサービス・機能を活用することが可能になる。
３）遠隔医療端末や、専用・共通端末（PC等）で、複数ユーザが使用したい場合に対応できる。
【００１１】
以下、本発明の実施形態を図面を用いて説明する。
図１は、本発明の実施形態に従った認証情報管理システムのソフトウェア構成図の一例である。
【００１２】
Hardware Layer内のローダブルプログラムは独立した機能としての動作が可能である。Hardware Layerは、複数のローダブルプログラム１１−１〜１１−ｎと、各種ハードウェア１３、及び、これらのハードウェアドライバ１２を有し、システムマネージャ１０がこれらを管理する。
【００１３】
Software Infrastructure Layerは、BIOSレベルのレイヤであり、システムマネージャ・ドライバLib（ライブラリ）１６、システムマネージャ・ドライバ１７、ブートBIOS１４、PC BIOS、TPM/TSS、BIOS-API１５、TSS１８を含む。また、TPMは、Trusted Platform
Module、TSSは、TCG Software Stackの略であり、TCGは、Trusted Computing Groupの略である。これらは、アプリケーションのセキュアな動作を実現するための標準化されたプロトコルを実装するものである。更に、Software Infrastructure Layerは、アプリケーションの管理ツール１９、暗号化のためのアプリケーションプログラムインターフェースであるCrypto API２０、TSS対応CSP２１、PKCS#11（TSS）２２を含む。CSPは、Cryptographic Service Providerの略であり、PKCS#11は、公開鍵暗号方式の標準に準拠した暗号化を行なうパッケージである。
【００１４】
Software Application Layerは、端末の利用者から見えるアプリケーションのレイヤであり、インターネットエクスプローラ（IE）、Outlookなどが存在しうる。
図２は、本発明の実施形態に従った認証情報管理システムのハードウェア構成図の一例である。
【００１５】
ＭＣＵ３０は、受信した命令を実行する。ＲＡＭ３６は、揮発性のメモリであり、ワークエリアとして利用される。ＲＯＭ３１は、不揮発性の読み出し専用メモリで、実行プログラムが配置される。ＮＶＲＡＭ４０は、不揮発性メモリであり、主に、ローダブルプログラムなどのプログラムの実行とデータ保存エリアとして利用される。ＮＶＲＡＭ４０とＳＲＡＭ４１は、メモリコントローラ３９によって制御される。暗号制御モジュール３２は、暗号化のための鍵の生成ロジックであり、ハッシュ生成器３３は、ハッシュ値を生成する。乱数生成器は、ハッシュ値や暗号鍵を作る場合に必要となる乱数を生成する。タイマ制御部３７は、PI値を生成する際のタイムスタンプ等を得るために用いられる。２０４８bitべき乗剰余演算器３８は、公開鍵方式の暗号を処理する場合に必要となる剰余演算を行なう。外部インタフェース３５は、認証情報管理システム（端末）４２を外部と通信可能なように接続するインタフェースである。
【００１６】
図３は、本発明の実施形態に従ったチャネルの概念を説明する図である。
利用者Ａ〜Ｃは、アプリケーション２３を介して、認証情報管理システム４２のローダブルプログラム１〜Ｎを使う。利用者Ａは、ローダブルプルグラム１を使用し、利用者Ｂは、ローダブルプログラム２を使用し、利用者Ｃは、ローダブルプログラムＮを使用する
としている。この場合、それぞれの利用者は、それぞれの利用者に専用のチャネル１〜ｎを使用して、ローダブルプログラム１〜Ｎにコマンドを送る。但し、チャネルを開くためのチャネルオープンコマンドは、チャネルを使用しない。また、システム制御のコマンドもチャネルを使用しない。図３では、チャネル０を、チャネルを使用しない場合を示すために使っている。チャネルオープンコマンドは、利用者Ａから発行されると、システムマネージャ１０のコマンド処理部で解析され、チャネル１〜ｎを、利用者Ａ〜Ｃに関連付ける。
【００１７】
システムマネージャ１０には、利用者、チャネル、ローダブルプログラムを関連付けるために、利用者情報展開領域に設けられた利用者情報管理テーブルと、ローダブルプログラム管理テーブルが保持される。利用者情報管理テーブルには、利用者の名前と、使用チャネルと、使用ローダブルプログラムのアプリケーションＩＤと、そのローダブルプログラムで取得された利用者のPI値とが対応付けられて格納される。また、ローダブルプログラム管理テーブルは、セッション番号と、ローダブルプログラム名と、アプリケーションＩＤが対応付けられて格納される。ローダブルプログラム管理テーブルより、セッション番号とアプリケーションＩＤの対応が取得できる。また、利用者情報管理テーブルより、あるチャネルの利用者が認証に使用するローダブルプログラムのアプリケーションＩＤを取得可能である。これらの２つのテーブルに設定されている情報より、あるチャネルの利用者がローダブルプログラムへコマンドを送信する際に使用するセッション番号をアプリケーションが知ることが出来る。
【００１８】
図４は、本発明の実施形態に従った認証情報管理システムにおける全体の流れを示すフローチャートである。
認証情報管理システムには共通鍵暗号化方式、公開鍵暗号化方式の両方を用いる。認証情報管理システムへの要求は、全てソフトウェアからのコマンドで行う。
【００１９】
認証情報管理システムを起動すると、ステップＳ１０において、ローダブルプログラムの準備を行なう。すなわち、ローダブルプログラムのインストールとロードの準備を行なう。ステップＳ１１において、認証情報管理システムにコマンドを送信するためのチャネルを開く。ステップＳ１２において、初期利用者を登録する。初期利用者は、最初に当該認証情報管理システムにアクセスを許可されたものであり、認証情報管理システムの管理者に相当する者である。次に、ステップＳ１３において、初期利用者は、当該端末の認証情報管理システムを使用したい者について、利用者登録を行なう。ステップＳ１４において、利用者情報をエクスポートする。ステップＳ１５において、チャネルをクローズする。ここまでが、初期準備である。共通鍵暗号方式による暗号化は、ローダブルプログラムの準備の際に、ローダブルプログラムを暗号化するために用いる。ステップＳ１４の利用者情報エクスポートにおいては、利用者情報を暗号化するために公開鍵暗号化方式の暗号化が行なわれる。
【００２０】
ステップＳ１６以下は、利用者が認証情報管理システムを利用する場合を示す。ステップＳ１６において、チャネルをオープンし、ステップＳ１７において、ログインする利用者の利用者情報をインポートする。ステップＳ１８において、利用者がログインする。利用者認証情報をステップＳ１９において登録し、ステップＳ２０において、利用者リソース（鍵、証明書等）を生成し、ステップＳ２１において、利用者リソース情報を含めて利用者情報をエクスポートする。ステップＳ２２において、利用者はログアウトし、ステップＳ２３において、チャネルをクローズして、処理を終了する。
【００２１】
図５及び図６は、認証情報管理システムにおける利用者情報を説明する図である。
図５は、利用者種別を示す表である。登録される利用者の種別は以下の２通りである。利用者には、初期利用者と通常の利用者（二次的利用者）がある。初期利用者は、機器に
対して最初に登録した利用者である。利用者の生成が可能で、初期利用者の生成数は１である。機器というのは、認証情報管理システムが搭載されている情報装置のことであり、上記では端末と述べていたものである。一般に、認証情報管理システムは、コンピュータなどの端末に搭載されている必要は無く、一般に情報装置に搭載されていれば良いという意味で、使用するのは機器である。利用者は、初期利用者以外の利用者のことであり、二次的利用者とも呼べるものである。生成数は、無制限であり、機器が情報を格納可能な限り、何人分でも生成してよい。
【００２２】
図６は、PI値の定義を示す表である。
利用者がログイン認証時、認証情報管理システムで使用する情報については、利用者を特定する利用者識別子(ログインID)とパスワード(ログインパスワード)が登録された際に認証情報管理システムが設定する情報があり、これをPI値と呼ぶ。
【００２３】
PI値は、利用者毎に一意に設定する個人認証識別値であり、ログイン認証が完了することで有効となる。PI値は生成のタイミング及び秘匿の状態により4種類に分けられる。4つの値はそれぞれ異なる値が設定される。
【００２４】
PIDR-Pは、利用者情報登録時に生成され、認証情報管理システム外で参照可能な情報である。PIDR-Hは、利用者情報登録時に生成され、認証情報管理システムへ移動する際は、認証情報管理システムに貼り付けられている鍵により暗号化されるため、認証情報管理システム外では参照出来ない。PIPR-Pは、ログイン認証情報登録時に生成され、ログイン認証情報変更時に更新するもので、認証情報管理システム外で参照が出来るものである。PIPR-Hは、ログイン認証情報登録時に生成され、ログイン認証情報変更時に更新するものである。認証情報管理システム外へ移動する際は、認証情報管理システムに貼り付けられた鍵により暗号化されるため、システム外では参照は出来ない。以上の４つの情報を直列に接続した一連の情報をPI値と呼ぶ。
【００２５】
PI値が設定される領域は複数（４種）あり、用途により使い分ける。
−利用者情報展開領域内のPI値設定領域
利用者情報のインポート時、利用者情報データの認証情報関連データ部分に保持されていた値を設定する。
−ローダブルプログラムによるPI値設定領域
ローダブルプログラムを使用したログイン認証実施時、ローダブルプログラムが保持している値を設定する。
−新規生成PI値設定領域
ローダブルプログラム内で認証情報生成時、ローダブルプログラムからの要求により生成したPI値を設定する。
−ログイン認証完了時PI値設定領域
ログイン認証完了時に設定する。設定されていない場合はログイン未完了であることを示す。
【００２６】
図７は、チャネルオープン手順を示すフローチャートである。
ソフトウェアと認証情報管理システム間の情報の送受信は利用者毎に設定されたチャネルを使用して行う。チャネルオープンでは利用者が指定したチャネルを捕捉する。システムマネージャは、ステップＳ３０において、チャネルをオープンし、ステップＳ３１において、チャネルの上限を確認し、使用中のチャネル数が上限に達しているか否かを判断する。ステップＳ３１において、上限に達したと判断された場合には、処理を終了する。ステップＳ３１において、上限に達していないと判断された場合には、ステップＳ３２において、チャネルの状態の更新を行なって、処理を終了する。
【００２７】
図８は、チャネルクローズ手順を示すフローチャートである。
ここでは、利用者が使用していたチャネルを解放する。利用者がログイン中のチャネルはクローズ不可とする。システムマネージャは、ステップＳ３５において、チャネルをクローズし、ステップＳ３６において、チャネルの状態を確認する。利用者がログイン中である場合には、チャネルを維持したまま、処理を終了する。ステップＳ３６で、利用者がログインしていないと判断された場合には、ステップＳ３７において、当該チャネルで使用していた利用者情報をクリアし、チャネルの状態を更新して、処理を終了する。
【００２８】
図９〜図１４は、ローダブルプログラムを転送する際のデータフォーマットについて説明する図である。
ローダブルプログラムファイルは、コマンドで認証情報管理システムへ転送する。図９には、データフォーマットが示されている。図９のデータにおいては、データの先頭にファイルバージョン、次に、ローダブルプログラムのアプリケーションＩＤが設けられている。アプリケーションＩＤは、ローダブルプログラムを一意に示すＩＤである。次が、共通鍵データ長と共通鍵である。共通鍵は、ローダブルプログラムを暗号化するためのもので、公開鍵で暗号化されている。次が、ローダブル情報であり、ローダプルプログラムを実行する際の情報が埋め込まれている。次が、ローダブルプログラムデータ長とローダブルプログラム本体である。ローダブルプログラムは、共通鍵が暗号化されている。次が、ローダブルプログラムが正規のモノであることを示す署名と署名のデータ長である。
【００２９】
図１０の表には、図９の各フィールドの説明が記載されている。また、アプリケーションＩＤについては、図１１、１２、ローダブル情報については、図１３、１４に更に詳しく示している。ファイルバージョンは、将来のバージョンアップを考慮して、ローダブルプログラムのバージョンを設定する。ローダブルプログラムが、暗号化プログラムであった場合には、図１０の例のように、０を未設定、１をAES  １２８ビット、RSA２０４８ビット、３をDES-EDE2  ６４ビット、SHA-1などと取り決めておく。
【００３０】
図１１には、アプリケーションＩＤの構成が示されている。アプリケーションＩＤは、作成社（者）を特定する作成社（者）番号、プログラムの製造の最終段階で付加される承認（発行）番号からなり、その他のフィールドは、リザーブとする。図１２は、各フィールドの説明を示した表を示している。作成社（者）番号は、たとえば、富士通なら０など、ローダブルプログラムの作成元を特定する。承認（発行）番号は、プログラムの使用許諾番号のようなもので、認証情報管理システムの機器組み立てメーカが、ローダブルプログラムをシステムに搭載する際に、プログラムを承認し、番号の採番を行なう。リザーブは、使用されていない場合には、全て０となっている。
【００３１】
図１３には、ローダブル情報のフォーマットが示されている。ローダブル情報には、ＷＯＲＫ領域サイズと、ＮＶＲＡＭデータ領域サイズ、ＮＶＲＡＭ（一時保存用）領域サイズと、リザーブとからなっている。図１４には、それぞれの情報の意味が記載されている。ＷＯＲＫ領域サイズは、内部ローダブルプログラムが使用する作業領域のサイズである。ＮＶＲＡＭデータ領域サイズは、内部ローダブルプログラムが使用するＮＶＲＡＭのデータ領域サイズである。ＮＶＲＡＭ（一時保存用）領域サイズは、内部ローダブルプログラムが使用するＮＶＲＡＭ（一時保存用）領域のサイズである。リザーブは、未使用時は全て０である。
【００３２】
図１５は、システムマネージャが管理するローダブルプログラムの状態遷移図を示す図である。
アンインストール状態は、初期（ローダブルプログラム未インストール）状態である。インストール・アンロード状態は、インストール完了（ローダブルプログラム未ロード）状態である。ロード状態は、ロード（ローダブルプログラム実行中）状態である。一時停
止状態は、一時停止（ローダブルプログラム一時停止）状態である。これらは、管理テーブルに現在の状態を格納することにより、管理する。
【００３３】
図１６は、ローダブルプログラムのメモリ配置構成を説明する図である。
ローダブルプログラム５２は、ソフトウェア５０からの指示によって動作する。ローダブルプログラム５１は、システムマネージャ５１内で展開される。ローダブルプログラムは、ＮＶＲＡＭ５５に格納されており、実行する際には、ＲＡＭ５３に展開される。ローダブルプログラム５２のＷＯＲＫエリアもＲＡＭ５３に設けられる。ＮＶＲＡＭ５５には、ローダブルプログラム管理テーブルとして、ローダブルプログラム配布用ファイル（図９）のファイルバージョン、アプリケーションＩＤ、共通鍵データ長、共通鍵、ローダブル情報が格納される。また、ローダブルプログラム５２本体と、ローダブルプログラムのデータ格納エリア、データ一時保存用エリアもＮＶＲＡＭ５５上に設けられる。データ格納エリアとデータ一時保存用エリアは、各ローダブルプログラムが使用するデータエリアである。ローダブルプログラム配布用ファイルの署名データは、ファイルバージョンからローダブルプログラム本体までの暗号化されたデータについて署名された情報である。
【００３４】
図１７は、ローダブルプログラムのインストール手順を示すフローチャートである。
インストールでは、ローダブルプログラムファイル内容の確認、ＮＶＲＡＭの一時退避領域へコピー、署名検証後、プログラム展開メモリ(ＮＶＲＡＭ)へ復号化したローダブルプログラムを格納する。管理テーブルは、「アンインストール」から「インストール」へ状態遷移する。
【００３５】
システムマネージャは、ステップＳ４０において、ローダブルプログラムファイルを転送し、インストールする。ステップＳ４１において、一時格納エリアにローダブルプログラムファイルを格納し、ステップＳ３８において、格納エリアが空いているか否かを確認し、ファイル情報を確認し、問題があるか否かを判断する。問題がある場合には、処理を終了する。問題がない場合には、ステップＳ４２において、転送ファイルの署名を検証する。ステップＳ４３において、署名検証の結果、問題があるか否かを判断する。問題がある場合には、処理を終了する。問題がない場合には、ステップＳ４４において、管理テーブルを更新し、ステップＳ４５において、ローダブルプログラムを復号し、展開エリアへ格納する。ステップＳ４６において、当該ローダブルプログラムの状態を変更する。すなわち、アンインストール状態からインストール状態（アンロード状態）として、処理を終了する。
【００３６】
図１８は、ローダブルプログラムのアンインストール手順を示すフローチャートである。
アンインストールは、指定されたローダブルプログラムの状態が「インストール・アンロード」の場合のみ実施する。該当するチャネル、セッションのプログラム展開エリア(ＮＶＲＡＭ)をメモリクリアし、管理テーブルを「インストール・アンロード」から「アンインストール」へ状態遷移する。
【００３７】
ステップＳ４７において、システムマネージャは、該当するローダブルプログラムの状態を確認し、アンロード状態か否かを判断する。アンロード状態でない場合には、処理を終了する。アンロード状態である場合には、ステップＳ４８で、該当するローダブルプログラムをアンインストールし、ステップＳ４９において、ローダブルプログラムの展開エリアをクリアし、ステップＳ５０において、管理テーブルを更新し、処理を終了する。
【００３８】
図１９は、ローダブルプログラムのロード手順を示すフローチャートである。
ロードは、指定されたローダブルプログラムの状態が「インストール・アンロード」の場合のみ実施する。該当するチャネル、セッションのプログラム展開エリア(ＮＶＲＡＭ)
からプログラム実行メモリ(ＲＡＭ)へコピーし、ローダブルプログラムへ初期化要求する。管理テーブルを「インストール・アンロード」から「ロード」へ状態遷移する。
【００３９】
システムマネージャは、ステップＳ５５において、該当ローダブルプログラムの状態を確認し、インストール状態か否かを判断する。インストール状態でない場合は、処理を終了する。ステップＳ５６において、ローダブルプログラムをロードし、ステップＳ５７において、アドレス解決、ローダブルプログラム内部の初期化など、ローダブルプログラムの初期化を行い、ステップＳ５８において、管理テーブルを更新して、該当ローダブルプログラムの状態遷移をインストール状態からロード状態にする。
【００４０】
図２０は、ローダブルプログラムのアンロード手順を示すフローチャートである。
アンロードは、指定されたローダブルプログラムの状態が「ロード」または「一時停止」の場合のみ実施する。該当するチャネル、セッションのプログラムに対して終了要求する。管理テーブルを「ロード／一時停止」から「アンロード」へ状態遷移する。
【００４１】
ステップＳ６０において、システムマネージャは、該当ローダブルプログラムの状態確認を行い、当該ローダブルプログラムが、ロード状態か一時停止状態であるか否かを判断する。ステップＳ６０の判断がＮｏの場合には、処理を終了する。ステップＳ６０の判断がＹｅｓの場合には、ステップＳ６１で、当該ローダブルプログラムをアンロードし、ステップＳ６２において、ローダブルプログラムが保持するマネージャエントリリストを破棄し、プログラムを停止する。そして、ステップＳ６３において、管理テーブルの、当該ローダブルプログラムの状態遷移を、ロード／一時停止状態からアンロード状態と更新して、処理を終了する。
【００４２】
図２１は、ローダブルプログラムの一時停止手順を示すフローチャートである。
一時停止は、指定されたローダブルプログラムの状態が「ロード」の場合のみ実施する。該当するチャネル、セッションのプログラムに対して一時停止要求する。管理テーブルを「ロード」から「一時停止」へ状態遷移する。
【００４３】
システムマネージャは、ステップＳ６５において、ローダブルプログラムの状態確認を行い、ロード状態となっているか否かを判断する。ロード状態となっていない場合には、処理を終了する。ロード状態となっている場合には、ステップＳ６６において、実行を終了し、ステップＳ６７において、ローダブルプログラム内で復帰可能な状況でローダブルプログラムを一時停止する。具体的には、ＲＡＭに展開された当該プログラムをＮＶＲＡＭにコピーするなどを行なう。ステップＳ６８において、当該ローダブルプログラムの状態遷移をロード状態から一時停止状態にして処理を終了する。
【００４４】
図２２は、ローダブルプログラムの実行開始手順を示すフローチャートである。
実行開始は、指定されたローダブルプログラムの状態が「一時停止」の場合のみ実施する。該当するチャネル、セッションのプログラムに対して実行開始要求する。管理テーブルを「一時停止」から「ロード」へ状態遷移する。
【００４５】
システムマネージャは、ステップＳ７０において、当該ローダブルプログラムの状態が一時停止状態か否かを判断する。一時停止状態でない場合には、処理を終了する。ステップＳ７０で、一時停止状態であると判断された場合には、ステップＳ７１において、当該ローダブルプログラムの実行を開始し、ステップＳ７２において、ローダブルプログラム内で起動可能な環境へ復帰する。すなわち、ＮＶＲＡＭからＲＡＭへ当該ローダブルプログラムをコピーするなどを行なう。ステップＳ７３において、当該ローダブルプログラムの状態遷移を一時中断からロードにする管理テーブルの更新を行なって、処理を終了する。
【００４６】
図２３及び図２４は、ローダブルプログラムのアドレス解決手順を示すフローチャートである。
システムマネージャとローダブルプログラムで通信するためには、互いの起動先（アドレス）が必要となる。起動先（アドレス）を動的に取得するための仕組みを備える。ロード要求直後、または電源投入等による起動時にロード状態のローダブルプログラムが存在する場合、図２３及び図２４の手順でアドレス解決を行う。
【００４７】
図２３において、システムマネージャは、ステップＳ７４において、ローダブルプログラムをロードした直後か、再起動した直後となる。ステップＳ７５において、ロード状態のローダブルプログラムが存在するか否かを判断する。ステップＳ７５の判断がＮｏの場合には、処理を終了する。ステップＳ７５の判断がＹｅｓの場合には、ステップＳ７６の、ロード状態のローダブルプログラム分繰り返すループで、ロード状態のローダブルプログラムへ初期化要求を出す。すなわち、エントリリスト取得ポインタと初期化を判断するデータを渡して、処理を終了する。
【００４８】
図２４（ａ）において、ローダブルプログラムは、ステップＳ８０で、初期化要求を受信すると、ステップＳ８１において、エントリリストを取得し、ステップＳ８２において、アドレス解決を行い、処理を終了する。
【００４９】
図２４（ｂ）では、システムマネージャは、ステップＳ８３において、エントリリストを取得し、ステップＳ８４において、エントリリストを生成して、処理を終了する。
図２５は、初期利用者登録手順を示すフローチャートである。
【００５０】
初期利用者登録ではログイン不要である。ここでは、利用者情報のインポート・エクスポートに使用する利用者情報生成用鍵ペアを生成する。利用者情報生成用鍵ペアは認証情報管理システム内に秘匿される。
【００５１】
ステップＳ８５において、システムマネージャは、初期利用者の登録を行い、ステップＳ８６において、初期利用者が未登録な者か否かを判断する。ステップＳ８６の判断がＮｏならば処理を終了する。ステップＳ８６の判断がＹｅｓの場合には、ステップＳ８７において、初期利用者情報を生成し、ステップＳ８８において、PI値（PIDR-P/PIDR-H）を生成し、ステップＳ８９において、利用者情報生成用鍵ペアを生成し、処理を終了する。
【００５２】
図２６は、利用者登録手順を示すフローチャートである。
認証情報管理システムの（二次的）利用者を初期利用者が登録する。システムマネージャは、ステップＳ９０において、（二次的）利用者の登録を受け付ける。ステップＳ９１において、初期利用者が登録済みか否かを判断する。ステップＳ９１の判断がＮｏの場合には、処理を終了する。ステップＳ９１の判断がＹｅｓの場合には、ステップＳ９２において、利用者情報格納領域に利用者情報を生成し、ステップＳ９３において、PI値（PIDR-P/PIDR-H）を生成し、ステップＳ９４において、共通鍵を生成する。そして、ステップＳ９５において、利用者情報を共通鍵で暗号化し、ステップＳ９６において、共通鍵を利用者情報生成用公開鍵で暗号化し、ステップＳ９７において、利用者情報生成用秘密鍵で、署名を生成し、ステップＳ９８で、生成した利用者情報をソフトウェアに退避して、処理を終了する。ソフトウェアというのは、上位レイヤのアプリケーションソフトであって、ローダブルプログラムを利用するソフトのことである。
【００５３】
図２７は、ローダブルプログラムを使用した認証情報登録/変更手順を示すフローチャートである。
認証情報（生体情報等）の登録の際はログイン認証が完了している必要がある。ローダ
ブルプログラムを使用したログイン認証を行うための認証情報の登録は初期利用者による利用者情報生成後、（二次的）利用者が実施する。
【００５４】
システムマネージャは、ステップＳ１００において、認証情報登録を受付け、ステップＳ１０１において、ローダブルプログラムを使って、認証情報を生成する。ステップＳ１０２において、PI値（PIPR-P/PIPR-H）を生成し、ステップＳ１０３において、認証情報が登録済みの場合には、利用者の認証情報を更新して、処理を終了する。
【００５５】
図２８は、利用者情報ファイルの構成を示す図である。
利用者情報ファイルは、利用者情報生成用公開鍵で暗号化された共通鍵と、この共通鍵で暗号化された個人データ（ログイン認証情報、利用者リソース（利用者固有の暗号鍵など））と、利用者情報生成用秘密鍵で生成された署名データとからなる。
【００５６】
図２９は、初期利用者情報と利用者情報のエクスポート手順を示すフローチャートである。
初期利用者登録時の利用者情報のエクスポートでは利用者のログインは不要である。初期利用者登録完了以降はログイン認証必須となる。利用者情報変更時は利用者情報のエクスポートを実施する必要がある。利用者情報は認証情報管理システム内で暗号化した利用者情報ファイルをソフトウェアにエクスポートする。
【００５７】
システムマネージャは、ステップＳ１０５において、利用者情報を認証情報管理システムのチップからＰＣのハードディスクなどへエクスポートする。ステップＳ１０６において、利用者の状態を確認する。利用者がログインしていれば、ステップＳ１０７に進み、ログインしていなければ、処理を終了する。ステップＳ１０７では、利用者情報を収集し、利用者情報格納エリアに、認証情報、個人鍵、生体情報等を設定して、利用者情報を生成する。ステップＳ１０８では、共通鍵を生成し、ステップＳ１０９において、共通鍵で利用者情報を暗号化し、ステップＳ１１０において、利用者情報生成用公開鍵で共通鍵を暗号化し、ステップＳ１１１において、利用者情報生成用秘密鍵で署名を生成し、ステップＳ１１２で、生成した利用者情報をソフトウェアに退避して、処理を終了する。ソフトウェアというのは、上位レイヤのアプリケーションソフトであって、ローダブルプログラムを利用するソフトのことである。
【００５８】
図３０は、初期利用者情報と利用者情報のインポート手順を示すフローチャートである。
利用者がログインを実施する前にソフトウェアにエクスポートした利用者情報ファイルを認証情報管理システムにインポートする。これは、チャネルオープン後に実施する。
【００５９】
システムマネージャは、ステップＳ１１５において、利用者情報をインポートし、ステップＳ１１６において、チャネルの状態を確認する。チャネルがクローズしている場合には、処理を終了する。チャネルがオープンしているならば、ステップＳ１１７において、利用者情報格納エリアへ、ソフトウェアから利用者情報を転送し、格納する。ステップＳ１１８においては、署名の検証を行なう。署名に問題があれば、処理を終了する。署名に問題が無ければ、ステップＳ１１９において、利用者情報生成用秘密鍵で共通鍵を暗号化し、ステップＳ１２０において、共通鍵を用いて、利用者情報を復号化し、ステップＳ１２１において、利用者情報の情報を公開して、処理を終了する。
【００６０】
図３１は、ログイン認証手順を示すフローチャートである。
利用者が認証情報管理システムの利用を開始する際にログイン処理を実施する。ログイン認証が完了することにより、利用者の認証情報の変更及びリソース（鍵、証明書等）の生成が可能となる。
【００６１】
システムマネージャは、ステップＳ１２５において、利用者の入力するＩＤと認証情報（生体情報／パスワード）を使って、ログイン認証する。ステップＳ１２６において、利用者情報のインポートが済んでいるか否かを判断する。ステップＳ１２６で、済んでいないと判断された場合には、処理を終了する。ステップＳ１２６において、インポートが済んでいると判断された場合には、ステップＳ１２７において、認証情報を照合し、一致するか否かを見る。ステップＳ１２７の認証がＮＧだった場合には、処理を終了する。ステップＳ１２７の認証がＯＫだった場合には、ステップＳ１２８において、PI値の有効状態を更新する。ステップＳ１２９において、利用者の認証状態（ログイン認証済みか否か）を更新して、処理を終了する。
【００６２】
図３２は、ログアウト手順を示すフローチャートである。
利用者が認証情報管理システムの利用を終了する際にログアウト処理を実施する。システムマネージャは、ステップＳ１３０でログアウト処理を行なうと、ステップＳ１３１において、利用者がログイン中か否かの状態確認を行なう。ステップＳ１３１で、利用者がログインしていないと判断された場合には、処理を終了する。ステップＳ１３１において、利用者がログイン中であると判断された場合には、ステップＳ１３２において、利用者の認証状態をログアウトに更新して、処理を終了する。
【００６３】
図３３は、ログイン認証時のPI値有効設定手順を示す図である。
まず、ローダブルプログラムは、生体認証情報の照合が完了した時点で、PI値設定をシステムマネージャに要求する（１）。システムマネージャは、対応するローダブルプログラムによるPI値設定領域にローダブルプログラムから渡されたPI値を格納する（２）。システムマネージャ・ドライバ、または、アプリケーションは、システムマネージャに対して生体認証ログイン要求を行なう（３）。システムマネージャは、ローダブルプログラムによるPI値設定領域に格納されたPIXR-X値と利用者情報展開領域内の自身のPIXR-Xとを比較する（４）。PIXR-Xが一致していたら認証されたとみなし、ログイン認証完了時PI値設定領域（PIR）にローダブルプログラムによるPI値設定領域のPI値をコピーする（５）。システムマネージャは、利用者情報展開領域の「PI値有効状態」を有効に設定する（６）。利用者情報の「認証状態」を認証済みに設定する（７）。ここで、PIXR-Xは、PIDR-P等を一括して示すために使用した記号である。
【００６４】
図３４は、生体認証情報登録手順を示す図である。
まず、ローダブルプログラムは、生体認証情報の生成が完了した時点でPI値生成依頼コマンドをシステムマネージャに要求する（１）。システムマネージャはPI値（PIPR-P、PIPR-H）を生成し、新規生成PI値設定領域に設定する（２）。システムマネージャは、利用者情報のPIDR-P、PIDR-Hを新規生成PI値設定領域にコピーする（３）。PIDR-P、PIDR-Hは利用者情報生成時に生成済みである。システムマネージャはローダブルプログラム管理テーブルからアクティブなプログラム（実行エリアに展開されているプログラム）を検索し、対応するアプリケーションＩＤを新規生成PI値設定領域にコピーする（４）。システムマネージャ・ドライバ、または、アプリケーションは、システムマネージャに対して生体認証情報設定要求を行なう（５）。システムマネージャは、新規生成PI値設定領域から利用者情報にＡＩＤをコピーする（６）。システムマネージャは、新規生成PI値設定領域から利用者情報にＰＩＰ値をコピーする（７）。利用者情報へコピー完了時に新規生成PI値設定領域の設定内容をクリアする。
【００６５】
以上の本発明の実施形態によれば、認証情報管理システムの利用者なりすましを抑止できる。また、利用者情報を認証情報管理システム内に保持せず外部の記憶装置に保存し、必要に応じて利用者情報を転送（インポート）可能なこと、およびローダブルプログラムの入替えが可能なことで、認証情報管理システム内の記憶装置の容量(メモリ量)が抑えら
れると同時にチップの低コスト化が見込める。
【図面の簡単な説明】
【００６６】
【図１】本発明の実施形態に従った認証情報管理システムのソフトウェア構成図である。
【図２】本発明の実施形態に従った認証情報管理システムのハードウェア構成図である。
【図３】本発明の実施形態に従ったチャネルの概念を説明する図である。
【図４】本発明の実施形態に従った認証情報管理システムにおける全体の流れを示すフローチャートである。
【図５】認証情報管理システムにおける利用者情報を説明する図（その１）である。
【図６】認証情報管理システムにおける利用者情報を説明する図（その２）である。
【図７】チャネルオープン手順を示すフローチャートである。
【図８】チャネルクローズ手順を示すフローチャートである。
【図９】ローダブルプログラムを転送する際のデータフォーマットについて説明する図（その１）である。
【図１０】ローダブルプログラムを転送する際のデータフォーマットについて説明する図（その２）である。
【図１１】ローダブルプログラムを転送する際のデータフォーマットについて説明する図（その３）である。
【図１２】ローダブルプログラムを転送する際のデータフォーマットについて説明する図（その４）である。
【図１３】ローダブルプログラムを転送する際のデータフォーマットについて説明する図（その５）である。
【図１４】ローダブルプログラムを転送する際のデータフォーマットについて説明する図（その６）である。
【図１５】システムマネージャが管理するローダブルプログラムの状態遷移図を示す図である。
【図１６】ローダブルプログラムのメモリ配置構成を説明する図である。
【図１７】ローダブルプログラムのインストール手順を示すフローチャートである。
【図１８】ローダブルプログラムのアンインストール手順を示すフローチャートである。
【図１９】ローダブルプログラムのロード手順を示すフローチャートである。
【図２０】ローダブルプログラムのアンロード手順を示すフローチャートである。
【図２１】ローダブルプログラムの一時停止手順を示すフローチャートである。
【図２２】ローダブルプログラムの実行開始手順を示すフローチャートである。
【図２３】ローダブルプログラムのアドレス解決手順を示すフローチャート（その１）である。
【図２４】ローダブルプログラムのアドレス解決手順を示すフローチャート（その２）である。
【図２５】初期利用者登録手順を示すフローチャートである。
【図２６】利用者登録手順を示すフローチャートである。
【図２７】ローダブルプログラムを使用した認証情報登録/変更手順を示すフローチャートである。
【図２８】利用者情報ファイルの構成を示す図である。
【図２９】初期利用者情報と利用者情報のエクスポート手順を示すフローチャートである。
【図３０】初期利用者情報と利用者情報のインポート手順を示すフローチャートである。
【図３１】ログイン認証手順を示すフローチャートである。
【図３２】ログアウト手順を示すフローチャートである。
【図３３】ログイン認証時のPI値有効設定手順を示す図である。
【図３４】生体認証情報登録手順を示す図である。
【図３５】セキュアな環境下でのデータ認証機能を提供する製品を取り巻く状況を説明する図である。
【符号の説明】
【００６７】
１      チップ
２、１０      システムマネージャ
３、１１−１〜１１−ｎ      ローダブルプログラム
４      ＰＣ（端末）
５      ネットワーク
１２      ハードウェアドライブ
１３      各種ハードウェア
１４      ブートBIOS
１５      PC  BIOS、TPM/TSS、BIOS-API
１６      システムマネージャ・ドライバライブラリ
１７      システムマネージャ・ドライバ
１８      TSS
１９      管理ツール
２０      Crypto  API
２１      CSP
２２      PKCS#11
２３      アプリケーション群
３０      MCU
３１      ＲＯＭ
３２      暗号制御モジュール
３３      ハッシュ生成器
３４      乱数生成器
３５      外部インタフェース
３６      ＲＡＭ
３７      タイマ制御部
３８      ２０４８ｂｉｔべき乗剰余演算器
３９      メモリコントローラ
４０      ＮＶＲＡＭ
４１      ＳＲＡＭ
４２      認証情報管理システム
５０      ソフトウェア
５１      システムマネージャ
５２      ローダブルプログラム
５３      ローダブルプログラム実効エリア
５４      ローダブルプログラム
５５      ＮＶＲＡＭ
【図１】
0005134338.tif 000002
【図２】
0005134338.tif 000003
【図３】
0005134338.tif 000004
【図４】
0005134338.tif 000005
【図５】
0005134338.tif 000006
【図６】
0005134338.tif 000007
【図７】
0005134338.tif 000008
【図８】
0005134338.tif 000009
【図９】
0005134338.tif 000010
【図１０】
0005134338.tif 000011
【図１１】
0005134338.tif 000012
【図１２】
0005134338.tif 000013
【図１３】
0005134338.tif 000014
【図１４】
0005134338.tif 000015
【図１５】
0005134338.tif 000016
【図１７】
0005134338.tif 000017
【図１８】
0005134338.tif 000018
【図１９】
0005134338.tif 000019
【図２０】
0005134338.tif 000020
【図２１】
0005134338.tif 000021
【図２２】
0005134338.tif 000022
【図２３】
0005134338.tif 000023
【図２４】
0005134338.tif 000024
【図２５】
0005134338.tif 000025
【図２６】
0005134338.tif 000026
【図２７】
0005134338.tif 000027
【図２８】
0005134338.tif 000028
【図２９】
0005134338.tif 000029
【図３０】
0005134338.tif 000030
【図３１】
0005134338.tif 000031
【図３２】
0005134338.tif 000032
【図３３】
0005134338.tif 000033
【図３４】
0005134338.tif 000034
【図３５】
0005134338.tif 000035
【図１６】
0005134338.tif 000036