-2

独自の証明書を発行する認証局になりたいと想像してください。必要なフィールドを使用して独自の証明書を生成できるようにしたいと考えています。とにかくこれを行うことは可能ですか?OpenSSL またはその他のライブラリを使用していますか? 公開鍵、署名、および識別情報を持たない非常にコンパクトな証明書を作成できるようにしたいと考えています。最大で約 250 バイトになるもので、openSSL を使用して生成された証明書と比較すると約 950 バイトです。

証明書に必要なフィールドは次のとおりです。

使用されるアルゴリズムは ECDSA 224 または 256 で、SHA 256、有効期限、生成時間、証明書の失効を許可し、ID を保持する必要があります。

4

1 に答える 1

2

やりたいことは何でもできますが、セキュリティを少しでも心配している場合や、独自のアプリケーション以外との互換性に関心がある場合は、これを行うべきではありません。

一般に、「独自の」セキュリティ ソリューションは悪い考えです。基準には理由があります。それらはピアレビューされ、テストされており、透明性があります。

しかし、好奇心のために、あなたの質問に何が必要か見てみましょう.

まず、公開鍵が必要です。現在、安全な推奨値は約 2048 ビットまたは 256 バイトです。キーだけで、すでに最大の 250 バイトを超えています。

次に、署名が必要です。標準の署名は、鍵のサイズと同じになります: 2048 ビット (256 バイト)。

次に、身分証明書が必要です。あなたは身分証明書が何であるかを言いませんでした。それが「Identity 1」という文字列だとしましょう。これには約 10 バイトが必要です。また、非常に制限的であり、あまりうまくスケーリングしません。

発行者 ID が必要かどうかについては言及していませんが、それをさらに 10 バイト入れましょう。

シリアル番号はどうですか?これらの証明書が危険にさらされた場合、これらの証明書を取り消す方法が必要ですか? 署名アルゴリズムを特定しますか、それとも常に同じになりますか? 証明書の有効期限を希望しますか? 使い方は?証明書が持つことができる役割を区別したいですか? これらすべてがバイト数に追加されます。

前の段落で何もしたくないとしましょう。それがなければ、すでに合計 532 バイトになっています。

そして、フォーマットについてはどうですか?おそらく、これらすべてのバイトをくっつけることはできません。証明書の値には、ある種の構造化されたフォーマットが必要です (X509 で使用される ASN.1 エンコーディングに似ています)。これにより、合計にさらにバイトが追加されます。

したがって、OpenSSL によって生成された証明書が簡単に 650 バイトを超える理由がわかります。

肝心なのは、これを何に使用するかによって異なるということです。独自のサンドボックスで遊んでいるだけで、互換性やセキュリティには関心がありませんか? 次に、独自の証明書形式を作成します。それ以外の場合は、標準に固執してください。

于 2013-05-28T19:30:00.873 に答える