5

私の理解では、SSL ピンニングとは、サーバーの公開鍵または証明書を、事前にクライアントにバンドルされているコピーと比較することです。

Stackoverflow で、多くの開発者が AFNetwork ライブラリによる SSL ピニングを使用しているのを見ましたが、ほとんどの開発者はそれを自己署名証明書と共に使用しています。

CA から有効な証明書を購入し、正常に機能することを確認するテストに合格しました。つまり、次のように設定しましたが、うまくいきました

    ...
    _sharedHttpsInstance.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
    _sharedHttpsInstance.securityPolicy.allowInvalidCertificates = NO;
    ...

私が疑問に思っているのは、ピニング モードを AFSSLPinningModePulicKey に設定すると、有効な証明書が提供するものに加えて、アプリケーションがサーバーとの通信でより安全になるということですか?

どうもありがとう。

4

2 に答える 2

6

iOS での SSL ピニングの正確な実装はわかりませんが、原則として、ピニングは組み込みの一連の証明書機関に対するデフォルトの検証よりも確実にセキュリティを強化します。デフォルトでは、システムは世界中の 100 を超えるさまざまな CA を信頼しており、別の CA が同じまたは類似の証明書を既に発行している場合でも、各 CA は必要な証明書を発行することができます。したがって、これらの 100 以上の CA のいずれかが侵害された場合、証明書のピン留めを使用しない限り、ドメインの証明書を発行できます。これは、アプリケーションのチェックに合格します。このような妥協は、2011 年に DigiNotar (そのため存在しなくなりました) と Comodo (大きすぎて失敗できませんでした) で発生しました。

おそらく、証明書ピンニングの最も有名なユーザーは Google Chrome であり、Google ドメインに使用されており、DigiNotar と Comodo の侵害を検出するのに役立ちました。

証明書ピンニングの欠点は、セキュリティ上の理由から SSL インターセプトを行うネットワーク内でアプリケーションが動作しなくなることです。Google Chrome は、ピン留めチェックの代わりに、ユーザーによって明示的に追加された (つまり、ビルトインではない) CA によって署名されている場合、証明書を受け入れることで、この状況に対処しているようです。

興味深いかもしれないもう 1 つの質問は、SSL ピンニングがアプリケーションの「ほとんど」に対して安全な「ENOUTH」であるかどうかです。

固定の証明書または公開鍵 (自己署名ありまたはなしの証明書のピン留めなど) と照合する方が、システムが信頼する何百もの CA のいずれかによって証明書が署名されているかどうかを確認するだけよりも安全です。また、開発者が両方の側 (アプリケーションとサーバーなど) を完全に制御できる限り、拡張性も良好です。通常のインフラストラクチャを追加使用する唯一の利点は、証明書失効メカニズムの使用です。しかし、開発者はアプリケーションを制御できるため、証明書が侵害された場合にアプリケーションを置き換えることができます。はい、ほとんどの場合、自己署名証明書を使用して SSL ピン留めを行うだけで十分に安全であり、ピン留めなしで標準の証明書検証を使用するよりも安全です。

于 2014-07-05T08:15:56.513 に答える
3

リスクを別の当事者に移すことになるため、ピン留めが良いか悪いかを断定的に言うのは非常に困難です。

ピン留めを行うと、基本的に、信頼できる CA での潜在的な侵害に対してより適切に保護されます。CA が侵害され、接続しようとしているホストの証明書を発行するように作成された場合、CA を経由する代わりに、ピン留めした特定の参照と比較するため、ピン留めによって保護されます。

欠点は、CA に設置されているメカニズムを使用して、侵害されたホストに対処することができなくなることです。つまり、証明書の失効です。ホストの秘密鍵が危険にさらされた場合、PKI 検証メカニズムを通過することで、失効を確認し、そのような問題が発生したことを警告することができます。対照的に、証明書を確認するために CA をまったく通過しないため、ピン留めではそれを知ることができません。

もちろん、両方のアプローチを組み合わせることができますが、これにより追加の問題が発生する可能性があります (両方の評価で競合する結果に対処するための戦略が必要になります。そうしないと、有効な証明書を取り消す侵害された CA が DoS を引き起こす可能性があります)。

AFNetworking のピン留めメカニズムが PKI 検証に取って代わるのか、それともそれを補完するのかはわかりません。

一般に、ピニングまたは PKI 検証のどちらを使用するかの選択は、特定のホストの秘密鍵が、信頼する CA よりも危険にさらされる可能性が高いか低いかによって異なります。

ピン留めのもう 1 つの欠点は、サーバー証明書 (または、ピン留めした内容に応じて少なくともキー ペア) が正当に変更されるたびに、アプリケーションを更新する (またはユーザーに "再ピン留め" させる) 必要があることです。たまにキーを再設定することは、おそらく悪い考えではありません。

(はっきりさせておきますが、私は CA の方が優れていると言っているのではなく、ピン留めによって一連の問題が変わるというだけです。)

于 2014-07-06T14:40:00.900 に答える