問題タブ [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.
nfc - RSA キーペアの生成が原因で Java カード アプレットのインストールに失敗する
J3A040 JCOP カードにアプレットをインストールしようとしています。
インストール方法として、次のものがあります。
インストールは常に次のエラーで失敗します。
ただし、キーペアの生成を削除すると、すべて正常に機能します。カードの仕様を読みましたが、次のとおりです。
. 暗号化/復号化および署名の生成と検証のための RSA および RSA CRT (最大 2048 ビットの 1280 キー) 1 d. 安全な環境での RSA CRT キー生成 (1280 ビット キーから 2048 ビット キーまで)
問題ないと思います。
推測はありますか?
javacard - アプレットの権限とカードのヒストリカル バイトを変更するには?
履歴バイトの変更は、パーソナライズ前のステップに限定されているとすでに考えていました。しかし、今日、GlobalPlatform API で setATRHistBytesという名前のメソッドを見つけました。
これはその説明です(GlobalPlatform 2.2 Page 172):
setATRHistBytes
public static boolean setATRHistBytes(byte[] baBuffer, short sOffset, bytebLength)
ISO/IEC 7816-4 に準拠したコンタクト カードおよび ISO/IEC 14443-3 に準拠したタイプ A 非接触カードの場合、このメソッドは履歴バイトを設定します。バイトのシーケンスは、その後の電源投入またはリセット時に表示されます。
ノート:
• OPEN は、GlobalPlatform レジストリ内の現在のアプレット コンテキストのエントリを見つけ、アプリケーションが現在のカード I/O インターフェイスに対するカード リセット権限を持っていることを確認します。
• OPEN は、ATR のフォーマット文字 T0 の履歴バイトの長さを同期する役割を果たします。
パラメーター:
baBuffer - 履歴バイトを含むソース バイト配列。グローバル配列でなければなりません。
sOffset - ソース バイト配列内の履歴バイトのオフセット。
bLength - 履歴バイト数。
戻り値:
履歴バイトが設定されている場合は true、アプリケーションが必要な権限を持っていない場合は false
ここで、カードの履歴バイトを変更したいと考えています。そこで、以下のプログラムを作成し、それをcapファイルに正常に変換しました。
上記のように、APDU コマンドを受信したとき0102030405060708090A
にHistorical BytesINS=0X00
に.
問題は、このアプレットにカード リセット権限を設定する方法がわからないことです。インストール手順で権限を指定する必要があることはわかっていますが、方法がわかりません。通常、GlobalPlatformProツールを使用してアプレットをアップロードします。それがサポートするパラメーターでは、関連するパラメーターが表示されませんでした:
アプレットを正常にインストールしましたが、そのコマンドの受信に戻る0x9000
間、履歴バイトを変更できないため、アプレットにカード リセット権限を設定する必要があることに注意してください。
質問:
1- アプレットの権限を変更/設定するにはどうすればよいですか?
2- の0x9000
受信時にカードが戻ってくるのはなぜ0x00 0x00 x00 0x00
ですか? (アプレットの権限がCard ResetsetATRHistBytes
でない場合にこのメソッドが返されることが説明に記載されているため、例外が返されることを期待しています)false
javacard - 操作された CAP ファイルは、インストール プロセスで Java Card を壊す可能性がありますか?
私は正常に動作するJavaカードを持っています:
各コマンドの受信時に APDU バッファーを返す簡単なプログラムを作成します。
上記のプログラムを.cap
ファイルに変換した後、cap ファイルをWinRARで開き、 .CAPファイルの 1 バイトを次のように変更します。
( class.capの 9 番目の bye の0x78
代わりに置き換えました)。0x07
拡大するにはクリックしてください :
今、この新しい cap ファイルをインストールしようとしました。しかし、インストールが失敗しただけでなく、カードの内容を一覧表示できなくなりました。
私の質問:
この新しく生成された CAP ファイルによって、スマート カードに何が起こったのですか? 元のファイルと操作されたファイルのバイトコードとこのバイトの意味について誰かが知っていますか? これは、操作されたファイルをインストールすることに対する適切な論理的対応ですか?
注1:
この新しいcapファイルを JCOP カードにもインストールしようとしました。インストールは再び失敗しましたが、上記のエラーの代わりに、カードは約 15 分間ミュートされました。(カードリーダーが再びアクティブになるには、約 15 分かかります!)
注2:
このファイルの 9 バイト目ではなく 10 バイト目を変更しようとしました。だから私はに置き換え0x01
ました0x45
。その後、新しい CAP ファイルを正常にインストールしました。カードはバイトコードの検証後にもこの操作を検出し、インストールを防止するべきではありませんか?
smartcard - JCOPカードのセキュアボックス
JCOP V2.4.2 リビジョン 3 セキュリティ ターゲット:
11-12ページ
Secure Box の概念は、JCOP 2.4.2 R3 内に実装されています。Secure Box は、認定されていないサード パーティのネイティブ コードを実行できるようにする構造であり、このコードが JCOP 2.4.2 R3 オペレーティング システムまたはオペレーティング システムによって実行されるアプレットを害したり、影響を与えたり、操作したりできないようにします。ハードウェアに存在する他のコードおよび/またはデータからのセキュア ボックス内のネイティブ コードは、ハードウェア評価で認定されたハードウェア MMU によって保証されます。
私は上記のカードをいくつか持っており、 Secure Boxの操作も経験したいと思っています。Java Card v3.0.1 Specifications、Global Platform v2.2.1 card specification aND JCOP v2.4.2 r3 Administrator Manualで検索しても役に立ちませんでした。上記のドキュメントには、Secure Box に関する記述はほとんどありません。
そう :
JCOP カードでセキュア ボックスを使用する方法について、アイデアや経験を持っている人はいますか? Secure Box にアップロードできるプログラム/コードの種類は? これらのプログラムは Java Card 言語で作成され、CAP ファイルの形式でもありますか? それとも、例えば C++ やアセンブリで書かれていますか?
それらをカードにアップロードしてインストールする方法は?このセキュア ボックスの利点は何ですか?
javacard - EMV カードの RSA キーのテスト
EMV 標準に従って、2 つの RSA キーが必要です。
1) 発行者 RSA キー (1408 ビットを使用)
2) ICC RSA キー (1152 ビットを使用)
ここでは、発行者の RSA 秘密鍵を使用して、ICC 公開鍵証明書を計算します。EMV カードには、SDA/DDA で使用する(発行者公開鍵証明書)
(ICC PUBLIC KEY CERTIFICATE) など8F
のさまざまな Tag が含まれています。90
9F46
本当はJava言語を使ってEMVカードをカスタマイズし、すべての計算を自分で処理したいのです。これには RSA キーが必要です (SDA/DDA には RSA スタッフが必要です)
また、EMVにはDGI8201-8205があります
CRT 形式の ICC RSA 秘密鍵が含まれています。
非常に複雑であることは承知していますが、これは EMV テクノロジーを深く理解するための唯一の方法です。私の目的を解決し、EMV 計算で使用できる RSA キーを取得する方法を教えてください。前もって感謝します。