コードサイニング証明書の役割とは?
かつてソフトウェアは、PC専門店や家電量販店などの店頭で『CD-ROMパッケージとして』購入するのが一般的でした。しかしブロードバンドの普及に伴い、インターネット上でソフトウェアをダウンロードする方法が主流となりました。また、店頭でパッケージを購入した場合でも、ソフトウェアのアップデートや修正パッチなどはオンラインで配布されることも多くあります。
ここで気をつけなければならないことがあります。「そのソフトウェアが本物かどうか?」「悪意のある第三者によって、本物に似せた偽物が作成されているのではないか?」という点です。PC専門店や家電量販店で購入する場合は「その店に対する信用」もあるため、安心して購入できました。しかし、インターネット上でソフトウェアを配布するWebサイトが正規販売店か、それとも悪意のある第三者が作成したなりすましサイトなのか、ダウンロードするユーザ自身がきちんと判断していかなければなりません。
もしも、偽物のソフトウェアをダウンロードしてしまった場合、PCがマルウェアに感染し様々な被害を受ける可能性があります。そのため、ブラウザやメーラーなどには警告表示を行う機能を持つものも増えました。たとえば、Microsoft SmartScreenは「WindowsによってPCが保護されました。(Windows8でインストール時)」などの警告を表示するのです。
ユーザのPCや情報を守るという点ではメリットの大きいこの機能ですが、ソフトウェアを配布する側にとっては、新規ユーザ獲得へのハードルが上がることになります。警告が表示されるだけで「なんだか怖い」と感じ、ダウンロードを中断してしまうユーザもいるからです。
警告が表示されず、ユーザに安心してソフトウェアをダウンロードしてもらうため、コードにデジタル署名を行うという方法があります(コードサイニング)。コードサイニング証明書は「このソフトウェアは本物です」「正規の配布元により配布されています」ということを証明し、ソフトウェアが本物であり、改ざんもされていないことを証明する役割を果たします。その結果、ユーザに対する「発行元を確認できませんでした。このソフトウェアを実行しますか?」などの警告表示がなくなり、ユーザは安心してソフトウェアをダウンロードすることができるようになります。
コードサイニング証明書の仕組みとは?
コードサイニング証明書は、ソフトウェアを配布する際、どのように活かされるのでしょうか? 配布する側の簡単な流れを追ってみます。
- まず「コードサイニング証明書」を取得します。
- 配布したいソフトウェアのコードからハッシュ値を生成します。
ハッシュ値とは、もとのデータに「ハッシュ関数」というものを用いて演算を行った結果のことです。同じデータにハッシュ関数による演算を行えば、同じ結果が得られます。いっぽうで、少しでも異なるデータからは同じハッシュ値が得られる可能性はほとんどありません。そのため、ハッシュ値を比較することで、データの改ざんが行われていないかをチェックすることができます。 - 配布元によるハッシュ値の暗号化(=デジタル署名)を行います。
- 配布するコード、デジタル署名されたハッシュ値、配布元のコード署名証明書を含む配布パッケージを作成します。
- パッケージを配布します。
ソフトウェアをダウンロードした人は、コードサイニング証明書の有効性を検証します。有効であることが分かったら、デジタル署名が行われたハッシュ値を配布元の公開鍵を使用して復号します。
さらに、受け取ったコードからハッシュ値を生成し、上記の手順で復号したハッシュ値が同一であるかどうかを確認します。同一であればコードの改ざんが行われていないことになり、同一でなければ改ざんされている可能性があることが確認できます。
高まるコードサイニングの重要性
ソフトウェアを配布したいと思っても、ユーザが「本当に大丈夫なのか?」と疑念を抱いてダウンロードしてくれなければ、うまくいきません。 特に利用者が多いInternet Explorer8以降またはWindows8・Windows RT以降では、ユーザがソフトウェアをダウンロードしようとするときは、その信頼性の評価を行い、評価が確立されていないソフトウェアをダウンロード、インストールする場合には警告表示を行う方法で、ユーザのPCを守ろうとします。
しかし、EVコードサイニング証明書で署名されたソフトウェアは、Microsoft SmartScreenにて配布開始時から高評価を確立することができます。ソフトウェアのインストール時・ダウンロード時に警告が表示されないため、ユーザの安心感が高まります。
もしも、悪意のある者が、貴社の名前を騙って改ざんソフトウェアなどを配布した場合、貴社に責任がないのに企業イメージがダウンしてしまう可能性があります。しかし「当社の正規ソフトウェアにはコードサイニングを行っています」「コードサイニングのないソフトウェアは偽物です」と言い切ることができるなら、貴社のイメージは良好な状態に保たれるでしょう。
ユーザのPCを守り、安心感をもってソフトウェアを利用してもらうため、開発元である貴社への信頼性を保つために、コードサイニングの重要性がますます高まっているのです。
関連リンク