問題タブ [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.

0 投票する
1 に答える
428 参照

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 ファイルを正常にインストールしました。カードはバイトコードの検証後にもこの操作を検出し、インストールを防止するべきではありませんか?

0 投票する
1 に答える
714 参照

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 SpecificationsGlobal Platform v2.2.1 card specification aND JCOP v2.4.2 r3 Administrator Manualで検索しても役に立ちませんでした。上記のドキュメントには、Secure Box に関する記述はほとんどありません。

そう :

JCOP カードでセキュア ボックスを使用する方法について、アイデアや経験を持っている人はいますか? Secure Box にアップロードできるプログラム/コードの種類は? これらのプログラムは Java Card 言語で作成され、CAP ファイルの形式でもありますか? それとも、例えば C++ やアセンブリで書かれていますか?

それらをカードにアップロードしてインストールする方法は?このセキュア ボックスの利点は何ですか?

0 投票する
1 に答える
540 参照

javacard - このカードには実際にどれくらいのメモリがありますか? (EEPROM と ObjectDeletion ゲーム!)

requestObjectDeletion()メソッドの機能とカードの使用可能なメモリをチェックする簡単なプログラムを作成しました。

私のアプレットは、次のように 5 つの異なる種類の APDU コマンドに応答します。

  1. SELECT APDU コマンド: 応答:0X9000
  2. コマンド :XX 00 XX XX XX [...]応答 : 使用可能なメモリをバイト単位で返します。
  3. コマンド :XX 01 XX XX XX [...]応答 : 2000 要素 (つまり 2000 バイト) のローカル バイト配列を作成します。
  4. コマンド :XX 02 XX XX XX [...]レスポンス : オブジェクト削除メソッドのリクエスト
  5. その他のコマンド : 応答 :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返されます。これは、正常に実行されたことを意味します。0xE358requestObjectDeletion

コマンドが を4返す0x9000ため、requestObjectDeletion が正常に呼び出されました。

コマンドは を5返す0x9000ので、要素を持つバイト配列2000が作成されます。

今、カードの空きメモリが0xE358 - 2000 = 0xDB88

しかし、次のコマンドでは:

コマンド6が返されます0xDD18! つまり0xDD18 + 2000 = 0xE4E8、カードにはバイトのメモリ空間があります!

これは誰が可能ですか?0xE4E8 - 0xE358カードが最初のコマンドでこの 400 バイト ( ) を認識できないのはなぜですか?

0 投票する
1 に答える
738 参照

java - RB 5.0 のような Java カード アプリケーションを作成するためのリソース

私は Java カード 36k にデータを書き込むことを主な機能とする Java アプリを作成しているので、リソース、Java カードに関するチュートリアル、そのようなものが必要です。私はJavaカードアプリを作った経験がないので、役に立つリソースを教えてください..

私は RB 5.0 のようなアプリケーションを作成しています。このアプリの src コードを教えていただければ、より良いでしょう :)

0 投票する
1 に答える
782 参照

java - Javacard - 署名と検証

カードでメッセージに署名し、カード外で検証しようとしています。

結果は常に false です。

おそらくモジュラスと指数を間違って取得しています。何か案は?

Java アプレット コード:

.......

Java ホスト コード:

公開鍵を作成するコード:

メッセージを確認するコード:

更新: Java アプレットの署名方法

0 投票する
3 に答える
905 参照

smartcard - JCOP 2.4.2 Java カードの ECDSA アルゴリズム

Java Card (JCOP 2.4.2) に ECDSA アルゴリズムを実装したいと考えています。これは私のソースコードです:

このスクリプト スクリプト コードを使用して、このソース コードを実行しています。

/send 0046000000プレーン テキスト メッセージに署名するように要求すると、応答コードが返されます6F00

これの何が問題なのかを調べるのを手伝ってくれませんか?

このアルゴリズムを JCOP カードに適切に実装するにはどうすればよいですか?

0 投票する
4 に答える
1007 参照

smartcard - pro.javacard.gp.GPException: 厳格な警告: 融合されていない JCOP が検出されました

次のコマンドを使用してスマートカードの内容を一覧表示しようとすると

次の例外を取得:

検索すると、カードが事前にパーソナライズされていないことがわかりました。私の質問は、スマート カードの事前パーソナライゼーションとは何ですか? この事前事前認識を行うのは誰ですか? それはベンダーですか?

0 投票する
1 に答える
865 参照

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 でコンパイルされていると思われましたが、キットからファイルを削除しても何も変わりませんでした。

どんな助けでも大歓迎です。前もって感謝します、トーマス

0 投票する
1 に答える
289 参照

smartcard - ECC 鍵ペアの生成時に CryptoException.ILLEGAL_VALUE を取得する

JCOP カードを使用してECCキーペアを生成しました。ECPrivateKeyECPublicKeyKeyPair問題なく 作成できますが、 のCryptoException.ILLEGAL_VALUE場合は例外がスローされますgenKeyPair()。カードまたは操作の何が問題になっていますか? 何も思いつきません。どこで間違いを犯したか教えてください。とても有難い!

ところで、JCAlgTest で同じ問題が発生したことがわかりました。ここでテスト レポートを確認してください。

これが私のコードです。