暗号とは何か、何であるべきか

2009年2月2日(月)
森井 昌克

公開鍵暗号

 暗号化関数fにおいて、暗号化鍵k_{c}と復号鍵k_{d}が異なる方式を公開鍵暗号と呼ぶ。公開鍵暗号では、暗号化関数が公開されたとき、暗号化鍵から復号鍵が導出不可であることを保証しなければならない。復号鍵の導出に関して、一定の計算量以上が必要であることを保証できるとき、計算量的安全性が満たされると言い、一定の情報量、例えば平文とそれに対応する暗号文のペアが必要であることを保証できるとき、情報量的安全性が満たされるという。

 現在では多種多様な公開鍵暗号が提案されており、また構成可能でもあるが、安全性の証明を行うことが必要不可欠となっている。しかし計算量的安全性を証明することは困難で、少なくともその解法が計算量的に困難であることを証明しなければならない。これは通常、求めることが困難と広く認知されている問題との等価性、すなわち、その暗号を解くことができれば、同じ計算量で、その問題を解くことができることを保証することを示すことで代替される。公開鍵暗号としては、最も初期に提案された、数体上の素因数分解問題を利用したRSA暗号が知られているが、最近では楕円(だえん)曲線上の離散対数問題を利用した楕円曲線暗号の実用化が進められている。

 暗号化鍵k_{c}と復号鍵k_{d}を分けることによって、それまで主に情報の機密性しか保証できなかった暗号の用途が飛躍的に増大した。暗号化鍵に対応する復号鍵を有する者に対して、誰でもが暗号通信を行うことが可能になり、公開鍵暗号出現以前までの、互いの暗号化鍵(=復号鍵)を安全に共有する大きな手間(コスト)が不必要となった。

 例えばインターネット上で情報を暗号化して送受するSSLの普及は公開鍵暗号に負うところが大きい。SSLは、互いに事前の通信を行うことなく、相手と暗号通信を行い、それ以外の第三者には、その暗号を解読不可とする方式である。相手の公開鍵が正しいことを認証できれば、公開鍵暗号を使って情報を暗号化して送ることができる。公開鍵暗号の出現は、その実用性以上に、情報を安全に制御するという数々のプロトコルを実現可能とし、暗号技術や理論全般の発展に寄与している。

暗号技術とは

 情報の機密性の確保以外にも、信頼性および完全性も機密性以上に重要な暗号の機能である。信頼性を確保する方式に、デジタル署名がある。

 デジタル署名とは、デジタルコンテンツの所有権者を特定するプロトコルである。モデル化された暗号化関数fにおいて、復号関数f^{-1}に注目したとき、所有権を主張したいコンテンツをCとする。またCをfにおける秘密鍵k_{d}で復号したデータをMとするとき、MをコンテンツCに対するデジタル署名と呼ぶ。公開鍵暗号における暗号化と逆の操作を行うのである。

 署名とはその権利者以外が付与できない情報を指す。MがコンテンツCのデジタル署名たるゆえんは、公開されているk_{e}に対応する秘密鍵がk_{d}であり、k_{d}を有する者以外には、暗号化関数を満足するk_{e}を作れないことによる。CとMのペアを送ることで、Cは秘密鍵k_{d}を有する者、すなわち誰もが検証できる公開鍵k_{e}の所有者であることを保証したことになる。

 完全性の保証は、機能を制限した公開鍵暗号が利用できる。すなわち、復号関数f^{-1}が存在しない、あるいは求めることが計算量的に困難な関数である一方向性ハッシュ関数(暗号の分野では、単にハッシュ関数)を利用する。

 改ざんがないことを保証したいデータをMとし、ハッシュ関数をH(M)とすると、h=H(M)となる。Mに対するハッシュ値がhである。ハッシュ値が公開されてていた場合、Mが改ざんされているかどうかは、h=H(M)を検証することで確かめられる。もし改ざんできるならば、改ざんした情報をM'とするとき、h=H(M')を満足するM’を求める必要がある。関数H(M)が一方向、つまり逆関数が存在しないことに反する。H(M)=H(M')となるMとM’を見つける問題をハッシュ関数のコリュージョン探索と呼ぶが、このコリュージョンを求めることを困難にすることがハッシュ関数の安全性の根拠である。

 暗号化関数における暗号化鍵と復号鍵の条件から、公開鍵暗号の特殊な場合が共通鍵暗号ととらえられ、また上述のような公開鍵暗号の議論からさまざまな暗号プロトコルが構成できる。実際の暗号技術では、公開鍵暗号のみを利用することはほとんどなく、さらに公開鍵暗号を必ずしも利用することは多くはない。

 主たる理由は、暗号化復号に要する速度が必ずしも速くなく、また実装(回路、コード)規模も一般には複雑になるためである。よって、デジタル署名を含め、個別の暗号プロトコルには、公開鍵暗号とは異なる個別の暗号化方式が提案され、実用化されることが一般的である。共通鍵暗号も、その暗号化復号の高速性と実装規模を考慮して、情報の秘匿性を保証する暗号プロトコルとして、極めて重要な暗号方式である。

 鍵を安全に管理することは、実際の暗号システムにとって最重要の問題である。現在の暗号は一般に暗号化復号関数である暗号アルゴリズムを公開し、その安全性の仮定として、鍵の秘匿のみに依存している。

 近年の暗号を利用したセキュリティーシステムの脆弱性の多くが鍵管理の脆弱性によるものである。一時期、RSA暗号が解読されたというニュースが話題になったが、解読されたわけではなく、RSA暗号を利用しているPGPと呼ばれる電子メール暗号化システムにおいて、鍵の生成方法が不完全であったため、鍵が容易に導出できたのである。

 今回のWEPの解読に関しても、WEPに使われているRC4において、鍵の生成方法(正確にはIVと呼ばれる初期値の取り方)が不完全であったため、WEPは容易に、その104ビット鍵を導出できた。決してRC4が容易に解読できるわけではない。次回は共通鍵暗号とRC4の構成と安全性について解説する。

神戸大学大学院
1989年大阪大学大学院工学研究科博士後期課程通信工学専攻修了、工学博士。現在、神戸大学大学院工学研究科教授。インターネット、符号理論、ネットワークセキュリティー、暗号理論等の研究/教育/開発に従事。著書に「新しい暗号技術とその情報セキュリティへの応用」、「食の安全性徹底検証」、「インターネットプロトコルハンドブック」など。http://srv.prof-morii.net/~morii/

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています