SHA-3
ハッシュ関数だよ
SHA-2の後釜だよ
SHA-2と中身のつながりはないよ
もともとは「Keccak」という名前だよ
「SHA」の部分は「Secure Hash Algorithm」の略だよ
簡単に書くよ
SHA-3(読:エスエィチエー3)とは
入力されたデータをもとにして作った適当な値を返してくれる関数
(処理のまとまり)(ハッシュ関数)のひとつ
であり
もともとは別の名前のハッシュ関数だけど「SHA-2」と呼ばれるハッシュ関数の後釜として採用されたから「SHA-3」という名前になったやつ
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・関数
・ハッシュ関数
・SHA-1
・SHA-2
について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
関数は「何かを入れると何かをやって何かを返してくれる、処理のまとまり」です。
一般的には、入力を受けて処理をやり、その結果として出力があります。
ついでなので書いておくと、関数に入れる値は「引数(ヒキスウ)」と言います。
関数から出てくる値は「戻り値」です。
ちょっと汚い話で恐縮ですが、人間は、ご飯を食べて、ウンチを出します。
人間が関数だと考えてください。
ご飯に相当するものが引数です。
ウンチに相当するものが戻り値になります。
ハッシュ関数は「入力に対応する適当な値(適当に見える値)を返してくれる関数」です。
例えば、ハッシュ関数に「愛媛みかん」を入れると「3」が返ってくるとしましょう。
同じように「青森りんご」を入れると「4」が返ってきます。
「栃木苺」を入れた場合は「5」が返ってきます。
ハッシュ関数は同じ物を入れれば必ず同じ値が返ってきます。
「愛媛みかん」を入れた場合に返ってくるのは、必ず「3」です。
何回入れても「3」が返ってきます。
「4」が返ってくることは ありません。
ハッシュ関数には
1.適当な値が返ってくる
2.同じ入力に対しては同じ値が返ってくる
という特徴があります。
※話を単純化するために「適当な値」という表現を使っていますが、実際には適当では ありません。入力されたデータを「特定のルールに沿って」ぐちゃぐちゃにした値が返ってきます。
さて、このハッシュ関数ですが、世の中に1つしかないわけでは ありません。
いろいろな種類のハッシュ関数があります。
例えば、返してくれる値(適当な値)の作り方が違ったりですね。
あるいは、返してくれる値の桁数が違ったりですね。
一口に「ハッシュ関数」と言っても、いくつかの種類があるのです。
そんな「いくつかの種類」のひとつに「SHA-1」という名前のハッシュ関数があります。
SHA-1は
何か入れると長さが160ビットの適当な値を返してくれるハッシュ関数
です。
ちなみに「SHA」の部分は「Secure Hash Algorithm(セキュア・ハッシュ・アルゴリズム)」の省略ね。
secure(セキュア)の意味は「安全な」です。
hash(ハッシュ)はハッシュ関数の「ハッシュ」です。
algorithm(アルゴリズム)はカタカナで「アルゴリズム」で伝わりますかね。
単純にくっつけると
安全なハッシュアルゴリズム
となります。
さらに「SHA-2」と呼ばれるハッシュ関数もあります。
SHA-2はSHA-1をパワーアップさせたハッシュ関数です。
SHA-1の後継者がSHA-2だと思ってください。
以上を踏まえて
SHA-2の後釜として採用されたハッシュ関数
が「SHA-3」です。
SHA-3は、もともとは「Keccak」という名前のハッシュ関数でした。
SHA-2の後釜として採用されたことにより「SHA-3」と名乗るようになったのです。
きちんと調べたわけではないので私の推測まじりですが、アメリカだかどこだかにおける「これがハッシュ関数の標準ね!」なハッシュ関数が「SHA-2」です。
ところが、どこかの誰かが「SHA-2も、そのうちショボく感じるようになるよね。もっとスゴいハッシュ関数を標準として使おう!」と言い出しました。
そうすると、どうなるでしょうか。
おそらく、有名になりたいハッシュ関数さんたちが「私を標準として使ってー!」と言い出しますよね。
実際、言い出しました……多分。
そして、厳正なる審査の結果「Keccak」という名前のハッシュ関数が選ばれたのです。
おめでとー!ぱちぱちぱち。
ただし、それに伴い、Keccakさんは改名させられました。
「おまえはSHA-2の後釜なんだから『SHA-3』と名乗れや!」と言われたのです。
ということで、SHA-3は、もともと「Keccak」と呼ばれていたハッシュ関数です。
SHA-2の後釜ではありますが、仕組みとしての つながりは ありません。
中身は別物です。
一言でまとめるよ
まぁ「SHA-3」って単語が出てきたら「ハッシュ関数
(入力されたデータをもとにして作った適当な値を返してくれる関数)(のひとつ)なんだな~」と お考えください。






