図解サイバー攻撃 [Cyber Attack dot Net]

図解サイバー攻撃。サイバー攻撃・サイバーテロや情報漏洩などのサイバーセキュリティインシデントについて詳しくイラストで解説。

図解サイバーセキュリティ用語

ハッシュ関数、MD5とSHAとは?

投稿日:

ハッシュ関数とは、あるデータをインプットとしてそのデータを要約する16進数の数列を生成する関数の事を言います。ハッシュ関数はデータ固有の値(ハッシュ値)を生成しますので、データが違うとそのハッシュ値も違ってきます。

ハッシュの種類

ハッシュ関数として利用されるのは、MD5、SHA-1、SHA-256の3種類があります。

ハッシュ関数 長さ
MD5 128bit
SHA-1 160bit
SHA-256 224、256、384、512bit

例えば、cyber-attackという文字列(データ)をハッシュ関数で計算してみましょう。MD5でハッシュ値を計算すると、「18cfab9f83162c32cf9c2e1d5f200f7f」というハッシュ値が生成されます。SHA-256で計算すると「efde9da04abdc84b4a77a3588247fc44a852709145373cd0b2cca1d3bd07a535」というハッシュ値が生成されます。

ハッシュとは?MD5とSHA

ハッシュ値の特徴と利用手段

ハッシュ値とはハッシュ関数から生成される16進数の値の事を言います。ハッシュ値の事をフィンガープリント(finger print)やメッセージダイジェスト(message digest)を呼ぶこともあります。

ハッシュ値には元のデータを「計算」できない、という特徴があります。これを一方向性と言います。しかしながら、ハッシュ値から元のデータを「特定」する事は不可能ではありません。また、ハッシュ値にはある特定のハッシュ値を持つデータを作成する事が難しい弱衝突耐性と、同じハッシュを持つ2つ以上のデータを作成する事が難しい強衝突耐性という性質があります。

ハッシュ関数とは?MD5とSHA

ハッシュ値は以下のような目的で利用されます。

  • ハッシュ値を比較して改ざん検知
  • パスワードをハッシュ化して安全なパスワード認証
ハッシュ値を比較して改ざん検知

ハッシュ値を使えば、改ざんを検知する事が可能になります。例えば、重要なデータの改ざんを監視するとしましょう。まず、その重要なデータのハッシュ値を計算します。そして、定期的にその重要なデータのハッシュ値を計算して元のハッシュ値と比較する事で改ざんされているか否かがわかります。

ハッシュ値とは、改ざん検知に利用

攻撃者がその重要なデータのほんの1部を改ざんしたとしても、ハッシュ値は全く違ったものになりますので、改ざんの検知が可能です。一方で攻撃者はハッシュ値が全く同じ別のデータを作成して入れ替える可能性がありますが、その場合は元のデータと全く違うデータが作成さる場合が多いです。

パスワードをハッシュ化して安全なパスワード認証

ユーザがパソコンにログオンする、という事はそのパソコン(もしくは認証サーバ)にユーザのパスワード情報が保存されているという事になります。Windowsの場合はSAMという特殊なレジストリにパスワードが保存されています。Unixの場合は/etc/shadowにパスワードのハッシュ値が保存されています。それらのパスワードが平文のまま保存されていればとても危険です。またパスワードが暗号化されている場合は必ず暗号化ー復号のプロセスが発生するのでそのプロセスからパスワードを盗まれる可能性があります。

そこでパスワードをハッシュ値に変換する事で上記の問題を解決できます。万が一パソコンに保存されているパスワードのハッシュ値を盗まれても、元のパスワードの値を計算する事は非常に難しいので、パスワードを知られる事はありません。

しかしながら、ブルートフォース攻撃辞書攻撃などを利用すればハッシュ値から元のパスワードの値を特定する事が可能です(しかしブルートフォース攻撃で8桁以上のパスワードを特定するには数か月から数年の期間が必要となります)。

ハッシュ衝突

ハッシュの衝突とは同じハッシュ値を生成するデータが2つ以上存在する事を言います。つまり、データAのハッシュ値をハッシュ関数で計算したものがX、データBのハッシュ値を同じハッシュ関数で計算するとXになった場合、データAとデータBのハッシュ値は同じになってしまいます。この事をハッシュ値の衝突と言います。

ハッシュの衝突が発生する確率は非常に小さいですが、攻撃者が意図的にハッシュの衝突を試みようとする場合、ハッシュ関数によっては容易にできてしまいます。

ハッシュ関数 ハッシュ衝突
MD4 2004年に、ハッシュの衝突を意図的に作成する事が可能であることが報告され、現在では
MD5 2007年に、ある条件下で同一のMD5ハッシュ値を生成する方法が発見された。
SHA-1 2017年2月に、CWI AmsterdamとGoogleの研究チームがSHA-1のハッシュ衝突を成功させた事がアナウンスされた。

これによって、現在ではSHA-256やSHA-3のような安全なハッシュ関数への移行が進むと思われます。

広告

広告

-図解サイバーセキュリティ用語

関連記事

フィッシングメールとは 図解サイバーセキュリティ用語

最近良く聞く言葉の1つにフィッシングという言葉があります。会社でもセキュリティ部からアナウンスがあって「最近フィッシングメールが流行していますので、怪しいメールは絶対に開かないようにしてください。」と …

サイバーインテリジェンス(Cyber Intelligence) 図解サイバーセキュリティ用語

インテリジェンスを日本語で訳すのは難しいですが、諜報活動から得られる情報と訳す事ができます。ただしこれは戦争や政治の世界で使われる意味で、サイバーセキュリティでのインテリジェンスの意味は少し違ってきま …

ICMP Flood攻撃、Ping Flood攻撃 図解サイバーセキュリティ用語

ICMP Flood攻撃はDoS攻撃の中のFlood系の攻撃の一種です。Ping flood攻撃とも言われます。DoS攻撃の中でも簡単な仕組みの攻撃です。どのような攻撃かと言いますと、まずあらかじめ大 …

キーロガーとは 図解サイバーセキュリティ用語

キーロガー(keylogger)とはパソコン等のキーボードの入力を監視してそれを記録するソフトウェアの事を言います。キーロガーによって記録された情報からユーザが何をタイプしたのかがわかります。つまり、 …

多層防御とは 図解サイバーセキュリティ用語

多層防御とは、複数の連続したセキュリティ対策によって攻撃を途中で食い止めるアプローチの事を言います。つまり、攻撃に対して効果的でないセキュリティ対策があったり、セキュリティ対策をバイパスするような攻撃 …