web-dev-qa-db-ja.com

TLSを使用して位置データを転送しても安全ですか?

自己署名証明書でTLSを使用して位置データを転送しても安全ですか?

私はウェブ上でさまざまな議論をたくさん読んだので、この件について質問しました。

3
Divinar

TLS暗号化は明らかにデータを保護するのに十分強力です。この質問の弱点は、関連するキーの整合性です。

証明書は、攻撃者が正当なキーを偽のキーに交換していないこと、および攻撃者が中間者攻撃でメッセージを傍受していないことを確認することで、キーの整合性を保護します。証明書がこれに対して保護する方法は、通信ネットワーク内のすべてのコンピューターが事前に信頼することに同意するルート認証局によって署名されることです。自己署名証明書は、それを信頼することを認識していないため、自己署名証明書自体にはそのような完全性はありません。

この問題を回避するにはいくつかの方法があります。最初の(そして最も安全な)方法は、自己署名証明書ではなく、信頼できる認証局によって署名されたキーを取得することです。ほとんどのCAは証明書に料金を請求します(これは不快な場合があります)。 DNSプロバイダーは、サービスの一部としていくつかの無料の証明書を提供している場合があります。 Let's Encrypt は、誰にでもCA署名を無料で提供し、APIを通じてプロセス全体を実行できます。利点は、システムのセキュリティが「通常」であり、キーが他のサイトと同じように保護されることです。不利な点は、プロセスについて学習し、署名付き証明書を取得するために必要な労力が少し増えることです。

もう1つの方法は、独自のカスタムルートCAを生成することです。 OpenSSLを使用してCA自己署名証明書を生成できます。これを使用して、ロケーションサーバーの証明書などの他の証明書に署名できます。 Googleは、opensslを数回呼び出すだけで、これを行う方法の例をたくさん返します。次に、ロケーションサーバーの通信を信頼するすべてのコンピューターで、各システムの信頼されたルート証明書ストアにカスタムルートCA証明書をインストールします。次に、カスタムルートCAを使用してロケーションサーバーの鍵に署名すると、それらのコンピューターはそれらを信頼します。これは、OpenSSLを数回呼び出して新しいルート証明書をインストールするだけなので、簡単に思えます。そして、あなたのデータと鍵交換は保護されます。ただし、欠点は見かけよりも大きくなります。カスタムCAを信頼するすべてのコンピューターは、誰かがあなたのセキュリティを侵害した場合、偽装anyTLS通信の影響を受けやすくなります。自家製CAの秘密鍵。 (関係するすべてのコンピューターに新しいルートCAをインストールする権限がない場合にも、これは問題になる可能性があります。たとえば、会社のPCに自家製の証明書がインストールされている場合、職場でセキュリティインシデントが発生する可能性があります。)カスタムCAを慎重に作成したり、金庫に保管されているサムドライブに秘密鍵をオフラインにしたりすることで、このリスクの一部を軽減できますが、これは非常に多くの作業であり、ほとんどメリットがなく、インストールの問題を解決することはできません。外部で管理されているコンピュータ上。

3番目のオプションがあります。証明書を目で確認して、使用するたびに、最初と同じ証明書であることを確認してください。これは機能しますが、一度に保護される鍵交換は1つだけです。今から1年後、不注意でデータを交換する前に証明書を確認するのを忘れた場合、中間者攻撃が発生し、気付かない可能性があります。

4番目のオプションは、あなたが行っていたと思いますが、鍵交換の完全性を完全に無視することであり、攻撃者が通信を傍受しようとしないことを願っています。もちろん、攻撃されたとしても、決して知ることはありません。そして、あなたがそのリスクに耐えることができるなら、なぜそれをまったく暗号化する必要がないのですか?

7
John Deters