This article has been translated from English to Japanese.
ハッシュ化の目的は何だろうか?
ハッシュ化の主な目的は、データの整合性を検証することである。
生成されたハッシュは入力データに固有であるため、入力データの唯一無二の「指紋」として機能する。
このため、ハッシュはインターネットのような安全ではない通信チャネルを通じて送信されたデータの整合性を確認するのに役立つ。データの整合性とは、データが承認されていない方法で変更されていないことを意味する。
受信データのハッシュ値は、送信前のデータのハッシュ値と比較することで、データが改ざんされたかどうかを判断できる。
私がメッセージと私が生成したそのメッセージのハッシュ値の両方を投稿した場合、あなたが受け取ったメッセージからハッシュ値を生成し、そのハッシュ値を比較することができる。
とても単純な例を挙げると、これから一緒にランチを食べようとしているとしよう。そして、私がドアを出る直前に、私たちの最後の時間を思い出したとしよう。

あなたは性格はすごく良いけど、匂いが全然良くない。😬
だから、あなたにメッセージを送りたい。「デオドラントを付けてください」と。
しかし、これを送信する前に、ハッシュ関数(SHA-256)にかける。ハッシュは次の通り:
33ebb528eab107766343d0ac591952bb68ee959d45b7a8b399628e662f3bc1ef
まずこのハッシュを送信する。*
その後、実際のテキストメッセージをお送りします。
私のメッセージを受け取ったら、あなたは「何だこれは? 本当に彼が私にそんなことを言ったのか? それとも、メッセージが送信中に傍受され、元のメッセージが改ざんされたのか?」と思うだろう。

そこで、同じハッシュ関数でメッセージを処理する。
33ebb528eab107766343d0ac591952bb68ee959d45b7a8b399628e662f3bc1ef
次に、テキストメッセージの前に表示されたハッシュと、自分のハッシュを比較する。
両方のハッシュ値が同じであれば、これは次のことを証明する。
- メッセージは正しく送信された。
- あなたのワキガは本当に臭い!
- 私がお客様にメッセージを送ってからお客様が受け取るまでの間に、誰かが故意にメッセージを改ざんしたわけではない。
もちろん、現実の世界では、これらの作業はすべてコンピュータが代行している。
そして、願わくば、あなたの脇の下はいつも爽やかな香りを保っていることだろう。😅
厳密に言えば、ハッシュを送信する前に何らかの方法で保護する必要があるが、ここでは例を単純化したい。ハッシュが送信中に保護される仕組みについては、後のレッスンで説明する。
ハッシュ化の実例:オンラインパスワード
驚かれるかもしれませんが、おそらく皆さんは日常的にハッシュ化に遭遇しているでしょう。メールをチェックするためにログインするたびにです。

メールアドレスとパスワードを作成すると、メールプロバイダーは実際のパスワードを保存しない可能性が高い。
代わりに、メールプロバイダーはパスワードをハッシュ関数に通し、 パスワードのハッシュを保存する。
お客様がメールアカウントにログインしようとするたびに、お客様が入力したパスワードがメールプロバイダーによってハッシュ化され、保存されているハッシュと比較される。
2つのハッシュが一致した場合のみ、メールへのアクセスが許可される。
では、なぜ実際のパスワードが保存されないのか見てみよう...
実際のパスワードが保存されていて、ハッカーがそのシステムに侵入した場合、パスワードを盗まれてしまう可能性がある。これは、複数のウェブサイトに同じパスワードを使用しているユーザーにとっては、明らかに好ましくない。
解決策は、パスワードをハッシュ化することである。
パスワードをハッシュ化することで、企業はユーザー情報を保護する。ハッカーがシステムに侵入したとしても、実際のパスワードではなくハッシュ情報しか入手できない。
ハッシュは不可逆であるため、ハッカーがハッシュを見ただけでは実際のパスワードを解読することは不可能である。ハッシュ化により、データは暗号化された状態で保存されるため、盗み出すことがより困難になる。

ログインするたびに、メールプロバイダーは平文のパスワードを保存せず、必要なのはハッシュだけである。
パスワードを入力すると、ハッシュ関数にかけられる。
出力はデータベースに保存されているハッシュと照合される。
ハッシュ値が一致すれば、パスワードは正しい。
間違ったパスワードを入力すると、保存されているハッシュとは異なるハッシュが生成される。ハッシュは一致しないため、ログインは失敗する。
このように、ハッシュ関数はデータを文字化けさせ、読み取れないようにする。ハッカーがメールプロバイダーのサーバーにアクセスできたとしても、保存されている詳細を解読することはできない。


