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

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

▶ エヌチェーン ホールディングス リミテッドの特許一覧

特開2023-101776データの高度なセキュリティ、高速暗号化および、伝送のためのコンピュータ実装システムおよび方法
<>
  • 特開-データの高度なセキュリティ、高速暗号化および、伝送のためのコンピュータ実装システムおよび方法 図1
  • 特開-データの高度なセキュリティ、高速暗号化および、伝送のためのコンピュータ実装システムおよび方法 図2
  • 特開-データの高度なセキュリティ、高速暗号化および、伝送のためのコンピュータ実装システムおよび方法 図3
  • 特開-データの高度なセキュリティ、高速暗号化および、伝送のためのコンピュータ実装システムおよび方法 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023101776
(43)【公開日】2023-07-21
(54)【発明の名称】データの高度なセキュリティ、高速暗号化および、伝送のためのコンピュータ実装システムおよび方法
(51)【国際特許分類】
   H04L 9/08 20060101AFI20230713BHJP
   H04L 9/18 20060101ALI20230713BHJP
   G06F 21/60 20130101ALI20230713BHJP
【FI】
H04L9/08 C
H04L9/18
G06F21/60 360
【審査請求】有
【請求項の数】19
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023091339
(22)【出願日】2023-06-02
(62)【分割の表示】P 2020508447の分割
【原出願日】2018-08-15
(31)【優先権主張番号】1713499.0
(32)【優先日】2017-08-23
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】PCT/IB2017/055073
(32)【優先日】2017-08-23
(33)【優先権主張国・地域又は機関】IB
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ライト,クレイグ スティーヴン
(57)【要約】
【課題】
本開示は、メディアストリーミング、ストリーム配信仮想プライベートネットワーク(VPN)サービス、大容量ファイル転送、等といったアプリケーションに適した、高度にセキュアで、高速な暗号化方法に関する。
【解決手段】
例えば、ここにおいて説明される暗号化方法は、例として、メディアサービスプロバイダから、複数のユーザへデータをストリーミングするためのストリーム暗号を提供することができる。所定の構成は、単一使用の暗号化のワイヤスピードを提供する。ここにおいて記載される方法は、ブロックチェーン(例えば、ビットコイン)技術を用いた使用に適している。
【選択図】 図1
【特許請求の範囲】
【請求項1】
データを暗号化して、ネットワーク上で第1ノードから第2ノードへデータを送信するためのコンピュータに実装される方法であって、
前記第1ノードにおいて、前記第1ノードおよび前記第2ノードによって知られている共通秘密から秘密鍵を導出するステップであり、
前記秘密鍵を導出するステップは、共通秘密、または前記共通秘密の変換から結果として生じる対称鍵を、前記暗号化されたデータの送信のための追加データと組み合わせるステップを含み、
前記追加データは、時間変数、または時間変数の暗号化関数を含み、かつ、
前記時間変数は、ブロックチェーン時間変数である、
ステップと、
擬似乱数発生器に対するシードとして、前記秘密鍵を利用するステップと、
暗号化されたデータを生成するために、前記擬似乱数発生器からの出力を、送信されるべきデータと組み合わせるステップと、
前記暗号化されたデータを、前記第2ノードへ送信するステップと、
を含む、方法。
【請求項2】
前記第1ノードは、第1非対称暗号化鍵ペアと関連付けられており、かつ、前記第2ノードは、第2非対称暗号化鍵ペアと関連付けられており、
前記共通秘密は、前記第1ノードと前記第2ノードとの間で前記共通秘密を送信することなく、前記第1非対称暗号化鍵ペアおよび前記第2非対称暗号化鍵ペアそれぞれから、前記第1ノードおよび前記第2ノードにおいて導出される、
請求項1に記載の方法。
【請求項3】
前記秘密鍵を導出するステップは、前記共通秘密を前記追加データと組み合わせる以前に、前記共通秘密を対称鍵へと変換するステップを含む、
請求項1または2に記載の方法。
【請求項4】
前記追加データは、前記第1ノードと前記第2ノードとの間で前記追加データを送信することなく、前記第1ノードおよび前記第2ノードにおいて導出される、
請求項1乃至3いずれか一項に記載の方法。
【請求項5】
前記追加データは、単一使用の値、または単一使用の値の暗号化関数を含む、
請求項1乃至4いずれか一項に記載の方法。
【請求項6】
前記時間変数は、ブロックチェーンのブロック高さに関連付けられている、
請求項1乃至5いずれか一項に記載の方法。
【請求項7】
前記追加データは、擬似乱数発生器に対するシードを生成するために、排他演算または(XOR)演算を使用して、前記共通秘密または前記対称鍵と組み合わされる、
請求項1乃至6いずれか一項に記載の方法。
【請求項8】
前記擬似乱数発生器は、ゼータ関数、またはウルフラム規則30関数に基づいている、
請求項1乃至7いずれか一項に記載の方法。
【請求項9】
前記擬似乱数発生器の出力は、前記暗号化されたデータを生成するために、排他演算または(XOR)演算を使用して、送信されるべきデータと組み合わされる、
請求項1乃至8いずれか一項に記載の方法。
【請求項10】
前記擬似乱数発生器の出力は、ワンタイムパッドとして使用される、
請求項1乃至9いずれか一項に記載の方法。
【請求項11】
前記暗号化されたデータの送信は、擬似ランダムビットストリームの送信を含む、
請求項1乃至10いずれか一項に記載の方法。
【請求項12】
前記擬似ランダムビットストリームは、仮想プライベートネットワーク(VPN)サービス、またはストリーム配信データサービスのうち1つまたはそれ以上である、
請求項1乃至11いずれか一項に記載の方法。
【請求項13】
前記第1ノードは、各ユーザに対して異なる共有対称鍵を使用して、暗号化されたデータを複数のユーザへ送信するように構成されたサービスプロバイダである、
請求項1乃至12いずれか一項に記載の方法。
【請求項14】
前記第2ノードは、前記暗号化されたデータを受信し、かつ、前記共通秘密を使用して前記データを復号化する、
請求項1乃至13いずれか一項に記載の方法。
【請求項15】
前記第2ノードは、受信の際に前記暗号化されたデータに排他演算または(XOR)演算を適用することによって、前記暗号化されたデータを受信の際に復号化する、
請求項1乃至14いずれか一項に記載の方法。
【請求項16】
前記第2ノードは、前記暗号化されたデータを復号化するために、前記第1ノードとは独立して、自身の擬似乱数発生器にシーディングする、
請求項1乃至15いずれか一項に記載の方法。
【請求項17】
コンピュータ実行可能命令を含み、1つまたはそれ以上のプロセッサによって実行されると、請求項1乃至16いずれか一項に記載の方法を実行するように構成されている、コンピュータ可読記憶媒体。
【請求項18】
電子デバイスであって、
インターフェイス装置と、
前記インターフェイス装置に接続された1つまたはそれ以上のプロセッサと、
前記1つまたはそれ以上のプロセッサに接続されたメモリであり、コンピュータ実行可能命令を保管している、メモリと、を含み、
前記コンピュータ実行可能命令が実行されると、前記1つまたはそれ以上のプロセッサに請求項1乃至16いずれか一項に記載の方法を実行させる、ように構成されている、
電子デバイス。
【請求項19】
ブロックチェーンネットワークのノードであって、
前記ノードは、請求項1乃至16いずれか一項に記載の方法を実行する、ように構成されている、
ノード。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、メディアストリーミング、ストリーム配信(streamed)仮想プライベートネットワーク(VPN)サービス、大容量ファイル転送、等といった、アプリケーションに適した、高度にセキュアで、高速な暗号化方法に関する。例えば、ここにおいて説明される暗号化方法は、例として、メディアサービスプロバイダから複数のユーザへデータをストリーミングするためのストリーム暗号(stream ciphers)を提供することができる。特定の実施形態は、単一使用の暗号化のワイヤスピード(wire speed)に関する。ここにおいて説明される方法は、ブロックチェーン(例えば、ビットコイン)技術を用いた使用に適している。
【背景技術】
【0002】
暗号化は、2つまたはそれ以上のノード間でのセキュアな通信のための技術を含んでいる。ノードは、移動通信装置、タブレットコンピュータ、ラップトップコンピュータ、デスクトップ、他の形態のコンピューティングデバイスおよび通信装置、ネットワークにおけるサーバ装置、ネットワークにおけるクライアント装置、分散ネットワークにおける1つまたはそれ以上のノード、ルータ、等を含んでよい。ノードは、自然人、企業の従業員といった人のグループ、メディアストリーミングプロバイダといったサービスプロバイダ、銀行システムといったシステム、等と関連付けされ得る。
【0003】
いくつかの事例において、2つまたはそれ以上のノードは、セキュアでない(unsecure)通信ネットワークによってリンクされることがある。例えば、2つのノードは、第三者がノード間の通信を盗聴(eavesdrop)することができる通信ネットワークによってリンクされることがある。従って、ノード間で送信されるメッセージは、暗号化された形式で送信されてよく、そして、受信時に、意図された受信者が、対応する復号鍵を用いて(または、他の復号方法)メッセージを復号することができる。このように、そうした通信のセキュリティは、第三者が対応する復号鍵を決定するのを防止することに依存し得るものである。
【0004】
暗号化の1つの方法は、対称鍵(symmetric-key)アルゴリズムを使用することを含んでいる。鍵は、プレーンテキストメッセージの暗号化および暗号化テキストの復号化の両方のために同一の対称鍵が使用されるという意味で対称的である。対称鍵アルゴリズムを使用することの1つの考察は、盗聴者が対称鍵を取得するのを防止するように、どのようにして両方のノードに対して対称鍵をセキュアな方法で送信するかである。このことは、例えば、セキュアでない通信ネットワーク上で対称鍵が決して転送されないように、(認可された)ノードに対して対称鍵を物理的に配送することを含み得る。しかしながら、物理的な配送は必ずしもオプションではない。従って、そうした暗号システムにおける問題は、セキュアでないネットワーク上にわたるノード間で対称鍵(共通秘密(common secret)に基づいてよい)を確立することである。最近、状況により、鍵の送信が、たいてい、インターネットといった通信システム上で電子的に行われることが望ましいことがある。従って、共有秘密鍵(shared secret)(例えば、対称鍵)を提供するこのステップは、潜在的には壊滅的な脆弱性(vulnerability)である。対称鍵アルゴリズム(およびプロトコル)は、単純であり、かつ、広く使用されているので、2つのノードについてセキュアでないネットワーク上にわたり共通秘密をセキュアに決定する能力に対する必要性が存在している。
【0005】
暗号化の別の方法は、ストリームアルゴリズム(stream algorithm)である。ここでは、擬似乱数生成器のためのシード(seed)として対称鍵が使用され、そして、擬似乱数生成器からの出力が、排他演算または(XOR)演算を使用するなどして、データストリームと組み合わされて、ストリーム暗号を生成する。受信者は、ストリーム暗号を復号するために対称鍵を使用する。欧州特許出願第1063811号は、擬似乱数発生器にシーディング(seeding)するために対称鍵アプローチを利用する、そうした方法の一つの例を説明している。しかしながら、そうしたシステムのセキュリティは、再び、盗聴者が対称鍵を取得するのを防止するために、セキュアな方法で、両方のノードに対して対称鍵を送信することに依存し得る。
【0006】
他の既存の暗号方式は、非対称鍵(asymmetric-key)を使用することが含まれる。これらは、非対称鍵が秘密鍵(private key)および対応する公開鍵(public key)を含む、公開鍵暗号において使用され得るものである。公開鍵は、公に利用可能にされ得るが、一方で、秘密鍵は、名前が暗示するように、秘密に保たれる。これらの非対称鍵は、公開鍵暗号化、および、何よりもデジタル署名のために使用され得る。既存のプロトコルには、ディフィー・ヘルマン鍵共有(Diffie-Hellman Key Exchange)、および、セキュアでないネットワーク上にわたり秘密のセキュアな共有を可能にする3パスプロトコル(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)の生成に対して適していない。
【0007】
上記に照らして、暗号データ転送を実装するための従来技術の構成における一つの技術的問題、そして、たいてい最も重要な考慮事項は、セキュリティであることが正しく理解されるだろう。ストリーミングおよびより大きなデータ転送といった、特定のアプリケーションについて暗号データ転送を実装するための従来技術の構成における別の技術的問題は、速度の問題である。暗号データ転送を実装するための従来技術の構成におけるさらに別の技術的な問題は、システムのセットアップ/サブスクリプション(subscription)、鍵管理、および一般的なユーザビリティに関して、容易に使用できることである。
【0008】
上述の技術的問題は、相互に関連し得るものであり、そして、システムの所望の特性間には、しばしばトレードオフがあり得る。例えば、特定のシステムは、高度にセキュアであるが、データのストリーミングまたは大規模データの転送については遅く、そして、適さないことがある。他のシステムは、高速であるが、ハッキングの影響を受けやすいことがある。他のシステムは、比較的にセキュアであり、かつ、高速であり得るが、現実世界のアプリケーションにおけるセットアップ、使用、及び/又は管理が困難であり得る。
【0009】
本発明の実施形態の目的は、これらの問題について技術的ソリューションを提供することである。
【発明の概要】
【0010】
データを暗号化して、ネットワーク上で第1ノードから第2ノードへデータを送信するためのコンピュータに実装される方法が、ここにおいて説明される。本方法は、
前記第1ノードにおいて、前記第1ノードおよび前記第2ノードによって知られている共通秘密から秘密鍵を導出するステップと、
擬似乱数発生器に対するシードとして、前記秘密鍵を利用するステップと、
暗号化されたデータを生成するために、前記擬似乱数発生器からの出力を、送信されるべきデータと組み合わせるステップと、
前記暗号化されたデータを前記第2ノードへ送信するステップと、を含む。
【0011】
一つのコンフィグレーションに従って、前記第1ノードは、第1非対称暗号化鍵ペアと関連付けられており、かつ、前記第2ノードは、第2非対称暗号化鍵ペアと関連付けられており、前記共通秘密は、前記第1ノードと前記第2ノードとの間で前記共通秘密を送信することなく、前記第1非対称暗号化鍵ペアおよび前記第2非対称暗号化鍵ペアそれぞれから、前記第1ノードおよび前記第2ノードにおいて導出される。暗号化されたデータは、擬似ランダムビットストリームとして送信することができる。
【0012】
ここにおいて説明される方法は、共通秘密を共有する改善された方法を、ストリーミングアルゴリズムと組み合わせて、メディアストリーミング、ストリーム配信仮想プライベートネットワーク(VPN)サービス、大容量ファイル転送、等といったアプリケーションに適した、高度にセキュアで、高速な暗号化方法を提供する。
【0013】
ここにおいて説明される方法は、また、複数のユーザについて異なる対称鍵のセットを生成する改善された方法を、複数のユーザに対してデータを送信するためのサービスプロバイダのためのストリーミングアルゴリズムと組み合わせる。
【0014】
ここにおいて説明される方法は、また、ストリーミングアルゴリズムにおいて適用されるといった、暗号化方法で使用される擬似乱数発生器のための改善されたシーディング(seeding)方法を提供する。
【0015】
ここにおいて説明される方法は、また、高度にセキュアで、高速で、単一使用の暗号化システムを提供する。
【0016】
実施形態は、様々な形態で提供され得る。例えば、コンピュータ実行可能命令を含むコンピュータ読取可能記憶媒体が提供され得る。実行されると、ここにおいて説明される方法を1つまたはそれ以上のプロセッサに実施させるよう構成されたものである。電子装置も、また、提供され得る。インターフェイス装置、該インターフェイス装置に接続された1つまたはそれ以上のプロセッサ、該1つまたはそれ以上のプロセッサに接続されたメモリを含む。該メモリは、コンピュータ実行可能命令を保管しており、実行されると、ここにおいて説明される方法を1つまたはそれ以上のプロセッサに実施させるよう構成されている。さらに、また、ブロックチェーンネットワークのノードが提供され得る。ノードは、ここにおいて説明される方法を実施するように構成されている。
【0017】
本発明の実施形態は2つの非常に異なるタイプの暗号技術に係る所定の機能を利用することが留意されるべきである。セキュアでないネットワーク上にわたる秘密のセキュアな共有のために、非対称鍵を使用することが知られている。さらに、擬似乱数生成器に対するシードとして対称鍵を使用すること、そして、擬似乱数生成器からの出力をデータストリームと組み合わせてストリーム暗号を生成することが知られている。背景技術のセクションで説明される先行技術において開示も示唆もされていないものは、ネットワーク上の2つの異なるノードによって知られている共通秘密から導出される秘密鍵(例えば、非対称鍵を使用してノードによって導出可能である共通秘密)を、擬似乱数発生器に対するシードとして利用することであり、そして、次いで、ネットワーク上にわたり第1ノードから第2ノードへ送信される暗号化されたデータを生成するために、擬似乱数発生器からの出力を送信されるべきデータと組み合わせることである。ストリーミングデータの従来技術の方法は、対称鍵プロトコルを使用している。ストリーミングデータのための非対称鍵プロトコルの使用は、そうした従来の対称鍵ストリーミングプロトコルよりも新規である。さらに、ここにおいて説明される方法は、ストリーミングおよび大規模データ転送に適した高速暗号化を保持しながらも、よりセキュアな方法を提供することができるので有利である。加えて、ここにおいて説明される実施形態は、実世界のアプリケーションにおいて、セットアップ、使用、および管理が容易である。例えば、本方法は、ブロックチェーンからデータをストリーミング/送信するために使用することができる。例として、映画およびテレビ番組といったメディアがブロックチェーン上に保管されており、そして、要求に応じてエンドユーザに対してセキュアにストリーミングできる、ブロックチェーンメディアストリーミングシステムを提供する。そうしたシステムは、また、暗号化通貨、例えばビットコイン、の転送を介して要求されたサービスに対してセキュアな自動化された支払いを可能にする。これらの有利な特徴は、背景技術のセクションで説明される先行技術において開示も示唆もされていない。
【図面の簡単な説明】
【0018】
本発明のこれらおよび他の態様は、ここにおいて説明される実施形態から明らかであり、そして、それらを参照して解明される。これから、本発明の実施形態が、単なる例示として、そして、添付の図面を参照して説明される。
図1図1は、第1ノードおよび第2ノードの共通秘密を決定するためのシステムの一つの例の概略図である。
図2図2は、共通秘密を決定するためのコンピュータ実装方法のフローチャートである。
図3図3は、第1ノードと第2ノードとの間のセキュアな通信のためのコンピュータ実装方法のフローチャートである。
図4図4は、擬似乱数発生器を使用する第1ノードと第2ノードとの間のセキュアな通信のためのコンピュータ実装方法のフローチャートである。
【発明を実施するための形態】
【0019】
これから、第2ノードと同一の共通秘密(common secret、CS)である共通秘密を第1ノードにおいて決定する方法、デバイス、システムが説明される。
【0020】
図1は、通信ネットワーク5を介して、第2ノード7と通信する第1ノード3を含むシステム1を示している。第1ノード3は、関連する第1処理装置23を有し、そして、第2ノード7は、関連する第2処理装置27を有している。第1および第2ノード3、7は、コンピュータ、タブレットコンピュータ、移動通信装置、コンピュータサーバ、等といった、電子装置を含み得る。一つの例において、第1ノード3は、クライアント装置であってよく、そして、第2ノード7は、サーバであってよく、または、その逆も同様である。第1および第2ノードは、関連するデータストア(data store)13、17を有し、そして、任意的に、ユーザインターフェイス15を有し得る。図1に示されるようにシステムは、また、関連するデータストア19を有する第3ノード9も含み、そして、さらに盗聴器11を含んでいる。システム1は、ブロックチェーンネットワークの一部を形成することができる。
【0021】
第1ノード3は、第1ノードマスタ秘密鍵(V1C)および第1ノードマスタ公開鍵(P1C)を有する第1非対称暗号化鍵(cryptography key)ペアと関連付けられている。第1ノードマスタ公開鍵(P1C)は、第1ノードマスタ秘密鍵(V1C)の楕円曲線点乗算および等式に従った共通ジェネレータ(G)に基づいて決定される。
【数1】
【0022】
共通発生器(common generator)Gは、選択され、ランダムに生成され、または、割り当てられてよい。第1非対称暗号化鍵ペアは、以下を含んでいる。
1C:第1ノードによって秘密に保持される第1ノードマスタ秘密鍵
1C:公知にされている第1ノードマスタ公開鍵
【0023】
第1ノード3と同様に、第2ノード7は、第2ノードマスタ秘密鍵(V1S)および第2ノードマスタ公開鍵(P1S)を有する第2非対称暗号化鍵ペアと関連付けられている。第2ノードマスタ公開鍵(P1S)は、次の等式によって決定される。
【数2】
【0024】
従って、第2非対称暗号化鍵ペアは、以下を含んでいる。
1S:第2ノードによって秘密に保持される第2ノードマスタ秘密鍵
1S:公知にされている第2ノードマスタ公開鍵
【0025】
第1ノード3および第2ノード7の両方における共通秘密(CS)を決定するために、ノード3、7は、通信ネットワーク5を介して秘密鍵を通信することなく、以下に説明されるステップを実行する。
【0026】
共通秘密の開始と決定
これから、図2を参照して、共通秘密(CS)を決定する一つの例が説明される。共通秘密(CS)は、特定のセッション、時間、トランザクション、データ送信、または、他の目的のために、第1ノード3と第2ノード7との間で使用され得るものであり、そして、同一の共通秘密(CS)を再使用(re-use)することは望ましくないか、またはセキュアでない。従って、共通秘密(CS)は、異なるセッション、時間、トランザクション、データストリーミングアプリケーション、等の間で変更され得る。
【0027】
この実施例において、第1ノード3によって実行される方法300は、メッセージ(M)を生成すること310を含んでいる。メッセージ(M)は、ランダム、擬似ランダム、または、ユーザ定義であってよい。一つの例において、メッセージ(M)は、Unix時間とノンス(nonce)(任意の値)に基づいている。例えば、メッセージ(M)は、以下のように提供され得る。
【数3】
【0028】
いくつかの実施例において、メッセージ(M)は任意である。しかしながら、メッセージ(M)は、いくつかのアプリケーションにおいて有用であり得る選択値(Unix Time、等といったもの)を有し得ることが正しく理解されるべきである。
【0029】
方法300は、通信ネットワーク5を介して、第2ノード7に対して、メッセージ(M)を送信すること315を含んでいる。メッセージ(M)は秘密鍵について情報を含まないので、メッセージ(M)はセキュアでないネットワークを介して送信されてよい。
【0030】
方法300は、さらに、メッセージ(M)に基づいて決定論的鍵(deterministic key、DK)320を決定するステップを含んでいる。この実施例において、このことは、メッセージの暗号化ハッシュ(cryptographic hash)を決定することを含んでいる。暗号化ハッシュアルゴリズムの一つの例は、256ビットの決定論的鍵(DK)を生成するためのSHA-256を含んでいる。つまり、
【数4】
である。
【0031】
他のハッシュアルゴリズムが使用され得ることが正しく理解されるべきである。
【0032】
方法300は、次に、第2ノードマスタ秘密鍵(V1C)および決定論的鍵(DK)に基づいて第1ノード第2秘密鍵(V2C)を決定するステップ330を含んでいる。これは、以下の等式に従った、第1ノードマスタ秘密鍵(V1C)と決定論的鍵(DK)のスカラー加算(scalar addition)に基づくことができる。
【数5】
【0033】
従って、第1ノード第2秘密鍵(V2C)はランダム値ではなく、しかし、代わりに第1ノードマスタ秘密鍵から決定論的に導出される。暗号化鍵ペアにおける対応する公開鍵、すなわち、第1ノード第2公開鍵(P2C)は、以下の関係を有している。
【数6】
【0034】
等式5を等式6へ代入すると、
【数7】
となる。
【0035】
ここで、「+」演算子はスカラー加算を参照し、そして、「×」演算子は楕円曲線点乗算(elliptic curve point multiplication)を参照する。楕円曲線暗号代数が分配的(distributive)であることに留意すると、等式7は、以下のように表され得る。
【数8】
【0036】
最終的に、式1を式8に代入して、次式となり得る。
【数9】
【数10】
【0037】
等式8から等式9.2において、「+」演算子は楕円曲線点加算を参照する。従って、対応する第1ノード第2公開鍵(P2C)は、第1ノードマスタ公開鍵(P1C)およびメッセージ(M)の知識が与えられれば導出することができる。第2ノード7は、方法400に関して以下でさらに詳細に説明されるように、第1ノード第2公開鍵(P2C)を独立して決定するために、そうした知識を有し得る。
【0038】
方法300は、さらに、メッセージ(M)および決定された第1ノード第2秘密鍵(V2C)に基づいて、第1署名済メッセージ(signed message)(SM1)を生成すること350を含んでいる。署名済メッセージを生成することは、メッセージ(M)をデジタル的に署名するために、デジタル署名アルゴリズムを適用することを含んでいる。一つの例において、これは、第1署名済メッセージ(SM1)を獲得するために、楕円曲線デジタル署名アルゴリズム(ECDSA)においてメッセージに対して第1ノード第2秘密鍵(V2C)を適用することを含んでいる。
【0039】
第1署名済メッセージ(SM1)は、第2ノード7において対応する第1ノード第2公開鍵(P2C)を用いて検証され得る。第1署名済メッセージ(SM1)に係るこの検証は、第1ノード3を認証するために第2ノード7によって使用され得るものであり、以下で方法400において説明される。
【0040】
第1ノード3は、次に、第2ノード第2公開鍵(P2S)を決定すること370ができる。上述のように、第2ノード第2公開鍵(P2S)は、少なくとも第2ノードマスタ公開鍵(P1S)および決定論的鍵(DK)に基づいてよい。この実施例において、公開鍵は、生成器(G)による楕円曲線点乗算を用いた秘密鍵として決定される370'ので、第2ノード第2公開鍵(P2S)は、等式6と同様の方法で、以下のように表すことができる。
【数11】
【数12】
【0041】
第1ノード3は、第2ノード7とは独立して第2ノード第2公開鍵を決定することができる370'ことが正しく理解されるべきである。
【0042】
第1ノード3は、次に、決定された第1ノード第2秘密鍵(V2C)および決定された第2ノード第2公開鍵(P2S)に基づいて、共通秘密(CS)を決定すること380ができる。共通秘密(CS)は、以下の等式によって、第1ノード3により決定され得る。
【数13】
【0043】
これから、第2ノード7において実行される対応する方法400が説明される。これらのステップのいくつかは、第1ノード3によって実行される上述のステップと同様であることが正しく理解されるべきである。
【0044】
方法400は、第1ノード3から、通信ネットワーク5を介して、メッセージ(M)を受信すること410含んでいる。これは、ステップ315において第1ノード3によって送信されるメッセージ(M)を含み得る。第2ノード7は、次に、メッセージ(M)に基づいて決定論的鍵(DK)を決定する420。第2ノード7によって決定論的鍵(DK)を決定するステップ420は、上述の第1ノードによって実行されるステップ320と同様である。この実施例において、第2ノード7は、第1ノード3とは独立して、この決定ステップ420を実行する。
【0045】
次のステップは、第1ノードマスタ公開鍵(P1C)および決定論的鍵(DK)に基づいて、第1ノード第2公開鍵(P2C)を決定すること430'を含んでいる。この実施例においては、公開鍵が生成器(G)による楕円曲線点乗算を用いた秘密鍵として決定される430'ので、第1ノード第2公開鍵(P2C)は、等式9と同様の方法で、次のように表すことができる。
【数14】
【数15】
【0046】
方法400は、主張される(alleged)第1ノード3が第1ノード3であることを認証するために、第2ノード7によって実行されるステップを含んでよい。上述のように、これは、第1ノード3から第1署名済メッセージ(SM1)を受信すること440を含んでいる。第2ノード7は、次に、ステップ430で決定された第1ノード第2公開鍵(P2C)を用いて、第1署名済メッセージ(SM1)について署名を検証すること450ができる。
【0047】
デジタル署名を検証することは、上述のような楕円曲線デジタル署名アルゴリズム(ECDSA)に従って行われ得る。重要なことには、第1ノード第2秘密鍵(V2C)を用いて署名された第1署名済メッセージ(SM1)は、対応する第1ノード第2公開鍵(P2C)だけを用いて正しく検証されるべきことである。V2CおよびP2Cが暗号化鍵ペアを形成するからである。これらの鍵は、第1ノード3の登録において生成された第1ノードマスタ秘密鍵(V1C)および第1ノードマスタ公開鍵(P1C)について決定論的であるため、第1署名済メッセージ(SM1)を検証することは、第1署名済メッセージ(SM1)を送信している主張される第1ノードが登録の最中における同じ第1ノード3であることを認証することの基礎として使用することができる。従って、第2ノード7は、さらに、第1署名済メッセージを検証(450)した結果に基づいて、第1ノード3を認証(460)するステップを実行し得る。
【0048】
上記の認証は、2つのノードのうち1つが信頼できるノードであり、かつ、ノードの1つだけが認証されることを要するシナリオについて適しているだろう。例えば、第1ノード3はクライアントであってよく、そして、第2ノード7はクライアントによって信頼されるサーバであってよい。従って、サーバ(第2ノード7)は、クライアントがサーバシステムにアクセスできるようにするために、クライアント(第1ノード3)のクレデンシャル(credentials)を認証する必要があり得る。サーバについて、クライアントに対するサーバのクレデンシャルを認証することは必要ないであろう。しかしながら、いくつかのシナリオにおいては、両方のノードについて相互に認証されることが望ましいだろう。以下に別の実施例において説明されるピアツーピア(peer-to-peer)のシナリオ、といったものである。
【0049】
方法400は、さらに、第2ノードマスタ秘密鍵(V1S)および決定論的鍵(DK)に基づいて第2ノード第2秘密鍵(V2S)を決定する第2ノード7を含むことができる。第1ノード3によって実行されるステップ330と同様に、第2ノード第2秘密鍵(V2S)は、以下の等式に従った、第2ノードマスタ秘密鍵(V1S)および決定論的鍵(DK)のスカラー加算に基づくことができる。
【数16】
【数17】
【0050】
第2ノード7は、次に、第1ノード3とは独立して、以下の等式に基づいて、第2ノード第2秘密鍵(V2S)および第1ノード第2公開鍵(P2C)に基づいて、共通秘密(CS)を決定する480ことができる。
【数18】
【0051】
重要なことには、共通秘密が、ノード間における送信を必要とすることなく、独立して導出されることである。さらに、ノードは、共通秘密(CS)を保管する必要がない。メッセージ(M)に基づいて再度決定することができるからである。いくつかの実施例において、使用されるメッセージ(M)は、マスタ秘密鍵に対して必要とされるのと同じレベルのセキュリティを伴わずに、データストア13、17、19(または他のデータストア)において保管されてよい。いくつかの実施例において、メッセージ(M)は公に利用可能である。いくつかのアプリケーションについては、共有秘密(CS)が第1ノードマスタ秘密鍵(V1C)と同じくセキュアに保持されていれば、共有秘密(CS)は、第1ノードと関連付けられた第1データストア(13)において保管され得るだろう。
【0052】
開示されたシステムは、また、単一のマスタ鍵暗号化ペアに基づいて複数のセキュアな秘密鍵に対応し得る複数の共通秘密を決定することを可能にする。この利点は、以下の実施例によって説明され得る。
【0053】
複数のセッションが存在し、それぞれが複数の各自の共通秘密(CS)と関連付けられている状況においては、将来のために各自の共通秘密(CS)が再度決定され得るように、これら複数のセッションと関連付けられたレコードを有することが望ましいであろう。既知のシステムにおいて、このことは、複数の秘密鍵がセキュアなデータストアにおいて保管されることを必要としてきており、これは、維持するのに高価であり、または不便であり得る。対照的に、本システムは、第1および第2ノードそれぞれにおいてセキュアに保持されたマスタ秘密鍵を有しており、一方で、他の決定論的鍵、またはメッセージ(M)は、セキュアに、またはセキュアでなく、のいずれかで保管され得る。決定論的鍵(DK)、またはメッセージ(M)がセキュアでなく保管されていても、複数の共通秘密(CS)はセキュアに保持されている。共通秘密を決定するために必要とされるマスタ秘密鍵は依然としてセキュアだからである。
【0054】
対称鍵アルゴリズムにおける共通秘密の使用
共通秘密(CS)は、秘密鍵として、または、第1ノード3と第2ノード7との間のセキュアな通信のための対称鍵アルゴリズムにおける秘密鍵の基礎として使用され得る。
【0055】
共通秘密(CS)は、楕円曲線点(x、y)の形態であってよい。これは、ノード3、7によって合意された標準的な公知の操作を使用して、標準的な鍵フォーマットへと変換され得る。例えば、x値は、AES256暗号化のための鍵として使用され得る256ビットの整数であってよい。また、この長さの鍵を必要とする任意のアプリケーションについて、RIPEMD160を使用して160ビットの整数にも変換され得る。
【0056】
第1ノード3と第2ノード7との間におけるセキュアな通信の方法500、600が、これから、図3を参照して説明される。第1ノード3は、上記の方法において決定された共通秘密(CS)に基づいて、対称鍵を決定する510。これは、共通秘密(CS)を標準的な鍵フォーマットへ変換することを含んでよい。同様に、第2ノード7は、また、共通秘密(CS)に基づいて、対称鍵を決定する610こともできる。
【0057】
第1通信メッセージを、通信ネットワークを介して、第1ノード3から第2ノードへセキュアに送信するためには、第1通信メッセージが暗号化される必要がある。従って、暗号化された第1通信メッセージを形成するように第1通信メッセージを暗号化する520ために、対称鍵は、第1ノードによって使用され、次に、通信ネットワーク5を介して、第2ノード7へ送信される530。第2ノード7は、順番に、暗号化された第1通信メッセージを受信し620、そして、暗号化された第1通信メッセージを、対称鍵を用いて、第1通信メッセージへ復号化する630。
【0058】
同様に、第2ノード7は、第2通信メッセージを、対称鍵を用いて、暗号化された第2通信メッセージへ暗号化し640、次いで、第1ノード3へ送信する650。第1ノード3は、次に、暗号化された第2通信メッセージを受信540し、そして、第2通信メッセージへ復号化する550ことができる。
【0059】
擬似乱数発生器をシーディングするための共通秘密の使用(例えば、ストリーミングアルゴリズムにおけるもの)
上記から続いて、共通秘密(CS)は、ストリーミングアルゴリズムにおいて使用され得るような擬似乱数発生器をシーディングする(seeding)ために、秘密鍵として、または秘密鍵の基礎として使用され得る。そうした方法700は、図4に示されており、そして、
第1ノードにおいて、第1および第2ノードによって知られている共通秘密から秘密鍵を導出すること710、
擬似乱数発生器のシードとして秘密鍵を利用すること720、
暗号化されたデータを生成するために、擬似乱数発生器からの出力を送信されるデータと組み合わせること730、および
暗号化されたデータを第2ノードへ送信すること740、
を含んでいる。
【0060】
第2ノードは、また、共通秘密から対応する秘密鍵を決定する810。暗号化されたデータを受信する820と、第2ノードは、次に、データを復号化するために秘密鍵を利用することができる。
【0061】
秘密鍵は、共通秘密の形式を所望の非対称鍵形式、例えば、高度暗号化標準(Advanced Encryption Standard、(AES))へと変換することによって、共通秘密から導出することができる。この非対称鍵は、さらに、例えば、排他的または(XOR)演算によって、他のデータと組み合わせることができる。他のデータは、時間変数、または時間変数の暗号化関数(例えば、ハッシュ)を含んでよい。時間変数は、ブロックチェーンのブロック高さに関連付けられた時間変数であってよい。例えば、ビットコインにおいては、時間変数を生成するためにCheckLockTimeVerify(CLTV)が使用され得る。その場合には、CLTVがブロックチェーンへ書き込まれ、そして、その時点からアクセスされ得る。このようにして、例えば、ブロックが公開され、その時点で共有された後で、ビデオストリームを利用可能にすることができる。
【0062】
時間変数のハッシュが、秘密鍵を定義するために、計算され、そして、(例えば、XOR演算によって)非対称鍵と組み合わせされ得る。秘密鍵は、追加的または代替的に、秘密鍵を用いてハッシュされ、そして、(例えば、XOR演算によって)組み合わされた単一使用の値(single use value)と組み合わされてよい。この場合に、単一使用の値は、データ送信に対する2つのノード間で交換されるか、または2つのノードによって導出されるように要求される。
【0063】
擬似乱数生成器は、既知の擬似乱数生成器であり得る。ゼータ関数(http://keisan.casio.com/exec/system/1180573439)、またはウルフラム規則30(Wolfram Rule 30)関数(http://mathworld.wolfram.com/Rule30.html)に基づく、といったものである。擬似乱数発生器の出力は、排他的または(XOR)演算を使用して、送信されるデータと組み合わせることができる。擬似乱数発生器の出力は、単一使用の暗号化として使用され得る。例えば、ワンタイムパッド(one-time pad)である。
【0064】
暗号化されたデータを送信することは、擬似ランダムビットストリームの送信を含んでよい。擬似ランダムビットストリームは、VPNサービス、またはストリームメディアサービスを提供することができる。例えば、送信者は、各ユーザに対して異なる共有対称鍵(shared symmetric key)を使用して、複数のユーザへ組み合わされたデータを送信するように構成されたサービスプロバイダであってよい。
【0065】
このようにして送信されるべきデータ、または送信されるべきデータに対する位置情報が、ブロックチェーンにおいて保管され得る。例えば、ビットコインでは、そうしたデータを保管するためにOP_Return機能が使用され得る。
【0066】
送信ノードおよび受信ノードは、独立してそれ自身の擬似乱数発生器にシーディングすることができる。本方法は、XORされた(XOR'd)ランダムデータに基づく有効なワンタイムパッド(OTP)を使用するので、このことは、効果的に隠される。各ノードはシードに基づいてそれ自身の擬似乱数生成器を実行し、それが開始された時から順番に従うことができる擬似乱数データのストリームを可能にしている。データがストリームとして送信されるので、XORにおけるエラーは、後で修正され(符号化(encoding))、または、ジャンプ/スキップされ(ライブビデオ)得る。
【0067】
実施例
上述の方法の例が、ビットコインプロトコルを使用して実装されるものとして、以下に説明される。
(i)メッセージ交換、鍵生成、共通秘密の計算、および対称鍵(AES)の導出は、上述のとおりである。
(ii)ビットコインのCheckLockTimeVerify(CLTV)オペコードが、ブロックの高さ(または秒(second))に対する時間に関連する時間変数を生成するために使用される。
(iii)このことから、AES(対称鍵)と時間変数をつかみ、そして、以下のように秘密鍵を計算することができる。
1. H1=Hash-SHA256(Time) //256ビット#を提供する
2. SK=XOR(AES|H1)
3. 任意的に、単一使用の値をハッシュして、SKへXORする
(iv)擬似ランダム(pseudo-RND)をシーディングするための入力変数としてSKを使用する(例えば、ウルフラム規則30)。
(v)擬似ランダムによって返される出力が、XORによって、暗号化されるべきファイルと組み合わされる。
(vi)暗号化されたファイルが、例えばデータストリームとして、送信される。
(vii)受信者がデータをダウンロードすると、ファイルは、共通秘密から導出された対応するSKを使用して、XORを介して復号される。
【0068】
上述の方法は、各ユーザに非常に高速な単一使用暗号化、効果的なワイヤスピード(wire speed)を提供することができる。このことは、各ユーザについて別個の鍵を用いてメディアストリーミングサービスを暗号化するために使用することができる。この方法は、ハードウェアに容易に実装することができる。XORと擬似ランダムの部分は単純であり、そして、ゲートとしてのXORは(100GBネットワークにおいてさえ)効率的にワイヤスピードを提供する。これにより、ルータといったデバイスが、この方法を実行することが可能になり、そして、(単なるメディアやファイルではなく)ストリーム配信VPNサービスとしてさえも使用することができる。そうしたVPNアプリケーションにおいて、各VPN回線は別個のワンタイムパッドを有することができる。さらに、そして、最も重要なことには、この方法は、クラック(cracked)され得ない暗号化プロセスを結果として生じるのである。
【0069】
上述のデータ伝送方法において、データ暗号化アルゴリズムにおいて使用される擬似乱数発生器に対するシードは、タイトルが「共通秘密の開始と決定」である先のセクションにおいて説明した方法を使用して、それ自身が計算される、共通秘密から導出される。このアプローチは、共通秘密が、ネットワーク上にわたるノード間で送信されず、そして、従って第三者によって傍受され得ないので、特にセキュアである。擬似乱数発生器は決定論的であるため、もしシードが損なわれた(compromised)場合に、もしかするとシステムがハッキングされ得る。対照的に、本方法は、共通秘密/秘密鍵がシステム内のノードにおいて独立して導出される手段を提供するので、本アプローチは、ストリーム暗号(stream cipher)で使用されるといった、暗号化プロセスにおいて使用される擬似乱数発生器に対する改善されたシーディング方法を提供する。さらに、本アプローチは、複数のユーザについて異なる対称鍵のセットを生成する効率的な手段を提供し、それは、次いで、サービスプロバイダのためのストリーミングアルゴリズムにおいて使用され、複数のユーザにデータを送信する。従って、ここにおいて説明される方法は、共通秘密を導出する改善された方法をストリーミングアルゴリズムと組み合わせて、メディアストリーミング、ストリーム配信仮想プライベートネットワーク(VPN)サービス、大規模ファイル転送といった、アプリケーションに適した、高度にセキュアで、高速な暗号化方法を提供する。
【0070】
上記に加えて、ストリーミングアルゴリズムまたは他の暗号化されたファイル転送のためのシード方法は、タイトルが「共通秘密の開始と決定」である先のセクションにおいて説明した方法によって計算された共通秘密から生成されるものではない秘密鍵を使用し得ることも、また、想定される。この点に関して、データ伝送は、秘密鍵を導出するために、対称鍵と組み合わせて、追加のデータ、好ましくは単一使用のデータ、を使用することによって、よりセキュアにすることができる。そのように、たとえ秘密鍵が以前に傍受されていた場合でも、それ自体では、データ送信を復号化するために使用することはできない。例えば、データを暗号化し、そして、暗号化されたデータを第1ノードから第2ノードへ送信する方法は、
対称鍵を暗号化されたデータの送信のため追加データと組み合わせることによって、第1ノードにおいて、秘密鍵を導出すること、
秘密鍵を擬似乱数発生器のシードとして利用すること、
暗号化されたデータを生成するために、擬似乱数発生器の出力を送信されるデータと組み合わせること、
暗号化されたデータを第2ノードへ送信すること、
を含んでよい。
【0071】
第2ノードは、また、共通対称鍵および追加データから対応する秘密鍵を決定する。暗号化されたデータを受信すると、第2ノードは、次に、データを復号化するために秘密鍵を使用することができる。
【0072】
追加データは、上述のように、ブロックチェーン時間変数またはその暗号化関数(例えば、ハッシュ)といった時間変数であってよく、そして、XOR演算を使用して秘密鍵と組み合わされてよい。追加的または代替的に、追加データは、単一使用の値、または単一使用の値の暗号化関数を含んでいる。単一使用の値は、擬似乱数に対するシードとして使用される秘密鍵を導出するために、(例えば、XOR演算を介して)対称鍵と組み合わされてよい。追加データは、データ信号の復号化を可能にするために、第1および第2ノード間で交換され得る。代替的に、ノード間において追加データの送信を必要としないで、第1および第2ノードによって追加データが導出され得る。例えば、追加データは、共通秘密の生成における使用について上述したスキームを使用して、導出され得るだろう。
【0073】
当業者であれば、添付の請求項によって定義される本発明の範囲から逸脱することなく、多数の変形及び/又は変更が上述の実施形態に対して成され得ることが正しく理解されるだろう。
図1
図2
図3
図4
【外国語明細書】