IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ チエン ダニエルの特許一覧

特許7309880リダイレクションを含むタイムスタンプベースの認証
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-07
(45)【発行日】2023-07-18
(54)【発明の名称】リダイレクションを含むタイムスタンプベースの認証
(51)【国際特許分類】
   G06F 21/31 20130101AFI20230710BHJP
【FI】
G06F21/31
【請求項の数】 13
(21)【出願番号】P 2021532905
(86)(22)【出願日】2019-03-20
(65)【公表番号】
(43)【公表日】2022-02-03
(86)【国際出願番号】 US2019023274
(87)【国際公開番号】W WO2020122977
(87)【国際公開日】2020-06-18
【審査請求日】2022-02-22
(31)【優先権主張番号】16/220,652
(32)【優先日】2018-12-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】516045643
【氏名又は名称】チエン ダニエル
(74)【代理人】
【識別番号】100206335
【弁理士】
【氏名又は名称】太田 和宏
(74)【代理人】
【識別番号】100120857
【弁理士】
【氏名又は名称】渡邉 聡
(74)【代理人】
【識別番号】100116872
【弁理士】
【氏名又は名称】藤田 和子
(72)【発明者】
【氏名】チエン ダニエル
【審査官】岸野 徹
(56)【参考文献】
【文献】特表2009-508189(JP,A)
【文献】米国特許出願公開第2015/0237049(US,A1)
【文献】米国特許出願公開第2018/0145986(US,A1)
【文献】米国特許出願公開第2015/0358338(US,A1)
【文献】特開2014-099793(JP,A)
【文献】特開2018-028759(JP,A)
【文献】特開2012-147341(JP,A)
【文献】米国特許出願公開第2018/0198822(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/31
(57)【特許請求の範囲】
【請求項1】
サーバ計算システムにおける方法であって、前記方法は、
前記サーバ計算システムが、第1の認証プロセスの指示をクライアント計算システムに関連付けるステップであって、第1の認証プロセスは、入力としてタイムスタンプを取り、タイムスタンプに基づく番号を出力として生成する、関連付けるステップと、
前記サーバ計算システムが、前記クライアント計算システムから第1の番号を受信するステップであって、第1の番号は、第1の認証プロセスを実行することによって前記クライアント計算システムによって生成される、受信するステップと、
前記サーバ計算システムが、前記サーバ計算システムに対してローカルであるクロックによって生成された第1のタイムスタンプを取得するステップと、
前記サーバ計算システムが、第1のタイムスタンプに基づいて第2の番号を生成するように第1のタイムスタンプに第2の認証プロセスを適用するステップと、
第1の番号が第2の番号と一致しない場合に、前記サーバ計算システムが、前記クライアント計算システムからモック計算システムにネットワーク通信をリダイレクトするステップと、
を含む方法であって、
前記サーバ計算システムが、第1の認証プロセスの指示をクライアント計算システムに関連付けるステップは、前記サーバ計算システムが、前記クライアント計算システムの識別子に関連付けられた表に第1の認証プロセスのインジケータを格納するステップであって、第1の認証プロセスは、初期セットアップ中に前記クライアント計算システムに割り当てられ、第1の認証プロセスは、それぞれがタイムスタンプに基づく番号を出力として生成する複数の公開認証プロセスのうちの1つである、格納するステップを含む、
方法
【請求項2】
請求項1の方法であって、
前記サーバ計算システムが、前記クライアント計算システムの1つ以上の通信特性を決定するステップと、
1つ以上の通信特性が許容可能である場合にのみ、前記サーバ計算システムが、前記クライアント計算システムを認証するステップと、
1つ以上の通信特性の少なくとも1つが許容可能でない場合に、前記サーバ計算システムが、ネットワーク通信を前記クライアント計算システムから前記モック計算システムにリダイレクトするステップと、
をさらに含む方法。
【請求項3】
請求項1の方法であって、
(1)第1の番号が第2の番号と一致する、(2)前記クライアント計算システムのユーザが認められたユーザ名とパスワードを提供する、(3)前記クライアント計算システムに関連するネットワークアドレスが信頼されるネットワークアドレスのリストに含まれる、および(4)前記クライアント計算システムの変更不可能な識別子が信頼されるデバイス識別子のリストに含まれる、場合にのみ、前記サーバ計算システムが、前記クライアント計算システムを認証するステップ、
をさらに含む方法。
【請求項4】
請求項1の方法であって、第1の番号が第2の番号と一致しない場合に、前記サーバ計算システムが、前記クライアント計算システムからモック計算システムにネットワーク通信をリダイレクトするステップは、前記サーバ計算システムが、ネットワークパケットを前記モック計算システムに送信するステップであって、ネットワークパケットは、ネットワーク通信に関連し、前記サーバ計算システムに宛てられる、送信するステップを含む、方法。
【請求項5】
請求項1の方法であって、第1の番号が第2の番号と一致しない場合に、前記サーバ計算システムが、前記クライアント計算システムからモック計算システムにネットワーク通信をリダイレクトするステップは、前記サーバ計算システムが、ネットワークパケットの宛先ネットワークアドレスを修正するステップであって、修正された宛先ネットワークアドレスは、前記モック計算システムを識別する、修正するステップを含む、方法。
【請求項6】
請求項1の方法であって、前記サーバ計算システムが、第1のタイムスタンプに基づいて第2の番号を生成するように第1のタイムスタンプに第2の認証プロセスを適用するステップは、前記サーバ計算システムが、第1のタイムスタンプおよび整数に演算子を適用するステップであって、前記演算子および前記整数は認証プロセスによって特定される、適用するステップを含む、方法。
【請求項7】
請求項1の方法であって、
前記サーバ計算システムが、第3の認証プロセスのインジケータを前記クライアント計算システムに送信するステップと、
前記クライアント計算システムとの後続の認証相互作用において、前記サーバ計算システムが、第1のタイムスタンプよりも時間的に遅い第2のタイムスタンプに第3の認証プロセスを適用するステップと、
をさらに含む方法。
【請求項8】
請求項の方法であって、前記サーバ計算システムが、第3の認証プロセスのインジケータを前記クライアント計算システムに送信するステップは、前記クライアント計算システムを認証することに応答して、前記サーバ計算システムが、第3の認証プロセスのインジケータを送信し、それによって、前記クライアント計算システムが後続の認証相互作用で第3の認証プロセスを使用するようにするステップを含む、方法。
【請求項9】
システムであって、前記システムは、
サーバ計算システムと、
クライアント計算システムであって、
前記クライアント計算システムに対してローカルであるクロックによって生成された第1のタイムスタンプを受信し、
第1のタイムスタンプに、前記第1のタイムスタンプに基づいて第1の番号を生成するように第1の認証プロセスを適用し、
第1の番号を前記サーバ計算システムに送信する、
ように構成されたクライアント計算システムと、
を備え、
前記サーバ計算システムは、
前記クライアント計算システムから第1の番号を受信し、
前記サーバ計算システムに対してローカルであるクロックによって生成された第2のタイムスタンプを受信し、
前記第2のタイムスタンプに基づいて第2の番号を生成するように第2のタイムスタンプに第2の認証プロセスを適用し、
第1の番号が第2の番号と一致する場合にのみ、前記クライアント計算システムを認証し、
第1の番号が第2の番号と一致しない場合に、前記クライアント計算システムからモック計算システムにネットワーク通信をリダイレクトする
ように構成されており
前記サーバ計算システムは、イベントに応答して、第3の認証プロセスの指示を前記クライアント計算システムに送信するように構成され、第3の認証は、第1の認証プロセスに代わるものであり、前記サーバ計算システムとクライアント計算システムとの間の後続の認証相互作用で使用されるものであり、
前記イベントは、
前記クライアント計算システムが、少なくとも所定の時間、第1の認証プロセスを使用している;
前記クライアント計算システムが、少なくとも所定の回数認証された;および
所定の日付または時間が経過した、
のうちの少なくとも1つを含む、システム。
【請求項10】
請求項のシステムであって、前記サーバ計算システムは、
前記クライアント計算システムの1つ以上の通信特性を決定し、
1つ以上の通信特性が許容可能である場合にのみ、前記クライアント計算システムを認証し、
1つ以上の通信特性の少なくとも1つが許容可能でない場合に、ネットワーク通信を前記クライアント計算システムから前記モック計算システムにリダイレクトする
ように構成され、
前記サーバ計算システムは、許容可能な通信特性のホワイトリストを格納するように構成され、前記ホワイトリストは、ネットワークアドレス、ネットワークポート、プロトコルタイプ、変更不可能なデバイス識別子、アクセス時間、および/または地理的位置、のうちの1つ以上を含む、
システム。
【請求項11】
請求項のシステムであって、前記サーバ計算システムおよび前記モック計算システムは、同じサービスをそれぞれ提供し、前記サーバ計算システムは、前記モック計算システムに存在しないプライベートデータを含む、システム。
【請求項12】
請求項のシステムであって、前記モック計算システムは、ネットワーク通信を追跡するように、および、前記ネットワーク通信が、前記サーバ計算システムに非認証アクセスする試みに関連することを、記録するように、構成される、システム。
【請求項13】
請求項のシステムであって、前記サーバ計算システムは、前記クライアント計算システムのクロックと前記サーバ計算システムのクロックとの差を考慮するために、第2のタイムスタンプから少なくとも1の位の数字の精度をドロップするように構成される、システム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2018年12月14日に出願された、発明の名称が「タイムスタンプベースの認証」である、米国特許出願第16/220,652号の一部継続出願であり、その内容は、その全体が参照により本明細書に組み込まれる。
【0002】
本開示は、コンピュータセキュリティの方法、技術、およびシステムに関し、より具体的には、そのユーザに加えて計算デバイスのアイデンティティを検証する認証に対するタイムスタンプベースのアプローチに関する。
【背景技術】
【0003】
ハッカーおよび他の悪意の当事者は、ホームユーザ、企業、または政府によって動作される計算システムまたはネットワークにますます侵入しようとしている。多くの場合、ハッカーは、正当なユーザの盗まれた認証情報(例えば、ユーザ名やパスワードなど)を使用して、システムやネットワークにアクセスする。例えば、ハッカーは、侵入を受けたシステムから盗まれたユーザ名やパスワードのリストにアクセスできる。多くのユーザが、多くの異なるサービスに同じパスワードを使用しているので、ハッカーは、これらのパスワードを他のシステムで試すことができる。
【図面の簡単な説明】
【0004】
図1】例示的実施形態によるシステムにおける相互作用する認証モジュールを示すブロック図である。
図2A】例示的実施形態による認証およびリダイレクションを示すブロック図である。
図2B】例示的実施形態による認証およびリダイレクションを示すブロック図である。
図2C】例示的実施形態による認証およびリダイレクションを示すブロック図である。
図2D】例示的実施形態による認証およびリダイレクションを示すブロック図である。
図3A】例示的実施形態によって提供される認証プロセスを示すフロー図である。
図3B】例示的実施形態によって提供される認証プロセスを示すフロー図である。
図3C】例示的実施形態によって提供される認証プロセスを示すフロー図である。
図3D】例示的実施形態によって提供される認証プロセスを示すフロー図である。
図3E】例示的実施形態によって提供される認証プロセスを示すフロー図である。
図3F】例示的実施形態によって提供される認証プロセスを示すフロー図である。
図3G】例示的実施形態によって提供される認証プロセスを示すフロー図である。
図4】例示的実施形態による認証モジュールを実施する計算システムのブロック図である。
【発明を実施するための形態】
【0005】
本明細書に記載する実施形態は、コンピュータセキュリティの方法、デバイス、およびシステムを提供し、より具体的には、タイムスタンプベースの認証技術は、システム、サービス、および組織の追加レベルのセキュリティを提供する。典型的実施形態は、第1計算システムと第2計算システムとの間で共有される認証プロセスを利用する認証方法を提供する。認証プロセスのアイデンティティは、2つの計算システム間で共有される秘密である。プロセスは、タイムスタンプに基づく番号を出力として提供する。第1計算システムは、そのクロックから取得したタイムスタンプを使用して認証プロセスを実行する。結果としての番号は、ユーザ名および/またはパスワードなどの他の認証データとおそらく共に、第2計算システムに送信される。これに応答して、第2計算システムは、そのクロックから取得したタイムスタンプを使用して認証プロセスを実行する。第1および第2計算システムによって生成された番号が一致する場合、第1計算システムが認証される。
【0006】
認証は、他の情報または追加情報に基づいて決定できる。例えば、計算システムは、ユーザ名およびパスワード検証と組み合わせて、記載されたタイムスタンプベースの技術を使用することによって、認証されてよい。別の例として、認証は、許容されるIPアドレス範囲、デバイス識別子(例えば、ハードウェアアドレス、MAC識別子、CPU識別子)、時間範囲、地理的位置などの、許容されるネットワーク通信の特性を特定するホワイトリストまたは他のデータ構造と組み合わせた、タイムスタンプベースの技術に基づいてよい。
【0007】
計算システムまたはデバイスが、記載される認証技術に失敗した場合、様々なアクションが考えられる。そのようなアクションには、任意のネットワーク接続のクローズ、認証失敗のロギング、ユーザへの通知などが含まれる。他の実施形態では、試みられた通信は、代替計算システムにリダイレクトされる。代替計算システムは、実際の宛先システムの機能、外観、構造、およびデータの少なくとも一部をコピーすることによって、実際の宛先計算システムとしてマスカレードする「モックシステム」である。モックシステムは、偽造の、偽の、またはそうでなければ本物でない、データを含むことが多い。場合によっては、偽造のデータは、その使用を追跡するように特別に構成される。例えば、偽造のデータは、データのソースを識別するのに使用されることができる固有のスペルやエラーを有する、名前、住所、または番号を含む架空の顧客リストを含み得る。デジタル画像データは、データを追跡するのに同様に使用され得る透かしまたは他の信号を含み得る。
【0008】
典型的実施形態では、記載された第1計算システムはクライアントであり、第2計算システムはサーバである。クライアントは、サーバによって提供されるサービスにアクセスするために、それ自体を認証する。他の実施形態では、クライアントは、ある第三者によって提供または管理される可能性がある、ある他のシステムまたはサービスに対してクライアントを認証するために使用できる認証トークンを取得するために、サーバとそれ自体を認証することができる。いくつかの実施形態では、第1および第2システムは、インターネットを利用できる消費者デバイスのネットワークなどのピアである。
【0009】
記載される技術は、1つ以上の計算システムの操作、統合、または効率を改善することなどによって、既存の技術を改善する。具体的には、記載される技術は、コンピュータセキュリティに対する現在のアプローチにおける欠点に対処する。記載される技術を使用すると、悪意の計算システムが、セキュアサービス、システム、またはネットワークに侵入することが、より困難になる。記載される技術は、適切な認証プロセスで構成されたコンピュータまたはデバイスのみにアクセスを制限する。記載される技術は、ユーザによって使用されているデバイスに加えて、ユーザのアイデンティティを検証するのに使用されることができる。従って、悪意の当事者がユーザのログイン認証情報(例えば、ユーザ名やパスワード)を盗んだとしても、その悪意の当事者は、その当事者がユーザのデバイスも盗んでいなければ、セキュアシステムにアクセスできない。
【0010】
システム概観
図1は、一実施形態によるシステムにおける相互作用する認証モジュールを示すブロック図である。図1では、システム199は、サーバ計算システム10と、クライアント計算システム60と、認証プロセスリポジトリシステム62とを含む。サーバ10は、サーバ認証モジュール100と、認証プロセス110aとを含む。クライアント60は、クライアント認証モジュール101と、同じ認証プロセス110aとを含む。リポジトリシステム62は、複数の認証プロセス110a-110nを含む。
【0011】
いくつかの実施形態では、クライアント60は、企業、大学、または他の組織によって提供され得るような、セキュアサービスまたはネットワークとの相互作用のために配備されるコンピュータである。クライアント60が最初に構成されるとき(例えば、それがアンボックスされておらず、そのユーザのために構成されるとき)、管理者120または他の特権ユーザは、初期認証プロセス110aの指示をクライアント60およびサーバ10に記憶する。これは、認証プロセスの識別子を入力するなど、手動で行われ得る。他の実施形態では、認証プロセス110aの指示は、セキュアチャネルを介してクライアントおよび/またはサーバに送信されてよい。これに応答して、クライアント60およびサーバ10は、それぞれ、リポジトリシステム110a-nから識別された認証プロセス110aを取得および記憶する。クライアント60は、そして、以下に説明するように、サーバ10との認証相互作用中に認証プロセス110aを使用する準備が整う。
【0012】
典型的実施形態では、認証プロセスは、入力としてタイムスタンプを取り、タイムスタンプに基づいて番号を出力する。例示的プロセスは、K=a*timestamp+bと表されてよく、ここで、aおよびbは、認証プロセスの一部として記憶される定数である。いくつかの実施形態では、定数aおよびbは、プロセスの固定または静的部分であるが、他の実施形態では、定数は、プロセスが選択または記憶されるときに指定される構成データである。他の実施形態は、タイムスタンプに基づいて出力を計算するために、他のまたは追加の演算子(例えば、減算、指数化、モジュロ等)を使用し得る。
【0013】
クライアント60は、次のようにサーバ10に対してそれ自体を認証する。まず、クライアントは、ハードウェアまたはソフトウェアクロックから、現在の時刻を反映するタイムスタンプを取得する。クロックは、典型的には、クライアント60に対してローカルであるが、いくつかの実施形態では、ネットワークアクセス可能なタイムサーバであってよい。クライアント60は、そして、認証プロセス110をタイムスタンプに適用して、認証キーとして使用される番号を取得する。例えば、タイムスタンプが1544512669で、プロセス110が機能K=34*timestamp+54543を適用する場合、結果としての番号は52513485289になる。決定された番号は、そして、認証データとしてサーバ10にクライアント60によって送信される。認証データは、ユーザ名およびパスワード(またはそのハッシュ)などの他の情報を含んでよい。認証データは、MACアドレス、CPU識別子、または同様のものなどのデバイス識別子も、あるいは代わりに、含んでよい。
【0014】
サーバ10がクライアント60から認証データを受信すると、サーバ10はクライアント60と同様に認証番号を算出する。サーバ10は、まず、クライアントを認証プロセスに関連付けるテーブルまたはデータベース内のプロセス110aを検索することによって、利用する正しい認証プロセスを決定する。サーバ10は、典型的に、クライアントを各認証プロセスにマップする表を有し、クライアントごとに異なるプロセスを採用することができるようになっている。いくつかの実施形態では、この表は、クライアントの変更不可能なデバイス識別子(例えば、MACアドレス、CPU識別子)を認証プロセスの識別子にマップする。サーバ60は、認証データの一部として、別個のネットワーク伝送を介して、またはそうでなければ初期ネットワークハンドシェイクまたは他のネットワークプロトコル関連動作の一部として、デバイス識別子を受信する。
【0015】
サーバ10は、そして、クロックからタイムスタンプを取得し、プロセス110をタイムスタンプに適用して、番号を取得する。この番号は、クライアント60から受信した番号と比較される。番号(およびパスワード、および存在する場合は他の識別子)が一致する場合、クライアント60は真正である。サーバ10は、そして、認証されたことをクライアント60に通知する。いくつかの実施形態では、この通知は、クライアント60がサーバ10と共に使用できるトークンを含む。このトークンは、サーバ10によって管理される認証されたアクセスを必要とする別のシステムまたはサービスと共に使用してもよく、代わりに使用してもよい。例えば、サーバ10は、他の(場合によっては第三者の)システムまたは組織によって使用される認証サービスを提供することができる。
【0016】
サーバ10およびクライアント60によって使用されるタイムスタンプは、ネットワーク伝送待ち時間、クロックドリフト等のために、同じではない可能性がある。そのような変化を考慮するために、認証プロセス110は、タイムスタンプの精度をより大きな時間間隔に下げることができる。例えば、タイムスタンプが秒単位で表される場合、認証プロセス110は、タイムスタンプを最も近い10秒間隔に丸めるか、切り捨てるか、または切り上げることができる(例えば、1の位の数字をドロップすることによって)。また、時間間隔の境界を越えて移行するクライアントおよびサーバタイムスタンプを考慮するために、サーバ10は、プロセス110を、先の時間間隔と同様に電流を反映するタイムスタンプに適用することができる。一例として、クライアントによって取得されたタイムスタンプが1239であり、認証プロセスがその機能を適用する前に1の位の数字をドロップすると仮定する。K=34*modified timestamp+42yields34*123+42=4224を使用する。サーバ10によって取得されたタイムスタンプが1秒後(1240)である場合、サーバはK=34*124+42=4258を生成し、これはクライアント60から受信した番号とは一致しない。しかし、サーバ10が前の時間間隔(123)もチェックする場合、クライアント60から受信した番号と一致する番号(34*123+42=4224)を取得する。他の実施形態では、クライアント60は、代わりに、第1のものが現在の時間間隔に基づき、第2のものが次の今後の時間間隔に基づいている、2つの番号を送信することができる。サーバ10は、そして、これらの両方を現在時刻に基づいてその番号と照合し、いずれかの番号がサーバの番号と一致する場合にクライアント60を認証する。
【0017】
認証プロセスは、時々、またはイベントの発生時に、修正または変更され得る。例えば、サーバ10は、n回目の認証ごと、時間(例えば、24時間)の経過後、一定の日付(例えば、2020年1月1日)等で、新たな認証プロセスを使用するようにクライアント60に指示してよい。認証プロセスを変更することによって、悪意の当事者が、記載する技術の核心で番号成機能を回復することがより困難になる。
【0018】
リポジトリシステム62は、他のデバイスおよびシステムによって使用される認証プロセスを記憶および提供する。システム62は、いくつかの実施形態では、パブリックリポジトリである。いくつかの実施形態において記載される技術は、特定の認証方法のアイデンティティを秘密に保つことに依存するので、異なる認証プロセスの詳細は、公開されてよい。そのような実施形態では、システム62は、典型的に、多くの(例えば、何百万もの)認証プロセスをホストし、悪意の当事者が、それら全てを強引に試すことができないようになっている。また、あるいは代替的に、各認証プロセスは、構成可能な定数、またはクライアントとサーバとの間で秘密として保持することもできる他の入力を、利用してよい。いくつかの実施形態では、認証プロセスは、それ自体プライベートである。セキュリティを最大限に高めるために、認証プロセスは、組織内のシステムとマシンとの間でのみ共有される。例えば、企業は、従業員デバイスの認証目的でのみ使用される認証プロセスの秘密セットを確立することができる。このセットは、安全な共有リポジトリに保存されてもよく、各デバイスに直接ロードされてもよい。認証プロセスは少数の定数と演算子として表すことができるので、非常に多数のプロセスをかなり簡潔に表すことができる。
【0019】
いくつかの実施形態では、記載する技術は、企業または組織ネットワークの文脈において、ユーザおよびそのデバイスを認証するために採用される。他の文脈では、この技術は、オンラインWebベースのサービスの文脈において採用されることができる。そのような実施形態では、ユーザがWebサービスにサインアップするたびに、サービスは、使用する初期認証プロセスの指示を提供する。ユーザのクライアントデバイスは、Webサービスを認証プロセスにマップする表を保持し、ユーザがアクセスしているWebサービスに基づいて正しい認証プロセスを採用することができるようになっている。さらに、上述したように、これらの技術は、セキュアシステムにアクセスするときにデバイスのアイデンティティを検証するために、デバイス識別子(例えば、マックまたはCPU識別子)を使用する他の技術と組み合わせることができる。そのような技術は、2016年11月22日に出願された、発明の名称が「デバイス識別子およびネットワークアドレスに基づくネットワークセキュリティ」である、米国特許出願公開第2018/0146001号に記載されており、それは、その全体が参照により本明細書に組み込まれる。
【0020】
なお、作成および/または使用され得る異なる認証プロセスの数に実質的に制限はない。いくつかの実施形態は、多数(例えば、何百万もの)の異なる認証プロセスを提供し、そのうちの異なるサブセットは、異なる企業、組織等によって使用され得る。これにより、各組織は、他の組織に対してフレキシビリティおよび独自性を有することができる。従って、各組織は、認証プロセスを選択、置換、および更新するための独自のポリシーを実施することができる。
【0021】
なお、記載される認証技術は、ユーザインタラクションなしに実行されることができる。特に、認証モジュールは、ユーザ介入なしに自動的に、適切な認証プロセスを適用し、結果としての数(場合によっては他のキャッシュしたログインクレデンシャルまたはトークンと共に)をサーバに送信することなどが可能である。このようにして、この技術は、ユーザに対して完全に透過的であってもよい。さらに、この技術は、異なる実施形態では、プロトコルスタックの異なるレベルで実施され得る。例えば、一実施形態は、HTTP接続などを介して、アプリケーション層で認証相互作用を実行し得る。別の実施形態は、レイヤ2(データリンク)または3(ネットワーク)などの下位層で認証相互作用を実行し得る。
【0022】
図2A-2Dは、例示的実施形態による認証およびリダイレクションを示すブロック図である。概観として、図2Aは、例示的認証相互作用におけるリダイレクションを示し、図2Bは、例示的非認証相互作用におけるリダイレクションを示している。図2Cは、ルータやファイアウォールなどのネットワーク機器によって、非認証相互作用のリダイレクションが実行される変形例を示している。図2Dは、認証およびターゲットサービスが別個の計算システムによって実行される別の変形例を示している。
【0023】
図2Aは、例示的認証相互作用におけるリダイレクションを示している。図2Aは、上述の図1などに記載されている、サーバ計算システム10と相互作用する認証計算デバイス201を示している。サーバ10は、認証モジュール100、リダイレクタ120およびターゲットサービス130を含む。認証デバイス201は、ターゲットサービス130と相互作用しようとしている。ターゲットサービス130は、ウェブページ、ウェブアプリ、ネットワークアクセス可能なAPIなど、サーバ10によって提供される任意のネットワークアクセス可能なサービスであってよい。
【0024】
認証デバイス201は、上述したように、認証モジュール100との認証相互作用に関わる。デバイス201が認証されているので、認証モジュール100は、認証デバイス201による後続のアクセスをターゲットサービス130にリダイレクトするように、リダイレクタ120に指示する。モジュール100からの指示は、ターゲットサービス130に通信をリダイレクトする明示的なコマンド、認証が成功したことを示すレスポンスコード等を含む、様々な形態をとることができる。リダイレクションは、実施形態に応じて様々な方法で達成され得る。例えば、リダイレクションは、適切な認証トークンを含むかどうかを決定することなどによって、ネットワーク通信が認証されるかどうかに応じて、アプリケーション制御をリダイレクトするサーバアプリケーション内の制御ロジックによって実行されてよい。他の実施形態では、リダイレクションは、以下にさらに詳細に記載するように、ネットワークパケットをリルーティングすることによって実行されてよい。
【0025】
図2Bは、例示的非認証相互作用におけるリダイレクションを示している。図2Bは、サーバ計算システム10と相互作用する非認証計算デバイス202を示している。図2Aのように、デバイス202は、最初に、認証モジュール100と相互作用することによって認証を試みる。認証が失敗すると、モジュール100は、モックシステム210とのさらなる相互作用をリダイレクトするように、リダイレクタ120に指示する。本明細書で提供される議論に加えて、リダイレクション技術は、2017年3月21日に出願された、発明の名称が「問題のあるネットワークアクセスのリダイレクションに基づくネットワークセキュリティ」である、米国特許出願第15/465,315号にさらに記載され、それは、その全体が参照により本明細書に組み込まれる。
【0026】
ネットワーク通信は、様々な方法でリダイレクトすることができる。いくつかの実施形態では、パケットは、パケットを異なるホスト/ネットワークに送信することによってリダイレクトすることができる。そのような場合、パケットの宛先アドレスを修正する必要があるかもしれない。他の実施形態では、HTTPリダイレクトなどの、アプリケーションレベルのリダイレクトが採用されることができる。例えば、認証モジュール100は、Webサーバ上で実行されるアプリケーションによって利用されてよい。この文脈において、問題のある通信は、拒否されたソースIPアドレスに由来する(例えば、TCP/IPスタックから取得された)ものである可能性がある。要求されたページを非認証デバイス202に供給する代わりに、ウェブサーバは、デバイス202に代わりにモックシステム210と相互作用させるHTTPリダイレクト(例えば、レスポンスコード301)で応答する。
【0027】
モック計算システム210は、ターゲットサービス130の挙動、構造、および機能の少なくとも一部をマスカレード、シミュレート、および/または模倣する計算システムである。モックシステム210は、ターゲットサービス130と実質的にまたは完全に同じ機能を提供することができるが、その代わりに、個人情報(例えば、クレジットカード情報、社会保障番号)、会社データ(例えば、企業秘密、金融データ、分類データ)、国家セキュリティデータ、または同様のものなどの偽造または偽のデータを記憶または提供し得る。提供されるデータは、悪意のユーザを惑わせる、欺く、混乱させる、または追跡するように設計され得る。上述のように、偽のデータのいくつかは、後にその使用を追跡するように特別に構成されてよい。例えば、個人情報は、後に識別することができる意図的なスペルミスを含んでよい。別の例として、デジタル画像、オーディオ、またはビデオコンテンツは、透かしまたは他の信号を含んでよく、透かしまたは他の信号は、人間には知覚できないが、認証なしにモックシステム803から取得されたものとしてコンテンツを一意に識別することができる。
【0028】
モック計算システム210は、典型的に、非認証デバイス202からのネットワーク通信を追跡するように構成される。通信を追跡することは、非認証デバイス202の行動をロギング、記録、またはその他の方法で監視することを含むことができる。
【0029】
場合によっては、モック計算システム210は、非認証デバイス202に対する「カウンタアタック」を開始しようと試みる。例えば、モックシステム210は、非認証デバイス202の動作を監視または制御するのに使用することができるプログラムコード(例えば、ルートキット、トロイの木馬、ワーム)をインストールするために、(例えば、バッファオーバーフロー、スクリプトインジェクション等を引き起こすことによって)問題のあるデバイスのセキュリティに侵入するようにネットワーク通信を使用しようと試みてよい。
【0030】
いくつかの実施形態では、モックシステム210は仮想マシンである。いくつかの実施形態は、仮想マシンの一群を利用して、モックシステムとして機能する。これらの仮想マシンは、通信のソースIPアドレスなどの様々な要因に基づいて割り当てることができ、所定のアタッカーが、後でアクセスした際でも、所定の仮想マシンに常に導かれるようになっている。また、仮想マシンの使用により、異なるアタッカーを異なるモックコンピューティングシステムにリダイレクトできる。
【0031】
図2Cは、非認証相互作用のリダイレクションが、ルータやファイアウォールなどのネットワークデバイスによって実行される、変形例を示している。この例は、非認証通信のリダイレクションが、サーバ計算システム10から分離および区別される計算デバイスによって実行される点で、図2Aおよび2Bのものとは異なる。この例では、デバイス201および202は、保護されたネットワーク252と相互作用しようとし、保護されたネットワーク252は、サーバシステム10、モックシステム210、およびネットワークデバイス260を含む。デバイス260は、ルータ、ファイアウォール、スイッチ、サーバ等であってよい。
【0032】
図示の例では、ネットワークデバイス260は、少なくとも、場合によりサーバシステム10(または他のデバイス/システム)から受信した指示に基づいて、サーバシステム10またはモックシステム210のいずれかに着信通信を導くのに関与しているリダイレクションモジュール(例えば、モジュール120のような)を実行する。他の実施形態では、デバイス260は、ソースIPアドレス、地理的位置、時刻などの他の通信特性と場合により組み合わせられる、記載されるタイムスタンプベースの認証スキームを使用することによって、所定の通信が認証されるかどうかを決定することができる、認証モジュールも実行する。
【0033】
例として、両方のデバイス201および202は、サーバ10への新しいTCP/IP接続を開くことなどによって、サーバシステム10と相互作用しようとする。新しい通信または相互作用を含むネットワークパケットは、本明細書に記載されるように、認証のためにシステム10にデバイス260によってリダイレクトされる。認証が失敗した場合(デバイス202の場合のように)、システム10は、非認証デバイス由来のさらなるパケットをモックシステム210にリダイレクトするように、デバイス260に指示する。そうでなければ、認証が成功した場合(デバイス201の場合のように)、システム10は、非認証デバイス由来のパケットをシステム10に伝え続けるように、デバイス260に指示する。
【0034】
いくつかの実施形態では、システム10は、デバイス260にいかなる種類の指示も提供しない。そのような実施形態では、デバイス260は、認証トークンの有無に基づいてアクセスをリダイレクトしてよい。例えば、トークンを含まない新しい通信は、システム10にルーティングされてよい。通信が認証される場合(デバイス201)、システム10は、認証デバイス201に有効なトークンを提供する。その一方で、通信が認証できない場合(デバイス202)、システム10は、リダイレクションを必要とするものとしてデバイス260によって認識される、特別にフォーマットされたトークンを、非認証デバイス202に提供する。
【0035】
場合によっては、認証およびリダイレクションロジックの両方がデバイス260にある。例えば、仮想プライベートネットワーク(VPN)を実施するファイアウォールに対してそのようなアプローチをとることができる。保護されたネットワーク252にアクセスするために、デバイス201および202は、まず、デバイス262とVPNを確立しなければならない。VPNをセットアップするには、ユーザ名/パスワード、タイムスタンプベースの認証、デバイス識別子、または本明細書で論じられる他の要因やプロパティ、のうちの1つ以上が必要である。非認証デバイス202は、ネットワーク252にアクセスすることが可能であってよいが、その通信の全ては、モックシステム210にリダイレクトされる。
【0036】
図2Dは、認証およびターゲットサービスが、別個の計算システムによって実行される、別の変形例を示している。図2Dのシナリオは、認証が認証システム200によって実行されることと、ターゲットサービスがターゲットシステム230によって提供されることとを除いて、図2Cのシナリオと同様である。図2Dは、サービスおよび物理(または仮想)マシンが様々な方法で組織され得ることを強調する。典型的なMicrosoft Windows実施では、認証は、ドメインコントローラによって実行され、それは、多くの場合、ネットワークアクセス可能なサービスを提供するシステム(例えば、システム230)とは別個の計算システム(例えば、システム200)に存在する。他の実施形態では、デバイス201および202は、認証システム200と決して直接相互作用し得ない。その代わりに、それらのデバイスがターゲットシステム230と相互作用すると、ターゲットシステムは、それ自体がデバイス201および202のために認証システム200と相互作用する。
【0037】
上述のように、いくつかの実施形態は、1つ以上の信頼できるデバイス識別子の存在があればベース認証をさらに行い得る。デバイス識別子は、典型的に、CPU、マザーボード、ディスク、ビデオカード、ネットワークインターフェースカード、MACアドレス、または同様のもの、に焼き付けられた識別子またはシリアル番号などの、ハードウェア識別子である変更不可能な識別子であってよい。変更不可能な識別子は、CPUおよびネットワークカード識別子を組み合わせることなどによって、複数のハードウェア識別子を組み込んでよい。
【0038】
変更不可能な識別子を操作または偽造できないことを保証するために、特別な措置が講じられる。典型的実施形態では、全ての認証デバイスは、ネットワークを管理する会社または他のエンティティ(例えば、政府機関)によって制御される。認証デバイスは、典型的に「ロックダウン」される。つまり、一般ユーザは、管理者権限が付与されず、従って、起動シーケンスの変更、ソフトウェアのインストールまたは削除、ネットワーク設定の構成、非認証プログラム/スクリプトの実行、または同様のもの、などの動作を実行できない。いくつかの実施形態では、セキュアブート手順が採用され、それによって、ユーザが、記憶されたハードウェア識別子、BIOSまたは他の低レベルコードの改ざん、ブート非認証コード等を変更することができないことを、保証する。認証デバイスのデバイス識別子は、集中ホワイトリストに追加され、それは、真正性およびデータの完全性を保証するために、暗号手段(例えば、デジタル署名)を使用して認証モジュールに分配される。
【0039】
変更不可能な識別子を通信するための異なるスキームが考えられる。あるプロトコルでは、認証モジュールが所定のソースアドレスから最初のパケットを受信および検証すると、そのモジュールは、そのソースアドレスのデバイスにメッセージを送信する。メッセージは、後続の全ての通信(例えば、パケット)でデバイスの変更不可能な識別子を提供するように、デバイスに指示する。後続のパケットは、認証ソースアドレスおよびデバイス識別子がチェックされる。
【0040】
別のプロトコルでは、認証モジュールが所定のソースアドレスから最初のパケットを受信および検証すると、そのモジュールは、そのソースアドレスのデバイスに要求を送信し、デバイスの変更不可能な識別子も提供する。デバイスは、識別子を送信することで応答し、それは、そして認証モジュールによって検証されることができる。一旦識別子が検証されると、認証モジュールは、デバイス識別子に対する要求を更新することなく、所定のソースアドレスからの一定の数(または期間)のパケットを許容し得る。例えば、認証モジュールは、100パケットごとに、毎分、または何らかの他のスケジュール(例えば、ランダムウィンドウ)で、デバイス識別子を要求し得る。そのようなアプローチは、ネットワーク待ち時間およびスループットへの影響を最小限に抑える。パケットのごく一部のみがデバイス識別子検証動作をトリガーするからであり、それは、典型的に、リモートデバイスから情報を取得するために追加のネットワークラウンドトリップを要求する。認証モジュールによって「監査」されるパケットのごく一部は、異なるレベルのセキュリティが達成可能になるように、構成可能である。
【0041】
いくつかの実施形態では、送信されたデバイス識別子は、送信デバイスによって暗号化および/またはデジタル署名される。デバイス識別子を暗号化することは、悪意のユーザが、傍受し、それによって認証デバイス識別子にアクセスすることが不可能であることを、保証する。デバイス識別子にデジタル署名することにより、認証モジュールは、デバイス識別子が認証デバイスによって実際に提供されたものであり、第三者によってではないことを検証できる。
【0042】
いくつかの実施形態では、情報、プロパティ、ルール等は、認証が、1つ以上のホワイトリストまたは同様のデータ構造/ストアに組織または記憶され得るかどうかを決定するのに使用される。場合によっては、1つ以上のホワイトリストは、時間、場所、および通信方法に関するきめ細かい制御を提供するために、地理的位置、日付、時間、コンテンツタイプ等に関連するものなど、関連する許容可能なプロパティに、IPアドレス(または範囲)、デバイス識別子、ユーザ等をマップする。
【0043】
例示的プロセス
図3A-3Gは、例示的実施形態によって提供される認証プロセスを示すフロー図である。
【0044】
図3Aは、サーバ計算システムにおける例示的ロジックのフロー図である。このおよび以下のフロー図において示されているロジックは、例えば、上述の図1に関して記載されたサーバ認証モジュール100によって実行されてよい。図3Aは、以下のブロックを含むプロセス3A00を示している。
【0045】
ブロック3A01は、第1の認証プロセスの指示をクライアント計算システムに関連付けることを含み、第1の認証プロセスは、入力としてタイムスタンプを取り、タイムスタンプに基づく番号を出力として生成する。典型的に、クライアント計算システムは、クライアント計算システムが、記載されるセキュリティ機構を使用している組織内に配備されるときなど、初期セットアップ中に認証プロセスが割り当てられる。認証プロセスは、関数、コードブロック、または、入力としてタイムスタンプ(例えば、64ビット整数)を取り、そのタイムスタンプに対して動作を実行し、出力として番号結果を提供する、同様のロジックである。
【0046】
ブロック3A02は、クライアント計算システムから第1の番号を受信することを含み、第1の番号は、第1の認証プロセスを実行することによってクライアント計算システムによって生成される。サーバ計算システムは、クライアント計算システムがサーバ計算システムのまたはサーバ計算システムによって管理されているリソースにアクセスしようとしているときなど、クライアント計算システムとの認証相互作用の一部として番号を受信する。例えば、クライアント計算システムを運用する従業員が、サーバ計算システムによって管理される企業ネットワークに接続およびログインしている。受信される番号は、ローカルクロックから取得されたタイムスタンプにクライアント計算システムによって適用される、認証プロセスの出力である。
【0047】
ブロック3A03は、サーバ計算システムに対してローカルであるクロックによって生成された第1のタイムスタンプを取得することを含む。サーバ計算システムは、次に、システムクロックからタイムスタンプを得るために適切なシステムコールを行うなどして、ローカルタイムスタンプを取得する。
【0048】
ブロック3A04は、第1のタイムスタンプに基づいて第2の番号を生成するように第1のタイムスタンプに第2の認証プロセスを適用することを含む。サーバ計算システムは、様々な方法で第2の認証プロセスを決定または識別することができる。それは、表またはクライアントコンピュータを認証プロセスに関連付ける他のマッピングを検査するなどして、第2の認証プロセスを調べてよい。表は、典型的に、変更不可能なハードウェア識別子(例えば、MACアドレス、CPU識別子)などのクライアント識別子を、認証プロセスにマップする。いくつかの実施形態では、認証プロセスは公開されており、他の識別子の番号によって識別することができる。他の実施形態では、認証プロセスのセットは、組織によって秘密に保たれる。サーバ計算システムは、そして、第2の認証プロセスを取得されたタイムスタンプに適用し、それは、第2の番号をもたらし、それは、クライアント計算システムによって提供される第1の番号と比較されることができる。
【0049】
ブロック3A05は、第1の番号が第2の番号と一致しない場合に、クライアント計算システムからモック計算システムにネットワーク通信をリダイレクトすることを含む。サーバは、クライアント計算システムによって提供された番号が、サーバ計算システムによってローカルに生成された番号と一致する場合にのみ、クライアント計算システムを認証する。これらの番号が一致する場合、クライアントとサーバは、同じ(または実質的に同じ)入力データ(タイムスタンプ)および任意の構成パラメータを有する同じ認証プロセスを使用している。数字が一致する場合、クライアント計算システムが認証される。そうでなければ、クライアントは、誤った認証プロセスを使用しており、認証されていない可能性がある。この場合、クライアントによる後続のアクセスは、モック計算システムにリダイレクトされる。
【0050】
図3Bは、図3Aのプロセス3A00の延長を示す例示的ロジックのフロー図である。図3Bは、プロセス3A00を含み、さらに以下のブロックを含む、プロセス3B00を示す。
【0051】
ブロック3B01は、クライアント計算システムの1つ以上の通信特性を決定することを含む。通信特性は、ネットワークアドレス(例えば、IPアドレス)、ネットワークポート、アクセスが発生している時間、変更不可能なデバイス識別子(例えば、MACアドレス)等の1つ以上を含むことができる。
【0052】
ブロック3B02は、1つ以上の通信特性が許容可能である場合にのみ、クライアント計算システムを認証することを含む。いくつかの実施形態では、プロセスは、ネットワークアドレス、デバイス識別子、許容可能なアクセス時間、および同様のものなどの、許容可能な通信特性を、含むまたは識別するホワイトリストまたは他のデータ構造/ストアを記憶またはそれにアクセスする。
【0053】
ブロック3B03は、1つ以上の通信特性の少なくとも1つが許容可能でない場合に、ネットワーク通信をクライアント計算システムからモック計算システムにリダイレクトすることを含む。プロセスは、そして、クライアント通信の特性を、許容可能なネットワーク特性に照らしてチェックする。1つ以上のクライアント特性が許容可能でない場合(例えば、許可されていないIPアドレス)、通信はモック計算システムにリダイレクトされる。
【0054】
図3Cは、図3Aのプロセス3A00の延長を示す例示的ロジックのフロー図である。図3Cは、プロセス3A00を含み、さらに以下のブロックを含む、プロセス3C00を示す。
【0055】
ブロック3C01は、(1)第1の番号が第2の番号と一致する場合、(2)クライアント計算システムのユーザが認められたユーザ名とパスワードを提供する場合、(3)クライアント計算システムに関連するネットワークアドレスが信頼されるネットワークアドレスのリストに含まれる場合、および(4)クライアント計算システムの変更不可能な識別子が信頼されるデバイス識別子のリストに含まれる場合にのみ、クライアント計算システムを認証することを含む。いくつかの実施形態は、ネットワークアドレス、デバイス識別子、およびユーザ名/パスワードを含む追加の要因の組み合わせに基づいて認証する。変更不可能な識別子は、典型的に、CPU、マザーボード、ディスク、ビデオカード、ネットワークインターフェースカード、MACアドレス、または同様のものに焼き付けられた識別子またはシリアル番号などの、ハードウェア識別子である。変更不可な識別子は、CPUおよびネットワークカード識別子を組み合わせることなどによって、複数のハードウェア識別子を組み込んでよい。変更不可能な識別子が認証されない場合、クライアント計算システムは認証されず、それ以上の通信はモックシステムにリダイレクトされる。
【0056】
図3Dは、図3Aのプロセス3A00の延長を示す例示的ロジックのフロー図である。図3Dは、プロセス3A00を含むプロセス3D00を示し、第1の認証プロセスの指示をクライアント計算システムに関連付けることは、以下のブロックを含む。
【0057】
ブロック3D01は、クライアント計算システムの識別子に関連付けられた表に第1の認証プロセスのインジケータを格納するステップを含み、第1の認証プロセスは、初期セットアップ中にクライアント計算システムに割り当てられ、第1の認証プロセスは、それぞれがタイムスタンプに基づく番号を出力として生成する複数の公開認証プロセスのうちの1つである。いくつかの実施形態では、全ての認証プロセスは公開されており、他の識別子の番号によって識別することができる。クライアント計算システムへの認証プロセスの選択および割り付けの後に、サーバ計算システムは、プロセスの識別子を表または類似のデータ構造またはリポジトリ(例えば、データベース)に格納することによって、この割り付けを記憶する。上述したように、クライアントハードウェア識別子は、クライアント計算システムを識別するのに使用されてよい。他の場合では、認証プロセスは、クライアントハードウェア識別子に加えて、あるいはその代わりに、ユーザ識別子と関連付けられる。
【0058】
図3Eは、図3Aのプロセス3A00の延長を示す例示的ロジックのフロー図である。図3Eは、プロセス3A00を含むプロセス3E00を示し、第1のタイムスタンプに基づいて第2の番号を生成するように第1のタイムスタンプに第2の認証プロセスを適用することは、以下のブロックを含む。
【0059】
ブロック3E01は、第1のタイムスタンプおよび整数に演算子を適用することを含み、演算子および整数は認証プロセスによって特定される。典型的認証プロセスは、1つ以上の演算子を使用してタイムスタンプおよび少なくとも1 つの他の整数を操作する。例示的プロセスは、kはtimestamp+bに等しいと表されてよく、ここで、kは出力番号で、aおよびbは定数である。定数は、認証プロセスにハードコードされてよい。他の実施形態では、より多様なプロセスを提供するために、定数aおよびbは、2つの乱数を選択することなどによって、サーバ計算システムによって選択されてよい。これらの定数は、クライアント計算システムに提供され、認証プロセスそれ自体の指示と共にクライアントおよびサーバによって格納される。なお、いくつかの実施形態では、認証プロセスは、時間を所定の時間間隔(例えば、最も近い秒、最も近い10秒ウィンドウ、最も近い分)に丸めるまたは切り捨てるなどによって、タイムスタンプの精度を低減してもよい。この技術は、クロックドリフト、通信遅延、および/またはクライアントクロックとサーバクロックとの間のわずかな差を考慮に入れるために使用することができる。
【0060】
図3Fは、図3Aのプロセス3A00の延長を示す例示的ロジックのフロー図である。図3Fは、プロセス3A00を含み、さらに以下のブロックを含む、プロセス3F00を示す。
【0061】
ブロック3F01は、第3の認証プロセスのインジケータをクライアント計算システムに送信することを含む。何らかのイベントに対応して、サーバ計算システムは、新しい認証プロセスを選択し、今後の相互作用でそのプロセスを使用するようにクライアント計算システムに指示する。ログイン毎に、n番目のログイン毎に、時間の経過後に(例えば、毎日、週など)、指定された日付で、または指定された日付後に、新たな認証プロセスを選択するなど、様々なイベント/条件が考えられる。第2の認証プロセスのインジケータをクライアント計算システムに送信することによって、サーバは、後続の相互作用で、およびしばらく後で新しいものが選択されるまで、第2の認証プロセスを使用するようにクライアントに指示する。いくつかの実施形態は、認証プロセスを更新するためのクライアント固有のルールを含み、各クライアントが、カスタマイズされた、または個別化された更新レジメンを有し得るようになっている。
【0062】
ブロック3F02は、クライアント計算システムとの後続の認証相互作用において、第1のタイムスタンプよりも時間的に遅い第2のタイムスタンプに第3の認証プロセスを適用することを含む。サーバ計算システムは、クライアント計算システムとの今後の相互作用において、新しい認証プロセスを使用する。
【0063】
図3Gは、クライアント計算システムにおける例示的ロジックのフロー図である。このおよび以下のフロー図において示されているロジックは、例えば、上述の図1に関して記載されるクライアント認証モジュール101によって、実行されてよい。図3Gは、以下のブロックを含むプロセス3G00を示している。
【0064】
ブロック3G01は、クライアントの初期セットアップ中に、入力としてタイムスタンプを取り、タイムスタンプに基づく番号を出力として生成する、第1の認証プロセスの指示を受信および格納することを含む。典型的シナリオでは、クライアントは、高度な権限を持つユーザ(例えば、管理者、ルートユーザー)によって構成される。クライアントが最初に配備されるとき、管理者は、クライアントによる格納のための認証プロセスの識別子を入力する。管理者は、この識別子を、後の認証相互作用中に呼び出すことができるように、ユーザデータベースまたは他のデータストア(例えば、アクティブディレクトリ)に記録もする。
【0065】
ブロック3G02は、クライアント計算システムに対してローカルであるクロックによって生成された第1のタイムスタンプを受信することを含む。クライアントは、ローカルハードウェアまたはソフトウェアクロックから現在の時刻にアクセスするために適切なシステムまたはAPIコールを行うことによって、タイムスタンプを取得する。いくつかの実施形態では、代わりにタイムサーバを使用してよい。
【0066】
ブロック3G03は、タイムスタンプに基づいて第1の番号を生成するように第1のタイムスタンプに第1の認証プロセスを適用することを含む。クライアント計算システムは、そして、取得したタイムスタンプに認証プロセスを適用し、番号がもたらされる。
【0067】
ブロック3G04は、第1の番号をサーバ計算システムに送信することを含む。認証プロセスによって生成された番号は、場合によりユーザ名および/またはパスワード(またはそのハッシュ)などの他の認証情報と共に、サーバ計算システムに送信される。送信は、典型的に、悪意の当事者が認証情報を傍受できないように、暗号化される。
【0068】
ブロック3G05は、第1の番号がサーバ計算システムによって生成された第2の番号と一致する場合にのみ、クライアント計算システムが認証されるという指示を受信することを含み、第2の番号は、サーバ計算システムに対してローカルであるクロックによって生成された第2のタイムスタンプに第1の認証プロセスを適用することによって、サーバ計算システムによって生成される。送信された番号が、サーバによって同様に生成された番号と一致する場合、サーバは、クライアントが認証されるという指示を送信する。例えば、サーバは、アクセスキーとして使用可能なトークンを送信してよい。そのようなトークンは、一般に、時間制限がある。つまり、一定の時間(または使用回数)が経過した後、クライアントは、サーバによってそれ自体を再認証するように挑戦される。
【0069】
例示的計算システム実施
図4は、例示的実施形態による認証モジュールを実施する計算システムのブロック図である。特に、図4は、上記のサーバ認証モジュール100を実行する計算システム10を示す。上記のクライアント認証モジュール101を実施するために、同様の技術を適用することができる。
【0070】
図示の実施形態では、計算システム10は、コンピュータメモリ(「メモリ」)11、ディスプレイ12、1つ以上の中央処理ユニット(「CPU」)13、入力/出力デバイス14(例えば、キーボード、マウス、CRTまたはLCDディスプレイ等)、他のコンピュータ可読媒体15、およびネットワーク接続16を備える。モジュール100は、メモリ11に存在しているように示されている。他の実施形態では、コンテンツの一部、モジュール100の構成要素の一部または全部は、他のコンピュータ可読媒体15に格納および/または送信されてよい。リダイレクタ120および/またはターゲットサービス130など、他のモジュールもメモリ11に存在してよい。モジュール100は、好ましくは、1つ以上のCPU13で実行し、本明細書に記載する技術を実行する。他のコードまたはプログラム30(例えば、管理インターフェース、ウェブサーバ等)および潜在的にデータリポジトリ20などの他のデータリポジトリも、メモリ1に存在し、好ましくは1つ以上のCPU13で実行される。注目すべきは、図4の構成要素のうちの1つ以上は、任意の特定の実施に存在しなくてよいことである。例えば、いくつかの実施形態は、他のコンピュータ可読媒体15またはディスプレイ12を提供しないことがある。
【0071】
モジュール100は、デバイス10のメモリ11内で実行しているように示されている。メモリ1には、ユーザインタフェースマネージャ41と、アプリケーションプログラムインタフェース(「API」)42も含まれる。ユーザインタフェースマネージャ41およびAPI42は、他の実施形態では、これらの構成要素のうちの1つ以上によって実行される機能が、モジュール100の外部で実行され得ることを示すように、破線で描かれている。
【0072】
UIマネージャ41は、モジュール100およびその様々な構成要素とのユーザ相互作用を容易にするビューおよびコントローラを提供する。例えば、Ulマネージャ41は、ユーザまたは管理者がモジュール100と対話できるように、モジュール100へのインタラクティブアクセスを提供してよい。いくつかの実施形態では、Ulマネージャ41の機能性へのアクセスは、場合により他のプログラム30の1つとして実行するWebサーバを介して提供されてよい。そのような実施形態では、クライアントシステムまたはデバイス上で実行されるWebブラウザを操作するユーザは、Ulマネージャ41を介してモジュール100と対話できる。
【0073】
API42は、モジュール100の1つ以上の機能へのプログラマチックアクセスを提供する。例えば、API42は、他のプログラム30または何らかの他のモジュールの1つによって呼び出され得るモジュール100の1つ以上の機能へのプログラマチックインターフェースを提供し得る。このようにして、API42は、ユーザインタフェース、プラグイン、アダプタ(例えば、モジュール100の機能をWebアプリケーションに統合するための)等の第三者ソフトウェアの開発を容易にする。
【0074】
モジュール100は、計算システム60、62、および64を含む他のデバイス/システムとネットワーク99を介してネットワーク接続16を使用して相互作用し得る。ネットワーク99は、媒体(例えば、ツイストペア、同軸、光ファイバ、無線周波数)、ハードウェア(例えば、ルータ、スイッチ、リピータ、トランシーバ)、および遠隔に位置する人間および/またはデバイス間の通信を容易にするプロトコル(例えば、TCP/IP、UDP、イーサネット(登録商標)、Wi-Fi、WiMAX)、の任意の組み合わせであってよい。計算システム60、62、および64は、システム10と同様に構成されてよい。いくつかの実施形態では、クライアントシステム60は、それ自体をシステム10に対して認証し、それは、応答して、第三者計算システム64と使用できる認証トークンを提供する。
【0075】
なお、1つ以上の汎用または専用計算システム/デバイスが、モジュール100を実施および/または実行するのに使用されてよい。しかしながら、単に汎用計算システム上でモジュール100を実施することが可能であるというだけで、技術自体、または技術を実施するのに必要とされる動作(単独でまたは組み合わせで)が、従来のものであるまたは周知であるというわけではない。技術は、少なくとも、1つ以上の計算システムの操作、統合、または効率を改善することなどによって、既存の技術を改善およびそれに対処するので、従来のものでない。
【0076】
例示的実施形態では、モジュール100の構成要素/モジュールは、ソフトウェアプログラミング技術を使用して実施される。例えば、モジュール100は、1つ以上の静的または動的ライブラリと共に、CPU13上で実行される「ネイティブ」実行可能ファイルとして実施されてよい。他の実施形態では、モジュール100は、他のプログラム30のうちの1つとして実行される仮想マシンによって処理される指示として実施されてよい。
【0077】
様々な構成要素は、例えば、単一のCPU計算システム上で実行可能なものとして、よりモノリシックなプログラミング技術を使用して実施されてよい、あるいは、各々が1つ以上のCPUを有する1つ以上のコンピュータシステム上で実行される、マルチプログラミング、マルチスレッド、クライアントサーバ、またはピアツーピアを含むがこれらに限定されない、様々な構造化技術を使用して分解されてよい。いくつかの実施形態は、同時におよび非同期的に実行され、メッセージパッシング、リモートプロシージャコール、または他の分散計算パラダイムを使用して通信してよい。同等の同期実施形態もサポートされる。また、他の機能は、各構成要素/モジュールによって、および異なる順序で、および異なる構成要素/モジュールによって、実施および/または実行され得るが、それでもなお、記載される機能を達成する。
【0078】
さらに、データストア20などのモジュール100の一部として格納されたデータへのプログラミングインタフェースは、言語固有のAPI、ファイル、データベース、または他のデータリポジトリにアクセスするためのライブラリによって、XMLなどの表現言語を介して、または格納されたデータへのアクセスを提供するWebサーバ、FTPサーバ、または他のタイプのサーバを介して、利用可能であることができる。データストア20は、1つ以上のデータベースシステム、ファイルシステム、またはそのような情報を記憶する任意の他の技術、または分散計算技術を使用する実施を含む上記の任意の組み合わせとして、実施されてよい。
【0079】
さらに、いくつかの実施形態では、モジュール100の構成要素の一部または全部は、1つ以上の特定用途向け集積回路(「ASIC」)、標準集積回路、適切な指示を実行し、マイクロコントローラおよび/または埋め込みコントローラを含む、コントローラ、フィールドプログラマブルゲートアレイ(「FPGA」)、複合プログラマブルロジックデバイス(「CPLD」)等、を含むがこれらに限定されない、少なくとも部分的にファームウェアおよび/またはハードウェアにおいてなど、他の方法で実施または提供されてよい。システム構成要素および/またはデータ構造の一部または全部は、コンピュータ可読媒体および/または1つ以上の関連する計算システムまたはデバイスが、記載される技術の少なくとも一部を実行または実行するようにコンテンツを実行または他の方法で使用または提供することを可能にするために、コンテンツとして(例えば、実行可能または他の機械可読ソフトウェア命令または構造化データとして)、コンピュータ可読媒体(例えば、ハードディスク、メモリ、コンピュータネットワークまたはセルラーワイヤレスネットワークまたは他のデータ伝送媒体、DVDまたはフラッシュメモリデバイスなどのまたは適切なドライブによってまたは適切な接続を介して読み取られるポータブル媒体物品)で、格納もされ得る。構成要素および/またはデータ構造の一部または全部は、有形の非一時的記憶媒体に格納されてよい。システム構成要素およびデータ構造の一部または全部は、データ信号として(例えば、搬送波の一部として符号化されることによって、またはアナログもしくはデジタル伝搬信号の一部として含まれることによって)様々なコンピュータ可読伝送媒体上に格納されてもよく、それは、そして、無線ベースおよび有線/ケーブルベースの媒体を含んで送信され、様々な形態をとってもよい(例えば、単一もしくは多重化アナログ信号の一部として、または複数の離散デジタルパケットもしくはフレームとして)。そのようなコンピュータプログラム製品は、他の実施形態では他の形態もとり得る。従って、本開示の実施形態は、他のコンピュータシステム構成で実施され得る。
【0080】
本発明の実施形態を図示し、説明してきたが、上述のように、本発明の趣旨および範囲から逸脱することなく多くの変更を行うことができる。従って、本発明の範囲は、上記の開示によって限定されない。

図1
図2A
図2B
図2C
図2D
図3A
図3B
図3C
図3D
図3E
図3F
図3G
図4