SSL/TLS の解説 【Part.1】 暗号化技術

ユーザーの「個人情報」「クレジットカード情報」を扱うサイトを運用する場合、セキュリティ管理が非常に重要です。

一般企業でも個人情報が漏えいした場合、業務停止するほどの損害が発生する可能性もあります。

 

 

 

セキュリティ管理が甘くて加害者も被害者も痛い目に合う

記憶に新しいところでは「ベネッセ」が個人情報を漏えいしてお詫びに一人「500円のクオカード」を配りました。

「知られたくない個人情報が流出しているのにたったの500円?」と思うかもしれませんが、ベネッセは3504万件もの個人情報を漏えいしています。

つまり、

500円×35,000,000件=17,500,000,000円=175億円

ものお金を支払っているのです。

 

「合計で高ければ一人一人が納得いかない金額のクオカードでもいいのか?」と思うかもしれませんが、日本ではここら辺が限度でしょう。

セキュリティ管理が甘くて個人情報が漏えいし「ベネッセ」「顧客」も痛い目に遭いました。

 

レンタルサーバーはインターネットに晒されているので、様々な危険があります。

  1. 個人情報の漏えい
  2. 通信内容の改ざん
  3. 不正侵入
  4. コンテンツの書き換え
  5. 情報の窃取
  6. ウィルスの感染
  7. サービス不能状態にする

 

レンタルサーバーで SSL を導入するメリット

レンタルサーバーで一方的に情報を公開しているだけなら問題ないと思うかもしれませんが、様々なメリットがあります。

 

データが暗号化される

レンタルサーバーでわざわざ SSL を導入するメリットですが

  • 会員制サイト
  • ネットショップ

などの場合は、SSL を導入してインターネット上に流れる「個人情報」や「パスワード」や「クレジットカード情報」などのデータを暗号化するのは当然ですが、「会員制サイト」でも「ネットショップ」でもない、情報を公開するだけのサイトでもメリットがあります。

 

SSL証明書により身元が保証される

過去には「新生銀行」「三菱東京UFJ銀行」のサイトそっくりなフィッシングサイトが作られた事例があります。

その際にどこで「本物」と「偽物」を見分けるのか?というと「URL」でもある程度分かるかもしれませんが、ハッキリと分かるのは「SSL証明書」です。

 

例えばフィッシングサイトは「紛らわしい URL」や「分かりにくくて長い URL」をつけます。

「amazon.com」ではなく、「amazon.com.cn.net」などや「united-credentials-amazon.com.net」などパッと見すぐに判別しにくい URL をつけています。

 

そのため、最終的には SSL 証明書で判断するしかありません。

 

Google がサイトの全ページ SSL 化を推奨している

Google がサイト全ページの SSL 化を推奨しています。

以下の記事でも詳しく説明しましたが、「Google ウェブマスター向け公式ブログ」「HTTPS をランキングシグナルに使用します」という記事を公開しています。

 

【無料 独自SSL証明書】 なぜ無料でSSL証明書を提供できるのか? Let’s Encrypt とは何か?

 

WordPressのサイトがパスワードクラッキングで乗っ取られない

WordPress でサイトの「ログイン」と「パスワード」がクラッキングされる危険性があります。

せっかく WordPress で作った自分のサイトがいつの間にかクラッキングされて乗っ取られた場合、ウィルスを仕組まれたり、記事を改ざんされたりする危険性があります。

その結果、そのサイトにアクセスしたユーザーのパソコンにウィルス感染して損害賠償を請求されたり、改ざんされた記事により自分が被害を被る可能性もあります。

 

 

レンタルサーバーで SSL を導入しないことによるデメリット

レンタルサーバーで SSL を導入しないことで以下のデメリット(被害)が発生する可能性があります。

  1. なりすまし
  2. データの改ざん
  3. 否認
  4. 情報漏えい
  5. サービス不能
  6. 権限の昇格

ネットショップを運営しているなら上記のデメリットがありますが、単純に情報を発信しているだけのサイトの場合は、上記でも説明しましたように WordPress を使っている場合、パスワードをクラッキングされて乗っ取られる危険性があります。

 

TLS 1.2 が無難

現在の SSL の最新バージョンは「TLS 1.2」です。

TLSはTransport Layer Securityの略です。

「TLS」というと「SSL」とは異なるもののように思えますが、「SSLのバージョンの一つ」と思ってもいいです。

実際、今でも「SSL」を「SSL/TLS」と表記します。

 

SSL/TLS の各バージョンは「下位互換性」はないが、ほぼ同じ機能

整理すると

  • 下位互換性 → 上位バージョンが下位の機能を保有する
  • 上位互換性 → 下位バージョンが上位の機能を保有する

です。

 

つまり、「ロボットA」の

バージョン 1.0 → 歩ける、走れる

バージョン 2.0 → 歩ける、走れる、飛べる

バージョン 3.0 → 歩ける、走れる、飛べる、泳げる

の場合、「ロボットA バージョン 3.0 は 下位互換性があるので、バージョン 1.0 と同じように歩くことができます」と言えます。

ただし、「互換性」という言葉は人によって解釈が異なるケースがほとんどでトラブルを引き起こす可能性があるので、使わない方がいいでしょう(笑)

 

ちなみに、「SSL/TLS は下位互換性がないがほぼ同じ機能」というのはどういう意味で使っているかと言いますと、上位バージョンの SSL は下位バージョンの SSL が持っている機能をサポートしていない(持っていない)ということです。

 

例えば下位バージョンで使われていた DES は比較的短時間で暗号化を解読されてしまうため、最新の TLS 1.2 では「廃止」されています。

つまり「下位」の機能を使うことができません。

 

ということを「SSL/TLS は下位互換性がないがほぼ同じ機能」と表現しました。

