1

私は実際にSDカード(Java Cardテクノを使用したスマートカード)を使用して、別のカード(クライアント)との相互認証などの機能を実現するプロジェクトに取り組んでいます。だから私はいくつかのJavaCardアプレットを書いていますが、今は問題があります:

カード仕様またはグローバルプラットフォーム仕様に関するこれらの参照から、カード上のキーを再利用する方法が見つかりませんでした(オフカード側でキーリポジトリを作成しないでください)。最初に、APIディスポでいくつかのメソッドを見つけようとしました。見つかりませんでした。次に、実際には、Java Cardアプレットでプログラムを作成する必要があるため、既存のキーセットONカードを取得/アクセス/使用する方法を説明します。認証で暗号化に使用するには?

誰でも助けることができますか?

4

2 に答える 2

0

キーをアプレットの変数に保存するだけです。デフォルトでは、すべての変数は永続的です。

もちろん、アプレットのインストール後に既存の鍵ペアをアプレットにインストールできるインポート/エクスポート機能を実装できます。

アップデート

セキュリティ ドメインを扱わないでください。アプレット内からキーにアクセスする場合は、内部に保管してください。

たとえば、RSA キーを使用すると、フィールドごとにインポートできます (RSA 公開キーのモジュラスと指数など)。インポートするには、すべてをbyte[]フォームに送信する必要があります。次に、1 つまたは複数の APDU を使用してバイト配列をカードに転送できます。1 つの APDU のペイロード データに対してバイト配列が長すぎる場合は、複数の APDU が必要です。

指数またはモジュラスのデータを転送したら、公開鍵インスタンスを作成して、そのコンポーネントを設定できます。

RSAPublicKey pub = KeyBuilder.buildKey(ALG_RSA, LENGTH_RSA_1024);
pub.setExponent(...);
pub.setModulus(...);

作成した RSAPublicKey インスタンスをアプレット クラスのフィールド変数に保存すると、永続的に保存されることを確認できます。

秘密鍵と他の暗号アルゴリズムの鍵を作成するのと同じ方法です。

于 2012-06-28T13:57:24.177 に答える