(57)【要約】第１装置と第２装置との間でのプログラムデータの通信は、プログラムデータを備えた第１プログラムファイルを少なくとも１つの論理的データユニットへとディスアッセンブルし、その少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化し、そしてその少なくとも１つの論理的データユニットの少なくとも１つのプロトコルデータユニットのペイロード部分に対して第１フィンガープリントを計算することを含む。少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、ペイロード部分を備えている。
2006517043.tif 000002
【特許請求の範囲】
【請求項１】
第１装置と第２装置との間でプログラムデータを通信するための方法において、
プログラムデータを備えた第１プログラムファイルを少なくとも１つの論理的データユニットへとディスアッセンブルし、
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化し、前記少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、そしてペイロード部分を含み、そして
前記少なくとも１つの論理的データユニットの前記少なくとも１つのプロトコルデータユニットのペイロード部分に対して第１フィンガープリントを計算する、
という段階を備えた方法。
【請求項２】
前記第２装置は、スマートカードと通信するように構成されたロードターミナルを含む、請求項１に記載の方法。
【請求項３】
第２プログラムファイルを第２装置へ通信する段階を更に備え、前記第２プログラムファイルは、前記プログラムデータと、前記第１フィンガープリント及び前記第１フィンガープリントに少なくとも一部分基づく認証コードより成るグループの１つ以上のメンバーとを備えた、請求項１に記載の方法。
【請求項４】
前記プログラムデータはクラスファイルを含む、請求項１に記載の方法。
【請求項５】
前記プログラムファイルはＪＡＲファイルを含む、請求項１に記載の方法。
【請求項６】
前記プログラムファイルはＣＡＰファイルを含む、請求項１に記載の方法。
【請求項７】
前記方法は、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つの検証プロトコルデータユニットを生成する段階を備え、該検証プロトコルデータユニットは、前記論理的データユニットに対する検証データを含む、請求項１に記載の方法。
【請求項８】
前記認証コードは、更に、前記第１装置から受け取られた前記第２プログラムファイルを認証する際に前記第２装置により使用される少なくとも１つのロード装置認証コードを含む、請求項３に記載の方法。
【請求項９】
前記認証コードは、更に、前記第２装置から受け取られたデータを認証する際に第３装置により使用される少なくとも１つのターゲット装置認証コードを含み、前記受け取られたデータは、前記第１プログラムファイルに少なくとも一部分基づく、請求項３に記載の方法。
【請求項１０】
前記プロトコルは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）プロトコルを含み、そして
前記プロトコルデータユニットは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）を含む、請求項１に記載の方法。
【請求項１１】
前記プロトコルは、更に、トレーラＡＰＤＵを使用して、プログラムユニットに関連した最後のＡＰＤＵを指示することを含む、請求項１０に記載の方法。
【請求項１２】
前記プロトコルは、更に、ヘッダＡＰＤＵを使用して、該ヘッダＡＰＤＵに続く１つ以上の論理的プログラムＡＰＤＵの予想されるシーケンスを指示することを含む、請求項１０に記載の方法。
【請求項１３】
前記ＡＰＤＵは、前記ＡＰＤＵのコンテクストを識別する情報を含む、請求項１０に記載の方法。
【請求項１４】
前記第１フィンガープリントはチェック和を含む、請求項１に記載の方法。
【請求項１５】
前記第１フィンガープリントは繰り返し冗長コード（ＣＲＣ）を含む、請求項１に記載の方法。
【請求項１６】
前記第１フィンガープリントはメッセージダイジェストを含む、請求項１に記載の方法。
【請求項１７】
前記第１フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含む、請求項１に記載の方法。
【請求項１８】
第１装置と第２装置との間でプログラムデータを通信するための方法において、
プログラムデータと、第１フィンガープリント及び該第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを含むプログラムファイルを受け取り、
前記プログラムデータを少なくとも１つの論理的データユニットへとディスアッセンブルし、そして
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化し、前記少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、そしてペイロード部分を含むようにする、
という段階を備えた方法。
【請求項１９】
前記第１フィンガープリント及び前記第１認証コードより成るグループの１つ以上のメンバーを前記第２装置へ通信する段階を更に備えた、請求項１８に記載の方法。
【請求項２０】
前記第１装置はロードターミナルを含み、そして前記第２装置はスマートカードを含む、請求項１８に記載の方法。
【請求項２１】
前記スマートカードは、Ｊａｖａ  Ｃａｒｄ（登録商標）技術でイネーブルされるスマートカードを含む、請求項２０に記載の方法。
【請求項２２】
前記スマートカードは、ＣＤＭＡ（コード分割多重アクセス）技術でイネーブルされるスマートカードを含む、請求項２０に記載の方法。
【請求項２３】
前記スマートカードは、ＳＩＭ（加入者認識モジュール）カードを含む、請求項２０に記載の方法。
【請求項２４】
前記スマートカードは、ＷＩＭ（ワイヤレスインターフェイスモジュール）を含む、請求項２０に記載の方法。
【請求項２５】
前記スマートカードは、ＵＳＩＭ（ユニバーサル加入者認識モジュール）を含む、請求項２０に記載の方法。
【請求項２６】
前記スマートカードは、ＵＩＭ（ユーザ認識モジュール）を含む、請求項２０に記載の方法。
【請求項２７】
前記スマートカードは、Ｒ−ＵＩＭ（除去可能なユーザ認識モジュール）を含む、請求項２０に記載の方法。
【請求項２８】
前記プログラムデータはクラスファイルを含む、請求項１８に記載の方法。
【請求項２９】
前記プログラムファイルはＪＡＲファイルを含む、請求項１８に記載の方法。
【請求項３０】
前記プログラムファイルはＣＡＰファイルを含む、請求項１８に記載の方法。
【請求項３１】
前記方法は、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つの検証プロトコルデータユニットを生成する段階を備え、該検証プロトコルデータユニットは、前記論理的データユニットに対する検証データを含み、そして前記プログラムファイルから抽出される、請求項１８に記載の方法。
【請求項３２】
前記方法は、更に、
前記少なくとも１つの論理的データユニットの少なくとも１つに対して検証データを計算し、そして
前記論理的データユニットに対する前記検証データを含む検証プロトコルデータユニットを生成する、
という段階を含む請求項１８に記載の方法。
【請求項３３】
前記方法は、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つのリンクプロトコルデータユニットを生成する段階を備え、該リンクプロトコルデータユニットは、前記論理的データユニットに対するリンクデータを含む、請求項１８に記載の方法。
【請求項３４】
前記方法は、更に、
前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つのリンクプロトコルデータユニットを生成し、該リンクプロトコルデータは、前記論理的データユニットに対するリンクデータを含み、そして
前記論理的データユニットに対する前記検証データを含み、そして前記プログラムファイルから抽出される検証プロトコルデータユニットを生成する、
という段階を備えた請求項１８に記載の方法。
【請求項３５】
前記方法は、更に、
前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つのリンクプロトコルデータユニットを生成し、該リンクプロトコルデータは、前記論理的データユニットに対するリンクデータを含み、
前記少なくとも１つの論理的データユニットの少なくとも１つに対する検証データを計算し、そして
前記論理的データユニットに対する前記検証データを含む検証プロトコルデータユニットを生成する、
という段階を備えた請求項１８に記載の方法。
【請求項３６】
前記第１フィンガープリントが、前記第２装置により受信されたプロトコルデータユニットのペイロード部分に対して計算された第２フィンガープリントに一致するかどうかの指示を、前記第２装置から受け取る段階を更に備えた、請求項１８に記載の方法。
【請求項３７】
前記１つ以上のメンバーが、前記第２装置により受信されたプロトコルデータユニットのペイロード部分に対して計算された第２フィンガープリントに少なくとも一部分基づく第２認証コードに一致するかどうかの指示を、前記第２装置から受け取る段階を更に備えた、請求項１８に記載の方法。
【請求項３８】
前記プロトコルは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）プロトコルを含み、そして
前記プロトコルデータユニットは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）を含む、請求項１８に記載の方法。
【請求項３９】
前記プロトコルは、更に、トレーラＡＰＤＵを使用して、プログラムユニットに関連した最後のＡＰＤＵを指示することを含む、請求項３８に記載の方法。
【請求項４０】
前記プロトコルは、更に、ヘッダＡＰＤＵを使用して、該ヘッダＡＰＤＵに続く１つ以上の論理的プログラムＡＰＤＵの予想されるシーケンスを指示することを含む、請求項３８に記載の方法。
【請求項４１】
前記ＡＰＤＵは、前記ＡＰＤＵのコンテクストを識別する情報を含む、請求項３８に記載の方法。
【請求項４２】
前記第１フィンガープリントはチェック和を含む、請求項１８に記載の方法。
【請求項４３】
前記第１フィンガープリントは繰り返し冗長コード（ＣＲＣ）を含む、請求項１８に記載の方法。
【請求項４４】
前記第１フィンガープリントはメッセージダイジェストを含む、請求項１８に記載の方法。
【請求項４５】
前記第１フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含む、請求項１８に記載の方法。
【請求項４６】
第１装置と、メモリを備えた第２装置との間でプログラムデータを通信するための方法において、
第２装置へ第２プログラムファイルを通信し、該第２プログラムファイルは、前記プログラムデータと、第１フィンガープリント及び該第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを備え、
前記１つ以上のメンバーと、プログラムファイルの少なくとも１つの論理的データユニットより成る複数のプロトコルデータユニットとを受け取り、前記少なくとも１つの論理的データユニットの各々は、少なくとも１つのプロトコルデータユニットへ区分化され、前記少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、そしてペイロード部分を含み、
前記少なくとも１つの論理的データユニットのプロトコルデータユニットのペイロード部分に対して第２フィンガープリントを計算し、そして
前記１つ以上のメンバーが、前記第２のフィンガープリント、又は前記第２のフィンガープリントに少なくとも一部分基づく第２の認証コードに一致するかどうかに少なくとも一部分基づいて、前記プログラムを前記メモリへコミットする、
という段階を備えた方法。
【請求項４７】
前記方法は、更に、リンクデータを含むプロトコルデータユニットを前記計算から除外する段階を備えた、請求項４６に記載の方法。
【請求項４８】
前記方法は、更に、認証フィンガープリント計算から検証データを除外しなければならないことをフラグが指示する場合に、検証データを含むプロトコルデータユニットを前記計算から除外する段階を備えた、請求項４６に記載の方法。
【請求項４９】
前記プロトコルは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）プロトコルを含み、そして
前記プロトコルデータユニットは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）を含む、請求項４６に記載の方法。
【請求項５０】
前記プロトコルは、更に、トレーラＡＰＤＵを使用して、プログラムユニットに関連した最後のＡＰＤＵを指示することを含む、請求項４９に記載の方法。
【請求項５１】
前記プロトコルは、更に、ヘッダＡＰＤＵを使用して、該ヘッダＡＰＤＵに続く１つ以上の論理的プログラムＡＰＤＵの予想されるシーケンスを指示することを含む、請求項４９に記載の方法。
【請求項５２】
前記ＡＰＤＵは、前記ＡＰＤＵのコンテクストを識別する情報を含む、請求項４９に記載の方法。
【請求項５３】
前記第１フィンガープリントはチェック和を含み、そして前記第２フィンガープリントはチェック和を含む、請求項４６に記載の方法。
【請求項５４】
前記第１フィンガープリントは繰り返し冗長コード（ＣＲＣ）を含み、そして前記第２フィンガープリントはＣＲＣを含む、請求項４６に記載の方法。
【請求項５５】
前記第１フィンガープリントはメッセージダイジェストを含み、そして前記第２フィンガープリントはメッセージダイジェストを含む、請求項４６に記載の方法。
【請求項５６】
前記第１フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含み、そして前記第２フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含む、請求項４６に記載の方法。
【請求項５７】
第１装置と第２装置との間でプログラムデータを通信するための方法において、
プログラムデータを備えた第１プログラムファイルを少なくとも１つの論理的データユニットへとディスアッセンブルし、
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化し、前記少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、そしてペイロード部分を含み、
前記少なくとも１つの論理的データユニットの前記プロトコルデータユニットのペイロード部分に対して第１フィンガープリントを計算し、そして
前記少なくとも１つの論理的データユニットの前記プロトコルデータユニットと、前記第１フィンガープリント及び前記第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを、前記プロトコルに基づいて前記第２装置へ通信する、
という段階を備えた方法。
【請求項５８】
前記プログラムデータはクラスファイルを含む、請求項５７に記載の方法。
【請求項５９】
前記プログラムファイルはＪＡＲファイルを含む、請求項５７に記載の方法。
【請求項６０】
前記プログラムファイルはＣＡＰファイルを含む、請求項５７に記載の方法。
【請求項６１】
前記方法は、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つの検証プロトコルデータユニットを生成する段階を備え、該検証プロトコルデータユニットは、前記論理的データユニットに対する検証データを含む、請求項５７に記載の方法。
【請求項６２】
前記１つ以上のメンバーが、前記第２装置により受け取られたプロトコルデータユニットのペイロード部分に対して計算された第２フィンガープリント、又は該第２フィンガープリントに少なくとも一部分基づく第２認証コードに一致するかどうかの指示を前記第２装置から受け取る段階を更に備えた、請求項５７に記載の方法。
【請求項６３】
前記プロトコルは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）プロトコルを含み、そして
前記プロトコルデータユニットは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）を含む、請求項５７に記載の方法。
【請求項６４】
前記プロトコルは、更に、トレーラＡＰＤＵを使用して、プログラムユニットに関連した最後のＡＰＤＵを指示することを含む、請求項６３に記載の方法。
【請求項６５】
前記プロトコルは、更に、ヘッダＡＰＤＵを使用して、該ヘッダＡＰＤＵに続く１つ以上の論理的プログラムＡＰＤＵの予想されるシーケンスを指示することを含む、請求項６３に記載の方法。
【請求項６６】
前記ＡＰＤＵは、前記ＡＰＤＵのコンテクストを識別する情報を含む、請求項６３に記載の方法。
【請求項６７】
前記第１フィンガープリントはチェック和を含む、請求項５７に記載の方法。
【請求項６８】
前記第１フィンガープリントは繰り返し冗長コード（ＣＲＣ）を含む、請求項５７に記載の方法。
【請求項６９】
前記第１フィンガープリントはメッセージダイジェストを含む、請求項５７に記載の方法。
【請求項７０】
前記第１フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含む、請求項５７に記載の方法。
【請求項７１】
マシンにより読み取り可能なプログラム記憶装置であって、ホストコンピュータとスマートカードとの間でプログラムデータを通信するための方法を実行するように前記マシンにより実行可能な命令のプログラムを使用するプログラム記憶装置において、前記方法は、
プログラムデータを備えた第１プログラムファイルを少なくとも１つの論理的データユニットへとディスアッセンブルし、
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化し、前記少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、そしてペイロード部分を含み、そして
前記少なくとも１つの論理的データユニットの前記少なくとも１つのプロトコルデータユニットのペイロード部分に対して第１フィンガープリントを計算する、
という段階を備えたものであるプログラム記憶装置。
【請求項７２】
前記第２装置は、スマートカードと通信するように構成されたロードターミナルを含む、請求項７１に記載のプログラム記憶装置。
【請求項７３】
前記方法は、更に、第２プログラムファイルを第２装置へ通信する段階を備え、前記第２プログラムファイルは、前記プログラムデータと、前記第１フィンガープリント及び前記第１フィンガープリントに少なくとも一部分基づく認証コードより成るグループの１つ以上のメンバーとを備えた、請求項７１に記載のプログラム記憶装置。
【請求項７４】
前記プログラムデータはクラスファイルを含む、請求項７１に記載のプログラム記憶装置。
【請求項７５】
前記プログラムファイルはＪＡＲファイルを含む、請求項７１に記載のプログラム記憶装置。
【請求項７６】
前記プログラムファイルはＣＡＰファイルを含む、請求項７１に記載のプログラム記憶装置。
【請求項７７】
前記方法は、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つの検証プロトコルデータユニットを生成する段階を備え、該検証プロトコルデータユニットは、前記論理的データユニットに対する検証データを含む、請求項７１に記載のプログラム記憶装置。
【請求項７８】
前記認証コードは、更に、前記第１装置から受け取られた前記第２プログラムファイルを認証する際に前記第２装置により使用される少なくとも１つのロード装置認証コードを含む、請求項７３に記載のプログラム記憶装置。
【請求項７９】
前記認証コードは、更に、前記第２装置から受け取られたデータを認証する際に第３装置により使用される少なくとも１つのターゲット装置認証コードを含み、前記受け取られたデータは、前記第１プログラムファイルに少なくとも一部分基づく、請求項７３に記載のプログラム記憶装置。
【請求項８０】
前記プロトコルは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）プロトコルを含み、そして
前記プロトコルデータユニットは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）を含む、請求項７１に記載のプログラム記憶装置。
【請求項８１】
前記プロトコルは、更に、トレーラＡＰＤＵを使用して、プログラムユニットに関連した最後のＡＰＤＵを指示することを含む、請求項８０に記載のプログラム記憶装置。
【請求項８２】
前記プロトコルは、更に、ヘッダＡＰＤＵを使用して、該ヘッダＡＰＤＵに続く１つ以上の論理的プログラムＡＰＤＵの予想されるシーケンスを指示することを含む、請求項８０に記載のプログラム記憶装置。
【請求項８３】
前記ＡＰＤＵは、前記ＡＰＤＵのコンテクストを識別する情報を含む、請求項８０に記載のプログラム記憶装置。
【請求項８４】
前記第１フィンガープリントはチェック和を含む、請求項７１に記載のプログラム記憶装置。
【請求項８５】
前記第１フィンガープリントは繰り返し冗長コード（ＣＲＣ）を含む、請求項７１に記載のプログラム記憶装置。
【請求項８６】
前記第１フィンガープリントはメッセージダイジェストを含む、請求項７１に記載のプログラム記憶装置。
【請求項８７】
前記第１フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含む、請求項７１に記載のプログラム記憶装置。
【請求項８８】
マシンにより読み取り可能なプログラム記憶装置であって、第１装置と第２装置との間でプログラムデータを通信するための方法を実行するように前記マシンにより実行可能な命令のプログラムを使用するプログラム記憶装置において、前記方法は、
プログラムデータと、第１フィンガープリント及び該第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを含むプログラムファイルを受け取り、
前記プログラムデータを少なくとも１つの論理的データユニットへとディスアッセンブルし、そして
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化し、前記少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、そしてペイロード部分を含むようにする、
という段階を備えたプログラム記憶装置。
【請求項８９】
前記方法は、前記第１フィンガープリント及び前記第１認証コードより成るグループの１つ以上のメンバーを前記第２装置へ通信する段階を更に備えた、請求項８８に記載のプログラム記憶装置。
【請求項９０】
前記第１装置はロードターミナルを含み、そして前記第２装置はスマートカードを含む、請求項８８に記載のプログラム記憶装置。
【請求項９１】
前記スマートカードは、Ｊａｖａ  Ｃａｒｄ（登録商標）技術でイネーブルされるスマートカードを含む、請求項９０に記載のプログラム記憶装置。
【請求項９２】
前記スマートカードは、ＣＤＭＡ（コード分割多重アクセス）技術でイネーブルされるスマートカードを含む、請求項９０に記載のプログラム記憶装置。
【請求項９３】
前記スマートカードは、ＳＩＭ（加入者認識モジュール）カードを含む、請求項９０に記載のプログラム記憶装置。
【請求項９４】
前記スマートカードは、ＷＩＭ（ワイヤレスインターフェイスモジュール）を含む、請求項９０に記載のプログラム記憶装置。
【請求項９５】
前記スマートカードは、ＵＳＩＭ（ユニバーサル加入者認識モジュール）を含む、請求項９０に記載のプログラム記憶装置。
【請求項９６】
前記スマートカードは、ＵＩＭ（ユーザ認識モジュール）を含む、請求項９０に記載のプログラム記憶装置。
【請求項９７】
前記スマートカードは、Ｒ−ＵＩＭ（除去可能なユーザ認識モジュール）を含む、請求項９０に記載のプログラム記憶装置。
【請求項９８】
前記プログラムデータはクラスファイルを含む、請求項８８に記載のプログラム記憶装置。
【請求項９９】
前記プログラムファイルはＪＡＲファイルを含む、請求項８８に記載のプログラム記憶装置。
【請求項１００】
前記プログラムファイルはＣＡＰファイルを含む、請求項８８に記載のプログラム記憶装置。
【請求項１０１】
前記方法は、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つの検証プロトコルデータユニットを生成する段階を備え、該検証プロトコルデータユニットは、前記論理的データユニットに対する検証データを含み、そして前記プログラムファイルから抽出される、請求項８８に記載のプログラム記憶装置。
【請求項１０２】
前記方法は、更に、
前記少なくとも１つの論理的データユニットの少なくとも１つに対して検証データを計算し、そして
前記論理的データユニットに対する前記検証データを含む検証プロトコルデータユニットを生成する、
という段階を含む請求項８８に記載のプログラム記憶装置。
【請求項１０３】
前記方法は、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つのリンクプロトコルデータユニットを生成する段階を備え、該リンクプロトコルデータユニットは、前記論理的データユニットに対するリンクデータを含む、請求項８８に記載のプログラム記憶装置。
【請求項１０４】
前記方法は、更に、
前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つのリンクプロトコルデータユニットを生成し、該リンクプロトコルデータは、前記論理的データユニットに対するリンクデータを含み、そして
前記論理的データユニットに対する前記検証データを含み、そして前記プログラムファイルから抽出される検証プロトコルデータユニットを生成する、
という段階を備えた請求項８８に記載のプログラム記憶装置。
【請求項１０５】
前記方法は、更に、
前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つのリンクプロトコルデータユニットを生成し、該リンクプロトコルデータは、前記論理的データユニットに対するリンクデータを含み、
前記少なくとも１つの論理的データユニットの少なくとも１つに対する検証データを計算し、そして
前記論理的データユニットに対する前記検証データを含む検証プロトコルデータユニットを生成する、
という段階を備えた請求項８８に記載のプログラム記憶装置。
【請求項１０６】
前記方法は、更に、前記第１フィンガープリントが、前記第２装置により受信されたプロトコルデータユニットのペイロード部分に対して計算された第２フィンガープリントに一致するかどうかの指示を、前記第２装置から受け取る段階を更に備えた、請求項８８に記載のプログラム記憶装置。
【請求項１０７】
前記方法は、更に、前記１つ以上のメンバーが、前記第２装置により受信されたプロトコルデータユニットのペイロード部分に対して計算された第２フィンガープリントに少なくとも一部分基づく第２認証コードに一致するかどうかの指示を、前記第２装置から受け取る段階を更に備えた、請求項８８に記載のプログラム記憶装置。
【請求項１０８】
前記プロトコルは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）プロトコルを含み、そして
前記プロトコルデータユニットは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）を含む、請求項８８に記載のプログラム記憶装置。
【請求項１０９】
前記プロトコルは、更に、トレーラＡＰＤＵを使用して、プログラムユニットに関連した最後のＡＰＤＵを指示することを含む、請求項１０８に記載のプログラム記憶装置。
【請求項１１０】
前記プロトコルは、更に、ヘッダＡＰＤＵを使用して、該ヘッダＡＰＤＵに続く１つ以上の論理的プログラムＡＰＤＵの予想されるシーケンスを指示することを含む、請求項１０８に記載のプログラム記憶装置。
【請求項１１１】
前記ＡＰＤＵは、前記ＡＰＤＵのコンテクストを識別する情報を含む、請求項１０８に記載のプログラム記憶装置。
【請求項１１２】
前記第１フィンガープリントはチェック和を含む、請求項８８に記載のプログラム記憶装置。
【請求項１１３】
前記第１フィンガープリントは繰り返し冗長コード（ＣＲＣ）を含む、請求項８８に記載のプログラム記憶装置。
【請求項１１４】
前記第１フィンガープリントはメッセージダイジェストを含む、請求項８８に記載のプログラム記憶装置。
【請求項１１５】
前記第１フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含む、請求項８８に記載のプログラム記憶装置。
【請求項１１６】
マシンにより読み取り可能なプログラム記憶装置であって、第１装置と、メモリを備えた第２装置との間でプログラムデータを通信するための方法を実行するように前記マシンにより実行可能な命令のプログラムを使用するプログラム記憶装置において、前記方法は、
第２装置へ第２プログラムファイルを通信し、該第２プログラムファイルは、前記プログラムデータと、第１フィンガープリント及び該第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを備え、
前記１つ以上のメンバーと、プログラムファイルの少なくとも１つの論理的データユニットより成る複数のプロトコルデータユニットとを受け取り、前記少なくとも１つの論理的データユニットの各々は、少なくとも１つのプロトコルデータユニットへ区分化され、前記少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、そしてペイロード部分を含み、
前記少なくとも１つの論理的データユニットのプロトコルデータユニットのペイロード部分に対して第２フィンガープリントを計算し、そして
前記１つ以上のメンバーが、前記第２のフィンガープリント、又は前記第２のフィンガープリントに少なくとも一部分基づく第２の認証コードに一致するかどうかに少なくとも一部分基づいて、前記プログラムを前記メモリへコミットする、
という段階を備えたものであるプログラム記憶装置。
【請求項１１７】
前記方法は、更に、リンクデータを含むプロトコルデータユニットを前記計算から除外する段階を備えた、請求項１１６に記載のプログラム記憶装置。
【請求項１１８】
前記方法は、更に、認証フィンガープリント計算から検証データを除外しなければならないことをフラグが指示する場合に、検証データを含むプロトコルデータユニットを前記計算から除外する段階を備えた、請求項１１６に記載のプログラム記憶装置。
【請求項１１９】
前記プロトコルは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）プロトコルを含み、そして
前記プロトコルデータユニットは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）を含む、請求項１１６に記載のプログラム記憶装置。
【請求項１２０】
前記プロトコルは、更に、トレーラＡＰＤＵを使用して、プログラムユニットに関連した最後のＡＰＤＵを指示することを含む、請求項１１９に記載のプログラム記憶装置。
【請求項１２１】
前記プロトコルは、更に、ヘッダＡＰＤＵを使用して、該ヘッダＡＰＤＵに続く１つ以上の論理的プログラムＡＰＤＵの予想されるシーケンスを指示することを含む、請求項１１９に記載のプログラム記憶装置。
【請求項１２２】
前記ＡＰＤＵは、前記ＡＰＤＵのコンテクストを識別する情報を含む、請求項１１９に記載のプログラム記憶装置。
【請求項１２３】
前記第１フィンガープリントはチェック和を含み、そして前記第２フィンガープリントはチェック和を含む、請求項１１６に記載のプログラム記憶装置。
【請求項１２４】
前記第１フィンガープリントは繰り返し冗長コード（ＣＲＣ）を含み、そして前記第２フィンガープリントはＣＲＣを含む、請求項１１６に記載のプログラム記憶装置。
【請求項１２５】
前記第１フィンガープリントはメッセージダイジェストを含み、そして前記第２フィンガープリントはメッセージダイジェストを含む、請求項１１６に記載のプログラム記憶装置。
【請求項１２６】
前記第１フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含み、そして前記第２フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含む、請求項１１６に記載のプログラム記憶装置。
【請求項１２７】
マシンにより読み取り可能なプログラム記憶装置であって、第１装置と第２装置との間でプログラムデータを通信するための方法を実行するように前記マシンにより実行可能な命令のプログラムを使用するプログラム記憶装置において、前記方法は、
プログラムデータを備えた第１プログラムファイルを少なくとも１つの論理的データユニットへとディスアッセンブルし、
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化し、前記少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、そしてペイロード部分を含み、
前記少なくとも１つの論理的データユニットの前記プロトコルデータユニットのペイロード部分に対して第１フィンガープリントを計算し、そして
前記少なくとも１つの論理的データユニットの前記プロトコルデータユニットと、前記第１フィンガープリント及び前記第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを、前記プロトコルに基づいて前記第２装置へ通信する、
という段階を備えたものであるプログラム記憶装置。
【請求項１２８】
前記プログラムデータはクラスファイルを含む、請求項１２７に記載のプログラム記憶装置。
【請求項１２９】
前記プログラムファイルはＪＡＲファイルを含む、請求項１２７に記載のプログラム記憶装置。
【請求項１３０】
前記プログラムファイルはＣＡＰファイルを含む、請求項１２７に記載のプログラム記憶装置。
【請求項１３１】
前記方法は、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つの検証プロトコルデータユニットを生成する段階を備え、該検証プロトコルデータユニットは、前記論理的データユニットに対する検証データを含む、請求項１２７に記載のプログラム記憶装置。
【請求項１３２】
前記１つ以上のメンバーが、前記第２装置により受け取られたプロトコルデータユニットのペイロード部分に対して計算された第２フィンガープリント、又は該第２フィンガープリントに少なくとも一部分基づく第２認証コードに一致するかどうかの指示を前記第２装置から受け取る段階を更に備えた、請求項１２７に記載のプログラム記憶装置。
【請求項１３３】
前記プロトコルは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）プロトコルを含み、そして
前記プロトコルデータユニットは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）を含む、請求項１２７に記載のプログラム記憶装置。
【請求項１３４】
前記プロトコルは、更に、トレーラＡＰＤＵを使用して、プログラムユニットに関連した最後のＡＰＤＵを指示することを含む、請求項６３に記載のプログラム記憶装置。
【請求項１３５】
前記プロトコルは、更に、ヘッダＡＰＤＵを使用して、該ヘッダＡＰＤＵに続く１つ以上の論理的プログラムＡＰＤＵの予想されるシーケンスを指示することを含む、請求項６３に記載のプログラム記憶装置。
【請求項１３６】
前記ＡＰＤＵは、前記ＡＰＤＵのコンテクストを識別する情報を含む、請求項６３に記載のプログラム記憶装置。
【請求項１３７】
前記第１フィンガープリントはチェック和を含む、請求項１２７に記載のプログラム記憶装置。
【請求項１３８】
前記第１フィンガープリントは繰り返し冗長コード（ＣＲＣ）を含む、請求項１２７に記載のプログラム記憶装置。
【請求項１３９】
前記第１フィンガープリントはメッセージダイジェストを含む、請求項１２７に記載のプログラム記憶装置。
【請求項１４０】
前記第１フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含む、請求項１２７に記載のプログラム記憶装置。
【請求項１４１】
第１デバイスと第２デバイスとの間でプログラムデータを通信する装置において、
プログラムデータを備えた第１プログラムファイルを少なくとも１つの論理的データユニットへとディスアッセンブルする手段と、
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化する手段であって、前記少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、そしてペイロード部分を含むものである手段と、
前記少なくとも１つの論理的データユニットの前記少なくとも１つのプロトコルデータユニットのペイロード部分に対して第１フィンガープリントを計算する手段と、
を備えた装置。
【請求項１４２】
前記第２デバイスは、スマートカードと通信するように構成されたロードターミナルを含む、請求項１４１に記載の装置。
【請求項１４３】
第２プログラムファイルを第２デバイスへ通信する手段を更に備え、前記第２プログラムファイルは、前記プログラムデータと、前記第１フィンガープリント及び前記第１フィンガープリントに少なくとも一部分基づく認証コードより成るグループの１つ以上のメンバーとを備えた、請求項１４１に記載の装置。
【請求項１４４】
前記プログラムデータはクラスファイルを含む、請求項１４１に記載の装置。
【請求項１４５】
前記プログラムファイルはＪＡＲファイルを含む、請求項１４１に記載の装置。
【請求項１４６】
前記プログラムファイルはＣＡＰファイルを含む、請求項１４１に記載の装置。
【請求項１４７】
前記装置は、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つの検証プロトコルデータユニットを生成する手段を備え、該検証プロトコルデータユニットは、前記論理的データユニットに対する検証データを含む、請求項１４１に記載の装置。
【請求項１４８】
前記認証コードは、更に、前記第１デバイスから受け取られた前記第２プログラムファイルを認証する際に前記第２デバイスにより使用される少なくとも１つのロードデバイス認証コードを含む、請求項１４３に記載の装置。
【請求項１４９】
前記認証コードは、更に、前記第２デバイスから受け取られたデータを認証する際に第３デバイスにより使用される少なくとも１つのターゲットデバイス認証コードを含み、前記受け取られたデータは、前記第１プログラムファイルに少なくとも一部分基づく、請求項１４３に記載の装置。
【請求項１５０】
前記プロトコルは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）プロトコルを含み、そして
前記プロトコルデータユニットは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）を含む、請求項１４１に記載の装置。
【請求項１５１】
前記プロトコルは、更に、トレーラＡＰＤＵを使用して、プログラムユニットに関連した最後のＡＰＤＵを指示する手段を含む、請求項１５０に記載の装置。
【請求項１５２】
前記プロトコルは、更に、ヘッダＡＰＤＵを使用して、該ヘッダＡＰＤＵに続く１つ以上の論理的プログラムＡＰＤＵの予想されるシーケンスを指示する手段を含む、請求項１５０に記載の装置。
【請求項１５３】
前記ＡＰＤＵは、前記ＡＰＤＵのコンテクストを識別する情報を含む、請求項１５０に記載の装置。
【請求項１５４】
前記第１フィンガープリントはチェック和を含む、請求項１４１に記載の装置。
【請求項１５５】
前記第１フィンガープリントは繰り返し冗長コード（ＣＲＣ）を含む、請求項１４１に記載の装置。
【請求項１５６】
前記第１フィンガープリントはメッセージダイジェストを含む、請求項１４１に記載の装置。
【請求項１５７】
前記第１フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含む、請求項１４１に記載の装置。
【請求項１５８】
第１デバイスと第２デバイスとの間でプログラムデータを通信する装置において、
プログラムデータと、第１フィンガープリント及び該第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを含むプログラムファイルを受け取る手段と、
前記プログラムデータを少なくとも１つの論理的データユニットへとディスアッセンブルする手段と、
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化する手段であって、前記少なくとも１つのプロトコルデータユニットのフォーマットが、通信プロトコルにより定義され、そしてペイロード部分を含むような手段と、
を備えた装置。
【請求項１５９】
前記第１フィンガープリント及び前記第１認証コードより成るグループの１つ以上のメンバーを前記第２デバイスへ通信する手段を更に備えた、請求項１５８に記載の装置。
【請求項１６０】
前記第１デバイスはロードターミナルを含み、そして前記第２デバイスはスマートカードを含む、請求項１５８に記載の装置。
【請求項１６１】
前記スマートカードは、Ｊａｖａ  Ｃａｒｄ（登録商標）技術でイネーブルされるスマートカードを含む、請求項１６０に記載の装置。
【請求項１６２】
前記スマートカードは、ＣＤＭＡ（コード分割多重アクセス）技術でイネーブルされるスマートカードを含む、請求項１６０に記載の装置。
【請求項１６３】
前記スマートカードは、ＳＩＭ（加入者認識モジュール）カードを含む、請求項１６０に記載の装置。
【請求項１６４】
前記スマートカードは、ＷＩＭ（ワイヤレスインターフェイスモジュール）を含む、請求項１６０に記載の装置。
【請求項１６５】
前記スマートカードは、ＵＳＩＭ（ユニバーサル加入者認識モジュール）を含む、請求項１６０に記載の装置。
【請求項１６６】
前記スマートカードは、ＵＩＭ（ユーザ認識モジュール）を含む、請求項１６０に記載の装置。
【請求項１６７】
前記スマートカードは、Ｒ−ＵＩＭ（除去可能なユーザ認識モジュール）を含む、請求項１６０に記載の装置。
【請求項１６８】
前記プログラムデータはクラスファイルを含む、請求項１５８に記載の装置。
【請求項１６９】
前記プログラムファイルはＪＡＲファイルを含む、請求項１５８に記載の装置。
【請求項１７０】
前記プログラムファイルはＣＡＰファイルを含む、請求項１５８に記載の装置。
【請求項１７１】
前記装置は、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つの検証プロトコルデータユニットを生成する手段を備え、該検証プロトコルデータユニットは、前記論理的データユニットに対する検証データを含み、そして前記プログラムファイルから抽出される、請求項１５８に記載の装置。
【請求項１７２】
前記装置は、更に、
前記少なくとも１つの論理的データユニットの少なくとも１つに対して検証データを計算する手段と、
前記論理的データユニットに対する前記検証データを含む検証プロトコルデータユニットを生成する手段と、
を備えた請求項１５８に記載の装置。
【請求項１７３】
前記装置は、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つのリンクプロトコルデータユニットを生成する手段を備え、該リンクプロトコルデータユニットは、前記論理的データユニットに対するリンクデータを含む、請求項１５８に記載の装置。
【請求項１７４】
前記装置は、更に、
前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つのリンクプロトコルデータユニットを生成する手段であって、該リンクプロトコルデータが前記論理的データユニットに対するリンクデータを含むような手段と、
前記論理的データユニットに対する前記検証データを含み、そして前記プログラムファイルから抽出される検証プロトコルデータユニットを生成する手段と、
を備えた請求項１５８に記載の装置。
【請求項１７５】
前記装置は、更に、
前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つのリンクプロトコルデータユニットを生成する手段であって、該リンクプロトコルデータが前記論理的データユニットに対するリンクデータを含むような手段と、
前記少なくとも１つの論理的データユニットの少なくとも１つに対する検証データを計算する手段と、
前記論理的データユニットに対する前記検証データを含む検証プロトコルデータユニットを生成する手段と、
を備えた請求項１５８に記載の装置。
【請求項１７６】
前記第１フィンガープリントが、前記第２デバイスにより受信されたプロトコルデータユニットのペイロード部分に対して計算された第２フィンガープリントに一致するかどうかの指示を、前記第２デバイスから受け取る手段を更に備えた、請求項１５８に記載の装置。
【請求項１７７】
前記１つ以上のメンバーが、前記第２デバイスにより受信されたプロトコルデータユニットのペイロード部分に対して計算された第２フィンガープリントに少なくとも一部分基づく第２認証コードに一致するかどうかの指示を、前記第２デバイスから受け取る手段を更に備えた、請求項１５８に記載の装置。
【請求項１７８】
前記プロトコルは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）プロトコルを含み、そして
前記プロトコルデータユニットは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）を含む、請求項１５８に記載の装置。
【請求項１７９】
前記プロトコルは、更に、トレーラＡＰＤＵを使用して、プログラムユニットに関連した最後のＡＰＤＵを指示する手段を含む、請求項１７８に記載の装置。
【請求項１８０】
前記プロトコルは、更に、ヘッダＡＰＤＵを使用して、該ヘッダＡＰＤＵに続く１つ以上の論理的プログラムＡＰＤＵの予想されるシーケンスを指示する手段を含む、請求項１７８に記載の装置。
【請求項１８１】
前記ＡＰＤＵは、前記ＡＰＤＵのコンテクストを識別する情報を含む、請求項１７８に記載の装置。
【請求項１８２】
前記第１フィンガープリントはチェック和を含む、請求項１５８に記載の装置。
【請求項１８３】
前記第１フィンガープリントは繰り返し冗長コード（ＣＲＣ）を含む、請求項１５８に記載の装置。
【請求項１８４】
前記第１フィンガープリントはメッセージダイジェストを含む、請求項１５８に記載の装置。
【請求項１８５】
前記第１フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含む、請求項１５８に記載の装置。
【請求項１８６】
第１デバイスと第２デバイスとの間でプログラムデータを通信する装置において、
第２デバイスへ第２プログラムファイルを通信する手段であって、該第２プログラムファイルが、前記プログラムデータと、第１フィンガープリント及び該第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを含むような手段と、
前記１つ以上のメンバーと、プログラムファイルの少なくとも１つの論理的データユニットより成る複数のプロトコルデータユニットとを受け取る手段であって、前記少なくとも１つの論理的データユニットの各々が少なくとも１つのプロトコルデータユニットへ区分化され、前記少なくとも１つのプロトコルデータユニットのフォーマットが通信プロトコルにより定義されそしてペイロード部分を含むような手段と、
前記少なくとも１つの論理的データユニットのプロトコルデータユニットのペイロード部分に対して第２フィンガープリントを計算する手段と、
前記１つ以上のメンバーが、前記第２のフィンガープリント、又は前記第２のフィンガープリントに少なくとも一部分基づく第２の認証コードに一致するかどうかに少なくとも一部分基づいて、前記プログラムを前記メモリへコミットする手段と、
を備えた装置。
【請求項１８７】
前記装置は、更に、リンクデータを含むプロトコルデータユニットを前記計算から除外する手段を備えた、請求項１８６に記載の装置。
【請求項１８８】
前記装置は、更に、認証フィンガープリント計算から検証データを除外しなければならないことをフラグが指示する場合に、検証データを含むプロトコルデータユニットを前記計算から除外する手段を備えた、請求項１８６に記載の装置。
【請求項１８９】
前記プロトコルは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）プロトコルを含み、そして
前記プロトコルデータユニットは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）を含む、請求項１８６に記載の装置。
【請求項１９０】
前記プロトコルは、更に、トレーラＡＰＤＵを使用して、プログラムユニットに関連した最後のＡＰＤＵを指示する手段を含む、請求項１８９に記載の装置。
【請求項１９１】
前記プロトコルは、更に、ヘッダＡＰＤＵを使用して、該ヘッダＡＰＤＵに続く１つ以上の論理的プログラムＡＰＤＵの予想されるシーケンスを指示する手段を含む、請求項１８９に記載の装置。
【請求項１９２】
前記ＡＰＤＵは、前記ＡＰＤＵのコンテクストを識別する情報を含む、請求項１８９に記載の装置。
【請求項１９３】
前記第１フィンガープリントはチェック和を含み、そして前記第２フィンガープリントはチェック和を含む、請求項１８６に記載の装置。
【請求項１９４】
前記第１フィンガープリントは繰り返し冗長コード（ＣＲＣ）を含み、そして前記第２フィンガープリントはＣＲＣを含む、請求項１８６に記載の装置。
【請求項１９５】
前記第１フィンガープリントはメッセージダイジェストを含み、そして前記第２フィンガープリントはメッセージダイジェストを含む、請求項１８６に記載の装置。
【請求項１９６】
前記第１フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含み、そして前記第２フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含む、請求項１８６に記載の装置。
【請求項１９７】
第１デバイスと第２デバイスとの間でプログラムデータを通信する装置において、
プログラムデータを備えた第１プログラムファイルを少なくとも１つの論理的データユニットへとディスアッセンブルする手段と、
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化する手段であって、前記少なくとも１つのプロトコルデータユニットのフォーマットが通信プロトコルにより定義され、そしてペイロード部分を含むような手段と、
前記少なくとも１つの論理的データユニットの前記プロトコルデータユニットのペイロード部分に対して第１フィンガープリントを計算する手段と、
前記少なくとも１つの論理的データユニットの前記プロトコルデータユニットと、前記第１フィンガープリント及び前記第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを、前記プロトコルに基づいて前記第２デバイスへ通信する手段と、
を備えた装置。
【請求項１９８】
前記プログラムデータはクラスファイルを含む、請求項１９７に記載の装置。
【請求項１９９】
前記プログラムファイルはＪＡＲファイルを含む、請求項１９７に記載の装置。
【請求項２００】
前記プログラムファイルはＣＡＰファイルを含む、請求項１９７に記載の装置。
【請求項２０１】
前記装置は、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つの検証プロトコルデータユニットを生成する手段を備え、該検証プロトコルデータユニットは、前記論理的データユニットに対する検証データを含む、請求項１９７に記載の装置。
【請求項２０２】
前記１つ以上のメンバーが、前記第２デバイスにより受け取られたプロトコルデータユニットのペイロード部分に対して計算された第２フィンガープリント、又は該第２フィンガープリントに少なくとも一部分基づく第２認証コードに一致するかどうかの指示を前記第２デバイスから受け取る手段を更に備えた、請求項１９７に記載の装置。
【請求項２０３】
前記プロトコルは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）プロトコルを含み、そして
前記プロトコルデータユニットは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）を含む、請求項１９７に記載の装置。
【請求項２０４】
前記プロトコルは、更に、トレーラＡＰＤＵを使用して、プログラムユニットに関連した最後のＡＰＤＵを指示する手段を含む、請求項２０３に記載の装置。
【請求項２０５】
前記プロトコルは、更に、ヘッダＡＰＤＵを使用して、該ヘッダＡＰＤＵに続く１つ以上の論理的プログラムＡＰＤＵの予想されるシーケンスを指示する手段を含む、請求項２０３に記載の装置。
【請求項２０６】
前記ＡＰＤＵは、前記ＡＰＤＵのコンテクストを識別する情報を含む、請求項２０３に記載の装置。
【請求項２０７】
前記第１フィンガープリントはチェック和を含む、請求項１９７に記載の装置。
【請求項２０８】
前記第１フィンガープリントは繰り返し冗長コード（ＣＲＣ）を含む、請求項１９７に記載の装置。
【請求項２０９】
前記第１フィンガープリントはメッセージダイジェストを含む、請求項１９７に記載の装置。
【請求項２１０】
前記第１フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含む、請求項１９７に記載の装置。
【請求項２１１】
第１デバイスと第２デバイスとの間でプログラムデータを通信する装置において、
前記プログラムデータを記憶するためのメモリと、
オフカードインストーラと、
を備え、該オフカードインストーラは、
プログラムデータを備えた第１プログラムファイルを少なくとも１つの論理的データユニットへとディスアッセンブルし、
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化し、前記少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、そしてペイロード部分を含むものであり、
前記少なくとも１つの論理的データユニットの前記少なくとも１つのプロトコルデータユニットのペイロード部分に対して第１フィンガープリントを計算する、
というように構成された装置。
【請求項２１２】
前記第２デバイスは、スマートカードと通信するように構成されたロードターミナルを含む、請求項２１１に記載の装置。
【請求項２１３】
前記オフカードインストーラは、更に、第２プログラムファイルを第２デバイスへ通信するように構成され、前記第２プログラムファイルは、前記プログラムデータと、前記第１フィンガープリント及び前記第１フィンガープリントに少なくとも一部分基づく認証コードより成るグループの１つ以上のメンバーとを備えた、請求項２１１に記載の装置。
【請求項２１４】
前記プログラムデータはクラスファイルを含む、請求項２１１に記載の装置。
【請求項２１５】
前記プログラムファイルはＪＡＲファイルを含む、請求項２１１に記載の装置。
【請求項２１６】
前記プログラムファイルはＣＡＰファイルを含む、請求項２１１に記載の装置。
【請求項２１７】
前記オフカードインストーラは、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つの検証プロトコルデータユニットを生成するように構成され、該検証プロトコルデータユニットは、前記論理的データユニットに対する検証データを含む、請求項２１１に記載の装置。
【請求項２１８】
前記認証コードは、更に、前記第１デバイスから受け取られた前記第２プログラムファイルを認証する際に前記第２デバイスにより使用される少なくとも１つのロードデバイス認証コードを含む、請求項２１３に記載の装置。
【請求項２１９】
前記認証コードは、更に、前記第２デバイスから受け取られたデータを認証する際に第３デバイスにより使用される少なくとも１つのターゲットデバイス認証コードを含み、前記受け取られたデータは、前記第１プログラムファイルに少なくとも一部分基づく、請求項２１３に記載の装置。
【請求項２２０】
前記プロトコルは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）プロトコルを含み、そして
前記プロトコルデータユニットは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）を含む、請求項２１１に記載の装置。
【請求項２２１】
前記プロトコルは、更に、トレーラＡＰＤＵを使用して、プログラムユニットに関連した最後のＡＰＤＵを指示することを含む、請求項２２０に記載の装置。
【請求項２２２】
前記プロトコルは、更に、ヘッダＡＰＤＵを使用して、該ヘッダＡＰＤＵに続く１つ以上の論理的プログラムＡＰＤＵの予想されるシーケンスを指示することを含む、請求項２２０に記載の装置。
【請求項２２３】
前記ＡＰＤＵは、前記ＡＰＤＵのコンテクストを識別する情報を含む、請求項２２０に記載の装置。
【請求項２２４】
前記第１フィンガープリントはチェック和を含む、請求項２１１に記載の装置。
【請求項２２５】
前記第１フィンガープリントは繰り返し冗長コード（ＣＲＣ）を含む、請求項２１１に記載の装置。
【請求項２２６】
前記第１フィンガープリントはメッセージダイジェストを含む、請求項２１１に記載の装置。
【請求項２２７】
前記第１フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含む、請求項２１１に記載の装置。
【請求項２２８】
第１デバイスと第２デバイスとの間でプログラムデータを通信する装置において、
前記プログラムデータを記憶するためのメモリと、
プロセッサと、
を備え、該プロセッサは、
プログラムデータと、第１フィンガープリント及び該第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを含むプログラムファイルを受け取り、
前記プログラムデータを少なくとも１つの論理的データユニットへとディスアッセンブルし、そして
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化し、前記少なくとも１つのプロトコルデータユニットのフォーマットが、通信プロトコルにより定義され、そしてペイロード部分を含む、
というように構成された装置。
【請求項２２９】
前記プロセッサは、更に、前記第１フィンガープリント及び前記第１認証コードより成るグループの１つ以上のメンバーを前記第２デバイスへ通信するように構成された、請求項２２８に記載の装置。
【請求項２３０】
前記第１デバイスはロードターミナルを含み、そして前記第２デバイスはスマートカードを含む、請求項２２８に記載の装置。
【請求項２３１】
前記スマートカードは、Ｊａｖａ  Ｃａｒｄ（登録商標）技術でイネーブルされるスマートカードを含む、請求項２３０に記載の装置。
【請求項２３２】
前記スマートカードは、ＣＤＭＡ（コード分割多重アクセス）技術でイネーブルされるスマートカードを含む、請求項２３０に記載の装置。
【請求項２３３】
前記スマートカードは、ＳＩＭ（加入者認識モジュール）カードを含む、請求項２３０に記載の装置。
【請求項２３４】
前記スマートカードは、ＷＩＭ（ワイヤレスインターフェイスモジュール）を含む、請求項２３０に記載の装置。
【請求項２３５】
前記スマートカードは、ＵＳＩＭ（ユニバーサル加入者認識モジュール）を含む、請求項２３０に記載の装置。
【請求項２３６】
前記スマートカードは、ＵＩＭ（ユーザ認識モジュール）を含む、請求項２３０に記載の装置。
【請求項２３７】
前記スマートカードは、Ｒ−ＵＩＭ（除去可能なユーザ認識モジュール）を含む、請求項２３０に記載の装置。
【請求項２３８】
前記プログラムデータはクラスファイルを含む、請求項２２８に記載の装置。
【請求項２３９】
前記プログラムファイルはＪＡＲファイルを含む、請求項２２８に記載の装置。
【請求項２４０】
前記プログラムファイルはＣＡＰファイルを含む、請求項２２８に記載の装置。
【請求項２４１】
前記プロセッサは、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つの検証プロトコルデータユニットを生成するように構成され、該検証プロトコルデータユニットは、前記論理的データユニットに対する検証データを含み、そして前記プログラムファイルから抽出される、請求項２２８に記載の装置。
【請求項２４２】
前記プロセッサは、更に、
前記少なくとも１つの論理的データユニットの少なくとも１つに対して検証データを計算し、そして
前記論理的データユニットに対する前記検証データを含む検証プロトコルデータユニットを生成する、
というように構成される請求項２２８に記載の装置。
【請求項２４３】
前記プロセッサは、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つのリンクプロトコルデータユニットを生成するように構成され、該リンクプロトコルデータユニットは、前記論理的データユニットに対するリンクデータを含む、請求項２２８に記載の装置。
【請求項２４４】
前記プロセッサは、更に、
前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つのリンクプロトコルデータユニットを生成し、該リンクプロトコルデータは前記論理的データユニットに対するリンクデータを含み、そして
前記論理的データユニットに対する前記検証データを含み且つ前記プログラムファイルから抽出される検証プロトコルデータユニットを生成する、
というように構成された請求項２２８に記載の装置。
【請求項２４５】
前記プロセッサは、更に、
前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つのリンクプロトコルデータユニットを生成し、該リンクプロトコルデータは前記論理的データユニットに対するリンクデータを含み、
前記少なくとも１つの論理的データユニットの少なくとも１つに対する検証データを計算し、そして
前記論理的データユニットに対する前記検証データを含む検証プロトコルデータユニットを生成する、
というように構成された請求項２２８に記載の装置。
【請求項２４６】
前記プロセッサは、前記第１フィンガープリントが、前記第２デバイスにより受信されたプロトコルデータユニットのペイロード部分に対して計算された第２フィンガープリントに一致するかどうかの指示を前記第２デバイスから受け取るように更に構成された、請求項２２８に記載の装置。
【請求項２４７】
前記プロセッサは、前記１つ以上のメンバーが、前記第２デバイスにより受信されたプロトコルデータユニットのペイロード部分に対して計算された第２フィンガープリントに少なくとも一部分基づく第２認証コードに一致するかどうかの指示を前記第２デバイスから受け取るように更に構成された、請求項２２８に記載の装置。
【請求項２４８】
前記プロトコルは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）プロトコルを含み、そして
前記プロトコルデータユニットは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）を含む、請求項２２８に記載の装置。
【請求項２４９】
前記プロトコルは、更に、トレーラＡＰＤＵを使用して、プログラムユニットに関連した最後のＡＰＤＵを指示することを含む、請求項２４８に記載の装置。
【請求項２５０】
前記プロトコルは、更に、ヘッダＡＰＤＵを使用して、該ヘッダＡＰＤＵに続く１つ以上の論理的プログラムＡＰＤＵの予想されるシーケンスを指示するように構成される、請求項２４８に記載の装置。
【請求項２５１】
前記ＡＰＤＵは、前記ＡＰＤＵのコンテクストを識別する情報を含む、請求項２４８に記載の装置。
【請求項２５２】
前記第１フィンガープリントはチェック和を含む、請求項２２８に記載の装置。
【請求項２５３】
前記第１フィンガープリントは繰り返し冗長コード（ＣＲＣ）を含む、請求項２２８に記載の装置。
【請求項２５４】
前記第１フィンガープリントはメッセージダイジェストを含む、請求項２２８に記載の装置。
【請求項２５５】
前記第１フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含む、請求項２２８に記載の装置。
【請求項２５６】
第１デバイスと、メモリを備えた第２デバイスとの間でプログラムデータを通信するための装置において、
前記プログラムデータを記憶するためのメモリと、
インストーラと、
を備え、該インストーラは、
第２デバイスへ第２プログラムファイルを通信し、該第２プログラムファイルは、前記プログラムデータと、第１フィンガープリント及び該第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを含むものであり、
前記１つ以上のメンバーと、プログラムファイルの少なくとも１つの論理的データユニットより成る複数のプロトコルデータユニットとを受け取り、前記少なくとも１つの論理的データユニットの各々が少なくとも１つのプロトコルデータユニットへ区分化され、前記少なくとも１つのプロトコルデータユニットのフォーマットは通信プロトコルにより定義されそしてペイロード部分を含み、
前記少なくとも１つの論理的データユニットのプロトコルデータユニットのペイロード部分に対して第２フィンガープリントを計算し、
前記１つ以上のメンバーが、前記第２のフィンガープリント、又は前記第２のフィンガープリントに少なくとも一部分基づく第２の認証コードに一致するかどうかに少なくとも一部分基づいて前記プログラムを前記メモリへコミットする、
というように構成された装置。
【請求項２５７】
前記インストーラは、更に、リンクデータを含むプロトコルデータユニットを前記計算から除外するように構成された、請求項２５６に記載の装置。
【請求項２５８】
前記インストーラは、更に、認証フィンガープリント計算から検証データを除外しなければならないことをフラグが指示する場合に、検証データを含むプロトコルデータユニットを前記計算から除外するように構成された、請求項２５６に記載の装置。
【請求項２５９】
前記プロトコルは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）プロトコルを含み、そして
前記プロトコルデータユニットは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）を含む、請求項２５６に記載の装置。
【請求項２６０】
前記プロトコルは、更に、トレーラＡＰＤＵを使用して、プログラムユニットに関連した最後のＡＰＤＵを指示することを含む、請求項２５９に記載の装置。
【請求項２６１】
前記プロトコルは、更に、ヘッダＡＰＤＵを使用して、該ヘッダＡＰＤＵに続く１つ以上の論理的プログラムＡＰＤＵの予想されるシーケンスを指示することを含む、請求項２５９に記載の装置。
【請求項２６２】
前記ＡＰＤＵは、前記ＡＰＤＵのコンテクストを識別する情報を含む、請求項２５９に記載の装置。
【請求項２６３】
前記第１フィンガープリントはチェック和を含み、そして前記第２フィンガープリントはチェック和を含む、請求項２５６に記載の装置。
【請求項２６４】
前記第１フィンガープリントは繰り返し冗長コード（ＣＲＣ）を含み、そして前記第２フィンガープリントはＣＲＣを含む、請求項２５６に記載の装置。
【請求項２６５】
前記第１フィンガープリントはメッセージダイジェストを含み、そして前記第２フィンガープリントはメッセージダイジェストを含む、請求項２５６に記載の装置。
【請求項２６６】
前記第１フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含み、そして前記第２フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含む、請求項２５６に記載の装置。
【請求項２６７】
第１デバイスと第２デバイスとの間でプログラムデータを通信するための装置において、
前記プログラムデータを記憶するためのメモリと、
オフカードインストーラと、
を備え、該オフカードインストーラは、
プログラムデータを備えた第１プログラムファイルを少なくとも１つの論理的データユニットへとディスアッセンブルし、
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化し、前記少なくとも１つのプロトコルデータユニットのフォーマットは通信プロトコルにより定義され、そしてペイロード部分を含むものであり、
前記少なくとも１つの論理的データユニットの前記プロトコルデータユニットのペイロード部分に対して第１フィンガープリントを計算し、
前記少なくとも１つの論理的データユニットの前記プロトコルデータユニットと、前記第１フィンガープリント及び前記第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを、前記プロトコルに基づいて前記第２デバイスへ通信する、
というように構成された装置。
【請求項２６８】
前記プログラムデータはクラスファイルを含む、請求項２６７に記載の装置。
【請求項２６９】
前記プログラムファイルはＪＡＲファイルを含む、請求項２６７に記載の装置。
【請求項２７０】
前記プログラムファイルはＣＡＰファイルを含む、請求項２６７に記載の装置。
【請求項２７１】
前記オフカードインストーラは、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つの検証プロトコルデータユニットを生成するように構成され、該検証プロトコルデータユニットは、前記論理的データユニットに対する検証データを含む、請求項２６７に記載の装置。
【請求項２７２】
前記オフカードインストーラは、更に、前記１つ以上のメンバーが、前記第２デバイスにより受け取られたプロトコルデータユニットのペイロード部分に対して計算された第２フィンガープリント、又は該第２フィンガープリントに少なくとも一部分基づく第２認証コードに一致するかどうかの指示を前記第２デバイスから受け取るように構成された、請求項２６７に記載の装置。
【請求項２７３】
前記プロトコルは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）プロトコルを含み、そして
前記プロトコルデータユニットは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）を含む、請求項２６７に記載の装置。
【請求項２７４】
前記プロトコルは、更に、トレーラＡＰＤＵを使用して、プログラムユニットに関連した最後のＡＰＤＵを指示することを含む、請求項２７３に記載の装置。
【請求項２７５】
前記プロトコルは、更に、ヘッダＡＰＤＵを使用して、該ヘッダＡＰＤＵに続く１つ以上の論理的プログラムＡＰＤＵの予想されるシーケンスを指示することを含む、請求項２７３に記載の装置。
【請求項２７６】
前記ＡＰＤＵは、前記ＡＰＤＵのコンテクストを識別する情報を含む、請求項２７３に記載の装置。
【請求項２７７】
前記第１フィンガープリントはチェック和を含む、請求項２６７に記載の装置。
【請求項２７８】
前記第１フィンガープリントは繰り返し冗長コード（ＣＲＣ）を含む、請求項２６７に記載の装置。
【請求項２７９】
前記第１フィンガープリントはメッセージダイジェストを含む、請求項２６７に記載の装置。
【請求項２８０】
前記第１フィンガープリントはキー型ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含む、請求項２６７に記載の装置。
【請求項２８１】
デジタルフィンガープリントを自動的に計算する装置において、
プログラムデータの記憶専用のメモリと、
前記メモリと通信しそして前記メモリに記憶されたデータに対してデジタルフィンガープリントを増分的に計算するように構成された計算ユニットと、
を備えた装置。
【請求項２８２】
前記計算ユニットは、更に、前記メモリへの書き込みオペレーションを検出する際に前記デジタルフィンガープリントを増分的に計算するように構成された、請求項２８１に記載の装置。
【請求項２８３】
前記計算ユニットは、更に、前記メモリに記憶されたデータの読み取り要求を受信する際にデジタルフィンガープリントを増分的に計算するように構成された、請求項２８１に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータサイエンスの分野に係る。より詳細には、本発明は、プログラムをロードする際にプログラムデータペイロードシーケンスに署名することに係る。
【０００２】
関連出願へのクロスレファレンス：本出願は、次のものに関連している。
エデュアード・デ・ジョーンを発明者とする共通に譲渡された「System for Communicating Program Data Between a First Device and a Second Device」と題する２００３年１月１６日出願の米国特許出願第１０／３４６，５８１号；
エデュアード・デ・ジョーンを発明者とする共通に譲渡された「Using a Digital Fingerprint to Commit Loaded Data in a Device」と題する２００３年１月１６日出願の米国特許出願第１０／３４６，２３８号；
エデュアード・デ・ジョーンを発明者とする共通に譲渡された「Ordering Program Data for Loading on a Device」と題する共通に譲渡された２００３年１月１６日出願の米国特許出願第１０／３４６，５８６号；
エデュアード・デ・ジョーンを発明者とする共通に譲渡された「Optimized Representation of Data Type Information in Program Verification」と題する２００３年１月１６日出願の米国特許出願第１０／３４６，２２７号；
エデュアード・デ・ジョーンを発明者とする共通に譲渡された「Run Time Code Integrity Checks」と題する２００３年１月１６日出願の米国特許出願第１０／３４６，２４３号；及び
エデュアード・デ・ジョーンを発明者とする共通に譲渡された「Linking of Virtual Methods」と題する２００３年１月１６日出願の米国特許出願第１０／３４６，５７９号。
【背景技術】
【０００３】
図１は、ホストコンピュータとスマートカードとの間でプログラムデータを通信するための典型的なメカニズムを示すブロック図である。スマートカード１１０は、通常、ＡＰＤＵ（アプリケーションプロトコルデータユニット）を経て他のコンピュータ１００と通信する。ＡＰＤＵプロトコルは、国際規格ＩＳＯ／ＩＥＣ７８１６−３に規定されている。ＡＰＤＵは、コマンドメッセージ１１５又は応答メッセージ１２０のいずれかを含む。スマートカード１１０は、ホストコンピュータ１００からコマンドＡＰＤＵ１１５を受け取り、該コマンド１１５に規定された命令を実行し、そして応答ＡＰＤＵ１２０でホストコンピュータ１００に応答する。コマンドＡＰＤＵ１１５及び応答ＡＰＤＵ１２０は、カード１１０とホストコンピュータ１００との間で交互に交換される。
【０００４】
ＡＰＤＵプロトコルによれば、ＡＰＤＵメッセージは、２つの構造を含む。一方の構造は、ロードターミナルのホストアプリケーションにより、カードにコマンドを送信するのに使用される。他方の構造は、カードにより、ホストアプリケーションへ応答を返送するのに使用される。前者は、コマンドＡＰＤＵ（Ｃ−ＡＰＤＵ）と称され、そして後者は、応答ＡＰＤＵ（Ｒ−ＡＰＤＵ）と称される。これらの構造が図２Ａ及び２Ｂに各々示されている。あるＣ−ＡＰＤＵコンポーネントは、任意である。
【０００５】
Ｊａｖａ  Ｃａｒｄ（登録商標）技術は、Ｊａｖａ（登録商標）プログラミング言語で書かれたプログラムをスマートカード及び他のリソース制約装置で実行することができる。Ｊａｖａ  Ｃａｒｄ（登録商標）技術は、Ｚ．チェン著の「Java CardTM Technology for Smart Cards (2000)」に説明されている。
【０００６】
図３は、変換アプレット（ＣＡＰ）ファイルをロードすることを示すブロック図である。Ｊａｖａ  Ｃａｒｄ（登録商標）バーチャルマシン（ＪＣＶＭ）は、Ｊａｖａ  Ｃａｒｄ（登録商標）バイトコードインタープリタ３４５を含むオンカード部分と、コンバータ３１０と称するオフカード部分とを備えている。インタープリタ３４５とコンバータ３１０とが合いまって、Ｊａｖａ（登録商標）クラスファイル３００をロードしそしてそれらをセマンティクスの特定セットで実行することを含む全てのバーチャルマシンファンクションを実施する。コンバータ３１０は、１つ以上のパッケージで構成され得るＪａｖａ  Ｃａｒｄ（登録商標）プログラムを含むクラスファイル３００をロードして前処理すると共に、ＣＡＰ（変換アプレット）ファイル３５０を形成する。ＣＡＰファイル３５０は、次いで、Ｊａｖａ  Ｃａｒｄ（登録商標）技術でイネーブルされるスマートカード３３０にロードされ、そしてインタープリタ３４５により実行される。ＣＡＰファイル３５０は、Ｊａｖａ（登録商標）パッケージ３５０におけるクラスの実行可能な２進表示を含む。Ｊａｖａ  Ｃａｒｄ（登録商標）インタープリタ３４５は、Ｊａｖａ（登録商標）言語実行モデルのランタイムサポートを与える。
【０００７】
Ｊａｖａ  Ｃａｒｄ（登録商標）技術では、ＣＡＰファイル３５０をダウンロードしそしてインストールするためのメカニズムが、インストーラ３４０と称するユニットにおいて実施される。Ｊａｖａ  Ｃａｒｄ（登録商標）インストーラ３４０は、カード３３０内にある。これは、オフカードインストールプログラム３２０と協働する。このオフカードインストールプログラム３２０は、ＣＡＰファイル３５０における実行可能な２進及びおそらく他のデータを、ロードターミナル３２５を経て、カード３３０で実行されているインストーラ３４０へ送信する。インストーラ３４０は、スマートカードメモリに２進データを書き込み、それを、カード３３０に既に入れられている他のクラスとリンクし、そしてＪａｖａ  Ｃａｒｄ（登録商標）ランタイム環境により最初に使用されるデータ構造を形成し初期化する。任意のオンカードベリファイヤ３３５は、ダウンロードされたコードがバイトコードインタープリタ３４５により解釈される前に、ダウンロードされたコードのバイトコード検証を実行する。
【０００８】
ＡＰＤＵプロトコルは、ペイロード又はデータフィールド（図２の参照番号２４０）のサイズを、ＲＡＭの限定サイズにより決定された少数のバイト（通常、１２８未満）に制限する。この制限より大きなデータ構造は、多数のＡＰＤＵのペイロード部分の間で分割されねばならない。この分割は、通常、データコンテンツに関わりなく実行される。例えば、特定のＡＰＤＵは、１つのデータ構造の一部分と、別のデータ構造の一部分とを含んでもよい。これは、図４を参照して以下に詳細に説明する。
【０００９】
図４は、ロードターミナルの観点からＣＡＰファイルをロードすることを示すフローチャートである。４００において、ＣＡＰファイルを受け取る。４０５において、ＣＡＰファイル及びそれに関連した認証データを、多数のＡＰＤＵ間で分割する。４１０において、ＡＰＤＵプロトコルに基づきターゲットのスマートカードへＡＰＤＵを送信する。
【００１０】
図５は、スマートカードの観点からＣＡＰファイルをロードすることを示すフローチャートである。５００において、ＣＡＰファイルをスマートカードに再アッセンブルする。５０５において、その再アッセンブルしたＣＡＰファイルを暗号解読する。５１０において、その暗号解読したＣＡＰファイルデータを認証する。別の解決策において、ＣＡＰファイルを認証し、次いで、暗号解読する。更に別の解決策では、ＣＡＰファイルを、暗号化せずに通信する。５１５において、認証されたＣＡＰファイルのコンテンツをスマートカードにインストールする。
【００１１】
図６は、スマートカードにＣＡＰファイルを再アッセンブルするところを示す図である。６００において、ＡＰＤＵを受け取る。６０５において、ＥＥＰＲＯＭ（電気的に消去可能なプログラム可能なリードオンリメモリ）のような永続的可変メモリにＡＰＤＵを記憶する。或いは又、ＡＰＤＵペイロードは、永続的可変メモリに記憶されない。６１０において、ＡＰＤＵの受信を確認する。６１５において、別のＡＰＤＵを処理する必要があるかどうかの決定がなされる。６００において、付加的なＡＰＤＵの処理を開始する。
【００１２】
図７は、スタティックリファレンスを解明するためにリンクデータを有する記憶されたプログラムを変更するところを示すブロック図である。カードメモリ７００は、実行可能なコードセグメント（７０２、７０６、７０８、７１０、７１２、７１６、７１８、７２０、７２２、７２４、７２６、７２８、７３２）をリンクするために埋め込まれたリンクデータ（７０４、７１２、７２８）を使用する前のカードメモリを表わす。カードメモリ７５０は、実行可能なコードセグメント（７０２、７０６、７０８、７１０、７１２、７１６、７１８、７２０、７２２、７２４、７２６、７２８、７３２）をリンクするために埋め込まれたリンクデータ（７０４、７１２、７２８）が使用された後のカードメモリを表わす。カードメモリ７００を参照すれば、メソッド「Ａ１Ａ」コード７０２は、メソッド「Ａ１Ｃ」７０８をコールし、メソッド「Ａ２Ａ」コード７１２は、メソッド「Ｂ１Ａ」７２０をコールし、そしてメソッド「Ｂ２Ａ」コード７２８は、メソッド「Ｂ１Ｄ」７２６をコールする。メソッド「Ａ１Ａ」リンクデータ７０４は、メソッド「Ａ１Ｃ」７０８へのリファレンスをいかに解明するための指示を含む。メソッド「Ａ１Ａ」リンクデータ７０４は、更に、メソッド「Ａ１Ａ」コード７０２をいかに変更すべきかの指示を含んでもよい。同様に、メソッド「Ａ２Ａ」リンクデータ７１４は、メソッド「Ｂ１Ａ」７２０へのリファレンスをいかに解明するかの指示を含む。メソッド「Ａ２Ａ」リンクデータ７１４は、更に、メソッド「Ａ２Ａ」コード７１２をいかに変更すべきかの指示を含む。更に、メソッド「Ｂ２Ａ」リンクデータ７３０は、メソッド「Ｂ１Ｄ」７２６へのリファレンスをいかに解明するかの指示を含む。メソッド「Ｂ２Ａ」リンクデータ７３０は、更に、メソッド「Ｂ２Ａ」コード７２８をいかに変更すべきかの指示を含んでもよい。図７のカードメモリ７５０を参照すれば、コールされたメソッドに対する記号リファレンスが、コールされたメソッドのアドレスに置き換えられ、リンクデータは記憶されない。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
不都合なことに、再形成されたＣＡＰファイルを永続的な可変メモリに記憶し、そしてＣＡＰファイルのコンテンツを処理して、リンクされた実行可能なコードを形成するには、著しい量の使用可能なメモリが必要になると共に、時間もかかる。
【００１４】
従って、従来技術では、ホストコンピュータとスマートカードとの間で比較的効率的にプログラムデータを通信するための方法及び装置が要望される。比較的安全な解決策が更に要望される。又、プログラムが不正変更されたときにそれを検出する解決策も要望される。
【課題を解決するための手段】
【００１５】
第１装置と第２装置との間でのプログラムデータの通信は、プログラムデータを備えた第１プログラムファイルを少なくとも１つの論理的データユニットへとディスアッセンブルし、その少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化し、そしてその少なくとも１つの論理的データユニットの少なくとも１つのプロトコルデータユニットのペイロード部分に対して第１フィンガープリントを計算することを含む。少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、ペイロード部分を備えている。
【００１６】
添付図面は、本発明の１つ以上の実施形態を示すもので、これを参照して、本発明の原理及び実施について詳細に説明する。
【発明を実施するための最良の形態】
【００１７】
本発明の実施形態は、プログラムをロードする際にプログラムデータペイロードシーケンスに署名することについて以下に説明する。当業者であれば、本発明の以下の詳細な説明は、単なる例示に過ぎず、これに何ら限定されるものではないことが明らかであろう。この開示の利益を受ける当業者には、本発明の他の実施形態も容易に示唆されよう。以下、添付図面に示された本発明の実施形態を詳細に説明する。添付図面及び以下の詳細な説明全体にわたって同じ又は同様の部分を示すのに同じ参照指示子を使用する。
【００１８】
明瞭化のために、ここに述べる実施形態の全てのルーチン特徴を図示して説明しない。もちろん、このような実施形態の開発中には、アプリケーション及びビジネスに関連した制約に適合する等の開発者特有の目標を達成するために実施形態特有の多数の判断を行わねばならないと共に、これら特有の目標が実施形態ごとに及び開発者ごとに変化することが明らかであろう。更に、このような開発の努力は複雑で且つ時間がかかるが、この開示の利益を受ける当業者にとっては、技術的なルーチン作業となることが明らかであろう。
【００１９】
本発明の一実施形態によれば、コンポーネント、プロセスステップ及び／又はデータ構造は、種々の形式のオペレーティングシステム（ＯＳ）、コンピューティングプラットホーム、ファームウェア、コンピュータプログラム、コンピュータ言語、及び／又は汎用マシンを使用して実施することができる。メソッドは、処理回路で実行されるプログラムされたプロセスとして実行することができる。処理回路は、プロセッサ及びオペレーティングシステム又はスタンドアローン装置の多数の組合せの形態をとることができる。プロセスは、このようなハードウェア、ハードウェアのみ又はその組合せにより実行される命令として実施できる。ソフトウェアは、マシンにより読み取りできるプログラム記憶装置に記憶できる。
【００２０】
更に、当業者に明らかなように、ここに開示する本発明概念の範囲及び精神から逸脱せずに、汎用性の低い装置、例えば、現場でプログラム可能なゲートアレイ（ＦＰＧＡ）及び複雑なプログラム可能な論理装置（ＣＰＬＤ）、特定用途向け集積回路（ＡＳＩＣ）等を含む固定布線装置や現場でプログラム可能な論理装置（ＦＰＬＤ）を使用してもよい。
【００２１】
本発明の一実施形態によれば、メソッドは、カリフォルニア州サンタクララのサン・マイクロシステムズ・インクから入手できるＳｏｌａｒｉｓ（登録商標）、ワシントン州レドモンドのマイクロソフトコーポレーションから入手できるＭｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）ＸＰ及びＷｉｎｄｏｗｓ（登録商標）２０００のようなＯＳ、或いは多数の売主から入手できるＬｉｎｕｘのようなＵｎｉｘ（登録商標）オペレーティングシステムの種々のバージョンを実行するパーソナルコンピュータ、ワークステーションコンピュータ、メインフレームコンピュータ、又は高性能サーバーのようなデータ処理コンピュータにおいて実施することができる。又、メソッドは、マルチプロセッサシステム、或いは入力装置、出力装置、ディスプレイ、ポインティング装置、メモリ、記憶装置、プロセッサとデータをやり取りする媒体インターフェイス等の種々の周辺機器を含むコンピューティング環境において実施されてもよい。更に、このようなコンピュータシステム又はコンピューティング環境は、ローカルでネットワーク構成されてもよいし、或いはインターネットを経てネットワーク構成されてもよい。
【００２２】
本発明に関して、「ネットワーク」という語は、ローカルエリアネットワーク、ワイドエリアネットワーク、インターネット、ケーブルテレビジョンシステム、電話システム、ワイヤレステレコミュニケーションシステム、光ファイバネットワーク、ＡＴＭネットワーク、フレームリレーネットワーク、衛星通信システム等を含む。このようなネットワークは、良く知られたものであり、従って、ここでは詳細に述べない。
【００２３】
本発明に関して、ハッシュ関数ｈは、全てのｘ及びｙに対してｈ（ｘ、ｙ）＝ｈ（ｙ、ｘ）である場合には、交換可能である。換言すれば、ハッシュ関数の結果は、引数の順序とは独立している。
【００２４】
本発明に関して、「フィンガープリント」という語は、バイトシーケンスにおける１つ以上の変化を識別又は検出する機能の結果として定義される。例えば、フィンガープリントは、任意のバイトシーケンスの非交換可能なハッシュを含んでもよいし、又は一連の１つ以上のバイトシーケンスの非交換可能なハッシュを含んでもよい。更に別の例として、フィンガープリントは、ＣＲＣ（繰り返し冗長コード）、メッセージダイジェスト、等を含んでもよい。このような機能は、ナスＤ．著の「The Art of Computer Programming, Volume 2: Seminumerical Methods」、第５章、アジソン・ウェスリー、１９８１年、に説明されている。
【００２５】
本発明に関して、「認証コード」という語は、デジタル署名として、又はブロック暗号を使用したメッセージ認証コード（ＭＡＣ）として定義される。例えば、認証コードは、ＤＥＳアルゴリズム（連邦情報処理規格パブリケーション４６−３、「Data Encryption Standard (DES)」、１９９９年８月２５日；連邦情報処理規格パブリケーション１９７、「Advanced Encryption Standard (AES)」、２００１年１１月２６日）、Ｒｉｊｎｄａｅｌアルゴリズム（Ｊ．ダーメン及びＶ．リジメン著の「AES Proposal: Rijndael, AES Algorithm Submission」、１９９９年９月３日）、等を使用して発生されてもよい。キー処理されたハッシュ関数の結果として発生される認証コードは、フィンガープリントでもある認証コードの一例である。
【００２６】
本発明に関して、キー処理ハッシュベースのメッセージ認証コード（ＨＭＡＣ）は、ハッシュ関数に関連して暗号キーを使用するＭＡＣとして定義される。ＨＭＡＣは、フィンガープリント及びＭＡＣの両方である。
【００２７】
本発明に関して、「認証されたフィンガープリント」という語は、フィンガープリントに少なくとも一部分基づく認証コードとして定義される。
【００２８】
本発明に関して、「認証フィンガープリント」という語は、認証されたフィンガープリントを生成するのに使用されるフィンガープリントとして定義される。
【００２９】
本発明に関して、「セッション」又は「ユーザセッション」という語は、ユーザがスマートカード等の保安ポータブル装置をロードターミナル又はカード受け入れ装置（ＣＡＤ）のような通信装置に挿入したときに始まり、そしてこの保安ポータブル装置が通信装置から取り去られたときに終わる周期として定義される。「セッションＩＤ」とは、このようなセッションを独特に識別する識別子を表わすのに使用される。１つ以上のセッションＩＤを使用して、同じセッションを独特に識別することができる。
【００３０】
本発明に関して、「パッケージ構造化データ」という語は、外部のプログラムユニットを参照するためにＪａｖａ（登録商標）式のネーミング規定を使用する拡張可能なコードとして定義される。例えば、外部クラスに対するＪａｖａ（登録商標）ネーミング規定は、パッケージ名及びそれに続くクラス名を含む。
【００３１】
本発明に関して、「検証ＡＰＤＵ」という語は、コマンド及び検証データを含むＡＰＤＵとして定義される。検証データは、ＡＰＤＵのデータフィールド（図２の参照番号２４０）内に配置される。
【００３２】
本発明に関して、「リンクＡＰＤＵ」という語は、コマンド及びリンクデータを含むＡＰＤＵとして定義される。リンクデータは、ＡＰＤＵのデータフィールド（図２の参照番号２４０）内に配置される。
【００３３】
本発明に関して、「プログラムユニット」という語は、プログラムの振舞いの識別可能な単位として定義される。高レベルプログラムユニットは、１つ以上の低レベルプログラムユニットを含んでもよい。例えば、Ｊａｖａ（登録商標）クラスは、１つ以上のメソッドを含んでもよい。
【００３４】
図８は、本発明の態様を実施するのに適したコンピュータシステム８００のブロック図である。図８に示すように、コンピュータシステム８００は、中央プロセッサ８０４、システムメモリ８０６（通常ＲＡＭ）、入力／出力（Ｉ／Ｏ）コントローラ８０８、ディスプレイアダプタ８１２を経てディスプレイスクリーン８１０のような外部装置、シリアルポート８１４及び８１６、キーボード８１８、固定ディスクドライブ８２０、フロッピー（登録商標）ディスク８２４を受け入れるように動作するフロッピー（登録商標）ディスクドライブ８２２、及びＣＤ−ＲＯＭ８２８を受け入れるように動作するＣＤ−ＲＯＭプレーヤ８２６のような主要サブシステムを相互接続するバス８０２を備えている。又、シリアルポート８１４を経て接続されたポインティング装置８３０（例えばマウス）、及びシリアルポート８１６を経て接続されたモデム８３２のような他の多数の装置を接続することもできる。モデム８３２は、電話リンクを経てサーバーへ直接接続を与えることもできるし、又はＰＯＰ（存在点）を経てインターネットへ直接接続を与えることもできる。或いは又、ネットワークインターフェイスアダプタ８３４を使用して、当業者に良く知られたネットワークインターフェイスシステムを使用するローカル又はワイドエリアネットワーク（例えば、イーサネット（登録商標）、ｘＤＳＬ、ＡｐｐｌｅＴａｌｋ（登録商標））にインターフェイスすることもできる。
【００３５】
多数の他の装置又はサブシステム（図示せず）を同様に接続してもよい。又、以下に述べるように本発明を実施するために図８に示す全ての装置を設ける必要はない。更に、装置及びサブシステムは、図８に示すものとは異なる仕方で相互接続されてもよい。図８に示すようなコンピュータシステムのオペレーションは、当業者に容易に明らかであろうから、本発明を過剰に複雑にしないためにここでは詳細に説明しない。本発明を実施するためのコードは、システムメモリ８０６に動作可能に配置することもできるし、或いは固定ディスク８２０、フロッピー（登録商標）ディスク８２４又はＣＤ−ＲＯＭ８２８のような記憶媒体に記憶することもできる。
【００３６】
カードをロードするための署名プロトコル
図９は、本発明の一実施形態に基づきホストコンピュータとスマートカードとの間でプログラムデータを通信するためのシステムを示すブロック図である。このシステム９００は、ホストコンピュータ９１０、ロードターミナル９８５、及びスマートカード９５０を備えている。ホストコンピュータ９１０は、パッケージ構造化データ９０５を含むＣＡＰファイル９８０を増強して、増強されたＣＡＰファイル９２０を生成するためのオフカードインストーラ９１５を備え、増強されたＣＡＰファイル９２０は、パッケージ構造化データ９２５、認証フィンガープリント９４０、１つ以上のロードターミナル認証コード９３０、及び１つ以上のターゲットスマートカード認証コード９３５を含む。又、増強されたＣＡＰファイル９２０は、ＣＡＰファイルのコンテンツを検証する検証データ９４５を含んでもよい。認証フィンガープリント９４０は、パッケージ構造化データ９２５から導出された論理的ＡＰＤＵのペイロード部分に対して計算される。論理的ＡＰＤＵは、図１３を参照して以下に詳細に述べる。以下に詳細に述べるように、認証フィンガープリントを計算するためにホストコンピュータ９１０、ロードターミナル９８５及びターゲットスマートカード９５０により使用されるプロセスの類似性は、ＡＰＤＵペイロードが同じに保たれる場合に、計算を実行するエンティティに関わらず、同じ認証フィンガープリントが発生されることを保証する。逆に、各エンティティが計算を実行するたびにＡＰＤＵペイロードが変化する場合には、異なるフィンガープリントが発生されて、ペイロードの変化を知らせる。
【００３７】
本発明の一実施形態によれば、ロードターミナルの認証コード９３０及びターゲットスマートカードの認証コード９３５の１つ以上は、少なくとも部分的に認証フィンガープリント９４０に基づく。本発明の別の実施形態によれば、認証フィンガープリント９４０は、キー処理ハッシュベースのメッセージ認証コード（ＨＭＡＣ）を含む。本発明の別の実施形態によれば、ロードターミナルの認証コード９３０及びターゲットスマートカードの認証コード９３５の１つ以上は、論理的ＡＰＤＵに関わらず、増強されたＣＡＰファイル９２０に対して計算されたデジタル署名を含む。
【００３８】
本発明の実施形態によれば、論理的プログラムユニットＡＰＤＵは、その前及び／又は後に、検証情報（検証ＡＰＤＵ）及び／又はリンク情報（リンクＡＰＤＵ）を与える１つ以上のＡＰＤＵを伴うことができる。検証データは、ＣＡＰファイルに埋め込まれてもよい。或いは又、検証データは、ロードターミナルにより計算されてもよい。検証データがＣＡＰファイルに含まれる場合には、それを使用して認証フィンガープリントを計算することができる。リンクデータは、ロードターミナルによって計算されてもよい。リンクデータは、カードから得られたデータ、ウェブから得られたデータ、ＣＡＰファイルのデータ、又はその組合せに基づいてもよい。
【００３９】
更に、図９を参照すれば、ロードターミナル９８５は、増強されたＣＡＰファイル９２０を受け取り、パッケージ構造化データ９２５から１つ以上の論理的ＡＰＤＵを生成し、ロードターミナル認証コード９３０に少なくとも一部分基づいてＣＡＰファイルを認証し、選択されたターゲットスマートカード認証コード９３５及び認証フィンガープリント９４０を含む１つ以上のＡＰＤＵを生成し、そして１つ以上のＡＰＤＵをターゲットスマートカード９５０へ通信するように構成される。
【００４０】
本発明の一実施形態によれば、ホストコンピュータ９１０は、検証データを伴わずに増強されたＣＡＰファイルを通信する。本発明の別の実施形態によれば、ホストコンピュータ９１０は、検証データを有する増強されたＣＡＰファイルを通信する。
【００４１】
本発明の一実施形態によれば、ロードターミナル９８５は、検証データを伴わずに増強されたＣＡＰファイル９２０を受け取り、検証データを計算し、そして１つ以上の検証ＡＰＤＵを生成する。本発明の別の実施形態によれば、ロードターミナル９８５は、検証データを伴う増強されたＣＡＰファイル９２０を受け取り、そして１つ以上の検証ＡＰＤＵを生成する。本発明の別の実施形態によれば、ロードターミナル９８５は、リンクデータを計算し、そして１つ以上のリンクＡＰＤＵを生成する。
【００４２】
本発明の一実施形態によれば、スマートカード９５０は、Ｊａｖａ  Ｃａｒｄ（登録商標）技術でイネーブルされるスマートカード等の保安ポータブル装置を備えている。
【００４３】
本発明の一実施形態によれば、スマートカード９５０は、ＣＤＭＡ技術でイネーブルされるスマートカードを備えている。このＣＤＭＡ技術でイネーブルされるスマートカードは、「Smart Card Stage I Description」、バージョン１．１、ＣＤＭＡデベロープメントグループ−スマートカードチームドキュメント（１９９６年５月２２日）に説明されている。
【００４４】
本発明の別の実施形態によれば、スマートカード９５０は、ＳＩＭ（加入者認識モジュールカード）カードを含む。「ＳＩＭカード」という語は、ＧＳＭ（移動通信用のグローバルシステム）移動電話に使用されるスマートカードを表わす。ＳＩＭは、加入者の個人暗号認識キー及び他の情報、例えば、電話の現在位置及び頻繁にコールされる番号のアドレス帳を含む。ＳＩＭは、「Digital cellular telecommunications system (phase 2+); Specification of the Subscriber Identity Module-Mobile Equipment (SIM-ME) interface」、ＥＴＳＩ、ＧＳＭ１１．１１バージョン７．４．０、リリース１９９８年、に説明されている。
【００４５】
本発明の別の実施形態によれば、スマートカード９５０は、ＷＩＭ（ワイヤレスインターフェイスモジュール）を備えている。ＷＩＭは、ＷＡＰ（ワイヤレスアプリケーションプロトコル）電話におけるスマートカードである。「Wireless Identity Module Part: Security」、ＷＡＰ−２６０−ＷＩＭ−２００１０７１２−ａ、ワイヤレスアプリケーションプロトコルフォーラム、２００１年７月１２日、に説明されている。
【００４６】
本発明の別の実施形態によれば、スマートカード９５０は、ＵＳＩＭ（ユニバーサル加入者認識モジュール）を含む。ＵＳＩＭは、３ＧＰＰ（第３世代パートナーシッププロジェクト）移動電話のためのスマートカードである。これは、「3rd Generation Partnership Project; Technical Specification Terminals; USIM and IC card requirement」、リリース４、３ＧＰＰ  ＴＳ２１．１１１  Ｖ４．０．０（２００１−０３）、に説明されている。
【００４７】
本発明の別の実施形態によれば、スマートカード９５０は、ＵＩＭ（ユーザ認識モジュール）を備えている。ＵＩＭは、３ＧＰＰプロジェクト２（３ＧＰＰ２）移動電話のためのスマートカードである。「Ｒ−ＵＩＭ」という語は、スマートカードを取り外せるときに使用される。ＵＩＭは、ＳＩＭのスーパーセットで、ＣＤＭＡ（コード分割多重アクセス）ベースのセルラー加入者が地理的及び装置境界を横切ってローミングするのを許す。Ｒ−ＵＩＭは、第３世代パートナーシッププロジェクト２（３ＧＰＰ２）により発行された「3rd Generation Partnership Project 2; Removable User Identity Module (R-UIM) for cdma2000 Spread Spectrum Systems, 3GPP2 C.S0023-0, June 9, 2000」と題する仕様書に説明されている。
【００４８】
種々の移動電話技術に関する上記説明は、何らそれに限定するものではない。当業者であれば、他のユーザ装置を使用してもよいことが明らかであろう。
【００４９】
図１０は、本発明の一実施形態に基づきホストコンピュータからスマートカードへプログラムデータを通信するところを示す高レベルフローチャートである。１０２０において、増強されたＣＡＰファイルが準備される。増強されたＣＡＰファイルは、パッケージ構造化データと、このパッケージ構造化データを含むＡＰＤＵデータストリームに対して計算された認証フィンガープリントとを含むことができる。或いは又、増強されたＣＡＰファイルは、パッケージ構造化データと、認証フィンガープリントに少なくとも一部分基づく少なくとも１つの認証コードとを含んでもよい。
【００５０】
本発明の一実施形態によれば、増強されたＣＡＰファイルの準備（１０２０）の前に、最適化された検証及びリンクのためのプログラムエレメントのロード順序を決定する（１０１５）。１０１５に使用されるロード順序を１０２０に使用して、認証フィンガープリントの計算における論理的ＡＰＤＵの順序を決定してもよい。Ｊａｖａ（登録商標）環境では、１つ以上のクラス、クラスにおけるメソッド、又はメソッドにおけるフィールドに対するロード順序が決定される。プログラムエレメントは、ＣＡＰファイルにおけるプログラムの使用グラフに少なくとも一部分基づいて順序付けされてもよい。メソッドの「使用」は、例えば、メソッドをコールすることを含んでもよい。フィールドの「使用」は、例えば、フィールドにアクセスすることを含んでもよい。又、プログラムエレメントは、プログラムに対して定義された形式マップ情報に少なくとも一部分基づいて順序付けされてもよい。形式マップは、図１４を参照して以下に詳細に説明する。プログラムエレメントの順序付けは、図１５Ａ−１５Ｃを参照して以下に詳細に説明する。
【００５１】
更に、図１０を参照すれば、１０２５において、増強されたＣＡＰファイルがロードターミナルへ通信される。１０３０において、ロードターミナルは、増強されたＣＡＰファイルを受け取り、アプレットのロードを開始する。１０３５において、認証されたアプレットコードがターゲットスマートカードにロードされる。１０４０において、アプレットが初期化される。１０４５において、ターゲットスマートカードから受け取ったロードの証拠を処理して、ロードが成功であったかどうか決定しそして記録する。
【００５２】
更に、図１０を参照すれば、スマートカード１０５０は、ロードターミナルからロード要求を受け取る。１０５５において、スマートカードは、ロードターミナルから受け取った論理的ＡＰＤＵを処理する。この処理は、ＡＰＤＵペイロードに対して認証フィンガープリントを計算することを含む。１０６０において、ロードターミナルから受け取られた初期化データを使用して、スマートカードを初期化する。１０６５において、ロードの証拠をロードターミナルへ送る。
【００５３】
図１１は、本発明の一実施形態に基づきホストコンピュータからスマートカードへプログラムデータを通信するところを示す低レベルフローチャートである。図１１は、図１０の更なる詳細を示す。より詳細には、図１１の参照番号１１０６−１１１６、１１１８−１１３６及び１１４０−１１５０は、各々、図１０の参照番号１０２０−１０２５、１０３０−１０４５及び１０５０−１０６５に対応する。１１０６において、ホストコンピュータは、ＣＡＰファイルを論理的データユニットにディスアッセンブルし、そして論理的データユニットは、１つ以上のＡＰＤＵへ区分化される。１１０８において、認証フィンガープリントは、図２０Ａ及び２０Ｂを参照して以下に述べるように、ＡＰＤＵデータストリームに対して計算される。１１１０において、１つ以上のロードターミナル認証コードが生成される。１１１２において、１つ以上のターゲットスマートカード認証コードが生成される。１１１４において、ＣＡＰファイルが、認証コード、フィンガープリント又はその両方で増強される。１１１６において、増強されたＣＡＰファイルがロードターミナルへ通信される。
【００５４】
更に、図１１を参照すれば、１１１８において、ロードターミナルは、増強されたＣＡＰファイル、アプレットＩＤ（ＡＩＤ）等、初期化命令及び初期化データを含むロード要求を受け取る。「ＡＩＤ」という語は、国際規格組織（ＩＳＯ）規格ＩＳＯ−ＩＥＣ７８１６−３により定義される。１１２０では、アプレットのロードが開始される。この開始は、認証コード及びフィンガープリントを増強されたＣＡＰファイルから分離し、そしてリンク情報を得ることを含む。任意であるが、１１２１において、最適な検証及びリンクのためのプログラムエレメントのロード順序が決定される。プログラムエレメントのロード順序は、図１０に参照番号１０１５で示すように決定できる。或いは又、順序は、増強されたＣＡＰファイルに記憶された指示子から決定されてもよい。１１２２において、増強されたＣＡＰファイルは、１つ以上の論理的ＡＰＤＵへとディスアッセンブルされる。１１２４において、増強されたＣＡＰファイルは、ロードターミナルの認証コードに基づいて認証される。１１２６において、ターゲット認証コードが、ターゲットスマートカードに基づき、増強されたＣＡＰファイルにおけるターゲットスマートカードの認証コードから選択される。１１２８において、１つ以上の論理的ＡＰＤＵがターゲットスマートカードへ通信される。１１３０において、フィンガープリント、又はフィンガープリントに基づく認証コードがスマートカードに送信される。１１３２において、ターゲットスマートカード認証コードがスマートカードに送信される。１１３４において、初期化命令及びロードデータがターゲットスマートカードへ送信される。１１３６において、ロードの証拠がターゲットスマートカードから受信される。
【００５５】
本発明の一実施形態によれば、プロセス１１２２及び１１２４は、プロセス１１２６、１１２８及び１１３０の前に実行される。しかしながら、プロセス１１２６、１１２８及び１１３０の互いの順序は、変更されてもよい。
【００５６】
更に、図１１を参照すれば、１１４０において、ターゲットスマートカードは、ロードターミナルからロード要求を受け取り、そしてロード初期化を実行する。ロード初期化は、１１３０において送信されたフィンガープリントに基づいてフィンガープリント又は認証コードを受け取ることを含んでもよい。１１４２において、ロードターミナルから受け取られた論理的ＡＰＤＵが処理される。この処理は、論理的ＡＰＤＵペイロードに対して認証フィンガープリントを計算することを含む。又、この処理は、１１３０において送信されたフィンガープリントに基づいてフィンガープリント又は認証コードを受け取ることを含んでもよい。１１４４において、受け取ったコンテンツは、ターゲットスマートカード認証コードに基づいて認証される。この認証は、１１３０において送信されたフィンガープリントに基づいてフィンガープリント又は認証コードを受け取ることを含んでもよい。１１４６において、受け取ったコンテンツは、受け取ったフィンガープリントと計算されたフィンガープリントが一致し、且つ受け取ったコンテンツが適切に認証された場合に、スマートカードのメモリへコミットされる。１１４８において、ロードターミナルから受け取られた初期化データを使用して、カードが初期化される。１１５０において、ロードの証拠がロードターミナルへ送信される。
【００５７】
或いは又、図１０及び１１に示すプロセスは、ロードターミナルの認証コード及び／又はターゲットスマートカードの認証コードを使用せずに実行されてもよい。認証コードを使用するかどうかの判断は、ホストコンピュータ１１００、ロードターミナル１１０５及び／又はスマートカード１１１０における信頼性のレベルに少なくとも一部分基づいてもよい。例えば、ロードターミナルの信頼性が高い場合には、図１０及び１１に示すプロセスは、ロードターミナルの認証コードなしに実行することができる。従って、カード発行者がそれ自身のターミナルを使用してカードを更新する場合には、カード発行者は、自分が制御するターミナルを信頼できるので、ターミナル認証コードが必要とされない。しかし、カード発行者から離れた販売点に第三者のターミナルを使用してカードを更新し、そしてカードがユーザに所有されていた場合には、カード発行者がターミナルをほとんど制御できないので、ターミナル認証コードが必要となる。同様に、ターゲットスマートカードの信頼性が高い場合には、図１０及び１１に示すプロセスは、ターゲットスマートカードの認証コードなしに実行されてもよい。
【００５８】
更に、当業者であれば、ターミナル認証コードを生成するための他のメカニズムが使用されてもよいことが明らかであろう。
【００５９】
本発明の一実施形態によれば、ホストコンピュータ１１００及びロードターミナル１１０５は、同じ装置で構成される。
【００６０】
ホストコンピュータ
図１２は、本発明の一実施形態に基づきホストコンピュータからロードターミナルへプログラムデータを通信するメソッドをホストコンピュータの観点から示すフローチャートである。図１２は、図１０の参照番号１０１５−１０２５及び図１１の参照番号１１０６−１１１６に対する詳細を示す。１２００において、ＣＡＰファイルが受け取られる。１２０５において、ＣＡＰファイルが１つ以上の論理的ＡＰＤＵへとディスアッセンブルされる。１２１０において、認証フィンガープリントがＡＰＤＵデータストリームに対して計算される。或いは又、認証フィンガープリントは、論理的ＡＰＤＵを生成する際に計算されてもよい（即ち、ＣＡＰファイルディスアッセンブルプロセス１２０５の一部分として）。１２１５において、ＣＡＰファイルは、認証フィンガープリント、認証フィンガープリントに少なくとも一部分基づく少なくとも１つの認証コード、又はその組合せを含むように増強される。１２２０において、増強されたＣＡＰファイルがロードターミナルへ通信される。
【００６１】
図１３は、本発明の一実施形態に基づきＣＡＰファイルを１つ以上の論理的ＡＰＤＵに区分化するところを示すブロック図である。図１３は、図１２の参照番号１２０５に対する詳細を示す。ＣＡＰファイル１３００は、ＣＡＰファイル内の任意のパッケージに対するパッケージ定義データ１３０５より成る１つ以上のＡＰＤＵへと区分化される。パッケージ定義データは、パッケージ識別子を構成してもよい。パッケージ内のクラスは、パッケージ内の任意のクラスに対するクラス定義データ１３１０より成る１つ以上のＡＰＤＵへ区分化される。クラス定義データは、例えば、クラス識別子、ベースクラス識別子、及び１つ以上のインターフェイス識別子を備えてもよい。クラス内のいずれのメソッドについても、そのメソッドは、メソッド定義データ１３１５より成る１つ以上のＡＰＤＵ及びメソッドコードデータ１３２０より成る１つ以上のＡＰＤＵへと区分化される。クラス内のいずれのフィールドについても、そのフィールドは、フィールド定義データ１３２５より成る１つ以上のＡＰＤＵへと区分化される。スタティックフィールドについては、そのフィールドも、フィールド初期化データ１３３０より成る１つ以上のＡＰＤＵへと区分化される。
【００６２】
メソッド定義データ１３１５は、例えば、メソッド識別子、復帰形式識別子、１つ以上のパラメータ形式識別子、及び１つ以上の投入可能な(throwable)例外形式識別子を含むことができる。メソッドコードデータ１３２０は、例えば、実行可能なバイトコードを含むことができる。フィールド定義データ１３２５は、例えば、フィールドコンテンツ、及びこのフィールドコンテンツに含まれた各フィールドに対するフィールド形式識別子を含むことができる。フィールド初期化データ１３３０は、例えば、コンスタントデータを初期化するのに使用されるデータを含むことができる。
【００６３】
本発明の一実施形態によれば、検証データより成る１つ以上のＡＰＤＵは、パッケージ、クラス又はメソッド等のプログラムユニットに関連付けることができる。検証情報は、ホストコンピュータ又はロードターミナルによりオフカードで計算され、そしてロード時に使用するために及びおそらくはプログラム実行中に使用するためにカードにロードされる。１つ以上の検証ＡＰＤＵは、それに対応する論理的プログラムユニットＡＰＤＵの前にＡＰＤＵデータストリームに挿入されてもよい。又、１つ以上の検証ＡＰＤＵは、それに対応する論理的プログラムユニットＡＰＤＵの後にＡＰＤＵデータストリームに挿入されてもよい。検証データは、実行中にプログラムの振舞いを予想するのに使用するための情報を含む。検証データは、例えば、特定のデータ形式に属する値の限界のようなプリミティブデータ形式情報を含んでもよい。又、検証データは、関連するメソッドコードの実行シミュレーション中にプログラムスタックにおけるエントリーのデータ形式のようなプログラムスタック状態情報も含むことができる。又、プログラムスタック状態情報は、複合データ形式であるクラスへの１つ以上のリファレンスも含むことができる。
【００６４】
本発明の一実施形態によれば、クラス検証ＡＰＤＵは、特定クラスのメソッドに対するメソッド検証ＡＰＤＵの検証データを補足する。このようなクラス検証ＡＰＤＵは、例えば、メソッドごとの検証を実行するときに特定のロード順序で検証情報の入手性が不完全になったときに、使用されてもよい。
【００６５】
本発明の別の実施形態によれば、パッケージ検証ＡＰＤＵは、特定パッケージのクラスに対するクラス検証ＡＰＤＵの検証データを補足する。このようなパッケージ検証ＡＰＤＵは、例えば、クラスごとの検証を実行するときに特定のロード順序で検証情報の入手性が不完全になったときに、使用されてもよい。
【００６６】
形式マップ情報
本発明の別の実施形態によれば、１つ以上の形式マップを使用して検証情報が凝縮される。１つ以上の形式マップは、特定のプログラムユニットに関連した形式のセットを指す。又、１つ以上の形式マップは、対応するコードの実行シミュレーション中にオペランドスタック又はレジスタファイルにおけるエントリーのデータ形式を指す。形式マップは、比較的小さな数を使用して、形式の規定のセットを、その対応コードに使用される形式として指すことにより、検証の最適化を許す。これは、プログラムユニットの検証中にチェックする必要のある形式の比較的凝縮された表示を与える。これは、図１４を参照して以下に詳細に説明する。
【００６７】
図１４は、本発明の一実施形態に基づきプログラムユニット形式マップ情報を使用するメソッドを示すフローチャートである。１４００において、プログラムユニットを受け取る。例えば、Ｊａｖａ（登録商標）技術を使用して、メソッド、クラス又はパッケージが受け取られる。１４０５において、プログラムユニットにより使用される形式を決定する。１４１０において、形式に対するマッピングを生成する。１４１５において、プログラムユニットマッピング情報がプログラムユニットの検証情報に使用される。
【００６８】
本発明の一実施形態によれば、プログラムユニット形式マップ情報を使用して、プログラムユニット内の全ての形式情報を表わす。本発明の別の実施形態によれば、プログラムユニット形式マップ情報を使用して、プログラムユニット内の形式情報のサブセットを表わす。例えば、形式マップを使用して、プログラムユニットにおける最も使用される形式を表わすことができる。
【００６９】
本発明の一実施形態によれば、形式マップは、ビットマップを構成し、形式マップの各ビットは、特定のデータ形式を表わす。例えば、１６ビット形式マップを使用して、１６個の形式を表わすことができる。
【００７０】
本発明の別の実施形態によれば、低レベルプログラムユニットに対する形式マップ情報は、高レベルプログラムユニットに対する形式マップ情報に対して累積的である。例えば、パッケージレベル４ビット形式マップを使用して、パッケージにおける１６個の最も使用される形式を表わすことができる。又、クラスレベル４ビット形式マップを使用して、パッケージレベル形式マップにより表わされる１６個の形式を除いて、クラスにおける１６個の最も使用される形式を表わすことができる。更に別の例として、ビットマップパッケージレベル４ビット形式マップを使用して、パッケージにおける４個の最も使用される形式を表わすことができる。又、ビットマップクラスレベル４ビット形式を使用して、パッケージレベル形式マップにより表わされる４つの形式を除いて、クラスにおける４つの最も使用される形式を表わすことができる。
【００７１】
本発明の一実施形態によれば、トレーラＡＰＤＵは、プログラムユニットに関連した最後のＡＰＤＵを指示する。本発明の別の実施形態によれば、ヘッダＡＰＤＵは、プログラムユニットに関連した１つ以上のＡＰＤＵに先行し、そして次に続く論理的プログラムユニットＡＰＤＵの予想されるシーケンスを定義する。
【００７２】
プログラムエレメントの順序
図１５Ａ−１７Ｃは、本発明の一実施形態に基づきＣＡＰファイルにおけるプログラムエレメントの順序を決定するところを示す。又、図１５Ａ−１７Ｃは、図１０の参照番号１０１５及び図１１の参照番号１１２１に対する更なる詳細を示す。図１５Ａは、順序付けの前のＣＡＰファイルを示し、図１５Ｂは、図１５ＡのＣＡＰファイルにおけるプログラムエレメントの使用グラフを示し、そして図１５Ｃは、図１５Ｂの使用グラフに少なくとも一部分基づきオリジナルＣＡＰファイルにおいてプログラムエレメントを順序付けするところを示す。本発明の一実施形態によれば、オリジナルＣＡＰファイルは、それに対応する使用グラフに少なくとも一部分基づいて順序付けされる。その順序付けされたファイルは、ターゲット装置へ通信される。本発明の別の実施形態によれば、オリジナルＣＡＰファイルは、ＣＡＰファイルコンテンツに対するロード順序を指示する順序指示子を含むように変更される。その変更されたＣＡＰファイルがターゲット装置へ通信される。本発明の別の実施形態によれば、オリジナルＣＡＰファイルと、ＣＡＰファイルコンテンツに対するロード順序を指示する順序指示子とが、ターゲット装置へ通信される。
【００７３】
図１６は、本発明の一実施形態に基づき最適化された検証及びリンクのためにプログラムユニットを順序付けするメソッドを示すフローチャートである。１６００において、スマートカード等の装置をターゲットとする多数のプログラムユニットを含むプログラムを受け取る。１６０５において、プログラムの使用グラフを得る。１６１０において、プログラムユニットを順序付けして、順序付けされたプログラムを生成する。順序付けは、１６０５で得られた使用グラフに少なくとも一部分基づいて行われる。１６１５において、順序付けされたプログラムを装置へ通信する。
【００７４】
本発明の一実施形態によれば、プログラムエレメントを順序付けするための「深さ−第１(depth-first)」の解決策に従う。図１５Ａ−１５Ｃを一例として使用すると、メソッドＡ．Ｂ．Ｃ（１５４０）は、メインメソッドであり、メソッドＡ．Ｂ．Ａ（１５４２）をコールする。メソッドＡ．Ｂ．Ａ（１５４２）は、メソッドＡ．Ｂ．Ｂ（１５４４）を第１に、そしてメソッドＡ．Ａ．Ｂ（１５４６）を第２にコールする。メソッドＡ．Ｂ．Ｂ（１５４４）も、メソッドＡ．Ａ．Ｂ（１５４６）も、他のメソッドをコールしない。又、メソッドＡ．Ｂ．Ｃ（１５４０）は、メソッドＡ．Ａ．Ａ（１５４８）を、次いで、メソッドＡ．Ａ．Ｃ（１５５０）もコールする。図１５Ｂの使用グラフに続いて、深さ−第１で、左から右へ進んで、次の順序が得られる：Ａ．Ｂ．Ｂ（１５４４）、Ａ．Ａ．Ｂ（１５４６）、Ａ．Ｂ．Ａ（１５４２）、Ａ．Ａ．Ａ（１５４８）、Ａ．Ａ．Ｃ（１５５０）、Ａ．Ｂ．Ｃ（１５４０）。これは、図１５Ｃに示された順序付けされたパッケージに反映された順序である。
【００７５】
図１７Ａ−１７Ｃは、使用図に基づいてＣＡＰファイルコンテンツの順序を決定して、よりフラットな順序付けされたＣＡＰファイルを形成するところを示す。図１７Ａ−１７Ｃは、図１５Ａ−１５Ｃと同様であるが、図１５Ｃの順序付けされたＣＡＰファイル１５０２がオリジナルＣＡＰファイル１５００のクラス構造を保持するのに対して、図１７Ｃの順序付けされたＣＡＰファイル１７０２はフラットにされ、従って、ＣＡＰファイル１７００におけるオリジナルのクラス構造を保持しない。図１７Ａは、パッケージ構造化データを含むＣＡＰファイルを示す。図１７Ｂは、図１７ＡのＣＡＰファイル内のプログラムに対応する使用図である。図１７Ｃは、本発明の一実施形態により図１７Ｂの使用図に基づいて順序付けされた図１７ＡのＣＡＰファイルを示す。
【００７６】
図１７Ｃに示すように、最初に使用されるメソッドは、メソッドＡ．Ｂ．Ｂ１７５４である。メソッドＡ．Ｂ．Ｂ１７５４の使用は、クラスＡ．Ｂデータ１７２４及びクラスＡ．Ｂフィールド１７２６を必要とし、従って、この情報は、順序付けされたＣＡＰファイル１７０２においてメソッドＡ．Ｂ．Ｂの前に入れられる。次に使用されるメソッドは、メソッドＡ．Ａ．Ｂ１７５６である。メソッドＡ．Ａ．Ｂ１７５６の使用は、クラスＡ．Ａデータ１７３０及びクラスＡ．Ａフィールド１７３３を必要とする。必要なクラス及びフィールドデータは、順序付けされたＣＡＰファイルにおいて早期に生じないので、必要なクラス及びフィールドデータは、順序付けされたＣＡＰファイル１７０２においてメソッドＡ．Ａ．Ｂ１７３４の前に入れられる。順序付けされたＣＡＰファイル１７０２にその後のメソッドを入れることは、メソッドがどのクラスに属するかに関わらず、使用順序に基づいて行われる。ここに示す例では、それ以上のクラス又はフィールドデータをロードする必要はない。というのは、オリジナルＣＡＰファイル１７００に存在する２つのクラスのみに対するクラス及びフィールドデータが、順序付けされたＣＡＰファイル１７０２に既に入れられているからである。
【００７７】
図１５Ａ−１７Ｃに示されたプログラムエレメント及び使用グラフは、例示に過ぎない。当業者であれば、使用グラフを使用してプログラムの他の部分の使用も表わし得ることが明らかであろう。例えば、使用グラフは、フィールド又は他のプログラム構造の使用を表わしてもよい。更に、特定のパッケージに対するパッケージデータが、得られるファイルにおいて、パッケージのプログラムユニットの前に入れられるようにして、異なるパッケージからのプログラムの部分が、図１７Ｃに示されたものと同様に順序付けされてもよい。又、当業者であれば、プログラムエレメント、及びこれらプログラムエレメント間のコール関係の多数の組合せが可能であることが明らかであろう。
【００７８】
本発明の別の実施形態によれば、コンテクスト情報を各々含むＡＰＤＵが任意に順序付けされる。例えば、ＡＰＤＵは、ＡＰＤＵコンテンツを第２クラスの第４メソッドとして識別する情報を含んでもよい。ＡＰＤＵにコンテクスト情報を含ませることで、全てのスタティックデータ（全てのフィールド、クラス及び名前）を最初にロードし、次いで、全てのメソッドをロードすることが容易にされ、検証及びリンクに使用するためのメソッドにより使用される情報が最初に得られるよう保証する。
【００７９】
本発明の一実施形態によれば、ホストコンピュータは、プログラムデータを含む増強されたＣＡＰファイルに順序付け指示子を挿入する。ロードターミナルは、この順序付け指示子を使用して、ＣＡＰファイルディスアッセンブルプロセスの結果として生成されたＡＰＤＵの順序を決定する。本発明の一実施形態によれば、順序付け指示子は、プログラムの使用グラフに少なくとも一部分基づいている。例えば、形式マップ情報をロードプロセスにおいて比較的後でロードして、必要なメモリの量を最小にすることができる。或いは又、形式マップ情報をロードプロセスにおいて比較的早くロードして、形式を参照したときに形式情報がカードに存在する確率を高めることができる。
【００８０】
本発明の一実施形態によれば、特定のクラスに対応する１つ以上のフィールド定義ＡＰＤＵ１３２５及びフィールド初期化ＡＰＤＵ１３３０は、そのクラスの対応するメソッド定義ＡＰＤＵ１３１５又はメソッドコードＡＰＤＵ１３２０の前に処理される。
【００８１】
ＣＡＰファイルのディスアッセンブル
図１８及び１９は、本発明の実施形態に基づき論理的ＡＰＤＵへＣＡＰファイルをディスアッセンブルするところをホストコンピュータの観点から示すフローチャートである。図１８は、検証データを含まないＣＡＰファイルをディスアッセンブルするところを示し、そして図１９は、検証データを含むＣＡＰファイルをディスアッセンブルするところを示す。
【００８２】
図１８は、本発明の一実施形態に基づきＣＡＰファイルを論理的ＡＰＤＵへとディスアッセンブルするメソッドを示すフローチャートである。ボックス１８００内に示すプロセスは、パッケージごとに実行される。１８０５において、パッケージ定義データより成る１つ以上のパッケージ定義ＡＰＤＵをパッケージに対して生成する。ボックス１８１０内に示すプロセスは、クラスごとに実行される。１８１５において、クラス定義データより成る１つ以上のクラス定義ＡＰＤＵをクラスに対して生成する。１８２０において、フィールド定義データより成る１つ以上のフィールド定義ＡＰＤＵをクラスに対して生成する。ボックス１８２５内に示されたプロセスは、メソッドごとに実行される。１８３５において、メソッド定義データより成る１つ以上のメソッド定義ＡＰＤＵをメソッドに対して生成する。１８４０において、メソッドコードより成る１つ以上のコードＡＰＤＵをメソッドに対して生成する。１８３０において、１つ以上のデータ初期化ＡＰＤＵを生成する。
【００８３】
本発明の実施形態によれば、検証データは、プログラムユニットに対して生成することができる。検証データは、パッケージ、クラス、メソッド等、又はその組合せのようなプログラムユニットに対して生成することができる。上述したように、プログラムユニットに対する検証データは、ＡＰＤＵストリームにおいて、それに対応するプログラムユニットコードＡＰＤＵ又はプログラムユニット定義ＡＰＤＵの前に挿入することができる。一実施形態では、検証データは、それに対応するプログラムユニットコードＡＰＤＵ又はプログラムユニット定義ＡＰＤＵの直前に挿入される。或いは又、プログラムユニットに対する検証データは、ＡＰＤＵストリームにおいて、それに対応するプログラムユニットコードＡＰＤＵ又はプログラムユニット定義ＡＰＤＵの後に挿入されてもよい。一実施形態では、検証データは、それに対応するプログラムユニットコードＡＰＤＵ又はプログラムユニット定義ＡＰＤＵの直後に挿入される。これは、図１９を参照して以下に詳細に説明する。
【００８４】
図１９は、本発明の一実施形態に基づきＣＡＰファイルを、検証データより成るＡＰＤＵを含む論理的ＡＰＤＵへとディスアッセンブルするメソッドを示すフローチャートである。図１９は、図１８と同様であるが、図１９には、参照番号１９４０、１９４５及び１９５５において検証データが含まれる。ボックス１９００内に示されたプロセスは、パッケージごとに実行される。１９０５において、パッケージ定義データより成る１つ以上のパッケージ定義ＡＰＤＵをパッケージに対して生成する。ボックス１９１０内に示すプロセスをクラスごとに実行する。１９１５において、クラス定義データより成る１つ以上のクラス定義ＡＰＤＵをクラスに対して生成する。１９２０において、フィールド定義データより成る１つ以上のフィールド定義ＡＰＤＵをクラスに対して生成する。ボックス１９２５内に示されたプロセスは、メソッドごとに実行される。１９３０において、メソッド定義データより成る１つ以上のメソッド定義ＡＰＤＵをメソッドに対して生成する。１９３５において、メソッドコードより成る１つ以上のコードＡＰＤＵをメソッドに対して生成する。１９４０において、メソッド検証データより成る１つ以上のメソッド検証ＡＰＤＵをメソッドに対して生成する。１９４５において、クラス検証データより成る１つ以上のクラス検証ＡＰＤＵをクラスに対して生成する。１９５０において、１つ以上のデータ初期化ＡＰＤＵを生成する。１９５５において、パッケージ検証データより成る１つ以上のパッケージ検証ＡＰＤＵをパッケージに対して生成する。
【００８５】
本発明の実施形態によれば、１つ以上の検証ＡＰＤＵが、それに対応する１つ以上のコード又は定義ＡＰＤＵの前及び／又は後にＡＰＤＵに挿入される。図１９を一例として使用すると、１つ以上のパッケージ検証ＡＰＤＵは、それに対応する１つ以上のパッケージ定義ＡＰＤＵを挿入した（１９０５）後に、ＡＰＤＵストリームに挿入することができる（１９５５）。或いは又、１つ以上のパッケージ検証ＡＰＤＵは、それに対応する１つ以上のパッケージ定義ＡＰＤＵを挿入する前に、ＡＰＤＵストリームに挿入してもよい。同様に、１つ以上のクラス検証ＡＰＤＵは、それに対応する１つ以上のクラス定義ＡＰＤＵを挿入した（１９１５）後に、ＡＰＤＵストリームに挿入することができる（１９４５）。或いは又、１つ以上のクラス検証ＡＰＤＵは、それに対応する１つ以上のクラス定義ＡＰＤＵを挿入する前に、ＡＰＤＵストリームに挿入してもよい。更に別の例として、１つ以上のメソッド検証ＡＰＤＵは、それに対応する１つ以上のメソッド定義ＡＰＤＵを挿入した（１９３０）後に、ＡＰＤＵストリームに挿入することができる（１９４０）。或いは又、１つ以上のメソッド検証ＡＰＤＵは、それに対応する１つ以上のメソッド定義ＡＰＤＵを挿入する前に、ＡＰＤＵストリームに挿入されてもよい。対応する１つ以上のコード又は定義ＡＰＤＵに先行するか又は後続する検証ＡＰＤＵは、例えば、１つ以上の形式マップを含んでもよい。
【００８６】
図２０Ａ及び２０Ｂは、本発明の一実施形態に基づき認証フィンガープリントをＡＰＤＵデータストリームに対して計算するメソッドを示すフローチャートである。図２０Ａ及び２０Ｂは、図１１の参照番号１１０８に対して更なる詳細を示す。図２０Ａは、検証ＡＰＤＵを使用して認証フィンガープリントを決定するときに認証フィンガープリントを計算するところを示す。図２０Ｂは、認証フィンガープリントを決定するのに検証ＡＰＤＵを使用しないときに認証フィンガープリントを計算するところを示す。図２０Ａ及び２０Ｂに示されたプロセスは、以下に述べるように、認証フィンガープリントを計算するためにロードターミナル（図１１の参照番号１１２８及び１１３０）及びターゲットスマートカード（図１１の参照番号１１４２）により使用される同じプロセスである。
【００８７】
図２０は、本発明の一実施形態に基づき認証フィンガープリントをＡＰＤＵデータストリームに対して計算するメソッドを示すフローチャートである。図２０Ａを参照すれば、２０００において、認証フィンガープリントを初期化する。２００５において、論理的ＡＰＤＵを受け取る。２０１０において、論理的ＡＰＤＵペイロードに対してフィンガープリントを計算する。フィンガープリントの計算は、以前に計算されたフィンガープリントの結果を使用する。２０１５において、処理されるべき別の論理的ＡＰＤＵが残っているかどうかについて決定がなされる。付加的なＡＰＤＵの処理が２００５で続けられる。
【００８８】
図２０Ｂを参照すれば、２０２０において、認証フィンガープリントを初期化する。２０２５において、論理的ＡＰＤＵを受け取る。２０３０において、ＡＰＤＵが検証ＡＰＤＵであるかどうかの決定がなされる。ＡＰＤＵが検証ＡＰＤＵでない場合には、２０３５において、論理的ＡＰＤＵペイロードに対してフィンガープリントを計算する。フィンガープリントの計算は、以前に計算されたフィンガープリントの結果を使用する。２０４０において、処理されるべき別の論理的ＡＰＤＵが残っているかどうかについて決定がなされる。付加的なＡＰＤＵの処理が２０２５で続けられる。
【００８９】
ロードターミナル
図２１は、本発明の一実施形態に基づきホストコンピュータからロードターミナルへプログラムデータを通信するメソッドをロードターミナルの観点から示すフローチャートである。図２１は、図１０の参照番号１０３０−１０４５及び図１１の参照番号１１１８−１１３６に対する更なる詳細を示す。２１００において、増強されたＣＡＰファイルを受け取る。２１０５において、認証コード及びフィンガープリントを、増強されたＣＡＰファイルから分離する。２１１０において、リンク情報を得る。リンク情報は、カードがコール可能なルーチンを与えそしてそれらをいかに参照するかといったメソッドをリンクするのに必要な情報を含む。リンク情報は、外部ソースから得ることができる。例えば、ロードターミナルは、ウェブを経て、特定のターゲットスマートカードのリンク情報の知識を有する中央貯蔵部と通信することができる。外部ソースからリンク情報を得る更に別の例として、ロードターミナルは、ターゲットスマートカードそれ自体から情報を得てもよい。
【００９０】
更に、図２１を参照すれば、２１１５において、増強されたＣＡＰファイルを、１つ以上の論理的ＡＰＤＵへディスアッセンブルする。２１２０において、１つ以上の論理的ＡＰＤＵをスマートカードへ通信すると共に、ＡＰＤＵペイロードに対して認証フィンガープリントを計算する。２１１５及び２１２０のプロセスは、上述したようにホストコンピュータにより実行された図１２のプロセス１２０５及び１２１０と、以下に述べるようにターゲットスマートカードにより実行される図２９のプロセス２９０５及び図３０の３００５と同様である。プロセスの類似性は、ＡＰＤＵペイロードが同じに保たれる場合に、計算を実行するエンティティに関わらず、同じ認証フィンガープリントが発生されることを保証する。逆に、各エンティティが計算を実行するたびにＡＰＤＵペイロードが変化する場合には、異なるフィンガープリントが発生されて、ペイロードの変化を通知する。
【００９１】
更に、図２１を参照すれば、プロセス２１２５は、ＣＡＰファイルが認証フィンガープリントを任意に含むときに適用される。ＣＡＰファイルが認証フィンガープリントを含む場合には、２１０５において増強されたＣＡＰファイルから抽出されたフィンガープリントが、２１２０において計算されたフィンガープリントに一致するかどうかの決定がなされる。フィンガープリントが一致する場合には、２１３０において、特定のターゲットスマートカードに適したターゲットスマートカード認証コードがＣＡＰファイルから抽出される。２１３５において、フィンガープリント、認証コード又はその両方が、ターゲットスマートカードへ送信される。２１４０において、初期化命令が実行され、それにより得られたデータがロードされる。２１４５において、ロードの証拠がスマートカードから受け取られる。本発明の一実施形態によれば、ロードの証拠は、記憶コミットメントフィンガープリントを含む。
【００９２】
図２１に示すように、ロードターミナルは、増強されたＣＡＰファイルを論理的ＡＰＤＵへとディスアッセンブルし（２１１５）、次いで、論理的ＡＰＤＵをターゲットスマートカードへ送信するときに論理的ＡＰＤＵペイロードに対して認証フィンガープリントを計算する（２１２０）。或いは又、認証フィンガープリントの計算は、ディスアッセンブルプロセス（２１１５）とインターリーブされてもよい。更にそれとは別に、ターゲットスマートカードへのＡＰＤＵの送信及び認証フィンガープリントの計算の両方が、ディスアッセンブルプロセス（２１１５）とインターリーブされてもよい。
【００９３】
先に述べたように、ロードターミナルにより受け取られた増強されたＣＡＰファイルは、検証データを含むことができる。又、ロードターミナルは、検証データなしにＣＡＰファイルを受け取り、検証データを計算し、そのデータを含む１つ以上のＡＰＤＵを生成し、そして１つ以上のＡＰＤＵをターゲットスマートカードへ送信することもできる。認証フィンガープリントの計算に検証データを含ませるべきかどうかに関する決定は、ロードターミナルにより受け取られたＣＡＰファイルが検証データを含むかどうか、及びターゲットスマートカードが検証データを必要とするかどうかに基づいて行われる。受け取られたＣＡＰファイルが検証データを含む場合には、認証フィンガープリントが、検証データに対して更に計算される。受け取られたＣＡＰファイルが検証データを含まない場合には、ロードターミナルが検証データを発生してこれがターゲットスマートカードに送信されるかどうかに関わらず、認証フィンガープリントが検証データに対して計算されない。
【００９４】
又、ロードターミナルは、ＣＡＰファイルを受け取り、リンクデータを計算し、そのデータを含む１つ以上のＡＰＤＵを生成し、そして１つ以上のＡＰＤＵをターゲットスマートカードへ送信してもよい。図２２−２７は、本発明の実施形態に基づき、増強されたＣＡＰファイルを１つ以上の論理的ＡＰＤＵへとディスアッセンブルするメソッドをロードターミナルの観点から示すフローチャートである。図２２−２７は、図２１の参照番号２１１５に対する更なる詳細を示す。先に述べたように、ディスアッセンブルされるべきＣＡＰファイルのプログラムエレメントは、図２２−２７に示すディスアッセンブルプロセスの前に、最適な検証及びリンクのために順序付けすることができる（図１１の参照番号１１２１）。図２２は、増強されたＣＡＰファイルを１つ以上の論理的ＡＰＤＵへとディスアッセンブルするところを示す。図２３は、検証データを含む増強されたＣＡＰファイルを、検証データより成るＡＰＤＵを含む１つ以上の論理的ＡＰＤＵへとディスアッセンブルするところを示す。図２４は、検証データを含まない増強されたＣＡＰファイルを、検証データより成るＡＰＤＵを含む１つ以上の論理的ＡＰＤＵへとディスアッセンブルするところを示す。図２５は、増強されたＣＡＰファイルを、リンクデータより成るＡＰＤＵを含む１つ以上の論理的ＡＰＤＵへとディスアッセンブルするところを示す。図２６は、検証データを含む増強されたＣＡＰファイルを、検証データより成るＡＰＤＵ及びリンクデータより成るＡＰＤＵを含む１つ以上の論理的ＡＰＤＵへとディスアッセンブルするところを示す。図２７は、検証データを含まない増強されたＣＡＰファイルを、検証データより成るＡＰＤＵ及びリンクデータより成るＡＰＤＵを含む１つ以上の論理的ＡＰＤＵへとディスアッセンブルするところを示す。
【００９５】
図２２は、本発明の一実施形態に基づき増強されたＣＡＰファイルを１つ以上の論理的ＡＰＤＵへとディスアッセンブルするメソッドを示すフローチャートである。図２２は、図１８に示すようにホストコンピュータにより実行されるプロセスと同様である。ボックス２２００内に示すプロセスは、パッケージごとに実行される。２２０５において、パッケージ定義データより成る１つ以上のパッケージ定義ＡＰＤＵをパッケージに対して生成する。ボックス２２１０内に示すプロセスは、クラスごとに実行される。２２１５において、クラス定義データより成る１つ以上のクラス定義ＡＰＤＵをクラスに対して生成する。２２２０において、フィールド定義データより成る１つ以上のフィールド定義ＡＰＤＵをクラスに対して生成する。ボックス２２２５内に示されたプロセスは、メソッドごとに実行される。２２３０において、メソッド定義データより成る１つ以上のメソッド定義ＡＰＤＵをメソッドに対して生成する。２２３５において、メソッドコードより成る１つ以上のコードＡＰＤＵをメソッドに対して生成する。２２４０において、１つ以上のデータ初期化ＡＰＤＵを生成する。
【００９６】
図２３は、本発明の一実施形態に基づき、検証データを含む増強されたＣＡＰファイルを、検証データより成るＡＰＤＵを含む１つ以上の論理的ＡＰＤＵへとディスアッセンブルするメソッドを示すフローチャートである。図２３は、図１９に示すようにホストコンピュータにより実行されるプロセスと同様である。ボックス２３００内に示されたプロセスは、パッケージごとに実行される。２３０５において、パッケージ定義データより成る１つ以上のパッケージ定義ＡＰＤＵをパッケージに対して生成する。ボックス２３１０内に示すプロセスをクラスごとに実行する。２３１５において、クラス定義データより成る１つ以上のクラス定義ＡＰＤＵをクラスに対して生成する。２３２０において、フィールド定義データより成る１つ以上のフィールド定義ＡＰＤＵをクラスに対して生成する。ボックス２３２５内に示されたプロセスは、メソッドごとに実行される。２３３０において、メソッド定義データより成る１つ以上のメソッド定義ＡＰＤＵをメソッドに対して生成する。２３３５において、メソッドコードより成る１つ以上のコードＡＰＤＵをメソッドに対して生成する。２３４０において、メソッド検証データより成る１つ以上のメソッド検証ＡＰＤＵをメソッドに対して生成する。２３４５において、クラス検証データより成る１つ以上のクラス検証ＡＰＤＵをクラスに対して生成する。２３５０において、１つ以上のデータ初期化ＡＰＤＵを生成する。２３５５において、パッケージ検証データより成る１つ以上のパッケージ検証ＡＰＤＵをパッケージに対して生成する。
【００９７】
図２４は、本発明の一実施形態に基づき、検証データを含まない増強されたＣＡＰファイルを、検証データより成るＡＰＤＵを含む１つ以上の論理的ＡＰＤＵへとディスアッセンブルするメソッドを示すフローチャートである。図２４は、図２３に類似しているが、図２４では、検証データが計算され（２４４０、２４４５、２４５５）、一方、図２３では、１つ以上の検証ＡＰＤＵを形成する（２３４０、２３４５、２３５５）のに使用される検証データが、増強されたＣＡＰファイルから抽出される。ボックス２４００内に示されたプロセスは、パッケージごとに実行される。２４０５において、パッケージ定義データより成る１つ以上のパッケージ定義ＡＰＤＵをパッケージに対して生成する。ボックス２４１０内に示すプロセスをクラスごとに実行する。２４１５において、クラス定義データより成る１つ以上のクラス定義ＡＰＤＵをクラスに対して生成する。２４２０において、フィールド定義データより成る１つ以上のフィールド定義ＡＰＤＵをクラスに対して生成する。ボックス２４２５内に示されたプロセスは、メソッドごとに実行される。２４３０において、メソッド定義データより成る１つ以上のメソッド定義ＡＰＤＵをメソッドに対して生成する。２４３５において、メソッドコードより成る１つ以上のコードＡＰＤＵをメソッドに対して生成する。２４４０において、メソッド検証データを計算し、そしてメソッド検証データより成る１つ以上のメソッド検証ＡＰＤＵをメソッドに対して生成する。２４４５において、クラス検証データを計算し、そしてクラス検証データより成る１つ以上のクラス検証ＡＰＤＵをクラスに対して生成する。２４５０において、１つ以上のデータ初期化ＡＰＤＵを生成する。２４５５において、パッケージ検証データを計算し、そしてパッケージ検証データより成る１つ以上のパッケージ検証ＡＰＤＵをパッケージに対して生成する。
【００９８】
図２５は、本発明の一実施形態に基づき、増強されたＣＡＰファイルを、リンクデータより成るＡＰＤＵを含む１つ以上の論理的ＡＰＤＵへとディスアッセンブルするメソッドを示すフローチャートである。図２５は、図２２に類似しているが、図２５では、メソッドごとのリンクＡＰＤＵが生成される（２５４０）。ボックス２５００内に示すプロセスは、パッケージごとに実行される。２５０５において、パッケージ定義データより成る１つ以上のパッケージ定義ＡＰＤＵをパッケージに対して生成する。ボックス２５１０内に示すプロセスは、クラスごとに実行される。２５１５において、クラス定義データより成る１つ以上のクラス定義ＡＰＤＵをクラスに対して生成する。２５２０において、フィールド定義データより成る１つ以上のフィールド定義ＡＰＤＵをクラスに対して生成する。ボックス２５２５内に示されたプロセスは、メソッドごとに実行される。２５３０において、メソッド定義データより成る１つ以上のメソッド定義ＡＰＤＵをメソッドに対して生成する。２５３５において、メソッドコードより成る１つ以上のコードＡＰＤＵをメソッドに対して生成する。２５４０において、メソッドごとのリンクＡＰＤＵを生成する。２５４５において、１つ以上のデータ初期化ＡＰＤＵを生成する。
【００９９】
図２６は、本発明の一実施形態に基づき、検証データを含む増強されたＣＡＰファイルを、検証データより成るＡＰＤＵ及びリンクデータより成るＡＰＤＵを含む１つ以上の論理的ＡＰＤＵへとディスアッセンブルするメソッドを示すフローチャートである。図２６は、図２３及び２５の結合を表わす。ボックス２６００内に示されたプロセスは、パッケージごとに実行される。２６０５において、パッケージ定義データより成る１つ以上のパッケージ定義ＡＰＤＵをパッケージに対して生成する。ボックス２６１０内に示すプロセスをクラスごとに実行する。２６１５において、クラス定義データより成る１つ以上のクラス定義ＡＰＤＵをクラスに対して生成する。２６２０において、フィールド定義データより成る１つ以上のフィールド定義ＡＰＤＵをクラスに対して生成する。ボックス２６２５内に示されたプロセスは、メソッドごとに実行される。２６３０において、メソッド定義データより成る１つ以上のメソッド定義ＡＰＤＵをメソッドに対して生成する。２６３５において、メソッドコードより成る１つ以上のコードＡＰＤＵをメソッドに対して生成する。２６４０において、メソッド検証データより成る１つ以上のメソッド検証ＡＰＤＵをメソッドに対して生成する。２６４５において、メソッドごとのリンクＡＰＤＵを生成する。２６５０において、クラス検証データより成る１つ以上のクラス検証ＡＰＤＵをクラスに対して生成する。２６５５において、１つ以上のデータ初期化ＡＰＤＵを生成する。２６６０において、パッケージ検証データより成る１つ以上のパッケージ検証ＡＰＤＵをパッケージに対して生成する。
【０１００】
図２７は、本発明の一実施形態に基づき、検証データを含まない増強されたＣＡＰファイルを、検証データより成るＡＰＤＵ及びリンクデータより成るＡＰＤＵを含む１つ以上の論理的ＡＰＤＵへとディスアッセンブルするメソッドを示すフローチャートである。図２７は、図２４及び２５の結合である。ボックス２７００内に示されたプロセスは、パッケージごとに実行される。２７０５において、パッケージ定義データより成る１つ以上のパッケージ定義ＡＰＤＵをパッケージに対して生成する。ボックス２７１０内に示すプロセスをクラスごとに実行する。２７１５において、クラス定義データより成る１つ以上のクラス定義ＡＰＤＵをクラスに対して生成する。２７２０において、フィールド定義データより成る１つ以上のフィールド定義ＡＰＤＵをクラスに対して生成する。ボックス２７２５内に示されたプロセスは、メソッドごとに実行される。２７３０において、メソッド定義データより成る１つ以上のメソッド定義ＡＰＤＵをメソッドに対して生成する。２７３５において、メソッドコードより成る１つ以上のコードＡＰＤＵをメソッドに対して生成する。２７４０において、メソッド検証データを計算し、そしてメソッド検証データより成る１つ以上のメソッド検証ＡＰＤＵをメソッドに対して生成する。２７４５において、メソッドごとのリンクＡＰＤＵを生成する。２７５０において、クラス検証データを計算し、そしてクラス検証データより成る１つ以上のクラス検証ＡＰＤＵをクラスに対して生成する。２７５５において、１つ以上のデータ初期化ＡＰＤＵを生成する。２７６０において、パッケージ検証データを計算し、そしてパッケージ検証データより成る１つ以上のパッケージ検証ＡＰＤＵをパッケージに対して生成する。
【０１０１】
図２８は、本発明の一実施形態に基づき１つ以上のメソッドリンクＡＰＤＵを生成するためのメソッドを示すフローチャートである。図２８は、図２５の参照番号２５４０、図２６の参照番号２６４５、及び図２７の参照番号２７４５に対する更なる詳細を示す。２８００において、検証可能なリンク命令を、カードからの論理的メモリレイアウト及び情報に基づいて計算する。ロードターミナルは、図２１の参照番号２１１０に関して上述したようにこの情報を既に得ている。２８０５において、検証可能なリンク命令を含むリンクＡＰＤＵを生成する。
【０１０２】
スマートカード
図２９は、本発明の一実施形態に基づきロードターミナルからスマートカードへプログラムデータを通信するメソッドをスマートカードの観点から示すフローチャートである。図２９は、図１０の参照番号１０５０−１０６５及び図１１の参照番号１１４０−１１５０に対する更なる詳細を示す。２９００において、ロード初期化を実行する。２９０５において、１つ以上の論理的ＡＰＤＵを処理して、それらのフィールドにロードのためのデータを準備する。この処理は、認証フィンガープリントの計算を含む。２９１０において、認証フィンガープリントＡＰＤＵを受け取る。或いは又、認証フィンガープリントは、ロード初期化（２６００）の一部分として、又はＡＰＤＵ処理（２６０５）の一部分として受け取られてもよい。
【０１０３】
更に、図２９を参照すれば、２９１５において、その受け取った認証フィンガープリントが、２９０５において計算された認証フィンガープリントに一致するかどうかの決定がなされる。受け取った認証フィンガープリントが、計算された認証フィンガープリントに一致しない場合には、２９４５において、失敗指示がなされる。受け取った認証フィンガープリントが、計算された認証フィンガープリントに一致する場合には、２９２０において、ターゲットスマートカード認証コードを受け取り、そして２９２５において、そのターゲットスマートカード認証コードに基づいて認証を行う。２９３０において、認証が成功であったかどうかの決定がなされる。認証が不成功であった場合には、２９４５において、失敗指示がなされる。認証が成功であった場合には、２９３５において、プログラムデータをスマートカードメモリへコミットし、２９４０において、ロードの証拠を与える。プログラムデータは、最終的に記憶されるプログラムデータに対して計算された記憶コミットメントフィンガープリントにプログラムデータを関連付けることにより、スマートカードメモリへコミットされてもよい。本発明の一実施形態によれば、ロードの証拠は、記憶コミットメントフィンガープリントを含む。本発明の別の実施形態によれば、ロードの証拠は、記憶コミットメントフィンガープリントに少なくとも一部分基づく認証コードを含む。
【０１０４】
図３０は、本発明の一実施形態に基づきＨＭＡＣである認証フィンガープリントを使用してロードターミナルからスマートカードへプログラムデータを通信するメソッドをスマートカードの観点から示すフローチャートである。図３０は、図２９と同様であるが、図２９の決定２９３０及び２９１５は、図３０の決定３０１５と同等である。ＨＭＡＣは、フィンガープリント及びメッセージ認証コードの両方であるので、プログラムデータは、受け取った認証フィンガープリントが、計算された認証フィンガープリントに一致するときに、スマートカードメモリへコミットすることができる。３０００において、ロード初期化を実行する。３００５において、１つ以上の論理的ＡＰＤＵを処理して、それらのデータフィールドにロードのためのデータを準備する。この処理は、認証フィンガープリントの計算を含む。３０１０において、認証フィンガープリントＡＰＤＵを受け取る。或いは又、認証フィンガープリントは、ロード初期化（２６００）の一部分として、又はＡＰＤＵ処理（２６０５）の一部分として受け取られてもよい。
【０１０５】
更に、図３０を参照すると、３０１５において、その受け取った認証フィンガープリントが、３００５において計算された認証フィンガープリントに一致するかどうかの決定がなされる。受け取った認証フィンガープリントが、計算された認証フィンガープリントに一致しない場合には、３０３０において、失敗指示がなされる。受け取った認証フィンガープリントが、計算された認証フィンガープリントに一致する場合には、３０２０において、プログラムデータをスマートカードメモリへコミットし、３０２５において、ロードの証拠を与える。プログラムデータは、最終的に記憶されるプログラムデータに対して計算された記憶コミットメントフィンガープリントにプログラムデータを関連付けることにより、スマートカードメモリへコミットされてもよい。本発明の一実施形態によれば、ロードの証拠は、記憶コミットメントフィンガープリントを含む。本発明の別の実施形態によれば、ロードの証拠は、記憶コミットメントフィンガープリントに少なくとも一部分基づく認証コードを含む。
【０１０６】
図３１は、本発明の一実施形態に基づきロード初期化を実行するメソッドを示すフローチャートである。図３１は、図２９の参照番号２９００及び図３０の参照番号３０００に対する更なる詳細を示す。３１００において、ロードのための要求を受け取る。３１０５において、その要求を認証し、ロードプロセスを行うべきかどうか決定する。３１１０において、３１０５における認証が成功であったかどうかの決定がなされる。認証が成功でない場合には、３１３０において失敗で終了となる。認証が成功であった場合には、３１１５において、ロードパラメータをチェックし、カードの既知の特性及びロードされるべきプログラムデータに基づいて、ロードを行うことができるかどうか決定する。例えば、カードのメモリ容量が、ロードされるべきプログラムデータに必要なものより少ない場合には、ロードが失敗になるという指示がなされる。更に、ロードされるべきプログラムデータが、カードに現在存在しないクラス及びロードされるべきプログラムデータの一部分でないクラスを必要とする場合には、ロードが失敗になるという指示がなされる。３１２０において、プロセス３１１５の結果に基づいて、ロードを続行できるかどうかの決定がなされる。ロードを続行できる場合には、３１２５において、ロードの準備がなされる。この準備は、例えば、１つ以上の認証フィンガープリント及び１つ以上の記憶コミットメントフィンガープリントを初期化することを含む。ロードを続行できない場合には、３１３０において、ロードプロセスが失敗で終了となる。
【０１０７】
或いは又、プロセス３１０５及び３１１５の順序を入れ替えて、プロセス３１１５をプロセス３１０５の前に実行してもよい。しかしながら、プロセス３１０５及び３１１５のいずれかが失敗となった場合には、３１３０において、ロード初期化が失敗で終了となる。
【０１０８】
図３２は、本発明の一実施形態に基づき論理的ＡＰＤＵストリームを処理するメソッドを示すフローチャートである。図３２は、図２９の参照番号２９０５及び図３０の参照番号３００５に対する更なる詳細を示す。３２００において、論理的ＡＰＤＵを受け取る。３２０５において、論理的ＡＰＤＵを前処理する。この前処理は、例えば、現在のＡＰＤＵが別のプログラムユニットの第１のＡＰＤＵである場合に、以前のプログラムユニットの処理を終わらせることを含んでもよい。又、この前処理は、例えば、暗号解読を含んでもよい。前処理の結果は、論理的ＡＰＤＵが有効であるかどうかの指示である。３２１０において、論理的ＡＰＤＵが有効であるかどうかの決定がなされる。論理的ＡＰＤＵが有効でない場合には、３２１５において、ロードが中止される。論理的ＡＰＤＵが有効である場合には、３２１０において、認証フィンガープリントを計算し、そして３２２５において、受け取った論理的ＡＰＤＵを処理して、論理的ＡＰＤＵのデータフィールドにデータを記憶のために準備する。この処理は、例えば、他のプログラムユニットへのリファレンスを解明することを含んでもよい。３２３０において、記憶された結果が要求されたかどうかの決定がなされる。あるＡＰＤＵは、永続的な記憶を必要としない。例えば、先行又は後続ＡＰＤＵに関する情報を含むだけのＡＰＤＵは、永続的記憶を要求しないことがある。記憶された結果が要求される場合には、その結果を３２２５において記憶する。３２４０において、以前に計算された記憶コミットメントフィンガープリントの結果を使用して、その記憶された結果に対して記憶コミットメントフィンガープリントを計算する。
【０１０９】
図３３は、本発明の一実施形態に基づき認証フィンガープリントを計算するメソッドを示すフローチャートである。図３３は、図３２の参照番号３２２０に対する詳細を示す。３３００において、ＡＰＤＵがリンクＡＰＤＵであるかどうかの決定がなされる。ＡＰＤＵがリンクＡＰＤＵでない場合には、３３０５において、ＡＰＤＵが検証ＡＰＤＵであるかどうかの決定がなされる。ＡＰＤＵが検証ＡＰＤＵである場合には、３３１０において、検証ＡＰＤＵが認証フィンガープリントの一部分であるかどうかの決定がなされる。ＡＰＤＵがリンクＡＰＤＵでも検証ＡＰＤＵでもないか、又はＡＰＤＵが検証ＡＰＤＵであり且つ検証ＡＰＤＵが認証フィンガープリントの一部分である場合には、３３１５において、以前に計算された認証フィンガープリントを使用して、論理的ＡＰＤＵペイロードに対して認証フィンガープリントを計算する。
【０１１０】
図３２に示すように、論理的ＡＰＤＵの受信（３２００）は、認証フィンガープリントの計算（３２２０）及び記憶コミットメントフィンガープリントの計算（３２４０）とインターリーブされる。或いは又、スマートカードは、１つ以上の論理的ＡＰＤＵを受け取り、次いで、その受け取った１つ以上のＡＰＤＵに対して認証フィンガープリント及び記憶コミットメントフィンガープリントを計算してもよい。
【０１１１】
図３４は、本発明の一実施形態に基づき論理的ＡＰＤＵを処理するメソッドを示すフローチャートである。図３４は、図３２の参照番号３２２５に対する更なる詳細を示す。３４００において、検証情報を受け入れる。３４０５において、検証情報を使用して、論理的ＡＰＤＵを検証する。３４１０において、論理的ＡＰＤＵが首尾良く検証されたかどうかの決定がなされる。論理的ＡＰＤＵが首尾良く検証された場合には、３４１５において、リンク情報を受け入れ、そして３４２０において、リンク情報を使用してリンクを行う。
【０１１２】
バーチャルメソッドジャンプテーブル
図７を参照して説明したデータ構造は、スタティックメソッド、即ち単一のコールアドレスを有するメソッドへリンクすることを示す。Ｊａｖａ（登録商標）言語のようなオブジェクト指向の言語は、バーチャルメソッド、即ち多数のコピーをもち得るメソッドをサポートする。Ｊａｖａ（登録商標）言語では、バーチャルメソッドをクラスにおいて宣言できると共に、クラスのサブクラスは、そのバーチャルメソッドをオーバーライドするか、又はバーチャルメソッドのそれ自身のインスタンスをそれに置き換えることができる。サブクラスのインスタンスは、サブクラスにおいてオーバーライドされたメソッドのバージョンを参照し、一方、クラスのインスタンスは、クラスにおいて宣言されたバーチャルメソッドを参照する。
【０１１３】
本発明の一実施形態によれば、バーチャルメソッドをリンクするための能力は、少なくとも一度オーバーライドされた各バーチャルメソッドに対してジャンプテーブルを生成することにより与えられる。ジャンプテーブルは、バーチャルメソッドの各インスタンスのアドレスを含む。オブジェクトコンストラクタは、「形式」パラメータを受け入れるように書き直され、コンストラクタコールは、形式情報を与えるように書き直され、そしてバーチャルメソッドプログラムコールは、コールされるオブジェクトの現在形式の指示を含むように書き直される。現在形式の指示は、適切なバーチャルメソッドコードのアドレスが得られるところの対応するバーチャルメソッドジャンプテーブルへのインデックスとして使用される。これは、図３５−３７を参照して以下に詳細に説明する。
【０１１４】
図３５は、本発明の一実施形態に基づきバーチャルメソッドを含むプログラムをリンクするためのデータ構造を示すブロック図である。図３５に示すように、サブクラスＮ（３５０５）は、クラスＭ（３５００）の延長であり、メソッドＡ（３５２５）もＢ（３５３０）もオーバーライドしない。サブクラスＯ（３５１０）は、クラスＭ（３５００）の延長であり、メソッドＡ（３５２５）をオーバーライドする。メソッドＯ．Ａ（３５５０）へのコールは、実際に、メソッドＯ．Ａ（３５５０）をコールするが、メソッドＭ．Ａ（３５２５）はコールしない。ジャンプテーブル３３２０は、クラスインスタンスデータにおける形式識別子の値によりインデックスされる。ジャンプテーブル３５２０の各エントリーは、少なくとも１つのインスタンスを有するクラスにおけるバーチャルメソッドごとに、そのインデックスに対応するバーチャルメソッドインスタンスのアドレスを含む。オーバーライドされたメソッドＭ．Ａ（３５２５）への各コールは、形式識別子を含む。この形式識別子は、ジャンプテーブル３３２０において、バーチャルメソッドインスタンスに対応するコードのアドレスを得るためのインデックスとして使用される。サブクラスＮ（３５０５）及びサブクラスＯ（３５１０）におけるコールは、形式識別子でコールするように書き直される。これらコールは、増強されたＣＡＰファイルが発生されるときのように、スマートカードにプログラムをロードする前に、ホストコンピュータ又はロードターミナルにより書き直されてもよい。或いは又、コールは、ロードターミナルにより書き直されてもよい。又、ターゲットスマートカードは、プログラムがロードされた後にコールを書き直してもよい。形式識別子は、コールされるオブジェクト３５１５における「オブジェクトの現在形式」フィールド３３４５から得られる。
【０１１５】
従って、適切なバーチャルメソッドインスタンスをサーチすることは、各サブ形式及び各メソッドに形式識別子を与えることで、より決定的に行われる。図３５に示す実施例を使用すると、クラス「Ｍ」（３５００）又はクラス「Ｎ」（３５０５）オブジェクトがインスタンス生成されるときに、両オブジェクトは、値がゼロの形式識別子でインスタンス生成される。「Ｏ」（３５１０）オブジェクトがインスタンス生成されるときには、インスタンスに関連した形式識別子が値１である。オブジェクト「Ｏ」（３５１０）がバーチャルメソッドをコールするときには、形式識別子が、どのバーチャルメソッドインスタンスにコールするか決定するためのジャンプテーブル３５２０へのインデックスとして使用され、従って、適切なバーチャルメソッドインスタンスに対する徹底的なサーチを実行する必要性を排除する。
【０１１６】
図３６は、本発明の一実施形態に基づきダイナミックリファレンスを解明するためにリンクデータを有する記憶されたプログラムを変更するところを示すブロック図である。図３６は、図７と同様であるが、図３６は、少なくとも１つのバーチャルメソッドインスタンスを有するバーチャルメソッドごとに、ジャンプテーブル（３６７６、３６８０、３６８２）を備えている。カードメモリ３６００を参照すれば、メソッドＡ１Ａ（３６０２）、Ａ２Ａ（３６１２）及びＢ２Ａ（３６２８）に対するコードは、各々、バーチャルメソッドＡ１Ｃ（３６０８）、Ｂ１Ａ（３６２０）及びＢ１Ｄ（３６２６）へのコールを含む。変更されたカードメモリ３６５０を参照すれば、メソッドＡ１Ａ（３６５２）、Ａ２Ａ（３６６０）及びＢ２Ａ（３６７４）に対するコードは、コールされるバーチャルメソッド（３６７６、３６８０、３６８２）に関連したジャンプテーブル及びコールされるオブジェクトの形式指示子を指すように変更されている。
【０１１７】
図３７は、本発明の一実施形態に基づきダイナミックリファレンスを解明するためにリンクデータを有する記憶されたプログラムを変更するところを示すフローチャートである。３７００において、プログラムを受け取る。３７０５において、プログラムのクラスを列挙する。ボックス３７１０は、クラスごとに実行される。３７２０において、オブジェクトコンストラクタコールは、形式情報を与えるように書き直される。３７２５において、オブジェクトコンストラクタは、「形式」パラメータを受け入れるように書き直される。ボックス３７１５は、クラスにおいてバーチャルメソッドごとに実行される。３７２０において、バーチャルメソッドが、バーチャルメソッドのインスタンスでオーバーライドされたかどうかの決定がなされる。バーチャルメソッドがオーバーライドされた場合には、３７２５において、少なくとも１つのバーチャルメソッドインスタンスを有するバーチャルメソッドに対するバーチャルメソッドジャンプテーブルを生成する。３７３０において、バーチャルメソッドへのプログラムコールは、コールされるバーチャルメソッドに関連したジャンプテーブル及びコールされるオブジェクトの形式指示子を指すように書き直される。バーチャルメソッドがオーバーライドされない場合には、バーチャルメソッドは、スタティックメソッドと同様にリンクすることができる。
【０１１８】
本発明の別の実施形態によれば、少なくとも一度オーバーライドされたバーチャルメソッドへのコールは、コールされるオブジェクトの形式指示子を、コール命令とインラインで命令ストリームに配置されたテーブルへのインデックスとして使用するコール命令と置き換えられる。
【０１１９】
プログラムユニット記憶コミットメントフィンガープリント
本発明の実施形態によれば、プログラムユニット記憶コミットメントフィンガープリントがプログラムユニットに関連付けられる。プログラムユニット記憶コミットメントフィンガープリントは、プログラムユニットのコミットメントを指示するのに使用できる。換言すれば、プログラムユニット記憶コミットメントフィンガープリントは、プログラムユニットがターゲットスマートカードに最終的にロードされたことを指示するのに使用できる。又、プログラムユニット記憶コミットメントフィンガープリントは、プログラムユニットが不正変更されたか、又は実行に不適合であるかを指示するのに使用できる。プログラムユニット記憶コミットメントフィンガープリントは、プログラムユニットが永続的可変メモリに最終的に記憶されて使用の準備ができたときに、プログラムユニットデータに対して計算されて、プログラムユニットに関連付けられる。プログラムユニット記憶コミットメントフィンガープリントは、その関連プログラムデータに隣接するメモリのエリアに記憶することができる。或いは又、プログラムユニットコミットメントフィンガープリントへのリファレンスは、関連プログラムデータと共に記憶されてもよい。更にそれとは別に、プログラムユニットは、各エントリーが記憶ユニット及びそれに対応するフィンガープリントを含むようにして、テーブル形態で記憶されてもよい。当業者であれば、プログラムユニットをコミットメントフィンガープリントに関連付ける他の技術も可能であることが明らかであろう。
【０１２０】
プログラムユニットを使用するときには、プログラムユニットに最初に関連付けられたプログラムユニット記憶コミットメントフィンガープリントと、プログラムユニットデータに対する記憶コミットメントフィンガープリントの計算結果との一致がとられる。不一致があると、プログラムユニットデータが不正変更されたか又は実行に不適合であることを指示する。
【０１２１】
プログラムユニットは、いかなる論理的プログラム構造を含んでもよい。Ｊａｖａ（登録商標）技術を一例として使用すると、プログラムユニットは、パッケージ、クラス、メソッド、又はその組合せを含むことができる。更に、プログラムユニットは、非隣接メモリに記憶されてもよい。
【０１２２】
本発明の一実施形態によれば、プログラムユニットの「使用」は、プログラムユニットを実行することを含む。本発明の別の実施形態によれば、プログラムユニットの「使用」は、プログラムユニットに少なくとも一部分基づいて別のプログラムユニットのインスタンス生成を行うことを含む。例えば、Ｊａｖａ（登録商標）技術を使用すると、プログラムユニットの「使用」は、オブジェクトインスタンス生成を含んでもよい。本発明の別の実施形態によれば、プログラムユニットの「使用」は、プログラムユニットデータを読み取ることを含む。
【０１２３】
ハイアラーキープログラムユニット記憶コミットメントフィンガープリント
本発明の実施形態によれば、高レベルプログラムユニットの記憶コミットメントフィンガープリントは、低レベルプログラムユニットの少なくとも１つの記憶コミットメントフィンガープリントに少なくとも一部分基づくものでよい。これは、図３８を参照して以下に説明する。
【０１２４】
図３８は、本発明の一実施形態に基づきプログラムユニット記憶コミットメントフィンガープリントのハイアラーキーを示すブロック図である。参照番号３８００−３８０８は、クラスを表わし、参照番号３８１０−３８１２は、パッケージを表わし、そして参照番号３８１４は、１つ以上のパッケージより成るロードを表わす。クラスの記憶コミットメントフィンガープリント３８１８−３８２６は、各々クラス３８００−３８０８におけるクラスレベルデータに対するフィンガープリントと、各々クラス３８００−３８０８におけるメソッド記憶コミットメントフィンガープリントの集合とを計算することにより形成される。パッケージの記憶コミットメントフィンガープリント３８２８−３８３０は、各々パッケージ３８１０−３８１２におけるパッケージレベルデータに対するフィンガープリントと、各々パッケージ３８１０−３８１２におけるクラス記憶コミットメントフィンガープリントの集合とを計算することにより形成される。ロードの記憶コミットメントフィンガープリント３８１６は、ロード３８１４におけるパッケージの記憶コミットメントフィンガープリントの集合に対してフィンガープリントを計算することにより形成される。
【０１２５】
或いは又、高レベルプログラムユニットの１つ以上の記憶コミットメントフィンガープリントは、低レベルプログラムユニットのデータに基づくものでもよい。例えば、Ｊａｖａ（登録商標）技術を使用すると、クラスの記憶コミットメントフィンガープリントは、そのクラスに属するメソッドに対してクラスレベルデータ及びメソッドレベルデータに基づくものでよい。
【０１２６】
図３９は、本発明の一実施形態に基づきプログラムコード及びプログラムユニットの記憶コミットメントフィンガープリントを含むデータ構造を示すブロック図である。カードメモリ３９００は、パッケージ「Ａ」３９０４及びパッケージ「Ｂ」３９０６より成るロードユニット３９０２に対する記憶エリアを備えている。パッケージ３９０４及び３９０６は、各々、クラス３９０８−３９１０及び３９１２−３９１４を備えている。クラス３９０８、３９１０、３９１２及び３９１４は、各々、メソッド３９１６−３９２２、３９２４−３９２６、３９２８−３９３４及び３９３６−３９３８を備えている。メソッド記憶コミットメントフィンガープリント３９４０−３９６４は、各々、メソッドコード３９１６−３９３８に対して計算される。クラス記憶コミットメントフィンガープリント３９６６、３９６８、３９７０及び３９７２は、各々、メソッド記憶コミットメントフィンガープリント３９４０−３９４６、３９４８−３９５０、３９５４−３９６０及び３９６２−３９６４に対して計算される。又、クラス記憶コミットメントフィンガープリント３９６６、３９６８、３９７０及び３９７２は、フィールド定義と、各クラスの一部分である初期化されたスタティックデータとに対して計算されてもよい。パッケージ記憶コミットメントフィンガープリント３９７４及び３９７６は、各々、クラス記憶コミットメントフィンガープリント３９６６−３９６８及び３９７０−３９７２に対して計算される。ロードユニット記憶コミットメントフィンガープリント３９７８は、パッケージ記憶コミットメントフィンガープリント３９７４及び３９７６に対して計算される。
【０１２７】
図４０は、本発明の一実施形態に基づきプログラムコード及びロード記憶コミットメントフィンガープリントを含むデータ構造を示すブロック図である。図４０は、図３９と同様であるが、図４０は、クラス記憶コミットメントフィンガープリントも、パッケージ記憶コミットメントフィンガープリントも含まない。ロードユニット記憶コミットメントフィンガープリント４０４２は、パッケージ「Ａ」４００４及びパッケージ「Ｂ」４００６における記憶されたメソッドコード４０１６−３８４０に対して計算される。
【０１２８】
ランタイム完全性チェック
本発明の実施形態によれば、プログラムユニットのコミットメントフィンガープリントは、ランタイムにプログラムユニットの完全性をチェックするのに使用される。図４１及び４２は、このランタイム完全性チェックの一般的なケースを示す。図４３及び４４は、ディスパッチメカニズムを使用してランタイム完全性チェックを実施する本発明の実施形態を示す。
【０１２９】
図４１は、本発明の一実施形態に基づきプログラムユニットコミットメントフィンガープリントを使用してプログラムユニットを使用できるかどうか決定するメソッドを示すフローチャートである。４１００において、プログラムユニットを使用する要求を受け取る。本発明の一実施形態によれば、この「使用」は、プログラムユニットに少なくとも一部分基づいてインスタンス生成することを含む。本発明の別の実施形態によれば、この「使用」は、プログラムユニットコードを実行することを含む。本発明の更に別の実施形態によれば、この「使用」は、プログラムユニットデータを読み取ることを含む。
【０１３０】
本発明の実施形態によれば、プログラムユニットは、プログラム、パッケージ、クラス、メソッド、インスタンス変数又はクラス変数でよい。しかしながら、Ｊａｖａ（登録商標）技術に対するプログラムユニットの例示は、何らそれに限定されるものではない。当業者であれば、プログラムは、多数の仕方で区切られてもよいことが明らかであろう。
【０１３１】
更に、図４１を参照すれば、４１０５において、プログラムユニット使用要求が現在セッションにおいて初めて受け取られたかの決定がなされる。プログラムユニット使用要求が現在セッションにおいて初めて受け取られたのではない場合には、４１３０において、プログラムユニットデータ有効性の記憶された決定が使用される。プログラムユニット使用要求が現在セッションにおいて初めて受け取られた場合には、４１３５において、プログラムユニットが現在セッションに使用されたという指示がなされる。４１１０において、記憶されたプログラムユニットデータが有効であるかどうかの決定がなされる。この決定の結果が４１１５においてチェックされる。記憶されたプログラムユニットデータが有効でない場合には、４１２０において失敗指示がなされる。記憶されたプログラムユニットデータが有効である場合には、４１２５において、プログラムユニットが使用される。
【０１３２】
本発明の別の実施形態によれば、記憶されたプログラムユニットの有効性は、プログラムユニットの使用要求を受け取ったときに、その同じプログラムユニットに対する以前の使用要求が現在セッションにおいて受け取られているかどうかに関わらず、決定される。
【０１３３】
本発明の一実施形態によれば、フィンガープリント装置は、認証フィンガープリント、プログラム記憶コミットメントフィンガープリント又はその両方を計算するように構成される。本発明の別の実施形態によれば、フィンガープリント装置は、記憶コミットメントフィンガープリントを計算する計算ユニットを備えている。この計算ユニットは、コミットされたデータの記憶専用のメモリにリンクされる。この計算ユニットは、メモリより成るメモリ装置と一体化されてもよい。或いは又、計算ユニットは、メモリより成るメモリ装置と通信するスタンドアローン装置でもよい。本発明の一実施形態によれば、計算ユニットは、メモリへの書き込み動作を検出したときにメモリに対するフィンガープリントを自動的に且つ増分的に計算するように構成される。
【０１３４】
本発明の別の実施形態によれば、計算ユニットは、例えば、メモリの読み取り動作を検出した際に、メモリ内のデータを使用する前にメモリに対するフィンガープリントを自動的に且つ増分的に計算するように構成される。例えば、メモリレンジで指定されたメモリアドレスに記憶されたデータに対する読み取り要求を受信した際に、計算ユニットは、そのメモリレンジで指定されたメモリアドレスに記憶されたデータに対してフィンガープリントを計算する。
【０１３５】
図４２は、本発明の一実施形態に基づき、記憶されたプログラムユニットデータが有効であるかどうか決定するメソッドを示すフローチャートである。図４２は、図４１の参照番号４１１０に対する更なる詳細を示す。４２００において、プログラムユニットデータに対してフィンガープリントを計算する。４２０５において、その計算されたフィンガープリントが、記憶されたフィンガープリントに一致するかどうかの決定がなされる。計算されたフィンガープリントが、記憶されたフィンガープリントに一致しない場合には、４２１０において、その記憶されたプログラムユニットデータが無効であるという指示がなされる。計算されたフィンガープリントが、記憶されたフィンガープリントに一致する場合には、４２１５において、その記憶されたプログラムユニットデータが有効であるという指示がなされる。
【０１３６】
ディスパッチテーブル
本発明に関して、「ゲートウェイディスパッチャー」という語は、メソッドをコールする前に、コールされるメソッドの実行可能なコードが有効であるかどうか決定するように構成されたプログラムユニットとして定義される。ゲートウェイディスパッチャーは、バーチャルマシン又は低レベルルーチンの一部分でよい。
【０１３７】
本発明の実施形態によれば、コールされたルーチンへのリンクは、ハードコード化されてもよい。本発明の別の実施形態によれば、保護ユニットに関連したディスパッチテーブルは、保護ユニットにより保護されたメソッドに対するエントリーを含む。保護ユニットにおいてメソッドをコールする側は、その保護ユニット及びテーブル内のインデックスをリファレンスすることによりメソッドをコールする。このリファレンスは、メソッドをコールする前に、コールされるメソッドの実行可能なコードが有効である（検証された）かどうか決定する。ゲートウェイディスパッチャーは、保護ユニットのディスパッチテーブルがロードされたが保護ユニットが検証されていない場合に、保護ユニットを検証する。ゲートウェイディスパッチャーは、保護ユニットのディスパッチテーブルがロードされていない場合に、ディスパッチテーブルをロードし、保護ユニットを検証する。これは、図４３及び４４を参照して以下に詳細に説明する。
【０１３８】
図４３は、本発明の一実施形態に基づき、コールされたメソッドを実行の前に検証するように保証するよう構成されたスマートカードを示すブロック図である。図４３は、図４１の参照番号４１２５に関して既に述べた「プログラムユニット使用」プロセスを実施するためのデータ構造を示す。本発明の一実施形態によれば、クラス又はパッケージへのエントリーポイントは、ロード時に予め計算される。エントリーポイントは、コールされているメソッドが検証されたかどうか決定するためのテストをトリガーする。コールは、メソッドへのコールを含むコードを書き直することによりこれらエントリーポイントにリンクされる。
【０１３９】
図４３に示すように、保護ユニットにおいてコール可能なルーチンごとにディスパッチテーブルエントリーがある。各エントリーは、チェックビット及びルーチンアドレスを含む。保護ユニット内のメソッド又はルーチンは、初期化されると、互いにコールすることができる。保護ユニットの外部をコールするメソッドは、ディスパッチテーブル（４３００、４３０５、４３１０）を経てコールを行う。コールされたルーチンに対応するディスパッチテーブルエントリーのチェックビットが、チェックされた状態を指示する場合には、ディスパッチテーブルエントリーのルーチンアドレスを使用して、ルーチンをコールする。チェックビットが、非チェック状態を指示する場合には、コードの検証が実行される。ＲＡＭ４３４５のような非永続的可変メモリにディスパッチテーブル（４３００、４３０５、４３１０）を記憶しそして値ゼロを非チェック状態に関連付けることで、チェックビットが初期化の際に非チェック状態を指示するよう保証する。換言すれば、プログラムコードの検証は、セッションに基づいたものとなるように保証される。というのは、ＲＡＭ４３４５のコンテンツが各セッションの後に破壊され、そして次のセッションが、非チェック状態を指示するチェックビットでスタートするからである。
【０１４０】
エントリー当たり１つのチェックビットをもつことで、テーブルを隣接させることが許され、エントリーをリファレンスするのに、テーブルのベースアドレス及びオフセットしか必要とされない。更に、各エントリーは、チェックビットを含む。というのは、対応するルーチンが、コールされるべき保護ユニット内の第１ルーチンとなるからである。
【０１４１】
本発明の一実施形態によれば、チェックビットは、ディスパッチテーブルエントリーの最上位ビットで構成され、そしてメソッドアドレスは、その最下位ビットで構成される。ゲートウェイディスパッチャーが、非チェック状態を指示するチェックビット値を読み取る場合には、ディスパッチテーブルエントリーの最下位ビットを使用してルーチンをコールする。このメカニズムは、メソッドアドレスを得るための第２のメモリアクセスの必要性を排除する。
【０１４２】
本発明の別の実施形態によれば、各テーブルは、そのテーブルが有効に初期化されたかどうか指示する、テーブルごとのチェックビットを有する。各テーブルエントリーは、メソッドアドレスを含む。
【０１４３】
本発明の一実施形態によれば、保護ユニットは、パッケージごとである。本発明の別の実施形態によれば、保護ユニットは、クラスごとである。本発明の更に別の実施形態によれば、保護ユニットは、メソッドごとである。
【０１４４】
本発明の別の実施形態によれば、保護ユニットにより保護されたプログラムユニットは、記憶コミットメントフィンガープリントに含まれたプログラムユニットに対応する。例えば、記憶コミットメントフィンガープリントがクラスにおけるメソッドに対して計算される場合には、保護ユニットはクラスごとである。更に別の例として、記憶コミットメントフィンガープリントがパッケージにおけるクラスに対して計算される場合には、保護ユニットはパッケージごとである。
【０１４５】
次のＲＡＭベースのディスパッチテーブルのアドレス、並びに他のロードユニットに対するディスパッチテーブルの現在番号及びサイズは、図２１の参照番号２１１０について上述したリンクプロセスに対してカードが与えることのできる情報の形式の例である。
【０１４６】
本発明の実施形態によれば、プログラムコードは、保護ユニットの外部のルーチンへのコールをゲートウェイディスパッチャーへのコールに置き換えるために書き直される。本発明の一実施形態によれば、コードは、変換時に、ＣＡＰファイルが生成されるときに書き直される。本発明の別の実施形態によれば、コードは、ＣＡＰファイルディスアッセンブル時に書き直される。本発明の更に別の実施形態によれば、コードは、ターゲットスマートカードにおけるロード時又はリンク時に書き直される。
【０１４７】
保護ユニットの外部のルーチンへのコールがなされるときには、コールされた領域がチェックされたかどうかも決定されねばならない。ゲートウェイディスパッチャーは、コールされたメソッドに属するテーブルを検査して、ルーチンへ直接ジャンプしてもよいかどうか、或いはコールされたルーチンを最初に検証しなければならないかどうか決定する。図４３に示す例では、ゼロのチェックビット値を使用して、非チェック状態を指示する。この場合に、ゼロの値は、エントリーが改悪されたことを指示してもよい。又、これは、エントリーは有効であるが、コードが検証されていないことを指示してもよい。従って、チェックビットが、非チェック状態を指示する値を有する場合には、ＥＥＰＲＯＭのような永続的な可変メモリからディスパッチテーブルテンプレートが得られ、そしてコールされたルーチンが検証される。これは、図４４を参照して以下に詳細に述べる。
【０１４８】
図４４は、本発明の一実施形態に基づき、コールされたメソッドを実行の前に検証するように保証するメソッドを示すフローチャートである。図４４は、保護ユニット間のコールがゲートウェイディスパッチャーへのコールに置き換えられるようにプログラムコードが書き直されたと仮定している。又、図４４は、各エントリーに対する実際のメソッドを指すディスパッチテーブルテンプレートが、リンクプロセス中に、ＥＥＰＲＯＭに入れられることも仮定している。又、図４４は、ディスパッチテーブルのリセット時、又はそのエントリーの最初の使用時に、ディスパッチテーブルテンプレートが、ＲＡＭのような非永続的可変メモリ内の予め割り当てられたスペースへコピーされることも仮定している。
【０１４９】
本発明に関して、保護ユニットは、使用の単位が保護の単位と同じでない場合には集合的なものである。例えば、使用の単位がメソッドであり、そして保護の単位がメソッドである場合には、保護ユニットは、集合的でない。しかし、使用の単位がメソッドであり、そして保護の単位がクラスである場合には、保護ユニットは、集合的である。
【０１５０】
更に、図４４を参照すれば、４４００において、コールする側のメソッド及びコールされる側のメソッドが同じ保護ユニット内にあるかどうかの決定がなされる。この決定は、コード書き直しプロセスの一部分として行われる。２つのメソッドが同じ保護ユニット内にある場合には、４４０５において、コールする側のメソッドが、コールされる側のメソッドを直接コールする。２つのメソッドが同じ保護ユニット内にない場合には、コード書き直しプロセスは、コールされるルーチン（Ｂ）へのコールを、ゲートウェイディスパッチャーへのコールに置き換える。コードがこのように書き直された場合には、４４１０において、コールする側のメソッドがゲートウェイディスパッチャーをコールする。４４１５において、ゲートウェイディスパッチャーは、コールされる側のメソッドの保護ユニットに関連したディスパッチテーブルを決定する。４４２０において、保護ユニットがチェックされたかどうかの決定がなされる。保護ユニットがチェックされない場合には、４４２５においてチェックされる。４４３０において、保護ユニットに対応するディスパッチテーブルが、ＥＥＰＲＯＭのような永続的可変メモリから得られ、そしてＲＡＭのような非永続的可変メモリへロードされる。４４３５において、保護ユニットが集合的であるかどうかの決定がなされる。保護ユニットが集合的である場合には、４４４０において、保護ユニットのチェックビットが、非チェック状態を指示するようにされる。保護ユニットがチェックされると、４４４５において、コールされる側のメソッドに対応するディスパッチテーブルエントリーが検査される。４４５０において、テーブルエントリーのチェックビットが、チェックされた状態を指示する値を有するかどうかの決定がなされる。チェックビットが、チェックされた状態を指示する値を有する場合には、４４６５において、コールされるが側のメソッドが、テーブルエントリーのアドレスを使用してコールされる。チェックビット値が非チェック状態を指示する場合には、そのメソッドを含む保護ユニットの検証が４４５５において実行され、そして保護ユニットにおけるメソッドのチェックビットが４４６０においてチェックされた状態を指示するようにされる。４４６５において、コールされる側のメソッドが、テーブルエントリーのアドレスを使用してコールされる。
【０１５１】
Ｊａｖａ  Ｃａｒｄ（登録商標）技術についての本発明の実施形態の説明は、単なる例示であって、それに何ら限定されるものではない。プログラムデータより成るプログラムファイルは、構造化プログラムデータより成るＣＡＰファイルに代わって使用されてもよい。例えば、Ｊａｖａ（登録商標）アーカイブ（ＪＡＲ）ファイルのようなアーカイブファイルを使用してもよい。更に、プロトコルデータユニットを定義する通信プロトコルを、ＡＰＤＵプロトコルに代わって使用してもよい。更に、Ｊａｖａ（登録商標）言語以外の言語で書かれたプログラムに対するプログラムデータを使用してもよい。更に、ターゲット装置は、スマートカードでなくてもよい。ターゲット装置は、プロトコルデータユニットを受け取って、その受け取ったデータに少なくとも一部分基づいてプログラムを実行することのできるいかなる装置でもよい。
【０１５２】
以上、本発明の実施形態及びその応用を図示して説明したが、この開示の利益を受ける当業者であれば、本発明の概念から逸脱せずに、上述した以外の多数の変更がなされ得ることが明らかであろう。それ故、本発明は、特許請求の範囲の精神を除いて、何ら限定されるものではない。
【図面の簡単な説明】
【０１５３】
【図１】ホストコンピュータとスマートカードとの間でプログラムデータを通信するための典型的なメカニズムを示すブロック図である。
【図２Ａ】典型的なコマンドアプリケーションプロトコルデータユニット（Ｃ−ＡＰＤＵ）を示すブロック図である。
【図２Ｂ】典型的な応答アプリケーションプロトコルデータユニット（Ｒ−ＡＰＤＵ）を示すブロック図である。
【図３】変換アプレット（ＣＡＰ）ファイルをロードするところを示すブロック図である。
【図４】ロードターミナルの観点からＣＡＰファイルをロードするところを示すフローチャートである。
【図５】スマートカードの観点からＣＡＰファイルをロードするところを示すフローチャートである。
【図６】スマートカードにＣＡＰファイルを再アッセンブリするところを示すフローチャートである。
【図７】スタティックリファレンスを解明するためにリンクデータを有する記憶されたプログラムを変更するところを示すブロック図である。
【図８】本発明の態様を実施するのに適したコンピュータシステムのブロック図である。
【図９】本発明の一実施形態に基づきホストコンピュータとスマートカードとの間でプログラムデータを通信するためのシステムを示すブロック図である。
【図１０】本発明の一実施形態に基づきホストコンピュータからスマートカードへプログラムデータを通信するところを示す高レベルフローチャートである。
【図１１】本発明の一実施形態に基づきホストコンピュータからスマートカードへプログラムデータを通信するところを示す低レベルフローチャートである。
【図１２】本発明の一実施形態に基づきホストコンピュータからロードターミナルへプログラムデータを通信するメソッドをホストコンピュータの観点から示すフローチャートである。
【図１３】本発明の一実施形態に基づきＣＡＰファイルを１つ以上の論理的ＡＰＤＵに区分化するところを示すブロック図である。
【図１４】本発明の一実施形態に基づきプログラムユニット形式のマップ情報を使用するメソッドを示すフローチャートである。
【図１５Ａ】パッケージ構造データを備えたＣＡＰファイルを示すブロック図である。
【図１５Ｂ】図１５ＡのＣＡＰファイル内のプログラムに対応する使用図である。
【図１５Ｃ】本発明の一実施形態により図１５Ｂの使用図に基づいて順序付けされた図１５ＡのＣＡＰファイルを示すブロック図である。
【図１６】本発明の一実施形態に基づき最適化された検証及びリンクのためにプログラムユニットを順序付けするメソッドを示すフローチャートである。
【図１７Ａ】パッケージ構造データを備えたＣＡＰファイルを示すブロック図である。
【図１７Ｂ】図１７ＡのＣＡＰファイル内のプログラムに対応する使用図である。
【図１７Ｃ】本発明の一実施形態により図１７Ｂの使用図に基づいて順序付けされた図１７ＡのＣＡＰファイルを示すブロック図である。
【図１８】本発明の一実施形態に基づきＣＡＰファイルを１つ以上の論理的ＡＰＤＵへとディスアッセンブルするメソッドを示すフローチャートである。
【図１９】本発明の一実施形態に基づきＣＡＰファイルを、検証データより成るＡＰＤＵを含む１つ以上の論理的ＡＰＤＵへとディスアッセンブルするメソッドを示すフローチャートである。
【図２０Ａ】本発明の一実施形態に基づき検証ＡＰＤＵが含まれた認証フィンガープリントを、ＡＰＤＵデータストリームを経て計算するメソッドを示すフローチャートである。
【図２０Ｂ】本発明の一実施形態に基づき検証ＡＰＤＵが除外された認証フィンガープリントを、ＡＰＤＵデータストリームを経て計算するメソッドを示すフローチャートである。
【図２１】本発明の一実施形態に基づきホストコンピュータからロードターミナルへプログラムデータを通信するメソッドをロードターミナルの観点から示すフローチャートである。
【図２２】本発明の一実施形態に基づき増強されたＣＡＰファイルを１つ以上の論理的ＡＰＤＵへとディスアッセンブルするメソッドを示すフローチャートである。
【図２３】本発明の一実施形態に基づき、検証データを含む増強されたＣＡＰファイルを、検証データより成るＡＰＤＵを含む１つ以上の論理的ＡＰＤＵへとディスアッセンブルするメソッドを示すフローチャートである。
【図２４】本発明の一実施形態に基づき、検証データを含まない増強されたＣＡＰファイルを、検証データより成るＡＰＤＵを含む１つ以上の論理的ＡＰＤＵへとディスアッセンブルするメソッドを示すフローチャートである。
【図２５】本発明の一実施形態に基づき、増強されたＣＡＰファイルを、リンクデータより成るＡＰＤＵを含む１つ以上の論理的ＡＰＤＵへとディスアッセンブルするメソッドを示すフローチャートである。
【図２６】本発明の一実施形態に基づき、検証データを含む増強されたＣＡＰファイルを、検証データより成るＡＰＤＵ及びリンクデータより成るＡＰＤＵを含む１つ以上の論理的ＡＰＤＵへとディスアッセンブルするメソッドを示すフローチャートである。
【図２７】本発明の一実施形態に基づき、検証データを含まない増強されたＣＡＰファイルを、検証データより成るＡＰＤＵ及びリンクデータより成るＡＰＤＵを含む１つ以上の論理的ＡＰＤＵへとディスアッセンブルするメソッドを示すフローチャートである。
【図２８】本発明の一実施形態に基づき１つ以上のメソッドリンクＡＰＤＵを生成するためのメソッドを示すフローチャートである。
【図２９】本発明の一実施形態に基づきロードターミナルからスマートカードへプログラムデータを通信するメソッドをスマートカードの観点から示すフローチャートである。
【図３０】本発明の一実施形態に基づきＨＭＡＣである認証フィンガープリントを使用してロードターミナルからスマートカードへプログラムデータを通信するメソッドをスマートカードの観点から示すフローチャートである。
【図３１】本発明の一実施形態に基づきロード初期化を実行するメソッドを示すフローチャートである。
【図３２】本発明の一実施形態に基づき論理的ＡＰＤＵストリームを処理するメソッドを示すフローチャートである。
【図３３】本発明の一実施形態に基づき認証フィンガープリントを計算するメソッドを示すフローチャートである。
【図３４】本発明の一実施形態に基づき論理的ＡＰＤＵを処理するメソッドを示すフローチャートである。
【図３５】本発明の一実施形態に基づきバーチャルメソッドを含むプログラムをリンクするためのデータ構造を示すブロック図である。
【図３６】本発明の一実施形態に基づきダイナミックリファレンスを解明するためにリンクデータを有する記憶されたプログラムを変更するところを示すブロック図である。
【図３７】本発明の一実施形態に基づきダイナミックリファレンスを解明するためにリンクデータを有する記憶されたプログラムを変更するところを示すフローチャートである。
【図３８】本発明の一実施形態に基づきプログラムユニットコミットメントフィンガープリントのハイアラーキーを示すブロック図である。
【図３９】本発明の一実施形態に基づきプログラムコード及びプログラムユニットのコミットメントフィンガープリントを含むデータ構造を示すブロック図である。
【図４０】本発明の一実施形態に基づきプログラムコード及びロード記憶コミットメントフィンガープリントを含むデータ構造を示すブロック図である。
【図４１】本発明の一実施形態に基づきプログラムユニットコミットメントフィンガープリントを使用してプログラムユニットを使用できるかどうか決定するメソッドを示すフローチャートである。
【図４２】本発明の一実施形態に基づき、記憶されたプログラムユニットデータが有効であるかどうか決定するメソッドを示すフローチャートである。
【図４３】本発明の一実施形態に基づき、コールされたメソッドを実行の前に検証するように保証するよう構成されたスマートカードを示すブロック図である。
【図４４】本発明の一実施形態に基づき、コールされたメソッドを実行の前に検証するように保証するメソッドを示すフローチャートである。
【図１】
2006517043.tif 000003
【図２】
2006517043.tif 000004
【図３】
2006517043.tif 000005
【図４】
2006517043.tif 000006
【図５】
2006517043.tif 000007
【図６】
2006517043.tif 000008
【図７】
2006517043.tif 000009
【図８】
2006517043.tif 000010
【図９】
2006517043.tif 000011
【図１０】
2006517043.tif 000012
【図１１】
2006517043.tif 000013
【図１２】
2006517043.tif 000014
【図１３】
2006517043.tif 000015
【図１４】
2006517043.tif 000016
【図１５】
2006517043.tif 000017
【図１６】
2006517043.tif 000018
【図１７】
2006517043.tif 000019
【図１８】
2006517043.tif 000020
【図１９】
2006517043.tif 000021
【図２０】
2006517043.tif 000022
【図２１】
2006517043.tif 000023
【図２２】
2006517043.tif 000024
【図２３】
2006517043.tif 000025
【図２４】
2006517043.tif 000026
【図２５】
2006517043.tif 000027
【図２６】
2006517043.tif 000028
【図２７】
2006517043.tif 000029
【図２８】
2006517043.tif 000030
【図２９】
2006517043.tif 000031
【図３０】
2006517043.tif 000032
【図３１】
2006517043.tif 000033
【図３２】
2006517043.tif 000034
【図３３】
2006517043.tif 000035
【図３４】
2006517043.tif 000036
【図３５】
2006517043.tif 000037
【図３６】
2006517043.tif 000038
【図３７】
2006517043.tif 000039
【図３８】
2006517043.tif 000040
【図３９】
2006517043.tif 000041
【図４０】
2006517043.tif 000042
【図４１】
2006517043.tif 000043
【図４２】
2006517043.tif 000044
【図４３】
2006517043.tif 000045
【図４４】
2006517043.tif 000046
【手続補正書】
【提出日】平成17年9月28日(2005.9.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１装置と第２装置との間でプログラムデータを通信するための方法において、
プログラムデータを備えた第１プログラムファイルを少なくとも１つの論理的データユニットへとディスアッセンブルし、
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化し、前記少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、そしてペイロード部分を含み、そして
前記少なくとも１つの論理的データユニットの前記少なくとも１つのプロトコルデータユニットのペイロード部分に対して第１フィンガープリントを計算する、
という段階を備えた方法。
【請求項２】
前記第２装置は、スマートカードと通信するように構成されたロードターミナルを含む、請求項１に記載の方法。
【請求項３】
第２プログラムファイルを前記第２装置へ通信する段階を更に備え、前記第２プログラムファイルは、前記プログラムデータと、前記第１フィンガープリント及び前記第１フィンガープリントに少なくとも一部分基づく認証コードより成るグループの１つ以上のメンバーとを備えた、請求項１に記載の方法。
【請求項４】
前記方法は、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つの検証プロトコルデータユニットを生成する段階を備え、該検証プロトコルデータユニットは、前記論理的データユニットに対する検証データを含む、請求項１に記載の方法。
【請求項５】
前記認証コードは、更に、前記第１装置から受け取られた前記第２プログラムファイルを認証する際に前記第２装置により使用される少なくとも１つのロード装置認証コードを含む、請求項３に記載の方法。
【請求項６】
前記認証コードは、更に、前記第２装置から受け取られたデータを認証する際に第３装置により使用される少なくとも１つのターゲット装置認証コードを含み、前記受け取られたデータは、前記第１プログラムファイルに少なくとも一部分基づく、請求項３に記載の方法。
【請求項７】
前記少なくとも１つの論理的データユニットの前記プロトコルデータユニットと、前記第１フィンガープリント及び前記第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを、前記プロトコルに基づいて前記第２装置へ通信する段階を更に備えた、請求項１に記載の方法。
【請求項８】
前記１つ以上のメンバーが、前記第２装置により受け取られたプロトコルデータユニットのペイロード部分に対して計算された第２フィンガープリント、又は該第２フィンガープリントに少なくとも一部分基づく第２認証コードに一致するかどうかの指示を前記第２装置から受け取る段階を更に備えた、請求項７に記載の方法。
【請求項９】
第１装置と第２装置との間でプログラムデータを通信するための方法において、
プログラムデータと、第１フィンガープリント及び該第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを含むプログラムファイルを受け取り、
前記プログラムデータを少なくとも１つの論理的データユニットへとディスアッセンブルし、そして
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化し、前記少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、そしてペイロード部分を含むようにする、
という段階を備えた方法。
【請求項１０】
前記第１フィンガープリント及び前記第１認証コードより成るグループの１つ以上のメンバーを前記第２装置へ通信する段階を更に備えた、請求項９に記載の方法。
【請求項１１】
前記方法は、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つの検証プロトコルデータユニットを生成する段階を備え、該検証プロトコルデータユニットは、前記論理的データユニットに対する検証データを含み、そして前記プログラムファイルから抽出される、請求項９に記載の方法。
【請求項１２】
前記方法は、更に、
前記少なくとも１つの論理的データユニットの少なくとも１つに対して検証データを計算し、そして
前記論理的データユニットに対する前記検証データを含む検証プロトコルデータユニットを生成する、
という段階を含む請求項９に記載の方法。
【請求項１３】
前記方法は、更に、前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つのリンクプロトコルデータユニットを生成する段階を備え、該リンクプロトコルデータユニットは、前記論理的データユニットに対するリンクデータを含む、請求項９に記載の方法。
【請求項１４】
前記方法は、更に、
前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つのリンクプロトコルデータユニットを生成し、該リンクプロトコルデータは、前記論理的データユニットに対するリンクデータを含み、そして
前記論理的データユニットに対する前記検証データを含み、そして前記プログラムファイルから抽出される検証プロトコルデータユニットを生成する、
という段階を備えた請求項９に記載の方法。
【請求項１５】
前記方法は、更に、
前記少なくとも１つの論理的データユニットの１つに関連した少なくとも１つのリンクプロトコルデータユニットを生成し、該リンクプロトコルデータは、前記論理的データユニットに対するリンクデータを含み、
前記少なくとも１つの論理的データユニットの少なくとも１つに対する検証データを計算し、そして
前記論理的データユニットに対する前記検証データを含む検証プロトコルデータユニットを生成する、
という段階を備えた請求項９に記載の方法。
【請求項１６】
前記第１フィンガープリントが、前記第２装置により受信されたプロトコルデータユニットのペイロード部分に対して計算された第２フィンガープリントに一致するかどうかの指示を前記第２装置から受け取る段階を更に備えた、請求項９に記載の方法。
【請求項１７】
前記１つ以上のメンバーが、前記第２装置により受信されたプロトコルデータユニットのペイロード部分に対して計算された第２フィンガープリントに少なくとも一部分基づく第２認証コードに一致するかどうかの指示を前記第２装置から受け取る段階を更に備えた、請求項９に記載の方法。
【請求項１８】
前記プロトコルは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）プロトコルを含み、そして
前記プロトコルデータユニットは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）を含む、請求項１及び９のいずれかに記載の方法。
【請求項１９】
第１装置と、メモリを備えた第２装置との間でプログラムデータを通信するための方法において、
前記第２装置へ第２プログラムファイルを通信し、該第２プログラムファイルは、前記プログラムデータと、第１フィンガープリント及び該第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを備え、
前記１つ以上のメンバーと、プログラムファイルの少なくとも１つの論理的データユニットより成る複数のプロトコルデータユニットとを受け取り、前記少なくとも１つの論理的データユニットの各々は、少なくとも１つのプロトコルデータユニットへ区分化され、前記少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、そしてペイロード部分を含み、
前記少なくとも１つの論理的データユニットのプロトコルデータユニットのペイロード部分に対して第２フィンガープリントを計算し、そして
前記１つ以上のメンバーが、前記第２のフィンガープリント、又は前記第２のフィンガープリントに少なくとも一部分基づく第２の認証コードに一致するかどうかに少なくとも一部分基づいて、前記プログラムを前記メモリへコミットする、
という段階を備えた方法。
【請求項２０】
前記方法は、更に、リンクデータを含むプロトコルデータユニットを前記計算から除外する段階を備えた、請求項１９に記載の方法。
【請求項２１】
前記方法は、更に、認証フィンガープリント計算から検証データを除外しなければならないことをフラグが指示する場合に、検証データを含むプロトコルデータユニットを前記計算から除外する段階を備えた、請求項１９に記載の方法。
【請求項２２】
前記プロトコルは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）プロトコルを含み、そして
前記プロトコルデータユニットは、アプリケーションプロトコルデータユニット（ＡＰＤＵ）を含む、請求項１９に記載の方法。
【請求項２３】
マシンにより読み取り可能なプログラム記憶装置であって、ホストコンピュータとスマートカードとの間でプログラムデータを通信するための方法を実行するように前記マシンにより実行可能な命令のプログラムを使用するプログラム記憶装置において、前記方法は、
プログラムデータを備えた第１プログラムファイルを少なくとも１つの論理的データユニットへとディスアッセンブルし、
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化し、前記少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、そしてペイロード部分を含み、そして
前記少なくとも１つの論理的データユニットの前記少なくとも１つのプロトコルデータユニットのペイロード部分に対して第１フィンガープリントを計算する、
という段階を備えたものであるプログラム記憶装置。
【請求項２４】
マシンにより読み取り可能なプログラム記憶装置であって、第１装置と第２装置との間でプログラムデータを通信するための方法を実行するように前記マシンにより実行可能な命令のプログラムを使用するプログラム記憶装置において、前記方法は、
プログラムデータと、第１フィンガープリント及び該第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを含むプログラムファイルを受け取り、
前記プログラムデータを少なくとも１つの論理的データユニットへとディスアッセンブルし、そして
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化し、前記少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、そしてペイロード部分を含むようにする、
という段階を備えたプログラム記憶装置。
【請求項２５】
マシンにより読み取り可能なプログラム記憶装置であって、第１装置と、メモリを備えた第２装置との間でプログラムデータを通信するための方法を実行するように前記マシンにより実行可能な命令のプログラムを使用するプログラム記憶装置において、前記方法は、
前記第２装置へ第２プログラムファイルを通信し、該第２プログラムファイルは、前記プログラムデータと、第１フィンガープリント及び該第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを備え、
前記１つ以上のメンバーと、プログラムファイルの少なくとも１つの論理的データユニットより成る複数のプロトコルデータユニットとを受け取り、前記少なくとも１つの論理的データユニットの各々は、少なくとも１つのプロトコルデータユニットへ区分化され、前記少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、そしてペイロード部分を含み、
前記少なくとも１つの論理的データユニットのプロトコルデータユニットのペイロード部分に対して第２フィンガープリントを計算し、そして
前記１つ以上のメンバーが、前記第２のフィンガープリント、又は前記第２のフィンガープリントに少なくとも一部分基づく第２の認証コードに一致するかどうかに少なくとも一部分基づいて、前記プログラムを前記メモリへコミットする、
という段階を備えたものであるプログラム記憶装置。
【請求項２６】
第１デバイスと第２デバイスとの間でプログラムデータを通信する装置において、
プログラムデータを備えた第１プログラムファイルを少なくとも１つの論理的データユニットへとディスアッセンブルする手段と、
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化する手段であって、前記少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、そしてペイロード部分を含むものである手段と、
前記少なくとも１つの論理的データユニットの前記少なくとも１つのプロトコルデータユニットのペイロード部分に対して第１フィンガープリントを計算する手段と、
を備えた装置。
【請求項２７】
第１デバイスと第２デバイスとの間でプログラムデータを通信する装置において、
プログラムデータと、第１フィンガープリント及び該第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを含むプログラムファイルを受け取る手段と、
前記プログラムデータを少なくとも１つの論理的データユニットへとディスアッセンブルする手段と、
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化する手段であって、前記少なくとも１つのプロトコルデータユニットのフォーマットが、通信プロトコルにより定義され、そしてペイロード部分を含むような手段と、
を備えた装置。
【請求項２８】
第１デバイスと、メモリを備えた第２デバイスとの間でプログラムデータを通信するための装置において、
前記第２デバイスへ第２プログラムファイルを通信する手段であって、該第２プログラムファイルが、前記プログラムデータと、第１フィンガープリント及び該第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを含むような手段と、
前記１つ以上のメンバーと、プログラムファイルの少なくとも１つの論理的データユニットより成る複数のプロトコルデータユニットとを受け取る手段であって、前記少なくとも１つの論理的データユニットの各々が少なくとも１つのプロトコルデータユニットへ区分化され、前記少なくとも１つのプロトコルデータユニットのフォーマットが通信プロトコルにより定義されそしてペイロード部分を含むような手段と、
前記少なくとも１つの論理的データユニットのプロトコルデータユニットのペイロード部分に対して第２フィンガープリントを計算する手段と、
前記１つ以上のメンバーが、前記第２のフィンガープリント、又は前記第２のフィンガープリントに少なくとも一部分基づく第２の認証コードに一致するかどうかに少なくとも一部分基づいて、前記プログラムを前記メモリへコミットする手段と、
を備えた装置。
【請求項２９】
第１デバイスと第２デバイスとの間でプログラムデータを通信する装置において、
前記プログラムデータを記憶するためのメモリと、
オフカードインストーラと、
を備え、該オフカードインストーラは、
プログラムデータを備えた第１プログラムファイルを少なくとも１つの論理的データユニットへとディスアッセンブルし、
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化し、前記少なくとも１つのプロトコルデータユニットのフォーマットは、通信プロトコルにより定義され、そしてペイロード部分を含むものであり、そして
前記少なくとも１つの論理的データユニットの前記少なくとも１つのプロトコルデータユニットのペイロード部分に対して第１フィンガープリントを計算する、
というように構成された装置。
【請求項３０】
前記第２デバイスは、スマートカードと通信するように構成されたロードターミナルを含む、請求項２９に記載の装置。
【請求項３１】
第１デバイスと第２デバイスとの間でプログラムデータを通信する装置において、
前記プログラムデータを記憶するためのメモリと、
プロセッサと、
を備え、該プロセッサは、
プログラムデータと、第１フィンガープリント及び該第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを含むプログラムファイルを受け取り、
前記プログラムデータを少なくとも１つの論理的データユニットへとディスアッセンブルし、そして
前記少なくとも１つの論理的データユニットの各々を少なくとも１つのプロトコルデータユニットに区分化し、前記少なくとも１つのプロトコルデータユニットのフォーマットが、通信プロトコルにより定義され、そしてペイロード部分を含む、
というように構成された装置。
【請求項３２】
前記第１デバイスはロードターミナルを含み、そして前記第２デバイスはスマートカードを含む、請求項３１に記載の装置。
【請求項３３】
第１デバイスと、メモリを備えた第２デバイスとの間でプログラムデータを通信するための装置において、
前記プログラムデータを記憶するためのメモリと、
インストーラと、
を備え、該インストーラは、
前記第２デバイスへ第２プログラムファイルを通信し、該第２プログラムファイルは、前記プログラムデータと、第１フィンガープリント及び該第１フィンガープリントに少なくとも一部分基づく第１認証コードより成るグループの１つ以上のメンバーとを含むものであり、
前記１つ以上のメンバーと、プログラムファイルの少なくとも１つの論理的データユニットより成る複数のプロトコルデータユニットとを受け取り、前記少なくとも１つの論理的データユニットの各々が少なくとも１つのプロトコルデータユニットへ区分化され、前記少なくとも１つのプロトコルデータユニットのフォーマットは通信プロトコルにより定義されそしてペイロード部分を含み、
前記少なくとも１つの論理的データユニットのプロトコルデータユニットのペイロード部分に対して第２フィンガープリントを計算し、
前記１つ以上のメンバーが、前記第２のフィンガープリント、又は前記第２のフィンガープリントに少なくとも一部分基づく第２の認証コードに一致するかどうかに少なくとも一部分基づいて前記プログラムを前記メモリへコミットする、
というように構成された装置。
【請求項３４】
デジタルフィンガープリントを自動的に計算する装置において、
プログラムデータの記憶専用のメモリと、
前記メモリと通信しそして前記メモリに記憶されたデータに対してデジタルフィンガープリントを増分的に計算するように構成された計算ユニットと、
を備えた装置。
【請求項３５】
前記計算ユニットは、更に、前記メモリへの書き込みオペレーションを検出した際に前記デジタルフィンガープリントを増分的に計算するように構成された、請求項３４に記載の装置。
【請求項３６】
前記計算ユニットは、更に、前記メモリに記憶されたデータの読み取り要求を受信した際にデジタルフィンガープリントを増分的に計算するように構成された、請求項３４に記載の装置。
【国際調査報告】
2006517043.tif 000047
2006517043.tif 000048
2006517043.tif 000049
2006517043.tif 000050