まず、共通鍵暗号化方式は「鍵が分かると暗号化・復号化が誰でもできる」という弱点と、鍵が分からない状態では「処理が簡単で暗号強度自体も高い」と言うメリットがあります。
一方公開鍵方式は「暗号化と復号化の鍵が別々で、どちらか片方が分かってももう片方が分からない」というセキュリティ上の大きなメリットがあるのに対し、「データ量が増えると加速度的に演算処理に時間がかかる」というデメリットがあります。
共通鍵暗号化方式を使う場合は「どうやって安全に"鍵"をやりとりするか」という問題が出てきますので、「事前に相手が分かっている場合」にしか使えません。相手が不特定多数の場合、"鍵"が分かっちゃうと通信できないんです。
(第二次大戦のスパイ映画などで"暗号の入手"って話は多いと思いますが、これはこの"共通鍵"をどうやって盗むか、という問題なんです。実際、旧日本軍の暗号は、墜落した航空機からこの"鍵"になる暗号表を盗まれて解読されたのは有名な話です)
一方、公開鍵暗号化方式の場合は、相手が不特定多数で、暗号化するときの「公開鍵」を公開して暗号化して貰っても、復号鍵は自分自身が持って誰にも知らせませんからオッケーなんですね。だって公開鍵暗号化方式は「公開鍵(暗号化鍵)」が分かっても、「復号鍵」が無いと読めないんですから。
ちなみに、Webサイトなどで「SSL通信だから安心です」と書いてあるのは、「I.E.などが自身の機能で、そのサイトの"公開鍵"を自動的に入手し、暗号化してそのサイトと通信します」という意味なんですね。当然この場合「復号鍵」はそのサイト自身しか持っておらず、誰も知らないから安全なんです。
お礼
ありがとうございました。もう少し勉強してみます。