クレイグ・ライトがビットコインの鍵検証プロセスを明らかに

クレイグ・ライトがビットコインの鍵検証プロセスを明らかに

「ジャン=ポール・サルトルと契約することは、ノーベル賞受賞者のジャン=ポール・サルトルと契約することとは意味が異なります。

——ジャン=ポール・サルトル、1964年

何年も前にこの文章を読んだのを覚えていますが、それ以来ずっと不快な気持ちになっています。しかし、何年も経って、この数年間の浮き沈みを経験した後、私はこの文章を思い出すと安らぎを感じます。クレイグ・ライトの署名を使用することは、クレイグ・ライトまたはサトシ・ナカモトを使用して署名することとは意味が異なります。

これが真実だとは分かっていますが、心の底ではこうなってほしくないのです。

IFdyaWdodCwgaXQgaXMgbm90IHRoZSBzYW1lIGFzIGlmIEkgc2lnbiBDcmFpZyBXcmlnaHQsIFNh

dG9zaGkuCgo=

何時間も画面を見つめていましたが、ビットコインを最初からサポートしてくれた多くの人々に対する感謝の気持ちを表現する言葉がまだ見つかりません。一人一人挙げるには多すぎるほどです。あなたは、何の成果も得られないかもしれないこのオープンソース プロジェクトに、若さと実績を捧げ、長年にわたり人間関係や休息時間を犠牲にし、今もなお懸命に取り組んでいます。このコミュニティの情熱、知恵、そして忍耐が、私の貢献を引き継ぎ、育み、受け入れ、そして実現させてきました。あなたはこの世界に素晴らしい贈り物をもたらしました。そのことに私は深く感謝しています。

心配しないでください。私は長年何もしていなかったわけではありません。それ以来、私はサトシのイメージから距離を置き、研究に全力を注いできました。私は沈黙を守りましたが、ビットコインのイベントを見逃すことはありませんでした。私は特別なグループと協力し、適切な時期に結果を共有できることを楽しみにしています。

サトシ・ナカモトは死んだ。

しかし、これはほんの始まりに過ぎません。

キー検証

この投稿の残りの部分では、キー検証プロセスについて説明します。

OpenSSL で正しい楕円曲線パラメータを使用してメッセージに正常に署名および検証できるようにするには、まず secp256k1 曲線が正常にロードされていることを確認する必要があります。これは Centos Linux ではデフォルトではありません。ここでは詳細には触れません。 RPMForge はパッチを適用したバイナリを維持していることを指摘しておきます。私のように CentOS を使用している場合は、OpenSSL Web サイトからソースとパッチをダウンロードすることをお勧めします。

読者は以下のウェブサイトを読むことをお勧めします。

• https://wiki.openssl.org/index.php/Command_Line_Elliptic_Curve_Operations

•http://www.secg.org/sec2-v2.pdf

• https://www.openssl.org/

• https://www.bfccomputing.com/bitcoin-and-curve-secp256k1-on-fedora/

最初のステージではハッシュ関数について説明します。下の画像では、「sn7-message.txt」というファイルが表示されています。

上の画像に示されている一連の 16 進数値は、入力値の SHA256 ハッシュを表します。優れたハッシュ アルゴリズムでは、事前に決定できない値の長いリストが生成されます。情報量とすべての可能な順列は、任意のハッシュ関数から出力できるシミュレーションの範囲を常に超えますが、衝突は常に存在します。現在の最先端技術を考えると、同じ出力値との衝突を生成する入力値のセットを見つけることは現実的ではありません。これが、SHA256 などのハッシュ関数の有用性とセキュリティを保証するものです。

SHA256 アルゴリズムによって提供される情報の最大量は (2^128−1) ビットであり、出力値として 32 バイトまたは 256 ビットを返します。 SHA256 ハッシュ関数に入力できる情報量は (2^128−1) です。可能な入力値は、0 から、上記で示したように受け入れ可能な最大範囲までです。

衝突の可能性のある範囲を決定する際には、組み合わせ論を通じて順列を決定する二項係数 ( n ) を使用します。

衝突検出に関係する数学については、後の記事でさらに詳しく説明します。各ハッシュには膨大な数の衝突値がありますが、2 つの衝突値を見つけたり事前に決定したりする確率は極めて小さいことに注意する必要があります。

ハッシュ

ハッシュ関数は比較的単純なので、手作業で実行できます。もちろん、これによりハッシュ関数を逆転させる複雑さがわかりにくくなります。優れたハッシュ関数は使い方が簡単ですが、逆ハッシュするのは簡単ではありません。次の図は、Linux ハッシュ プログラム「sha256sum」の動作を示しています。プログラムは、固定された入力セットに対応する特定の値を返します。

上の図では、いくつかのファイルに対してプログラムを実行しており、そのうちの 1 つは OpenSSL 署名に使用されています。この特別なファイルは Sartre と呼ばれます。文書の内容は以下の通りです。