POODLE 攻撃

POODLEとは「Padding Oracle On Downgraded Legacy Encryption」の略です。

Oracle はオラクル社のデータベース「オラクル」のことではなく、「パディングオラクル攻撃」という攻撃名です。

 

POODLE 攻撃は「SSL3.0」のパディングチェックの仕組み(仕様)を利用して攻撃します。

SSL3.0 はパディングの最終1バイト分だけをチェックして正しければメッセージ全体が正しいと判断する仕様です。

そのため、偽のメッセージでも 1/256 の確率で正しいものとなってしまいます。

 

1バイトは、8ビットです。

「00000000」~「11111111」まで256通りあります。

1つ1つ解析していくと、「00000000」、「00000001」、「00000010」、「00000011」と256分の1の確率で当たるので、 何度も繰り返しているうちに暗号化データが復号化される恐れがあります。

 

つまり「SSL3.0」は仕様上脆弱性を抱えてしまっているのです。

 

TLS1.0でも「POODLE攻撃」が有効との情報がでて、確かに「TLS1.0」でも「POODLE攻撃」が有効な場合があることが分かりましたが、仕様上の脆弱性ではないため、セキュリティパッチを適用した場合は POODLE 攻撃は効果がないことが分かりました。

 

ちなみに、「TLS1.1」「TLS1.2」とバージョンが出ているので、古い「TLS1.0」に脆弱性があるのでは?脆弱性があるから上位バージョンがリリースされたのでは?と思うかもしれませんが、「TLS1.1」「TLS1.2」はより暗号の強度が強くなったということでバージョンが上がっています。

 

Heartbleed

一時期話題となった「Heartbleed」は「SSL」の脆弱性ではありません。

「Heartbleed」は「OpenSSL」に存在する脆弱性です。

OpenSSL の「ハートビート(Heartbeat)」の脆弱性を突かれたため「Heartbleed」と命名されました。

 

OpenSSL のバージョンをアップデートするかパッチを適用すれば攻撃を防ぐことができます。

 

脆弱性を突かれた場合の被害としては

  • クッキーが盗まれる
  • アカウント名&パスワードが盗まれる

など大きな被害が考えられます。

 

DES

DES とは「Data Encryption Standard」の略です。

アメリカの旧国家暗号規格でした。

ブロック暗号型と呼ばれ固定長の平文を入力して、平文と同じ長さの暗号文を出力します。

現在、DES は使われなくなりましたが(古いシステムではまだまだ使っているところもありますが・・・)、使われなくなった理由は、DESの固定長の長さは 64ビットですが、そのうち8ビットがパリティチェックのため実質「56ビット」になります。

この鍵長の短さのため、1999年に22時間で解読されると広告されました。

 

DESの暗号化を強固にするため「3DES」が開発されましたが、現在では 3DES よりも「AES」がより暗号化の強度があるため「AES」が使われています。

 

 

 

SHA1、SHA2はどこで使うのか?

「DES」や「AES」は暗号化の方式ですが、その一方「SHA1」「SHA2」という用語を聞いたことがあるかもしれません。

「SHA1」や「SHA2」は「ハッシュアルゴリズム」です。

ハッシュは暗号化をするためのアルゴリズムではありません。

ハッシュは、メッセージが正しいことを証明するために利用します。

ハッシュを利用することで、もしメッセージが改ざんされたら検知することができます。

 

SSLが無料で利用できるレンタルサーバー一覧

以下、レンタルサーバーを借りた際に SSL 証明書が「無料」で利用できるレンタルサーバー一覧です。

 

ロリポップ!

ロリポップ!は無料で SSL 証明書の「Let’s Encrypt」を提供しています。

ロリポップ!お手軽に格安価格で利用できます。

 

 

エックスサーバー

エックスサーバーも無料で SSL 証明書の「Let’s Encrypt」を提供しています。

一度設定してしまえばあとはエックスサーバーが運用管理をしてくれるので非常に楽です。

エックスサーバーは非常に高速で安定しているので主力のホームページやサイトを載せるのに適しています。

 

カゴヤ

カゴヤは「RapidSSL」を無料で提供しています。

「RapidSSL」は有料の SSL 証明書サービスですが、レンタルサーバーをレンタルすることで、「RapidSSL」が無料で利用できるようになります。

 

Zenlogic

Zenlogic も無料で SSL 証明書の「Let’s Encrypt」を提供しています。

Zenlogic は月額890円と格安で且つディスクも300GB、しかも無料で独自 SSL 証明書が利用できるので、お得なレンタルサーバーです。

 

 

Let’s Encryptについて

Let’s Encrypt について以下の記事にまとめています。

 

【無料 独自SSL証明書】 なぜ無料でSSL証明書を提供できるのか? Let’s Encrypt とは何か?

 

 

レンタルサーバーのサービスを利用せずに、自分で Let’s Encrypt を導入する手順

 

「Let’s Encrypt」は無料で利用できる SSL 証明書ですが、自身で運用・管理することはおススメしません。

その理由は、個人が SSL 証明書を運用・管理することはかなり手間がかかるからです。

定期的にスクリプトを動かして SSL 証明書を更新する必要がありますが、業務として運用しているくらいでないと結局は利用しなくなるだろうと思います。

それよりも無料で「Let’s Encrypt」を使えて、且つ運用管理までやってくれるレンタルサーバー業者を利用する方がはるかに「費用対効果」があります。

 

 

まとめ

SSLについて調べれば調べるほど面白いというか、興味が深まります。

ちょっとした数学の知識の復習にもなりますが、あまり複雑すぎると勉強のモチベーションが下がってしまうのがつらいです。。

 

 

 

 

 

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

AlphaOmega Captcha Medica  –  What Do You See?
     
 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください