(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-08
(45)【発行日】2024-11-18
(54)【発明の名称】コールドウォレットを用いたデジタルシグニチャ生成
(51)【国際特許分類】
H04L 9/08 20060101AFI20241111BHJP
H04L 9/32 20060101ALI20241111BHJP
【FI】
H04L9/08 A
H04L9/32 200Z
(21)【出願番号】P 2022520338
(86)(22)【出願日】2020-10-06
(86)【国際出願番号】 EP2020077977
(87)【国際公開番号】W WO2021073953
(87)【国際公開日】2021-04-22
【審査請求日】2023-08-17
(32)【優先日】2019-10-15
(33)【優先権主張国・地域又は機関】EP
(32)【優先日】2020-01-10
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】521393960
【氏名又は名称】ブロックデーモン・アンパルツセルスケープ
【氏名又は名称原語表記】Blockdaemon ApS
(74)【代理人】
【識別番号】100145403
【氏名又は名称】山尾 憲人
(74)【代理人】
【識別番号】100135703
【氏名又は名称】岡部 英隆
(74)【代理人】
【識別番号】100189544
【氏名又は名称】柏原 啓伸
(72)【発明者】
【氏名】パグター,ヤコブ イレボー
(72)【発明者】
【氏名】ヤコブセン,トマス ペレ
【審査官】田中 啓介
(56)【参考文献】
【文献】国際公開第2019/193452(WO,A1)
【文献】国際公開第2019/043466(WO,A1)
【文献】国際公開第2019/159172(WO,A1)
【文献】米国特許出願公開第2019/0280864(US,A1)
【文献】Steven Goldfeder et al.,Securing Bitcoin wallets via threshold signatures,Computer Science,2014年06月03日,https://jkroll.com/papers/bitcoin_threshold_signatures.pdf
【文献】Rosario Gennaro et al.,Threshold-Optimal DSA/ECDSA Signatures and an Application to Bitcoin Wallet Security,Applied Cryptography and Network Security 2016,2016年06月09日,https://link.springer.com/chapter/10.1007/978-3-319-39555-5_9
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/14、21/00-21/88
G06Q10/00-99/00
G09C1/00-5/00
H04K1/00-3/00
H04L9/00-9/40
(57)【特許請求の範囲】
【請求項1】
デジタルシグニチャを提供するための方法であって、
コールドウォレットの2つ以上のノード間で配布されるプライベートシグニチャキーを提供するステップであって、
前記コールドウォレットの各ノードはそれによって
前記プライベートシグニチャキーの1つ以上のシェアを所有し、
前記コールドウォレットのどのノードも
前記プライベートシグニチャキーの全てのシェアは所有しない、提供するステップと、
前記コールドウォレットの各ノードが、
前記プライベートシグニチャキーのシェアに基づいてプレシグニチャを生成して、各プレシグニチャノード
が前記コールドウォレットのノードのうちの1つのみから
1つのプレシグニチャを受信す
る方法で、
前記コールドウォレットの各ノードが、前記プレシグニチャを2つ以上のプレシグニチャノードのうちの1つに送信するステップと、
署名アプリケーションが、シグニチャを要求して、署名されるメッセージを
前記プレシグニチャノードの各々に送信するステップと、
前記シグニチャの要求と
前記署名されるメッセージ
とを受信することに応答して、
前記プレシグニチャノード
の各々が、そのプレシグニチャと
前記署名されるメッセージとに基づいて、パーシャルシグニチャを生成するステップと、
前記プレシグニチャノード
の各々が、そのパーシャルシグニチャを
前記署名アプリケーションに送信するステップと、及び、
前記署名アプリケーションが、
前記パーシャルシグニチャからデジタルシグニチャを計算するステップと
を含み、
前記コールドウォレットの各ノードが前記プレシグニチャを前記プレシグニチャノードの1つに送信するステップは、一方向通信チャネルを用いて実行される、
方法。
【請求項2】
前記パーシャルシグニチャを生成するステップの後、
かつ、前記パーシャルシグニチャを送信するステップの前に、
前記プレシグニチャノードの各々が前記プレシグニチャを削除するステップを、更に含む、
請求項1に記載の方法。
【請求項3】
前記プライベートシグニチャキーを提供するステップは、
前記コールドウォレットのノードがマルチパーティ計算プロトコルによって
前記プライベートシグニチャキーを生成することによって実行される、
請求項1~2のうちのいずれか一に記載の方法。
【請求項4】
前記コールドウォレットの各ノードが、2つ以上のプレシグニチャを含むバッチの一部として
前記プレシグニチャを生成する、
請求項1~3のうちのいずれか一に記載の方法。
【請求項5】
少なくとも、
前記プライベートシグニチャキーを提供する
ステップと、
前記プレシグニチャを生成
して、前記プレシグニチャを
前記プレシグニチャノードへ送信する
ステップとは、
前記署名アプリケーションが
前記シグニチャを要求する
ステップの前に、前処理のステップとして実行される、
請求項1~4のうちのいずれか一に記載の方法。
【請求項6】
前記コールドウォレットの各ノードが、
前記プライベートシグニチャキーのシェアに基づいて
前記プレシグニチャを生成
して、前記プレシグニチャを
前記2つ以上のプレシグニチャノードのうちの1つに送信する
ステップは、
前記署名アプリケーションからの
前記シグニチャの要求の受信に応答して
前記プレシグニチャノードによって開始される、
請求項1~4のいずれか一に記載の方法。
【請求項7】
前記プレシグニチャノード
の各々が
前記パーシャルシグニチャを生成するステップは、
前記プレシグニチャノード間の内部通信無しで実行される、
請求項1~6のうちのいずれか一に記載の方法。
【請求項8】
前記署名アプリケーションからの
前記シグニチャの要求を承認するステップを、更に含む、
請求項1~7のうちのいずれか一に記載の方法。
【請求項9】
前記コールドウォレットのノードが閾値条件tを満たし、
前記プレシグニチャノードが閾値条件t’を満たし、ここでt’≧tである、
請求項1~8のうちのいずれか一に記載の方法。
【請求項10】
請求項1~9のうちのいずれか一に記載の方法であって、
前記コールドウォレットのノードの少なくともいくつかが、1つ以上の追加のプレシグニチャシェアを生成し、
前記追加のプレシグニチャシェアを暗号化し、及び、
前記暗号化された追加のプレシグニチャシェアを
前記プレシグニチャとともに
前記プレシグニチャノードの1つ以上に送信するステップと、並びに、
前記暗号化された追加のプレシグニチャシェアを受信した
前記プレシグニチャノード
の各々が、
前記暗号化された追加のプレシグニチャシェアを
前記パーシャルシグニチャとともに
前記署名アプリケーションに送信するステップと
を、更に含み、
前記署名アプリケーションが
前記デジタルシグニチャを計算するステップは、
前記署名アプリケーションが、受信した
前記暗号化された追加のプレシグニチャシェアを復号化するステップと、
前記署名アプリケーションが、復号化された
前記追加のプレシグニチャシェアに基づいて追加のプレシグニチャを生成し、及び、
前記追加のプレシグニチャと、
前記署名されるメッセージとに基づいて、追加のパーシャルシグニチャを生成するステップと、並びに、
前記署名アプリケーションが、
前記プレシグニチャノードから受信した
前記パーシャルシグニチャと、
前記生成された追加のパーシャルシグニチャとから、
前記デジタルシグニチャを計算するステップと、
を含む、
方法。
【請求項11】
前記1つ以上の追加のプレシグニチャシェアを生成するステップは、
前記コールドウォレットのノードの各々が
1つの追加のプレシグニチャシェアを生成して
前記追加のプレシグニチャシェアを暗号化することによって、実行される、
請求項10に記載の方法。
【請求項12】
前記1つ以上の追加のプレシグニチャシェアを生成するステップは、
前記コールドウォレットのノードのうちの少なくとも2つ
がマルチパーティ計算プロトコルを適用することによって実行される、
請求項10に記載の方法。
【請求項13】
前記追加のプレシグニチャシェアは、
前記コールドウォレットの夫々のノードと
前記署名アプリケーションとの間でシェアされる対称暗号化キーによって暗号化及び復号化される、請求項10~12のいずれか一に記載の方法。
【請求項14】
デジタルシグニチャを提供するシステムにおいて、
プライベートシグニチャキーがノード間で分散されている、2つ以上のノードを含むコールドウォレットであって、
前記コールドウォレットの各ノードはこれにより
前記プライベートシグニチャキーの1つ以上のシェアを所有し、
前記コールドウォレットのどのノードも
前記プライベートシグニチャキーの全てのシェアは所有せず、
前記コールドウォレットのノードは、
前記プライベートシグニチャキーのシェアに基づいてプレシグニチャを生成し、一方向通信チャネルを用いて該プレシグニチャをプレシグニチ
ャノードに送信するように構成されている、コールドウォレットと、
二つ以上のプレシグニチャノードを含むプレシグニチャウォレットであって、
前記プレシグニチャノードは、
前記プレシグニチャノード
の各々が
前記コールドウォレットのノードの一つのみから
1つのプレシグニチャを受信する
方法で、前記コールドウォレットのノード
からプレシグニチャを受信
するように構成され、前記プレシグニチャノードは、そのプレシグニチャと署名されるメッセージとに基づいてパーシャルシグニチャを生成し、そのパーシャルシグニチャを署名アプリケーションに送信す
るように構成されている
、プレシグニチャ
ウォレットと、及び、
署名の要求及び署名されるメッセージを
前記プレシグニチャノードに送信し、
前記プレシグニチャノードから
前記パーシャルシグニチャを受信し、
前記パーシャルシグニチャからデジタルシグニチャを計算するように構成されている署名アプリケーションと
を含む、システム。
【請求項15】
前記コールドウォレットへのデータ伝送が防止される、
請求項14に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
発明の属する技術分野
本発明は、プライベートシグニチャキーを保持するコールドウォレットを用いて、デジタルシグニチャを生成する方法及びシステムに関するものである。
【背景技術】
【0002】
発明の背景
デジタルシグニチャは、文書に署名する人または取引を実行する人が実際にそうする権限を有することを保証する方法で、文書の署名、取引の実行などのために広く使用されている。これは、例えば、暗号通貨に関連する取引を行う場合に関連している。悪意のある者がプライベートシグニチャキーにアクセスした場合、悪意のある者はプライベートシグニチャキーの正当な所有者の名前で署名及び取引を行うことができ、かかる取引は不可逆的なものとなる可能性がある。このような悪意のあるアクセスは、修復不可能な損害を与える可能性があるため、プライベートシグニチャキーは安全な状態で保管されることが不可欠である。
【0003】
デジタルシグニチャを行う場合、通常、署名者の身元を証明するプライベートシグニチャキーが必要である。このようなプライベートシグニチャキーは、例えば、ユーザの個人所有のPCや、ポータブルメモリストレージやドングルなどの専用ハードウェアにローカルに保存することができる。代替案として、署名鍵の保存にハードウェアセキュリティモジュール(HSM)を適用することもできる。この場合、署名はPCまたは専用ハードウェアからしか生成できないという欠点がある。さらに、システムのセキュリティは、プライベートシグニチャキーが格納されているハードウェアの盗難や不正アクセスを防止することに関してユーザがどれだけ注意するかなど、ユーザの行動によって制限される。
【0004】
もう一つの可能性は、プライベートシグニチャキーを信頼できる鍵管理サービスに保管することである。これにより、ユーザは必ずしも特定のハードウェアにアクセスすることなく、プライベートシグニチャキーにアクセスすることができる。さらに、システムのセキュリティは信頼できる鍵管理サービスによって一元的に処理されるため、個々のユーザの行動にはあまり影響されない。しかし、システムのセキュリティは、正当な利用者が容易にアクセスできるようにする一方で、悪意のある者が署名鍵にアクセスするのを防ぐというバランスをとる必要がある。
【0005】
高い安全性を確保するために、いわゆる「コールドウォレット」が適用されることがある。コールドウォレットとは、インターネットなどの通信ネットワークに接続されていない、プライベートシグニチャキーを保管・管理するためのシステムである。これは「エアギャップ」システムと呼ばれることもある。通信ネットワークからのアクセスは鍵管理システムに対する主要な攻撃ベクトルの1つと考えられているため、コールドウォレットは非常に高いセキュリティレベルを示している。しかし、通信ネットワークからのアクセスがないため、正当な利用者が自分のプライベートシグニチャキーにアクセスすることは困難である。さらに、コールドウォレットは単一障害点であり、悪意のある者がコールドウォレットを保持するハードウェアを危険にさらすことに成功した場合、その者はプライベートシグニチャキーに完全にアクセスすることができるのである。これは、プライベートシグニチャキーが異なる場所でシェアされ保管されている場合でも同様で、署名を生成するためにプライベートシグニチャキーを組み立てる必要があるからである。最後に、署名を実行するために、いくつかのデータがエアギャップ・システムに入る必要があり、それによってマルウェアがエアギャップ・システムに入り、プライベートシグニチャキーを危険にさらすというリスクが生じる。
【0006】
https://www.cs.princeton.edu/~stevenag/bitcoin_threshold_signatures.pdfにて利用できるSteven Goldfederらによる"Securing Bitcoin wallets via threshold signatures"(2014年6月3日)(非特許文献1)は、 BitcoinのECDSA署名と互換性があり、ウォレットのシェア制御、安全な簿記、安全な権限委譲、個人ウォレットの2要素セキュリティなど複雑かつ有用なセキュリティポリシーを施行するのに使用可能な閾値署名スキームを開示している。有効な署名を構築する能力はn人のプレイヤーに分散され、各プレイヤーは秘密分散方式などによってプライベートシグニチャキーのシェアを受ける。署名にはt人以上の参加が必要であり、その人数はある固定値t≦nである。鍵のシェアは、コールドウォレットに格納されてもよい。ECDSA閾値署名プロトコルは、プライベートシグニチャキーを再構築することなく、並列制御で署名付きトランザクションを提供するために使用される。署名は鍵シェアから直接取得され、鍵シェアを持つプレイヤー間の通信を必要とするステップを経る。
【先行技術文献】
【非特許文献】
【0007】
【文献】"Securing Bitcoin wallets via threshold signatures" https://www.cs.princeton.edu/~stevenag/bitcoin_threshold_signatures.pdf
【発明の概要】
【0008】
本発明の実施形態の目的は、正当なユーザが容易にアクセスできるようにしながら、高いレベルのセキュリティを得ることができる、デジタルシグニチャを提供するための方法を提供することである。
【0009】
本発明の実施形態のさらなる目的は、デジタルシグニチャを提供するためのシステムを提供することであり、このシステムでは、正当なユーザが容易にアクセスできるようにしながら、高レベルのセキュリティを提供する。
【0010】
第1の態様によれば、本発明は、デジタルシグニチャを提供するための方法を提供し、該方法は、以下のステップを含む。
コールドウォレットの2つ以上のノードに分配されるプライベートシグニチャキーを提供し、コールドウォレットの各ノードがプライベートシグニチャキーの1つ以上のシェアを所有し、コールドウォレットのどのノードもプライベートシグニチャキーのすべてのシェアは所有しない、提供するステップと、
コールドウォレットの各ノードが、プライベートシグニチャキーのシェアに基づいてプレシグニチャを生成し、プレシグニチャを2つ以上のプレシグニチャノードのうちの1つに送信し、各プレシグニチャノードは、コールドウォレットのノードのうちの1つからプレシグニチャを受信するような方法で、プレシグニチャを送信するステップと、
署名アプリケーションが、シグニチャを要求し、署名されるメッセージをプレシグニチャノードの各々に送信するステップと、
シグニチャの要求と署名されるメッセージを受信したことに応答して、各プレシグニチャノードは、そのプレシグニチャと署名されるメッセージに基づいて、パーシャルシグニチャを生成するステップと、
各プレシグニチャノードが、そのパーシャルシグニチャを署名アプリケーションに送信するステップと、
前記署名アプリケーションが、前記パーシャルシグニチャからデジタルシグニチャを計算するステップと
である。
【0011】
このように、本発明の第1の態様による方法は、デジタルシグニチャを提供するための方法である。上述したように、このようなデジタルシグニチャは、文書に署名するため、または、例えばブロックチェーン技術に基づく暗号通貨取引などの取引を実行するために使用され得る。
【0012】
最初に、プライベートシグニチャキーが提供される。プライベートシグニチャキーは、システムのセットアップ時に一度だけ提供されてもよく、プライベートシグニチャキーは、その後、複数の署名に適用されてもよく、すなわち、プライベートシグニチャキーを提供するステップを繰り返さずに、以下に説明するステップの一部または全部が繰り返されてもよい。
【0013】
プライベートシグニチャキーは、コールドウォレットの2つ以上のノードの間で配布される。したがって、コールドウォレットのノードの各々は、プライベートシグニチャキーの少なくとも1つのシェアを所有しており、コールドウォレットのノードのいずれも、プライベートシグニチャキーのシェアのすべてを所有しておらず、それによって、ノードのいずれも単一障害点を構成しない。さらに、コールドウォレットのノードは通信ネットワークに接続されていないため、エアギャップ・システムを形成し、それに応じてプライベートシグニチャキーは非常に安全な条件下で保存される。ノードが特定の状況下で、例えばプライベートシグニチャキーを生成するために、限られた期間だけ互いに通信することを許可されることは否定しません。しかし、どのノードもコールドウォレットの外から通信を受けることはできない。
【0014】
プライベートシグニチャキーのシェアは、マルチシグニチャセットアップの複数のプライベートキーとして機能してもよく、この場合、有効なシグニチャを提供するため、または取引を有効に承認するために、複数の別々のプライベートキーに基づく複数の有効なシグニチャが要求される。これにより、本発明による方法は、マルチシグニチャワークフローをエミュレートするために適用され得る。例えば、コールドウォレットのノードは別々のサーバーに配置されてもよく、そのサーバーは互いに物理的に離れていてもよい。
【0015】
プライベートシグニチャキーが、ルート鍵と、ルート鍵から決定論的に導出された複数の階層鍵の形式であることは否定されない。これは、例えば、コールドウォレットが、他の暗号通貨のビットコインに関連して適用されることがある、いわゆるHDウォレットの形態である場合である可能性がある。この場合、複数の階層的な鍵は、例えば、ルート鍵が生成され、したがってノードが互いに通信する必要がある場合に導出されてもよく、各ノードは、ルート鍵の1つ以上のシェアと複数の導出された鍵シェアとを保持してもよい。鍵シェアはそれぞれインデックス番号を与えられてもよい。階層的なキーシェアは、例えば、ルート鍵からハッシュ(例えばHMAC)を計算することによって導出されてもよい。このシナリオでは、ルート鍵はコールドウォレットに保持される。しかし、派生した鍵の層のいくつかは、コールドウォレットから出ることを許可され、それによって、ルート鍵のセキュリティを損なうことなく、よりアクセスしやすくすることができる。
【0016】
次に、コールドウォレットの各ノードは、プライベートシグニチャキーのシェア(複数可)に基づいてプレシグニチャを生成する。各プレシグニチャはプライベートシグニチャキーのシェアの一部のみに基づいて生成されるので、どのプレシグニチャもプライベートシグニチャキー全体を表すことはない。したがって、プレシグニチャはプレシグニチャシェアとみなすことができ、コールドウォレットの各ノードはプレシグニチャシェアを保有することになる。プライベートシグニチャキーがルート鍵及び複数の決定論的派生階層鍵からなる種類のものである場合、コールドウォレットの各ノードは、派生鍵シェアのうちの1つに基づいてプレシグニチャを生成してもよい。
【0017】
プレシグニチャの生成は、コールドウォレットのノード間で内部通信を行ってもよいし、行わなくてもよい。プレシグニチャの生成がコールドウォレットのノード間の内部通信を必要とする場合、プレシグニチャは、有利には、指定された時間、例えば、コールドウォレットのノード間の通信も必要とするプライベートシグニチャキーを提供するステップの直後に生成されてもよい。それによって、コールドウォレットのノード間の通信は最小限に抑えられ、明確に定義された時間間隔に制限され、それによって、プライベートシグニチャキーのシェアが漏れるリスクを最小限に抑えることができる。
【0018】
本発明の方法がマルチシグニチャワークフローのエミュレーションに適用される場合、プライベートシグニチャキーのシェアを保有するノードのすべてがコールドウォレットの一部を形成する必要はなく、ノードの少なくともいくつかが、閉鎖またはエアギャップ環境の外で通信することが許可され得るという意味において、コールドウォレットの一部を形成する必要はない。
【0019】
さらに、コールドウォレットの各ノードは、生成されたプレシグニチャを2つ以上のプレシグニチャノードのうちの1つに送信し、各プレシグニチャノードは、コールドウォレットのノードのうちの1つのみからプレシグニチャを受信するような態様で、プレシグニチャを送信する。したがって、コールドウォレットのノードとプレシグニチャノードとの間には1対1の関係があり、プレシグニチャノードのいずれも、組み合わせるとプライベートシグニチャキー全体を代表するプレシグニチャを所持していない。その結果、どのプレシグニチャノードも単一障害点とはならない。さらに、プレシグニチャは、プライベートシグニチャキーの全部または一部を明らかにすることなく、コールドウォレットからエクスポートされる。プレシグニチャを生成し送信するステップは、署名されるメッセージを知らなくても実行可能であり、したがって、コールドウォレットにメッセージを送信する必要はないことに留意されたい。
【0020】
次に、署名アプリケーションは、シグニチャを要求し、署名されるメッセージをプレシグニチャノードの各々に送信する。これに応答して、各プレシグニチャノードは、そのプレシグニチャと署名対象のメッセージとに基づいて、パーシャルシグニチャを生成する。パーシャルシグニチャは、それぞれのプレシグニチャノードによって、それぞれのノードが所有しているプレシグニチャに基づいて生成されるので、どのパーシャルシグニチャもプライベートシグニチャキー全体を代表するものではなく、したがって、どのパーシャルシグニチャもメッセージの完全な署名を形成することはできない。しかし、パーシャルシグニチャの組み合わせから完全な署名を形成することができる。
【0021】
したがって、プレシグニチャノードの各々は、そのパーシャルシグニチャを署名アプリケーションに送信する。これにより、署名アプリケーションは、すべてのパーシャルシグニチャを所有することになり、完全な署名を形成することができる。したがって、署名アプリケーションは、最終的にパーシャルシグニチャからデジタルシグニチャを計算する。
コールドウォレットにデータが入らないように、またコールドウォレットからプライベートシグニチャキーのシェアが出ないように、プレシグニチャがコールドウォレット内で生成されることは、プライベートシグニチャキーに関するあらゆる情報の漏洩リスクを劇的に低減するため、利点である。
【0022】
さらに、プレシグニチャは、ユーザにとってアクセスしやすいコールドウォレットの外側にあるプレシグニチャノードに送信されるので、正規ユーザにとって非常に使い勝手の良いシステムである。
【0023】
このように、本発明の第1の態様に係る方法においては、コールドウォレットは、全プロセスの間、エアギャップされたままである。それにより、コールドウォレットにマルウェアが導入されるリスク、及びプライベートシグニチャキーが漏洩するリスクは、最小限に抑えられる。しかしながら、プレシグニチャはプレシグニチャノードによって保持されるので、これらは実際の署名プロセス中にプライベートシグニチャキーよりも著しくアクセス可能であり、それによって正当なユーザが署名に容易にアクセスできるようになる。したがって、本発明の第1の態様による方法は、プライベートシグニチャキーのシェアがコールドウォレットのノードによって保持されることに起因して、高いレベルのセキュリティを提供する一方で、プレシグニチャがプレシグニチャノードによって保持されることに起因して、正当なユーザにとって容易なアクセスを可能にする。
【0024】
本方法は、パーシャルシグニチャを生成するステップの後、パーシャルシグニチャを送信するステップの前に、プレシグニチャノードの各々がプレシグニチャを削除するステップをさらに備えてもよい。本実施形態によれば、プレシグニチャは、パーシャルシグニチャを生成するために適用されるとすぐに、プレシグニチャノードから削除される。それにより、所定のプレシグニチャが2つ以上のパーシャルシグニチャの生成のために適用されることが防止される。これは、1つのプレシグニチャに由来する複数のパーシャルシグニチャがプライベートシグニチャキーの機密性を損なう可能性があるため、利点である。パーシャルシグニチャが署名アプリケーションに送信される前にプレシグニチャを削除することにより、署名アプリケーションにアクセスした悪意のある者が、同じプレシグニチャに基づく第2のパーシャルシグニチャを要求することをさらに防止することができる。これは、楕円曲線デジタルシグニチャアルゴリズム(ECDSA)が適用される場合に特に関連する。
【0025】
コールドウォレットの各ノードがプレシグニチャをプレシグニチャノードの1つに送信するステップは、一方向通信チャネルを使用して実行されてもよい。本実施形態によれば、コールドウォレットから情報のみを出すことができ、コールドウォレットにデータを入れないことが効率的に確保される。したがって、プライベートシグニチャキーと署名されるメッセージとが同じ位置に配置されることはない。これにより、マルウェアがメッセージとともにコールドウォレットに入り込み、それによってプライベートシグニチャキーが危険にさらされる危険性をかなり低減することができる。
【0026】
一方向通信チャネルは、例えば、プレシグニチャノードによってスキャンすることができる二次元コードなどの視覚的出力の形態であり得る。代替的または追加的に、一方向通信チャネルは、一方向通信のみを可能にするネットワーク機器および/または接続を含むことができる。
【0027】
プライベートシグニチャキーを提供するステップは、コールドウォレットのノードがマルチパーティ計算プロトコルによってプライベートシグニチャキーを生成することによって実行されてもよい。マルチパーティ計算プロトコルは、例えば、暗号化プロトコルであってもよい。本実施形態によれば、コールドウォレットのノードは、プライベートシグニチャキー全体が決して集合しないような方法で、かつ、プライベートシグニチャキーのシェアのいずれもコールドウォレットから出ないような方法で、プライベートシグニチャキーの生成に協力する。
【0028】
コールドウォレットの各ノードは、2つ以上のプレシグニチャからなるバッチの一部として、プレシグニチャを生成してもよい。この実施形態によれば、複数のプレシグニチャが、例えば、プライベートシグニチャキーの生成時に最初に生成され、プレシグニチャは、署名が要求されたときに、1つずつ使用される。例えば、プレシグニチャの生成は、コールドウォレットのノードの少なくとも一部の間で通信を必要とする場合がある。これは、例えば、上述のプライベートシグニチャキーの生成と同様に、マルチパーティ計算プロトコルの適用を含み得る。プライベートシグニチャキーの危殆化のリスクを最小化するために、コールドウォレットのノード間の通信を短時間で頻繁でない時間間隔に制限することが望ましい場合がある。多数のプレシグニチャがバッチとして生成される場合、コールドウォレットのノードは、次にプレシグニチャが必要となったときに互いに通信する必要がない。それにより、システムのセキュリティが向上する。
【0029】
プレシグニチャは、さらに、プレシグニチャのバッチとしてそれぞれのプレシグニチャノードに送信されてもよい。代替案として、プレシグニチャのバッチは、コールドウォレットのそれぞれのノードで保存され、プレシグニチャは、署名が要求されるたびに、それぞれのプレシグニチャノードに一度に1つずつ送信されてもよい。
【0030】
少なくとも、プライベートシグニチャキーを提供するステップ、プレシグニチャを生成するステップ、及びプレシグニチャをプレシグニチャノードに送信するステップは、署名アプリケーションがシグニチャを要求するステップの前に、前処理ステップとして実行されてもよい。
【0031】
プライベートシグニチャキーの提供、プレシグニチャの生成、およびプレシグニチャノードへのプレシグニチャの送信のステップは、署名されるメッセージの知識がなくても実行可能である。したがって、これらのステップは、有利には、シグニチャが要求される前に、前処理ステップとして実行され、場合によってはシステムの負荷が低い時間に実行されることがある。これにより、実際にシグニチャが要求されたときのシステムの待ち時間を短縮することができる。さらに、シグニチャが要求され生成される時点では、コールドウォレットのノードとプレシグニチャのノードとの間の通信が必要ないため、署名プロセス中に通信障害が発生するリスクが低減され、システムの信頼性が向上している。最後に、これは、実際の署名プロセスの間、コールドウォレットがエアギャップされたままであることを保証し、それによって、システムに対する悪意のある攻撃が成功するリスクをかなり減少させる。
【0032】
代替案として、コールドウォレットの各ノードが、プライベートシグニチャキーのシェアに基づいてプレシグニチャを生成し、プレシグニチャを2つ以上のプレシグニチャノードのうちの1つに送信するステップは、署名アプリケーションからの署名要求の受信に応答してプレシグニチャノードによって開始され得る。この実施形態によれば、プレシグニチャは、実際に署名が要求されるまで生成されない。その代わり、署名アプリケーションが署名を要求し、署名するメッセージをプレシグニチャノードに送信することによって、プロセスが開始される。これに応答して、プレシグニチャノードはコールドウォレットの各ノードからプレシグニチャを要求し、コールドウォレットはプレシグニチャを生成してプレシグニチャノードに送信する。
【0033】
なお、各プレシグニチャノードがパーシャルシグニチャを生成するステップは、プレシグニチャノード間で内部通信を行わずに実行してもよい。本実施形態によれば、プレシグニチャノードがコールドウォレットのノードからそれぞれのプレシグニチャを受信すると、各プレシグニチャノードは、他のプレシグニチャノードと通信を行わずに、そのパーシャルシグニチャを生成することができる。これにより、実際の署名が生成されるときに必要な通信が最小限に抑えられ、それによって待ち時間が減少し、システムの安全性と信頼性が向上する。この実施形態は、上述したように、方法ステップの一部が前処理ステップとして実行される実施形態と組み合わせて特に関連性がある。
【0034】
本方法は、署名アプリケーションからの署名の要求を承認するステップをさらに含んでもよい。この実施形態によれば、署名の要求が認可されたユーザから発信されていることが確認できる場合にのみ、署名プロセスが開始される。承認は、例えば、パスワードの入力又は他の任意の適切な識別方法を含んでもよい。
【0035】
コールドウォレットのノードは、閾値条件tを満たしてよく、プレシグニチャノードは、閾値条件t'を満たしてよく、ここで、t'はt以上である。
【0036】
マルチパーティデジタルシグニチャを行うシステムは、しばしば(t,n)を満たすように設計されており、ここでnはノードの数であり、tは閾値である。閾値tは、署名プロセスを完了させる一方で、悪意のあるパーティや非参加パーティをどれだけ許容できるかを指定する。一般に、有効な署名は任意のt+1個の正直なノードによって生成されることができる。
【0037】
例えば、t=n/2、n=3の場合、任意の2つのノードによって有効な署名が生成され、最大1つの悪意のあるノードまたは不参加のノードが許容される。
【0038】
本実施形態によれば、コールドウォレットのノードは、閾値条件tを満たすので、コールドウォレットの任意のt+1個のノードは、プライベートシグニチャキーを計算することができる。さらに、プレシグニチャのノードは、閾値条件、t'を満たす。したがって、有効な署名は、プレシグニチャノードのうち任意のt'+1から発信されるプレシグニチャから計算することができる。t'≧tなので、必要な参加ノードおよび誠実なプレシグニチャノードの数は、コールドウォレットの必要な誠実な参加ノードの数と少なくとも同じ大きさである。一実施形態によれば、t'=2tである。したがって、コールドウォレットと比較してより高いアクセス性によって引き起こされるプレシグニチャノードのより低いセキュリティレベルは、より厳しい閾値条件を課すことによって補償される。
【0039】
本方法は、更に、
コールドウォレットのノードの少なくともいくつかが、1つ以上の追加のプレシグニチャシェアを生成し、追加のプレシグニチャシェアを暗号化し、暗号化された追加のプレシグニチャシェアをプレシグニチャとともにプレシグニチャノードの1つ以上に送信するステップと、及び、
暗号化された追加のプレシグニチャシェアを受信した各プレシグニチャノードが、暗号化された追加のプレシグニチャシェアをパーシャルシグニチャとともに署名アプリケーションに送信するステップと
を含んでもよく、
および、署名アプリケーションがデジタルシグニチャを計算するステップは、
署名アプリケーションが、受信した暗号化された追加のプレシグニチャシェアを復号化するステップと、
署名アプリケーションが、復号化された追加のプレシグニチャシェアに基づいて追加のプレシグニチャを生成し、追加のプレシグニチャおよび署名されるメッセージに基づいて追加のパーシャルシグニチャを生成するステップと、及び、
署名アプリケーションが、プレシグニチャノードから受信したパーシャルシグニチャと、生成された追加パーシャルシグニチャとからデジタルシグニチャを計算するステップと
を含んでもよい。
【0040】
本実施形態によれば、署名アプリケーションは、プレシグニチャノードとともに、署名プロセスにおける追加のパーティとして機能する。したがって、n個のプレシグニチャノードから発信されるn個のパーシャルシグニチャの代わりに、n+1個のパーシャルシグニチャが存在し、(n+1)番目のパーシャルシグニチャは、n個のプレシグニチャノードによって提供される1つ以上の追加のプレシグニチャシェアを使用して、署名アプリケーションによって生成される。
【0041】
署名プロセスにこのような追加のパーティを導入することにより、コールドウォレットの外で行われるプロセスの部分のセキュリティが改善される。例えば、コールドウォレット内で行われる署名プロセスの部分は、(t,n)閾値条件を満たすことができ、一方、コールドウォレットの外側で行われる署名プロセスの部分、例えば、プレシグニチャノード及び署名アプリケーションで行われる署名プロセスの部分は、(t+1,n+1)閾値条件を満たすことができる。
【0042】
さらに、署名アプリケーションが署名プロセスの最終部分にのみ関与することは、署名アプリケーションとシステムの他のパーティとの間の必要な相互作用の数を最小化し、それによって署名プロセス中の待ち時間を最小化するため、利点である。
【0043】
この実施形態によれば、署名プロセスは、以下の方法で実行されてもよい。コールドウォレットのノードがプレシグニチャを生成するとき、そのノード間でも1つまたは複数の追加のプレシグニチャシェアを生成し、それらの組み合わせで追加のプレシグニチャを形成する。追加のプレシグニチャシェアは暗号化され、暗号化された追加のプレシグニチャシェアはプレシグニチャとともにそれぞれのプレシグニチャノードに送信される。追加のプレシグニチャシェアは、コールドウォレットのそれぞれのノードによって、コールドウォレットの他のノードから独立して生成されてもよく、またはコールドウォレットのノードの2つ以上が追加のプレシグニチャシェアの生成に協力してもよい。これについては、以下でさらに詳細に説明する。
【0044】
署名の要求を受信することに応答して、各プレシグニチャノードは、パーシャルシグニチャを生成し、上述したように、署名アプリケーションにパーシャルシグニチャを送信する。コールドウォレットのノードの1つから暗号化された追加のプレシグニチャシェアを受信したプレシグニチャノードは、受信した暗号化されたプレシグニチャシェアを、そのプレシグニチャとともに、署名アプリケーションにさらに送信する。このように、署名アプリケーションは、プレシグニチャノードからパーシャルシグニチャと1つ以上の暗号化された追加のプレシグニチャシェアを受信する。
【0045】
署名アプリケーションは、受信した暗号化された追加のプレシグニチャのシェアを復号化し、復号化されたシェアから追加のプレシグニチャを生成する。署名アプリケーションは、プレシグニチャノードがパーシャルシグニチャを生成した方法と同様の方法で、追加のプレシグニチャと署名されるメッセージに基づいて、追加のパーシャルシグニチャを生成する。最後に、署名アプリケーションは、プレシグニチャノードから受信したパーシャルシグニチャと追加のパーシャルシグニチャからデジタルシグニチャを計算する。このように、署名アプリケーションは、プレシグニチャノードと同様に動作する追加のパーティとして、署名プロセスに参加する。
【0046】
1つ以上の追加のプレシグニチャシェアを生成するステップは、コールドウォレットの各ノードが追加のプレシグニチャシェアを生成し、追加のプレシグニチャシェアを暗号化することによって実行されてもよい。
【0047】
この実施形態によれば、プレシグニチャシェアは、コールドウォレットの他のノードから独立して、コールドウォレットのそれぞれのノードによって生成される。それによって、コールドウォレットのノードのいずれも、コールドウォレットの他のノードによって生成された追加のプレシグニチャシェアに関するいかなる知識も得ることはない。同様に、プレシグニチャノードのいずれも、他のプレシグニチャノードによって受信される暗号化された追加のプレシグニチャシェアに関するいかなる知識も得ることはない。
【0048】
本実施形態によれば、署名プロセスは、例えば、以下の方法で実行され得る。コールドウォレットがn個のノードからなり、コールドウォレットの各ノードが、例えば標準的なSchnorrシグニチャスキームにおいて、プライベートシグニチャキー、[x]のシェア、xi、及び、ランダムなシェア値のシェア、[k]のシェア、kiを保持すると仮定する。そして、公開検証鍵は、y=gxであり、gは環状群の生成子である。メッセージmの署名は、(r,s)であり、ここで r=H(m||R)及びs=k+rxであり、R=gk及びHは適用される署名アルゴリズムで指定される関数である。コールドウォレットの各ノードは、y=gx、R=gk、及び暗号化キー、例えば対称暗号化キー、diを保持しているとさらに仮定することができる。
【0049】
そして、コールドウォレットの各ノードは、乱数ai及びbiを選び、k'i=ki-ai及びx'i=xi-biを計算することができる。さらに、コールドウォレットの各ノードは、Di=Edi(ai||bi||R||y)を計算し得、ここでEは、暗号化キーdiを使用する認証された暗号化を表す。コールドウォレットの所定のノードから対応するプレシグニチャノードに送信されるメッセージは、Mi=(k'i,x'i,R,Di)であり、k'i,x'i及びRはプレシグニチャを形成し、Diは暗号化された追加のプレシグニチャシェアを形成している。
【0050】
署名アプリケーションは、署名を要求し、署名すべきメッセージmを各プレシグニチャノードに送信する。これに応答して、各プレシグニチャノードは、コールドウォレットのノードから受信したメッセージMiと、署名対象のメッセージmとに基づいて、partiali=k'i+H(m||R)・x'iとして、パーシャルシグニチャを生成する。各プレシグニチャのノードは、メッセージNi=(partiali,Di)を署名アプリケーションに送信する。
【0051】
署名アプリケーションは、暗号化されたプレシグニチャシェアDiの各々を復号化することができる復号化キーを保持する。対称暗号が適用されている場合、復号化キーは暗号化キーdiと同一である。したがって、メッセージNiを受信すると、署名アプリケーションは、暗号化された追加のプレシグニチャシェアDiを復号し、k'n+1=a1+a2+...+anとx'n+1=b1+b2+...+bnを計算して追加のプレシグニチャを発生させる。署名アプリケーションはさらに、partialn+1=k'n+1+H(m||R)・x'n+1として、すなわちプレシグニチャノードがそれぞれのパーシャルシグニチャを生成したのと同じ方法で、追加のパーシャルシグニチャを生成する。
【0052】
最後に、署名アプリケーションはデジタルシグニチャ(r,s)を計算するが、ここで、r=H(m||R)であり、sはパーシャルシグニチャの合計、すなわち、s=partial1+partial2+・・・+partialn+1である。さらに、署名アプリケーションは、受け取ったRの値がすべて同一であることを チェックし得る。そうでない場合、署名は不正であり、例えば悪意のある、または不正なパーティによるものである。結果として、署名アプリケーションは、受信したRの値が同一でない場合、署名プロセスを中断することを選択することができる。
【0053】
代替案として、1つ以上の追加のプレシグニチャシェアを生成するステップは、上述の実施形態と同様の方法で実行されてもよいが、コールドウォレットのノードの一部のみが参加している状態で実行されてもよい。この場合、(n+1)番目のプレシグニチャを生成するために、n未満の追加のプレシグニチャシェアが必要とされる。
【0054】
別の代替案として、1つ以上の追加のプレシグニチャシェアを生成するステップは、マルチパーティ計算プロトコルを適用するコールドウォレットのノードのうちの少なくとも2つによって実行されてもよい。
【0055】
この実施形態によれば、1つ以上の追加のプレシグニチャシェアは、コールドウォレットのノードの2つ以上によって協力して生成される。コールドウォレットのノードの全てがこのプロセスに参加してもよく、コールドウォレットのノードの一部のみが参加してもよい。
【0056】
例えば、コールドウォレットのノードは、マルチパーティ計算プロトコルによって、2つ以上の追加のプレシグニチャシェアを生成し、これらをコールドウォレットの2つ以上のノードの間で分配してもよい。これは、例えば、上述したマルチパーティ計算プロトコルによる分散型プライベートシグニチャキーの生成と同様であってもよい。追加のプレシグニチャシェアの暗号化は、例えば、分散されたシェアが暗号化されたシェアとみなされるという意味で、マルチパーティ計算プロトコルの統合された部分であってよい。
【0057】
代替案として、マルチパーティ計算プロトコルは、追加のプレシグニチャ全体の暗号化バージョンを構成する、単一の暗号化された追加のプレシグニチャシェアの生成をもたらし得る。この暗号化された追加のプレシグニチャシェアは、その後、コールドウォレットのノードの1つまたは複数によってプレシグニチャノードの1つまたは複数に送信され得る。この場合、署名アプリケーションが追加のプレシグニチャシェアを復号化すると、追加のプレシグニチャシェアも生成されたことになる。
【0058】
上記のように、追加のプレシグニチャシェアは、コールドウォレットのそれぞれのノードと署名アプリケーションとの間でシェアされる対称暗号化キーによって暗号化および復号化されてもよい。この場合、コールドウォレットの各ノードは、署名アプリケーションと対称暗号鍵をシェアし、この鍵は、追加のプレシグニチャシェアを暗号化するためだけでなく、追加のプレシグニチャシェアを復号化するために適用される。代替案として、別の暗号化スキーム、例えば、公開鍵基盤(PKI)スキームなどの非対称暗号化鍵を適用してもよい。
【0059】
第2の態様によれば、本発明は、デジタルシグニチャを提供するためのシステムを提供し、このシステムは、以下を備える。
ノード間で分散されたプライベートシグニチャキーを有する2つ以上のノードを含むコールドウォレットであって、コールドウォレットの各ノードはそれによってプライベートシグニチャキーの1つ以上のシェアを所有し、コールドウォレットのどのノードもプライベートシグニチャキーの全てのシェアは所有せず、コールドウォレットのノードは、プライベートシグニチャキーのシェアに基づいてプレシグニチャを生成し、プレシグニチャノードにプレシグニチャを転送するよう構成された、コールドウォレットと、
2つ以上のプレシグニチャノードを含むプレシグニチャウォレットであって、各プレシグニチャノードがコールドウォレットのノードのうちの1つのみからプレシグニチャを受信し、そのプレシグニチャと署名されるメッセージとに基づいてパーシャルシグニチャを生成し、そのパーシャルシグニチャを署名アプリケーションに送信する、というようにして、コールドウォレットのノードからプレシグニチャを受信するように構成されたプレシグニチャノード、及び、
署名の要求および署名されるメッセージをプレシグニチャノードに送信し、プレシグニチャノードからパーシャルシグニチャを受信し、パーシャルシグニチャからデジタルシグニチャを計算するように構成される署名アプリケーションと
である。
【0060】
本発明の第2の態様によるシステムは、本発明の第1の態様による方法を実行するために使用されてもよく、したがって、上に述べた備考は、ここでも同様に適用可能である。
【0061】
したがって、本発明の第2の態様によるシステムは、コールドウォレットと、プレシグニチャウォレットと、署名アプリケーションとから構成される。
【0062】
コールドウォレットは、本発明の第1の態様を参照して上述した方法でそれらの間で分散されたプライベートシグニチャキーを有する2つ以上のノードから構成される。コールドウォレットのノードは、さらに、プレシグニチャを生成し、これを、本発明の第1の態様を参照して上述した方法でプレシグニチャノードに送信するように構成される。コールドウォレットはエアギャップされており、すなわち、コールドウォレットのノードは、プライベートシグニチャキーが生成されるとき、ノードが互いに通信することのみが許可され、プレシグニチャが出力されるとき、この場合、ノードは情報を送信することはできるが、情報を受信することはできない以外はオフラインになる。
【0063】
プレシグニチャウォレットは、2つ以上のプレシグニチャノードからなり、各ノードは、本発明の第1の態様を参照して上述した方法でプレシグニチャを受信するように構成される。プレシグニチャノードは、さらに、パーシャルシグニチャを生成し、これらを、本発明の第1の態様を参照して上述した方法で、署名アプリケーションに送信するように構成される。
【0064】
署名アプリケーションは、本発明の第1の態様を参照して上述した方法で、署名の要求および署名されるメッセージをプレシグニチャノードに送信し、プレシグニチャノードからパーシャルシグニチャを受信し、デジタルシグニチャを計算するように構成されている。
【0065】
コールドウォレットへのデータ送信は、防止されてもよい。この場合、データは、プレシグニチャノードに送信されるプレシグニチャの形で、コールドウォレットを離れることのみが許可される。しかし、署名されるメッセージはコールドウォレットに入ることはなく、プライベートシグニチャキーのシェアはコールドウォレットを離れることはない。これにより、プライベートシグニチャキーと署名されるメッセージが同じ位置に配置されることがないことが効率的に保証される。
【図面の簡単な説明】
【0066】
次に、添付の図面を参照して、本発明をさらに詳細に説明する。
【0067】
【
図1】
図1は、本発明の一実施形態によるシステムの斜視図である。
【
図2】
図2は、本発明の一実施形態による方法を示すフローチャートである。
【発明を実施するための形態】
【0068】
図面の詳細な説明
【0069】
図1は、本発明の一実施形態に係るシステム1の斜視図である。システム1は、コールドウォレット2と、プレシグニチャウォレット3と、署名アプリケーション4とから構成される。
【0070】
コールドウォレット2は、多数のノード5から構成される。例示の目的のために、3つのノード5が示されている。しかしながら、コールドウォレット2が2つのノード5からなること、又はコールドウォレット2が4つ以上のノード5からなることを否定するものではないことに留意されたい。コールドウォレット2は、コールドウォレット2のノード5が本質的にオフラインであり、それによって悪意のあるパーティによってアクセスを得ることが困難であるという意味で、エアギャップされている。
【0071】
プレシグニチャウォレット3は、多数のプレシグニチャノード6から構成される。例示の目的で、3つのプレシグニチャノード6が示されているが、プレシグニチャウォレット3が2つのプレシグニチャノード6から構成され得ること、又はプレシグニチャウォレット3が4つ以上のプレシグニチャノード6から構成され得ることは否定されない。しかしながら、コールドウォレット2のノード5の数とプレシグニチャノード6の数は同一であることが好ましい。プレシグニチャウォレット3は、プレシグニチャウォレット3との間の限定された通信が許可されるという意味で、「ぬるま湯」と考えることができる。それにより、プレシグニチャウォレット3のセキュリティレベルは、コールドウォレット2のセキュリティレベルよりも低くなる。しかしながら、プレシグニチャウォレット3は、許可されたユーザにとってアクセスしやすく、したがって、コールドウォレット2よりもユーザフレンドリである。
【0072】
図1のシステム1は、以下のように動作してもよい。初めに、コールドウォレット2のノード5によって、マルチパーティ暗号プロトコルを使用して、プライベートシグニチャキーが生成される。それにより、プライベートシグニチャキーは、各ノード5がプライベートシグニチャキーの1つ以上のシェアを所有し、どのノード5もプライベートシグニチャキーのシェアの全てを所有しないように、コールドウォレット2のノード5間で分配される。従って、プライベートシグニチャキーが1つの位置に集められることはなく、いずれのノード5もプライベートシグニチャキーに関する単一障害点を構成することはない。
図1に示す実施形態では、プライベートシグニチャキーのシェアは3つであり、ノード5の各々は、そのうちの1つのシェアを所持している。コールドウォレット2のノード5は、プライベートシグニチャキーを生成している間は、互いに通信することができるが、それ以外は互いに隔離されている。それにより、プライベートシグニチャキーが後の時点で組み立てられることが防止される。コールドウォレット2のノード5は、コールドウォレット2の外部のいかなるエンティティからも、いつでもデータを受信することが防止される。
【0073】
プライベートシグニチャキーのシェアは、マルチシグニチャセットの複数のプライベートキーの別々のプライベートキーとして機能してもよく、それによって、システム1は、上述したように、マルチシグニチャワークフローをエミュレートすることができる。
【0074】
次に、コールドウォレット2のノード5の各々は、プライベートシグニチャキーのシェアに基づいて、プレシグニチャを生成する。コールドウォレット2の所定のノード5によって生成されたプレシグニチャは、それによって、そのノード5によって保持されるプライベートシグニチャキーのシェアについて代表されるが、コールドウォレット2の他の2つのノード5によって保持されるプライベートシグニチャキーのシェアについては、代表されない。プレシグニチャは、プレシグニチャのバッチの一部として生成されてもよいし、一度に1つずつ生成されてもよい。コールドウォレット2のノード5は、プレシグニチャの生成中に互いに通信することを許可されてもよい。
【0075】
コールドウォレット2の各ノード5は、さらに、対応するプレシグニチャノード6にプレシグニチャを送信する。このように、各プレシグニチャノード6は、コールドウォレット2のノード5のうちの1つ、及び1つのみからプレシグニチャを受信する。したがって、プレシグニチャノード6のいずれも、プライベートシグニチャキー全体を代表するプレシグニチャを受信せず、それによって、プレシグニチャノード6のいずれも、それ自体で有効な署名を計算することができなくなる。しかし、プレシグニチャノード6が組み合わせると、有効な署名を計算することができるプレシグニチャを保有していることになる。コールドウォレット2のノード5からプレシグニチャノード6へのプレシグニチャの送信は、一方通行の通信路を用いて行われる。例えば、コールドウォレット2のノード5は、例えばカメラ又は適切なスキャナによって、関連するプレシグニチャノード6によって読み取ることができる二次元バーコードなどの視覚的又は機械可読コードを生成してもよい。それによって、コールドウォレット2にデータが入らないことが効率的に保証される。
【0076】
これまで説明したステップは、署名されるメッセージに関する知識を必要とせず、したがって、これらは前処理ステップとして実行され得る。これにより、実際に署名が生成される時点で必要となるステップ数、特に通信ステップ数を削減することができる。これにより、システム1のレイテンシが減少し、通信障害またはタイムアウトによる署名プロセスの失敗のリスクが減少する。
【0077】
署名が必要な場合、認可されたユーザは署名アプリケーション4に連絡し、署名されるメッセージを提供する。次に、署名アプリケーション4は、署名を要求することによってプレシグニチャノード6に連絡し、署名すべきメッセージをプレシグニチャノード6の各々に送信する。これに応答して、プレシグニチャノード6の各々は、そのプレシグニチャに基づき、署名アプリケーション4から受信したメッセージに基づいて、パーシャルシグニチャを生成する。したがって、パーシャルシグニチャのいずれも有効な署名全体を構成しないが、3つのパーシャルシグニチャを組み合わせることで、メッセージの有効な署名を計算するのに十分な情報を含む。さらに、パーシャルシグニチャは、署名されるメッセージに基づき、また、プライベートシグニチャキーに基づき、プレシグニチャがプライベートシグニチャキーのそれぞれのシェアに基づき生成される形態で、生成される。ただし、パーシャルシグニチャは、署名すべきメッセージがコールドウォレット2に入ることを必要とせず、また、プライベートシグニチャキーのシェアのいずれかがコールドウォレット2から出ることを必要とせず、生成される。さらに、パーシャルシグニチャは、プレシグニチャノード6が互いに通信することを要求することなく生成されてもよい。上述したように、これにより、システム1のレイテンシを低減し、システム1が侵害されるリスクを最小化することができる。システム1がマルチシグニチャワークフローのエミュレーションに適用される場合、これはさらに、シグニチャプロセスを標準的なマルチシグニチャワークフローに非常によく似た方法で実行することを可能にし、すなわち、ユーザが従うのに慣れているワークフローを変更する必要がないことを意味している。例えば、全てのパーティがオンラインであることや、パーシャルシグニチャを同時に生成することは要求されない。
【0078】
プレシグニチャノード6は、さらに、生成されたパーシャルシグニチャを署名アプリケーション4に送信し、署名アプリケーション4は、次に、パーシャルシグニチャからメッセージのデジタルシグニチャを計算する。以上のように、
図1に示すシステム1では、コールドウォレット2とプレシグニチャウォレット3とが分離されているため、正当なユーザが容易にアクセスできる一方で、高いセキュリティが実現される。
【0079】
図2は、本発明の一実施形態による方法を示すフローチャートである。処理は、ステップ7で開始される。ステップ8で、プライベートシグニチャキーが、コールドウォレットの2つ以上のノードによって、例えば上述した方法で、マルチパーティ暗号計算プロトコルを使用して生成される。従って、プライベートシグニチャキーは、コールドウォレットのノード間で配布される。
【0080】
ステップ9において、コールドウォレットの各ノードは、プライベートシグニチャキーのシェアに基づいてプレシグニチャを生成し、上記の方法で、プレシグニチャをプレシグニチャノードに送信する。
【0081】
ステップ10では、署名アプリケーションから署名が要求されたかどうかが調査される。そうでない場合はそれ以上何もせず、一定の時間間隔で繰り返し署名の要求があったかどうかが調べられる。署名が要求され、署名アプリケーションによって署名すべきメッセージがプレシグニチャノードに送信されると、処理はステップ11に進められ、各プレシグニチャノードは、そのプレシグニチャと、署名されるメッセージとに基づいて、パーシャルシグニチャを生成する。パーシャルシグニチャが生成されると、将来の別の署名に再利用されないようにするため、それぞれのプレシグニチャノードによってプレシグニチャが削除される。
【0082】
ステップ12で、プレシグニチャノードのそれぞれは、署名を要求した署名アプリケーションにそのパーシャルシグニチャを送信する。最後に、署名アプリケーションは、ステップ13で、受信したパーシャルシグニチャからシグニチャを計算する。