web-dev-qa-db-ja.com

マルチユーザーサーバーの公開鍵ベースの認証

それで、アリス、ジョン、ピーター、ボブがいるとしましょう。アリス、ジョン、ボブは全員、ピーターの公開鍵を知っており、ピーターを信頼しています。アリスはボブのサーバーに接続したいので、ピーターが署名した公開鍵を提示します。ボブは、自分の鍵がピーターによって署名されていることを確認します。質問:ジョンがピーターによって署名されたキーも持っている場合、それをボブに提示すると、ボブは確認しますが、ジョンは自分のユーザー名がアリスであると言います。代わりに、ピーターがアリスの名前と彼女の公開鍵(アリスの鍵と名前を組み合わせたもの)のハッシュに署名し、ボブがそれを確認しても大丈夫ですか、それとも安全ではありませんか?ハッシュが解読された場合はどうなりますか?アリスがアリスであり、ピーターによって署名されていることを確認する他の方法は何ですか?また、アリスがボブに接続すると、ピーターはオフラインになります。

1
JohnGmdv

あなたの質問では、キーについてのみ取り上げています。キーは他の誰かが署名できますが、キーはID自体に関連付けられていません。

ジョンがピーターによって署名されたキーも持っていて、それをボブに提示した場合、ボブは確認しますが、ジョンは自分のユーザー名がアリスであると言います。

次に、アイデンティティを追加するという概念を提案します。

代わりに、ピーターがアリスの名前と彼女の公開鍵(アリスの鍵と名前を組み合わせたもの)のハッシュに署名しても大丈夫ですか...

このようにして、公開鍵インフラストラクチャ(PKI)の主要な要素の1つである証明書について説明しました。証明書は、ID(Aliceの名前)とIDに属する公開鍵(Aliceの公開鍵)を組み合わせた情報であり、これらすべてが発行者によって署名されます(Peterの秘密鍵を使用)。

HTTPS接続を行うたびに、サーバーはそのような証明書を送信し、クライアントはURLの名前が証明書の名前と一致すること、つまり、要求されたIDと実際のIDが一致することを確認します。証明書には、証明書の有効期間や使用目的など、さらに多くの情報が含まれています。

ハッシュが解読された場合はどうなりますか?

ハッシュが解読されたり、秘密鍵が知られると、それは悪いものになり、IDを偽造するために使用される可能性があります。そのため、現在のSHA-256のように安全なハッシュが使用されています。

また、アリスがボブに接続すると、ピーターはオフラインになります。

これはそれほど重要ではありません。ボブは発行者(ピーター)の証明書を知っており、信頼しているため、ボブはアリスの証明書が有効かどうかをピーターに尋ねる必要はありません。しかし、アリスが証明書を取り消したかどうかをピーターに尋ねることは時々役に立ちます。

詳細については、 PKIのしくみ をご覧ください。

1
Steffen Ullrich