SSL説明

SSLの概要


SSL(Secure Sockets Layer )は、インターネットの初めの頃、船の舵のアイコンで有名だったネットスケープ・ナビゲータという一世を風靡したwebブラウザを作ったネットスケープ社が開発したWebサーバとWebブラウザ間で認証や暗号化を行うための通信方式です。ネットワーク自体を流れるデータ自体を暗号化するIPsecという方法がありますが、全体にかかわらないので安価に実現できるます。ですからwebやり取りなどの必要な情報部分だけを暗号化することができます。

また、SSLはサーバを設定すれば、mailやftp(ファイル転送)時にも使えますので重宝します。ftp.ドメイン.comなども合わせて取得すればユーザもわかりやすくなります。

基本となるRSAなどの技術は、大きな素数から合成した数の素数分解は非常に難しいので大きな素数を知っている人しかできませんというようなものです。大きな素数は高い値段で取引されます。

脆弱性


SSL Ver 3.0ではCBCモードのブロック暗号の空きを埋めるパディングデータに規則性があり、中間者攻撃(Man-In-the-Middle Attack)を行いエラーを起こし再送させ、1回に1バイトづつ解読するPOODLE(Padding Oracle On Downgraded Legacy Encryption)攻撃という脆弱性が発見された。
このときは、事前に脆弱性のアナウンスと原因と対応策発表の日付予告があっただけで脆弱性の内容もわからず、発表後に内容を元にする攻撃が始まる前に対策するために待機状態でした。発表を見てから攻撃を作る人たちもいるので、原因や対策より先に脆弱性のアナウンスを行い周知させ一斉に対策という形になります。
他にもサーバのメモリーへの不正アクセスのHeartbleed Bugや、Factoring attack on RSA-EXPORT Keys(FREAK)、diffle-Hellman(DH)の鍵交換で見つかったLogjam攻撃など、ときどきあります。これらの多くは、SSLサーバ証明書やSSL関連製品に関する脆弱性ではないことを追記しておきます。
中間者攻撃が必要など標的型ではないかぎり、最新のSSL/TLSが搭載されたwebブラウザと、管理されたwebサーバとSSL認証書があれば安全性は高いと言えます。

 

SSL/TLSという表記


SSLは、TLS(Transport Layer Security)と名前を変え、標準化が進みVer 1.2となっています(次は1.3ではなくハンドシェイクの改善や性能向上のための大きな仕様変更のためVer 2.0?)。TLS 1.0-1.1の場合、実装によって同様のPOODLE攻撃ができることがわかっていますので、webサイト側はSSLモジュールを最新に保つことと、ユーザ側は最新のwebブラウザを使うことを心がけましょう。サーバ側が最新のSSLモジュールを使っていても、webブラウザが対応していない場合、サーバ側は自動的に下位互換性を保つためにプロトコルを下げていきます(TLSダウングレード攻撃)。サーバ側では、どこまでダウングレードして互換性を保つか正しく設定する必要があります。
すべての事業体は2018/6/30の発行日をもってNISTの定義によるTLSの安全バージョンのみを使用しなければならないので、解説しているサイトなどを参考にプロトコルの下位互換性設定をSSL/TLS 1.0は無効、TLS 1.1以上を有効にするようにしましょう。

SSLから、TLSに規格が変わりましたが、TLSなにそれおいしいの?状態なので、実際には100%近くTLS1.2で通信していても、SSL証明書と一般に言われています。説明でもSSL単独表示か、良くてもSSL/TLSと併記しています。

 

ECC(楕円曲線暗号)暗号化


最近は情報入力画面だけでなく、常時SSL接続かも進み規模が大きいもしくは、ユーザが多いネットワークではSSL/TLSの暗号化による遅延が多くなっている。ECCは短い桁長でも暗号化の強度が高いので高速処理ができます。今まで使われていたRSAという桁数が大きい数の素因数分解を使った暗号化では暗号強度と桁数の相関が強すぎます。2048bitのRSAは、ECCでは224bitという短さになり、一般的なECC 256bitであれば、3072bitという長さに相当します。いかに早く処理ができるか想像できます。また、当然通信のやり取りも短くなりますので、有利になります。また、ECC対応のSSL認証はRSAしか対応していない古いwebブラウザの場合は両方対応できるライセンスになっています。普通に導入すればユーザ側は気にしなくて大丈夫です。

 

公開キー、暗号キー


秘密キーで暗号化されたものは、公開キーで解読でき、公開キーで暗号化されたものは、秘密キーで解読できるというセットとなるもの。webサーバなどの情報発信者は秘密キーを保持し、一般の方は公開キーを保持する。また、秘密キーと公開キーが関連しているため、盗聴には両方必要なので暗号のbit数が増えた意味となり演算にも時間がかかり実質無理。仮に秘密キーが漏れてしまっても、その公開キーにしか適用できない、つまり、一生懸命解読しても、そのサイトにしか通用せず、他のサイトは最初からとなり中間者攻撃&モニタリング型では時間を稼ぐことができるというのもメリットです。