TLSとコード署名

TLSとコード署名

TLS

TLS と SSL

TLS(Transport Layer Security)、およびその前バージョンであるSSL(Secure Sockets Layer) は、インターネットで通信を行う際の認証および通信時号化の仕組みです。TLS や SSLというと暗号化のイメージが強いのですが、実は暗号化通信をするにあたって最初に重要になるのは「相手が信頼に値するのかを確認する」というプロセスです。なぜなら、仮に通信の相手先が誰かのなりすましだったら、暗号化しても結局情報が漏れてしまうことになるからです。このため、TLSでは最初に、ハンドシェイク(握手)プロトコルという相手を認証するための手続きが実行されます。その手続きの中に「お互いが相手の持っている証明書を受け取り、検証する」というステップがあります。証明書が身元の正しいものであるかは、証明書の認証局から送られてくるリストと突き合わせることで確認できます。

TLS の重要性

TLS は Web の通信で用いられるなど、幅広く用いられているため、その安全性は重要です。TLSの前のバージョンである SSL1.0や SSL3.0 ではセキュリティ上の脆弱性があることがわかったため、SSL1.0 や SSL3.0 は現在では非推奨になっています。

Web サーバの常時 SSL(HTTPS)化とブラウザの挙動

セキュリティ上の理由から、Web サーバの常時 SSL 化が推奨されています。最新の Chrome ブラウザを用いて SSL 化されていない Web サイトを閲覧すると、アドレスバーの左に「保護されていない通信」と表示されます。

コード署名

コード署名の目的

コード署名は、配布するプログラムコードに対して行う署名であり、そのブログラムが正当であることを証明するために付けられます。文書にサイン(署名)するのと同じです。コード署名は、セキュリティパッチなどのアップデートプログラムの配布において、特に重要になります。アップデートプログラムはインターネット経由で配布されるため、攻撃者が正規アップデートになりすまして、マルウェアなどのプログラムを挿入させる危険があります。それを防ぐため、誰がそのプログラムコードを作成したかを検証するために、コード署名を使います。

コード署名のベースになる電子署名と公開鍵暗号方式

コード署名のベースになっているのは電子署名の技術です。電子署名は、紙の代わりにファイルなどのデジタルデータを対象にして、次の2点を保証することができます。* データの原本性の保証(署名をしたときからそのコンテンツが変わっていないことの保証)誰が署名したかの保証なお、電子署名のベースになっているのは公開鍵暗号方式の技術です。公開鍵暗号方式では、誰でも暗号化できるようにするために公開鍵を使い、特定の人間が復号できるようにするために秘密鍵を使います。電子署名では、特定の人間のみが署名することができ、かつ誰でもその署名を検証できるようにする必要があります。この性質は、公開鍵の性質の裏返しなのです。そこで、電子署名では署名に「秘秘密鍵」、署名の検証に「公開鍵」を使います。電子署名と公開鍵暗号方式の関係、また秘密鍵と公開鍵の使い方に注目して電子署名、およびコード署名の仕組みを理解するようにしてください。

セキュリティカテゴリの最新記事