ウェブ

シマンテックのSSLサーバー証明書問題とHPKPの必要性を考える

 

ー SSLサーバー証明書とは何か

ある程度ウェブに詳しい人であればSSL/TLSという言葉を耳にしたことがあると思いますが、SSL/TLSについて簡潔に説明をすると、ウェブサイトとウェブサイトを訪問したユーザー間のデータのやり取りを暗号化する技術のことです。この暗号化技術はユーザーのプライバシーを守るために欠かせないものであり、これを有効化するためにはSSLサーバー証明書を専門機関に発行してもらわなければなりません。

SSLサーバー証明書の発行方法にはいくつか種類があるのですが、最も簡単な方法でもドメイン所有者の登録情報を確認し、ドメイン認証を行わなければなりません。例えばAmazonのAWS Certificate Managerを使ってサーバー証明書を発行するためには、必ずドメイン登録に使用しているメールアドレス、もしくは”admin@domain.com”のようなドメイン・メールアドレスからドメイン認証を行う必要があります。

当サイトではLet’s Encryptを使って発行した無料のサーバー証明書を使用してサイトを暗号化通信に対応させていますが、この場合でもサーバーにLet’s Encryptのアプリケーションをインストールし、必要なディレクトリを作成した後、認証局にメールアドレスを登録するなどをしてドメイン認証を行っています。このように自身が所有していないウェブサイトの証明書が手に入ることは通常ありえません。

 



 

ー シマンテックがサーバー証明書を不正発行したことが大きな問題となったわけ

しかしながら、上記のような正規の手順を踏まずにサーバー証明書を発行してしまうサーバー認証局が存在することも確かです。また、認証局がサイバー攻撃を受け、不正な証明書を発行するケースも多々確認されています。このような問題に対応するため、GoogleやMozillaでは不正な認証局からのサーバー証明書をブラウザ側で正規の証明書と扱わないようにしたり、エラー画面を表示することで対処しています。

2015年に中国の大手サーバー認証局であるCNNICがサーバー証明書を大量に不正発行して問題になった際も、GoogleやMozillaはブラウザ側で正規の証明書と認識しないようにアップデートし、段階的にCNNICから発行された全ての証明書を無効化することで対処しました。

実はウェブ・セキュリティの業界で大問題となったシマンテックのサーバー証明の不正発行問題は、上記のCNNICの問題とよく似ています。シマンテックといえば、言わずと知れた世界的コンピュータ・セキュリティの会社ですが、2015年に同社傘下のThawteが正規の手順を踏まずに”Google.com”などのサーバー証明書を関係のない第三者に発行したことが問題視されました。

これの何が問題かというと、全く関係のない偽サイトが正規のサーバー証明書を使用することで、ユーザーが詐欺などの被害に遭う可能性があるためです。事実、日本でも三菱東京UFJ銀行を始めとした多くの企業がシマンテックのサーバー証明書を使用しており、この証明書が信頼できないとなると、ウェブサイトの信頼性に大きな影響を及ぼします。

2017年8月、シマンテックは同社が発行するサーバー証明書の信頼回復が難しいと判断したのか、DigiCert社にSSL/TLS証明書事業を売却することを発表しました。GoogleやMozilla側も不正発行された可能性があるサーバー証明書は順次無効化していくことを発表しているため、この問題は直に収束していくものと思われます。

 

 

ー 証明書の不正発行問題に対応するために考案されたHPKPとその必要性

しかし高いお金を出してシマンテックからサーバー証明書を発行してもらっていた会社からすれば、上記の件はたまったもんじゃありません。ましてや銀行などであれば、ユーザーが詐欺などの被害に遭う可能性を無視はできません。では、何か対策方法はないのでしょうか?実はこれらの不正な証明書はHPKPという技術で対策をすることができます。

HPKPとはHTTP Public Key Pinningの略で、私の理解の範囲で簡潔に説明をすると、公開鍵と呼ばれる証明書の情報を接続したユーザーのブラウザ上に保存し、以後、サイトに接続する度に公開鍵を参照することで不正に発行された証明書を見破るというものです。HPKPの技術的仕様に関しては私も完全に理解しているわけではないため、詳細を知りたい方は下記のサイトをご参照ください。

 

これだけ聞くと素晴らしい仕組みですが、HPKPにはやや面倒な問題があります。それはサイト側とブラウザに保存されている公開鍵が異なってしまうと、一定期間ユーザーがサイトに接続できなくなってしまうことです。サーバー証明書は一定期間ごとに更新をしなければならず、同時にHPKPの公開鍵も引き継ぎをする必要があります。ここで公開鍵の引き継ぎに失敗してしまうと、HPKPの設定にもよりますが、ユーザーによっては数ヶ月間サイトにアクセスができないといったケースが考えられます。

また、公開鍵の設定や管理が面倒なだけでなく、SafariやMicrosoft EdgeといったブラウザではHPKPに非対応だったりするため、HPKPを導入するメリットよりもデメリットの方が現在のところは大きく見えてしまいます。このような不正発行された証明書を見破る技術は、近い将来どのウェブサイトにおいても必須になるかとは思いますが、個人的にはHPKPはまだまだ改良の余地のある技術に感じます。

私が管理しているサイト上でもHPKPに対応させようかと考えたこともありましたが、Let’s Encryptでは最長でも90日以内にサーバー証明書を更新しなければならないことと、私のブログのような小規模なサイトがフィッシングサイトとして活用されるとは考え難いため、HPKPの採用は見送りました。銀行のような詐欺に使われやすいサイト上では可能な限りHPKPを導入するのが良いかとは思いますが、中規模以下のサイトでは特に証明書の不正発行を気にしてHPKPを導入する必要性はないのかなと思います。

Tagged , ,

Leave a Reply

Your email address will not be published.