(57)【要約】【課題】書き込まれたデータを読み出すことなく、書き込みが正常か否かを確認可能にする。【解決手段】携帯記憶媒体（１）とサーバー（３）がレスポンス認証コードを利用してセキュアな通信を行う環境の中で、認証番号や暗号鍵等携帯記憶媒体から読み出すことのできない機密性の高いデータを書き込んだ際、後から機密性の高いデータが正しく書き込めたか否かを確認する方法において、携帯記憶媒体（１）はデータを書き込んだ際に生成したレスポンス認証コードをチェックバリューとして記憶し、サーバー（３）は、取得コマンドを送信してチェックバリューを取得して検証する構成である。【選択図】        図１
2004348542.tif 000002
【特許請求の範囲】
【請求項１】
携帯記憶媒体とサーバーがレスポンス認証コードを利用してセキュアな通信を行う環境の中で、認証番号や暗号鍵等携帯記憶媒体から読み出すことのできない機密性の高いデータを書き込んだ際、後から機密性の高いデータが正しく書き込めたか否かを確認する方法において、
携帯記憶媒体はデータを書き込んだ際に生成したレスポンス認証コードをチェックバリューとして記憶し、サーバーは、取得コマンドを送信して前記チェックバリューを取得して検証することを特徴とする携帯記憶媒体へのデータ書き込み確認方法。
【請求項２】
請求項１記載の確認方法において、携帯記憶媒体とサーバーがレスポンス認証コードを利用してセキュアな通信を開始した直後に携帯記憶媒体とサーバー間でチェックバリューの初期化を行うことを特徴とするデータ書き込み確認方法。
【請求項３】
複数のアプリケーションを格納し、各アプリケーション毎にチェックバリューを記憶することを特徴とする請求項１記載の確認方法において利用される携帯記憶媒体。
【請求項４】
複数のアプリケーションを格納し、各アプリケーション毎にチェックバリューを記憶する携帯記憶媒体とレスポンス認証コードを利用してセキュアな通信を行うことを特徴とする請求項１記載の確認方法において利用されるサーバー。
【請求項５】
請求項３記載の携帯記憶媒体と、請求項４記載のサーバーとからなるシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は通信機能を有する情報処理端末内の携帯記憶媒体と通信網を介した遠隔地サーバ間におけるデータ書き込みの確認方法に関する。
【０００２】
【従来の技術】
ＩＣカードがセットされる携帯電話機等の携帯端末を介してネットワークで接続されたサーバーとの間にセキュアな通信を確立し、電子決済等を行えるようにすることなどがいろいろ提案されている（特許文献１）。
このような遠隔地のサーバーと携帯端末間で行われる処理は、携帯端末の断電や通信網の障害が発生することで処理が中断した場合は、もう一度同じ処理を最初から開始したり、処理自体を中止することになる。
【０００３】
【特許文献１】特開２００２−３２４２０２号公報
【０００４】
【発明が解決しようとする課題】
このように通信網を介した各エンティティ（実体）間の処理が中断してしまうことは十分に発生し得る。しかし、暗号化鍵のような機密性の高いデータを書き込む処理が中断したときに、カード内に正しくデータが書き込まれたかどうかを確認できないと、サーバー側の処理手続きの流れが不定となってしまう。例えば、データの書き込みに失敗し、処理要求の命令（コマンド）が消失した場合、ＩＣカードに到達する前にデータ書き込みコマンドが消失したのか、データ書き込みコマンドのレスポンスがサーバーに到達する前に消失したのか不明である。このような場合、データの書き込みを確認するために、書き込んだであろうデータを読み出す方法も考えられるが機密性の高いデータを安易に耐タンパデバイスの外に出力することはセキュリティ面において適当ではない。また、同じように暗号鍵のような機密性の高いデータを連続で複数回書き込む試みを許すことは外部からの攻撃者に利用されかねない。このような点まで上記特許文献１には開示されていない。
【０００５】
【課題を解決するための手段】
本発明は上記課題を解決しようとするもので、遠隔地のサーバーから携帯端末内のＩＣカードへデータを書き込む場合、書き込まれたデータを読み出すことなく、書き込みが正常に行われたか否かを確認可能にすることを目的とする。
そのために本発明は、携帯記憶媒体とサーバーがレスポンス認証コードを利用してセキュアな通信を行う環境の中で、認証番号や暗号鍵等携帯記憶媒体から読み出すことのできない機密性の高いデータを書き込んだ際、後から機密性の高いデータが正しく書き込めたか否かを確認する方法において、
携帯記憶媒体はデータを書き込んだ際に生成したレスポンス認証コードをチェックバリューとして記憶し、サーバーは、取得コマンドを送信して前記チェックバリューを取得して検証することを特徴とする。
また、本発明は、携帯記憶媒体とサーバーがレスポンス認証コードを利用してセキュアな通信を開始した直後に携帯記憶媒体とサーバー間でチェックバリューの初期化を行うことを特徴とする。
また本発明は、複数のアプリケーションを格納し、各アプリケーション毎にチェックバリューを記憶し、上記確認方法において利用される携帯記憶媒体を特徴とする。
また、本発明は、複数のアプリケーションを格納し、各アプリケーション毎にチェックバリューを記憶する携帯記憶媒体とレスポンス認証コードを利用してセキュアな通信を行う上記確認方法において利用されるサーバーを特徴とする。
また、本発明は、上記携帯記憶媒体と、上記サーバーとからなるシステムを特徴とする。
【０００６】
【発明の実施の形態】
以下、本発明の実施の形態について説明する。なお、以下の実施の形態においては、ＩＣカードを例にして説明するが、本発明はこれに限定されるものではなく、演算処理・記憶機能を有する携帯可能な情報処理記憶媒体（以下では、携帯記憶媒体と言う）に適用可能であり、また、以下の実施の形態における携帯端末は、携帯電話機に限らず、パソコン等の通信機能を有するあらゆる情報処理端末に適用可能である。
図１は本実施形態のシステムを説明する概念図である。
ＩＣカード１は携帯電話機等の携帯端末２にセットされ、無線或いは有線でインターネット網等のネットワークを介して遠隔地のサーバー３と接続される。携帯端末を介したＩＣカード１とサーバー３との間の通信は、処理要求の命令（コマンド）と、そのコマンドに対する応答（レスポンス）の対からなり、セキュアな通信チャンネルを開設して行われる。そのために、ＩＣカードとサーバー側はそれぞれ同じマスター鍵を有していて、通信を開始するに際しては、相互に発生させた乱数とマスター鍵を用いた認証演算を行って相互認証するとともに、マスター鍵から生成したＣ−ＭＡＣ生成用、コマンドデータ暗号化用、Ｒ−ＭＡＣ生成用の同じセッション鍵セットを互いにもち、これらのセッション鍵セットは通信セッション毎に生成される。
【０００７】
ＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｅ  Ｃｏｄｅ  ）は、データが改ざんされていないか否かの確認のために送信データを暗号化したメッセージ認証コードであり、送信データとともに送られる。Ｃ−ＭＡＣはサーバー側でコマンドをセッション鍵で暗号化して生成したコマンドメッセージ認証コード、Ｒ−ＭＡＣはＩＣカード側で復号化したコマンドとレスポンスデータとをセッション鍵で暗号化して生成したレスポンスメッセージ認証コードである。
【０００８】
サーバー側からＩＣカードに対して送信するコマンドは、図２に示すように、コマンドの内容や送信するデータの長さ等を示すヘッダとコマンドデータとからなり、このコマンドをＣ−ＭＡＣ生成用セッション鍵で暗号化してＣ−ＭＡＣを生成し、コマンドデータ暗号化用セッション鍵を用いてコマンドデータを暗号化し、（ヘッダ＋暗号化したコマンドデータ＋Ｃ−ＭＡＣ）をコマンドメッセージとしてＩＣカードへ送信する。
ＩＣカード側では、受信したコマンドを復号してその処理を実行し、復号化したコマンドとレスポンスデータをＲ−ＭＡＣ生成用セッション鍵で暗号化してＲ−ＭＡＣを生成して不揮発性メモリに記憶するとともに、（レスポンスデータ＋Ｒ−ＭＡＣ）をレスポンスメッセージとしてサーバーへ返す。
【０００９】
図３は本実施形態で用いるＭＡＣ生成アルゴリズムを説明する図である。
この例ではＤＥＳ暗号のＣＢＣ（Ｃｙｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ  ）モードで生成する。サーバー側では、コマンド（ヘッダ＋コマンドデータ）を８バイト単位に分割し、Ｃ−ＭＡＣ生成用のセッション鍵でＤＥＳ暗号化し、前の８バイトの暗号化データとの排他的論理和を順次生成してＣ−ＭＡＣを生成する。なお、最初の８バイトの排他的論理和の相手がＩＣＶ（Ｉｎｉｔｉａｌ  Ｃｈａｉｎｉｎｇ  Ｖｅｃｔｏｒ  ）であり、ＭＡＣ生成のための初期値である。
ＩＣカード側では復号化したコマンドとレスポンスデータをＲ−ＭＡＣ生成用のセッション鍵を用い、Ｃ−ＭＡＣ生成と同様にＤＥＳ暗号のＣＢＣモードでＲ−ＭＡＣを生成する。なお、ここでの例ではＭＡＣ生成にＤＥＳ暗号を用いているが、他の暗号方法を用いてもよいことは言うまでもない。
【００１０】
本実施形態では、ＩＣカードへデータを書き込む場合、書き込まれたデータを読み出すことなく、書き込まれたことを確認するために、ＩＣカード側では受信した書き込みコマンドを実行するごとに生成するＲ−ＭＡＣ値をチェックバリューとして記憶し、サーバーはこのチェックバリューを取得するコマンドを使用する。そして、ＩＣカードではこのコマンドを受信すると、記憶しているチェックバリューをサーバー側へ返す。このＲ−ＭＡＣはコマンドまたはレスポンスのシーケンスを保証することに利用できる。
【００１１】
この点についてさらに説明すると、例えば、以下のシーケンス、
▲１▼機密性の高いデータを書き込むコマンドをＩＣカードが受け取る。
▲２▼ＩＣカードでは書き込み処理を実行する。
▲３▼ＩＣカードでは、Ｒ−ＭＡＣを生成してカード内に格納し、レスポンスデータ＋Ｒ−ＭＡＣをサーバーに対して送信する。
▲４▼何らかの理由で通信路においてレスポンスメッセージが消失する。
▲５▼サーバーはレスポンスが戻ってこないので異常と判断し、セキュアチャンネルを閉塞する。この時点でＩＣカードはまだセキュアチャンネルを開設状態にある。
▲６▼サーバーは書き込み結果を知るために再度セキュアチャンネルを開設するコマンドをＩＣカードに対して発行する。
▲７▼ＩＣカードはセキュアチャンネル開設コマンド（このコマンドは開設中のコマンドと異なり、コマンドデータの暗号化やＣ−ＭＡＣなどが付随していない）を受け取ると、条件に合わないコマンドと判断し、一旦現在のセキュアチャンネルセッションを閉塞し（サーバー側ではこのセッションを閉塞済み）、改めてセキュアチャンネルを開設するための処理を行う。
において、サーバーとＩＣカード間で開設されたセッションが無効になると、セッション鍵も無効になる。
【００１２】
なお、レスポンスメッセージの消失は、
・通信中にＩＣカード自身の電源が落ちた場合
・通信経路に障害が発生した場合
などに起こり、セキュアチャンネルの閉塞は、
・サーバー側から命令的にセッションを終了するというコマンドを送った場合
・不正なコマンドや、データの暗号化の約束が履行されていない場合
・条件に合わないコマンドを受信した場合
などに起こる。
【００１３】
このようにレスポンスメッセージが消失した場合、その時のセキュアチャンネルセッションは閉塞され、サーバーはコマンドの実行結果を確かめるために、次のセキュアチャンネルセッションでチェックバリューとしてのＲ−ＭＡＣ値を取得するコマンドをＩＣカードに対して発行する。サーバー側では既に取得したＲ−ＭＡＣ値やＲ−ＭＡＣ生成用セッション鍵を保持しているので、取得したＲ−ＭＡＣを検証し、前セキュアチャンネルセッションのＲ−ＭＡＣであるか否かにより書き込みが正常であるか否かを確認できる。すなわち、取得したＲ−ＭＡＣが初期値もしくは前回レスポンスが消失した結果に対する確認済みのＲ−ＭＡＣ値である（前セキュアチャンネルセッションのＲ−ＭＡＣ値ではない）と、書き込みは正常に行われなかったことになり、取得したＲ−ＭＡＣが初期値もしくは前回レスポンスが消失した結果に対する確認済みのＲ−ＭＡＣ値でない（前セキュアチャンネルセッションのＲ−ＭＡＣ値である）と、書き込みは正常に行われたが、通信過程でレスポンスが消失したものであることが分かる。
【００１４】
このようなレスポンスメッセージが消失した場合の書き込み確認の処理シーケンスを図４により説明する。
サーバーから機密性の高いデータをＩＣカードに書き込む場合、相互認証を行い、セョション鍵セットを生成してセキュアチャンネルを開設し、チェックバリューの初期化を行う。チェックバリューの初期化は、機密性を要しない８バイトのデータをチェックバリューとしてＩＣカードへ送り、ＩＣカードではチェックバリューを不揮発性メモリに格納した後、レスポンスを返し、これをサーバーで受け取って保存することで行われる。この処理は正常にレスポンスが返るまで実施される。
【００１５】
チェックバリューが初期化され、サーバーから秘密データの書き込みコマンドを送ったとき、ＩＣカード側では、正常に処理が終了すると、記憶しているチェックバリューを生成したＲ−ＭＡＣに更新し、エラー処理時にはチェックバリューを別の値に更新するか、或いは初期化時のチェックバリューを保持する。このとき何らかの理由によりレンスポンスメッセージが消失すると、前述したように、新たにセキュアチャンネルを開設する。そして、サーバー側からチェックバリューを取得するコマンドを送ってみて、レスポンスを受信できない場合は、このセキュアチャンネルを閉塞し、再びセキュアチャンネルを開設してチェックバリューを取得するコマンドを送る。こうしてレスポンスが取得できたとき、サーバーではセッション鍵、送信したコマンド、チェックバリューを保持しているので、Ｒ−ＭＡＣを取得し、初期化されたチェックバリューから作成されたＲ−ＭＡＣ値であれば、初めて書き込みが正常に行われたことが分かり、書き込みが正常に行われなかったときは、チェックバリとして初期化されたままの８バイトのデータを取得することになる。
【００１６】
さらに、以降のセキュアチャンネルセッションにおいて、機密データの書き込みコマンドを送り、何らかの理由でレスポンスが得られなかったときはそのセキュアチャンネルは閉塞し、次のセキュアチャンネル開設してチェックバリューを取得するコマンドを再度送信する。そして、このセキュアチャンネルセッションでチェックバリューを取得したとき、前セキュアチャンネルセッションのＲ−ＭＡＣ値か、前々回のセキュアチャンネルセッションのＲ−ＭＡＣ値かにより書き込みが正常に行われたか否かを確認することができる。
【００１７】
なお、上記説明においては、ＩＣカード側でサーバーとセェキュア通信するアプリケーションは１つで、１つのＲ−ＭＡＣを生成して保持する例について説明したが、ＩＣカードに複数のアプリケーションが格納され、それぞれのアプリケーションがサーバーとセキュアな通信をする場合には、アプリケーション毎にＲ−ＭＡＣを生成して保持するようにすれば、アプリケーション毎にデータの書き込みの確認を行うことができる。
〔実施例〕
前提として、携帯端末内のＩＣカードと遠隔地のサーバー間はＧｌｏｂａｌ  Ｐｌａｔｆｏｒｍ  が策定したＧｌｏｂａｌ  Ｐｌａｔｆｏｒｍ  Ｇａｒｄ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ２．１．１内に規定されている  Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ  Ｐｒｏｔｏｃｏｌ  ０２を使用すると共に、要求されるＳｅｃｕｒｉｔｙ  Ｌｅｖｅｌを、・コマンドデータの暗号化
・送信メッセージのメッセージ認証コードＣ−ＭＡＣ有り（ＤＥＳ暗号のＣＢＣモードにより生成）
・レスポンスメッセージのメッセージ認証コードＲ−ＭＡＣ有り（ＤＥＳ暗号のＣＢＣモードにより生成）
とする。ＣＢＣモードのＩＣＶには前セッションのメッセージ認証コードを使用する。
【００１８】
機密性の高いデータを書き込むコマンドがサーバーからアプリケーションへ届き、処理が正常に行われてＲ−ＭＡＣが生成されるとカード内に保持する。もしこのコマンドのレスポンスがサーバーへ送信される途中で消失した場合、サーバーはＲ−ＭＡＣ値を取得するコマンドを送信して取得する。サーバー側はコマンドが正常終了したときのレスポンスは予想することが可能なため、取得したＲ−ＭＡＣを検証することができ、書き込みが正常に終了したか、失敗したかを改めてデータを読み出したり上書きすることなく判断することできる。
【００１９】
【発明の効果】
以上のように本発明によれば、遠隔地のサーバーから携帯記憶媒体へ機密性の高い読み出すことができないデータを書き込む場合、書き込まれたデータを読み出すことなく、チェックバリューを取得することにより書き込みが正常に終了したか、失敗したかを確認することが可能となる。
また、データ書き込みコマンドが携帯記憶媒体に到達する前に消失したのか、データ書き込みコマンドのレスポンスがサーバーに到達する前に消失したのかを明らかにすることが可能となる。
【図面の簡単な説明】
【図１】本実施形態のシステムを説明する概念図である。
【図２】コマンドを説明する図である。
【図３】ＭＡＣ生成アルゴリズムを説明する図である。
【図４】書き込み確認の処理シーケンスを説明する図である。
【符号の説明】
１…ＩＣカード、２…携帯端末、３…サーバー。
【図１】
2004348542.tif 000003
【図２】
2004348542.tif 000004
【図３】
2004348542.tif 000005
【図４】
2004348542.tif 000006