1

AESKeyタイプのいくつかのキーを異なる端末と共有する必要があるアプレットに取り組んでいます。問題は、処理する必要がある端末の数が事前にわからないことです。

HashTableJava Card のような構造がないため、複雑になっています。上限を修正して、できるだけ多くのオブジェクトをインスタンス化することはできますAESKeyが、別の方法を探したいと思います。

バイト配列で何かできると思ったのですが、キーをに格納するのは悪い習慣byte[]ですか?

答えはイエスだと思います。一時的な配列に格納して計算することをお勧めします。AESKeyそうしないと、オブジェクトの役割がわかりません。確認したいだけです。

4

3 に答える 3

2

キーや PIN などの重要なセキュリティ関連データは、Javacard API から指定されたオブジェクトに常に格納されますAESKey
スマートカードのオペレーティング システムは、追加の内部操作を実行して、値が漏洩しないように保護します。
カードが遭遇するターミナルの数がわからない場合は、リンクされたリストの一部であるオブジェクトにキーをカプセル化できます。

class KeyElement{
   KeyElement next;
   AESKey key;
}
于 2015-09-11T18:39:06.380 に答える
1

byte[]技術的には、次のスキームを使用して、「未知のレベルのセキュリティ」でキー値を格納することができます。

永続的なラッピング キーを使用して、キーのラップされた (つまり、暗号化された) 値のみを永続的なバイト配列に格納します。

キーを使用する前に、同じラッピング キーを使用して目的のキーを一時的なキー オブジェクトにラップ解除します。あとは勝手に使ってください。

AESKey利点: おそらく「多数のオブジェクト アプローチ」よりもメモリ効率が高くなります。

欠点:かなり奇妙です。このように実装しないように最善を尽くします。

免責事項: 私は仮想通貨の専門家ではないので、私の考えを検証してください。

免責事項 2: もちろん、最も合理的な方法は、Maarten Bodewes が指摘したようにキー派生を使用することです...

于 2015-09-22T15:06:44.067 に答える
0

実際、AESKeyJava Card では配列の作成が可能です。バイト配列 ( ) のみが許可されていると思っていbyte[]ましたが、許可されていません。

したがって、アプレットのキー数を制限するために上限を修正する必要があると考える場合、AESKey配列 ( )を宣言することを禁じるものは何もありません。AESKey[]

于 2015-09-22T14:38:36.960 に答える