2018年 5月22日公開

企業のITセキュリティ講座

【アーカイブ記事】以下の内容は公開日時点のものです。
最新の情報とは異なる可能性がありますのでご注意ください。

インターネットの暗号化について~基本編~

ライター/吉澤亨史

  • サイバー攻撃
  • 情報漏えい
  • セキュリティ
  • 個人情報

ITでは、しばしば暗号が使われる。インターネットの通信の暗号化は「SSL化(HTTPS化)」と呼ばれ、全てのWebページを暗号化する常時SSL化の流れが本格的になっている。また、最近話題になったWi-Fiにおける「WPA2」も暗号化の一つだ。ここでは、暗号化の基礎知識として、主にインターネットにおける暗号方式とプロトコル、暗号強度などについて解説する。

暗号化の仕組み

通信の世界では、通信内容を盗み見されないように暗号化するケースが多い。例えば、現在のテレビ放送は暗号化されており、テレビ(受像機)でデジタル地上波の番組を見るためには「B-CASカード」をセットする必要がある。警察無線や消防無線も暗号化されており、受信するためには専用の機器が必要だ。

インターネットの世界も同様で、SSL化(HTTPS化とも呼ばれる)されているページは通信が暗号化される。このほかにもメールを暗号化する技術もあり、無線LAN(Wi-Fi)での通信も暗号化されていることが多い。通信を暗号化することで、個人情報などの重要な情報を入力しても、その情報を第三者に見られる心配がなくなる。

暗号化は、通常の文字列(平文)を特定の決まりによって変換することといえる。基本的な暗号に、「文字を一定数ずらして変換する」というシーザー暗号がある。例えば「後ろに三つずらす」という決まりにすると「otsuka」という文字列が「rwvxnd」になる。この暗号を解く(復号する)ためには、「文字をずらす」という方式と「後ろに三つずらす」という数を知らないと難しい。

暗号の世界では、暗号化の方式のことを「アルゴリズム」、暗号化を行う数のことを「鍵」という。アルゴリズムと鍵が分かれば、基本的に暗号文を復号できる。もちろん、シーザー暗号では瞬時に解読されてしまうので、インターネットではさらに複雑な暗号が使用される。それでもCPUやGPUなどのプロセッサーの演算能力が年々向上しているため、定期的に見直しが行われている。

暗号の基本「シーザー暗号」

目次へ戻る

SSLによる暗号化

前述のように、暗号化と復号に同じ鍵を使用することを「共通鍵暗号方式」という。しかし、暗号が複雑になればなるほど、鍵のやり取りに時間がかかり、相互の暗号通信を比較していくことで暗号が破られる可能性がある。そこでSSL化されたインターネット通信では、「公開鍵暗号方式」が普及している。この方式では、公開鍵と秘密鍵の二つの鍵をペアで使用する。

SSL通信では、Webサーバーにインストールされる「SSLサーバー証明書」に、公開鍵と所有者情報、そして認証局の電子署名が記録されている。また、ユーザー側のWebブラウザーにもSSLサーバー証明書があり、一方の鍵で暗号化された平文は、もう一方の鍵を使わないと復号できないようになっている。暗号鍵と復号鍵を別にすることで、安全性を高めている。

実際の通信では、最初にWebサーバーにインストールされたSSLサーバー証明書を通じてWebサイト運用者の公開鍵をWebブラウザーが受け取る。Webブラウザーはその公開鍵を使ってメッセージの暗号化を行う。Webサーバーは、受け取ったメッセージを自身が持つ秘密鍵で復号するという流れになる。秘密鍵はWebサーバー上に厳重に管理されているので、第三者が秘密鍵を入手してデータを盗聴することはほぼ不可能だ。

なお、SSL通信の場合は、暗号化に使われている公開鍵の暗号強度を確認することができる。SSL通信の場合、Webブラウザーのアドレスバーに鍵のアイコンが表示される。このアイコンをクリックし、「証明書の表示」(Internet Explorerの場合)をクリックすることで証明書の内容を参照できる。「詳細」タブをクリックして「公開キー」の項目にある「RSA(2048Bits)」などの記述が公開鍵の暗号強度となる。

目次へ戻る

政府が推奨する暗号方式

RSAは暗号アルゴリズムの一つで、鍵の生成、暗号化、復号に使用される。1977年に開発された暗号アルゴリズムであり、解読も進んでいるが、鍵の長さを長くすることで解読に時間をかけることができる。そのため現在でも利用されている。鍵の長さはビット(Bit)で表されるが、前述の「RSA(2048Bits)」がそれを表している。

ビット数を上げることで、暗号の複雑さは指数関数的に高くなる。しかし、同時に復号にも時間がかかるようになる。一方で、CPUやGPUの性能も年々向上しているため、復号処理と解読処理のバランスにより、最近では2048ビットが多く使用されている。なお、SSLサーバー証明書などでは「ECC暗号」も使用されている。これは楕円曲線暗号と呼ばれるもので、RSA暗号よりも短い鍵長で、より複雑な暗号化が可能となっている。

SSLサーバー証明書の項目には、「署名アルゴリズム」という項目がある。これは、Webサイトが改ざんされていないことを証明するための「ハッシュ関数」と呼ばれる暗号アルゴリズムだ。特定のデータをハッシュ関数により暗号化すると、特定の値が得られる。この特性を利用して、データが改ざんされていないかを調べる。この項目にある「sha256RSA」もRSA暗号だが、sha(SHA)はハッシュ化の際に使われる技術で、「SHA-0」「SHA-1」は脆弱なため、使用禁止となっている。現在では「SHA-256」や「SHA-512」などビット数で表記される。

日本政府も、暗号技術には積極的に情報発信を行っている。日本では、総務省と経済産業省の主導で「CRYPTREC(Cryptography Research and Evaluation Committees)」というプロジェクトを推進している。世界最先端のIT国家を構築するには、基盤となる電子政府のセキュリティを確保する必要があり、安全性に優れた暗号技術を利用することが不可欠であるという考えから、電子政府推奨暗号の安全性を評価・監視し、暗号技術の適切な実装法・運用法を調査・検討するプロジェクトとなっている。

CRYPTRECでは、2013年3月に「電子政府における調達のために参照すべき暗号のリスト(CRYPTREC暗号リスト)」を策定している。このリストは、電子政府推奨暗号リスト、推奨候補暗号リスト、運用監視暗号リストで構成されており、政府が使用すべき暗号アルゴリズムやプロトコルについてまとめている。これを見ると、さまざまな暗号技術があることが分かる。ただし、その全ての詳細を理解する必要はない。

暗号技術と解読技術は、イタチごっこに近い状況にある。今後はIoT機器の普及により、インターネットが生活の一部となっていき、さまざまなデータがインターネットを通して送受信されるようになる。そこには個人に関する重要なデータも含まれているため、ユーザーとしては常にIoT機器をアップデートするといった対応が求められる。なぜなら、そのアップデートには暗号の強化も含まれるためだ。

日本政府が公開している「CRYPTREC暗号リスト」

目次へ戻る