IT用語/ハッシュ関数 | |
ハッシュ関数(2014-09-13、追記:2017-03-14) ハッシュ関数とは †ハッシュ関数は、対象のデータを固定長のデータ(ハッシュ値*1)に圧縮する機能です。 例えば、LinuxのMD5コマンド(後述)を使ってハッシュ値を得るには、 ■ IROHA.txtの中身=「いろはにほへとちりぬるを(中略)ゑひもせす」 $ md5sum IROHA.txt 3bdf7dbee70f27b34998935811624a22 IROHA.txt ■ IROHA.txtの中身=「いろはにほへとちりぬるを(中略)ゑひもせす!」 ■ 最後に「!」が増えました。 $ md5sum IROHA.txt 9c027e1a2a67967d26c6f4434f4086b5 IROHA.txt この「3bdf7d~」とか「9c027e~」とかが「ハッシュ値」です。 ハッシュ値の特徴としては
2017-02 に sha1ハッシュの衝突(コリジョン)に成功というニュースがありました。 MD5 †128bitのハッシュ値を出力する。結論から言うと既に安全ではない。ハッシュ値の衝突を利用したファイルの改竄を行う方法が見つかっている。 SHA-1 †160bitのハッシュ値を出力する。これも攻撃法が発見済みで安全ではない。 SHA-2 †224、256、384、512bitのハッシュ値を出力する。SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256をまとめてSHA-2。 RIPEMD †オープンコミュニティで開発された規格(SHAはアメリカ国家安全保障局 NSA)。ちょっと調べたけど安全性は良く分からなかったので(SHA1程度?)、参考程度に。 HMAC(Hash-based MAC) †メッセージの改竄を検出する技術としてMAC(Message Authentication Code:メッセージ認証符号)があり、その実装方法の1つとしてHMACがあります。 ハッシュ値 = ハッシュ関数(SHA-2など) & 共通鍵 & 対象データ (&諸々の関数) SSLやTLS、IPSecではHMACが使われています。 |
|