Linux をさわり初めてから、ハッシュ、MD5、SHA-1、などの言葉をよく目にするようになりました。なんのことだかさっぱりだったので、調べてみました。
ハッシュって何?
たとえば、ある場所から違う場所にデータを転送する際、転送中にデータの改ざんが行われていないかを確認したいとする。こんな時に使われるのが、”ハッシュ”。この前、CentOS をダウンロードした際に使ったMD5 や SHA-1 もハッシュの一つ。
別名要約関数
ハッシュは別名「要約関数」と呼ばれ、テキストデータなどの文字列を特定の長さの整数に短く変換する。ここで生成されるのが、ハッシュ値。同じデータからは、同じハッシュ値が生成されるので、ハッシュ値同士を比べれば、元のデータに変更が加えられていないか知ることができる、という仕組み。
復元できないから安全
生成されたハッシュ値から、元の文字列を復元することは不可能。だから、ハッシュ値が同じ改ざんデータを作ってやれ、と思ってもそれはできないことになる。
ハッシュの限界
別の文字列が同じハッシュ値を生成することはありうるとのこと。でも、似通ったデータが同じハッシュ値を生成しないように対策は取られているらしい。
MD5 と SHA-1 は?
ハッシュの種類。生成するハッシュ値の文字列の長さが違う。
MD5
Message Digest 5 の略。Digest は、「ダイジェスト」まさに「要約」の意味ですね。元の文字列がどんな長さであっても、128ビット(16バイト)の文字列を生成する。
SHA-1
Secure Hash Algorithm-1。元の文字列がどんな長さであっても、160ビット(20バイト)を生成する。この前、CentOS の iso をダウンロードしたときにはこちらのSHA-1 でデータの整合性確認をしました。
生成されるハッシュ値のビット長がこちらのほうが長いので、幾分こちらのほうが安全性、信頼性が高いようです。
MD5 や SHA-1 のぜい弱性も
ネットで調べると、MD5 や SHA-1 にもかなりぜい弱性があるようです。今回は何なのか知ることが目的だったのでこの辺で。これからは、MD5 や SHA-1 にかわるような技術も開発されるのでしょうか。
参考にしたサイトです。
IT Pro : hashとは
http://itpro.nikkeibp.co.jp/article/Keyword/20070706/276987/
IT用語辞典 e-words : ハッシュ法
http://e-words.jp/w/E3838FE38383E382B7E383A5E6B395.html
IT用語辞典 e-words : MD5
http://e-words.jp/w/MD5.html
IT用語辞典 e-words : SHA-1
http://e-words.jp/w/SHA-1.html







