一方向ハッシュ関数
#暗号技術入門 #暗号学者の道具箱
メッセージの指紋を取る
何を解決するか
「このファイルは本物か?」 完全性 正真性 integrityのチェックを行うことができる
一方向ハッシュ関数で解決できない問題
改竄を検出できるが、なりすましを検出することはできない
Authentication = なりすましを防ぐこと?
認証を行うためにメッセージ認証コードとデジタル署名を用いる
メッセージ認証コードは、改竄が行われていないことを通信相手だけに示す
デジタル署名は、改竄が行われていないことを通信相手だけではなく第三者に示すことができる
認証には鍵 = アリスしか知らない秘密の情報を使う
定義
messageと呼ばれる任意の長さのbit列から、
hash valueと呼ばれる固定された長さのbit列を計算する関数のことをいう
期待される性質
固定長のhash値を返すこと
高速であること
異なるメッセージには異なるhash値を返すこと
ハッシュの衝突が起きにくいこと
弱衝突耐性と強衝突耐性
一方向性
ハッシュ値からメッセージを逆算できないという性質
応用
ソフトウェアの改竄検出
パスワードを元にした暗号化(PBE)
メッセージ認証コード
SSL/TLS
デジタル署名
擬似乱数生成器
ワンタイムパスワード
一方向ハッシュ関数の具体例
MD4, MD5
SHA-1, SHA-256 SHA-384 SHA-512 , SHA-2
RIPEMD-160
SHA-3
選定プロセス
一方向ハッシュ関数への攻撃
ブルートフォースアタック
文書ファイルの冗長性
誕生日攻撃
関連する概念
go.sum では暗号的ハッシュ関数(cryptographic hash)が使われる