セキュリティ対策コラム ―「暗号の基礎」そもそも暗号方式とは―注目される暗号の安全性問題<第2回>

【1】暗号方式の分類

暗号は、暗号鍵と呼ばれる情報(パラメータ)と暗号化の処理メカニズム(アルゴリズム)によって、暗号化の対象とする文書(平文)を暗号文に変換するものです。その暗号鍵の特性の違いによって、秘密鍵(対称鍵)暗号方式と公開鍵(非対称鍵)暗号方式とに分類されます。秘密鍵暗号方式としてはDES、公開鍵暗号方式としてはRSAが良く知られています。また、長いメッセージを圧縮するためのハッシュ関数は、暗号化の補助、ユーザ認証やディジタル署名などに応用されているため、暗号方式の標準化と同様に議論されています。ハッシュ関数は、ハッシュ値(圧縮後の値)から元のメッセージを再現することはできず(不可逆な一方向性関数)、また同じハッシュ値を持つ異なるメッセージを作成することが極めて困難であることが求められます。

1. 秘密鍵(対称鍵)暗号方式(図1参照)

文書(平文)を暗号化する鍵と暗号化された文書を復号化する鍵が同じ(対称)である暗号方式を秘密鍵暗号方式と呼んでいます。暗号化のメカニズム(アルゴリズム)については、公開されていますから、暗号・複合化のための鍵は秘密にしておかなければなりません。また、この暗号文書を送受信するためには、文書の暗号化に使用する秘密鍵を安全に相手に送り、鍵情報を共有する必要があります。暗号化と復号化の様子を図1に従って簡単に説明しましょう。大事な文書を「結奈(ユナ)さん」から「実優(ミユ)さん」に暗号通信で送受信する場合を想定します。送信者である「結奈さん」は、文書を両者しか知らない秘密鍵(KS)で暗号化し、暗号文を「実優さん」に送信します。「実優さん」は受信した暗号文を暗号化した時と同様の秘密鍵(KS)を使い暗号文を復号化して元の文書(平文)にします。

2. 公開鍵(非対称鍵)暗号方式(図1参照)

文書(平文)を暗号化する鍵と暗号化された文書を復号化する鍵が異なる(非対称)暗号方式を公開鍵暗号方式と呼んでいます。この暗号方式では、一つの鍵を秘密にしておき、一方の鍵を公開にすることができます。当然一方の鍵から他方の鍵を作成・推測することが不可能なように作られています。

図1 暗号方式の分類

【共通鍵 暗号方式】<秘話通信の場合>

図1:共通鍵は暗号方式で秘話通信の場合のイメージ

【公開鍵 暗号方式】<秘話通信の場合>

図2:公開鍵は暗号方式で秘話通信の場合のイメージ

【公開鍵 暗号方式】<電子署名の場合>

図3:公開鍵は暗号方式で電子署名の場合のイメージ

3. 暗号方式の特徴

秘密鍵暗号方式では、暗号処理の特徴から高速処理が可能であり、長いメッセージの暗号化に向いていると言えます。一方公開鍵暗号方式は秘密鍵暗号方式に比較して暗号化のための処理速度が大きいため、鍵情報や認証情報、署名情報等の比較的短いメッセージの暗号化に適しています。また、秘密鍵暗号方式に暗号通信をする場合、秘密鍵を送受信者同士で共有する必要があります。一方公開鍵暗号方式では秘密鍵の共有は不要な方式です。 そこで、秘密鍵暗号方式の秘密鍵を安全に配送する手段として、事前に公開鍵暗号方式により秘密の鍵情報を暗号化して送ることも一般的に行われています。

4. ハッシュ関数

