55
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初学者向け】Webサービスを守る多要素認証と暗号化の話

55
Posted at

株式会社 PRUMのmasaです。

今日は情報セキュリティで必須と言われる「多要素認証」と「暗号化」がなぜ必要なのか、それぞれの役割の違いを意識しながら一緒に見ていきましょう。

1. 昔と今で変わってきた?近年のセキュリティ動向と「パスワードの限界」

情報セキュリティと聞くと、ウイルス対策ソフトをイメージする方が多いかもしれません。

もちろん、今でもウイルスやランサムウェアのように、端末やデータ、業務そのものに被害を与える攻撃は大きな脅威です。

一方で近年は、ID・パスワードなどの認証情報を盗み、正規ユーザーになりすましてアカウントへ不正ログインする攻撃も重要なリスクになっています。

脅威は「壊す」だけでなく「乗っ取る」方向にも広がっている

昔は「ウイルスを送り込んでパソコンを壊す」といった攻撃をイメージする方が多かったかもしれません。

しかし現在は、システムを壊すだけでなく、個人情報やクレジットカード情報を狙って「アカウントに不正ログインする」という手口も増えています。

つまり、私たちエンジニアがシステムを作る際、警戒すべきことの一つが 「正規のユーザーになりすまして侵入されること」 なのです。

なぜパスワードだけでは限界なのか?

ユーザーの方々の中には、複数のWebサービスで同じパスワードを使い回している方がいます。

これが非常に危険な状態です。

どこか1つのサービスからIDとパスワードの組み合わせが漏洩してしまうと、攻撃者はその情報を使って、別のサービスにも次々とログインを試みます。

その結果、芋づる式に複数のアカウントが不正アクセスされてしまうことがあります。

【よくある失敗例】
「自分は複雑なパスワードにしているから大丈夫」と思っていても、利用しているサービス側の不備などで情報が漏れてしまうことがあります。パスワードという「知識情報」だけに頼る防衛策では、防ぎきれない事象が増えています。

攻撃の手口が巧妙化する中、パスワードだけでアカウントを守るのは難しくなってきました。

そこで重要になるのが、「別の認証要素」を組み合わせるアプローチです。

2. アカウントの「入口」を別の要素で守る!多要素認証(MFA)

パスワードが漏れてしまった時の備えとして、現在のWebサービスで一般的になってきているのが MFA(多要素認証:Multi-Factor Authentication) です。

MFAは、ログインしようとしている人が本当に本人なのかを確認するための仕組みです。

つまり、Webサービスに入る前の「入口」を守るための対策だと考えると分かりやすいです。

「2段階認証」と「2要素認証」の違い

ここで、混同しやすいポイントを整理しておきましょう。

認証には、大きく分けて以下の3つの「要素」があります。

  1. 知識情報
    パスワード、暗証番号、秘密の質問 など

  2. 所有情報
    スマートフォン、ICカード、セキュリティキー など

  3. 生体情報
    指紋、顔、静脈 など

たとえば、パスワードを入力したあとに「母親の旧姓は?」という秘密の質問に答える仕組みがあったとします。

これは2回確認しているので「2段階認証」とは言えます。

しかし、どちらも「知識情報」なので、厳密には 「2要素認証」とは呼びにくい です。

大切なのは、単に確認回数を増やすことではなく、異なる種類の要素を組み合わせることです。

たとえば、

  • パスワード(知識情報)
  • スマートフォンに届くワンタイムパスワード(所有情報)
  • 指紋や顔認証(生体情報)

のように、異なる要素を組み合わせることで、セキュリティを高めることができます。

【多要素認証の具体例】
たとえば、パスワード(知識)を入力したあとに、認証アプリに表示されたワンタイムパスワードを入力する(所有)方法があります。

また、パスキーのように、端末に保存された認証情報を指紋や顔認証で利用する仕組みもあります。

このように異なる要素を組み合わせることで、万が一パスワードが漏れても、攻撃者がログインしにくい状態を作ることができます。

多要素認証を導入することで、「システムの入口」はかなり守りやすくなります。

