JP2022504932A - コンピュータにより実施される、デジタル署名されたデータのシェアを分配するシステム及び方法 - Google Patents

コンピュータにより実施される、デジタル署名されたデータのシェアを分配するシステム及び方法 Download PDF

Info

Publication number
JP2022504932A
JP2022504932A JP2021520548A JP2021520548A JP2022504932A JP 2022504932 A JP2022504932 A JP 2022504932A JP 2021520548 A JP2021520548 A JP 2021520548A JP 2021520548 A JP2021520548 A JP 2021520548A JP 2022504932 A JP2022504932 A JP 2022504932A
Authority
JP
Japan
Prior art keywords
input
encryption
encryption step
elliptic curve
secret
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2021520548A
Other languages
English (en)
Other versions
JP7492508B2 (ja
Inventor
スティーヴン ライト,クレイグ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nchain Holdings Ltd
Original Assignee
Nchain Holdings Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nchain Holdings Ltd filed Critical Nchain Holdings Ltd
Publication of JP2022504932A publication Critical patent/JP2022504932A/ja
Application granted granted Critical
Publication of JP7492508B2 publication Critical patent/JP7492508B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • H04L9/3073Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3255Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using group based signatures, e.g. ring or threshold signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

Figure 2022504932000001
複数の参加者の間で、Bitcoinブロックチェーン上のトランザクションのような共有シークレットを分配する、コンピュータにより実施される方法が開示される。当該方法は、マッピングステップを含み、前記マッピングステップへの複数のインプットが前記参加者に共有の楕円曲線暗号システムの楕円曲線のそれぞれの楕円曲線点にマッピングされる。第1暗号化ステップでは、複数の前記楕円曲線点は、前記楕円曲線暗号システムの公開-秘密鍵ペアの公開鍵により暗号化されて、前記公開-秘密鍵ペアの対応する秘密鍵により復号されるよう適応されるアウトプットを提供する。第2暗号化ステップでは、該第2暗号化ステップへの少なくとも1つのインプットの複数の部分が、前記参加者に知られている数列のそれぞれの項により乗算される。シークレット共有ステップでは、前記シークレット共有ステップへのインプットの複数のシェアが、複数の前記参加者に分配され、その結果、前記インプットは、閾数の前記シェアにアクセス可能になり、前記閾数より少ない前記シェアにアクセス不可能になる。

Description

本開示は、概して、シークレット共有に関し、特に、デジタル署名されたデータのシェアを分配することに関する。本開示は、限定ではなく、署名されたブロックチェーントランザクションの任意のシェアを分配する際の使用に特に適する。
本願明細書では、私たちは、全ての形式の電子的な、コンピュータに基づく、分散型台帳を包含するために用語「ブロックチェーン」を使用する。これらは、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳、並びにこれらの変形を含む。他のブロックチェーン実装が提案され開発されているが、ブロックチェーン技術の最も広く知られているアプリケーションは、Bitcoin台帳である。Bitcoinは、ここでは、便宜上及び説明の目的で参照されることがあるが、本開示はBitcoinブロックチェーンと共に使用することに限定されず、代替のブロックチェーン実装及びプロトコルが本開示の範囲に包含されることに留意すべきである。用語「ユーザ」は、ここでは、人間またはプロセッサに基づくリソースを表してよい。
ブロックチェーンは、コンピュータに基づく非集中型の分散型システムとして実装されるピアツーピアの電子台帳であり、ブロックにより構成され、ブロックはまたトランザクションにより構成される。各トランザクションは、ブロックチェーンシステムの中の参加者間でデジタルアセットの制御の移転を符号化するデータ構造であり、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、これらのブロックは一緒に繋げられて、起源以来ブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能な記録を生成する。トランザクションは、スクリプトとして知られている小さなプログラムを含む。スクリプトは、それらのインプット及びアウトプットを埋め込まれ、トランザクションのアウトプットがどのように及び誰によりアクセス可能であるかを指定する。Bitcoinプラットフォームでは、これらのスクリプトはスタックに基づくスクリプト言語を用いて記述される。
トランザクションがブロックチェーンに書き込まれるためには、検証されなければならない。ネットワークノード(マイナー)は、無効なトランザクションがネットワークから拒否され、各トランザクションが有効であることを保証するために作業を実行する。ノードにインストールされたソフトウェアクライアントは、未使用トランザクション(unspent transaction, UTXO)のロック及びアンロックスクリプトを実行することにより、UTXOに対してこの検証作業を実行する。ロック及びアンロックスクリプトの実行が真(TRUE)と評価する場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。したがって、トランザクションがブロックチェーンに書き込まれるためには、(i)トランザクションを受信した第1ノードにより検証され、トランザクションが有効な場合には、ノードが該トランザクションをネットワーク内の他のノードに中継する、(ii)マイナーにより構築された新しいブロックに追加される、(iii)マイニングされる、つまり過去のトランザクションのパブリック台帳に追加される、ことが必要である。
ブロックチェーン技術は、暗号通貨の実装の使用のために最も広く知られているが、デジタル事業家が、Bitcoinの基づく暗号セキュリティシステム及び新しいシステムを実装するためにブロックチェーンに格納できるデータの両方の使用を開発し始めている。ブロックチェーンが、暗号通貨の分野に限定されない自動化タスク及びプロセスのために使用できれば、非常に有利になる。このようなソリューションは、ブロックチェーンの利益(例えば、永久性、イベントの記録の耐タンパ性、分散型処理、等)を利用しながら、それらの用途をより多様化し得る。
ブロックチェーン技術は、その実装の中でシークレット共有技術を利用し、例えば、パスワードまたはデジタル署名のシェアを分配して、トランザクションの閾数の署名を可能にする。
既存のシークレット共有技術、例えば閾数署名処理は、生成される秘密鍵が僅かなソート若しくは組織化しか有しない又は全く有しないデータ構造にパックされるので、上手く拡張できない。
従って、より効果的に拡張できる改良されたシークレット共有方法を提供することが望ましい。
このような改良されたソリューションがここで考案される。
したがって、本開示によると、添付の請求項において定められる方法が提供される。
本開示によると、複数の参加者の間で共有シークレットを分配する、コンピュータにより実施される方法であって、
第1マッピングステップであって、前記第1マッピングステップへの複数のインプットは、前記参加者に共通の楕円曲線暗号システムの楕円曲線のそれぞれの楕円曲線点にマッピングされる、第1マッピングステップと、
第1暗号化ステップであって、複数の前記楕円曲線点は、前記楕円曲線暗号システムの公開-秘密鍵ペアの公開鍵により暗号化されて、前記公開-秘密鍵ペアの対応する秘密鍵を用いて復号されるよう適応されるアウトプットを提供する、第1暗号化ステップと、
第2暗号化ステップであって、前記第2暗号化ステップへの少なくとも1つのインプットの複数の部分は、前記参加者に知られている数列のそれぞれの項により乗算される、第2暗号化ステップと、
シークレット共有ステップであって、前記シークレット共有ステップへのインプットの複数のシェアは、複数の前記参加者に分配され、前記インプットが閾数の前記シェアにアクセス可能であり、前記閾数より少ない数の前記シェアにアクセス不可能であるようにする、シークレット共有ステップと、
を含む方法が提供され得る。
これは、共有シークレットが楕円曲線点を装い、従って権限のないパーティが検出することが一層困難であるので、セキュリティの向上という利点を提供する。
前記シークレット共有ステップの少なくとも1つのインプットは、前記第1暗号化ステップ又は前記第2暗号化ステップのアウトプットに基づいてよい。
前記第1暗号化ステップの少なくとも1つのインプットは、共有シークレットに基づいてよく、前記第2暗号化ステップの少なくとも1つのインプットは、前記第1暗号化ステップのアウトプットに基づいてよく、前記シークレット共有ステップの少なくとも1つのインプットは、前記第2暗号化ステップのアウトプットに基づいてよい。
前記第2暗号化ステップの少なくとも1つのインプットは、共有シークレットに基づいてよく、前記第1暗号化ステップの少なくとも1つのインプットは、前記第2暗号化ステップのアウトプットに基づいてよく、前記シークレット共有ステップの少なくとも1つのインプットは、前記第1暗号化ステップのアウトプットに基づいてよい。
前記第1暗号化ステップの少なくとも1つのインプットは、前記シークレット共有ステップ又は前記第2暗号化ステップのアウトプットに基づいてよい。
他のステップのうちの少なくとも1つより前に、前記シークレット共有ステップを実行することにより、これは、処理の計算効率を向上するという利点を提供する。
前記シークレット共有ステップの少なくとも1つのインプットは、共有シークレットに基づいてよく、前記第2暗号化ステップの少なくとも1つのインプットは、前記シークレット共有ステップのアウトプットに基づいてよく、前記第1暗号化ステップの少なくとも1つのインプットは、前記第2暗号化ステップのアウトプットに基づいてよい。
前記第2暗号化ステップの少なくとも1つのインプットは、共有シークレットに基づいてよく、前記シークレット共有ステップの少なくとも1つのインプットは、前記第2暗号化ステップのアウトプットに基づいてよく、前記第1暗号化ステップの少なくとも1つのインプットは、前記シークレット共有ステップのアウトプットに基づいてよい。
前記第2暗号化ステップの少なくとも1つのインプットは、前記シークレット共有ステップ又は前記第1暗号化ステップのアウトプットに基づいてよい。
前記シークレット共有ステップの少なくとも1つのインプットは、共有シークレットに基づいてよく、前記第1暗号化ステップの少なくとも1つのインプットは、前記シークレット共有ステップのアウトプットに基づいてよく、前記第2暗号化ステップの少なくとも1つのインプットは、前記第1暗号化ステップのアウトプットに基づいてよい。
前記第1暗号化ステップの少なくとも1つのインプットは、共有シークレットに基づいてよく、前記シークレット共有ステップの少なくとも1つのインプットは、前記第1暗号化ステップのアウトプットに基づいてよく、前記第2暗号化ステップの少なくとも1つのインプットは、前記シークレット共有ステップのアウトプットに基づいてよい。
前記第2暗号化ステップは、ナップサックアルゴリズムを実行するステップを含んでよい。
これは、方法の効率を向上するという利点を提供する。
前記第2暗号化ステップは、スターン数列に基づく前記数列を含んでよい。
これは、アルゴリズムを実行するための時間量を削減することにより、より高い効率という利点を提供する。
前記第2暗号化ステップは、前記参加者に知られている項のべき乗を含む前記数列を含んでよい。
前記項は、前記参加者の間で共有されるメッセージに基づいてよい。
前記第2暗号化ステップは、超増加数列を含んでよい。
これは、前記共有シークレットのより効率的な復号を可能にするよい利点を提供する。
前記第1マッピングステップは、前記インプットに基づく座標を有する楕円曲線点を決定するステップを含んでよい。
前記座標は、前記参加者に知られている量により乗算された前記インプットに基づいてよい。
これは、セキュリティの向上という利点を提供する。
前記第1暗号化ステップは、前記第1暗号化ステップへのインプットを表す整数により乗算された楕円曲線点を含む項を決定するステップを含んでよい。
前記第1暗号化ステップは、短期鍵と参加者の公開鍵とに基づき項を決定するステップを含んでよい。
前記方法は、少なくとも1人の参加者へ、短期鍵により乗算された前記楕円曲線暗号システムの生成元に基づく楕円曲線点と、前記短期鍵により乗算された参加者の前記公開鍵に基づく楕円曲線点と、を送信するステップ、を更に含んでよい。
前記共有シークレットは、デジタル署名されたメッセージであってよい。
前記デジタル署名されたメッセージは、ブロックチェーントランザクションであってよい。
本開示は、プロセッサと、プロセッサによる実行の結果として、システムに本願明細書に記載のコンピュータにより実施される方法のいずれかの実施形態を実行させる実行可能命令を含むメモリと、を含むシステムも提供する。
本開示は、実行可能命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムのプロセッサにより実行された結果として、少なくとも、前記コンピュータシステムに、本願明細書に記載のコンピュータにより実施される方法を実行させる、非一時的コンピュータ可読記憶媒体も提供する。
本開示は、信頼性、認証、否認防止を保証し、並びに、メッセージ復元、及びデジタル署名における転換を追加する。本開示は、(シークレット又は鍵のスクリプト内のログのような)データのセキュアな送信を可能にする。本開示は、更に、銀行システムにおける鍵単独攻撃(key-only attacks)及びメッセージ攻撃のような攻撃から保護する。全体的に、本開示の実施形態は、Bitcoinトランザクションに関連する外部情報及び他の使用のためのメッセージの組み込みを可能にする処理に関する。
本開示の実施形態における鍵分配及び鍵シェアの効率的分配のためのメカニズムは、鍵データを格納する処理に非線形性を導入する。これは、拡散及び混乱のためのステップを追加することにより、暗号化プロトコルにおけるセキュリティの程度を拡張する。鍵シェアの効率的なパッキングは、ソリューションを効率的にスケーリングすることも可能にする。鍵シェアの分散型特性は、ESCROWサービスを含む動作モデルを可能にする。ESCROWサービスでは、ESCROWエージェントが、任意の暗号化シークレットを知らずに、順方向エージェントとして振る舞い、一方で依然としてメッセージを監視し、検証し、送信し及び受信することが可能である。
本開示のこれらの及び他の態様は、本願明細書に記載の実施形態から明らかであり及びそれらを参照して教示される。本開示の実施形態は、単なる例を用いて及び添付の図面を参照して以下に説明される。
デジタル署名されたメッセージのシェアを分配する、本開示を実現する処理の概略図である。 図1の処理の部分の詳細な表現である。 図1の処理の署名生成ステップを示す。 図1の処理の暗号化ステップを示す。 図1の処理により暗号化されたデジタル署名を取得するメッセージ復元処理を示す。 図5の処理で使用するための復号処理を示す。 種々の実施形態が実装できるコンピューティング環境を示す概略図である。
図1を参照すると、複数の参加者の間で、デジタル署名されたメッセージのシェアを分配する処理が記載される。最初に、ステップ10で、デジタルメッセージm(ここで、mは、BitcoinトランザクションのようなメッセージMのハッシュ値である)は、楕円曲線デジタル署名アルゴリズムに入力される。当業者により理解されるように、ECDSAは、公開及び秘密鍵ペア、並びにランダムな整数である短期鍵を生成し、以下に更に詳述する方法でデジタル署名(r,s)を提供する。マッピングステップ20で、デジタル署名(r,s)は、次に、参加者に共通の楕円曲線暗号システムの楕円曲線点にマッピングされる。ナップサックアルゴリズムの形式の第1暗号化ステップ30は、次に、ステップ20で生成された楕円曲線点に適用されて、デジタル署名(r,s)の暗号化バージョン(R,S)を生成する。楕円曲線暗号方法(elliptic curve cryptography (ECC))の形式の第2暗号化ステップ40は、次に、デジタル署名(r,s)の暗号化バージョン(R,S)に適用されて、デジタル署名(r,s)の2重暗号化バージョン(P,P)を提供する。代替として、第1暗号化ステップ20は、楕円曲線暗号方法(elliptic curve cryptography (ECC))であることができ、第2暗号化ステップ40はナップサックアルゴリズムであることができる。最後に、シャミア(Shamir)のシークレット共有のようなシークレット共有ステップ50が、デジタル署名(r,s)の2重暗号化バージョン(P,P)に適用される。ECC暗号化は以下に詳述する、コブリッツ(Koblitz)法を用いることができる。
本開示の実施形態の技術は、共有方式において、参加者間の鍵シェアの分配を可能にする。これは、更に、メッセージの復号及びメッセージ復元のための分散型メカニズムを可能にする。同じメカニズムが、メッセージを暗号化するために使用できる。これは、以下に詳述される。本技術は、例えば“Different Approaches to Solve the 0/1 Knapsack Problem”, Maya Hristakeva Computer Science Department Simpson College Indianola, IA 50125 hristake@simpson.eduに開示されたようなナップサックアルゴリズムを使用して、鍵シェアが可能な限り効率的にパックされ分散されることを可能にするために、データパッキング問題を最適化する。
ナップサックアルゴリズム及び“Different Approaches to Solve the 0/1 Knapsack Problem”, Maya Hristakeva Computer Science Department Simpson College Indianola, IA 50125 hristake@simpson.eduで定義されるような標準的なソリューションの全ての変形は、構成空間に渡る探索の何らかの変形を実行する。ナップサックアルゴリズムが初期化される比率をシード(seed)するためにスターン数列(Stern series)を使用することにより、構成空間の検索を体系的且つ網羅的にすることができる。これは、全ての可能な有理分数を1回だけ生成するためにスターン数列を使用できるので、アルゴリズムの動作効率に影響を与える。分数が1未満の値であるよう制約される場合、それらは、ナップサックアルゴリズムによるパッキングの比率として使用できる。これは、鍵の共有の全部の可能な比率に渡る網羅的探索に貢献する。署名生成は、任意のデータメッセージから実行される。
<好適な実施形態の利点>
Bitcoinは、メッセージのデジタル署名をその現在のフォーマットで可能にする。本開示の提案されるナップサックECC方法の導入は、以下に更に詳述するように、これを、署名検索及び復号を可能にするよう拡張する。従って、同じメカニズムがメッセージ検索のために使用できる。
本開示の方式では、署名の暗号文は、検証者のグループへ送信できる。次に、該検証者は、グループの中のn人の検証者のうちの任意のt人がメッセージを復号し及び復元できる(t,n)閾数方式に従い暗号文を復号できる。これは、例えば、Hsu C. L and Wu T. C. (1998), Authenticated Encryption Scheme with (t,n) Shared Verification’, IEEE Proceedings-Computers and Digital Techniques, Vol. 145, no. 2, pp. 117-120に記載されている。これは、データ送信の秘密性を向上し、Bitcoin交換に直接関連する暗号化セッションの統合を可能にする。
例えばKoblitz N. (1987), ‘Elliptic Curve Cryptosystems’, Mathematics of Computation, pp203-209に記載されている楕円曲線暗号法(Elliptic curve cryptography (ECC))は、暗号化情報を交換するセキュアな方法を提供する。ECCは(RSAのような他の知られている暗号法と異なり)、ドメインパラメータを秘密のまま保つことを要求しない。この手順の幾つかの適用は、自己証明公開鍵暗号システム(self-certified public key crypto system)の同時検証を有する公開鍵の指示を含む。ナップサックアルゴリズムの導入により、本開示の方式は、暗号化処理に非線形性を導入する。非線形性が生成されるのは、情報が使用される順序ではなく、暗号化処理を構成する鍵情報が空間効率のよい方法でパックされるからである。これは、受信側へ送信する前に、ナップサックアルゴリズムに取り入れられる暗号化メッセージのより高いセキュリティレベルを提供する。受信側は、次に、逆ナップサック処理を使用でき、その後にメッセージを復号し復元する。
初期ドメインパラメータは、Bitcoinプロトコルの中で設定される。この方式の中で使用されるメッセージ交換は、ユーザのBitcoin鍵に基づくIDと共にセキュアな認証メカニズムとして使用できる。これは、例えばNyberg K. And Rueppel R.A. (1993), ‘A New Signature Scheme Based on DSA giving message Recovery’, ACM Computer and Communications Security, Vol.1, pp.58-61に記載されるような、ユーザとサーバとの間のチャレンジレスポンスメカニズムを可能にする。
クライアントにより保持される基本公開鍵は、後述するマルチシグネチャ方法を用いて拡張できる。
この方法では、例えばHuang, et al., “An FPGA Implementation of Elliptic Curve Cryptography for Future Secure Web Transaction”, Conference Paper, January 2007に記載されるように、クライアントの公開鍵は、必要に応じて及び認証されたセッション毎に再計算できる。Bitcoinトランザクションの中のデジタル署名の生成は、標準的なECDSA(r,s)署名処理に従う。
<暗号化方法>
図2を参照すると、一般的なメッセージの暗号化の処理のための情報のフローが示される。情報フローを通じて任意的分岐70があることが分かる。任意的分岐70は、ナップサック暗号化を実行する前に(R,S)ペアをフラグメント化することにより、暗号化方法のセキュリティの更なる向上を可能にする。これは以下に詳述される。
<ECDSA署名>
図3を参照すると、図1及び2のデジタル署名ステップ10が詳細に示される。Bitcoinの中で行われる標準的な処理と同様に、トランザクションの鍵交換部分であるメッセージ(M)は、メッセージの送信者により署名され、任意のマイナーがトランザクションを請求できる公開署名の特定の形式が生成されない限り、受信者のアドレスを組み込む。ECDSA署名の中のr値の計算が以下に詳述される。値rが0に等しい場合、後述するように値sの計算の中で別のランダムな数kが選択される。
Figure 2022504932000002
ここで、dは送信側の秘密鍵である。
Bitcoinは、SHA256アルゴリズムを使用し、メッセージのハッシュに署名する。従って、
m=Hash256(M)
署名生成処理は、図3に示される。ステップ30(図1及び2)で、Bitcoinトランザクションからのデジタル署名(r,s)は、次に、ナップサックアルゴリズムへの入力として使用される。定義されるナップサック数列は、Rajaram Ramasamy R, Prabakar M.A, Devi M.I, and Suguna M(2009), ‘Knapsack Based ECC Encryption and Decryption’, International Journal of Network Security, Vol.9, no.3, pp.218-226に詳細に記載される。これは、次にステップ40でECCを使用して暗号化される符号化値(R,S)の生成をもたらす。これは、値R及びSに関連する暗号化点(P,P)を返す。
ナップサックアルゴリズムを用いて(r,s)を変換する処理は、以下の方法1で詳細に示される。ナップサックアルゴリズムで使用される数列は、問題を解くのを容易にする超増加数列(super increasing sequence)であるべきである。超増加数列は、数列の次の項が全部の先行する項の和より大きい数列として定義される。超増加ナップサック数列を解くために、ナップサックの合計重みが、最大重み及び数列と比較される。合計重みが最大重みより小さい場合、それはナップサックの中に存在しない。合計重みが最大重みより大きい場合それはナップサックの中に存在する。アルゴリズムは、合計重みから最大重みを減算して、これを次の最大数と比較する。この処理は、合計がゼロの値に達するまで繰り返される。合計がゼロに達しない場合には、解が存在しない。これは、超増加数列の特性である。
<スターン数列を用いるナップサックアルゴリズム>
一般的なナップサック問題及びアルゴリズムの解法は、例えば「Different Approaches to Solve the 0/1 Knapsack Problem」、Maya Hristakeva Computer Science Department, Simpson College, Indianola, IA 50125、hristake@simpson.eduに記載されている。ナップサック問題に対する標準的な解法の全ては、構成空間に渡る探索を含むことが分かる。ナップサックアルゴリズムの変形は、以下に定義される。このアルゴリズムにおける「ナップサック数列」は、整数K(以下のKの定義を参照)で値を乗算することにより計算される。ここで、「p」はモジュラ演算でも使用される素数(楕円曲線の次数)であり、「k」はmの2進ビット列の長さを有する秘密整数(短期鍵)である。値「v」は、各認証済みクライアントにユニークであり、新しい短期鍵kは秘密に保持される。
変更されたスターン数列(Stern series)は、時間量を削減するために使用される。スターン数列は、Reznick (2008), ‘Regularity Properties of the Stern Enumeration of the Rationals’, Journal of Integer Sequenceに詳細に記載されている。
値K=Hash(k)は、逆ナップサックアルゴリズムで使用される。ハッシュ値Kからkを決定することは計算上不可能である。
<ナップサックアルゴリズム>
ここで、図1、2、4のステップ30に示されるナップサックアルゴリズムを詳細に説明する。
初めに、数列は次式で定義される。
Figure 2022504932000003
vは、v=p+Kを乗算することにより計算される。ここで、pはモジュラ演算で使用される「素数」であり、K=Hash(k)は秘密の整数(secret integer)である。Lは、2進ビット列の長さである。
値vは、各鍵にユニークであり、従ってアドレスであり、新しい決定論的交換毎に更新される。
K=Hash(k)の値は、逆ナップサックアルゴリズムで使用されるために、署名(r,s)と共に送信されるべきである。これは、標準的なマルチシグネチャ方法(後述する)を用いてパーティ間で送信されるべきである。一連のランダム値は、ランダム整数として使用される短期のk値だけでなく、この方法及びマルチシグネチャ方法(後述する)を用いて生成できる。
変更されたスターン数列は、これが、0と1の間で有理数を順序付け、有理数の探索を容易することにより、時間量を削減するので、ナップサックアルゴリズムで使用される。
スターン数列(Stern, M. A. "Uber eine zahlentheoretische Funktion.」 J. Reine angew. Math. 55, 193-220, 1858に更に詳細に記載される)は次の通りである。
Figure 2022504932000004
スターン数列の中の値の間の比は、リーフが全部の有理分数(rational fraction)を構成する2分木を生成するために使用できる。これは、スターン-ブロコ(Stern-Brocot)木である。有理数の集合は、列挙されると、次にサイズの順にトラバースできる。1以下の有理数の部分集合が、次に検討できる。この列挙及び順序付けは、ナップサックアルゴリズムの探索効率を向上するために使用できる。
反復により生成される2分木を考えると、ルート1 1から開始して、a,b→a,a+b,a+b,b (1)である。数値a,a+b及びa+b,bは、それぞれa,bの左及び右の子と呼ばれ、a,bは、その子の母親とも呼ばれる。列挙(induction)による生成の注意は、以下の通りである。ルート1 1は最初の生成を形成し、(n+1)の生成はn番目の生成の要素の全部の子の集合である。この反復から得られる2分木は、Calkin-Wilf木と呼ばれる。
Stern-Brocot木の手順は以下に詳述される。
ナップサックアルゴリズムによると、Rは式(3)を用いて計算される。ナップサック数列は、aにより表され、rの2進値はxを用いて表される。
システムのS値は、式(4)を用いて与えられる。
Figure 2022504932000005
値(R,S)は、楕円曲線関数を用いて暗号化できる。
他の値がKのために交換できる。これらは、署名で使用される元のランダム値kに関連する必要はない。しかしながら、K=Hash(k)の積分は、追加スクリプト形式が後にBitcoinの中で生成されることを可能にする。(R,S)の使用は、2重暗号化の形式を生成する。これは、後のメッセージ交換のために認証及び信頼性の両方を提供する。Nyberg K. and Rueppel R.A. (1993), ‘A New Signature Scheme Based on DSA giving message Recovery’, ACM Computer and Communications Security, Vol.1, pp.58-61に記載されるMenezes-Vanstone楕円曲線アルゴリズムと同様の形式で、インプットは約160ビットのブロックにフラグメント化される。不完全ブロックは、ECCアルゴリズム入力と共に受信者の公開鍵を用いて修正され又はフラグメント化される。エスクローエージェント又はクラウドに基づくサーバが交換のために使用される。各フラグメントも、このシステムの公開鍵を用いて暗号化される。
署名は、サーバ又は他のクラウドノードへ送信される。このシステムは、エスクローエージェント又は他の第三者であることもできる。この第三者又はクラウドサーバは、署名の復号が最終的な受信側パーティの秘密鍵を必要とするので、署名を復号することができない。ECC暗号アルゴリズムは、以下に示される。
本開示のECC暗号アルゴリズムのバージョンでは、始めに、インプットは、Koblitz法を用いて楕円曲線上の点に変換される。Koblitz法は、Koblitz N. (1987), ‘Elliptic Curve Cryptosystems’, Mathematics of Computation, pp203-209,及びPadma Bh et. al. /(IJCSE) International Journal on Computer Science and Engineering Vol.02, No.05, 2010, 1904-1907 Encoding And Decoding of a Message in the Implementation of Elliptic Curve Cryptography using Koblitz’s Methodに記載されている。
<Stern-Brocot木の定義>
この章は、有理数がStern-Brocot木を用いてどのように生成できるかを記載する。
Figure 2022504932000006
上述の方式から、有理数が木の形式に配置できることが分かる。木の中のリーフの間の関係は、それらが全て最上位要素、つまり(1/1)に由来することである。
この値をベクトルとして考え、これを左の行列L又は右の行列Rにより乗算することにより、木の上の連続するリーフが生成できる。行列LおよびRは以下のように定められる。
Figure 2022504932000007
出現する構造は以下の通りである:
Figure 2022504932000008
行列R及びLを繰り返し適用することにより木の更なる枝が生成できることが分かる。木の任意の所与のレベルにある項目は、次に左から右へと読み出され、有理数の順序が生成できる。(行列Iに揃えられた)中心線の左までの数値は、0と単位数(unity)との間の値を有する。中心線の右までの数値は、単位数より大きい値を有する。
<マルチシグネチャ方法>
この章では、基本技術としてECSDAを用いるマルチシグネチャのメカニズムを説明する。
明確さのために、以下の説明は、シークレット共有に関与する2つのパーティが、何らかの種類のインターネットに基づくサービスプロバイダ(以後、サーバ、Server)とサーバのクライアント(以後、クライアント、Client)である例を使用する。記載される方法は、任意の2つのパーティのために一般化可能である(例えば、変形V2を参照)。
各パーティは、ECC演算を実行する能力を有すると仮定する。実際に、「正直な(naive)」クライアントは、暗号化サービス(例えば、Bitcoinの電子ウォレット)の目的でサーバにより提供された又はその第三者パーティにより提供されたソフトウェアを使用している可能性がある。
<フェーズI:登録>
(1)各パーティは、共通の生成元Gを用いる(Bitcoinシステムにより使用される)secp256k1のような標準的なECCシステムに合意する。
(2)サーバは、secp256k1を用いて公開/秘密鍵ペアを生成し、彼らの公開鍵を(例えば、それを彼らの公式ウェブサイトで可視化することにより)発行する:
Figure 2022504932000009
ECCでは、公開鍵は、以下のように楕円曲線点乗算を用いて、秘密鍵から導出されることに留意する。
Figure 2022504932000010
秘密鍵は、ECCシステムで指定される許容範囲内のランダムな整数である。
a.クライアントは、secp256k1を用いて公開/秘密鍵ペアを生成する:
Figure 2022504932000011
b.クライアントは、彼らのマスタ公開鍵(PMC)をサーバに登録する。これは、例えば、クライアントがサーバにそれらのサービスの現行ユーザとしてサインアップするとき、生じる。クライアントは、サーバの公に入手可能なマスタ公開鍵PMSへのアクセスも有する。
登録フェーズは、初期設定として1回だけ生じる。この後、マスタ鍵は、使い捨て対称暗号鍵を生成するために、セキュアな方法で再利用される。
<フェーズII:セッション開始>
(3)クライアントは、サーバへ送信するために「メッセージ」を生成し、256ビットの整数を生じるメッセージのハッシュを生成するために標準的なアルゴリズムを使用する。
Figure 2022504932000012
メッセージの選択は、任意で、共有シークレットを生成する目的で任意であるが、(UnixTime+ノンス)の選択が特定の計画された適用のために有用である(実施形態1を参照)。
(4)クライアントは、以下のように2次秘密鍵を計算する。
Figure 2022504932000013
留意すべきことに、この場合、2次秘密鍵は乱数ではなく、マスタ公開鍵から決定的に導出される。この方法を用いて、そのペアにされた公開鍵(P2C)は、以下のようにクライアントマスタ鍵(PMC)から導出できる。
Figure 2022504932000014
留意すべきことに、「+」演算子は、楕円曲線点加算を表す。
従って、クライアントの2次秘密鍵(V2C)は秘密のままであるが、2次公開鍵は、マスタ鍵及びメッセージMが分かると、容易に導出できる。
(5)クライアントは、メッセージMにV2Cにより署名し、これをサーバへ送信する。
Figure 2022504932000015
ECDSA(Elliptic Curve Digital Signature Algorithm、楕円曲線デジタル署名アルゴリズム)は、https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm;http://cs.ucsb.edu/~koc/ccs130h/notes/ecdsa-cert.pdfに詳細に説明されている。
このステップは、共有シークレットを確立するため、及びクライアントとサーバとの間のセキュアな通信セッションを開始するための両方のために必要とされる唯一の送信を表す。サーバは、受信したメッセージMを用いて、それら自身の2次公開/秘密鍵ペアを生成するだろう。このことは、クライアントが、サーバの2次公開鍵を直ちに計算することを可能にする。
(6)クライアントは、ステップ(4)と同じ技術を用いてサーバの2次公開鍵(P2S)を計算する。
Figure 2022504932000016
(7)サーバは、クライアントメッセージを受信し、M=SHA-256(M)のハッシュを独立して計算する。
(8)サーバは、ステップ(4)の式により、クライアントの2次公開鍵(P2C)を計算する。
(9)サーバは、計算したP2Cに対して、クライアントの署名(Sig-V2C)を検証する。
これは、以下に詳述される。
https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm;
http://cs.ucsb.edu/~koc/ccs130h/notes/ecdsa-cert.pdf
この時点で、サーバは、メッセージMの内容に基づき、任意の合意された条件により(例えば実施形態1のような)、更なるチェックを実行してよい。
(10)サーバは、以下のように2次秘密鍵を計算する。
Figure 2022504932000017
ステップ(4)と同じ技術を用いて、V2CがP2Sとペアであることが検証できる。留意すべきことに、サーバの2次秘密鍵(V2S)は秘密のままであり、サーバにだけ知られている。
(11)クライアント及びサーバは、今や、それぞれの他方の2次公開鍵を有し、それぞれが独立して、それら自身の2次秘密鍵を用いて共有シークレットSを計算できる:
Figure 2022504932000018
2つの計算が同じ値を生じることは以下のように検証される:
Figure 2022504932000019
ECC代数学は可換性であるので:
Figure 2022504932000020
従って、式(i)及び(ii)は等価である。
共通シークレットSは、楕円曲線点(x,y)の形式である。これは、両方のパーティにより合意された標準的な公に知られている演算を用いて標準的な鍵フォーマットに変換できる。例えば、x値は、AES256暗号化の鍵として使用され得る256ビットの整数である。それは、160ビットの長さの鍵を必要とする任意の用途のためにRIPEMD160を用いて、160ビットの整数に更に変換されることもできる。共有シークレットSが計算されると、2次秘密鍵(V2C及びV2S)は、保持される必要がなく、格納される必要がないことに留意する(しかしながら、特定の用途に依存して、それらがマスタ秘密鍵としてセキュアに保持されるならば、それらは格納され得る)。更に、共有シークレット自体は、通信セッションの期間中にのみ存在する必要があり、それを格納することなく、セッションの直後に廃棄できる(しかし、それはいつでも再計算できる)。
このプロトコルの中のフェーズIIは、1回使用目的(single-purpose usage)で、連続する共有シークレットを生成するために何回も繰り返され得る。代替として、同じ共有シークレットが再利用できる。後者の場合、セキュリティのために、実際のシークレットは、それ自体が公に知られている情報及び既存の秘密に保持された秘密鍵から再計算可能であるので、格納されない(例えば、実施形態2)。
<方法1-ナップサックアルゴリズム>
この章では、図1、2、34のステップ30のナップサックアルゴリズムが、「ナップサック手順の更なる拡張」と題された章で以下に詳述するようにECDSA署名を最適にパックするために、どのように使用できるかを説明する。上述のように、ナップサックアルゴリズムの非線形パッキング手順は、鍵シェアにセキュリティを追加する。
Figure 2022504932000021
<署名拡張>
方法は、メッセージ全体の署名を通じて、Bitcoinの中で使用される署名処理を超えて拡張できる。この方法では、パーティの間で共有され暗号化されるべきメッセージは、メッセージハッシュを有しないで、Bitcoinの中で展開される処理を用いてデジタル署名される。つまり、メッセージ全体が署名されて、(r,s)署名ペアのより大きなバージョンを生成する。
ナップサックアルゴリズムは、ここでも、(R,S)値を符号化するために使用される。メッセージハッシュの使用は、大部分の例において好適であるが、署名付きメッセージ全体が存在し得る使用例がある。
送信側の秘密鍵及びサーバ又はエスクローエージェントの公開鍵を用いて2重暗号化処理が行われる前に、(R,S)値は、ブロックにフラグメント化されるべきである。
サーバは、署名を受信すると、それを自身の維持する秘密鍵を用いて復号する。サーバは、次に、これを、末端の受信者の公開鍵を用いて暗号化する。署名は、サーバ又はエージェントから受信者へ、この処理に従い送信される。
単一文字のためのECCアルゴリズムの実装の詳細
図1、2、4のECC暗号化ステップ40により単一文字を暗号化する方法が記載される。これは、文字のストリームへと一般化できる。
楕円曲線から、基点(base point)Gが選択される。
Gは、次式を満たす[x,y]座標を有する。
Figure 2022504932000022
基点は、x,y値を最小化し、一方でECを満たす、つまり、x,y値を最小化する楕円曲線上の点である。
ECC方法では、秘密に保持される必要のあるランダムな整数k(k<p)が選択される。
次に、kGは、楕円曲線代数学において標準的であるように、一連の加算及び倍加により評価される。
ソースはホストAとして、宛先はホストBとして指定される。
ホストBの秘密鍵は、nと呼ばれる。k及びnは、乱数生成器により生成でき、信用性を与える。
Bの公開鍵は、次式により評価される。
Figure 2022504932000023
Aが英文字を暗号化しBへ送信するために、彼は以下を行う。
例えば、Aが文字「S」を送信したい場合、
文字「S」のASCII値が使用されて、任意の点Pを以下のように変更する。
Figure 2022504932000024
は、アフィン点、つまり、ECC計算及び符号化の任意の原点である。これは、それらの個々のアイデンティティを保つために、基点Gと異なるように選択される。P’は、楕円曲線上の点である。点P’の座標は、楕円曲線に適合するべきである。
この変換は、2つの目的のために行われる。第1に、単一値のASCIIは、ECのx,y座標に変換される。第2に、自称ハッカーから完全に見えなくされる(camouflaged)。
ECCの次のステップとして、kPを評価する必要がある。ここで、PはユーザBの公開鍵である。結果を迅速に収束するために、kの値に依存して、数列における倍加及び加算の最適な回数が計画されるべきである。暗号化メッセージは、次に、P’とkPを加算することにより導出される。つまり、
Figure 2022504932000025
これは、x,y座標のセットを生成する。kGは、x,y座標の別のセットである暗号化バージョンの第1項として含まれる。従って、格納又は送信の目的で、2つの座標セットで構成される暗号化バージョン全体は、以下の通りである。
Figure 2022504932000026
変更された平文は、従って、ECC方法の適用により暗号化されている。
<ナップサック手順の更なる拡張>
ナップサック手順は、拡散及び偽装を通じて、総当たり攻撃に対する防御を導入する。
ナップサック手順は、aと呼ばれるベクトルの数列を使用する。
これらのベクトルを生成する幾つかの方法がある。例えば、以下のように、nのべき乗の数列を得ることができる。
Figure 2022504932000027
ここで、簡単のために、nは、10未満のランダムな整数であり、又は整数p及びkを用いて計算される。pは、モジュラ演算で使用される素数であり、kは秘密の整数であり、、はバイナリビット列の長さである。
メッセージは、ナップサック処理に従い以下のように暗号化される。
Figure 2022504932000028
ナップサックアルゴリズムに従い、累積和S[x]が計算され、これは、x座標点のバイナリ形式と上述の数列とのベクトル点積として以下のように定義される。
Figure 2022504932000029
最終的な暗号化バージョンでは、座標xは、それと等価なS[x]により置き換えられる。
同様に、y,x,yのような他の座標は、ナップサックアルゴリズムにより変換される。その結果、暗号化メッセージは、次式のように表される。
Figure 2022504932000030
留意すべきことに、整数の2つのペアが、メッセージの中の1つの文字だけを表す。従って、メッセージ全体が、メッセージの中の文字数に等しい多数の整数ペアにより表される。
受信者Bは、ナップサック手順の逆処理のための全ての関連情報を有し、座標のビットパターンを復元する。例えば、Bは、a数列、彼自身のシークレット鍵n、及び楕円曲線の基点G、a、b、pの値を知っている。Bは、暗号化メッセージを受信する:
Figure 2022504932000031
ナップサック処理を逆処理するために、つまり図5及び6のステップ90で、一例として、以下を検討する。
Figure 2022504932000032
これは、xのナップサック表現である。xの値は、以下のように反復的方法で復元される。
Figure 2022504932000033
この値が正の場合、つまり
Figure 2022504932000034
バイナリビット1がm番目の位置に割り当てられ、現在値が次式により置き換えられる。
Figure 2022504932000035
しかしながら、値が負である場合、0ビットが割り当てられ、S[x]の値は不変のままである。
m-1は、ここで、S[x]の現在の値から減算される。値が正か負かに依存して、値1又は0が関連するビット位置に割り当てられる。この減算処理は、a数列が使い果たされるまで続けられる。これは、xのバイナリビットパターンを復元する。
これらの手順は、次に、y、x、及びyについて繰り返される。kGはx、yにより表され、P’+kPはx、及びyにより表されることを思い出す。P’+kPからP’を抽出するために、Bは彼のシークレット鍵nを適用して、kGを乗算する。つまり、
Figure 2022504932000036
これをP’+kPから減算して、以下のようにP’を得る。
Figure 2022504932000037
減算は、ECC倍加及び加算も含む。ここで、唯一の相違は、負の項が、マイナス符号を前に有するそれ自体のy座標を有することである。勾配、x、yの新しい値の決定の式は、同じである。yが数字の場合には、常に、-yで置き換えられる。
これはP’を生成する。「S」のASCII値は、次にP’=S・Pから、例えばASCII値の楕円曲線暗号のルックアップテーブルから検索できる。
ECC暗号化アルゴリズム
この章では、ECC暗号化アルゴリズム、Koblitzアルゴリズム、及びナップサックアルゴリズムを結合する方法が説明される。
Figure 2022504932000038
(1)Koblitzの方法は、図1のマッピングステップ20で使用され、Rに対応するユニークな楕円曲線点を識別する。これは、楕円曲線上の点をx座標x∈Zにより識別することにより達成される。従って、送信側及び受信側の間で合意された特定の定数λについて、λR<x≦λR+1である。このような点が存在しない場合、λR<x≦λR+2を試し、以下同様である。
(2)送信側は、乱数Kを生成する。これは、K=Hash(k)となるよう選択されてよい。
(3)送信側は、以下の暗号化された暗号文を受信側へ送信する。
Figure 2022504932000039
以下の点
Figure 2022504932000040
は、Rに対応する暗号化された点である。一方、以下の点
Figure 2022504932000041
は、以下に詳述するように、受信者が点を復号することを可能にする。
<復号>
図5及び6のステップ80の復号手順における情報のフローは、以下の通りである。
ステップの各々の手順は、復号の章の残りの部分で説明される。
<メッセージ復元>
サーバにより受信されたメッセージ署名は、サーバの秘密鍵を用いて復号できる。復号されると、メッセージは、クラウドサーバと最終的な受信者との間で共有されるシークレット鍵を用いて暗号化される。これは、サーバ又はエージェントが、暗号化されたシークレットの知識を得ることなく、エスクロー又は転送エージェントとして振る舞うことを可能にし、同時に、送信及び受信側パーティを監視及び検証することが依然として可能である。値の交換は、「シークレット値共有の章で後述される」シークレット共有方法により行われる。
クラウドサーバは、IDの生成に基づく暗号化方式における認証局として動作することもできる。ECC復号アルゴリズムは、以下に示される。受信側パーティは、ECC復号アルゴリズムに入力される彼らの秘密鍵を用いて(R,S)を復元できる。これは、受信者が、楕円曲線点を復号して、メッセージに戻すことを可能にする。
<ECC復号アルゴリズム>
図5及び6のステップ80のECC復号アルゴリズムの動作が示される。
Figure 2022504932000042
値(R,S)は、以下の値の使用により反復的処理を通じて、値(r,s)を復元するために、逆ナップサックアルゴリズムへの入力として使用される。
Figure 2022504932000043
Rの現在の値は次のように設定される。
Figure 2022504932000044
結果が負である場合、ビット0が割り当てられ、Rの値は不変のままである。次に、次式がRの現在の値から減算される。
Figure 2022504932000045
バイナリ値0又は1を上述のように切り替えて、数列がもはや値を含まなくなるまで、この反復処理を続ける。返される結果は、値Rに関連付けられたバイナリビットパターンである。(r,s)をバイナリ形式に変換して戻すことが実行され、メッセージ復元を達成するために式5が使用される。
メッセージは、次に式5を用いて復元できる。メッセージは、ASCII形式又は非テキスト入力を含む任意の他の符号化であり得る。
Figure 2022504932000046
<シークレット値共有>
暗号化システムにおける基本的な問題は、非セキュアなネットワークに渡るパーティ間の共有シークレットの確立である。例えば、https://en.wikipedia.org/wiki/Symmetric-key_algorithmに詳細に記載されるような対称鍵暗号法では、https://aesencryption.net/に詳細に記載されるAESにより使用されるように、単一のシークレット鍵が2つのパーティ間で共有される。これは、シークレット鍵が2つのパーティ間でどうにかして最初にセキュアに送信されなければならないという欠点を有する。鍵の送信は、通常、インターネットのような通信システムを介して電子的に行われるので、共有ステップは、破滅的な脆弱性である可能性がある。対称鍵プロトコルは単純であり広く使用されるので、非セキュアなネットワークを介してセキュアにシークレット鍵を共有する能力が必要である。
Diffie-Hellman鍵交換(https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchangeに詳細に記載される)、及びThree Passプロトコル(https://en.wikipedia.org/wiki/Three-pass_protocolに詳細に記載される)のような既存のプロトコルは、非セキュアなネットワークを介してシークレットのセキュアな共有を可能にする。しかしながら、これらの方法は、新しいシークレットが絶えず生成され教諭される場合には、計算上高価である。本発明の実施形態は、セキュアなシークレット共有のための効率的且つ安価な方法を提供する。更に、記載される技術は、単一のマスタ鍵に基づき複数のセキュアなシークレット鍵の生成及び便利な管理を可能にする。
本実施形態の処理の主な要素は以下の通りである。
1.当該方法は、楕円曲線暗号法(Elliptic Curve Cryptography (ECC))(https://en.wikipedia.org/wiki/Elliptic-curve_cryptographyに詳細に記載される)及び楕円曲線演算の特性を利用する。楕円曲線を使用する暗号法について幾つかの標準が存在し、SECG(Standards for Efficient Cryptography Group)(http://www.secg.org/)として知られる独立団体により策定されている。
2.ECCは、一方の鍵が公に利用可能にされ他方が秘密に保持される非対称暗号法の暗号鍵のペアを生成するために使用される(https://searchsecurity.techtarget.com/definition/asymmetric-cryptographyに詳細に記載される)。本実施形態は、各パーティが、secp256k1のような合意したECC標準により生成される彼ら自身の非対称鍵ペアに基づき、独立して同じシークレット鍵を計算することを可能にする。セキュリティは、共有シークレットが各パーティにより計算されるが、決して送信されない、という事実から得られる。
3.効率は、幾つかのステップを単一のステップに統合することから、及び新しい鍵を導出するために計算上高価な計算の使用が少ないことから、得られる。マスタ鍵が確立される初期設定フェーズの後、新しいシークレット鍵の各々の後の生成は、効率的であり反復可能である。
<技術的仕様>
明確さのために、以下の説明は、シークレット共有に関与する2つのパーティが、何らかの種類のインターネットに基づくサービスプロバイダ(以後、サーバ、Server)とサーバのクライアント(以後、クライアント、Client)である例を使用する。記載される方法は、任意の2つのパーティのために一般化可能である(例えば、以下の変形V2を参照)。
各パーティは、ECC演算を実行する能力を有すると仮定する。実際に、「正直な(naive)」クライアントは、暗号化サービス(例えば、Bitcoinの電子ウォレット)の目的でサーバにより提供された又はその第三者パーティにより提供されたソフトウェアを使用している可能性がある。
フェーズI:登録
(12)各パーティは、共通の生成元Gを用いる(Bitcoinシステムにより使用される)secp256k1のような標準的なECCシステムに合意する。
Figure 2022504932000047
ECCでは、公開鍵は、以下のように楕円曲線点乗算を用いて、秘密鍵から導出されることに留意する。
Figure 2022504932000048
秘密鍵は、ECCシステムで指定される許容範囲内のランダムな整数である。
Figure 2022504932000049
(15)クライアントは、彼らのマスタ公開鍵(PMC)をサーバに登録する。これは、例えば、クライアントがサーバにそれらのサービスの現行ユーザとしてサインアップするとき、生じる。クライアントは、サーバの公に入手可能なマスタ公開鍵PMSへのアクセスも有する。
登録フェーズは、初期設定として1回だけ生じる。この後、マスタ鍵は、使い捨て対称暗号鍵を生成するために、セキュアな方法で再利用される。
フェーズII:セッション開始
(16)クライアントは、サーバへ送信するために「メッセージ」を生成し、256ビットの整数を生じるメッセージのハッシュを生成するために標準的なアルゴリズムを使用する。
Figure 2022504932000050
ここで、メッセージの選択は、共有シークレットを生成する目的で任意であるが、例えば、実施形態1に記載されるように、(UnixTime+ノンス)の選択が特定の計画された適用のために有用である。
Figure 2022504932000051
Https://hash.online-convert.com/sha256-generatorに更に詳細に記載される。
(17)クライアントは、以下のように2次秘密鍵を計算する。
Figure 2022504932000052
留意すべきことに、この場合、2次秘密鍵は乱数ではなく、マスタ公開鍵から決定的に導出される。この方法を用いて、そのペアにされた公開鍵(P2C)は、以下のようにクライアントマスタ鍵(PMC)から導出できる。
Figure 2022504932000053
(留意すべきことに、「+」演算子は、楕円曲線点加算を表す。)
従って、クライアントの2次秘密鍵(V2C)は秘密のままであるが、2次公開鍵は、マスタ鍵及びメッセージMが分かると、容易に導出できる。
(18)クライアントは、メッセージMにV2Cにより署名し、これをサーバへ送信する。
Figure 2022504932000054
(https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm)
このステップは、共有シークレットを確立するため、及びクライアントとサーバとの間のセキュアな通信セッションを開始するための両方のために必要とされる唯一の送信を表す。サーバは、受信したメッセージMを用いて、それら自身の2次公開/秘密鍵ペアを生成するだろう。このことは、クライアントが、サーバの2次公開鍵を直ちに計算することを可能にする。
(19)クライアントは、ステップ(4)と同じ技術を用いてサーバの2次公開鍵(P2S)を計算する。
Figure 2022504932000055
(20)サーバは、クライアントメッセージを受信し、M=SHA-256(M)のハッシュを独立して計算する。
(21)サーバは、ステップ(4)の式により、クライアントの2次公開鍵(P2C)を計算する。
(22)サーバは、計算したP2Cに対して、クライアントの署名(Sig-V2C)を検証する。この時点で、サーバは、メッセージMの内容に基づき、任意の合意された条件により(例えば実施形態1を参照する)、更なるチェックを実行してよい。
(23)サーバは、以下のように2次秘密鍵を計算する。
Figure 2022504932000056
ステップ(4)と同じ技術を用いて、V2CがP2Sとペアであることが検証できる。留意すべきことに、サーバの2次秘密鍵(V2S)は秘密のままであり、サーバにだけ知られている。
(24)クライアント及びサーバは、今や、それぞれの他方の2次公開鍵を有し、それぞれが独立して、それら自身の2次秘密鍵を用いて共有シークレットSを計算できる:
Figure 2022504932000057
2つの計算が同じ値を生じることは以下のように検証される:
Figure 2022504932000058
ECC代数学は可換性であるので:
Figure 2022504932000059
従って、式(i)及び(ii)は等価である。
共通シークレットSは、楕円曲線点(x,y)の形式である。これは、両方のパーティにより合意された標準的な公に知られている演算を用いて標準的な鍵フォーマットに変換できる。例えば、x値は、AES256暗号化の鍵として使用され得る256ビットの整数である。それは、160ビットの長さの鍵を必要とする任意の用途のためにRIPEMD160(http://homes.esat.kuleuven.be/~bosselae/ripemd160.html)を用いて、160ビットの整数に更に変換され得る。留意すべきことに、共有シークレットSが計算されると、2次秘密鍵(V2C及びV2S)は、保持される必要がなく、格納される必要がない(しかしながら、特定の用途に依存して、それらがマスタ秘密鍵としてセキュアに保持されるならば、それらは格納され得る)。更に、共有シークレット自体は、通信セッションの期間中にのみ存在する必要があり、それを格納することなく、セッションの直後に廃棄できる(しかし、それはいつでも再計算できる)。
このプロトコルの中のフェーズIIは、1回使用目的(single-purpose usage)で、連続する共有シークレットを生成するために何回も繰り返され得る。代替として、同じ共有シークレットが再利用できる。後者の場合、セキュリティのために、実際のシークレットは、それ自体が公に知られている情報及び既存の秘密に保持された秘密鍵から再計算可能であるので、格納されない(例えば、実施形態2に記載される)。
<変形>
この章では、ハッシュの変形のための方法が記載される。
<V1:ハッシュの階層構造>
連続的な単一目的の鍵を生成するためにフェーズIIを繰り返す代わりに、パーティ間の事前合意により、ハッシュの階層構造を構築するために、両方のパーティにより、前に使用されたメッセージハッシュ(Message Hash)(SHA-256(M))が繰り返し再ハッシングされ得る。実際に、メッセージのハッシュは、次の世代のメッセージ(M’)であり得る。これを行うことは、共通シークレットの連続的な生成が、更なるプロトコルにより確立される送信を必要とすることなく計算できるようにする。第2世代の共通シークレット(S’)は、以下のように計算できる。
Figure 2022504932000060
更なる世代(S’’、S’’’、等)は同じ方法で計算でき、チェーン階層構造を生成する。この技術は、サーバ及びクライアントの両方が、元のメッセージ(M)又は最初に計算されたハッシュ(SHA-256(M))、及びそれがどのパーティに関連するか、を追跡することを要求する。これは公に知られた情報なので、この情報の保持に関してセキュリティ問題は存在しない。従って、この情報は、(ハッシュ値を公開鍵にリンクする)「ハッシュテーブル」に保持され、(例えばTorrentを用いて)ネットワークに渡り自由に分配されてよい。留意すべきことに、階層構造の中のいずれの個々の共有シークレットも危険に晒されない場合、これは、秘密鍵がセキュアなままであるならば、階層構造の中の任意の他のシークレット鍵のセキュリティに影響を与えない。
上述のようなチェーン(線形)階層構造と同様に、木構造の形式の階層構造を生成できる。木の分岐は、幾つかの方法で達成できる。そのうちの3つがここに記載される。
(i) マスタ鍵生成先ず、留意すべきことに、チェーン階層構造の中では、各々の新しい「リンク」(公開/秘密鍵ペア)は、複数の再ハッシュされたメッセージを元のマスタ鍵に加算することにより生成される。つまり(明確さのために秘密鍵のみを示す):
(ii)
Figure 2022504932000061
枝を生成するために、任意の鍵がサブマスタ鍵として使用できる。例えば、V2C’は、レギュラーマスタ鍵について行われるように、それにハッシュを加算することにより、サブマスタ鍵として使用できる。
Figure 2022504932000062
(iii)論理的関連付け:この方法では、木の中の全部のノード(公開/秘密鍵ペア)は、チェーンとして(又は以下の(iii)に示されるように任意の他の方法で)生成され、木の中のノードの間の論理的関係は、ポインタを用いて各ノードがその親ノードに関連付けられるテーブルにより維持される。
(iv)メッセージ多様性:新しい秘密/公開鍵ペアは、チェーン又は木の中の任意の点において、新しいメッセージMを導入することにより生成できる。メッセージ自体は、任意であってよく、又は何らかの意味若しくは機能を伝達してよい(例えば、それは、「現実の」銀行口座番号に関連付けられてよい、等である)。勿論、任意の新しいメッセージはセキュアに保持されなければならない。
木構造によると、認証鍵、暗号鍵、署名鍵、支払い鍵、等のような、全部が単一のセキュアに維持されるマスタ鍵にリンクされる、異なる目的のための鍵のホストが提供できる。これらの各々は、別のパーティとの共有シークレットを生成するために使用できる。
<V2:ピアツーピアシークレット共有>
本発明の実施形態は、サーバとクライアントとの間ではなく、2つのピアの間で使用できる。上述の技術的説明に記載した例では、サーバはクライアントにより信頼されるパーティとして動作する。サーバは、彼らのシステムにクライアントがアクセスするのを許可するために、クライアントの信用を認証しなければならない。サーバは、クライアントの署名付きメッセージを検証することによりこれを行う。ピアツーピアシナリオでは、各ピアは、互いに対する信頼を確立しなければならない。つまり、「クライアント」も「サーバ」の信用を認証しなければならない。これは、両方のパーティがメッセージ署名及び検証ステップ(技術的説明のステップ(0)~(9))を実行する2方向処理により行うことができる。
ピアツーピアシナリオでは、クライアントが署名付きメッセージMをサーバへ送信した後に、サーバは、彼らの計算した2次秘密鍵V2Sを用いて同じメッセージに署名し、それをクライアントへ送り返す。
Figure 2022504932000063
クライアントは、次に、彼らがステップ(0)で計算したサーバの2次公開鍵P2Sに対して、サーバの署名を検証する。
図7を参照すると、本開示の少なくとも一実施形態を実施するために使用され得るコンピューティング装置2600の説明のための簡略ブロック図が提供される。種々の実施形態で、コンピューティング装置2600は、上述の図示のシステムのうちのいずれかを実装するために使用されてよい。例えば、コンピューティング装置2600は、データサーバ、ウェブサーバ、ポータブルコンピューティング装置、パーソナルコンピュータ、又は任意の電子コンピューティング装置として使用するために構成されてよい。図7に示すように、コンピューティング装置2600は、主メモリ2608及び永久記憶装置2610を含む記憶サブシステム2606と通信するよう構成され得る1つ以上のレベルのキャッシュメモリ及びメモリ制御部(集合的に2602とラベル付けされる)を備える1つ以上のプロセッサを含んでよい。主メモリ2608は、図示のように、動的ランダムアクセスメモリ(DRAM)2618及び読み出し専用メモリ(ROM)2620を含み得る。記憶サブシステム2606及びキャッシュメモリ2602は、本開示で説明されたようなトランザクション及びブロックに関連付けられた詳細事項のような情報の記憶のために使用されてよい。プロセッサ2602は、本開示で説明されたような任意の実施形態のステップ又は機能を提供するために利用されてよい。
プロセッサ2602は、1つ以上のユーザインタフェース入力装置2612、1つ以上のユーザインタフェース出力装置2614、及びネットワークインタフェースサブシステム2616とも通信できる。
バスサブシステム2604は、コンピューティング装置2600の種々のコンポーネント及びサブシステムが意図した通りに互いに通信できるようにするメカニズムを提供してよい。バスサブシステム2604は、単一のバスとして概略的に示されるが、バスサブシステムの代替の実施形態は、複数のバスを利用してよい。
ネットワークインタフェースサブシステム2616は、他のコンピューティング装置及びネットワークへのインタフェースを提供してよい。ネットワークインタフェースサブシステム2616は、幾つかの実施形態では、コンピューティング装置2600の他のシステムからデータを受信し及びそれへデータを送信するインタフェースとして機能してよい。例えば、ネットワークインタフェースサブシステム2616は、データ技術者が、装置をネットワークに接続することを可能にする。その結果、データ技術者は、データセンタのような遠隔地にいがなら、データを装置へ送信し、データを装置から受信できる。
ユーザインタフェース入力装置2612は、キーボード、統合型マウス、トラックボール、タッチパッド、又はグラフィックタブレットのような指示装置、スキャナ、バーコードスキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システム、マイクロフォンのようなオーディオ入力装置、及び他の種類の入力装置のような、1つ以上のユーザ入力装置を含んでよい。通常、用語「入力装置」の使用は、コンピューティング装置2600に情報を入力する全ての可能な種類の装置及びメカニズムを含むことを意図する。
1つ以上のユーザインタフェース出力装置2614は、ディスプレイサブシステム、プリンタ、又は音声出力装置のような非視覚ディスプレイ、等を含んでよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、又はプロジェクションのような平面装置、又は他のディスプレイ装置を含んでよい。通常、用語「出力装置」の使用は、コンピューティング装置2600から情報を出力する全ての可能な種類の装置及びメカニズムを含むことを意図する。1つ以上のユーザインタフェース出力装置2614は、例えば、ユーザインタフェースを提示して、ここに記載したプロセス及び変形を実行するアプリケーションとのユーザ相互作用が適切であるとき、そのような相互作用を実現するために使用されてよい。
記憶サブシステム2606は、本開示の少なくとも1つの実施形態の機能を提供する基本プログラミング及びデータ構造を記憶するコンピュータ可読記憶媒体を提供してよい。アプリケーション(例えば、プログラム、コードモジュール、命令)は、1つ以上のプロセッサにより実行されると、本開示の1つ以上の実施形態の機能を提供し、記憶サブシステム2606に格納されてよい。これらのアプリケーションモジュール又は命令は、1つ以上のプロセッサ2602により実行されてよい。記憶サブシステム2606は、更に、本開示に従い使用されるデータを格納するレポジトリを提供する。例えば、主メモリ2608及びキャッシュメモリ2602は、プログラム及びデータのための揮発性記憶を提供できる。永久記憶装置2610は、プログラム及びデータの永久(不揮発性)記憶を提供でき、磁気ハードディスクドライブ、取り外し可能媒体に関連付けられた1つ以上のフロッピディスクドライブ、取り外し可能媒体に関連付けられた1つ以上の光ドライブ(例えば、CD-ROM、又はDVD、又はBlue-Ray)ドライブ、及び他の同様の記憶媒体を含んでよい。このようなプログラム及びデータは、本開示に記載した1つ以上の実施形態のステップを実行するためのプログラム、及び本開示に記載したトランザクション及びブロックに関連付けられたデータを含み得る。
コンピューティング装置2600は、ポータブルコンピュータ装置、タブレットコンピュータ、ワークステーション、又は後述する任意の他の装置を含む種々のタイプのものであってよい。さらに、コンピューティング装置2600は、1つ以上のポート(例えば、USB、ヘッドフォンジャック、光コネクタ、等)を通じてコンピューティング装置2600に接続可能な別の装置を含み得る。コンピューティング装置2600に接続され得る装置は、光ファイバコネクタを受けるよう構成される複数のポートを含んでよい。したがって、この装置は、光信号を、処理のために装置を接続するポートを通じてコンピューティング装置2600に送信される電気信号に変換するよう構成されてよい。コンピュータ及びネットワークの絶えず変化する特性により、図7に示したコンピューティング装置2600の説明は、装置の好適な実施形態を説明する目的の特定の例としてのみ意図される。図7に示したシステムより多くの又は少ないコンポーネントを有する多くの他の構成が可能である。
上述の実施形態は、本開示を限定するのではなく、説明すること、及び当業者は添付の特許請求の範囲により定められる本開示の範囲から逸脱することなく多くの代替的実施形態を考案できることに留意すべきである。特許請求の範囲において、括弧内の任意の参照符号は、請求項を限定することを意図しない。用語「有する」及び「含む」(comprising、comprises)等は、任意の請求項又は明細書全体に列挙されたもの以外の要素またはステップの存在を排除しない。本願明細書では、「有する」は「有する又は構成される」を意味し、「含む」は「含む又は構成される」を意味する。要素の単数の参照は、該要素の複数の参照を排除しない。逆も同様である。本開示は、幾つかの別個の要素を含むハードウェアにより、及び適切にプログラムされたコンピュータにより、実装できる。幾つかの手段を列挙する装置クレームでは、これらの手段のうちの幾つかは、1つの同じハードウェアアイテムにより具現化されてよい。単に特定の手段が相互に異なる従属請求項に記載されるという事実は、これらの手段の組み合わせが有利に使用されないことを示さない。
<参考文献>
1. Chen T.S. Huang G.S. Liu T.P. and Chung Y.F (2002), ‘Digital Signature Scheme Resulted from Identification Protocol for Elliptic Curve Cryptosystem’, Proceedings of IEEE TENCON’02. pp. 192-195
2. Hsu C.L and Wu T. C. (1998), Authenticated Encryption Scheme with (t, n) Shared Verification’, IEEE Proceedings - Computers and Digital Techniques, Vol. 145, no. 2, pp. 117-120.
3. Graham, R. L.; Knuth, D. E.; and Patashnik, O. Concrete Mathematics: A Foundation for Computer Science, 2nd ed. Reading, MA: Addison-Wesley, pp. 116-117, 1994.
4. Koblitz N. (1987), ‘Elliptic Curve Cryptosystems’, Mathematics of Computation, pp 203-209.
5. Nyberg K. and Rueppel R.A. (1993), ‘A New Signature Scheme Based on DSA giving message Recovery’, ACM Computer and Communications Security, Vol.1,pp.58-61.
6. Rajaram Ramasamy R, Prabakar M.A, Devi M.I, and Suguna M(2009), ‘Knapsack Based ECC Encryption and Decryption’, International Journal of Network Security, Vol.9, no.3, pp. 218-226.
7. Rajaram Ramasamy R. and Amutha Prabakar M. (2011), ‘Digital Signature Scheme with message Recovery Using Knapsack -based ECC’, International Journal of Network Security, Vol.12, no.1,pp.15,20.
8. Reznick (2008), ‘Regularity Properties of the Stern Enumeration of the Rationals’, Journal of Integer Sequence.
9. Stern, M. A. "Uber eine zahlentheoretische Funktion." J. reine angew. Math. 55, 193-220, 1858.
10. Different Approaches to Solve the 0/1 Knapsack Problem Maya Hristakeva Computer Science Department Simpson College Indianola, IA 50125 hristake@simpson.edu
11. Huang, et al., “An FPGA Implementation of Elliptic Curve Cryptography for Future Secure Web Transaction”, Conference Paper, January 2007.
1a. Symmetric key cryptography: https://en.wikipedia.org/wiki/Symmetric-key_algorithm
2a. AES encryption: http://aesencryption.net/
3a. Diffie-Hellman Key exchange: https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange
4a. Three Pass Protocol: https://en.wikipedia.org/wiki/Three-pass_protocol
5a. Elliptic Curve Cryptography: https://en.wikipedia.org/wiki/Elliptic_curve_cryptography
6a. Standards for Efficient Cryptography Group (SECG): http://www.secg.org/
7a. Asymmetric cryptography: http://searchsecurity.techtarget.com/definition/asymmetric-cryptography
8a. SHA-256 algorithm: http://hash.online-convert.com/sha256-generator
9a. Elliptic Curve Digital Signature Algorithm(ECDSA): https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm; http://cs.ucsb.edu/~koc/ccs130h/notes/ecdsa-cert.pdf
10a. RIPEMD160 algorithm: http://homes.esat.kuleuven.be/~bosselae/ripemd160.html
4aa. Padma Bh et. al. / (IJCSE) International Journal on Computer Science and Engineering Vol. 02, No. 05, 2010, 1904-1907 Encoding And Decoding of a Message in the Implementation of Elliptic Curve Cryptography using Koblitz’s Method

Claims (24)

  1. 複数の参加者の間で共有シークレットを分配する、コンピュータにより実施される方法であって、
    第1マッピングステップであって、前記第1マッピングステップへの複数のインプットは、前記参加者に共通の楕円曲線暗号システムの楕円曲線のそれぞれの楕円曲線点にマッピングされる、第1マッピングステップと、
    第1暗号化ステップであって、複数の前記楕円曲線点は、前記楕円曲線暗号システムの公開-秘密鍵ペアの公開鍵により暗号化されて、前記公開-秘密鍵ペアの対応する秘密鍵を用いて復号されるよう適応されるアウトプットを提供する、第1暗号化ステップと、
    第2暗号化ステップであって、前記第2暗号化ステップへの少なくとも1つのインプットの複数の部分は、前記参加者に知られている数列のそれぞれの項により乗算される、第2暗号化ステップと、
    シークレット共有ステップであって、前記シークレット共有ステップへのインプットの複数のシェアは、複数の前記参加者に分配され、前記インプットが閾数の前記シェアにアクセス可能であり、前記閾数より少ない数の前記シェアにアクセス不可能であるようにする、シークレット共有ステップと、
    を含む方法。
  2. 前記シークレット共有ステップの少なくとも1つのインプットは、前記第1暗号化ステップ又は前記第2暗号化ステップのアウトプットに基づく、請求項1に記載の方法。
  3. 前記第1暗号化ステップの少なくとも1つのインプットは、共有シークレットに基づき、前記第2暗号化ステップの少なくとも1つのインプットは、前記第1暗号化ステップのアウトプットに基づき、前記シークレット共有ステップの少なくとも1つのインプットは、前記第2暗号化ステップのアウトプットに基づく、請求項2に記載の方法。
  4. 前記第2暗号化ステップの少なくとも1つのインプットは、共有シークレットに基づき、前記第1暗号化ステップの少なくとも1つのインプットは、前記第2暗号化ステップのアウトプットに基づき、前記シークレット共有ステップの少なくとも1つのインプットは、前記第1暗号化ステップのアウトプットに基づく、請求項2に記載の方法。
  5. 前記第1暗号化ステップの少なくとも1つのインプットは、前記シークレット共有ステップ又は前記第2暗号化ステップのアウトプットに基づく、請求項1に記載の方法。
  6. 前記シークレット共有ステップの少なくとも1つのインプットは、共有シークレットに基づき、前記第2暗号化ステップの少なくとも1つのインプットは、前記シークレット共有ステップのアウトプットに基づき、前記第1暗号化ステップの少なくとも1つのインプットは、前記第2暗号化ステップのアウトプットに基づく、請求項5に記載の方法。
  7. 前記第2暗号化ステップの少なくとも1つのインプットは、共有シークレットに基づき、前記シークレット共有ステップの少なくとも1つのインプットは、前記第2暗号化ステップのアウトプットに基づき、前記第1暗号化ステップの少なくとも1つのインプットは、前記シークレット共有ステップのアウトプットに基づく、請求項5に記載の方法。
  8. 前記第2暗号化ステップの少なくとも1つのインプットは、前記シークレット共有ステップ又は前記第1暗号化ステップのアウトプットに基づく、請求項1に記載の方法。
  9. 前記シークレット共有ステップの少なくとも1つのインプットは、共有シークレットに基づき、前記第1暗号化ステップの少なくとも1つのインプットは、前記シークレット共有ステップのアウトプットに基づき、前記第2暗号化ステップの少なくとも1つのインプットは、前記第1暗号化ステップのアウトプットに基づく、請求項8に記載の方法。
  10. 前記第1暗号化ステップの少なくとも1つのインプットは、共有シークレットに基づき、前記シークレット共有ステップの少なくとも1つのインプットは、前記第1暗号化ステップのアウトプットに基づき、前記第2暗号化ステップの少なくとも1つのインプットは、前記シークレット共有ステップのアウトプットに基づく、請求項8に記載の方法。
  11. 前記第2暗号化ステップはナップサックアルゴリズムを実行するステップを含む、請求項1~10のいずれか一項に記載の方法。
  12. 前記第2暗号化ステップはスターン数列に基づく前記数列を含む、請求項1~11のいずれか一項に記載の方法。
  13. 前記第2暗号化ステップは前記参加者に知られている項のべき乗を含む前記数列を含む、請求項1~12のいずれか一項に記載の方法。
  14. 前記項は、前記参加者の間で共有されるメッセージに基づく、請求項13に記載の方法。
  15. 前記第2暗号化ステップは超増加数列を含む、請求項1~14のいずれか一項に記載の方法。
  16. 前記第1マッピングステップは前記インプットに基づく座標を有する楕円曲線点を決定するステップを含む、請求項1~15のいずれか一項に記載の方法。
  17. 前記座標は、前記参加者に知られているされる量により乗算された前記インプットに基づく、請求項16に記載の方法。
  18. 前記第1暗号化ステップは、前記第1暗号化ステップへのインプットを表す整数により乗算された楕円曲線点を含む項を決定するステップを含む、請求項1~17のいずれか一項に記載の方法。
  19. 前記第1暗号化ステップは、短期鍵と参加者の公開鍵とに基づく項を決定するステップを含む、請求項1~18のいずれか一項に記載の方法。
  20. 少なくとも1人の参加者へ、短期鍵により乗算された前記楕円曲線暗号システムの生成元に基づく楕円曲線点と、前記短期鍵により乗算された参加者の前記公開鍵に基づく楕円曲線点と、を送信するステップ、を更に含む請求項19に記載の方法。
  21. 前記共有シークレットは、デジタル署名されたメッセージである、請求項1~20のいずれか一項に記載の方法。
  22. 前記デジタル署名されたメッセージは、ブロックチェーントランザクションである、請求項21に記載の方法。
  23. コンピュータにより実装されるシステムであって、
    プロセッサと、
    前記プロセッサによる実行の結果として、前記システムに請求項1~22のいずれか一項に記載のコンピュータにより実施される方法の任意の実施形態を実行させる実行可能命令を含むメモリと、
    を含むシステム。
  24. 実行可能命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムのプロセッサにより実行された結果として、少なくとも、前記コンピュータシステムに、請求項1~22のいずれか一項に記載の方法を実行させる、非一時的コンピュータ可読記憶媒体。
JP2021520548A 2018-10-27 2019-10-18 コンピュータにより実施される、デジタル署名されたデータのシェアを分配するシステム及び方法 Active JP7492508B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1817507.5 2018-10-27
GBGB1817507.5A GB201817507D0 (en) 2018-10-27 2018-10-27 Computer implemented system and method
PCT/IB2019/058902 WO2020084418A1 (en) 2018-10-27 2019-10-18 Computer implemented system and method for distributing shares of digitally signed data

Publications (2)

Publication Number Publication Date
JP2022504932A true JP2022504932A (ja) 2022-01-13
JP7492508B2 JP7492508B2 (ja) 2024-05-29

Family

ID=64560504

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021520548A Active JP7492508B2 (ja) 2018-10-27 2019-10-18 コンピュータにより実施される、デジタル署名されたデータのシェアを分配するシステム及び方法

Country Status (9)

Country Link
US (1) US11979492B2 (ja)
EP (2) EP3871365B1 (ja)
JP (1) JP7492508B2 (ja)
KR (1) KR20210082201A (ja)
CN (1) CN112930660A (ja)
GB (1) GB201817507D0 (ja)
SG (1) SG11202103412PA (ja)
TW (1) TWI807125B (ja)
WO (1) WO2020084418A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112532580B (zh) * 2020-10-23 2022-09-06 暨南大学 一种基于区块链及代理重加密的数据传输方法及系统
TWI748925B (zh) * 2021-06-09 2021-12-01 中華電信股份有限公司 端對端加密通訊的金鑰交換系統、方法及其電腦可讀媒介
GB2609906B (en) * 2021-08-09 2023-12-27 Nchain Licensing Ag Generating digital signature shares
GB2609908B (en) * 2021-08-09 2023-10-18 Nchain Licensing Ag Generating Digital signatures
TWI783804B (zh) * 2021-12-01 2022-11-11 英屬開曼群島商現代財富控股有限公司 基於線性整數秘密共享的共享單元生成系統及其方法
TWI787094B (zh) * 2022-03-08 2022-12-11 穎利科研國際事業有限公司 資安防護系統
CN115767515B (zh) * 2022-10-28 2023-07-14 广州声博士声学技术有限公司 一种无基站实时噪声大数据的加密共享方法及系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7239701B1 (en) 2000-05-02 2007-07-03 Murata Machinery Ltd. Key sharing method, secret key generating method, common key generating method and cryptographic communication method in ID-NIKS cryptosystem
JP2010200210A (ja) 2009-02-27 2010-09-09 Mitsubishi Electric Corp 鍵管理機器及び鍵利用システム及び鍵運用システム及び鍵管理方法及び鍵管理プログラム
US9922063B2 (en) 2009-12-29 2018-03-20 International Business Machines Corporation Secure storage of secret data in a dispersed storage network
JP6571927B2 (ja) 2014-11-13 2019-09-04 エヌ・ティ・ティ・コミュニケーションズ株式会社 データ保護装置、データ保護方法及びデータ保護プログラム
US9735958B2 (en) 2015-05-19 2017-08-15 Coinbase, Inc. Key ceremony of a security system forming part of a host computer for cryptographic transactions
US10411897B2 (en) 2017-02-17 2019-09-10 Factom, Inc. Secret sharing via blockchains
US10320565B2 (en) * 2017-02-28 2019-06-11 Certicom Corp. Generating an elliptic curve point in an elliptic curve cryptographic system
EP3511851A1 (en) * 2018-01-12 2019-07-17 Siemens Healthcare GmbH Storing and accessing medical datasets on the blockchain

Also Published As

Publication number Publication date
CN112930660A (zh) 2021-06-08
EP3871365A1 (en) 2021-09-01
TWI807125B (zh) 2023-07-01
KR20210082201A (ko) 2021-07-02
EP4376350A2 (en) 2024-05-29
EP3871365B1 (en) 2024-05-29
GB201817507D0 (en) 2018-12-12
US11979492B2 (en) 2024-05-07
US20220006615A1 (en) 2022-01-06
TW202029693A (zh) 2020-08-01
WO2020084418A1 (en) 2020-04-30
SG11202103412PA (en) 2021-05-28
JP7492508B2 (ja) 2024-05-29

Similar Documents

Publication Publication Date Title
US11936774B2 (en) Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys
JP7492508B2 (ja) コンピュータにより実施される、デジタル署名されたデータのシェアを分配するシステム及び方法
CN108352015B (zh) 用于基于区块链的系统结合钱包管理系统的安全多方防遗失存储和加密密钥转移
TWI821248B (zh) 用以移轉數位資產支配權之電腦實施方法及系統
TWI813616B (zh) 用以獲取數位簽署資料之電腦實行方法及系統
JP2021523620A (ja) 秘密を通信する方法及びシステム
KR20210063378A (ko) 공통 비밀을 공유하는 컴퓨터 구현 시스템 및 방법
TW202232913A (zh) 共享金鑰產生技術
Tanwar Basics of cryptographic primitives for blockchain development
CN117837127A (zh) 生成数字签名
CN118160275A (zh) 阈值签名方案

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220920

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230922

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231003

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231220

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240319

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240416

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240517