web-dev-qa-db-ja.com

EC秘密鍵バージョンフィールドは何を意味しますか?

私は質問 ECC秘密鍵をPKCS#1形式に変換する を読みました。また、従来のEC秘密鍵のバージョンフィールドの値が01であることを理解しました。

コマンドopenssl pkcs8 -topk8 -nocryptを使用して、従来のキーを暗号化されていない)PKCS#8形式に変換できます。キーが変換されると、変換されたキーのバージョンフィールドは00になります。

これらのバージョンフィールドの意味は何ですか?バージョンフィールドの値が01と表示された場合、そのキーはPKCS#8形式ではないことを確認していますか?

1
Asif

リンクしているメッセージを誤って解釈している可能性があります。

秘密鍵は、SECからの構造として表され、常に「1」の値を持つ「バージョンフィールド」を含みます。

秘密鍵がPKCS#8でエンコードされている場合、前の構造は「ラップ」されます。PKCS#8には、使用されたアルゴリズムの識別子(「これはEC鍵です」)と(全体値「1」のバージョンフィールドを含む、上記で指定された秘密鍵構造.

PKCS#8ラッパーまたはには「バージョン」フィールドがあり、通常は値が「0」です。したがって、PKCS#8では、両方を取得します。

「バージョン」フィールドがある場合、これは他のレイアウトをサポートするためのメカニズムです(そのようなものが定義されている場合)。現在、他のレイアウトは定義されていないため、別の値を使用してできることは、一部のソフトウェアでオブジェクトをデコード不可能にすることだけです。

1
Tom Leek