デジタル署名アルゴリズムはメッセージのハッシュに署名します。情報に署名することも可能ですが、ハッシュに署名することで情報の整合性を確保し、情報が変更されたかどうかを確認できます。スペースまたはピリオドを 1 つでも変更すると、ハッシュは元の戻り値とは大きく異なります。

この値を書き込んでファイルに保存するには、Linux コマンド xxd を使用します。これにより、ASCII 値が 16 進バイナリ ファイルに書き込まれます。次のコマンドを入力すると、「file.name」というファイルに連続した 0 を書き込むことができます。

 '000...000' をエコーし​​ます | xxd -r -p > ファイル名

これを行うには、ハッシュ アルゴリズムからの出力として受信した文字列を 16 進数でエンコードされたファイルに変換します。この情報に署名して検証することができます。上記の echo コマンドに追加した文字列を確認することが重要です。 1 桁でも間違って入力すると、メッセージを認証できません。

公開鍵

デジタル署名されたメッセージを検証するには、次のようないくつかの条件が必要です。

•アルゴリズム

• 検証したい署名者の公開鍵

•署名付きメッセージ

• 文書にデジタル署名する

最初の部分、必要なアルゴリズムは、secp256k1 曲線パッチがマージされた OpenSSL をインストールすることによって取得できます。上記の手順にはハッシュの作成も含まれます。次のセクションでは、ECDSA 公開キーの使用について説明します。

この手順では、OpenSSL の PEM ファイルに保存されている公開鍵と秘密鍵のペアを使用します。 David Derosa は、 OpenSSL の楕円曲線キーペアの作成について説明する素晴らしいページを作成しました。上の画像では、メッセージの署名に使用されるキー ペアと密接に関連する特定の PEM 形式の公開キーを確認できます。 David のページを詳しく読むと、Bitcoin トランザクションで使用される秘密鍵を PEM ファイルとしてフォーマットする方法の詳細がすべてわかります。このページでは、既存の秘密鍵を OpenSSL にインポートする方法ではなく、新しい秘密鍵の作成について詳しく説明します。この追加プロセスを紹介し、楕円曲線暗号に基づく既存の秘密鍵ペアを ASN.1 形式にインポートして OpenSSL で直接使用できるようにする方法を説明します。

公開鍵をエクスポートするコマンドは次のとおりです。

openssl ec -in sn-pub.pem -pubin -text -noout

0411db93e1dcdb8a016b49840f8c53

bc1eb68a382e97b1482ecad7b148a6

909a5cb2e0eaddfb84ccf9744464f8

2e160bfa9b8b64f9d4c03f999b8643

f656b412a3

これらの戻り文字列は、検証とアドレス指定のために Bitcoin 署名機能を含むプログラムによって使用される公開キー値です。

Casascius は、公開鍵をデコードして関連する Bitcoin アドレスを返すのに役立つツールを開発しました。

サイン

OpenSSL を使用してメッセージにデジタル署名するプロセスでは、メッセージに署名する側が秘密鍵にアクセスできる必要があります。最近、私はビットコインアドレスに関連付けられた 10 個の秘密鍵を使用しました。これらはすべて SPV ウォレット Electrum にロードされており、そこでは私が選択した情報ではなく、他の誰かが選択した情報に署名します。場合によっては、Electrum の新しいバージョンをダウンロードすることで、プロセスの整合性を確保しました。

私が使用しているエレクトラムのバージョンはCentos Linux v7で、Pythonで実行しています。

署名検証

最後のステップは署名です。次のコマンドを使用して、base64 署名を OpenSSL に読み込むことができるファイル形式に変換します。

>> base64 – 署名をデコード > sig.asn1 & openssl dgst -verify sn-pub.pem -signature sig.asn1 sn7-message.txt

検証する署名ファイルには、次のデータが含まれています。

————————- 署名ファイル ————————-

MEUCIQDBKn1Uly8m0UyzETObUSL4wYdBfd4ejvtoQfVcNCIK4AIgZmMsXNQWHvo6KDd2Tu6euEl1

3VTC3ihl6XUlhcU+fM4=

————————- 署名終了 ————————–

下の図に示すように、署名ファイルを表示します。ファイルを保存するときに、Vim などの編集プログラムを使用して、エンコードされた署名を切り取って貼り付け、保存したファイルに挿入することができます。

いくつかのスクリプト

プログラムを簡素化するために、 2 つのシェル スクリプト ファイルを含めました。これらのスクリプトのバリエーションについては、Enrico Zimuel などのサイトを参照してください。このサイトは楕円曲線暗号に特化しているわけではありませんが、Bitcoin ベースのシステムで使用するためにコードを更新することは難しくありません。

サイン

