なぜ知りたいと思ったか?
ハッシュ化も暗号化も悪質ユーザーに読み取られない技術だけど、どこが違うのか知りたかった
ハッシュ化について
入力した文字や数値が、Webサーバにあるハッシュ関数でハッシュ値に変換され、データベースに保存する
不可逆(元に戻せない)の性質があるので、攻撃者にハッシュ値を参照されても割り出すのが難しい
phpMyAdminのパスワードでは、480ビット分ハッシュ化されている
→複数ユーザーに同パスワードを指定したが、ハッシュ値が違うのはユーザー毎に違う固定値を組み合わせたソルトを使っていると思う
①ログイン時の検証方法について
ユーザーが入力したパスワードをハッシュ値に変換して、一致した場合にログインできる
※1文字違うだけハッシュ値が大きく変わるので、正確に入力する必要がある
②使用用途について
・電子メール本文の改ざんを判断するため、メール本文とハッシュ値変換データを送信し、受信時にハッシュ値の比較を行う
→悪質ユーザーが送信者側になりすますことが難しく、送信者本人が送ったメールだと信頼できる
③期待できる効果
ハッシュ値に変換されても元に戻すことが出来ず(不可逆な性質)、悪質ユーザーがハッシュ値から元データを特定するのが難しくなる
④問題点
パスワードは「数学的に不可逆」と言われてきたけど、計算技術の飛躍で覆りつつある。
指紋などを使った生体認証や、1度しか使えないワンタイムパスワードなどを組み合わせた多要素認証が必要になってくる
パスワードの暗号化について
入力した文字や数値を暗号化アルゴリズムで別のデータに変換し、受信側で元のデータに複合できる
→カード情報入力でよく使われる
①暗号化したデータをどうやって複合するか?
送信側が暗号鍵を使ってデータを暗号化した後、受信側で複合鍵を使ってデータを複合する(元データに変換する)
②使用用途について
・ECサイトに入力した個人情報を、受信側で確認できる
③期待できる効果
入力データを暗号鍵で別のデータに変換しているので、悪質ユーザーが参照しても元のデータの解析が難しく、安心してデータを受信側に送ることが出来る
④問題点
悪質ユーザーが複合鍵を取得してしまうと、元のデータに変換できてしまい情報漏洩に繋がるので、複合鍵をどう受け渡すかを考慮する必要がある
ハッシュ化と暗号化は何が違うか?
別のデータに変換して、元のデータに戻す必要があるか
<ハッシュ化の場合>
DBでパスワード管理する場合、元のデータに戻すと悪質ユーザーに見られる危険性があるので、変換したままにする
<暗号化の場合>
カード番号を送信する場合、元のデータに戻さないと受信側で確認が取れないので、鍵を使って元のデータに戻す必要がある
ハッシュ化と暗号化の違いについて
https://eset-info.canon-its.jp/malware_info/special/detail/211013.html