X509証明書、デジタル署名否認防止VS(C#)と
-
20-09-2019 - |
質問
私たちは、PKIを使用して署名されるXMLメッセージを必要とするソリューションを開発するためのスマートカードにテストsertificatesのセットを手渡してきました。それぞれの(物理的な)スマートカードは、それに保存されている2つの証明書を持っているようです。私は、スマートカードのプロバイダによって提供されるソフトウェアを使用して、Windowsの証明書ストアにインポートし、次がインストールされている証明書を反復するために似たコードを使用します:
foreach (X509Certificate2 x509 in CertStore.Certificates) {
foreach (X509Extension extension in x509.Extensions) {
if (extension.Oid.Value == "one we are interested in") {
X509KeyUsageExtension ext = (X509KeyUsageExtension)extension;
if ((ext.KeyUsages & X509KeyUsageFlags.DigitalSignature) != X509KeyUsageFlags.None) {
// process certs here
私たちは、XMLSに署名するように設定否認防止のキー使用フラグを持っている証明書を使用するように言われています。しかし、否認防止フラグを持っている証明書は、このフラグを持っているののみのではなく、例えば、私は上記の確認デジタル署名フラグ。このストライク誰が、私のように少し奇妙ていますか?私は、他の言葉で(ように見える)デジタル署名の使用フラグが設定されていない証明書で署名するように言われています。この通常の手順は?すべてのコメント?
感謝します。
解決
これは、キーは何を使用していませんか?あなたは、例えば、キーはそれがデジタル署名を使用するため設定されたフラグを持っていない可能性がADログインを提供するために使用されたが、あれば、これは少し奇妙で、正しいです。それはあなたがそのためにそれを使用することはできませんと言うことはありません、それはちょうどあなたがキーの指示された使用法の外に行くときに、証明書発行者が保証を提供しないことを示します。
他のヒント
私は RFC 5280 を(4.2.1.3)、否認防止がスーパーセットを読み取るようにデジタル署名の。言い換えれば、それは、すべてのデジタル署名の能力や一部を付与します。だから、技術的に、彼らは何を求めていることは、有効であるけれども、おそらく珍しいます。
あなたは、あなたが唯一の否認防止を使用することになっている、署名が有効な値を持って欲しいです。実際、これは規格によって推奨されているセキュリティ上の問題を有していてもよい一緒nonRepudation有する他のkeyUsageビットの使用ので(ETSI TS 102 280を参照)。