問題タブ [jcop]
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.
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 - このカードには実際にどれくらいのメモリがありますか? (EEPROM と ObjectDeletion ゲーム!)
requestObjectDeletion()
メソッドの機能とカードの使用可能なメモリをチェックする簡単なプログラムを作成しました。
私のアプレットは、次のように 5 つの異なる種類の APDU コマンドに応答します。
- SELECT APDU コマンド: 応答:
0X9000
- コマンド :
XX 00 XX XX XX [...]
応答 : 使用可能なメモリをバイト単位で返します。 - コマンド :
XX 01 XX XX XX [...]
応答 : 2000 要素 (つまり 2000 バイト) のローカル バイト配列を作成します。 - コマンド :
XX 02 XX XX XX [...]
レスポンス : オブジェクト削除メソッドのリクエスト - その他のコマンド : 応答 :
0x9000
使用可能なメモリを返すために、無限while
ループを使用して100
要素を持つ多数のバイト配列を作成し、counter
同時に a を増やすメソッドを作成しました。Not enough memory
例外をキャッチすると、メソッドは戻りますcounter *100
(つまり、このメソッドを呼び出す前の空きメモリ)。
OK、これはプログラムです:
さて、問題があります。これは、いくつかの APDU コマンドをカードに送信したときのOpenSC-Toolの出力です。
コマンド0
リターン0xE358
(=58200)。したがって、このメソッドを呼び出す前のメモリは58200
バイトでした。
コマンドが を1
返します。これは、現在空きメモリがバイト0x0000
未満であることを意味します。100
コマンドが を2
返す0x9000
ため、requestObjectDeletion が正常に呼び出されました。
コマンドが再び3
返されます。これは、正常に実行されたことを意味します。0xE358
requestObjectDeletion
コマンドが を4
返す0x9000
ため、requestObjectDeletion が正常に呼び出されました。
コマンドは を5
返す0x9000
ので、要素を持つバイト配列2000
が作成されます。
今、カードの空きメモリが0xE358 - 2000 = 0xDB88
しかし、次のコマンドでは:
コマンド6
が返されます0xDD18
! つまり0xDD18 + 2000 = 0xE4E8
、カードにはバイトのメモリ空間があります!
これは誰が可能ですか?0xE4E8 - 0xE358
カードが最初のコマンドでこの 400 バイト ( ) を認識できないのはなぜですか?
java - RB 5.0 のような Java カード アプリケーションを作成するためのリソース
私は Java カード 36k にデータを書き込むことを主な機能とする Java アプリを作成しているので、リソース、Java カードに関するチュートリアル、そのようなものが必要です。私はJavaカードアプリを作った経験がないので、役に立つリソースを教えてください..
私は RB 5.0 のようなアプリケーションを作成しています。このアプリの src コードを教えていただければ、より良いでしょう :)
java - Javacard - 署名と検証
カードでメッセージに署名し、カード外で検証しようとしています。
結果は常に false です。
おそらくモジュラスと指数を間違って取得しています。何か案は?
Java アプレット コード:
.......
Java ホスト コード:
公開鍵を作成するコード:
メッセージを確認するコード:
更新: Java アプレットの署名方法
smartcard - JCOP 2.4.2 Java カードの ECDSA アルゴリズム
Java Card (JCOP 2.4.2) に ECDSA アルゴリズムを実装したいと考えています。これは私のソースコードです:
このスクリプト スクリプト コードを使用して、このソース コードを実行しています。
/send 0046000000
プレーン テキスト メッセージに署名するように要求すると、応答コードが返されます6F00
。
これの何が問題なのかを調べるのを手伝ってくれませんか?
このアルゴリズムを JCOP カードに適切に実装するにはどうすればよいですか?
smartcard - pro.javacard.gp.GPException: 厳格な警告: 融合されていない JCOP が検出されました
次のコマンドを使用してスマートカードの内容を一覧表示しようとすると
次の例外を取得:
検索すると、カードが事前にパーソナライズされていないことがわかりました。私の質問は、スマート カードの事前パーソナライゼーションとは何ですか? この事前事前認識を行うのは誰ですか? それはベンダーですか?
javacard - JavaCard Classic で TLV エンコード データを読み取る
Java Card (NXP JCOP J3D081、JCOP バージョン 2.4.2、Java Card バージョン 3.0.1 Classic) で TLV エンコードされた証明書を読みたいと思います。
cap ファイルは正常に作成されますが、カードにインストールしようとすると、gpshell エラーが発生します。
load() は 0x80206A80 を返します (6A80: 間違ったデータ / コマンド データの値が正しくありません。)
私は JCDK 3.0.3 の jar を使用していますが、これは通常、楕円曲線などで機能します。TLV のものと何が違うのでしょうか?
使用したアプレット コード (BERTLV を使用しない場合は正常にインストールされます):
次の ant build.xml を使用して cap ファイルを作成します。
使用される build.properties:
そのため、キャップが api_connected.jar でコンパイルされていると思われましたが、キットからファイルを削除しても何も変わりませんでした。
どんな助けでも大歓迎です。前もって感謝します、トーマス
smartcard - ECC 鍵ペアの生成時に CryptoException.ILLEGAL_VALUE を取得する
JCOP カードを使用してECCキーペアを生成しました。ECPrivateKey
、ECPublicKey
をKeyPair
問題なく 作成できますが、 のCryptoException.ILLEGAL_VALUE
場合は例外がスローされますgenKeyPair()
。カードまたは操作の何が問題になっていますか? 何も思いつきません。どこで間違いを犯したか教えてください。とても有難い!
ところで、JCAlgTest で同じ問題が発生したことがわかりました。ここでテスト レポートを確認してください。
これが私のコードです。