ハッシュ関数はメッセージを一定の長さに圧縮する機能を持っています。すなわち任意のメッセージを一定サイズのハッシュ値に「圧縮」するアルゴリズムで、暗号との組み合わせで認証や電子署名機能を効率的に実行するために使われます。安全に認証、電子署名を実現するためのハッシュ関数は、次の性質を持つことが求められます。

  • ハッシュ値(ハシュ関数を使ってメッセージを圧縮した値)から元のメッセージを求めることが困難であること
  • あるメッセージと同じハッシュ値になるような別のメッセージを求めることが困難であること
  • 同じハッシュ値となるような元のメッセージを求めることが困難であること

【2】暗号が破られるとは

前節で説明しましたように、暗号処理のメカニズムは公開されていますので、暗号文から元の文書(平文)を求めるようとするには、暗号処理時に使用した秘密鍵を求めることです。もちろん鍵の長さは数十ビットとか数百ビットですので、全数の鍵を総当りで試してみて、それらしい文書が求められる鍵を発見することができます(総当り攻撃)。しかし一般には極めて大きな時間がかかり現実的には鍵を見つけることができません。ところが最近では、計算機能力が飛躍的に高度化しておりますし、ネットワークを介して多くの計算機を使った分散処理によって、現実的な時間で秘密鍵を求められてしまう場合が出てきます。さらに暗号研究者たちにより効率的な暗号解読技術の研究が進展しており、総当り攻撃より短い時間で鍵を発見する技術も進歩しています。

その他、暗号機能の実現方法(実装方法)や秘密鍵の管理方法が悪いと秘密鍵を発見されてしまう場合があります。10年ほど前になりますが、RSA暗号の発明者の一人であるシャミアにイスラエルで会ったことがありますが、この時シャミアはICカードに実装されたRSA暗号をチップの配線故障を故意に起こすことにより、鍵情報の一部が露見してしまうことについて研究をしておりました。米国のNIST(国立標準技術研究所: National Institute of Standards and Technology)では、暗号鍵の安全な鍵管理についてガイドラインを出していますが(SP800-57Recommendation for key management-part1:General guideline)、主要な項目を下記に挙げておきます。

  • 鍵情報の有効期間を設定する
  • 一つの鍵情報については、利用目的を一つに限定する
  • 暗号化されていない状態の共通鍵が存在する時間を制限する
  • 暗号化されていない状態の共通鍵は、認証された暗号モジュール内での利用に限定する
  • 暗号化されていない状態の共通鍵の可視性を防ぐ
  • 鍵情報の完全性や他のデータとの関連性を保証するための検証機能を用意する
  • 適切な鍵情報が確立したことを保証するための検証機能を用意する
  • 署名データに対して信頼できるタイムスタンプを利用する等

【3】標準化が進む暗号方式

今日、安全性の高い暗号の使用は、安全なサービスの実現を可能とし、安心して暮らしていくための基盤になっていると言っても過言ではないでしょう。そこで、世界各国や国際標準化組織では、安全で実用性の高い暗号方式を標準化し、流通させる活動が活発になってきました。

今まで、暗号技術は武器輸出に相当するものとして、米国等の各国では国外への技術流出や暗号製品の輸出を厳しく管理してきました。一方、インターネットが広がる中で、安全な暗号方式の普及が不可欠となり、各国でも暗号方式のデファクト標準化に向けて検討が行われています。日本においてもCRYPTRECプロジェクトが発足し、E-Japan重点計画の総務省・経済産業省施策の一環として、2003年に電子政府推奨暗号リストを公表しました。米国ではAESプロジェクトが米国政府標準暗号の選定に当たっており、欧州ではNESSIEプロジェクトが欧州の産業力向上などを目的とした欧州連合推薦暗号選定プロジェクトとして活動しています。また、インターネット標準規格として、IETFが標準暗号方式を公表しており、国際標準化機関であるISOでも当初は各国から提案された暗号方式を登録するだけに止まっておりましたが、2005年からは国際暗号標準を制定するようになりました。

次回予告

次回は暗号危殆化の現状と、危殆化した暗号に対するシステムでの対応方法について解説する予定です。

東京大学
情報セキュリティコミュニティ
副代表
林 誠一郎

このページの最上部へ