暗号系の業界で騒がれているSHA-1(シャーワン)、SHA-2(シャーツー)とは一体なんなんでしょう。
ハッシュアルゴリズムは、データのセキュリティを強化するための重要な技術です。
その中でも、SHA-1やSHA-2(SHA256など)は、データの一意のダイジェスト(ハッシュ値)を生成するための代表的なアルゴリズムです。
これらの読み方や理解する方法は、セキュリティ意識を高め、データの完全性を保つために重要です。
この記事では、これらのハッシュアルゴリズムが何を意味し、どのように機能するのかを探ります。
また、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通信を開始する際のハンドシェイクで、発行された証明書が信頼された認証局から発行されているかどうかの検証時にこのハッシュ値で照合します。
ここで使われているのが、サーバ証明書に使われている署名アルゴリズムのことです。
超ざっくり説明ですみません。
あとはセッションが確立した後のメッセージ認証にも使われているのですが、それはサイファースイート側のものなので、証明書の署名アルゴリズムとは無縁の話ですね。
とにかく、暗号にハッシュは欠かせない、ということは間違いないですね。
まとめ
ハッシュアルゴリズムは、セキュリティとデータの完全性を確保する鍵となります。
SHA-1からSHA-2(SHA256)への移行は、セキュリティの強化とデータの保護を意味します。
SHA-2ファミリーの採用は、より頑強な暗号学的手法を提供し、情報の改ざんから保護する役割を果たします。
ハッシュアルゴリズムの理解は、データの安全性を追求する現代社会において重要です。これらの技術を活用し、より安全なデジタル世界を築くために、常に最新のセキュリティ対策を心掛けましょう。
コメント