共通鍵暗号方式、秘密鍵暗号方式、DES、AES
ドアの鍵との比較で考えます。通常の鍵はドアを閉める鍵(暗号鍵)と開く鍵(復号鍵)とは同じ(合鍵はあるにせよ)ですね。それと同様に,暗号電文を交換するには,送信者と受信者人が同じ数字列(鍵)を持っていればよいことになります。
この方式は、送信者と受信者が同じ(共通の)鍵を持つのが特徴ですので共通鍵暗号方式といいます(鍵を第三者に秘密にすることから秘密鍵暗号方式ともいいますが、公開鍵暗号方式での秘密鍵と混同されやすいので、「共通鍵暗号方式」が広く用いられるようになりました)。
従来はDES(Data Encryption Standard)が広く用いられていました。しかし、コンピュータ能力の向上により解読されるようになり、より強固なトリプルDESやIDEA(International Data Encryption Algorithm)などが作られました。
現在ではNIST(National Institute of Standards and Technology:米標準技術局)によるAES(Advanced Encryption Standard)が主流です。AESの鍵長は128/192/256bitの3種類があり、シンプルな構造で暗号化/復号化処理の高速実行ができ、しかも強固な暗号化ができる特徴をもっています。
KCipher-2は、KDDIと九州大学が共同設計したもので、AESと比べて最大10倍の暗号化・復号速度があり、電子政府推奨暗号に選定されました。
共通鍵暗号方式は、公開鍵暗号方式と比較して暗号化や復号の処理が高速であるという利点があり、当事者が限定されている場合には適していますが、当事者が多数の場合、特に電子商取引のような場合では次のような欠点があり,特殊な場合を除いてはこのままで用いることはほとんどありません。
秘密鍵を安全に送受信するための鍵交換方式です。秘密鍵そのものではなく、乱数と秘密鍵から生成した配送鍵を送受信します。離散対数問題という数学の困難さに依存したアルゴリズムを用いており、第三者が配送鍵を知っても、秘密鍵を知ることが困難になります。
共通鍵暗号方式を実際に適用する方法に、ブロック暗号とストリーム暗号があります。
平文を特定長さ(AESでは128・192・256bit)のブロックに分割し、ブロックごとに暗号化する方式です。
平文の1ビットまたは1バイトごとに暗号化する方法です。乱数を発生させて、その乱数を元にデータを端から暗号化していきます。
ブロック暗号は一定量のデータが溜まらなければ処理できませんが、ストリーム暗号なら逐次処理できるので、リアルタイム性が求められる通信に適しているのが特徴です。ただし、安全性の検証はブロック暗号のほうが進んでいます。