共通鍵暗号方式とは

 共通鍵暗号方式(Common key cryptosystem)は、暗号化と復号化に同一(共通)の鍵を用いる暗号方式のことです。代表的な共通鍵暗号には、DES、AESなどがあります。

 共通鍵暗号方式のことを秘密鍵暗号方式(secret key cryptosystem)とも対称鍵暗号(Symmetric key encryption scheme)、また、慣用暗号方式とも言います。

 情報処理の試験の参考書や専門書の説明で、これら複数の名称が使われて説明されているので、少々ややこしく感じますが、これら全て同じ暗号方式を指す言葉です。

 共通鍵暗号方式では、暗号化とに用いる鍵と同一、または、暗号化鍵から容易に導出可能な値を復号鍵として用います。暗号化方式には、他に、暗号化鍵と復号化鍵にそれぞれ異なる鍵を使用する公開鍵暗号方式があります。

 送信側は、共通鍵で暗号化した暗号文を受信側に送ります。受信側では、送信側と共有している共通鍵で暗号文を復号して元の平文に戻します。

 暗号化と復号化に同一の鍵を利用するため、鍵の扱いが簡単で、公開鍵暗号方式と比べるとアルゴリズムが単純であるため処理速度が速いという特徴があります。

 その半面、相手先ごとに共通鍵を作成しなければならず、事前に安全な方法で通信相手に鍵を渡さなければならないため、限られた特定の相手とのやり取りに向いていると言えます。

共通鍵暗号方式における鍵の数

 共通鍵暗号方式では、相手先ごとに共通鍵を作成しなければならず、事前に安全な方法で通信相手に鍵を渡さなければならないため、限られた特定の相手とのやり取りに向いていると言えます。

 それでは、具体的にn人でデータをやり取りする場合について考えてみます。2人でデータをやり取りするなら、1個の共通鍵で済みますが、5人が相互にデータをやり取りする場合はどうでしょうか?

上の図を見て下さい。人数が5人の場合、通信相手は4人になります。

鍵の総数は

5×4=20

20個の鍵が必要ということになります。しかし、ちょっと待って下さい。

この式では、同じ鍵を重複してカウントしていることになります。

Aさん⇔Bさんの鍵は、Aさんで1つ、Bさんで1つというように重複してカウントしています。

つまり、1つの鍵を2つとしてカウントしてしまっています。

そこで、その重複分をなくすために、2で割る必要があります。

(5×4)/2=10

 つまり、5人の時には、10種類の共通鍵が必要になります。公開鍵暗号方式において、n人で通信する場合、必要な鍵の数は、「n×(n-1)÷2」という式になります。

◆共通鍵暗号方式における鍵の総数

必要な鍵の数は次の式で求めることができます。

鍵の総数 = nC2 = n(n-1)/2

 10人だと45種類、100人だと4950種類というように、人数の増加数よりも鍵の種類の増加数の方が、はるかに多くなるのが分かります。

 相手が多い場合、かなり多くの共通鍵が必要なので鍵の管理が困難になります。共通鍵暗号方式は、限られた特定の相手とのやり取りに向いていると言えます。