2009-07-06 16 views
14

そこにあるすべてのSSLエキスパートのための質問:証明書の指紋を比較することによるSSL認証?

小さなWebサーバーを搭載した組み込みデバイスがあり、独自のSSL自己署名証明書をインストールできます。クライアントは.NETで書かれています(それほど重要ではありません)。

.NETでデバイスを認証するにはどうすればよいですか? は、証明書の指紋とデータベースの既知のエントリを比較するには十分ですか?

私の理解では、指紋は公開鍵を含む証明書全体のハッシュです。私のデバイスであると偽ったデバイスはもちろん、同じ公開証明書を送ることができますが、私有鍵を知ることはできませんでした。

自分自身の信頼チェーンを構築し、独自のCAルート証明書を作成し、Webサーバー証明書に署名し、クライアントにインストールする必要がありますか?

答えて

4

あなたが提案したものは原則OKです。例えば、key signing partiesの間に使用されます。ここでは、参加者は通常、自分の公開鍵の名前と指紋を交換し、パーティーの人物が本当に自分が誰であるかを確認します。長い公開鍵を確認するよりも、指紋だけを確認する方が簡単です。

もう1つの例は、いわゆるself certifying file systemです。ここでも、公開鍵のハッシュだけが安全なチャネルで交換されます。 (つまり、これらのハッシュはURLに埋め込まれています)。このスキームでは、公開鍵を安全に送信する必要はありません。受信者は、公開鍵のハッシュがURLに埋め込まれたハッシュをマッチすることを確認するだけでよい。もちろん、受信者は、これらのURLが信頼できるソースから来たものであることも確認する必要があります。

このスキームと提案は、CAを使用するより簡単です。しかし、欠点があります。ハッシュ付きのデータベースが本物であることを確認する必要があります。あなたのデータベースが大きければ、これは難しいでしょう。 CAを使用する場合、ルートキーが確実であることを確認するだけで済みます。これは、通常、鍵管理を大幅に単純化し、もちろん、CAベースのスキームが、例えば、上記の自己認証ファイルシステム。

+1

スケーラビリティは本当にPKIの良い理由です、ありがとう! – chris166

+0

フィンガープリント検証と鍵署名当事者間の類推の素敵な方法。 SHA-1ハッシュの衝突に対する耐性は、両方のイベントで重要な役割を果たします。 –

3

ハッシュコードが一致しているだけなので、2つのオブジェクトが等しいと見なされるのと同じ方法ではありません。証明書が「既知」のリストに表示されているため証明書フィンガープリント "と呼ばれる。

衝突はハッシュアルゴリズム、それに良いものであっても事実です。動機付けられた攻撃者が一致する指紋ハッシュで不正な証明書を作成する可能性を防ぐ必要があります。それを守る唯一の方法は、証明書自体の有効性をチェックすることです。つまり、最後のステートメントに含意しているように信頼の連鎖を確認することです。

+5

えっ? SHA1のような暗号ハッシュ関数は、同じ出力にハッシュする2つの入力を見つけることは実行不可能であるように設計されている。したがって、ハッシュが一致すれば、入力が等しいと仮定することは安全です。したがって、動機付けされた攻撃者が一致するハッシュ(少なくともハッシュが壊れていない限り)を持つ2つの証明書を作成できないと仮定することも安全です。 また、自己署名証明書の署名だけでは不十分です。署名鍵を信頼できる必要があります。 – Accipitridae

+4

Collisions *は、ハッシュアルゴリズムを使った人生の事実です。そして、これらのアルゴリズムの中には最高の意図を持って設計されていますが、MD5は既に廃止されており、SHA-1にも弱点があることが示されています。 http://www.crn.com/security/212700354およびhttp://www.rsa.com/rsalabs/node.asp?id=2834を参照してください。私は、証明書を徹底的にチェックし、指紋にのみ依存しない方が良いと考えています。 –

+5

...署名の正当性をチェックするには、まずデータをハッシュし、それが署名されたものと同じハッシュ値であることを確認します。したがって、デジタル署名を検証すると、実際にはハッシュアルゴリズムの衝突耐性に依存します。 – Accipitridae

1

ショート:

まあ理論的にはあなたが正確に証明機関があなたのために何をやります。だからそれはうまくいくはずです。

長い:

認証局は、それが全体の証明書データに署名していない、あなたの公開鍵/証明書/証明書要求に署名した場合。しかし、証明書データ全体の計算されたハッシュ値。 これは、署名を小さく保ちます。

指紋を信頼できるものと比較することで、独自のCAを確立したり、商用/無料のものを使用したくない場合は、次に信頼性の高い構成を取得します。最も信頼できる解決策は、証明書全体を比較することです。これはハッシュ衝突攻撃からあなたを守るためです。

ここに記載されているように、安全で安全なハッシュアルゴリズムを使用するようにしてください。 SHA-1は安全でなくなりました。このトピックへ

より詳細な情報: