問題タブ [globalplatform]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
smartcard - 更新: GlobalPlatform を使用した Javacard アプレットのパーソナライズ
私が聞いたところによると、大規模なスマート カード アプレットは、グローバル プラットフォームでパーソナライズするのが一般的です。また、Global Platform を使用したパーソナライゼーションに関する PDF と、GP 用の Javacard API も見つけました。しかし、私はどういうわけか両方に関連するいくつかの情報を欠いており、それに関する適切なドキュメントを見つけていません. GP 互換のパーソナライゼーションを実行するには、アプレットをどのように編成すればよいですか?
編集:
ドキュメントを読みましたが、具体的な質問がいくつかあります。すぐにお答えいただければ幸いです。
Q1: 一般的なパーソナライゼーションのガイドでは、次のプロセスについて説明しています: リセット、Atr、パーソナライズする AID の選択、セキュア チャネルの開始、複数のストア データ コマンド。セキュリティ ドメインでセキュア チャネルが確立され、DGI を保持する Store-data コマンドがアプレットに転送されます。アプレットには、org.globalplatformパッケージのApplicationおよびPersonalizationインターフェースがあり、store -data コマンドを利用するためにprocessDataメソッドを継承します。問題は、 init-updateとexternal-authenticateを実装する必要があるかどうかです。セキュリティ ドメインが選択されておらず、アプレットがこれらの INS を認識していないため、自分のアプレットでコマンドを実行できますか? JCRE はこれらの GlobalPlatform APDU を自動的に検出し、SecurityDomain に転送しませんか?
smartcard - パーソナライゼーションにおけるセキュリティ ドメインとアプレットの関係
一般的なパーソナライゼーションのガイドでは、次のパーソナライゼーションのプロセスについて説明しています。
- リセット
- Atr
- パーソナライズする AID を選択
- セキュア チャネルを開始する
- 複数の Store-data コマンド
セキュリティ ドメインでセキュア チャネルが確立され、DGI を保持する Store-data コマンドがアプレットに転送されます。アプレットには、org.globalplatformパッケージのApplicationおよびPersonalizationインターフェースがあり、store -data コマンドを利用するためにprocessDataメソッドを継承します。
問題は、セキュリティ ドメインが選択されておらず、アプレットがこれらの INS を認識していないため、アプレットにinit-updateおよびexternal-authenticateコマンドを自分で実装する必要があるかどうかです。JCRE はこれらの GlobalPlatform APDU を自動的に検出し、SecurityDomain に転送しますか? そうでない場合、なぜこれが JCRE によって非表示/フィルター処理されないのですか?
e: 2006 年のグローバル プラットフォームの Web サイトで、CPSDemonstrator という名前の古い例を見つけまし た。
smartcard - スマート カードの事前パーソナライゼーションと履歴バイト
融合されていないスマートカードを持っていました(つまり、事前にパーソナライズされていませんでした)。ATR= があり3B F9 13 00 00 81 31 FE 45 4A 43 4F 50 32 34 32 52 33 A2
ます。
Q1: カードのヒストリカル バイトはどこにありますか? それらをどのように分析できますか?
Q2: カードのモデルはどこで確認できますか? インターネットで ATR を検索しましたが、何も見つかりませんでした。
GPJなどのツールを使用して、本当に空白のカード (融合されていないカードを意味します) のアプレットを一覧表示しようとすると、次の出力が表示されます。
上記の出力は、ツールが選択する SC を見つけられなかったことを意味します。
私はインターネットで多くのことを検索し、最終的に、個人化前の手順にキー ( Transport-Key )が必要であることがわかりました。
いくつかの知識を共有させてください!
パーソナライゼーション前の手順は次のとおりです (JCOP の場合)。
- ATRの依頼
- Select コマンドでルート アプレットを選択します (Transport-Key はこのアプレットの AID です)。
- ブート コマンド
- 必要な数の Read、WRITE、ADMINEXEC、SB_NAT_APPLET_INSTRUCTION、および AUTH コマンドが可能です。
- PROTECT コマンド
- コマンドを融合する
- カードをリセットします。
ステップ 4 では、IC をデフォルト設定で初期化します (IC の必要なライフサイクルの構成、通信動作の定義、ATR および/または ATS パラメータ、またはアプレットのプリロード)。
ところで、最初の 2 つの手順 (1 と 2) を実行してから、カードをリセットし、アプレットをもう一度一覧表示しようとしました。
ご覧のとおり、アプレットは AID= で表示されA0 00 00 01 51 00 00
ます。しかし、私はEXTERNAL AUTHENTCATコマンドをうまく実行できませんでした!
Q3: 外部認証が失敗したのはなぜですか? SDキーを設定していないから?
OpenSC Toolを使用してこのアプレットを選択しようとしました:
Q4: この出力の意味は何ですか?
以下では、 get-dataスクリプトの後のGP Shellの出力も確認できます。
Q5: この出力の意味は何ですか? どうすれば分析できますか?
smartcard - Java カード アプレットでネイティブ メソッドを使用するにはどうすればよいですか?
これは、Javacards 用の単純なHello Worldアプレットです。
問題は、「Java カードのネイティブ メソッドの意味は何ですか?」です。
スマート カードのセキュリティ ターゲットには、「アプリケーションでネイティブ メソッドを使用することを禁止する」と書かれています。問題は、「特定のカードについてテストするにはどうすればよいか」です。つまり、上記のコードを変更してネイティブ メソッドをいくつか追加し、それを.capファイルに変換してカードにアップロードできるかどうかを確認させてください。
アップデート :
親愛なる TonyK が最初のコメントで言ったように、おそらく私の開発環境はそのようなものをコンパイルしないので、2 つの質問があります:
- ネイティブメソッドとは?例はありますか?
- それらをコンパイルして、この種のメソッドを内部に含むプログラムを.capファイルに変換して、カードにアップロードするにはどうすればよいですか?
smartcard - Common Criteria (クラス FTP) のスマート カードおよびセキュア チャネル要件
Cammon Criteria標準の 2 番目の部分には、 FTPという名前のクラスがあります。スマート カードと Java カードのセキュリティ ターゲットでは、カードがこれらの要件を満たさなければならないことが記載されています。以下に、私のJCOP v2.4.2 r3スマート カードのこのクラスの 2 つの要素を示します。
6.1.9.10 FTP_ITC.1/CM TSF 間高信頼チャネル
- FTP_ITC.1.1/CM:
TSF は、他の通信チャネルとは論理的に区別され、そのエンドポイントの確実な識別と変更または開示からのチャネル データの保護を提供する、それ自体と別の高信頼 IT 製品との間の通信チャネルを提供しなければならない (shall)。
- FTP_ITC.1.2/CM : [編集により洗練された]
TSF は、カード発行者のセキュアな環境に配置された CAD が高信頼チャネルを介して通信を開始できるようにしなければならない (shall)。
- FTP_ITC.1.3/CM
TSF は、新しいアプリケーション パッケージをカードにロード/インストールするために、高信頼チャネルを介して通信を開始しなければならない (shall)。適用上の注意: Java Card プラットフォームには動的パッケージのロードはありません。新しいパッケージは、カード発行者の要求があった場合にのみカードにインストールできます。
6.1.14.2 FTP_ITC.1/ライフサイクル TSF 間高信頼チャネル
- FTP_ITC.1.1/ライフサイクル:
TSF は、他の通信チャネルとは論理的に区別され、そのエンドポイントの確実な識別と変更または開示からのチャネル データの保護を提供する、それ自体と別の高信頼 IT 製品との間の通信チャネルを提供しなければならない (shall)。
- FTP_ITC.1.2/ライフサイクル:
TSF は、[割付: 別の高信頼 IT 製品] が高信頼チャネルを介して通信を開始することを許可しなければならない (shall)。
- FTP_ITC.1.3/ライフサイクル:
TSF は、[割付: カードライフサイクル状態の設定および OS 内部ライフサイクル状態の設定] のために高信頼チャネルを介して通信を開始しなければならない (shall)。
問題は、これらの要件を満たしているかどうかを確認するためにカードをテストするにはどうすればよいかということです。APDUをカードに送受信する際に暗号化方式を使用していますが、この方式を満たしている証拠ですか?
どうにかして、暗号化された形式で APDU をカードに送信できますか? つまり、SELECT APDUコマンドをプレーン (= 00a40400 ...) ではなく暗号化された形式でカードに送信できますか? 出来ますか?
smartcard - JavaCard でインストール済みパッケージまたはアプレットの AID を変更しますか?
タイトルで述べたように、Java Card アプレットまたはパッケージの AID を変更する方法があるかどうかを知りたいです。