ただし、Webの世界では入口だけを守っても十分とは言い切れません。

なぜなら、ユーザーとサービスの間で情報がやり取りされる「通信の途中」を狙われるリスクもあるからです。

3. 「通信の通り道」を守る暗号化の考え方

どれだけ頑丈な入口を作っても、ログイン情報や個人情報が通信の途中で丸見えになっていたらどうでしょうか。

たとえば、ログインに必要な情報を書いた札を首からぶら下げたまま、目的地まで歩いているようなものです。

途中に悪意ある人がいれば、その情報を見られてしまうかもしれません。

これと同じようなことが、インターネットの通信でも起こり得ます。

だからこそ、「通信自体」を暗号化して、中身を見えにくくする仕組みが使われています。

暗号化でイメージする「安全な通信路」

通信を守る代表的な仕組みに、HTTPSで使われるTLSがあります。

細かい仕組みは複雑ですが、ざっくり言うと、ブラウザとサーバーの間で「この相手は信頼できるか」を確認し、そのうえで第三者に中身を読まれにくい安全な通信路を作ります。

その通信路の中で、ログイン情報や入力フォームの内容などがやり取りされます。

つまり暗号化は、「誰がログインしようとしているか」を確認する仕組みではありません。

暗号化は、「通信の途中で中身を盗み見られたり、改ざんされたりしにくくする」ための仕組みです。

「入口」と「通り道」は役割が違う

ここで、MFAと暗号化の役割を整理してみます。

  • MFA:入口を守る仕組み
    • ログインしようとしている人が本当に本人かを確認する
    • パスワードが漏れても、不正ログインされにくくする
  • 暗号化:通り道を守る仕組み
    • 通信の途中で情報を盗み見られにくくする
    • 通信内容を改ざんされにくくする

このように、MFAと暗号化は守っている対象が少し違います。

ただし、実際のWebサービスでは、この2つは完全に独立しているわけではありません。

たとえば、MFAで使うワンタイムパスワードや認証処理の通信も、安全な通信経路の上でやり取りされる必要があります。

つまり、MFAは「入口」を強くする仕組みであり、そのMFAを安全に使うためにも「通り道」の保護が重要になる、という関係です。

4. 開発側になると見え方が変わる

普段私たちがWebサービスを使う時は、ブラウザのURL欄にある「鍵マーク」や「https」を見るくらいで、暗号化を強く意識することは少ないかもしれません。

しかし、いざ開発側に回ると、セキュリティを意識する場面が増えてきます。

たとえば、

  • ログイン機能では、多要素認証を導入できないか考える
  • API通信では、HTTPSを使う
  • パスワードはそのまま保存せず、適切な形でハッシュ化して保存する
  • 個人情報を扱う場合は、保存方法やアクセス権限にも注意する

といったことを考える必要があります。

このように、セキュリティ対策は1つの仕組みだけで完結するものではありません。

「認証」で正しい人かを確認し、「暗号化」で通信を守り、「ハッシュ化」などで保存時のリスクを下げる。

複数の仕組みを組み合わせることで、Webサービスはより安全になります。

さいごに

セキュリティは、用語だけを暗記しようとすると難しく感じます。

でも、「何を守るための仕組みなのか」で考えると理解しやすくなります。

多要素認証は、ログインしようとしている人が本当に本人かを確認するための「入口」の対策です。

一方、暗号化は、ユーザーとサービスの間でやり取りされる情報を守るための「通り道」の対策です。

この2つは完全に別々のものではなく、実際のWebサービスでは組み合わせて使われます。

まずは、「これは本人確認の話なのか」「通信を守る話なのか」と分けて考えてみるだけでも、セキュリティの見え方が少し変わってくるはずです。

普段使っているWebサービスの裏側を想像しながら、少しずつ理解を深めていきましょう。


PRUMのエンジニアの95%以上は未経験からの採用です。
よければコーポレートサイトにも遊びに来てください。
コーポレートサイト

エンジニアの方に役立つ記事をまとめたサイトも運営しています。もしご興味あれば覗いてみてくださいね。
エンジニアに役立つ記事サイト

55
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
55
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?