(57)【要約】本開示は、メディアストリーミング、ストリーム配信仮想プライベートネットワーク（VPN）サービス、大容量ファイル転送、等といったアプリケーションに適した、高度にセキュアで、高速な暗号化方法に関する。例えば、ここにおいて説明される暗号化方法は、例として、メディアサービスプロバイダから、複数のユーザへデータをストリーミングするためのストリーム暗号を提供することができる。所定の構成は、単一使用の暗号化のワイヤスピードを提供する。ここにおいて記載される方法は、ブロックチェーン(例えば、ビットコイン)技術を用いた使用に適している。
2020532177.tif 000002
【特許請求の範囲】
【請求項１】
データを暗号化して、ネットワーク上で第１ノードから第２ノードへデータを送信するためのコンピュータに実装される方法であって、
前記第１ノードにおいて、前記第１ノードおよび前記第２ノードによって知られている共通秘密から秘密鍵を導出するステップと、
擬似乱数発生器に対するシードとして、前記秘密鍵を利用するステップと、
暗号化されたデータを生成するために、前記擬似乱数発生器からの出力を、送信されるべきデータと組み合わせるステップと、
前記暗号化されたデータを、前記第２ノードへ送信するステップと、
を含む、方法。
【請求項２】
前記第１ノードは、第１非対称暗号化鍵ペアと関連付けられており、かつ、前記第２ノードは、第２非対称暗号化鍵ペアと関連付けられており、
前記共通秘密は、前記第１ノードと前記第２ノードとの間で前記共通秘密を送信することなく、前記第１非対称暗号化鍵ペアおよび前記第２非対称暗号化鍵ペアそれぞれから、前記第１ノードおよび前記第２ノードにおいて導出される、
請求項１に記載の方法。
【請求項３】
前記秘密鍵を導出するステップは、前記共通秘密を対称鍵へと変換するステップを含む、
請求項１または２に記載の方法。
【請求項４】
前記秘密鍵を導出するステップは、前記共通秘密、または前記対称鍵を、前記暗号化されたデータの送信のための追加データと組み合わせるステップを含む、
請求項１乃至３いずれか一項に記載の方法。
【請求項５】
前記追加データは、前記第１ノードと前記第２ノードとの間で前記追加データを送信することなく、前記第１ノードおよび前記第２ノードにおいて導出される、
請求項４に記載の方法。
【請求項６】
前記追加データは、時間変数、または時間変数の暗号化関数を含む、
請求項４または５に記載の方法。
【請求項７】
前記追加データは、単一使用の値、または単一使用の値の暗号化関数を含む、
請求項４乃至６いずれか一項に記載の方法。
【請求項８】
前記追加データは、擬似乱数発生器に対するシードを生成するために、排他演算または（ＸＯＲ）演算を使用して、前記共通秘密または前記対称鍵と組み合わされる、
請求項４乃至７いずれか一項に記載の方法。
【請求項９】
前記擬似乱数発生器は、ゼータ関数、またはウルフラム規則３０関数に基づいている、
請求項１乃至８いずれか一項に記載の方法。
【請求項１０】
前記擬似乱数発生器の出力は、前記暗号化されたデータを生成するために、排他演算または（ＸＯＲ）演算を使用して、送信されるべきデータと組み合わされる、
請求項１乃至９いずれか一項に記載の方法。
【請求項１１】
前記擬似乱数発生器の出力は、ワンタイムパッドとして使用される、
請求項１乃至１０いずれか一項に記載の方法。
【請求項１２】
前記暗号化されたデータの送信は、擬似ランダムビットストリームの送信を含む、
請求項１乃至１１いずれか一項に記載の方法。
【請求項１３】
前記擬似ランダムビットストリームは、仮想プライベートネットワーク（ＶＰＮ）サービス、またはストリーム配信データサービスのうち１つまたはそれ以上である、
請求項１乃至１２いずれか一項に記載の方法。
【請求項１４】
前記第１ノードは、各ユーザに対して異なる共有対称鍵を使用して、暗号化されたデータを複数のユーザへ送信するように構成されたサービスプロバイダである、
請求項１乃至１３いずれか一項に記載の方法。
【請求項１５】
前記第２ノードは、前記暗号化されたデータを受信し、かつ、前記共通秘密を使用して前記データを復号化する、
請求項１乃至１４いずれか一項に記載の方法。
【請求項１６】
前記第２ノードは、受信の際に前記暗号化されたデータに排他演算または（ＸＯＲ）演算を適用することによって、前記暗号化されたデータを受信の際に復号化する、
請求項１乃至１５いずれか一項に記載の方法。
【請求項１７】
前記第２ノードは、前記暗号化されたデータを復号化するために、前記第１ノードとは独立して、自身の擬似乱数発生器にシーディングする、
請求項１乃至１６いずれか一項に記載の方法。
【請求項１８】
コンピュータ実行可能命令を含み、１つまたはそれ以上のプロセッサによって実行されると、請求項１乃至１７いずれか一項に記載の方法を実行するように構成されている、コンピュータ可読記憶媒体。
【請求項１９】
電子デバイスであって、
インターフェイス装置と、
前記インターフェイス装置に接続された１つまたはそれ以上のプロセッサと、
前記１つまたはそれ以上のプロセッサに接続されたメモリであり、コンピュータ実行可能命令を保管している、メモリと、を含み、
前記コンピュータ実行可能命令が実行されると、前記１つまたはそれ以上のプロセッサに請求項１乃至１７いずれか一項に記載の方法を実行させる、ように構成されている、
電子デバイス。
【請求項２０】
ブロックチェーンネットワークのノードであって、
前記ノードは、請求項１乃至１７いずれか一項に記載の方法を実行する、ように構成されている、
ノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、メディアストリーミング、ストリーム配信（streamed）仮想プライベートネットワーク（VPN）サービス、大容量ファイル転送、等といった、アプリケーションに適した、高度にセキュアで、高速な暗号化方法に関する。例えば、ここにおいて説明される暗号化方法は、例として、メディアサービスプロバイダから複数のユーザへデータをストリーミングするためのストリーム暗号（stream  ciphers）を提供することができる。特定の実施形態は、単一使用の暗号化のワイヤスピード（wire  speed）に関する。ここにおいて説明される方法は、ブロックチェーン(例えば、ビットコイン)技術を用いた使用に適している。
【背景技術】
【０００２】
暗号化は、２つまたはそれ以上のノード間でのセキュアな通信のための技術を含んでいる。ノードは、移動通信装置、タブレットコンピュータ、ラップトップコンピュータ、デスクトップ、他の形態のコンピューティングデバイスおよび通信装置、ネットワークにおけるサーバ装置、ネットワークにおけるクライアント装置、分散ネットワークにおける１つまたはそれ以上のノード、ルータ、等を含んでよい。ノードは、自然人、企業の従業員といった人のグループ、メディアストリーミングプロバイダといったサービスプロバイダ、銀行システムといったシステム、等と関連付けされ得る。
【０００３】
いくつかの事例において、２つまたはそれ以上のノードは、セキュアでない（unsecure）通信ネットワークによってリンクされることがある。例えば、２つのノードは、第三者がノード間の通信を盗聴（eavesdrop）することができる通信ネットワークによってリンクされることがある。従って、ノード間で送信されるメッセージは、暗号化された形式で送信されてよく、そして、受信時に、意図された受信者が、対応する復号鍵を用いて(または、他の復号方法)メッセージを復号することができる。このように、そうした通信のセキュリティは、第三者が対応する復号鍵を決定するのを防止することに依存し得るものである。
【０００４】
暗号化の１つの方法は、対称鍵（symmetric-key）アルゴリズムを使用することを含んでいる。鍵は、プレーンテキストメッセージの暗号化および暗号化テキストの復号化の両方のために同一の対称鍵が使用されるという意味で対称的である。対称鍵アルゴリズムを使用することの１つの考察は、盗聴者が対称鍵を取得するのを防止するように、どのようにして両方のノードに対して対称鍵をセキュアな方法で送信するかである。このことは、例えば、セキュアでない通信ネットワーク上で対称鍵が決して転送されないように、(認可された)ノードに対して対称鍵を物理的に配送することを含み得る。しかしながら、物理的な配送は必ずしもオプションではない。従って、そうした暗号システムにおける問題は、セキュアでないネットワーク上にわたるノード間で対称鍵(共通秘密（common  secret）に基づいてよい)を確立することである。最近、状況により、鍵の送信が、たいてい、インターネットといった通信システム上で電子的に行われることが望ましいことがある。従って、共有秘密鍵（shared  secret）(例えば、対称鍵)を提供するこのステップは、潜在的には壊滅的な脆弱性（vulnerability）である。対称鍵アルゴリズム(およびプロトコル)は、単純であり、かつ、広く使用されているので、２つのノードについてセキュアでないネットワーク上にわたり共通秘密をセキュアに決定する能力に対する必要性が存在している。
【０００５】
暗号化の別の方法は、ストリームアルゴリズム（stream  algorithm）である。ここでは、擬似乱数生成器のためのシード（seed）として対称鍵が使用され、そして、擬似乱数生成器からの出力が、排他演算または（ＸＯＲ）演算を使用するなどして、データストリームと組み合わされて、ストリーム暗号を生成する。受信者は、ストリーム暗号を復号するために対称鍵を使用する。欧州特許出願第１063811号は、擬似乱数発生器にシーディング（seeding）するために対称鍵アプローチを利用する、そうした方法の一つの例を説明している。しかしながら、そうしたシステムのセキュリティは、再び、盗聴者が対称鍵を取得するのを防止するために、セキュアな方法で、両方のノードに対して対称鍵を送信することに依存し得る。
【０００６】
他の既存の暗号方式は、非対称鍵（asymmetric-key）を使用することが含まれる。これらは、非対称鍵が秘密鍵（private  key）および対応する公開鍵（public  key）を含む、公開鍵暗号において使用され得るものである。公開鍵は、公に利用可能にされ得るが、一方で、秘密鍵は、名前が暗示するように、秘密に保たれる。これらの非対称鍵は、公開鍵暗号化、および、何よりもデジタル署名のために使用され得る。既存のプロトコルには、ディフィー・ヘルマン鍵共有（Diffie-Hellman  Key  Exchange）、および、セキュアでないネットワーク上にわたり秘密のセキュアな共有を可能にする３パスプロトコル（Three  Pass  Protocol）を含んでいる。Applied  Cryptographyのハンドブックの第12章(A.Menezes、P.van  Oorschot、およびS.Vanstone、  CRC  Press、  1996)は、いくつかの既知の鍵確立プロトコルを説明しており、そして、非対称鍵を使用した秘密共有（secret  sharing）の説明を含んでいる。しかしながら、これらの方法は、新たな秘密が連続的に生成され、そして、共有される場合といった、いくつかの事例においては計算に費用がかかる。さらに、これらの方法は、データストリーミングアプリケーションにおいて必要とされるといった、高速暗号化、データ転送、および復号化に対して上手く適合していない。さらにまた、例えば、ランダムなシードおよびインデックス構造に依存している、非対称鍵階層(Bitcoin  Developer's  guideに説明されているようなもの)を管理するための方法は、非効率的であり、そして、特定のデータに明白に関連する決定論的な階層的共有秘密（deterministic  hierarchical  shared  secrets）の生成に対して適していない。
【０００７】
上記に照らして、暗号データ転送を実装するための従来技術の構成における一つの技術的問題、そして、たいてい最も重要な考慮事項は、セキュリティであることが正しく理解されるだろう。ストリーミングおよびより大きなデータ転送といった、特定のアプリケーションについて暗号データ転送を実装するための従来技術の構成における別の技術的問題は、速度の問題である。暗号データ転送を実装するための従来技術の構成におけるさらに別の技術的な問題は、システムのセットアップ/サブスクリプション（subscription）、鍵管理、および一般的なユーザビリティに関して、容易に使用できることである。
【０００８】
上述の技術的問題は、相互に関連し得るものであり、そして、システムの所望の特性間には、しばしばトレードオフがあり得る。例えば、特定のシステムは、高度にセキュアであるが、データのストリーミングまたは大規模データの転送については遅く、そして、適さないことがある。他のシステムは、高速であるが、ハッキングの影響を受けやすいことがある。他のシステムは、比較的にセキュアであり、かつ、高速であり得るが、現実世界のアプリケーションにおけるセットアップ、使用、及び／又は管理が困難であり得る。
【０００９】
本発明の実施形態の目的は、これらの問題について技術的ソリューションを提供することである。
【発明の概要】
【００１０】
データを暗号化して、ネットワーク上で第１ノードから第２ノードへデータを送信するためのコンピュータに実装される方法が、ここにおいて説明される。本方法は、
前記第１ノードにおいて、前記第１ノードおよび前記第２ノードによって知られている共通秘密から秘密鍵を導出するステップと、
擬似乱数発生器に対するシードとして、前記秘密鍵を利用するステップと、
暗号化されたデータを生成するために、前記擬似乱数発生器からの出力を、送信されるべきデータと組み合わせるステップと、
前記暗号化されたデータを前記第２ノードへ送信するステップと、を含む。
【００１１】
一つのコンフィグレーションに従って、前記第１ノードは、第１非対称暗号化鍵ペアと関連付けられており、かつ、前記第２ノードは、第２非対称暗号化鍵ペアと関連付けられており、前記共通秘密は、前記第１ノードと前記第２ノードとの間で前記共通秘密を送信することなく、前記第１非対称暗号化鍵ペアおよび前記第２非対称暗号化鍵ペアそれぞれから、前記第１ノードおよび前記第２ノードにおいて導出される。暗号化されたデータは、擬似ランダムビットストリームとして送信することができる。
【００１２】
ここにおいて説明される方法は、共通秘密を共有する改善された方法を、ストリーミングアルゴリズムと組み合わせて、メディアストリーミング、ストリーム配信仮想プライベートネットワーク（VPN）サービス、大容量ファイル転送、等といったアプリケーションに適した、高度にセキュアで、高速な暗号化方法を提供する。
【００１３】
ここにおいて説明される方法は、また、複数のユーザについて異なる対称鍵のセットを生成する改善された方法を、複数のユーザに対してデータを送信するためのサービスプロバイダのためのストリーミングアルゴリズムと組み合わせる。
【００１４】
ここにおいて説明される方法は、また、ストリーミングアルゴリズムにおいて適用されるといった、暗号化方法で使用される擬似乱数発生器のための改善されたシーディング（seeding）方法を提供する。
【００１５】
ここにおいて説明される方法は、また、高度にセキュアで、高速で、単一使用の暗号化システムを提供する。
【００１６】
実施形態は、様々な形態で提供され得る。例えば、コンピュータ実行可能命令を含むコンピュータ読取可能記憶媒体が提供され得る。実行されると、ここにおいて説明される方法を１つまたはそれ以上のプロセッサに実施させるよう構成されたものである。電子装置も、また、提供され得る。インターフェイス装置、該インターフェイス装置に接続された１つまたはそれ以上のプロセッサ、該１つまたはそれ以上のプロセッサに接続されたメモリを含む。該メモリは、コンピュータ実行可能命令を保管しており、実行されると、ここにおいて説明される方法を１つまたはそれ以上のプロセッサに実施させるよう構成されている。さらに、また、ブロックチェーンネットワークのノードが提供され得る。ノードは、ここにおいて説明される方法を実施するように構成されている。
【００１７】
本発明の実施形態は２つの非常に異なるタイプの暗号技術に係る所定の機能を利用することが留意されるべきである。セキュアでないネットワーク上にわたる秘密のセキュアな共有のために、非対称鍵を使用することが知られている。さらに、擬似乱数生成器に対するシードとして対称鍵を使用すること、そして、擬似乱数生成器からの出力をデータストリームと組み合わせてストリーム暗号を生成することが知られている。背景技術のセクションで説明される先行技術において開示も示唆もされていないものは、ネットワーク上の２つの異なるノードによって知られている共通秘密から導出される秘密鍵(例えば、非対称鍵を使用してノードによって導出可能である共通秘密)を、擬似乱数発生器に対するシードとして利用することであり、そして、次いで、ネットワーク上にわたり第１ノードから第２ノードへ送信される暗号化されたデータを生成するために、擬似乱数発生器からの出力を送信されるべきデータと組み合わせることである。ストリーミングデータの従来技術の方法は、対称鍵プロトコルを使用している。ストリーミングデータのための非対称鍵プロトコルの使用は、そうした従来の対称鍵ストリーミングプロトコルよりも新規である。さらに、ここにおいて説明される方法は、ストリーミングおよび大規模データ転送に適した高速暗号化を保持しながらも、よりセキュアな方法を提供することができるので有利である。加えて、ここにおいて説明される実施形態は、実世界のアプリケーションにおいて、セットアップ、使用、および管理が容易である。例えば、本方法は、ブロックチェーンからデータをストリーミング／送信するために使用することができる。例として、映画およびテレビ番組といったメディアがブロックチェーン上に保管されており、そして、要求に応じてエンドユーザに対してセキュアにストリーミングできる、ブロックチェーンメディアストリーミングシステムを提供する。そうしたシステムは、また、暗号化通貨、例えばビットコイン、の転送を介して要求されたサービスに対してセキュアな自動化された支払いを可能にする。これらの有利な特徴は、背景技術のセクションで説明される先行技術において開示も示唆もされていない。
【図面の簡単な説明】
【００１８】
本発明のこれらおよび他の態様は、ここにおいて説明される実施形態から明らかであり、そして、それらを参照して解明される。これから、本発明の実施形態が、単なる例示として、そして、添付の図面を参照して説明される。
【図１】図1は、第１ノードおよび第２ノードの共通秘密を決定するためのシステムの一つの例の概略図である。
【図２】図2は、共通秘密を決定するためのコンピュータ実装方法のフローチャートである。
【図３】図3は、第１ノードと第２ノードとの間のセキュアな通信のためのコンピュータ実装方法のフローチャートである。
【図４】図4は、擬似乱数発生器を使用する第１ノードと第２ノードとの間のセキュアな通信のためのコンピュータ実装方法のフローチャートである。
【発明を実施するための形態】
【００１９】
これから、第２ノードと同一の共通秘密(common  secret、ＣＳ)である共通秘密を第１ノードにおいて決定する方法、デバイス、システムが説明される。
【００２０】
図1は、通信ネットワーク5を介して、第２ノード7と通信する第１ノード3を含むシステム1を示している。第１ノード3は、関連する第１処理装置23を有し、そして、第２ノード7は、関連する第２処理装置27を有している。第１および第２ノード3、7は、コンピュータ、タブレットコンピュータ、移動通信装置、コンピュータサーバ、等といった、電子装置を含み得る。一つの例において、第１ノード3は、クライアント装置であってよく、そして、第２ノード7は、サーバであってよく、または、その逆も同様である。第１および第２ノードは、関連するデータストア（data  store）13、17を有し、そして、任意的に、ユーザインターフェイス15を有し得る。図1に示されるようにシステムは、また、関連するデータストア19を有する第３ノード9も含み、そして、さらに盗聴器11を含んでいる。システム1は、ブロックチェーンネットワークの一部を形成することができる。
【００２１】
第１ノード3は、第１ノードマスタ秘密鍵(Ｖ１Ｃ)および第１ノードマスタ公開鍵(Ｐ１Ｃ)を有する第１非対称暗号化鍵（cryptography  key）ペアと関連付けられている。第１ノードマスタ公開鍵(Ｐ１Ｃ)は、第１ノードマスタ秘密鍵(Ｖ１Ｃ)の楕円曲線点乗算および等式に従った共通ジェネレータ(Ｇ)に基づいて決定される。
【数１】
2020532177.tif 000003
【００２２】
共通発生器（common  generator）Ｇは、選択され、ランダムに生成され、または、割り当てられてよい。第１非対称暗号化鍵ペアは、以下を含んでいる。
Ｖ１Ｃ:第１ノードによって秘密に保持される第１ノードマスタ秘密鍵
Ｐ１Ｃ:公知にされている第１ノードマスタ公開鍵
【００２３】
第１ノード3と同様に、第２ノード7は、第２ノードマスタ秘密鍵(Ｖ１Ｓ)および第２ノードマスタ公開鍵(Ｐ１Ｓ)を有する第２非対称暗号化鍵ペアと関連付けられている。第２ノードマスタ公開鍵(Ｐ１Ｓ)は、次の等式によって決定される。
【数２】
2020532177.tif 000004
【００２４】
従って、第２非対称暗号化鍵ペアは、以下を含んでいる。
Ｖ１Ｓ:第２ノードによって秘密に保持される第２ノードマスタ秘密鍵
Ｐ１Ｓ:公知にされている第２ノードマスタ公開鍵
【００２５】
第１ノード3および第２ノード7の両方における共通秘密(ＣＳ)を決定するために、ノード3、7は、通信ネットワーク5を介して秘密鍵を通信することなく、以下に説明されるステップを実行する。
【００２６】
共通秘密の開始と決定
これから、図2を参照して、共通秘密(ＣＳ)を決定する一つの例が説明される。共通秘密(ＣＳ)は、特定のセッション、時間、トランザクション、データ送信、または、他の目的のために、第１ノード3と第２ノード7との間で使用され得るものであり、そして、同一の共通秘密(ＣＳ)を再使用（re-use）することは望ましくないか、またはセキュアでない。従って、共通秘密(ＣＳ)は、異なるセッション、時間、トランザクション、データストリーミングアプリケーション、等の間で変更され得る。
【００２７】
この実施例において、第１ノード3によって実行される方法300は、メッセージ(Ｍ)を生成すること310を含んでいる。メッセージ(Ｍ)は、ランダム、擬似ランダム、または、ユーザ定義であってよい。一つの例において、メッセージ(Ｍ)は、Unix時間とノンス（nonce）(任意の値)に基づいている。例えば、メッセージ(Ｍ)は、以下のように提供され得る。
【数３】
2020532177.tif 000005
【００２８】
いくつかの実施例において、メッセージ(Ｍ)は任意である。しかしながら、メッセージ(Ｍ)は、いくつかのアプリケーションにおいて有用であり得る選択値(Unix  Time、等といったもの)を有し得ることが正しく理解されるべきである。
【００２９】
方法300は、通信ネットワーク5を介して、第２ノード7に対して、メッセージ(Ｍ)を送信すること315を含んでいる。メッセージ(Ｍ)は秘密鍵について情報を含まないので、メッセージ(Ｍ)はセキュアでないネットワークを介して送信されてよい。
【００３０】
方法300は、さらに、メッセージ(Ｍ)に基づいて決定論的鍵(deterministic  key、ＤＫ)320を決定するステップを含んでいる。この実施例において、このことは、メッセージの暗号化ハッシュ（cryptographic  hash）を決定することを含んでいる。暗号化ハッシュアルゴリズムの一つの例は、256ビットの決定論的鍵(ＤＫ)を生成するためのSHA-256を含んでいる。つまり、
【数４】
2020532177.tif 000006
である。
【００３１】
他のハッシュアルゴリズムが使用され得ることが正しく理解されるべきである。
【００３２】
方法300は、次に、第２ノードマスタ秘密鍵(Ｖ１Ｃ)および決定論的鍵(ＤＫ)に基づいて第１ノード第２秘密鍵(Ｖ２Ｃ)を決定するステップ330を含んでいる。これは、以下の等式に従った、第１ノードマスタ秘密鍵(Ｖ１Ｃ)と決定論的鍵(ＤＫ)のスカラー加算（scalar  addition）に基づくことができる。
【数５】
2020532177.tif 000007
【００３３】
従って、第１ノード第２秘密鍵(Ｖ２Ｃ)はランダム値ではなく、しかし、代わりに第１ノードマスタ秘密鍵から決定論的に導出される。暗号化鍵ペアにおける対応する公開鍵、すなわち、第１ノード第２公開鍵(Ｐ２Ｃ)は、以下の関係を有している。
【数６】
2020532177.tif 000008
【００３４】
等式5を等式6へ代入すると、
【数７】
2020532177.tif 000009
となる。
【００３５】
ここで、「＋」演算子はスカラー加算を参照し、そして、「×」演算子は楕円曲線点乗算（elliptic  curve  point  multiplication）を参照する。楕円曲線暗号代数が分配的（distributive）であることに留意すると、等式7は、以下のように表され得る。
【数８】
2020532177.tif 000010
【００３６】
最終的に、式1を式8に代入して、次式となり得る。
【数９】
2020532177.tif 000011
【数１０】
2020532177.tif 000012
【００３７】
等式8から等式9.2において、「＋」演算子は楕円曲線点加算を参照する。従って、対応する第１ノード第２公開鍵(Ｐ２Ｃ)は、第１ノードマスタ公開鍵(Ｐ１Ｃ)およびメッセージ(Ｍ)の知識が与えられれば導出することができる。第２ノード7は、方法400に関して以下でさらに詳細に説明されるように、第１ノード第２公開鍵(Ｐ２Ｃ)を独立して決定するために、そうした知識を有し得る。
【００３８】
方法300は、さらに、メッセージ(Ｍ)および決定された第１ノード第２秘密鍵(Ｖ２Ｃ)に基づいて、第１署名済メッセージ（signed  message）(ＳＭ１)を生成すること350を含んでいる。署名済メッセージを生成することは、メッセージ(Ｍ)をデジタル的に署名するために、デジタル署名アルゴリズムを適用することを含んでいる。一つの例において、これは、第１署名済メッセージ(ＳＭ１)を獲得するために、楕円曲線デジタル署名アルゴリズム(ECDSA)においてメッセージに対して第１ノード第２秘密鍵(Ｖ２Ｃ)を適用することを含んでいる。
【００３９】
第１署名済メッセージ(ＳＭ１)は、第２ノード7において対応する第１ノード第２公開鍵(Ｐ２Ｃ)を用いて検証され得る。第１署名済メッセージ(ＳＭ１)に係るこの検証は、第１ノード3を認証するために第２ノード7によって使用され得るものであり、以下で方法400において説明される。
【００４０】
第１ノード3は、次に、第２ノード第２公開鍵(Ｐ２Ｓ)を決定すること370ができる。上述のように、第２ノード第２公開鍵(Ｐ２Ｓ)は、少なくとも第２ノードマスタ公開鍵(Ｐ１Ｓ)および決定論的鍵(ＤＫ)に基づいてよい。この実施例において、公開鍵は、生成器(Ｇ)による楕円曲線点乗算を用いた秘密鍵として決定される370'ので、第２ノード第２公開鍵(Ｐ２Ｓ)は、等式6と同様の方法で、以下のように表すことができる。
【数１１】
2020532177.tif 000013
【数１２】
2020532177.tif 000014
【００４１】
第１ノード3は、第２ノード7とは独立して第２ノード第２公開鍵を決定することができる370'ことが正しく理解されるべきである。
【００４２】
第１ノード3は、次に、決定された第１ノード第２秘密鍵(Ｖ２Ｃ)および決定された第２ノード第２公開鍵(Ｐ２Ｓ)に基づいて、共通秘密(ＣＳ)を決定すること380ができる。共通秘密(ＣＳ)は、以下の等式によって、第１ノード3により決定され得る。
【数１３】
2020532177.tif 000015
【００４３】
これから、第２ノード7において実行される対応する方法400が説明される。これらのステップのいくつかは、第１ノード3によって実行される上述のステップと同様であることが正しく理解されるべきである。
【００４４】
方法400は、第１ノード3から、通信ネットワーク5を介して、メッセージ(Ｍ)を受信すること410含んでいる。これは、ステップ315において第１ノード3によって送信されるメッセージ(Ｍ)を含み得る。第２ノード7は、次に、メッセージ(Ｍ)に基づいて決定論的鍵(ＤＫ)を決定する420。第２ノード7によって決定論的鍵(ＤＫ)を決定するステップ420は、上述の第１ノードによって実行されるステップ320と同様である。この実施例において、第２ノード7は、第１ノード3とは独立して、この決定ステップ420を実行する。
【００４５】
次のステップは、第１ノードマスタ公開鍵(Ｐ１Ｃ)および決定論的鍵(ＤＫ)に基づいて、第１ノード第２公開鍵(Ｐ２Ｃ)を決定すること430'を含んでいる。この実施例においては、公開鍵が生成器(Ｇ)による楕円曲線点乗算を用いた秘密鍵として決定される430'ので、第１ノード第２公開鍵(Ｐ２Ｃ)は、等式9と同様の方法で、次のように表すことができる。
【数１４】
2020532177.tif 000016
【数１５】
2020532177.tif 000017
【００４６】
方法400は、主張される（alleged）第１ノード3が第１ノード3であることを認証するために、第２ノード7によって実行されるステップを含んでよい。上述のように、これは、第１ノード3から第１署名済メッセージ(ＳＭ１)を受信すること440を含んでいる。第２ノード7は、次に、ステップ430で決定された第１ノード第２公開鍵(Ｐ２Ｃ)を用いて、第１署名済メッセージ(ＳＭ１)について署名を検証すること450ができる。
【００４７】
デジタル署名を検証することは、上述のような楕円曲線デジタル署名アルゴリズム(ECDSA)に従って行われ得る。重要なことには、第１ノード第２秘密鍵(Ｖ２Ｃ)を用いて署名された第１署名済メッセージ(ＳＭ１)は、対応する第１ノード第２公開鍵(Ｐ２Ｃ)だけを用いて正しく検証されるべきことである。Ｖ２ＣおよびＰ２Ｃが暗号化鍵ペアを形成するからである。これらの鍵は、第１ノード3の登録において生成された第１ノードマスタ秘密鍵(Ｖ１Ｃ)および第１ノードマスタ公開鍵(Ｐ１Ｃ)について決定論的であるため、第１署名済メッセージ(ＳＭ１)を検証することは、第１署名済メッセージ(ＳＭ１)を送信している主張される第１ノードが登録の最中における同じ第１ノード3であることを認証することの基礎として使用することができる。従って、第２ノード7は、さらに、第１署名済メッセージを検証(450)した結果に基づいて、第１ノード3を認証(460)するステップを実行し得る。
【００４８】
上記の認証は、２つのノードのうち１つが信頼できるノードであり、かつ、ノードの１つだけが認証されることを要するシナリオについて適しているだろう。例えば、第１ノード3はクライアントであってよく、そして、第２ノード7はクライアントによって信頼されるサーバであってよい。従って、サーバ(第２ノード7)は、クライアントがサーバシステムにアクセスできるようにするために、クライアント(第１ノード3)のクレデンシャル（credentials）を認証する必要があり得る。サーバについて、クライアントに対するサーバのクレデンシャルを認証することは必要ないであろう。しかしながら、いくつかのシナリオにおいては、両方のノードについて相互に認証されることが望ましいだろう。以下に別の実施例において説明されるピアツーピア（peer-to-peer）のシナリオ、といったものである。
【００４９】
方法400は、さらに、第２ノードマスタ秘密鍵(Ｖ１Ｓ)および決定論的鍵(ＤＫ)に基づいて第２ノード第２秘密鍵(Ｖ２Ｓ)を決定する第２ノード7を含むことができる。第１ノード3によって実行されるステップ330と同様に、第２ノード第２秘密鍵(Ｖ２Ｓ)は、以下の等式に従った、第２ノードマスタ秘密鍵(Ｖ１Ｓ)および決定論的鍵(ＤＫ)のスカラー加算に基づくことができる。
【数１６】
2020532177.tif 000018
【数１７】
2020532177.tif 000019
【００５０】
第２ノード7は、次に、第１ノード3とは独立して、以下の等式に基づいて、第２ノード第２秘密鍵(Ｖ２Ｓ)および第１ノード第２公開鍵(Ｐ２Ｃ)に基づいて、共通秘密(ＣＳ)を決定する480ことができる。
【数１８】
2020532177.tif 000020
【００５１】
重要なことには、共通秘密が、ノード間における送信を必要とすることなく、独立して導出されることである。さらに、ノードは、共通秘密(ＣＳ)を保管する必要がない。メッセージ(Ｍ)に基づいて再度決定することができるからである。いくつかの実施例において、使用されるメッセージ(Ｍ)は、マスタ秘密鍵に対して必要とされるのと同じレベルのセキュリティを伴わずに、データストア13、17、19(または他のデータストア)において保管されてよい。いくつかの実施例において、メッセージ(Ｍ)は公に利用可能である。いくつかのアプリケーションについては、共有秘密(ＣＳ)が第１ノードマスタ秘密鍵(Ｖ１Ｃ)と同じくセキュアに保持されていれば、共有秘密(ＣＳ)は、第１ノードと関連付けられた第１データストア(13)において保管され得るだろう。
【００５２】
開示されたシステムは、また、単一のマスタ鍵暗号化ペアに基づいて複数のセキュアな秘密鍵に対応し得る複数の共通秘密を決定することを可能にする。この利点は、以下の実施例によって説明され得る。
【００５３】
複数のセッションが存在し、それぞれが複数の各自の共通秘密(ＣＳ)と関連付けられている状況においては、将来のために各自の共通秘密(ＣＳ)が再度決定され得るように、これら複数のセッションと関連付けられたレコードを有することが望ましいであろう。既知のシステムにおいて、このことは、複数の秘密鍵がセキュアなデータストアにおいて保管されることを必要としてきており、これは、維持するのに高価であり、または不便であり得る。対照的に、本システムは、第１および第２ノードそれぞれにおいてセキュアに保持されたマスタ秘密鍵を有しており、一方で、他の決定論的鍵、またはメッセージ(Ｍ)は、セキュアに、またはセキュアでなく、のいずれかで保管され得る。決定論的鍵(ＤＫ)、またはメッセージ(Ｍ)がセキュアでなく保管されていても、複数の共通秘密(ＣＳ)はセキュアに保持されている。共通秘密を決定するために必要とされるマスタ秘密鍵は依然としてセキュアだからである。
【００５４】
対称鍵アルゴリズムにおける共通秘密の使用
共通秘密(ＣＳ)は、秘密鍵として、または、第１ノード3と第２ノード7との間のセキュアな通信のための対称鍵アルゴリズムにおける秘密鍵の基礎として使用され得る。
【００５５】
共通秘密(ＣＳ)は、楕円曲線点(ｘｓ、ｙｓ)の形態であってよい。これは、ノード3、7によって合意された標準的な公知の操作を使用して、標準的な鍵フォーマットへと変換され得る。例えば、ｘｓ値は、AES256暗号化のための鍵として使用され得る256ビットの整数であってよい。また、この長さの鍵を必要とする任意のアプリケーションについて、RIPEMD160を使用して160ビットの整数にも変換され得る。
【００５６】
第１ノード3と第２ノード7との間におけるセキュアな通信の方法500、600が、これから、図3を参照して説明される。第１ノード3は、上記の方法において決定された共通秘密(ＣＳ)に基づいて、対称鍵を決定する510。これは、共通秘密(ＣＳ)を標準的な鍵フォーマットへ変換することを含んでよい。同様に、第２ノード7は、また、共通秘密(ＣＳ)に基づいて、対称鍵を決定する610こともできる。
【００５７】
第１通信メッセージを、通信ネットワークを介して、第１ノード3から第２ノードへセキュアに送信するためには、第１通信メッセージが暗号化される必要がある。従って、暗号化された第１通信メッセージを形成するように第１通信メッセージを暗号化する520ために、対称鍵は、第１ノードによって使用され、次に、通信ネットワーク5を介して、第２ノード7へ送信される530。第２ノード7は、順番に、暗号化された第１通信メッセージを受信し620、そして、暗号化された第１通信メッセージを、対称鍵を用いて、第１通信メッセージへ復号化する630。
【００５８】
同様に、第２ノード7は、第２通信メッセージを、対称鍵を用いて、暗号化された第２通信メッセージへ暗号化し640、次いで、第１ノード3へ送信する650。第１ノード3は、次に、暗号化された第２通信メッセージを受信540し、そして、第２通信メッセージへ復号化する550ことができる。
【００５９】
擬似乱数発生器をシーディングするための共通秘密の使用(例えば、ストリーミングアルゴリズムにおけるもの)
上記から続いて、共通秘密(ＣＳ)は、ストリーミングアルゴリズムにおいて使用され得るような擬似乱数発生器をシーディングする（seeding）ために、秘密鍵として、または秘密鍵の基礎として使用され得る。そうした方法700は、図4に示されており、そして、
第１ノードにおいて、第１および第２ノードによって知られている共通秘密から秘密鍵を導出すること710、
擬似乱数発生器のシードとして秘密鍵を利用すること720、
暗号化されたデータを生成するために、擬似乱数発生器からの出力を送信されるデータと組み合わせること730、および
暗号化されたデータを第２ノードへ送信すること740、
を含んでいる。
【００６０】
第２ノードは、また、共通秘密から対応する秘密鍵を決定する810。暗号化されたデータを受信する820と、第２ノードは、次に、データを復号化するために秘密鍵を利用することができる。
【００６１】
秘密鍵は、共通秘密の形式を所望の非対称鍵形式、例えば、高度暗号化標準（Advanced  Encryption  Standard、(AES))へと変換することによって、共通秘密から導出することができる。この非対称鍵は、さらに、例えば、排他的または(XOR)演算によって、他のデータと組み合わせることができる。他のデータは、時間変数、または時間変数の暗号化関数(例えば、ハッシュ)を含んでよい。時間変数は、ブロックチェーンのブロック高さに関連付けられた時間変数であってよい。例えば、ビットコインにおいては、時間変数を生成するためにCheckLockTimeVerify(CLTV)が使用され得る。その場合には、CLTVがブロックチェーンへ書き込まれ、そして、その時点からアクセスされ得る。このようにして、例えば、ブロックが公開され、その時点で共有された後で、ビデオストリームを利用可能にすることができる。
【００６２】
時間変数のハッシュが、秘密鍵を定義するために、計算され、そして、(例えば、XOR演算によって)非対称鍵と組み合わせされ得る。秘密鍵は、追加的または代替的に、秘密鍵を用いてハッシュされ、そして、(例えば、XOR演算によって)組み合わされた単一使用の値（single  use  value）と組み合わされてよい。この場合に、単一使用の値は、データ送信に対する２つのノード間で交換されるか、または２つのノードによって導出されるように要求される。
【００６３】
擬似乱数生成器は、既知の擬似乱数生成器であり得る。ゼータ関数(http://keisan.casio.com/exec/system/1180573439)、またはウルフラム規則30（Wolfram  Rule  30）関数(http://mathworld.wolfram.com/Rule30.html)に基づく、といったものである。擬似乱数発生器の出力は、排他的または(XOR)演算を使用して、送信されるデータと組み合わせることができる。擬似乱数発生器の出力は、単一使用の暗号化として使用され得る。例えば、ワンタイムパッド（one-time  pad）である。
【００６４】
暗号化されたデータを送信することは、擬似ランダムビットストリームの送信を含んでよい。擬似ランダムビットストリームは、VPNサービス、またはストリームメディアサービスを提供することができる。例えば、送信者は、各ユーザに対して異なる共有対称鍵（shared  symmetric  key）を使用して、複数のユーザへ組み合わされたデータを送信するように構成されたサービスプロバイダであってよい。
【００６５】
このようにして送信されるべきデータ、または送信されるべきデータに対する位置情報が、ブロックチェーンにおいて保管され得る。例えば、ビットコインでは、そうしたデータを保管するためにOP_Return機能が使用され得る。
【００６６】
送信ノードおよび受信ノードは、独立してそれ自身の擬似乱数発生器にシーディングすることができる。本方法は、XORされた（XOR'd）ランダムデータに基づく有効なワンタイムパッド(OTP)を使用するので、このことは、効果的に隠される。各ノードはシードに基づいてそれ自身の擬似乱数生成器を実行し、それが開始された時から順番に従うことができる擬似乱数データのストリームを可能にしている。データがストリームとして送信されるので、XORにおけるエラーは、後で修正され(符号化（encoding））、または、ジャンプ/スキップされ(ライブビデオ)得る。
【００６７】
実施例
上述の方法の例が、ビットコインプロトコルを使用して実装されるものとして、以下に説明される。
（ｉ）メッセージ交換、鍵生成、共通秘密の計算、および対称鍵(AES)の導出は、上述のとおりである。
（ｉｉ）ビットコインのCheckLockTimeVerify(CLTV)オペコードが、ブロックの高さ(または秒（second）)に対する時間に関連する時間変数を生成するために使用される。
（ｉｉｉ）このことから、AES(対称鍵)と時間変数をつかみ、そして、以下のように秘密鍵を計算することができる。
１．  Ｈ１＝Hash-SHA256（Time）          //２５６ビット＃を提供する
２．  ＳＫ＝ＸＯＲ（ＡＥＳ｜Ｈ１）
３．  任意的に、単一使用の値をハッシュして、ＳＫへＸＯＲする
（ｉｖ）擬似ランダム（pseudo-RND）をシーディングするための入力変数としてＳＫを使用する(例えば、ウルフラム規則30)。
（ｖ）擬似ランダムによって返される出力が、XORによって、暗号化されるべきファイルと組み合わされる。
（ｖｉ）暗号化されたファイルが、例えばデータストリームとして、送信される。
（ｖｉｉ）受信者がデータをダウンロードすると、ファイルは、共通秘密から導出された対応するＳＫを使用して、XORを介して復号される。
【００６８】
上述の方法は、各ユーザに非常に高速な単一使用暗号化、効果的なワイヤスピード（wire  speed）を提供することができる。このことは、各ユーザについて別個の鍵を用いてメディアストリーミングサービスを暗号化するために使用することができる。この方法は、ハードウェアに容易に実装することができる。XORと擬似ランダムの部分は単純であり、そして、ゲートとしてのXORは(１００ＧＢネットワークにおいてさえ)効率的にワイヤスピードを提供する。これにより、ルータといったデバイスが、この方法を実行することが可能になり、そして、（単なるメディアやファイルではなく）ストリーム配信VPNサービスとしてさえも使用することができる。そうしたVPNアプリケーションにおいて、各VPN回線は別個のワンタイムパッドを有することができる。さらに、そして、最も重要なことには、この方法は、クラック（cracked）され得ない暗号化プロセスを結果として生じるのである。
【００６９】
上述のデータ伝送方法において、データ暗号化アルゴリズムにおいて使用される擬似乱数発生器に対するシードは、タイトルが「共通秘密の開始と決定」である先のセクションにおいて説明した方法を使用して、それ自身が計算される、共通秘密から導出される。このアプローチは、共通秘密が、ネットワーク上にわたるノード間で送信されず、そして、従って第三者によって傍受され得ないので、特にセキュアである。擬似乱数発生器は決定論的であるため、もしシードが損なわれた（compromised）場合に、もしかするとシステムがハッキングされ得る。対照的に、本方法は、共通秘密／秘密鍵がシステム内のノードにおいて独立して導出される手段を提供するので、本アプローチは、ストリーム暗号（stream  cipher）で使用されるといった、暗号化プロセスにおいて使用される擬似乱数発生器に対する改善されたシーディング方法を提供する。さらに、本アプローチは、複数のユーザについて異なる対称鍵のセットを生成する効率的な手段を提供し、それは、次いで、サービスプロバイダのためのストリーミングアルゴリズムにおいて使用され、複数のユーザにデータを送信する。従って、ここにおいて説明される方法は、共通秘密を導出する改善された方法をストリーミングアルゴリズムと組み合わせて、メディアストリーミング、ストリーム配信仮想プライベートネットワーク（VPN）サービス、大規模ファイル転送といった、アプリケーションに適した、高度にセキュアで、高速な暗号化方法を提供する。
【００７０】
上記に加えて、ストリーミングアルゴリズムまたは他の暗号化されたファイル転送のためのシード方法は、タイトルが「共通秘密の開始と決定」である先のセクションにおいて説明した方法によって計算された共通秘密から生成されるものではない秘密鍵を使用し得ることも、また、想定される。この点に関して、データ伝送は、秘密鍵を導出するために、対称鍵と組み合わせて、追加のデータ、好ましくは単一使用のデータ、を使用することによって、よりセキュアにすることができる。そのように、たとえ秘密鍵が以前に傍受されていた場合でも、それ自体では、データ送信を復号化するために使用することはできない。例えば、データを暗号化し、そして、暗号化されたデータを第１ノードから第２ノードへ送信する方法は、
対称鍵を暗号化されたデータの送信のため追加データと組み合わせることによって、第１ノードにおいて、秘密鍵を導出すること、
秘密鍵を擬似乱数発生器のシードとして利用すること、
暗号化されたデータを生成するために、擬似乱数発生器の出力を送信されるデータと組み合わせること、
暗号化されたデータを第２ノードへ送信すること、
を含んでよい。
【００７１】
第２ノードは、また、共通対称鍵および追加データから対応する秘密鍵を決定する。暗号化されたデータを受信すると、第２ノードは、次に、データを復号化するために秘密鍵を使用することができる。
【００７２】
追加データは、上述のように、ブロックチェーン時間変数またはその暗号化関数(例えば、ハッシュ)といった時間変数であってよく、そして、XOR演算を使用して秘密鍵と組み合わされてよい。追加的または代替的に、追加データは、単一使用の値、または単一使用の値の暗号化関数を含んでいる。単一使用の値は、擬似乱数に対するシードとして使用される秘密鍵を導出するために、(例えば、XOR演算を介して)対称鍵と組み合わされてよい。追加データは、データ信号の復号化を可能にするために、第１および第２ノード間で交換され得る。代替的に、ノード間において追加データの送信を必要としないで、第１および第２ノードによって追加データが導出され得る。例えば、追加データは、共通秘密の生成における使用について上述したスキームを使用して、導出され得るだろう。
【００７３】
当業者であれば、添付の請求項によって定義される本発明の範囲から逸脱することなく、多数の変形及び／又は変更が上述の実施形態に対して成され得ることが正しく理解されるだろう。
【図１】
2020532177.tif 000021
【図２】
2020532177.tif 000022
【図３】
2020532177.tif 000023
【図４】
2020532177.tif 000024
【国際調査報告】
2020532177.tif 000025
2020532177.tif 000026
2020532177.tif 000027