(57)【要約】ネットワークデバイスは、外部アドレスからローカルネットワーク上のコンピュータへのインバウンド接続を許可し、一方で、外部アドレスからのインバウンド接続が先行しない限り、そのコンピュータからのその外部アドレスへの出力接続を禁止する。いくつかの実施形態では、コンピュータは外部アドレスからのインバウンド接続の受け入れを許可するが、インバウンド接続が先行しない限り、ローカルネットワーク内の他のコンピュータへのアウトバウンド接続の開始を許可しない。いくつかの実施形態では、外部アドレスからの要求は、コンピュータについてのネットワーク情報を外部アドレスに送信することによってネットワークデバイスによって処理され、一時的にネットワーク規則を変更して外部アドレスからの接続を許可する。いくつかの実施形態では、コンピュータが許可されていない接続を試みる場合、プロキシサーバのネットワークデータをコンピュータに提供することによって、接続の試みがプロキシサーバを通して行われる。【選択図】図１
2018525935.tif 000002
【特許請求の範囲】
【請求項１】
ローカルネットワーク内のコンピュータ間でデータを転送するように構成された少なくとも１つのネットワークデバイスを含む、前記ローカルネットワークと、
前記ローカルネットワークに接続された第１のデバイスであって、少なくとも１つの処理デバイスと、ネットワーク通信を実行する手段とを備え、前記第１のデバイスはアウトバウンド接続を開始するようにプログラムされており、少なくとも１つのアウトバウンド接続は前記ローカルネットワーク内のいずれのデバイスとも対応しない外部アドレスを含む、前記第１のデバイスと、
前記ローカルネットワークに接続されており、外部ネットワークへの少なくとも１つの接続を有する第２のデバイスと、
前記外部ネットワークに接続された外部デバイスを参照する各アウトバウンド接続の外部ネットワークアドレスであって、前記第２のデバイスは、前記第１のデバイスによって開始された前記アウトバウンド接続の少なくとも１つのアウトバウンド接続に対して、前記少なくとも１つのアウトバウンド接続の前記外部アドレスが、前記少なくとも１つのアウトバウンド接続の前記外部アドレスからのインバウンド接続によって先行されなかった場合に、前記少なくとも１つのアウトバウンド接続をブロックする、ようにさらにプログラムされる、前記外部ネットワークアドレスと、を含み、
前記第２のデバイスは、前記第２のデバイスによってブロックされた前記アウトバウンド接続の前記少なくとも１つのアウトバウンド接続の前記外部アドレスと同一のソースアドレスを含む、前記外部ネットワーク内の前記ソースアドレスからの前記第１のデバイスへのインバウンド接続を許可するようにさらにプログラムされる、ネットワーク構築のためのシステム。
【請求項２】
前記第２のデバイスは、前記アウトバウンド接続の前記少なくとも１つのアウトバウンド接続に対して：
前記少なくとも１つのアウトバウンド接続の前記外部アドレスがホワイトリストに含まれている場合、前記各アウトバウンド接続の前記外部アドレスへの前記各アウトバウンド接続を許可し、および
前記少なくとも１つのアウトバウンド接続の前記外部アドレスが前記ホワイトリストに含まれていない場合、前記少なくとも１つのアウトバウンド接続をブロックする、ようにさらにプログラムされており、並びに、
前記第２のデバイスは、前記ホワイトリストに含まれていない前記ソースアドレスを有する前記インバウンド接続の少なくとも一部を許可するようにさらにプログラムされている、ことを特徴とする請求項１に記載のシステム。
【請求項３】
前記ホワイトリストは、ドメイン名、インターネットプロトコル（ＩＰ）アドレス、およびポートのうちの少なくとも１つをそれぞれが含む１つまたは複数のネットワーク識別子を格納する、請求項２に記載のシステム。
【請求項４】
前記第２のデバイスが、前記少なくとも１つのアウトバウンド接続に対して、前記少なくとも１つのアウトバウンド接続の前記外部アドレスが、前記少なくとも１つのアウトバウンド接続の前記外部アドレスからのインバウンド接続によって先行されている場合に、前記少なくとも１つのアウトバウンド接続の前記外部アドレスへの前記少なくとも１つのアウトバウンド接続を許可するように、さらにプログラムされる、請求項１に記載のシステム。
【請求項５】
前記第２のデバイスは、前記第１のアドレスからのインバウンド接続によって先行される第１の外部アドレスへの前記第１のデバイスからのアウトバウンド接続を許可し、先に受信したインバウンド接続に含まれていた前記第１のアドレスとは異なるアドレスを含む、前記第１のアドレスとは異なるアドレスへの前記第１のデバイスからの１つまたは複数の後続のアウトバウンド接続をブロックするように、プログラムされる請求項４に記載のシステム。
【請求項６】
前記第２のデバイスは、アウトバウンド接続と同じアドレスを参照するインバウンド接続が、前記第２のデバイスに知られているポートのセットからの宛先ポートを使用している場合にのみ、前記第１のデバイスからの前記アウトバウンド接続を許可するようにさらにプログラムされる、請求項４に記載のシステム。
【請求項７】
前記第２のデバイスは、前記第１のデバイスからのすべての前記アウトバウンド接続をブロックし、前記外部ネットワークの前記ソースアドレスから開始されるインバウンド接続を前記第１のデバイスが受け入れることを許可にするようにさらにプログラムされる、請求項１に記載のシステム。
【請求項８】
前記第１のデバイスは、ハイパーテキスト転送プロトコル（ＨＴＴＰ）サーバとＨＴＴＰクライアントの両方を実行するようにプログラムされており、
前記第２のデバイスは、前記ＨＴＴＰクライアントから前記外部ネットワーク内の遠隔デバイスへの接続の試みをブロックし、一方、前記遠隔デバイスからの接続が前記ＨＴＴＰサーバに到達することを許可するようにさらにプログラムされる、請求項１に記載のシステム。
【請求項９】
前記第２のデバイスは、ゲートウェイ、ルータ、ブリッジ、スイッチ、およびファイアウォールの少なくとも１つを含む、請求項１に記載のシステム。
【請求項１０】
前記第２のデバイスは、さらに、前記外部ネットワーク内の１つまたは複数の中継コンピュータへの接続を開き、および、前記インバウンド接続の各インバウンド接続ごとに−−
前記各インバウンド接続が、前記１つまたは複数の中継コンピュータ以外の前記外部ネットワークにおける遠隔デバイスから前記１つまたは複数の中継コンピュータを介して受信された場合に、前記第１のデバイスへの前記各インバウンド接続を許可し、
前記１つまたは複数の中継コンピュータ以外の前記遠隔デバイスからの前記各インバウンド接続が、前記１つまたは複数の中継コンピュータを介して受信されてない場合、前記各インバウンド接続が、前記第１のデバイスに接続を開くのをブロックする、ようにさらにプログラムされる、請求項１に記載のシステム。
【請求項１１】
１つまたは複数の中継コンピュータが、前記遠隔デバイスからの要求を渡すために、前記第２のデバイスによって開かれた逆接続を使用して、前記遠隔デバイスと前記第２のデバイスとの間のプロキシとして機能することが可能である、請求項１０に記載のシステム。
【請求項１２】
前記１つまたは複数の中継コンピュータは、前記遠隔デバイスからの要求を渡すために、前記第２のデバイスによって開かれたＶＰＮトンネルを介する逆接続を使用して、前記第２のデバイスからの接続のための仮想プライベートネットワーク（ＶＰＮ）サーバとして機能することが可能である、請求項１０に記載のシステム。
【請求項１３】
前記第２のデバイスは、各アウトバウンド接続ごとに：
前記各アウトバウンド接続のソースアドレスを評価し、
前記各アウトバウンド接続の前記ソースアドレスが前記ローカルネットワーク内のアドレスと一致する場合、前記各アウトバウンド接続の処理を控える、ようにプログラムされる請求項１に記載のシステム。
【請求項１４】
前記第２のデバイスは、単方向の接続要求のみを許可するようにさらにプログラムされる、請求項１に記載のシステム。
【請求項１５】
前記第１のデバイスは、接続の受け入れと、接続の開始の両方を実行するようにプログラムされる、請求項１３に記載のシステム。
【請求項１６】
ローカルネットワーク内のコンピュータ間でデータを転送するように構成された少なくとも１つのネットワークデバイスを含む、前記ローカルネットワークと、
前記ローカルネットワークに接続された第１のデバイスであって、少なくとも１つの処理デバイスと、ネットワーク通信を実行する手段とを備え、前記第１のデバイスはアウトバウンド接続を開始するようにプログラムされており、少なくとも１つのアウトバウンド接続は前記ローカルネットワーク内のいずれかのコンピュータと対応している、前記第１のデバイスと、
前記ローカルネットワークに接続され、前記ローカルネットワーク内のコンピュータ間の接続を管理するようにプログラムされる第２のデバイスであって、前記第２のデバイスはまた、外部ＩＰアドレスからの少なくとも１つのインバウンド接続を受け入れるようにプログラムされ、前記外部ＩＰアドレスからの前記少なくとも１つのインバウンド接続は前記第１のデバイスへの参照を含む、前記第２のデバイスと、を含み、
前記第２のデバイスは、前記第１のデバイスからの前記ローカルネットワーク内の第１のアドレスへの少なくとも１つの第１のアウトバウンド接続に対して、前記少なくとも１つの第１のアウトバウンド接続が、前記第１のデバイスへの参照を含むインバウンド接続に先行されなかった場合、前記少なくとも１つの第１のアウトバウンド接続をブロックするようにさらにプログラムされる、ネットワーク構築のためのシステム。
【請求項１７】
前記ローカルネットワーク内の前記コンピュータは、第１のグループのデバイスと第２のグループのデバイスとを含み、
前記第２のデバイスは、第１の規則を前記ローカルネットワーク内の第１のグループのデバイスに適用し、第２の規則を前記ローカルネットワーク上の第２のグループのデバイスに適用するようにさらにプログラムされ、前記第１の規則は、前記第２のデバイスが前記第１のグループから前記第２のグループへの接続をブロックするようにプログラムされるが、前記第２のグループからの前記第１のグループへのローカル接続は許可するようにプログラムされるように、前記第２の規則と異なる、請求項１６に記載のシステム。
【請求項１８】
前記第２のデバイスは、前記ローカルネットワーク内の第２のアドレスへの前記第１のデバイスからの少なくとも１つの第２のアウトバウンド接続に対して前記第２のアドレスを含む前記第１のデバイスへのインバウンド接続により先行されたかに関わらず、前記少なくとも１つの第２のアウトバウンド接続を前記少なくとも１つの第２のアウトバウンド接続が許可するようにさらにプログラムされる、請求項１６に記載のシステム。
【請求項１９】
前記第２のデバイスは、ゲートウェイ、ルータ、ブリッジ、スイッチ、プロキシ、およびファイアウォールのうちの１つである、請求項１６に記載のシステム。
【請求項２０】
前記第２のデバイスは、アドレス解決プロトコル（ＡＲＰ）、マルチキャストドメインネームサービス（ｍＤＮＳ）、およびシンプルサービスディスカバリプロトコル（ＳＳＤＰ）のうちの少なくとも１つから得られた情報によって前記ローカルネットワーク上の前記コンピュータを識別するようにプログラムされる、請求項１６に記載のシステム  。
【請求項２１】
前記第２のデバイスは、前記少なくとも１つのコンピュータの名前およびディスクリプションによって前記ローカルネットワーク上の前記コンピュータから少なくとも１つのコンピュータを識別するようにプログラムされる、請求項１６に記載のシステム。
【請求項２２】
前記第２のデバイスは、１つまたは複数のローカル接続を開始した前記ローカルネットワーク上の前記コンピュータのうちの１つのコンピュータからの少なくとも１つのデータパケットをブロックすることによって、前記１つまたは複数のローカル接続をブロックするようにさらにプログラムされる、請求項１６に記載のシステム。
【請求項２３】
前記第２のデバイスは、１つまたは複数のローカル接続に応答して転送された、前記ローカルネットワーク上の前記コンピュータのうちの１つのコンピュータからの少なくとも１つのデータパケットをブロックすることによって、前記１つまたは複数のローカル接続をブロックするようにさらにプログラムされる、請求項１６に記載のシステム。
【請求項２４】
前記第２のデバイスは、前記第１のデバイスによって先に送信または受信された前記パケットに関する情報を分析することによって、前記第１のデバイスを識別するようにプログラムされる、請求項１６に記載のシステム。
【請求項２５】
前記第２のデバイスは、前記第１のデバイスが前記第１のアドレスに、少なくとも所定の時間間隔内に前記第１のアドレスからパケットを先に受信することなく、パケットを送信していた場合に、前記第１のデバイスを前記少なくとも１つのアウトバウンド接続を開始するものとして識別するようにプログラムされる、請求項２４に記載のシステム。
【請求項２６】
コンピュータネットワークに接続された第１のデバイスを提供するステップと、
前記第１のデバイスによって、前記コンピュータネットワークに接続された第２のデバイスへの第１の接続を開始するステップと、
第１の接続を介して第３のデバイスの１つまたは複数の第３のネットワーク識別子を、前記第１のデバイスによって受信するステップであって、前記第１のデバイスは、前記第１の接続を介して前記１つまたは複数の第３のネットワーク識別子を受信する前に、前記第３のデバイスの記録を有していない、受信するステップと、
前記第１のデバイスの１つまたは複数のネットワーク管理ルールを、前記第１のデバイスによって変更して、前記第１のデバイスの前記１つまたは複数の第１のネットワーク識別子を参照する前記第３のデバイスの前記１つまたは複数の第３のネットワーク識別子からの１つまたは複数のインバウンド接続を許可するステップと、
前記第１のデバイスを参照する１つまたは複数の第１のネットワーク識別子を前記第３のデバイスに送信するステップであって、前記第３のデバイスは、前記１つまたは複数の第１のネットワーク識別子を受信する前に前記第１のデバイスの記録を有していない、送信するステップと、
前記第３のデバイスからの前記１つまたは複数のインバウンド接続を、前記第１のデバイスによって受け入れるステップであって、前記１つまたは複数のインバウンド接続は、前記１つまたは複数第１のネットワーク識別子を含み、および、前記１つまたは複数の第３のネットワーク識別子を、前記１つまたは複数のインバウンド接続のソースとして列挙する、受け入れるステップと、
少なくとも１つの所定の条件を検出することに応じて、前記第３のデバイスから前記先に受け入れられたインバウンド接続をブロックするために、前記１つまたは複数のネットワーク管理ルールを、前記第１のデバイスによって変更するステップと、を含む、方法。
【請求項２７】
前記１つまたは複数の第３のネットワーク識別子は、ソースインターネットプロトコル（ＩＰ）アドレス、ソースポート、トランスポートプロトコル、および前記第３のデバイスからの前記１つまたは複数のインバウンド接続のデータパターンからなる群から選択される、請求項２６に記載の方法。
【請求項２８】
前記１つまたは複数の第１のネットワーク識別子は、ソースインターネットプロトコル（ＩＰ）アドレス、ソースポート、およびトランスポートプロトコルからなる群から選択される、請求項２６に記載の方法。
【請求項２９】
前記第３のデバイスからの前記１つまたは複数のインバウンド接続を許可するステップは、トランスポートレベルセキュリティ（ＴＬＳ）プロトコル、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ウェブリアルタイム通信（ＷｅｂＲＴＣ）プロトコル、およびインタラクティブ接続確立（ＩＣＥ）フレームワークを用いるプロトコルからなるグループから選択されたプロトコル使用するステップを含む、請求項２６に記載の方法。
【請求項３０】
（ａ）前記第１のデバイスによって、前記第１の接続を介して、前記第３のデバイスの前記１つまたは複数の第３のネットワーク識別子を受信するステップ、および（ｂ）前記第１のデバイスを参照する前記１つまたは複数の第１のネットワーク識別子を前記第３のデバイスに送信するステップの両方は、前記第１のデバイスに接続するための前記第３のデバイスの認証に応答して実行され、前記第１のデバイスに接続する前記第３のデバイスの認証は、前記第３のデバイスが前記第１のデバイスの記録を有する前に実行される、請求項２６に記載の方法。
【請求項３１】
前記少なくとも１つの所定の条件は：
前記第３のデバイスへの開かれた接続の数が、許可された接続の数を超えること、
１つまたは複数の前記開かれた接続を閉じた後、未使用の前記第３のデバイスに許可された接続の数が第１の閾値を超えること、
１つまたは複数のインバウンド接続が許可されてからの時間間隔が第２の閾値を超えること、からなる群から選択される、請求項２６に記載の方法。
【請求項３２】
前記少なくとも１つの所定の条件は、前記第１のデバイスが、前記１つまたは複数の第３のネットワーク識別子に含まれるものとは異なるネットワークアドレスからの１つまたは複数のインバウンド接続をブロックすることを含む、請求項２６に記載の方法。
【請求項３３】
前記１つまたは複数のネットワーク管理規則を変更するステップは、前記第１のデバイス上のファイアウォール規則を変更するステップを含む、請求項２６に記載の方法。
【請求項３４】
前記第２のデバイスは、仮想プライベートネットワーク（ＶＰＮ）サーバおよびルータのうちの少なくとも１つである、請求項２６に記載の方法。
【請求項３５】
前記第３のデバイスに、前記１つまたは複数の第１のネットワーク識別子を送信するステップは：
（ａ）前記第１のネットワーク識別子を第２のデバイスによって前記第３のデバイスに送信するステップと、
（ｂ）前記第１のネットワーク識別子を前記第３のデバイスに中継サーバから送信するステップであって、前記中継サーバは、前記１つまたは複数の第３のネットワーク識別子を前記第１のデバイスによって受信する前に、前記第１のネットワーク識別子を記憶する、送信するステップと、のうちの少なくとも１つを更に含む、請求項２６に記載の方法。
【請求項３６】
コンピュータネットワークと、
前記コンピュータネットワークに接続された第１のデバイスおよび第２のデバイスであって、前記第１のデバイスは、１つまたは複数のプロセッサと１つまたは複数のメモリデバイスとを含み、前記１つまたは複数のメモリデバイスは、前記１つまたは複数のプロセッサに：
前記第２のデバイスへの第１の接続を開始するステップと、
前記第１の接続を介して第３のデバイスの１つまたは複数の第３のネットワーク識別子を受信するステップであって、前記第１のデバイスは、前記第１の接続を介して前記１つまたは複数の第３のネットワーク識別子を受信する前に、前記第３のデバイスの記録を有していない、受信するステップと、
前記第１のデバイスの１つまたは複数の第１のネットワーク識別子を参照する前記第３のデバイスの前記１つまたは複数の第３のネットワーク識別子からの１つまたは複数のインバウンド接続を許可するために、前記第１のデバイスの１つまたは複数のネットワーク管理規則を変更するステップと、
前記第１のデバイスを参照する１つまたは複数の第１のネットワーク識別子を前記第３のデバイスに送信するステップであって、前記第３のデバイスは、前記１つまたは複数の第１のネットワーク識別子を受信する前に、前記第１のデバイスの記録を有していない、送信するステップと、
前記第３のデバイスからの前記１つまたは複数のインバウンド接続を受け入れるステップであって、前記１つまたは複数のインバウンド接続は、前記１つまたは複数第１のネットワーク識別子を含み、および、前記１つまたは複数の第３のネットワーク識別子を、前記１つまたは複数のインバウンド接続のソースとして列挙する、受け入れるステップと、
少なくとも１つの所定の条件を検出することに応じて、前記第３のデバイスから前記先に受け入れられたインバウンド接続をブロックするために、前記１つまたは複数のネットワーク管理ルールを変更するステップと、を実行させるのに有効な実行可能コードを格納する、ことを特徴とするシステム。
【請求項３７】
前記１つまたは複数の第３のネットワーク識別子は、ソースインターネットプロトコル（ＩＰ）アドレス、ソースポート、トランスポートプロトコル、および前記第３のデバイスからの前記１つまたは複数のインバウンド接続のデータパターンからなる群から選択される、請求項３６に記載のシステム。
【請求項３８】
前記１つまたは複数の第１のネットワーク識別子は、ソースインターネットプロトコル（ＩＰ）アドレス、ソースポート、およびトランスポートプロトコルからなる群から選択される、請求項３６に記載のシステム。
【請求項３９】
前記実行可能コードは、前記第３のデバイスからの前記１つまたは複数のインバウンド接続を、トランスポートレベルセキュリティ（ＴＬＳ）プロトコル、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ウェブリアルタイム通信（ＷｅｂＲＴＣ）プロトコル、およびインタラクティブ接続確立（ＩＣＥ）フレームワークを用いるプロトコルからなるグループから選択されたプロトコルを使用して、前記１つまたは複数のプロセッサに許可させるのにさらに有効である、請求項３６に記載のシステム。
【請求項４０】
前記実行可能コードは、前記１つまたは複数のプロセッサに、（ａ）前記第１のデバイスによって、前記第１の接続を介して、前記第３のデバイスの前記１つまたは複数の第３のネットワーク識別子を受信するステップ、および、（ｂ）前記第１のデバイスを参照する前記１つまたは複数の第１のネットワーク識別子を前記第３のデバイスに送信するステップの両方を、前記第１のデバイスに接続するための前記第３のデバイスの認証に応答して実行させるために有効であり、前記第１のデバイスに接続する前記第３のデバイスの前記認証は、前記第３のデバイスが前記第１のデバイスの記録を有する前に実行される、請求項３６に記載のシステム。
【請求項４１】
前記少なくとも１つの所定の条件は：
前記第３のデバイスへの開かれた接続の数が、許可された接続の数を超えること、
１つまたは複数の前記開かれた接続を閉じた後、未使用の前記第３のデバイスに許可された接続の数が第１の閾値を超えること、
前記１つまたは複数のインバウンド接続が許可されてからの時間間隔が第２の閾値を超えること、からなる群から選択される、請求項３６に記載のシステム。
【請求項４２】
前記少なくとも１つの所定の条件は、前記第１のデバイスが、前記１つまたは複数の第３のネットワーク識別子に含まれるものとは異なるネットワークアドレスからの１つまたは複数のインバウンド接続をブロックすることを含む、請求項３６に記載のシステム。
【請求項４３】
前記実行可能コードは、前記第１のデバイス上のファイアウォール規則を変更することによって、前記１つまたは複数のプロセッサに前記１つまたは複数のネットワーク管理規則を変更させるのに有効である、請求項３６に記載のシステム。
【請求項４４】
前記第２のデバイスは、仮想プライベートネットワーク（ＶＰＮ）サーバおよびルータのうちの少なくとも１つである、請求項３６に記載のシステム。
【請求項４５】
前記実行可能コードは、
（ａ）前記第１のネットワーク識別子を第２のデバイスによって前記第３のデバイスに送信するステップと、
（ｂ）前記第１のネットワーク識別子を前記第３のデバイスに中継サーバから送信するステップであって、前記中継サーバは、前記１つまたは複数の第３のネットワーク識別子を前記第１のデバイスによって受信する前に、前記第１のネットワーク識別子を記憶する、送信するステップと、のうちの少なくとも１つによって、前記１つまたは複数のプロセッサに、前記１つまたは複数の第１のネットワーク識別子を前記第３のデバイスへと送信させるのにさらに有効である、請求項３６に記載のシステム。
【請求項４６】
外部ネットワークに接続された第１のコンピュータおよび第２のコンピュータを含む、システムであって、
前記第１のコンピュータは、
前記第２のコンピュータと第３のコンピュータとの間でデータ交換を確立するために必要な１つまたは複数の第３のネットワーク識別子を提供するために、前記第２のコンピュータから転送された要求を受信し、前記第３のコンピュータは前記外部ネットワークにあり、前記第２のコンピュータは前記１つまたは複数の第３のネットワーク識別子の記録を有しておらず、
前記第２のコンピュータが前記第３のコンピュータへの直接のインバウンド接続を開始することを認可されているかどうかを評価し、
前記第２のコンピュータが、前記第３のコンピュータへの直接のインバウンド接続を開始することを認可されている場合、前記第２のコンピュータに前記１つまたは複数の第３のネットワーク識別子を提供し、
前記第２のコンピュータが、前記第３のコンピュータへの直接のインバウンド接続を開始することを認可されていない場合、前記第２のコンピュータに、第４のコンピュータと対応する１つまたは複数の第４のネットワーク識別子を提供するようにプログラムされ、前記第４のコンピュータは、前記１つまたは複数の第３のネットワーク識別子を前記第２のコンピュータに送信することなく、前記第２のコンピュータと前記第３のコンピュータとの間で、トラフィックを転送するようにプログラムされる、システム。
【請求項４７】
前記１つまたは複数の第３のネットワーク識別子は、前記第３のコンピュータへの前記インバウンド接続の宛先ＩＰアドレスおよび宛先ポートからなる群から選択される、請求項４６に記載のシステム。
【請求項４８】
前記第１のコンピュータは、前記第２のコンピュータに認証証明書を提供することを要求することによって、前記第２のコンピュータが前記第３のコンピュータへの直接のインバウンド接続を開始することを認可されるかどうかを評価するようにさらにプログラムされる、請求項４６に記載のシステム。
【請求項４９】
さらに前記第４のコンピュータを含み、前記第４のコンピュータは、前記第４のコンピュータの１つまたは複数の第４のネットワーク識別子を前記第２のコンピュータに提供する前に、前記第３のコンピュータからの前記第４のコンピュータへのアウトバウンド接続を確立するようにさらにプログラムされ、前記第３のコンピュータからの前記第４のコンピュータへの前記アウトバウンド接続は、前記第３のコンピュータへの逆接続である、請求項４６に記載のシステム。
【請求項５０】
前記第４のコンピュータは、前記第３のコンピュータから前記第４のコンピュータへと確立されたＶＰＮトンネル内の逆接続をサポートすることができる仮想プライベートネットワーク（ＶＰＮ）サーバを実行するようにプログラムされる、請求項４９に記載のシステム。
【請求項５１】
前記第２のコンピュータが、前記第３のコンピュータへの直接のインバウンド接続を開始することが許可されている場合、ユーザデータグラムプロトコル（ＵＤＰ）を介してインタラクティブ接続確立（ＩＣＥ）フレームワークを使用して前記第３のコンピュータへの前記直接のインバウンド接続を開始するように、前記第２のコンピュータはプログラムされ、
前記第２のコンピュータは、前記第３のコンピュータへの直接のインバウンド接続を開始することが認可されていない場合、ハイパーテキスト転送プロトコル（ＨＴＴＰ）を使用して前記第２のコンピュータと前記第４のコンピュータとの間の接続を開始するようにプログラムされる、請求項４６に記載のシステム。
【請求項５２】
前記第１のコンピュータは、ドメインネームサーバ（ＤＮＳ）を実行し、前記第２のコンピュータからのドメイン解決要求に応じて、前記１つまたは複数の第３のネットワーク識別子および前記１つまたは複数の第４のネットワーク識別子のうちの少なくとも１つを前記第２のコンピュータに提供するようにプログラムされる、請求項４６に記載のシステム。
【請求項５３】
前記第３のコンピュータは、ネットワーク対応家電機器である、請求項４６に記載のシステム。
【請求項５４】
前記第３のコンピュータは、ゲートウェイ、ルータ、ブリッジ、スイッチ、およびファイアウォールの少なくとも１つを含む、請求項４６に記載のシステム。
【請求項５５】
外部ネットワークに接続された第１のコンピュータおよび第２のコンピュータを提供するステップと、
前記第２のコンピュータと第３のコンピュータとの間でデータ交換を確立するために必要な１つまたは複数の第３のネットワーク識別子を提供するために、前記第２のコンピュータから転送された要求を前記第２のコンピュータにより受信するステップであって、前記第３のコンピュータは前記外部ネットワークにあり、前記第２のコンピュータは前記１つまたは複数の第３のネットワーク識別子の記録を有していない、受信するステップと、
前記第２のコンピュータが前記第３のコンピュータへの直接のインバウンド接続を開始することを認可されるかどうかを前記第１のコンピュータによって評価するステップと、
前記第２のコンピュータが前記第３のコンピュータへの直接のインバウンド接続を開始することを認可されていると前記第１のコンピュータによって判定するステップと、
前記第２のコンピュータが前記第３のコンピュータへの直接のインバウンド接続を開始することを認可されていると判定するステップに応じて、前記１つまたは複数の第３のネットワーク識別子を前記第２のコンピュータに提供するステップと、を含む、方法。
【請求項５６】
前記第２のコンピュータと第４のコンピュータとの間でデータ交換を確立するために必要な１つまたは複数の第４のネットワーク識別子を提供するために、前記第２のコンピュータから転送された要求を前記第２のコンピュータにより受信するステップであって、前記第４のコンピュータは前記外部ネットワークにあり、前記第２のコンピュータは前記１つまたは複数の第４のネットワーク識別子の記録を有していない、受信するステップと、
前記第２のコンピュータが前記第４のコンピュータへの直接のインバウンド接続を開始することが認可されるかどうかを前記第１のコンピュータによって評価するステップと、
前記第２のコンピュータが、前記第４のコンピュータへの直接のインバウンド接続を開始することを認可されていないと前記第１のコンピュータによって判定するステップと、
前記第２のコンピュータが前記第４のコンピュータへの直接のインバウンド接続を開始することを認可されていないと判定することに応答して、前記第２のコンピュータに１つまたは複数の第５のネットワーク識別子を前記第１のコンピュータによって提供するステップであって、前記第５のネットワーク識別子は第５のコンピュータを参照し、前記第５のコンピュータは、前記１つまたは複数の第４のネットワーク識別子を前記第２のコンピュータに送信することなく、前記第２のコンピュータと前記第４のコンピュータとの間でトラフィックを転送するようにプログラムされる、提供するステップと、をさらに含む、請求項５５に記載の方法。
【請求項５７】
ハイパーテキスト転送プロトコル（ＨＴＴＰ）を使用して、前記第２のコンピュータと前記第５のコンピュータとの間の接続を開始するステップをさらに含む、請求項５６に記載の方法。
【請求項５８】
前記第５のコンピュータの前記１つまたは複数の第５のネットワーク識別子を前記第２のコンピュータに提供する前に、前記第４のコンピュータから前記第５のコンピュータへのアウトバウンド接続を前記第５のコンピュータによって確立するステップをさらに含み、前記第４のコンピュータからの前記第５のコンピュータへの前記アウトバウンド接続は、前記第４のコンピュータへの逆接続である、請求項５６に記載の方法。
【請求項５９】
前記第４のコンピュータから前記第５のコンピュータへと確立されたＶＰＮトンネル内の逆接続をサポートすることができる仮想プライベートネットワーク（ＶＰＮ）サーバを前記第５のコンピュータ上で実行するステップ、をさらに含む、請求項５８に記載の方法。
【請求項６０】
前記１つまたは複数の第３のネットワーク識別子は、前記第３のコンピュータへの前記インバウンド接続の宛先ＩＰアドレスおよび宛先ポートからなる群から選択される、請求項５５に記載の方法。
【請求項６１】
前記第２のコンピュータに認証証明書を提供することを要求することによって、前記第２のコンピュータが前記第３のコンピュータへの直接のインバウンド接続を開始することを認可されているかどうかを、前記第１のコンピュータによって評価するステップ、をさらに含む請求項５５に記載の方法。
【請求項６２】
前記第２のコンピュータが、前記第３のコンピュータへの直接のインバウンド接続を開始することが認可されていると判定することに応答して、前記第３のコンピュータへの前記直接のインバウンド接続を、  ユーザデータグラムプロトコル（ＵＤＰ）を介してインタラクティブ接続確立（ＩＣＥ）フレームワークを使用して前記第２のコンピュータによって開始するステップをさらに含む、請求項５５に記載の方法。
【請求項６３】
前記第１のコンピュータ上でドメインネームサーバ（ＤＮＳ）を実行するステップをさらに含み、
前記第２のコンピュータに前記１つまたは複数の第３のネットワーク識別子を前記第１のコンピュータによって提供するステップは、前記第２のコンピュータからドメイン解決要求を受信することに応答して実行される、請求項５５に記載の方法。
【請求項６４】
前記第３のコンピュータおよび前記第４のコンピュータの少なくとも１つは、ネットワーク対応家電機器である、請求項５５に記載の方法。
【請求項６５】
前記第３のコンピュータおよび前記第４のコンピュータの少なくとも１つは、ゲートウェイ、ルータ、ブリッジ、スイッチ、およびファイアウォールのうちの少なくとも１つを含む、請求項５５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（本文中に技術分野に該当する記載なし。）
【背景技術】
【０００２】
（関連出願）
本出願は、２０１５年８月２５日に出願された題名「コンピュータデバイス間の安全な接続のためのシステム（SYSTEM FOR SECURING CONNECTIONS BETWEEN COMPUTER DEVICES）」の米国仮出願第６２／２０９，７７６号の利益を主張し、その全体が参照により本明細書に組み込まれる。
【０００３】
急速に増えつつある数多くの様々なデバイスが、インターネットに接続する能力を獲得している。このようなデバイスのいくつかの例は、スマート電源スイッチ、防犯カメラ、照明制御デバイス、家庭電化製品、ネットワーク接続ストレージ（ＮＡＳ）などである。しばしば、モノのインターネット（ＩｏＴ：Internet of Things）と呼ばれるこれらのデバイスは、インターネットへの接続性を、デスクトップコンピュータやラップトップコンピュータ、スマートフォン、タブレットなどの従来のデバイスだけでなく、様々なデバイスや日用品に拡張し、これらの様々なデバイスや日用品は、埋め込み技術を利用して、すべてインターネットを介して、外部環境と通信し、相互にやり取りする。
【０００４】
これらのデバイスの多くは、無線（Ｗｉ−Ｆｉ）ルータまたはアクセスポイントを介してインターネットに接続され、ローカルネットワークの一部になる。通常、これらのデバイスは、同じローカルネットワーク上のデバイス（例えばワイヤレスヘッドフォン）、およびローカルネットワークの外のデバイス（例えば、リモートアクセスを提供するベンダー固有のアプリケーションを備える携帯電話）の両方との通信を許可される。
【０００５】
このようなデバイスはしばしば、更新のために遠隔サーバにアクセスし、そのデータをアップロードするＨＴＴＰ／ＨＴＴＰＳクライアント、および、他のデバイス（ＩｏＴハブ、携帯電話など）からのステータス制御およびデータ収集を可能にするアプリケーションプログラミングインタフェース（ＡＰＩ）を提供するＨＴＴＰ／ＨＴＴＰＳサーバの両方として機能することができる。
【０００６】
ベンダー固有のアクセスパターンとセキュリティ対策を備えた接続デバイスの普及で、ローカルネットワーク内および外の両方のセキュリティリスクが著しく増加する。ローカルネットワーク内の不正なデバイス（Rogue device）は、ネットワークトラフィックをスパイしたり、ＤＮＳ設定を変更したり、認可されていないデータ（例えば、ローカルコンピュータの共有ディレクトリなど）にアクセスしたり、ローカルデバイスを攻撃する（例えば、スマートスイッチをオフにしたり、セキュリティカメラをブロックするなど）ために他のデバイス（例えば、Ｗｉ−Ｆｉルータなど）の脆弱性を悪用し得る。ローカルネットワークの外側のサーバとの接続を確立できる不正なデバイスは、ローカルデバイスから収集したデータを認可されていない第三者に通知したり、マルウェアをダウンロードしてローカル攻撃を実行したり、或いはサービス拒否攻撃又はスパムの配布が可能なボットネットの一部になったりすることがある。
【０００７】
デバイスのベンダーの数の増加と同じネットワーク上のデバイスの多様性の増加に伴い、個々のベンダーを頼ってセキュリティを制御することはより難しくなっている。ローカルネットワーク内の１つの障害が起きたデバイスでさえも、深刻なセキュリティとプライバシーの脅威を示す可能性がある。
【０００８】
それゆえ、ローカルネットワークに接続された信頼できないデバイスで構成されるシステムのセキュリティを向上させ得る解決策が必要とされている。好ましくは、そのような解決策は、接続されたデバイスを、その有用性およびアップグレードの能力を低下させずに、または大きな追加コストを招くことなく、より安全にするべきである。
【発明の概要】
【０００９】
本発明の一態様では、ネットワーク構築のためのシステムは、ローカルネットワーク内のコンピュータ間でデータを転送するように構成された少なくとも１つのネットワークデバイスを含むローカルネットワークを含む。第１のデバイスは、ローカルネットワークに接続され、少なくとも１つの処理デバイスおよびネットワーク通信を実行するための手段を含み、第１のデバイスはアウトバウンド接続を開始するようにプログラムされ、少なくとも１つのアウトバウンド接続は、ローカルネットワーク内のいずれのデバイスとも対応しない外部アドレスを含む。第２のデバイスは、ローカルネットワークに接続され、外部ネットワークへの少なくとも１つの接続を有する。各アウトバウンド接続の外部ネットワークアドレスは、外部ネットワークに接続された外部デバイスを参照する。第２のデバイスは、少なくとも１つのアウトバウンド接続の外部アドレスが、少なくとも１つのアウトバウンド接続の外部アドレスからのインバウンド接続によって先行されなかった場合に、第１のデバイスによって開始されたアウトバウンド接続の少なくとも１つのアウトバウンド接続に対して、少なくとも１つのアウトバウンド接続をブロックするようにさらにプログラムされる。第２のデバイスは、第２のデバイスによってブロックされたアウトバウンド接続の少なくとも１つのアウトバウンド接続の外部アドレスと同一のソースアドレスを含む、外部ネットワーク内のソースアドレスからの第１のデバイスへのインバウンド接続を許可にするようにさらにプログラムされ得る。
【００１０】
いくつかの実施形態では、第２のデバイスは、さらに、アウトバウンド接続の少なくとも１つのアウトバウンド接続に対して、少なくとも１つのアウトバウンド接続の外部アドレスがホワイトリストに含まれている場合、各アウトバウンド接続の外部アドレスへの各アウトバウンド接続を許可し、および、少なくとも１つのアウトバウンド接続の外部アドレスがホワイトリストに含まれていない場合、少なくとも１つのアウトバウンド接続をブロックするようにさらにプログラムされる。いくつかの実施形態では、第２のデバイスは、ホワイトリストに含まれていないソースアドレスを有するインバウンド接続の少なくとも一部を許可するようにさらにプログラムされる。
【００１１】
いくつかの実施形態では、ホワイトリストは、ドメイン名、インターネットプロトコル（ＩＰ）アドレス、およびポートのうちの少なくとも１つを、それぞれが含む１つまたは複数のネットワーク識別子を格納する。
【００１２】
いくつかの実施形態では、第２のデバイスは、少なくとも１つのアウトバウンド接続に対して、少なくとも１つのアウトバウンド接続の外部アドレスが、少なくとも１つのアウトバウンド接続の外部アドレスからのインバウンド接続によって先行されている場合、少なくとも１つのアウトバウンド接続の外部アドレスへの少なくとも１つのアウトバウンド接続を許可するようにさらにプログラムされる。
【００１３】
いくつかの実施形態では、第２のデバイスは、第１のアドレスからのインバウンド接続によって先行される第１の外部アドレスへの第１のデバイスからのアウトバウンド接続を許可し、先に受信したインバウンド接続に含まれていた第１のアドレスとは異なるアドレスを含む、第１のアドレスとは異なるアドレスへの第１のデバイスからの１つまたは複数の後続のアウトバウンド接続をブロックするようにプログラムされる。
【００１４】
いくつかの実施形態では、第２のデバイスは、アウトバウンド接続と同じアドレスを参照するインバウンド接続が、第２のデバイスに知られているポートのセットからの宛先ポートを使用している場合にのみ、第１のデバイスからのアウトバウンド接続を許可するようにさらにプログラムされる。
【００１５】
いくつかの実施形態では、第２のデバイスは、第１のデバイスからのすべてのアウトバウンド接続をブロックし、第１のデバイスが外部ネットワークのソースアドレスから開始されるインバウンド接続を受け入れることを許可にするようにさらにプログラムされる。
【００１６】
いくつかの実施形態では、第１のデバイスは、ハイパーテキスト転送プロトコル（ＨＴＴＰ）サーバとＨＴＴＰクライアントの両方を実行するようにプログラムされる。
【００１７】
いくつかの実施形態では、第２のデバイスは、ＨＴＴＰクライアントからの外部ネットワーク内の遠隔デバイスへの接続の試みをブロックし、遠隔デバイスからの接続がＨＴＴＰサーバに到達することを許可するようにさらにプログラムされる。
【００１８】
いくつかの実施形態では、第２のデバイスは、ゲートウェイ、ルータ、ブリッジ、スイッチ、およびファイアウォールの少なくとも１つを含む。
【００１９】
いくつかの実施形態では、第２のデバイスは、さらに、外部ネットワーク内の１つまたは複数の中継コンピュータへの接続を開き、および、インバウンド接続の各インバウンド接続ごとに−−
各インバウンド接続が、１つまたは複数の中継コンピュータ以外の外部ネットワークにおける遠隔デバイスから１つまたは複数の中継コンピュータを介して受信された場合に、第１のデバイスへの各インバウンド接続を許可し、
１つまたは複数の中継コンピュータ以外の遠隔デバイスからの各インバウンド接続が、１つまたは複数の中継コンピュータを介して受信されない場合、各インバウンド接続が、第１のデバイスに接続を開くのをブロックする、ようにさらにプログラムされる。
【００２０】
いくつかの実施形態では、１つまたは複数の中継コンピュータは、遠隔デバイスからの要求を渡すために、第２のデバイスによって開かれた逆接続を使用して、遠隔デバイスと第２のデバイスとの間のプロキシとして機能することが可能である。
【００２１】
いくつかの実施形態では、１つまたは複数の中継コンピュータは、遠隔デバイスからの要求を渡すために、第２のデバイスによって開かれたＶＰＮトンネルを介する逆接続を使用して、第２のデバイスからの接続のための仮想プライベートネットワーク（ＶＰＮ）サーバとして機能することが可能である。
【００２２】
いくつかの実施形態では、第２のデバイスは、各アウトバウンド接続ごとに、各アウトバウンド接続のソースアドレスを評価し、各アウトバウンド接続のソースアドレスがローカルネットワーク内のアドレスと一致する場合は、各アウトバウンド接続の処理を控える、ようにプログラムされる。
【００２３】
いくつかの実施形態では、第２のデバイスは、単方向接続要求のみを許可するようにさらにプログラムされる。いくつかの実施形態では、第１のデバイスは、接続の受け入れと、接続の開始の両方を実行するようにプログラムされる。
【００２４】
いくつかの実施形態では、ネットワーク構築のためのシステムは、ローカルネットワーク内のコンピュータ間でデータを転送するように構成された少なくとも１つのネットワークデバイスを含むローカルネットワークを含む。第１のデバイスは、ローカルネットワークに接続され、少なくとも１つの処理デバイスと、ネットワーク通信を実行する手段とを備え、第１のデバイスはアウトバウンド接続を開始するようにプログラムされており、少なくとも１つのアウトバウンド接続はローカルネットワーク内のいずれかのコンピュータと対応している。第２のデバイスは、ローカルネットワークに接続され、ローカルネットワーク内のコンピュータ間の接続を管理するようにプログラムされており、第２のデバイスはまた、外部ＩＰアドレスからの少なくとも１つのインバウンド接続を受け入れるようにプログラムされており、外部ＩＰアドレスからのインバウンド接続は第１のデバイスへの参照を含む。第２のデバイスは、少なくとも１つの第１のアウトバウンド接続が、第１のデバイスへの参照を含むインバウンド接続によって先行されなかった場合、第１のデバイスからのローカルネットワーク内の第１のアドレスへの少なくとも１つの第１のアウトバウンド接続に対して、少なくとも１つの第１のアウトバウンド接続をブロックするようにさらにプログラムされる。
【００２５】
いくつかの実施形態では、ローカルネットワーク内のコンピュータは、第１のグループのデバイスおよび第２のグループのデバイスを含む。第２のデバイスは、第１の規則をローカルネットワーク内の第１のグループのデバイスに適用し、第２の規則をローカルネットワーク上の第２のグループのデバイスに適用するようにさらにプログラムされ得、第１の規則は、第２のデバイスが第１のグループから第２のグループへの接続をブロックするようにプログラムされるが、第２のグループから第１のグループへのローカル接続を許可するようにプログラムされるように、第２の規則と異なる。
【００２６】
いくつかの実施形態では、第２のデバイスは、ローカルネットワーク内の第２のアドレスへの第１のデバイスからの少なくとも１つの第２のアウトバウンド接続に対して、少なくとも１つの第２のアウトバウンド接続が、第２のアドレスを含む第１のデバイスへのインバウンド接続により先行されたかに関わらず少なくとも１つの第２のアウトバウンド接続を許可するようにさらにプログラムされる。
【００２７】
いくつかの実施形態では、第２のデバイスは、ゲートウェイ、ルータ、ブリッジ、スイッチ、プロキシ、およびファイアウォールのうちの１つである。
【００２８】
いくつかの実施形態では、第２のデバイスは、アドレス解決プロトコル（ＡＲＰ）、マルチキャストドメインネームサービス（ｍＤＮＳ）、およびシンプルサービスディスカバリプロトコル（ＳＳＤＰ）のうちの少なくとも１つから得られた情報によってローカルネットワーク上のコンピュータを識別するようにプログラムされる。
【００２９】
いくつかの実施形態では、第２のデバイスは、少なくとも１つのコンピュータの名前およびディスクリプションによって、ローカルネットワーク上のコンピュータから少なくとも１つのコンピュータを識別するようにプログラムされる。
【００３０】
いくつかの実施形態では、第２のデバイスは、１つまたは複数のローカル接続を開始したローカルネットワーク上のコンピュータのうちの１つのコンピュータからの少なくとも１つのデータパケットをブロックすることによって、１つまたは複数のローカル接続をブロックするようにさらにプログラムされる。
【００３１】
いくつかの実施形態では、第２のデバイスは、１つまたは複数のローカル接続に応答して転送された、ローカルネットワーク上のコンピュータのうちの１つのコンピュータからの少なくとも１つのデータパケットをブロックすることによって、１つまたは複数のローカル接続をブロックするようにさらにプログラムされる。
【００３２】
いくつかの実施形態では、第２のデバイスは、第１のデバイスによって先に送信または受信されたパケットに関する情報を分析することによって第１のデバイスを識別するようにプログラムされる。
【００３３】
いくつかの実施形態では、第２のデバイスは、第１のデバイスが第１のアドレスに、少なくとも所定の時間間隔内に第１のアドレスからパケットを先に受信することなく、パケットを送信していた場合に、第１のデバイスを少なくとも１つのアウトバウンド接続を開始するものとして識別するようにプログラムされる。
【図面の簡単な説明】
【００３４】
本発明の利点が容易に理解されるように、上で簡単に説明した本発明のより具体的な説明は、添付の図面に示される特定の実施形態を参照して提供されるだろう。これらの図面は、本発明の典型的な実施形態を例示しているだけであり、それゆえ、その範囲を限定すると見なされるべきではないと理解され、本発明は、添付の図面を使用して追加の特異性および詳細を用いて記載されおよび説明されるだろう。
【００３５】
【図１】本発明の一実施形態に従って管理されるローカルデバイスとリモートコンピュータとの間の接続を有するネットワーク環境の概略ブロック図である。
【図２Ａ】本発明の一実施形態に従って管理される多数のローカルデバイスとリモートコンピュータとの間の接続を有するネットワーク環境の概略ブロック図である。
【図２Ｂ】本発明の一実施形態に係るローカルデバイスからのアウトバウンド接続を管理するための処理フロー図である。
【図３】本発明の一実施形態に従って管理される、ＶＰＮトンネルを介したローカルデバイスと認可されたリモートコンピュータとの間の接続を有するネットワーク環境の概略ブロック図である。
【図４Ａ】本発明の一実施形態に係るローカルネットワーク内のデバイスとの遠隔通信を保証する方法の処理フロー図である。
【図４Ｂ】本発明の一実施形態に係るローカルネットワーク内のデバイスとの遠隔通信を保証する方法の処理フロー図である。
【図５】本発明の一実施形態に係るＶＰＮトンネルを介したローカルネットワーク内のデバイスとの遠隔通信を保証する方法の処理フロー図である。
【図６Ａ】本発明の一実施形態に係るローカルネットワーク内のデバイス間の通信を管理する方法の処理フロー図である。
【図６Ｂ】本発明の一実施形態に係るローカルネットワーク内のデバイス間の通信を管理する方法の処理フロー図である。
【図７】本発明の一実施形態に従って管理されるローカルネットワーク内の２つのデバイス間の接続を有するネットワーク環境の概略ブロック図である。
【図８】本発明の一実施形態に従って管理される、ローカルネットワーク内の３つのデバイス間の接続を有するネットワーク環境の概略ブロック図である。
【図９】本発明の一実施形態に従って管理される、リモートコンピュータとローカルネットワーク内のデバイスとの間のダイレクト接続を有するネットワーク環境の概略ブロック図である。
【図１０Ａ】本発明の一実施形態に係る保護されたデバイスへのダイレクト接続を管理する方法の処理フロー図である。
【図１０Ｂ】本発明の一実施形態に係る保護されたデバイスへのダイレクト接続を管理する方法の処理フロー図である。
【図１０Ｃ】本発明の一実施形態に係る保護されたデバイスへのダイレクト接続を管理する方法の処理フロー図である。
【図１１】本発明の一実施形態により管理される、ＶＰＮトンネルの内部および外部のＨＴＴＰ接続を有するネットワーク環境の概略ブロック図である。
【図１２】本発明の一実施形態に従って管理される異なる通信フレームワークを使用する接続を有するネットワーク環境の概略ブロック図である。
【図１３】本発明の一実施形態に従って管理される、ＤＮＳサーバによって制御される接続を有するネットワーク環境の概略ブロック図である。
【図１４】本発明の一実施形態に係るコンピュータデバイス間の接続ルートを管理する方法の処理フロー図である。
【図１５】本発明の一実施形態に係る初期接続要求に応じてコンピュータデバイス間の接続ルートを管理する方法の処理フロー図である。
【図１６Ａ】本発明の一実施形態に係るＤＮＳサーバによるコンピュータデバイス間の接続を管理する方法の処理フロー図である。
【図１６Ｂ】本発明の一実施形態に係るＤＮＳサーバによるコンピュータデバイス間の接続を管理する方法の処理フロー図である。
【図１７】本明細書で開示されるシステムおよび方法を実装するのに適したコンピュータの概略ブロック図である。
【発明を実施するための形態】
【００３６】
本明細書中で概して記載され、図面に説明されるような本発明の構成要素は、多種多様な異なる構成で配置され、設計され得ることが容易に理解されるであろう。それゆえ、図面に表されるように本発明の実施形態の以下のより詳細な説明は、請求されるような本発明の範囲を限定する意図はなく、単に本発明に係る現在考えられる実施形態の特定の例を表している。現在記載されている実施形態は、全体を通して類似する部材には、類似する参照番号で示されている図面を参照することによって最もよく理解されるであろう。
【００３７】
本発明に係る実施形態は、装置、方法、またはコンピュータプログラム製品として実施され得る。従って、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、またはソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形態を取り得、これらは全て、本明細書では概して「モジュール」または「システム」と参照され得る。さらに、本発明は、媒体に具体化されたコンピュータ使用可能プログラムコードを有する表現の任意の有形媒体に具体化されたコンピュータプログラム製品の形態を取り得る。
【００３８】
１つ以上のコンピュータ使用可能媒体またはコンピュータ可読媒体の任意の組み合わせを利用してよい。例えば、コンピュータ可読媒体は、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）デバイス、読み取り専用メモリ（ＲＯＭ）デバイス、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）デバイス、携帯型コンパクトディスク読み取り専用メモリ（ＣＤＲＯＭ）、光記憶デバイス、および磁気記憶デバイスのうちの１つまたは複数を含み得る。選択された実施形態では、コンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって使用される、或いは命令実行システム、装置、またはデバイスと接続して使用されるプログラムを含む、格納する、通信する、伝播する、または転送することができる任意の非一時的媒体を含み得る。
【００３９】
本発明の動作を実行するためのコンピュータプログラムコードは、Ｊａｖａ（登録商標）のようなオブジェクト指向プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組み合わせで書かれてもよい。スモールトーク、Ｃ＋＋など、および「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を使用してもよく、ＨＴＭＬ、ＸＭＬ、ＪＳＯＮなどの記述言語またはマークアップ言語を使用してもよい。プログラムコードは、スタンドアローンのソフトウェアパッケージとして完全にコンピュータシステム上で、スタンドアローンのハードウェアユニット上で、部分的にコンピュータからある程度離して配置されたリモートコンピュータ上で、または完全にリモートコンピュータまたはサーバ上のコンピュータシステム上で実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してコンピュータに接続されてよく、または外部コンピュータに接続されてもよい（例えば、インターネットサービスプロバイダを使用してインターネットを介して）。コンピュータネットワークは、インターネットプロトコル以外のトランスポートプロトコルを使用してもよい。これに対応して、本発明は、ＩＰアドレス以外のタイプのネットワークアドレスに対しても実施することができる。
【００４０】
本発明は、本発明の実施形態に係る方法、装置（システム）およびコンピュータプログラム製品のフローチャート図および／またはブロック図を参照して以下で説明される。フローチャート図および／またはブロック図の各ブロック、ならびにフローチャート図および／またはブロック図におけるブロックの組み合わせは、コンピュータプログラム命令またはコードによって実施できることが理解されよう。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供され、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行する命令が、フローチャートおよび／またはブロック図の（複数の）ブロックにおいて指定された機能／動作を実装するための手段を作成するように機械を製造してよい。
【００４１】
これらのコンピュータプログラム命令はまた、コンピュータ可読媒体に格納された命令が、フローチャートおよび／またはブロック図の（複数の）ブロックにおいて指定された機能／動作を実装する命令手段を含む製造品を製造するように、コンピュータまたは他のプログラマブルデータ処理装置を特定の方式で機能するように指示できる非一時的なコンピュータ可読媒体に格納されてもよい。
【００４２】
コンピュータプログラム命令はまた、コンピュータまたは他のプログラマブル装置で実行する命令が、フローチャートおよび／またはブロック図の（複数の）ブロックで指定された機能／動作を実装するためのプロセスを提供するように、一連の動作ステップをコンピュータまたは他のプログラマブル装置上で実行させて、コンピュータ実装プロセスを生成するために、コンピュータまたは他のプログラマブルデータ処理装置にロードされる。
【００４３】
本発明の一態様では、ローカルネットワーク内のデバイスとの遠隔通信を管理するためのシステムが説明される。このシステムは、ローカルコンピュータネットワークに接続された第１のデバイスを含み、この第１のデバイスは、ローカルネットワークの外部のデバイスに関連する外部ネットワークアドレスへの接続を開始し、外部ネットワークアドレスから開始された接続に応答する手段を有する。システムは、第１のデバイスと外部ネットワークアドレスとの間のデータ交換を制御する手段を有する第２のデバイスをさらに含む。
【００４４】
第２のデバイスは、第１のデバイスが１つまたは複数の外部ネットワークアドレスへの接続を開始するのをブロックする手段をさらに含み得る。第２のデバイスは、１つまたは複数の外部ネットワークアドレスから開始された接続を受け入れ、それらを第１のデバイスに渡す手段を有する。第２のデバイスは、第１のデバイスへの接続を開始することが許可されている１つまたは複数の同じ外部ネットワークアドレスへの要求を第１のデバイスが開始するのをブロックする手段を有し得る。
【００４５】
一実施形態では、第２のデバイスは、第１のデバイスによって開始されたアウトバウンド接続うちの少なくとも１つのアウトバウンド接続の外部アドレスが、少なくとも１つのアウトバウンド接続の外部アドレスからのインバウンド接続によって先行されなかった場合に、その少なくとも１つのアウトバウンド接続をブロックする。
【００４６】
いくつかの例では、第２のデバイスは、少なくとも１つのアウトバウンド接続の外部アドレスが、少なくとも１つのアウトバウンド接続の外部アドレスからのインバウンド接続によって先行されている場合、少なくとも１つのアウトバウンド接続に対して、少なくとも１つのアウトバウンド接続の外部アドレスへの少なくとも１つのアウトバウンド接続を許可するように更にプログラムされている。
【００４７】
別の実施形態では、第２のデバイスは、許可された識別子のリストから少なくとも１つのネットワーク識別子と一致するものを除いて、第１のデバイスによって開始されたすべての要求をブロックする。許可されたネットワーク識別子は、ドメイン名、ＩＰアドレスおよびポートのグループからの１つまたは複数を含み得る。別の実施形態では、第２のデバイスは、第１のデバイスによって開始された外部ネットワークアドレスへのすべての接続をブロックする。
【００４８】
第１のデバイスはＨＴＴＰサーバとＨＴＴＰクライアントの両方として機能し得、一方、第２のデバイスはＨＴＴＰクライアントから遠隔デバイスへの接続の試みをブロックするが、遠隔デバイスからの接続がＨＴＴＰサーバに到達することを許可する。
【００４９】
いくつかの実施形態では、第２のデバイスは、ゲートウェイ、ルータ、ブリッジ、スイッチ、およびファイアウォールの少なくとも１つを含み得る。いくつかの実施形態では、第１のデバイスと外部ネットワークアドレスとの間のデータ交換を制御するための第２のデバイスの手段は、プロキシサーバを含む。例えば、外部ネットワークアドレスから開始された接続要求を受け入れるようにプロキシサーバは、プログラムされてよい。プロキシサーバは、ローカルネットワークを介して第１のデバイスとの接続をさらに開始し、第１のデバイスに要求データを渡す。プロキシサーバは、ローカルネットワークを介して第１のデバイスから応答を受信し、それを外部ネットワークアドレスに渡す。
【００５０】
プロキシサーバは、接続要求と共に提示された情報から第１のデバイスの識別子を抽出し得、次に、アドレス解決プロトコル（ＡＲＰ）、マルチキャストドメインネームサービス（ｍＤＮＳ）、およびシンプルサービスディスカバリプロトコル（ＳＳＤＰ）の少なくとも１つを使用して、要求された識別子からデバイスのローカルネットワークアドレスを決定し得る。
【００５１】
いくつかの実施形態では、システムは、ローカルネットワークの外部に位置する中継コンピュータへの１つまたは複数の接続を開くようにプログラムされた第２のデバイスをさらに含み、中継コンピュータは、外部ネットワークアドレスからの接続要求を受け入れ、それらを第２のデバイスに渡すことが可能である。第２のデバイスはさらに、第２のデバイスによって中継コンピュータに開かれた少なくとも１つの接続を通じて１つまたは複数の接続が受信された場合、外部ネットワークアドレスからのそれらの接続を許可する。第２のデバイスは、中継コンピュータのバイパスにおいて、外部ネットワークアドレスからの何らかの接続が、対応するネットワークアドレスから直接受信された場合、それらの接続をブロックするように、さらにプログラムされ得る。
【００５２】
いくつかの実施形態では、１つまたは複数の中継コンピュータは、遠隔デバイスからの要求を渡すために第２のデバイスによって開かれた逆接続を使用して、遠隔デバイスと第２のデバイスとの間のプロキシとして機能することができる。いくつかの実施形態では、１つまたは複数の中継コンピュータは、遠隔デバイスからの要求を渡すために第２のデバイスによって開かれたＶＰＮトンネルを介する逆接続を使用して、第２のデバイスからの接続のためのＶＰＮサーバとして機能することができる。いくつかの実施形態では、ローカルネットワーク内のデバイス間の通信を管理するシステムは、ローカルネットワーク内の複数のデバイス間のトラフィックを制御する手段を有する第１のデバイスを含む。ローカルネットワーク内の複数のデバイスは、同じネットワーク上の他のデバイスとのローカル接続を開始し、同じネットワーク上の他のデバイスからのローカル接続に応答することができる。第１のデバイスは、ローカルネットワーク上の１つまたは複数のデバイスによって開始されたローカル接続をブロックするようにさらにプログラムされており、一方で、これらのデバイスの１つまたは複数がローカルネットワーク上の他のデバイスによって開始されたローカル接続に応答することを許可する。
【００５３】
いくつかの実施形態では、第２のデバイスは、外部ＩＰアドレスからの少なくとも１つのインバウンド接続を受け入れるようにプログラムされ、外部ＩＰアドレスからの接続は第１のデバイスへの参照を含む。第２のデバイスは、第１のデバイスからのローカルネットワーク内の第１のアドレスへの少なくとも１つの第１のアウトバウンド接続に対して、少なくとも１つの第１のアウトバウンド接続が、第１のデバイスへの参照を含むインバウンド接続に先行されなかった場合、少なくとも１つの第１のアウトバウンド接続をブロックするようにさらにプログラムされる。
【００５４】
いくつかの例では、第２のデバイスは、ローカルネットワーク内の第２のアドレスへの第１のデバイスからの少なくとも１つの第２のアウトバウンド接続に対して、少なくとも１つの第２のアウトバウンド接続が、第２のアドレスを含む第１のデバイスへのインバウンド接続によりが先行されたか否かに関わらず、少なくとも１つの第２のアウトバウンド接続を許可するようにさらにプログラムされる。
【００５５】
１つの他の実施形態では、第１のデバイスは、ローカルネットワーク上の第１および第２のグループのデバイスに異なる規則を適用し、第１のグループから第２のグループへの接続をブロックするが、第２のグループから第１のグループへのローカル接続を許可する。１つの例では、１つまたは複数のデバイスから少なくとも１つのデバイスへのローカル接続が許可され、一方で、同じ１つまたは複数のデバイスから少なくとも１つの他のデバイスへのローカル接続はブロックされる。
【００５６】
第１のデバイスは、例えば、ゲートウェイ、ルータ、ブリッジ、スイッチ、プロキシまたはファイアウォールであってよい。いくつかの例では、第１のデバイスは、アドレス解決プロトコル（ＡＲＰ）、マルチキャストドメインネームサービス（ｍＤＮＳ）、およびシンプルサービスディスカバリプロトコル（ＳＳＤＰ）のうちの少なくとも１つから得られた情報によって、ローカルネットワーク上の他のデバイスを識別する。
【００５７】
ブロックされるべき接続を有するローカルネットワーク上の１つまたは複数のデバイスは、その名前またはディスクリプションによって識別され得る。一例では、これらのデバイスの少なくとも１つは、第１のデバイスのユーザによって指定される。第１のデバイスは、例えば、接続を開始するデバイスからの少なくとも１つのデータパケットをブロックすることによって、１つまたは複数のローカル接続をブロックし得る。いくつかの例では、第１のデバイスは、他のデバイスによって開始された接続に応答して、デバイスからの少なくとも１つのデータパケットをブロックすることによって、１つまたは複数のローカル接続をブロックする。いくつかの実施形態では、第１のデバイスは、ローカル接続を開始するデバイスを、その同じデバイスによって先に送信または受信されたパケットに関する情報を分析することによって（例えば、少なくとも所定の時間間隔の間にデバイスからパケットを前もって受信することなく、このデバイスが他のデバイスにパケットを送信していたことを検出することによって）識別する。
【００５８】
いくつかの実施形態では、保護されたデバイスへのダイレクト接続を管理するシステムは、コンピュータネットワークに接続された第１のデバイスを含み、第１のデバイスは、コンピュータネットワークに接続された１つまたは複数のデバイスへの接続を開始し、第１のデバイスが利用可能な規則のセットを使用することによって、１つまたは複数のデバイスによって開始された接続を受け入れるか拒否するかを決定するようにプログラムされる。
【００５９】
システムは、コンピュータネットワークに接続された第２のグループの１つまたは複数のデバイスをさらに含み得、第２のグループの少なくとも１つのデバイスは、第１のデバイスによって開始された１つまたは複数の接続を受け入れることができ、およびこれらの接続の少なくとも１つを介して第１のデバイスにデータを送信することができる。そのようなシステムにおける第１のデバイスは、第２のグループのデバイスへの接続を開始するようにさらにプログラムされ得る。次に、第１のデバイスは、この接続を介して、第３のデバイスによって開始されると予想される第１のデバイスへの１つまたは複数の接続の１つまたは複数の第１の識別子に関する情報を受信する。第１のデバイスは、次に、１つまたは複数の第１の識別子に関連する１つまたは複数の接続を受け入れるために、１つまたは複数の規則を変更するようにプログラムされ得る。第１のデバイスは、１つまたは複数の第１の識別子を含む第３のデバイスからの１つまたは複数の接続を受け入れるようにさらにプログラムされる。その後、少なくとも１つの所定の条件を検出すると、第１のデバイスは、１つまたは複数の第１の識別子に関連する１つまたは複数の接続をブロックするために、１つまたは複数の規則を変更するようにプログラムされる。
【００６０】
いくつかの例では、第１の識別子は、ソースＩＰアドレス、ソースポート、トランスポートプロトコル、およびデータパターンの組からの予想される接続の１つまたは複数のパラメータを含み得る。いくつかの実施形態では、第１のデバイスは、ローカルネットワーク内の１つまたは複数のデバイスに接続される。そのような実施形態では、第１のデバイスは、第１の識別子に関連付けられた接続要求を受信し得、次に、この要求をローカルネットワーク内のデバイスに渡し得る。１つの例では、外部ネットワークアドレスから開始された接続要求を受け入れるプロキシサーバを含むローカルネットワーク内のデバイスに要求を渡す手段は、ローカルネットワーク内のデバイスとの接続を開始し、そのデバイスに要求データを渡し、ローカルネットワーク内のデバイスから応答を受信し、その後、それを外部ネットワークアドレスに渡す。１つの例では、プロキシサーバは、接続要求と共に提出された情報からローカルネットワーク内のデバイスの識別子を抽出し、次に、アドレス解決プロトコル（ＡＲＰ）、マルチキャストドメインネームサービス（ｍＤＮＳ）およびシンプルサービスディスカバリプロトコル（ＳＳＤＰ）のうちの少なくとも１つを使用することによって、要求された識別子からデバイスのローカルネットワークアドレスを決定する。
【００６１】
いくつかの実施形態では、第３のデバイスからの第１のデバイスへの接続は、トランスポートレベルセキュリティプロトコル（ＴＬＳ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ウェブリアルタイム通信（ＷｅｂＲＴＣ）プロトコルおよびＩＣＥ（Interactive Connectivity Establishment、インタラクティブ接続確立）フレームワークを使用するプロトコルのグループのうちのプロトコルを使用して確立される。
【００６２】
いくつかの実施形態では、第２のグループの少なくとも１つのデバイスは、第１のデバイスとの接続を確立するための第３のデバイスの適格性を検証するようにプログラムされ、第２のグループ内の少なくとも１つのデバイスは、第１のデバイスとの接続を確立するための第３のデバイスの適格性が検証された後でのみ、第１の識別子を第１のデバイスに送信する。
【００６３】
いくつかの例では、１つまたは複数の既に許可された接続をブロックするための少なくとも１つの所定の条件は、それらが許可されてから開かれた接続の数、それらのうちの１つまたは複数が閉じられた後に残っている許可された接続の数、および１つまたは複数の接続が許可されてからの時間間隔が所定の閾値を超えこと、のグループに基づいている。別の例では、１つまたは複数の既に許可された接続をブロックするための少なくとも１つの所定の条件は、許可された接続によって使用されるものとは異なるネットワークアドレスからの１つまたは複数の接続を第１のデバイスがブロックすることである。
【００６４】
いくつかの実施形態では、第２のグループからのデバイスへの接続を開始した後だが、第１の識別子を受信する前に、第１のデバイスは、トランスポートレイヤセキュリティ（ＴＬＳ）プロトコルを使用して第２のデバイスを認証する。記載されたシステムの一例では、１つまたは複数の規則を変更することは、第１のデバイス上のファイアウォール規則を変更することを含む。
【００６５】
別の実施形態では、コンピュータデバイス間の接続ルートを管理するシステムは、コンピュータネットワークに接続された第１のデバイスを含み、第１のデバイスは、コンピュータネットワークに接続された１つまたは複数のデバイスへの接続を開始し、コンピュータネットワークに接続された１つまたは複数のデバイスによって開始された接続を受け入れるようにプログラムされる。システムはさらに、コンピュータネットワークに接続された第２のグループの１つまたは複数のデバイスを含み、第２のグループのデバイスはそれぞれが、（ａ）第１のデバイスによって開始された少なくとも１つの接続を受け入れ、（ｂ）第１のデバイスによって開かれた接続を介して、別のデバイスから第１のデバイスに少なくとも１つの接続要求を転送し、（ｃ）第１のデバイスとのダイレクト接続を確立するために使用できる第１のデバイスの識別子を別のデバイスに提供し、第２のグループをバイパスするようにプログラムされる。
【００６６】
第２のグループのデバイスは、（ａ）コンピュータネットワークに接続された第３のデバイスによって開始された接続を受け入れ、（ｂ）第３のデバイスが第１のデバイスとのダイレクト接続を確立することが許可されるかどうかを判定し、許可される場合に、第１のデバイスの識別子を第３のデバイスに提供することを含む動作を実行するようにプログラムされ得る。
【００６７】
いくつかの例では、第３のデバイスは、第１のデバイスとのダイレクト接続を確立することが許可されず、第１のデバイスへのその接続は、第１のデバイスによって開かれた第２のグループへの接続を介して転送される。一例では、第３のデバイスが第１のデバイスとダイレクト接続を確立することを許可されるかどうかを判定することは、第３のデバイスに認証証明書を提供するように要求を送信し、および応答で受信された証明書を評価すること、を含む。
【００６８】
一実施形態では、第３のデバイスからの第２のグループのデバイスへの接続の１つまたは複数のパラメータに応じて、第２のグループのデバイスは、第３のデバイスが第１のデバイスへのダイレクト接続を許可されるかどうかを評価するか、または、そのような評価を行うことなく第１のデバイスによって開かれた接続を介して第１のデバイスに第３のデバイスからの接続要求を転送するかのいずれかを実行する。
【００６９】
いくつかの例では、第２のグループのデバイスは、第３のデバイスが第１のデバイスに接続することが許可されるかどうかを評価し、この評価の結果は、第１のデバイスによって開かれた接続を通じて常に送信されるべき接続要求か、または、第１のデバイスに直接送信されることが許可されてもよい接続要求かの接続要求によって異なる。
【００７０】
例えば、第３のデバイスからの接続要求は、異なるリソースロケータを使用して、第１のデバイスによって開かれた接続を通過すべき要求を識別してもよく、または第１のデバイスにダイレクト接続することを許可されてもよい。
【００７１】
いくつかの実施形態では、第１のデバイスによって開かれた接続を介して常に転送されるべき第３のデバイスからの第２のグループへの接続要求は、第１のデバイスとのダイレクト接続を確立することが許可され得る要求とは異なるネットワークアドレスに送信される。
【００７２】
いくつかの実施形態では、第１のデバイスによって開かれる接続を介して常に転送される第３のデバイスからの第２のグループへの接続要求は、ＨＴＴＰプロトコルを使用し、一方、第１のデバイスとのダイレクト接続を確立することが許可され得る要求は、Interactive Connectivity Establishment（ＩＣＥ：インタラクティブ接続確立）フレームワークを使用する。
【００７３】
いくつかの実施形態では、第２のグループのデバイスは、ドメインネームサーバ（ＤＮＳ）を含み、このサーバは第３のデバイスからドメイン名を解決する要求を受信し、および、第３のデバイスが第１のデバイスとのダイレクト接続を確立することが許可される場合に、第１のデバイスのＩＰアドレスを返し、さもなければ、第１のデバイスのＩＰを返すことをやめる。
【００７４】
いくつかの実施形態では、第２のグループのデバイスは、逆接続をサポートすることができる仮想プライベートネットワーク（ＶＰＮ）サーバを含み、また、第１のデバイスによって確立された接続はＶＰＮトンネルである。
【００７５】
第１のデバイスがローカルネットワーク内の１つまたは複数のデバイスに接続されるいくつかの実施形態では、第１のデバイスは、ローカルネットワークの外部の１つの他のデバイスからデータを受信し、そのデータをローカルネットワーク内のデバイスに転送し、その後、ローカルネットワークの外部にあるデバイスに応答を転送する。例えば、第１のデバイスは、ゲートウェイ、ルータ、ブリッジ、スイッチ、プロキシおよびファイアウォールのうちの１つであり得る。
【００７６】
図１は、本発明の一実施形態に従って管理されるローカルデバイス１３０とリモートコンピュータ１１０との間の接続を有する例示的なネットワーク環境を示す。この実施形態では、外部ネットワークアドレスへの接続を開始することと、および外部ネットワークアドレスから開始された接続に応答することの両方ができる「モノのインターネット（Internet of Things）」デバイス１３０（例えば、電源スイッチ、セキュリティカメラ、光源など）は、ローカルネットワーク上のデバイスとワイドエリアネットワーク（ＷＡＮ）１３４内のコンピュータ１１０との間でトラフィックをルーティングするルータ１２０を介してローカルネットワーク１３２に接続される。ルータ１２０は、ローカルネットワーク１３２上のデバイス１３０から一組の外部ＩＰアドレスへのアウトバウンド接続をブロックすることができてよく、一方で、同じ組の外部ＩＰアドレスからの着信接続を許可する。このようなブロックは、例えば、ルータ１２０上のファイアウォール規則を変更することによって、またはローカルネットワーク１３２から出て行くパケットをブロックするルータ１２０に追加される特別なモジュールを備えることによって実装することができる。
【００７７】
図１は、デバイス１３０からのすべてのアウトバウンド接続１３４がブロックされ、一方で、すべてのインバウンド接続１３６が受け入れられ、デバイス１３０に転送される場合を例示する。図示された例では、すべての外部ネットワークアドレスは、デバイス１３０からの接続を受信することがブロックされるが、リモートコンピュータ１１０は、同じ外部アドレスから自身の接続を開始することが許可される。
【００７８】
これは、ルータ１２０を介してデバイス１３０と自機との接続をどのように開始するかを知らない任意のサーバにローカルネットワーク１３２から得られた何らかのデータを通知する能力を効果的に無効にする。たとえ、デバイス１３０が信頼できなくなったとしても、この変更は、デバイス１３０が機密データを漏洩したり、ボットネットの一部になることを防ぐ。
【００７９】
いくつかの実施形態では、ルータ１２０は、ＩＰＳＥＣ（インターネットプロトコルセキュリティ）ＶＰＮ（仮想プライベートネットワーク）などの仮想プライベートネットワーク（ＶＰＮ）サーバと組み合わされてもよく、また、ＷＡＮ１３４内のデバイス１１０のうちの１つは、ＶＰＮクライアントを使用して、デバイス１３０への自機の接続を開始してよい。この例では、デバイス１１０のＶＰＮクライアントは、接続を確立する前に、ルータ１２０またはデバイス１３０によって、その認証情報（ログイン）の提示を要求され得、認証されたデバイスだけがローカルネットワーク１３２内のデバイス１３０に接続できることを保証する。
【００８０】
ネットワーク１３２からのすべての発信接続をブロックすることによって、いくつかのデバイスが自動更新を受信すること、またはアラートを発行することを防ぎ得る。図２Ａは、セキュリティカメラ２２０および電源スイッチ２３０などの複数のローカルデバイスと、リモートコンピュータ２０５および１１０との間の接続を有するネットワーク環境を例示する。
【００８１】
この実施形態では、ルータ２１０は、電源スイッチ２３０からのすべてのアウトバウンド接続が、アウトバウンド接続によって使用される外部ＩＰアドレスからのインバウンド接続によって先行されない場合、電源スイッチ２３０からのすべてのアウトバウンド接続をブロックする。図示される実施形態では、デバイス１１０のうちの１つは、インバウンド接続（Ｃ４）をルータ２１０に送信し、接続は、電源スイッチ２３０に渡される。ルータ２１０は、接続Ｃ４のソースＩＰアドレスを記憶し、電源スイッチ２３０がそのソースＩＰアドレスへのアウトバウンド接続要求（Ｃ５）を発行した後、ルータ２１０はこの要求を通過させる。
【００８２】
いくつかの例では、外部デバイス１１０のソースＩＰアドレスからのインバウンド要求がルータ２１０の１つまたは複数の特定の識別子に対して発行された場合にのみ、外部デバイス１１０のソースＩＰアドレスが許可されたアウトバウンドＩＰアドレスのリストに追加される。例えば、インバウンド要求がルータ２１０上の特定のポートに発行されるか、または特定のＵＲＬパターンを含む場合にのみ、ソースＩＰアドレスがリストに追加される。いくつかの実施形態では、このようなポートは一度しか使用することができない：同じポートに対するその後の要求はすべて、不正なアクセスを防ぐために、許可されたリストにそれ以上のＩＰアドレスを追加することはない。
【００８３】
図示される実施形態では、ルータ２１０は、カメラ２２０からの選択されたアウトバウンド接続（Ｃ１）が、同じＩＰアドレスからのインバウンド接続によって先行されない場合でも、カメラ２２０からの選択されたアウトバウンド接続（Ｃ１）がサーバ２０５に到達することを許可する；カメラ２２０からの全ての他のアウトバウンド接続はブロックされる（Ｃ２）。例えば、サーバ２０５は、動きが検出されたときにセキュリティカメラが警報を送信することを許可する電子メールサーバとすることができる。
【００８４】
ルータ２１０は、例えばドメインまたはＩＰアドレスによって許可された接続を識別することができる。許可されたアウトバウンド接続のホワイトリストがドメインを含む場合、ルータはアウトバウンド接続をブロックするかどうかを決定する前に、逆引きＤＮＳルックアップを実行してそのＩＰアドレスに対応するドメインを取得し得る。
【００８５】
いくつかの実装では、ルータ２１０は、許可すべきもの（ホワイトリスト）を格納する代わりに、ブロックすべきアウトバウンド接続識別子（ドメイン、ＩＰアドレス、ポート、ＵＲＬ）のリスト（ブラックリスト）を格納し得る：例えば、ルータ２１０は、悪意のあるサーバの既知のドメインおよびＩＰアドレスのリストを格納し得る。しかしながら、この情報は不完全であり得、頻繁な更新が要求されることがある。好ましい実装は、例えば、対応するＩｏＴデバイスのベンダーサイトのドメインまたはＩＰアドレスなど、許可される識別子の短いリストを格納し得る。
【００８６】
図２Ａの実施形態では、デバイス１１０は、ＶＰＮクライアントをインストールすることなく、ローカルネットワーク内のデバイス２２０，２３０との接続を確立することが許可される。着信接続（Ｃ３、Ｃ４）は、ルータ２１０からプロキシサーバ２１５に渡される。このプロキシサーバは、外部ＩＰアドレスからの接続要求を受け入れ、宛先ローカルデバイスを決定し、そのローカルデバイスとの接続を確立し、ローカルデバイスとＷＡＮ１３４上のデバイスとの間でデータを渡す。
【００８７】
一例では、クライアントコンピュータ１１０は、既知のドメインに対してＨＴＴＰまたはＨＴＴＰＳ要求を発行するために通常のウェブブラウザを使用してよい。そのようなドメインは、例えば、ルータ２１０のＩＰアドレスへと解決してもよく、一方で、ローカルネットワーク１３２内の意図された受信デバイス２２０，２３０を指定するサブドメインを含んでもよい。
【００８８】
この例では、プロキシ２１５は、ホストヘッダ（ＨＴＴＰ）またはＳＮＩヘッダ（ＨＴＴＰＳ）からサブドメインを抽出し、この識別子を使用して、ローカルネットワーク１３２上の受信デバイス２２０，２３０のＩＰアドレスを見つける。これを行うために、マルチキャストドメインネームサービス（ｍＤＮＳ）またはシンプルサービスディスカバリプロトコル（ＳＳＤＰ）のようなサービスディスカバリプロトコルを使用して、ローカルネットワーク１３２上のデバイスのディスクリプション（説明：ｄｅｓｃｒｉｐｔｉｏｎ）を取得し、要求された識別子に関連付けられた文字列と一致するディスクリプションを、そのＭＡＣアドレスを取得するための特定のデバイスのディスクリプションで見つけて、その後、アドレス解決プロトコル（ＡＲＰ）テーブルの情報を使用して、要求の意図された受け手のＩＰアドレスを取得することが行われ得る。他の既知の解決策およびプロトコルを、ローカルネットワーク１３２内のデバイス２２０，２３０のＩＰアドレスを発見するために、使用することができる。図示される実施形態では、ローカルデバイスへの接続要求が外部ＩＰアドレスから受信された後に、そのような発見が起こる。
【００８９】
いくつかの実装では、プロキシ２１５は、ローカルネットワーク１３２とＷＡＮ１３４との間のデータ交換を制御することを担当する別のモジュール（例えば、ゲートウェイ、アクセスポイント、ブリッジ、またはファイアウォールなど）またはルータ２１０と組み合わせられてよい。他の実装では、プロキシ２１５は、ルータ２１０からのすべての着信接続を受信し、その後、ローカルネットワーク１３２内の意図された受け手にそれらを転送するために使用されるスタンドアローンデバイスとして配備することができる。
【００９０】
図２Ｂは、本発明の一実施形態に係るローカルデバイスからのアウトバウンド接続を管理するための方法の処理フロー図である。外部デバイス１１０からのインバウンド要求を受信する前に、ＩｏＴベンダーが自身のサーバへのアウトバウンド接続を許可できるように、ルータ２１０は、自機のＩＰおよびポート（ＩＰ＿Ｂ：Ｐｏｒｔ＿１）をアナウンスする。そのようなアナウンスは、例えば、ルータのＩＰおよびポートを公開する前にＩｏＴベンダーを認証し得る安全な第三者認証サービスを介して送信することができる。
【００９１】
ＩｏＴデバイス（例えば、２２０，２３０）は、その後、そのソースＩＰ＿Ａから要求を発行する。ルータ２１０は、この要求を受信し（ステップ２４０）、宛先ポートが許可されたポートのリストと一致するかどうか（ステップ２５０）、および、これがそのポートへの最初のアクセスであるかどうか（ステップ２６０）を検査する。これらの２つの条件が満たされる場合にのみ、許可されたアウトバウンドＩＰのリストに、ＩＰ＿Ａがルータ２１０によって格納される（ステップ２７０）。
【００９２】
図３は、本発明の実施形態に従って管理されるＶＰＮトンネルを介して、ローカルデバイス１３０と認証されたリモートコンピュータ３１０との間の接続を有するネットワーク環境において、ルータ３５０のＩＰアドレスが外部デバイス３１０にさらされることを防ぐシステムを例示する。
【００９３】
この実施形態では、ルータ３５０はＶＰＮクライアントを含み、これを使用してＶＰＮサーバ３４０との接続３５２を確立する。ＶＰＮサーバ３４０とＶＰＮクライアントの両方は、例えば、事前共有鍵または秘密鍵／公開鍵交換を使用して互いに認証して、双方のパーティが信頼できることを確認してよい。この実装では、ＶＰＮサーバ３４０は、ルータ３５０によって開かれたトンネル３５２を介して、逆接続を使用してＷＡＮ１３４内の外部ネットワークアドレスからルータ３５０に要求を渡すことができる。図示された実施形態では、クライアント３１０，３２０は最初に、認証されたクライアント（例えば、有効なユーザ名とパスワードを提示するもの）のみがルータ３５０に要求を発行することを許可されることを請け負う認証装置３３０に接続する。図示された実施形態では、認証装置３３０は、無効なクライアントをブロックしながら、有効なクライアントからＶＰＮサーバ３４０に接続要求を渡すプロキシと組み合わせられる。他の実施形態では、認証されたクライアントは、ＶＰＮサーバ３４０に直接的に要求を発行すること、または、認証を完全にバイパスしてＶＰＮサーバ３４０に接続することを許可され得る。
【００９４】
図示された実施形態では、ルータ３５０は、そのルータによってＶＰＮサーバ３４０などの中継サーバに開かれた接続３５２を介して着信接続３５４が受信された場合にのみ、それらの着信接続３５４を受け入れる。ルータ３５０は、ＶＰＮトンネルをバイパスするあらゆる着信接続３５６をブロックし、悪用やその他の攻撃の可能性を防ぐ。この実装では、ローカルデバイス１３０に接続するクライアント３１０，３２０は、ルータ３５０またはデバイス１３０或いは他の任意の構成要素から、ルータ３５０の実際のＩＰアドレスを受信せず、プロキシ３３０またはＶＰＮサーバ３４０にのみ接続することができる。これは、分散型サービス拒否（ＤＤｏＳ）攻撃などの外部攻撃からルータ３５０を隠すさらなるセキュリティを提供する。
【００９５】
別の実装では、ルータ３５０は、ＶＰＮサーバ３４０の代わりに、外部ＨＴＴＰまたはＨＴＴＰＳプロキシサーバとの接続３５２を確立し得る。このサーバは、各外部クライアント３１０，３２０のためのルータ３５０への新たな接続を確立する必要なく、外部クライアント３１０，３２０からルータ３５０へデータを渡すために、確立された接続３５２を使用することができるべきである。
【００９６】
また、図４Ａおよび図４Ｂは、本発明の一実施形態による、ローカルネットワーク１３２内のデバイス１３０との遠隔通信を保護する方法を例示する。特に図４Ａを参照すると、ローカルネットワーク１３２とＷＡＮ１３４との間のデータ交換を制御するデバイス（以下、「制御デバイス」、例えばルータ３５０）は、ローカルネットワーク上のｄｅｖ＿１（例えば、デバイス１３０のうちの１つ）からの要求を受信して、外部ＩＰアドレスＩＰ＿Ａとのアウトバウンド接続を確立する（ステップ４１０）。次に、制御デバイスは、例えば、ホワイトリスト、ブラックリストまたは他の事前に構成された規則に従ってなど、ｄｅｖ＿１がアウトバウンド要求を開始することを許可されるかどうかを検査し（ステップ４２０）、そうでなければ、アウトバウンド要求をブロックする。例えば、十分なセキュリティを維持するために、あるデバイスのベンダーが信頼できない場合にとりわけ、そのデバイスは、アウトバウンド接続の開始が決して許可されなくてよい。いくつかの実装では、このステップは省略することができる。この方法は、制御デバイスによって、ｄｅｖ＿１が少なくともいくつかのアウトバウンド接続を開始し得るかどうかを評価することをさらに含み得る。例えば、アウトバウンド接続は、ホワイトリスト内のＩＰアドレスへの接続を試み得る（ステップ４３０）。そうでない場合、そのようなアウトバウンド接続要求はブロックされることになる。そうである場合、この要求は宛先ＩＰに送信される（ステップ４４０）。他の実装では、ホワイトリストの代わりにブラックリストを使用することができ、または、ＩＰアドレスの代わりに別の識別子（例えば、ドメイン、ポートまたはプロトコル、またはそのような識別子の組み合わせ）を使用することができる。
【００９７】
図４Ｂを参照すると、制御デバイスは、ローカルネットワーク内のデバイスｄｅｖ＿１との接続を確立するための要求を外部ＩＰアドレスＩＰ＿Ａから受信する（ステップ４５０）。ｄｅｖ＿１のローカルＩＰアドレスを決定した後（ステップ４６０）、ｄｅｖ＿１に要求が送信され（ステップ４７０）、応答がＩＰ＿Ａに転送して戻される。本発明によれば、そのような着信要求が、同じローカルデバイスからのアウトバウンド接続要求を受信するのがブロックされた同じ範囲のＩＰアドレスから来た場合であっても、そのような着信要求を許可することができる（例えば、図４Ａの方法に従って）。例えば、ローカルデバイス１３０は、ローカルネットワーク１３２上のイベントに関するリアルタイムレポートをベンダーのサーバに送ることを許可されないが、それが適切に機能することを確かめるために同じサーバからの定期的なステータス要求を依然として受信し得る。他の例では、すべてのルーティング可能なＩＰ範囲は、着信接続を開始することが許可される一方で、ローカルネットワーク１３２からのアウトバウンド接続を受信することをブロックされてもよい。
【００９８】
図５は、本発明の一実施形態に係る、ＶＰＮトンネル３５２を介してローカルネットワーク１３２内のデバイス１３０との遠隔通信を保護する方法を例示する。この場合、制御デバイスは、ＶＰＮサーバへの接続を開き（ステップ５１０）、ローカルネットワーク１３２上のｄｅｖ＿１への着信接続要求を受信し（ステップ５２０）、この要求が同じＶＰＮトンネル３５２を介して来たかどうかを検査する（ステップ５３０）。要求は、そのトンネルを介して来た場合にのみ、ｄｅｖ＿１に渡される（ステップ５４０）。それ以外の場合、要求はブロックされる。
【００９９】
いくつかの実施形態では、ローカルデバイス１３０への着信接続のみがトンネル３５２を介して許可され、ローカルデバイス１３０からの発信接続は、それらがＶＰＮサーバ３４０のＩＰアドレスに送信されるとしてもブロックされる。
【０１００】
一つの実装では、デバイス１３０からのアウトバウンド接続は、これらの接続の初期パケット（initial packets）がいずれも、意図された受信デバイス１３０に到達することを許可されることなく、これらの接続の初期パケットがルータ３５０を介して送信される場合に、ルータ３５０によってブロックされる。別の実装では、ルータ３５０は、アウトバウンド接続要求が意図された外部の受け手３１０，３２０に到達すること、および、その後、外部の受け手３１０，３２０からの応答パケットまたはいくつかのペイロードパケットをブロックすることを可能にし得る。他の実装では、ルータ３５０は、変更が、ローカルデバイス１３０とローカルネットワーク１３２の外部のデバイス３１０，３２０との間の意図されたデータ交換を防ぐのに十分である限り、それらをブロックする代わりに、交換されたパケットを変更し得る。
【０１０１】
本発明の別の態様では、ローカルネットワーク１３２内の１つまたは複数のデバイス１３０は、ローカルネットワーク１３２の外部の１つまたは複数のコンピュータ３１０，３２０からの接続要求を受信することをルータ３５０によって許可されないが、外部ＩＰアドレスからの要求を受信することを許可された同じネットワーク１３２上の別のデバイス１３０によって開始されたコマンドに応答することをルータ３５０によって許可される。例えば、電源スイッチ２３０などのＩｏＴデバイス１３０は、ＩｏＴハブまたはブリッジなどのローカルネットワーク１３２上の別のデバイス１３０からコマンドを受信することが許可されてもよいが、ＷＡＮ１３４における外部ＩＰアドレスからのダイレクト要求を受信することは許可されなくてよい。一つの実装では、ローカルネットワーク１３２内の１つまたは複数のデバイス１３０は、ローカルネットワーク１３２の内部または外部の他のデバイス１３０，１１０からの限られたセットのコマンド（例えば、ユーザインタフェース（ＵＩ）によって定義されるコマンド）のみを受信し得る。例えば、電源スイッチ２３０またはＩｏＴブリッジは、オン／オフスイッチのみを含むＵＩを提示する。従って、外部デバイス１１０は、この動作を実行するのみであってよいが、いかなる他のコマンド（例えば、事前の対話の履歴を求める）を送信することも許可されない。
【０１０２】
本発明の別の態様では、システムは、ローカルネットワーク１３２内のデバイス１３０間の通信の管理を提供する。このシステムは、例えば、図１から図３のルータ１２０，２１０，３５０または何らかの他のデバイスなどのローカルネットワーク１３２内のデバイス１３０間のトラフィックを制御する手段を有する第１のデバイスを含む。デバイス１３０は、同じネットワーク１３２上の他のデバイス１３０とのローカル接続を開始することができ、および、同じネットワーク１３２上の他のデバイス１３０からのローカル接続に応答することができる。
【０１０３】
第１のデバイスは、ローカルネットワーク１３２上の１つまたは複数のデバイス１１０によって開始されたローカル接続をブロックするようにさらにプログラムされる一方で、これらのデバイス１３０の１つまたは複数がローカルネットワーク１３２上の他のデバイス１３０によって開始されたローカル接続に応答することを許可する。
【０１０４】
いくつかの実施形態では、第２のデバイスは、外部ＩＰアドレスからの少なくとも１つのインバウンド接続を受け入れるようにプログラムされ、外部ＩＰアドレスからの接続は、第１のデバイスへの参照を含み、第２のデバイスは、第１のデバイスからのローカルネットワーク１３２内の第１のアドレスへの少なくとも１つ第１のアウトバウンド接続に対して、その少なくとも１つ第１のアウトバウンド接続が、第１のデバイスへの参照を含むインバウンド接続によって先行されなかった場合に、その少なくとも１つの第１のアウトバウンド接続をブロックするようにさらにプログラムされる。
【０１０５】
いくつかの例では、第２のデバイスは、ローカルネットワーク内の第２のアドレスへの第１のデバイスからの少なくとも１つの第２のアウトバウンド接続に対して、その少なくとも１つの第２のアウトバウンド接続が、第２のアドレスを含む第１のデバイスへのインバウンド接続によりが先行されたか否かに関わらず、その少なくとも１つの第２のアウトバウンド接続を許可するようにさらにプログラムされる。
【０１０６】
いくつかの実施形態では、第１のデバイスは、第１のグループからの第２のグループへの接続をブロックするが、第２のグループから第１のグループへのローカル接続を許可する、異なる規則をローカルネットワーク１３２上の第１および第２のグループのデバイス１３０に適用する。いくつかの実施形態では、１つまたは複数のデバイス１３０からの少なくとも１つのデバイスへのローカル接続は、第１のデバイスによって許可されるが、同じ１つまたは複数のデバイス１３０からの少なくとも１つの他のデバイス１３０へのローカル接続は、第１のデバイスによってブロックされる。
【０１０７】
第１のデバイスは、例えば、ゲートウェイ、ルータ、ブリッジ、スイッチ、プロキシまたはファイアウォールとすることができる。いくつかの実施形態では、第１のデバイスは、アドレス解決プロトコル（ＡＲＰ）、マルチキャストドメインネームサービス（ｍＤＮＳ）、およびシンプルサービスディスカバリプロトコル（ＳＳＤＰ）のうちの少なくとも１つから得られた情報に基づいてローカルネットワーク１３２上の他のデバイス１３０を識別する。ブロックされるべきそれらの接続を必要とするローカルネットワーク１３２上の１つまたは複数のデバイス１３０は、それらの名前またはディスクリプションにより第１のデバイスによって識別され得る。一例では、他のデバイス１３０への接続を開始することをブロックされるべきである、これらのデバイス１３０の少なくとも１つは、第１のデバイスのユーザによって指定される。
【０１０８】
第１のデバイスは、例えば、接続を開始するデバイス１３０からの少なくとも１つのデータパケットをブロックすることによって、１つまたは複数のローカル接続をブロックし得る。別の例では、第１のデバイスは、他のデバイス１３０によって開始された接続に応答するデバイス１３０からの少なくとも１つのデータパケットをブロックすることにより、１つまたは複数のローカル接続をブロックする。一実施形態では、第１のデバイスは、ローカル接続を開始するデバイス１３０を、その同じデバイス１３０によって先に送信または受信されたパケットに関する情報を分析することによって（例えば、第１のデバイス１３０が、少なくとも所定の時間間隔の間に第２のデバイス１３０からパケットを先に受信することなく第２のデバイス１３０にパケットを送信していたことを検出することによってなど）識別する。
【０１０９】
また、図６Ａおよび図６Ｂは、本発明の一実施形態に従う、ローカルネットワーク１３２内のデバイス１３０間の通信を管理する方法を例示する。図６Ａを参照すると、ローカルネットワーク上の他のデバイス間のデータ交換を制御するデバイス（以下、「制御デバイス」、例えばルータまたはゲートウェイ１２０，２１０，３５０など）は、ローカルネットワーク１３２内のデバイス１３０（ｄｅｖ＿１）からの要求を受信し、同じローカルネットワーク１３２内の別のデバイス１３０（ｄｅｖ＿２）に接続する（ステップ６１０）。ｄｅｖ＿２への接続要求を直ちに送信する代わりに、制御デバイスは、最初に、少なくともいくつかの発信接続を開始するための１つまたは複数の予め指定された規則に従ってｄｅｖ＿１が許可されるか否かを検査し（ステップ６２０）、許可されなければ、その発信接続をブロックする。予め指定された規則に従って、少なくともいくつかの接続を開始することをｄｅｖ＿１が許可される場合、ステップ６３０は、ｄｅｖ＿２への接続を開始することが許可されるかどうかを検査することを含み、その接続が予め指定された規則によって許可される場合にのみ、ｄｅｖ＿２に要求を送る（ステップ６４０）。
【０１１０】
一つの実装では、制御デバイスは、ローカルネットワーク１２３内の第１のデバイス１３０が第２のデバイス１３０への接続を開始することをブロックするが、第２のデバイス１３０が第１のデバイス１３０に接続を開始することを許可する。これは、同じローカルネットワーク上のデバイスが両方向で互いに通信をブロックされる「クライアントアイソレーション」として知られる従来技術の解決策と、本発明とを区別する。
【０１１１】
本明細書で開示されるシステムおよび方法は、ローカルネットワーク１３２３上のいくつかのデバイス１３０（例えば、電源スイッチなどの単機能ＩｏＴデバイス）をリスンオンリーモードに制限する手段を提供する一方で、同じネットワーク１３２上の他のデバイス（例えば、携帯電話機またはラップトップ）が他のデバイスにコマンドを送信することを許可する。多くのＩｏＴデバイス（例えば、電源スイッチ、光源、サーモスタット）は、同じネットワーク上の他のデバイスに接続することなく機能するように設計されており、障害が起きた場合にのみ同じネットワーク１３２上の他のデバイスにアクセスしようと試み得る。本明細書で開示される解決策は、信頼できないデバイスの存在下でローカルネットワーク内のセキュリティを向上させる。
【０１１２】
いくつかの実施形態では、どのデバイス１３０が他のデバイス１３０への発信接続を開始することを許可されるかを指定する規則は、少なくとも部分的なデバイスのディスクリプションまたは名前に関連して制御デバイスに最初に提供される。制御デバイスは、例えば、接続要求を発行するデバイス１３０のＭＡＣアドレスを決定するためにアドレス解決プロトコル（ＡＲＰテーブル）を使用し、次にマルチキャストドメインネームサービス（ｍＤＮＳ）またはシンプルサービスディスカバリプロトコル（ＳＳＤＰ）を使用して、そのＭＡＣアドレスから、そのデバイスのディスクリプションまたは名前を取得する。他の実施形態では、ローカルネットワーク１３２上のデバイス１３０は、そのＭＡＣまたはＩＰアドレスによって、或いは他の規則によって明確に識別され得る。例えば、ユーザは、単一のデバイス１３０（例えば、携帯電話機）のみが、同じネットワーク１３２，１３０上の他のデバイス１３０に接続を開始することを許可されることを指定し得るが、一方で、他のデバイスは、他のデバイス１３０によって開始された接続にのみ応答すべきである。
【０１１３】
図６Ｂは、別のデバイスへの接続要求を開始したローカルネットワーク１３２上のデバイス１３０を検出する例示的な方法を示す。制御デバイスは、ローカルネットワーク１３２内のデバイス１３０であるｄｅｖ＿１からｄｅｖ＿２へのパケットを受信し（ステップ６５０）、その後、ｄｅｖ＿２からｄｅｖ＿１へのパケットが、例えば５秒などの所定の時間間隔内に最近受信されたかどうかを検査する（ステップ６６０）。そのようなパケットが受信されなかった場合、ｄｅｖ＿１は要求の開始装置とみなされ、予め指定された規則に従って要求を開始することが許可されない場合、ｄｅｖ＿１はブロックされ得る；さもなければ、ｄｅｖ＿１は制御デバイスによってｄｅｖ＿２からの要求に対する応答装置であると見なされ、制御デバイスはパケットをｄｅｖ＿２に送信する（ステップ６７０）。
【０１１４】
図７は、本明細書に開示された方法に従って管理される、ローカルネットワーク１３２内の２つのデバイス７２０，７３０の間の接続を有するネットワーク環境を例示する。ルータ７１０は、ワークステーション７２０および電源スイッチ７３０などのローカルネットワーク上のデバイス間のすべてのトラフィックを制御する。図示される実施形態では、ワークステーション７２０のみが、同じローカルネットワーク１３２上の他のデバイスへの接続要求７３２を開始することが許可されるが、一方で、電源スイッチ７３０は、着信接続を受信することのみが許可される。電源スイッチ７３０からの発信接続７３４は、ルータ７１０によってブロックされる。
【０１１５】
図８は、本発明の一実施形態に従って管理される、ローカルネットワーク１３２内の３つのデバイス１３０間の接続を有するネットワーク環境を例示する。この実装では、ルータ８１０は、同じローカルネットワーク上の異なるデバイス１３０を制御するために、異なる規則のセットを使用する：ワークステーション８２０は、ローカルネットワーク１３２内の任意の他のデバイス１３０への接続８４２を開始することが許可される：電源スイッチ８３０は、他のデバイス１３０へのいかなる接続８４４を開始することも許可されない；ＩｏＴハブ８４０は、少なくとも１つの既存の条件が満たされた後に電源スイッチ８３０への接続８４６を開始することを許可されるが、ワークステーション８２０への接続８４８を開始することは決して許可されない。これは、信頼の階層を反映する：ワークステーション８２０（または、例えば、携帯電話などの直接的なユーザの制御下にある別のコンピュータ）は、任意の他のデバイス１３０にコマンドを送信することを許可される；ＩｏＴハブ８４０は、許可されたＩｏＴデバイス１３０のサブセットを制御することのみが許可され、一方、エンドポイントＩｏＴデバイス１３０（例えば、電源スイッチ８３０）は、コマンドに応答することのみが許可される。
【０１１６】
図示される実施形態では、ローカルネットワーク１３２内の接続に対するこれらの規則は、ＷＡＮ１３２内のコンピュータ１１０とともに開始された接続を制御する規則と組み合わせられる。ワークステーション８２０は、ローカルネットワークの内部または外部の任意のコンピュータへの接続を開始することを許可される；電源スイッチ８３０は、ローカルネットワークの内部であろうと、または外部であろうと、いかなるコンピュータへの接続の開始も許可されない。
【０１１７】
この例では、ＩｏＴハブ８４０は、ローカルネットワークの外部の少なくとも１つのコンピュータからのインバウンド接続８５０を受信することを許可される。さらに、ＩｏＴデバイス８４０への参照を含むローカルネットワーク１３２の外部のコンピュータからの接続を受信した後、ルータ８１０は、ＩｏＴデバイス８４０がローカルネットワーク上の別のデバイス（例えば電源スイッチ８３０）にアウトバウンド接続８４６を発行することを許可する。いくつかの実施形態では、ローカルネットワーク１３２の外部のコンピュータ１１０からの要求は、ローカルネットワーク上の他のデバイス（例えば、電源スイッチ８３０）からの接続の受け手への参照を含み得、ローカルネットワーク上の他のデバイスがアウトバウンド要求を電源スイッチ８３０に発行することを許可する。
【０１１８】
図示された実施形態の一つの実装では、ＩｏＴハブ８４０は、ＩｏＴベンダーのサーバから許可を受信するまで、同じローカルネットワーク上の他のデバイスとの接続を開始することを許可されない。この許可を与えるために、ＩｏＴベンダーは、ルータ８１０のネットワークアドレスを取得し、次に、デバイス８４０からのローカルネットワーク上のアウトバウンド接続を許可するためにルータを認証する要求を発行する。ＩｏＴベンダーは、デバイス８４０の登録中に、または第三者サービスによって認証された後に、ルータのネットワークアドレスを取得し得る。認証されたデバイスだけがローカルネットワーク１３２上の他のデバイスとの接続を許可されることを確実にするために、ＩｏＴベンダーは、デバイス８４０を認証するために使用すべき追加の情報をルータ８１０に提供し得る：例えば、デバイス８４０がＩｏＴベンダーによってインストールされた秘密鍵を所持していることを検証するためにルータ８１０が使用することができる公開暗号鍵。
【０１１９】
図７の実装では、ルータ７１０は、意図された受け手に接続プロセスの開始を許可することなく、デバイス７３０からのすべての発信接続を、それらを受信した後に即座にブロックする（デバイス７３０から要求７３４がルータ７１０に入る場所を説明する図７のＸを参照）。
【０１２０】
いくつかの実施形態では、ルータ８１０は、接続要求が意図された受け手に到達することを許可し得、その後、応答パケットまたはいくつかのペイロードパケットをブロックし得る。図８は、意図された接続要求８４４が、ルータ８１０が意図された接続要求８４４をブロックされていないままにする場所にブロッキング符号（Ｘを参照）を表示することによって、このプロセスを例示する。他の実装では、ルータ８１０は、２つのデバイスが意図されたデータ交換を実際に実行することを防ぐのに変更が十分である限り、それらをブロックする代わりに、交換されたパケットを変更し得る。
【０１２１】
いくつかの実施形態では、ローカルネットワーク１３２内の１つまたは複数のデバイス１３０は、その同じローカルネットワーク上の１つまたは複数の他のデバイス１３０からの接続要求の受信を、そのような要求が、コマンドの限られたセット（例えばユーザインタフェース（ＵＩ）によって提供されるもの）に属する場合にのみ許可され得る。例えば、電源スイッチ８３０などのＩｏＴデバイスは、ＩｏＴハブ８４０によって、またはルータ８１０などの別のデバイスによって表示されるＵＩと対話するユーザによって要求が開始された場合に、ＩｏＴハブ８４０からのその要求を受信することのみが許可され得る。
【０１２２】
いくつかの実施形態では、システムは、コンピュータネットワークに接続された第１のデバイスを含む。第１のデバイスは、コンピュータネットワークに接続された第１のグループの１つまたは複数のデバイスへの接続を開始し、および、第１のデバイスが利用可能な規則のセットを使用することによって、１つまたは複数のデバイスによって開始された接続を受け入れるか、または拒否するかを判定する手段を含む。第２のグループの１つまたは複数のデバイスも、コンピュータネットワークに接続され、第２のグループ内の少なくとも１つのデバイスは、第１のデバイスによって開始された１つまたは複数の接続を受け入れ、これらの接続のうちの少なくとも１つを介して第１のデバイスにデータを送信することができる。
【０１２３】
第１のデバイスは、第２のグループのデバイスへの接続を開始し、この接続を介して、第３のデバイスによって開始されることが予想される第１のデバイスへの１つまたは複数の接続の１つまたは複数の第１の識別子に関する情報を受信するようにさらにプログラムされ得る。第１のデバイスは、この情報に応じて、１つまたは複数の第１の識別子に関連付けられた１つまたは複数の接続を受け入れるために、１つまたは複数の規則を変更するようにプログラムされる。特に、第１のデバイスは、１つまたは複数の規則に基づいて、１つまたは複数の第１の識別子を有する第３のデバイスからの１つまたは複数の接続を受け入れ得る。少なくとも１つの所定の条件が満たされたことを検出すると、第１のデバイスは、１つまたは複数の第１の識別子に関連する１つまたは複数の接続をブロックするために１つまたは複数の規則を変更するようにプログラムされる。いくつかの実施形態では、第１の識別子は、ソースＩＰアドレス、ソースポート、トランスポートプロトコルおよびデータパターンのセットの一部または全部を含む、予想される接続の１つまたは複数のパラメータを含み得る。
【０１２４】
いくつかの実施形態では、第１のデバイスは、ローカルネットワーク内の１つまたは複数のデバイスに接続される。第１のデバイスは、第１の識別子に関連付けられた接続要求を受信し、次に、この要求をローカルネットワーク内のデバイスに渡すようにさらにプログラムされる。一例では、これは、外部ネットワークアドレスから開始された接続要求を受け入れるローカルネットワーク内のプロキシサーバに要求を渡すことを含み、ローカルネットワーク内のデバイスとの接続を開始し、そのデバイスに要求データを渡し、ローカルネットワーク内のデバイスから応答を受信し、その後、それを外部ネットワークアドレスに渡す。いくつかの実施形態では、プロキシサーバは、接続要求と共に提示された情報からローカルネットワーク内のデバイスの識別子を抽出し、その後、アドレス解決プロトコル（ＡＲＰ）、マルチキャストドメインネームサービス（ｍＤＮＳ）、およびシンプルサービスディスカバリプロトコル（ＳＳＤＰ）のうちの少なくとも１つを使用して、要求された識別子からデバイスのローカルネットワークアドレスを決定する。
【０１２５】
一つの実装では、第３のデバイスから第１のデバイスへの接続は、トランスポートレベルセキュリティプロトコル（ＴＬＳ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ウェブリアルタイム通信（ＷｅｂＲＴＣ）プロトコルおよびＩＣＥ（Interactive Connectivity Establishment、インタラクティブ接続確立）フレームワークを使用するプロトコルのグループのうちのプロトコルを使用して確立される。
【０１２６】
１つの他の実施形態では、第２のグループの少なくとも１つのデバイスは、第１のデバイスとの接続を確立するための第３のデバイスの適格性を検証することができ、第２のグループ内の少なくとも１つのデバイスは、第１のデバイスとの接続を確立するための第３のデバイスの適格性が検証された後でのみ、第１の識別子を第１のデバイスに送信する。
【０１２７】
いくつかの実施形態では、１つまたは複数の既に許可された接続をブロックするための少なくとも１つの所定の条件は、それらが許可されてから開かれた接続の数、それらのうちの１つまたは複数が閉じられた後に残っている許可された接続の数、および１つまたは複数の接続が許可されてからの時間間隔が所定の閾値を超えことを含む。いくつかの実施形態では、１つまたは複数の既に許可された接続をブロックするための少なくとも１つの所定の条件は、許可された接続によって使用されるものとは異なるネットワークアドレスからの１つまたは複数の接続を第１のデバイスがブロックすることを含む。
【０１２８】
一つの実装では、第２のグループからデバイスへの接続を開始した後、第１の識別子を受信する前に、第１のデバイスは、トランスポートレイヤセキュリティ（ＴＬＳ）プロトコルを使用して第２のデバイスを認証する。記載されたシステムの一例では、１つまたは複数の規則を変更することは、第１のデバイス上のファイアウォール規則を変更することを含む。
【０１２９】
図９は、本発明の一実施形態に従って管理される、リモートコンピュータとローカルネットワーク内のデバイスとの間のダイレクト接続を有するネットワーク環境の図である。
【０１３０】
この実施形態では、ルータ９５０は、ＷＡＮ１３４内のコンピュータ９３０への接続９５２を開始する。コンピュータ９３０は、別のデバイスからの着信要求を受け入れて認証することが可能であり、別のデバイスによって開かれた逆接続を介してデータを送信することが可能である、１つまたは複数の接続されたコンピュータのグループの１つとすることができる。一例では、ルータ９５０は、例えばＴＬＳプロトコルを使用することによって、コンピュータ９３０を認証し得る。
【０１３１】
図示される実施形態では、コンピュータ９３０は認証モジュールを含む。クライアント９１０は、このコンピュータに接続し、認証手順に従う。それは、例えば、公開／非公開の証明書交換、マルチファクタ認証、または当業者に知られた別の認証手順を使用して、ユーザ名およびパスワードを提供することを含み得る。コンピュータ９３０に接続されている間、クライアント９１０は、それがルータ９５０に接続したいことを示す指示９１２を提供する。この指示は、例えば、コンピュータ９３０を指し示すが、ルータ９５０を参照するサブドメイン、パスまたはファイル名を含むＵＲＬに要求を発行することによって提供され得る。別の実装では、デバイス９１０のユーザは、認証された後にコンピュータ９３０によって提供されるリストからルータ９５０を選択し得る。
【０１３２】
クライアント９１０が認証される前に、ルータ９５０は、クライアントのソースＩＰアドレスを含む外部ＩＰアドレスからの１つまたは複数の着信要求９２２をブロックするように設定される。本発明によれば、コンピュータ９３０または接続されたグループのコンピュータのうちの１つが、クライアント９１０がルータ９５０にアクセスしようとしており、クライアント９１０を認証すると判定した後、クライアントデバイス９１０の識別子は、そのルータによってコンピュータ９３０に先に開かれた接続を介して、ルータ９５０に渡される。コンピュータ９３０からクライアントデバイス９１０の識別子を受信した後、コンピュータ９１０からの接続要求９２４は、ルータ９５０によって許可されることになる。
【０１３３】
他の実施形態では、ルータ９５０にアクセスしようとするデバイス９１０の識別子は、別個の接続を介して渡され得る：例えば、ルータ９５０は、コンピュータ９３０または接続されたコンピュータからの接続要求を受け入れるように設定され得る。
【０１３４】
図示される実施形態は、クライアント９１０のソースＩＰアドレスがモジュール９４０によって抽出され、次に、ルータ９５０に渡される例を示す。他の実装では、この識別子は、ソースポート、アクセスプロトコル、またはアクセスデータパターンを含み得る。例えば、クライアント９１０がルータ９５０とのＨＴＴＰまたはＨＴＴＰＳ接続を確立しようとする場合、サーバ９３０にデータパターン（ＴＬＳハンドシェイクの一部、要求されたリソースの名前、要求ヘッダ内のデータ、またはペイロード）を提供し得、データパターンは、ルータ９５０に渡された後、着信接続を許可するために検出され得る。
【０１３５】
トランスポートレベルセキュリティ（ＴＬＳ）またはＨＴＴＰプロトコルを使用する代わりに、または、使用することに加えて、クライアント９１０は、ウェブリアルタイム通信（ＷｅｂＲＴＣ）プロトコルまたはインタラクティブ接続確立（ＩＣＥ）フレームワークを使用する別のプロトコルを使用してルータ９５０に接続し得る。ルータ９５０は、有効な接続の別の識別子として意図されたプロトコルの特性を使用し得る。
【０１３６】
クライアント９１０の識別子を受信した後、ルータ９５０は、１つまたは複数の自機の規則を変更して、その識別子と一致する着信接続９２４を許可する。例えば、クライアント９１０のソースＩＰを受信した後、ルータ９５０は、ファイアウォール規則を一時的に変更して、このソースＩＰからの着信要求を許可する。クライアント９２０などの認証を通過しなかったクライアントは、ルータ９５０のＩＰアドレスを知っていても、ルータ９５０にアクセスすることが許可されないことになる。
【０１３７】
ルータセキュリティをさらに改善し、不正アクセスを防ぐために、一つの実装では、ルータ９５０は、１つまたは複数の所定の条件が満たされるまでのみ、クライアント９１０などの認証されたデバイスによって接続が開始されることを許可する。例えば、ルータ９５０は、デバイス９１０が認証されたずっと後（例えば、認証が１時間または何らかの他の時間制限で失効する）にデバイス９１０のソースＩＰからの新しい接続が開始した場合、その新しい接続をブロックし得る。いくつかの実施形態では、デバイス９１０は、ルータ９５０との接続能力を延長するために、コンピュータ９３０からの認証を定期的に要求し続け得る。別の例では、ルータ９５０は、リソースの不正利用またはリソースの大規模な利用の指示を受信した後に、クライアント９１０からの新しい接続または現在の接続をブロックすることができる：例えば、クライアント９１０のソースＩＰから開かれた新規接続が多すぎる、他の認証されたクライアント、或いは上記される先に認証されているもの以外の未知のソースＩＰからの１つまたは複数の接続の試みから開かれた接続が多すぎる。
【０１３８】
代替の実施形態では、デバイス９１０によって提供される識別子をルータ９５０に渡す代わりに、ルータ９５０または接続されたコンピュータ９３０のうちの１つが、デバイス９１０およびルータ９５０の両方に接続識別子を提供し得る。例えば、コンピュータ９３０は、特定のソースポートを使用するように、または特定のデータパターンを要求ヘッダの１つに含めるように、デバイス９１０に指示し得る。コンピュータ９３０は、この同じ情報をルータ９５０に送信して、有効な要求を識別する。ルータ９５０は、その後、コンピュータ９３０から受信したこの情報を含む接続要求を許可し得る。
【０１３９】
別の実施形態では、特定のポートから来る接続または特定のデータパターンを有する接続を一時的に受け入れるように規則を変更するルータ９５０から、一意的な識別子が受信され得る。その場合、コンピュータ９３０は、認証されたクライアント９１０に、ルータ９５０に接続している間にどの識別子を使用するかを通知するだけでよい。
【０１４０】
図９に例示される実施形態では、ルータ９５０はローカルネットワーク１３２とＷＡＮ１３４との間のデータ交換を制御する。ローカルネットワーク１３２は、少なくとも１つのＩｏＴデバイス９７０を含み、クライアント９１０は、デバイス９７０に接続するためにルータ９５０との接続を確立する。この実施形態では、デバイス９７０を対象とする受け入れられた着信接続９２４が、ルータ９５０からプロキシサーバ９６０に渡される。このプロキシサーバは、外部ＩＰアドレスからの接続要求を受け入れ、宛先ローカルデバイスを決定し、そのローカルデバイス９７０と接続を確立し、そのローカルデバイス９７０とＷＡＮ１３４上のデバイス９１０との間でデータを渡す。
【０１４１】
一例では、クライアント９１０は、既知のドメインにＨＴＴＰまたはＨＴＴＰＳ要求を発行するために、通常のウェブブラウザを使用してデバイス９７０に接続し得る。そのようなドメインは、例えば、ルータ９５０のＩＰアドレスへと解決し得、一方で、ローカルネットワーク内に意図された受信デバイスを指定するサブドメインを含む（例えば、デバイス９７０のＩＰアドレス）。
【０１４２】
この例では、プロキシ９６０は、ホストヘッダ（ＨＴＴＰ）またはＳＮＩヘッダ（ＨＴＴＰＳ）からサブドメインを抽出し、この識別子を使用して、ローカルネットワーク１３２上の受信デバイス９７０のＩＰアドレスを見つける。これを行うために、マルチキャストドメインネームサービス（ｍＤＮＳ）またはシンプルサービスディスカバリプロトコル（ＳＳＤＰ）などのサービスディスカバリプロトコルを使用して、ローカルネットワーク上のデバイスのディスクリプションを取得し、要求された識別子に関連付けられた文字列と一致するディスクリプションを、そのＭＡＣアドレスを取得するための特定のデバイスのディスクリプションで見つけて、その後、アドレス解決プロトコル（ＡＲＰ）テーブルの情報を使用して、要求の意図された受け手のＩＰアドレスを取得することが行われ得る。他の既知の解決策およびプロトコルを、ローカルネットワーク１３２内のデバイスのＩＰアドレスを発見するために、使用することができる。しかしながら、上記に概要を述べた様に、ローカルデバイス９７０への接続要求が外部ＩＰアドレスから受信された後にのみ、そのような発見が起こる。
【０１４３】
いくつかの実装では、プロキシ９６０は、ローカルネットワークとＷＡＮとの間のデータ交換を制御することを担当する別のモジュール（例えば、ゲートウェイ、アクセスポイント、ブリッジ、またはファイアウォールなど）またはルータ９５０と組み合わせられてよい。他の実装では、プロキシ９６０は、ルータ９５０からのすべての着信接続を受信し、その後、それらを意図された受信デバイスに転送するために使用されるスタンドアローンデバイスとして配備することができる。
【０１４４】
図１０Ａから図１０Ｃは、本発明の一実施形態に係る保護されたデバイスへのダイレクト接続を管理する方法を例示する。この実施形態は、例えばサーバが機密情報を含み、第三者サービスを使用して、それ自体を不正アクセスから保護するなど、保護されたデバイスが、コンピュータネットワーク内の任意のコンピュータであり得る一般的なケースを説明する。
【０１４５】
図１０Ａを参照すると、認証サーバ９３０は、保護されたコンピュータｄｅｖ＿１へのアクセスを要求する（例えば、ウェブブラウザなどのクライアントソフトウェアを有する）コンピュータ９１０からの要求を受信する（ステップ１０１０）。その後、認証サーバ９３０は、１つまたは複数の所定の規則に従ってなど、クライアントが認証され得るかどうかを判定する（ステップ１０２０）。そうである場合、認証サーバは、クライアントのソースＩＰを保護されたコンピュータ９７０に送信し（ステップ１０３０）、クライアント９１０に接続許可を与える（ステップ１０４０）。
【０１４６】
図１０Ｂを参照すると、保護されたコンピュータ９７０は、認証装置（例えば、認証サーバ９３０またはルータ９５０）への自機の信頼できる接続を開き（ステップ１０５０）、認証されたクライアント９１０のソースＩＰを受信する（ステップ１０５５）。次いで、保護されたコンピュータ９７０は、提供されたソースＩＰアドレスからの接続を受け入れる準備をする（ステップ１０６６）。
【０１４７】
図１０Ｃを参照すると、保護されたコンピュータ９７０は、クライアント９１０の外部ＩＰアドレスから接続要求を受信し、その要求が認証装置（ルータ９５０または認証サーバ９３０）から受信した識別子に一致する識別子を含むと判定し、その後、この接続を受け入れる許可が有効なままであるべきかどうかを判定するための追加のステップ１０７５を実行する。図１０Ｃの実装では、保護されたコンピュータ９７０は、アクセスがクライアント９１０に許可されてから所定の時間ｄＴ内に、新しい要求が来たかどうかを判定する（ステップ１０７５）。保護されたコンピュータ９７０は、この場合のみ、クライアント９１０の外部ＩＰアドレスからの接続を受け入れる（ステップ１０８０）。
【０１４８】
本発明の他の実施形態では、保護サービスの一部を含むコンピュータ（例えば、ルータ９５０または認証サーバ９３０）は、クライアント９１０および保護されたデバイス９７０の両方に、許可された要求の識別子について通知してよく、または、そのような識別子（特定のソースポートなど）を保護されたデバイス９７０から受信し、それをクライアント９１０に渡してもよい。最後のケースでは、保護されたデバイス９７０は、クライアント９１０が認証される前に、特定のポートからの接続を受け入れるための規則を定義してよい。本明細書で開示されるシステムおよび方法は、保護されたデバイスが、特定のクライアントに限定されることになる一時的なアクセス条件を作成し、その後、いくつかの所定のイベントが検出された場合に、このアクセスを取り消すことを可能にする。
【０１４９】
例えば、恒久的なポートフォワーディングを設定する代わりに、ルータ９５０は、保護サービス（例えば、認証サーバ９３０）と連携して、およびクライアント９１０の接続を記述する追加のパラメータを用いて、所定の時間の間だけ特定のポートを開き得る。
【０１５０】
別の実施形態では、許可された接続の識別子を交換するために使用される１つまたは複数のサーバ（例えば、ルータ９５０）は、認証装置９３０を含む必要はない。例えば、そのようなサーバは、クライアント９１０のソースＩＰが、悪意のあるサーバの既知のＩＰアドレスのリストにないか、または特定の地理位置情報から来たものか、或いは、保護されたサーバに同時に開くことが可能な所定の数の接続以内のままであるかのみを検出し得る。すべてのこのような場合に、本発明は、保護されたサーバが望ましくない接続を無視する方法を提供する。
【０１５１】
いくつかの実施形態では、コンピュータデバイス間の接続ルートを管理するシステムは、コンピュータネットワークに接続された第１のデバイスを含む。第１のデバイスは、コンピュータネットワークに接続された１つまたは複数のデバイスへの接続を開始し、コンピュータネットワークに接続された１つまたは複数のデバイスによって開始された接続を受け入れる手段を有する。システムはさらに、コンピュータネットワークに接続され、並びに、第１のデバイスによって開始された少なくとも１つの接続を受け入れ、および第１のデバイスによって開かれた接続を介して、第１のデバイスに別のデバイスからの少なくとも１つの接続要求を転送する手段を有する、第２のグループの１つまたは複数のデバイスを含む。第２のグループの１つまたは複数のデバイスは、第１のデバイスとダイレクト接続を確立するために使用できる第１のデバイスの識別子を別のデバイスに提供するようにさらにプログラムされ得、第２のグループの１つまたは複数のデバイスをバイパスする。
【０１５２】
第２のグループのデバイスは、コンピュータネットワークに接続された第３のデバイスによって開始された接続を受け入れ、第３のデバイスが第１のデバイスとのダイレクト接続を確立することを許可できるかどうかを判定するようにさらにプログラムされてよい。そうである場合、デバイスの第２のグループのデバイスは、第１のデバイスの識別子（例えば、ＩＰアドレスまたはサブドメイン）を第３のデバイスに提供する。
【０１５３】
いくつかの実施形態では、第３のデバイスは、第１のデバイスとのダイレクト接続を確立することが許可されず、その第１のデバイスへの接続は、第１のデバイスによって開かれた第２のグループへの接続を介して転送される。一例では、第３のデバイスが第１のデバイスとのダイレクト接続を確立することを許可できるかどうかの判定は、その第３のデバイスが認証証明書を提供し、提供されたいずれかの認証証明書の何らか信頼性を評価することを含む。
【０１５４】
いくつかの実施形態では、第３のデバイスから第２のグループのデバイスへの接続の１つまたは複数のパラメータに応じて、第２のグループのデバイスは、第３のデバイスが第１のデバイスへのダイレクト接続を許可されるかどうかを評価すること、または、そのような評価を行うことなく第１のデバイスによって開かれた接続を介して第１のデバイスに第３のデバイスからの接続要求を転送することのいずれかを実行する。
【０１５５】
いくつかの実施形態では、第２のグループのデバイスは、第３のデバイスが第１のデバイスに接続することが許可されるかどうかを評価し、この評価の結果は、第１のデバイスによって開かれた接続を通じて常に送信されるべき接続要求か、または、第１のデバイスに直接送信されることが許可されてもよい接続要求かの接続要求によって異なる。
【０１５６】
いくつかの実施形態では、第３のデバイスからの接続要求は、異なるリソースロケータを使用して、第１のデバイスによって開かれた接続を通過すべき要求を識別してもよく、または第１のデバイスにダイレクト接続することを許可されてもよい。
【０１５７】
いくつかの実施形態では、第１のデバイスによって開かれた接続を介して常に転送されるべき第３のデバイスからの第２のグループへの接続要求は、第１のデバイスとのダイレクト接続を確立することができ得る要求とは異なるネットワークアドレスに送信される。
【０１５８】
いくつかの実施形態では、第１のデバイスによって開かれる接続を介して常に転送されるべき第３のデバイスからの第２のグループへの接続要求は、ＨＴＴＰプロトコルを使用し、一方、第１のデバイスとのダイレクト接続を確立することが許可され得る要求は、Interactive Connectivity Establishment（ＩＣＥ：インタラクティブ接続確立）フレームワークを使用する。
【０１５９】
いくつかの実施形態では、第２のグループのデバイスは、ドメインネームサーバ（ＤＮＳ）を含み、このサーバは第３のデバイスからドメイン名を解決する要求を受信し、および、第３のデバイスが第１のデバイスとのダイレクト接続を確立することが許可される場合に、第１のデバイスのＩＰを返し、さもなければ、第１のデバイスのＩＰを返すことをやめる。
【０１６０】
いくつかの実施形態では、第２のグループのデバイスは、逆接続をサポートすることができる仮想プライベートネットワーク（ＶＰＮ）サーバを含み、また、第１のデバイスによって確立された接続はＶＰＮトンネルである。
【０１６１】
第１のデバイスがローカルネットワーク内の１つまたは複数のデバイスに接続されるいくつかの実施形態では、第１のデバイスは、ローカルネットワークの外部の１つの他のデバイスからデータを受信し、そのデータをローカルネットワーク内のデバイスに転送し、その後、ローカルネットワークの外部にあるデバイスに応答を転送する。
【０１６２】
第１のデバイスは、ゲートウェイ、ルータ、ブリッジ、スイッチ、プロキシおよびファイアウォールの一部または全部として機能し得る。
【０１６３】
図１１は、本発明の一実施形態に従って管理される、ＶＰＮトンネル１１０２の内部および外部のＨＴＴＰ接続を有するネットワーク環境を例示する。この実施形態では、複数のクライアントデバイス１１１０，１１２０は、その上で実行される認証モジュールを有するサーバ１１３０に格納されたコンテンツのネットワーク識別子（ＵＲＬ＿Ａ）を受信する。他の実施形態では、認証装置およびコンテンツサーバは、コンピュータネットワークを介して情報を交換する別個の物理デバイス上に配置され得る。サーバ１１３０上に格納されたコンテンツは、パーソナルコンテンツサーバ１１５０によって提供される保護されたコンテンツ（例えば、ローカルネットワーク１３２内のデバイス１１５０上またはローカルネットワーク１３２に接続されたルータ上に格納されたコンテンツ）への１つまたは複数のポインタを有する。パーソナルコンテンツサーバ１１５０は、ＶＰＮトンネル１１０２を介してパーソナルコンテンツサーバ１１５０に外部接続要求を戻すことができるＶＰＮサーバ１１４０への接続１１０２を確立する。ＶＰＮトンネル１１０２を介して接続要求を受信することに加えて、パーソナルコンテンツサーバ１１５０は、（例えば、ポート４４３上のすべての着信要求を受け入れることによって）外部ＩＰアドレスからダイレクト接続要求を受信することも可能である。他の実施形態では、ＶＰＮサーバ１１４０は、プロキシサーバ、または逆接続を確立することができる他のタイプのサーバで置き換えることができる。
【０１６４】
図示される実施形態では、サーバ１１３０は、認証結果に応じて、異なるコンテンツをクライアント１１１０および１１２０に返す。例えば、クライアントＡ（１１１０）は、ＶＰＮサーバ１１４０を指し示し、およびパーソナルコンテンツサーバ１１５０への参照を含むＵＲＬ＿Ｂを受信し、一方、クライアントＢ（１１２０）はパーソナルコンテンツサーバ１１５０のＩＰアドレスを直接指し示すＵＲＬ＿Ｃを受信する。
【０１６５】
クライアント１１１０，１１２０にパーソナルコンテンツサーバ１１５０の直接のＩＰを提供することは、ＶＰＮサーバ１１４０のＩＰアドレスをクライアント１１１０，１１２０に提供することよりもはるかに安全性が低い：悪意のあるクライアント１１１０，１１２０は、サーバ１１５０の脆弱性を調査したり、またはサービス拒否（ＤｏＳ）攻撃を実行したりし得る。反対に、パーソナルサーバ１１５０へのダイレクトアクセスは、特にクライアント１１２０およびサーバ１１５０がクライアント１１２０およびＶＰＮサーバ１１４０よりもはるかに互いが近い場合に、ＶＰＮサーバ１１４０を介するよりも高速であり得る。本発明によれば、十分な認証レベルを有するクライアント（例えば、パーソナルコンテンツサーバ１１５０の所有者によって信頼され、ログインとパスワードによってその身元を証明するもの）のみが直接の接続を許可される。他の登録されたクライアントは、ＶＰＮサーバ１１４０を介して送信される。別の例では、認証装置は、安全性の低い認証を有するクライアントをＶＰＮサーバ１１４０に向ける一方で、ダイレクトアクセスを許可するために２要素認証（例えば、携帯電話機へのメッセージの送信）を要求してもよい。別の例では、サーバ１１３０は、認証されていないクライアントをＶＰＮサーバ１１４０に向ける一方で、有効なログインおよびパスワードを提供するすべてのクライアントにダイレクトアクセスを許可する。
【０１６６】
いくつかの実施形態では、コンテンツサーバ１１３０は、ＵＲＬ＿Ｂ（より低い認証レベルを有するクライアント１１１０のためにＶＰＮサーバ１１４０を参照する）またはＵＲＬ＿Ｃ（より高い認証レベルを有するクライアント１１２０のためにコンテンツサーバ１１５０を直接参照する）のいずれかを含む異なるＨＴＭＬコンテンツを異なる認証レベルを有するクライアントに返す。いくつかの実施形態では、コンテンツサーバ１１３０は、ＨＴＴＰリダイレクトヘッダを使用して、クライアントをＵＲＬ＿ＢまたはＵＲＬ＿Ｃにリダイレクトする。
【０１６７】
図１２は、本発明の一実施形態に従って管理される異なる通信フレームワークを使用する接続を有するネットワーク環境を例示する。この実施形態では、異なるクライアント１２１０および１２２０は、ローカルネットワーク１２３２の外部の異なるコンテンツサーバ１２３０および１２４０へのポインタを受信する。例えば、パーソナルサーバ１２７０は、対応するクライアントの電子メールアドレスを用いて、ＵＲＬ＿ＡをクライアントＡ（１２１０）に、およびＵＲＬ＿ＣをクライアントＢ（１２２０）に送信する。この例では、ＵＲＬ＿Ａは、ローカルネットワーク内のより安全でないデバイス（電源スイッチ１２８０）の制御を意図している。その一方、ＵＲＬ＿Ｃは、より安全なパーソナルサーバ１２７０（例えば、ルータと組み合わされたもの）からのコンテンツの要求を意図している。パーソナルサーバ１２７０は、ＶＰＮサーバ１２５０への接続１２７２を開き、外部ＨＴＴＰ要求に対する逆接続の提供を可能にするとともに、ＳＴＵＮ（ネットワークアドレストランスレータ（ＮＡＴ）を介したユーザデータグラムプロトコル（ＵＤＰ）セッショントラバーサル）サーバ１２６０への接続１２７４を確立し、インタラクティブ接続確立（ＩＣＥ）フレームワークに従ってダイレクト接続をサポートする（例えば、ＷｅｂＲＴＣ（ウェブリアルタイム通信）プロトコルを使用することによって）ことを可能にする。
【０１６８】
図示される実施形態では、クライアントＡ（１２１０）およびクライアントＢ（１２２０）からの要求は、異なるコンテンツサーバ１２３０および１２４０、ならびに、これらのサーバに関連付けられた別の認証装置によって処理される。別の実施形態では、両方のクライアント１２１０，１２２０は、複数のタイプのＵＲＬ要求をサポートする同じコンテンツサーバ、または同じ認証装置を使用し得る。この例では、認証されたクライアントＡ（１２１０）は、ＵＲＬ＿Ａに対する要求を提示し、ＨＴＴＰ要求をデバイス１２８０に渡すようにプログラムされたパーソナルサーバ１２７０に、そのＨＴＴＰ要求を転送するようにプログラムされたＶＰＮサーバ１２５０に向いているＵＲＬ＿Ｂを受信する。このようにして、セキュアでないデバイス１２８０へのアクセスは、特に、ＵＲＬ＿Ｂが、サーバ１２３０を介した追加の認証なしに、繰り返しアクセスするために再利用することができないワンタイムＵＲＬである場合に、不正なクライアントから保護される。
【０１６９】
認証されたクライアントＢ（１２２０）は、ＵＲＬ＿Ｃをサーバ１２４０に提示した後、ＳＴＵＮサーバ１２６０から、例えばＷｅｂＲＴＣプロトコルを使用して、パーソナルサーバ１２７０とのダイレクト接続をクライアントＢが確立することを可能にする情報を受信する。図示される実施形態では、サーバ１２４０は、ＳＴＵＮサーバ１２６０に、クライアントＢ（１２２０）がパーソナルサーバ１２７０にダイレクト接続することを許可されることを通知する。それに応じて、ＳＴＵＮサーバ１２６０は、その後、クライアント１２２０からの接続要求を、パーソナルサーバ１２７０に渡すことによって許可することになる。別の実施形態では、サーバ１２４０は、クライアントＢ（１２２０）がＳＴＵＮサーバ１２６０に接続し、パーソナルサーバ１２７０のＩＰアドレスを受信することを許可するコンテンツ（ワンタイムＵＲＬなど）をクライアントＢ（１２２０）に送信し得る。その結果、クライアントＢは、ＳＴＵＮサーバ１２６０によって、より安全なパーソナルサーバ１２７０に格納されたファイルへのダイレクトアクセスが許可され（パーソナルサーバ１２７０のＩＰアドレスの情報を用いる）、一方で、クライアントＡは、パーソナルサーバ１２７０のＩＰアドレスを受信することなく、ＶＰＮサーバ１２５０を介して安全性の低いデバイス１２８０にアクセスするのみになる。
【０１７０】
図１３は、本発明の一実施形態に従って管理されるＤＮＳサーバ１３４０によって制御される接続を有するネットワーク環境を例示する。この実施形態では、クライアントＡおよびＢ（１３１０および１３２０）は、同じＵＲＬ＿Ａによって参照されるコンテンツに対する要求をサーバ１３３０に提示し、同じＵＲＬ＿Ｂを受信し（ＨＴＭＬコンテンツ内に、またはリダイレクトとしてのいずれか）、ＵＲＬ＿Ｂは、ドメインネームサーバ（ＤＮＳサーバ）１３４０によってＩＰアドレスへと解決される必要のあるドメインを有する。サーバ１３３０に接続されているか、または、サーバ１３３０に常駐するモジュールとして実装されている認証装置は、クライアントＡ（１３１０）は認証されているが（例えば、正しいログインとパスワードを提示した、または安全なセッションクッキー）、一方、クライアントＢはそうではない（例えば、そのパスワードが間違っていた）と判定する。本発明によれば、サーバ１３３０は、クライアントＡ（１３１０）のソースＩＰアドレスを有するＤＮＳ要求がパーソナルサーバ１３５０のＩＰアドレスを受信することを認証されていることをＤＮＳサーバ１３４０に通知する。ＵＲＬ＿Ｂのドメインに対応するＤＮＳレコードの生存時間（ＴＴＬ：Time To Live）が低い場合（例えば１秒）、インターバルＴＴＬ後に提示されたＤＮＳ応答はキャッシュされない。ＤＮＳサーバ１３４０は、クライアントＡ（１３１０）から要求を受信し、そのソースＩＰアドレスが認証されていると判定し、ＵＲＬ＿Ｂのドメインをパーソナルサーバ１３５０のＩＰアドレス（ＩＰ＿Ｂ）へと解決する。サーバ１３３０によって認証されなかったクライアントＢ（１３２０）から同じドメインに対するＤＮＳ要求が受信された場合、ＤＮＳサーバ１３４０は、パーソナルサーバ１３５０のＩＰアドレスを提供する代わりに、「サーバが見つかりません」のエラーコード１３４２を返す。
【０１７１】
別の実施形態では、ＤＮＳサーバは、エラー１３４２を返す代わりに、パーソナルサーバ１３５０に外部要求を渡すことが可能なＶＰＮサーバまたはプロキシサーバのＩＰアドレスを返し得る。サーバ１３３０によって提供される認証ステータスにのみ頼る代わりに、ＤＮＳサーバは、クライアントの１３１０，１３２０の認証ステータスを他のパラメータと組み合わせる規則の独自のセットを有してもよい。例えば、ＤＮＳサーバ１３４０は、認証されていないクライアントのソースＩＰがパーソナルサーバ１３５０と近接していることを示す場合（例えば、同じ都市または郵便番号）、その認証されていないクライアントがパーソナルサーバ１３５０に接続することを許可してよく、または、認証されたクライアントのソースＩＰが異なる国を指している場合、ＤＮＳサーバは、認証されたクライアントからの接続を禁止してよい。このようにして、パーソナルサーバ１３５０へのアクセスを制御する規則は、異なるサーバ間、例えば、異なるビジネス事業体に属するものに広げることができる。
【０１７２】
図１４は、本発明の一実施形態に係るコンピュータデバイス間の接続ルートを管理する方法を例示する。認証装置１２３０，１２４０によってローカルネットワーク１３２内の特定のデバイス（ｄｅｖ＿１）に接続する要求をクライアント１２１０，１２２０から受信した（ステップ１４１０）後、認証装置１２３０，１２４０は、クライアント１２１０，１２２０がｄｅｖ＿１に直接接続するために認証されるかどうかを判定する（ステップ１４２０）。クライアント１２１０，１２２０がダイレクトアクセスを認証されていないと判定された場合、認証装置１２３０，１３４０は、要求をｄｅｖ＿１に渡すことができるＶＰＮサーバ１２５０を指すドメインを有するＵＲＬ＿Ｂをクライアント１２１０，１２２０に提供する（ステップ１４３０）。クライアントの１２１０，１２２０の認証が確認された場合、クライアント１２１０，１２２０は、ｄｅｖ＿１を直接指し示すドメインを有するＵＲＬ＿Ｃを受信する（ステップ１４４０）。
【０１７３】
図１５は、本発明の一実施形態に係る初期接続要求に応じてコンピュータデバイス間の接続ルートを管理する方法を例示する。認証装置１２３０，１２４０は、クライアント１２１０，１２２０からローカルネットワーク１３２内のｄｅｖ＿１に接続する要求を受信した（ステップ１５１０）後、ｄｅｖ＿１に直接接続するか、或いは、ＶＰＮ１２５０またはプロキシなどの中継装置を介してｄｅｖ＿１に接続するかを判定する（ステップ１５２０）。そのような決定は、例えば、ドメイン、パスまたはファイル名など、要求されたＵＲＬに部分的に依存してよい。クライアント１２１０，１２２０が、ｄｅｖ＿１の実際のＩＰアドレスを要求することなく、ＶＰＮサーバ１２５０を介して接続を要求する場合、認証装置１２３０，１２４０は、例えばクライアント１２１０，１２２０のソースＩＰアドレスがブラックリストに存在しないことを確認することによってなどの限られた要求の検証のみを実行し（ステップ１５３０）、ブラックリストとの一致が見つからなかった場合、認証装置１２３０，１２４０は、ＶＰＮサーバ１２５０を指し示すＵＲＬを返す（ステップ１５５０）。クライアント１２１０，１２２０が、ｄｅｖ＿１に直接接続することを要求する場合、より厳格な検証が実行される：例えば、クライアント１２１０，１２２０は、ユーザ名とパスワードの提供を要求され（ステップ１５４０）、そして、ログインが有効であると判定された場合にのみ、ＳＴＵＮサーバ１２６０からｄｅｖ＿１の実際のＩＰアドレスが認証装置１２３０，１２４０によって提供される（ステップ１５６０）。
【０１７４】
他の実施形態では、中継装置を介してアクセスを要求するクライアント１２１０，１２２０は、正当性の検査をスキップしてもよいし、または、ダイレクトアクセスのために事前に認証されたＩＰアドレスを有するか、時間的制約のあるＵＲＬを有効期限が切れる前に使用することによってなど別の検査を利用してもよい。ｄｅｖ＿１へのダイレクトアクセスを要求するクライアント１２１０，１２２０は、証明書交換などの正当性の検査を使用してよい。クライアント１２１０，１２２０は、ｄｅｖ＿１への同時接続の総数が許容限度内にある場合に接続を許可されてよい。クライアント１２１０，１２２０は、許可された地理的位置からのＩＰアドレスを有する場合、接続を許可されてよい。いくつかの実施形態では、ｄｅｖ＿１へのダイレクトアクセスを要求するクライアント１２１０，１２２０は、ＶＰＮサーバ１２５０などの中継装置を介してｄｅｖ＿１へのアクセスを要求するクライアント１２１０，１２２０よりも厳しい検査を受ける。いくつかの実施形態では、何らかのタイプのアクセスを要求するクライアント１２１０，１２２０は、同じログイン手順を実行することが要求されるが、ダイレクトアクセスは、追加の所定のプロパティ（例えば、ｄｅｖ＿１の所有者が提供しているホワイトリストと一致するユーザ名など）を有するクライアントに対してのみ許可される。
【０１７５】
また、図１６Ａおよび１６Ｂは、本発明の一実施形態による、ＤＮＳサーバによるコンピュータデバイス間の接続を管理する方法を例示する。
【０１７６】
図１６Ａを参照すると、認証装置１３３０は、クライアント１３１０，１３２０から、パーソナルサーバ１３５０などのｄｅｖ＿１に接続する要求を受信した（ステップ１６１０）後、クライアントが、認証装置１３３０の予め指定された規則に従ってｄｅｖ＿１にアクセスすることが認可されているかどうかを判定する（ステップ１６２０）。そうである場合、認証装置１３３０は、ｄｅｖ＿１を指し示すドメインＢを解決するようにプログラムされたＤＮＳサーバ１３４０にクライアント１３２０，１３２０のソースＩＰアドレスを送り（ステップ１６３０）、その後、認証装置１３３０は、クライアント１３１０，１３２０を、ドメインＢを含むＵＲＬにリダイレクトする（ステップ１６４０）。
【０１７７】
図１６ｂを参照すると、ＤＮＳサーバ１３４０は、クライアント１３１０，１３２０からドメインＢを解決する要求を受信した（ステップ１６５０）後、直接ｄｅｖ＿１を指し示すドメインＢに対するＩＰアドレスを取得するために、ＤＮＳ要求に関連するソースＩＰがサーバ１３４０によってアクセスされた規則に従って許可されるかどうか判定する（ステップ１６６０）。いくつかの実施形態では、この決定は、認証装置１３３０からの信号と、クライアントのソースＩＰの地理的位置などの１つまたは複数の追加パラメータとの両方に依存する。図示される実施形態では、許可されたソースＩＰを有するクライアント１３１０は、ｄｅｖ＿１のＩＰアドレスＩＰ＿Ｂを受信し（ステップ１６７０）、一方で、他のクライアント１３２０はエラーコード１３４２を受信する（ステップ１６８０）。別の実施形態では、認証装置１３３０および／またはＤＮＳサーバ１３４０によってアクセスされる規則に従ってｄｅｖ＿１にダイレクトアクセスすることが許可されていないソースＩＰを有するクライアント１３２０は、ＶＰＮサーバなどの中継サーバを指し示すＩＰアドレスを受信してよく、または、中継サーバを参照するドメインを指し示す、ＤＮＳサーバ１３４０からのＣＮＡＭＥ（正式名レコード）応答を受信してよい。
【０１７８】
いくつかの実施形態では、異なる認証レベルを有するクライアント１３１０，１３２０は、ローカルネットワーク１３２内のパーソナルサーバまたはデバイスなどの保護されたデバイス１３５０に異なるセットのコマンドを発行することが許可されてよい。例えば、高い認証レベルを有する信頼できるユーザは、エネルギー消費に関する履歴データを要求するなど、中継プロキシの有無にかかわらず、多様なコマンドを電源スイッチに発行することが許可され得る。対照的に、より低い認証レベルを有するユーザは、外部サーバ、ルータ、または保護されたデバイスによって提示されるユーザインタフェース（ＵＩ）によって定義されたコマンドを発行することしか許可されなくてもよい（例えば、ＵＩは、そのようなユーザがスイッチをオンまたはオフにすることのみを許可する）。
【０１７９】
コンピュータネットワーク上の他のサーバに知られていない１つまたは複数のキーを使用して、２つのデバイス間で暗号化されたデータ交換を可能にすることによって、ダイレクトアクセスのセキュリティおよびプライバシーをさらに向上させることができる。いくつかの実施形態では、少なくとも１人の接続パーティ（例えば、パーソナルサーバ１３５０へのダイレクトアクセスを確立しようとするクライアント１３１０，１３２０）が、コンピュータネットワーク上の別のサーバを（例えば、ＴＬＳプロトコルを使用して）認証し、その後、双方のパーティは、暗号化されたダイレクト接続を確立するために使用することができる鍵素材（例えば、対称キー）を受け取る。この鍵素材は、コンピュータネットワーク上の少なくとも１つの他のサーバ（例えば、認証装置１３３０）に知られているが、接続を行うパーティは、（例えば、鍵交換のためのディフィー・ヘルマン（Diffie-Hellman）プロトコルを使用することによって）自機の共有対称キーを確立するためにのみそれを使用する。この鍵は、認証装置１３３０などの他のコンピュータからは秘匿され、接続されたパーティ間のプライベートで安全なデータ交換に使用することができる。最初のディフィー・ヘルマン交換におけるスヌーピングを防ぐために、接続を行うパーティは、電子メール、モバイルメッセージ、またはユーザのコンテンツ（画像ギャラリー、ソーシャルネットワークなど）を許可するサイト上の投稿などの代替通信チャネルを介してそれを確立してよい。この実施形態の一つの実装では、接続を行うパーティはＷｅｂＲＴＣプロトコルを使用し、および、ディフィー・ヘルマン鍵交換に使用される１つまたは複数の鍵材料は、シグナリングサーバによって返される。
【０１８０】
図１７は、本明細書に開示されたコンピュータおよびサーバのいずれかを具体化し得るコンピュータデバイス１７００の一例を示すブロック図である。コンピュータデバイス１７００は、本明細書で論じられるような様々な手順を実行するために使用され得る。コンピュータデバイス１７００は、サーバ、クライアント、または任意の他の計算する実体物として機能することができる。コンピュータデバイスは、本明細書で論じられるような様々なモニタリング機能を実行することができ、本明細書で説明されるアプリケーションプログラムなどの１つまたは複数のアプリケーションプログラムを実行することができる。コンピュータデバイス１７００は、デスクトップコンピュータ、ノートブックコンピュータ、サーバコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータなどの多種多様なコンピュータデバイスのいずれかとすることができる。
【０１８１】
コンピュータデバイス１７００は、１つまたは複数のプロセッサ１７０２、１つまたは複数のメモリデバイス１７０４、１つまたは複数のインタフェース１７０６、１つまたは複数の大容量記憶デバイス１７０８、１つまたは複数の入力／出力（Ｉ／Ｏ）デバイス１７１０、および表示デバイス１７３０を含み、これらのすべてはバス１７１２に接続される。（複数の）プロセッサ１７０２は、（複数の）メモリデバイス１７０４および／または（複数の）大容量記憶デバイス１７０８に記憶された命令を実行する１つまたは複数のプロセッサまたは制御装置を含む。（複数の）プロセッサ１７０２はまた、キャッシュメモリなどの様々なタイプのコンピュータ可読媒体を含み得る。
【０１８２】
（複数の）メモリデバイス１７０４は、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）１７１４）および／または不揮発性メモリ（例えば、リードオンリーメモリ（ＲＯＭ）１７１６）などの様々なコンピュータ可読媒体を含む。（複数の）メモリデバイス１７０４はまた、フラッシュメモリなどの書き換え可能ＲＯＭを含み得る。
【０１８３】
（複数の）大容量記憶デバイス１７０８は、磁気テープ、磁気ディスク、光ディスク、ソリッドステートメモリ（例えば、フラッシュメモリ）などの様々なコンピュータ可読媒体を含む。図１７に示すように、特定の大容量記憶デバイスは、ハードディスクドライブ１７２４である。（複数の）大容量記憶デバイス１７０８には、様々なコンピュータ可読媒体からの読み取りおよび／または書き込みを可能にする様々なドライブも含まれ得る。（複数の）大容量記憶デバイス１７０８は、リムーバブルメディア１７２６および／または非リムーバブルメディアを含む。
【０１８４】
（複数の）Ｉ／Ｏデバイス１７１０は、データおよび／または他の情報がコンピュータデバイス１７００に入力されるか、またはコンピュータデバイス１７００から取り出されることを可能にする様々なデバイスを含む。例示的な（複数の）Ｉ／Ｏデバイス１７１０は、カーソル制御デバイス、キーボード、キーパッド、マイク、モニタまたは他のディスプレイデバイス、スピーカ、プリンタ、ネットワークインタフェースカード、モデム、レンズ、ＣＣＤまたは他の画像キャプチャデバイスなどを含む。
【０１８５】
表示デバイス１７３０は、コンピュータデバイス１７００の１人以上のユーザに情報を表示することができる任意のタイプのデバイスを含む。表示デバイス１７３０の例は、モニタ、表示端末、ビデオ投影デバイスなどを含む。
【０１８６】
（複数の）インタフェース１７０６は、コンピュータデバイス１７００が他のシステム、デバイス、またはコンピュータ環境と情報をやりとりすることを可能にする様々なインタフェースを含む。例示的な（複数の）インタフェース１７０６は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、ワイヤレスネットワーク、およびインターネットへのインタフェースなどの、任意の数の異なるネットワークインタフェース１７２０を含む。（複数の）他のインタフェースは、ユーザインタフェース１７１８と周辺デバイスインタフェース１７２２とを含む。（複数の）インタフェース１７０６はまた、１つまたは複数のユーザインタフェース要素１７１８を含み得る。（複数の）インタフェース１７０６はまた、プリンタ、ポインティングデバイス（マウス、トラックパッドなど）、キーボードなどのためのインタフェースなどの１つまたは複数の周辺インタフェースを含み得る。
【０１８７】
バス１７１２は、（複数の）プロセッサ１７０２、（複数の）メモリデバイス１７０４、（複数の）インタフェース１７０６、（複数の）大容量記憶デバイス１７０８、および（複数の）Ｉ／Ｏデバイス１７１０が相互に通信すること、同様にバス１７１２に接続された他のデバイスまたは構成要素と通信することを可能にする。バス１７１２は、システムバス、ＰＣＩバス、ＩＥＥＥ１３９４バス、ＵＳＢバスなどのいくつかのタイプのバス構造の１つまたは複数を表す。
【０１８８】
説明のために、プログラムおよび他の実行可能なプログラム構成要素は、本明細書では別個のブロックとして示されているが、そのようなプログラムおよび構成要素は、コンピュータデバイス１７００の異なる記憶構成要素にさまざまな時間に存在し得、（複数の）プロセッサ１７０２によって実行されることが理解される。代わりに、本明細書に記載されるシステムおよび手順は、ハードウェア、或いは、ハードウェア、ソフトウェア、および／またはファームウェアの組み合わせで実装することができる。例えば、１つまたは複数の特定用途向け集積回路（ＡＳＩＣ）を、本明細書で説明される１つまたは複数のシステムおよび手順を実行するようにプログラムすることができる。
【０１８９】
本明細書を通じて、「一実施形態」、「実施形態」、「一例」または「例」は、特定の特徴、構造、または特性が本開示の少なくとも１つの実施形態に含まれる実施形態または例に関連して記載されたことを意味する。従って、本明細書の様々な箇所における「一実施形態において」、「実施形態において」、「一つの例」、または「例」という表現の出現は、必ずしもすべてが同じ実施形態または例を参照しているとは限らない。さらに、特定の特徴、構造、または特性は、１つまたは複数の実施形態または例における任意の適切な組み合わせ、および／または部分的な組み合わせで組み合わせられてよい。さらに、添付の図面は、当業者に対する説明のために提供されており、図面は必ずしも縮尺通りに描かれていないことを理解されたい。
【０１９０】
本発明は、その精神または本質的な特性から逸脱することなく、他の特定の形態で具体化され得る。記載された実施形態は、すべての点において、単に例示的なものであり、限定的なものではないとみなされるべきである。従って、本発明の範囲は、前述の記述によってではなく、むしろ添付の請求項によって示される。請求項と均等の意味および範囲内に入るすべての変更は、本発明の範囲内に含まれるべきである。
【図１】
2018525935.tif 000003
【図２Ａ】
2018525935.tif 000004
【図２Ｂ】
2018525935.tif 000005
【図３】
2018525935.tif 000006
【図４Ａ】
2018525935.tif 000007
【図４Ｂ】
2018525935.tif 000008
【図５】
2018525935.tif 000009
【図６Ａ】
2018525935.tif 000010
【図６Ｂ】
2018525935.tif 000011
【図７】
2018525935.tif 000012
【図８】
2018525935.tif 000013
【図９】
2018525935.tif 000014
【図１０Ａ】
2018525935.tif 000015
【図１０Ｂ】
2018525935.tif 000016
【図１０Ｃ】
2018525935.tif 000017
【図１１】
2018525935.tif 000018
【図１２】
2018525935.tif 000019
【図１３】
2018525935.tif 000020
【図１４】
2018525935.tif 000021
【図１５】
2018525935.tif 000022
【図１６Ａ】
2018525935.tif 000023
【図１６Ｂ】
2018525935.tif 000024
【図１７】
2018525935.tif 000025
【国際調査報告】
2018525935.tif 000026
2018525935.tif 000027
2018525935.tif 000028