2017-01-21 25 views
1

私のiOSアプリケーションでは、iPadsが互いに通信するための安全な方法が必要です。iPads間の安全な通信

最初の(安全ではない)実装では、1つのiPadがWebサーバーをセットアップし、他のiPadsは通常のNSURLSession要求でそれと通信するということでした。

Appleは、(App Transport Securityを通じて)HTTPSの使用をより厳しくしているので、私はこの問題に取り組み、iPadsの間にセキュリティのレイヤーを追加したいと思います。

私はGCDAsyncSocket(既にウェブサーバー用に使用しています)のTLS実装を見てきました。しかし、それは難しい証明書の問題をもたらします.IPadsはLANでオフラインで作業でき、IPアドレスでお互いに接続できるはずです。

ATSは、既知のCAによって発行される証明書を強制します。私は顧客に自分のiPadsにカスタムCA証明書をインストールさせることはできません。たとえそれができたとしても、それらのiPadsの証明書を生成することはおそらく悪夢になるでしょう。

私の次のアイデアは、TLSに似たレイヤーで自分のプロトコルを実装することです。しかし、私はもちろん、TLSのような十分にテストされたメカニズムを使用することを好むでしょう。

私はあなたに良い提案があることを願っています。多くの人がリモートサーバーに依存しているように見えますが(そして私は本当にオフライン機能が必要です)、私はこのようなケースの最初の人にはなり得ないような気がします。

私の最低iOS要件はiOS 9(iPad 2互換)です。

答えて

0

App Transport Securityは、IPアドレスへの接続に適用されません。 iOSのドキュメントから:

Availability of ATS for Remote and Local Connections

のApp交通安全(ATS)は、パブリックホスト名への接続にのみ適用されます。

  • 非修飾ホスト名
  • .localトップレベルドメインを使用し
  • ローカルホスト(TLD)
  • に対処し

    • インターネット・プロトコル(IP):システムがへの接続にATS保護を提供していません。

      修飾されていないホスト名または.localドメインに接続するには、にNSAllowsLocalNetworkingキーの値を設定する必要があります。

    それはATSの要件に準拠するような方法でTLSを使用するように不可能ですので、これが大部分です。すべての有能なCAは、プライベートIPアドレスまたはホスト名の証明書を発行することを拒否し、鍵が侵害されたことが判明した場合(たとえば、モバイルアプリケーションに配布されることによって)、証明書を取り消します。

    あなた自身の暗号化を書くことに関して:しないでください。あなたが説明しているようにピアツーピア構成でセキュリティを処理することは複雑です。さらに重要なことは、アプリケーションに独自の暗号化コードを組み込むことは、米国外での配布をより複雑にすることになります。あなたはここであなたのコミュニケーションを保護するために無線ネットワークのセキュリティに頼っているのが最善です。

    +0

    ありがとうございました。私は無線LANのセキュリティにのみ依存しないことを好みます。多くのお客様が、お客様のWi-Fiをゲストと共有することをお約束します。カスタムCAの設定、iPads証明書の割り当て、ホスト名検証の迂回(そしてTLSの使用)を行うことができます。しかし、私はATSがiOS 9の下でIPアドレスに適用されると信じています.AppleはiOS 10のATSで起こりそうな事件のいくつかを修正しましたが(例えば、あなたが書いたNSAllowsLocalNetworkingキーを導入するなど)、iOS 9の頭痛になります。 – Zyphrax

    +0

    私はそのドキュメントがiOS 10用であることを確認できます.iOS 9では、IPアドレスのHTTPリクエストはATSによってブロックされています。 – Zyphrax

    関連する問題