(57)【要約】      （修正有）【解決手段】様々なホストが推奨のセキュリティプロトコルをサポートするかどうかを示す情報をクライアントが記憶する。クライアントは、この情報を使用して、特定のホストへの接続時に推奨プロトコルを使用すべきかどうかを動的に決定する。クライアントは、第１の時間にホストとのセキュア接続を確立しようとハンドシェイクを試みる場合に、推奨プロトコルを用いてそれを行う。ハンドシェイクが失敗すると、クライアントは、ホストの情報を識別するドメイン又は他をローカルに記憶して、その後の接続の試みにおいて非推奨のプロトコルを用いる。記憶される情報は、ホストの機能更新についての周期的チェックを可能にする時間スタンプを含む。【効果】クライアントは、推奨プロトコルをサポートしないホストとの推奨プロトコル接続を試みることによって生じる性能低下を回避することができる。【選択図】図４
2018010674.tif 000002
【特許請求の範囲】
【請求項１】
クライアントとサーバとの間のセキュア接続が第１セキュリティプロトコルを使用して成功裏に確立されなかったことを決定するステップであって、前記第１セキュリティプロトコルが、短縮されたハンドシェイクを含む、ステップと；
前記セキュア接続が前記第１セキュリティプロトコルを使用して成功裏に確立されなかったという決定に少なくとも部分的に基づいて、前記第１セキュリティプロトコルをサポートしないサーバとして前記サーバを識別する情報を前記クライアントのメモリへ格納するステップと；
前記セキュア接続が前記第１セキュリティプロトコルを使用して成功裏に確立されなかったという決定に少なくとも部分的に基づいて、短縮されていないハンドシェイクを含む第２セキュリティプロトコルを使用して、前記クライアントと前記サーバとの間の前記セキュア接続を確立しようと試みるステップと；
を具備する、コンピュータ実施方法。
【発明の詳細な説明】
【背景技術】
【０００１】
セキュアソケットレイヤ（Secure  Sockets  Layer；ＳＳＬ）及びトランスポートレイヤセキュリティ（Transport  Layer  Security；ＴＬＳ）は、インターネット上でクライアントサーバとの間のセキュア接続を提供するようオープンシステム相互接続（Open  System  Interconnection；ＯＳＩ）モデルのアプリケーションレイヤで動作する通信プロトコルである。簡単なＳＳＬ又はＴＬＳハンドシェイクにおいて、クライアントは、クライアントによってサポートされるプロトコルバージョンと、クライアントで生成される乱数とを含むＣｌｉｅｎｔＨｅｌｌｏを送信することによって、開始する。次いで、サーバは、サーバで生成される乱数とともにサーバによってサポートされるプロトコルバージョンを含むＳｅｒｖｅｒＨｅｌｌｏメッセージにより応答する。次いで、サーバは、暗号化のための自身の公開鍵を含む自身の証明書を送信してよく、次いで、自身がハンドシェイク交渉を終えることを示すＳｅｒｖｅｒＨｅｌｌｏＤｏｎｅメッセージを送信する。
【０００２】
次いで、クライアントは、サーバの公開鍵を用いて暗号化されたＰｒｅＭａｓｔｅｒＳｅｃｒｅｔを含むＣｌｉｅｎｔＫｅｙＥｘｃｈａｎｇｅメッセージにより応答してよい。次いで、クライアント及びサーバは、通信セッションのためのセッション鍵を生成するために使用される共通のＭａｓｔｅｒＳｅｃｒｅｔを計算するために、交換された乱数及びＰｒｅＭａｓｔｅｒＳｅｃｒｅｔを使用してよい。次いで、クライアント及びサーバは、その後のメッセージが暗号化されることを示すＣｈａｎｇｅＣｉｐｈｅｒＳｐｅｃと、暗号化されたＦｉｎｉｓｈｅｄメッセージとを互いに送信する。サーバ及びクライアントは、互いのＦｉｎｉｓｈｅｄメッセージを復号するよう試みる。いずれか一方の試みが失敗すると、ハンドシェイクは失敗し、接続は終了される。クライアント及びサーバの両方がＦｉｎｉｓｈｅｄメッセージの復号化に成功すると、ハンドシェイクは成功である。ハンドシェイクは、クライアントもそれ自身の証明書を有する場合及び／又はハンドシェイクが前のセッションを再開している場合に、変更される。しかし、上記の簡単な場合において、完全なハンドシェイクは、一般に、ハンドシェイクが完了して、クライアント及びサーバがアプリケーションデータの送信を開始することができる前に少なくとも２回の完全なプロトコル・ラウンドトリップを含み、よって、通信セッションを確立するよう２回のネットワーク・ラウンドトリップのレイテンシー不利益を加える。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
このレイテンシーを低減するよう、提案は、Ｆａｌｓｅ  Ｓｔａｒｔと呼ばれる機能を組み込むことによってＴＬＳ及び場合によりＳＳＬを変更するようインターネット・エンジニアリング・タスクフォース（Internet  Engineering  Task  Force；ＩＥＴＦ）のＴＬＳ作業部会に提出されている。この提案される変更は、クライアントがサーバのＦｉｎｉｓｈｅｄメッセージを受信して検証する前にアプリケーションデータの送信を開始することを可能にする。短縮されたハンドシェイクが前のセッションを再開するために用いられるシナリオにおいて、サーバは、クライアントのＦｉｎｉｓｈｅｄメッセージを受信して検証する前にアプリケーションデータの送信を開始する。よって、Ｆａｌｓｅ  Ｓｔａｒｔは、１回のラウンドトリップ分だけレイテンシーを低減する。しかし、Ｆａｌｓｅ  Ｓｔａｒｔ対応クライアントが、Ｆａｌｓｅ  ＳｔａｒｔをサポートしないサーバとのＦａｌｓｅ  Ｓｔａｒｔハンドシェイクを試みる場合に、ハンドシェイクは失敗し、クライアントは、標準の非Ｆａｌｓｅ  Ｓｔａｒｔプロトコルによりもう１回のハンドシェイクを試み、実質的なレイテンシー不利益を生じる。
【課題を解決するための手段】
【０００４】
本願で記載される技術は、様々なサーバ又はホストがＴＬＳ又はＳＳＬへのＦａｌｓｅ  Ｓｔａｒｔ変更をサポートするかどうかを示す情報をクライアントが記憶することを可能にする。その場合に、クライアントは、サーバへの接続時にＦａｌｓｅ  Ｓｔａｒｔハンドシェイクを開始すべきかどうかを決定するために、この情報を使用してよい。Ｆａｌｓｅ  Ｓｔａｒｔ対応クライアントが第１の時間にサーバとのセキュア接続を確立しようとハンドシェイクを試みる場合に、そのクライアントは、Ｆａｌｓｅ  Ｓｔａｒｔにより変更されたプロトコルを用いて、それを行う。セキュア接続がＦａｌｓｅ  Ｓｔａｒｔにより確立される場合（例えば、ハンドシェイクが成功する場合）に、クライアント及びサーバは、アプリケーションデータを交換することを進める。
【０００５】
しかし、ハンドシェイクが失敗し、セキュア接続が確立されない場合は、クライアントは、標準の（例えば、Ｆａｌｓｅ  Ｓｔａｒｔによって変更されていない）ＴＬＳ又はＳＳＬハンドシェイクにより接続を確立しようと再び試み、クライアントにおいて、サーバがＦａｌｓｅ  Ｓｔａｒｔをサポートしないことを示す情報が記憶される。記憶された情報は、サーバの識別及び／又はサーバによってホストされるウェブサイトを含んでよく、識別は、ドメイン、サブドメイン、ユニフォームリソースロケータ（Uniform  Resource  Locator；ＵＲＬ）、インターネットプロトコル（Internet  Protocol；ＩＰ）アドレス、及び／又は他の識別情報の形をとる。情報は、同じ通信セッション内でのセキュア接続の確立を最適化するようクライアントのアクティブメモリ（例えば、物理メモリ）に記憶されてよい。情報はまた、異なる通信セッションにわたるセキュア接続の確立を最適化するよう永続性メモリ（クライアントのハードドライブ上）に記憶されてよい。幾つかの場合（情報が永続性メモリに記憶される場合）に、情報はまた、その情報が記憶された日時を示す時間スタンプを含んでよい。そのような時間スタンプは、クライアントがサーバ又はホストを再チェックして、それがＦａｌｓｅ  Ｓｔａｒｔをサポートするよう更新されているかどうかを決定することを可能にすることができる。
【０００６】
この要約は、詳細な説明において以下で更に記載される簡略化された形において概念の選択を導入するよう設けられる。この要約は、請求される対象の重要な特徴又は必須の特徴を特定することを目的とせず、且つ、請求される対象の適用範囲を制限するために使用されることを目的としない。
【図面の簡単な説明】
【０００７】
詳細な説明は、添付の図を参照して記載される。図中、参照符号の最左の数字は、その参照符号が最初に現れる図を示す。異なる図における同じ参照符号は、類似する又は同じ項目を示す。
【０００８】
【図１Ａ】Ｆａｌｓｅ  Ｓｔａｒｔ対応のクライアントがＦａｌｓｅ  Ｓｔａｒｔ対応のサーバ又はホストとのハンドシェイクを試みるシナリオを例示する。
【図１Ｂ】Ｆａｌｓｅ  Ｓｔａｒｔ対応のクライアントがＦａｌｓｅ  Ｓｔａｒｔ非対応のサーバ又はホストとのハンドシェイクを試みるシナリオを例示する。
【図１Ｃ】Ｆａｌｓｅ  Ｓｔａｒｔ対応のクライアントがＦａｌｓｅ  Ｓｔａｒｔ非対応のサーバ又はホストとのハンドシェイクを試みるシナリオを例示する。
【０００９】
【図２】実施形態が動作することができる環境を例示する図である。
【００１０】
【図３】実施形態に従うコンピュータシステムを例示する図である。
【００１１】
【図４】サーバが推奨のセキュリティプロトコル（例えば、Ｆａｌｓｅ  Ｓｔａｒｔをサポートするプロトコル）をサポートするかどうかを示す情報をクライアントに記憶するための事例的プロセスのフロー図を表す。
【００１２】
【図５】推奨のセキュリティプロトコル（例えば、Ｆａｌｓｅ  Ｓｔａｒｔをサポートするプロトコル）により接続を試みるべきかどうかを決定するためにクライアントに記憶された情報を用いるための事例的プロセスのフロー図を表す。
【発明を実施するための形態】
【００１３】
概要
本願で記載される実施形態は、Ｆａｌｓｅ  Ｓｔａｒｔ対応のクライアントがＦａｌｓｅ  Ｓｔａｒｔにより変更されたプロトコルを用いてサーバ又はホストとのセキュア接続を確立しようと試みるべきかどうかを決定するための技術を提供する。ＳＳＬ（例えば、ＳＳＬ３．０以降）及びＴＬＳ（例えば、ＴＬＳ１．０，１．１，１．２以降）に対するＦａｌｓｅ  Ｓｔａｒｔによる変更は、クライアントとサーバとの間のセキュア接続を確立するハンドシェイクから１回のラウンドトリップを削減することによって、レイテンシーを低減する。しかし、全てのサーバが、Ｆａｌｓｅ  Ｓｔａｒｔによる変更を伴うプロトコルをサポートするわけではない。Ｆａｌｓｅ  Ｓｔａｒｔ対応のクライアントが、Ｆａｌｓｅ  Ｓｔａｒｔをサポートしないサーバとのハンドシェイクを試みる場合に、ハンドシェイクは失敗し、クライアントはＦａｌｓｅ  Ｓｔａｒｔによらないハンドシェイクを再度試みる。最初の、失敗に終わったハンドシェイクは、接続を確立する際のレイテンシーの増大を引き起こすことがあり、従って、サーバとのセキュア接続を確立しようと試みるウェブブラウザ又は他のクライアント側アプリケーションの性能を低下させることがある。そのような性能低下を回避するよう、実施形態は、特定のサーバがＦａｌｓｅ  Ｓｔａｒｔをサポートするかどうかを示す情報又はメタデータのクライアントでの記憶を可能にする。その場合に、クライアントは、Ｆａｌｓｅ  Ｓｔａｒｔハンドシェイクを試みるべきかどうかを決定するために、この情報を使用してよい。
【００１４】
図１Ａ，Ｂ，及びＣは、Ｆａｌｓｅ  Ｓｔａｒｔ対応のクライアントがＦａｌｓｅ  Ｓｔａｒｔ対応又は非対応のいずれかであるサーバ又はホストとのハンドシェイクを試みるシナリオを例示する。図１Ａに示されるように、Ｆａｌｓｅ  Ｓｔａｒｔ対応のクライアントアプリケーションを実行するクライアント装置１０２は、Ｆａｌｓｅ  Ｓｔａｒｔをサポートするウェブサーバ１０４へ接続しようと試みる。この場合に、Ｆａｌｓｅ  Ｓｔａｒｔハンドシェイク１０６は成功する。幾つかの実施形態において、クライアントアプリケーションは、ウェブサーバ１０４によって提供されるウェブサイト又は他のウェブサービスへ接続するためにウェブブラウザ又は他のアプリケーションのコンポーネントとしてクライアント装置１０２で実行することができるハイパーテキスト転送プロトコル（Hypertext  Transfer  Protocol；ＨＴＴＰ）である。
【００１５】
図１Ｂは、クライアント装置１０２が、Ｆａｌｓｅ  Ｓｔａｒｔをサポートしない異なるウェブサーバ１１０へ接続しようと試みるシナリオを例示する。ウェブサーバ１１０へのクライアントの最初のビジットにおいて、クライアントはＦａｌｓｅ  Ｓｔａｒｔハンドシェイク１１２を試みる。このハンドシェイク１１２は、ウェブサーバのＦａｌｓｅ  Ｓｔａｒｔに対するサポートの欠如により、失敗する。次いで、クライアントは、非Ｆａｌｓｅ  Ｓｔａｒｔハンドシェイク１１４により接続しようと再び試みる。２回目のビジット１１６において、クライアントは先と同じくＦａｌｓｅ  Ｓｔａｒｔハンドシェイク１１８を試みるが、このハンドシェイク１１８は同じく失敗する。次いで、クライアントは、非Ｆａｌｓｅ  Ｓｔａｒｔハンドシェイク１２０により接続を確立しようと試みる。このシナリオでは、クライアントが本願で記載される実施形態の種々の特徴を組み込まないために、クライアントは、その最初のビジット１０８の失敗したＦａｌｓｅ  Ｓｔａｒｔハンドシェイク１１２から学習せず、その２回目のビジット１１６においてＦａｌｓｅ  Ｓｔａｒｔハンドシェイクを再度試みる。
【００１６】
しかし、図１Ｃは、ウェブサーバ１１０がＦａｌｓｅ  Ｓｔａｒｔをサポートしないとの情報をクライアント装置１０２が保持するシナリオを例示する。その最初のビジット１２２で、クライアントはＦａｌｓｅ  Ｓｔａｒｔハンドシェイク１２４を試みるが、このハンドシェイク１２４は、ウェブサーバ１１０がＦａｌｓｅ  Ｓｔａｒｔをサポートしないために、失敗する。次いで、クライアントは、非Ｆａｌｓｅ  Ｓｔａｒｔハンドシェイク１２６により接続しようと再び試みる。しかし、この例では、最初の失敗したハンドシェイクの後、クライアントは、ウェブサーバ１１０がＦａｌｓｅ  Ｓｔａｒｔをサポートしないことを示す情報を記憶する。結果として、その２回目のビジット１２８では、クライアントは、以前に記憶された情報を参照し、その情報に基づき、ウェブサーバ１１０とのＦａｌｓｅ  Ｓｔａｒｔハンドシェイクを試みるべきでないと認識する。代わりに、クライアントは、非Ｆａｌｓｅ  Ｓｔａｒｔハンドシェイク１３０を試みる。この情報の記憶、取り出し、及び使用は、図４及び５に関連して以下で更に記載される。
【００１７】
このように、記憶された情報を用いることによって、クライアントは、推奨のセキュリティプロトコル（例えば、Ｆａｌｓｅ  Ｓｔａｒｔプロトコル）により接続を試みるべきかどうかを決定し、推奨のセキュリティプロトコルをサポートしないサーバとの失敗した最初の試みを防ぐことができる。クライアントは、ホストサーバの機能（例えば、それがＦａｌｓｅ  Ｓｔａｒｔをサポートするかどうか）に関する情報へのアクセスを有するので、クライアントは、最大で３回のラウンドトリップ時間、すなわち、Ｆａｌｓｅ  Ｓｔａｒｔハンドシェイクでの最初の失敗に終わった試みのための２回のラウンドトリップ、及び（幾つかの場合に）にＴＣＰセッションがＦａｌｓｅ  Ｓｔａｒｔハンドシェイクでの失敗に終わった試みに続いてサーバによって切り離された後再確立される必要があるために生じるもう１回のラウンドトリップ時間、を節約することができる。
【００１８】
加えて、実施形態は、サーバ機能に関する情報がクライアント自体にローカルに記憶されることを提供するので、クライアントは、遠隔のサーバに記憶されている他の情報（例えば、非対応ホストのブラックリスト）にアクセスする必要なしに、どのセキュリティプロトコルを用いるべきかを動的に決定してよい。これは、クライアントが、遠隔のサーバからサーバ機能情報を取り出すために必要とされ得る付加的なレイテンシー・ヒットを生じさせずに、より効率的にその決定を行うことを可能にする。更に、実施形態はまた、サーバ機能情報がローカルに記憶されて、特定のホストと接続するためのクライアントの能力に基づき動的に更新されるので、効率的な通信を可能にしてよい。加えて、クライアント自体がサーバ機能に関する情報を記憶するので、情報は、遠隔のサーバ上に（ブラックリストにおいて）記憶されるサーバ機能情報よりも頻繁に更新され、これにより、推奨のセキュリティプロトコルによるハンドシェイクの失敗の回数は低減され得る。
【００１９】
実例となる環境
図２は、実施形態が動作することができる環境２００を例示する。図示されるように、環境２００の様々な装置は、１以上のネットワーク２０２を介して互いと通信する。ネットワーク２０２は、そのような通信を可能にするあらゆるタイプのネットワークを含んでよい。例えば、ネットワーク２０２は、インターネットのような公衆ネットワーク、機関及び／又は個人のイントラネットのような私的ネットワーク、あるいは、公衆及び私的ネットワークの何らかの組み合わせを含んでよい。ネットワーク２０２はまた、ローカルエリアネットワーク（local  area  network；ＬＡＮ）、ワイドエリアネットワーク（wide  area  network；ＷＡＮ）、Ｗｉ−Ｆｉ、ＷｉＭａｘ、及び移動体通信ネットワーク（例えば、３Ｇ，４Ｇ等）を含むがこれらに限られないあらゆるタイプの有線及び／又は無線ネットワークを含んでよい。ネットワーク２０２は、インターネットプロトコル（ＩＰ）、伝送制御プロトコル（transmission  control  protocol；ＴＣＰ）、ユーザデータグラムプロトコル（user  datagram  protocol；ＵＤＰ）、又は他のタイプのプロトコルのようなパケットベース及び／又はデータグラムベースのプロトコルを含む通信プロトコルを利用してよい。加えて、ネットワーク２０２はまた、ネットワーク通信を助け及び／又はスイッチ、ルータ、ゲートウェイ、アクセスポイント、ファイアウォール、基地局、中継局、バックボーンデバイス、及び同様のもののようなネットワークのためのハードウェア基盤を形成する複数の装置を含んでよい。
【００２０】
環境２００は、エンドユーザに関連する１以上のクライアント装置２０４を更に含む。簡潔に記載すると、クライアント装置２０４は、ユーザがネットワーク２０２上で情報を送信及び受信するために用いることができるあらゆるタイプのコンピュータ装置を含んでよい。例えば、クライアント装置２０４は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、電子書籍リーダ、装着型コンピュータ、メディアプレーヤ、車載コンピュータ、携帯型コンピュータ装置、スマートフォン、パーソナルデジタルアシスタント（personal  digital  assistant；ＰＤＡ）、ゲーム機、携帯型ゲーム機、セットトップボックス、及び同様のものを含んでよいが、これらに限られない。
【００２１】
クライアント装置２０４は、一般に、文書処理アプリケーション、ゲーム、ウェブブラウザ、電子メールクライアントアプリケーション、テキストメッセージングアプリケーション、チャット又はインスタントメッセージング（instant  messaging；ＩＭ）クライアント、及び他のアプリケーションを含むがこれらに限られない１以上のアプリケーションを含む。それらのアプリケーションのうちの１以上は、そのアプリケーションがウェブサイトに接続し又は別なふうにＨＴＴＰ若しくは他のネットワーキングプロトコルを介してウェブベースの情報にアクセスすることを可能にするコンポーネントを含んでよい。クライアント装置２０４及び図２に表されている他の装置は、図３に関連して本願で更に記載される。
【００２２】
更に図２に示されるように、環境２００は、ネットワーク２０２上でコンテンツを提供し又はユーザにサービスを提供するよう構成される１以上のウェブサーバ装置２０６を更に含んでよい。そのようなコンテンツ及びサービスは、ホストされる静的及び／又は動的なウェブページ、ソーシャルネットワークサービス、電子メールサービス、チャットサービス、ゲーム、マルチメディア、及び何らかの他のタイプの、ネットワーク２０２上で提供されるコンテンツ、サービス又は情報を含んでよいが、これらに限られない。ウェブサーバ装置２０６は、クライアント装置２０４又は他のネットワーク装置と通信するための１以上の通信プロトコルをサポートしてよい。例えば、ウェブサーバ装置２０６は、ＴＣＰ／ＩＰにより通信セッションを確立し及び／又はＨＴＴＰによりデータの要求に応答するよう構成されてよい。ウェブサーバ装置２０６は更に、Ｆａｌｓｅ  Ｓｔａｒｔをサポートするよう変更され得るＴＬＳ又はＳＳＬのようなセキュリティプロトコルによりセキュア通信セッションを確立するよう構成されてよい。
【００２３】
実例となるコンピュータシステム・アーキテクチャ
図３は、実施形態が動作することができるコンピュータシステム３００を例示する。図示されるように、コンピュータシステム３００はプロセッシングユニット３０２を含む。プロセッシングユニット３０２は複数のプロセッシングユニットを含んでよく、ハードウェア、ソフトウェア、又はそれらの何らかの組み合わせとして実装されてよい。プロセッシングユニット３０２は１以上のプロセッサを含んでよい。本願で使用されるように、プロセッサはハードウェア部品を指す。プロセッシングユニット３０２は、本願で記載される様々な機能を実行するよう何らかの適切なプログラミング言語で記述された、コンピュータにより実行可能な、プロセッサにより実行可能な、及び／又は機械により実行可能な命令を含んでよい。
【００２４】
例において示されるように、コンピュータシステム３００はシステムメモリ３０４を更に含む。システムメモリ３０４は、ランダムアクセスメモリ（random  access  memory；ＲＡＭ）３０６、静的ランダムアクセスメモリ（static  random  access  memory；ＳＲＡＭ）、動的ランダムアクセスメモリ（dynamic  random  access  memory；ＤＲＡＭ）、及び同様のもののような揮発性メモリを含んでよい。ＲＡＭ３０６は、１以上の実行オペレーティングシステム（operating  system；ＯＳ）３０８と、プロセッシングユニット３０２によってロード可能且つ実行可能であるコンポーネント、プログラム、又はアプリケーションを含む１以上の実行プロセスとを含む。そのようなプロセスは、インターネット上で利用可能なウェブサイト又は他のサービスと通信するよう動作するウェブブラウザ３１０を含んでよい。幾つかの実施形態において、ウェブブラウザ３１０は、特定のウェブサーバとの通信時に使用すべき特定の通信プロトコルを動的に選択するプロトコル選択コンポーネント３１２を含む。更に以下で記載されるように、プロトコル選択コンポーネント３１２は、サーバとのセキュア接続を確立するためにＦａｌｓｅ  Ｓｔａｒｔ対応のＴＬＳ又はＳＳＬプロトコルを用いるべきかどうかを決定するよう、サーバに関する記憶された情報にアクセスしてよい。幾つかの実施形態において、ＲＡＭ３０６は物理メモリ（例えば、一時記憶装置３１４）を含んでよく、そのメモリにおいてＯＳ３０８、ウェブブラウザ３１０、及び／又は他のプロセス３１６が実行する。
【００２５】
システムメモリ３０４は、読み出し専用メモリ（read  only  memory；ＲＯＭ）３１８、フラッシュメモリ、及び同様のもののような不揮発性メモリを更に含んでよい。図示されるように、ＲＯＭ３１８は、コンピュータシステム３００を起動するのに使用される基本入出力システム（Basic  Input/Output  system；ＢＩＯＳ）を含んでよい。図示されていないが、システムメモリ３０４は、ＯＳ３０８、ウェブブラウザ３１０、及び／又は他のプロセス３１６によってそれらの実行中に生成及び／又は利用されるプログラム又はコンポーネントデータを更に記憶してよい。システムメモリ３０４はまた、キャッシュメモリを含んでよい。
【００２６】
図３に示されるように、コンピュータシステム３００はまた、磁気ディスク記憶装置、光ディスク記憶装置、テープ記憶装置、及び同様のものを含むがこれらに限られない非リムーバブル記憶装置３３０（例えば、ハードドライブ）及び／又はリムーバブル記憶装置３３４を含んでよい。ディスクドライブ及び関連するコンピュータ可読媒体は、コンピュータシステム３００の動作のための、コンピュータにより読み出し可能な命令、データ構造、プログラムモジュール、及び他のデータの不揮発性記憶を提供してよい。加えて、非リムーバブル記憶装置３３０は、永続性記憶装置３３２を更に含んでよい。
【００２７】
一般に、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を含む。
【００２８】
コンピュータ記憶媒体は、コンピュータにより読み出し可能な命令、データ構造、プログラムモジュール、及び他のデータのような情報の記憶のための何らかの方法又は技術において実施される揮発性及び不揮発性のリムーバブル及び非リムーバブル媒体を含む有形な媒体である。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、消去可能なプログラム可能読み出し専用メモリ（erasable  programmable  read-only  memory；ＥＥＰＲＯＭ）、ＳＲＡＭ、ＤＲＡＭ、フラッシュメモリ若しくは他のメモリ技術、コンパクトディスク読み出し専用メモリ（compact  disc  read-only  memory；ＣＤ−ＲＯＭ）、デジタルバーサタイルディスク（digital  versatile  disc；ＤＶＤ）若しくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気記憶装置、又はコンピュータ装置によるアクセスのための情報を記憶するために使用され得る何らかの他の非伝送媒体を含むが、これらに限られない。
【００２９】
対照的に、通信媒体は非有形であり、搬送波又は他の伝送メカニズムのような変調データ信号において、コンピュータにより読み出し可能な命令、データ構造、プログラムモジュール、又は他のデータを具現してよい。本願で定義されるように、コンピュータ記憶媒体は通信媒体を含まない。
【００３０】
コンピュータシステム３００は、キーボード、マウス、ペン、ゲームコントローラ、発話認識のための音声入力装置、タッチ入力装置、及び同様のものを含むがこれらに限られない入力装置３３６を含んでよい。コンピュータシステム３００は、ディスプレイ、プリンタ、オーディオスピーカ、触覚出力、及び同様のものを含むがこれらに限られない出力装置３３８を更に含んでよい。コンピュータシステム３００は、コンピュータシステム３００が、クライアント装置、サーバ装置、データベース、及び／又は１以上の通信ネットワーク上で利用可能な他のネットワーク装置を含む他のコンピュータ装置３４２と通信することを可能にする通信接続３４０を更に含んでよい。
【００３１】
実例となるプロセス
図４及び５は、様々な実施形態に従うプロセスを例示するフローチャートを表す。それらのプロセスの動作は、個々のブロックにおいて図解されており、それらのブロックを参照して要約される。プロセスは論理フロー図として表される。それらの各動作は、ハードウェア、ソフトウェア、又はそれらの組み合わせにおいて実施され得る１以上の動作を表してよい。ソフトウェアとの関連で、動作は、１以上のコンピュータ記憶媒体に記憶されているコンピュータ実行可能命令を表し、それらの命令は、１以上のプロセッサによって実行される場合に、その１以上のプロセッサが、挙げられている動作を実行することを可能にする。一般に、コンピュータ実行可能命令は、特定の機能を実行し又は特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、モジュール、コンポーネント、データ構造、及び同様のものを含む。動作が記載される順序は、限定として解釈されるよう意図されず、記載される動作の如何なる数も、記載されるプロセスを実施するよう、如何なる順序において組み合わされても、複数の副動作に分割されても、及び／又は並行して実行されてもよい。
【００３２】
図４は、サーバ又はホストが推奨のセキュリティプロトコル（例えば、Ｆａｌｓｅ  Ｓｔａｒｔをサポートするセキュア通信プロトコル）をサポートするかどうかを示す情報をクライアントにおいて記憶するためのプロセス４００を例示する。幾つかの実施形態において、プロセス４００は、クライアント装置で実行するプロトコル選択コンポーネント３１２のようなコンポーネントによって実行される。加えて、プロセス４００は、クライアント装置で実行するブラウザ又は他のアプリケーションの部分であるＨＴＴＰクライアントのようなクライアントプロセスによって実行されてよい。
【００３３】
ブロック４０２で、第１のセキュリティプロトコルによりクライアントとサーバ（例えば、ウェブサーバ）との間のセキュア接続を確立しようとする試みがなされる。幾つかの実施形態において、第１のセキュリティプロトコルは、上述されたようにレイテンシーを低減するようＦａｌｓｅ  ＳｔａｒｔをサポートするＳＳＬ又はＴＬＳプロトコルのような推奨のセキュリティプロトコルであり、クライアントは、Ｆａｌｓｅ  Ｓｔａｒｔによって変更されたＳＳＬ又はＴＬＳハンドシェイクを試みる。ブロック４０４で、ハンドシェイクが成功し且つ接続が確立されたかどうかの決定がなされる。例えば、上述されたように、Ｆａｌｓｅ  Ｓｔａｒｔにより変更されたプロトコルを使用する場合に、クライアントは、サーバのＦｉｎｉｓｈｅｄメッセージ（又は、ＴＬＳ若しくはＳＳＬハンドシェイクが完了したとの他の通信インジケーション）を受信する前に、アプリケーションデータの送信を開始してよい。サーバがＦａｌｓｅ  Ｓｔａｒｔをサポートしない場合は、サーバは、アプリケーションデータのクライアント送信を時期尚早（premature）と解釈し、クライアントへの接続を中断し又は別なふうに切り離してよい。そのような状況において、サーバは、ＳＳＬ若しくはＴＬＳアラート、ＳＳＬ若しくはＴＬＳエラーメッセージ、及び／又はＴＣＰメッセージ（例えば、ＴＣＰ  ＦＩＮ若しくはＴＣＰ  ＲＥＳＥＴ）を含むがそれらに限られない、失敗を示すクライアントへの通信を送信してよい。加えて、幾つかの実施形態において、クライアントは、一定期間の時間後にサーバから如何なる応答も受信しなかった後にタイムアウトしてよい。様々な実施形態は、サーバがＦａｌｓｅ  Ｓｔａｒｔをサポートしないとブロック４０４で決定するために、１以上のそれらの事象を使用してよい。接続が失敗した他の理由が存在し得るが、実施形態は、セキュア接続又はセッションを確立できなかったことに基づき、サーバがＦａｌｓｅ  Ｓｔａｒｔをサポートしないと推測してよい。
【００３４】
接続の確立が成功した場合は、クライアント及びサーバは、ブロック４０６で、アプリケーションデータを交換するよう通信を開始してよい。しかし、接続の確立が成功しなかった場合は、サーバに関する情報が、ブロック４０８で、クライアント上の一時記憶装置（例えば、一時記憶装置３１４）に記憶されてよい。幾つかの実施形態において、情報は、データベース、リスト、又は他のデータ構造において記憶され、記憶された情報は、第１のセキュリティプロトコルをサポートしないとクライアントが決定したサーバを識別する。そのような識別情報は、何らかのドメインレベル若しくはサブドメインレベルでのサーバについてのドメイン情報、各サーバのＵＲＬ、又は他の識別情報（例えば、ＩＰアドレス）を含んでよい。
【００３５】
幾つかの実施形態において、一時記憶装置は、プロトコル選択コンポーネントがプロセス４００を実行しているプロセスのアクティブメモリ（例えば、物理メモリ又は仮想メモリ）におけるインメモリデータ構造であってよい。幾つかの実施形態において、一時記憶装置内のこの情報は、プロセスがアクティブであるか、特定の接続がアクティブである限り、及び／又は接続がアクティブでなくなった後の一定の所定期間の時間（例えば、１０分間）に、利用可能であってよい。このようにして、一時記憶装置における情報の記憶は、同じセッションによるサーバへの複数の接続の最適化を可能にすることができ、それにより、ＨＴＴＰクライアント又は他のコンポーネントは、ハードドライブ又は他の永続性記憶装置にアクセスする必要がなく、代わりに、物理メモリからサーバ機能に関する記憶された情報を効率的に取り出すことができる。よって、一定の時間期間後に同じホスト又はウェブサイトに戻るユーザは、クライアントが一時記憶装置からホスト機能情報を効率的に取り出すことができるならば、より早く接続することが可能であり得る。
【００３６】
ブロック４１０で、サーバ機能に関する情報は更に、クライアント装置のハードドライブ又は他の非リムーバブル記憶装置上の永続性記憶装置３３２のような永続性記憶装置に記憶されてよい。永続性記憶装置におけるサーバ機能情報のセーブは、複数のセッションにわたるサーバへの接続の最適化を可能にすることができる。例えば、特定のセッションが終了し、一時記憶装置が解放された後、サーバ機能情報は、後のセッションの間、永続性記憶装置から取り出されてよい。よって、クライアントは、前のセッションの間に集められたサーバ機能情報に基づき、特定のサーバが推奨のセキュリティプロトコル（例えば、Ｆａｌｓｅ  Ｓｔａｒｔを伴う。）をサポートするかどうかを決定することが可能であり得る。
【００３７】
幾つかの実施形態において、永続性記憶装置に記憶されているサーバ情報は、一時記憶装置に記憶されているサーバ情報と同じ又は類似するサーバ識別（例えば、ドメイン）情報を含む。幾つかの実施形態において、永続性記憶装置に記憶されているサーバ情報はまた、サーバごとに、その情報が記憶された日時を示す時間スタンプを含んでよい。この時間スタンプは、後の時点でクライアントが第１のセキュリティプロトコルによるサーバへの接続を再び試みて、サーバの機能が第１のセキュリティプロトコル（例えば、Ｆａｌｓｅ  Ｓｔａｒｔを含むプロトコル）をサポートするよう更新又は拡張されたかどうかを決定するよう周期的にチェックすることを可能にするヒューリスティックを提供してよい。この態様は、図５に関連して更に記載される。
【００３８】
ブロック４１２で、第２のセキュリティプロトコルによりクライアントとサーバとの間のセキュア接続を確立しようとする試みがなされる。幾つかの実施形態において、第２のセキュリティプロトコルは、Ｆａｌｓｅ  ＳｔａｒｔをサポートしないＳＳＬ又はＴＬＳプロトコルのような、非推奨の又はより推奨されないプロトコルである。幾つかの実施形態において、サーバ情報は、この２回目のハンドシェイク試行の前且つ最初の失敗したハンドシェイク試行の後に、一時及び／又は永続性記憶装置に記憶される。幾つかの実施形態において、サーバ情報は、２回目のハンドシェイク試行の後に記憶されてよい。加えて、幾つかの実施形態において、サーバは、Ｆａｌｓｅ  Ｓｔａｒｔハンドシェイクが失敗した場合に、既存のセッションを切り離していることがあるので、ブロック４１２で、ＴＣＰセッションは再確立される必要があり得る。
【００３９】
図５は、推奨のセキュリティプロトコル（例えば、Ｆａｌｓｅ  Ｓｔａｒｔをサポートするプロトコル）により接続を試みるべきかどうかを決定するためにクライアントにおいて記憶されている情報を用いるためのプロセス５００を例示する。幾つかの実施形態において、プロセス５００は、クライアント装置で実行されるプロトコル選択コンポーネント３１２のようなコンポーネントによって実行される。加えて、プロセス５００は、クライアント装置で実行するブラウザ又は他のアプリケーションの部分であるＨＴＴＰクライアントのようなクライアントプロセスによって実行されてよい。
【００４０】
ブロック５０２で、サーバとセキュアに接続すべきインジケーションが受け取られる。例えば、そのようなインジケーションは、ユーザがＳＳＬ又はＴＬＳのようなセキュア通信プロトコルを用いてクライアント上のウェブブラウザ又は他のアプリケーションを通じてサーバ上のウェブサイトへ接続したいと望む場合に、トリガされてよい。ブロック５０４で、サーバ情報は、それが上述されたように予め記憶されている永続性記憶装置又はプロセスのインメモリ一時記憶装置のいずれかからアクセスされる。幾つかの実施形態において、インメモリ一時記憶装置は、最初にチェックされ、永続性記憶装置は、情報が一時記憶装置において見つけられない場合にその後にチェックされる。
【００４１】
ブロック５０６で、サーバについての情報がアクセスされた情報において見つけられるかどうかの決定がなされる。幾つかの実施形態において、情報は、データベース、リスト、又は他のデータ構造としてクライアントにおいて記憶され、データベースにおけるサーバのドメインの存在は、そのサーバが第１のセキュリティプロトコル（例えば、Ｆａｌｓｅ  Ｓｔａｒｔをサポートする推奨のプロトコル）をサポートしないことを示す。サーバのドメインがデータベースにおいてリストアップされていないか、あるいは、データベースが別なふうに、サーバが第１のセキュリティプロトコルをサポートすることを示す場合は、プロセス５００はブロック５０８へ進み、クライアントは、図４に関連して上述されたように、第１のセキュリティプロトコルによりサーバへのセキュア接続を確立しようと試みる。
【００４２】
ブロック５０６で、サーバのドメインがデータベースにおいてリストアップされているか、あるいは、データベースが別なふうに、サーバが第１のセキュリティプロトコルをサポートしないことを示す場合は、そのサーバを識別する情報が期限切れである（例えば、失効した）かどうかを決定するよう、サーバのドメインに関連する時間スタンプがチェックされてよい。幾つかの実施形態において、このチェックは、時間スタンプの日付／時間を現在の日付／時間と比較し、両者の差（例えば、情報が記憶された以後の経過時間）を決定することを含んでよい。時間差が所定の閾値（例えば、３０日）よりも大きくない場合は、サーバ情報が失効していないとの決定がなされてよく、ブロック５１２で、第２のセキュリティプロトコル（例えば、Ｆａｌｓｅ  Ｓｔａｒｔをサポートしない非推奨のプロトコル）によりセキュア接続を確立しようとする試みがなされてよい。
【００４３】
しかし、時間差が所定の閾値よりも大きい場合は、サーバ情報が失効した又は別なふうに期限切れであるとの決定がなされてよい。その場合に、接続の試みは、ブロック５０８で第１のセキュリティプロトコルを用いてなされてよい。このようにして、サーバドメインとともに記憶される時間スタンプは、情報が記憶された時点以後にそのサーバが第１のセキュリティプロトコル（例えば、Ｆａｌｓｅ  Ｓｔａｒｔ）をサポートするよう更新されたかどうかをチェックするための手段を提供してよい。幾つかの実施形態において、閾値は、Ｆａｌｓｅ  Ｓｔａｒｔ非対応のサーバの機能がアップグレードされたかどうかを決定するためのそれらのサーバのより多い又は少ない頻度のチェックを提供するよう設定可能であってよい。
【００４４】
幾つかの実施形態は、ホスト機能情報が最新であるかどうかをチェックするようクライアントで周期的に実行する追加のサポートプロセスをサポートしてよい。例えば、そのようなプロセスは、記憶されているホストのリストを解析し、情報が期限切れである（所定期間の時間よりも古い）ホストごとに、そのホストをリストから削除して、永続性メモリ内の空間を節約する。加えて、幾つかの実施形態において、そのようなプロセスは、リスト内の情報が期限切れであるホストごとに、そのホストとのＴＬＳ  Ｆａｌｓｅ  Ｓｔａｒｔ又はＳＳＬ  Ｆａｌｓｅ  Ｓｔａｒｔを試み、（例えば、接続が成功である場合）そのホストをリストから削除し、又は（例えば、接続が失敗である場合）そのホストをリストに残して、時間スタンプを現在の日付／時間に更新してよい。
【００４５】
更に、幾つかの実施形態は、上位レベルのドメイン情報が下位レベルのドメインに優先して記憶されるホストリストの圧密化のための最適化をサポートする（例えば、www.abcdef.com、mail.abcdef.com、等に代えてabcdefg.comを記憶する。）。加えて、幾つかの実施形態において、下位レベルのドメイン情報は、リストが上位レベルのドメインを共有する特定の閾数のより下位レベルのドメインを含む時点まで、データベースに記憶されてよい（例えば、www.abcdef.com、mail.abcdef.com、news.abcdef.com、等）。その時点で、それらのより下位レベルのドメインは、リスト内の空間を節約するよう上位レベルのドメイン（例えば、abcdefg.com）によりリスト内で置換されてよい。幾つかの実施形態において、上記のサポートプロセスは、この圧密化プロセスを実行してよい。しかし、幾つかの実施形態において、別個のプロセスが、圧密化を実行するよう働いてよい。
【００４６】
結論
技術は、構造的特徴及び方法論的動作に特有の言語において記載されてきたが、添付の特許請求の範囲は、必ずしも、記載される具体的な特徴又は動作に制限されない点が理解されるべきである。むしろ、具体的な特徴及び動作は、そのような技術の実施例として開示される。
【図１Ａ】
2018010674.tif 000003
【図１Ｂ】
2018010674.tif 000004
【図１Ｃ】
2018010674.tif 000005
【図２】
2018010674.tif 000006
【図３】
2018010674.tif 000007
【図４】
2018010674.tif 000008
【図５】
2018010674.tif 000009
【外国語明細書】
2018010674000001.pdf