(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-24
(45)【発行日】2022-11-01
(54)【発明の名称】ウォレット管理システムと併せたブロックチェーンベースのシステムのための暗号鍵のセキュアなマルチパーティ損失耐性のある記憶及び転送
(51)【国際特許分類】
H04L 9/08 20060101AFI20221025BHJP
G06F 21/60 20130101ALI20221025BHJP
【FI】
H04L9/08 A
H04L9/08 C
G06F21/60 360
【外国語出願】
(21)【出願番号】P 2020192327
(22)【出願日】2020-11-19
(62)【分割の表示】P 2018522105の分割
【原出願日】2017-02-14
【審査請求日】2020-11-19
(32)【優先日】2016-02-23
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2016-03-24
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2016-11-15
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ホールディングス リミテッド
【氏名又は名称原語表記】NCHAIN HOLDINGS LIMITED
【住所又は居所原語表記】Fitzgerald House, 44 Church Street, St. John’s, Antigua and Barbuda (AG)
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】クレイグ ステヴァン ライト
(72)【発明者】
【氏名】ステファン サヴァナー
【審査官】行田 悦資
(56)【参考文献】
【文献】特表2009-526411(JP,A)
【文献】特表2000-502553(JP,A)
【文献】特開2004-297578(JP,A)
【文献】ANTONOPOULOS, A. M.,Chapter 4. Keys, Addresses, Wallets,Mastering Bitcoin,First Edition,O'REILLY MEDIA INC.,2014年12月,p.1-23, [令和1年9月19日検索],インターネット<URL:https://www.oreilly.com/library/view/mastering-bitcoin/978
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
G06F 21/60
(57)【特許請求の範囲】
【請求項1】
デジタルウォレットへのアクセスを制御する方法であって、前記方法は、
少なくとも第1エンティティのマスター私有鍵及び発生器値に基づいて、第1エンティティの第2私有鍵を決定するステップと、
少なくとも第2エンティティのマスター私有鍵及び前記発生器値に基づいて、第2エンティティの第2私有鍵を決定するステップと、
前記第1エンティティの第2私有鍵及び前記第2エンティティの第2公開鍵に基づいて、前記第1エンティティにおいて共通秘密を決定し、前記第2エンティティの第2秘密鍵及び第1エンティティの第2公開鍵に基づいて、前記第2エンティティにおいて前記共通秘密を決定するステップと、
を含み、
i)前記第1エンティティの第2公開鍵及び前記第2エンティティの第2公開鍵は、それぞれ前記第1
エンティティのマスター鍵及び前記第2エンティティのマスター鍵
、並びに前記発生器値に基づき、
ii)前記第1及び第2エンティティは、システム内のノードであり、通信ネットワークを介して通信する、方法。
【請求項2】
前記共通秘密を決定する前記ステップは、
前記第1エンティティにおいて、前記第1エンティティのマスター私有鍵及び発生器値とのスカラー加算により、少なくとも前記第1エンティティのマスター私有鍵(V
1C)と、メッセージに基づく前記発生器値と、に基づいて、前記第1エンティティの第2私有鍵(V
2C)を決定論的に導出するステップと、
前記第1エンティティにおいて、前記発生器値とベースポイントとの間の楕円曲線点乗算に楕円曲線点加算することにより、少なくとも第2エンティティのマスター公開鍵(P
1S)に基づき、第2エンティティの第2公開鍵(P
2S)を決定するステップと、
前記第1エンティティにおいて、前記第1エンティティの第2私有鍵(V
2C)及び前記第2エンティティの第2公開鍵(P
2S)の楕円曲線点乗算に基づき、前記共通秘密を決定するステップと、
を含み、
前記第2エンティティは、第1エンティティの第2公開鍵(P
2C)及び第2エンティティの第2私有鍵(V
2S)の楕円曲線点乗算に基づき、同じ共通秘密を有する、請求項1に記載の方法。
【請求項3】
前記第1エンティティの第2公開鍵(P
2C)は、前記発生器値及び前記ベースポイントの前記楕円曲線点乗算に楕円曲線点加算することにより、少なくとも前記第1エンティティのマスター公開鍵(P
1C)に基づき、
前記第2エンティティの第2私有鍵(V
2S)は、前記第2エンティティのマスター私有鍵(V
1S)及び前記発生器値のスカラー加算により、少なくとも前記第2エンティティのマスター私有鍵(V
1S)及び前記発生器値に基づく、
請求項
2に記載の方法。
【請求項4】
前記メッセージのハッシュを決定することにより、前記発生器値を決定するステップ、を更に含む請求項
2に記載の方法。
【請求項5】
前記共通秘密を楕円曲線点から標準鍵フォーマットに変換するステップ、を更に含む請求項
2~4のいずれか一項に記載の方法。
【請求項6】
前記共通秘密を、前記第1エンティティと前記第2エンティティとの間のセキュアなデータ通信のための対称鍵アルゴリズムにおいて、秘密鍵として又は秘密鍵の基礎として使用するステップ、を更に含む請求項
2~5のいずれか一項に記載の方法。
【請求項7】
前記通信は、暗号鍵の部分、暗号鍵の表現若しくは識別子、又は暗号鍵の記憶、或いは、暗号鍵にアクセスし、計算し、又は読み出すために用いることができる要素を伝達するために使用される、請求項5に記載の方法。
【請求項8】
前記第1エンティティと前記第2エンティティとの間で前記メッセージを共有するステップ、及び/又は、
前記メッセージをデータストアから受信するステップ、
を更に含む請求項
2~7のいずれか一項に記載の方法。
【請求項9】
デジタルウォレットの登録処理中に、前記第1エンティティのマスター私有鍵及び公開鍵と、前記第2エンティティのマスター私有鍵及び公開鍵と、を生成するステップ、を更に含む請求項
2~8のいずれか一項に記載の方法。
【請求項10】
前記メッセージは、ランダムであるか、疑似ランダムであるか、若しくはユーザにより定義され、又は時間及び任意の値に基づく、請求項
2~9のいずれか一項に記載の方法。
【請求項11】
前記発生器値は、SHA(Secure Hash Algorithm)、RIPEMD(RACE Integrity Primitives Evaluation Message Digest)アルゴリズム、Zemor-Tillichハッシュ関数、又はナップサックに基づくハッシュ関数のような暗号ハッシュアルゴリズムを用いて決定される、請求項1~10のいずれか一項に記載の方法。
【請求項12】
デジタルウォレットへのアクセスを制御するよう構成される、コンピュータにより実装されるシステムであって、前記システムは
ノードを含み、
前記ノードの各々は該ノードに請求項1~11のいずれか一項に記載の方法を実行
させるコンピュータプログラムを含む、システム。
【請求項13】
デジタルウォレットへのアクセスを制御するよう構成される、コンピュータにより実装されるシステムであって、前記システムは、
少なくとも第1エンティティのマスター私有鍵及び発生器値に基づいて、第1エンティティの第2私有鍵を決定し、
少なくとも第2エンティティのマスター私有鍵及び前記発生器値に基づいて、第2エンティティの第2私有鍵を決定し、
前記第1エンティティの第2私有鍵及び前記第2エンティティの第2公開鍵に基づいて、前記第1エンティティにおいて共通秘密を決定し、前記第2エンティティの第2秘密鍵及び第1エンティティの第2公開鍵に基づいて、前記第2エンティティにおいて前記共通秘密を決定する、
よう動作し、
i)前記第1エンティティの第2公開鍵及び前記第2エンティティの第2公開鍵は、それぞれ前記第1
エンティティのマスター鍵及び前記第2エンティティのマスター鍵及び前記発生器値に基づき、
ii)前記第1及び第2エンティティは、システム内のノードであり、通信ネットワークを介して通信する
、システム。
【請求項14】
前記システムは、以下:
前記第1エンティティにおいて、前記第1エンティティのマスター私有鍵及び発生器値とのスカラー加算により、少なくとも前記第1エンティティのマスター私有鍵(V
1C)と、メッセージに基づく前記発生器値と、に基づいて、前記第1エンティティの第2私有鍵(V
2C)を決定論的に導出し、
前記第1エンティティにおいて、前記発生器値とベースポイントとの間の楕円曲線点乗算に楕円曲線点加算することにより、少なくとも第2エンティティのマスター公開鍵(P
1S)に基づき、第2エンティティの第2公開鍵(P
2S)を決定し、
前記第1エンティティにおいて、前記第1エンティティの第2私有鍵(V
2C)及び前記第2エンティティの第2公開鍵(P
2S)の楕円曲線点乗算に基づき、前記共通秘密を決定する、
ことにより、前記共通秘密を決定するよう動作し、
前記第2エンティティは、第1エンティティの第2公開鍵(P
2C)及び第2エンティティの第2私有鍵(V
2S)の楕円曲線点乗算に基づき、同じ共通秘密を有する、請求項
13に記載のシステム。
【請求項15】
前記第1エンティティの第2公開鍵(P
2C)は、前記発生器値及び前記ベースポイントの前記楕円曲線点乗算に楕円曲線点加算することにより、少なくとも前記第1エンティティのマスター公開鍵(P
1C)に基づき、
前記第2エンティティの第2私有鍵(V
2S)は、前記第2エンティティのマスター私有鍵(V
1S)及び前記発生器値のスカラー加算により、少なくとも前記第2エンティティのマスター私有鍵(V
1S)及び前記発生器値に基づく、
請求項
14に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、包括的には、コンピュータ及びデータセキュリティに関し、より詳細には、暗号鍵等の機密性の高いデータ項目のセキュアな取扱に関するものである。本発明は、アクセス制御メカニズムを提供する。本発明は、限定ではないが、デジタル(ソフトウェア)ウォレットと共に用いるのに特に適している。これは、ビットコイン等の暗号通貨に関連して用いられるウォレットを含むことができる。本発明は、有利なアクセス制御メカニズムを提供する。
【背景技術】
【0002】
暗号学は、ネットワーク内の2つ以上のノード間の機密データのセキュアな記憶及びその通信のための技法を伴う。ノードは、モバイル通信デバイス、タブレットコンピュータ、ラップトップコンピュータ、デスクトップ、その他の形態のコンピューティングデバイス及び通信デバイス、ネットワークにおけるサーバーデバイス、ネットワークにおけるクライアントデバイス、分散ネットワークにおける1つ又は複数のノード等を含むことができる。ノードは、自然人、会社の従業員等の人々のグループ、銀行システムのようなシステム、又は分散されたピアツーピアレッジャー(すなわち、ブロックチェーン)等に関連付けることができる。
【0003】
2つ以上のノードがセキュアでない通信ネットワークによってリンクされ、認可されていない第三者による盗聴又は傍受に対し脆弱である場合がある。従って、ノード間で送信されるメッセージは、多くの場合に暗号化された形式で送信される。受信時に、意図される受信者が、対応する復号鍵又は他の復号方法を用いてメッセージを復号する。このため、そのような通信のセキュリティは、第三者が対応する復号鍵を決定することを防ぐことに依拠し得る。
【0004】
1つの既知の暗号化方法は、対称鍵アルゴリズムを用いることを含む。鍵は、同じ対称鍵が、平文メッセージの暗号化及び暗号文メッセージの復号の双方に用いられるという意味で対称である。しかし、対称鍵は、対称鍵への認可されていないアクセスを防ぐために、セキュアな方法で双方のノードに送信されなくてはならない。これは、例えば、対称鍵がセキュアでない通信ネットワークを介して送信されることがないように、対称鍵を(認可された)ノードに物理的に送達することを含むことができる。しかし、物理的送達は、必ずしも、常に実用的な選択肢ではない。従って、そのような暗号化システムにおける問題は、インターネットの如きセキュアでない電子ネットワークにわたるノード間の対称鍵(共通秘密に基づくことができる)を確立することである。このため、対称鍵(共通秘密)を提供するこのステップは、潜在的に重篤な脆弱性である。対称鍵アルゴリズム及びプロトコルは、単純であり、広く用いられているため、2つのノードがセキュアでないネットワークにわたってセキュアに共通秘密に基づく対称鍵を決定する能力が必要とされている。
【0005】
公開鍵暗号学としても知られる非対称鍵を使用すると、この問題をある程度回避する。私有鍵は、秘密のままにされるのに対し、公開鍵は、公開で入手可能にすることができる。ネットワークにおける公開鍵の傍受は破滅的でない。既存のプロトコルは、ディフィー・ヘルマン鍵交換及び3パスプロトコルを含んでいる。
【0006】
しかし、私有鍵の記憶は、大きなセキュリティの問題を引き起こす。例えば、ビットコインウォレット等のデジタルウォレットを検討すると、デジタルウォレットは、ユーザが自身の電子資産を用いてトランザクションを行うように、例えばビットコイン資金を用いて商品及びサービスを購入するように、他のノードと接続することを可能にするソフトウェアを含んでいる。公開鍵暗号化は、多くの場合、そのような接続及びトランザクションに必要とされる不可欠な情報を保護するのに用いられる。私有鍵は、ユーザのデバイス(「クライアント側」)にインストールされるウォレットによって又はウォレットサービスプロバイダ(「サーバ側」)によって記憶される。しかし、私有鍵がクライアント側においてのみ記憶される場合、私有鍵は、ユーザのハードウェア、例えば、コンピュータ、携帯電話等に生じる盗難、紛失又は損傷により失われる可能性がある。同様に、ユーザが死亡するかもしくは行動不能になった場合、私有鍵の知識又は私有鍵へのアクセスが失われる可能性があり、このため、ウォレットに関連付けられた資金がアクセス不能になる。私有鍵をサーバー側に記憶することにより、これらの問題を克服できる可能性があるが、ユーザは、自身の私有鍵をセキュアに保つためにサービスプロバイダを信頼するよう調整しなくてはならない。サーバー側におけるセキュリティ違反は、現実の大きなリスクである。
【発明の概要】
【発明が解決しようとする課題】
【0007】
このため、秘密の安全な取扱を可能にする解決法を提供することが望ましい。この秘密は、暗号鍵、及び/又は鍵へのアクセスを提供することができる何らかのものとすることができる。そのような改善された解決法がここで考案されている。本発明によれば、添付の特許請求の範囲において定義されるような改善された解決法が提供される。
【課題を解決するための手段】
【0008】
本発明は、コンピュータ実施方法を提供するものとすることができる。この方法は、リソースへのアクセスの制御を可能にすることができる。この方法は、検証又は認証方法と称することができる。この方法は、暗号鍵管理解決法と称することができる。リソースは、任意のタイプの物理的リソース又は電子リソースとすることができる。1つの実施形態において、リソースは、デジタルウォレット又は貨幣の形態に関連する何らかの他のリソースである。これは、暗号通貨リソースの管理のためのビットコインウォレット又は他のウォレットであり得る。本発明は、デジタルウォレット(及び対応するシステム)へのアクセスを制御する方法を提供するものとすることができる。
【0009】
本発明は、トランザクション如き後続のウォレット関連動作がセキュアに取り扱われ、通信され、及び/又は作成されることを可能にするために、セキュアでない通信チャネル(インターネットの如きもの)を介したデジタルウォレットのセットアップ、登録又は作成中に用いることができる。
【0010】
本発明の1つ又は複数の実施形態は、既存の暗号鍵対から暗号鍵を導出するステップを含むものとすることができる。これは、
少なくとも第1のエンティティのマスター私有鍵及び発生器値に基づいて第1のエンティティの第2の私有鍵を決定するステップと、
少なくとも第2のエンティティのマスター私有鍵及び発生器値に基づいて第2のエンティティの第2の私有鍵を決定するステップと、
第1のエンティティの第2の私有鍵及び第2のエンティティの第2の公開鍵に基づいて第1のエンティティにおいて共通秘密(CS)を決定し、第2のエンティティの第2の私有鍵及び第1のエンティティの第2の公開鍵に基づいて第2のエンティティにおいて共通秘密(CS)を決定するステップと
を含み、
第1のエンティティの第2の公開鍵及び第2のエンティティの第2の公開鍵は、それぞれ、少なくとも第1/第2のエンティティのマスター鍵及び発生器値に基づいている方法である。
【0011】
それに加えて、又はそれに代えて、本発明は、デジタルウォレットへのアクセスを制御する方法を含むものとすることができる。この方法は、
少なくとも第1のエンティティのマスター私有鍵及び発生器値に基づいて第1のエンティティの第2の私有鍵を決定するステップと、
少なくとも第2のエンティティのマスター私有鍵及び発生器値に基づいて第2のエンティティの第2の私有鍵を決定するステップと、
第1のエンティティの第2の私有鍵及び第2のエンティティの第2の公開鍵に基づいて第1のエンティティにおいて共通秘密(CS)を決定し、第2のエンティティの第2の私有鍵及び第1のエンティティの第2の公開鍵に基づいて第2のエンティティにおいて共通秘密(CS)を決定するステップと、
を含み、
第1のエンティティの第2の公開鍵及び第2のエンティティの第2の公開鍵は、それぞれ、少なくとも第1/第2のエンティティのマスター鍵及び発生器値に基づいている方法である。
【0012】
それに加えて、又はそれに代えて、この方法は、
検証要素を複数のシェア(share)に分割するステップと、
ネットワーク内の2つ以上のノードにおいて共通秘密を決定するステップと、
この共通秘密を用いて、検証要素の少なくとも1つのシェアを、ネットワーク内の1つのノードから少なくとも1つの他のノードに送信するステップと、
を含むことができる。
【0013】
検証要素は、暗号鍵とすることができる。検証要素は、非対称暗号対における私有鍵とすることができる。それに加えて、又はそれに代えて、検証要素は、暗号鍵の表現、又は暗号鍵にアクセスし、暗号鍵を計算し、導出し、もしくは取り出すのに用いることができる何らかのアイテムとすることができる。検証要素は、例えばニーモニック又はシード等の、検証プロセスにおいて用いることができる何らかの秘密又は値とすることができる。
【0014】
従って、本発明の1つの態様は、私有鍵等の秘密を(一意の)シェアに分割することに関することができる。検証要素は、検証要素を、シェアのうちの2つ以上から復元又は再作成することができるように複数のシェアに分割することができる。シャミアの秘密分散法を用いて、検証要素を複数のシェアに分割することができる。
【0015】
これらのシェアは、単独では価値を有しないように分割することができ、これは、単独のシェアを用いて(元の分割されていない)検証要素に達することができないことを意味する。この分割は、検証要素を、所定の複数のシェアを組み合わせることによってのみ復元することができるように行うことができる。1つの実施形態では、任意の2つのシェアが検証要素の復元に十分である。
【0016】
本発明の別の態様は、それぞれのシェアの安全な取扱い又は記憶に関するものとすることができる。これらのシェアは、異なる複数の関係者に送信され、それらの関係者によって記憶することができる。これらの関係者のうちのいくつか又は全ては、ネットワーク上のノードとすることができる。1つの実施形態において、この方法は、互いに対し異なる場所において検証要素の少なくとも3つのシェアを記憶するステップを含むことができる。
【0017】
シェアのうちの少なくとも1つを、バックアップ又は「安全な記憶」施設に記憶することができる。これは、シェアを記憶するいかなる他の場所とも別であり、独立し、及び/又は別個とすることができる。これは、他のシェアのうちの1つが利用不可能になった場合の検証要素の復元を可能にするため、重要な利点を提供する。そのような状況において、シェアは、安全な記憶施設から取り出すことができる。
【0018】
検証プロセスは、シェアを用いた検証要素の復元の前に行うことができる。検証プロセスは、所定のもしくは指定された個人、及び/又はコンピューティングリソースのアイデンティティの検証を含むことができる。
【0019】
本発明の別の態様は、シェアのうちの1つ又は複数のセキュアな分散に関するものである。この方法は、共通秘密を用いて暗号化鍵を作成するステップを含むことができ、この暗号化鍵は、検証要素の少なくとも1つのシェア、又はこの少なくとも1つのシェアを含むメッセージを暗号化するのに用いられる。
【0020】
共通秘密は、少なくとも2つのノードにおいて互いに独立して決定することができる。従って、各ノードは、他のノード又は別の関係者からの入力又はそれらとの通信なしで、秘密を自身で決定又は作成することができる。これは、共通秘密が、通信チャネルを介した送信を必要としなくてもよいことを意味する。このようにすると、認可されていない関係者によって傍受されることがないので、セキュリティの向上をもたらす。共通秘密は、少なくとも2つのノードのみに共通とする(すなわち、それらのノードによってのみ共有される)ことができる。その際、共通秘密を用いて暗号化鍵を生成することができ、この暗号化鍵を、シェアの安全な送信のために用いることができる。他のデータも、暗号化鍵を用いて送信することができる。
【0021】
この方法は、第1のノード(C)において、第1のノード(C)及び第2のノード(S)に共通の共通秘密(CS)を決定するステップを含むことができ、第1のノード(C)は、第1のノードのマスター私有鍵(V1C)及び第1のノードのマスター公開鍵(P1C)を有する第1の非対称暗号対に関連付けられ、第2のノード(S)は、第2のノードのマスター私有鍵(V1S)及び第2のノードのマスター公開鍵(P1S)を有する第2の非対称暗号対に関連付けられ、且つ、この方法は、
- 少なくとも第1のノードのマスター私有鍵(V1C)及び発生器値(GV)に基づいて第1のノードの第2の私有鍵(V2C)を決定するステップと、
- 少なくとも第2のノードのマスター公開鍵(P1S)及び発生器値(GV)に基づいて第2のノードの第2の公開鍵(P2S)を決定するステップと、
- 第1のノードの第2の私有鍵(V2C)及び第2のノードの第2の公開鍵(P2S)に基づいて共通秘密(CS)を決定するステップと、
を更に含み、
第2のノード(S)は、第1のノードの第2の公開鍵(P2C)及び第2のノードの第2の私有鍵(V2S)に基づいて同じ共通秘密(S)を有し、第1のノードの第2の公開鍵(P2C)は、少なくとも、第1のノードのマスター公開鍵(P1C)及び発生器値(GV)に基づき、第2のノードの第2の私有鍵(V2S)は、少なくとも、第2のノードのマスター私有鍵(V1S)及び発生器値(GV)に基づいている。
【0022】
発生器値(GV)は、メッセージ(M)に基づいている。この方法は、メッセージ(M)及び第1のノードの第2の私有鍵(V2C)に基づいて第1の署名付きメッセージ(SM1)を作成することと、通信ネットワークを介して、第1の署名付きメッセージ(SM1)を第2のノード(S)に送信することとを更に含むことができ、第1の署名付きメッセージ(SM1)は、第1のノード(C)を認証するために、第1のノードの第2の公開鍵(P2C)を用いて有効性を確認することができる。
【0023】
この方法は、また、通信ネットワークを介して、第2のノード(S)から第2の署名付きメッセージ(SM2)を受信することと、第2のノードの第2の公開鍵(P2S)を用いて第2の署名付きメッセージ(SM2)の有効性を確認することと、第2の署名付きメッセージ(SM2)の有効性を確認した結果に基づいて、第2のノード(S)を認証することとを含み、第2の署名付きメッセージ(SM2)は、メッセージ(M)又は第2のメッセージ(M2)、及び第2のノードの第2の私有鍵(V2S)に基づいて生成された。
【0024】
この方法は、メッセージ(M)を生成することと、通信ネットワークを介して、メッセージ(M)を第2のノード(S)に送信することとを更に含んでいてもよい。それに代えて、この方法は、通信ネットワークを介して、第2のノード(S)からメッセージ(M)を受信することを含んでいてもよい。更に別の代替形態において、この方法は、通信ネットワークを介して、別のノードからメッセージ(M)を受信することを含んでいてもよい。更に別の代替形態では、この方法は、データストア及び/又は第1のノード(C)に関連付けられた入力インタフェースからメッセージ(M)を受信することを含んでいてもよい。
【0025】
第1のノードのマスター公開鍵(P1C)、第2のノードのマスター公開鍵(P1S)は、それぞれの第1のノードのマスター私有鍵(V1C)及び第2のノードのマスター私有鍵(V1S)と発生器(G)との楕円曲線点乗算に基づいている。
【0026】
この方法は、通信ネットワークを介して、第2のノードのマスター公開鍵(P1S)を受信するステップと、第1のノード(C)に関連付けられたデータストアに、第2のノードのマスター公開鍵(P1S)を記憶するステップとを更に含んでいてもよい。
【0027】
本方法は、第1のノード(C)において、第1のノードのマスター私有鍵(V1C)及び第1のノードのマスター公開鍵(P1C)を作成するステップと、通信ネットワークを介して、第1のノードのマスター公開鍵(P1C)を第2のノード(S)及び/又は他のノードに送信するステップと、第1のノード(C)に関連付けられた第1のデータストアに、第1のノードのマスター私有鍵(V1C)を記憶するステップを更に含んでいてもよい。
【0028】
この方法は、また、通信ネットワークを介して、第2のノードに、共通秘密(CS)を決定する方法のためにベースポイント(G)と共に共通楕円曲線暗号(ECC)システムを用いることを示す通知を送信することを含むことができる。第1のノードのマスター私有鍵(V1C)及び第1のノードのマスター公開鍵(P1C)を作成するステップは、共通ECCシステムにおいて指定される許容可能な範囲におけるランダムな整数に基づいて第1のノードのマスター私有鍵(V1C)を作成することと、以下の式
P1C=V1C×G
によって、第1のノードのマスター私有鍵(V1C)とベースポイント(G)との楕円曲線点乗算に基づいて第1のノードのマスター公開鍵(P1C)を決定することとを含むことができる。
【0029】
この方法は、メッセージ(M)のハッシュの決定に基づいて発生器値(GV)を決定することを更に含むことができ、第1のノードの第2の私有鍵(V2C)を決定するステップは、以下の式
V2C=V1C+GV
によって、第1のノードのマスター私有鍵(V1C)及び発生器値(GV)のスカラー加算に基づいている。
【0030】
第2のノードの第2の公開鍵(P2S)を決定するステップは、以下の式、
P2S=P1S+GV×G
によって、第2のノードのマスター公開鍵(P1S)であるが、に、発生器値(GV)とベースポイント(G)との楕円曲線点乗算に楕円曲線点加算した公開鍵に基づくことができる。
【0031】
発生器値(GV)は、以前の発生器値(GV)のハッシュを決定することに基づくことができる。
【0032】
第1の非対称暗号対及び第2の非対称暗号対は、それぞれの以前の第1の非対称暗号対及び以前の第2の非対称暗号対の関数に基づいている。
【0033】
換言すれば、本発明は、
検証要素を複数のシェアに分割するステップと、
第1のノードにおいて、第1のマスター非対称鍵の対に基づいて導出された(又は第2の)私有暗号鍵を作成するステップと、
導出された私有鍵を、検証要素の少なくとも1つのシェアの暗号化及び/又はセキュアな送信のために用いるステップと、
を含む方法を提供することができる。
【0034】
この方法は、第2のノードにおいて、同じ導出された私有鍵を作成するステップも含むことができ、これは第1のノードと独立して、第2のマスター非対称鍵の対を用いて作成される。
【0035】
導出される私有鍵は、私有鍵及び公開鍵を含む非対称鍵対の一部とすることができる。第1及び/又は第2のノードは、楕円曲線暗号(ECC)を用いて私有鍵(及びその対応する公開鍵)を作成することができる。
【0036】
本方法は、
・ 第1のノードと第2のノードとの間で、ベースポイント(G)を用いて標準ECCシステムについて合意するステップ、及び/又は、
・ 第1及び/又は第2のノードにおいて、合意された標準ECCシステムを用いて公開鍵/私有鍵対を作成し、公開鍵を公開するステップであって、これは公開鍵を公開で利用可能にすることを意味するステップ、及び/又は、
・ 第1のノードのマスター公開鍵(PMC)を第2のノード又は別の場所において登録し、及び/又は第2のノードのマスター公開鍵(PMC)を第1のノード又は別の場所において登録するステップ、及び/又は、
・ 第1のノードから第2のノードに、及び/又はその逆にメッセージ(M)を送信し、メッセージのハッシュを生成するステップであって、このメッセージは、導出された私有鍵を用いて署名を付けることができ、このステップは、1)ノード間の共有秘密を確立し、2)それらの間でセキュアにされた通信を開始するのに必要とされる送信のみを表すことができ、第1のノード又は第2のノードは、受信されたメッセージMを用いて、独自の導出された(二次)公開/私有鍵対を作成し、これにより、ノードは他のノードの導出された公開鍵を計算することができるステップ、及び/又は、
・ このメッセージを受信し、メッセージM(例えば、SHA-256(M))のハッシュを独立して計算するステップ、及び/又は、
・ マスター鍵(PMC)から導出可能な公開鍵(P2c)を計算するステップ、及び/又は、
・ 計算されたP2Cに対し署名(Sig-V2C)を検証するステップ、
を含むことができる。
【0037】
導出された私有鍵は、第1のノード又は第2のノードのマスター公開鍵から決定論的に導出することができる。
【0038】
本発明は、また、上記の方法の任意の実施形態を実施するように配置及び構成されたコンピュータ実施システム備えていてもよい。このシステムは、ブロックチェーンネットワーク又はプラットフォームを備えるか又は利用することができる。それに加えて、又はそれに代えて、システムは、デジタルウォレットプロバイダ又は管理システムを備えていてもよい。
【0039】
本発明の1つの態様又は実施形態に関連して上記で説明された任意の特徴は、任意の他の態様又は実施形態に関連して用いることもできる。例えば、本方法に関連して説明された特徴は、システムに適用することができ、逆も同様である。
【0040】
本発明のこれらの態様及び他の態様は、本明細書に記載の実施形態から明らかであり、実施形態を参照して説明される。
【0041】
例示てきであるが、添付の図面を参照して本発明の実施形態を説明する。
【図面の簡単な説明】
【0042】
【
図1】私有鍵の共有の如き機密性の高い情報のセキュアな送信のために、本発明に従って用いることができる第1のノード及び第2のノードのための共通秘密を決定するための例示的なシステムの概略図である。
【
図2】私有鍵の共有の如き機密性の高い情報のセキュアな送信のために、本発明に従って用いることができるような共通秘密を決定するためのコンピュータ実施方法のフローチャートである。
【
図3】第1のノード及び第2のノードを登録するためのコンピュータ実施方法のフローチャートである。
【
図4】私有鍵のシェアの如き機密性の高い情報のセキュアな送信のために、本発明に従って用いることができる共通秘密を決定するためのコンピュータ実施方法の別のフローチャートである。
【
図5】第1のノードと第2のノードとの間のセキュアな通信のコンピュータ実施方法のフローチャートである。
【発明を実施するための形態】
【0043】
上記で説明したように、暗号鍵等の秘密、又は鍵を生成するのに用いることができる秘密の記憶及び/又は交換の向上が必要とされている。この秘密は、ウォレットニーモックのためのシード、又は他のセキュリティ関連項目とすることができる。本発明は、そのような解決策を提供する。1つの実施形態が理解の目的で以下に説明するが、この実施形態は、ブロックチェーン上で実施されるデジタルウォレットの状況を用いる。しかし、本発明はこのような実施に限定されることはなく、任意のコンピュータ実施ネットワーク又はシステムに関して実施することができる。
【0044】
上記のように、公開鍵暗号は、デジタルウォレットとの関連でしばしば用いられる。エンドユーザ(「クライアント」又は単に「ユーザ」と称する)が自身の私有鍵を記憶する責任がある場合には、ユーザ又はユーザのハードウェアが利用不可能になるとき、これにより私有鍵が、このためウォレットの資金がアクセス不能になるため、問題が生じる場合がある。しかし、ウォレットプロバイダの側(「サーバー側」と称することができる)での鍵の記憶は、プロバイダ及びプロバイダのセキュリティメカニズムにおけるあるレベルの信頼を必要とする。このため、認可されていない者が取得することができないが、必要に応じて再生成することもできるような形で私有鍵を記憶する必要がある。「ユーザ」という用語は、人間のユーザであってもよいし、コンピュータ実施リソースであってもよい。
【0045】
「シャミアの秘密分散法」(4S)として知られる1つの既知の暗号アルゴリズムは、秘密を一意の部分又はシェアに分割し、次いでこれらが異なる関係者に分散されることを教示している。その後、このシェアは、秘密を再構成するのに用いることができる。各個々のシェアは、1つ又は複数の他のシェアと組み合わされるまで単独では価値がなく、役に立たない。秘密を再構成するのに必要なシェアの数は、状況の必要性に応じて変動することができる。ある場合には、全てのシェアが必要とされる場合があるが、他の場合には、十分な数のみが必要とされる。これは、閾値方式として知られ、ここで、シェアのうちの任意のk個があれば、元の秘密を再構成するのに十分である。
【0046】
この例示的な実施形態において、私有鍵又はニーモニックシードの如き秘密を複数の部分に分割するのに4Sが用いられる。この際、4Sは、一定の数の部分から鍵又はニーモニックシードを再作成するのにも用いられる。ニーモニックの使用は、デジタルウォレットと併せて既知である。ニーモニックは、ウォレット又はデータの作成のためにバイナリシードにすることができる、人間が使いやすいコード又は単語グループである。
【0047】
本明細書において、以下の用語が用いられる。
・ 「秘密」(S)は、関係者間でセキュアに共有される必要がある秘密(例えば、番号又は値)である。
・ 「シェア」は、秘密の断片である。秘密は、断片に分割され、各断片がシェアと呼ばれる。シェアは所与の秘密から計算される。秘密を復元するには、一定の数のシェアを得る必要がある。
・ 「閾値」(k)は、秘密を再作成又は復元するのに必要なシェアの最小数である。秘密は、k個以上のシェアを有するときにのみ再作成することができる。
・ 「プライム(prime)」(p)はランダムな素数である。
【0048】
広い観点から、例示的な実施形態は、以下のような方法を含むことができる。この例において、「2-of-3」方式を用いる(すなわち、k=2)。
・ ユーザは、ウォレットプロバイダに登録し、そのユーザに関連付けられた新たなウォレットを作成しセットアップする。この例では、ウォレットは、ブロックチェーンを利用するビットコインウォレットである。
・ 公開鍵-私有鍵の対が作成され、ユーザのウォレットに関連付けられる。
・ 私有鍵が、4Sを用いてシェアに分割される。
・ 私有鍵の1つのシェアが、セキュアな送信によりユーザに送信される。
・ 私有鍵の別のシェアが、サービスプロバイダによって保持され、サーバーに記憶される。
・ 別のシェアは、セキュアな送信により、安全な記憶のために遠隔の場所に送信される。「遠隔」という用語は、特定の地理的距離又は場所を意味するものではない。そうではなく、本明細書では、シェアが、ウォレットプロバイダ又はユーザ、好ましいくは双方からある意味で独立したセキュアな記憶施設又はリソースにおいて(in, at or on)保持されることを意味する。「独立している」とは、物理的、論理的、財政的、政治的及び/又は組織的に独立していることを含む。例えば、安全な記憶は、料金と引き換えに安全な記憶サービスを提供する商用エンティティに外注することができるか、又はユーザの弁護士によって保持することができるか、又は、必要な場合に要求に応じてシェアを記憶し供給する役割を受け入れる他の選出された(かつ信頼される)関係者によって保持することができる。
・ ウォレットプロバイダは、完全な私有鍵のうちのいくつか又は全てのコピーを、それらがもはや必要ないことに起因して、破壊することができる。私有鍵がユーザの後続の認証に必要である場合(例えば、ユーザが次に取引を行うことを望んでいるため)、鍵は、ユーザが必要に応じてウォレットプロバイダに提供するユーザのシェアと、ウォレットプロバイダのシェアとから再構成することができる。
【0049】
この利点は、ウォレットプロバイダのセキュリティが侵害されている場合であっても、認可されていない者がユーザの私有鍵に対するアクセスを得ることができないことである。なぜなら、私有鍵はウォレットプロバイダのシステムにおいてどこにも記憶されておらず、ウォレットプロバイダのシステム単独では私有鍵の再構成を可能にするのに十分なシェアを含まないためである。この同じ利点は、クライアントのセキュリティが侵害されている状況にも当てはまる。
【0050】
別の利点は、安全な記憶場所にシェアを記憶することによって、安全な記憶からそのシェアを取り出し、これをウォレットプロバイダのシェアと組み合わせることにより、私有鍵を再構成することができることである。このため、ユーザが死亡するかもしくは行動不能になった場合、又はユーザのハードウェア(及びこのためシェア)がなくなるか、損傷を受けるか、又は盗まれた場合、ウォレット内の資金に依然としてアクセスすることができる。そのような状況において、ユーザのアイデンティティが検証される。いくつかの例において、遺産管理人又は弁護士の如き実績のある信頼された関係者のアイデンティティが実証される。これは、例として、死亡証明書、パスポート、法的文書又は他の形態の身分証明書等の証書の作成時に達成される。認可されたアイデンティティであることが検証されると、秘密のシェアが安全な記憶から取り出される。従って、安全な記憶は、例外的な、又は所定の環境において用いることができるある種のバックアップ施設として機能する。
【0051】
従って、本発明は、向上したシステム/データセキュリティと利便性との有利な組み合わせを提供する。本発明は、アクセス制御の単純で効果的でセキュアな解決策を提供する。
【0052】
上記の例において、私有鍵は、ウォレットサービスプロバイダによって作成され、それぞれのパーツがユーザ及び安全な記憶リソースに送信されることに留意されたい。しかし、これは他の実施形態には当てはまらない場合がある。「ノード」と称される関係者間のパーツの送信は、セキュアな方式で行われなくてはならないことに留意することも重要である。なぜなら、複数のシェアの任意の認可されていない傍受により、傍受者が秘密(例えば、ニーモニック又は鍵)を再構成することが可能になり得るためである。以下で説明されるように、このセキュアな交換の問題も、本発明によって対処される。
【0053】
本発明の更なる詳細な態様を例示の目的で説明する。シャミアの秘密分散法は、当該技術分野において既知の技法であり、当業者であれば、これを認識し、理解し、用いることができることに留意するべきである。従って、以下は、完全性の目的のみで提供される。
【0054】
複数のシェアへの秘密の分割
秘密S、参加者の数n、閾値数k、及び素数pとすると、定数項Sを用いて以下の多項式が構成される。
次数k-1のy=f(x)(プライムpをモジュロ(法)とする)
【0055】
次に、1とp-1との間(1及びp-1を含む)のn個の一意のランダムな整数を選択し、これらのn個の点において多項式を評価する。n人の参加者の各々に(x,y)対が与えられる。これは、以下のステップにより達成することができる。
【0056】
1.整数への変換
4Sアルゴリズムの場合、秘密は整数である必要がある。このため、秘密が何らかの他の形式(例えば、文字列、16進数等)をとる場合、これは、まず整数に変換されなくてはならない。秘密がすでに整数である場合、このステップは省略することができる。この例の場合、S=1234とする。
【0057】
2.シェアの数(n)及び閾値(k)の決定
秘密を再作成するためにk個のパーツが必要とされることに留意されたい。このため、秘密を復元する間にk個のパーツを常に得ることができるようにS及びkを選択する。この例の場合、n=6、k=3とする。
【0058】
3.多項式の生成
形式y=f(x)mod pの多項式を生成する必要がある。
i.多項式の定数項及び次数の決定
f(x)=a0+a1x+a2x2+a3x3+...+ak-1xk-1
- 定数項a0=S
- 多項式の次数=k-1
【0059】
このため、k=3及びS=1234について、次数2及びa0=1234を有する多項式を構築する必要がある。
f(x)=1234+a1x+a1x2
【0060】
ii.係数の決定
以下となるようにk-1個の乱数(乱数(疑似乱数)発生器を用いる)を選択する。
0<an<S
a1=166;a2=94とする。
このため、f{x)=1234+166x+94x2である。
【0061】
iii.ランダムな素数の選択
以下となるようにランダムな素数(p)を選択する。
p>max(S,n)
p=1613とする。
【0062】
iv.最終的な多項式
y=f(x)mod p
y=(1234+166x+94x2)mod 1613
【0063】
シェアの作成
シナリオをn個のシェアに分割するために、多項式を用いてn個の点(シェア)を構成する必要がある。
y=(1234+166x+94x2)mod 1613
【0064】
この例について、n=6であるため、6つの点を有することになる。x=0ではなく、x=1で開始することに留意されたい。
【0065】
x=1~6について、6つの点は以下のとおりである。
(1,1494);(2,329);(3,965);(4,176);(5,1188);(6,775)
【0066】
これらのn(6)個の点のうち、任意のk(3)個の点を用いて秘密鍵を再作成することができる。
【0067】
所与の数のシェアからの秘密の再構成
i.秘密の整数の取得
秘密を再構成するために、以下の情報を必要とする。
n=6、k=3、p=1613、
k個のシェア
(x0,y0)=(1,1494);(x1,y1)=(2,329);(x2,y2)=(3,965)
【0068】
上記の情報を手に入れると、当該技術分野において既知であり、当業者には容易に理解されるラグランジュ補間等の技法を用いることができる。この技法を用いて、多項式全体を再構築することができる。係数は、以下の式に従って計算することができる。
a
i(x)=[Σ
k-1
i=0y
iΠ
0≦j≦k-1,j≠i(x-x
j)/(x
i-x
j)]mod p
しかし、S=a
0であるため、a
0=a
0(0)を得るのみでよい。
【数1】
ここで、x
i-x
j≠0である。
【0069】
当業者であれば、上記において、指数-1は逆数をとることを表すことを理解するであろう。ほとんどのプログラミング言語は、逆数等の数学演算を行う内蔵パッケージを含んでいる。
【0070】
ii.所望の形式への整数の変換
特定の形式を整数に変換するためにステップ1が行われた場合、逆の手順を辿って、整数を所望の形式に戻す。
【0071】
シェアのセキュアな送信
上述したように、認可されていない者が秘密を再構成できないようにするために、秘密のシェアがセキュアな方式でそれぞれの受信者に送信されることが重要である。好ましい実施形態では、セキュアな送信は、以下で説明されるように達成することができる。
【0072】
2者の関係者間で共通秘密(CS)を確立することができ、次にこれを用いてシェアのうちの1つ又は複数を送信するためのセキュアな暗号化鍵を生成することができる。この共通秘密(CS)は、上記で参照した秘密(S)と混同されるべきでない。共通秘密(CS)は、秘密(S)、例えば鍵又はそのシェアのセキュアな交換を可能にするために作成され用いられる。
【0073】
2者の関係者は、ウォレットサービスプロバイダ、ユーザ、安全な記憶リソース、又は何らかの他の正規の関係者のうちの任意の2つとすることができる。以後、便宜上、これらは第1のノード(C)、第2のノード(S)と称する。その目的は、双方のノードが知っている共通(CS)秘密を生成することであるが、その共通秘密は通信チャネルを介して送信されておらず、このため、認可されていない発見の可能性が排除される。秘密の分割及び安全な記憶の技法は、以下で説明されるような安全な送信技法と組み合わせて、セキュアな鍵管理解決法を提供する。
【0074】
本発明のセキュアな送信技法は、各送信終了時にCSが独立した方式で生成されることを伴い、このため、双方のノードがCSを知っている一方で、CSは、潜在的にセキュアでない通信チャネルを介して移送される必要がなかった。CSが双方の終端で確立されると、CSを用いてセキュアな暗号化鍵を生成することができ、この暗号化鍵は、双方のノードがその後の通信に用いることができる。これは、ある関係者から別の関係者への分割私有鍵の送信にとって、ウォレット登録プロセス中に特に利点を有する。
【0075】
図1は、通信ネットワーク5を介して第2のノード7と通信する第1のノード3を備えるシステム1を示す。第1のノード3は、関連付けられた第1の処理デバイス23を有し、第2のノード5は、関連付けられた第2の処理デバイス27を有する。第1のノード3及び第2のノード7は、コンピュータ、電話、タブレットコンピュータ、モバイル通信デバイス、コンピュータサーバーの如き電子デバイスを含むことができる。1つの例において、第1のノード3は、クライアント(ユーザ)デバイスとすることができ、第2のノード7は、サーバーとすることができる。サーバーは、デジタルウォレットプロバイダのサーバーとすることができる。
【0076】
第1のノード3は、第1のノードのマスター私有鍵(V1C)及び第1のノードのマスター公開鍵(P1C)を有する第1の非対称暗号対に関連付けられている。第2のノード(7)は、第2のノードのマスター私有鍵(V1S)及び第2のノードのマスター公開鍵(P1S)を有する第2の非対称暗号対に関連付けられている。換言すれば、第1のノード及び第2のノードは各々、それぞれの公開鍵-私有鍵対を保有している。
【0077】
それぞれ第1のノード3及び第2のノード7のための第1及び第2の非対称暗号対は、ウォレットの登録の如き登録プロセス中に作成することができる。各ノードの公開鍵は、例えば通信ネットワーク5を介して、公開で共有することができる。
【0078】
第1のノード3及び第2のノード7の双方において共通秘密(CS)を決定するために、ノード3、7は、通信ネットワーク5を介して私有鍵を通信することなく、それぞれのメソッド300、400のステップを行う。
【0079】
第1のノード3によって行われるメソッド300は、少なくとも、第1のノードのマスター私有鍵(V1C)及び発生器値(GV)に基づいて、第1のノードの第2の私有鍵(V2C)を決定すること(330)を含む。発生器値は、第1のノードと第2のノードとの間で共有されるメッセージ(M)に基づいている。これは、以下で更に詳細に説明するように、通信ネットワーク5を介してメッセージを共有することを含むことができる。メソッド300は、少なくとも、第2のノードのマスター公開鍵(P1S)及び発生器値(GV)に基づいて、第2のノードの第2の公開鍵(P2S)を決定すること(370)も含む。メソッド300は、第1のノードの第2の私有鍵(V2C)及び第2のノードの第2の公開鍵(P2S)に基づいて、共通秘密(CS)を決定すること(380)を含む。
【0080】
重要なことであるが、同じ共通秘密(CS)を、メソッド400によって第2のノード7において決定することもできる。メソッド400は、第1のノードのマスター公開鍵(P1C)及び発生器値(GV)に基づいて、第1のノードの第2の公開鍵(P2C)を決定すること(430)を含む。メソッド400は、第2のノードのマスター私有鍵(V1S)及び発生器値(GV)に基づいて、第2のノードの第2の私有鍵(V2S)を決定すること(470)を更に含む。メソッド400は、第2のノードの第2の私有鍵(V2S)及び第1のノードの第2の公開鍵(P2C)に基づいて、共通秘密(CS)を決定すること(480)を含む。
【0081】
通信ネットワーク5は、ローカルエリアネットワーク、広域ネットワーク、セルラーネットワーク、無線通信ネットワーク、インターネット等を含むことができる。電気配線、光ファイバーの如き通信媒体を介して、又は無線でデータを送信することができるこれらのネットワークは、盗聴者11によって行われるような盗聴を受けやすい場合がある。メソッド300、400は、第1のノード3及び第2のノード7が共に、通信ネットワーク5を介して共通秘密を送信することなく共通秘密を独立して決定することを可能にする。
【0082】
従って、1つの利点は、潜在的にセキュアでない通信ネットワーク5を介して私有鍵を送信する必要なく、各ノードによってセキュアにかつ独立して共通秘密(CS)を決定することができることである。一方、この共通秘密は、通信ネットワーク5を介して、第1のノード3と第2のノード7との間の暗号化された通信のための秘密鍵(又は秘密鍵の基礎)として用いることができる。
【0083】
メソッド300、400は、追加のステップを含むことができる。メソッド300は、第1のノード3において、メッセージ(M)及び第1のノードの第2の私有鍵(V2C)に基づいて、署名付きメッセージ(SM1)を作成することを含むことができる。このメソッド300は、通信ネットワークを介して、第2のノード7に第1の署名付きメッセージ(SM1)を送信すること(360)を更に含んでいる。一方、第2のノード7は、第1の署名付きメッセージ(SM1)を受信するステップ440を行うことができる。メソッド400は、第1のノードの第2の公開鍵(P2C)を用いて第1の署名付きメッセージ(SM2)の有効性を確認し(450)、第1の署名付きメッセージ(SM1)の有効性確認結果に基づいて第1のノード3を認証する(460)ステップも含んでいる。有利には、これによって、第2のノード7が、(第1の署名付きメッセージが作成された)第1のノードとされているノードが第1のノード3であることを認証することが可能になる。これは、第1のノード3のみが第1のノードのマスター私有鍵(V1C)へのアクセスを有し、従って、第1のノード3のみが第1の署名付きメッセージ(SM1)を作成するための第1のノードの第2の私有鍵(V2C)を決定することができるという仮定に基づいている。同様に、第2の署名付きメッセージ(SM2)を第2のノード7において作成し、第1のノード3に送信することができ、それによって、ピアツーピアのシナリオの如くして、第1のノード3が第2のノード7を認証することができることが理解されよう。
【0084】
第1のノードと第2のノードとの間でのメッセージ(M)の共有は、種々の方法で達成することができる。1つの例において、メッセージは、第1のノード3において作成することができ、このメッセージは、次に、通信ネットワーク5を介して、第2のノード7に送信される。それに代えて、メッセージは、第2のノード7において作成され、次いで、通信ネットワーク5を介して第2のノード7に送信してもよい。更に別の例では、メッセージは、第3のノード9において生成され、このメッセージが第1のノード3及び第2のノード7の双方に送信されてもよい。更に別の代替形態では、ユーザは、ユーザインタフェース15を通して、第1のノード3及び第2のノード7によって受信されるメッセージを入力してもよい。更に別の例では、メッセージ(M)は、データストア19から取り出され、第1のノード3及び第2のノード7に送信されてもよい。いくつかの例では、メッセージ(M)は公開であってもよく、従って、セキュアでないネットワーク5を介して送信してもよい。
【0085】
更なる例では、1つ又は複数のメッセージ(M)を、データストア13、17、19に記憶することができ、これらのデータストアにおいて、メッセージは、デジタルウォレット如き何らかのエンティティ、又は第1のノード3と第2のノード7との間で確立される通信セッションと関連付けることができる。このため、メッセージ(M)を取り出し、それぞれ第1のノード3及び第2のノード7において、そのウォレット又はセッションに関連付けられた共通秘密(CS)を再現するのに用いることができる。
【0086】
有利には、共通秘密(CS)の再現を可能にするレコードは、レコード自体がプライベートに記憶されるか又はセキュアに送信される必要なく保持することができる。これは、第1のノード3及び第2のノード7において多数のトランザクションが行われ、全てのメッセージ(M)をノード自体に記憶することが実際的でない場合に有利である。
【0087】
登録メソッド100、200
登録メソッド100、200の例を、
図3を参照して説明すると、メソッド100は、第1のノード3によって行われ、メソッド200は、第2のノード7によって行われる。これは、それぞれ第1のノード3及び第2のノード7について第1及び第2の非対称暗号対を確立することを含んでいる。
【0088】
非対称暗号対は、公開鍵暗号化において用いられるような、関連付けられた私有鍵及び公開鍵を含んでいる。この例において、非対称暗号対は、楕円曲線暗号(ECC)及び楕円曲線演算の特性を用いて作成される。
【0089】
ECC用の規格は、SECG(Standards for Efficient Cryptography Group)(wmv.sceg.org)によって記載されているような既知の規格を含むことができる。楕円曲線暗号については、米国特許第5,600,725号、米国特許第5,761,305号、米国特許第5,889,865号、米国特許第5,896,455号、米国特許第5,933,504号、米国特許第6,122,736号、米国特許第6,141,420号、米国特許第6,618,483号、米国特許第6,704,870号、米国特許第6,785,813号、米国特許第6,078,667号、米国特許第6,792,530号にも記載されている。
【0090】
メソッド100、200において、これは、第1及び第2のノードが共通ECCシステムについて合意し、ベースポイント(G)を用いること(110、210)を含んでる。(注:ベースポイントは、共通発生器と称されるが、発生器値GVとの混同を避けるために「ベースポイント」という用語が用いられる。)1つの例において、共通ECCシステムは、ビットコインによって用いられるECCシステムであるsecp256Klに基づくことができる。ベースポイント(G)は、選択されるか、ランダムに作成されるか、又は割り当てられる。
【0091】
第1のノード3の説明に戻すと、メソッド100は、共通ECCシステムとベースポイント(G)について確定すること(110)を含んでいる。これは、第2のノード7又は第3のノード9から、共通ECCシステムとベースポイントを受信することを含むことができる。それに代えて、ユーザインタフェース15は、第1のノード3に関連付けられてもよく、これによって、ユーザは、共通ECCシステム及び/又はベースポイント(G)を選択的に提供することができる。更に別の代替形態では、共通ECCシステム及び/又はベースポイント(G)の一方又は双方が、第1のノード3によってランダムに選択されてもよい。第1のノード3は、通信ネットワーク5を介して、ベースポイント(G)と共に共通ECCシステムを用いることを示す通知を第2のノード7に送信することができる。そして、第2のノード7は、確認応答を示す通知を送信することによって、共通ECCシステム及びベースポイント(G)を用いることについて確定する(210)ことができる。
【0092】
メソッド100は、第1のノード3が第1のノードのマスター私有鍵(V1C)と第1のノードのマスター公開鍵(P1C)を含む第1の非対称暗号対を作成すること(120)も含んでいる。これは、少なくとも部分的に、共通ECCシステムにおいて指定される許容可能な範囲におけるランダムな整数に基づいて第1のノードのマスター私有鍵(V1C)を作成することを含んでいる。これは、以下の式
P1C=V1C×G (式1)
による、第1のノードのマスター私有鍵(V1C)とベースポイント(G)との楕円曲線点乗算に基づいて第1のノードのマスター公開鍵(P1C)を決定することも含んでいる。
【0093】
従って、第1の非対称暗号対は以下を含んでいる。
V1C:第1のノードによって秘密にされている第1のノードのマスター私有鍵。
P1C:公開で知られている第1のノードのマスター公開鍵。
【0094】
第1のノード3は、第1のノード3に関連付けられた第1のデータストア13に第1のノードのマスター私有鍵(V1C)及び第1のノードのマスター公開鍵(P1C)を記憶することができる。セキュリティのために、第1のノードのマスター私有鍵(V1C)は、第1のデータストア13のセキュアな部分に記憶され、鍵がプライベートなままであることを確実にすることができる。
【0095】
メソッド100は、第1のノードのマスター公開鍵(P1C)を、通信ネットワーク5を介して第2のノード7に送信すること(130)を更に含んでいる。第2のノード7は、第1のノードのマスター公開鍵(P1C)を受信する際(220)、第1のノードのマスター公開鍵(P1C)を、第2のノード7に関連付けられた第2のデータストア17に記憶する(230)ことができる。
【0096】
第1のノード3と同様に、第2のノード7のメソッド200は、第2のノードのマスター私有鍵(V1S)及び第2のノードのマスター公開鍵(P1S)を含む第2の非対称暗号対を作成すること(240)を含んでいる。第2のノードのマスター私有鍵(V1S)は、許容可能な範囲内のランダムな整数でもある。一方、第2のノードのマスター公開鍵(P1S)は、以下の式によって決定される。
P1S=V1S×G (式2)
【0097】
従って、第2の非対称暗号対は、以下を含んでいる。
V1S:第2のノードによって秘密にされている第2のノードのマスター私有鍵。
P1S:公開で知られている第2のノードのマスター公開鍵。
【0098】
第2のノード7は、第2のデータストア17に第2の非対称暗号対を記憶することができる。メソッド200は、第2のノードのマスター公開鍵(P1S)を第1のノード3に送信すること(250)を更に含んでいる。一方、第1のノード3は、第2のノードのマスター公開鍵(P1S)を受信し(140)、記憶する(150)ことができる。
【0099】
いくつかの代替形態において、それぞれの公開マスター鍵を受信して第3のノード9(信頼された第三者等)に関連付けられた第3のデータストア19に記憶してもよいことが理解されよう。これは、認証局の如き公開ディレクトリとしての役割を果たす第三者を含んでいてもよい。従って、いくつかの例では、第1のノードのマスター公開鍵(P1C)は、共通秘密(CS)を決定することが必要とされているときにのみ第2のノード7によって要求及び受信される場合がある(逆もまた同様)。
【0100】
登録ステップは、例えばデジタルウォレットの初期セットアップとして一度のみ行われればよい。
【0101】
第1のノード3によるセッション開始及び共通秘密の決定
ここで、
図4を参照して、共通秘密(CS)を決定する例を説明する。共通秘密(CS)は、第1のノード3と第2のノード7との間の特定のセッション、時間、トランザクション、又は他の目的のために用いられる場合があり、同じ共通秘密(CS)を用いることは、望ましくないか、又はセキュアでない場合がある。このため、異なるセッション、時間、トランザクション等の間で共通秘密(CS)を変更することができる。
【0102】
以下の説明は、上記したセキュアな送信技法の例示のために提供される。
【0103】
メッセージ(M)の作成310
この例において、第1のノード3によって行われるメソッド300は、メッセージ(M)を作成すること(310)を含んでいる。メッセージ(M)は、ランダムであるか、疑似ランダムであるか、又はユーザにより定義されてもよい。1つの例では、メッセージ(M)は、Unix時間及びノンス(及び任意の値)に基づいている。例えば、メッセージ(M)は、以下のように提供することができる。
メッセージ(M)=UnixTime+ノンス (式3)
【0104】
いくつかの例において、メッセージ(M)は任意である。しかし、このメッセージ(M)は、いくつかの用途において有用であり得る選択的値(Unix時間等)を有していてもよいことが理解されよう。
【0105】
メソッド300は、通信ネットワーク3を介して第2のノード7にメッセージ(M)を送信すること(315)を含んでいる。このメッセージ(M)は、私有鍵に関する情報を含んでいないので、セキュアでないネットワークを介して送信することができる。
【0106】
発生器値(GV)320の決定
メソッド300は、メッセージ(M)に基づいて発生器値(GV)を決定するステップ320を更に含んでいる。この例において、これは、メッセージの暗号学的ハッシュを決定することを含んでいる。暗号学的ハッシュアルゴリズムの例は、256ビット発生器値(GV)を生成するためのSHA-256を含む。すなわち、以下の通りとなる。
GV=SHA-256(M) (式4)
【0107】
他のハッシュアルゴリズムを用いてもよいことが理解されよう。これは、セキュアハッシュアルゴリズム(SHA)ファミリーにおける他のハッシュアルゴリズムを含むことができる。いくつかの特定の例は、SHA3-224、SHA3-256、SHA3-384、SHA3-512、SHAKE128、SHAKE256を含む、SHA-3サブセットにおけるインスタンスを含んでいる。他のハッシュアルゴリズムは、RACE完全性プリミティブ評価メッセージダイジェスト(RIPEMD)ファミリーにおけるハッシュアルゴリズムを含むことができる。特定の例は、RIPEMD-160を含むことができる。他のハッシュ関数は、Zemor-Tillichハッシュ関数及びナップサックベースのハッシュ関数に基づくファミリーを含むことができる。
【0108】
第1のノードの第2の私有鍵の決定330
更に、メソッド300は、第2のノードのマスター私有鍵(V1C)及び発生器値(GV)に基づいて第1のノードの第2の私有鍵(V2C)を決定するステップ330を含んでいる。これは、以下の式
V2C=V1C+GV (式5)
による、第1のノードのマスター私有鍵(V1C)と発生器値(GV)とのスカラー加算に基づくことができる。
【0109】
このため、第1のノードの第2の私有鍵(V2C)は、ランダムな値ではなく、代わりに、第1のノードのマスター私有鍵から決定論的に導出される。暗号対における対応する公開鍵、すなわち、第1のノードの第2の公開鍵(P2C)は、以下の関係を有する。
P2C=V2C×G (式6)
【0110】
式5からのV2Cを式6に代入することにより、以下が得られる。
P2C=(V1C+GV)×G (式7)
ここで、「+」演算子は楕円曲線点加算を意味する。楕円曲線暗号代数が分配的であることに留意すると、式7は、以下のように表すことができる。
P2C=V1C×G+GV×G (式8)
【0111】
最後に、式1を式7に代入し、以下を得ることができる。
P2C=P1C+GV×G (式9.1)
P2C=P1C+SHA-256(M)×G (式9.2)
【0112】
従って、対応する第1のノードの第2の公開鍵(P2C)は、第1のノードのマスター公開鍵(P1C)及びメッセージ(M)の知識を与えられると導出可能とすることができる。メソッド400に関して以下で更に詳細に述べられているように、第2のノード7は、そのような知識を有して、第1のノードの第2の公開鍵(P2C)を独立して決定することができる。
【0113】
メッセージ及び第1のノードの第2の私有鍵に基づく第1の署名付きメッセージ(SM1)の生成350
メソッド300は、メッセージ(M)及び決定された第1のノードの第2の私有鍵(V2C)に基づいて、第1の署名付きメッセージ(SM1)を作成すること(350)を更に含んでいる。署名付きメッセージを作成することは、デジタル署名アルゴリズムを適用して、メッセージ(M)にデジタル署名することを含む。1つの例において、これは、楕円曲線デジタル署名アルゴリズム(ECDSA)において第1のノードの第2の私有鍵(V2C)をメッセージに適用して、第1の署名付きメッセージ(SM1)を得ることを含んでいる。
【0114】
ECDSAの例は、secp256kl、secp256rl、secp384rl、se3cp521rlを有するECCシステムに基づくものを含む。
【0115】
第1の署名付きメッセージ(SM1)は、第2のノード7において、対応する第1のノードの第2の公開鍵(P2C)を用いて検証することができる。第1の署名付きメッセージ(SM1)のこの検証は、第2のノード7によって、第1のノード3を認証するのに用いることができる。これについては、メソッド400において以下に述べる。
【0116】
第2のノードの第2の公開鍵の決定370’
更に、第1のノード3は、第2のノードの第2の公開鍵(P2S)を決定することができる(370)。上記したように、第2のノードの第2の公開鍵(P2S)は、少なくとも、第2のノードのマスター公開鍵(P1S)及び発生器値(GV)に基づくことができる。この例において、公開鍵は、ベースポイント(G)との楕円曲線点乗算により私有鍵として決定されるので(370’)、第2のノードの第2の公開鍵(P2S)は、式6と同様の方式で、以下のように表すことができる。
P2S=V2S×G(式10.1)
P2S=P1S+GV×G (式10.2)
【0117】
式10.2の数学的証明は、第1のノードの第2の公開鍵(P2C)について式9.1を導出するために上記で説明したのと同じである。第1のノード3は、第2のノード7と独立して第2のノードの第2の公開鍵を決定する(370)ことができることが理解されよう。
【0118】
第1のノード3における共通秘密の決定380
更に、第1のノード3は、決定された第1のノードの第2の私有鍵(V2C)及び決定された第2のノードの第2の公開鍵(P2S)に基づいて共通秘密(CS)を決定する(380)ことができる。この共通秘密(CS)は、第1のノード3によって、以下の式により決定することができる。
S=V2C×P2S (式11)
【0119】
第2のノード7において行われるメソッド400
ここで、第2のノード7において行われる対応するメソッド400を説明する。これらのステップのうちのいくつかは、第1のノード3によって行われた上記で述べたステップと類似していることが理解されよう。
【0120】
メソッド400は、通信ネットワーク5を介して、第1のノード3からメッセージ(M)を受信すること(410)を含んでいる。これは、ステップ315において第1のノード3によって送信されたメッセージ(M)を含むことができる。次に、第2のノード7は、メッセージ(M)に基づいて発生器値(GV)を決定する(420)。第2のノード7によって発生器値(GV)を決定するステップ420は、上記で説明した第1のノードによって行われるステップ320と類似している。この例では、第2のノード7は、この決定するステップ420を、第1のノード3と独立して行う。
【0121】
次のステップは、第1のノードのマスター公開鍵(P1C)及び発生器値(GV)に基づいて第1のノードの第2の公開鍵(P2C)を決定すること(430)を含む。この例において、公開鍵は、ベースポイント(G)との楕円曲線点乗算により私有鍵として決定されるので(430’)、第1のノードの第2の公開鍵(P2C)は、式9と同様の方式で、以下のように表すことができる。
P2C=V2C×G (式12.1)
P2C=P1C+GV×G (式12.2)
【0122】
式12.1及び式12.2の数学的証明は、式10.1及び式10.2について上記で説明されたのと同じである。
【0123】
第2のノード7による第1のノード3の認証
メソッド400は、第2のノード7によって、推定の(alleged)第1のノード3が第1のノード3であることを認証することによって行われるステップを含むことができる。上記で述べたように、これは、第1のノード3から第1の署名付きメッセージ(SM1)を受信すること(440)を含む。次に、第2のノード7は、ステップ430において決定された第1のノードの第2の公開鍵(P2C)を用いて、第1の署名付きメッセージ(SM1)における署名の有効性を確認する(450)ことができる。
【0124】
上記したように、デジタル署名の検証は、楕円曲線デジタル署名アルゴリズム(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)を更に行うことができる。
【0125】
上記の認証は、2つのノードのうちの一方が信頼されるノードであり、ノードのうちの一方のみが認証される必要があるシナリオに好適である。例えば、第1のノード3は、クライアントであり、第2のノード7は、ウォレットプロバイダ等のクライアントによって信頼されているサーバーであってもよい。従って、サーバー(第2のノード7)は、サーバーシステムへのクライアントアクセスを許可するために、クライアント(第1のノード3)の信用証明書を認証する必要がある場合がある。サーバーがクライアントに対しサーバーの信用証明書を認証する必要がない場合がある。しかし、いくつかのシナリオでは、ピアツーピアシナリオにおけるように、双方のノードが互いに対し認証されることが望ましい場合がある。
【0126】
第2のノード7による共通秘密の決定
メソッド400は、第2のノード7が、第2のノードのマスター私有鍵(V1S)及び発生器値(GV)に基づいて第2のノードの第2の私有鍵(V2S)を決定すること(470)を更に含むことができる。第1のノード3によって行われるステップ330と同様に、第2のノードの第2の私有鍵(V2S)は、以下の式
V2S=V1S+GV (式13.1)
V2S=V1S+SHA-256(M) (式13.2)
による第2のノードのマスター私有鍵(V1S)と発生器値(GV)とのスカラー加算に基づくことができる。
【0127】
更に、第2のノード7は、第1のノード3と独立して、以下の式に基づいて、第2のノードの第2の私有鍵(V2S)及び第1のノードの第2の公開鍵(P2C)に基づいて共通秘密(CS)を決定することができる(480)。
S=V2S×P2C (式14)
【0128】
第1のノード3及び第2のノード7によって決定される共通秘密(CS)の証明
第1のノード3によって決定される共通秘密(CS)は、第2のノード7において決定される共通秘密(CS)と同じである。ここで、式11及び式14が同じ共通秘密(CS)をもたらすことの数学的証明を説明する。
【0129】
第1のノード3によって決定される共通秘密(CS)に説明を戻すと、式10.1は、以下のように式11に代入することができる。
S=V2C×P2S (式11)
S=V2C×(V2S×G)
S=(V2C×V2S)×G (式15)
【0130】
第2のノード7によって決定される共通秘密(CS)に説明を戻すと、式12.1は、以下のように式14に代入することができる。
S=V2S×P2C (式14)
S=V2S×(V2C×G)
S=(V2S×V2C)×G (式16)
【0131】
ECC代数は交換可能であるため、式15及び式16は等価である。従って、以下の式が成り立つ。
S=(V2C×V2S)×G=(V2S×V2C)×G (式17)
【0132】
共通秘密(CS)及び秘密鍵
共通秘密(CS)は、第1のノード3と第2のノード7との間のソース通信のための対称鍵アルゴリズムにおける秘密鍵として、又は秘密鍵の基礎として用いることができる。この通信は、私有鍵の一部、私有鍵の表現もしくは識別子、又は私有鍵のニーモニックを伝達するために用いることができる。従って、本発明が、例えば、デジタルウォレット又は他の制御されたリソースのセットアップ中に用いられると、その後、関係者間のセキュアな通信を行うことができる。
【0133】
共通秘密(CS)は、楕円曲線点(xs,ys)の形態をとることができる。これは、ノード3、7によって合意された標準的な公開で既知の演算を用いて標準的な鍵形式に変換することができる。例えば、xs値は、AES256暗号化のための鍵として用いることができる256ビットの整数とすることができる。これは、この長さの鍵を必要とする任意の用途について、RIPEMD160を用いて160ビットの整数に変換することもできる。
【0134】
共通秘密(CS)は、要求に応じて決定することができる。重要なことであるが、第1のノード3は、共通秘密(CS)を記憶する必要がない。なぜなら、これはメッセージ(M)に基づいて再決定することができるためである。いくつかの例では、用いられるメッセージ(M)は、マスター私有鍵に必要とされるのと同じレベルのセキュリティを有することなく、データストア13、17、19(又は他のデータストア)に記憶することができる。いくつかの例では、メッセージ(M)は、公開で入手可能である場合がある。
【0135】
しかし、用途によっては、共通秘密(CS)が第1のノードのマスター私有鍵(V1C)としてセキュアに保持されている限り、共通秘密(CS)は、第1のノードに関連付けられた第1のデータストア(X)に記憶され得る。
【0136】
上述した実施形態は、本発明を限定するのではなく、当業者は、添付の特許請求の範囲によって定義されるような本発明の範囲から逸脱することなく、任意の代替的な実施形態を設計することが可能であることに留意されたい。特許請求の範囲において、括弧に入れられた任意の参照符号は、特許請求の範囲を限定するものとみなされない。「備える」等の語は、任意の請求項又は明細書に全体として列挙されるもの以外の要素又はステップの存在を除外しない。本明細書において、「備える」は「含んでいる」又は「からなる」を意味する。要素の単数の参照は、そのような要素の複数の参照を除外するものではなく、逆もまた同様である。本発明は、いくつかの別個の要素を備えるハードウェア及び適切にプログラムされたコンピュータによって実施することができる。いくつかの手段を列挙しているデバイス請求項において、これらの手段のうちのいくつかは、同一のハードウェアによって具現化することができる。単に、いくつかの手段が互いに異なる独立請求項に挙げられていることは、これらの手段の組み合わせを有利に用いることができないことを示すものではない。
【符号の説明】
【0137】
3 第1のノード
5 ネットワーク
7 第2のノード
9 第3のノード
11 盗聴者