(57)【要約】  一実施形態では、方法は、システムが、ユーザのデバイスから要求を受信することを含み、その要求は第１のホストに向けられる。システムは、鍵と、検証トークンと、暗号化された鍵とを生成し得る。システムは、第１のホストからデバイスに、検証トークンと暗号化された鍵とを送信し、（１）検証トークンを、第１のホストに関連付けられたクッキーとして記憶させることと、（２）デバイスに、第２のホストに暗号化された鍵を送信させることとを行うように設定された命令を送信し得る。システムは、デバイスから、暗号化された鍵を含む第２の要求を受信し、暗号化された鍵が前に解読されなかったと決定すると、鍵を取得するために、暗号化された鍵を解読し得る。システムは、第２のホストからデバイスに鍵を送信し、デバイスに、第２のホストに関連付けられたクッキーとして鍵を記憶するように命令し得る。【選択図】図１
2020522918.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングシステムによって、ユーザに関連付けられたクライアントデバイスから、前記コンピューティングシステムに関連付けられた第１のホストに向けられた第１の要求を受信することと、
前記コンピューティングシステムによって、前記第１の要求に応答して鍵を生成することと、
前記コンピューティングシステムによって、前記鍵に基づいて検証トークンを生成することと、
前記コンピューティングシステムによって、前記鍵に基づいて、暗号化された鍵を生成することと、
前記コンピューティングシステムによって、前記コンピューティングシステムに関連付けられた前記第１のホストから前記クライアントデバイスに、第１の命令と、前記検証トークンと、前記暗号化された鍵とを送信することであって、前記第１の命令は、
前記第１のホストに関連付けられた第１のクッキーとして前記検証トークンを前記クライアントデバイス上に記憶させることと、
前記クライアントデバイスに、前記コンピューティングシステムに関連付けられた第２のホストに前記暗号化された鍵を送信させることと
を行うように設定されることと、
前記コンピューティングシステムによって、前記クライアントデバイスから、前記暗号化された鍵を含む第２の要求を受信することと、
前記コンピューティングシステムによって、前記暗号化された鍵が前に解読されなかったと決定すると、前記鍵を取得するために、受信した前記暗号化された鍵を解読することと、
前記コンピューティングシステムによって、前記第２のホストから前記クライアントデバイスに、第２の命令と前記解読から取得された前記鍵とを送信することであって、前記第２の命令が、前記第２のホストに関連付けられた第２のクッキーとして、前記解読から取得された前記鍵を前記クライアントデバイス上に記憶させるように設定されることと、を含む、方法。
【請求項２】
前記コンピューティングシステムによって、前記クライアントデバイスから前の要求を受信することであって、前記前の要求は、前記コンピューティングシステムに関連付けられた第３のホストに向けられ、前記要求が受信される前に受信されることと、
前記コンピューティングシステムによって、前記前の要求に応答して、前記クライアントデバイスにリダイレクション命令を送信することであって、前記クライアントデバイスに、前記第１の要求を前記第１のホストに送らせるように設定されるリダイレクション命令を送信することと、をさらに含む、請求項１に記載の方法。
【請求項３】
前記コンピューティングシステムによって、ナンスを生成することと、
前記コンピューティングシステムによって、前記クライアントデバイスに前記ナンスを送信することと、
をさらに含み、
前記第１の命令が、前記クライアントデバイスに、前記コンピューティングシステムに関連付けられた前記第２のホストに前記暗号化された鍵とともに前記ナンスを送信させるように設定され、
前記暗号化された鍵が前に解読されなかったと前記決定することが、前記ナンスに基づく、
請求項１に記載の方法。
【請求項４】
前記コンピューティングシステムによって、第２のユーザに関連付けられた第２のクライアントデバイスから、前記暗号化された鍵と前記ナンスとを含む第３の要求を受信することと、
前記コンピューティングシステムによって、（１）前記ナンスが前に使用された、または（２）前記ナンスが、前記暗号化された鍵に結びつけられていない、と決定することと、
前記コンピューティングシステムによって、前記第３の要求を拒否することと
をさらに含む、請求項３に記載の方法。
【請求項５】
前記第１のクッキーが、クライアント側スクリプトによってアクセス可能であるように設定され、前記第２のクッキーが、クライアント側スクリプトによってアクセス不可能であるように設定された、請求項１に記載の方法。
【請求項６】
前記第１のホストと前記第２のホストとが異なる、請求項１に記載の方法。
【請求項７】
前記第２のホストが、サードパーティによってホストされたウェブページへのアクセスを与えるように設定された、請求項１に記載の方法。
【請求項８】
前記コンピューティングシステムによって、前記クライアントデバイスから、前記第２のクッキーとして記憶された前記鍵を含む第３の要求を受信することと、
前記コンピューティングシステムによって、前記第３の要求とともに受信された前記鍵に基づいて、第２の検証トークンを生成することと、
前記コンピューティングシステムによって、前記第３の要求に応答して、前記クライアントデバイスにウェブページを送信することであって、前記ウェブページが、前記第２の検証トークンと命令とを含み、前記命令が、前記クライアントデバイスに、
前記第２の検証トークンを、前記第１のクッキーとして記憶された前記検証トークンと比較することと、
前記比較に基づいて、前記ウェブページをレンダリングすべきかどうかを決定することと
を行わせるように設定されることと、をさらに含む、請求項１に記載の方法。
【請求項９】
ソフトウェアを具現化する１つまたは複数のコンピュータ可読非一時的記憶媒体であって、前記ソフトウェアは、実行されたとき、
ユーザに関連付けられたクライアントデバイスから、コンピューティングシステムに関連付けられた第１のホストに向けられた第１の要求を受信することと、
前記第１の要求に応答して鍵を生成することと、
前記鍵に基づいて検証トークンを生成することと、
前記鍵に基づいて、暗号化された鍵を生成することと、
前記コンピューティングシステムに関連付けられた前記第１のホストから前記クライアントデバイスに、第１の命令と、前記検証トークンと、前記暗号化された鍵とを送信することであって、前記第１の命令は、
前記クライアントデバイス上に第１のクッキーとして前記検証トークンを記憶させることであって、前記第１のクッキーが前記第１のホストに関連付けられた、前記検証トークンを記憶させることと、
前記クライアントデバイスに、前記コンピューティングシステムに関連付けられた第２のホストに前記暗号化された鍵を送信させることと
を行うように設定されることと、
前記クライアントデバイスから、前記暗号化された鍵を含む第２の要求を受信することと、
前記暗号化された鍵が前に解読されなかったと決定すると、前記鍵を取得するために、受信した前記暗号化された鍵を解読することと、
前記第２のホストから前記クライアントデバイスに、第２の命令と前記解読から取得された前記鍵とを送信することであって、前記第２の命令が、前記第２のホストに関連付けられた第２のクッキーとして、前記解読から取得された前記鍵を前記クライアントデバイス上に記憶させるように設定されることと、
を行うように動作可能である、
記憶媒体。
【請求項１０】
前記ソフトウェアは、実行されたとき、
前記クライアントデバイスから前の要求を受信することであって、前記前の要求は、前記コンピューティングシステムに関連付けられた第３のホストに向けられ、前記要求が受信される前に受信されることと、
前記前の要求に応答して、前記クライアントデバイスにリダイレクション命令を送信することであって、前記クライアントデバイスに、前記第１のホストに前記第１の要求を送らせるように設定されることと、を行うようにさらに動作可能である、請求項９に記載の媒体。
【請求項１１】
前記ソフトウェアが、実行されたとき、
ナンスを生成することと、
前記クライアントデバイスに前記ナンスを送信することと
を行うようにさらに動作可能であり、
前記第１の命令が、前記クライアントデバイスに、前記コンピューティングシステムに関連付けられた前記第２のホストに前記暗号化された鍵とともに前記ナンスを送信させるように設定され、
前記暗号化された鍵が前に解読されなかったと前記決定することが、前記ナンスに基づく、請求項９に記載の媒体。
【請求項１２】
前記ソフトウェアは、実行されたとき、
第２のユーザに関連付けられた第２のクライアントデバイスから、前記暗号化された鍵と前記ナンスとを含む第３の要求を受信することと、
（１）前記ナンスが前に使用された、または（２）前記ナンスが、前記暗号化された鍵に結びつけられていない、と決定することと、
前記第３の要求を拒否することと、
を行うようにさらに動作可能である、請求項１１に記載の媒体。
【請求項１３】
前記第２のホストが、サードパーティによってホストされたウェブページへのアクセスを与えるように設定された、請求項９に記載の媒体。
【請求項１４】
前記ソフトウェアは、実行されたとき、
前記クライアントデバイスから、前記第２のクッキーとして記憶された前記鍵を含む第３の要求を受信することと、
前記第３の要求とともに受信された前記鍵に基づいて、第２の検証トークンを生成することと、
前記第３の要求に応答して、前記クライアントデバイスにウェブページを送信することであって、前記ウェブページが、前記第２の検証トークンと命令とを含み、前記命令が、前記クライアントデバイスに、
前記第２の検証トークンを、前記第１のクッキーとして記憶された前記検証トークンと比較することと、
前記比較に基づいて、前記ウェブページをレンダリングすべきかどうかを決定することと
を行わせるように設定されることと、
を行うようにさらに動作可能である、請求項９に記載の媒体。
【請求項１５】
１つまたは複数のプロセッサと、
前記プロセッサのうちの１つまたは複数に結合され、命令を備える、１つまたは複数のコンピュータ可読非一時的記憶媒体と
を備えるコンピューティングシステムであって、前記命令は、前記プロセッサのうちの１つまたは複数によって実行されたとき、前記システムに、
ユーザに関連付けられたクライアントデバイスから、前記コンピューティングシステムに関連付けられた第１のホストに向けられた第１の要求を受信することと、
前記第１の要求に応答して鍵を生成することと、
前記鍵に基づいて検証トークンを生成することと、
前記鍵に基づいて、暗号化された鍵を生成することと、
前記コンピューティングシステムに関連付けられた前記第１のホストから前記クライアントデバイスに、第１の命令と、前記検証トークンと、前記暗号化された鍵とを送信することであって、前記第１の命令は、
前記第１のホストに関連付けられた第１のクッキーとして前記検証トークンを前記クライアントデバイス上に記憶させることと、
前記クライアントデバイスに、前記コンピューティングシステムに関連付けられた第２のホストに前記暗号化された鍵を送信させることと
を行うように設定されることと、
前記クライアントデバイスから、前記暗号化された鍵を含む第２の要求を受信することと、
前記暗号化された鍵が前に解読されなかったと決定すると、前記鍵を取得するために、受信した前記暗号化された鍵を解読することと、
前記第２のホストから前記クライアントデバイスに、第２の命令と前記解読から取得された前記鍵とを送信することであって、前記第２の命令が、前記第２のホストに関連付けられた第２のクッキーとして、前記解読から取得された前記鍵を前記クライアントデバイス上に記憶させるように設定されることと、
を行わせるように動作可能である、
コンピューティングシステム。
【請求項１６】
前記プロセッサは、前記命令を実行したとき、
前記クライアントデバイスから前の要求を受信することであって、前記前の要求は、前記コンピューティングシステムに関連付けられた第３のホストに向けられ、前記要求が受信される前に受信されることと、
前記前の要求に応答して、前記クライアントデバイスにリダイレクション命令を送信することであって、前記クライアントデバイスに、前記第１のホストに前記第１の要求を送らせるように設定される、リダイレクション命令を送信することと、
を行うようにさらに動作可能である、請求項１５に記載のシステム。
【請求項１７】
前記プロセッサが、前記命令を実行したとき、
ナンスを生成することと、
前記クライアントデバイスに前記ナンスを送信することと、
を行うようにさらに動作可能であり、
前記第１の命令が、前記クライアントデバイスに、前記コンピューティングシステムに関連付けられた前記第２のホストに前記暗号化された鍵とともに前記ナンスを送信させるように設定され、
前記暗号化された鍵が前に解読されなかったと前記決定することが、前記ナンスに基づく、
請求項１５に記載のシステム。
【請求項１８】
前記プロセッサは、前記命令を実行したとき、
第２のユーザに関連付けられた第２のクライアントデバイスから、前記暗号化された鍵と前記ナンスとを含む第３の要求を受信することと、
（１）前記ナンスが前に使用された、または（２）前記ナンスが、前記暗号化された鍵に結びつけられていない、と決定することと、
前記第３の要求を拒否することと、
を行うようにさらに動作可能である、請求項１７に記載のシステム。
【請求項１９】
前記第２のホストが、サードパーティによってホストされたウェブページへのアクセスを与えるように設定された、請求項１５に記載のシステム。
【請求項２０】
前記プロセッサは、前記命令を実行したとき、
前記クライアントデバイスから、前記第２のクッキーとして記憶された前記鍵を含む第３の要求を受信することと、
前記第３の要求とともに受信された前記鍵に基づいて、第２の検証トークンを生成することと、
前記第３の要求に応答して、前記クライアントデバイスにウェブページを送信することであって、前記ウェブページが、前記第２の検証トークンと命令とを含み、前記命令が、前記クライアントデバイスに、
前記第２の検証トークンを、前記第１のクッキーとして記憶された前記検証トークンと比較することと、
前記比較に基づいて、前記ウェブページをレンダリングすべきかどうかを決定することと
を行わせるように設定されることと
を行うようにさらに動作可能である、請求項１５に記載のシステム。
【請求項２１】
コンピューティングシステムによって、ユーザに関連付けられたクライアントデバイスから、前記コンピューティングシステムに関連付けられた第１のホストに向けられた第１の要求を受信することと、
前記コンピューティングシステムによって、前記第１の要求に応答して鍵を生成することと、
前記コンピューティングシステムによって、前記鍵に基づいて検証トークンを生成することと、
前記コンピューティングシステムによって、前記鍵に基づいて、暗号化された鍵を生成することと、
前記コンピューティングシステムによって、前記コンピューティングシステムに関連付けられた前記第１のホストから前記クライアントデバイスに、第１の命令と、前記検証トークンと、前記暗号化された鍵とを送信することであって、前記第１の命令は、
前記第１のホストに関連付けられた第１のクッキーとして前記検証トークンを前記クライアントデバイス上に記憶させることと、
前記クライアントデバイスに、前記コンピューティングシステムに関連付けられた第２のホストに前記暗号化された鍵を送信させることと
を行うように設定されることと、
前記コンピューティングシステムによって、前記クライアントデバイスから、前記暗号化された鍵を含む第２の要求を受信することと、
前記コンピューティングシステムによって、前記暗号化された鍵が前に解読されなかったと決定すると、前記鍵を取得するために、受信した前記暗号化された鍵を解読することと、
前記コンピューティングシステムによって、前記第２のホストから前記クライアントデバイスに、第２の命令と前記解読から取得された前記鍵とを送信することであって、前記第２の命令が、前記第２のホストに関連付けられた第２のクッキーとして、前記解読から取得された前記鍵を前記クライアントデバイス上に記憶させるように設定されることと、を含む、コンピュータ実装方法。
【請求項２２】
前記コンピューティングシステムによって、前記クライアントデバイスから前の要求を受信することであって、前記前の要求は、前記コンピューティングシステムに関連付けられた第３のホストに向けられ、前記要求が受信される前に受信されることと、
前記コンピューティングシステムによって、前記前の要求に応答して、前記クライアントデバイスにリダイレクション命令を送信することであって、前記クライアントデバイスに、前記第１のホストに前記第１の要求を送らせるように設定されるリダイレクション命令を送信することと、をさらに含む、請求項２１に記載の方法。
【請求項２３】
前記コンピューティングシステムによって、ナンスを生成することと、
前記コンピューティングシステムによって、前記クライアントデバイスに前記ナンスを送信することと、
をさらに含み、
前記第１の命令が、前記クライアントデバイスに、前記コンピューティングシステムに関連付けられた前記第２のホストに前記暗号化された鍵とともに前記ナンスを送信させるように設定され、
前記暗号化された鍵が前に解読されなかったと前記決定することが、前記ナンスに基づく、
請求項２１または２２に記載の方法。
【請求項２４】
前記コンピューティングシステムによって、第２のユーザに関連付けられた第２のクライアントデバイスから、前記暗号化された鍵と前記ナンスとを含む第３の要求を受信することと、
前記コンピューティングシステムによって、（１）前記ナンスが前に使用された、または（２）前記ナンスが、前記暗号化された鍵に結びつけられていない、と決定することと、
前記コンピューティングシステムによって、前記第３の要求を拒否することと
をさらに含む、請求項２３に記載の方法。
【請求項２５】
前記第１のクッキーが、クライアント側スクリプトによってアクセス可能であるように設定され、前記第２のクッキーが、クライアント側スクリプトによってアクセス不可能であるように設定された、請求項２１から２４のいずれか一項に記載の方法。
【請求項２６】
前記第１のホストと前記第２のホストとが異なる、請求項２１から２５のいずれか一項に記載の方法。
【請求項２７】
前記第２のホストが、サードパーティによってホストされたウェブページへのアクセスを与えるように設定された、請求項２１から２６のいずれか一項に記載の方法。
【請求項２８】
前記コンピューティングシステムによって、前記クライアントデバイスから、前記第２のクッキーとして記憶された前記鍵を含む第３の要求を受信することと、
前記コンピューティングシステムによって、前記第３の要求とともに受信された前記鍵に基づいて、第２の検証トークンを生成することと、
前記コンピューティングシステムによって、前記第３の要求に応答して、前記クライアントデバイスにウェブページを送信することと、をさらに含み、前記ウェブページが、前記第２の検証トークンと命令とを含み、前記命令が、前記クライアントデバイスに、
前記第２の検証トークンを、前記第１のクッキーとして記憶された前記検証トークンと比較することと、
前記比較に基づいて、前記ウェブページをレンダリングすべきかどうかを決定することと
を行わせるように設定される、
請求項２１から２７のいずれか一項に記載の方法。
【請求項２９】
コンピューティングシステムの１つまたは複数のプロセッサによって実行されたとき、前記プロセッサ、特にコンピューティングシステムに、請求項２１から２８のいずれか一項に記載の方法のすべてのステップを含む方法を行わせるように動作可能であるソフトウェアを具現する、１つまたは複数のコンピュータ可読非一時的記憶媒体。
【請求項３０】
１つまたは複数のプロセッサと、前記プロセッサのうちの１つまたは複数に結合され、命令を備える、１つまたは複数のコンピュータ可読非一時的記憶媒体とを備える、コンピューティングシステムであって、前記命令が、前記プロセッサのうちの１つまたは複数によって実行されたとき、前記システムに、請求項２１から２８のいずれか一項に記載の方法のすべてのステップを含む方法を行わせるように動作可能である、コンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、セッション固定アタックを防ぐことなど、オンラインセキュリティを改善するためのシステムおよび方法に関する。
【背景技術】
【０００２】
ウェブサイトなどのオンラインアプリケーションは、データプランを介したインターネットアクセスが手頃でない（ｕｎａｆｆｏｒｄａｂｌｅ）ことがあるロケーションにおいて、人々がインターネットにアクセスすることを可能にし得る。オンラインアプリケーションは、サードパーティコンテンツおよびサービスプロバイダが、本来ならそれらのプロバイダのウェブサイトにアクセスすることが可能でない人々に、コンテンツおよびサービスを提供することを可能にするポータルのように働き得る。サードパーティウェブサイトコンテンツを含む、オンラインアプリケーションを通して提供されるどのコンテンツも、オンラインアプリケーションのドメインの下で提供され得る。
【０００３】
スマートフォン、タブレットコンピュータ、またはラップトップコンピュータなど、モバイルコンピューティングデバイスは、ＧＰＳ受信機、コンパス、ジャイロスコープ、または加速度計など、そのデバイスのロケーション、方向、または向きを決定するための機能性を含み得る。そのようなデバイスは、ＢＬＵＥＴＯＯＴＨ通信、ニアフィールド通信（ＮＦＣ）、あるいは赤外線（ＩＲ）通信、あるいは無線ローカルエリアネットワーク（ＷＬＡＮ）またはセルラー電話ネットワークとの通信など、無線通信のための機能性をも含み得る。そのようなデバイスは、１つまたは複数のカメラ、スキャナ、タッチスクリーン、マイクロフォン、またはスピーカーをも含み得る。モバイルコンピューティングデバイスは、ゲーム、ウェブブラウザ、またはソーシャルネットワーキングアプリケーションなど、ソフトウェアアプリケーションをも実行し得る。ソーシャルネットワーキングアプリケーションを用いると、ユーザは、自身のソーシャルネットワーク内の他のユーザとつながり、通信し、情報を共有し得る。
【発明の概要】
【０００４】
本明細書で開示される特定の実施形態は、インターネットアクセスがあまり手頃でないことがあるマーケットにおいて、人々にインターネットサービスへのアクセスを与える、（たとえば、０．ｆｂｓ．ｃｏｍにおいてホストされる）オンラインポータルに関係する。ポータルを通して、サードパーティウェブサイトは、データ料金を負担することなしに無料で利用可能にされ得る。これらのサードパーティウェブサイトは、０．ｆｂｓ．ｃｏｍ上のサブドメインとして扱われ得る。たとえば、ｗｗｗ．３ｒｄｐａｒｔｙ．ｃｏｍにおいてホストされるサードパーティウェブサイトが、ホストｗｗｗ−３ｒｄｐａｒｔｙ−ｃｏｍ．０．ｆｂｓ．ｃｏｍからポータルを通して利用可能にされ得る。サードパーティウェブサイトはサブドメインであるので、より高いレベルのドメイン（たとえば、０．ｆｂｓ．ｃｏｍ）に関連付けられたユーザのクッキーは、たとえば、サードパーティウェブサイト上にホストされたクライアント側スクリプト言語からのアタックに対して脆弱であり得る。
【０００５】
このセキュリティ問題に対処するために、本明細書で開示される特定の実施形態は、サードパーティオリジンとは別個のセキュアオリジン（ｓｅｃｕｒｅ  ｏｒｉｇｉｎ）に関連付けられたクッキーとして検証トークンを記憶させ、その結果、検証トークンクッキーは、サードパーティオリジンからホストされる（悪意のあり得る）クライアント側スクリプト記述によってアクセスおよび／または変更され得ない。特定の実施形態では、ユーザは、ポータルとのセッションを確立することを要求し得る。要求されたセッション鍵をユーザに直接提供するのではなく、ポータルのホストは、セキュアオリジンにユーザのブラウザをリダイレクトし得る。セキュアオリジンは、ユーザの要求に応答して、ユーザに検証トークンを提供し得、その検証トークンは、後続の通信中に使用されるセッション鍵の完全性を検証するためにブラウザによって使用され得る。検証トークンは、セキュアオリジンに関連付けられたクッキーとして記憶され得る。セキュアオリジンは、さらに、ナンスとともに、セッション鍵の暗号化されたバージョンをユーザに提供し、サードパーティウェブサイトがポータル上に提供される、リライトオリジン（ｒｅｗｒｉｔｅ  ｏｒｉｇｉｎ）またはプロキシに、ユーザのブラウザをリダイレクトし得る。特定の実施形態では、リダイレクションは、セッション鍵の暗号化されたバージョンとナンスとをリライトオリジンに対して提示させ得る。暗号化された鍵が前に解読されていなかったことをナンスが指示する場合、サーバは、暗号化されたセッション鍵を解読し、解読されたセッション鍵を記憶のためにブラウザに返し得る。ナンスのために、暗号化されたセッション鍵は１回のみ解読され得る。ユーザとアタッカー／ハッカーの両者ではなく、ユーザまたはアタッカー／ハッカーのみが、サーバから、解読されたセッション鍵を取得することができるので、ユーザとアタッカー／ハッカーとは、両者とも同じセッション鍵を取得することはできず、それにより、セッション固定を防ぐ。
【０００６】
本明細書で開示される実施形態は例にすぎず、本開示の範囲はそれらに限定されない。特定の実施形態は、上記で開示された実施形態の構成要素、要素、特徴、機能、動作、またはステップのすべてを含むか、いくつかを含むか、またはいずれをも含まないことがある。本発明による実施形態は、特に、方法、記憶媒体、システムおよびコンピュータプログラム製品を対象とする添付の特許請求の範囲で開示され、１つの請求項カテゴリー、たとえば、方法において述べられた任意の特徴は、別の請求項カテゴリー、たとえば、システムにおいても請求され得る。添付の特許請求の範囲への依存性または参照は、形式的理由のみで選定される。ただし、前の請求項への意図的な参照（特に複数の依存性）から生じる主題も請求され得、その結果、請求項とその特徴との任意の組合せが、開示され、添付の特許請求の範囲で選定された依存性にかかわらず請求され得る。請求され得る主題は、添付の特許請求の範囲に記載の特徴の組合せだけでなく、特許請求の範囲における特徴の任意の他の組合せも含み、特許請求の範囲において述べられた各特徴は、特許請求の範囲における任意の他の特徴または他の特徴の組合せと組み合わせられ得る。さらに、本明細書で説明または示される実施形態および特徴のいずれかは、別個の請求項において、ならびに／あるいは、本明細書で説明もしくは示される任意の実施形態もしくは特徴との、または添付の特許請求の範囲の特徴のいずれかとの任意の組合せで請求され得る。
【０００７】
実施形態では、コンピュータ実装方法が提供され得、本方法は、以下のステップ、すなわち、
コンピューティングシステムによって、ユーザに関連付けられたクライアントデバイスから、コンピューティングシステムに関連付けられた第１のホストに向けられた第１の要求を受信することと、
コンピューティングシステムによって、第１の要求に応答して鍵を生成することと、
コンピューティングシステムによって、鍵に基づいて検証トークンを生成することと、
コンピューティングシステムによって、鍵に基づいて、暗号化された鍵を生成することと、
コンピューティングシステムによって、コンピューティングシステムに関連付けられた第１のホストからクライアントデバイスに、第１の命令と、検証トークンと、暗号化された鍵とを送信することであって、第１の命令は、
第１のホストに関連付けられた第１のクッキーとして検証トークンをクライアントデバイス上に記憶させることと、
クライアントデバイスに、コンピューティングシステムに関連付けられた第２のホストに暗号化された鍵を送信させることと
を行うように設定されることと、
コンピューティングシステムによって、クライアントデバイスから、暗号化された鍵を含む第２の要求を受信することと、
コンピューティングシステムによって、暗号化された鍵が前に解読されなかったと決定すると、鍵を取得するために、受信した暗号化された鍵を解読することと、
コンピューティングシステムによって、第２のホストからクライアントデバイスに、第２の命令と解読から取得された鍵とを送信することであって、第２の命令が、第２のホストに関連付けられた第２のクッキーとして、解読から取得された鍵をクライアントデバイス上に記憶させるように設定されることと、
を含む。
【０００８】
実施形態では、１つまたは複数のコンピュータ可読非一時的記憶媒体が提供され得、記憶媒体は、コンピューティングシステムの１つまたは複数のプロセッサによって実行されたとき、プロセッサ、特にコンピューティングシステムに、本明細書でまたは添付の特許請求の範囲で説明される任意の実施形態に記載の方法のすべてのステップを含む方法を行わせるように動作可能であるソフトウェアを具現する。
【０００９】
実施形態では、コンピューティングシステムが提供され得、コンピューティングシステムは、１つまたは複数のプロセッサと、プロセッサのうちの１つまたは複数に結合され、命令、特にコンピュータ実行可能命令を備える、１つまたは複数のコンピュータ可読非一時的記憶媒体とを備え、命令は、プロセッサのうちの１つまたは複数によって実行されたとき、システムに、本明細書でまたは添付の特許請求の範囲で説明される任意の実施形態に記載の方法のすべてのステップを含む方法を行わせるように動作可能である。
【００１０】
実施形態では、本方法は、
コンピューティングシステムによって、クライアントデバイスから前の要求を受信することであって、前の要求は、コンピューティングシステムに関連付けられた第３のホストに向けられ、要求が受信される前に受信されることと、
コンピューティングシステムによって、前の要求に応答して、クライアントデバイスにリダイレクション命令を送信することであって、クライアントデバイスに、第１のホストに第１の要求を送らせるように設定されるリダイレクション命令を送信することとを含み得る。
【００１１】
実施形態では、本方法は、
コンピューティングシステムによって、ナンスを生成することと、
コンピューティングシステムによって、クライアントデバイスにナンスを送信することと
をさらに含み得、
第１の命令は、クライアントデバイスに、コンピューティングシステムに関連付けられた第２のホストに暗号化された鍵とともにナンスを送信させるように設定され、
暗号化された鍵が前に解読されなかったと決定することは、ナンスに基づく。
【００１２】
実施形態では、本方法は、
コンピューティングシステムによって、第２のユーザに関連付けられた第２のクライアントデバイスから、暗号化された鍵とナンスとを含む第３の要求を受信することと、
コンピューティングシステムによって、（１）ナンスが前に使用された、または（２）ナンスが、暗号化された鍵に結びつけられていない、と決定することと、
コンピューティングシステムによって、第３の要求を拒否することと
をさらに含み得る。
【００１３】
本方法の実施形態では、第１のクッキーは、クライアント側スクリプトによってアクセス可能であるように設定され得、第２のクッキーは、クライアント側スクリプトによってアクセス不可能であるように設定され得る。
【００１４】
本方法の実施形態では、第１のホストと第２のホストとは異なり得る。
【００１５】
本方法の実施形態では、第２のホストは、サードパーティによってホストされたウェブページへのアクセスを与えるように設定され得る。
【００１６】
実施形態では、本方法は、
コンピューティングシステムによって、クライアントデバイスから、第２のクッキーとして記憶された鍵を含む第３の要求を受信することと、
コンピューティングシステムによって、第３の要求とともに受信された鍵に基づいて、第２の検証トークンを生成することと、
コンピューティングシステムによって、第３の要求に応答して、クライアントデバイスにウェブページを送信することであって、ウェブページが、第２の検証トークンと命令とを含み、命令が、クライアントデバイスに、
第２の検証トークンを、第１のクッキーとして記憶された検証トークンと比較することと、
比較に基づいて、ウェブページをレンダリングすべきかどうかを決定することと
を行わせるように設定されることと
をさらに含み得る。
【図面の簡単な説明】
【００１７】
【図１】ユーザがサーバとのセッションをセキュアに確立する例示的な通信シーケンス図である。
【図２】サーバとのセッションをセキュアに確立するための例示的な方法を示す図である。
【図３】例示的なネットワーク環境を示す図である。
【図４】例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【００１８】
特定の実施形態では、１つまたは複数のウェブサーバを使用して提供されるポータルサービスなど、オンラインアプリケーションは、ユーザがサードパーティウェブサイトにアクセスすることを可能にし得る。特定の実施形態では、サードパーティウェブサイトへのアクセスは、ポータルのドメインのサブドメインを通してポータルによって与えられ得る。特定の実施形態では、サードパーティウェブサイトをホストするために使用されるポータルのサブドメインは、サードパーティウェブサイトのアドレスに基づいて生成され得る。一例として、ポータルサービスプロバイダがアドレス０．ｆｂｓ．ｃｏｍにおいてホストされ、サードパーティウェブサイトがｗｗｗ．３ｒｄｐａｒｔｙ．ｃｏｍにおいてホストされる場合、ポータルは、アドレスｗｗｗ−３ｒｄｐａｒｔｙ−ｃｏｍ．０．ｆｂｓ．ｃｏｍを通してサードパーティウェブサイトを利用可能にし得る。この例では、サードパーティコンテンツへのアクセスは、ポータルのサブドメインを通して与えられる。
【００１９】
特定の実施形態では、ユーザがポータルと通信するとき、ポータルは、ユーザおよび／またはユーザとポータルとの間のセッションを識別するために、セッション鍵（たとえば、ＩＣＫ）を自動的に作成し得る。セッション鍵は、各ユーザについて一意であり得、ユーザのクライアントデバイス上のクッキーに（たとえば、クライアントデバイス上のブラウザに）記憶され得る。クライアントデバイスは、スマートフォン、デスクトップまたはラップトップコンピュータ、タブレット、ウェアラブルデバイス（たとえば、スマートウォッチ）、あるいはバーチャルリアリティヘッドセットなど、任意の好適なコンピューティングデバイスであり得る。記憶されたクッキーは、ユーザデバイスとポータルとの間の通信において、その２つの間のセッションを識別するために使用され得る。特定の実施形態では、そのクッキー内の情報が、ポータルのサーバ上のクッキージャー（ｃｏｏｋｉｅ  ｊａｒ）に関連付けられ得る。サーバ上のクッキージャーは、ユーザがポータルを通して対話するサードパーティウェブサイトのクッキーを記憶するために使用され得る。特定の実施形態では、セッション鍵は、サーバ上の対応するクッキージャーにアクセスし、および／またはそのクッキージャーを解読するために使用され得る。
【００２０】
特定の実施形態では、アタッカーとユーザとが、ポータルと通信するために同じＩＣＫを使用する場合、アタッカーはセッション固定を達成し得る。ＩＣＫは、（正当なユーザまたはアタッカーであり得る）通信エンティティが、対応するクッキージャーにアクセスすることを可能にするので、アタッカーとユーザの両者は、アタッカーとユーザが両者とも同じＩＣＫを使用してポータルと通信する場合、同じクッキージャーにアクセスし得る。したがって、たとえば、サーバ側クッキージャーが、ユーザとユーザの電子メールサーバとの間のセッションクッキーを含んでいる場合、ユーザのＩＣＫをもつアタッカーは、そのアタッカーが電子メールサーバのセッションクッキーへのアクセスをも有するので、そのセッションに関与することが可能であろう。これを達成するために、アタッカーは、たとえば、（１）ビクティム（ｖｉｃｔｉｍ）のＩＣＫを盗むこと、または（２）ビクティムがアタッカーのＩＣＫを使用してサーバと通信するように、ビクティムのシステム上にアタッカー自身のＩＣＫを埋め込むこと、のいずれかを行い得る。
【００２１】
特定の実施形態では、ＩＣＫが、ポータルを通してサードパーティウェブページによってホストされた悪意のあるクライアント側スクリプトにとってアクセス可能および／または変更可能であるクッキーとして記憶された場合、ＩＣＫはアタックに対して脆弱であり得る。たとえば、これは、ＩＣＫが、対応するサードパーティウェブページへのアクセスを与えるためにポータルによって割り振られたサブドメイン（たとえば、ｗｗｗ−３ｒｄｐａｒｔｙ−ｃｏｍ．０．ｆｂｓ．ｃｏｍ）の親ドメイン（たとえば、０．ｆｂｓ．ｃｏｍ）に関連付けられたクッキーとして記憶された場合に、発生し得る。悪意のあるサードパーティウェブサイトは、クライアントデバイス上で実行されたとき、アクセス可能クライアント側クッキーを操作し得るクライアント側スクリプトを含んでいることがある。したがって、ＩＣＫが、親ドメインに関連付けられたクッキーとして記憶された場合、ＩＣＫは、ブラウザが、一般に、クッキーをセットするために使用される所与のドメインとそのサブドメインのうちのいずれかとにとってクッキーをアクセス可能にするので、脆弱であり得る。したがって、クッキーが０．ｆｂｓ．ｃｏｍに関連付けられた場合、そのクッキーは、サードパーティウェブページが０．ｆｂｓ．ｃｏｍのサブドメインからポータルを通して提供されるとき、（たとえば、ＪａｖａＳｃｒｉｐｔを介して）そのページによってアクセスされ得る。
【００２２】
特定の実施形態では、セッション固定は、ポータルからの各通信応答が、要求において提供されたＩＣＫから導出された検証トークン、ＩＣＫＴを含むことを必要とすることによって防がれ得る。応答のＩＣＫＴは、次いで、最初に送信されたＩＣＫの完全性を保証するために、クライアント側で、セキュアに記憶された検証トークンＩＣＫＴと比較され得る。一例として、ポータルを介してサードパーティウェブページを要求しているユーザは、ローカルに記憶されたＩＣＫをポータルのサーバに提示し得、ポータルのサーバは、次いで、導出ｆ（ｉｃｋ）を使用してＩＣＫＴを生成し、返されるウェブページ内にそのＩＣＫＴを埋め込み得る。返されたウェブページをロードするとき、受信ＩＣＫＴは、前にセキュアに記憶されたＩＣＫＴと比較され得る。不一致は、要求中で送られたＩＣＫが損なわれたことを意味する。特定の実施形態では、ＩＣＫＴは、一方向性関数ｆ（ｉｃｋ）（たとえば、ＨＭＡＣ）を使用して元のＩＣＫから導出され得る。特定の実施形態では、ＩＣＫＴは、ユーザが最初にログインを要求するときなど、ＩＣＫが生成されるとき、生成され得る。ＩＣＫとは異なり、特定の実施形態におけるＩＣＫＴは、ｌｏｃａｌＳｔｏｒａｇｅになど、アタッカーによって到達不可能であるロケーションにあるクライアントデバイス上にセキュアに記憶され得る。クッキーとは異なり、同一オリジンポリシー（ｓａｍｅ−ｏｒｉｇｉｎ  ｐｏｌｉｃｙ）に従うｌｏｃａｌＳｔｏｒａｇｅは、オリジンによって分離され（各オリジンはそれ自体の別個のｌｏｃａｌＳｔｏｒａｇｅを有する）、これは、あるオリジンにおけるＪａｖａＳｃｒｉｐｔが、別のオリジンのｌｏｃａｌＳｔｏｒａｇｅにアクセスすることができないことを意味する。一例として、サードパーティウェブサイトがリライトオリジンを通してホストされ得るポータルのコンテキストでは、サードパーティリライトオリジン（たとえば、ｈｔｔｐ：／／３ｒｄｐａｒｔｙ．ｒｅｗｒｉｔｅ．０．ｆｂｓ．ｃｏｍ）を通してホストされた潜在的アタッカーのページは、ＩＣＫＴのオリジン（たとえば、ｈｔｔｐ：／／０．ｆｂｓ．ｃｏｍ）とは異なり得る。したがって、アタッカーのウェブページ上にホストされたスクリプトは、ＩＣＫＴが、異なるオリジンのｌｏｃａｌＳｔｏｒａｇｅにセキュアに記憶されるので、ＩＣＫＴにアクセスすることが可能でないであろう。ＩＣＫＴをセキュアに記憶するｌｏｃａｌＳｔｏｒａｇｅの使用に関して、特定の実施形態は、その内容全体が参照により本明細書に組み込まれる、「ＳＥＣＵＲＥ  ＣＯＮＴＥＮＴ  ＤＥＬＩＶＥＲＹ  ＯＶＥＲ  Ａ  ＤＯＭＡＩＮ  ＰＯＲＴＡＬ」と題し、２０１７年２月６日に出願された、米国特許出願第１５／４２５，９７４号において開示された、１つまたは複数のシステム、構成要素、要素、機能、方法、動作、またはステップを利用し得る。
【００２３】
ただし、すべてのウェブブラウザが、ｌｏｃａｌＳｔｏｒａｇｅをサポートするとは限らない（たとえば、Ｏｐｅｒａ  Ｍｉｎｉ）。特定の実施形態では、セキュアなストレージとしてｌｏｃａｌＳｔｏｒａｇｅを使用する代わりに、ＩＣＫＴは、ＩＣＫＴがアタッカーにとってアクセス不可能であり、ＩＣＫＴが発行されるときに固定され得ないように、本明細書で説明される実施形態による様式でクッキーとして記憶され得る。高レベルにおいて、ＩＣＫとＩＣＫＴとは、異なるホストに関連付けられたクッキーとして記憶され得る。これを達成するために、特定の実施形態では、ＩＣＫとＩＣＫＴとは、リダイレクト機構を介して異なるホストからクライアントデバイスに別々に送信され得る。たとえば、ＩＣＫは、ホストｒｅｗｒｉｔｅ．ｉ．ｏｒｇに関連付けられ得、ＩＣＫＴは、異なるホストｓｅｃｕｒｅ．０．ｆｂｓ．ｃｏｍ（またはｗｗｗ．０．ｆｂｓ．ｃｏｍ）に関連付けられ得る。ｒｅｗｒｉｔｅ．ｉ．ｏｒｇは、ｓｅｃｕｒｅ．０．ｆｂｓ．ｃｏｍと祖先ドメインを共有しないので、たとえば、ｗｗｗ−３ｒｄｐａｒｔｙ−ｃｏｍ．ｒｅｗｒｉｔｅ．ｉ．ｏｒｇに関連付けられたＪａｖａＳｃｒｉｐｔは、ｓｅｃｕｒｅ．０．ｆｂｓ．ｃｏｍに関連付けられたＩＣＫＴクッキーにアクセスすることができない。
【００２４】
特定の実施形態では、クライアントへのＩＣＫの送信は、ＩＣＫＴの送信から分離され得る。特定の実施形態では、ＩＣＫ鍵およびＩＣＫＴ検証トークンは、同時に生成され得、いずれもサーバによって残存され得ない。ＩＣＫは、ＩＣＫＴとともに、同時に同じホストからクライアントデバイスに送信され得るが、アタッカーが、ＩＣＫＴおよび関連付けられたＩＣＫをインターセプトすることができることが可能であり得る。アタッカーが、ＩＣＫＴおよび関連付けられたＩＣＫをインターセプトすることができる場合、ユーザとアタッカーの両者は、ＩＣＫに関連付けられたセッションを共有し、関連付けられたセッションにアクセスすることが可能であろう。これを防ぐために、サーバは、ＩＣＫをＩＣＫＴと直接送らないことがある。特定の実施形態では、サーバは、代わりに、本明細書ではＥＩＣＫと呼ばれる、暗号化されたＩＣＫをユーザに送信し得る。特定の実施形態では、ＥＩＣＫは、サーバのみに知られている秘密暗号化鍵を用いた二方向暗号化関数を使用して暗号化され得る。ＥＩＣＫを受信すると、クライアントデバイスは、ＥＩＣＫを解読してＩＣＫを取得するようにサーバに要求し得る。アタッカーが、同様に、同じＥＩＣＫを解読するようにサーバに要求するのを防ぐために、特定の実施形態では、システムは、そのような解読が許可される回数を制限する（たとえば１回）ために、ＥＩＣＫをナンスに結びつけ得る。したがって、アタッカーが、ＥＩＣＫと、ユーザが同じく有し得るナンスとをインターセプトすることが可能な場合でも、ナンスにより、当事者のうちの一方のみ（すなわち、アタッカーとユーザの両者でなく、アタッカーまたはユーザ）が、ＥＩＣＫを解読するようにサーバに要求することを成功させることが可能であろう。このセキュリティ対策は、アタッカーとユーザとが、両者とも同じＩＣＫ／ＩＣＫＴを使用するのを防ぎ、それにより、セッション固定を防ぐであろう。
【００２５】
図１は、本明細書で説明される特定の実施形態による、ユーザがポータルとのセッションを確立する通信シーケンス図の一例を示す。示されている例は、ユーザ１００と、ポータル１０１（たとえば、０．ｆｒｅｅｂａｓｉｃｓ．ｃｏｍ）、セキュアオリジン１０２（たとえば、ｗｗｗ．０．ｆｒｅｅｂａｓｉｃｓ．ｃｏｍ）、およびリライトオリジン１０３（たとえば、ｒｅｗｒｉｔｅ．ｉ．ｏｒｇ）との間の通信を示す。上記で説明されたように、セキュアオリジン１０２は、セキュアオリジン１０２のクッキーが、リライトオリジン１０３を通して提供されるサードパーティウェブページ中のクライアント側スクリプトにとってアクセス可能でないという点でセキュアである。特定の実施形態では、セキュアオリジン１０２（たとえば、ｗｗｗ．０．ｆｂｓ．ｃｏｍまたはｓｅｃｕｒｅ．０．ｆｂｓ．ｃｏｍ）は、非公開サフィックスリストホストをリライトオリジン（たとえば、ｒｅｗｒｉｔｅ．ｉ．ｏｒｇ）と共有しないことがある。上記で説明されたように、リライトオリジン１０３は、サードパーティウェブサイトへのユーザアクセスを与えるように設定される。特定の実施形態では、ポータル１０１、セキュアオリジン１０２、およびリライトオリジン１０３に関連付けられた（１つまたは複数の）サーバが、共通エンティティによって制御される。
【００２６】
ステップ１１０において、特定の実施形態におけるユーザ１００は、ユーザのウェブブラウザ、またはポータルに関連付けられたリモートサーバと通信することが可能な任意の他のタイプのアプリケーションを通して、ポータルとのログインプロシージャを開始し得る。特定の実施形態では、初期要求は、ＨＴＴＰ  ＧＥＴ要求を含み得る。ユーザは、ウエルカムスクリーン、ログインスクリーンを示され、および／またはポータル１０１のサービス利用規約を受け入れるように求められ得る。
【００２７】
ステップ１２０において、ポータル１０１は、セキュアオリジン１０２にユーザのブラウザ１００をリダイレクトする、（たとえば、ステータスコード３０２を伴うＨＴＴＰ応答を使用する）リダイレクション命令で応答し得る。
【００２８】
ステップ１２５において、ユーザのブラウザ１００は、リダイレクション命令に応じて、セキュアオリジン１０２に要求（たとえば、ＨＴＴＰ  ＧＥＴ）を送り得る。特定の実施形態では、要求に応答して、セキュアオリジン１０２に関連付けられたサーバは、ＩＣＫ鍵を生成し得る。特定の実施形態では、ＩＣＫ鍵は、ユーザがポータルとのセッションを確立することを要求するたびに新たに生成されるランダム鍵または擬似ランダム鍵であり得る。特定の実施形態では、ＩＣＫ鍵は、ＩＣＫ鍵に関連付けられたクッキージャーにコールドアクセスする（ｃｏｌｄ−ａｃｃｅｓｓ）ことに対するユーザプライバシーを可能にするために、サーバによって残存されないことがある。ＩＣＫ鍵生成は、ＩＣＫ鍵生成の完全性をさらに保証するために、要求側によって提供されるものによって影響を及ぼされないことを諒解されたい。特定の実施形態では、ＩＣＫ鍵が生成されると、サーバは、ＩＣＫ鍵に関連付けられる伝送中の鍵をも生成し得る。特定の実施形態では、ＥＩＣＫと呼ばれることがある伝送中の鍵は、ＥＩＣＫ＝Ｅ（ＳＥＣＲＥＴ，ＩＣＫ）であるような暗号化関数を使用してＩＣＫ鍵を暗号化することによって生成され得、ここで、ＳＥＣＲＥＴはサーバ側秘密鍵であり、暗号化関数Ｅ（Ｋ，Ｍ）は、鍵Ｋの下でのメッセージＭの対称暗号化を表す。特定の実施形態では、サーバは、ナンスＮをも生成し得、ナンスＮは、ＥＩＣＫが１回のみ解読されることを保証するために、後続の通信中にサーバに１回のみ提示され得る。特定の実施形態では、ナンスＮは、ナンスＮの検証が、関連付けられたＥＩＣＫの提示に依存するように、ＥＩＣＫに結びつけられ得る（たとえば、ナンスの検証は、異なるＥＩＣＫがそのナンスとともに提示された場合は失敗し得る）。さらに、特定の実施形態では、サーバは、上記で説明されたように、検証トークンＩＣＫＴを生成し得る。ＩＣＫＴトークンは、たとえば、ＩＣＫがＩＣＫＴから取得され得ないように、秘密鍵を用いたＨＭＡＣ関数、または任意の他の一方向性関数を使用して、ＩＣＫから導出され得る。
【００２９】
ステップ１３０において、サーバは、セキュアオリジン１０２からユーザ１００に応答を送り得る。応答は、ユーザのブラウザ１００に、たとえば、セキュアオリジン１０３．１に関連付けられたＪａｖａＳｃｒｉｐｔアクセス可能クライアント側クッキーとして、生成されたＩＣＫＴを記憶させる命令を含み得る。セキュアオリジン（たとえば、ｓｅｃｕｒｅ．０．ｆｂｓ．ｃｏｍまたはｗｗｗ．０．ｆｂｓ．ｃｏｍ）と、リライトオリジン（たとえば、ｒｅｗｒｉｔｅ．ｉ．ｏｒｇ）とは、非公開サフィックスリストホストを共有しないので、リライトオリジンを通してホストされた（悪意のあるコードを含んでいることがある）サイトは、セキュアオリジンに関連付けられたクッキーに影響を及ぼすことができないか、そのクッキーにアクセスすることができないか、またはそのクッキーをシャドーイングする（ｓｈａｄｏｗ）ことができない。アタッカーは、クッキーフラッディング（ｃｏｏｋｉｅ−ｆｌｏｏｄｉｎｇ）を使用してクッキーをパージすることが可能であり得るが、これは、新しいＩＣＫおよびＩＣＫＴが取得されることを引き置こすであろう。特定の実施形態では、ＩＣＫＴクッキーは、ＨｔｔｐＯｎｌｙフラグをセットされず、これは、ＩＣＫＴクッキーをクライアント側スクリプト（たとえば、セキュアオリジン１０２によってホストされるもの）にとってアクセス可能にし、その結果、ＩＣＫＴは、ＩＣＫの完全性を確認するためにクライアント側スクリプトによって使用され得る。特定の実施形態では、サーバは、セキュアオリジン１０２を通してユーザ１００にＥＩＣＫおよびナンスＮをも送り得る。ＥＩＣＫおよびナンスＮはアタックに対して脆弱であり得るので、実際のＩＣＫではなく暗号化されたＥＩＣＫを送ることは、この段階でＩＣＫがアタッカーにあらわにされるのを防ぐことを諒解されたい。
【００３０】
ステップ１４０において、ユーザ１００は、リライトオリジン１０３にＥＩＣＫおよびナンスＮを送り、リライトオリジン１０３にＥＩＣＫを解読するように要求し得る。たとえば、ＥＩＣＫおよびナンスＮは、リライトオリジン１０３に関連付けられたＵＲＬのクエリパラメータとして送信され得る。要求を受信すると、リライトオリジン１０３に関連付けられたサーバは、ナンスＮに基づいて、要求が有効であるかどうかを検証し得る。たとえば、サーバは、ナンスＮが前にすでに使用されたかどうかを検査し得る。ナンスがすでに使用された場合、サーバは、要求を阻止し、コード４０３を伴うＨＴＴＰ禁止応答を発行し得る。サーバはまた、ナンスＮが所与のＥＩＣＫに結びつけられているかどうかを検査し、ナンスＮとＥＩＣＫとが互いに結びつけられていない場合は要求を阻止し得る。このプロセスは、所与のＥＩＣＫがサーバによって１回のみ解読され得ることを保証し、これは、１人の要求元当事者のみが、サーバから、解読されたＩＣＫを取得することができることを保証する。ナンスＮがＥＩＣＫに結びつけられており、ナンスＮがこれまで使用されていないとサーバが決定した場合、サーバは、ナンスを使用されるものとしてマークし、たとえば、ＩＣＫ＝Ｄ（ＳＥＣＲＥＴ，ＥＩＣＫ）を使用して、ＥＩＣＫからＩＣＫを復元し得、ここで、ＳＥＣＲＥＴは、上記で説明された秘密暗号化鍵を表し、Ｄ（Ｋ，Ｍ）は、鍵Ｋの下でのメッセージＭの対称解読を表す。
【００３１】
ステップ１５０において、リライトオリジン１０３に関連付けられたサーバは、ＩＣＫとともに応答をユーザ１００に送り得る。特定の実施形態では、応答は、ユーザのブラウザ１００に、リライトオリジン１０３に関連付けられたクッキーとしてＩＣＫを記憶させる命令を含み得る。ＩＣＫは、ＩＣＫがクライアント側スクリプトによってアクセスされ得ないように、ＨｔｔｐＯｎｌｙクッキーとして記憶され得る。特定の実施形態では、サーバは、ユーザのブラウザ１００にポータル１０１との通信を再開させるリダイレクション命令（たとえば、コード３０２を伴うＨＴＴＰ応答）をもユーザ１００に送り得る（たとえば、ステップ１６０）。
【００３２】
異なるオリジンからのＩＣＫＴとＩＣＫとについて要求するためにユーザ１００をリダイレクトすることによって、特定の実施形態では、ＩＣＫＴクッキーとＩＣＫクッキーとは、異なるホストに関連付けられる（たとえば、ＩＣＫＴはセキュアオリジン１０２に関連付けられ、ＩＣＫはリライトオリジン１０３に関連付けられる）。アタッカーが、リライトオリジン１０３に関連付けられたＩＣＫを制御し得る場合でも、アタッカーは、ＩＣＫがＩＣＫＴに一致しないので、ＩＣＫ固定ベクトルとしてＩＣＫを使用することが可能でないであろう。たとえば、（たとえば、ユーザのＥＩＣＫおよびＮを盗むことによって、またはユーザにアタッカーのＥＩＣＫおよびＮを使用させることによって）アタッカーがＥＩＣＫおよびナンスＮを制御することができると仮定する。アタッカーが対応するＩＣＫを知ることを望む場合、アタッカーは、（ａ）サーバにＥＩＣＫを解読するように求めることなしに直接ＩＣＫを取得するために、ＥＩＣＫの暗号化を破る（これは可能性が低い）こと、または（ｂ）サーバにＥＩＣＫを解読するように求めること、のいずれかを行わなければならない。サーバが（ナンスＮにより）ＥＩＣＫを１回のみ解読するので、アタッカーとユーザの両者でなく、アタッカーまたはユーザのいずれかがＩＣＫを得ることができる。たとえば、アタッカーが、最初に、（たとえば、ユーザのＥＩＣＫまたはアタッカーのＥＩＣＫのいずれかを）解読するようにサーバに求める場合、サーバは、ユーザの後続の要求を拒否する。一方、ユーザが最初に解読し、アタッカーがその後解読することを試みる場合、サーバは、アタッカーの後続の要求を拒否する。したがって、アタッカーは、アタッカーとユーザの両者によって同じＩＣＫが使用されることを必要とする、セッション固定を達成することが可能でないであろう。さらに、まったくの偶然によって、アタッカーとユーザの両者について同じＩＣＫがランダムに生成されることは極めて可能性が低い。
【００３３】
図２は、サーバとのセッションをセキュアに確立するための例示的な方法２００を示す。この方法は、ステップ２１０において始まり得、コンピューティングシステムが、ユーザに関連付けられたクライアントデバイスから第１の要求を受信し得る。第１の要求は、コンピューティングシステムに関連付けられた第１のホスト（たとえば、セキュアオリジン）に向けられ得る。ステップ２２０において、システムは、第１の要求に応答して、鍵と、鍵に基づく検証トークンと、鍵に基づく暗号化された鍵とを生成し得る。ステップ２３０において、システムは、コンピューティングシステムに関連付けられた第１のホストからクライアントデバイスに、第１の命令と、検証トークンと、暗号化された鍵とを送信し得る。第１の命令は、クライアントデバイス上に第１のクッキーとして検証トークンを記憶させるように設定され得、第１のクッキーは第１のホストに関連付けられる。第１の命令は、クライアントデバイスに、コンピューティングシステムに関連付けられた第２のホスト（たとえば、リライトオリジン）に暗号化された鍵を送信させるようにも設定され得る。ステップ２４０において、システムは、クライアントデバイスから、暗号化された鍵を含む第２の要求を受信し得る。ステップ２５０において、システムは、暗号化された鍵が前に解読されたかどうかを決定し得る。ステップ２６０において、暗号化された鍵が前に解読されなかったと決定すると、システムは、鍵を取得するために、受信した暗号化された鍵を解読し得る。次いで、ステップ２７０において、システムは、第２のホストからクライアントデバイスに、第２の命令と解読から取得された鍵とを送信し得る。第２の命令は、クライアントデバイス上に第２のクッキーとして、解読から取得された鍵を記憶させるように設定され得、第２のクッキーは第２のホストに関連付けられる。代わりに、ステップ２５０において、鍵が前に解読されたとシステムが決定した場合、ステップ２８０において、システムはユーザの要求を阻止し得る。特定の実施形態は、適切な場合、図２の方法の１つまたは複数のステップを繰り返し得る。本開示は、図２の方法の特定のステップを、特定の順序で行われるものとして説明し、示すが、本開示は、図２の方法の任意の好適なステップが任意の好適な順序で行われることを企図する。その上、本開示は、図２の方法の特定のステップを含む、サーバとのセッションをセキュアに確立するための例示的な方法を説明し、示すが、本開示は、適切な場合、図２の方法のステップのすべてを含むか、いくつかを含むか、またはいずれも含まないことがある、任意の好適なステップを含む、サーバとのセッションをセキュアに確立するための任意の好適な方法を企図する。さらに、本開示は、図２の方法の特定のステップを行う特定の構成要素、デバイス、またはシステムを説明し、示すが、本開示は、図２の方法の任意の好適なステップを行う任意の好適な構成要素、デバイス、またはシステムの任意の好適な組合せを企図する。
【００３４】
図３は、ソーシャルネットワーキングシステムに関連付けられた例示的なネットワーク環境３００を示す。ネットワーク環境３００は、ネットワーク３１０によって互いに接続された、クライアントシステム３３０と、ソーシャルネットワーキングシステム３６０と、サードパーティシステム３７０とを含む。図３は、クライアントシステム３３０、ソーシャルネットワーキングシステム３６０、サードパーティシステム３７０、およびネットワーク３１０の特定の構成を示すが、本開示は、クライアントシステム３３０、ソーシャルネットワーキングシステム３６０、サードパーティシステム３７０、およびネットワーク３１０の任意の好適な構成を企図する。限定としてではなく一例として、クライアントシステム３３０、ソーシャルネットワーキングシステム３６０、およびサードパーティシステム３７０のうちの２つまたはそれ以上は、ネットワーク３１０をバイパスして、直接互いに接続され得る。別の例として、クライアントシステム３３０、ソーシャルネットワーキングシステム３６０、およびサードパーティシステム３７０のうちの２つまたはそれ以上は、全体的にまたは部分的に、物理的にまたは論理的に互いとコロケートされ得る。その上、図３は、特定の数のクライアントシステム３３０、ソーシャルネットワーキングシステム３６０、サードパーティシステム３７０、およびネットワーク３１０を示すが、本開示は、任意の好適な数のクライアントシステム３３０、ソーシャルネットワーキングシステム３６０、サードパーティシステム３７０、およびネットワーク３１０を企図する。限定としてではなく一例として、ネットワーク環境３００は、複数のクライアントシステム３３０と、ソーシャルネットワーキングシステム３６０と、サードパーティシステム３７０と、ネットワーク３１０とを含み得る。
【００３５】
本開示は任意の好適なネットワーク３１０を企図する。限定としてではなく一例として、ネットワーク３１０の１つまたは複数の部分は、アドホックネットワーク、イントラネット、エクストラネット、仮想プライベートネットワーク（ＶＰＮ）、ローカルエリアネットワーク（ＬＡＮ）、無線ＬＡＮ（ＷＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、無線ＷＡＮ（ＷＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、インターネットの一部分、公衆交換電話網（ＰＳＴＮ）の一部分、セルラー電話ネットワーク、またはこれらのうちの２つまたはそれ以上の組合せを含み得る。ネットワーク３１０は１つまたは複数のネットワーク３１０を含み得る。
【００３６】
リンク３５０は、クライアントシステム３３０と、ソーシャルネットワーキングシステム３６０と、サードパーティシステム３７０とを、通信ネットワーク３１０にまたは互いに接続し得る。本開示は任意の好適なリンク３５０を企図する。特定の実施形態では、１つまたは複数のリンク３５０は、１つまたは複数の、（たとえば、デジタル加入者回線（ＤＳＬ）またはデータオーバーケーブルサービスインターフェース仕様（ＤＯＣＳＩＳ）などの）有線リンク、（たとえば、Ｗｉ−Ｆｉまたはワールドワイドインターオペラビリティフォーマイクロウェーブアクセス（ＷｉＭＡＸ）などの）無線リンク、または（たとえば、同期光ネットワーク（ＳＯＮＥＴ）または同期デジタルハイアラーキ（ＳＤＨ）などの）光リンクを含む。特定の実施形態では、１つまたは複数のリンク３５０は、各々、アドホックネットワーク、イントラネット、エクストラネット、ＶＰＮ、ＬＡＮ、ＷＬＡＮ、ＷＡＮ、ＷＷＡＮ、ＭＡＮ、インターネットの一部分、ＰＳＴＮの一部分、セルラー技術ベースネットワーク、衛星通信技術ベースネットワーク、別のリンク３５０、または２つまたはそれ以上のそのようなリンク３５０の組合せを含む。リンク３５０は、必ずしもネットワーク環境３００全体にわたって同じである必要はない。１つまたは複数の第１のリンク３５０は、１つまたは複数の第２のリンク３５０とは１つまたは複数の点で異なり得る。
【００３７】
特定の実施形態では、クライアントシステム３３０は、ハードウェア、ソフトウェア、または埋込み論理構成要素、または２つまたはそれ以上のそのような構成要素の組合せを含み、クライアントシステム３３０によって実装またはサポートされる適切な機能性を行うことが可能な、電子デバイスであり得る。限定としてではなく一例として、クライアントシステム３３０は、デスクトップコンピュータ、ノートブックまたはラップトップコンピュータ、ネットブック、タブレットコンピュータ、電子ブックリーダー、ＧＰＳデバイス、カメラ、携帯情報端末（ＰＤＡ）、ハンドヘルド電子デバイス、セルラー電話、スマートフォン、拡張／仮想現実デバイス、他の好適な電子デバイス、あるいはそれらの任意の好適な組合せなど、コンピュータシステムを含み得る。本開示は任意の好適なクライアントシステム３３０を企図する。クライアントシステム３３０は、クライアントシステム３３０におけるネットワークユーザが、ネットワーク３１０にアクセスすることを可能にし得る。クライアントシステム３３０は、クライアントシステム３３０のユーザが、他のクライアントシステム３３０における他のユーザと通信することを可能にし得る。
【００３８】
特定の実施形態では、クライアントシステム３３０は、ＭＩＣＲＯＳＯＦＴ  ＩＮＴＥＲＮＥＴ  ＥＸＰＬＯＲＥＲ、ＧＯＯＧＬＥ  ＣＨＲＯＭＥまたはＭＯＺＩＬＬＡ  ＦＩＲＥＦＯＸなど、ウェブブラウザ３３２を含み得、１つまたは複数のアドオン、プラグイン、あるいは、ＴＯＯＬＢＡＲまたはＹＡＨＯＯ  ＴＯＯＬＢＡＲなど、他の拡張機能を有し得る。クライアントシステム３３０におけるユーザは、ウェブブラウザ３３２を（サーバ３６２、またはサードパーティシステム３７０に関連付けられたサーバなどの）特定のサーバに向けるユニフォームリソースロケータ（ＵＲＬ）または他のアドレスを入力し得、ウェブブラウザ３３２は、ハイパーテキスト転送プロトコル（ＨＴＴＰ）要求を生成し、ＨＴＴＰ要求をサーバに通信し得る。サーバは、ＨＴＴＰ要求を受け入れ、ＨＴＴＰ要求に応答する１つまたは複数のハイパーテキストマークアップ言語（ＨＴＭＬ）ファイルをクライアントシステム３３０に通信し得る。クライアントシステム３３０は、ユーザへの提示のためにサーバからのＨＴＭＬファイルに基づいてウェブページをレンダリングし得る。本開示は任意の好適なウェブページファイルを企図する。限定としてではなく一例として、ウェブページは、特定の必要に応じて、ＨＴＭＬファイル、拡張可能ハイパーテキストマークアップ言語（ＸＨＴＭＬ）ファイル、または拡張可能マークアップ言語（ＸＭＬ）ファイルから、レンダリングし得る。そのようなページは、たとえば、限定はしないが、ＪＡＶＡＳＣＲＩＰＴ、ＪＡＶＡ、ＭＩＣＲＯＳＯＦＴ  ＳＩＬＶＥＲＬＩＧＨＴで書かれたものなどのスクリプト、ＡＪＡＸ（非同期ＪＡＶＡＳＣＲＩＰＴおよびＸＭＬ）などのマークアップ言語とスクリプトとの組合せなどをも実行し得る。本明細書では、ウェブページへの言及は、適切な場合、（ブラウザがウェブページをレンダリングするために使用し得る）１つまたは複数の対応するウェブページファイルを包含し、その逆も同様である。
【００３９】
特定の実施形態では、ソーシャルネットワーキングシステム３６０は、オンラインソーシャルネットワークをホストすることができるネットワークアドレス指定可能なコンピューティングシステムであり得る。ソーシャルネットワーキングシステム３６０は、たとえば、ユーザプロファイルデータ、概念プロファイルデータ、ソーシャルグラフ情報、またはオンラインソーシャルネットワークに関係する他の好適なデータなど、ソーシャルネットワーキングデータを生成し、記憶し、受信し、送り得る。ソーシャルネットワーキングシステム３６０は、直接的にまたはネットワーク３１０を介してのいずれかで、ネットワーク環境３００の他の構成要素によってアクセスされ得る。限定としてではなく一例として、クライアントシステム３３０は、直接的にまたはネットワーク３１０を介してのいずれかで、ウェブブラウザ３３２、またはソーシャルネットワーキングシステム３６０に関連付けられたネイティブアプリケーション（たとえば、モバイルソーシャルネットワーキングアプリケーション、メッセージングアプリケーション、別の好適なアプリケーション、またはそれらの任意の組合せ）を使用して、ソーシャルネットワーキングシステム３６０にアクセスし得る。特定の実施形態では、ソーシャルネットワーキングシステム３６０は、１つまたは複数のサーバ３６２を含み得る。各サーバ３６２は、単一サーバ、あるいは複数のコンピュータまたは複数のデータセンターにわたる分散型サーバであり得る。サーバ３６２は、たとえば、限定はしないが、ウェブサーバ、ニュースサーバ、メールサーバ、メッセージサーバ、広告サーバ、ファイルサーバ、アプリケーションサーバ、交換サーバ、データベースサーバ、プロキシサーバ、本明細書で説明される機能またはプロセスを実施するのに好適な別のサーバ、あるいはそれらの任意の組合せなど、様々なタイプのものであり得る。特定の実施形態では、各サーバ３６２は、サーバ３６２によって実装またはサポートされる適切な機能性を行うための、ハードウェア、ソフトウェア、または埋込み論理構成要素、または２つまたはそれ以上のそのような構成要素の組合せを含み得る。特定の実施形態では、ソーシャルネットワーキングシステム３６０は、１つまたは複数のデータストア３６４を含み得る。データストア３６４は、様々なタイプの情報を記憶するために使用され得る。特定の実施形態では、データストア３６４に記憶された情報は、特定のデータ構造に従って編成され得る。特定の実施形態では、各データストア３６４は、リレーショナルデータベース、列指向データベース、相関データベース、または他の好適なデータベースであり得る。本開示は、特定のタイプのデータベースを説明するかまたは示すが、本開示は任意の好適なタイプのデータベースを企図する。特定の実施形態は、クライアントシステム３３０、ソーシャルネットワーキングシステム３６０、またはサードパーティシステム３７０が、データストア３６４に記憶された情報を管理する、取り出す、変更する、追加する、または削除することを可能にするインターフェースを提供し得る。
【００４０】
特定の実施形態では、ソーシャルネットワーキングシステム３６０は、１つまたは複数のデータストア３６４に、１つまたは複数のソーシャルグラフを記憶し得る。特定の実施形態では、ソーシャルグラフは、（各々特定のユーザに対応する）複数のユーザノードまたは（各々特定の概念に対応する）複数の概念ノードを含み得る、複数のノードと、ノードを接続する複数のエッジとを含み得る。ソーシャルネットワーキングシステム３６０は、オンラインソーシャルネットワークのユーザに、他のユーザと通信および対話する能力を提供し得る。特定の実施形態では、ユーザは、ソーシャルネットワーキングシステム３６０を介してオンラインソーシャルネットワークに加わり、次いで、ユーザがつなげられることを希望するソーシャルネットワーキングシステム３６０の何人かの他のユーザへのつながり（ｃｏｎｎｅｃｔｉｏｎ）（たとえば、関係）を追加し得る。本明細書では、「友達（ｆｒｉｅｎｄ）」という用語は、ソーシャルネットワーキングシステム３６０を介してユーザがつながり、関連付け、または関係を形成したソーシャルネットワーキングシステム３６０の任意の他のユーザを指すことがある。
【００４１】
特定の実施形態では、ソーシャルネットワーキングシステム３６０は、ソーシャルネットワーキングシステム３６０によってサポートされる様々なタイプのアイテムまたはオブジェクトに関するアクションをとる能力をユーザに提供し得る。限定としてではなく一例として、アイテムおよびオブジェクトは、ソーシャルネットワーキングシステム３６０のユーザが属し得るグループまたはソーシャルネットワーク、ユーザが関心のあり得るイベントまたはカレンダーエントリ、ユーザが使用し得るコンピュータベースアプリケーション、ユーザがサービスを介してアイテムを購入または販売することを可能にするトランザクション、ユーザが実施し得る広告との対話、あるいは他の好適なアイテムまたはオブジェクトを含み得る。ユーザは、ソーシャルネットワーキングシステム３６０において、またはソーシャルネットワーキングシステム３６０とは別個であり、ネットワーク３１０を介してソーシャルネットワーキングシステム３６０に結合された、サードパーティシステム３７０の外部システムによって、表されることが可能であるものと対話し得る。
【００４２】
特定の実施形態では、ソーシャルネットワーキングシステム３６０は、様々なエンティティをリンクすることが可能であり得る。限定としてではなく一例として、ソーシャルネットワーキングシステム３６０は、ユーザが、互いに対話し、ならびにサードパーティシステム３７０または他のエンティティからコンテンツを受信することを可能にするか、あるいは、ユーザが、アプリケーションプログラミングインターフェース（ＡＰＩ）または他の通信チャネルを通して、これらのエンティティと対話することを可能にし得る。
【００４３】
特定の実施形態では、サードパーティシステム３７０は、１つまたは複数のタイプのサーバ、１つまたは複数のデータストア、限定はしないがＡＰＩを含む１つまたは複数のインターフェース、１つまたは複数のウェブサービス、１つまたは複数のコンテンツソース、１つまたは複数のネットワーク、またはたとえばサーバが通信し得る任意の他の好適な構成要素を含み得る。サードパーティシステム３７０は、ソーシャルネットワーキングシステム３６０を動作させるエンティティとは異なるエンティティによって動作させられ得る。しかしながら、特定の実施形態では、ソーシャルネットワーキングシステム３６０とサードパーティシステム３７０とは、互いと連携して動作して、ソーシャルネットワーキングシステム３６０またはサードパーティシステム３７０のユーザにソーシャルネットワーキングサービスを提供し得る。この意味で、ソーシャルネットワーキングシステム３６０は、サードパーティシステム３７０などの他のシステムが、インターネット上でユーザにソーシャルネットワーキングサービスおよび機能性を提供するために使用し得る、プラットフォームまたはバックボーンを提供し得る。
【００４４】
特定の実施形態では、サードパーティシステム３７０は、サードパーティコンテンツオブジェクトプロバイダを含み得る。サードパーティコンテンツオブジェクトプロバイダは、クライアントシステム３３０に通信され得る、コンテンツオブジェクトの１つまたは複数のソースを含み得る。限定としてではなく一例として、コンテンツオブジェクトは、たとえば、映画の上映時間、映画のレビュー、レストランのレビュー、レストランのメニュー、製品情報およびレビュー、または他の好適な情報など、ユーザにとって関心のある物またはアクティビティに関する情報を含み得る。限定としてではなく別の例として、コンテンツオブジェクトは、クーポン、ディスカウントチケット、ギフト券、または他の好適なインセンティブオブジェクトなど、インセンティブコンテンツオブジェクトを含み得る。
【００４５】
特定の実施形態では、ソーシャルネットワーキングシステム３６０は、ソーシャルネットワーキングシステム３６０とのユーザの対話を向上させ得る、ユーザ生成されたコンテンツオブジェクトをも含み得る。ユーザ生成されたコンテンツは、ユーザがソーシャルネットワーキングシステム３６０に追加するか、アップロードするか、送るか、または「ポストする（ｐｏｓｔ）」ことができるものを含み得る。限定としてではなく一例として、ユーザは、クライアントシステム３３０からソーシャルネットワーキングシステム３６０にポストを通信する。ポストは、ステータス更新または他のテキストデータ、ロケーション情報、写真、ビデオ、リンク、音楽あるいは他の同様のデータまたはメディアなど、データを含み得る。コンテンツはまた、ニュースフィードまたはストリームなどの「通信チャネル」を通して、サードパーティによってソーシャルネットワーキングシステム３６０に追加され得る。
【００４６】
特定の実施形態では、ソーシャルネットワーキングシステム３６０は、様々なサーバ、サブシステム、プログラム、モジュール、ログ、およびデータストアを含み得る。特定の実施形態では、ソーシャルネットワーキングシステム３６０は、以下、すなわち、ウェブサーバ、アクションコントローラ、アクションログ、サードパーティコンテンツオブジェクト露出ログ、推論モジュール、許可／プライバシーサーバ、検索モジュール、広告ターゲッティングモジュール、ユーザインターフェースモジュール、ユーザプロファイルストア、つながりストア（ｃｏｎｎｅｃｔｉｏｎ  ｓｔｏｒｅ）、サードパーティコンテンツストア、またはロケーションストアのうちの１つまたは複数を含み得る。ソーシャルネットワーキングシステム３６０は、ネットワークインターフェース、セキュリティ機構、ロードバランサ、フェイルオーバサーバ、管理およびネットワーク運用コンソール、他の好適な構成要素、またはそれらの任意の好適な組合せなど、好適な構成要素をも含み得る。特定の実施形態では、ソーシャルネットワーキングシステム３６０は、ユーザプロファイルを記憶するための１つまたは複数のユーザプロファイルストアを含み得る。ユーザプロファイルは、たとえば、経歴情報、人口統計学的情報、行動情報、ソーシャル情報、あるいは、職歴、学歴、趣味もしくは好み、関心、親近感、またはロケーションなど、他のタイプの記述情報を含み得る。関心情報は、１つまたは複数のカテゴリーに関係する関心を含み得る。カテゴリーは一般的または特定的であり得る。限定としてではなく一例として、ユーザが、靴のブランドに関する記事に対して「いいね」を表明した場合、カテゴリーは、ブランド、あるいは「靴」または「衣類」の一般的なカテゴリーであり得る。つながりストアは、ユーザに関するつながり情報を記憶するために使用され得る。つながり情報は、同様のまたは共通の職歴、グループメンバーシップ、趣味、学歴を有するか、あるいはいかなる形でも関係するか、または共通属性を共有する、ユーザを指示し得る。つながり情報は、（内部と外部の両方の）異なるユーザとコンテンツとの間のユーザ定義されたつながりをも含み得る。ウェブサーバは、ネットワーク３１０を介して、ソーシャルネットワーキングシステム３６０を、１つまたは複数のクライアントシステム３３０または１つまたは複数のサードパーティシステム３７０にリンクするために使用され得る。ウェブサーバは、ソーシャルネットワーキングシステム３６０と１つまたは複数のクライアントシステム３３０との間でメッセージを受信およびルーティングするためのメールサーバまたは他のメッセージング機能性を含み得る。ＡＰＩ要求サーバは、サードパーティシステム３７０が、１つまたは複数のＡＰＩを呼び出すことによってソーシャルネットワーキングシステム３６０からの情報にアクセスすることを可能にし得る。アクションロガーは、ソーシャルネットワーキングシステム３６０上の、またはソーシャルネットワーキングシステム３６０から離れた、ユーザのアクションに関するウェブサーバからの通信を受信するために使用され得る。アクションログと併せて、サードパーティコンテンツオブジェクトへのユーザ���出についてのサードパーティコンテンツオブジェクトログが維持され得る。通知コントローラは、クライアントシステム３３０にコンテンツオブジェクトに関する情報を提供し得る。情報は、通知としてクライアントシステム３３０にプッシュされ得るか、または、情報は、クライアントシステム３３０から受信された要求に応答してクライアントシステム３３０からプルされ得る。許可サーバは、ソーシャルネットワーキングシステム３６０のユーザの１つまたは複数のプライバシーセッティングを施行するために使用され得る。ユーザのプライバシーセッティングは、ユーザに関連付けられた特定の情報がどのように共有され得るかを決定する。許可サーバは、ユーザが、たとえば、適切なプライバシーセッティングをセットすることなどによって、そのユーザのアクションがソーシャルネットワーキングシステム３６０によってロギングされるか、または他のシステム（たとえば、サードパーティシステム３７０）と共有されることをオプトインまたはオプトアウトすることを可能にし得る。サードパーティコンテンツオブジェクトストアは、サードパーティシステム３７０など、サードパーティから受信されたコンテンツオブジェクトを記憶するために使用され得る。ロケーションストアは、ユーザに関連付けられたクライアントシステム３３０から受信されたロケーション情報を記憶するために使用され得る。広告価格設定モジュールは、ソーシャル情報、現在時間、ロケーション情報、または他の好適な情報を組み合わせて、関連する広告を通知の形態でユーザに提供し得る。
【００４７】
図４は例示的なコンピュータシステム４００を示す。特定の実施形態では、１つまたは複数のコンピュータシステム４００は、本明細書で説明または示される１つまたは複数の方法の１つまたは複数のステップを実施する。特定の実施形態では、１つまたは複数のコンピュータシステム４００は、本明細書で説明または示される機能性を提供する。特定の実施形態では、１つまたは複数のコンピュータシステム４００上で実行しているソフトウェアは、本明細書で説明または示される１つまたは複数の方法の１つまたは複数のステップを実施するか、あるいは本明細書で説明または示される機能性を提供する。特定の実施形態は、１つまたは複数のコンピュータシステム４００の１つまたは複数の部分を含む。本明細書では、コンピュータシステムへの言及は、適切な場合、コンピューティングデバイスを包含し得、その逆も同様である。その上、コンピュータシステムへの言及は、適切な場合、１つまたは複数のコンピュータシステムを包含し得る。
【００４８】
本開示は任意の好適な数のコンピュータシステム４００を企図する。本開示は任意の好適な物理的形態をとるコンピュータシステム４００を企図する。限定としてではなく例として、コンピュータシステム４００は、組込み型コンピュータシステム、システムオンチップ（ＳＯＣ）、（たとえば、コンピュータオンモジュール（ＣＯＭ）またはシステムオンモジュール（ＳＯＭ）などの）シングルボードコンピュータシステム（ＳＢＣ）、デスクトップコンピュータシステム、ラップトップまたはノートブックコンピュータシステム、対話型キオスク、メインフレーム、コンピュータシステムのメッシュ、携帯電話、携帯情報端末（ＰＤＡ）、サーバ、タブレットコンピュータシステム、拡張／仮想現実デバイス、あるいはこれらのうちの２つまたはそれ以上の組合せであり得る。適切な場合、コンピュータシステム４００は、１つまたは複数のコンピュータシステム４００を含むか、単一または分散型であるか、複数のロケーションにわたるか、複数のマシンにわたるか、複数のデータセンターにわたるか、あるいは１つまたは複数のネットワーク中の１つまたは複数のクラウド構成要素を含み得るクラウド中に常駐し得る。適切な場合、１つまたは複数のコンピュータシステム４００は、実質的な空間的または時間的制限なしに、本明細書で説明または示される１つまたは複数の方法の１つまたは複数のステップを実施し得る。限定としてではなく一例として、１つまたは複数のコンピュータシステム４００は、リアルタイムでまたはバッチモードで、本明細書で説明または示される１つまたは複数の方法の１つまたは複数のステップを実施し得る。１つまたは複数のコンピュータシステム４００は、適切な場合、異なる時間においてまたは異なるロケーションにおいて、本明細書で説明または示される１つまたは複数の方法の１つまたは複数のステップを実施し得る。
【００４９】
特定の実施形態では、コンピュータシステム４００は、プロセッサ４０２と、メモリ４０４と、ストレージ４０６と、入出力（Ｉ／Ｏ）インターフェース４０８と、通信インターフェース４１０と、バス４１２とを含む。本開示は、特定の構成において特定の数の特定の構成要素を有する特定のコンピュータシステムを説明し、示すが、本開示は、任意の好適な構成において任意の好適な数の任意の好適な構成要素を有する任意の好適なコンピュータシステムを企図する。
【００５０】
特定の実施形態では、プロセッサ４０２は、コンピュータプログラムを作り上げる命令など、命令を実行するためのハードウェアを含む。限定としてではなく一例として、命令を実行するために、プロセッサ４０２は、内部レジスタ、内部キャッシュ、メモリ４０４、またはストレージ４０６から命令を取り出し（またはフェッチし）、それらの命令を復号および実行し、次いで、内部レジスタ、内部キャッシュ、メモリ４０４、またはストレージ４０６に１つまたは複数の結果を書き込み得る。特定の実施形態では、プロセッサ４０２は、データ、命令、またはアドレスのための１つまたは複数の内部キャッシュを含み得る。本開示は、適切な場合、任意の好適な数の任意の好適な内部キャッシュを含むプロセッサ４０２を企図する。限定としてではなく一例として、プロセッサ４０２は、１つまたは複数の命令キャッシュと、１つまたは複数のデータキャッシュと、１つまたは複数のトランスレーションルックアサイドバッファ（ＴＬＢ）とを含み得る。命令キャッシュ中の命令は、メモリ４０４またはストレージ４０６中の命令のコピーであり得、命令キャッシュは、プロセッサ４０２によるそれらの命令の取出しを高速化し得る。データキャッシュ中のデータは、プロセッサ４０２において実行する命令が動作する対象のメモリ４０４またはストレージ４０６中のデータのコピー、プロセッサ４０２において実行する後続の命令によるアクセスのための、またはメモリ４０４もしくはストレージ４０６に書き込むための、プロセッサ４０２において実行された前の命令の結果、あるいは他の好適なデータであり得る。データキャッシュは、プロセッサ４０２による読取りまたは書込み動作を高速化し得る。ＴＬＢは、プロセッサ４０２のための仮想アドレス変換を高速化し得る。特定の実施形態では、プロセッサ４０２は、データ、命令、またはアドレスのための１つまたは複数の内部レジスタを含み得る。本開示は、適切な場合、任意の好適な数の任意の好適な内部レジスタを含むプロセッサ４０２を企図する。適切な場合、プロセッサ４０２は、１つまたは複数の算術論理ユニット（ＡＬＵ）を含むか、マルチコアプロセッサであるか、または１つまたは複数のプロセッサ４０２を含み得る。本開示は、特定のプロセッサを説明し、示すが、本開示は任意の好適なプロセッサを企図する。
【００５１】
特定の実施形態では、メモリ４０４は、プロセッサ４０２が実行するための命令、またはプロセッサ４０２が動作する対象のデータを記憶するためのメインメモリを含む。限定としてではなく一例として、コンピュータシステム４００は、ストレージ４０６または（たとえば、別のコンピュータシステム４００などの）別のソースからメモリ４０４に命令をロードし得る。プロセッサ４０２は、次いで、メモリ４０４から内部レジスタまたは内部キャッシュに命令をロードし得る。命令を実行するために、プロセッサ４０２は、内部レジスタまたは内部キャッシュから命令を取り出し、それらの命令を復号し得る。命令の実行中またはその後に、プロセッサ４０２は、（中間結果または最終結果であり得る）１つまたは複数の結果を内部レジスタまたは内部キャッシュに書き込み得る。プロセッサ４０２は、次いで、メモリ４０４にそれらの結果のうちの１つまたは複数を書き込み得る。特定の実施形態では、プロセッサ４０２は、１つまたは複数の内部レジスタまたは内部キャッシュ中の、あるいは（ストレージ４０６または他の場所とは対照的な）メモリ４０４中の命令のみを実行し、１つまたは複数の内部レジスタまたは内部キャッシュ中の、あるいは（ストレージ４０６または他の場所とは対照的な）メモリ４０４中のデータのみに対して動作する。（アドレスバスおよびデータバスを各々含み得る）１つまたは複数のメモリバスが、プロセッサ４０２をメモリ４０４に結合し得る。バス４１２は、以下で説明されるように、１つまたは複数のメモリバスを含み得る。特定の実施形態では、１つまたは複数のメモリ管理ユニット（ＭＭＵ）が、プロセッサ４０２とメモリ４０４との間に常駐し、プロセッサ４０２によって要求されるメモリ４０４へのアクセスを可能にする。特定の実施形態では、メモリ４０４は、ランダムアクセスメモリ（ＲＡＭ）を含む。このＲＡＭは、適切な場合、揮発性メモリであり得る。適切な場合、このＲＡＭは、ダイナミックＲＡＭ（ＤＲＡＭ）またはスタティックＲＡＭ（ＳＲＡＭ）であり得る。その上、適切な場合、このＲＡＭは、シングルポートまたはマルチポートＲＡＭであり得る。本開示は任意の好適なＲＡＭを企図する。メモリ４０４は、適切な場合、１つまたは複数のメモリ４０４を含み得る。本開示は、特定のメモリを説明し、示すが、本開示は任意の好適なメモリを企図する。
【００５２】
特定の実施形態では、ストレージ４０６は、データまたは命令のための大容量ストレージを含む。限定としてではなく一例として、ストレージ４０６は、ハードディスクドライブ（ＨＤＤ）、フロッピーディスクドライブ、フラッシュメモリ、光ディスク、光磁気ディスク、磁気テープ、またはユニバーサルシリアルバス（ＵＳＢ）ドライブ、あるいはこれらのうちの２つまたはそれ以上の組合せを含み得る。ストレージ４０６は、適切な場合、リムーバブルまたは非リムーバブル（または固定）媒体を含み得る。ストレージ４０６は、適切な場合、コンピュータシステム４００の内部または外部にあり得る。特定の実施形態では、ストレージ４０６は、不揮発性ソリッドステートメモリである。特定の実施形態では、ストレージ４０６は、読取り専用メモリ（ＲＯＭ）を含む。適切な場合、このＲＯＭは、マスクプログラムＲＯＭ、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、電気的書き換え可能ＲＯＭ（ＥＡＲＯＭ）、またはフラッシュメモリ、あるいはこれらのうちの２つまたはそれ以上の組合せであり得る。本開示は、任意の好適な物理的形態をとる大容量ストレージ４０６を企図する。ストレージ４０６は、適切な場合、プロセッサ４０２とストレージ４０６との間の通信を可能にする１つまたは複数のストレージ制御ユニットを含み得る。適切な場合、ストレージ４０６は、１つまたは複数のストレージ４０６を含み得る。本開示は、特定のストレージを説明し、示すが、本開示は任意の好適なストレージを企図する。
【００５３】
特定の実施形態では、Ｉ／Ｏインターフェース４０８は、コンピュータシステム４００と１つまたは複数のＩ／Ｏデバイスとの間の通信のための１つまたは複数のインターフェースを提供する、ハードウェア、ソフトウェア、またはその両方を含む。コンピュータシステム４００は、適切な場合、これらのＩ／Ｏデバイスのうちの１つまたは複数を含み得る。これらのＩ／Ｏデバイスのうちの１つまたは複数は、人とコンピュータシステム４００との間の通信を可能にし得る。限定としてではなく一例として、Ｉ／Ｏデバイスは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカー、スチールカメラ、スタイラス、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、別の好適なＩ／Ｏデバイス、またはこれらのうちの２つまたはそれ以上の組合せを含み得る。Ｉ／Ｏデバイスは１つまたは複数のセンサーを含み得る。本開示は、任意の好適なＩ／Ｏデバイスと、それらのＩ／Ｏデバイスのための任意の好適なＩ／Ｏインターフェース４０８とを企図する。適切な場合、Ｉ／Ｏインターフェース４０８は、プロセッサ４０２がこれらのＩ／Ｏデバイスのうちの１つまたは複数を駆動することを可能にする１つまたは複数のデバイスまたはソフトウェアドライバを含み得る。Ｉ／Ｏインターフェース４０８は、適切な場合、１つまたは複数のＩ／Ｏインターフェース４０８を含み得る。本開示は、特定のＩ／Ｏインターフェースを説明し、示すが、本開示は任意の好適なＩ／Ｏインターフェースを企図する。
【００５４】
特定の実施形態では、通信インターフェース４１０は、コンピュータシステム４００と、１つまたは複数の他のコンピュータシステム４００または１つまたは複数のネットワークとの間の（たとえば、パケットベース通信などの）通信のための１つまたは複数のインターフェースを提供する、ハードウェア、ソフトウェア、またはその両方を含む。限定としてではなく一例として、通信インターフェース４１０は、イーサネットまたは他の有線ベースネットワークと通信するためのネットワークインターフェースコントローラ（ＮＩＣ）またはネットワークアダプタ、あるいはＷＩ−ＦＩネットワークなどの無線ネットワークと通信するための無線ＮＩＣ（ＷＮＩＣ）または無線アダプタを含み得る。本開示は、任意の好適なネットワークと、そのネットワークのための任意の好適な通信インターフェース４１０とを企図する。限定としてではなく一例として、コンピュータシステム４００は、アドホックネットワーク、パーソナルエリアネットワーク（ＰＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、またはインターネットの１つまたは複数の部分、あるいはこれらのうちの２つまたはそれ以上の組合せと通信し得る。これらのネットワークのうちの１つまたは複数の１つまたは複数の部分は、有線または無線であり得る。一例として、コンピュータシステム４００は、（たとえば、ＢＬＵＥＴＯＯＴＨ  ＷＰＡＮなどの）無線ＰＡＮ（ＷＰＡＮ）、ＷＩ−ＦＩネットワーク、ＷＩ−ＭＡＸネットワーク、（たとえば、モバイル通信用グローバルシステム（ＧＳＭ）ネットワークなどの）セルラー電話ネットワーク、または他の好適な無線ネットワーク、あるいはこれらのうちの２つまたはそれ以上の組合せと通信し得る。コンピュータシステム４００は、適切な場合、これらのネットワークのいずれかのための任意の好適な通信インターフェース４１０を含み得る。通信インターフェース４１０は、適切な場合、１つまたは複数の通信インターフェース４１０を含み得る。本開示は、特定の通信インターフェースを説明し、示すが、本開示は任意の好適な通信インターフェースを企図する。
【００５５】
特定の実施形態では、バス４１２は、コンピュータシステム４００の構成要素を互いに結合する、ハードウェア、ソフトウェア、またはその両方を含む。限定としてではなく一例として、バス４１２は、アクセラレーテッドグラフィックスポート（ＡＧＰ）または他のグラフィックスバス、拡張業界標準アーキテクチャ（ＥＩＳＡ）バス、フロントサイドバス（ＦＳＢ）、ＨＹＰＥＲＴＲＡＮＳＰＯＲＴ（ＨＴ）相互接続、業界標準アーキテクチャ（ＩＳＡ）バス、ＩＮＦＩＮＩＢＡＮＤ相互接続、ローピンカウント（ＬＰＣ）バス、メモリバス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、周辺構成要素相互接続（ＰＣＩ）バス、ＰＣＩ−Ｅｘｐｒｅｓｓ（ＰＣＩｅ）バス、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）バス、ビデオエレクトロニクス規格協会ローカル（ＶＬＢ）バス、または別の好適なバス、あるいはこれらのうちの２つまたはそれ以上の組合せを含み得る。バス４１２は、適切な場合、１つまたは複数のバス４１２を含み得る。本開示は、特定のバスを説明し、示すが、本開示は任意の好適なバスまたは相互接続を企図する。
【００５６】
本明細書では、１つまたは複数のコンピュータ可読非一時的記憶媒体は、適切な場合、（たとえば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または特定用途向けＩＣ（ＡＳＩＣ）などの）１つまたは複数の半導体ベースまたは他の集積回路（ＩＣ）、ハードディスクドライブ（ＨＤＤ）、ハイブリッドハードドライブ（ＨＨＤ）、光ディスク、光ディスクドライブ（ＯＤＤ）、光磁気ディスク、光磁気ドライブ、フロッピーディスケット、フロッピーディスクドライブ（ＦＤＤ）、磁気テープ、ソリッドステートドライブ（ＳＳＤ）、ＲＡＭドライブ、セキュアデジタルカードまたはドライブ、任意の他の好適なコンピュータ可読非一時的記憶媒体、あるいはこれらのうちの２つまたはそれ以上の任意の好適な組合せを含み得る。コンピュータ可読非一時的記憶媒体は、適切な場合、揮発性、不揮発性、または揮発性と不揮発性との組合せであり得る。
【００５７】
本明細書では、「または」は、明確に別段に指示されていない限り、またはコンテキストによって別段に指示されていない限り、包括的であり、排他的ではない。したがって、本明細書では、「ＡまたはＢ」は、明確に別段に指示されていない限り、またはコンテキストによって別段に指示されていない限り、「Ａ、Ｂ、またはその両方」を意味する。その上、「および」は、明確に別段に指示されていない限り、またはコンテキストによって別段に指示されていない限り、共同と個別の両方である。したがって、本明細書では、「ＡおよびＢ」は、明確に別段に指示されていない限り、またはコンテキストによって別段に指示されていない限り、「共同でまたは個別に、ＡおよびＢ」を意味する。
【００５８】
本開示の範囲は、当業者が理解するであろう、本明細書で説明または示される例示的な実施形態に対するすべての変更、置換、変形、改変、および修正を包含する。本開示の範囲は、本明細書で説明または示される例示的な実施形態に限定されない。その上、本開示は、本明細書のそれぞれの実施形態を、特定の構成要素、要素、特徴、機能、動作、またはステップを含むものとして説明し、示すが、これらの実施形態のいずれも、当業者が理解するであろう、本明細書のどこかに説明または示される構成要素、要素、特徴、機能、動作、またはステップのうちのいずれかの任意の組合せまたは置換を含み得る。さらに、特定の機能を実施するように適応されるか、構成されるか、実施することが可能であるか、実施するように設定されるか、実施することが可能にされるか、実施するように動作可能であるか、または実施するように動作する、装置またはシステムあるいは装置またはシステムの構成要素に対する添付の特許請求の範囲における参照は、その装置、システム、または構成要素が、そのように適応されるか、構成されるか、可能であるか、設定されるか、可能にされるか、動作可能であるか、または動作する限り、その装置、システム、構成要素またはその特定の機能が、アクティブにされるか、オンにされるか、またはアンロックされるか否かにかかわらず、その装置、システム、構成要素を包含する。さらに、本開示は、特定の実施形態を、特定の利点を提供するものとして説明するかまたは示すが、特定の実施形態は、これらの利点のいずれをも提供しないか、いくつかを提供するか、またはすべてを提供し得る。
【図１】
2020522918.tif 000003
【図２】
2020522918.tif 000004
【図３】
2020522918.tif 000005
【図４】
2020522918.tif 000006
【国際調査報告】
2020522918.tif 000007
2020522918.tif 000008