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

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

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

——ジャン=ポール・サルトル、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で最も影響力のある人物

推薦する

ロシアとウクライナの紛争の状況は危機的である。暗号通貨市場にはどのような潜在的な機会があるのでしょうか?

ロシアが2月24日にウクライナに軍を派遣して以来、米国と欧州連合はロシア中央銀行、プーチン大統領とそ...

鉱夫が知っておくべきいくつかの機能

Easy Miner は「ユーザーにとっての価値を創造します」。より高いマイニング効率を実現するだ...

トランプ2.0時代の到来:将来の市場におけるメリットとは?すべての当事者はどれくらい見ているのでしょうか?

11月6日、トランプ氏が米国大統領選に勝利し、ホワイトハウスに復帰した。これはトランプ2.0時代が...

IBMがワシントン・ブロックチェーン・デジタル商工会議所に加盟

Rage Review : IBM は、ブロックチェーン業界の規制枠組みの再構築を支援することを目的...

ブロックチェーンは広告の未来にどのような革命を起こすのか

広告業界の弊害は長い間存在してきた。デジタル時代において、広告業界の問題は利益の不均等な分配に集中し...

【IPFSウィークリーレポート-86】IPFSピンニングサミットの時間が確定しました!

オリジナルの英語版 IPFS ウィークリーニュースレターを購読する: https://mailchi...

コインゾーントレンド: 今週のビッグデータに基づくビットコインの価格動向 (2017-06-21)

通貨価格は再び20,000を突破し、短期トレンドは強気1. 市場動向<br/>今日は20...

BTCはより良い未来を創造する唯一のツールです

SquareとTwitterのCEO、ジャック・ドーシーは、人権財団のアレックス・グラッドスタイン氏...

ブラックロック幹部:ビットコインETFはTradFiと暗号通貨の統合を推進

世界最大の資産運用会社の最高幹部は、米国のスポットビットコインETFが伝統的な金融と暗号通貨のより広...

UBS: 暗号通貨は決して本物のお金にはなれない、致命的な欠陥は「二重支払い」だ

最近、UBSのチーフエコノミスト、ポール・ドノバン氏はビデオの中で、仮想通貨に内在する「根本的な欠陥...

1000ポイントのコールバックが迫っている

ビットコインニュース過去2日間のビットコインのパフォーマンスは劇的と言えるでしょう。終値は横ばいまた...

ドメイン名投資の専門家が教える: ブロックチェーンのスタートアップ企業向けのドメイン名の選び方とは?

技術的な観点から見ると、ドメイン名はインターネット製品のハウスアドレスであり、単なるアドレス解決です...

AMC CEO: AMCはETH、LTC、BCHの支払いを受け入れる予定

9月16日、AMCのCEOアダム・アーロン氏は、AMCシアターズが2021年末までにオンラインチケッ...

ビットコインでタクシーに乗る、すぐに流行になる

観光業は世界最大の産業の一つで、2014年には7兆6000億ドル以上の価値があると言われています。人...

モルガン・スタンレーとナショナル・オーストラリア銀行がR3から撤退

レイジ解説:ロイター通信は、サンタンデールとゴールドマン・サックスに続き、モルガン・スタンレーとナシ...