最近暗号系の業界で騒がれているSHA-1(シャーワン)、SHA-2(シャーツー)とは一体なんなんでしょう。
SHA256の読み方を含め、超簡単に軽くまとめてみました。
興味がない方でも、とりあえず、ここの説明でわかってもらえると思います。
SHA-1、SHA-2の読み方
SHA-1はシャーワン
SHA-2はシャーツー
で通じると思います。
SHA-2は、現時点ではSHA-256の事を指すことが多いですが、この
SHA-256はシャーニゴロ
ですね。
SHA-256の次はSHA-512になっていくと思いますが、
SHA-512はシャーゴーイチニ
で大丈夫です。
シャワン、シャツーと、シャーのところを延ばさない人もいると思いますが、どちらでもよいと思います。
SHA-1、SHA-2、ハッシュアルゴリズムとは何か?
ハッシュアルゴリズムと言われてもピンとくる人はまずいないと思います。
最近、特にSSL系などではこのハッシュアルゴリズムの移行がすすめられていて少々騒がしいようなのですが、そもそもハッシュアルゴリズムとはなんなのでしょうか。
ハッシュアルゴリズムとは
- ハッシュ関数
- 一方向ハッシュ関数
- 要約関数
- 拇印アルゴリズム
などとも呼ばれている関数のことで、このハッシュアルゴリズムで生成したハッシュ値は
- メッセージダイジェスト
- 拇印
- フィンガープリント
- メッセージ要約
などと呼ばれています。
なんで、たくさん呼び方あるんだよ、、、という感じですが、ほんと困っちゃいますね。
ハッシュ関数は何に使われるのか?
ハッシュ関数の利用用途は、検索の高速化やデータ比較処理の高速化、改ざん検知などですが、一番なじみがあるのは改ざん検知ですかね。
たとえば、インターネット上からデータをダウンロードすることがあると思いますが、そのデータが本当に自分がダウンロードしたいものかはわからないですよね。
「これがその書類です」
とアップロードされていたとしても、誰かがそのファイルをすり替えてしまっていたら気付きようがありません。
その際に、そのファイルと共にハッシュ値を表示しておくと、ダウンロードした側はそのファイルからハッシュ値を出して、そのハッシュ値を比較することで本当にアップロードされたファイルかどうかの確認ができるわけです。
いろいろあるハッシュ関数
ハッシュ関数にもいろいろありまして、主なものとしては、MD系とSHA系です。
MD
MDは、「Message Digest Algorithm」の略で、ロナルド・リベストという人が開発したものです。
MD2からMD5までがあり、すべて128ビット(16バイト)のハッシュ値を生成できます。
でも、MDはすでに衝突性が確認されているので安全性は低下しています。
SHA
SHAは「Secure Hash Algorithm」の略で、3種類のシリーズがあります。
それぞれSHA-1、SHA-2、SHA-3と呼ばれていて、読み方としては、先にも説明した通り
シャーワン、シャーツー、シャースリー
です。
SHA-1:160ビット(20バイト)のハッシュ値を生成する
SHA-2:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256の6つのバリエーションがあります。
ハッシュ長はそれぞれ224、256、384、512ビットとなっています。
SHA-512/224、SHA-512/256は512を切り詰めて224や256にしているものです。
SHA-3:SHA3-224、SHA3-256、SHA3-384、SHA3-512のバリエーションがあります。
ハッシュ長は、SHA-2同様224、256、384、512ビットです。
SHA-1も安全性が低下していて、現在SHA-1からSHA-2(SHA256)への移行が進められています。
これが今業界がざわついている理由です。
SHA-2と言われた場合は、通常SHA256を指すことが多いです。
SHA256の読み方は
シャーニゴロ
ですね。
SSL/TLSサーバ証明書に使われているハッシュアルゴリズム
ちなみにSSL/TLSサーバ証明書にもこの技術が使われていますが、使われ方はかなり限定的です。
証明書を発行する認証局がユーザの公開鍵へデジタル署名をする(証明書を発行する)際にハッシュアルゴリズムが使われています。
認証局ではユーザの公開鍵へ認証局の秘密鍵でデジタル署名をする前に、ハッシュ値をハッシュアルゴリズムを使って生成し、その生成されたハッシュ値にデジタル署名をしています。
そして、SSL/TLS通信を開始する際のハンドシェイクで、発行された証明書が信頼された認証局から発行されているかどうかの検証時にこのハッシュ値で照合します。
ここで使われているのが、サーバ証明書に使われている署名アルゴリズムのことです。
超ざっくり説明ですみません。
あとはセッションが確立した後のメッセージ認証にも使われているのですが、それはサイファースイート側のものなので、証明書の署名アルゴリズムとは無縁の話ですね。
とにかく、暗号にハッシュは欠かせない、ということは間違いないですね。(とんでもない締めかたでごめんなさい)
コメント