以下に署名スクリプトを記載しましたので、ご都合の良いときにテストしてください。このスクリプトを使用するには、入力に変数 <file> を含めます。この変数は、選択した <private_key> を使用して署名するファイルを表すために使用できます。このコマンドでは、<private_key> 変数は、メッセージの署名に使用される秘密キーを含むファイルを表します。

 EcDSA.Sign.sh <ファイル> <秘密鍵>

確認する

次のスクリプトを使用して、同様の手順で作成した署名を検証できます。

 EcDSA.Verify.sh <ファイル> <署名> <公開鍵>

このコマンド ラインでは、変数 <file> は検証するファイルの名前を表します。変数 <signature> は、署名 (Base64 を使用してエンコード) を保存するファイルを表します。最後の変数 <public_key> には、PEM 形式の公開鍵が含まれます。これらのファイルは一緒に使用することができ、すべてが有効かつ正しい場合、デジタル署名を正常に検証できます。

フォーマットを選択

Bitcoin で使用される署名形式は DER エンコーディングに基づいています。元のコードに適用された他の方法は、過去 7 年間で劇的に変化しました。署名やその他の情報に DER エンコーディングを選択したのは、互換性のないシステム間で情報を共有できるようにしたいという要望に基づいています。これは情報を保存する最も効率的な方法ではありませんが、異なるシステム間での効率的な通信が可能になります。

多くのオープンソース プロジェクトと同様に、OpenSSL は多くの領域でドキュメントが不十分です。ビットコインのアドレス指定とキーペアの保存はより効率的に行うことができ、これが実現されるようにコードが更新されました。

安全性は、絶対的なものではなく、常にリスクに応じて変化します。


<<:  OKCoin CEO徐明星氏との独占インタビュー: ブロックチェーン技術は金融分野の「ホットな商品」

>>:  謎に包まれたサトシ・ナカモト:The Paperで最も人気、Caixinで最も人気、そしてInterfaceで最も影響力のある人物

推薦する

「マイニングコイン同時放送」第9話の詳細レビュー: マイナーが通貨ベースのマイニングマインドセットを確立すべき理由

張元:マイナー仲間やコイン仲間の皆さん、こんにちは。私はWabi.comの編集長、張元です。今回の「...

500 Lottery Networkは、ビットコインマイニングマシン5,900台を購入すると発表した。

500宝くじは2月2日、ビットコインマイニングマシン5,900台を総額約5,520万人民元(約85...

中国で初の仮想マイニングマシン暴走事件が発生した。暴走波からどれくらい離れているのでしょうか?

P2Pを経験した人なら誰でも、2016年にP2Pの暴走の波があったことを知っています。大小さまざま...

次の兆ドルトラックの詳細な分析:ゼロ知識証明と分散コンピューティングの組み合わせ

より多くの実際のビジネス シナリオを Web3 に接続したい場合は、ゼロ知識証明と分散コンピューティ...

VisaとChainがブロックチェーン送金ネットワークの構築で提携

激怒論評:国際的に伝統的なカード決済サービスを提供するVisaは、ブロックチェーン技術の新興企業Ch...

大したことだ!デロイトはブロックチェーン企業5社と協力し、20のブロックチェーンプロトタイプを開発したと発表

世界最大級の会計事務所デロイトは、保険、人材管理、国際決済などサービス業界向けの幅広いブロックチェー...

2年間の低迷の後、ビットコインのスタートアップは回復しつつある

Yu'e Baoにお金を預けるあなたと違って、ハイリスクな投資を好む人もいます。株式に加え...

ペンシルバニア大学:ブロックチェーンがセキュリティと規制の問題を克服すれば、2017年に実装され商用化されるだろう

世界トップクラスの私立研究大学であり、アイビーリーグの有名校8校のうちの1つであるペンシルベニア大学...

IEEEがオックスフォード大学でブロックチェーン関連のクラウドコンピューティング会議を開催

コンピューター専門家のための最大かつ最古の組織は明日、モバイル クラウド コンピューティングの将来に...

アーサー・ヘイズ:我々はまだ強気相場のサイクルにあり、BTCはトランプ政権の任期中に100万ドルに達するだろう

多くの読者は、トランプ米大統領の政権の政策に反応する際に、KISS原則を忘れている。トランプ氏のメデ...

無料の AI ワンクリック コピーライティング ビデオと AI 画像ツールの使用チュートリアル

短編ビデオコンテンツ制作が爆発的に増加している今日の時代において、強力なビデオ編集ソフトウェアである...

イーサリアムは短期的に史上最高値を突破、ビットコインは54,000ドルまで回復

暗号通貨市場全体は、過去 24 時間にわたって上昇傾向にあります。時価総額上位20の暗号通貨のうち1...

ビットディアグループCEO孔玲輝氏:デジタル資産業界は史上最高の時期を迎えている

4月21日、北京で「第2回BitDeer421洪水フェスティバルおよび鉱業生態会議」が開催されました...