(57)【特許請求の範囲】
【請求項１】
情報保護用のコンピュータ実装された方法であって、
トランザクションの１つ又は複数のデータ入力及び１つ又は複数のデータ出力を判定するステップであって、前記データ入力は、それぞれ、入力データタイプと関連付けられ、且つ、前記データ出力は、それぞれ、出力データタイプと関連付けられ、前記入力データタイプ及び前記出力データタイプは、前記トランザクションにおいて取引が行われる１つ又は複数の資産の１つ又は複数の資産タイプに対応する、ステップと、
前記入力データタイプ及び前記出力データタイプを暗号化するステップと、
対応するコミットメント値を取得するべく、前記暗号化済みの入力データタイプ及び前記暗号化済みの出力データタイプのそれぞれをコミットメント方式によってコミットするステップと、
少なくとも前記コミットメント値に基づいて少なくともパラメータＲを取得するステップと、
ブロックチェーンネットワーク内の１つ又は複数のノードが前記入力データタイプと前記出力データタイプの間の一貫性を検証するべく、前記入力データタイプ及び出力データタイプの開示を伴うことなしに、前記パラメータＲ及び前記コミットメント値を前記ノードにサブミットするステップと、
を有する方法。
【請求項２】
前記入力データタイプ及び前記出力データタイプを暗号化するステップは、前記入力データタイプ及び前記出力データタイプをハッシュ関数によって暗号化するステップを有する請求項１に記載の方法。
【請求項３】
前記コミットメント方式は、Ｐｅｄｅｒｓｅｎコミットメントを有する請求項１に記載の方法。
【請求項４】
前記コミットメント方式は、少なくともブラインディングファクタを有し、且つ、
前記ブラインディングファクタは、前記暗号化済みの入力データタイプ及び前記暗号化済みの出力データタイプをコミットする時点に伴って変化している請求項１に記載の方法。
【請求項５】
前記ノードは、前記入力データタイプ及び出力データタイプの知識を伴うことなしに、前記入力データタイプと前記出力データタイプの間の前記一貫性を検証するようになっている請求項１に記載の方法。
【請求項６】
前記トランザクションは、少なくとも未使用トランザクション出力（ＵＴＸＯ）モデルに基づいており、且つ、
前記データ入力及び前記データ出力は、前記トランザクションを経験する前記１つ又は複数の資産の１つ又は複数の資産タイプを有する請求項１に記載の方法。
【請求項７】
前記コミットメント方式は、前記入力データタイプ及び前記出力データタイプにそれぞれ対応する複数のブラインディングファクタを有し、且つ、
少なくとも前記コミットメント値に基づいて少なくとも前記パラメータＲを取得するステップは、
前記コミットメント値のペアの間の差を取得するステップと、
前記取得された差を連結するステップと、
暗号化値ｘを取得するべく、前記連結された差をハッシュ関数によって暗号化するステップと、
少なくとも前記暗号化値ｘ及び前記ブラインディングファクタのペアの間の差に基づいて前記パラメータＲを取得するステップと、
を有する請求項１に記載の方法。
【請求項８】
前記ブロックチェーンネットワーク内の前記１つ又は複数のノードが前記入力データタイプと前記出力データタイプの間の一貫性を検証するべく、前記入力データタイプ及び出力データタイプの開示を伴うことなしに、前記パラメータＲ及び前記コミットメント値を前記ノードにサブミットするステップは、
前記ブロックチェーンネットワーク内の前記１つ又は複数のノードが、
前記パラメータＲ及びベースポイントＧを取得し、
前記コミットメント値のペアの間の差を取得し、
前記取得された差を連結し、
暗号化値ｘを取得するべく、前記連結された差をハッシュ関数によって暗号化し、
少なくとも前記取得された差及び前記暗号化値ｘに基づいて多項式の合計Ｃを取得し、
前記合計Ｃが前記パラメータＲと前記ベースポイントＧの積に等しいという判定に応答して、前記入力データタイプと前記出力データタイプが一貫性を有していると判定し、且つ、
前記合計Ｃが前記パラメータＲと前記ベースポイントＧの積に等しくないという判定に応答して、前記入力データタイプと前記出力データタイプが一貫性を有していないと判定する、
ようにするべく、前記入力データタイプ及び出力データイプ他の開示を伴うことなしに、前記パラメータＲ及び前記コミットメント値を前記ノードにサブミットするステップを有する請求項１に記載の方法。
【請求項９】
プロセッサが動作を実行するようにするべく、前記プロセッサによって実行される命令を保存する一時的ではないコンピュータ可読ストレージ媒体であって、
前記動作は、
トランザクションの１つ又は複数のデータ入力及び１つ又は複数のデータ出力を判定するステップであって、前記データ入力は、それぞれ、入力データタイプと関連付けられ、且つ、前記データ出力は、それぞれ、出力データタイプと関連付けられ、前記入力データタイプ及び前記出力データタイプは、前記トランザクションにおいて取引が行われる１つ又は複数の資産の１つ又は複数の資産タイプに対応する、ステップと、
前記入力データタイプ及び前記出力データタイプを暗号化するステップと、
対応するコミットメント値を取得するべく、前記暗号化済みの入力データタイプ及び前記暗号化済みの出力データタイプのそれぞれをコミットメント方式によってコミットするステップと、
少なくとも前記コミットメント値に基づいて少なくともパラメータＲを取得するステップと、
ブロックチェーンネットワーク内の１つ又は複数のノードが前記入力データタイプと前記出力データタイプの間の一貫性を検証するべく、前記入力データタイプ及び出力データタイプの開示を伴うことなしに、前記パラメータＲ及び前記コミットメント値を前記ノードにサブミットするステップと、
を有する、ストレージ媒体。
【請求項１０】
前記入力データタイプ及び前記出力データタイプを暗号化するステップは、前記入力データタイプ及び前記出力データタイプをハッシュ関数によって暗号化するステップを有する請求項９に記載のストレージ媒体。
【請求項１１】
前記コミットメント方式は、Ｐｅｄｅｒｓｅｎコミットメントを有する請求項９に記載のストレージ媒体。
【請求項１２】
前記コミットメント方式は、少なくともブラインディングファクタを有し、且つ、
前記ブラインディングファクタは、前記暗号化済みの入力データタイプ及び前記暗号化済みの出力データタイプをコミットする時点に伴って変化している請求項９に記載のストレージ媒体。
【請求項１３】
前記ノードは、前記入力データタイプ及び出力データタイプの知識を伴うことなしに、前記入力データタイプと前記出力データタイプの間の前記一貫性を検証するようになっている請求項９に記載のストレージ媒体。
【請求項１４】
前記トランザクションは、少なくとも未使用トランザクション出力（ＵＴＸＯ）モデルに基づいており、且つ、
前記データ入力及び前記データ出力は、前記トランザクションを経験する前記１つ又は複数の資産の１つ又は複数の資産タイプを有する請求項９に記載のストレージ媒体。
【請求項１５】
前記コミットメント方式は、前記入力データタイプ及び前記出力データタイプにそれぞれ対応する複数のブラインディングファクタを有し、且つ、
少なくとも前記コミットメント値に基づいて少なくとも前記パラメータＲを取得するステップは、
前記コミットメント値のペアの間の差を取得するステップと、
前記取得された差を連結するステップと、
暗号化値ｘを取得するべく、前記連結された差をハッシュ関数によって暗号化するステップと、
少なくとも前記暗号化値ｘ及び前記ブラインディングファクタのペアの間の差に基づいて前記パラメータＲを取得するステップと、
を有する請求項９に記載のストレージ媒体。
【請求項１６】
前記ブロックチェーンネットワーク内の前記１つ又は複数のノードが前記入力データタイプと前記出力データタイプの間の一貫性を検証するべく、前記入力データタイプ及び出力データタイプの開示を伴うことなしに、前記パラメータＲ及び前記コミットメント値を前記ノードにサブミットするステップは、
前記ブロックチェーンネットワーク内の前記１つ又は複数のノードが、
前記パラメータＲ及びベースポイントＧを取得し、
前記コミットメント値のペアの間の差を取得し、
前記取得された差を連結し、
暗号化値ｘを取得するべく、前記連結された差をハッシュ関数によって暗号化し、
少なくとも前記取得された差及び前記暗号化値ｘに基づいて多項式の合計Ｃを取得し、
前記合計Ｃが前記パラメータＲと前記ベースポイントＧの積に等しいという判定に応答して、前記入力データタイプと前記出力データタイプが一貫性を有していると判定し、且つ、
前記合計Ｃが前記パラメータＲと前記ベースポイントＧの積に等しくないという判定に応答して、前記入力データタイプと前記出力データタイプが一貫性を有していないと判定する、
ようにするべく、前記入力データタイプ及び出力データイプの開示を伴うことなしに、前記パラメータＲ及び前記コミットメント値を前記ノードにサブミットするステップを有する請求項９に記載のストレージ媒体。
【請求項１７】
情報保護用のシステムであって、
プロセッサと、
前記プロセッサに結合された一時的ではないコンピュータ可読ストレージ媒体と、
を有し、
前記ストレージ媒体は、前記システムが動作を実行するようにするべく、前記プロセッサによって実行される命令を保存しており、
前記動作は、
トランザクションの１つ又は複数のデータ入力及び１つ又は複数のデータ出力を判定するステップであって、前記データ入力は、それぞれ、入力データタイプと関連付けられ、且つ、前記データ出力は、それぞれ、出力データタイプと関連付けられ、前記入力データタイプ及び前記出力データタイプは、前記トランザクションにおいて取引が行われる１つ又は複数の資産の１つ又は複数の資産タイプに対応する、ステップと、
前記入力データタイプ及び前記出力データタイプを暗号化するステップと、
対応するコミットメント値を取得するべく、前記暗号化済みの入力データタイプ及び前記暗号化済みの出力データタイプのそれぞれをコミットメント方式によってコミットするステップと、
少なくとも前記コミットメント値に基づいて少なくともパラメータＲを取得するステップと、
ブロックチェーンネットワーク内の１つ又は複数のノードが前記入力データタイプと前記出力データタイプの間の一貫性を検証するべく、前記入力データタイプ及び出力データタイプの開示を伴うことなしに、前記パラメータＲ及び前記コミットメント値を前記ノードにサブミットするステップと、
を有する、システム。
【請求項１８】
情報保護用のコンピュータ実装された方法であって、
ブロックチェーンネットワーク内の１つ又は複数のノードにより、イニシエータノードによって開始されたトランザクションを取得するステップであって、
前記トランザクションは、１つ又は複数のデータ入力及び１つ又は複数のデータ出力と関連付けられており、
前記データ入力は、それぞれ、入力データタイプと関連付けられ、且つ、前記データ出力は、それぞれ、個々に、出力データタイプと関連付けられ、前記入力データタイプ及び前記出力データタイプは、前記トランザクションにおいて取引が行われる１つ又は複数の資産の１つ又は複数の資産タイプに対応し、
前記入力データタイプ及び前記出力データタイプは、暗号化され、且つ、対応するコミットメント値を取得するべく、コミットメント方式に対してコミットされ、且つ、
前記入力データタイプ及び出力データタイプは、前記１つ又は複数のノードに対して開示されない、ステップと、
前記１つ又は複数のノードにより、前記入力データタイプと前記出力データタイプの間の一貫性を検証するステップと、
前記入力データタイプと前記出力データタイプが一貫性を有しているという判定に応答して、前記１つ又は複数のノードにより、前記トランザクションを前記ブロックチェーンネットワークの新しいブロックに追加するステップと、
前記入力データタイプと前記出力データタイプが一貫性を有していないという判定に応答して、前記１つ又は複数のノードにより、前記トランザクションが前記ブロックチェーンネットワークの新しいブロックに追加されることを拒絶するステップと、
を有する方法。
【請求項１９】
前記入力データタイプと前記出力データタイプの間の前記一貫性を検証するステップは、
パラメータＲ及びベースポイントＧを取得するステップと、
前記コミットメント値のペアの間の差を取得するステップと、
前記取得された差を連結するステップと、
暗号化値ｘを取得するべく、前記連結された差をハッシュ関数によって暗号化するステップと、
少なくとも前記取得された差及び前記暗号化値ｘに基づいて多項式の合計Ｃを取得するステップと、
前記合計Ｃが前記パラメータＲと前記ベースポイントＧの積に等しいかどうかを判定するステップと、
を有する請求項１８に記載の方法。
【請求項２０】
前記合計Ｃが前記パラメータＲと前記ベースポイントＧの前記積に等しいという判定に応答して、前記入力データタイプと前記出力データタイプが一貫性を有していると判定するステップと、
前記合計Ｃが前記パラメータＲと前記ベースポイントＧの前記積と等しくないという判定に応答して、前記入力データタイプと前記出力データタイプが一貫性を有していないと判定するステップと、
を更に有する請求項１９に記載の方法。
【請求項２１】
プロセッサが動作を実行するようにするべく、前記プロセッサによって実行される命令を保存する一時的ではないコンピュータ可読ストレージ媒体であって、
前記動作は、
ブロックチェーンネットワーク内の１つ又は複数のノードにより、イニシエータノードによって開始されたトランザクションを取得するステップであって、
前記トランザクションは、１つ又は複数のデータ入力及び１つ又は複数のデータ出力と関連付けられており、
前記データ入力は、それぞれ、入力データタイプと関連付けられ、且つ、前記データ出力は、それぞれ、個々に、出力データタイプと関連付けられ、前記入力データタイプ及び前記出力データタイプは、前記トランザクションにおいて取引が行われる１つ又は複数の資産の１つ又は複数の資産タイプに対応し、
前記入力データタイプ及び前記出力データタイプは、暗号化され、且つ、対応するコミットメント値を取得するべく、コミットメント方式に対してコミットされ、且つ、
前記入力データタイプ及び出力データタイプは、前記１つ又は複数ノードに対して開示されない、ステップと、
前記１つ又は複数のノードにより、前記入力データタイプと前記出力データタイプの間の一貫性を検証するステップと、
前記入力データタイプと前記出力データタイプが一貫性を有しているという判定に応答して、前記１つ又は複数のノードにより、前記トランザクションを前記ブロックチェーンネットワークの新しいブロックに追加するステップと、
前記入力データタイプと前記出力データタイプが一貫性を有していないという判定に応答して、前記１つ又は複数のノードにより、前記トランザクションが前記ブロックチェーンネットワークの新しいブロックに追加されることを拒絶するステップと、
を有する、ストレージ媒体。
【請求項２２】
情報保護用のシステムであって、
プロセッサと、
前記プロセッサに結合された一時的ではないコンピュータ可読ストレージ媒体と、
を有し、
前記ストレージ媒体は、前記システムが動作を実行するようにするべく、前記プロセッサによって実行される命令を保存しており、
前記動作は、
ブロックチェーンネットワーク内の１つ又は複数のノードにより、イニシエータノードによって開始されたトランザクションを取得するステップであって、
前記トランザクションは、１つ又は複数のデータ入力及び１つ又は複数のデータ出力と関連付けられており、
前記データ入力は、それぞれ、入力データタイプと関連付けられ、且つ、前記データ出力は、それぞれ、個々に、出力データタイプと関連付けられ、前記入力データタイプ及び前記出力データタイプは、前記トランザクションにおいて取引が行われる１つ又は複数の資産の１つ又は複数の資産タイプに対応し、
前記入力データタイプ及び前記出力データタイプは、暗号化され、且つ、対応するコミットメント値を取得するべく、コミットメント方式に対してコミットされ、
前記入力データタイプ及び出力データタイプは、前記１つ又は複数のノードに対して開示されない、ステップと、
前記１つ又は複数のノードにより、前記入力データタイプと前記出力データタイプの間の一貫性を検証するステップと、
前記入力データタイプと前記出力データタイプが一貫性を有しているという判定に応答して、前記１つ又は複数のノードにより、前記トランザクションを前記ブロックチェーンネットワークの新しいブロックに追加するステップと、
前記入力データタイプと前記出力データタイプが一貫性を有していないという判定に応答して、前記１つ又は複数のノードにより、前記トランザクションが前記ブロックチェーンネットワークの新しいブロックに追加されることを拒絶するステップと、
を有する、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、情報保護用の方法及び装置に関する。
【背景技術】
【０００２】
プライバシーは、様々なユーザーの間における通信及びデータ転送にとって重要である。保護が伴わなければ、ユーザーは、個人情報の盗難、違法な転送、又はその他の潜在的な損失のリスクに晒されることになる。このリスクは、通信及び転送がオンラインで実装されている際には、オンライン情報のフリーアクセスに起因し、更に増大する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本開示の様々な実施形態は、情報保護用のシステム、方法、及び一時的ではないコンピュータ可読媒体を含む。
【課題を解決するための手段】
【０００４】
一態様によれば、情報保護用のコンピュータ実装された方法は、トランザクションの１つ又は複数のデータ入力及び１つ又は複数のデータ出力を判定するステップであって、データ入力は、それぞれ、入力データタイプと関連付けられ、且つ、データ出力は、それぞれ、出力データタイプと関連付けられている、ステップと、入力データタイプ及び出力データタイプを暗号化するステップと、対応するコミットメント値を取得するべく、暗号化済みの入力データタイプ及び暗号化済みの出力データタイプのそれぞれをコミットメント方式によってコミットするステップと、少なくともコミットメント値に基づいて少なくともパラメータＲを取得するステップと、ノードが入力データタイプと出力データタイプの間の一貫性を検証するべく、パラメータＲの開示を伴って、且つ、入力データタイプ及び出力データタイプの開示を伴うことなしに、トランザクションをブロックチェーンネットワーク内の１つ又は複数のノードにサブミットするステップと、を有する。
【０００５】
いくつかの実施形態においては、入力データタイプ及び出力データタイプを暗号化するステップは、入力データタイプ及び出力データタイプをハッシュ関数によって暗号化するステップを有する。
【０００６】
いくつかの実施形態においては、コミットメント方式は、Ｐｅｄｅｒｓｅｎコミットメントを有する。
【０００７】
いくつかの実施形態においては、コミットメント方式は、少なくともブラインディングファクタを有し、且つ、ブラインディングファクタは、暗号化済みの入力データイプ及び暗号化済みの出力データタイプをコミットする時点に伴って変化している。
【０００８】
いくつかの実施形態においては、ノードは、入力データタイプ及び出力データタイプの知識を伴うことなしに、入力データタイプと出力データタイプの間の一貫性を検証するようになっている。
【０００９】
いくつかの実施形態においては、トランザクションは、少なくとも未使用トランザクション出力（ＵＴＸＯ：Ｕｎｓｐｅｎｔ  Ｔｒａｎｓａｃｔｉｏｎ  Ｏｕｔｐｕｔ）モデルに基づいており、且つ、データ入力及びデータ出力は、トランザクションを経験する１つ又は複数の資産（アセット）のタイプを有する。
【００１０】
いくつかの実施形態においては、コミットメント方式は、入力データタイプ及び出力データタイプにそれぞれ対応する複数のブラインディングファクタを有し、且つ、少なくともコミットメント値に基づいて少なくともパラメータＲを取得するステップは、コミットメント値のペアの間の差を取得するステップと、取得された差を連結するステップと、暗号化値ｘを取得するべく、連結された差をハッシュ関数によって暗号化するステップと、少なくとも暗号化値ｘ及びブラインディングファクタのペアの間の差に基づいてパラメータＲを取得するステップと、有する。
【００１１】
いくつかの実施形態においては、ノードが入力データタイプと出力データタイプの間の一貫性を検証するべく、パラメータＲの開示を伴って、且つ、入力データタイプ及び出力データタイプの開示を伴うことなしに、トランザクションをブロックチェーンネットワーク内の１つ又は複数のノードにサブミットするステップは、ノードが、パラメータＲ及びベースポイントＧを取得し、コミットメント値のペアの間の差を取得し、取得された差を連結し、暗号化値ｘを取得するべく、連結された差をハッシュ関数によって暗号化し、少なくとも取得された差及び暗号化値ｘに基づいて多項式の合計Ｃを取得し、合計ＣがパラメータＲとベースポイントＧの積に等しいという判定に応答して、入力データタイプと出力データイプが一貫性を有していると判定し、且つ、合計ＣがパラメータＲとベースポイントＧの積に等しくないという判定に応答して、入力データタイプと出力データタイプが一貫性を有していないと判定する、ようにするべく、パラメータＲの開示を伴って、且つ、入力データタイプ及び出力データタイプの開示を伴うことなしに、トランザクションをブロックチェーンネットワーク内の１つ又は複数のノードにサブミットするステップを有する。
【００１２】
別の態様によれば、一時的ではないコンピュータ可読ストレージ媒体は、プロセッサが動作を実行するようにするべく、プロセッサによって実行される命令を保存しており、動作は、トランザクションの１つ又は複数のデータ入力及び１つ又は複数のデータ出力を判定するステップであって、データ入力は、それぞれ、入力データタイプと関連付けられ、且つ、データ出力は、それぞれ、出力データタイプと関連付けられている、ステップと、入力データタイプ及び出力データタイプを暗号化するステップと、対応するコミットメント値を取得するべく、暗号化済みの入力データタイプ及び暗号化済みの出力データタイプのそれぞれをコミットメント方式によってコミットするステップと、少なくともコミットメント値に基づいて少なくともパラメータＲを取得するステップと、ノードが入力データタイプと出力データタイプの間の一貫性を検証するべく、パラメータＲの開示を伴って、且つ、入力データタイプ及び出力データタイプの開示を伴うことなしに、トランザクションをブロックチェーンネットワーク内の１つ又は複数のノードにサブミットするステップと、を有する。
【００１３】
別の態様によれば、情報保護用のシステムは、プロセッサと、プロセッサに結合された一時的ではないコンピュータ可読ストレージ媒体と、を有し、ストレージ媒体は、システムが動作を実行するようにするべく、プロセッサによって実行される命令を保存しており、動作は、トランザクションの１つ又は複数のデータ入力及び１つ又は複数のデータ出力を判定するステップであって、データ入力は、それぞれ、入力データタイプと関連付けられ、且つ、データ出力は、それぞれ、出力データタイプと関連付けられている、ステップと、入力データタイプ及び出力データタイプを暗号化するステップと、対応するコミットメント値を取得するべく、暗号化済みの入力データタイプ及び暗号化済みの出力データタイプのそれぞれをコミットメント方式によってコミットするステップと、少なくともコミットメント値に基づいて少なくともパラメータＲを取得するステップと、ノードが入力データタイプと出力データタイプの間の一貫性を検証するべく、パラメータＲの開示を伴って、且つ、入力データタイプ及び出力データタイプの開示を伴うことなしに、トランザクションをブロックチェーンネットワーク内の１つ又は複数のノードにサブミットするステップと、を有する。
【００１４】
別の態様によれば、情報保護用のコンピュータ実装された方法は、ブロックチェーンネットワーク内の１つ又は複数のノードにより、イニシエータノードによって開始されたトランザクションを取得するステップを有する。トランザクションは、１つ又は複数のデータ入力及び１つ又は複数のデータ出力と関連付けられている。データ入力は、それぞれ、入力データタイプと関連付けられ、且つ、データ出力は、それぞれ、個々に、出力データタイプと関連付けられている。入力データタイプ及び出力データタイプは、暗号化され、且つ、対応するコミットメント値を取得するべく、コミットメント方式に対してコミットされる。入力データタイプ及び出力データタイプは、１つ又は複数のノードに開示されない。情報保護方法は、１つ又は複数のノードにより、入力データタイプと出力データタイプの間の一貫性を検証するステップと、入力データタイプと出力データタイプが一貫性を有しているという判定に応答して、１つ又は複数のノードにより、トランザクションをブロックチェーンネットワークに追加するステップと、入力データタイプと出力データタイプが一貫性を有していないという判定に応答して、１つ又は複数のノードにより、トランザクションがブロックチェーンネットワークに追加されることを拒絶するステップと、を更に有する。
【００１５】
いくつかの実施形態においては、入力データタイプと出力データタイプの間の一貫性を検証するステップは、パラメータＲ及びベースポイントＧを取得するステップと、コミットメント値のペアの間の差を取得するステップと、取得された差を連結するステップと、暗号化値ｘを取得するべく、連結された差をハッシュ関数によって暗号化するステップと、少なくとも取得された差及び暗号化値ｘに基づいて多項式の合計Ｃを取得するステップと、合計ＣがパラメータＲとベースポイントＧの積に等しいかどうかを判定するステップと、を有する。
【００１６】
いくつかの実施形態においては、方法は、合計ＣがパラメータＲとベースポイントＧの積に等しいという判定に応答して、入力データタイプと出力データタイプが一貫性を有していると判定するステップと、合計ＣがパラメータＲとベースポイントＧの積に等しくないという判定に応答して、入力データタイプと出力データタイプが一貫性を有していないと判定するステップと、を更に有する。
【００１７】
いくつかの実施形態においては、１つ又は複数のノードは、コンセンサスノードを有する。
【００１８】
別の態様によれば、一時的ではないコンピュータ可読ストレージ媒体は、プロセッサが動作を実行するようにするべく、プロセッサによって実行される命令を保存しており、動作は、ブロックチェーンネットワーク内の１つ又は複数のノードにより、イニシエータノードによって開始されたトランザクションを取得するステップを有する。トランザクションは、１つ又は複数のデータ入力及び１つ又は複数のデータ出力と関連付けられている。データ入力は、それぞれ、入力データタイプと関連付けられ、且つ、データ出力は、それぞれ、個々に、出力データタイプと関連付けられている。入力データタイプ及び出力データタイプは、暗号化され、且つ、対応するコミットメント値を取得するべく、コミットメント方式に対してコミットされる。入力データタイプ及び出力データイプは、１つ又は複数のノードに開示されない。動作は、１つ又は複数のノードにより、入力データタイプと出力データタイプの間の一貫性を検証するステップと、入力データイプと出力データタイプが一貫性を有しているという判定に応答して、１つ又は複数のノードにより、トランザクションをブロックチェーンネットワークに追加するステップと、入力データタイプと出力データタイプが一貫性を有していないという判定に応答して、１つ又は複数のノードにより、トランザクションがブロックチェーンネットワークに追加されることを拒絶するステップと、を更に有する。
【００１９】
別の態様によれば、情報保護用のシステムは、プロセッサと、プロセッサに結合された一時的ではないコンピュータ可読ストレージ媒体と、を有し、ストレージ媒体は、システムが動作を実行するようにするべく、プロセッサによって実行される命令を保存しており、動作は、ブロックチェーンネットワーク内の１つ又は複数のノードにより、イニシエータノードによって開始されたトランザクションを取得するステップを有する。トランザクションは、１つ又は複数のデータ入力及び１つ又は複数のデータ出力と関連付けられている。データ入力は、それぞれ、入力データタイプと関連付けられ、且つ、データ出力は、それぞれ、個々に、出力データタイプと関連付けられている。入力データタイプ及び出力データタイプは、暗号化され、且つ、対応するコミットメント値を取得するべく、コミットメント方式に対してコミットされる。入力データタイプ及び出力データタイプは、１つ又は複数のノードに開示されない。動作は、１つ又は複数のノードにより、入力データタイプと出力データタイプの間の一貫性を検証するステップと、入力データタイプと出力データタイプが一貫性を有しているという判定に応答して、１つ又は複数のノードにより、トランザクションをブロックチェーンネットワークに追加するステップと、入力データタイプと出力データタイプが一貫性を有していないという判定に応答して、１つ又は複数のノードにより、トランザクションがブロックチェーンネットワークに追加されることを拒絶するステップと、を更に有する。
【００２０】
本明細書において開示されているシステム、方法、及び一時的ではないコンピュータ可読媒体のこれらの及びその他の特徴のみならず、動作の方法及び構造の関係する要素及び部品の組合せの機能及び製造の経済については、同一の参照符号が様々な図において対応する部分を表記している、そのすべてが本明細書の一部分を形成する、添付図面を参照した以下の説明及び添付の請求項を検討することにより、更に明らかとなろう。但し、添付図面は、例示及び説明を目的としたものに過ぎず、且つ、本発明の限定の定義となることを意図したものではないことを明白に理解されたい。
【００２１】
本技術の様々な実施形態の特定の特徴については、添付の請求項において具体的に記述されている。技術の特徴及び利点については、本発明の原理が利用される例示用の実施形態について記述する以下の詳細な説明を参照することにより、更に十分に理解することが可能となり、且つ、添付図面は、以下のとおりである。
【図面の簡単な説明】
【００２２】
【図１】様々な実施形態による情報保護用の例示用のシステムを示す。
【図２】様々な実施形態によるトランザクションの開始及び検証用の例示用のステップを示す。
【図３】様々な実施形態による情報保護用の例示用の方法のフローチャートを示す。
【図４】様々な実施形態による情報保護用の例示用の方法のフローチャートを示す。
【図５】本明細書において記述されている実施形態の任意のものが実装されうる例示用のコンピュータシステムのブロック図を示す。
【発明を実施するための形態】
【００２３】
ブロックチェーンは、分散型台帳と一般には呼称されている、分散型データベースであると見なされてもよく、その理由は、動作がネットワーク内の様々なノード（例えば、演算装置）によって実行されているからである。任意の情報が、ブロックチェーンに書き込まれてもよく、且つ、保存されてもよく、且つ、これから読み取られてもよい。だれもが、ノードとなるように、サーバーをセットアップしてもよく、且つ、ブロックチェーンネットワークを結合してもよい。任意のノードが、ブロックを現時点のブロックチェーンに追加するためのハッシュ計算などの複雑な演算を実行することにより、ブロックチェーンを維持するための演算パワーを提供してもよく、且つ、追加されたブロックは、様々なタイプのデータ又は情報を収容することができる。追加されたブロック用の演算パワーを提供したノードには、トークン（例えば、デジタル通貨単位）によって報いることができる。ブロックチェーンは、中央ノードを有していないことから、それぞれのノードは、等しく、且つ、ブロックチェーンデータベースの全体を保持している。
【００２４】
ノードは、例えば、ブロックチェーンネットワークをサポートすると共にその円滑な稼働を維持する演算装置又は大規模なコンピュータシステムである。ノードは、マイニングリグと呼称される強力なコンピュータシステムの購入に資金を提供した個人又は人々のグループによって運用されていてもよい。フルノード及び軽量ノードという２つのタイプのノードが存在している。フルノードは、ブロックチェーンの完全な複写を維持している。ブロックチェーンネットワーク上のフルノードは、自身が受け取ったトランザクション及びブロックを検証し、且つ、トランザクションのコンセンサス検証を提供する接続されたピアに、それらを中継している。その一方で、軽量ノードは、ブロックチェーンの一部分をダウンロードするのみである。例えば、軽量ノードは、デジタル通貨トランザクションのために使用されている。軽量ノードは、取引を所望する際には、フルノードに対して通信することになる。
【００２５】
この分散型の特性は、制御された位置に管理センタが出現するのを防止するのに有用でありうる。例えば、ビットコインブロックチェーンの維持は、稼働エリア内のビットコインソフトウェアの通信ノードのネットワークによって実行されている。即ち、従来の意味における銀行、機関、又は管理者の代わりに、ビットコインソフトウェアを稼働させるコンピュータサーバーの形態で、複数の仲介者が存在している。これらのコンピュータサーバーは、インターネットを介して接続されたネットワークを形成しており、この場合には、だれもが、潜在的に、ネットワークに加入することができる。ネットワークによって受け付けられるトランザクションは、「ユーザーＡが、ＺビットコインをユーザーＢに送信することを所望している」という形態を有していてもよく、この場合に、トランザクションは、容易に入手可能なソフトウェアアプリケーションを使用することにより、ネットワークにブロードキャストされる。コンピュータサーバーは、これらの経済的トランザクションを検証し、それらの記録を台帳のその複写に追加し、且つ、次いで、これらの台帳の追加をネットワークのその他のサーバーにブロードキャストするように、動作可能であるビットコインサーバーとして機能している。
【００２６】
ブロックチェーンの維持は、「マイニング（ｍｉｎｉｎｇ）」と呼称されており、且つ、このような維持を実行した者は、上述のように、新たに生成されたビットコイン及びトランザクション料金によって報われる。例えば、ノードは、ブロックチェーンネットワークが合意した規則の組に基づいて、トランザクションが有効であるかどうかを判定することができる。マイナー（ｍｉｎｅｒ）は、任意の大陸に位置していてもよく、且つ、それぞれのトランザクションの有効性を検証すると共にそれをブロックチェーンに追加することにより、支払を処理することができる。このような検証は、複数のマイナーによって提供されるコンセンサスを介して実現され、且つ、システマチックな共謀が存在しないものと仮定している。この結果、すべてのデータが一貫性を有することになり、その理由は、有効となるには、演算が特定の要件を充足しなければならず、且つ、ブロックチェーンが一貫性を有することを保証するために、すべてのノードが同期化されることになるからである。
【００２７】
マイニングプロセスを通じて、資産移転などのトランザクションは、ネットワークノードにより、検証され、且つ、ブロックチェーンのブロックの成長するチェーンに追加される。ブロックチェーン全体を調査することにより、検証は、例えば、支払パーティが移転資産に対するアクセスを有しているかどうか、資産が以前に使用されているかどうか、移転金額が正しいかどうか、などを含むことができる。例えば、送信者によってサインオフされた仮想的なトランザクション（例えば、ＵＴＸＯ（Ｕｎｓｐｅｎｔ  Ｔｒａｎｓａｃｔｉｏｎ  Ｏｕｔｐｕｔ）モデル下におけるビットコインのトランザクション）においては、提案されたトランザクションは、マイニングのためにブロックチェーンネットワークにブロードキャストすることができる。マイナーは、トランザクションが、ブロックチェーン履歴に従って実行される適格性を有しているかどうかをチェックする必要がある。送信者のワレット残高が、既存のブロックチェーン履歴に従って、十分な資金を有している場合には、トランザクションは、有効であると見なされ、且つ、ブロックに追加することができる。検証されたら、ブロックチェーンに追加される次のブロックに資産移転を包含することができる。
【００２８】
ブロックは、データベースレコードによく似ている。データを書き込むごとに、ブロックが生成される。これらのブロックは、リンクされ、且つ、相互接続されたネットワークとなるように、暗号化を使用することにより、保護される。それぞれのブロックは、以前のブロックに接続されており、これも、「ブロックチェーン」という名称の由来である。それぞれのブロックは、通常、以前のブロックの暗号学的ハッシュ、生成時刻、及び実際のデータを収容している。例えば、それぞれのブロックは、現時点のブロックの特徴値を記録するためのブロックヘッダと、実際のデータ（例えば、トランザクションデータ）を記録するためのボディと、という２つの部分を収容している。ブロックのチェーンは、ブロックヘッダを介してリンクされている。それぞれのブロックヘッダは、バージョン、以前のブロックのハッシュ、マークルルート、タイムスタンプ、難易度ターゲット、及びノンスなどの、複数の特徴値を含むことができる。以前のブロックのハッシュは、以前のブロックのアドレスのみならず、以前のブロックの内部のデータのハッシュをも含み、この結果、ブロックチェーンは、不変性を獲得している。ノンスは、含まれている際に、規定数のリーディングゼロビットを有するハッシュをもたらす数である。
【００２９】
マイニングのために、新しいブロックのコンテンツのハッシュがノードによって取得される。ノンス（例えば、ランダムストリング）が、新しいストリングを取得するべく、ハッシュに付加される。新しいストリングが、再度、ハッシュ化される。次いで、最終的なハッシュが、難易度ターゲット（例えば、レベル）と比較され、且つ、最終的なハッシュが、実際に、難易度ターゲット未満であるかどうかが判定される。難易度ターゲット未満ではない場合には、ノンスが変更され、且つ、プロセスが再度繰り返される。難易度ターゲット未満である場合には、ブロックがチェーンに追加され、且つ、パブリック台帳が更新され、且つ、追加について警告される。正常な追加の責任を担ったノードは、例えば、自身に対する報酬トランザクションを新しいブロック内に追加することにより（コインベース生成と呼称される）、ビットコインによって報われる。
【００３０】
即ち、すべての出力「Ｙ」について、ｋが、大きな最小エントロピーを有する分布から選択された場合に、Ｈ（ｋ｜ｘ）＝Ｙとなるように、入力ｘを見出すことが実現可能であり、この場合に、Ｋは、ノンスであり、ｘは、ブロックのハッシュであり、Ｙは、難易度ターゲットであり、且つ、「｜」は、連結を表記している。暗号学的ハッシュは、基本的にランダムであることから、その出力をその入力から予測することができないという意味において、例えば、１、その次に２、その次に３、以下同様、などのように、１つずつ整数を試すという、ノンスを見出すための１つの既知の方法しか存在しておらず、これは、ブルートフォースと呼称される場合がある。平均で、リーディングゼロの数が大きいほど、必須のノンスＹを見出すのに所要する時間が長くなる。一例においては、ビットコインシステムは、ノンスを見出すための平均時間が約１０分となるように、リーディングゼロの数を常に調節している。この結果、演算ハードウェアの処理能力が時間と共に増大するのに伴って、年ごとに、ビットコインプロトコルは、マイニングの実装に常に約１０分の持続時間を所要するようにするべく、更に多くのリーディングゼロビットを単純に必要とすることになる。
【００３１】
上述のように、ハッシュ化は、ブロックチェーンのための重要な礎石である。ハッシュアルゴリズムは、任意の長さのメッセージを固定長のメッセージダイジェストに圧縮する機能として理解することができる。より一般に使用されているのは、ＭＤ５及びＳＨＡである。いくつかの実施形態においては、ブロックチェーンのハッシュ長は、２５６ビットであり、これは、オリジナルのコンテンツとは無関係に、２５６ビットの２進数が最終的に算出されることを意味している。そして、オリジナルのコンテンツが異なっている限り、対応するハッシュが一意であることを保証することができる。例えば、「１２３」というストリングのハッシュは、ａ８ｆｄｃ２０５ａ９ｆ１９ｃｃ１ｃ７５０７ａ６０ｃ４ｆ０１ｂ１３ｄ１１ｄ７ｆｄ０（１６進数）であり、これは、２進に変換された際に、２５６ビットを有し、且つ、このハッシュを有するのは、「１２３」のみである。ブロックチェーン内のハッシュアルゴリズムは、不可逆的であり、即ち、順方向の計算（「１２３」からａ８ｆｄｃ２０５ａ９ｆ１９ｃｃ１ｃ７５０７ａ６０ｃ４ｆ０１ｂ１ｃ７５０７ａ６０ｃ４ｆ０１ｂ１３ｄ１１ｄ７ｆｄ０へ）は、容易であるが、逆方向の計算は、すべての演算リソースを動員した場合にも、実行不能である。従って、ブロックチェーンのそれぞれのブロックのハッシュは、一意である。
【００３２】
更には、ブロックのコンテンツが変化した場合には、そのハッシュも、変化することになる。ブロックとハッシュは、１対１の対応関係にあり、且つ、それぞれのブロックのハッシュは、具体的には、ブロックヘッダについて算出されている。即ち、ブロックヘッダの特徴値が、長いストリングを形成するべく接続され、且つ、次いで、そのストリングについて、ハッシュが算出される。例えば、「Ｈａｓｈ＝ＳＨＡ２５６（ｂｌｏｃｋ  ｈｅａｄｅｒ）」が、ブロックハッシュ計算式であり、ＳＨＡ２５６は、ブロックヘッダに適用されるブロックチェーンハッシュアルゴリズムである。ハッシュは、ブロックのボディではなく、ブロックのヘッダにより、一意に判定されている。上述のように、ブロックヘッダは、現時点のブロックのハッシュ及び以前のブロックのハッシュを含む、多数のコンテンツを含んでいる。これは、現時点のブロックコンテンツが変化した場合に、或いは、以前のブロックのハッシュが変化した場合に、その結果、現時点のブロック内のハッシュが変化することになることを意味している。ハッカーがブロックを変更した場合には、そのブロックのハッシュも変化する。その結果、後のブロックが、変更済みのブロックに接続するように、ハッカーは、すべての後続のブロックを変更しなければならず、その理由は、次のブロックが、以前のブロックのハッシュを含んでいなければならないからである。さもなければ、変更済みのブロックは、ブロックチェーンから切り離されることになる。設計上の理由に起因して、ハッシュ計算は、時間を所要し、且つ、ハッカーがネットワーク全体の演算パワーの５１％超を支配していない限り、短期間で複数のブロックを変更することは、ほとんど不可能である。従って、ブロックチェーンは、その独自の信頼性を保証しており、且つ、データが一旦書き込まれたら、データを改竄することができない。
【００３３】
マイナーが新しいブロック用のハッシュ（即ち、適格性を有する署名又は解（ｓｏｌｕｔｉｏｎ））を見出したら、マイナーは、この署名をすべてのその他のマイナー（ブロックチェーンのノード）にブロードキャストする。次いで、その他のマイナーは、彼ら自身で、解が、送信者のブロックの問題と対応しているかどうかを検証する（即ち、ハッシュ入力が実際にその署名を結果的にもたらすかどうかを判定する）。解が有効である場合には、その他のマイナーは、この解を確認することになり、且つ、新しいブロックをブロックチェーンに追加しうることに合意することになる。従って、新しいブロックの合意に達する。これは、「プルーフオブワーク（ｐｒｏｏｆ  ｏｆ  ｗｏｒｋ）」とも呼称されている。この結果、合意に達したブロックは、ブロックチェーンに追加することが可能であり、且つ、その署名と共に、ネットワーク上のすべてのノードにブロードキャストされる。ノードは、このブロックを受け付けることになり、且つ、ブロックの内部のトランザクションが、その時点において現時点のワレット残高（トランザクション履歴）と正しく対応している限り、それをそのトランザクションデータに保存することになる。新しいブロックが、このブロック上に追加されるたびに、追加は、その前のブロック用の別の「確認」としても数えられる。例えば、トランザクションが、ブロック５０２内に含まれており、且つ、ブロックチェーンが５０７ブロックという長さを有する場合に、これは、トランザクションが、（ブロック５０７〜５０２に対応する）５つの確認を有することを意味している。トランザクションが有する確認が多いほど、攻撃者による変更が困難になる。
【００３４】
いくつかの実施形態においては、例示用のブロックチェーン資産システムは、パブリックキー暗号法を利用しており、この場合には、１つのパブリックキー及び１つのプライベートキーという、２つの暗号化キーが生成されている。パブリックキーは、アカウント番号であると考えることが可能であり、且つ、プライベートキーは、所有権証明書であると考えることができる。例えば、ビットコインワレットは、パブリック及びプライベートキーの集合体である。特定の資産アドレスと関連する資産（例えば、デジタル通貨、現金資産、株式、エクイティ、債券）の所有権は、アドレスに属するプライベートキーの知識により、実証することができる。例えば、しばしば、「ビットコインクライアントソフトウェア」と呼称される、ビットコインワレットソフトウェアは、所与のユーザーがビットコインの取引を行うことを許容している。ワレットプログラムは、プライベートキーを生成及び保存し、且つ、ビットコインネットワーク上においてピアと通信している。
【００３５】
ブロックチェーントランザクションにおいては、支払者と被支払者は、そのパブリック暗号化キーにより、ブロックチェーン内において識別されている。例えば、大部分の同時ビットコイン移転は、１つのパブリックキーから異なるパブリックキーへのものである。実際に、これらのキーのハッシュは、ブロックチェーン内において使用されており、且つ、「ビットコインアドレス」と呼称されている。原則として、仮想的な攻撃者Ｓは、その名称の代わりにユーザーのビットコインアドレスを使用することにより、「人物Ａが人物Ｓに１００ビットコインを支払う」というような、トランザクションをブロックチェーン台帳に単純に追加することにより、人物Ａからお金を盗むことができるであろう。ビットコインプロトコルは、すべての移転が支払者のプライベートキーによってデジタル署名されることを必要とすることにより、この種の窃盗を防止しており、且つ、ブロックチェーン台帳に追加しうるのは、署名済みの転送のみである。人物Ｓは、人物Ａの署名を偽造することができないことから、人物Ｓは、「人物Ａが人物Ｓに２００ビットコインを支払う」に等価であるエントリをブロックチェーンに追加することにより、人物Ａを騙すことができない。同時に、だれもが、彼／彼女のパブリックキーを使用することにより、人物Ａの署名を検証することが可能であり、且つ、従って、彼／彼女は、自身が支払者である場合に、ブロックチェーン内のすべてのトランザクションを認可している。
【００３６】
ビットコイントランザクションのコンテキストにおいては、いくつかのビットコインをユーザーＢに移転するべく、ユーザーＡは、ノードを通じて、トランザクションに関する情報を含むレコードを構築することができる。レコードは、ユーザーＡの署名キー（プライベートキー）によって署名されてもよく、且つ、ユーザーＡのパブリック検証キー及びユーザーＢのパブリック検証キーを含んでいる。署名は、トランザクションがユーザーから到来したことを確認するべく使用され、且つ、トランザクションが、発行の後に、だれかに変更されることをも防止している。新しいブロック内の同じ時間ウィンドウ内において発生したその他のレコードとバンドルされたレコードは、フルノードにブロードキャストすることができる。レコードを受け取った際に、フルノードは、これらのレコードをブロックチェーンシステム内においてこれまでに発生したすべてのトランザクションの台帳に内蔵すること、新しいブロックを上述のマイニングプロセスを通じて以前に受け付けられているブロックチェーンに追加すること、に関して機能することができると共に、ネットワークのコンセンサス規則に照らして、追加されたブロックを検証することができる。
【００３７】
移転対象であるユーザーＡの資産は、ＵＴＸＯ（ｕｎｓｐｅｎｔ  ｔｒａｎｓａｃｔｉｏｎ  ｏｕｔｐｕｔ）の形態を有することができる。ＵＴＸＯは、ブロックチェーンオブジェクトモデルである。ＵＴＸＯの下においては、資産は、新しいトランザクションにおける入力として使用されうる、未使用のブロックチェーントランザクションの出力によって表されている。資産を使用する（取引を行う）べく、ユーザーは、プライベートキーによってサインオフしなければならない。ビットコインは、ＵＴＸＯモデルを使用するデジタル通貨の一例である。有効なブロックチェーントランザクションのケースにおいては、未使用の出力は、更なるトランザクションを実行するべく使用することができる。いくつかの実施形態においては、二重使用及び不正行為を防止するべく、更なるトランザクションにおいて使用することができるのは、未使用の出力のみである。これを理由として、トランザクションが発生した際には、ブロックチェーン上の入力が削除される一方で、同時に、出力がＵＴＸＯの形態において生成されている。これらの未使用のトランザクション出力は、将来のトランザクションを目的として（例えば、デジタル通貨ワレットを有する人物などの、プライベートキーのホルダにより）使用することができる。
【００３８】
ブロックチェーン及びその他の類似の台帳は、完全に公開された状態にあることから、ブロックチェーン自体は、プライバシー保護を有してはいない。Ｐ２Ｐネットワークのパブリック特性は、それを使用する者が名称によって識別されない一方で、個人及び企業に対するトランザクションのリンク付けを実現可能であることを意味している。例えば、国境を跨いだ送金においては、或いは、サプライチェーンにおいては、資産タイプは、極めて高いレベルのプライバシー保護値を有しており、その理由は、資産タイプ情報により、トランザクションパーティの特定の場所及びアイデンティティを推定することが可能であるからである。資産タイプは、例えば、お金、デジタル通貨、契約、証文、医療記録、顧客の詳細、株式、債券、エクイティ、又はデジタル形態において記述されうる任意のその他の資産のタイプを有することができる。ＵＴＸＯモデルは、アイデンティティ及びトランザクション金額に対して匿名性を提供し、且つ、Ｍｏｎｅｒｏ及びＺｃａｓｈに適用されているが、トランザクション資産タイプは、保護されていない状態に留まっている。従って、本開示によって対処されている技術的問題は、トランザクションにおける資産タイプのプライバシーなどの、オンライン情報を保護する方式である。開示されているシステム及び方法は、様々なトランザクションコンテンツ用のプライバシー保護を提供するべく、ＵＴＸＯモデルに統合することができる。
【００３９】
トランザクションにおいては、情報保護が、ユーザープライバシーを保護するべく重要であり、且つ、トランザクション資産タイプは、保護を欠いた情報の１つのタイプである。図１は、様々な実施形態による情報保護用の例示用のシステム１００を示している。図示のように、ブロックチェーンネットワークは、複数のノード（例えば、サーバーやコンピュータなどにおいて実装されたフルノード）を有することができる。いくつかのブロックチェーンプラットフォーム（例えば、ＮＥＯ）の場合には、トランザクション検証の責任を担う、特定レベルの議決権を有するフルノードは、コンセンサスノードと呼称される場合がある。本開示においては、フルノード、コンセンサスノード、又はその他の等価なノードがトランザクションを検証することができる。
【００４０】
また、図１に示されているように、ユーザーＡ及びＢは、トランザクションを実行するべく、軽量ノードとして機能するラップトップ及び携帯電話機などの対応する装置を使用することができる。例えば、ユーザーＡは、ユーザーＡのアカウント内のなんらかの資産をユーザーＢのアカウントに移転することにより、ユーザーＢと取引を行うことを所望しうる。ユーザーＡ及びユーザーＢは、トランザクション用の適切なブロックチェーンソフトウェアがインストールされた対応する装置を使用することができる。ユーザーＡの装置は、受領者ノードＢと呼称されるユーザーＢの装置との間においてトランザクションを開始するイニシエータノードＡと呼称することができる。ノードＡは、ノード１との間の通信を通じてブロックチェーンにアクセスすることができると共に、ノードＢは、ノード２との間の通信を通じてブロックチェーンにアクセスすることができる。例えば、ノードＡ及びノードＢは、ブロックチェーンに対するトランザクションの追加を要求するべく、ノード１及びノード２を通じて、トランザクションをブロックチェーンにサブミットすることができる。ブロックチェーンとは切り離された状態において、ノードＡ及びノードＢは、その他の通信のチャネルを有することができる。例えば、ノードＡ及びノードＢは、互いのパブリックキーを通常のインターネット通信を通じて取得することができる。
【００４１】
図１のノードのそれぞれは、プロセッサと、ノード（例えば、ノードのプロセッサ）が本明細書において記述されている情報保護用の様々なステップを実行するようにするべく、プロセッサによって実行される命令を保存する一時的ではないコンピュータ可読ストレージ媒体と、を有することができる。それぞれのノードには、その他のノード及び／又はその他の装置と通信するべく、ソフトウェア（例えば、トランザクションプログラム）及び／又はハードウェア（例えば、有線／無線接続）をインストールすることができる。ノードのハードウェア及びソフトウェアの更なる詳細については、図５を参照して後述する。
【００４２】
図２は、様々な実施形態によるトランザクションの開始及び検証用の例示用のステップを示している。
【００４３】
トランザクションの開始は、イニシエータノードによって実装することができる。いくつかの実施形態においては、資産タイプのそれぞれのタイプを一意の識別情報にマッピングするか又は割り当てることができる。例えば、一意の識別情報は、以下の方式によって演算されたｓｎという連番であってよい。
【００４４】
ステップ１．２：ｓｎ＝Ｈａｓｈ（ａｓｓｅｔ  ｔｙｐｅ）
【００４５】
ここで、Ｈａｓｈ（）は、ハッシュ関数である。更には、コミットメント方式（例えば、Ｐｅｄｅｒｓｅｎコミットメント）により、資産タイプを以下のように暗号化することができる。
【００４６】
ステップ１．３：Ｃ（ｓｎ）＝ｒ×Ｇ＋ｓｎ×Ｈ
【００４７】
ここで、ｒは、隠蔽を提供するランダムなブラインディングファクタ（この代わりに、バインディングファクタとも呼称される）であり、Ｇ及びＨは、楕円曲線の公的に合意されたジェネレータ／ベースポイントであり、且つ、ランダムに選択されてもよく、ｓｎは、コミットメントの値であり、Ｃ（ｓｎ）は、コミットメントとして使用される、且つ、相手に付与される、曲線ポイントであり、且つ、Ｈは、別の曲線ポイントである。即ち、Ｇ及びＨは、ノードにとって既知のパラメータであってよい。Ｈ＝Ｈａｃｈ（Ｇ）により、１つのポイントから別のものにマッチングするハッシュ関数によってベースポイントＧをハッシュ化することにより、Ｈの「なんの隠し事もない（ｎｏｔｈｉｎｇ  ｕｐ  ｍｙ  ｓｌｅｅｖｅ）」生成を生成することができる。Ｈ及びＧは、所与のシステムのパブリックパラメータ（例えば、楕円曲線上のランダムに生成されたポイント）である。送信者ノードは、Ｈ及びＧをすべてのノードに公開しておいてもよい。以上は、Ｐｅｄｅｒｓｅｎコミットメントの一例を楕円曲線の形態において提供しているが、この代わりに、Ｐｅｄｅｒｓｅｎコミットメント又はその他のコミットメント方式の様々なその他の形態を使用することもできる。
【００４８】
コミットメント方式は、データの秘密性を維持しつつ、データの送信者が後から変更できないように、データに対してコミットしている。パーティが、コミットメント値（例えば、Ｃ（ｓｎ））しか知らない場合には、基礎をなすデータ値（例えば、ｓｎ）がコミットされているものを判定することはできない。データ（例えば、ｓｎ）とブラインディングファクタ（例えば、ｒ）の両方を後から（例えば、イニシエータノードにより）明らかにすることができると共に、コミットメントの受領者（例えば、コンセンサスノード）が、コミットメントを実行することが可能であり、且つ、コミットされたデータが、明らかにされたデータとマッチングしていることを検証することができる。ブラインディングファクタが存在している理由は、これを伴うことなしに、だれかがデータの推定を試みうるからである。
【００４９】
コミットメント方式は、コミットされた値は、プライベートな状態に留まるが、コミットしたパーティがコミットメントプロセスの必要なパラメータを明らかにした際に、これを後の時点において明らかにすることができるように、送信者（コミットしたパーティ）が値（例えば、ｓｎ）に対してコミットするための方法である。強力なコミットメント方式は、情報隠蔽型及び演算拘束型の両方であってよい。隠蔽は、所与の値ｓｎとその値Ｃ（ｓｎ）のコミットメントが関係付け不能であるという概念を意味している。即ち、Ｃ（ｓｎ）は、ｓｎに関する情報をなにも明かすことにならない。Ｃ（ｓｎ）、Ｇ、及びＨが判明した状態においても、ランダム数ｒに起因し、ｓｎを知ることがほとんど不可能である。コミットメント方式は、２つの異なる値が結果的に同一のコミットメントをもたらしうるそれなりの方法が存在していない場合には、拘束型である。Ｐｅｄｅｒｓｅｎコミットメントは、離散対数の仮定の下においては、完全に隠蔽型且つ演算拘束型である
【００５０】
Ｐｅｄｅｒｓｅｎコミットメントは、コミットメントが加算可能であり、且つ、コミットメントの組の合計が（ブラインディングキーの合計としてのブラインディングキーセットを有する）データの合計に対するコミットメントと同一である、即ち、Ｃ（ＢＦ１，ｄａｔａ１）＋Ｃ（ＢＦ２，ｄａｔａ２）＝＝Ｃ（ＢＦ１＋ＢＦ２，ｄａｔａ１＋ｄａｔａ２）；Ｃ（ＢＦ１，ｄａｔａ１）−Ｃ（ＢＦ１，ｄａｔａ１）＝＝０、という更なるプロパティを有している。換言すれば、コミットメントは、加算を維持し、且つ、可換性が適用される、即ち、Ｐｅｄｅｒｓｅｎコミットメントは、加法的に準同形であり、この場合に、基礎をなすデータは、それが暗号化されていないかのように、数学的に操作することができる。
【００５１】
一実施形態においては、入力値を暗号化するべく使用されるＰｅｄｅｒｓｅｎコミットメントは、楕円曲線ポイントを使用することにより、構築することができる。従来は、楕円曲線暗号法（ＥＣＣ：Ｅｌｌｉｐｔｉｃ  Ｃｕｒｖｅ  Ｃｒｙｐｔｏｇｒａｐｈｙ）パブキーは、秘密キー（ｒ）によってグループ用のジェネレータ（Ｇ）を乗算することにより、生成されており、即ち、Ｐｕｂ＝ｒＧである。結果は、３３バイトのアレイとしてシリアライズすることができる。ＥＣＣパブリックキーは、Ｐｅｄｅｒｓｅｎコミットメントとの関係において上述した加法的に準同形であるプロパティを順守することができる。即ち、Ｐｕｂ１＋Ｐｕｂ２＝（ｒ１＋ｒ２（ｍｏｄ  ｎ））Ｇである。
【００５２】
入力値のＰｅｄｅｒｓｅｎコミットメントは、第１ジェネレータＧとの関係において第２ジェネレータＨの離散対数（或いは、逆もまた然り）をだれも知らないように、グループの更なるジェネレータ（以下の式におけるＨ）を選ぶことにより、生成することができるが、これは、ｘＧ＝Ｈとなるようなｘをだれも知らないことを意味している。これは、例えば、Ｇの暗号学的ハッシュを使用してＨを選択することにより、実現されてもよく、即ち、Ｈ＝ｔｏ＿ｐｏｉｎｔ（ＳＨＡ２５６（ＥＮＣＯＤＥ（Ｇ）））である。
【００５３】
２つのジェネレータＧ及びＨが付与されたら、入力値を暗号化するための例示用のコミットメント方式は、ｃｏｍｍｉｔｍｅｎｔ＝ｒＧ＋ａＨとして定義することができる。ここで、ｒは、秘密ブラインディングファクタであってよく、且つ、ａは、コミットしている入力値であってよい。従って、ｓｎがコミットされた場合に、上述のＣ（ｓｎ）＝ｒ×Ｇ＋ｓｎ×Ｈというコミットメント方式を得ることができる。Ｐｅｄｅｒｓｅｎコミットメントは、情報理論的にプライベートであり、即ち、任意のコミットメントについて、任意の量をコミットメントにマッチングさせることになるなんらかのブラインディングファクタが存在している。Ｐｅｄｅｒｓｅｎコミットメントは、任意のマッピングを演算することができないという点において、偽のコミットメントに対して演算的に安全でありうる。
【００５４】
値をコミットしたパーティ（ノード）は、コミットメント式を完成させるオリジナルの値ｓｎ及びファクタｒを開示することにより、コミットメントを公開してもよい。その結果、値Ｃ（ｓｎ）の公開を所望するパーティは、共有されたオリジナルの値が、実際に、最初に受け取られたコミットメントＣ（ｓｎ）にマッチングしていることを検証するべく、コミットメントを再度演算することになる。従って、資産タイプ情報は、それを一意の連番に対してマッピングし、且つ、次いで、それをＰｅｄｅｒｓｅｎコミットメントによって暗号化することにより、保護することができる。コミットメントを生成する際に選択されるランダム数ｒは、だれかが、コミットメント値Ｃ（ｓｎ）に従ってコミットされた資産タイプのタイプを推定することをほとんど不可能にしている。
【００５５】
いくつかの実施形態においては、ＵＴＸＯモデルの下における資産タイプ情報保護方法を内蔵する際に、トランザクションの有効性を判定するべく、トランザクションの入力の資産タイプ（ｓｎ＿ｉｎ）及び出力の資産タイプ（ｓｎ＿ｏｕｔ）の一貫性を検証することができる。例えば、ブロックチェーンノードは、ｓｎ＿ｉｎ＝＝ｓｎ＿ｏｕｔという一貫性試験に合格しないトランザクション又はブロックを拒絶することができる。資産タイプｓｎは、（例えば、Ｐｅｄｅｒｓｅｎコミットメントにより）暗号化されていることから、一貫性試験は、Ｃ（ｓｎ＿ｉｎ）＝＝Ｃ（ｓｎ＿ｏｕｔ）であるかどうかを検証するというものである。
【００５６】
いくつかの実施形態においては、図２のステップ１に示されているように、ＵＴＸＯタイプのトランザクションは、ｍ個の入力（例えば、利用可能な資産）及びｎ個の出力（例えば、移転された資産及び残っている資産）を有することができる。入力は、ｓｎ＿ｉｎ＿ｋと表記されてもよく、この場合に、１≦ｋ≦ｍであり、且つ、出力は、ｓｎ＿ｏｕｔ＿ｋと表記されてもよく、この場合に、１≦ｋ≦ｎである。出力のいくつかは、受領者ノードＢに転送されうる一方で、残りの出力は、イニシエータノードＡに戻ることができる。例えば、仮想的な取引において、ユーザーＡは、合計で５ビットコイン及び１０ストックを自身のワレット内に所有していてもよく、従って、トランザクション入力については、ｓｎ＿ｉｎ＿１＝Ｈａｓｈ（ｂｉｔｃｏｉｎ）及びｓｎ＿ｉｎ＿２＝Ｈａｓｈ（ｓｔｏｃｋ）である。ユーザーＡが、３ビットコインをユーザーＢに移転することを所望した場合に、トランザクション出力については、ｓｎ＿ｏｕｔ＿１＝Ｈａｓｈ（ｂｉｔｃｏｉｎ）であり、ｓｎ＿ｏｕｔ＿２＝Ｈａｓｈ（ｂｉｔｃｏｉｎ）であり、且つ、ｓｎ＿ｏｕｔ＿３＝Ｈａｓｈ（ｓｔｏｃｋ）であり、これにより、ビットコイン出力の１つ（３ビットコイン）は、ユーザーＢにアドレス指定され、且つ、その他のビットコイン出力（２ビットコイン）及びストック出力は、ユーザーＡに戻るようにアドレス指定される。
【００５７】
従って、いくつかの実施形態においては、入力対応資産タイプは、次のような形態において暗号化することができる。
【００５８】
Ｃ＿ｉｎ＿ｋ＝ｒ＿ｉｎ＿ｋ×Ｇ＋ｓｎ＿ｉｎ＿ｋ×Ｈ、ここで１＜ｋ＜ｍである。
【００５９】
出力資産タイプは、次のような暗号化形態に対応している。
【００６０】
Ｃ＿ｏｕｔ＿ｋ＝ｒ＿ｏｕｔ＿ｋ×Ｇ＋ｓｎ＿ｏｕｔ＿ｋ×Ｈ、ここで、１＜ｋ＜ｎである。
【００６１】
資産タイプが隠蔽された状態において、トランザクションイニシエータは、トランザクションの入力資産タイプが、それぞれ、出力資産タイプと一貫性を有していることをノード（例えば、フルノード、コンセンサスノード）に対して証明する必要がある。この結果、フルノードは、トランザクションが有効であるかどうかを検証することができる。
【００６２】
いくつかの実施形態においては、Ｐｅｄｅｒｓｅｎコミットメントによって隠蔽された資産タイプを有するＵＴＸＯタイプのトランザクションを開始するべく、トランザクションイニシエータは、（図２のステップ２に対応する）以下のステップ２．１〜２．５を実行するべく、適切な入力及び出力を選択することができる。
【００６３】
ステップ２．１：以下を計算する。
Ｃ＿１＝Ｃ＿ｉｎ＿１−Ｃ＿ｉｎ＿２、
Ｃ＿２＝Ｃ＿ｉｎ＿２−Ｃ＿ｉｎ＿３、
…
Ｃ＿（ｍ−１）＝Ｃ＿ｉｎ＿（ｍ−１）−Ｃ＿ｉｎ＿ｍ、
Ｃ＿ｍ＝Ｃ＿ｏｕｔ＿１−Ｃ＿ｏｕｔ＿２、
Ｃ＿（ｍ＋１）＝Ｃ＿ｏｕｔ＿２−Ｃ＿ｏｕｔ＿３、
…
Ｃ＿（ｍ＋ｎ−２）＝Ｃ＿ｏｕｔ＿（ｎ−１）−Ｃ＿ｏｕｔ＿ｎ、
Ｃ＿（ｍ＋ｎ−１）＝Ｃ＿ｉｎ＿１−Ｃ＿ｏｕｔ＿１
【００６４】
ステップ２．２：ｘ＝Ｈａｓｈ（Ｃ＿１｜｜Ｃ＿２｜｜Ｃ＿３｜｜…｜｜Ｃ＿（ｍ＋ｎ−１））を計算し、ここで、「｜｜」は、連結を表している。
【００６５】
ステップ２．３：Ｃ＝Ｃ＿１＋ｘ×Ｃ＿２＋ｘ２×Ｃ＿３＋…＋ｘ（ｍ＋ｎ−２）×Ｃ＿（ｍ＋ｎ−１）を計算する。多項式の項は、ステップ２．１のものに対応しうることに留意されたい。
【００６６】
ステップ２．４：Ｒ＝（ｒ＿ｉｎ＿１−ｒ＿ｉｎ＿２）＋ｘ×（ｒ＿ｉｎ＿２−ｒ＿ｉｎ＿３）＋ｘ２×（ｒ＿ｉｎ＿３−ｒ＿ｉｎ＿４）＋…＋ｘ（ｍ＋ｎ−２）×（ｒ＿ｉｎ＿１−ｒ＿ｏｕｔ＿１）を計算する。多項式の項は、ステップ２．１のものに対応しうることに留意されたい。例えば、（ｒ＿ｉｎ＿１−ｒ＿ｉｎ＿２）は、Ｃ＿ｉｎ＿１−Ｃ＿ｉｎ＿２に対応している。
【００６７】
ステップ２．５：例えば、トランザクション情報のブロードキャストにおいて、Ｒをノードに公開する。
【００６８】
いくつかの実施形態においては、入力資産タイプ及び出力資産タイプが一貫性を有していることを検証するべく、Ｃ＝Ｒ×Ｇが存在していなければならない。例えば、トランザクション検証の際に、ノードは、トランザクション資産タイプが一貫性を有しているかどうかを検証するべく、（図２のステップ３．１〜３．３に対応する）以下のステップ３．１〜３．３を実行する。
【００６９】
ステップ３．１：ｘ＝Ｈａｓｈ（Ｃ＿１｜｜Ｃ＿２｜｜Ｃ＿３｜｜…｜｜  Ｃ＿（ｍ＋ｎ−１））を計算する。
【００７０】
ステップ３．２：Ｃ＝Ｃ＿１＋ｘ×Ｃ＿２＋ｘ２×Ｃ＿３＋…＋ｘ（ｍ＋ｎ−２）×Ｃ＿（ｍ＋ｎ−１）を計算する。
【００７１】
ステップ３．３：Ｃ＝Ｒ×Ｇであるかどうかを検証する。Ｃ＝Ｒ×Ｇである場合には、資産タイプは、一貫性を有しており、さもなければ、資産タイプは、一貫性を有しておらず、且つ、トランザクションは拒絶される。いくつかの実施形態においては、Ｃ（ｓｎ）は、ノードに公開されてもよく、且つ、ステップ２．１〜２．３のアルゴリズムは、ノード（例えば、トランザクションをサブミットするノード及びトランザクションを検証するノードを含む）にとって既知である。従って、トランザクションを検証するノードは、検証を実行するべく、ステップ３．１〜３．３を相応して実行することができる。従って、拒絶されたトランザクションがブロックチェーンに追加されることにはならない。図２のステップ４として示されているように、一貫性判定に基づいて、ノードは、トランザクションをブロックチェーンに追加するのか又はトランザクションの追加を拒絶するのかを判定することができる。
【００７２】
従って、トランザクションイニシエータは、ブロックチェーンノードが、実際の資産タイプを開示することなしに、且つ、サブミットされた情報を変更する能力を有することなしに、トランザクションとの間における資産タイプの入力及び出力の一貫性に基づいてトランザクションを検証するべく、情報をサブミットすることができる。それぞれの資産タイプごとに連番（例えば、ハッシュ）を割り当てることにより、それぞれの資産タイプの表現が拡張及びランダム化され、これにより、トランザクションイニシエータが、検証に合格するように資産タイプを偽造することが困難になる。更には、ランダム数ｒの存在に起因し、異なる時点において暗号化された同一の資産タイプは、同一ではない。資産タイプハッシュを暗号化するべくＰｅｄｅｒｓｅｎコミットメントを適用することにより、資産タイプのプライバシー保護が更に高度なレベルに改善される。従って、ステップ２．１〜２．５を通じて、トランザクションイニシエータは、資産タイプを開示することなしに、トランザクションの資産タイプが有効であることをその他のノードに対して証明することができる。例えば、入力及び出力資産タイプの差が取得され、且つ、これに基づいて、トランザクションイニシエータが、資産タイプの一貫性及びトランザクションの有効性を証明するべく、変換された資産タイプをその他のノードに伝達しうるように、多項式が構築される。同時に、トランザクションイニシエータ又はその他のノードが資産タイプを偽造することができる確率は、無視することが可能であり、その理由は、ｘが、多項式において様々な指数の基数として機能するように、ハッシュ化によって演算されているからである。これに加えて、Ｒの開示は、その他のノードが、ステップ３．１〜３．３を通じて、資産タイプを知ることなしに、トランザクション内の資産タイプが一貫性を有していることを検証することを許容している。従って、開示されたシステム及び方法によれば、例外的なプライバシー保護を維持しつつ、第三者がデータ情報を検証することができる。
【００７３】
図３は、本開示の様々な実施形態による情報保護用の例示用の方法３００のフローチャートを示している。方法３００は、図１のシステム１００の１つ又は複数のコンポーネント（例えば、ノードＡ）によって実装することができる。方法３００は、プロセッサと、システム又は装置（例えば、プロセッサ）が方法３００を実行するようにするべく、プロセッサによって実行される命令を保存している一時的ではないコンピュータ可読ストレージ媒体（例えば、メモリ）と、を有するシステム又は装置（例えば、コンピュータ）によって実装することができる。以下において提示されている方法３００の動作は、例示となることを意図したものである。実装形態に応じて、例示用の方法３００は、様々な順序において、或いは、並行して、実行される、更に多くの数の、更に少ない数の、或いは、代替的な、ステップを含みうる。
【００７４】
ブロック３０１は、トランザクションの１つ又は複数のデータ入力及び１つ又は複数のデータ出力を判定するステップを有しており、この場合に、データ入力は、それぞれ、入力データタイプと関連付けられ、且つ、データ出力は、それぞれ、出力データタイプと関連付けられている。例えば、図２のステップ１を参照されたい。いくつかの実施形態においては、トランザクションは、少なくとも未使用トランザクション出力（ＵＴＸＯ）モデルに基づいており、且つ、データ入力及びデータ出力は、送信者（イニシエータノード）及び受領者（受領者ノード）の間におけるトランザクションを経験する１つ又は複数の資産のタイプを有する。資産タイプは、例えば、お金、デジタル通貨、契約、証文、医療記録、顧客の詳細、株式、債券、エクイティ、又はデジタル形態において記述されうる任意のその他の資産のタイプを有することができる。
【００７５】
ブロック３０２は、入力データタイプ及び出力データタイプを暗号化するステップを有する。例えば、上述のステップ１．２を参照されたい。いくつかの実施形態においては、入力データタイプ及び出力データタイプを暗号化するステップは、ハッシュ関数又は別の一方向関数により、入力データタイプ及び出力データタイプのそれぞれを暗号化するステップを有する。
【００７６】
ブロック３０３は、対応するコミットメント値を取得するべく、暗号化済みの入力データタイプ及び暗号化済みの出力データタイプのそれぞれをコミットメント方式によってコミットするステップを有する。例えば、上述のステップ１．３を参照されたい。いくつかの実施形態においては、コミットメント方式は、Ｐｅｄｅｒｓｅｎコミットメントを有する。いくつかの実施形態においては、コミットメント方式は、少なくともブラインディングファクタを有し、且つ、ブラインディングファクタは、暗号化済みの入力データタイプ及び暗号化済みの出力データタイプをコミットする時点に伴って変化している。即ち、変化するブラインディングファクタに起因して、同一のデータ（例えば、同一のデータタイプ）であっても、異なる時点においてコミットされた場合には、異なるコミットメント値となろう。
【００７７】
ブロック３０４は、少なくともコミットメント値に基づいて少なくともパラメータＲを取得するステップを有する。例えば、上述のステップ２．１〜２．４を参照されたい。いくつかの実施形態においては、コミットメント方式は、入力データタイプ及び出力データタイプにそれぞれ対応する複数のブラインディングファクタを有しており（例えば、ｒ＿ｉｎ＿ｋ及びｒ＿ｏｕｔ＿ｋを参照されたい）、且つ、少なくともコミットメント値に基づいて少なくともパラメータＲを取得するステップは、コミットメント値のペアの間の差を取得するステップと（例えば、差が取得されうる、入力資産タイプ及び出力資産タイプのうちのコミットメント値の様々なペアのためのステップ２．１を参照されたい）、取得された差を連結するステップと（例えば、ステップ２．２を参照されたい）、暗号化値ｘを取得するべく、ハッシュ関数により、連結された差を暗号化するステップと（例えば、ステップ２．２を参照されたい）、少なくとも暗号化値ｘ及びブラインディングファクタのペアの間の差に基づいてパラメータＲを取得するステップと（例えば、ステップ２．４を参照されたい）、を有する。
【００７８】
ブロック３０５は、ノードが入力データタイプと出力データタイプの間の一貫性を検証するべく、パラメータＲの開示を伴って、且つ、入力データタイプ及び出力データタイプの開示を伴うことなしに、トランザクションをブロックチェーンネットワーク内の１つ又は複数のノードにサブミットするステップを有する。いくつかの実施形態においては、ノードは、入力データイプ及び出力データタイプの知識を伴うことなしに、入力データタイプと出力データタイプの間の一貫性を検証するようになっている。
【００７９】
いくつかの実施形態においては、ノードが入力データタイプと出力データタイプの間の一貫性を検証するべく、パラメータＲの開示を伴って、且つ、入力データタイプ及び出力データタイプの開示を伴うことなしに、トランザクションをブロックチェーンネットワーク内の１つ又は複数のノードにサブミットするステップは、ノードが、パラメータＲ及びベースポイントＧを取得し（例えば、ステップ３．１のＧを参照されたい。Ｈ及びＧは、すべてのノードにとって利用可能であるパブリックパラメータであってもよい）、入力資産タイプ及び出力資産タイプのコミットメント値のペアの間の差を取得し（例えば、ステップ２．１に類似したステップを参照されたい）、取得された差を連結し（例えば、ステップ３．１を参照されたい）、暗号化値ｘを取得するべく、ハッシュ関数により、連結された差を暗号化し（例えば、ステップ３．１を参照されたい）、少なくとも取得された差及び暗号化値ｘに基づいて多項式の合計Ｃを取得し（例えば、ステップ３．２を参照されたい）、合計ＣがパラメータＲとベースポイントＧの積に等しいという判定に応答して、入力データタイプと出力データタイプが一貫性を有していると判定し、且つ、トランザクションをブロックチェーンに追加し（例えば、ステップ３．３を参照されたい）、且つ、合計ＣがパラメータＲとベースポイントＧの積に等しくないという判定に応答して、入力データタイプと出力データタイプが一貫性を有していないと判定し、且つ、トランザクションがブロックチェーンに追加されることを拒絶する（ステップ３．３を参照されたい）、ようにするべく、パラメータＲの開示を伴って、且つ、入力データタイプ及び出力データタイプの開示を伴うことなしに、トランザクションをブロックチェーンネットワーク内の１つ又は複数のノードにサブミットするステップを有する。
【００８０】
図４は、本開示の様々な実施形態による情報保護のための例示用の方法４００のフローチャートを示している。方法４００は、図１のシステム１００の１つ又は複数のコンポーネント（例えば、ノードｉ）によって実装することができる。ノードｉは、サーバー上において実装されたフルノードを有することができる。方法４００は、プロセッサと、システム又は装置（例えば、プロセッサ）が方法４００を実行するようにするべく、プロセッサによって実行される命令を保存している一時的ではないコンピュータ可読ストレージ媒体（例えば、メモリ）と、を有するシステム又は装置（例えば、コンピュータ）上において実装することができる。以下において提示されている方法４００の動作は、例示となることを意図したものである。実装形態に応じて、例示用の方法４００は、様々な順序において、或いは、並行して、実行される、更に多くの数の、更に少ない数の、或いは、代替的な、ステップを含みうる。
【００８１】
ブロック４０１は、ブロックチェーンネットワーク内の１つ又は複数のノード（例えば、コンセンサスノード）により、イニシエータノードによって開始されたトランザクションを取得するステップを有する。トランザクションは、１つ又は複数のデータ入力及び１つ又は複数のデータ出力と関連付けられている。データ入力は、それぞれ、入力データタイプと関連付けられ、且つ、データ出力は、それぞれ、個々に、出力データタイプと関連付けられている。入力データタイプ及び出力データタイプは、暗号化され、且つ、対応するコミットメント値を取得するべく、コミットメント方式にコミットされる。入力データタイプ及び出力データタイプは、１つ又は複数のノードに対して開示されない。
【００８２】
ブロック４０２は、１つ又は複数のノードにより、入力データタイプと出力データタイプの間の一貫性を検証するステップを有する。いくつかの実施形態においては、入力データタイプと出力データタイプの間の一貫性を検証するステップは、パラメータＲ及びベースポイントＧを取得するステップと（例えば、ステップ２．４及び２．５のＲ、並びに、ステップ３．１のＧを参照されたい）、入力資産タイプ及び出力資産タイプのコミットメント値のペアの間の差を取得するステップと（例えば、ステップ２．１に類似したステップを参照されたい）、取得された差を連結するステップと（例えば、ステップ３．１を参照されたい）、暗号化値ｘを取得するべく、ハッシュ関数により、連結された差を暗号化するステップと（例えば、ステップ３．１を参照されたい）、少なくとも取得された差及び暗号化値ｘに基づいて多項式の合計Ｃを取得するステップと（例えば、ステップ３．２を参照されたい）、合計ＣがパラメータＲとベースポイントＧの積に等しいかどうかを判定するステップと（例えば、ステップ３．３を参照されたい）、を有する。
【００８３】
ブロック４０３は、入力データタイプ及び出力データタイプが一貫性を有しているという判定に応答して、１つ又は複数のノードにより、トランザクションをブロックチェーンネットワークに追加するステップを有する。
【００８４】
ブロック４０４は、入力データタイプ及び出力データタイプが一貫性を有していないという判定に応答して、１つ又は複数のノードにより、トランザクションがブロックチェーンネットワークに追加されることを拒絶するステップを有する。
【００８５】
いくつかの実施形態においては、方法は、合計ＣがパラメータＲとベースポイントＧの積に等しいという判定に応答して、入力データタイプと出力データタイプが一貫性を有していると判定するステップと、合計ＣがパラメータＲとベースポイントＧの積に等しくないという判定に応答して、入力データタイプと出力データタイプが一貫性を有していないと判定するステップと、を更に有する。
【００８６】
従って、トランザクションイニシエータは、ブロックチェーンノードが、実際の資産タイプの開示を伴うことなしに、且つ、サブミットされた情報を変更する能力を有することなしに、トランザクションとの間における資産タイプの入力及び出力の一貫性に基づいてトランザクションを検証するべく、情報をサブミットすることができる。それぞれの資産タイプごとに連番（例えば、ハッシュ）を割り当てることにより、それぞれの資産タイプの表現が拡張及びランダム化され、これにより、トランザクションイニシエータが、検証に合格するように資産タイプを偽造することが困難になる。更には、ランダム数ｒの存在に起因し、異なる時点において暗号化された同一の資産タイプは、同一ではない。資産タイプハッシュを暗号化するべくＰｅｄｅｒｓｅｎコミットメントを適用することにより、資産タイプのプライバシー保護が更に高度なレベルに改善される。従って、ステップ２．１〜２．５を通じて、トランザクションイニシエータは、資産タイプの開示を伴うことなしに、トランザクションの資産タイプが有効であることをその他のノードに対して証明することができる。例えば、入力及び出力資産タイプの間の差が取得され、且つ、これに基づいて、トランザクションイニシエータが、資産タイプの一貫性及びトランザクションの有効性を証明するべく、変換済みの資産タイプをその他のノードに伝達しうるように、多項式が構築される。同時に、トランザクションイニシエータ又はその他のノードが資産タイプを偽造することができる確率は、無視することが可能であり、その理由は、ｘが、多項式内の様々な指数の基数として機能するように、ハッシュ化によって演算されているからである。これに加えて、Ｒの開示は、その他のノードが、資産タイプを知ることなしに、ステップ３．１〜３．３を通じて、トランザクション内の資産のタイプが一貫性を有していることを検証することを許容している。従って、開示されているシステム及び方法によれば、例外的なプライバシー保護を維持しつつ、第三者がデータ情報を検証することができる。
【００８７】
本明細書において記述されている技法は、１つ又は複数の特殊目的演算装置によって実装される。特殊目的演算装置は、デスクトップコンピュータシステム、サーバーコンピュータシステム、携帯型コンピュータシステム、ハンドヘルド装置、ネットワーキング装置、又は任意のその他の装置、或いは、技法を実装するべく、配線接続された、且つ／又は、プログラムの、ロジックを内蔵する装置の組合せであってもよい。１つ又は複数の演算装置は、一般に、オペレーティングシステムソフトウェアによって制御及び調整されている。従来のオペレーティングシステムは、その他のものに加えて、実行のためにコンピュータプロセスを制御及びスケジューリングし、メモリ管理を実行し、ファイルシステム、ネットワーキング、Ｉ／Ｏサービスを提供し、且つ、グラフィカルユーザーインターフェイス（「ＧＵＩ：Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ」）などの、ユーザーインターフェイス機能を提供している。
【００８８】
図５は、本明細書において記述されている実施形態の任意のものが実装されうるコンピュータシステム５００を示すブロック図である。システム５００は、本明細書において記述されているノードのうちの任意のものにおいて実装することができると共に、情報保護方法用の対応するステップを実行するように構成することができる。コンピュータシステム５００は、バス５０２又は情報を通信するためのその他の通信メカニズム、情報を処理するべくバス５０２と結合された１つ又は複数のハードウェアプロセッサ、を含む。１つ又は複数のハードウェアプロセッサ５０４は、例えば、１つ又は複数の汎用マイクロプロセッサであってもよい。
【００８９】
また、コンピュータシステム５００は、情報及び１つ又は複数のプロセッサ５０４によって実行される命令を保存するべくバス５０２に結合された、ランダムアクセスメモリ（ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、キャッシュ、及び／又はその他のダイナミックストレージ装置などの、メインメモリ５０６をも含む。メインメモリ５０６は、１つ又は複数のプロセッサ５０４によって実行される対象の命令の実行の際に、一時的な変数又はその他の中間情報を保存するべく使用することもできる。このような命令は、１つ又は複数のプロセッサ５０４からアクセス可能であるストレージ内において保存されている際に、命令に規定されている動作を実行するべくカスタマイズされた特殊目的機械にコンピュータシステム５００を変換する。コンピュータシステム５００は、１つ又は複数のプロセッサ５０４用の静的な情報及び命令を保存するべくバス５０２に結合された読み出し専用メモリ（ＲＯＭ：Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５０８又はその他のスタティックストレージ装置を更に含む。磁気ディスク、光ディスク、又はＵＳＢサムドライブ（Ｆｌａｓｈドライブ）などのような、ストレージ装置５１０が提供されており、且つ、情報及び命令を保存するべく、バス５０２に結合されている。
【００９０】
コンピュータシステム５００は、コンピュータシステムとの組合せにおいて、特殊目的機械となるようにコンピュータシステム５００を制御する又はプログラムする、カスタマイズされた配線接続されたロジック、１つ又は複数のＡＳＩＣ又はＦＰＧＡ、ファームウェア及び／又はプログラムロジックを使用することにより、本明細書において記述されている技法を実装することができる。一実施形態によれば、本明細書において記述されている動作、方法、及びプロセスは、１つ又は複数のプロセッサ５０４がメインメモリ５０６内に含まれている１つ又は複数の命令の１つ又は複数のシーケンスを実行することに応答して、コンピュータシステム５００によって実行される。このような命令は、ストレージ装置５１０などの、別のストレージ媒体からメインメモリ５０６内に読み込むことができる。メインメモリ５０６内に含まれている命令のシーケンスを実行することにより、１つ又は複数のプロセッサ５０４が、本明細書において記述されているプロセスを実行する。代替実施形態においては、ソフトウェア命令の代わりに、或いは、これとの組合せにおいて、配線接続された回路を使用することができる。
【００９１】
メインメモリ５０６、ＲＯＭ５０８、及び／又はストレージ装置５１０は、一時的ではないストレージ媒体を含むことができる。本明細書において使用されている「一時的ではない媒体」という用語及び類似の用語は、機械が特定の方式において動作するようにするデータ及び／又は命令を保存する媒体を意味しており、媒体は、一時的な信号を除外している。このような一時的ではない媒体は、不揮発性媒体及び／又は揮発性媒体を有することができる。不揮発性媒体は、例えば、ストレージ装置５１０などの、光又は磁気ディスクを含む。揮発性媒体は、メインメモリ５０６などの、ダイナミックメモリを含む。一時的ではない媒体の一般的な形態は、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、半導体ドライブ、磁気テープ、又は任意のその他の磁気データストレージ媒体、ＣＤ−ＲＯＭ、任意のその他の光データストレージ媒体、孔のパターンを有する任意の物理的媒体、ＲＡＭ、ＰＲＯＭ、及びＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、ＮＶＲＡＭ、任意のその他のメモリチップ又はカートリッジ、及びこれらのもののネットワーク接続されたバージョンを含む。
【００９２】
また、コンピュータシステム５００は、バス５０２に結合されたネットワークインターフェイス５１８をも含む。ネットワークインターフェイス５１８は、１つ又は複数のローカルネットワークに接続された１つ又は複数のネットワークリンクに対する双方向データ通信結合を提供している。例えば、ネットワークインターフェイス５１８は、統合型サービスデジタルネットワーク（ＩＳＤＮ：Ｉｎｔｅｇｒａｔｅｄ  Ｓｅｒｖｉｃｅｓ  Ｄｉｇｉｔａｌ  Ｎｅｔｗｏｒｋ）カード、ケーブルモデム、衛星モデム、又は、対応するタイプの電話線に対するデータ通信接続を提供するためのモデムであってもよい。別の例として、ネットワークインターフェイス５１８は、互換性を有するＬＡＮ（ＬＡＮ：Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）に対するデータ通信接続を提供するためのローカルエリアネットワークカード（或いは、ＷＡＮと通信するためのＷＡＮコンポーネント）であってもよい。また、無線リンクを実装することもできる。任意のこのような実装形態においては、ネットワークインターフェイス５１８は、様々なタイプの情報を表すデジタルデータストリームを搬送する電気、電磁、又は光信号を送信及び受信している。
【００９３】
コンピュータシステム５００は、１つ又は複数のネットワーク、ネットワークリンク、及びネットワークインターフェイス５１８を通じて、メッセージを送信することが可能であり、且つ、プログラムコードを含むデータを受信することができる。インターネットの例においては、サーバーは、インターネット、ＩＳＰ、ローカルネットワーク、及びネットワークインターフェイス５１８を通じて、アプリケーションプログラム用の要求されたコードを送信しうるであろう。
【００９４】
受け取られたコードは、それが受け取られるのに伴って、１つ又は複数のプロセッサ５０４によって実行されてもよく、且つ／又は、後から実行するべく、ストレージ装置５１０又はその他の不揮発性ストレージ内において保存されてもよい。
【００９５】
以上の節において記述されているプロセス、方法、及びアルゴリズムのそれぞれは、１つ又は複数のコンピュータシステム又はコンピュータハードウェアを有するコンピュータプロセッサによって実行されるコードモジュールにおいて実施されてもよく、且つ、これにより、完全に又は部分的に自動化されてもよい。プロセス及びアルゴリズムは、アプリケーション固有の回路内において部分的に又は完全に実装されてもよい。
【００９６】
上述の様々な特徴及びプロセスは、互いに独立的に使用されてもよく、或いは、様々な方法によって組み合わせられてもよい。すべての可能な組合せ及びサブ組合せが本開示の範囲に含まれることを意図している。これに加えて、いくつかの実装形態においては、特定の方法又はプロセスブロックが省略されてもよい。また、本明細書において記述されている方法及びプロセスは、任意の特定のシーケンスに限定されるものではなく、且つ、これに関係するブロック又は状態は、適するその他のシーケンスにおいて実行することができる。例えば、記述されているブロック又は状態は、具体的に開示されているもの以外の順序において実行されてもよく、或いは、複数のブロック又は状態が、単一のブロック又は状態内において組み合わせられてもよい。例示用のブロック又は状態は、順番に、並行して、或いは、なんらかのその他の方式により、実行されてもよい。ブロック又は状態が、開示されている例示用の実施形態に追加されてもよく、或いは、これから除去されてもよい。本明細書において記述されている例示用のシステム及びコンポーネントは、記述されているものとは異なる方式によって構成されてもよい。例えば、要素は、開示されている例示用の実施形態との比較において、追加されてもよく、除去されてもよく、或いは、再構成されてもよい。
【００９７】
本明細書において記述されている例示用の方法の様々な動作は、少なくとも部分的に、アルゴリズムにより、実行されてもよい。アルゴリズムは、メモリ（例えば、上述の一時的ではないコンピュータ可読ストレージ媒体）内において保存されているプログラムコード又は命令内に含まれてもよい。このようなアルゴリズムは、機械学習アルゴリズムを有することができる。いくつかの実施形態においては、機械学習アルゴリズムは、機能を実行するようにコンピュータを明示的にプログラミングしないものであってもよいが、機能を実行する予測モデルを生成するべくトレーニングデータから学習することができる。
【００９８】
本明細書において記述されている例示用の方法の様々な動作は、少なくとも部分的に、関連する動作を実行するように、（例えば、ソフトウェアにより）一時的に構成された、或いは、永久的に構成された、１つ又は複数のプロセッサによって実行されてもよい。一時的に構成されているのか又は永久的に構成されているのかに拘わらず、このようなプロセッサは、本明細書において記述されている１つ又は複数の動作又は機能を実行するべく動作するプロセッサ実装されたエンジンを構成することができる。
【００９９】
同様に、本明細書において記述されている方法は、少なくとも部分的にプロセッサ実装されてもよく、この場合に、特定の１つ又は複数のプロセッサが、ハードウェアの一例である。例えば、方法の動作のうちの少なくともいくつかは、１つ又は複数のプロセッサ又はプロセッサ実装されたエンジンによって実行されてもよい。更には、１つ又は複数のプロセッサは、「クラウド演算」環境内において、或いは、「ＳａａＳ（Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）」として、関連する動作の実行をサポートするべく動作してもよい。例えば、動作のうちの少なくともいくつかは、これらの動作が、ネットワーク（例えば、インターネット）を介して、且つ、１つ又は複数の適切なインターフェイス（例えば、アプリケーションプログラムインターフェイス（ＡＰＩ：Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ））を介して、アクセス可能である状態において、（プロセッサを含む機械の例としての）コンピュータのグループによって実行されてもよい。
【０１００】
特定の動作の実行は、単一機械内において存在するのみのならず、いくつかの機械に跨って配備された、プロセッサの間において分散されてもよい。いくつかの例示用の実施形態においては、プロセッサ又はプロセッサ実装されたエンジンは、単一の地理的場所内において（例えば、自宅環境、オフィス環境、又はサーバーファーム内において）配置されてもよい。その他の例示用の実施形態においては、プロセッサ又はプロセッサ実装されたエンジンは、いくつかの地理的場所に跨って分散されてもよい。
【０１０１】
本明細書の全体を通じて、複数のインスタンスが、単一のインスタンスとして記述されているコンポーネント、動作、又は構造を実装することができる。１つ又は複数の方法の個々の動作が別個の動作として図示及び記述されているが、個々の動作の１つ又は複数が同時に実行されてもよく、且つ、動作が図示の順序において実行されることを必要としているものは、なにもない。例示用の構成において別個のコンポーネントとして提示されている構造及び機能は、組み合わせられた構造又はコンポーネントとして実装することができる。同様に、単一のコンポーネントとして提示されている構造及び機能が、別個のコンポーネントとして実装されてもよい。これらの及びその他の変形、変更、追加、及び改善は、本明細書における主題の範囲に含まれている。
【０１０２】
以上、特定の例示用の実施形態を参照し、主題の概要について説明したが、本開示の実施形態のより広い範囲からの逸脱を伴うことなしに、これらの実施形態に対して様々な変更及び変化を実施することができる。本明細書においては、主題のこのような実施形態は、利便を目的として、且つ、複数が実際に開示されている場合に、本出願の範囲をいずれかの単一の開示又は概念に自発的に限定することを意図することなしに、個々に又は集合的に、「発明」という用語によって呼称されている場合がある。
【図１】
0006756041.tif 000002
【図２】
0006756041.tif 000003
【図３】
0006756041.tif 000004
【図４】
0006756041.tif 000005
【図５】
0006756041.tif 000006