(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-21
(54)【発明の名称】ネイティブ・アプリケーションにおける認証のセキュリティ強化のためのデバイスにバインドされた認証情報の使用
(51)【国際特許分類】
G06F 21/64 20130101AFI20241114BHJP
H04L 9/32 20060101ALI20241114BHJP
G06F 21/62 20130101ALI20241114BHJP
【FI】
G06F21/64
H04L9/32 200B
G06F21/62 318
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024526490
(86)(22)【出願日】2022-09-15
(85)【翻訳文提出日】2024-05-02
(86)【国際出願番号】 CN2022119054
(87)【国際公開番号】W WO2023082833
(87)【国際公開日】2023-05-19
(32)【優先日】2021-11-10
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】110000420
【氏名又は名称】弁理士法人MIP
(72)【発明者】
【氏名】ウィーデン、シェーン ブラッドリー
(72)【発明者】
【氏名】ピアソン、クレイグ
(72)【発明者】
【氏名】ハゲマン、カーステン
(57)【要約】
方法は、クライアント・デバイス上の認可されたネイティブ・アプリケーションに対して、コンピュータ・リソースにアクセスすることを許可する。認可サーバは、デバイス上のネイティブ・アプリケーションから、初期認可グラント、デバイス上で生成された秘密鍵/公開鍵ペアの公開鍵、およびネイティブ・アプリケーションの信頼性の証明書を受信する。認可サーバが、デバイス上のネイティブ・アプリケーションから、リフレッシュ・トークン、および秘密鍵を使用して作成されたリフレッシュ・トークンのデジタル署名を受信する。認可サーバは、あらかじめ登録されている公開鍵を用いてリフレッシュ・トークンが検証された場合にのみ、リフレッシュ・トークンを認識する。認可サーバは、リフレッシュ・トークンのデジタル署名の妥当性を確認し、新しいアクセス・トークンおよび新しいリフレッシュ・トークンをデバイス上のネイティブ・アプリケーションに送信し、このようにして、デバイス上のネイティブ・アプリケーションがコンピュータ・リソースにアクセスすることを可能にする。
【特許請求の範囲】
【請求項1】
認可サーバによって、デバイス上のネイティブ・アプリケーションから、初期認可グラント、前記デバイス上で生成された秘密鍵/公開鍵ペアの公開鍵、および前記ネイティブ・アプリケーションの信頼性の証明書を受信することと、
前記認可サーバによって、前記デバイス上の前記ネイティブ・アプリケーションから、リフレッシュ・トークン、および前記秘密鍵を使用して作成された前記リフレッシュ・トークンのデジタル署名を受信することであって、前記認可サーバが、あらかじめ登録されている前記公開鍵を用いて前記リフレッシュ・トークンが検証された場合にのみ、前記リフレッシュ・トークンを認識する、前記受信することと、
前記認可サーバによって、前記リフレッシュ・トークンの前記デジタル署名の妥当性を確認することと、
前記デバイス上の前記ネイティブ・アプリケーションからの前記リフレッシュ・トークンの妥当性を確認することに応答して、前記認可サーバによって、新しいアクセス・トークンおよび新しいリフレッシュ・トークンを前記認可サーバから前記デバイス上の前記ネイティブ・アプリケーションに送信することであって、前記新しいアクセス・トークンが、前記デバイス上の前記ネイティブ・アプリケーションが前記コンピュータ・リソースにアクセスすることを可能にする、前記送信することと
を含む、方法。
【請求項2】
前記ネイティブ・アプリケーションの信頼性の前記証明書は、前記ネイティブ・アプリケーションおよびデバイスの完全性および信頼性を保証する、請求項1に記載の方法。
【請求項3】
前記デバイス上で前記公開鍵/秘密鍵が生成され、前記秘密鍵は、前記デバイスにバインドされることによって、不正使用または抽出から保護される、請求項1に記載の方法。
【請求項4】
前記認可サーバおよび前記クライアントは、Open Authorization(OAuth)アーキテクチャのコンポーネントである、請求項1に記載の方法。
【請求項5】
トランスポート層セキュリティ(TLS)プロトコル拡張を使用せずに、前記クライアントからのアプリケーション・ペイロード内のデータを使用して、リフレッシュ認可グラントが、前記リフレッシュ認可グラントの発行先だった前記デバイスから来ることを検証される、請求項1に記載の方法。
【請求項6】
1つまたは複数のプロセッサによって、リフレッシュ認可グラント処理の一部としてFast Identity Online(FIDO)認証を適用することによって、前記デバイスのアイデンティティを確認することをさらに含む、請求項1に記載の方法。
【請求項7】
ニューラル・ネットワークに、前記初期認可グラント、前記公開鍵、前記ネイティブ・アプリケーションの信頼性の前記証明書、前記リフレッシュ・トークン、および前記リフレッシュ・トークンの前記デジタル署名を入力することであって、前記ニューラル・ネットワークは、ニューラル・ネットワークによって生成されたアクセス・トークンおよびニューラル・ネットワークによって生成されたリフレッシュ・トークンを生成するようにトレーニングされる、前記入力することと、
1つまたは複数のプロセッサによって、前記認可サーバによって生成された前記新しいアクセス・トークンおよび前記新しいリフレッシュ・トークンの妥当性を確認するために、前記認可サーバによって生成された前記新しいアクセス・トークンおよび前記新しいリフレッシュ・トークンを、前記ニューラル・ネットワークによって生成されたアクセス・トークンおよび前記ニューラル・ネットワークによって生成されたリフレッシュ・トークンと比較することと
をさらに含む、請求項1に記載の方法。
【請求項8】
1つまたは複数のプロセッサによって、前記新しいアクセス・トークンおよび新しいリフレッシュ・トークンが前記ニューラル・ネットワークによって生成されたアクセス・トークンおよび前記ニューラル・ネットワークによって生成されたリフレッシュ・トークンに一致するということを決定することと、
前記新しいアクセス・トークンおよび新しいリフレッシュ・トークンが前記ニューラル・ネットワークによって生成されたアクセス・トークンおよび前記ニューラル・ネットワークによって生成されたリフレッシュ・トークンに一致するということの決定に応答して、1つまたは複数のプロセッサによって、前記新しいアクセス・トークンおよび前記新しいリフレッシュ・トークンを前記ネイティブ・アプリケーションに送信することと
をさらに含む、請求項7に記載の方法。
【請求項9】
1つまたは複数のプロセッサによって、前記新しいアクセス・トークンおよび新しいリフレッシュ・トークンが前記ニューラル・ネットワークによって生成されたアクセス・トークンおよび前記ニューラル・ネットワークによって生成されたリフレッシュ・トークンに一致しないということを決定することと、
前記新しいアクセス・トークンおよび新しいリフレッシュ・トークンが前記ニューラル・ネットワークによって生成されたアクセス・トークンおよび前記ニューラル・ネットワークによって生成されたリフレッシュ・トークンに一致しないということの決定に応答して、1つまたは複数のプロセッサによって、前記ネイティブ・アプリケーションへの前記新しいアクセス・トークンおよび前記新しいリフレッシュ・トークンの送信を阻止することと
をさらに含む、請求項7に記載の方法。
【請求項10】
前記新しいアクセス・トークンは第1の新しいアクセス・トークンであり、前記新しいリフレッシュ・トークンは第1の新しいリフレッシュ・トークンであり、前記方法は、
前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンを生成するために前記認証サーバによって利用される前記初期認可グラント、前記公開鍵、前記ネイティブ・アプリケーションの信頼性の前記証明書、前記リフレッシュ・トークン、および前記リフレッシュ・トークンの前記デジタル署名を含む、格納されたブロックチェーンをブロックチェーン・アーキテクチャに格納することと、
前記ブロックチェーン・アーキテクチャから前記格納されたブロックチェーンを取り出すことと、
前記認証サーバによって、前記格納されたブロックチェーンからの前記初期認可グラント、前記公開鍵、前記ネイティブ・アプリケーションの信頼性の前記証明書、前記リフレッシュ・トークン、および前記リフレッシュ・トークンの前記デジタル署名を使用することによって、第2の新しいアクセス・トークンおよび第2の新しいリフレッシュ・トークンを生成することと、
1つまたは複数のプロセッサによって、前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンが、前記第2の新しいアクセス・トークンおよび前記第2の新しいリフレッシュ・トークンに一致するということを決定するために、前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンを、前記第2の新しいアクセス・トークンおよび前記第2の新しいリフレッシュ・トークンと比較することと、
前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンが前記第2の新しいアクセス・トークンおよび前記第2の新しいリフレッシュ・トークンに一致するということの決定に応答して、1つまたは複数のプロセッサによって、前記認可サーバによって生成された前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンが前記認可サーバから前記ネイティブ・アプリケーションに送信されることを認可することと
をさらに含む、請求項1に記載の方法。
【請求項11】
前記新しいアクセス・トークンは第1の新しいアクセス・トークンであり、前記新しいリフレッシュ・トークンは第1の新しいリフレッシュ・トークンであり、前記方法は、
前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンを生成するために前記認証サーバによって利用される前記初期認可グラント、前記公開鍵、前記ネイティブ・アプリケーションの信頼性の前記証明書、前記リフレッシュ・トークン、および前記リフレッシュ・トークンの前記デジタル署名を含む格納されたブロックチェーンをブロックチェーン・アーキテクチャに格納することと、
前記ブロックチェーン・アーキテクチャから前記格納されたブロックチェーンを取り出すことと、
前記認証サーバによって、前記格納されたブロックチェーンからの前記初期認可グラント、前記公開鍵、前記ネイティブ・アプリケーションの信頼性の前記証明書、前記リフレッシュ・トークン、および前記リフレッシュ・トークンの前記デジタル署名を使用することによって、第2の新しいアクセス・トークンおよび第2の新しいリフレッシュ・トークンを生成することと、
1つまたは複数のプロセッサによって、前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンが、前記第2の新しいアクセス・トークンおよび前記第2の新しいリフレッシュ・トークンに一致しないということを決定するために、前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンを、前記第2の新しいアクセス・トークンおよび前記第2の新しいリフレッシュ・トークンと比較することと、
前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンが前記第2の新しいアクセス・トークンおよび前記第2の新しいリフレッシュ・トークンに一致しないということの決定に応答して、1つまたは複数のプロセッサによって、前記認可サーバから前記ネイティブ・アプリケーションへの前記認可サーバによって生成された前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンの送信を阻止することと
をさらに含む、請求項1に記載の方法。
【請求項12】
プログラム・コードが具現化されているコンピュータ可読ストレージ媒体を備えているコンピュータ・プログラム製品であって、前記コンピュータ可読ストレージ媒体自体は一過性の信号ではなく、前記プログラム・コードは、方法を実行するためにプロセッサによって読み取り可能かつ実行可能であり、前記方法は、
デバイス上のネイティブ・アプリケーションから、初期認可グラント、前記デバイス上で生成された秘密鍵/公開鍵ペアの公開鍵、および前記ネイティブ・アプリケーションの信頼性の証明書を受信することと、
前記デバイス上の前記ネイティブ・アプリケーションから、リフレッシュ・トークン、および前記秘密鍵を使用して作成された前記リフレッシュ・トークンのデジタル署名を受信することであって、前記認可サーバが、あらかじめ登録されている前記公開鍵を使用して前記リフレッシュ・トークンが検証された場合にのみ、前記リフレッシュ・トークンを認識する、前記受信することと、
前記リフレッシュ・トークンの前記デジタル署名の妥当性を確認することと、
前記デバイス上の前記ネイティブ・アプリケーションからの前記リフレッシュ・トークンの妥当性を確認することに応答して、新しいアクセス・トークンおよび新しいリフレッシュ・トークンを前記認可サーバから前記デバイス上の前記ネイティブ・アプリケーションに送信することであって、前記新しいアクセス・トークンが、前記デバイス上の前記ネイティブ・アプリケーションが前記コンピュータ・リソースにアクセスすることを可能にする、前記送信することと
を含む、コンピュータ・プログラム製品。
【請求項13】
前記ネイティブ・アプリケーションの信頼性の前記証明書は、前記ネイティブ・アプリケーションおよびデバイスの完全性および信頼性を保証する、請求項12に記載のコンピュータ・プログラム製品。
【請求項14】
前記デバイス上で前記公開鍵/秘密鍵が生成され、前記秘密鍵は、前記デバイスにバインドされることによって、不正使用または抽出から保護される、請求項12に記載のコンピュータ・プログラム製品。
【請求項15】
前記認可サーバおよび前記クライアントは、Open Authorization(OAuth)アーキテクチャのコンポーネントである、請求項12に記載のコンピュータ・プログラム製品。
【請求項16】
トランスポート層セキュリティ(TLS)プロトコル拡張を使用せずに、前記クライアントからのアプリケーション・ペイロード内のデータを使用して、リフレッシュ認可グラントが、前記リフレッシュ認可グラントの発行先だった前記デバイスから来ることを検証される、請求項12に記載のコンピュータ・プログラム製品。
【請求項17】
前記プログラム・コードはクラウド環境内のサービスとして提供される、請求項12に記載のコンピュータ・プログラム製品。
【請求項18】
1つまたは複数のプロセッサと、1つまたは複数のコンピュータ可読メモリと、1つまたは複数のコンピュータ可読非一過性ストレージ媒体とを備えているコンピュータ・システムであって、プログラム命令は、前記1つまたは複数のコンピュータ可読メモリのうちの少なくとも1つを介して、前記1つまたは複数のプロセッサのうちの少なくとも1つによって実行するために、前記1つまたは複数のコンピュータ可読非一過性ストレージ媒体のうちの少なくとも1つに格納され、前記格納されたプログラム命令は、
デバイス上のネイティブ・アプリケーションから、初期認可グラント、前記デバイス上で生成された秘密鍵/公開鍵ペアの公開鍵、および前記ネイティブ・アプリケーションの信頼性の証明書を受信することと、
前記デバイス上の前記ネイティブ・アプリケーションから、リフレッシュ・トークン、および前記秘密鍵を使用して作成された前記リフレッシュ・トークンのデジタル署名を受信することであって、前記認可サーバが、あらかじめ登録されている前記公開鍵を用いて前記リフレッシュ・トークンが検証された場合にのみ、前記リフレッシュ・トークンを認識する、前記受信することと、
前記リフレッシュ・トークンの前記デジタル署名の妥当性を確認することと、
前記デバイス上の前記ネイティブ・アプリケーションからの前記リフレッシュ・トークンの妥当性を確認することに応答して、新しいアクセス・トークンおよび新しいリフレッシュ・トークンを前記認可サーバから前記デバイス上の前記ネイティブ・アプリケーションに送信することであって、前記新しいアクセス・トークンが、前記デバイス上の前記ネイティブ・アプリケーションが前記コンピュータ・リソースにアクセスすることを可能にする、前記送信することと
を含む方法を実施するように実行される、コンピュータ・システム。
【請求項19】
前記認可サーバおよび前記クライアントは、Open Authorization(OAuth)アーキテクチャのコンポーネントであり、リフレッシュ認可グラントは、トランスポート層セキュリティ(TLS)プロトコル拡張を使用せずに、前記クライアントからのアプリケーション・ペイロード内のデータを使用して、前記リフレッシュ認可グラントの発行先だった前記デバイスから来ることを検証される、請求項18に記載のコンピュータ・システム。
【請求項20】
前記格納されたプログラム命令はクラウド環境内のサービスとして提供される、請求項18に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ・リソースを保護することに関連している。より詳細には、本発明の1つまたは複数の実施形態は、特定のコンピュータ・リソースへの安全なアクセスを提供する。さらに詳細には、本発明の1つまたは複数の実施形態は、Open Authorization(OAuth)のリフレッシュ中にネイティブ・アプリケーションによって提示されたリフレッシュ・トークンが、それらのリフレッシュ・トークンの発行先だったデバイスと同じデバイスから送信されていることを保証するための新しい有用な解決策を提供する。
【発明の概要】
【0002】
本発明の1つまたは複数の実施形態では、認可サーバが、デバイス上のネイティブ・アプリケーションから、初期認可グラント、デバイス上で生成された秘密鍵/公開鍵ペアの公開鍵、およびネイティブ・アプリケーションの信頼性の証明書を受信する。認可サーバは、デバイス上のネイティブ・アプリケーションから、リフレッシュ・トークン、および秘密鍵を使用して作成されたリフレッシュ・トークンのデジタル署名を受信し、認可サーバは、あらかじめ登録されている公開鍵を用いてリフレッシュ・トークンが検証された場合にのみ、リフレッシュ・トークンを認識する。認可サーバは、リフレッシュ・トークンのデジタル署名の妥当性を確認する。デバイス上のネイティブ・アプリケーションからのリフレッシュ・トークンの妥当性を確認することに応答して、認可サーバは、新しいアクセス・トークンが、デバイス上のネイティブ・アプリケーションがコンピュータ・リソースにアクセスすることを可能にするように、新しいアクセス・トークンおよび新しいリフレッシュ・トークンをデバイス上のネイティブ・アプリケーションに送信する。
【0003】
1つまたは複数の実施形態では、本明細書に記載された方法は、コンピュータ・システム上のコンピュータ・プログラム製品の実行によって実行される。
【図面の簡単な説明】
【0004】
【
図1】本開示が実装され得る例示的なシステムおよびネットワークを示す図である。
【
図2】Open Authorization(OAuth)システム内で実行される本発明の1つまたは複数の実施形態の俯瞰的な概要を示す図である。
【
図3】本発明の1つまたは複数の実施形態において実行される1つまたは複数の動作の俯瞰的なフローチャートの図である。
【
図4】本発明の1つまたは複数の実施形態において利用されて示される例示的なブロックチェーン・ネットワークを示す図である。
【
図5】本発明の1つまたは複数の実施形態において使用されるような例示的なブロックチェーン台帳を示す図である。
【
図6】本発明の1つまたは複数の実施形態に従って、ブロックチェーンを使用する俯瞰的な一連の動作を示す図である。
【
図7】本発明の1つまたは複数の実施形態において使用されるような例示的なニューラル・ネットワークを示す図である。
【
図8】本発明の実施形態に従ってクラウド・コンピューティング環境を示す図である。
【
図9】本発明の実施形態に従ってクラウド・コンピューティング環境の抽象モデル・レイヤを示す図である。
【発明を実施するための形態】
【0005】
本明細書において説明されるように、本発明の1つまたは複数の実施形態は、デバイスにバインドされた公開鍵基盤(PKI:Public Key Infrastructure)認証情報を利用して、リフレッシュ・トークンのメッセージ・ペイロード内のOpen Authorization(OAuth)リフレッシュ・トークンに署名する。そのため、本発明の1つまたは複数の実施形態では、初期グラントの確立中に、認証情報ペアの公開鍵の登録が実行され、その後のすべてのリフレッシュ・トークン・フローの間に、リフレッシュ・トークン上の署名の追加が提供される。
【0006】
本発明の1つまたは複数の実施形態は、デバイスにバインドされた鍵ペアを、そのような鍵ペアの証明書を含めて確立するために、Fast Identity Online(FIDO)などのパターンを活用し、アプリケーション・レベルのペイロード以外を何も必要としない(すなわち、トランスポート層セキュリティ(TLS:Transport Layer Security)拡張を必要としない)。
【0007】
OAuthシステムが利用される本発明の1つまたは複数の実施形態では、デバイスにバインドされる方法であらかじめ登録された鍵を用いて署名が実行されることを保証するために、リフレッシュ・トークン自体をチャレンジとして使用して、FIDOのアサーション・ペイロード(assertion payload)がリフレッシュ・トークンのペイロード・パラメータに追加され、サーバで妥当性を確認される。
【0008】
そのようなOAuthシステムは、ユーザがアプリケーションをインストールした後に、登録セレモニーに参加し、長寿命のOAuthグラント(第1のリフレッシュ・トークンおよびアクセス・トークン)を確立し、データ、プログラム、ハードウェアなどのコンピュータ・リソースへのアプリケーション・プログラミング・インターフェイス(API:Application Programming Interfaces)を呼び出すときに、アプリケーションがそのユーザとして機能するように、ネイティブ・アプリケーションにおいてアイデンティティ・セキュリティ・パターン(identity security pattern)を提供する。
【0009】
ユーザの例示的なOAuth登録プロセスは、ユーザが初期識別情報のためのユーザ・プロフィール(例えば、名前、住所など)を入力することから開始する。1つまたは複数の登録シナリオでは、多要素認証(MFA:Multi-Factor Authentication)が使用され、多要素認証では、ユーザは、パスワードだけでなく、生体測定情報(例えば、ユーザの指紋)、ユーザによって使用される電子デバイス内の全地球測位システム(GPS:Global Positioning System)センサ、セルラー・ネットワーク内の特定の携帯電話基地局への現在の通信接続などによって決定されるような、ユーザの現在の位置、セキュリティ・システムによって現在の時刻で有効であると知られている絶えず変化する文字を生成するドングルなどの、セキュリティ・トークンへのアクセスなども提供する。
【0010】
ユーザが自分のユーザ・プロフィール、MFA認証情報などを入力した後に、この情報が、認可サーバからの初期OAuthグラントに交換される。
【0011】
ネイティブ・アプリケーションは、デバイス上でシステム・ブラウザを起動してよく、ユーザが、ブラウザベースのメカニズムを介して認証し、認可コード・グラント・タイプのフローを開始するか、またはネイティブ・アプリケーションは、アプリケーション自体に組み込まれたこの機能を、初期OAuthグラントのために提供してよい。ネイティブ・アプリケーションは、アプリの登録されたカスタム起動URIである任意のリダイレクトURI(Uniform Resource Identifier)を順守する。
【0012】
ユーザは、別のデバイスのブラウザで(例えば、ラップトップで)認証し、ネイティブ・アプリケーションがQRコード(登録商標)をスキャンすることができるように、認可コードを含むクイック・レスポンス(QR:Quick Response)コードを提示される。
【0013】
特定のフロー(上記に説明されたフローまたは同様の変形)にかかわらず、デバイス上のアプリケーションのための初期グラントが確立される。次に、リフレッシュ・トークンは、他のアプリへの開示を防ぐために、アプリに固有のセキュア・ストレージに格納される。
【0014】
登録後に、デバイス(例えば、スマートフォンなどのモバイル・デバイス)上のネイティブ・アプリケーションが、APIを呼び出すために新しいアクセス・トークンを必要とするたびに、ネイティブ・アプリケーションが認可サーバのトークン・エンドポイントへの呼び出しを行うことによって、リフレッシュ・トークン・フローが実行される。リフレッシュ・トークンそのものだけが、リフレッシュされているグラントを識別する役割を果たす。
【0015】
本発明の1つまたは複数の実施形態が新しい有用な方法で克服する、今説明したOAuthプロセスに伴う問題は、リフレッシュ・トークンが、リフレッシュ・トークンのもともとの発行先だったデバイスから提示されているということを条件として、証明が存在しないことである。そのため、本発明がなければ、認証サーバは、異なるデバイスまたはプログラムからリフレッシュ・トークンが提示されているように、リフレッシュ・トークンがデバイス、ネイティブ・アプリケーション、もしくはネットワーク、またはそれらの組み合わせから侵害されている状況を決定/区別することができない。
【0016】
この問題に対処するために、本発明の1つまたは複数の実施形態は、ネイティブ・アプリケーションに、リフレッシュ・トークン・フローが実行されるたびに、登録段階の間にアプリケーションが作成する非対称のデバイスにバインドされた認証情報を使用して、リフレッシュ・トークンに署名させる。グラントが最初に確立されたデバイ上のみで署名動作が行われ得るということを保証することによって、サーバは、グラントの発行先だったデバイス上のアプリケーションによってOAuthグラントが使用されているということを、非常に高いレベルで信頼することができる。
【0017】
本発明の1つまたは複数の実施形態は、トークン・バインディングを上回る明確な改善をもたらす。トークン・バインディングは、暗号証明書を使用するが、TLS接続の両端(例えば、クライアントと認可サーバの間)で暗号証明書を取得するために、トランスポート層セキュリティ(TLS:Transport Layer Security)拡張の使用を必要とする。そのため、そのようなシステムのユーザ機器は、高レベルの専門知識、時間、およびコンピュータ・リソースを必要とし、本発明はこれらを必要としない。さらに、トークン・バインディングは、クライアントで作成された認証情報がデバイスにバインドされることを強制せず、したがって、認証情報の安全性を低くする。そのため、本発明の1つまたは複数の実施形態は、(例えば、OAuthペイロード内の追加パラメータを使用する)アプリケーション・データ・レベルであり、TLSでのトークン・バインディングの実装に依存しない、リソース・セキュリティの解決策を提供する。
【0018】
俯瞰的には、本発明の1つまたは複数の実施形態は、登録段階およびその後のグラント・リフレッシュという2つの段階を含む。
【0019】
登録段階
【0020】
登録中に、ネイティブ・アプリケーションは、「初期グラント・データ」をユーザから受信するか、または収集する。本発明の1つまたは複数の実施形態では、この初期グラント・データは、クライアント・デバイス上でユーザ・インターフェイスを介してネイティブ・アプリケーションに提供されるユーザ名/パスワードなどの、リソース所有者パスワード認証情報(ROPC:Resource Owner Password Credentials)ユーザ認証情報である。
【0021】
本発明の1つまたは複数の実施形態では、この初期グラント・データは、システム・ブラウザからのハンドオフ(カスタム起動URI呼び出し)から取得されたか、またはQRコード(登録商標)を介してスキャンされた、認可コードである。
【0022】
ネイティブ・アプリケーションがこの初期グラント・データをトークン・エンドポイントに送信して第1の認可グラントを取得する前に、ネイティブ・アプリケーションは、ローカル・デバイスにバインドされ公開鍵/秘密鍵認証情報を作成する。
【0023】
本発明の1つまたは複数の実施形態では、デバイスのオペレーティング・システムは、認証情報を作成するために使用されるFast Identity Online-2(FIDO2)のプラットフォーム認証器アプリケーション・プログラム・インターフェイス(API)を提供する。
【0024】
本発明の1つまたは複数の実施形態では、プラットフォームAPI(例えば、セキュア・エンクレーブAPI)が、認証情報を作成する。
【0025】
作成される認証情報は、ユーザ検証が作成されて使用されることを必要としても必要としなくてもよい。この選択は、結局、企業が提供するAPIサービスおよび望ましいユーザ・エクスペリエンスのセキュリティ要件(ポリシー)になる。Fast Identity Online(FIDO)の用語および規格では、ユーザ検証は、任意選択的であり、そのため本明細書に記載されたアイデアにとどまる。
【0026】
鍵ペアを作成した後に、ネイティブ・アプリケーションは、認証サーバ内のOAuthトークン・エンドポイントへの要求において初期グラント・データに含まれるFIDO attestationObjectを構築する。本発明の1つまたは複数の実施形態では、この証明書オブジェクトの作成に入力されるclientDataJSONが(サーバによって提供されるチャレンジの代わりに)初期グラント・データになるように、パックされた証明書形式が使用される。
【0027】
本発明の1つまたは複数の実施形態では、証明書秘密鍵が、ネイティブ・アプリケーションのソース自体に埋め込まれる。ホワイトボックス暗号化および安全なネイティブ・コードの配布の実践などの技術を使用して、証明書秘密鍵の保護が実行される。
【0028】
本発明の1つまたは複数の実施形態は、FIDO2証明書などの証明書プロトコルを利用する。
【0029】
FIDO2証明書などの証明書は、使用されたクライアント認証器のmake/modelの証明を、認証サーバに提供する。クライアント認証器として機能しているネイティブ・アプリケーションの場合、この証明は、アプリケーションが、実行するようにコード化されたことを実行しているということを信用されるように、アプリケーション開発者によって指定されたネイティブ・アプリケーションのベンダーおよびバージョンを識別することによって、アプリケーションの完全性を証明することである。
【0030】
本発明の1つまたは複数の実施形態では、リフレッシュ・トークン・フローに署名するよう使用される作成されている認証情報は、秘密鍵が確立されたデバイスのみでその秘密鍵が使用されるように、デバイスにバインドされているということを、認証サーバは証明することができなければならない。そのような証明書がなければ、サーバと通信しているクライアントがアプリケーションの本物のインストールであるということがサーバにはわからない。アプリケーションがクライアント・デバイスのオペレーティング・システムによって提供されたネイティブなFIDO2 APIを使用している場合、プラットフォームによって証明書が提供される。そうでない場合、ネイティブ・アプリケーション・コード内で証明書が提供される。
【0031】
次に、ネイティブ・アプリケーションは、初期グラント・データ、(デバイスにバインドされた認証情報の公開鍵を含む)attestationObject、および(公開鍵を検証するための)初期グラント・データの署名を、OAuth認可サーバのトークン・エンドポイントに提示する。
【0032】
OAuth認可サーバは、証明書秘密鍵の信頼できる署名者を含む事前に構成されたメタデータを使用して、証明書を検証する。この検証は、証明書オブジェクト内の認証器データが、ユーザ検証が実行されたことを示すことが、サーバのポリシーである場合に、そのことをチェックすることを含む。初期グラント・データも検証される。デバイスにバインドされた認証情報の公開鍵が、サーバ側でOAuthグラントに関連付けられ、初期リフレッシュ・トークンおよびアクセス・トークンが、ネイティブ・アプリケーション・クライアントに返される。
【0033】
その後のグラント・リフレッシュ
【0034】
ネイティブ・アプリケーションはときどき、アクセス・トークンの期限が切れるときに、新しいリフレッシュ・トークン・フローを実行する。本発明の1つまたは複数の実施形態では、リフレッシュ・トークン・フローは、リフレッシュ・トークンと一緒に、FIDO authenticatorData、および初期グラントの確立中に登録されたデバイスにバインドされた認証情報の秘密鍵を使用して実行された(リフレッシュ・トークンのハッシュの)署名を含む。これによって、各リフレッシュで、グラントが確立されたデバイスで要求が生成されたことの証明をサーバに提供する。FIDOの認証ドキュメントに記述されたclientDataJSONは、サーバによって提供されたチャレンジとして、代わりにリフレッシュ・トークンを含む。
【0035】
本発明の1つまたは複数の実施形態では、refresh_tokenに一意のタイプが与えられる。clientDataJSONの例示的な疑似コードは次のとおりである。
{
“type”: “urn:mycustomapp:oauth”,
“refresh_token”: “RT_value”
}
【0036】
そのため、WebAuthnによって定義されたchallengeフィールド、originフィールド、またはtokenBindingフィールドは、必要でない。
【0037】
次に、リフレッシュ・トークン・フローのpost本文全体が、次のように記述される。
POST /oauth/token
client_id=public_client&grant_type=refresh_token&refresh_token=RT_value&authenticatorData=b64url_authenticator_data&signature=b64url_sig
【0038】
認証サーバは、RT_valueが有効であり、サーバに知られているリフレッシュ・トークン(RT:refresh token)を表すということを保証する。認証サーバは、グラントの確立でグラントに登録された関連する公開鍵を検索し(この公開鍵が、FIDO用語ではallowCredentialsリストになる)、次に、認証アサーションを検証することにおける妥当性確認手順の残りの部分が成功していることを確認し、これが純粋なWebAuthnを使用するブラウザではなく、ネイティブなシナリオであるため、いくつかの重要でない検討事項がデータ値(本発明の1つまたは複数の実施形態では、Uniform Resource Name(URN)であるoriginなど)に与えられる。
【0039】
本発明の1つまたは複数の実施形態では、アプリケーション・レベルの中間者(MITM:Man In The Middle)攻撃を防ぐために、解決策全体の一部として、証明書ピンニングなどの他の軽減も採用される。
【0040】
ここで各図を参照し、特に
図1を参照すると、本発明の1つまたは複数の実施形態の実装によって、もしくは実装において、またはその両方で利用され得る例示的なシステムおよびネットワークのブロック図が示されている。サーバ101に関して、サーバ101内に示されている図示されたハードウェアおよびソフトウェアの両方を含んでいる例示的なアーキテクチャの一部またはすべてが、
図1に示されたクライアント・デバイス123もしくはソフトウェア・デプロイ・サーバ149もしくはコンピュータ・リソース・サーバ151もしくはコンピュータ・リソース153もしくはアプリケーション証明書サービス・サーバ155もしくは人工知能(AI:artificial intelligence)システム157もしくはブロックチェーン・ネットワーク159またはそれらの組み合わせによって利用されてもよいし、または
図2に示されたリソース所有者200もしくは認可サーバ201もしくはクライアント・デバイス223もしくはコンピュータ・リソース・サーバ251もしくはコンピュータ・リソース253もしくはアプリケーション証明書サービス・サーバ255またはそれらの組み合わせによって利用されてもよいし、または本発明の1つまたは複数の実施形態に関連付けられた他の図に示された他の処理デバイスによって利用されてもよいし、またはそれらの組み合わせであってよい。
【0041】
例示的なサーバ101は、システム・バス105に結合されたプロセッサ103を含んでいる。プロセッサ103は1つまたは複数のプロセッサを利用してよく、プロセッサの各々は1つまたは複数のプロセッサ・コアを含む。ディスプレイ109を駆動/サポートするビデオ・アダプタ107も、システム・バス105に結合される。システム・バス105は、バス・ブリッジ111を介して入出力(I/O:input/output)バス113に結合される。I/Oインターフェイス115はI/Oバス113に結合され、I/Oインターフェイス115は、キーボード117、マウス119、媒体トレイ121((CD-ROMドライバ、マルチメディア・インターフェイスなどのストレージ・デバイスを含んでよい)、および外部USBポート125を含む、さまざまなI/Oデバイスとの通信を提供する。I/Oインターフェイス115に接続されたポートの形式は、コンピュータ・アーキテクチャの当業者に知られている任意のものであってよいが、一実施形態では、これらのポートの一部またはすべては、ユニバーサル・シリアル・バス(USB:universal serial bus)ポートである。
【0042】
図に示されるように、サーバ101は、ネットワーク・インターフェイス129を使用してネットワーク127と通信することができる。ネットワーク・インターフェイス129は、ネットワーク・インターフェイス・カード(NIC:network interface card)などのハードウェア・ネットワーク・インターフェイスである。ネットワーク127は、インターネットなどの外部ネットワーク、またはイーサネット(登録商標)もしくは仮想プライベート・ネットワーク(VPN:virtual private network)などの内部インターネットであってよい。
【0043】
ハード・ドライブ・インターフェイス131も、システム・バス105に結合される。ハード・ドライブ・インターフェイス131は、ハード・ドライブ133とインターフェイスをとる。一実施形態では、ハード・ドライブ133は、やはりシステム・バス105に結合されたシステム・メモリ135にデータを入力する。システム・メモリは、サーバ101内の最低レベルの揮発性メモリとして定義される。この揮発性メモリは、キャッシュ・メモリ、レジスタ、およびバッファを含むが、これらに限定されない、さらに高いレベルの追加の揮発性メモリ(図示されていない)を含む。システム・メモリ135に入力されるデータは、サーバ101’のオペレーティング・システム(OS:operating system)137およびアプリケーション・プログラム143を含む。
【0044】
OS137は、アプリケーション・プログラム143などのリソースへの透過的なユーザ・アクセスを提供するためのシェル139を含んでいる。一般にシェル139は、ユーザとオペレーティング・システムの間のインタープリタおよびインターフェイスを提供するプログラムである。より詳細には、シェル139は、コマンド・ライン・ユーザ・インターフェイスに入力されたコマンド、またはファイルからのコマンドを実行する。したがって、シェル139(コマンド・プロセッサとも呼ばれる)は通常、オペレーティング・システムの最高レベルのソフトウェア階層であり、コマンド・インタープリタとして機能する。シェルは、システム・プロンプトを提供し、キーボード、マウス、または他のユーザ入力媒体によって入力されたコマンドを解釈し、解釈されたコマンドを、処理するために適切なさらに低いレベルのオペレーティング・システム(例えば、カーネル141)に送信する。シェル139はテキストベースのライン指向ユーザ・インターフェイスであるが、本発明の1つまたは複数の実施形態が、グラフィック、音声、ジェスチャーなどの他のユーザ・インターフェイス・モードも同様に適切にサポートするということに注意する。
【0045】
図に示されるように、OS137は、OS137の他の部分およびアプリケーション・プログラム143によって必要とされる不可欠なサービス(メモリ管理、プロセスとタスクの管理、ディスク管理、およびマウスとキーボードの管理を含む)を提供することを含めて、OS137のさらに低いレベルの機能を含むカーネル141も含んでいる。
【0046】
アプリケーション・プログラム143は、ブラウザ145として例示的に示されたレンダラを含んでいる。ブラウザ145は、ワールド・ワイド・ウェブ(WWW:world wide web)クライアント(すなわち、サーバ101)で、ハイパーテキスト転送プロトコル(HTTP:hypertext transfer protocol)メッセージングを使用してネットワーク・メッセージをインターネットに対して送受信できるようにするプログラム・モジュールおよび命令を含んでおり、このようにして、クライアント・デバイス123もしくはソフトウェア・デプロイ・サーバ149もしくはコンピュータ・リソース・サーバ151もしくはコンピュータ・リソース153もしくはアプリケーション証明書サービス・サーバ155もしくは他のコンピュータ・システムまたはそれらの組み合わせとの通信を可能にする。
【0047】
サーバ101のシステム・メモリ内のアプリケーション・プログラム143は、コンピュータ・リソースへの安全なアクセスのためのプログラム(PSACR:Program for Secure Access to Computer Resources)147も含んでいる。PSACR147は、
図2~7で説明されているプロセスを含む、下記に説明されるプロセスを実装するためのコードを含んでいる。本発明の1つまたは複数の実施形態では、サーバ101は、ソフトウェア・デプロイ・サーバ149からPSACR147をダウンロードすることができ、このダウンロードは、実行に必要とされるまでPSACR147のコードがダウンロードされない、オンデマンドのダウンロードを含む。本発明の1つまたは複数の実施形態では、ソフトウェア・デプロイ・サーバ149が、本発明に関連するすべての機能を(PSACR147の実行を含めて)実行するため、サーバ101が、PSACR147を実行するためにそれ自身の内部コンピューティング・リソースを使用する必要がないということにさらに注意する。
【0048】
サーバ101に示されたハードウェア要素が、網羅的であるよう意図されておらず、本発明の1つまたは複数の実施形態によって必要とされる不可欠なコンポーネントを強調するための代表例であるということに注意する。例えば、サーバ101は、磁気カセット、デジタル・バーサタイル・ディスク(DVD:digital versatile disks)、ベルヌーイ・カートリッジなどの代替のメモリ・ストレージ・デバイスを含んでよい。これらおよび他の変形が本発明の範囲に含まれるということが意図されている。
【0049】
ここで
図2を参照すると、変更されたOpen Authorization(OAuth)システム206内で実行される本発明の1つまたは複数の実施形態の俯瞰的な概要が示されている。
【0050】
ステップ1および2に示されるように、リソース所有者200は、ユーザ・インターフェイスを介してクライアント・デバイス223とインターフェイスをとる人間ユーザ、またはアプリケーション・プログラム・インターフェイス(API)を介して初期グラント認証情報(initial grant credentials)をクライアント・デバイスに提示するためにユーザによって使用されるコンピュータのいずれかであり、初期グラント認証情報をネイティブ・アプリケーション202に提示する。そのような認証情報の例としては、認可コード、ユーザ名およびパスワードなどが挙げられるが、これらに限定されない。
【0051】
ステップ2a(クライアント・デバイス223内で発生し、
図1に示されたアプリケーション証明書サービス・サーバ155に類似するアプリケーション証明書サービス・サーバ255と通信するように示されている)に表されるように、ネイティブ・アプリケーション202は、リソース所有者200から受信された初期グラント認証情報をアプリケーション証明書サービス・サーバ255に送信する。アプリケーション証明書サービス・サーバ255は、ネイティブ・アプリケーション202が変更されておらず、本物のクライアント・デバイス223上で稼働していることの妥当性を確認するネイティブ・アプリケーション証明書サービスを提供する。アプリケーション証明書サービス・サーバ255は、ステップ3aのペイロードに含まれているこの証明書の暗号証明を提供する。
【0052】
ステップ2bに示されるように、次に、クライアント・デバイス223は、下記に説明されるように使用される公開鍵/秘密鍵ペア204を生成する。
【0053】
ステップ3aに示されるように、ネイティブ・アプリケーション202は、初期認可グラント、(ネイティブ・アプリケーション証明書サービスによって生成された)証明書の結果、(ネイティブ・アプリケーション202によって生成された)公開鍵、および対応する秘密鍵を使用して署名された初期認可グラントの署名を、認可サーバ201に送信する。
【0054】
ステップ3bに示されるように、認可サーバは、アプリケーション証明書サービスを使用してアプリケーションの証明書の結果を検証する。証明書サービスによって証明書が検証されない場合、登録が中断される。
【0055】
ステップ3cに示されるように、認可サーバ201は、初期認可グラントの署名を使用して公開鍵を検証し、公開鍵を格納し、この公開鍵は、コンピュータ・リソース253へのアクセス権限を付与するために下記のステップで使用される。
【0056】
ステップ4に示されるように、認可サーバ201は、初期アクセス・トークンおよびリフレッシュ・トークンを生成し、それらをネイティブ・アプリケーションに返す。初期アクセス・トークンは、ネイティブ・アプリケーション202がコンピュータ・リソース253にアクセスすることを可能にし、リフレッシュ・トークンは、認可サーバ201がアクセス・トークンをリフレッシュする/新しくすることを可能にする。
【0057】
ステップ5に示されるように、ネイティブ・アプリケーション202は、アクセス・トークン(すなわち、認可サーバ201による生成がリフレッシュ・トークンによって認可されている初期アクセス・トークンまたは新しいアクセス・トークンのいずれか)を使用して、リソース所有者200の代わりにネイティブ・アプリケーション202によってコンピュータ・リソース253にアクセスする。
【0058】
アクセス・トークンには制限された(例えば、5分未満の)有効期間があり、したがってアクセス・トークンは、リフレッシュ・トークンを使用することによって定期的にリフレッシュされる必要がある。
【0059】
したがって、ステップ6に示されるように、ネイティブ・アプリケーション202は、認可サーバ201を使用して現在のリフレッシュ・トークンを新しいアクセス・トークンおよび新しいリフレッシュ・トークンに定期的に交換する。すなわち、リフレッシュ・トークンは使い捨てであるため、新しいリフレッシュ・トークンは古い/現在のリフレッシュ・トークンを置き換える。認可サーバ201に新しいリフレッシュ・トークンを生成させるようにネイティブ・アプリケーション202から要求する際には、ネイティブ・アプリケーション202によって秘密鍵を用いて古いリフレッシュ・トークンが署名され、この署名は、トークン・リフレッシュ・フローの一部として認可サーバ201に送信される。したがって、ステップ3aで受信された公開鍵を使用して古いリフレッシュ・トークンの署名が検証された場合にのみ、認可サーバ201は、新しいアクセス・トークンおよび新しいリフレッシュ・トークンを生成して返す。
【0060】
ここで
図3を参照すると、本発明の1つまたは複数の実施形態において実行される1つまたは複数の動作の俯瞰的なフローチャートが示されている。
【0061】
開始ブロック301の後、ブロック303に示され、
図2で詳細に説明されるように、認可サーバは、デバイス上のネイティブ・アプリケーションから、初期認可グラント、デバイス上で生成された秘密鍵/公開鍵ペアの公開鍵、およびネイティブ・アプリケーションの信頼性の証明書を受信する。
【0062】
ブロック305に示され、
図2で詳細に説明されるように、認可サーバは、デバイス上のネイティブ・アプリケーションから、リフレッシュ・トークン、および秘密鍵を使用して作成されたリフレッシュ・トークンのデジタル署名を受信する。本発明の1つまたは複数の実施形態では、あらかじめ登録されている公開鍵を用いてリフレッシュ・トークンが検証された場合にのみ、認可サーバはリフレッシュ・トークンを認識する。
【0063】
ブロック307に示され、
図2で詳細に説明されるように、次に、認可サーバが、リフレッシュ・トークンのデジタル署名の妥当性を確認する。
【0064】
ブロック309に示され、
図2で詳細に説明されるように、デバイス上のネイティブ・アプリケーションからのリフレッシュ・トークンの妥当性を確認することに応答して、認可サーバは、新しいアクセス・トークンおよび新しいリフレッシュ・トークンを認可サーバからデバイス上のネイティブ・アプリケーションに送信する。この新しいアクセス・トークンは、デバイス上のネイティブ・アプリケーションがコンピュータ・リソースにアクセスすることを可能にする。
【0065】
フローチャートは、終了ブロック311で終了する。
【0066】
本発明の1つまたは複数の実施形態では、本明細書において説明されるように、デバイス上で公開鍵/秘密鍵が生成され、秘密鍵が、デバイスにバインドされることによって、不正使用または抽出から保護される。すなわち、公開鍵/秘密鍵ペアを生成したクライアント・デバイスのみが秘密鍵にアクセスできるため、悪意のある行為者によって秘密鍵が「ハッキング」され得ない。
【0067】
本発明の1つまたは複数の実施形態では、認可サーバおよびクライアントは、本発明によって変更されているOpen Authorization(OAuth)アーキテクチャ(例えば、
図2に示されている変更されたOpen Authorization(OAuth)システム206)のコンポーネントである。
【0068】
本発明の1つまたは複数の実施形態では、前述したように、トランスポート層セキュリティ(TLS)プロトコル拡張を使用せずに、クライアントからのアプリケーション・ペイロード内のデータを使用して、リフレッシュ認可グラント(refresh authorization grant)が、そのリフレッシュ認可グラントの発行先だったデバイスから来ることを検証される。
【0069】
本発明の1つまたは複数の実施形態では、(例えば、
図2に示された認可サーバ201内の)1つまたは複数のプロセッサは、リフレッシュ認可グラント処理の一部としてFast Identity Online(FIDO)認証を適用することによって、デバイスのアイデンティティを確認する。FIDOもしくはFIDO2またはその両方の詳細は、上記に説明されている。
【0070】
本発明の1つまたは複数の実施形態では、デバイスのアイデンティティは、その特定のデバイスによって使用され、その特定のデバイスを特定のIPアドレスに関連付けるルックアップ・テーブルによって識別されるインターネット・プロトコル(IP:Internet Protocol)アドレス、その特定のデバイスによってネットワーク・セグメント内の通信においてネットワーク・アドレスとして使用するためにネットワーク・インターフェイス・コントローラに割り当てられた媒体アクセス制御(MAC:Media Access Control)、その特定のデバイス用に生成された、その特定のデバイスに固有のUniform Universal Identifier(UUID)などの、その特定のデバイスの識別子によって決定されるか、もしくは確認されるか、またはその両方が行われる。
【0071】
そのため、本発明の1つまたは複数の実施形態では、認可サーバは、リフレッシュ・トークンが、初期認可グラントおよび秘密鍵/公開鍵ペアの公開鍵を作成した特定のデバイスから来ている場合にのみ、デバイス上のネイティブ・アプリケーションからのリフレッシュ・トークンの妥当性を確認する。認可サーバは、本発明の1つまたは複数の実施形態では、その特定のデバイスが初期認可グラント、デバイス上で生成された秘密鍵/公開鍵ペアの公開鍵、ネイティブ・アプリケーションの信頼性の証明書、およびリフレッシュ・トークンを認可サーバに送信するときに、その特定のデバイスから認可サーバに送信されるヘッダーの一部である、特定のデバイスによって現在使用されているIPアドレス、特定のデバイスによって現在使用されているMACアドレス、特定のデバイスのUUIDなどによって、その特定のデバイスを識別する。
【0072】
したがって、本発明の1つまたは複数の実施形態では、認可サーバは、そのデバイス内または別のデバイス内のどのアプリケーションがリフレッシュ・トークン、初期認可グラント、もしくは秘密鍵/公開鍵ペアの公開鍵、またはそれらの組み合わせを認可サーバに送信したかにかかわらず、リフレッシュ・トークンが、初期認可グラント、および秘密鍵/公開鍵ペアの公開鍵を作成した特定のデバイスから来ている場合にのみ、デバイス上のネイティブ・アプリケーションからのリフレッシュ・トークンの妥当性を確認する。
【0073】
本発明の1つまたは複数の実施形態では、アクセス・トークンもしくはリフレッシュ・トークンまたはその両方を生成するために
図2に示された認可サーバ201によって使用されるデータ/要素/係数が有効であることを、そのようなデータ/要素/係数をブロックチェーン台帳に格納することによって保証するために、ブロックチェーン・システムが使用される。
【0074】
したがって、
図4を参照すると、本発明の1つまたは複数の実施形態では、「信頼できる唯一の位置」でトランザクションを安全かつ透過的に格納し、追跡し、管理するために、ブロックチェーン・ネットワーク459(
図1に示されたブロックチェーン・ネットワーク159に類似している)が、インフラストラクチャ(例えば、チェーンコードの実行)およびサービス(例えば、アイデンティティ管理などのメンバーシップ・サービス)を提供するために使用される。ブロックチェーン・ネットワーク459は、システム内でこれまでに行われたありとあらゆるトランザクションの(信頼できる唯一の位置の)検証可能な記録を維持する。データがブロックチェーンに入力された後に、それらのデータは消去され得ず(不変性)、変更され得ない。すなわち、記録に対する変更は、新しいトランザクションを発行/導入することと見なされる。したがって、そのような消去または変更の禁止は、データの監査可能性および検証可能性を保証する。
【0075】
ブロックチェーン・ネットワーク459(「ブロックチェーン・ファブリック」、「ブロックチェーン・システム」、「オープン・ブロックチェーン」、または「Hyperledger Fabric」としても知られている)は、参加している関係者間で実行されて共有されているすべてのトランザクションまたはデジタル・イベントの記録の分散データベースに基づく。システム内の参加者の大部分を組み込む合意メカニズムを介して、ブロックチェーン内の個別のトランザクションが妥当性を確認されるか、または検証される。このようにして、反論できない記録を許可されたパブリックな台帳に作成することによって、参加している実体が、デジタル・イベントが発生したということを確実に知ることができるようにする。
【0076】
トランザクションが実行されるときに、それに対応するチェーンコードが、システムの複数の妥当性を確認しているピアによって実行される。例えば、
図4に示されるように、ピア418a~418dが、トランザクション・パラメータの有効性を確立し、それらのピアが合意に達した後に、新しいブロックが生成されて、ブロックチェーン・ネットワークに追加される。すなわち、監視コンピュータ401(例えば、
図2に示された認証サーバ201もしくは
図1に示されたサーバ101またはその両方)上で稼働しているアプリケーション・プロセス408(例えば
図2で説明されたように、認証サーバ201で実行されるOAuthプロセス)が、図に示されたアプリ403(例えば、OAutアプリケーション)などのアプリケーションを実行し、ソフトウェア開発キット(SDK:software development kit)410が、一般的なリモート・プロシージャ呼び出し(grpc:general remote procedure calls)を使用して、ピアツーピア・ネットワーク404をサポートするメンバーシップ・サービス409と通信することを引き起こし、ピアツーピア・ネットワーク404は、ピア418a~418gを使用してブロックチェーン416をサポートする。
【0077】
図5を参照すると、本発明の1つまたは複数の実施形態において利用されるような、ブロックチェーン416内の例示的なブロックチェーン台帳500が示されている。
【0078】
本発明の1つまたは複数の実施形態では、ブロックチェーン台帳500が、
図4に示されたピアツーピア・ネットワーク404もサポートするか、もしくは利用するか、またはその両方を行う
図2に示された認証サーバ201もしくは
図1に示されたサーバ101またはその両方などの監視コンピュータの識別子(ブロック502に示されている)を含んでいる。例えば、本発明の1つまたは複数の実施形態では、ブロック502が、監視コンピュータのインターネット・プロトコル(IP:internet protocol)アドレス、ユニフォーム・リソース・ロケータ(URL:uniform resource locator)などを含む。この情報は、本明細書に記載されたプロセス・フローに関連するトランザクションを受信するために、
図4に示されたピアツーピア・ネットワーク404内のピアによって使用される。
【0079】
本発明の1つまたは複数の実施形態では、ブロックチェーン台帳500は、第1の新しいアクセス・トークンおよび第1の新しいリフレッシュ・トークンを生成するために認証サーバによって利用される初期認可グラント(ブロック504)、公開鍵(ブロック506)、ネイティブ・アプリケーションの信頼性の証明書(ブロック508)、リフレッシュ・トークン(ブロック510)、およびリフレッシュ・トークンのデジタル署名(ブロック512)のコピーも含む。その後、ブロックチェーン台帳500からの情報が、最初に認証サーバに提示された(ただし、必ずしも認証サーバによって使用されない)ときから変化していないと保証される形態で取り出される。すなわち、初期認可グラント、デバイス上で生成された秘密鍵/公開鍵ペアの公開鍵、およびネイティブ・アプリケーションの信頼性の証明書が作成され、認可サーバおよびブロックチェーンの両方に並列に送信される。しかし、初期認可グラント、デバイス上で生成された秘密鍵/公開鍵ペアの公開鍵、およびネイティブ・アプリケーションの信頼性の証明書は、認可サーバによって使用される前に破損する可能性がある。そのため、初期認可グラント、デバイス上で生成された秘密鍵/公開鍵ペアの公開鍵、およびネイティブ・アプリケーションの信頼性の証明書の破損していないバージョンがブロックチェーンに格納され、これらは、あらゆるデータ破損を防ぐブロックチェーン・システムに格納される。
【0080】
図4に示されたブロックチェーン・ネットワーク459の例示的動作が、
図6に示されている。ステップ601で説明されるように、コンピューティング・デバイス(例えば、1つまたは複数の実施形態では、
図1に示されたサーバ101もしくは
図2に示された認可サーバ201またはその両方である、
図4に示された監視コンピュータ401)が、トランザクションを実行する(例えば、
図2で前述したように、デバイス上のネイティブ・アプリケーション、初期認可グラント、デバイス上で生成された秘密鍵/公開鍵ペアの公開鍵、ネイティブ・アプリケーションの信頼性の証明書、リフレッシュ・トークン、秘密鍵を使用して作成されたリフレッシュ・トークンのデジタル署名などを受信する)。ステップ603に示されるように、監視コンピュータ401は、セキュア・ハッシュ・アルゴリズム(SHA-2)などのハッシュ・アルゴリズムを使用してトランザクションをハッシュし、次に、デジタル署名を使用してそのハッシュに署名する。ステップ605で説明されるように、その後、この署名が、
図4に示されたピアツーピア・ネットワーク404にブロードキャストされる。ステップ607に示されるように、ピアツーピア・ネットワーク404内のピア(例えば、ピア418a)が、トランザクションを
図4に示されたブロックチェーン416に集約する。ブロック609に示されるように、各ブロックは、前のブロックへのリンクを含む。新たに修正されたブロックチェーン416は、ピア418a~418dのうちの1つまたは複数の他のピアによって、もしくは他の認可されたブロックチェーン・システムからの他のピアによって、またはその両方によって、妥当性を確認される(ステップ611)。ステップ613で説明されるように、次に、妥当性を確認されたブロックがピア418b~418dにブロードキャストされる。これらのピア418b~418dは、新しいブロックをリッスンして受信し、それらのブロックをブロックチェーン416の自分のコピーにマージする(ステップ615)。
【0081】
このようにして、
図4~
図6で説明されたブロックチェーン・ファブリックは、分散型台帳を提供するブロックチェーン・デプロイメント技術を表し、分散型台帳は、持続して、トランザクションと呼ばれる、複数の参加者間で共有されるデジタル・イベントを管理し、各参加者は、これらのイベントにおいて利害関係がある。台帳は、参加者間の合意のみによって更新されることが可能である。さらに、トランザクションが記録された後に、それらのトランザクションは変更され得ない(変更不可能である)。そのようなすべての記録されたトランザクションは、参加者からの合意の証明を使用して、暗号によって検証可能であり、このようにして、トランザクションの発祥を追跡する堅牢な来歴メカニズムを提供する。
【0082】
そのため、ブロックチェーン・ファブリックは、分散ネットワークを使用してイベントのデジタル台帳を維持し、したがって、各ピアに格納されたブロックチェーンが以前のブロックに依存し、これによって、ブロックチェーン内のその後のブロックに保護されたデータを提供するため、デジタル台帳の優れたセキュリティを実現する。
【0083】
すなわち、本明細書に記載されたブロックチェーン・ファブリックは、分散的システムを提供し、分散的システム内のすべてのノードが、ブロックチェーンのコピーを含む。これによって、信頼できる第三者によって管理された集中データベースを持つ必要性を回避する。トランザクションは、ソフトウェア・アプリケーションを使用してネットワークにブロードキャストされる。ネットワーク・ノードは、トランザクションの妥当性を確認し、それらのトランザクションを自分のコピーに追加し、その後、これらの追加を他のノードにブロードキャストすることができる。しかし前述したように、それにもかかわらず、ブロックチェーンは、1つまたは複数の以前のブロックに基づいて各新しいブロックが保護される(例えば、ハッシュされる)ため、非常に安全である。
【0084】
したがって、本発明の1つまたは複数の実施形態では、
図3で上記に説明された新しいアクセス・トークンが第1の新しいアクセス・トークンとして識別され、新しいリフレッシュ・トークンが第1の新しいリフレッシュ・トークンとして識別されるということを仮定する。
【0085】
本発明の1つまたは複数の実施形態では、ブロックチェーン・アーキテクチャ(例えば、
図1に示されたサーバ101、または
図2に示された認可サーバ201、または
図4に示された監視コンピュータ401もしくはブロックチェーン・ネットワーク459またはその両方、またはそれらの組み合わせ)は、第1の新しいアクセス・トークンおよび第1の新しいリフレッシュ・トークンを生成するために認証サーバによって利用される初期認可グラント、公開鍵、ネイティブ・アプリケーションの信頼性の証明書、リフレッシュ・トークン、およびリフレッシュ・トークンのデジタル署名を含む、格納されたブロックチェーンを格納する。
【0086】
監視コンピュータ(例えば、認可サーバ201)は、格納されたブロックチェーンをブロックチェーン・アーキテクチャから取り出し、格納されたブロックチェーンからの初期認可グラント、公開鍵、ネイティブ・アプリケーションの信頼性の証明書、リフレッシュ・トークン、およびリフレッシュ・トークンのデジタル署名を使用することによって、第2の新しいアクセス・トークンおよび第2の新しいリフレッシュ・トークンを生成する。
【0087】
1つまたは複数のプロセッサは、第1の新しいアクセス・トークンおよび第1の新しいリフレッシュ・トークンが、第2の新しいアクセス・トークンおよび第2の新しいリフレッシュ・トークンに一致するということを決定するために、第1の新しいアクセス・トークンおよび第1の新しいリフレッシュ・トークンを、第2の新しいアクセス・トークンおよび第2の新しいリフレッシュ・トークンと比較する。
【0088】
第1の新しいアクセス・トークンおよび第1の新しいリフレッシュ・トークンが第2の新しいアクセス・トークンおよび第2の新しいリフレッシュ・トークンに一致するということの決定に応答して、1つまたは複数のプロセッサは、認可サーバによって生成された第1の新しいアクセス・トークンおよび第1の新しいリフレッシュ・トークンが認可サーバからネイティブ・アプリケーションに送信されることを認可する。
【0089】
本発明の1つまたは複数の実施形態では、新しいアクセス・トークンが第1の新しいアクセス・トークンであり、新しいリフレッシュ・トークンが第1の新しいリフレッシュ・トークンであり、今説明したブロックチェーンが、第1の新しいアクセス・トークンおよび第1の新しいリフレッシュ・トークンを生成するために認証サーバによって利用される初期認可グラント、公開鍵、ネイティブ・アプリケーションの信頼性の証明書、リフレッシュ・トークン、およびリフレッシュ・トークンのデジタル署名を含み、格納されたブロックチェーンがブロックチェーン・アーキテクチャから取り出され、認証サーバが、格納されたブロックチェーンからの初期認可グラント、公開鍵、ネイティブ・アプリケーションの信頼性の証明書、リフレッシュ・トークン、およびリフレッシュ・トークンのデジタル署名を使用することによって第2の新しいアクセス・トークンおよび第2の新しいリフレッシュ・トークンを生成する。
【0090】
しかし、これらの1つまたは複数の実施形態では、1つまたは複数のプロセッサは、第1の新しいアクセス・トークンおよび第1の新しいリフレッシュ・トークンが、第2の新しいアクセス・トークンおよび第2の新しいリフレッシュ・トークンに一致しないということを決定するために、第1の新しいアクセス・トークンおよび第1の新しいリフレッシュ・トークンを、第2の新しいアクセス・トークンおよび第2の新しいリフレッシュ・トークンと比較する。そのため、第1の新しいアクセス・トークンおよび第1の新しいリフレッシュ・トークンが第2の新しいアクセス・トークンおよび第2の新しいリフレッシュ・トークンに一致しないということの決定に応答して、1つまたは複数のプロセッサは、認可サーバからネイティブ・アプリケーションへの認可サーバによって生成された第1の新しいアクセス・トークンおよび第1の新しいリフレッシュ・トークンの送信を阻止する。
【0091】
したがって、ブロックチェーンの内容は、第1の新しいアクセス・トークンおよび第1の新しいリフレッシュ・トークンを生成するために認証サーバによって利用される初期認可グラント、公開鍵、ネイティブ・アプリケーションの信頼性の証明書、リフレッシュ・トークン、およびリフレッシュ・トークンのデジタル署名が有効であることを、ブロックチェーン内のそれらの以前の格納によって保証されているとして確認するために使用される。
【0092】
本発明の1つまたは複数の実施形態では、認可サーバが生成するアクセス・トークンおよびリフレッシュ・トークンの妥当性を確認するために、人工知能(例えば、ニューラル・ネットワーク)が使用される。
【0093】
次に、
図7を参照すると、本発明の1つまたは複数の実施形態において使用される例示的な人工知能システムは、本発明の1つまたは複数の実施形態において利用されるような(
図1に示された人工知能システム157に類似する)深層ニューラル・ネットワーク(DNN:deep neural network)757である。DNN757内のノードは、ハードウェア・プロセッサ、仮想プロセッサ、またはソフトウェア・アルゴリズムを表すか、またはハードウェア・プロセッサ、仮想プロセッサ、もしくはソフトウェア・アルゴリズム、またはそれらの組み合わせを表す。
【0094】
本発明の1つまたは複数の実施形態では、DNN757は、ブロック702に示されるように、ニューラル・ネットワークによって生成されたアクセス・トークンもしくはニューラル・ネットワークによって生成されたリフレッシュ・トークンまたはその両方を生成するようにトレーニングされる。
【0095】
DNN757は、ブロック702に示されるように、認可サーバのデータ700(例えば、新しいアクセス・トークンおよび新しいリフレッシュ・トークンを生成するために認証サーバによって利用される初期認可グラント、公開鍵、ネイティブ・アプリケーションの信頼性の証明書、リフレッシュ・トークン、およびリフレッシュ・トークンのデジタル署名)を使用してニューラル・ネットワークによって生成されたアクセス・トークンもしくはニューラル・ネットワークによって生成されたリフレッシュ・トークンまたはその両方を生成するようにトレーニングされている。DNN757は、既知のニューラル・ネットワークによって生成されるアクセス・トークンもしくはニューラル・ネットワークによって生成されるリフレッシュ・トークンまたはその両方を生成するのに使用される、さまざまな既知の種類の初期認可グラント、既知の種類の公開鍵、既知の種類のネイティブ・アプリケーションの信頼性の証明書、既知の種類のリフレッシュ・トークン、および既知の種類のリフレッシュ・トークンのデジタル署名を使用することによってトレーニングされる。
【0096】
DNN757は、本発明の1つまたは複数の実施形態において使用される、例示的な種類のニューラル・ネットワークである。本発明の1つまたは複数の実施形態において使用され得る他のニューラル・ネットワークは、畳み込みニューラル・ネットワーク(CNN:convolutional neural networks)および深層学習の他の形態を使用するニューラル・ネットワークを含む。
【0097】
ニューラル・ネットワークは、名前が含意するように、生物学的ニューラル・ネットワーク(例えば、人間の脳)を真似て大まかにモデル化される。生物学的ニューラル・ネットワークは、互いに影響を与える一連の相互接続されたニューロンで構成されている。例えば、シナプスによって、(第1のニューロンからの)第2のニューロンによって受け取られる神経伝達物質の放出を介して、第1のニューロンが第2のニューロンに電気的に接続され得る。これらの神経伝達物質は、第2のニューロンの興奮または抑制を引き起こすことができる。興奮/抑制にある相互接続されたニューロンのパターンは、最終的に、思考、筋肉の動き、記憶検索などを含む生物学的結果につながる。生物学的ニューラル・ネットワークのこの説明は非常に簡略化されているが、俯瞰的な概要としては、1つまたは複数の生物学的ニューロンが、1つまたは複数の他の生体電気的に接続された生物学的ニューロンの動作に影響を与えるということである。
【0098】
電子ニューラル・ネットワークは、同様に電子ニューロンで構成されている。しかし、生物学的ニューロンとは異なり、電子ニューロンは技術的に「抑制性」になることはなく、さまざまな程度に「興奮性」になるに過ぎない。
【0099】
DNN757内の電子ニューロン(本明細書では、単に「ニューロン」または「ノード」とも呼ばれる)は、入力層703、隠れ層705、および出力層707として知られている層に配置される。入力層703は、入力データを受け取ってニューロンの一連の隠れ層(例えば、隠れ層705)に送信するニューロン/ノードを含み、隠れ層のうちの1つの層からのニューロンが、隠れ層705のうちの次の層内のすべてのニューロンと相互接続される。次に、隠れ層705のうちの最終的な層が、計算結果を出力層707に出力し、出力層707は多くの場合、ベクトル情報を保持する単一のノードである。
【0100】
前述したように、図に示されたDNN757内の各ノードは、図に示されたニューロン709などの電子ニューロンを表す。ブロック711に示されるように、(ニューロン709を含む)各ニューロンは、少なくとも4つの特徴(アルゴリズム、出力値、重み、およびバイアス値)を機能的に含む。
【0101】
アルゴリズムは、1つまたは複数の上流のニューロンからのデータを処理するための数学的式である。例えば、中央の隠れ層705に示されたニューロンのうちの1つまたは複数が、データ値をニューロン709に送信すると仮定する。次に、ニューロン709は、1つまたは複数の出力値を作成するために、ブロック711に示された数学関数を実行することによって、これらのデータ値を処理し、その後、これらの出力値が、隠れ層705内の別のニューロンまたは出力層707内のニューロンなどの、別のニューロンに送信される。各ニューロンは、そのニューロンもしくは他の接続されたニューロンまたはその両方に固有である重みも有する。さらに、出力値がバイアス値に加算されて、出力値を増やすか、または減らし、DNN757がさらに「微調整される」ことを可能にする。
【0102】
例えば、ニューロン713がデータの一部分の分析結果をニューロン709に送信していると仮定する。ニューロン709は、特にニューロン713から来るデータがどの程度重要であるかを定義する第1の重みを有する。このデータが重要である場合、ニューロン713から来るデータが重く重み付けされるか、もしくはバイアス値によって増やされるか、またはその両方が実行され、このようにして、ニューロン709内の数学関数に、出力層707内のニューロンにより大きな影響を与えるより大きな出力を生成させる。同様に、ニューロン713が、ニューロン709の動作にとって重要であるということが決定された場合、ニューロン709が、ニューロン713内の数学関数の出力のより大きな値を受信するように、ニューロン713の重みが増やされる。代替として、ニューロン709の出力に影響を与えるために使用される重みもしくはバイアスまたはその両方を減らすことによって、ニューロン709の出力が最小限に抑えられ得る。これらの重み/バイアスは、信頼できる出力が出力層707から生じるように、DNN757内のすべてのニューロンのうちの1つ、一部、またはすべてについて調整可能である。本発明の1つまたは複数の実施形態では、重みの値およびバイアス値を見つけることは、ニューラル・ネットワークをトレーニングすることによって自動的に実行される。本発明の1つまたは複数の実施形態では、学習率、ドロップアウト、正則化係数などのハイパーパラメータを調整するために、手動による調整が適用される。そのため、ニューラル・ネットワークをトレーニングすることは、損失関数を最小化するための最適な重みおよびバイアス値に達するまで、複数のデータセットに対して前方伝搬および後方伝搬を実行することを含む。損失関数は、さまざまな入力に対するニューラル・ネットワークによる予測値および実際のラベルにおける差を測定する。
【0103】
DNN757トレーニング中に手動で調整される場合、重みは、出力層707からの出力が期待値に一致するまで繰り返されられる方法で調整される。
【0104】
自動的に調整される場合、「後方伝搬」を使用して重み(もしくは数学関数またはその両方)が調整され、後方伝搬では、各重み値をどの方向に調整するべきかを決定する「勾配降下」法を使用することによって、ニューロンの重み値が調整される。この勾配降下プロセスは、出力層707からの出力が改善するまで(例えば、適切なアクセス・トークンおよびリフレッシュ・トークンを正確に生成するまで)、各ニューロンにおける重みを特定の方向に移動する。
【0105】
図7に示されるように、ニューロンの個々の層が異なる陰影を付けられており、本発明の1つまたは複数の実施形態では、これらの層が、リフレッシュ・トークンを生成するときに認証サーバによって使用される情報のさまざまな側面を認識するために特にトレーニングされるということを示している。
【0106】
したがって、本発明の1つまたは複数の実施形態では、隠れ層705内に、認可グラントの種類を評価するように設計されたニューロンを含んでいる層706、公開鍵の種類を評価するように設計されたニューロンを含んでいる層708、およびネイティブ・アプリケーションの信頼性の証明書の種類を評価するように設計されたニューロンを含んでいる層710が存在する。
【0107】
次に、層710からのニューロンの出力が、出力層707で検出される値を制御する。
【0108】
したがって、本発明の1つまたは複数の実施形態は、ニューラル・ネットワークに、初期認可グラント、公開鍵、ネイティブ・アプリケーションの信頼性の証明書、リフレッシュ・トークン、およびリフレッシュ・トークンのデジタル署名を入力し、ニューラル・ネットワークは、ニューラル・ネットワークによって生成されたアクセス・トークンおよびニューラル・ネットワークによって生成されたリフレッシュ・トークンを生成するようにトレーニングされる。次に、1つまたは複数のプロセッサは、認可サーバによって生成された新しいアクセス・トークンおよび新しいリフレッシュ・トークンの妥当性を確認するために、認可サーバによって生成された新しいアクセス・トークンおよび新しいリフレッシュ・トークンを、ニューラル・ネットワークによって生成されたアクセス・トークンおよびニューラル・ネットワークによって生成されたリフレッシュ・トークンと比較する。
【0109】
本発明の1つまたは複数の実施形態では、1つまたは複数のプロセッサは、新しいアクセス・トークンおよび新しいリフレッシュ・トークンがニューラル・ネットワークによって生成されたアクセス・トークンおよびニューラル・ネットワークによって生成されたリフレッシュ・トークンに一致するということを決定する。新しいアクセス・トークンおよび新しいリフレッシュ・トークンがニューラル・ネットワークによって生成されたアクセス・トークンおよびニューラル・ネットワークによって生成されたリフレッシュ・トークンに一致するということの決定に応答して、1つまたは複数のプロセッサは、新しいアクセス・トークンおよび新しいリフレッシュ・トークンをネイティブ・アプリケーションに送信する。
【0110】
本発明の1つまたは複数の実施形態では、1つまたは複数のプロセッサは、新しいアクセス・トークンおよび新しいリフレッシュ・トークンがニューラル・ネットワークによって生成されたアクセス・トークンおよびニューラル・ネットワークによって生成されたリフレッシュ・トークンに一致しないということを決定する。新しいアクセス・トークンおよび新しいリフレッシュ・トークンがニューラル・ネットワークによって生成されたアクセス・トークンおよびニューラル・ネットワークによって生成されたリフレッシュ・トークンに一致しないということの決定に応答して、1つまたは複数のプロセッサは、ネイティブ・アプリケーションへの新しいアクセス・トークンおよび新しいリフレッシュ・トークンの送信を阻止する。
【0111】
したがって、本発明の1つまたは複数の実施形態では、ニューラル・ネットワークは、前述の認証サーバによって実行される作業の妥当性を確認するか、またはこの作業を無効にする。
【0112】
そのため、本明細書において提示されたさまざまな実施形態で説明されるように、ネイティブ・アプリケーションの信頼性の証明書は、ネイティブ・アプリケーションおよびデバイスの完全性および信頼性を保証する。
【0113】
1つまたは複数の実施形態では、本発明は、クラウド・コンピューティングを使用して実装される。それにもかかわらず、本開示にはクラウド・コンピューティングの詳細な説明が含まれているが、本明細書において示された内容の実装が、クラウド・コンピューティング環境に限定されないということが、あらかじめ理解される。むしろ、本発明の実施形態は、現在既知であるか、または今後開発される任意の他の種類のコンピューティング環境と組み合わせて実装され得る。
【0114】
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含む。
【0115】
特徴は、次のとおりである。
【0116】
オンデマンドのセルフサービス:クラウドの利用者は、サーバの時間およびネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
【0117】
ブロード・ネットワーク・アクセス:能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
【0118】
リソース・プール:プロバイダの計算リソースは、プールされて、マルチテナント・モデルを使用して複数の利用者に提供され、さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないという点において、場所に依存しないという感覚があるが、それでも、さらに高い抽象レベルでは場所(例えば、国、州、またはデータセンター)を指定できる。
【0119】
迅速な順応性:能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
【0120】
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
【0121】
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
【0122】
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
【0123】
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、および他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御することができ、場合によっては、選ばれたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
【0124】
デプロイメント・モデルは、次のとおりである。
【0125】
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。1つまたは複数の実施形態では、このクラウド・インフラストラクチャは、この組織もしくはサード・パーティによって管理されるか、もしくはオンプレミスもしくはオフプレミスに存在するか、またはその両方である。
【0126】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。1つまたは複数の実施形態では、このクラウド・インフラストラクチャは、これらの組織もしくはサード・パーティによって管理されるか、またはオンプレミスもしくはオフプレミスに存在するか、またはその両方である。
【0127】
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
【0128】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データおよびアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
【0129】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを備えるインフラストラクチャである。
【0130】
ここで
図8を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されるように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、もしくは自動車コンピュータ・システム54N、またはそれらの組み合わせなど)が互いに通信する、1つまたは複数のクラウド・コンピューティング・ノード10を含んでいる。さらに、ノード10は、互いに通信する。一実施形態では、これらのノードは、前述したプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはそれらの組み合わせなどの1つまたは複数のネットワーク内で、物理的または仮想的にグループ化される(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、もしくはSaaS、またはそれらの組み合わせを提供できる。
図8に示されたコンピューティング・デバイス54A~54Nの種類は、例示のみが意図されており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークもしくはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)またはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【0131】
ここで
図9を参照すると、クラウド・コンピューティング環境50(
図9)によって提供される機能的抽象レイヤのセットが示されている。
図8に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されるように、次のレイヤおよび対応する機能が提供される。
【0132】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(縮小命令セットコンピュータ:Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0133】
仮想化レイヤ70は、1つまたは複数の実施形態では、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体が提供される、抽象レイヤを備える。
【0134】
一例を挙げると、管理レイヤ80は、以下で説明する機能を提供する。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよび他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書またはインボイスの送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含む。セキュリティは、クラウドの利用者およびタスクのアイデンティティ検証を行うとともに、データおよび他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス・レベル・アグリーメント(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
【0135】
ワークロード・レイヤ90は、1つまたは複数の実施形態においてクラウド・コンピューティング環境で利用される機能の例を示している。このレイヤから提供されるワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ分析処理94、トランザクション処理95、および本明細書に記載された本発明の特徴のうちの1つまたは複数を実行する安全なコンピュータ・リソース・アクセス処理96が挙げられる。
【0136】
本発明は、システム、方法、もしくはコンピュータ・プログラム製品、またはそれらの組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいる1つまたは複数のコンピュータ可読ストレージ媒体を含んでよい。
【0137】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(登録商標)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(登録商標)・ディスク、命令が記録されているパンチカードまたは溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、電波または他の自由に伝搬する電磁波、導波管もしくは他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号などの、それ自体が一過性の信号であると解釈されるべきではない。
【0138】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはそれらの組み合わせ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、またはそれらの組み合わせを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0139】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはJava(登録商標)、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、またはリモート・コンピュータ上もしくはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータが、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてもよいし、または接続が、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【0140】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照して説明される。フローチャート図もしくはブロック図またはその両方の各ブロック、ならびにフローチャート図もしくはブロック図またはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【0141】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、もしくは他のデバイス、またはそれらの組み合わせに特定の方式で機能するように指示できるものであってもよい。
【0142】
コンピュータ可読プログラム命令は、コンピュータ上、他のプログラム可能な装置上、または他のデバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成する他のデバイス上で実行させる。
【0143】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、本発明を制限することを意図していない。本明細書において使用されるとき、単数形「a」、「an」、および「the」は、文脈で特に明示的に示されない限り、複数形も含むよう意図されている。「備える」もしくは「備えている」またはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、もしくはコンポーネント、またはそれらの組み合わせの存在を示すが、1つまたは複数の他の機能、整数、ステップ、動作、要素、コンポーネント、もしくはこれらのグループ、またはそれらの組み合わせの存在または追加を除外していないということが、さらに理解されるであろう。
【0144】
下記の特許請求の範囲内のすべての手段またはステップおよび機能要素の対応する構造、材料、動作、および等価なものは、具体的に請求される他の請求された要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図されている。本発明のさまざまな実施形態の説明は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、開示された形態での本発明に制限されない。本発明の範囲から逸脱することなく、多くの変更および変形が、当業者にとって明らかになるであろう。本発明の原理および実際的な適用を最も適切に説明するため、およびその他の当業者が、企図された特定の用途に適するようなさまざまな変更を伴う多様な実施形態に関して、本発明を理解できるようにするために、実施形態が選択されて説明された。
【0145】
本発明の1つまたは複数の実施形態では、本開示において説明された任意の方法が、VHDL(VHSIC Hardware Description Language:VHSICハードウェア記述言語)プログラムおよびVHDLチップを使用することによって実装される。VHDLは、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC:Application Specific Integrated Circuits)、および他の類似の電子デバイス用の設計入力言語の一例である。したがって、本発明の1つまたは複数の実施形態では、本明細書に記載された任意のソフトウェアによって実装される方法が、ハードウェアベースのVHDLプログラムによってエミュレートされ、その後、FPGAなどのVHDLチップに適用される。
【0146】
したがって、本出願の本発明の実施形態を詳細に説明したことにより、およびその実施形態例を参照することにより、変更および変形が、添付の特許請求の範囲で定義された本発明の範囲から逸脱することなく可能であるということは明らかであろう。
【手続補正書】
【提出日】2024-05-15
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
認可サーバによって、デバイス上のネイティブ・アプリケーションから、初期認可グラント、前記デバイス上で生成された秘密鍵/公開鍵ペアの公開鍵、および前記ネイティブ・アプリケーションの信頼性の証明書を受信することと、
前記認可サーバによって、前記デバイス上の前記ネイティブ・アプリケーションから、リフレッシュ・トークン、および前記秘密鍵を使用して作成された前記リフレッシュ・トークンのデジタル署名を受信することであって、前記認可サーバが、あらかじめ登録されている前記公開鍵を用いて前記リフレッシュ・トークンが検証された場合にのみ、前記リフレッシュ・トークンを認識する、前記受信することと、
前記認可サーバによって、前記リフレッシュ・トークンの前記デジタル署名の妥当性を確認することと、
前記デバイス上の前記ネイティブ・アプリケーションからの前記リフレッシュ・トークンの妥当性を確認することに応答して、前記認可サーバによって、新しいアクセス・トークンおよび新しいリフレッシュ・トークンを前記認可サーバから前記デバイス上の前記ネイティブ・アプリケーションに送信することであって、前記新しいアクセス・トークンが、前記デバイス上の前記ネイティブ・アプリケーション
に前記コンピュータ・リソース
へアクセス
させる、前記送信することと
を含む、方法。
【請求項2】
前記ネイティブ・アプリケーションの信頼性の前記証明書は、前記ネイティブ・アプリケーションおよびデバイスの完全性および信頼性を保証する、請求項1に記載の方法。
【請求項3】
前記デバイス上で前記公開鍵/秘密鍵が生成され、前記秘密鍵は、前記デバイスにバインドされることによって、不正使用または抽出から保護される、請求項1に記載の方法。
【請求項4】
前記認可サーバおよび前記クライアントは、Open Authorization(OAuth)アーキテクチャのコンポーネントである、請求項1に記載の方法。
【請求項5】
トランスポート層セキュリティ(TLS)プロトコル拡張を使用せずに、前記クライアントからのアプリケーション・ペイロード内のデータを使用して、リフレッシュ認可グラントが、前記リフレッシュ認可グラントの発行先だった前記デバイスから来ることを検証される、請求項1に記載の方法。
【請求項6】
1つまたは複数のプロセッサによって、リフレッシュ認可グラント処理の一部としてFast Identity Online(FIDO)認証を適用することによって、前記デバイスのアイデンティティを確認することをさらに含む、請求項1に記載の方法。
【請求項7】
ニューラル・ネットワークに、前記初期認可グラント、前記公開鍵、前記ネイティブ・アプリケーションの信頼性の前記証明書、前記リフレッシュ・トークン、および前記リフレッシュ・トークンの前記デジタル署名を入力することであって、前記ニューラル・ネットワークは、ニューラル・ネットワークによって生成されたアクセス・トークンおよびニューラル・ネットワークによって生成されたリフレッシュ・トークンを生成するようにトレーニングされる、前記入力することと、
1つまたは複数のプロセッサによって、前記認可サーバによって生成された前記新しいアクセス・トークンおよび前記新しいリフレッシュ・トークンの妥当性を確認するために、前記認可サーバによって生成された前記新しいアクセス・トークンおよび前記新しいリフレッシュ・トークンを、前記ニューラル・ネットワークによって生成されたアクセス・トークンおよび前記ニューラル・ネットワークによって生成されたリフレッシュ・トークンと比較することと
をさらに含む、請求項1に記載の方法。
【請求項8】
1つまたは複数のプロセッサによって、前記新しいアクセス・トークンおよび新しいリフレッシュ・トークンが前記ニューラル・ネットワークによって生成されたアクセス・トークンおよび前記ニューラル・ネットワークによって生成されたリフレッシュ・トークンに一致するということを決定することと、
前記新しいアクセス・トークンおよび新しいリフレッシュ・トークンが前記ニューラル・ネットワークによって生成されたアクセス・トークンおよび前記ニューラル・ネットワークによって生成されたリフレッシュ・トークンに一致するということの決定に応答して、1つまたは複数のプロセッサによって、前記新しいアクセス・トークンおよび前記新しいリフレッシュ・トークンを前記ネイティブ・アプリケーションに送信することと
をさらに含む、請求項7に記載の方法。
【請求項9】
1つまたは複数のプロセッサによって、前記新しいアクセス・トークンおよび新しいリフレッシュ・トークンが前記ニューラル・ネットワークによって生成されたアクセス・トークンおよび前記ニューラル・ネットワークによって生成されたリフレッシュ・トークンに一致しないということを決定することと、
前記新しいアクセス・トークンおよび新しいリフレッシュ・トークンが前記ニューラル・ネットワークによって生成されたアクセス・トークンおよび前記ニューラル・ネットワークによって生成されたリフレッシュ・トークンに一致しないということの決定に応答して、1つまたは複数のプロセッサによって、前記ネイティブ・アプリケーションへの前記新しいアクセス・トークンおよび前記新しいリフレッシュ・トークンの送信を阻止することと
をさらに含む、請求項7に記載の方法。
【請求項10】
前記新しいアクセス・トークンは第1の新しいアクセス・トークンであり、前記新しいリフレッシュ・トークンは第1の新しいリフレッシュ・トークンであり、前記方法は、
前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンを生成するために前記認証サーバによって利用される前記初期認可グラント、前記公開鍵、前記ネイティブ・アプリケーションの信頼性の前記証明書、前記リフレッシュ・トークン、および前記リフレッシュ・トークンの前記デジタル署名を含む、格納されたブロックチェーンをブロックチェーン・アーキテクチャに格納することと、
前記ブロックチェーン・アーキテクチャから前記格納されたブロックチェーンを取り出すことと、
前記認証サーバによって、前記格納されたブロックチェーンからの前記初期認可グラント、前記公開鍵、前記ネイティブ・アプリケーションの信頼性の前記証明書、前記リフレッシュ・トークン、および前記リフレッシュ・トークンの前記デジタル署名を使用することによって、第2の新しいアクセス・トークンおよび第2の新しいリフレッシュ・トークンを生成することと、
1つまたは複数のプロセッサによって、前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンが、前記第2の新しいアクセス・トークンおよび前記第2の新しいリフレッシュ・トークンに一致するということを決定するために、前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンを、前記第2の新しいアクセス・トークンおよび前記第2の新しいリフレッシュ・トークンと比較することと、
前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンが前記第2の新しいアクセス・トークンおよび前記第2の新しいリフレッシュ・トークンに一致するということの決定に応答して、1つまたは複数のプロセッサによって、前記認可サーバによって生成された前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンが前記認可サーバから前記ネイティブ・アプリケーションに送信されることを認可することと
をさらに含む、請求項1に記載の方法。
【請求項11】
前記新しいアクセス・トークンは第1の新しいアクセス・トークンであり、前記新しいリフレッシュ・トークンは第1の新しいリフレッシュ・トークンであり、前記方法は、
前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンを生成するために前記認証サーバによって利用される前記初期認可グラント、前記公開鍵、前記ネイティブ・アプリケーションの信頼性の前記証明書、前記リフレッシュ・トークン、および前記リフレッシュ・トークンの前記デジタル署名を含む格納されたブロックチェーンをブロックチェーン・アーキテクチャに格納することと、
前記ブロックチェーン・アーキテクチャから前記格納されたブロックチェーンを取り出すことと、
前記認証サーバによって、前記格納されたブロックチェーンからの前記初期認可グラント、前記公開鍵、前記ネイティブ・アプリケーションの信頼性の前記証明書、前記リフレッシュ・トークン、および前記リフレッシュ・トークンの前記デジタル署名を使用することによって、第2の新しいアクセス・トークンおよび第2の新しいリフレッシュ・トークンを生成することと、
1つまたは複数のプロセッサによって、前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンが、前記第2の新しいアクセス・トークンおよび前記第2の新しいリフレッシュ・トークンに一致しないということを決定するために、前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンを、前記第2の新しいアクセス・トークンおよび前記第2の新しいリフレッシュ・トークンと比較することと、
前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンが前記第2の新しいアクセス・トークンおよび前記第2の新しいリフレッシュ・トークンに一致しないということの決定に応答して、1つまたは複数のプロセッサによって、前記認可サーバから前記ネイティブ・アプリケーションへの前記認可サーバによって生成された前記第1の新しいアクセス・トークンおよび前記第1の新しいリフレッシュ・トークンの送信を阻止することと
をさらに含む、請求項1に記載の方法。
【請求項12】
方法を実行するためにプロセッサによって読み取
られかつ実行される
プログラム・コードを含むコンピュータ・プログラムであって、前記方法は、
デバイス上のネイティブ・アプリケーションから、初期認可グラント、前記デバイス上で生成された秘密鍵/公開鍵ペアの公開鍵、および前記ネイティブ・アプリケーションの信頼性の証明書を受信することと、
前記デバイス上の前記ネイティブ・アプリケーションから、リフレッシュ・トークン、および前記秘密鍵を使用して作成された前記リフレッシュ・トークンのデジタル署名を受信することであって、前記認可サーバが、あらかじめ登録されている前記公開鍵を使用して前記リフレッシュ・トークンが検証された場合にのみ、前記リフレッシュ・トークンを認識する、前記受信することと、
前記リフレッシュ・トークンの前記デジタル署名の妥当性を確認することと、
前記デバイス上の前記ネイティブ・アプリケーションからの前記リフレッシュ・トークンの妥当性を確認することに応答して、新しいアクセス・トークンおよび新しいリフレッシュ・トークンを前記認可サーバから前記デバイス上の前記ネイティブ・アプリケーションに送信することであって、前記新しいアクセス・トークンが、前記デバイス上の前記ネイティブ・アプリケーション
に前記コンピュータ・リソース
へアクセス
させる、前記送信することと
を含む、コンピュータ・プログラム。
【請求項13】
前記プログラム・コードはクラウド環境内のサービスとして提供される、請求項12に記載のコンピュータ・プログラム。
【請求項14】
請求項12に記載のコンピュータ・プログラムを記録した、コンピュータ可読ストレージ媒体。
【請求項15】
1つまたは複数のプロセッサと、1つまたは複数のコンピュータ可読メモリと、1つまたは複数のコンピュータ可読非一過性ストレージ媒体とを備えているコンピュータ・システムであって、プログラム命令は、前記1つまたは複数のコンピュータ可読メモリのうちの少なくとも1つを介して、前記1つまたは複数のプロセッサのうちの少なくとも1つによって実行するために、前記1つまたは複数のコンピュータ可読非一過性ストレージ媒体のうちの少なくとも1つに格納され、前記格納されたプログラム命令は、
デバイス上のネイティブ・アプリケーションから、初期認可グラント、前記デバイス上で生成された秘密鍵/公開鍵ペアの公開鍵、および前記ネイティブ・アプリケーションの信頼性の証明書を受信することと、
前記デバイス上の前記ネイティブ・アプリケーションから、リフレッシュ・トークン、および前記秘密鍵を使用して作成された前記リフレッシュ・トークンのデジタル署名を受信することであって、前記認可サーバが、あらかじめ登録されている前記公開鍵を用いて前記リフレッシュ・トークンが検証された場合にのみ、前記リフレッシュ・トークンを認識する、前記受信することと、
前記リフレッシュ・トークンの前記デジタル署名の妥当性を確認することと、
前記デバイス上の前記ネイティブ・アプリケーションからの前記リフレッシュ・トークンの妥当性を確認することに応答して、新しいアクセス・トークンおよび新しいリフレッシュ・トークンを前記認可サーバから前記デバイス上の前記ネイティブ・アプリケーションに送信することであって、前記新しいアクセス・トークンが、前記デバイス上の前記ネイティブ・アプリケーション
に前記コンピュータ・リソース
へアクセス
させる、前記送信することと
を含む方法を実施するように実行される、コンピュータ・システム。
【請求項16】
前記格納されたプログラム命令はクラウド環境内のサービスとして提供される、請求項
15に記載のコンピュータ・システム。
【国際調査報告】