0

私は、2 つのパーティ (クライアントとサーバーと呼びます) 間の安全な接続を保証するアプリケーションを作成しています。

サーバーは、https を使用して接続できるクライアントを制限する必要があります。この目的のために、サーバーは、クライアントが接続を試みるときにチェックされる一定数の証明書を発行します。クライアントが使用している証明書が信頼できるリストにない場合、接続は確立されません。

この証明書は、ある種の USB デバイスを使用して配布する必要があります。したがって、私のアプリケーションを使用しているクライアントが https を使用してサーバーから何かを取得しようとすると、アプリケーションは USB デバイスからその証明書を読み取り、それを使用して https 接続を確立する必要があります。秘密鍵は、デバイス上で常に秘密にしておく必要があります。

これまでのところ、クライアントとサーバー (JKS) にローカル キーストアを作成し、それらを相互に信頼できるリストに追加し、それらを使用して適切な接続を確立することができました。

私の質問は、https 接続に必要な秘密鍵と一緒に、クライアント証明書をサーバーによって発行してクライアントに転送することはできますか? クライアント マシンにデータやキーストアを作成したくありません。https 接続を確立するために必要なものはすべて、そのデバイス上にある必要があります。デバイスには、このプロセスを支援し、秘密鍵の機密性を確保するためのいくつかの手順と API を含めることができます。

どんな助けでも大歓迎です:)

4

2 に答える 2

0

クライアントが資格情報を保護することを信頼していない場合、認証に対する通常のクライアント証明書アプローチはうまく機能しません。これはあなたのシナリオのようです。

証明書を USB デバイスに配置すると、証明書がクライアント マシンのディスクから切り離されますが、クライアント ユーザーが証明書にアクセスして他のユーザーに配布することはできなくなります。一方で、第三者がクライアント マシンから証明書を「保管中」に盗むリスクを軽減しますが、これはクライアントが USB キーを適切に保護している場合に限られます。そのため、防御しようとしている脅威と、誰を信頼しているかを明確にする必要があります。

証明書をクライアント ユーザーから完全に「プライベート」にする唯一の方法は、ある種の耐タンパー デバイスに証明書を配置し、認証中にクライアント マシンに証明書を送信しない方法を使用することです。

このアプローチを、銀行カードと PIN (2 要素認証) を使用してチャレンジ/レスポンスを実行できるデバイスが顧客に発行されるインターネット バンキングに使用されるアプローチと比較してください。カードの詳細は、カードのチップによるカジュアルな攻撃から保護されています。しかし、システムは、クライアントがカードと PIN を管理していると想定し、盗難をすぐに報告します (お金が危険にさらされているためです!)。クライアントがクレデンシャルを管理する意欲がない場合、このアプローチは意味がありません。

クライアントが共有不可能なトークンを持っていることを確認したいだけの場合は、問題に対する既製のソリューションであるSecurIDデバイスなどの使用を検討できます。

于 2012-10-25T13:43:19.710 に答える
0

クライアント証明書は、サーバーによって発行され、https 接続に必要な秘密鍵と一緒にクライアントに転送できますか?

技術的には可能ですが、秘密鍵が意図したユーザーにのみ到達することを確認したい場合は、他の方法でその接続を認証する必要があります。全体的なスキームに関する限り、これは実際には役に立ちません。さらに、秘密鍵をデータとしてクライアントに送信することで、何らかの方法で秘密鍵を抽出できる場合があります。

USB デバイスを物理的に送信できる場合は、PKCS#11をサポートするハードウェア暗号化トークンを使用できます。このようなトークンには、抽出できない方法で秘密鍵を保存するオプションがある傾向があります (デバイスでのみ使用できます)。それらは、スマート カード (この場合リーダーが必要) または USB トークン (メモリ スティックのように見えますが、そうではありません) の形で現れる傾向があります。モデルによっては、USB トークンは実際にはリーダーが組み込まれたスマート カードである場合があります。

Java はPKCS#11 キーストアをサポートしているため、このトークンに PKCS#11 ドライバー/ライブラリが付属していれば、Java から使用できます。

于 2012-10-25T13:56:14.930 に答える