0

私は、エンドユーザーによって作成されたデータを認証する必要があるアプリケーションを開発しています。

そのためにKeyChainAPIを使用できることは知っていますが、このAPIには、アプリケーションの欠陥になると思われるものがあります。KeyChainは証明書へのユーザーアクセスを必要とし、したがって秘密鍵へのアクセスを必要とするため、アプリケーションはIDの盗用とデータの偽造で非難される可能性があります。秘密鍵を「コピー」したり、別の場所に送信したりすることなく、ユーザーの秘密鍵を使用してこのデータを認証する方法が必要になります。

とにかくこれにできることはありますか?

私は今、スマートカードとUSBトークンを楽しみにしていますが、他の誰かが同様の問題を解決したり、何かを提案したりするための実装の経験を共有できれば幸いです。

4

2 に答える 2

2

KeyChain APIは、ハードウェアキーストアで実装されている場合、秘密キーをコピーすることを許可しません。残念ながら、Android4.1以降を搭載したGoogleNexusデバイスのみがハードウェアキーストアを実装しています。他のベンダーもこれを行う、標準の安全でないソフトウェア実装を使用する可能性があります。

スマートカードをサポートする専用のSDカードがあると思いますが、これらは安くはなく、すべての電話で機能するかどうかはわかりません。

また、Android 4.1以降では、秘密鍵にアクセスできません。署名/復号化/暗号化で秘密鍵として使用できるオブジェクトのみを取得しますが、実際の鍵は取得しません。実装の詳細については、こちらをご覧ください:http: //nelenkov.blogspot.de/2012/07/jelly-bean-hardware-backed-credential.html

于 2013-02-18T14:25:42.420 に答える
0

アクセスよりもオブジェクトを返し、同じファイルに2つのクラスがある場合は、プライベート変数を使用します。

private class test_A
{
    private int num;

    private test_A getObject()
    {
        return this;
    }

}

private class test_B
{
    private void test()
    {
        test_A __object__ = new test_A().getObject();
        __object__.num = 3;
    }
}*
于 2013-02-18T14:38:18.497 に答える