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

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

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

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

推薦する

ビットコインが4,900ドルの新高値を突破し、ETFへの期待が再燃

概要: SEC によるビットコイン ETF の承認により期待が再燃し、ビットコインは上昇し、本日 4...

ブロックチェーンは中国の金融環境をどのように変えるのでしょうか?

現在、ブロックチェーン分野における中国の主な活動は、ブロックチェーンアプリケーションの研究開発に重点...

HITC、CPU サーバー、グラフィック カード マイナーでマイニングできます。

合計時間: 60総数量: 75,000,000採掘前 4% 34、ブロックごとの開始報酬公式サイトは...

ビットコインと人民元対米ドルの為替レートなどの経済指標との間には関係があるのでしょうか?

著者: huobi住宅価格の上昇、人民元の下落、米ドル指数の上昇、そして米国の選挙は、ここ数週間の経...

蒋卓児:鉱業は最も影響を受けにくい産業の一つ

鉱山のコスト構造において、人件費は非常に小さいです。延長された国家法定休日(および2月8日に延期され...

もっと悪いことが起こってますよ! 4万人が清算され、ネットワーク全体が98億清算され、米国財務長官が再びビットコインを攻撃

新華ファイナンスによると、現地時間1月25日、ジャネット・イエレン氏が第78代米国財務長官に就任し、...

女性の株式の神:ビットコイン採掘におけるグリーンエネルギーの利用促進は太陽光発電産業に利益をもたらす可能性がある

ウォール街のファンドマネージャー、キャシー・ウッド氏は、コインデスクが木曜日に主催した仮想通貨カンフ...

Huobi.comのLi Lin氏:ビットコインは5年以内に世界中で広く受け入れられるようになる

昨年、世界最大のビットコイン取引業者であったマウントゴックスが破綻した後、同社のCEOであるマーク・...

Tether の将来: 次は何?

テザー(USDT)は2014年の発売以来、ステーブルコイン市場を支配しており、世界で最も広く使用され...

ウォール街は特にブロックチェーンを好んでいます。銀行業界の将来はどうなるのでしょうか?

クレイジーな解説: 歴史的に伝統的な経済は新興技術を抑制する傾向がありましたが、資本主義の最も基本的...

呉暁玲:インターネット金融監督は「金融活動」と「金融サービス活動」を区別すべき

呉暁玲:インターネット金融監督は「金融活動」と「金融サービス活動」を区別すべき_第一金融日報「『イン...

解釈:Coinshares 2019年最新グローバルマイニング調査レポート

第3号: Coinshares 2019年最新グローバルマイニング調査レポートテキストの長さ: 34...

巨大なクジラ、グレースケールは、この時はハニー、あの時は*****かもしれない

原題:「巨大クジラグレースケールの陰謀」北京時間12月3日夜、Grayscale Trustはオンラ...

信者の叫び: 彼らはビットコインを129回殺そうとしましたが、結果はどうでしたか?

ビットコインにとって、おそらく、「死ななければ強くなる」というのは真実なのでしょう。ビットコインは2...

相互信頼を実現する信頼システムを再構築し、ブロックチェーン技術がインターネット金融を「支持」

中国証券網の総合レポートによると、中国インターネット金融協会がブロックチェーン研究ワーキンググループ...