本発明の実施の形態について、図面を用いて説明する。本実施の形態は、いわゆるシンクライアントシステムを例に説明するが、本発明はそれに限定されるものではない。
図1に、本発明の可搬媒体のアクセス制御方法が適用されるシステムのブロック構成図を示す。利用者が使用する複数のクライアント2000とサーバ3000は、ネットワーク10000を介して互いに接続されており、各クライアント2000とサーバ3000間での情報の送受信が可能である。
認証トークン1000は、利用者が携帯し持ち歩くことが可能な媒体であり、図1に示すいずれのクライアント2000にも接続することができる。メモリトークン1500は、認証トークン1000と同様に利用者が携帯し持ち歩くことが可能な媒体であり、図1に示すいずれのクライアント2000にも接続することができる。利用者は、クライアント2000を操作することで、任意のトークンを選択し、選択したトークンに対する情報の読出しや書込みを行うことができる。
本システムはシンクライアントであり、利用者が使用する業務アプリケーションや業務ファイルは、個々のクライアント2000ではなくサーバ3000で一括管理される。利用者は、認証トークン1000をクライアント2000に接続し、クライアント2000ならびにサーバ3000に対する認証を行うことで、サーバ3000上の必要な業務アプリケーションや業務ファイルをサーバ3000上で実行し、業務を行うことができる。
図2に、認証トークン1000の詳細を説明するためのブロック構成図を示す。認証トークン1000は、内部にUSB接続I/F1100、コントローラ1200、耐タンパ領域1300、記憶領域1400を実装しており、それぞれが図示するように接続されている。
USB接続I/F1100は、認証トークン1000をクライアント2000に接続するために利用するインターフェースである。本実施例では、USBによる接続を前提として説明するが、赤外線やNFC(Near Field Communication)でもよい。
コントローラ1200は、内部にCPU1210、メモリ1220、ストレージ1230を含む。CPU1210は、制御プログラム1231や記憶領域パスワード照合プログラム1232等のストレージ1230内のプログラムをメモリ1220にロードして実行する。
制御プログラム1231は、USB接続I/F1100を介してクライアント2000から受信した情報を耐タンパ領域1300または記憶領域1400に送信するための切り分け制御や、耐タンパ領域1300や記憶領域1400の情報をクライアント2000に送信したりする際の排他制御を行うプログラムである。
記憶領域パスワード1233は、記憶領域1400内の業務ファイル1410の読出しや書込みを行う利用者の権限を検証するための情報である。記憶領域パスワード1233の照合に成功していない状態では、コントローラ1200と記憶領域1400との間の通信はロックされており、利用者はクライアント2000から認証トークン1000内の記憶領域1400にアクセスすることはできない。
記憶領域パスワード照合プログラム1232は、クライアント2000から送信されたパスワードとコントローラのストレージ1230内に格納されている記憶領域パスワード1233の照合を行うプログラムである。記憶領域パスワード照合プログラム1232は、記憶領域パスワード1233の照合結果が正しい場合、コントローラ1200と記憶領域1400との間の通信のロックを解除状態に変更し、業務ファイル1410の読出しや書込みを許可する。なお、本解除状態は、認証トークン1000がクライアント2000から取外されると自動的にリセットされ、ロック状態に戻る。すなわち、記憶領域1400にアクセスするための記憶領域パスワード1233の照合は、認証トークン1000をクライアント2000に接続する度に行う必要がある。本機能は、MultiMediaCard(MMC)の規格で定められているLock/Unlockのような機能を前提としている。なお、コントローラ1200と記憶領域1400との間の通信がロック状態であっても、クライアント2000からコントローラ1200への通信ならびにクライアント2000から耐タンパ領域1300への通信は行うことができる。
耐タンパ領域1300は、ICカードチップなどのセキュリティ評価団体の定める基準により認定を受けることが可能な水準の耐タンパ性を持つデバイスであり、内部にCPU1310、メモリ1320、ストレージ1330を含む。CPU1310は、ストレージ1330からメモリ1320にロードされたプログラムを実行し、非対称鍵による暗復号、ストレージ1330内のファイル管理、ハッシュの演算、デジタル署名、証明書の検証、鍵の生成、乱数の生成を行う機能を持つ。ストレージ1330は、EEPROM等の不揮発性ストレージであり、内部にはPIN照合プログラム1331や演算プログラム1332を含む所定のプログラムと、公開鍵1340や証明書1339を含む所定のデータが格納されている。
PIN1335は、PIN秘匿領域1333内のデータに対して読出しや書込みを行わせたり演算を行わせたりする利用者の権限を検証するための情報である。PIN1335の照合に成功していない状態では、利用者はクライアント2000からPIN秘匿領域1333内のデータにアクセスすることはできない。なお、本実施例のPIN1335は文字列を前提とするが、指紋、虹彩、声紋、静脈等の生体認証情報でもよい。また、本実施例ではPIN秘匿領域1333内の全てのデータに対する利用者の権限を一つのPIN1335で管理しているが、データ毎にPINを定め、個別に照合を行う構成にしてもよい。
PIN照合プログラム1331は、クライアント2000からコントローラ1200を経由して送信されたPINとPIN秘匿領域1333内に格納されているPIN1335の照合を行うプログラムである。PIN照合プログラム1331は、PIN1335の照合結果が正しい場合、クライアント2000からのPIN秘匿領域1333内のデータに対する読出しや書込み、演算といった処理を行うことを許可する。また、PIN照合プログラム1331は、PIN1335の照合に所定の回数連続して失敗したことを検知すると、不正な利用者によるアクセスが試行されていると判断し、PIN秘匿領域1333を無効化し、以降、PIN1335の照合要求を一切受け付けない。なお、本実施例では、PIN秘匿領域1333内のデータを利用するたびにPIN照合を必要とするが、一度PIN照合プログラム1331により正当と判断された利用者には、以降のアクセスにてPIN照合を求めない設定にしてもよい。
演算プログラム1332は、公開鍵1340や秘密鍵1334を用いた演算処理を実行したり、ストレージ1330内に格納されている公開鍵1340、証明書1339、クライアント認証情報1336、記憶領域パスワード1337、ユーザ権限情報1338等のデータを耐タンパ領域1330の外部へ出力したりする機能を持つプログラムである。
秘密鍵1334は、利用者の認証を行う際の電子署名等に使われる鍵であり、1つでも複数個でもよい。公開鍵1340は、秘密鍵1334に対応する非対称鍵暗号用の鍵であり、秘密鍵1334により生成された電子署名の検証等に使用される。証明書1339は、外部の認証局により発行された、公開鍵1340の正当性を証明するための証明書である。クライアント認証情報1336は、後述するクライアント2000へのログオンを行う利用者の権限を検証するための情報である。記憶領域パスワード1337は、前述した記憶領域1400のロックを解除するためのパスワードである。ユーザ権限情報1338は、認証トークン1000の記憶領域1400等を使用するための利用者の権限を規定する情報である。なお、公開鍵1340、証明書1339、ユーザ権限情報1338は、いずれもPIN秘匿領域1333に格納されていてもよい。
記憶領域1400は、フラッシュメモリ等の不揮発性の記憶媒体であり、業務ファイル1410等の情報を保存可能である。
図3に、メモリトークン1500の詳細を説明するためのブロック構成図を示す。メモリトークン1500は、内部にUSB接続I/F1510、コントローラ1520、記憶領域1530を実装しており、それぞれが図示するように接続されている。
USB接続I/F1510は、メモリトークン1500をクライアント2000に接続するために利用するインターフェースである。本実施例では、USBによる接続を前提として説明するが、赤外線やNFC(Near Field Communication)などでもよい。
コントローラ1520は、内部にCPU1521、メモリ1522、ストレージ1523を含む。CPU1521は、制御プログラム1524等のストレージ1523内のプログラムをメモリ1522にロードして実行する。
制御プログラム1524は、USB接続I/F1510を介してクライアント2000から受信した情報を記憶領域1530に送信したり、記憶領域1530内の情報をクライアント2000に送信したりする際の制御を行うプログラムである。
記憶領域1530は、フラッシュメモリ等の不揮発性の記憶媒体であり、情報を保存可能である。
図4に、クライアント2000の詳細を説明するためのブロック構成図を示す。クライアント2000は、メモリ2300、組込メモリ2600を含む記憶装置、CPU2200などの処理装置を有し、記憶装置に格納されたプログラムに従って、処理装置が情報処理を実行するものである。クライアント2000のCPU2200上にて実行される情報は、キーボードやマウス等の入力装置2400を介して利用者が操作することができるとともに、その処理結果がディスプレイ2500により表示される。また、ネットワーク接続I/F2100により、ネットワーク10000を介して、サーバ3000等、他の情報処理装置と通信を行うことができる。
本実施例のクライアント2000は、情報を保存可能な記憶装置を持たないディスクレスクライアントである。クライアント2000には業務ファイルが保存されることはないため、利用者がクライアント2000を紛失しても業務情報が漏洩することはない。また、各クライアント2000には利用者毎の設定が存在しないため、どの利用者もクライアント2000を同じように使用することができる。
USBI/F2700は、クライアント2000と認証トークン1000またはメモリトークン1500との接続を可能にするインターフェースである。前述したように、本実施例では、USBによる認証トークンの接続を前提として説明するが、赤外線やNFC(Near Field Communication)でもよい。
組込メモリ2600には、サーバ接続プログラム2690、ファイル送受信プログラム2610、クライアントログオンプログラム2680、耐タンパ領域プログラム2670、記憶領域プログラム2630、耐タンパ領域制御ドライバ2660、記憶領域制御ドライバ2640、USBトークン制御ドライバ2650等の所定のプログラムと、クライアントセキュリティポリシ情報2620等の所定のデータが、予め書込まれている。組込メモリ2600内のプログラムやデータは、クライアント2000が再起動されるたびにリフレッシュされ、初期設定に戻る仕様となっている。
クライアントセキュリティポリシ情報2620は、企業のセキュリティポリシに則して定められる設定情報であり、USBI/F2700に接続されたUSBマスストレージデバイスへのファイル出力可否や、利用者により入力されたPINのキャッシュ可否等を規定する。本実施例では、認証トークン1000の記憶領域1400やメモリトークン1500の記憶領域1530を含むUSBマスストレージデバイスへのファイル出力を許可しない設定である(但し、認証トークン1000のコントローラ1200や耐タンパ領域1300へのアクセスは許可する)。また、一度照合に成功した認証トークン1000のPINは、認証トークン1000の取外しが行われるまでキャッシュする設定である。なお、これらの設定は、クライアント2200の使用中に一時的に変更することが可能である。例えば、特定のUSBストレージデバイスへのファイル出力を一時的に許可することが可能である。但し、前述したように、変更した設定は、クライアント2000の再起動が行われると初期設定に戻る。
クライアントログオンプログラム2680は、クライアント2000を使用する利用者の権限を検証するためのプログラムであり、クライアント2000の電源が投入されると自動的に起動する。クライアントログオンプログラム2290は、認証トークン1000内のクライアント認証情報1336に基づいてログオン処理を行う。ログオンに成功すると、利用者は、サーバ接続プログラム2690、ファイル送受信プログラム2610などのプログラムを使用することができる。認証トークン1000内のクライアント認証情報1336が適切でない場合、ログオンに失敗し、利用者は前記プログラムを使用することができない。また、ログオンに使用した認証トークン1000がクライアント2000から取外されると、クライアントログオンプログラム2680は、ネットワーク10000への切断を行うとともにクライアント2000のログオフ処理を行う。ログオフ処理後に再度クライアント2000を使用するためには、認証トークン1000をクライアント2000に再接続し、再度ログオン処理を行う必要がある。
サーバ接続プログラム2690は、クライアント2000からサーバ3000への接続を確立する際の相互認証ならびにクライアント2000からサーバ3000の遠隔操作を実現するためのプログラムある。図示しないサーバ証明書を利用したサーバ認証、認証トークン1000内の証明書1339を利用したクライアント認証を行い、相互の認証に成功すると、クライアント2000とサーバ3000との間の接続を確立するとともに、セション鍵を共有して通信を暗号化する。利用者は、クライアント2000の入力装置2400を介して、サーバ3000内の業務アプリケーションや業務ファイルを、暗号化された通信上で遠隔操作することができる。サーバ接続プログラム2690は、クライアント2000へのログオンが完了すると実行することができる。
ファイル送受信プログラム2610は、サーバ3000と認証トークン1000の記憶領域1400との間でファイルの送受信を行うためのプログラムである。ファイル送受信プログラム2610は、サーバ接続プログラム2690による通信の確立が完了した後に実行することができる。
クライアント2000からの認証トークン1000ならびにメモリトークン1500へのアクセスは、耐タンパ領域1300へのアクセスと記憶領域1400、1530へのアクセスとのそれぞれについて、二つの異なる経路を介して行われる。詳細には、耐タンパ領域1300にセキュリティに関する命令を実行する場合は、耐タンパ領域プログラム2670、耐タンパ領域制御ドライバ2660、USBトークン制御ドライバ2263を経由して実行する。記憶領域1400、1530にファイルの書込みを行う場合は、記憶領域プログラム2630、記憶領域制御ドライバ2640、USBトークン制御ドライバ2650を経由して実行する。
耐タンパ領域プログラム2670は、クライアントログオンプログラム2680やサーバ接続プログラム2690などの複数のアプリケーションが認証トークン1000の耐タンパ領域1300にアクセスする際に利用する、ファイル管理、ファイル暗号/復号、ハッシュ演算、デジタル署名、証明書の検証、乱数の生成、鍵の生成等の関数群を実装したプログラムである。耐タンパ領域プログラム2670は、クライアント2000の電源が投入されると自動的に起動する。
耐タンパ領域制御ドライバ2660は、認証トークン1000内の耐タンパ領域1300へのアクセスを制御するためのプログラムであり、クライアント2000の電源が投入されると自動的に起動する。
記憶領域プログラム2630は、認証トークン1000の記憶領域1400やメモリトークン1500の記憶領域1530への情報の読書きを実行するためのプログラムであり、クライアント2000の電源が投入されると自動的に起動する。
記憶領域制御ドライバ2640は、認証トークン1000の記憶領域1400やメモリトークン1500の記憶領域1530へのアクセスを制御するためのプログラムであり、クライアント2000の電源が投入されると自動的に起動する。
USBトークン制御ドライバ2650は、耐タンパ領域制御ドライバ2660と記憶領域制御ドライバ2640から受信した命令をUSBI/F2700を経由して認証トークン1000またはメモリトークン1500に送信したり、USBI/F2700を経由して受信した認証トークン1000またはメモリトークン1500からの応答を耐タンパ領域制御ドライバ2660や記憶領域制御ドライバ2640に送信したりするための制御を行うプログラムである。また、認証トークン1000やメモリトークン1500のUSBI/F2700への接続や取外しを検知する機能を持つ。USBトークン制御ドライバ2650は、クライアント2200の電源が投入されると自動的に起動する。
図5に、サーバ3000の詳細を説明するためのブロック構成図を示す。サーバ3000は、メモリ3200、ハードディスク3300を含む記憶装置、CPU3100などの処理装置を有し、記憶装置に格納されたプログラムに従って、処理装置が情報処理を実行するものである。また、ネットワーク接続I/F3400により、ネットワーク10000を介して、クライアント2000等、他の情報処理装置と通信を行うことができる。
ハードディスク3300には、業務アプリケーション3310、業務ファイル3320、サーバセキュリティポリシ情報3330、ユーザ権限情報データベース3340が格納されている。
業務アプリケーション3310は、文章作成、表計算、Eメール送受信など、利用者が日常の業務を行うためのアプリケーション群である。業務ファイル3320は、利用者が業務アプリケーション3310を使用して作成・編集するファイル群である。
サーバセキュリティポリシ情報3330は、クライアントセキュリティポリシ情報2620と同様、企業のセキュリティポリシに則して定められる設定情報であり、クライアント2000とサーバ3000との間で通信を行う際の認証方式や、データを暗号化するためのセション鍵の長さなどを規定する。本実施例のサーバセキュリティポリシ情報3330では、クライアント2000とサーバ3000との間の通信の確立に、PKIによるクライアント認証が必要な設定となっている。すなわち、クライアント2000からサーバ3000に接続する際に、利用者はサーバ3000に証明書を提示する必要がある。
ユーザ権限情報データベース3340は、業務アプリケーション3310や業務ファイル3320、さらには認証トークン1000の記憶領域1400やファイル送受信プログラム2610の使用権限を、利用者一人一人について定めたデータベースであり、管理者により最新の状態に保たれる。利用者は、自身に権限が与えられていない業務アプリケーション2434や業務ファイル2432を使用することはできない。なお、ユーザ権限情報データベース3340の各利用者の権限情報は、後述する処理により、認証トークン1000内のユーザ権限情報1338にも反映される仕組みとなっている。
図6に、利用者がクライアント2000に認証トークン1000とメモリトークン1500を接続し、認証トークン1000の記憶領域1400に格納された業務ファイル1410をクライアント2000にて読み出す際の、利用者、認証トークン1000、クライアント2000間にて行われる処理の詳細を説明するためのシーケンスを示す。
まず、利用者の操作によりクライアント2000の電源が投入され、認証トークン1000をクライアントに接続される(4001)。このとき、クライアント2000にはメモリトークン1500も接続されているものとする。
クライアント2000の電源が起動すると、USBトークン制御ドライバ2650、耐タンパ領域制御ドライバ2660、記憶領域制御ドライバ2640、耐タンパ領域プログラム2670、記憶領域プログラム2630、クライアントログオンプログラム2680が起動する。また、クライアントセキュリティポリシ情報2620の設定がクライアント2000に適用される。USBトークン制御ドライバ2650が、クライアント2000に認証トークン1000とメモリトークン1500とが接続されていることを検知すると、それぞれのトークンの耐タンパ領域名と記憶領域名を取得するための処理を実行する(4002)。
図7は、図6のステップ4002にて実行される処理の詳細を説明するために、認証トークン1000とメモリトークン1500の双方がクライアント2000に接続された際に、クライアント2000の各プログラムが取得・保持する情報を示したテーブルである。
トークン1000内では、コントローラ1200がUSBシリアル番号「0001」を、耐タンパ領域1300が耐タンパ領域番号「000A」が、記憶領域1400が記憶領域番号「001A」をそれぞれ保持する。トークン1500内では、コントローラ1520がUSBシリアル番号「0002」を、記憶領域1530が記憶領域番号「001B」をそれぞれ保持する。USBシリアル番号、耐タンパ領域番号、記憶領域番号は、それぞれのデバイスや領域を判別するために予め一意に付与された番号である。
USBトークン制御ドライバ2650が、認証トークン1000とメモリトークン1500の接続を検知すると、認証トークン1000とメモリトークン1500からそれぞれのUSBシリアル番号「0001」、「0002」を取得し、内部に保持する。
耐タンパ領域制御ドライバ2660は、USBトークン制御ドライバ2650とコントローラ1200とを介して、耐タンパ領域1300の耐タンパ領域番号「000A」を取得すると、これに対して耐タンパ領域名「SC1」を指定する。そして、耐タンパ領域制御ドライバ2660は、耐タンパ領域名「SC1」と、耐タンパ領域番号「000A」と、これに紐付けられるUSBシリアル番号「0001」を保持する。
記憶領域制御ドライバ2640は、USBトークン制御ドライバ2650とコントローラ1200、1520とを介して、記憶領域1400、1530の記憶領域番号「001A」、「001B」を取得すると、それぞれに対して記憶領域名「A」、「B」を指定する。そして、記憶領域制御ドライバ2640は、記憶領域名「A」、「B」と、記憶領域番号「001A」、「001B」と、これらに紐付けられるUSBシリアル番号「0001」、「0002」を保持する。
さらに、USBトークン制御ドライバ2650は、既に保持しているUSBシリアル番号「0001」、「0002」を基に、これらに紐付けられる記憶領域名「A」、「B」を記憶領域制御ドライバ2640より取得し、内部に保持する。
以上の処理が完了すると、本実施の形態においては、後述する処理を行うことができる。
第一に、耐タンパ領域プログラム2670を使用して、選択した耐タンパ領域名に紐付けられる耐タンパ領域に対して通信を行うことができる。例えば、利用者が耐タンパ領域名「SC1」を選択すると、選択された耐タンパ領域名「SC1」に紐付けられる耐タンパ領域番号「000A」とUSBシリアル番号「0001」に基づいて、USBトークン制御ドライバ2650はコントローラ1200の選択を行い、耐タンパ領域制御ドライバ2660は耐タンパ領域1300の選択を行う。これにより、利用者は、トークン1000の耐タンパ領域1300に対してセキュリティに関する命令を実行することができる。
第二に、耐タンパ領域プログラム2670を使用して、選択した耐タンパ領域名に紐付けられる耐タンパ領域と同じトークン内の記憶領域に紐付けられる記憶領域名を取得することができる。例えば、利用者が耐タンパ領域名「SC1」を選択すると、耐タンパ領域制御ドライバ2660は、これに紐付けられる耐タンパ領域番号「000A」とUSBシリアル番号「0001」に基づいてUSBトークン制御ドライバ2650にアクセスを行い、USBトークン制御ドライバ2650が保持するUSBシリアル番号「0001」に紐付けられる記憶領域名「A」を取得する。これにより、耐タンパ領域プログラム2670は、セキュリティに関する命令を実行した耐タンパ領域1300が格納されるトークン1000の記憶領域1400を、トークン1500の記憶領域1530と混同することなく確実に判別することができる。
なお、本実施例のUSBトークン制御ドライバ2650は、記憶領域名を保持する構成としたが、耐タンパ領域プログラム2670からの問合せがなされた際に記憶領域制御ドライバ2640から記憶領域名を動的に取得する機能を持つ構成にしてもよい。
また、本実施例では、USBトークン制御ドライバ2650が記憶領域名を保持する構成としたが、耐タンパ領域制御ドライバ2660が記憶領域名を保持する構成にしてもよい。
図6のシーケンスの続きを説明する。ステップ4002の処理により耐タンパ領域制御ドライバ2660が耐タンパ領域名「SC1」を取得すると、耐タンパ領域プログラム2670はこれを検知し、耐タンパ領域名「SC1」を有する認証トークン1000が接続されたことをクライアントログオンプログラム2680に通知する。クライアントログオンプログラム2680は、前記通知を受けると、耐タンパ領域名「SC1」に対してクライアント認証情報を要求する(4003)。
認証トークン1000の耐タンパ領域1300は、耐タンパ領域プログラム2670、耐タンパ領域制御ドライバ2660、USBトークン制御ドライバ2650を経由して前記クライアント認証情報の要求を受けると、PIN秘匿領域1333内のクライアント認証情報1336にアクセスするためのPINの認証をクライアントに要求する(4004)。
PINの要求がなされると、クライアントログオンプログラム2680は、利用者へのPIN入力要求をディスプレイ2500に表示する(4005)。利用者からPINの入力を受け付けると(4006)、クライアントログオンプログラム2680は、入力されたPINを耐タンパ領域1300に送信する(4006)。
耐タンパ領域1300のPIN照合プログラム1331は、クライアントログオンプログラム2680から送信されたPINと耐タンパ領域1300内のPIN1335が一致するか検証するためのPIN照合処理を行う(4008)。照合処理に成功すると、PIN秘匿領域1333内へのアクセスが許可状態に変更され、耐タンパ領域1300からクライアント2000にクライアント認証情報1336が送信される(4009)。クライアントログオンプログラム2680は、取得したクライアント認証情報1336に基づき、クライアントログオン処理を開始する(4010)。
また、クライアント2000の耐タンパ領域プログラム2670は、耐タンパ領域1300にユーザ権限情報1338を要求(4011)、取得し(4012)、認証トークン1000の記憶領域1400を利用可能にするための処理を開始する。まず、取得したユーザ権限情報1338に基づき、利用者が記憶領域1400の使用権限を有するか否かの判定処理を行う(4013)。判定結果の結果が肯定的な場合、耐タンパ領域プログラム2670は、認証トークン1000の耐タンパ領域1300に記憶媒体パスワード1337を要求する(4014)。前記判定の結果が否定的な場合、耐タンパ領域プログラム2670は終了処理を行う(4015)。この場合、利用者は認証トークン1000の記憶領域1400を使用することはできない。なお、本判定処理については、ユーザ権限情報1338をより詳細に規定し、記憶領域1400からの読出しのみを許可したり、記憶領域1400内の特定のブロックのみに対する書込みを許可したりと、権限区分を細分化してもよい。
耐タンパ領域1300は、記憶媒体パスワード1337を要求されると、利用者の認証のためPINの入力をクライアント2000に要求する(4016)。ここで、本実施例のクライアントセキュリティポリシ情報2620では、一度入力したPINをキャッシュ可能な設定となっているため、ステップ4006で入力されたPINを耐タンパ領域プログラム2670が保持しており、これを耐タンパ領域1300に送信する(4017)。このため、利用者はPINを再度入力する必要はない。
図示しないPIN認証処理が完了すると、耐タンパ領域プログラム2670は、耐タンパ領域1300から記憶媒体パスワード1337を取得し(4018)、認証トークン1000のコントローラ1200に送信する(4019)。コントローラ1200の記憶領域パスワード照合プログラム1232は、クライアント2000から送信された記憶領域パスワード1337と、コントローラ1200内の記憶領域パスワード1233との、図示しない照合処理を行う。そして、前記照合処理の結果が肯定的な場合、コントローラ1200と記憶領域1400との間の通信がロック解除状態に変更される。前記照合の結果は、認証トークン1000からクライアント2000に通知される(4020)。
耐タンパ領域プログラム2670は、前記通知を受けると、耐タンパ領域制御ドライバ2660に対して、耐タンパ領域名「SC1」を有する認証トークン1000が有する記憶領域1400の記憶領域名を取得するための問合せを実行し、記憶領域名「A」を取得する。そして、取得した記憶領域名を基に、クライアントセキュリティポリシ情報2620により制限されている認証トークン1000の記憶領域1400へのファイル出力を一時的に許可するための処理を行う(4021)。
クライアントログオン処理(4010)が完了すると、利用者は、入力装置2400を介してサーバ接続プログラム2690等のプログラムを実行することができる(4022)。また、利用者が記憶領域1400の使用権限を有している場合は、ファイル出力許可処理(4021)が完了すると、記憶領域1400内の業務ファイル1410を閲覧・編集したり、記憶領域1400内に新規ファイルを作成したりすることができる(4023)。
図8に、図6に示したクライアントログオン後に、利用者がサーバ2000への接続を行い、サーバ2000と認証トークン1000の記憶領域1400との間で業務ファイルを送受信する際の、利用者、認証トークン1000、クライアント2000、サーバ3000間にて行われる処理の詳細を説明するためのシーケンスを示す。
まず、利用者がクライアント2000においてサーバ接続プログラム2690を起動し(5001)、指定したサーバ3000への接続を要求する(5002)。
サーバ3000は、クライアント2000からの接続要求を受けると、図示しないサーバ認証処理を行う。さらに、本実施例では、サーバセキュリティポリシ情報3330においてPKIによるクライアント認証が必要とされているため、クライアント認証処理を開始する。まず、サーバ2000は、クライアント1000に署名と証明書の要求を行い(5003)、クライアント2000は認証トークン1000に電子署名と証明書の要求を行う(5004)。
認証トークン1000は、秘密鍵1334を使用するためのPINの入力をクライアント2000に要求する(5005)。前述したように、本実施例におけるクライアントセキュリティポリシ情報2620では、一度入力したPINをキャッシュ可能な設定となっているため、耐タンパ領域プログラム2670が保持するPINを認証トークン1000に送信する(5006)。
図示しない認証トークン1000内でのPIN照合処理に成功すると、認証トークン1000は、サーバ3000からクライアント2000を経由して送信された情報に対し、秘密鍵1334を用いた電子署名を耐タンパ領域1300内のCPUにおいて生成する(5007)。生成された電子署名は、証明書1339とともにクライアント2000に送信され(5008)、クライアント2000からサーバ3000に送信される(5009)。
サーバ3000において電子署名の検証に成功すると、サーバ3000とクライアント2000は、互いの鍵情報と証明書を利用して、セション鍵の鍵交換を行う(5010)。以降、サーバ3000とクライアント2000との間で通信される情報は、セション鍵を用いて暗号化される。
次に、サーバ3000は、接続を行った利用者の最新のユーザ権限情報をユーザ権限情報データベース3340より取得し、クライアント2000に送信する(5011)。クライアント2000は、サーバ3000から送信されたユーザ権限情報とステップ4012で認証トークン1000から取得したユーザ権限情報1338とのバージョンの比較を行い、バージョンが異なる場合は、認証トークン1000内のユーザ権限情報1338が最新でないと判定し、サーバ3000から送信されたユーザ権限情報を認証トークン1000に送信する(5012)。認証トークン1000内の演算プログラム1332は、ユーザ権限情報1338の更新を行う(5013)。
ユーザ権限情報1338の更新処理が完了すると、クライアント2000はユーザ権限情報1338を認証トークン1000より再度取得し(5014)、サーバ3000に結果を送信する(5015)。
以上の処理が完了すると、利用者は、クライアント2000においてファイル送受信プログラム2610を起動することができる。ファイル送受信プログラム2610が起動すると(5016)、クライアント2000の耐タンパ領域プログラム2670は、ユーザ権限情報に基づき、利用者がファイル送受信の使用権限を有するか否かの判定処理を行う(5017)。判定結果が否定的な場合、利用者は、ファイル送受信プログラム2610を使用することができない(5019)。判定結果が肯定的な場合、サーバ3000にファイル送受信要求を送信する(5018)。サーバ3000は、ファイル送受信要求を受理すると、クライアント2000に結果通知を送信する(5020)。さらに、耐タンパ領域プログラム2670は、耐タンパ領域制御ドライバ2660に対して、耐タンパ領域名「SC1」を有する認証トークン1000が有する記憶領域1400の記憶領域名を取得するための問合せを実行し、記憶領域名「A」を取得する。
以上より、利用者は、ファイル送受信プログラム2610の使用権限を有する場合、ファイル送受信プログラム2610の使用して、サーバ3000と記憶領域名「A」が指定された認証トークン1000の記憶領域1400との間でファイルの送受信を行うことができる。例えば、ネットワーク10000が利用不可のオフライン環境下で作成した認証トークン1000の記憶領域1400内の業務ファイル1410を、サーバ3000にアップロード(5020)し、オンライン環境で継続して業務を行うことができる。また、クライアント1000のバッテリ駆動時間が少なく消費電力を抑えて使用したい場合には、あらかじめサーバ3000の業務ファイル3320を認証トークン1000の記憶領域1400にダウンロード(5020)しておくことで、オフライン環境でも継続して業務を行うことができる。
なお、ファイル送受信プログラム2610の使用については、利用者のユーザ権限情報に基づいて、認証トークン1000内の業務ファイル1410をサーバ3000にアップロードする処理のみを許可したり、ファイルを暗号化する場合は業務ファイル3320の受信を許可したりといった設定にしてもよい。
以上の実施の形態によれば、固有のアクセス手段を必要とするメモリ領域を複数備えたデバイスがホストに接続された際に、第一のメモリ領域を選択したときに同デバイスの第二のメモリ領域を自動的に判別することができる。
さらに、記憶領域と耐タンパ領域を併せ持つデバイスを用いることで、簡便かつ安全な情報の持ち運びを実現することができる。
1000…認証トークン、1100…USB接続I/F、1200…コントローラ、1210…CPU、1220…メモリ、1230…ストレージ、1231…制御プログラム、1232…記憶領域パスワード照合プログラム、1233…記憶領域パスワード、1300…耐タンパ領域、1310…CPU、1320…メモリ、1330…ストレージ、1331…PIN照合プログラム、1332…演算プログラム、1333…PIN秘匿領域、1334…秘密鍵、1335…PIN、1336…クライアント認証情報、1337…記憶領域パスワード、1338…ユーザ権限情報、1339…証明書、1340…公開鍵、1400…記憶領域、1410…業務ファイル、1500…メモリトークン、1510…USB接続I/F、1520…コントローラ、1521…CPU、1522…メモリ、1523…制御プログラム、1524…制御プログラム、1530…記憶領域、2000…クライアント、2100…ネットワーク接続I/F、2200…CPU、2300…メモリ、2400…入力装置、2500…ディスプレイ、2600…組込みメモリ、2610…ファイル送受信プログラム、2620…クライアントセキュリティポリシ情報、2630…記憶領域プログラム、2640…記憶領域ドライバ、2650…USBトークン制御ドライバ、2660…耐タンパ領域制御ドライバ、2670…耐タンパ領域プログラム、2680…クライアントログオンプログラム、2690…サーバ接続プログラム、2700…USBI/F、3000…サーバ、3100…CPU、3200…メモリ、3300…ハードディスク、3310…業務アプリケーション、3320…業務ファイル、3330…サーバセキュリティポリシ情報、3340…ユーザ権限情報データベース、3400…ネットワーク接続I/F、10000…ネットワーク