InfoQは先日,ThoughtWorksのMarko Vuksanovic氏とSam Gibson氏から,同社の月刊誌であるThought Works P2で公開された,TLS/HTTPSとHTTP/2に関する両氏の最近の調査について話を聞くことができた。両氏はユビキタスコンピューティング,TLS/HTTPSの働き,証明書信頼(certificate trust),HTTP2のセキュリティへの影響といった,セキュリティに重点を置いた話題に関して,広範な専門知識を提供してくれた。
InfoQ: 今年は問題がいくつも公表されたことから,インターネットセキュリティが大きな話題になりました。今日の問題として,セキュリティがどの程度重要だとお考えですか?同じような問題が,今後も発生すると考えられている理由についても教えてください。
Vuksanovic/Gibson: セキュリティの問題は昨今に始まったことではないのですが,最近になってよく耳にするようになったのは,コンピューティングがユビキタスになったからです。IoT(Internet of Things)や携帯電話,自動車,サーモスタットなど,コンピュータによって,私たちの生活はますます技術に依存するようになってきました。
その結果として,私たちの私生活も変わりました。どこからでも共有やアクセスが可能で,永続的なバックアップを備えたプラットフォームへと,これまでなかったほどに移り変わっています。そのために,セキュリティ不足による危険性がますます重要な問題になっているのです。
このようなデバイスと,そこにインストールされたソフトウェアは,個人に関する大量の情報を公開することができます。使用する人が増えるほど,公開される情報も増えていきます。このような情報はいずれも,集約された時には,言論の抑制や個人を脅迫する強力なツールになります。
世界中の政府機関が,包囲網によるインターネット監視を現実的手段として認識しています。私たちはSnowden氏のリークによって,多額の費用をかけなくても,何百万という人々のスパイが可能だという事実を知りました。有権者の懸念に対して議員たちはほとんど無関心です。ですが,ありがたいことに,基本的なセキュリティや暗号化を利用すれば,すべての人々のプライバシを向上させることは可能なのです。
InfoQ: あなた方は先日のThoughtWorks P2誌に,HTTPとTLSに関する記事を発表されていますね。InfoQの読者にHTTPS/TLSの動作について,簡単に説明をお願いできますか?
Vuksanovic/Gibson: まず最初に,TLSはプロトコルであり,HTTPSはスキームであることに注意してください。TLSとは,通常のHTTP通信を暗号化処理する,セキュアな“トランスポート層”なのです。TLSには2つの部分があります。
1.ハンドシェイク
2.レコード
TLSの話をする場合,ほとんどがハンドシェイク部分についてであって,レコード部分が話題になることは少ないのですが,非常に簡単だとは言え,プライバシを実現する上で重要な役割を果たすという点では同じなのです。ハンドシェイクは,その名が示すとおり,セキュアなセッションを開始する方法の同意を取るために交わされる,いくつかのメッセージに関係する部分です。安全でないチャネル上で安全なコネクションを確立する部分については,暗号化の特性に依存しています。また,送信者と受信者が自ら主張する者であることの保証については,信頼できる第三者機関(認証局)に依存します。このような証明書信頼のインフラストラクチャは,以前からTLS/HTTPSの弱点であることが証明されています。
ハンドシェイクが完了してセキュアなチャネルを確立したクライアントは,そのチャネルを使用して,誰にも読まれないことを保証されたメッセージ交換を新たに行うことができるようになります。TLS/HTTPSの動作に関しては,ThoughtWorks P2誌の“Under the covers: HTTPS and certificates”という記事で,さらに詳細な説明をしています。
InfoQ: HTTPSを使用した事例を紹介して頂けますか? また,この技術では(認証や権限,否認防止といった観点での)セキュリティを保証できないような制限,ないしシナリオについても説明をお願いします
Vuksanovic/Gibson: HTTPSは現在のインターネットに不可欠な技術です。Facebookにログインする,オンライン銀行口座にアクセスする,クレジットカードでAmazonからキャットフードを買う,奥さんやご主人にプライベートメッセージを送る,といった当たり前のことの多くがHTTPSで実現されています。オンラインプライバシに多大な貢献をしているのですが,ただしそれは“聖杯(the holy grail)”ではありません。
HTTPSはプライバシを保証するものではないのです。ISPや政府は,あなたが何を閲覧しているのかは分からなくても,どのWebサイトを訪れているかを知ることはできます。
ブラウザのURLバーにアドレスを入力すると,ブラウザはそのドメイン名に関連付けられたサーバのIPアドレスを知るために,ドメインネームサーバへの問い合わせを実行します。これを行うために,コンピュータはDNSプロトコルを使用します。このプロトコルは暗号化されていないので,ISP(あるいはDNSサーバへのルートを持っている誰でも)はそれを元に,あなたが見たWebサイトを識別することができるのです。DNSサーバとの通信の暗号化に興味のある読者のみなさんには,DNSCrypt導入の検討をお勧めしたいと思います。
TLSはエンドツーエンドの暗号化と認証を行いますが,この部分は認証機関の信頼性に大きく依存しています。ブラウザから”信頼できる”証明書を呼び出すことのできる署名証明書が盗難にあっていたり,他者の手に渡っていた例もありました。
NSAには,法的権限を行使して不正な証明書を発行する認証局を特定する,あるいは自身のリソースを使用して認証局を立ち上げてブラウザベンダの信頼対象とする,といった対策が可能なはずです。NSAあるいは他の国際機関がこのような対策を実施するのは,もはや時間の問題でしょう。
そうではあっても,HTTPSが極めて便利で,ほとんどすべての人にとって非常に安全な手段であることには違いありません。'3文字略語(訳注:CIAなどの調査機関)’からの個別攻撃は防げないにしても,政府機関がインターネットトラフィックを無差別に傍受するような監視網の実行を,極めて難しいものにすることは可能です。
残念なのは,Alexaトップ1000Webサイトの中で,HTTPSを全面的に採用しているのが約50%に過ぎないということです。これほど多くのWebサイトが,今でもプレーンなHTTPを使っている理由は分かりませんが,暗号化処理がプレーンテキストよりも多くのコンピュータパワーを使用することから,HTTPSは高価過ぎると主張する企業があるのは事実です。
小規模の組織や個人にとって,特に発展途上国では,証明書のコストが高額であるかも知れませんが,幸いなことに,誰でも無償で証明書を取得可能な新しいCA(Let’s Encrypt)が近々立ち上がる予定です。
InfoQ: Toughtworksではマイクロサービスを広範に採用していると聞いていますが,マイクロサービス間のコミュニケーションにおいて,HTTPSは適切な選択肢だと思われますか?
Vuksanovic/Gibson: マイクロサービスはまだ新しい分野ですので,未解決な問題がたくさん残っています。TLSが有効なシナリオもありますし,オーバーヘッドになる場合もあります。TLSの設定によってソリューションが複雑化することは間違いありませんから,必要な場合にのみ使用するべきです。例えば,2つのサービスが常に同じホスト上で動作しているのであれば,TLSはオーバーヘッド以外の何ものでもありません。しかし複数のマシン間で,特にデータセンタを越えたコミュニケーションを行う場合には,TLS(あるいは他の形式の暗号化)を用いるのが適当でしょう。どのような問題でもそうですが,常識的な判断をするべきだと思います。
InfoQ: HTTP/2プロトコルが現れたことで,HTTPとトランスポートレベルのセキュリティにどのような影響があるのでしょうか?
Vuksanovic/Gibson: HTTP/2では,TLSの使用は必須ではありません。標準自体にも,非暗号化接続上でHTTP/2を使用する方法が説明されています。TLSの使用が問題になるのは,非暗号化接続でのHTTP/2をサポートしているブラウザベンダが存在しないためです。TLS over HTTPを使用する場合の問題のいくつかは,これによって解決されます。例えばHTTPでは,新たにコネクションを確立する度にTLSハンドシェイクが実施されます。この処理は非常に重いため,ページのロード時間全体に大きな影響があるのです。HTTP/2で状況は変わります。HTTP/2では新たに,ストリームの概念が導入されます。これは,技術的に言えば,同じTLSコネクションを使って複数のリソースを提供できるようにします。TLSハンドシェイクの総数が劇的に減少するため,ページ全体をロードする時間も削減されるのです。
HTTP/2ではその他にも,ヘッダ圧縮やサーバプッシュといった,ページの初期読み込み時間の短縮を可能にする改善がいくつも導入されています。
デバッグの実施に関して少し心配な部分がありますが,もっとも,それをしなくてはならない人は多くないでしょう!
HTTP/2は主要なWebサーバ(nginxやapache)ではまだ利用できませんが,サポート作業は進行しています。今年の終わりまでには,これらのWebサーバ上でHTTP/2が動作するのを見ることができるでしょう。これによってHTTP/2の採用が飛躍的に増えて,広くサポートされるようになることを期待しています。 その頃までには“Let’s encrypt”が完全に立ち上がると思いますので,ちょうどよいタイミングです。この2つ(無償のTLS証明とHTTP/2の広範な運用)が実現すれば,もはやHTTP/2を使わない理由は何もありません。あと数ヶ月も経てば,HTTP/2がごく普通に使われるようになると思います。
今すぐにHTTP/2を試してみたいのでしたら,httpxプロキシはどうでしょうか。簡単にセットアップできます。その他ではh2checkも便利です。Webサイトが新しいHTTP/2プロトコルを使ったサービスを行っていることを確認するためのツールです。HTTP/2を使って,自分たちのWebサイトプラットフォームの動作を確認しておくことを強くお勧めします。 HTTPを使う時に必要であった調整はもう必要ありませんが,確実に遅くなる部分(分割や結合,シャーディングなど)もあります。ですから私としては,HTTP/2を試して測定し,あなたにとって何がベストかを確認するようにアドバイスしたいと思います。問題が見つかったら,できるだけ早く解決してください。新しいプロトコルが普及したら,すぐにそのメリットを享受できるように準備しておくことです。
InfoQ: 今日はお時間を頂いてありがとうございました。InfoQの読者に伝えておきたいこと(記事やプロジェクト,書籍など)は他にありますか?
Vuksanovic: やってみたいことがたくさんあります。来月あたりはHTTP/2にもっと時間をかけて,動作原理や重要性について詳しく説明してみたいと思っています。もうひとつトピックとして,NTRUEncriptをもっと詳細に調査してみるつもりです。これは格子(lattice)と呼ばれる,比較的新しい数学的構造に基づいた暗号アルゴリズムで,ポスト量子暗号の候補のひとつとされているものです。RSAや楕円よりも高速で演算負荷も低いとされている点も,興味深いところです。最後になりますが,“API Days NZ”でAPIセキュリティに関するプレゼンテーションを行う予定ですので,近くにいる読者の方々は,ぜひ気軽に立ち寄って頂ければと思います。その他の方々は,公開予定の録画やスライドがアップロードされたら,そちらをご覧ください。
両氏のTLS/HTTPSに関する調査の詳細については,ThoughtWorks P2誌の記事 “Under the covers: HTTPS and certificates”として紹介されている。