漢字が多くて読む気が失せるタイトルですね。
こんにちは。
けいぞうです。
基本情報技術者試験や応用情報技術者試験試験でよく出るセキュリティ系の問題「暗号化」についてまとめたかったので記事にします。
暗号化って・・・
暗号化というのは
文章や画像などのデータを
「パッと見何書いてるかわかんねえ」状態にすることです。
元の文章を
パッと見分かんねえ状態にすることを
→「暗号化」
パッと見分かんねえ状態から読める状態にすることを
→「復号化」
といいます。
インターネット上でのデータのやり取りは、
基本的には誰でも見放題、盗み放題です。
なので、誰に見られても分からないように、
データを暗号化して安全に送受信する必要があります。
必ず
データを「暗号化」して送り、受信したデータを「復号化」する
これ、基本です。
共通鍵暗号化式
よくでる2つの暗号化方式のうちの1つが
「共通鍵暗号化方式」
です。
暗合化するときと、復号化するときで同じ鍵を使うから
「共通」鍵暗号化方式といいます。
例えば・・・
1.哲郎君は七保子ちゃんに暗号化したメッセージを送りたい
2.哲郎君は七保子ちゃんにあらかじめ共通鍵を渡しておく
3.哲郎君は共通鍵で暗号化したメッセージを七保子ちゃんに送信
4.七保子ちゃんは受信したメッセージを共通鍵で復号化して読む

これが共通鍵暗号方式です。
シンプルですね。
公開鍵暗号化方式
よく出る暗号化方式のもうひとつが
「公開鍵暗号化方式」
です。
暗合化には「公開鍵」を、
復号化には「秘密鍵」というものを使います。
公開鍵を使って暗合化するので、
「公開鍵暗号化方式」といいます。
先ほどと同じたとえでいくと
このような流れになります。
1.哲郎君は七保子ちゃんに暗号化したメッセージを送りたい
2.七保子ちゃんは秘密鍵を使って公開鍵を作成し、哲郎君にわわたします
3.哲郎君はメッセージを公開鍵を使って暗合化し、七保子ちゃんに送ります
4.七保子ちゃんは、そのメッセージを秘密鍵を使って復号化し、読むことができます

共通鍵暗号化方式より少し複雑になりましたね。
メリットとデメリット
共通鍵暗号化方式と公開鍵暗合化方式のメリットとデメリットはこんな感じです。
メリット | デメリット | |
---|---|---|
共通鍵暗合化方式 | 暗号化/復号化が早い | 安全性が低い |
公開鍵暗合化方式 | 暗号化/復号化が遅い | 安全性が高い |
共通鍵暗合化方式は、シンプルな仕組みで暗号化/復号化が早い一方、共通鍵が盗まれてしまうとメッセージを復号化されてしまいます。
公開鍵暗合化方式は、共通鍵暗合化方式よりも暗号化/復号化が遅いです。しかし、公開鍵は暗号化にしか使わないため、盗まれてもメッセージが読まれることはありません。
両者を使った「SSL暗号化通信」
SSL暗号化通信は、インターネット上で安全にデータを送受信する仕組みのことです。
そしてこれは「共通鍵」と「公開鍵」両者の暗号化方式のメリットを生かした方式とも言えます。
SSLを使って通信を行う方法はざっくりこんな感じ
クライアントPCから、とあるWebサイトへアクセスしてサイトを閲覧したいとき・・・
1.クライアントPCからWebサーバーへ接続要求を出します
2.接続要求を受け取ったWebサーバーは、秘密鍵を使って作成した公開鍵をクライアントPCに送ります
3.クライアントPCは共通鍵を作成し、受け取った公開鍵で共通鍵を暗号化し、Webサーバーに送ります
4.これでクライアントPCとWebサーバーの両者が同じ共通鍵を持ちました
Webサーバーは安全にクライアントPCにWebサイトの情報を送ることができ、クライアントPCも安全にWebサーバーにデータを送信することができます。

これなら、実際は共通鍵で送受信するのでスピードは速いけど、
共通鍵の共通は公開鍵暗合化方式を使ってるから安全ってことですね。
SSLかどうかの見分け方
WebサイトがこのSSL暗号化通信を使っているかどうかは、
そのサイトのURLを見れば分かります。
URLが「https://」で始まるものは、SSL通信、
「http://」SSL通信ではありません。
最近のコメント