(57)【特許請求の範囲】
【請求項１】
サーバシステムにユーザ証明を提供して前記サーバシステムで前記クライアント装置を認証するアクションと、
前記サーバシステム上で前記クライアント装置に関連するサーバセッションを開始するアクションと、
セッションＩＤおよび第１の乱数を含む自動再接続データを前記サーバシステムと共有するアクションと、
少なくとも部分的に前記第１の乱数からセッションベリファイアを導出するアクションと、
前記サーバシステムとの通信が途切れて再確立された後、ユーザ証明を提供することなく前記サーバシステムによる自動再認証を要求するアクションであって、前記セッションベリファイアを前記サーバシステムに送ることを含むアクションと、
前記サーバシステムとの通信が途切れた後、前記サーバシステムと第２の乱数を共有するアクションと、
前記セッションベリファイアを少なくとも部分的に前記第１の乱数と前記第２の乱数の両方から導出するアクションと
を行うようにプログラミングされていることを特徴とするクライアント装置。
【請求項２】
変更された第１の乱数を前記サーバシステムと周期的に共有するアクションをさらに含むことを特徴とする請求項１に記載のクライアント装置。
【請求項３】
前記自動再接続データは前記サーバシステムから受け取られることを特徴とする請求項１に記載のクライアント装置。
【請求項４】
前記要求するアクションは、セッションＩＤを前記サーバシステムに送ることをさらに含むことを特徴とする請求項１に記載のクライアント装置。
【請求項５】
クライアント装置とサーバシステムの間でデータ通信を確立するアクションと、
特定のサーバセッションに関して前記クライアント装置を認証するアクションと、
前記クライアント装置と前記サーバシステムの間で自動再接続データを共有するアクションと、
前記クライアント装置において前記自動再接続データの少なくとも一部分からクライアントセッションベリファイアを導出するアクションと、
通信障害の後、前記クライアント装置と前記サーバシステムの間のデータ通信を再確立するアクションと、
データ通信を再確立した後、前記クライアントセッションベリファイアを前記クライアント装置から前記サーバシステムに提供するアクションと、
前記サーバシステムにおいて前記自動再接続データの少なくとも一部分からサーバセッションベリファイアを導出するアクションと、
前記クライアントセッションベリファイアを前記サーバセッションベリファイアと比較するアクションによって前記クライアントセッションベリファイアを検証するアクションと、
前記セッションベリファイアの検証が成功したとき、前記特定のサーバセッションに関して前記クライアント装置を自動的に再認証するアクションと、
前記自動再接続データの少なくとも一部分を周期的に変更して、少なくとも前記変更された部分を前記クライアント装置と前記サーバ装置の間で共有するアクションと
を含むことを特徴とする方法。
【請求項６】
前記再認証するアクションはユーザ証明を要求することなく行われることを特徴とする請求項５に記載の方法。
【請求項７】
前記自動再接続データは乱数を含むことを特徴とする請求項５に記載の方法。
【請求項８】
前記自動再接続データは、前記特定のサーバセッションに関連するセッションＩＤ、および乱数を含むことを特徴とする請求項５に記載の方法。
【請求項９】
データ通信を再確立した後、前記クライアント装置と前記サーバ装置の間で乱数を共有するアクションをさらに含み、
前記クライアントセッションベリファイアおよび前記サーバセッションベリファイアは、少なくとも部分的に前記共有される乱数および前記自動再接続データから導出されることを特徴とする請求項５に記載の方法。
【請求項１０】
前記自動再接続データは第１の乱数を含み、
前記方法はさらに、データ通信が再確立された後、前記クライアント装置と前記サーバ装置の間で第２の乱数を共有するアクションを含み、
前記クライアントセッションベリファイアおよび前記サーバセッションベリファイアは、少なくとも部分的に前記第１の乱数および前記第２の乱数から導出されることを特徴とする請求項５に記載の方法。
【請求項１１】
前記自動再接続データは第１の乱数を含み、
前記方法はさらに、データ通信が再確立された後、前記クライアント装置と前記サーバ装置の間で第２の乱数を共有するアクションを含み、
前記クライアントセッションベリファイアおよび前記サーバセッションベリファイアは、少なくとも部分的に前記第１の乱数および前記第２の乱数に基づく一方向ハッシュを含むことを特徴とする請求項５に記載の方法。
【請求項１２】
前記自動再接続データは乱数を含み、前記乱数を周期的に変更して前記クライアント装置と前記サーバ装置の間で共有するアクションをさらに含むことを特徴とする請求項５に記載の方法。
【請求項１３】
１つまたは複数の通信プログラム構成要素をオペレーティングシステムの下でカーネルモードで実行するアクションと、
１つまたは複数のサーバプログラム構成要素を前記オペレーティングシステムの下で非カーネルモードで実行してサーバセッションを実施するアクションと、
前記通信プログラム構成要素が、前記自動再接続データの少なくとも一部分を前記サーバプログラム構成要素による誘因なしに周期的に変更して前記クライアント装置に再送信するアクションと
をさらに含むことを特徴とする請求項５に記載の方法。
【請求項１４】
１つまたは複数の通信プログラム構成要素をオペレーティングシステムの下でカーネルモードで実行するアクションと、
１つまたは複数のサーバプログラム構成要素を前記オペレーティングシステムの下で非カーネルモードで実行してサーバセッションを実施するアクションと、
前記通信プログラム構成要素が、前記クライアント装置と通信しているときに、（ａ）前記自動再接続データの少なくとも一部分を送信してから所定の時間が経過しているかどうかを調べて判定し、（ｂ）前記所定の時間が経過している場合、前記自動再接続データの少なくとも一部分を前記サーバプログラム構成要素による誘因なしに変更して再送信するアクションと
をさらに含むことを特徴とする請求項５に記載の方法。
【請求項１５】
クライアント装置と通信を確立するアクションと、
前記クライアント装置を介してユーザ証明を要求して、特定のサーバセッションに関して前記クライアント装置を認証するアクションと、
第１の乱数を含む自動再接続データを前記クライアント装置と共有するアクションと、
通信障害の後、前記クライアント装置との通信を再確立するアクションと、
前記特定のクライアント装置から、少なくとも部分的に前記第１の乱数から導出されたセッションベリファイアを受け取るアクションと、
前記受け取られたセッションベリファイアを検証するアクションと、
前記セッションベリファイアの検証が成功した後、ユーザ証明を再び要求することなく前記特定のサーバセッションに関して前記特定のクライアント装置を自動的に再認証するアクションと、
通信が再確立された後、第２の乱数を前記クライアント装置と共有するアクションをさらに含み、
前記セッションベリファイアは少なくとも部分的に前記第１の乱数および前記第２の乱数から導出されることを行うようにコンピュータによって実行可能な命令を含むことを特徴とする１つまたは複数のコンピュータ可読記録媒体。
【請求項１６】
前記自動再接続データは前記特定のサーバセッションに関連するセッションＩＤをさらに含み、
通信が再確立された後、前記セッションＩＤを前記クライアント装置から受け取るアクションをさらに含むことを特徴とする請求項１５に記載のコンピュータ可読記録媒体。
【請求項１７】
前記セッションベリファイアは少なくとも部分的に前記第１の乱数に基づく一方向ハッシュであることを特徴とする請求項１５に記載のコンピュータ可読記録媒体。
【請求項１８】
通信が再確立された後、第２の乱数を前記クライアント装置と共有するアクションをさらに含み、
前記セッションベリファイアは少なくとも部分的に前記第１の乱数および前記第２の乱数に基づく一方向ハッシュであることを特徴とする請求項１５に記載のコンピュータ可読記録媒体。
【請求項１９】
前記第１の乱数を周期的に変更して前記クライアント装置に再送信するアクションをさらに含むことを特徴とする請求項１５に記載のコンピュータ可読記録媒体。
【請求項２０】
オペレーティングシステムの下でカーネルモードで１つまたは複数の通信プログラム構成要素を実行するアクションと、
前記オペレーティングシステムの下で非カーネルモードで１つまたは複数のサーバプログラム構成要素を実行してサーバセッションを実施するアクションと、
前記通信プログラム構成要素が、前記第１の乱数を前記サーバプログラム構成要素による誘因なしに周期的に変更して前記クライアント装置に再送信するアクションと
をさらに含むことを特徴とする請求項１５に記載のコンピュータ可読記録媒体。
【請求項２１】
オペレーティングシステムの下でカーネルモードで１つまたは複数の通信プログラム構成要素を実行するアクションと、
前記オペレーティングシステムの下で非カーネルモードで１つまたは複数のサーバプログラム構成要素を実行してサーバセッションを実施するアクションと、
前記通信プログラム構成要素が、前記クライアント装置と通信しているときに、（ａ）前記第１の乱数を送信してから所定の時間が経過しているかどうかを調べて判定し、（ｂ）前記所定の時間が経過している場合、前記第１の乱数を前記サーバプログラム構成要素による誘因なしに変更して前記クライアント装置に再送信するアクションと
をさらに含むことを特徴とする請求項１５に記載のコンピュータ可読記録媒体。
【請求項２２】
サーバシステムにユーザ証明を提供して前記サーバシステムでクライアントコンピュータを認証するアクションと、
前記サーバシステム上で前記クライアントコンピュータに関連するサーバセッションを開始するアクションと、
セッションＩＤおよび第１の乱数を含む自動再接続データを前記サーバシステムと共有するアクションと、
前記サーバシステムとの通信が途切れて再確立された後、ユーザ証明を提供することなく前記サーバシステムによる自動再認証を要求するアクションであって、第２の乱数を前記サーバシステムと共有することと、セッションベリファイアを少なくとも部分的に前記第１の乱数および前記第２の乱数から導出することと、前記セッションベリファイアを前記サーバシステムに送ることを含むアクションと
を行うように前記クライアントコンピュータによって実行可能な命令を含むことを特徴とするコンピュータ可読記録媒体。
【請求項２３】
変更された第１の乱数を前記サーバシステムと周期的に共有するアクションをさらに含むことを特徴とする請求項２２に記載のコンピュータ可読記録媒体。
【請求項２４】
前記自動再接続データは前記サーバシステムから受け取られることを特徴とする請求項２２に記載のコンピュータ可読記録媒体。
【請求項２５】
前記要求するアクションは、セッションＩＤを前記サーバシステムに送ることをさらに含むことを特徴とする請求項２２に記載のコンピュータ可読記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、遠隔端末を有するシステムにおけるユーザ認証およびセッション認証に関する。
【０００２】
【従来の技術】
いくつかのバージョンのＭｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）サーバオペレーティングシステムは、「端末サービス」をサポートする。端末サービスを使用して、サーバシステムは、従来のＷｉｎｄｏｗｓ（登録商標）デスクトップアプリケーション、並びに最新のＷｉｎｄｏｗｓ（登録商標）ベースのアプリケーションを、クライアント装置または遠隔端末と呼ばれる遠隔に位置するデスクトップコンピューティングデバイスに送ることができる。遠隔端末は、しばしば、専用の端末エミュレーションソフトウェアを実行するパーソナルコンピュータである。本明細書で説明するＭｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）環境では、遠隔端末は、Ｗｉｎｄｏｗｓ（登録商標）端末サービスで動作するように特に設計されたソフトウェアを実行する。
【０００３】
ユーザがこの環境でアプリケーションを実行するとき、アプリケーション実行、データ処理、およびデータ記憶のほとんどまたはすべては、サーバ上で行われ、キーボード情報、マウス情報、表示情報、および印刷情報などの事柄だけが、サーバと遠隔端末の間を行き来するように伝送される。
【０００４】
単一のサーバシステムにより、複数のユーザ、並びに対応するユーザセッションをサポートすることができる。各ユーザは、ログオンして、サーバオペレーティングシステムによってトランスペアレントに管理され、他のあらゆるクライアントセッションとは独立な自らの個別セッションだけを見る。
【０００５】
サーバシステムと様々な遠隔端末の間の通信は、しばしば、何らかの種類のネットワークによる。ネットワークは、専用のローカルエリアネットワーク、専用または公共のワイドエリアネットワーク、またはインターネットなどの公共でアクセスが可能なネットワークであることが可能である。様々な形態の暗号化をサーバシステムと遠隔端末の間で利用し、そうでない場合にはセキュアでない形態のネットワーク通信に対してプライバシーおよびデータの完全性を確実化する。サーバシステムソフトウェアと遠隔端末ソフトウェアはともに、この暗号化をサポートするように設計されている。
【０００６】
Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）端末サービスは、サーバシステムと遠隔端末の間の通信を統制するプレゼンテーションサービスプロトコルであるＲＤＰ（遠隔デスクトッププロトコル）を利用する。ＲＤＰは、サーバシステム上で独自のビデオドライバを使用して、レンダリング情報をネットワークパケットに構成し、そのパケットをネットワークを介してクライアント装置に送信することによって表示出力をレンダリングする。クライアントは、レンダリングデータを受信し、そのデータを解釈して対応するＷｉｎ３２（登録商標）ＧＤＩ  ＡＰＩコールにする。同様に、クライアントのマウスメッセージおよびキーボードメッセージが、クライアントからサーバに再転送される。サーバにおいて、ＲＤＰは、独自の仮想キーボード−マウスドライバを使用してこのキーボードイベントおよびマウスイベントを受け取る。以上の基本入力／出力機能に加えて、ＲＤＰは、印刷転送、クリップボードマッピング、遠隔制御、およびネットワーク負荷バランシング（balancing）などの様々な他の機能のためのサポートも提供する。さらに、ＲＤＰは、データ圧縮、データ暗号化、並びにログオンサービスおよびログオフサービスを可能にする。ＲＤＰ通信は、通常、ＴＣＰ／ＩＰプロトコルの中にパッケージ化されるか、または埋め込まれる。
【０００７】
サーバシステムは、いくつかの異なるセッションを実施することができる。各ユーザセッションは、通常、単一のユーザおよび単一の遠隔端末に関連するが、同一のセッションが、様々な期間の間に異なる遠隔端末に関連している可能性がある。ユーザセッションを開始するため、ユーザは、特定のクライアント装置とサーバシステムの間でセキュアな接続を確立する。次に、サーバシステムが、クライアント装置のＩ／Ｏ能力を利用して、「ログオン」プロセスと呼ばれるプロセスにおいてユーザを認証する。通常、認証は、普通、ユーザ名およびパスワードを含む要求側のユーザの証明によって行われる。有効な証明を受け取ると、サーバシステムは、セッションを生成し、クライアント装置をそのセッションに接続する。
【０００８】
【発明が解決しようとする課題】
多くのネットワーク化された環境、特にインターネット環境では、データ接続は信頼性が低く、容易に途切れる可能性がある。前述した端末サービス環境では、サーバシステムとクライアント装置の間でデータ通信が失われた（途切れたの意味、以下同じ）ことにより、必ずしもそのクライアント装置に関連するセッションは終了されない。それどころか、セッションは、事前定義された期間の間アクティブに保たれ、ユーザは、同じクライアント装置または異なるクライアント装置を使用してそのセッションに再びログオンすることができる。このログオンプロセスは、サーバシステムがユーザの証明を要求することによってユーザを認証する点において、最初のログオンプロセスと同様である。ただし、新しいセッションを生成するのではなく、サーバシステムは、ユーザを既存のセッションに関連するものとして認識し、ユーザをそのセッションに再接続する。一部のシステムでは、クライアント装置は、前のセッションからのセッション識別子を保持し、そのセッション識別子を後のログオンプロセス中にサブミットしてそのセッションに再接続することが可能である。
【０００９】
【課題を解決するための手段】
サーバシステムによりクライアント装置の認証が成功すると、クライアント装置とサーバシステムは自動再接続データを共有する。続いてサーバシステムとの通信が失われて再確立されると、クライアントはサーバに自動認証要求を送る。自動認証要求は、少なくとも部分的に共有の自動再接続データに基づくセッションベリファイア（verifier）を含む。サーバはセッションベリファイアの検証を行う。検証が成功した場合、サーバは、そのクライアント装置を自動的に再認証する。
【００１０】
【発明の実施の形態】
以下の説明は、頭記の特許請求の範囲に記載する要素を組み込んだクライアント／サーバシステムの特定の実施形態および特定の要素を提示する。実施形態は、法定要件を満たすよう、特定のものとして説明する。ただし、この説明自体は、本特許の範囲を限定するものではない。むしろ、本発明者は、請求の発明を他の仕方で実施して、他の現在または将来の技術に関連して、異なる要素、または本明細書で説明するものと同様の要素の組み合わせを含むようにすることが可能なことを企図している。
【００１１】
図１は、端末サーバシステム１０の例としての実施形態を示している。システム１０は、サーバコンピュータまたはサーバシステム１２と、複数の遠隔端末または複数の遠隔クライアント装置１４を含む。遠隔クライアント１４は、ネットワーク１６を介してサーバコンピュータ１２と通信し、ネットワーク１６は、ローカルエリアネットワーク、ワイドエリアネットワーク、公共のインターネットなどの公共でアクセス可能なネットワーク、あるいは何らかの他のタイプのデータ通信網であることが可能である。あるいは、遠隔クライアント１４の１つ以上が、専用接続またはオンデマンドダイヤルアップ接続、あるいは他の形態の直接式またはポイントツーポイント式のデータ通信などの、サーバシステム１２と通信する非ネットワーク手段を利用することが可能である。
【００１２】
サーバシステム１０および個別クライアントコンピュータは、従来の汎用デスクトップコンピュータ、または他のタイプのコンピュータであるが、専用のコンピュータまたは他のより特定の目的のデバイスを使用して以上の構成要素の機能を行うことも可能である。説明する機能を行うのに適したコンピュータの特定の詳細な例を、図８に関連して以下に提示する。
【００１３】
説明する実施形態では、サーバシステム１２は、あるバージョンのＭｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）サーバオペレーティングシステムを実行し、「端末サービス」と一般的に呼ぶ前述したもののような端末サーバ機能を含む。前述した通り、この環境におけるアプリケーションプログラムは、個々のクライアント装置１４上ではなく、サーバシステム１２上で実行される。ただし、キーボード情報、マウス情報、表示情報、および印刷情報が、サーバと遠隔端末の間で行き来するように伝送される。この責任分担は一般に、ユーザにトランスペアレントである。ユーザには、あたかもアプリケーションが、クライアント装置上で実行されているように見え、グラフィカルインターフェース要素を含むユーザインターフェース機能、およびユーザ入力機能が、クライアント装置を介して行われる。多くの場合、クライアント装置は、以上の機能をサーバとの間で調整する端末エミュレーションソフトウェアを備えて構成される。
【００１４】
Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）サーバオペレーティングシステムの端末サービスは、ユーザアプリケーションが、主にサーバシステム上で実行され、ユーザＩ／Ｏが、クライアント装置を介して行われて、遠隔端末またはクライアント装置１４と連携して複数のサーバセッションを実施する。「セッション」という用語は、一般に、所与のクライアント装置に関連する１組の変化する状態情報を指す。本明細書で説明するような端末サーバ環境では、この状態情報は、個々のクライアントコンピュータ１４上ではなく、サーバシステム１２上に存在する。所与のクライアントコンピュータに関するセッション情報すなわち状態情報は、クライアントコンピュータのためにサーバシステム１２によって実行されているあらゆるアプリケーションプログラムに関係する。
【００１５】
本発明を、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）サーバオペレーティングシステムおよびこのオペレーティングシステムの端末サービス構成要素の中で実施されるものとして説明しているが、他の実施形態も企図されることに留意されたい。本発明は、サーバが、クライアントが、サーバのサービスを利用できるようにする条件として、クライアントを認証する様々な状況で使用することができる。本発明は、サーバ／クライアント通信が信頼できるものでなく、中断を受ける状況で特に役立つ。
【００１６】
図２〜図５は、通信障害の後の認証および自動再認証に関係してサーバシステム１２およびクライアント装置１４によって行われるアクションを示している。図２〜図５で示すアクションは、サーバシステム１２上か、またはクライアント装置１４のどれかの上で実行中のソフトウェアによって行われることに留意されたい。説明する実施形態では、アクションは、サーバシステム１２上で実行される端末サービスソフトウェアの中に統合されるか、またはクライアント装置１４上で実行される端末エミュレーションソフトウェアの中に統合される。他の実施形態では、説明するアクションは、他のタイプのソフトウェアに統合することができる。
【００１７】
図２は、特定のクライアント装置のために新しいセッションを確立する際にサーバ１２によって行われるアクションを示している。初期アクション２０は、サーバシステム１２とクライアント装置１４の間でセキュアなデータ通信チャネルを確立することを含む。説明する実施形態では、これは、ＲＤＰ（遠隔デスクトッププロトコル）、およびＲＤＰによって使用される様々な暗号化技術を使用して達せられる。ＲＤＰは、カリフォルニア州レッドウッドシティーのＲＳＡ  Ｄａｔａ  Ｓｅｃｕｒｉｔｙ，Ｉｎｃ．によって開発された秘密鍵暗号法であるＲＣ４を使用して通信チャネルをセキュアにする。ＳＳＬ（セキュアなソケット層）が、セキュアな通信チャネルを提供するのに使用することが可能なセキュリティプロトコルの別の例である。「セキュアな」という用語は、サーバとクライアントの間の通信が、比較的、傍受または盗聴の可能性を免れていることを示すものとして使用する。インターネットなどの比較的セキュアでない通信媒体を使用しているとき、通信セキュリティは、通常、暗号化によって提供される。しかし、通信媒体自体がセキュアな場合、暗号化は、必要ない可能性がある。
【００１８】
ＲＤＰを使用してセキュアな通信チャネルを介して行われる後続のアクション２２は、サーバセッションに関してクライアントまたはクライアント装置を認証することを含む。多くの場合、このアクションは、ユーザが、クライアント装置において、ユーザ名およびパスワードなどのユーザ証明を要求されるか、または求められ、このユーザ証明が、サーバによって受け取られて検証されるログオンプロセスを含む。
【００１９】
ユーザ証明は、しばしば、ユーザ名およびパスワードを含むが、他のタイプの証明も利用することができる。例えば、ユーザが、指紋スキャンまたは網膜スキャンなどのバイオメトリック情報を提供するように求められる、スマートカードまたはその他のデバイスなどのハードウェアトークンを提供するように求められるか、または他の何らかの形態の身元証明を提供するように求められることが可能である。
【００２０】
多くの場合、認証は、サーバシステム１２の制御下にあり、サーバシステム１２が、クライアント装置１４において表示するためのグラフィックスのプロンプトを伝送し、クライアント装置１４からユーザ証明を受け取る。一部の場合では、クライアント装置１４上で実行される端末エミュレーションソフトウェアが、サーバソフトウェアと連携して動作してログオンプロセスのセキュリティを強化する特別のセキュリティ機能を有することが可能である。
【００２１】
認証またはログオンプロセスが成功した後、アクション２４が、要求側のクライアント装置のためにサーバシステム１２上でセッションを開始することを含む。
【００２２】
クライアントのセッションを開始する前、開始した後、または開始するのと同時に行われるのが可能なさらなるアクション２６が、自動再接続データを生成し、クライアント装置と共有することを含む。自動再接続データは、セッションＩＤ番号および第１の乱数を含む。説明する実施形態では、これらの数はともに、サーバシステム１２によって生成され、セキュアな通信チャネルを介してクライアント装置１４に送信される。セッションＩＤは、クライアントの現在のサーバセッションに関連し、現在、実行中のセッションのなかで一意的な番号である。第１の乱数は、暗号のセキュリティが高い乱数発生器を使用して生成される１６バイトの数であり、擬似乱数を含むことが可能である。
【００２３】
アクション２７が、後の使用のためにサーバにおいて自動再接続データを記憶することを含む。自動再接続データと併せて、サーバは、自動再接続データが生成されたサーバセッションに対するリファレンスも記憶する。
【００２４】
図３は、特定のクライアント装置のために新しいセッションを確立する際、クライアント装置１４によって行われるアクションを示している。だいたいのところ、それらのアクションは、図４で示したアクションに対応するものである。
【００２５】
アクション２８が、前述した通り、ＲＤＰを使用してクライアント装置１４とサーバシステム１２の間でセキュアな通信チャネルを要求し、確立することを含む。後続のアクション２９が、ログオンプロセスにおいてユーザ証明をサーバシステム１２に提供してクライアント装置１４をサーバシステム１２に対して認証し、クライアント装置１４に関連するサーバセッションを開始することを含む。
【００２６】
アクション３０が、自動再接続データをサーバシステムと共有することを含む。既に述べた通り、自動再接続データは、セッションＩＤ番号および第１の乱数を含む。説明する実施形態では、これらの数はともに、サーバシステムによって受け取られる。他の実施形態では、こららの数の一方または両方が、クライアント装置によって生成されて、サーバに送信されることが可能である。
【００２７】
アクション３１が、クライアント装置１４において自動再接続データを記憶することを含む。セキュリティのため、これらの数は、好ましくは、クライアント装置の不揮発性ファイルシステムの中にではなく、揮発性のプログラムメモリの中に記憶して、クライアント装置１４上で実行されている可能性がある他のアプリケーションプログラムから自動再接続データにアクセスすることが困難なようにする。
【００２８】
図４は、サーバシステム１２との通信が失われ、再確立された後にクライアント装置１４によって行われるアクションを示している。通信が失われることは、データの誤り、タイムアウト、通信媒体の障害、またはいくつかの異なるイベントのどれかによってもたらされる可能性がある。多くの場合、そのように通信が失われるのは、一時的であり、ユーザは、短い遅延の後にクライアント装置１４をサーバシステム１２に再接続することができる。再接続には、しばしば、ユーザによって行われる手動のステップが関わる。ただし、再接続プロセスは、自動化することもできる。具体的には、通信が失われた後、サーバシステム１２に再接続する試みを自動的に、繰り返し行うようにクライアント装置１４の端末エミュレーションソフトウェアを設計することができる。
【００２９】
再接続プロセスが自動化されるか否かにかかわらず、最終的な結果は、クライアント装置１４とサーバ１２の間でセキュアな通信チャネルを再確立するアクション３３である。そのような通信チャネルが再確立されると、クライアントとサーバは、アクション３４で第２の乱数を共有することができる。第２の乱数は、第１の乱数とは異なる値であるが、第１の乱数と同様の、または同一の仕方でサーバシステム１２によって生成される。したがって、第２の乱数は、サーバシステム１２からクライアント装置１４によって受け取られる１６バイトの値である。
【００３０】
次に、アクション３５が、自動再接続データの少なくとも一部分からクライアント装置においてクライアントセッションベリファイアを計算するか、または導出することを含む。より具体的には、これは、少なくとも部分的に第１の乱数から、また少なくとも部分的に第２の乱数からクライアントセッションベリファイアを導出することを含む。説明する実施形態では、セッションベリファイアは、以上の２つの乱数の何らかの組み合わせの一方向ハッシュである。例えば、以上の２つの数を加算、乗算、または連結した後、その結果に対して一方向ハッシュを行ってセッションベリファイアをもたらすことが可能である。ＨＭＡＣ（（ハッシュ済みメッセージ認証コード）hashed message authentication code）が、適切な一方向ハッシュ関数の例である。別法として、他のハッシュ関数を使用することも可能である。
【００３１】
アクション３６が、ユーザ証明を提供することなくサーバシステムによる自動再認証を要求することを含む。説明する実施形態では、このアクションは、クライアント装置からサーバシステムに自動認証要求を送ることを含む。自動認証要求は、（ａ）セッションＩＤ（アクション３２で前に受け取られている）、および（ｂ）前のアクションで計算されたセッションベリファイアを含む。この要求が成功したと想定すると、クライアント装置は、元のサーバセッションに再接続される。自動再認証を提供するために、クライアント装置が、ユーザ証明を記憶することは必要ないことに留意されたい。
【００３２】
図５は、クライアント装置１４とサーバシステム１２の間の通信が失われた後、サーバシステム１２によって行われるアクションを示している。アクション３８は、クライアント装置１４とサーバシステム１２の間でセキュアな通信チャネルを再確立することを含む。これは、ＲＤＰの暗号化機能またはその他の暗号化技術を利用して、クライアントによって開始された通信に応答して達せられる。
【００３３】
後続のアクション４０が、第２の乱数を生成し、サーバシステム１２とクライアント装置１４の間で共有することを含む。説明する実施形態では、この第２の乱数は、第１の乱数の生成と同様の、または同一の仕方でサーバシステム１２によって生成される。他の実施形態では、クライアント装置が、第２の乱数を生成し、この乱数をサーバシステム１２に送るのを担うことが可能である。
【００３４】
アクション４２が、クライアント装置１４から自動認証要求を受け取ることを含む。既に述べた通り、自動認証要求は、（ａ）セッションＩＤ、および（ｂ）既に説明した通りクライアント装置１４によって計算されたクライアントセッションベリファイアを含む。
【００３５】
アクション４４が、サーバセッションベリファイアを計算するか、または導出することを含む。サーバセッションベリファイアは、第１の乱数と第２の乱数の一方向ハッシュを行うことにより、クライアントセッションベリファイアと同じ仕方で計算される。
【００３６】
アクション４６が、クライアントセッションベリファイアをサーバセッションベリファイアと比較することによって検証することを含む。この２つのベリファイアが一致した場合、検証は成功であり、ユーザ証明を要求することなく、自動認証要求において受け取られたセッションＩＤで示されるセッションに関して要求側のクライアント装置を自動的に再認証するアクション４８が行われる。要求のセッションに関して認証されると、クライアント装置は、そのセッションに再接続され、通常のセッション動作が再開する。２つのベリファイアが一致しない場合、検証は、失敗であり、自動認証要求は、拒否される。この場合、クライアント装置は、要求のセッションに再接続されず、従来に近いユーザログオンプロセス５０が開始され、通常、ユーザが、自らのユーザ証明を入力することが要求される。
【００３７】
図２のアクション２６および２７、並びに図３のアクション３０および３１が、特定のセッションに関してクライアント装置が再認証されるたびに毎回、繰り返される。つまり、再認証が成功するたびに毎回、第１の乱数が、再び生成され、サーバシステムとクライアント装置の間で新たに共有される。これにより、一度に１つのクライアント装置だけが、特定のセッションに接続できることが確実になる。
【００３８】
オプションの機能として、自動再接続データの少なくとも一部分が、所定の時間間隔で自動的に再生成されて、新たに共有される。具体的には、およそ１時間おきに第１の乱数が再び生成され、サーバシステム１２とクライアント装置１４の間で再び共有される。新たに生成された第１の乱数が、サーバとクライアントの間で共有されると、古い乱数は無効にされ、もはや再接続のために役立たない。
【００３９】
図６は、自動再接続データの乱数部分を周期的に変更してクライアントに送るプロセスを示している。アクション６６が、第１の乱数を生成してクライアントに送り、タイムスタンプを記録することを含む。後続のアクション６８が、タイムスタンプを現在時刻と比較して、１時間などの所定の期間が経過したかどうかを判定することを含む。経過している場合、実行は、アクション６６にループして戻り、新しい乱数が生成されてクライアントに送られ、新しいタイムスタンプが記録される。期間がまだ経過していない場合、ブロック６８は、比較の結果が真になるまで繰り返され、真になった時点で、アクション６６が再び実行される。
【００４０】
図７は、サーバシステム１４が、コンピュータのオペレーティングシステム内でどのように実装されるかに関連のある詳細を示している。この実施形態では、コンピュータは、ユーザモードおよびカーネルモードとして知られるものを管理するオペレーティングシステム７０を有する。プログラムまたはプログラム構成要素は、通常、この２つのモードのどちらかで実行される。カーネルモードは、通常、コンピュータの動作にとって比較的クリティカルな低レベルのシステムソフトウェア構成要素のために取っておかれる。アプリケーションプログラムは、通常、非カーネルのユーザモードでオペレーティングシステムの下で実行され、システムレベルの機能を行うためにカーネルモードの構成要素に対するコールを行う。カーネルモードは、通常、コンピュータのマイクロプロセッサハードウェアによってサポートされる。
【００４１】
端末サーバシステムの説明する実施形態では、ユーザセッションを管理し、ユーザセッションに関連する様々な機能を行う１つ以上のユーザレベルのサーバ構成要素７１が存在する。さらに、カーネルモードの中で実行されて、サーバとそれぞれのクライアントの間における低レベルの通信機能を行う複数のプロトコルスタックまたは複数の通信構成要素７２が存在する。一般に、各セッションおよび対応するクライアント装置１４に関して単一のプロトコルスタック７２が存在する。スタックは、ＲＤＰプロトコルの下で、またＴＣＰ、ＩＰ、ＵＤＰなどのより低レベルのプロトコルの下で通信を管理する。一般に、サーバ構成要素７１と複数のプロトコルスタック７２の間の通信は、サーバ構成要素７１によってスタック７２に対して行われる関数コールを介して行われる。
【００４２】
説明する実施形態では、特定のセッションに関するプロトコルスタック７２は、第１の乱数を生成して関連するクライアント装置に送ること、および周期的間隔で第１の乱数を再び生成して再び送ることを担う。具体的には、プロトコルスタックは、サーバ／クライアント通信を行うように要求されるたびに毎回、所定の期間が経過しているかどうかを調べ、期間が経過している場合、第１の乱数を再び生成して再び送る。これにより、乱数が、端末サーバ構成要素７１による誘因なしに変更され、再び送られることが可能になる。この技術を使用すると、新しい乱数は、所定の期間が経過した場合だけ、またプロトコルスタックが、データを送信するか、または受信するのにアクティブな場合だけ送られる。
【００４３】
このアーキテクチャは、第１の乱数をクライアントに周期的間隔で周期的に再送信するのに、そうでなければ必要になる可能性がある専用のユーザモード「スピン」スレッドの使用が回避されるため、有利である。そのようなスレッドの使用は、コンピュータリソースの点で高価となる可能性がある。したがって、そのようなスレッドをなくすことは、相当な利点である。
【００４４】
自動再接続プロセス中、受け取られた自動再接続要求が、新しいプロトコルスタック７２によって処理され、端末サーバ構成要素７１に渡される。この要求の一部として、端末サーバ構成要素は、セッションＩＤおよびクライアントセッションベリファイアを受け取る。受け取られたセッションＩＤによって特定されたセッションに関連する現行の第１の乱数を見出すため、サーバ構成要素７１は、通信障害前にそのセッションに関連していたプロトコルスタック７２を特定し、そのセッションに関してクライアントと共有された最新の第１の乱数を求めてプロトコルスタックにクエリを行う。次に、サーバ構成要素は、その乱数を使用してサーバセッションベリファイアを計算し、クライアントから受け取られたセッションベリファイアを検証する。
【００４５】
前述した様々な構成要素および機能は、個々のコンピュータを使用して実装される。図８は、符号１００で示されるそのようなコンピュータの通常の例の構成要素を示している。図８で示した構成要素は、単に例であり、本発明の機能の範囲に関して何らかの限定を示唆するものでは全くなく、本発明は、図８で示した特徴に必ずしも依存しない。
【００４６】
一般に、様々な異なる汎用コンピューティングシステム構成または特殊目的コンピューティングシステム構成を使用することができる。本発明で使用するのに適する可能性がある周知のコンピューティングシステム、環境、および／または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、前述したシステムまたは装置のいずれかを含む分散コンピューティング環境等が含まれるが、以上には限定されない。
【００４７】
コンピュータの機能は、多くの場合、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令によって実現される。一般に、プログラムモジュールには、特定のタスクを行うか、または特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造等が含まれる。また、タスクは、通信網を介してリンクされた遠隔処理デバイスによって行われることも可能である。分散コンピューティング環境では、プログラムモジュールは、ローカルのコンピュータ記憶媒体と遠隔のコンピュータ記憶媒体の両方の中に配置されていることが可能である。
【００４８】
命令および／またはプログラムモジュールは、様々な時点で、コンピュータの一部であるか、またはコンピュータが読み取ることのできる様々なコンピュータ可読媒体の中に記憶されている。プログラムは、通常、例えば、フロッピー（登録商標）ディスク上、ＣＤ−ＲＯＭ上、ＤＶＤ上、または変調された信号などの何らかの形態の通信媒体上で配布される。そこから、プログラムは、コンピュータの２次メモリにインストールされるか、またはロードされる。実行時に、プログラムは、コンピュータの１次電子メモリの中に少なくとも部分的にロードされる。本明細書で説明する本発明は、以上のタイプおよび他の様々なタイプのコンピュータ可読媒体を、そのような媒体が、マイクロプロセッサまたは他のデータプロセッサと連携して前述したステップおよびアクションを実施するための命令、プログラム、および／またはモジュールを含むときに含む。また、本発明は、、コンピュータが、前述した方法および技術に従ってプログラミングされているときは、そのコンピュータ自体も含む。
【００４９】
例示のため、オペレーティングシステムなどのプログラムおよび他の実行可能プログラム構成要素を本明細書では、別々のブロックとして示しているが、そのようなプログラムおよび構成要素は、様々な時点でコンピュータの様々な記憶構成要素の中に存在し、コンピュータのデータプロセッサによって実行されることが認められよう。
【００５０】
図８を参照すると、コンピュータ１００の構成要素が、処理ユニット１２０、システムメモリ１３０、およびシステムメモリから処理ユニット１２０までを含む様々なシステム構成要素を結合するシステムバス１２１を含むことが可能であるが、以上には限定されない。システムバス１２１は、様々なバスアーキテクチャの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造の任意のものであることが可能である。例として、限定としてではなく、そのようなアーキテクチャには、インダストリアルスタンダードアーキテクチャ（Industrial Standard Architecture）（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（Micro Channel Architecture）（ＭＣＡ）バス、エンハンスト（Enhanced）ＩＳＡ（ＥＩＳＡＡ）バス、ビデオエレクトロニクススタンダーズアソシエーション（Video Electronics Standards Association）（ＶＥＳＡ）ローカルバス、およびメザニン（Mezzanine）バスとしても知られるペリフェラルコンポーネントインターコネクト（Peripheral Component Interconnect）（ＰＣＩ）バスが含まれる。
【００５１】
コンピュータ１００は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１００がアクセスすることのできる任意の利用可能な媒体であることが可能であり、揮発性媒体と不揮発性媒体、取外し可能な媒体と取外し不可能な媒体をともに含む。例として、限定としてではなく、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことが可能である。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための任意の方法または任意の技術で実装された揮発性と不揮発性の媒体、取外し可能な媒体と取外し不可能な媒体がともに含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（digital versatile disk）（ＤＶＤ）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶媒体、あるいは所望の情報を記憶するのに使用することができ、コンピュータ１００がアクセスすることができる任意の他の媒体が含まれるが、以上には限定されない。通信媒体は、通常、搬送波または他のトランスポート機構などの変調されたデータ信号でコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを実現し、また任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、情報を信号に符号化するように特定の１つ以上が設定されたか、または変更された信号を意味する。例として、限定としてではなく、通信媒体には、有線網または直接有線接続、並びに音響媒体、ＲＦ媒体、赤外線媒体、およびその他の無線媒体などの無線媒体が含まれる。また、前述したもののいずれかの組み合わせも、コンピュータ可読媒体の範囲に含まれるべきものである。
【００５２】
システムメモリ１３０は、読取り専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２などの揮発性メモリおよび／または不揮発性メモリの形態でコンピュータ記憶媒体を含む。始動中など、コンピュータ１００内部の要素間において情報を転送するのを助ける基本ルーチンを含む基本入力／出力システム１３３（ＢＩＯＳ）が、通常、ＲＯＭ１３１の中に記憶される。ＲＡＭ１３２は、通常、処理ユニット１２０にとって即時にアクセス可能であり、かつ／または処理ユニット１２０によって現在、演算が行われているデータおよび／またはプログラムモジュールを含む。例として、限定としてではなく、図８は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示している。
【００５３】
また、コンピュータ１００は、他の取外し可能な／取外し不可能な、揮発性／不揮発性のコンピュータ記憶媒体も含むことが可能である。単に例として、図８は、取外し不可能な不揮発性の磁気媒体に対して読取りまたは書込みを行うハードディスクドライブ１４１、取外し可能な不揮発性の磁気ディスク１５２に対して読取りまたは書込みを行う磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭまたは他の光媒体などの取外し可能な不揮発性の光ディスク１５６に対して読取りまたは書込みを行う光ディスクドライブ１５５を示している。例としての動作環境において使用することができる他の取外し可能な／取外し不可能な、揮発性／不揮発性のコンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、デジタルバーサタイルディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭ等が含まれるが、以上には限定されない。ハードディスクドライブ１４１は、通常、インターフェース１４０のような取外し不可能なメモリインターフェースを介してシステムバス１２１に接続され、また磁気ディスクドライブ１５１および光ディスクドライブ１５５は、通常、インターフェース１５０のような取外し可能なメモリインターフェースでシステムバス１２１に接続される。
【００５４】
前述し、図８で示したドライブおよび関連するコンピュータ記憶媒体により、コンピュータ１００にコンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータのストレージが提供される。図８で、例えば、ハードディスクドライブ１４１が、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶しているものとして示されている。以上の構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであることも、異なることも可能であることに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７には、少なくとも、これらが異なる複製であることを示すために本明細書では、異なる符号を付けている。ユーザは、キーボード１６２、およびマウス、トラックボール、またはタッチパッドと一般に呼ばれるポインティングデバイス１６１などの入力装置を介してコンピュータ１００にコマンドおよび情報を入力することができる。他の入力装置（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ等が含まれる可能性がある。以上の入力装置および他の入力装置は、しばしば、システムバスに結合されたユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（Universal Serial Bus）（ＵＳＢ）などの他のインターフェースおよびバス構造で接続してもよい。また、モニタ１９１または他のタイプの表示装置も、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタに加え、コンピュータは、出力周辺インターフェース１９５を介して接続することができるスピーカ１９７やプリンタ１９６などの他の周辺出力装置も含むことが可能である。
【００５５】
コンピュータは、遠隔コンピュータ１８０のような１つ以上の遠隔コンピュータに対する論理接続を使用するネットワーク化された環境において動作することも可能である。遠隔コンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的なネットワークノードであることが可能であり、通常、コンピュータ１００に関連して前述した要素の多く、またはすべてを含むが、図８では、メモリ記憶装置１８１だけを示している。図８に描いた論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含むことも可能である。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットで一般的である。
【００５６】
ＬＡＮネットワーキング環境で使用されるとき、コンピュータ１００は、ネットワークインターフェースまたはネットワークアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用されるとき、コンピュータ１００は、通常、インターネットなどのＷＡＮ１７３を介して通信を確立するためのモデム１７２または他の手段を含む。内部または外部にあることが可能なモデム１７２は、ユーザ入力インターフェース１６０、または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク化された環境において、コンピュータ１００に関連して描いたプログラムモジュール、またはプログラムモジュールの部分は、遠隔のメモリ記憶装置の中に記憶することができる。例として、限定としてではなく、図８は、遠隔のアプリケーションプログラム１８５が、メモリデバイス１８１上に存在するものとして示している。図示したネットワーク接続は、例示としてのものであり、コンピュータ間で通信リンクを確立する他の手段も使用できることを理解されたい。
【００５７】
特定の実装形態および実施形態の詳細を以上に説明したが、そのような詳細は、頭記の特許請求の範囲を限定するものではなく、法定の開示義務を果たすものである。したがって、特許請求の範囲によって定義される本発明は、前述した特定の特徴に限定されない。むしろ、本発明は、均等の原則に従って適切に解釈された頭記の特許請求の範囲に適切に含まれるあらゆる形態または変更形態で主張される。
【図面の簡単な説明】
【図１】本発明の要素を組み込んだクライアント／サーバシステムを示すブロック図である。
【図２】図１に示したサーバシステムおよびクライアント装置によって行われるステップを示す流れ図である。
【図３】図１に示したサーバシステムおよびクライアント装置によって行われるステップを示す流れ図である。
【図４】図１に示したサーバシステムおよびクライアント装置によって行われるステップを示す流れ図である。
【図５】図１に示したサーバシステムおよびクライアント装置によって行われるステップを示す流れ図である。
【図６】図１に示したサーバシステムおよびクライアント装置によって行われるステップを示す流れ図である。
【図７】図１のサーバシステムの構成要素が、コンピュータのユーザモードおよびカーネルモードに関してどのように実行されるかを示すブロック図である。
【図８】本明細書で説明する機能を実行するようにプログラミングすることが可能な例としてのコンピュータを示すブロック図である。
【符号の説明】
１０  サーバシステム
１２  サーバコンピュータ
１４  クライアント装置
１６  ネットワーク
７０  オペレーティングシステム
７２  ネットワークプロトコルスタック
１２０  処理ユニット
１２１  バス
１３０  システムメモリ
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  取外し不可能なメモリインターフェース
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のモジュール
１４７  プログラムデータ
１５０  取外し可能なメモリインターフェース
１６０  ユーザ入力インターフェース
１６２  キーボード
１７１  ローカルエリアネットワーク
１７２  モデム
１７３  ワイドエリアネットワーク
１８４  ネットワークインターフェース
１８５  アプリケーションプログラム
１９０  ビデオアダプタ
１９６  プリンタ
１９７  スピーカ
【図１】
0004572059.tif 000002
【図２】
0004572059.tif 000003
【図３】
0004572059.tif 000004
【図４】
0004572059.tif 000005
【図５】
0004572059.tif 000006
【図６】
0004572059.tif 000007
【図７】
0004572059.tif 000008
【図８】
0004572059.tif 000009