This article has been translated from English to Japanese.

ハッシュ化の目的は何だろうか?

ハッシュ化の主な目的は、データの整合性を検証することである

生成されたハッシュは入力データに固有であるため、入力データの唯一無二の「指紋」として機能する。

このため、ハッシュはインターネットのような安全ではない通信チャネルを通じて送信されたデータの整合性を確認するのに役立つ。データの整合性とは、データが承認されていない方法で変更されていないことを意味する

受信データのハッシュ値は、送信前のデータのハッシュ値と比較することで、データが改ざんされたかどうかを判断できる。

私がメッセージと私が生成したそのメッセージのハッシュ値の両方を投稿した場合、あなたが受け取ったメッセージからハッシュ値を生成し、そのハッシュ値を比較することができる。

とても単純な例を挙げると、これから一緒にランチを食べようとしているとしよう。そして、私がドアを出る直前に、私たちの最後の時間を思い出したとしよう。

Body odor

あなたは性格はすごく良いけど、匂いが全然良くない。😬

だから、あなたにメッセージを送りたい。「デオドラントを付けてください」と。

しかし、これを送信する前に、ハッシュ関数(SHA-256)にかける。ハッシュは次の通り:

33ebb528eab107766343d0ac591952bb68ee959d45b7a8b399628e662f3bc1ef

まずこのハッシュを送信する。*

その後、実際のテキストメッセージをお送りします。

私のメッセージを受け取ったら、あなたは「何だこれは? 本当に彼が私にそんなことを言ったのか? それとも、メッセージが送信中に傍受され、元のメッセージが改ざんされたのか?」と思うだろう。

Armpit stinks

そこで、同じハッシュ関数でメッセージを処理する。

33ebb528eab107766343d0ac591952bb68ee959d45b7a8b399628e662f3bc1ef

次に、テキストメッセージの前に表示されたハッシュと、自分のハッシュを比較する。

両方のハッシュ値が同じであれば、これは次のことを証明する。

  1. メッセージは正しく送信された。
  2. あなたのワキガは本当に臭い!
  3. 私がお客様にメッセージを送ってからお客様が受け取るまでの間に、誰かが故意にメッセージを改ざんしたわけではない。

もちろん、現実の世界では、これらの作業はすべてコンピュータが代行している。

そして、願わくば、あなたの脇の下はいつも爽やかな香りを保っていることだろう。😅

厳密に言えば、ハッシュを送信する前に何らかの方法で保護する必要があるが、ここでは例を単純化したい。ハッシュが送信中に保護される仕組みについては、後のレッスンで説明する。

ハッシュ化の実例:オンラインパスワード

驚かれるかもしれませんが、おそらく皆さんは日常的にハッシュ化に遭遇しているでしょう。メールをチェックするためにログインするたびにです。

Email uses hashing

メールアドレスとパスワードを作成すると、メールプロバイダーは実際のパスワードを保存しない可能性が高い。

代わりに、メールプロバイダーはパスワードをハッシュ関数に通し、 パスワードのハッシュを保存する

お客様がメールアカウントにログインしようとするたびに、お客様が入力したパスワードがメールプロバイダーによってハッシュ化され、保存されているハッシュと比較される

2つのハッシュが一致した場合のみ、メールへのアクセスが許可される。

では、なぜ実際のパスワードが保存されないのか見てみよう...

Password in Plaintext

実際のパスワードが保存されていて、ハッカーがそのシステムに侵入した場合、パスワードを盗まれてしまう可能性がある。これは、複数のウェブサイトに同じパスワードを使用しているユーザーにとっては、明らかに好ましくない。

解決策は、パスワードをハッシュ化することである。

Hash Pasword

パスワードをハッシュ化することで、企業はユーザー情報を保護する。ハッカーがシステムに侵入したとしても、実際のパスワードではなくハッシュ情報しか入手できない。

ハッシュは不可逆であるため、ハッカーがハッシュを見ただけでは実際のパスワードを解読することは不可能である。ハッシュ化により、データは暗号化された状態で保存されるため、盗み出すことがより困難になる。
Password Hashed and Protected

ログインするたびに、メールプロバイダーは平文のパスワードを保存せず、必要なのはハッシュだけである。

パスワードを入力すると、ハッシュ関数にかけられる。

出力はデータベースに保存されているハッシュと照合される。

ハッシュ値が一致すれば、パスワードは正しい。

間違ったパスワードを入力すると、保存されているハッシュとは異なるハッシュが生成される。ハッシュは一致しないため、ログインは失敗する。

このように、ハッシュ関数はデータを文字化けさせ、読み取れないようにする。ハッカーがメールプロバイダーのサーバーにアクセスできたとしても、保存されている詳細を解読することはできない。