ユニクラス用にJavaで認証局をプログラミングしていますが、証明書のシリアル番号に最適なオプションがわかりません。
- 0からveryBigNumberまでの単純な静的カウンター
- いくつかの巨大なBigInt乱数
どちらかを選択する正当な理由はありますか...またはどれも選択しませんか?
ありがとう、
ユニクラス用にJavaで認証局をプログラミングしていますが、証明書のシリアル番号に最適なオプションがわかりません。
どちらかを選択する正当な理由はありますか...またはどれも選択しませんか?
ありがとう、
主な要件は、ペア(Issuer distinguished name, serial number)
が宇宙で一意である必要があることです。したがって、繰り返しの可能性が無視できるほど大きい場合を除いて、乱数を使用しないでください。20バイトの乱数で十分です。自分が発行した証明書の数を他の人が知っていてもかまわない場合は、単純なカウンターで十分です。
MD5の弱点を悪用したSSL証明書発行者に対する比較的最近の攻撃(Alex Sotirov et。alによる)は、実際には、カウンタータイプのシリアル番号を使用することでさらに簡単になりました。ランダムなシリアル番号は攻撃されませんでした。これは、予測可能なシリアル番号のセキュリティが悪いことを意味するのではなく、このアプリケーションでは、ランダムなシリアル番号がMD5の弱点を隠すのに役立つ可能性があることを意味します。根本的な問題はまだMD5でした。
技術的には、シリアル番号が異なる必要があるため、0 から veryBigNumber までのカウンターは bigRandomNumber よりも実装が簡単です。
ただし、発行した証明書の数を他の人に知らせたい場合は、単純なカウンターを使用したくない場合があります。
シリアル番号を何に使用するかによって異なります。小規模な会社で、顧客ごとに 1 つの証明書を発行する予定の場合は、シリアル番号から顧客の数がわかります。
それ以外は、シリアル番号がシリアルであってはならない理由がわかりません。シリアル番号を使用すると、潜在的な攻撃者に情報 (次のシリアル番号) が渡されると主張する人もいますが、それは大きな問題ではないと思います。
シリアルという言葉を調べると、答えは暗黙的だと思います....シリアル、シリーズ、進行など