初心者の質問:一部のベンダーは、動的証明書を生成して、従来の証明書を持っていないユーザーがドキュメントに署名できるようにするなどのソリューションを提案しています。しかし、証明書形式に煩わされるのではなく、秘密鍵/公開鍵だけを生成しないのはなぜですか?
3 に答える
(公開鍵)証明書の目的は、公開鍵をそのサブジェクトのID(つまり、鍵ペアに関連付けられた所有者/エンティティ)、および場合によっては証明書の用途を示すさまざまな属性にバインドすることです。( Security.SEに関するこの質問に興味があるかもしれません。)
常に秘密鍵(公開鍵や証明書ではない)で署名しますが、公開鍵や証明書は署名されたドキュメントに添付されることがよくあります。
知っている公開鍵の明示的なリストがあり、ユーザーに個別にリンクできる場合は、証明書は必要ありません。
証明書を使用すると、(証明書に署名した)サードパーティが識別子と公開鍵の間のバインディングをアサートできます。事前にそのIDを知らなくても、証明書に署名したエンティティを信頼している限り、署名を署名者のIDにリンクできます。
この場合、動的に生成された証明書は、証明書を動的に生成する当事者を信頼しない限り、あまり役に立たない可能性があります(ツール自体を意味するのか、おそらくあなたが知っているWebサイトを意味するのかはわかりません)。
多くの場合、X.509証明書は、ツールで必要とされるため、その署名に添付するためだけに使用されますが、署名を検証するツールで直接知っているIDと公開鍵を照合できる場合があります。時には、それがいつか役立つ場合を見越して行われることもあります。
たとえば、独自の成果物を中央のMavenリポジトリに公開する場合は、PGP証明書(多くの場合、PGP公開鍵とのみ呼ばれる)を使用して署名する必要があります。ただし、プロセス中に証明書の検証はまったく行われません(自己署名署名のみのPGP証明書で十分です)。この場合、このプロセスは比較的無意味になりますが、後でこれらの証明書を検証できる場合は、使用するアーティファクトをより厳密にすることができます。
署名は、まず第一に、ある人物による文書の作成者 (または承認) を証明します。そして、鍵だけでは何も証明できません。これが証明書の必要性です。一部の認証局は、ユーザーの証明書に署名し、鍵ペアが証明書の発行先の個人 (または法人) に属していることを証明します。ドキュメントの読者は、署名自体を計算するだけでなく、証明書を検証し、証明書の所有者の名前を確認することによっても、署名が有効であることを確認できます。
どのベンダーが証明書を動的に発行できるのかよくわかりません - 自己署名されていない方法で証明書を発行するには (自己署名証明書はドキュメント署名のコンテキストではほとんど意味がありません)、署名に使用される秘密鍵が必要です。証明書は、これらのベンダーのソフトウェアに組み込む必要があるため、悪用される傾向があります。
それは同じですが、秘密鍵があなたが所有していると思われる人に属していることに同意するには、第三者が必要です。