0

http://docs.oracle.com/javase/6/docs/api/java/security/KeyStore.html

以下のコードでは、Java アプリケーションによってパスワードがユーザーに要求されます。

KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());

// get user password and file input stream
char[] password = getPassword();
java.io.FileInputStream fis =
    new java.io.FileInputStream("keyStoreName");
ks.load(fis, password);
fis.close();

スマートカード上にある場合でも、アプリケーションがデジタル証明書のパスワードを取得し、それを別の用途に使用できる可能性があるということですか?

4

1 に答える 1

2

はい、十分な権限を持つ別のアプリケーションが、メモリからパスワードの内容を読み取ったり、キーボードに入力されたパスワードをスヌープしたりする可能性があります。

コード例は、char配列として格納されたパスワードを示していますが、これは推奨される方法です。このような配列は、不変の s とは異なり、パスワードの使用後に別の値にリセットできますString。これにより、攻撃ウィンドウが最小化されますが、削除されません。

いくつかのスマート カード メーカーは、パスワードがカードに直接配信されるようにする外部 PIN パッド デバイスを提供しています。これらの解決策のいずれかを調査することを検討してください。

于 2012-08-04T12:01:17.027 に答える