インターネットでショッピングしたり、SNSにログインしたりするときに、ブラウザのアドレスバーに「鍵マーク」がついているのを見たことありませんか?実はこの鍵マークが付いているサイトと付いていないサイトでは、セキュリティ(つまり安全性)に大きな違いがあるんです。その秘密が「HTTPS」という技術です。この記事を読めば、HTTPSがなぜ必要なのか、どうやって安全を守っているのかが、きっとわかりますよ。
- HTTPSは 安全な通信方法 で、パスワードやクレジットカード情報を守る
- 暗号化 というテクノロジーを使って、データを読めない状態に変える
- ブラウザの 鍵マーク がHTTPSの目印で、その先にあるサイトは信頼できる
もうちょっと詳しく
HTTPSの「S」は「Secure」という英語で、つまり「安全な」という意味です。一方、HTTPは「Secure」の「S」がないバージョンで、つまり安全ではない通信方法という意味なんです。インターネットの初期の頃は、大事なデータを暗号化せずに送っていたので、途中で盗み見されるリスクがありました。でも今は、ほぼすべての大事なサイト(銀行、ショッピング、SNSなど)がHTTPSを使うようになって、安全に情報を送り受けできるようになったんですよ。
鍵マークが見えない(つまりHTTPの)サイトには、クレジットカード情報やパスワードを絶対に入力しちゃダメだよ。
⚠️ よくある勘違い
→ HTTPSはデータを暗号化して、途中で盗まれるのを防ぐけど、サイト側が悪質な企業だったら、あなたの情報を悪用されることもあります。つまり、サイト内部での安全性までは保証しないんです。
→ サイトが本物かどうかを確認して、データ送信中の安全性を守るのがHTTPSの仕事。だから、信頼できるサイトかどうかは自分たちで確認する必要があります。
[toc]
HTTPSって何?インターネットの「鍵」の話
HTTPSは安全なインターネット通信の技術
HTTPSという言葉は、「HyperText Transfer Protocol Secure」という英語の頭文字を取った造語です。つまり、安全な通信方法でホームページなどのデータをやり取りするための方法ということですね。インターネットが普及し始めた頃は、このSSという「安全」の部分がなくて、ただのHTTPという通信方法が使われていました。でも、パスワードやクレジットカード番号なんていった大事な個人情報が盗まれるリスクがあったので、安全な方法を用意する必要があったんです。
そこで開発されたのがHTTPSで、これは「あなたとサイト(サーバー)の間で送られるデータを、暗号化という方法で読めない状態に変える」という技術です。例えば、あなたが「田中太郎」という名前をフォームに入力したとしましょう。HTTPSがないと、その名前は「田中太郎」のまま送信されるので、途中で盗聴する悪い人がいれば、誰の情報かすぐバレてしまいます。でもHTTPSがあれば、その名前は「3X#9@2L$」みたいな、意味不明な暗号に変わって送信されるので、盗聴されても個人情報が何か分からないんです。
ブラウザの鍵マークはHTTPSの証
あなたがブラウザ(ChromeやSafariなど)でサイトにアクセスするとき、アドレスバーの左側に鍵マークが表示されることがあります。その鍵マークが見えていれば、そのサイトはHTTPSという安全な通信方法を使っているということです。つまり、鍵マーク=「このサイトとのやり取りは安全ですよ」という印鑑なわけですね。
反対に、鍵マークがない場合は、そのサイトはHTTPという古い、安全ではない通信方法を使っているということです。そういうサイトでは、パスワードやクレジットカード情報を絶対に入力しちゃいけません。なぜなら、データが暗号化されていないので、ハッカーに盗まれる可能性が高いからです。今の時代、ほぼすべての大事なサイト(銀行やショッピングサイト)がHTTPSに対応しているので、鍵マークがないサイトで個人情報を入力する理由はありませんよ。
HTTPとHTTPSの違い。何が違うの?
HTTPは情報が丸見え状態
HTTPというのは、インターネット上でデータをやり取りするための基本的なルール(プロトコルという)のことです。昔はこれで十分だったんですが、インターネットが普及して、個人情報をやり取りすることが増えてくると、大きな問題が生じました。それは「データが暗号化されていない」という問題です。
具体的に説明しましょう。例えば、あなたがコンビニのWi-Fiを使ってショッピングサイトにアクセスしたとします。もしそのサイトがHTTPを使っていたら、あなたの入力したクレジットカード番号は「1234-5678-9012-3456」みたいに、そのままの形でインターネット上を流れます。すると、もし悪い人がそのコンビニのWi-Fiを悪用して、データの流れを盗聴していたら、あなたのクレジットカード番号をそのまま盗み取られてしまうんです。つまり、HTTPはすべての情報が丸見えの状態でやり取りされるということですね。
HTTPSは情報が暗号化される
一方、HTTPSはHTTPに「S(Secure)」をくっつけたものなので、基本的なルールはHTTPと同じです。でも、一番大事な違いが「データを暗号化する」という機能です。暗号化というのは、つまり「元の形を変えて、読めない状態にする」という作業のことです。
さっきのクレジットカード番号の例で説明すると、HTTPSを使っていれば、「1234-5678-9012-3456」という番号は、送信される前に「8X#4@1L$9K%2J」みたいな暗号に変わります。そしてインターネット上を流れるのは暗号化されたデータなので、途中で盗聴されても、もとの番号が何かは分かりません。受け取り側のサーバー(サイト側)は、その暗号を自動的に元に戻して理解するんですが、盗聴する人は「復号化」(つまり暗号を元に戻す)ために必要な鍵を持っていないので、何もできないわけです。
今の時代、HTTPSは当たり前
2024年現在、Googleなどの大きな企業がHTTPSの使用を強く推奨しているので、ほぼ全てのサイトがHTTPSに対応しています。特に個人情報を扱うサイト(ネットバンキング、Amazon、楽天などのショッピング、LINE、TwitterなどのSNS)では、HTTPSはもう必須です。もしHTTPでアクセスしようとしても、自動的にHTTPSにリダイレクト(つまり勝手に切り替え)される仕組みになっているんです。
だからあなたが「何もしなくても安全」というわけではなくて、サイト側が「我々はHTTPSを使ってるから安全ですよ」と保証してくれているわけです。あなたは鍵マークが見えているかどうかを確認する習慣をつけることが大事ですね。
HTTPSはどうやって安全にしてるの?
暗号化という魔法
HTTPSで使われている暗号化の仕組みは、実はすごくシンプルな考え方に基づいています。想像してみてください。あなたが友達に秘密の手紙を送りたいとします。でも、その手紙が途中で誰かに読まれたら困りますよね。だから、事前に友達と「『A』を『Z』に、『B』を『Y』に…」みたいなルール(鍵という)を決めておくんです。そうすると、あなたが「Hello」と書いて送っても、その友達だけが「それは『Svool』だ、つまり『Hello』のことだ」と分かるわけです。
HTTPSの暗号化も、この原理と同じです。ただ、インターネットの場合は、手紙の鍵はすごく複雑です。数字を組み合わせた「256ビット暗号」とか「2048ビット暗号」という、凄まじく長い鍵が使われているんです。だから、もし盗聴する人がいたとしても、その複雑な鍵を解読するために、スーパーコンピュータを使っても何年もかかってしまうんですね。
SSL/TLSという技術
実は、HTTPSで使われている暗号化技術には「SSL/TLS」という公式な名前があります。つまり「Secure Sockets Layer / Transport Layer Security」という長い名前の頭文字なんです。これは、アメリカの暗号技術の研究者たちが開発した方式で、今のインターネットの安全性を支えている、最も重要な技術の一つですね。
SSL/TLSの仕組みをもう少し詳しく説明すると、以下のような流れになります。まず、あなたのブラウザとサイト(サーバー)が出会うと、「これからやり取りするデータをどうやって暗号化しましょうか」という相談をします。これを「ハンドシェイク」(つまり握手する、という意味)といいます。その握手の中で、どんな暗号化の方式を使うか、どんな複雑な鍵を使うか、という約束が決まります。そして、一度その約束が決まれば、その後のデータは全部その決まったルール従って暗号化されるんです。
証明書という身分証
でも、ここで一つ大事な問題が出てきます。それは「本当にそのサイトが本物か」という確認ですね。もし、悪い人が「俺が銀行だ」と嘘をついて、あなたのデータを盗もうとしたらどうしますか?そこで活躍するのが「証明書」という仕組みです。
証明書というのは、つまり「このサイトは本物です」という身分証明書みたいなものです。世界中には、サイトが本物かどうかを確認する信頼できる機関(認証局という)があります。例えば「DigiCert」とか「Let’s Encrypt」という名前の機関たちですね。サイト運営者は、これらの認証局に「私たちは本物です」ということを証明してもらって、その証明を「証明書」という形でもらうんです。その証明書には、サイトの名前、有効期限、暗号化に使う鍵などの情報が書き込まれています。
あなたのブラウザは、サイトにアクセスするときに、その証明書が本物の認証局から発行されたものか、有効期限が切れていないか、などを自動的に確認するんです。もし証明書が偽造されていたら、ブラウザはあなたに警告を出して、「このサイトは安全ではありません」と教えてくれるわけです。
HTTPSの仕組みをもっと深掘り
公開鍵暗号という天才的なアイデア
HTTPSの中核を担っている暗号化技術を「公開鍵暗号」(つまり、世の中に公開する鍵と、秘密にする鍵の二つを使う暗号方式)といいます。これは、すごく興味深い仕組みなんです。通常、暗号というと「秘密の鍵があって、その鍵を持ってる人だけが読める」というイメージですよね。でも、インターネットのように世界中の人がアクセスしてくるサイトでは、全員に秘密の鍵を渡すわけにはいきません。そこで考えられたのが、「鍵を二つに分ける」というアイデアです。
具体的には、サイト側は「公開鍵」と「秘密鍵」という二つの鍵を持ちます。公開鍵は文字通り、世界中に公開してもいい鍵です。一方、秘密鍵は絶対に他の人に知られてはいけない鍵です。では、どうやって安全を保つかというと、以下のような仕組みなんです。
あなたがサイトにアクセスしたとき、ブラウザはサイトから「公開鍵」を受け取ります。次に、あなたが何か情報(例えば、ログインのパスワード)をサイトに送ろうとしたとき、その情報を公開鍵で暗号化して送るんです。すると、インターネット上を流れるのは暗号化されたデータなので、盗聴者が見ても何のデータか分かりません。そして、サイト側は、その暗号化されたデータを秘密鍵を使って復号化(暗号を元に戻す)することで、あなたが送った情報を読み取ることができるんです。
この仕組みの天才的なところは、公開鍵で暗号化されたデータは、秘密鍵でしか復号化できないということです。つまり、いくら公開鍵を持っていても、秘密鍵がなければ、暗号化されたデータを読むことは、実質的に不可能だということですね。
通信の流れを見てみましょう
では、あなたがHTTPSのサイトにアクセスするとき、実際には何が起こっているのでしょう。流れを追ってみましょう。
まず、あなたがブラウザに「amazon.co.jp」と入力するとします。ブラウザは、Amazonのサーバーに「これからやり取りしたいんですけど」という信号を送ります。すると、サーバーは「わかりました。では、まず暗号化について相談しましょう」と応答して、サーバーの証明書と公開鍵をあなたのブラウザに送ります。あなたのブラウザは、その証明書が本物か確認します。もし「本物だ」ということが確認できたら、ブラウザはランダムに一つの鍵を作ります。その鍵は「セッション鍵」(つまり、この一度のやり取りだけで使う使い捨ての鍵)という性質を持っています。ブラウザは、このセッション鍵を、サーバーの公開鍵で暗号化して、サーバーに送ります。
サーバーは、秘密鍵を使ってそのセッション鍵を復号化します。これで、ブラウザとサーバーの両方が、同じセッション鍵を持つことになりました。これ以降、やり取りされるすべてのデータは、このセッション鍵を使って暗号化・復号化されるんです。つまり、「あなたのパスワード」「クレジットカード番号」「住所」など、全ての情報は、このセッション鍵によって守られた状態で送られるわけですね。
HTTPSを使う時の注意点
鍵マークがあっても完全ではない
ここまで読むと、「HTTPS?鍵マークが見えてれば完全に安全じゃん」と思うかもしれませんね。でも、注意が必要です。HTTPSが保証してくれるのは「データを途中で盗まれないこと」だけなんです。つまり、「途中で盗聴されない」という安全性だけで、「そのサイト自体が悪い企業ではない」という安全性までは保証していないんです。
具体的な例を出しましょう。もし悪い人が「Amzonダッシュボード」という、Amazonそっくりのフェイク(偽の)サイトを作ったとします。そのフェイクサイトに、自分で勝手に証明書を発行して、HTTPSで通信を暗号化したとしましょう。でも、証明書は信頼できる認証局が発行していないので、あなたのブラウザはそのサイトを見たときに「このサイトは信頼できません」という警告を出すんです。つまり、ブラウザは、偽造された証明書を見分けることができるんですね。
ただし、時々「信頼できると見られるサイト名なのに、実はフェイク」というケースがあります。例えば「amaz0n.co.jp」(数字の0が入ってる)みたいに、本物そっくりだけど微妙に違うドメイン(つまり、インターネット上のサイトの住所)を使うフェイクサイトです。これは、HTTPSの鍵マークが見えていても、騙される可能性があるんです。だから、あなた自身が「本当にそのサイトなのか」を確認する習慣が大事なわけですね。
パスワードの安全管理も大事
HTTPSがデータ送信中の安全性を守ってくれるのは確かです。でも、パスワードの安全管理は、あなた自身の責任でもあります。例えば、いくらHTTPSで暗号化されていても、あなたが「password123」みたいな簡単なパスワードを使っていたら、ハッカーに簡単に突破されてしまいます。
安全なパスワードは、大文字と小文字、数字と記号を混ぜて、8文字以上(できれば12文字以上)のものが目安です。例えば「Amazon2024@Sekai」みたいなパスワードなら、結構複雑で安全ですね。また、同じパスワードを複数のサイトで使うのも危険です。もし一つのサイトでパスワードが漏洩したら、他のサイトも狙われてしまうからです。
定期的な更新が重要
HTTPSの基盤となるSSL/TLSは、年々進化しています。昔の「TLS 1.0」や「TLS 1.1」という古いバージョンは、もう安全ではないと判断されて、使用が非推奨になってきました。サイト運営者は、定期的にこれらを最新バージョン(現在は「TLS 1.2」や「TLS 1.3」)に更新する必要があります。
あなトユーザー側としても、ブラウザを常に最新版に保つことが大事です。ブラウザメーカー(GoogleのChrome、AppleのSafari、MicrosoftのEdgeなど)は、セキュリティの穴が見つかると、すぐにアップデート(つまり更新版)を配信するんです。だから、ブラウザがアップデートの通知を出したら、なるべく早く実行することが大事ですね。
HTTPSにも限界がある
最後に、HTTPSにも限界があることを知っておいてください。例えば、あなたが「Twitterで何をツイートしたか」という情報は、HTTPSで暗号化されて送信されるので、途中で盗聴されることはありません。でも、もしあなたのTwitterアカウントそのものが乗っ取られたら、誰かが勝手にあなたのツイートを削除したり、プロフィール写真を変えたりできてしまいます。これはHTTPSの責任ではなくて、アカウント側のセキュリティが破られたということですね。
また、もし詐欺サイトであなたが「自分はお金持ちです」という虚偽の情報を送ってしまったら、HTTPSはそのデータを安全に届けてくれます。でも、あなたが詐欺師に騙されて、わざわざ個人情報を送ってしまったわけです。つまり、HTTPSはデータ送信中の安全性は守ってくれますが、「あなたの判断の安全性」までは守ってくれないんです。だから、インターネットを使うときは、HTTPSの鍵マークを確認しつつ、自分自身も「このサイト、本当に信頼できるのか」という判断力を持つことが大事なわけですね。
HTTPって何?わかりやすく解説
