【イーサリアム】 公開鍵暗号について調べてみた。

仮想通貨の1つであるイーサリアムでは、公開鍵暗号という技術が使われています。

公開鍵暗号では、秘密鍵と公開鍵を作ります。公開鍵は秘密鍵から作ることができ、秘密鍵が分かれば、公開鍵は簡単に作れます。

公開鍵は「銀行口座番号」で、秘密鍵は「暗証番号」と例えることができます。

イーサリアムでは、実際に取引を行う外部所有アカウント(EOA)は、秘密鍵を基にして作られます。

また、トランザクション(取引など)に対するデジタル署名は秘密鍵によって行われます。

デジタル署名については、以前にまとめました。
【仮想通貨】デジタル署名について調べてみた【ブロックチェーン】

秘密鍵生成方法

秘密鍵は、簡単にいうと「ランダムに抽出された数字」です。イーサリアムでは、長さが 256 ビットの数字が秘密鍵として使われます。

手順としては、string 型の十分に長いランダムなビット列を、Keccak-256 や SHA-256 のハッシュ関数を使って 256 ビットにしたものです。得られた数値が、ある範囲内に収まっていれば適切な秘密鍵を得られたことになります。もし、範囲外の場合は、条件を満たすまで繰り返します。

公開鍵生成方法

公開鍵は、秘密鍵から生成します。ただし、公開鍵は一般に公開されてしまう情報なので、公開鍵から秘密鍵を推測できないようにしなければなりません。

秘密鍵から公開鍵を一方向で作成するために、楕円曲線暗号という技術を用います。

イーサリアムでは、「Secp256k1」という名前で定義された固有の楕円曲線と定数のセットを用いており、ビットコインと同じ楕円曲線になります。

楕円曲線の式は以下のようになります。

$$y^2=x^3+ax+b mod p$$

「Secp256k1」では、それぞれ「a」「b」「p」の値が決まっています。

以下の手順で公開鍵を作成していきます。

  1. 楕円曲線上の基準となる点 G(x, y)を決める。
  2. G を基に楕円曲線上での足し算を行い、楕円曲線上の点2G を決める。
  3. 2.を秘密鍵(256ビットの数字)の回数分だけ繰り返し、楕円曲線上に n * G の点を得る。
  4. この n * G をして得られた点(x, y)を公開鍵とする。

公開鍵として得られた点(xy座標値)は、イーサリアムでは以下のように座標値を連結させてシリアル化します。

04 + x座標(32バイト:16進数で64文字)+ y座標(32バイト:16進数で64文字)

実際に用いられているイーサリアムの公開鍵は以下のようになります。

イーサリアムアドレス生成方法

イーサリアムアドレスは、ハッシュ関数(Keccak-256)を使って、公開鍵から作成されます。

ハッシュ関数は公開鍵の作成だけでなく、デジタル署名などイーサリアムのシステム全体で使用されています。

ハッシュ関数(Keccak-256)については以前にまとめました。

【仮想通貨】ハッシュ関数(SHA-256)について調べてみた【ブロックチェーン】

【イーサリアム】 ハッシュ関数(Keccak-256)について調べてみた。

イーサリアムアドレス作成の手順としては、まず、公開鍵に対して、ハッシュ関数(Keccak-256)を用いてハッシュ値を計算します。

次に、ハッシュ値の最後の 20バイト(最下位バイト)を取得したものに対して、16進数エンコードであることを示すため、先頭に「0x」を付けます。

具体的には以下のようになります。

公開鍵

公開鍵のハッシュ値

ハッシュ値の下位20バイト

先頭に「0x」を付けたもの

参考書籍

関連記事

【仮想通貨】デジタル署名について調べてみた【ブロックチェーン】

ビットコインなどの仮想通貨のブロックチェーンで用いられているデジタル署名(Digital s

記事を読む

【イーサリアム】日本円のチャートで比較する方法【イーサリアム・クラシック】

イーサリアム(Ethereum)は、2020年時点で、時価総額がビットコインに次ぐ第2位の仮

記事を読む

【仮想通貨】トランザクションについて調べてみた【ブロックチェーン】

ビットコインなどの仮想通貨では、取引をトランザクションで記述されます。 そのトランザク

記事を読む

【ビットコイン】 アドレス生成方法について調べてみた。

仮想通貨の1つであるビットコインを送金するときは、送付側と受け手側のそれぞれのアドレスが必要

記事を読む

初心者でも分かるビットコインの仕組みについてまとめてみた。

ビットコインは,時価総額が1位で最も有名な仮想通貨です. 仮想通貨の時価総額の見方について

記事を読む

【仮想通貨】時価総額のランキングを円(JPY)で見る方法。

ビットコインやイーサリアムなどの仮想通貨の時価総額のランキングを 円(JPY)で見れる分かり

記事を読む

【ビットコイン】1ブロックに含まれる情報について調べてみた【マークル木】

ビットコインなどの仮想通貨では、トランザクション(取引)の束を「ブロック」という単位で扱い、

記事を読む

【イーサリアム】 ホリエモンが2014年当時にイーサリアムの可能性に気付いていた!?

ホリエモンこと堀江氏が、2014年の自身のブログで「イーサリアムやべぇ。。。」というタイトル

記事を読む

【仮想通貨】新しいトランザクション(取引)の追加方法【ブロックチェーン】

仮想通貨で用いられているブロックチェーン技術において、新しいトランザクション(取引)をどのよ

記事を読む

【仮想通貨】デジタル署名と公開鍵暗号の違いは!?

ビットコインなどの仮想通貨のブロックチェーン技術で用いられている「デジタル署名」「公開鍵暗号

記事を読む

【LaTex】目次を作成し、ページ番号をローマ数字にする方法。

LaTexで論文やレポートを書いていて、目次・図目次・表目次を自動的に

【MusicBee】マイナーなアーティストのCD情報を自動で取得する方法。

普段、MusicBee というソフトを使ってCDをPC内に取り込んでい

【m.o.v.e】 トランス系の曲 Best5をまとめてみた。

m.o.v.e といえば、頭文字Dの主題歌の曲などで ユーロビート系の

初心者でも分かるビットコインの仕組みについてまとめてみた。

ビットコインは,時価総額が1位で最も有名な仮想通貨です. 仮

【LaTeX】 見出し付き箇条書きを右にずらす方法【数式の変数説明】

今回は、LaTeX で見出し付き箇条書きの全体の位置を右にずらす方法に

→もっと見る

PAGE TOP ↑