ハッシュ の変更点


#author("2023-11-22T21:44:23+09:00","default:k1rou","k1rou")
#author("2023-11-25T18:05:09+09:00","default:k1rou","k1rou")
*ハッシュ とは [#h15b0be1]
-データに特定の演算処理を行って特徴値を抽出すること。
-特定の演算処理を、「ハッシュ関数(一方向ハッシュ関数)」と呼ぶ。
-ハッシュ関数を使って抽出した特徴値を、「ハッシュ値」と呼ぶ。

*ハッシュ値 [#ocb11e09]
-ダイジェスト値、メッセージダイジェスト
-暗号化チェックサム
-指紋(フィンガープリント) ※公開鍵のハッシュ値

*ハッシュの特徴・性質 [#be49eee9]
-元データが同じであれば、同じハッシュ値になる。
-元データが少しでも変わると、ハッシュ値が変わる。
-元データの文字種が多いほど解読を困難にすることができる。
-ハッシュ値の長さは、元データの長さに関係なく同じ長さになる。

**原像計算困難性 [#k29a6bad]
-一方向性・不可逆性
-ハッシュ値から元データを特定することが困難であること。
-[[デジタル署名]]では、署名から元データが漏洩しないことを保証する。

**第2原像計算困難性 [#ffadce47]
-元データとハッシュ値から同じハッシュ値を求めることができる他の値(元データ)を特定することが困難であること。

**衝突困難性 [#k77efa6e]
-異なる値から同じハッシュ値になりにくい性質のこと
-理論的には同一のハッシュ値を持つ、異なる元データが存在するが、それを推定するのがとても困難であること。
-ハッシュ値が一致する場合は、元データも同じ([[改ざん]]されていない)ことを保証する。([[改ざん]]検知)
-H(x) = H(x')

*ハッシュの用途 [#ga08c57a]
-[[デジタル署名]]
--ハッシュ値を暗号化(署名)して添付することで、データが正しいことを保証する。

-[[ワンタイムパスワード]]の生成
--[[チャレンジ・レスポンス認証]]

-[[メッセージ認証コード]]
--[[CMAC]]
--[[HMAC]](鍵付きハッシュ関数)

-[[パスワード]]の保存
--復号できる[[暗号化]]ではなく、復号が困難なハッシュで保存する。
--[[PBKDF]]

-[[チェックサム]]
--情報の[[改ざん]]検知。情報の保全性を検証するために使う。

*解読の難解化 [#g2f5d240]
**ソルト [#f0bd7e31]
-パスワードからハッシュ値を求める際に、パスワードに付加する文字列のこと。
-パスワードにソフトを付加した上で算出したハッシュ値は、同じパスワードでも異なるハッシュ値になり、ハッシュ値からパスワードを特定することが困難になる。
-ソルトはある程度の長さ(最低20文字)がある方が有効
-元データにランダムな文字列(salt)を使って特定の変換(付加するなど)してからハッシュし、ハッシュ値とsaltの両方を保存する。

**ストレッチング [#we8c9779]
-複数回ハッシュを重ねる。

**将来の難読化手法の変更に対する考慮 [#j79d0cf7]
-現在の難読化手法が分かる情報を保存する。(ハッシュ値の先頭に付加するなど)

*攻撃の手法 [#h4ab3fba]
-[[レインボーテーブル]]
--ハッシュ値から元データを特定する方法として、大量のハッシュしたハッシュ値のデータベースから同一のハッシュ値を探して、元データを特定する。

-[[誕生日攻撃]]

*ハッシュのアルゴリズム [#b90fe9b7]
-MD4
-[[MD5]]
-[[MD6]]
-[[SHA]]
--SHA-1
--SHA-2
--SHA-3

-[[RIPEMD-160]]
-[[HAVAL]]

**低速のハッシュ関数 [#ucac0d95]
-[[BCrypt]]
-[[SCrypt]]

*ハッシュが使用されるケース [#ob7ed9a8]
-[[SSL]]
-[[パスワード]]の保存
-[[チェックサム]]

*関連サイト [#zdda5111]
-当wikiのハッシュ機能~
https://memo.mellowlife.org/?cmd=md5

-hashcat~
https://hashcat.net/hashcat/

*関連用語 [#je1e868c]
-[[暗号化]]
-[[暗号学的ハッシュ関数]]
-[[鍵保管方式]]
-[[コンシステント・ハッシュ法]]
-[[シャーディング]]
-[[電子署名]] -デジタル署名
-[[認証]]
-[[認証トークン]]
-[[負荷分散]]
-[[Argon2]]
-[[FIPS]] 180
-[[Pass the Hash攻撃]]
-[[PGP]] -Pretty Good Privacy
-[[PBKDF]]