人気のタグ
おすすめのサイト
企業ニュース

ブロックチェーンを実現する暗号技術とは?

2019.03.13

データの改ざんを検知できる「ハッシュ関数」

 ハッシュ関数(一方向ハッシュ関数)は、データを入力すると、必ず同じハッシュ値を出力する関数です。Excelの関数や数学の1次関数と異なるのは、出力されたハッシュ値から元のデータを復元するどころか、だいたいのデータを想像することもできないところです。ハッシュ関数に入力する元データが1文字でも異なると、全く違うハッシュ値が出力されます。また、ハッシュ関数はデータの長さに関わらず、一定の長さのハッシュ値を出力します。

 ハッシュ関数を利用すると、元データが少しでも変更されれば、異なるハッシュ値が出てくるため、ハッシュ値があらかじめ与えられていれば、元データが改ざんされていないかどうかがわかります。

 ハッシュ値の桁数は、ハッシュ関数が新しくなるたびに長くなる傾向にありますが、RIPEMD-160はSHA-256よりも短いハッシュ値で、同程度の強度を実現しています。SHA1は2005年にGoogleが脆弱性を発見し、比較的容易に攻撃できることが2017年に判明したため、主なブラウザでは使用を中止しています。ビットコインなど仮想通貨には、RIMEMD-160やSHA-256、あるいはさらに強度が高いSHA3-256などが使われています。

 ハッシュ関数で出力される値は一定の長さなので、異なる値を入力して同じ値が出力されることもあります。これがハッシュの衝突です。さまざまなハッシュ関数が開発されているのは、衝突が発生しにくい=対衝突性の高いハッシュ関数が求められてきたからです。

ウォレットアドレス出力に不可欠な「Base64」と「Base58」

 Base64とBase58は、いずれもコンピューターが扱う2進法のデータ(バイナリデータ)を文字列に変換するための変換方式(エンコード)です。Base64では、データを「0〜9」「A〜Z」「a〜z」「+」「/」の64文字のみを使って表します。Base64はインターネット黎明期からメールのエンコードなどに使われて来ました。

 Base58は、Base64の使う64文字から「0(数字のゼロ)」「I(アルファベットiの大文字)」「O(アルファベットoの大文字)」「l(アルファベットLの小文字)」「+」「/」を除いた58文字で構成されています。これは、人が目で見て入力するとき見間違いを防ぐためです。

 Base58で使用できる文字は、ビットコインでは「123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz」と表記されます。なお、Base58を使用するシステムによっては、使用できる文字の記述順が異なることがあります。

ハッシュ関数とブロックチェーン

 ここでようやく、ブロックチェーンの各ブロックについて解説することができます。

 まず各ブロックに含まれるデータは、「トランザクション」「前のブロックのハッシュ値」「ナンス(number used once)」です。ナンスは、上記のデータ全体のハッシュ値が一定の数値以下となるような値の数値です。

 次にウォレットアドレスの生成方法について、ビットコインを例として解説します。

 まず乱数が生成され、その乱数を元に秘密鍵と公開鍵が生成されます。公開鍵のハッシュ値を求めて、以下の形式に並べます。

 プレフィックスはウォレットアドレスの種別を表しています。ビットコインを所有するためのプレフィックスは「0x00」です。チェックサムは、送られてきたデータが正しいか確認するための数値です。これも公開鍵にハッシュ関数を適用して算出されています。

 最後に全体をBase58エンコードすることで普段目にするウォレットアドレスが出力されます。

 なおウォレットアドレスの生成にはインターネット接続は不要で、オフラインで実行することができます。

取材・文/久我吉史
現役の金融ビジネスパーソンでもある金融ライター。ネット証券やネット銀行などを渡り歩き、ITから法人営業まで何でもこなす。最近は金融ビジネスをコーポレート(法務・会計)目線で作り上げるような毎日を送っている。
作図/稲岡聡平

新型コロナウイルス対策、在宅ライフを改善するヒントはこちら

@DIMEのSNSアカウントをフォローしよう!

DIME最新号

最新号
2020年6月16日(火) 発売

DIME最新号の特別付録は「デジタル調理温度計」!特集は「安くてイイもの」&「新しい働き方」&「マイナポイント」!

人気のタグ

おすすめのサイト

ページトップへ

ABJマークは、この電子書店・電子書籍配信サービスが、著作権者からコンテンツ使用許諾を得た正規版配信サービスであることを示す登録商標(登録番号 10401024号)です。詳しくは[ABJマーク]または[電子出版制作・流通協議会]で検索してください。