(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-10
(45)【発行日】2022-06-20
(54)【発明の名称】アプリケーション間でユーザ情報を安全に転送すること
(51)【国際特許分類】
H04L 9/08 20060101AFI20220613BHJP
【FI】
H04L9/08 B
H04L9/08 F
【外国語出願】
(21)【出願番号】P 2018011494
(22)【出願日】2018-01-26
【審査請求日】2021-01-12
(32)【優先日】2017-01-26
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】504375237
【氏名又は名称】アマゾン テクノロジーズ インコーポレイテッド
【氏名又は名称原語表記】Amazon Technologies, Inc.
【住所又は居所原語表記】410 Terry Ave N,Seattle,WA 98109,U.S.A.
(74)【代理人】
【識別番号】100099623
【氏名又は名称】奥山 尚一
(74)【代理人】
【識別番号】100125380
【氏名又は名称】中村 綾子
(74)【代理人】
【識別番号】100142996
【氏名又は名称】森本 聡二
(74)【代理人】
【識別番号】100166268
【氏名又は名称】田中 祐
(74)【代理人】
【識別番号】100180231
【氏名又は名称】水島 亜希子
(74)【代理人】
【識別番号】100096769
【氏名又は名称】有原 幸一
(72)【発明者】
【氏名】トーマス・マイケル・リーヴィ
(72)【発明者】
【氏名】クリストファー・エイ・ハウエル
【審査官】松平 英
(56)【参考文献】
【文献】米国特許出願公開第2016/0072785(US,A1)
【文献】米国特許出願公開第2015/0052359(US,A1)
【文献】特開平11-202765(JP,A)
【文献】特表2009-515393(JP,A)
【文献】特開2005-208841(JP,A)
【文献】特開2007-52633(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/14
21/00-21/88
G09C 1/00-5/00
H04K 1/00-3/00
H04L 9/00-9/40
(57)【特許請求の範囲】
【請求項1】
登録プロセス中に、ルート秘密鍵とリモート記憶ルート鍵とノード記憶ルート鍵とエスクロー鍵とを導出し、
前記ルート秘密鍵と前記リモート記憶ルート鍵と前記ノード記憶ルート鍵とを前記エスクロー鍵で暗号化し、
パスワードベース鍵を導出し、
前記エスクロー鍵を前記パスワードベース鍵で暗号化し、
前記暗号化されたルート秘密鍵と前記暗号化されたリモート記憶ルート鍵と前記暗号化されたノード記憶ルート鍵とを含む鍵エスクローバンドルを作成し、
前記鍵エスクローバンドルを第1のサーバに送信する
ように構成されるプロセッサと、
前記プロセッサに接続され、該プロセッサに命令を与えるように構成されるメモリと
を備えてなる、システム。
【請求項2】
前記暗号化されたエスクロー鍵は、前記サーバに送信される前記鍵エスクローバンドルに含まれるものである、請求項1に記載のシステム。
【請求項3】
前記登録プロセスは、ユーザ登録プロセスである、請求項1に記載のシステム。
【請求項4】
前記プロセッサは、
パスワードベース鍵導出関数を用いて前記パスワードベース鍵を導出するように構成される、請求項1に記載のシステム。
【請求項5】
前記プロセッサは、
ルートユーザ識別子とルート識別鍵対とを導出するように構成される、請求項1に記載のシステム。
【請求項6】
前記プロセッサは、
前記ルートユーザ識別子と前記ルート識別鍵対からのルート公開鍵とを前記第1のサーバに送信するように構成される、請求項5に記載のシステム。
【請求項7】
第1のデバイスにおいて、登録プロセス中に、ルート秘密鍵とリモート記憶ルート鍵とノード記憶ルート鍵とエスクロー鍵とを導出するステップと、
前記第1のデバイスによって、前記ルート秘密鍵と前記リモート記憶ルート鍵と前記ノード記憶ルート鍵とを前記エスクロー鍵で暗号化するステップと、
前記第1のデバイスにおいて、パスワードベース鍵を導出するステップと、
前記第1のデバイスによって、前記エスクロー鍵を前記パスワードベース鍵で暗号化するステップと、
前記第1のデバイスにおいて、前記暗号化されたルート秘密鍵と前記暗号化されたリモート記憶ルート鍵と前記暗号化されたノード記憶ルート鍵とを含む鍵エスクローバンドルを作成するステップと、
前記第1のデバイスによって、前記鍵エスクローバンドルを第1のサーバに送信するステップと
を含んでなる方法。
【請求項8】
前記暗号化されたエスクロー鍵は、前記サーバに送信される前記鍵エスクローバンドルに含まれるものである、請求項7に記載の方法。
【請求項9】
前記登録プロセスは、ユーザ登録プロセスである、請求項7に記載の方法。
【請求項10】
パスワードベース鍵導出関数を用いて前記パスワードベース鍵を導出するステップを更に含む、請求項7に記載の方法。
【請求項11】
前記第1のデバイスによって、ルートユーザ識別子とルート識別鍵対とを導出するステップを更に含む、請求項7に記載の方法。
【請求項12】
前記第1のデバイスによって、前記ルートユーザ識別子と前記ルート識別鍵対からのルート公開鍵とを前記第1のサーバに送信するステップを更に含む、請求項11に記載の方法。
【請求項13】
少なくとも1つのプロセッサによって実行されると、
登録プロセス中に、ルート秘密鍵とリモート記憶ルート鍵とノード記憶ルート鍵とエスクロー鍵とを導出させ、
前記ルート秘密鍵と前記リモート記憶ルート鍵と前記ノード記憶ルート鍵とを前記エスクロー鍵で暗号化させ、
パスワードベース鍵を導出させ、
前記エスクロー鍵を前記パスワードベース鍵で暗号化させ、
前記暗号化されたルート秘密鍵と前記暗号化されたリモート記憶ルート鍵と前記暗号化されたノード記憶ルート鍵とを含む鍵エスクローバンドルを作成させ、
前記鍵エスクローバンドルを第1のサーバに送信させる
命令を含む、非一時的なコンピュータ可読媒体。
【請求項14】
前記暗号化されたエスクロー鍵は、前記サーバに送信される前記鍵エスクローバンドルに含まれるものである、請求項13に記載の非一時的なコンピュータ可読媒体。
【請求項15】
前記登録プロセスは、ユーザ登録プロセスである、請求項13に記載の非一時的なコンピュータ可読媒体。
【請求項16】
パスワードベース鍵導出関数を用いて前記パスワードベース鍵を導出するための命令を含む、請求項13に記載の非一時的なコンピュータ可読媒体。
【請求項17】
ルートユーザ識別子とルート識別鍵対とを導出するための命令を含む、請求項13に記載の非一時的なコンピュータ可読媒体。
【請求項18】
前記ルートユーザ識別子と前記ルート識別鍵対からのルート公開鍵とを前記第1のサーバに送信するための命令を含む、請求項17に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本出願は2017年1月26日に出願された「Secure Communication Protocol」と題する米国仮特許出願第62/450,968号の優先権を主張し、その全体が引用することにより本明細書の一部をなすものとする。また、本出願は、「Secure Configuration of an Application」と題する米国特許出願第 号に関連し、その全体を引用することにより本明細書の一部をなすものとする。
【背景技術】
【0002】
友人、家族、同僚、クライアント及び顧客と常に接続しておくために、ユーザは、複数のデバイス上に、メッセージングアプリケーション及び通話アプリケーション等の通信アプリケーションをインストールしている。これらの通信アプリケーションの幾つかによれば、ユーザは暗号化された通信を交換できるようになる。これらの通信アプリケーションに関する登録プロセスの一部として、アプリケーションは、ユーザに特有の秘密鍵を導出する場合がある。これらの秘密鍵は、エンドユーザだけが知っておくべきであり、信頼のルート(root of trust)を確立するために使用される場合がある。これに関して、通信アプリケーションの任意の後続のインストールによって、最初のインストールから任意の後続のインストールへの秘密鍵の転送中にセキュリティが損なわれるおそれがある。すなわち、秘密鍵が悪意のあるユーザによって取得されてしまったなら、悪意のあるユーザが正規のユーザに成りすまし、通信アプリケーションの自らのインスタンスを作成できることになる。これにより、悪意のあるユーザが、正規のユーザに代わってメッセージを送信できるようになり、及び/又は正規のユーザの会話を盗み聞きできるようになる。したがって、正規のユーザが、セキュア通信アプリケーションの最初のインストールからセキュア通信アプリケーションの後続のインストールに、自らの秘密鍵を安全に転送できるようにすることが当該技術分野において必要とされている。
【発明の概要】
【0003】
本出願は、プロセッサと、命令を含むメモリとを含むシステムを記述する。プロセッサは、ルートユーザ識別子、ルート識別鍵対、ルート秘密鍵、リモート記憶ルート鍵、ノード記憶ルート鍵及びエスクロー鍵を導出することを含む登録プロセスを実行するように構成される。プロセッサは、ルート秘密鍵、リモート記憶ルート鍵及びノード記憶ルート鍵をエスクロー鍵で暗号化する。エスクロー鍵は、そして、パスワードベース鍵導出関数に従って導出されたパスワードベース鍵で暗号化される。そして、プロセッサは、暗号化されたルート秘密鍵、暗号化されたリモート記憶ルート鍵及び暗号化されたノード記憶ルート鍵を含む鍵エスクローバンドルを作成し、ルートユーザ識別子、ルート公開鍵及び鍵エスクローバンドルをサーバに送信する。幾つかの例において、暗号化されたエスクロー鍵は、サーバに送信される鍵エスクローバンドル内に含まれる。
【0004】
本出願の別の例によれば、方法は、ルートユーザ識別子と、ルート識別鍵対と、ルート秘密鍵と、リモート記憶ルート鍵と、ノード記憶ルート鍵と、エスクロー鍵とを導出することを含む登録プロセスを実行することを含む。その方法は、ルート秘密鍵とリモート記憶ルート鍵とノード記憶ルート鍵とをエスクロー鍵で暗号化し、そして、パスワードベース鍵導出関数に従って導出されたパスワードベース鍵でエスクロー鍵を暗号化する。その方法は、暗号化されたルート秘密鍵と暗号化されたリモート記憶ルート鍵と暗号化されたノード記憶ルート鍵とを含む鍵エスクローバンドルを作成し、ルートユーザ識別子とルート公開鍵と鍵エスクローバンドルとをサーバに送信する。
【0005】
本開示の別の例は、登録プロセスを実行するための命令を含む非一時的コンピュータ可読媒体を含む。登録の一部として、ルートユーザ識別子と、ルート識別鍵対と、ルート秘密鍵と、リモート記憶ルート鍵と、ノード記憶ルート鍵と、エスクロー鍵とが導出される。ルート秘密鍵とリモート記憶ルート鍵とノード記憶ルート鍵とがエスクロー鍵を用いて暗号化される。エスクロー鍵は、その後、パスワードベース鍵導出関数に従って導出されたパスワードベース鍵で暗号化される。鍵が暗号化された後に、鍵エスクローバンドルが作成され、第1のサーバに送信される。
【0006】
更に別の例によれば、本開示は、プロセッサ及びメモリを含むシステムを記述する。プロセッサは、サーバから、暗号化された鍵エスクローバンドルを検索するように構成される。これに関して、プロセッサは、サーバから、暗号化された鍵エスクローバンドルを要求し、その後に受信する。鍵エスクローバンドルは、ルート秘密鍵、リモート記憶ルート鍵、ノード記憶ルート鍵及びエスクロー鍵のうちの少なくとも1つを含む。次に、プロセッサはエスクロー鍵を取得し、エスクロー鍵を用いて、サーバから受信された暗号化された鍵エスクローバンドルを解読する。それに応じて、プロセッサは、解読された鍵エスクローバンドル内に含まれる情報を用いて、デバイス上でセキュア通信アプリケーションを使えるように設定する。幾つかの例において、暗号化された鍵エスクローバンドルは、異なるデバイスによって、サーバにアップロードされる。
【0007】
本開示の別の例は、サーバから、暗号化された鍵エスクローバンドルを検索するための方法を記述する。その方法は、クライアントデバイスから、サーバに送信されている鍵エスクローバンドルを要求することから開始する。クライアントデバイスは、暗号化された鍵エスクローバンドルをサーバから受信し、エスクロー鍵を取得し、エスクロー鍵を用いて、サーバから受信された暗号化された鍵エスクローバンドルを解読する。解読された鍵エスクローバンドルから、ルート秘密鍵とリモート記憶ノード鍵とノード記憶ルート鍵とが検索される。ルート秘密鍵とリモート記憶ノード鍵とノード記憶ルート鍵とを用いて、セカンダリデバイス上でセキュア通信アプリケーションが構成される。
【0008】
本開示によって例示される別の実施形態は、暗号化された鍵エスクローバンドルをサーバから検索するための命令を含む非一時的コンピュータ可読媒体を含む。その命令は、クライアントデバイスからサーバに鍵エスクローバンドル要求を送信する。その要求に応答して、クライアントデバイスは、サーバから暗号化された鍵エスクローバンドルを受信する。その命令は、エスクロー鍵を取得することを含み、エスクロー鍵を用いて、サーバから受信された暗号化された鍵エスクローバンドルを解読する。解読された鍵エスクローバンドルから、ルート秘密鍵とリモート記憶ノード鍵とノード記憶ルート鍵とが取得され、セカンダリデバイスを構成するために使用される。
【0009】
本発明の種々の実施形態は、以下の詳細な説明及び添付の図面に開示される。
【図面の簡単な説明】
【0010】
【
図1】セキュア通信が交換される環境の一例を示す図である。
【
図2】セキュアコラボレーションアプリケーションを用いて、暗号化された通信を送信及び受信するクライアントデバイスを示す図である。
【
図3】セキュア通信プラットフォームでユーザが登録するための例示的なプロセスを示す図である。
【
図4】鍵エスクローバンドルを作成し、鍵エスクローバンドルをサーバ上に記憶するための例示的なプロセスを示す図である。
【
図5】セキュア通信プラットフォームでデバイスを登録するための一例を示す図である。
【
図6】鍵合意プロトコルの一部として短期鍵のプールを生成するためのプロセスの一例を示す図である。
【
図7】セカンダリデバイスを使えるように設定するためのプロセスの一例を示す図である。
【
図8A】本開示の一実施形態による、暗号化された通信を送信するためのプロセスを示す図である。
【
図8B】本開示の一実施形態による、暗号化された通信を送信するためのプロセスを示す図である。
【
図8C】本開示の一実施形態による、暗号化された通信を送信するためのプロセスを示す図である。
【
図9A】本開示の一実施形態による、暗号化された通信を受信し、解読するためのプロセスを示す図である。
【
図9B】本開示の一実施形態による、暗号化された通信を受信し、解読するためのプロセスを示す図である。
【
図10】第1のユーザと第2のユーザとの間の終端間暗号化通信のためのモバイルインターフェースの一例を示す図である。
【
図11】2つのユーザ間の終端間暗号化通信のためのインターフェースの説明のための例を示す図である。
【発明を実施するための形態】
【0011】
本開示は、複数のデバイス上でセキュア通信アプリケーションの複数のインスタンスを使えるように設定するためのシステム及び方法を記述する。セキュア通信アプリケーションの複数のインスタンスが使えるように設定されると、ユーザは、それら全てのデバイスにわたって、暗号化された通信を送信及び受信することができる。
【0012】
本開示は、プロセス、装置、システム、組成物、非一時的コンピュータ可読記憶媒体上に具現されるコンピュータプログラム製品、及び/又はプロセッサに結合されるメモリに記憶され、及び/又はプロセッサに結合されるメモリによって与えられる命令を実行するように構成されるプロセッサ等のプロセッサを含む、種々の方法で実現することができる。これらの実施態様、又は本開示がとる場合がある任意の他の形態が、技法と呼ばれる場合がある。一般に、開示されるプロセスのステップの順序は、本開示の範囲内で変更される場合がある。他に明示されない限り、タスクを実行するように構成されるものとして説明されるプロセッサ又はメモリ等の構成要素は、所与の時点においてそのタスクを実行するように一時的に構成される汎用構成要素として、又はそのタスクを実行するために製造される専用の構成要素として実現される場合がある。本明細書において使用されるときに、「プロセッサ」という用語は、コンピュータプログラム命令等のデータを処理するように構成される1つ以上のデバイス、回路及び/又は処理コアを指している。
【0013】
本開示の1つ以上の実施形態の詳細な説明が、本開示の原理を例示する添付の図面とともに以下に与えられる。本開示は、そのような実施形態に関連して説明されるが、本開示はいかなる実施形態にも限定されない。本開示の範囲は、特許請求の範囲によってのみ限定され、本開示は、数多くの代替形態、変更形態及び均等形態を含む。本開示を完全に理解してもらうために、以下の説明において数多くの具体的な細部が記述される。これらの細部は、例示する目的で与えられており、本開示は、これらの具体的な細部のうちの幾つか又は全てを用いることなく、特許請求の範囲に従って実施することができる。明確にするために、本開示に関連する技術分野において既知である技術資料は、本開示を無用に不明瞭にしないように、詳細には説明されない。
【0014】
図1は、セキュア通信が交換される環境の一実施形態を示す。具体的には、
図1は、ネットワーク112を介して、サーバ100上に位置するセキュア通信プラットフォーム120に接続される第1のクライアントデバイス116及び第2のクライアントデバイス118を示す。
【0015】
通常、セキュア通信は、送信者のメッセージをカプセル化するセキュアメッセージデータグラムを用いて交換される。また、そのデータグラムによって、暗号化情報、ハードウェアバインディング情報、メッセージセキュリティ制御、及び解読情報等の情報が、(適用可能なだけ)複数の受信者に対して、そのメッセージとともに安全に移動できるようになる。また、セキュアメッセージデータグラムは、自らのオペレーティングシステム(例えば、Linux(登録商標)、iOS及びWindows)、スマートフォンプラットフォーム(例えば、iPhone(登録商標)、Android、Windows、Blackberry等)及びデバイスタイプ(例えば、モバイルスマートフォン、タブレット、ラップトップ、デスクトップ等)にかかわらず、ユーザが通信することができるように、クロスプラットフォームサポートを提供する。本明細書において説明される技法を使用するとき、意図したデバイス上の意図したアカウントのみが、そのメッセージを解読することができる。したがって、例えば、セキュア通信プラットフォーム120は、メッセージを解読することができない。後に更に詳細に説明されるように、本明細書において説明される技法を使用するとき、メッセージ参加者は、同期して通信する(例えば、全ての参加者がオンライン状態にあるか、又は別の方法でプラットフォーム120と通信することができる)にしても、非同期で通信する(例えば、少なくとも1人の参加者がオフライン状態にあるか、又は別の状況でプラットフォーム120と通信していない)にしても、フォワード秘密セキュア通信チャネル(forward secret secure communication channel)を保持することができる。
【0016】
図1に示されるように、セキュア通信プラットフォーム120は、サーバ100上に実現することができる。サーバ100は、プロセッサ102と、メモリ104と、ユーザディレクトリ106と、セキュア通信プラットフォーム120とを含みうる。これに関して、サーバ100は、スタンドアローンサーバ、企業サーバ、又はサーバファーム若しくはクラウドコンピューティング環境内に位置するサーバでありうる。幾つかの実施形態において、サーバ100は、ソフトウェア・アズ・ア・サービス(SaaS:Software as a Service)として企業にセキュア通信プラットフォーム120を提供するように構成されるバーチャルマシンを運用するクラウドサービスプロバイダでありうる。
【0017】
プロセッサ102は、メモリ104、ユーザディレクトリ106及びセキュア通信プラットフォーム120とインタラクトすることができる任意の従来のプロセッサでありうる。これに関して、プロセッサ102は、プロセッサ、マルチプロセッサ、マルチコアプロセッサ、又はその任意の組み合わせを含みうる。代わりに、プロセッサ102は、特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)等の専用コントローラでありうる。
【0018】
メモリ104は、プロセッサ102によって実行される場合があるか、又は別の方法で使用される場合がある命令及びデータを含む、プロセッサ102によってアクセス可能な情報を記憶する。メモリ104は、ハードドライブ、固体ドライブ、メモリカード、フラッシュドライブ、ROM、RAM、DVD又は他の光ディスク、及び他の書込み可能や読出し専用メモリ等の、電子デバイスの助けを借りて読み出すことができるデータを記憶する非一時的コンピュータ可読媒体又は任意の他の適切な媒体を含む、プロセッサによってアクセス可能な情報を記憶することができる任意のタイプの媒体でありうる。メモリ104は、短期的又は一時的な記憶装置及び長期的又は持続的な記憶装置を含みうる。幾つかの実施形態によれば、メモリ104は、セキュア通信プラットフォーム120によってアクセス可能なストレージエリアネットワーク(SAN)を含みうる。
【0019】
ユーザディレクトリ106は、ディレクトリサービスを提供することができる任意のデータベース又はテーブルでありうる。例えば、ユーザディレクトリは、従業員の氏名、ユーザ名、電子メールアドレス、電話番号、部署情報等を含む企業ディレクトリを含みうる。代わりに、ユーザディレクトリ106は、セキュア通信プラットフォーム120のユーザのユーザ情報を維持管理するデータベース又はテーブルでありうる。これに関して、ユーザディレクトリ106は、暗号化される場合がある。幾つかの実施形態において、ユーザディレクトリ106は、ハッシュ化されたユーザ名のテーブル、appIDのテーブル及びセキュア通信アプリケーションのためのデバイスIDのテーブルを含むセキュアディレクトリとしての役割を果たすことができる。したがって、ユーザディレクトリ106を用いて、ユーザ、システム、ネットワーク、サービス及びアプリケーションについての情報を共有することができる。幾つかの実施形態によれば、ユーザディレクトリ106は、ライトウェイトディレクトリアクセスプロトコル(LDAP)を含みうる。
【0020】
図1は、プロセッサ102、メモリ104、ユーザディレクトリ106及びセキュア通信アプリケーション120をサーバ100上に位置するものとして示すが、プロセッサ102及びメモリ104は、複数のプロセッサ及びメモリを含む場合があり、それらは物理的に同じハウジング内に収容される場合があるか、又は物理的に同じハウジング内に収容されない場合がある。例えば、メモリ104は、ストレージエリアネットワーク(SAN)等の、データセンターのサーバファーム内に位置するハードドライブ又は他の記憶媒体でありうる。したがって、プロセッサ、コンピュータ又はメモリを参照することは、並列に動作する場合があるか、又は並列に動作しない場合があるプロセッサ又はコンピュータ又はメモリの集合を参照することを含むことは理解されるであろう。さらに、ユーザディレクトリ106は、処理エンジン102及びメモリ104とは物理的に別のハウジング内に位置することができる。さらに、セキュア通信プラットフォーム120は、複数のサーバにわたって分散する場合がある。
【0021】
セキュア通信プラットフォーム120は、セキュア通信アプリケーションのユーザのための通信の交換を助長するように構成することができる。本明細書において使用されるときに、「通信」及び「メッセージ」は、テキストメッセージ、チャットルームメッセージ、制御メッセージ、コマンド、電子メール、ドキュメント、オーディオビジュアルファイル、ショートメッセージサービスメッセージ(SMS)、音声通話(すなわち、VOIP)及びビデオ通話を含む、様々な形態をとることができる。さらに、メッセージ及び/又は通信のコンテンツは、クレジットカードセキュリティ、パスワード保護、ディレクトリ及びストレージドライブ保護、ビデオオンデマンドセキュリティ、オンラインゲーム、ギャンブル、音楽電子配信、ビデオ、ドキュメント、オンライン学習システム、データベース、クラウドストレージ及びクラウド環境、銀行取引、投票処理、軍事通信、医療記録セキュリティ、医療用移植デバイスと医者との間の通信等の電子トランザクションに関連する場合がある。メッセージ及び/又は通信の交換は、後に更に詳細に説明される。
【0022】
セキュア通信プラットフォーム120は、規格に準拠し、安全な通信を提供しながら、安全な既存のシステムに容易に統合される暗号化通信を提供することができる。これに関して、セキュア通信プラットフォーム120は、ユーザディレクトリ106等の、既存の識別システムと統合することができる。さらに、セキュア通信プラットフォーム120は、企業データ保持及びサポートシステムのためのビルトインサポートを含みうる。
【0023】
また、セキュア通信プラットフォーム120は、データベース130も含みうる。データベース130は、様々なテーブル内に情報を記憶するリレーショナルデータベースでありうる。これに関して、データベース130は、ユーザが他のユーザを見つけ、他のユーザと通信できるようにするために、プラットフォーム120のユーザごとの記録を含みうる。したがって、データベース130は、ユーザの鍵エスクローバンドルを含む、ルート識別子132のテーブル、ノード識別子134のテーブル、短期鍵136のプール、ユーザプロファイル情報138のテーブルを含みうる。さらに、ユーザプロファイル情報は、ユーザが通信することができる相手を管理するために、プライバシーモード及びプライバシーリストエントリを記憶することができる。さらに、データベース130は、通信140のテーブルを含みうる。すなわち、セキュア通信プラットフォームは、テーブル140内に所定の時間にわたって通信を記憶することができる。例えば、通信が受信されるとき、セキュア通信プラットフォームは、通信140のテーブル内に通信を記憶し、受信者に、プッシュ通知等のアラートを与えることができる。それに応じて、受信者は、テーブル140内に記憶された自分の通信を取得するために、セキュア通信プラットフォームにアクセスすることができる。好ましい実施形態において、テーブル140は、30日間、通信を記憶することができる。しかしながら、これは、業界標準規格に基づいて、及び/又は規制方針に準拠するために、必要に応じて調整することができる。
【0024】
図1にはデータベースが示されるが、暗号化通信の交換を容易にするために、他の技法を用いて、プラットフォーム120によって使用される情報を記憶することができる。例えば、通信のテーブルは、データベース130内に記憶する代わりに、メモリ104等の別の記憶装置内に記憶することができる。代わりに、データベース130内に含まれる情報は、データベース130とユーザディレクトリ106との間で分割することができる。これに関して、データベース130及びユーザディレクトリ106は、情報を交換するためのインターフェースを有することがある。さらに、データベース130内であるか、別の適切な場所であるかにかかわらず、プラットフォーム120上に更なる情報を安全に記憶することができる。
【0025】
セキュア通信プラットフォーム120は、第1のクライアントデバイス116及び第2のクライアントデバイス118と通信するための1つ以上のインターフェース122を含みうる。一例として、プラットフォーム120は、クライアントデバイス上にインストールされたアプリケーションと通信するように構成されるアプリケーションプログラミングインターフェース(API)を提供することができる。また、プラットフォーム120は、ウェブインターフェース、又は種々のオペレーティングシステム(OS)上で実行される、デスクトップ及びラップトップ用のスタンドアローンソフトウェアプログラム等の、他のタイプのインターフェースを提供することもできる。ウェブインターフェースによって、クライアントデバイスのユーザは、別個にインストールされる通信アプリケーションを必要とすることなく、(互いとの通信、又は他のユーザとの通信にかかわらず)通信を安全に交換できるようになる場合がある。スタンドアローンソフトウェアプログラムによって、ユーザは、各ユーザによってダウンロードされたソフトウェアを介して、セキュア通信を交換できるようになる場合がある。幾つかの実施形態によれば、プラットフォーム120は、1つ以上のインターフェース122を介して、マスタークロック時間を利用できるようになる場合がある。マスタークロック時間は、メッセージの安全な有効生存期間(TTL:time-to-live)値を強制するためにクライアントアプリケーションによって使用される場合がある。TTL値を用いて、(例えば、受信者による)通信アクセスに関する時間制約を(例えば、メッセージ送信者に代わって)強制することができる。
【0026】
クライアントデバイス116及び118等のクライアントデバイスのユーザは、本明細書において説明される技法を用いて互いに安全に通信することができる。例えば、第1のクライアントデバイス116及び第2のクライアントデバイス118はそれぞれ、セキュア通信アプリケーション146及び148を介して、本明細書において説明されるセキュア通信プラットフォーム120及び技法を使用することができる。
図1に示されるように、クライアントデバイスは、ラップトップ、スマートフォン若しくはタブレット等のモバイルデバイス、又はデスクトップコンピュータ若しくはサーバ等のコンピューティングデバイスでありうる。上記で言及されたように、本明細書において説明されるセキュア通信アプリケーションはクロスプラットフォーム通信を可能にし、それにより、種々のデバイスのユーザがシームレスに通信できるようにする。さらに、各ユーザは、複数のデバイスにわたって通信アプリケーションの異なるインスタンスを有する場合がある。すなわち、デバイス116のユーザは、デバイス116と、ラップトップ等のセキュア通信アプリケーションのコピーを含む、ユーザが所有する場合がある任意の他のデバイスとの両方においてメッセージを受信できる場合がある。幾つかの実施形態において、クライアントデバイス116及び118は、ユーザのパーソナルデバイスでありうる(すなわち、個人所有機器持ち込み(BYOD:bring your own device)シナリオ)。代わりに、クライアントデバイスは、適用可能な場合には、ゲームコンソール、カメラ/ビデオレコーダ、ビデオプレーヤ(例えば、DVD、ブルーレイ、レッドレーザ、光学及び/又はストリーミング技術を組み込む)、スマートTV、及び他のネットワーク接続電化製品等の他のタイプのデバイスを含みうる。
【0027】
クライアントデバイス116及び118のユーザ間の通信は、ネットワーク112を介して交換することができる。ネットワーク112は、種々の構成を含むことができ、インターネット、ワールドワイドウェブ、イントラネット、仮想プライベートネットワーク、ローカルイーサネット(登録商標)ネットワーク、1つ以上の企業に所有権がある通信プロトコルを用いるプライベートネットワーク、セルラー及びワイヤレスネットワーク(例えば、WiFi)、インスタントメッセージング、HTTP及びSMTP、並びに上記の種々の組み合わせを含む、種々のプロトコルを使用することができる。
【0028】
後に更に詳細に説明されるように、プロセッサ102は、セキュア通信プラットフォーム120の代わりに複数のタスクを実行することができる。さらに、プラットフォーム120がタスクを実行すると説明されるときにはいつでも、プラットフォーム120又は企業サーバ100の単一の構成要素、又は構成要素のサブセット、又は全ての構成要素が協調して、タスクを実行する場合がある。例えば、プラットフォーム120は、デバイスのユーザから受信されたECDH公開鍵のプール内の鍵のうちの1つを「予約」鍵と指定することができる。プラットフォーム120によって実行される別のタスクは、新たな鍵が使用されるときに、それらの鍵をユーザの公開鍵のプールに追加するのを容易にすることを含みうる。プラットフォーム120によって実行される更に別のタスクは、必要に応じて、ユーザの公開鍵プールのサイズを動的に調整することを含みうる。
【0029】
上記のセキュア通信プラットフォームを使用するために、ユーザは、自らのクライアントデバイス上にセキュア通信アプリケーションをダウンロードし、インストールしなければならない。
図2は、セキュアコラボレーションアプリケーションを介してセキュリティプラットフォーム120にアクセスすることができる例示的なクライアントデバイス200を示す。これに関して、クライアントデバイス200は、バス216によって全て相互接続される、プロセッサ202と、メモリ204と、ディスプレイ206と、I/Oユニット208と、暗号(「クリプト」)アクセラレータ212と、ネットワークインターフェース214とを含む。
【0030】
プロセッサ202は、クライアントデバイス200の構成要素とインタラクトすることができる任意のプロセッサでありうる。例えば、プロセッサ202は、プロセッサ、マルチコアプロセッサ、マルチコアプロセッサ、ARMプロセッサ、ASIC若しくはFPGA等の専用コントローラ、又はその任意の組み合わせを含みうる。メモリ204は、プロセッサ202及び/又はクリプトアクセラレータ212によって実行される場合があるか、又は別の方法で使用される場合がある命令及びデータを含む、プロセッサ202によってアクセス可能な情報を記憶することができる。例えば、メモリ204は、アプリケーション224等の命令を記憶することができる。好ましい実施形態において、アプリケーション224は、音声通話及びビデオ通話に参加し、暗号化されたコンテンツを共有し、暗号化された通信を交換する能力をユーザに提供するセキュアコラボレーションアプリケーションでありうる。暗号化された通信は、直接通信(例えば、送信者と受信者との間の一対一通信)、グループチャット、又はセキュアチャットルーム通信を含みうる。メモリ204によって記憶されるデータは、データベース234を含みうる。データベース234は、拡張暗号化規格(AES:Advanced Encryption Standard)等の暗号化アルゴリズムと、これ以降、ローカル記憶鍵と呼ばれる256ビット鍵とによって暗号化することができる。幾つかの実施形態において、データベース234は、セキュアコラボレーションアプリケーション224に関連する情報を記憶することができる。例えば、データベース234は、鍵情報、ユーザ情報、友人情報及び通信等の、セキュアコラボレーションアプリケーションに関連する情報をインデックス化することができる。これに関して、メッセージ識別子、送信者のユーザ名のハッシュ、送信者のアプリケーション識別子のハッシュ、受信者のユーザ名のハッシュ、受信者のアプリケーション識別子のハッシュ、通信暗号鍵、及び各通信のタイムスタンプを含む、セキュアコラボレーションアプリケーションによって送信及び受信される通信が、データベース234に記憶される場合がある。したがって、メモリ204は、ハードドライブ、固体ドライブ、メモリカード、フラッシュドライブ、ROM、RAM、DVD又は他の光ディスク、並びに他の書込み可能及び読出し専用メモリ等の、電子デバイスの助けを借りて読み出すことができるデータを記憶する非一時的コンピュータ可読媒体又は任意の他の適切な媒体を含む、上記の情報を記憶することができる任意のタイプの媒体でありうる。さらに、メモリ204は、短期的又は一時的な記憶装置及び長期的又は持続的な記憶装置を含みうる。
【0031】
ディスプレイ206は、情報を視覚的に提示することができる任意の電子デバイスでありうる。スマートフォン及びタブレット等のモバイルデバイスにおいて、ディスプレイ206は、タッチスクリーンディスプレイでありうる。したがって、ディスプレイ206は、ユーザ入力を検出し、データを出力するI/Oユニット208と一体化することができる。コンピューティングデバイスにおいて、ディスプレイ206は、モニタに接続するように構成される、VGA、DVI又はHDMI(登録商標)出力等の出力とすることができる。I/Oユニット208は、ユーザから入力を受信できる場合がある。上記で言及されたように、I/Oユニット208は、ユーザから入力を受信するために、タッチスクリーンディスプレイと協働することができる。代わりに、I/Oユニットは、キーボード、マウス、モニタ、プリンタ等の入力デバイス及び出力デバイスとインタラクトすることができるインターフェースでありうる。さらに、I/Oユニット208は、デバイスの向き及び環境要因を判断するために、少なくとも1つの加速度計、グローバルポジショニング衛星(GPS)システム、磁力計、近接センサ、周囲光センサ、湿度センサ、ジャイロスコープ等を含みうる。
【0032】
クリプトアクセラレータ212は、鍵生成、乱数発生、暗号化/解読、署名生成、署名検証等の暗号演算を実行することができる、専用ハードウェア、ソフトウェア又はその任意の組み合わせとすることができる。好ましい実施形態において、クリプトアクセラレータ212は、プロセッサ202の代わりに暗号演算を実行するように構成される専用プロセッサである。これに関して、アプリケーション224は、クリプトアクセラレータ212を使用して、後に更に詳細に説明されるセキュア通信機能を提供することができる。
【0033】
ネットワークインターフェース214は、クライアントデバイス200をネットワーク112に接続することができる専用ハードウェア、ソフトウェア又はその任意の組み合わせとすることができる。これに関して、ネットワークインターフェース214は、種々の構成を含み、イーサネット、TCP/IP、ATM、セルラー及びワイヤレス通信プロトコル(例えば、802.11、LTE)、インスタントメッセージング、HTTP及びSMTP、並びに上記の種々の組み合わせを含む、種々の通信プロトコルを使用することができる。
【0034】
セキュア通信アプリケーションをインストールした後に、ユーザは、自分自身及び自らの第1のデバイスをセキュア通信プラットフォームで登録しなければならない。
図3は、セキュア通信プラットフォームでユーザが登録するためのプロセス300を示す。プロセス300は、ブロック310において、ルートユーザ識別子(ID
r)を導出することから開始する。好ましい実施形態において、ルートユーザ識別子(ID
r)は、第1のユーザがセキュア通信プラットフォームとネゴシエートするユーザ名である。代わりの例において、ルートユーザ識別子(ID
r)は、システム管理者等の第三者によって割り当てられる識別子でありうる。これらの実施形態によれば、ルートユーザ識別子(ID
r)は、企業、団体又は政府ログイン情報に関連付けられる場合がある。幾つかの例において、ルートユーザ識別子(ID
r)は、ユーザに割り当てられるランダム識別子でありうる。ランダム識別子は、セキュア通信アプリケーションによって生成され、セキュア通信プラットフォームによって確認される場合がある。代わりに、ランダム識別子は、セキュア通信プラットフォームによってユーザに割り当てられる場合がある。
【0035】
ブロック320において、セキュア通信アプリケーションが、ユーザのためのルート識別鍵対(Kr、PKr)を生成する。ルート識別鍵対は、非対称導出関数を用いて生成される長期非対称鍵対でありうる。好ましい実施形態において、ルート識別鍵対は、第1のP-521曲線を用いて、楕円曲線暗号法(ECC:elliptic curve cryptography)に従って生成される。ブロック330において、セキュア通信アプリケーションが、リモート記憶ルート鍵(Krs)を生成する。リモート記憶ルート鍵は、セキュア通信アプリケーションによってランダムに生成される対称鍵である。リモート記憶ルート鍵を用いて、セキュア通信アプリケーションのアカウントレベルバックアップを暗号化することができる。すなわち、AES-GCM等の任意の対称暗号化アルゴリズムを用いて、アカウント情報をリモート記憶ルート鍵で暗号化し、セキュア通信プラットフォーム上に記憶することができる。次に、ブロック340において、セキュア通信アプリケーションが、ノード記憶ルート鍵(Knsr)を生成する。ノード記憶ルート鍵は、ユーザのデバイス上に記憶されるデータを暗号化するためにランダムに生成され、使用される。ユーザデバイス上に記憶されるデータは、任意の対称暗号化アルゴリズム、好ましくはAES-GCMに従って暗号化することができる。ブロック350において、セキュア通信アプリケーションが、エスクロー鍵(Ke)を導出する。エスクロー鍵はランダムに生成される。後に更に詳細に説明されるように、エスクロー鍵を用いて、セキュア通信プラットフォームにアップロードされ、記憶される、ユーザを識別するために使用される複数の鍵を含むユーザ情報を暗号化する。セキュア通信アプリケーションがルート公開鍵(PKr)及びルートユーザ識別子(IDr)をセキュア通信プラットフォームに送信するとき、ブロック360においてユーザ登録が完了する。ルート公開鍵(PKr)及びルートユーザ識別子(IDr)を受信するのに応答して、セキュア通信プラットフォームは、ユーザのために、データベース130内に新たなエントリを作成する。
【0036】
ユーザが複数のデバイスを有するか、又は自らのデバイスを取り替える場合、ユーザを識別する鍵を後続のデバイスに安全に転送する必要がある。
図4は、これらの鍵をセキュア通信プラットフォームに安全にアップロードするためのプロセス400を示す。ブロック410において、ルート秘密鍵(K
r)、リモート記憶鍵(K
rs)及びノード記憶ルート鍵(K
nsr)がエスクロー鍵(K
e)で暗号化される。好ましくは、ルート秘密鍵(K
r)、リモート記憶鍵(K
rs)及びノード記憶ルート鍵(K
nsr)は、AES-GCM等の対称暗号化アルゴリズムを用いて暗号化される。ブロック420において、セキュア通信アプリケーションが、ユーザのパスワードから鍵を導出する。パスワードベース鍵は、スクリプト等のパスワードベース鍵導出関数を用いて生成される。ブロック430において、導出されたパスワードベース鍵でエスクロー鍵が暗号化される。ブロック440において、セキュア通信アプリケーションが、暗号化されたルート秘密鍵、暗号化されたリモート記憶鍵(K
rs)及び暗号化されたノード記憶ルート鍵を含む鍵エスクローバンドルを作成する。幾つかの実施形態によれば、暗号化されたエスクロー鍵は、セキュア通信アプリケーションによって生成され、セキュア通信プラットフォームにアップロードされる鍵エスクローバンドル内に含まれる場合がある。代わりに、暗号化されたエスクロー鍵は、ユーザのデバイス上に、非一時的コンピュータ可読媒体上に、又は第三者リポジトリでローカルに記憶することができる。ブロック450において、鍵エスクローバンドルが、サーバに送信される。サーバ上で、鍵エスクローバンドルは、セキュア通信プラットフォームのデータベース内に記憶され、その中で、ユーザのプロファイルに関連付けられ、ユーザからの要求時に利用可能になる。後に更に詳細に論じられるように、ユーザの鍵で後続のインストールを使えるように設定するために、セキュア通信アプリケーションの後続のインストールがサーバから鍵エスクローバンドルを要求する場合がある。より安全な実施態様では、ブロック450はスキップされる場合がある。これに関して、ユーザは、鍵エスクローバンドルを後続のインストールに転送しなければならない。これは実施するのがより難しい場合があるが、より高い度合いのセキュリティを提供することになる。
【0037】
上記で言及されたように、登録プロセスの一部が、セキュア通信プラットフォームでユーザのデバイスを登録することを含む。デバイス登録は、ユーザ登録が行われた後の第1のデバイス上を含む、新たなデバイス上でユーザがセキュア通信アプリケーションにログインする任意の時点で行われる。
図5は、セキュア通信プラットフォームでデバイスを登録するための例示的なプロセス500を示す。
【0038】
デバイス登録は、セキュア通信アプリケーションがノード識別鍵対(Kn、PKn)を生成するブロック510において開始する。ノード識別鍵対は、非対称導出関数を用いて生成される長期非対称鍵対でありうる。好ましい実施形態において、ノード識別鍵対は、第2のP-521曲線を用いて、ECCに従って生成される。ノード識別鍵対は、セキュア通信アプリケーションのインスタンスに固有である。これに関して、ユーザが幾つかのデバイス上でセキュア通信アプリケーションをインストールした場合には、各デバイスは、自らの固有のノード識別鍵対を有することになり、その一方で、ルート識別鍵対はインストールごとに同じになる。
【0039】
ブロック520において、セキュア通信アプリケーションが、ローカル記憶デバイス鍵(Klsd)を導出する。ローカル記憶デバイス鍵は、対称暗号化によって、ユーザのデバイス上にローカルに記憶されるデータを保護する。これに関して、ローカル記憶デバイス鍵は、鍵導出関数を通してノード記憶ルート鍵及びデバイスデータを合成することによって生成される。好ましい実施形態において、鍵導出関数は、根底にあるハッシュ関数としてのSHA-256を伴うHMAC鍵導出関数である。後続のインストールにおいて、セキュア通信アプリケーションは、後に更に詳細に論じられるように、セキュア通信プラットフォームから、ノード記憶ルート鍵を取得する。デバイスデータは、インストールされるハードウェア又はオペレーティングシステムソースから導出され、アプリケーションインストールにわたって固有であり、一定であるデバイス特有データ及び/又は識別子を含む。例えば、デバイスデータは、ハードドライブ識別子、マザーボード識別子、CPU識別子、及びワイヤレス、LAN、Bluetooth(登録商標)及び光カードのためのMACアドレス、構成情報、又は上記の組み合わせを含みうる。
【0040】
ブロック530において、セキュア通信アプリケーションが、ノード識別子(IDn)を生成する。ノード識別子は、SHA256を用いて擬似ランダムバイトの組をハッシュすることによって生成されるランダム識別子である。ノード識別子は、セキュア通信アプリケーション、及びそれが関連付けられるデバイスを識別するために、セキュア通信プラットフォームによって使用される。ブロック540において、セキュア通信アプリケーションが、ルート識別秘密鍵を用いて、ノード識別公開鍵の第1の署名を生成する。好ましい実施形態において、セキュア通信アプリケーションは、楕円曲線デジタル署名アルゴリズム(ECDSA)に従って、署名を生成する。ブロック550において、ノード識別子(IDn)、ノード公開鍵(PKn)及びノード識別公開鍵の第1の署名(SKr(PKn))がサーバに送信される。セキュア通信プラットフォームは、ノード識別子(IDn)、ノード公開鍵(PKn)及びノード識別公開鍵の第1の署名(SKr(PKn))をセキュア通信プラットフォーム上のユーザのプロファイル内に記憶する。
【0041】
ユーザ登録及びデバイス登録の両方が完了した後に、セキュア通信アプリケーションの各インスタンスが、非対称鍵対のプールを作成する。これらの鍵対は、鍵合意プロトコルの一部として使用され、セキュア通信アプリケーションが、暗号化された通信を受信し始めることができるようにする。セキュア通信アプリケーションが暗号化された通信を受信し始めると、非対称鍵対のプールは枯渇し、補充される必要がある。
図6は、短期非対称鍵対のプールを追加するための方法600を示す。
【0042】
ブロック610において、セキュア通信アプリケーションが、短期非対称鍵対(KEn及びPKEn)のプールを生成する。好ましい実施形態において、短期非対称鍵対は、第3のP-521曲線に従って、ECCに従って生成される。ブロック620において、固有識別子(IDken)が各鍵対(KEn及びPKEn)に割り当てられる。次に、ブロック630において、セキュア通信アプリケーションが、ノード識別秘密鍵(Kn)を用いて短期公開鍵(PKEn)ごとの署名を計算する。短期公開鍵ごとの署名は、ECDSAを含む、任意の標準的な署名生成アルゴリズムに従って生成することができる。ブロック640において、短期公開鍵(PKEn)がそれぞれ、その固有識別子及び対応する署名とともに、サーバにアップロードされる。それに応じて、サーバは短期公開鍵のプールをセキュア通信プラットフォーム上のユーザのプロファイル内に記憶する。短期秘密鍵の対応するプールは、ローカル記憶デバイス鍵で暗号化され、割り当てられたその固有識別子とともに、ユーザのデバイス上に安全に記憶される。
【0043】
上記で言及されたように、プロセス600は、ユーザの最初のユーザ登録及びデバイス登録後に最初に実行される。プロセス600は、新たなデバイス登録ごとに繰り返される。最後に、
図6に示される方法は、非対称鍵のプールが枯渇するときに必要に応じて繰り返すことができる。後に更に詳細に説明されるように、送信側セキュア通信アプリケーションが公開鍵のうちの1つを使用するとき、セキュア通信プラットフォームは、セキュア通信プラットフォーム上の入手可能な鍵のプールから公開鍵を除去する。プールが使い果たされた場合、プールを補充することができるまで、プール内の最後の鍵が再利用されることになる。
【0044】
上記で論じられたように、ユーザが、1つ以上のセカンダリデバイス上にセキュア通信アプリケーションをダウンロードし、インストールする場合がある。本明細書において説明される暗号化技法によれば、ユーザは、ユーザ及びユーザの第1のデバイスのためのユーザの初期登録中に作成されたルート識別子及び鍵を用いて、1つ以上の第2のデバイスを構成しなければならないであろう。
図7は、1つ以上のルート識別子及び鍵を用いてセカンダリデバイスを使えるように設定するためのプロセスを示す。
【0045】
セキュア通信アプリケーションをセカンダリデバイスにダウンロードした後に、ユーザはそのルート識別子(例えば、ユーザ名)及びパスフレーズを入力する。ブロック710において、セキュア通信アプリケーションが、ルート識別子及びパスフレーズを受信する。ブロック720において、セキュア通信アプリケーションが、セキュア通信プラットフォームから鍵エスクローバンドルを要求する。鍵エスクローバンドル要求は、セキュア通信プラットフォームがデータベースを探索し、鍵エスクローバンドルが存在するか否かを判断できるようにするために、ルート識別子、又は何らかの他の固有識別子を含みうる。鍵エスクローバンドルがデータベース内に存在しない場合には、セキュア通信プラットフォームは、存在しないことをセキュア通信アプリケーションに通知し、セキュア通信アプリケーションが鍵エスクローバンドルを提供することを要求する。これに関して、セキュア通信アプリケーションは上記の技法に従う。しかしながら、鍵エスクローバンドルがサーバ上に記憶される場合には、ブロック730において、セキュア通信アプリケーションが、暗号化された鍵エスクローバンドルをサーバから受信する。
【0046】
ブロック740において、セキュア通信アプリケーションが、エスクロー鍵を取得する。幾つかの例によれば、エスクロー鍵は、パスフレーズ導出鍵で暗号化され、鍵エスクローバンドルとともにセキュア通信プラットフォームに記憶される。セキュア通信アプリケーションは、受信されたパスフレーズからパスフレーズ導出鍵を導出し、セキュア通信プラットフォームから受信された暗号化された鍵エスクローバンドル内で受信された暗号化されたエスクロー鍵を解読する。他の例において、ユーザは第1のデバイスからエスクロー鍵を取得することができる。例えば、エスクロー鍵は、USBドライブを介して、第1のデバイスから第2のデバイスに転送することができる。代わりに、エスクロー鍵は、電子メール、テキストメッセージ又は第三者リポジトリ等の異なるチャネルを介して送信される場合がある。これらの例において、エスクロー鍵は、第1のデバイスから転送される前に、パスフレーズ導出鍵で暗号化することができる。したがって、第2のデバイスは、パスフレーズ導出鍵を計算し、エスクロー鍵を解読する。正しいパスワードのみがエスクロー鍵を解読することができ、解読されたエスクロー鍵を用いて、鍵エスクローバンドルの内容を解読することができるので、これは、不正の目的のためにセキュア通信アプリケーションを使えるように設定する悪意のあるユーザに対する更なるセキュリティ機構を表す。
【0047】
ブロック750において、セキュア通信アプリケーションが、エスクロー鍵を用いて、暗号化された鍵エスクローバンドルを解読する。鍵エスクローバンドルは、AES等の対称暗号化アルゴリズムに従って暗号化することができる。ブロック760において、第2のデバイス上のセキュア通信アプリケーションが、解読された鍵エスクローバンドル内に含まれる情報を用いて構成される。これに関して、第2のデバイス上のセキュア通信アプリケーションは、解読された鍵エスクローバンドルから、ルート秘密鍵(Kr)、リモート記憶ルート鍵(Krs)及びノード記憶ルート鍵(Knsr)を取得する。鍵エスクローバンドルをアンパックした後に、セキュア通信アプリケーションは、解読された鍵エスクローバンドルから取得された情報を用いてデバイス登録を完了することができる。これにより、1つのユーザデバイスから別のユーザデバイスに複数の鍵を安全に転送できるようになり、それにより、両方のデバイスが、同じ信頼できるルート識別子に基づいて、セキュア通信を送信及び受信できるようになる。さらに、これは、後続のインストールごとに秘密鍵の新たな組を生成するようにユーザに要求することになる従来技術のシステムからの改善を表す。したがって、本明細書において説明される技法によれば、後続のアプリケーションをより効率的に、そして安全にインストールできるようになる。
【0048】
セキュア通信プラットフォームによって提供されるセキュア通信は、より理解が進むと、ユーザ間通信ではなく、ノード間通信を提供すると理解することができる。上記で論じられたように、単一のユーザが複数の関連するデバイス上で実行されるセキュア通信アプリケーションを有する場合がある。通信を送信することを目的とする場合、セキュア通信アプリケーションの各インスタンスはノードと見なされるべきである。例えば、3つのデバイスを有する第2のユーザにメッセージを送信する、2つのデバイスを有する第1のユーザは、4つのノード、すなわち、第2のユーザに関連付けられる3つのデバイス及び第1のユーザの第2のデバイスに、暗号化されたメッセージを送信している。
図8A~
図8Cは、この原理に従って、暗号化された通信を送信するためのプロセス800を示す。
【0049】
ブロック805において、送信側デバイスのセキュア通信アプリケーションが、セキュア通信プラットフォームから、1つ以上の受信側ユーザのプロファイル情報を検索する。これに関して、送信側セキュア通信アプリケーションは、セキュア通信プラットフォームから、受信側ユーザのプロファイル情報を要求することができる。これは、例えば、送信側ユーザが通信を構成し始めるときに行われる場合がある。ユーザプロファイル情報は、ユーザのルート識別公開鍵(PKr)、ユーザのデバイスノードのリスト、デバイスごとのノード識別公開鍵(PKn)、及びノードごとの署名付きノード識別公開鍵(SKr(PKn))を含む。次に、ブロック810において、送信側セキュア通信アプリケーションが、受信側ユーザデバイス及び送信者のデバイスの共同体に基づいて、受信ノードのリストを構築する。ブロック815において、送信側セキュア通信アプリケーションが、セキュア通信プラットフォームから、受信側デバイスごとの署名付き短期公開鍵及びその関連する固有識別子を検索する。幾つかの実施形態によれば、署名付き短期公開鍵及び関連する固有識別子は、受信側ユーザのプロファイル情報とともに取得することができる。ブロック820において、送信側セキュア通信アプリケーションが、セキュア通信プラットフォームから受信された短期公開鍵ごとに署名チェーンの正当性を確認する。これに関して、短期公開鍵の署名はノード識別公開鍵を用いて、ECDSA等の署名検証アルゴリズムに従って認証される。ノード識別公開鍵の署名はルート識別公開鍵を用いて検証され、ルート識別公開鍵は、予想されるユーザ識別に対応する。署名チェーンが無効である場合には、セキュア通信アプリケーションは、セキュア通信プラットフォームから、1つ以上の受信側ユーザのプロファイル情報を要求することができる。代わりに、セキュア通信アプリケーションは、通信を破棄し、無効の署名チェーンを有する1つ以上の受信側ノードとの通信を拒否することができる。署名チェーンが有効である場合には、セキュア通信アプリケーションは、1つ以上の受信者ノードに送信する通信を準備し続ける。
【0050】
ブロック825において、送信側セキュア通信アプリケーションが、ランダムメッセージペイロード暗号鍵(Kpayload)を生成する。好ましい実施形態において、第1のメッセージペイロード暗号鍵は、送信側クライアントのデバイスから導出された擬似ランダムバイトの第1の組に鍵導出関数(例えば、HKDF)を適用することによって生成される256ビット鍵である。擬似ランダムバイトの第1の組は、デバイスドライバから取得された短期環境雑音、及び他のカーネル演算から導出することができる。例えば、種々のセンサ(例えば、少なくとも1つの加速度計、グローバルポジショニング衛星(GPS)システム、磁力計、近接センサ、周囲光センサ、湿度センサ及びジャイロスコープ)からのデータを擬似ランダムバイトの第1の組として使用することができる。
【0051】
ブロック830において、送信側セキュア通信アプリケーションが、パケットヘッダ暗号鍵(K
header)を計算する。好ましい実施形態において、パケットヘッダ暗号鍵は、ルート識別子をセキュア通信アプリケーションのノード識別子と合成し、両方のデータセットを鍵導出関数に通すことによって計算される。ブロック835において、送信側セキュア通信アプリケーションが、短期鍵対(KE
s、PKE
s)を生成する。ブロック840において、送信側セキュア通信アプリケーションが、受信者ノードごとに鍵暗号化鍵(KEK)を計算する。鍵暗号化鍵は、
【数1】
に従って計算される。これに関して、送信側セキュア通信アプリケーションは、送信側セキュア通信アプリケーションが生成した短期秘密鍵と、セキュア通信プラットフォームから受信された受信側ノードの短期公開鍵とを用いて共有秘密鍵(shared secret)を導出する。好ましい実施形態において、共有秘密鍵はディフィー-ヘルマン(Diffie-Hellman)に従って導出される。共有秘密鍵及び受信側ノードのノード識別子を鍵導出関数に入力して、通信を受信者のセキュアコラボレーションアプリケーションに実効的に結び付ける鍵暗号化鍵を導出する。これは、受信側ノードだけが通信にアクセスできるようにすることによって、セキュリティを改善する。すなわち、鍵暗号化鍵を生成するために使用される鍵は、セキュア通信アプリケーションの特定のインストールに固有であるので、受信者は、デバイス間で通信を転送できなくなるが、それでもメッセージを解読することができる。ブロック840は、1つ以上の受信者のデバイスごとに繰り返される。
【0052】
1つ以上の受信者のデバイスごとに鍵暗号化鍵を計算した後に、ブロック845において、送信側セキュア通信アプリケーションが受信者ノードごとに鍵交換データを作成する。鍵交換データは、受信者ノードのための鍵暗号化鍵で暗号化されたランダムメッセージペイロード暗号鍵(Kpayload)と、送信側ノードのノード識別子と、受信側ノードの短期公開鍵に割り当てられた固有識別子(IDken)とを含む。したがって、ブロック845は、受信者ノードごとに繰り返されることになる。
【0053】
ブロック850において、送信側セキュア通信アプリケーションが、受信者ノードごとの鍵交換リストを作成する。例えば、セキュア通信アプリケーションは、ブロック845において生成された情報の鍵交換データブロブのそれぞれを合成して、鍵交換リストを作成することができる。ブロック855において、送信側セキュア通信アプリケーションが、暗号化されたパケットヘッダを生成する。これに関して、送信側セキュア通信アプリケーションは、鍵交換リスト及び送信者の短期公開鍵をヘッダ暗号鍵で暗号化することによって、暗号化されたパケットヘッダを作成する。好ましい実施形態において、鍵交換リスト及び送信者の短期公開鍵は、AES等の対称暗号化アルゴリズムによって暗号化される。
【0054】
暗号化されたパケットヘッダを生成した後に、送信側セキュア通信アプリケーションは、送信するためのパケットコンテンツを準備し始める。ブロック860において、送信側セキュア通信アプリケーションは、通信メタデータを作成する。通信メタデータは、通信に含まれるコンテンツのタイプを識別することができる。さらに、通信メタデータは、通信の短期性を含みうる。すなわち、送信者は、通信のための有効生存期間を指定することができる。有効生存期間が満了した後、受信側ノードは、通信にアクセスできなくなる。
【0055】
ブロック865において、送信側セキュア通信アプリケーションが、暗号化されたメッセージペイロードを作成する。暗号化されたメッセージペイロードは、ランダムメッセージペイロード暗号鍵を用いて、対称暗号化アルゴリズムによって、メッセージメタデータ及びメッセージコンテンツを暗号化することによって作成される。ブロック870において、送信側セキュア通信アルゴリズムがパケット署名を作成する。パケット署名は、署名生成アルゴリズムに従って、暗号化されたパケットヘッダ及び暗号化されたメッセージペイロードにノード識別秘密鍵を適用することによって生成される。ブロック875において、送信側セキュア通信アプリケーションが、バージョン情報、暗号構成情報、暗号化されたパケット、暗号化されたパケットヘッダ及びパケット署名を含む、シリアライズされたパケットを作成する。ブロック880において、送信側セキュア通信アプリケーションが、シリアライズされたパケットを、1つ以上の受信者ノードに配信するために、セキュア通信プラットフォームに送信する。このようにして、セキュア通信プラットフォームは、単一のパケットを受信し、単一のパケットを1つ以上の受信者ノードに配信する。
【0056】
セキュア通信プラットフォームは、1つ以上の受信側ノードのそれぞれに、受信側ノードが新たな通信を受信したという、プッシュ通知等のアラートを与える。セキュア通信アプリケーションは、セキュア通信プラットフォームと交信し、新たな通信をそれらのデバイスにダウンロードする。
図9A及び
図9Bは、受信側ノードにおいて、暗号化された通信を受信し、解読するための方法900を示す。
【0057】
ブロック905において、受信者ノードが、送信側ノードから、シリアライズされたパケットを受信する。シリアライズされたパケットを受信することは、アラート又は通知を受信するのに応答して、セキュア通信プラットフォームからシリアライズされたパケットを検索することを含む。さらに、受信者ノードは、通信コンテンツを解読するのに適した鍵材料を識別する責任を担う。このために、ブロック910において、受信側ノードがセキュア通信プラットフォームから送信側ノードについての情報を取得する。その情報は、送信側ノードの識別子(IDn_s)、そのノードのルートの識別子(IDr_s)及び送信側ノードのユーザプロファイル情報を含む。
【0058】
通信及び送信者についての情報を取得した後に、ブロック915において、受信側ノード上のセキュア通信アプリケーションが、パケットをデシリアライズし、適切なバージョン及び暗号構成を設定する。ブロック920において、受信側ノード上のセキュア通信アプリケーションが、パケット署名を検証する。これに関して、暗号化されたパケットヘッダ及び暗号化されたパケットペイロードの署名が認証され、ノード識別公開鍵の署名がルート識別公開鍵を用いて検証され、ルート識別公開鍵は予想されるユーザ識別に対応する。署名のうちのいずれかが無効である場合には、受信側ノード上のセキュア通信アプリケーションは、受信されたパケットを解読するのを中止し、そのパケットを破棄することができる。代わりに、受信側ノード上のセキュア通信アプリケーションは、解読プロセスを継続し、通信のコンテンツを検証できなかったという通知をユーザに与えることができる。署名が正当であると確認された場合には、受信側ノードのセキュア通信アプリケーションは解読プロセスを継続する。
【0059】
ブロック925において、受信側ノード上のセキュア通信アプリケーションが、セキュア通信プラットフォームから受信された送信者のプロファイル情報から、パケットヘッダ暗号鍵(Kheader)を計算する。上記で論じられたように、パケットヘッダ暗号鍵は、送信者のルート識別子(IDr_s)及び送信者のノード識別子(IDn_s)から導出される。ブロック930において、受信側ノードのセキュア通信アプリケーションが、導出されたパケットヘッダ暗号鍵を用いてパケットヘッダを解読し、送信者の短期公開鍵(PKEs)及び鍵交換リストを取得する。
【0060】
ブロック935において、受信側ノードのセキュア通信アプリケーションが、ノード識別子(IDn_r)を用いて、解読された鍵交換リストから鍵交換データを検索する。具体的には、受信側ノードは、暗号化されたペイロード鍵(EKEK(Kpayload))、受信側ノードのノード識別子(IDn)及び受信側ノードの短期公開鍵の固有識別子(IDken)を取得する。ブロック940において、受信側ノードのセキュア通信アプリケーションが、固有識別子(IDken)を用いて、受信側ノード上のローカル記憶装置から鍵交換のために送信側ノードによって使用された短期鍵対(KEn、PKEn)を識別し、検索する。
【0061】
記憶装置から短期鍵対を取得した後に、ブロック940において、受信側ノード上のセキュア通信アプリケーションが鍵暗号化鍵を計算する。具体的には、受信側ノードは、受信側ノードの短期秘密鍵及び送信側ノードの短期公開鍵を用いて、共有秘密鍵を計算する。共有秘密鍵及び受信側ノードのノード識別子を鍵導出関数に入力して、鍵暗号化鍵を生成する。ブロック945において、受信側ノードのセキュア通信アプリケーションが、暗号化されたペイロード暗号鍵を解読する。ブロック950において、解読されたペイロード暗号鍵を用いて、メッセージを解読する。詳細には、セキュア通信アプリケーションは、解読されたメッセージから、メッセージメタデータ及びメッセージコンテンツを取得する。ブロック955において、受信側ノードのセキュア通信アプリケーションが、解読されたメッセージをユーザに与える。ブロック960において、メッセージペイロードが、受信側ノードのローカル記憶デバイス鍵で暗号化され、受信側ノード上のローカル記憶装置内に記憶される。
【0062】
メッセージコンテンツが解読された直後に、送信者及び受信者の短期鍵対及びペイロード暗号鍵等の、持続期間が短い鍵が削除される。セキュア通信アプリケーションは、メッセージメタデータに従って動作を実行することになる。例えば、暗号化された各メッセージは、満了時間又は有効生存期間(TTL)値に関連付けられる場合があり、その時間以降、セキュア通信アプリケーションはメッセージを削除しなければならない。したがって、セキュア通信アプリケーションは、満了時間又はTTL値を強制し、それが満了した後にメッセージを削除することになる。
【0063】
図10は、第1のユーザと第2のユーザとの間の終端間暗号化通信のためのモバイルインターフェース1000の一例を示す。インターフェース1000はタイトルフィールド1010を含む。ユーザがセキュアチャットルームに参加しているとき、セキュアチャットルームのタイトルが表示されることになる。同様に、ユーザが一対一通信に参加しているとき、他方の参加者の名前が表示されることになる。インターフェース1000は、テキスト検索を実行する能力をユーザに提供する検索フィールド1020を含みうる。さらに、インターフェース1000は、ユーザが安全な音声通話又はビデオ通話に参加できるようにする通話オプションフィールド1030を含みうる。インターフェース1000は、着信及び発信する通信を表示するテキストウィンドウ1040と、テキストを入力し、ファイルをアップロードするテキストインターフェース1050とを含む。
【0064】
図11は、2つのユーザ間の終端間暗号化通信のためのデスクトップインターフェース1100の説明のための例を示す。インターフェースルーム1100がフィールド1105内にユーザ情報を表示する。これに関して、インターフェース1100は、フィールド1105によって示されるようなVernicious Knidsに属する。フィールド1110は、ユーザがその参加者であるセキュアチャットルームを表示し、一方、フィールド1115はユーザの一対一通信を示す。例示されるように、Arthur Slugworthの名前がハイライトされ、Arthur Slugworthとの一対一通信が表示されることを示す。これは、他方のユーザの名前を表示するヘッダフィールド1130内にも表示される。セキュアチャットルームが選択された場合には、ヘッダフィールド1130がセキュアチャットルームの名前を表示することになる。さらに、インターフェース1100は、検索フィールド1135、TTLステータスフィールド1140及び通話オプションフィールド1145を含みうる。検索フィールド1135は、インターフェース1100内で行われる通信のためのテキスト検索を行う能力をユーザに提供する。TTLステータスフィールド1140は、ユーザが、セキュアチャットルームにおいて送信されるメッセージの満了時間を変更できるようにする。通話オプションフィールド1145は、ユーザが、暗号化された音声通話又はビデオ通話に参加できるようにする。また、インターフェース1100は、着信及び発信する通信を表示するテキストウィンドウ1145を含む。最後に、インターフェース1100は、ユーザがテキストを入力し、ファイルをアップロードできるようにするウィンドウ1150を含む。
【0065】
上記の実施形態は、明確に理解してもらうために幾らか詳細に説明されてきたが、本開示は、提供される細部に限定されない。本開示を実施する数多くの代わりの方法がある。開示される実施形態は例示であり、限定するものではない。