更新日:
【IT用語】 暗号化、ハッシュ化とは?方式や仕組みを理解しよう!
暗号化は、データの送受信において第三者にデータを盗み見られないために不可欠な技術です。一口に暗号化と言っても様々なやり方が存在し、大きく二つに分類されます。また、暗号化と同じように通信を安全にする「ハッシュ化」という技術もあります。
暗号化はなぜ必要?
暗号化は、主に情報通信において重要な役割を果たしています。
ネットを使っていると、"暗号化された通信"のような言葉をよく見ますよね。
LINEの設定で"暗号化された通信"をするかどうかという設定を、なんとなくONにしている方も多いと思います。
では、この"暗号化"がなぜ必要だと言われているか、どのような仕組みで暗号化が行われているか、理解できているでしょうか?
フリーwifiを使うと、通信を傍受されるという話を聞いたことがあるかもしれません。
これはフリーwifiだけの話ではなく、何も対策を取らないと、知らない間にデータや情報が他人の手に渡っているなんて状況に陥ってしまいます。
そこで、データを暗号化し、謎の文字列に変換することによって、万が一通信を傍受された時でもデータを守ることができるのです。
また、暗号化とは別に、アカウントのIDやパスワードなどを守ったりするハッシュ化という技術が存在します。
暗号化やハッシュ化とは、具体的にどんな技術なのでしょうか?
これから詳しく説明します。
暗号化とハッシュ化とは?
早速、暗号化とハッシュ化について知っておくべきことを解説していきます。
この章さえ押さえておけば、基本はバッチリです。
暗号化とは?
まず最初に、暗号化の仕組みから説明します。
暗号化の仕組み
暗号化の目的は通信を傍受された際のデータの保護です。
したがって、通信の前に暗号化、通信の後に復号(データを元に戻すこと)を行います。
暗号化を使うと、データは別の文字列に変換され、元に戻せる"鍵"を持つのは自分と送信先だけになります。
他の人がそのデータを見ても、ほぼ解読不可能なため中身を知られる危険性をほとんどなくすことができるのです。
復号に必要な"鍵"
受信する側は、暗号化されたデータを受け取っても、暗号化をした際の手順がわからなければ元に戻すことはできません。
この、暗号化の手順を記したデータは"鍵"と呼ばれ、暗号化と復号に必要です。
この、鍵の扱い方によっても、セキュリティの高さが変わってきます。
暗号化にデメリットはある?
暗号化のメリットは、これまで述べたようにセキュリティを大きく上げることができることに尽きます。
対して、暗号化によるデメリットは特にありません。
したがって、暗号化した通信はできるだけ使った方がいいといえますね。
共通鍵暗号と公開鍵暗号
暗号化には、鍵の扱い方によって、二つの方式に分けられます。
共通鍵暗号
共通鍵暗号は、その名の通り暗号化と復号に共通の鍵を使います。
処理が高速なため、大量に通信する場合に向いています。
ただ、送り主は復号のために、鍵自体のデータを送る必要があります。
セキュリティ上、そこが大きな欠点といえます。
公開鍵暗号
公開鍵暗号は、暗号化は全て公開されている同一の「公開鍵」で行い、復号はそれぞれ別の「秘密鍵」で行います。
共通鍵暗号と違い、復号に必要な鍵が漏れる心配がないため、安全性は高いです。
ただ、共通鍵暗号と比べて処理が重く、低速です。
公開鍵は暗号化はしやすいが復号は大変という、特殊なアルゴリズムを使って暗号化します。
ハッシュ化とは?
IDやパスワードはハッシュ化で守られると書きましたが、"ハッシュ化"とは一体どういった技術なのでしょう?
これから詳しく解説していきます。
暗号化との違い
ハッシュ化も、通信の安全性を高める技術の一つです。
暗号化と違い、データにハッシュ化を行うと、それを元に戻すことはできません。
それじゃ意味がないじゃないかと思われるかもしれませんが、IDやパスワードにとっては、それでいいのです。
もし、二つの文字列が同じならば、それをハッシュ化したものも同じになります。
そのため、ログインするときは、送信されたデータがデータベース内のハッシュ化されたIDとパスワードの組のどれかと一致するかを確認するだけでよいのです。
ハッシュ化と暗号化を組み合わせることで、より高い安全性が保証できます。
ハッシュ化の仕組み
ハッシュ化は、一方通行のあるあみだくじのようなものです。
ハッシュ化は、ハッシュ関数と呼ばれるアルゴリズムにもとづいて行われます。
データをハッシュ化した後に暗号化して送り、それを復号したものと、データベースの情報をハッシュ化したものが一致しているかを確認します
ハッシュ化のメリット・デメリット
ハッシュ化のメリットは、不可逆なところです。
パスワードそのものを送信するわけではないので万が一通信が傍受されても、そこから復号はできません。一致する文字列を総当たりで探す方法しかとれないため、突破は現実的ではありません。
ハッシュ化発展編
セキュリティの評価方法
実は、異なる文字列から同じハッシュ化された文字列が生成されることがあります。
これをハッシュ衝突といい、あまり起こってほしくありません。
パスワードが違うのに、あっていると認識されてしまうからです。
この衝突確率の低いハッシュ関数を用いる方が、より安全性が高いと言えるでしょう。
ハッシュ化を行うハッシュ関数は日々研究されており、より衝突確率の低いハッシュ関数が考えられています。
現在主流のハッシュ関数「SHA-2」
安全なハッシュ関数で、現在の主流になっています。
ハッシュ化されたデータのパターンが膨大で、衝突確率が低いため、安全性が高いです。
ハッシュ化データの長さによってSHA-256、SHA-512などがあり、それらをまとめてSHA-2と呼んでいます。
より深く暗号化を知りたい方は
これまで解説した内容以上に、暗号化やハッシュ化は複雑なものです。
さらに深くまで理解したい方には、下記の書籍を読みましょう。
本記事で触れた内容について、より詳しい情報が載っています。
SSL/TLSとは
暗号化とハッシュ化を使った代表的なものに、SSL/TLSがあります。
URLの先頭のhttpsとはなんだろうと思ったことがあるかと思います。
これはSSL(TLS)という通信方法を用いていることを示しています。
この通信方法では、公開鍵暗号を使って通信をし、ハッシュ化を用いてデータの改ざんを防いでいます。
SSLのように、普段何気なく行っているブラウジングにも、暗号化やハッシュ化は使われているのです。
この記事のまとめ
- 共通鍵暗号は、送信側と受信側で共通の鍵を使う方法で、処理が早い
- 公開鍵暗号は、受信側だけが復号できる一つの鍵を、全ての送信側で使う方法で、安全性が高い
- パスワードなどは、ハッシュ化を用いることで、元データを送らずにデータの一致が判定できる