SHA-256とは

カテゴリ glossary

SHA-256とは、ブロックチェーンで用いられるハッシュ関数のひとつです。

Secure Hash Algorithm 256-bitの略です。

 

ハッシュ関数とは、ある長さのデータから固定長の出力データを作成して返すという性質を持っています。

また、あるデータを受け取ると一方向にのみ変換するという性質も持っています。ハッシュ化したデータをハッシュ化する前の元データに戻すという事は基本的にできません。

 

つまり、受け取ったデータからは必ず同じデータが得られるということです。

 

SHA-256は暗号学的なハッシュ関数として設計されているため、受け取ったあるデータをもとにして、同じハッシュ値になる別のデータを探すことが難しい設定がなされています。

 

SHAのアルゴリズムでは、初期のハッシュ値がすでに決まっています。この初期のハッシュ値を変化させたい時には入力されたデータを情報として使います。

 

SHA-256の場合、変化させるための情報として使う入力データは64バイトごとに分割されます。この分割データをメッセージブロックと呼びます。

つまり入力されたデータが64バイトを超えると、複数のメッセージブロックが生成されるということになります。

 

入力されたデータ、もしくは複数のメッセージブロックのうち最初のメッセージブロックを使って初期ハッシュを変化させます。

この変化によって新しいハッシュ値が算出されます。

 

新しいハッシュ値は次のメッセージブロックを使うことで変化し、さらに新しいハッシュ値が得られます。このハッシュ値も次のメッセージブロックによって変化し新しいハッシュ値を得ます。

こうして次々と処理が進んで、最後のメッセージブロックによって変化し得られたハッシュ値が最終結果となります。

 

64バイトごとに分割した入力データ、つまりメッセージブロックを使ってハッシュ値を変化させていくことで、入力データ量の大小にかかわらず、同じビット長の数値が算出されるようになっています。

 

SHA-256はNSA(米国家安全保障局)が考案したもので、連邦情報処理標準の一つであるSHA-2の規格の一部として定義付けされています。SHA-256以外にSHA-224やSHA-384、SHA-512なども定義付けされています。

 

最長のSHA-512がもっとも安全性が高いと言われており、SHA-256は実装のしやすさが評価されています。

計算速度や安全性のバランスもすぐれていることから、SHA-2の中のハッシュ値としてはもっとも広範囲に普及していると言われています。

投稿者

Liquid編集部(基礎)