共通鍵暗号方式 別名:対称鍵暗号
・概要
名前の通り暗号化と復号(暗号化されたデータを元に戻すこと)を1つの鍵で行い
その鍵を通信相手と共有して利用します
特徴として暗号/復号の処理が高速という点が挙げられる
・主な用途
処理速度が高いというメリットを活かし、主にデータの暗号化に利用される
・問題点
共通鍵暗号方式が抱える問題として「鍵配送問題」が挙げられます
これはいかにして通信相手に安全に共通鍵を渡すか、というものです
上述の通り、共通鍵暗号方式では暗号化/復号を1つの鍵で行いますが
共通鍵を相手に送信する際に、盗聴に遭って鍵を盗み見られる可能性があります
そうなると、それ以降の共通鍵で暗号化されたデータは暗号化の意味を成さなくなってしまいます
これを解決するため、後述する 公開鍵暗号方式 とを組み合わせた ハイブリッド暗号 と言う方式があります(これも後述)
・ブロック暗号とストリーム暗号
共通鍵暗号方式で利用される暗号化アルゴリズムは主に2種類に分けられ、それが ブロック暗号 と ストリーム暗号 です
ブロック暗号は、暗号化対象のデータを特定の大きさ(64/128bit)に分割したブロックごとに暗号化を
行います。
代表的なアルゴリズムとして、AESやCamelliaが挙げられます(共に128bit)
ストリーム暗号は、暗号化対象のデータを1bitまたは1byte毎に暗号化を行います
代表的なアルゴリズムとしては、RC4,ChaCha20,Kcipher-2が挙げられます。
※RC4は危殆化(脆弱なアルゴリズム)しているので注意
公開鍵暗号方式 別名:非対称鍵暗号
・概要
公開鍵 と 秘密鍵 という一対の鍵ペアを生成して利用する
公開鍵は文字通り誰にでも公開してよいが、秘密鍵は絶対に漏らしてはダメ
公開鍵と秘密鍵は関連性があり、例えばAさんの公開鍵で暗号化されたデータは
Aさんの秘密鍵でしか復号できない、という特性がある。
・主な用途
上記特性を利用し、データを安全に送受信したい際に利用される
公開鍵暗号方式は計算コストが高く、データ自体を暗号化するには向いていない
また、公開鍵暗号方式を利用した デジタル署名 と共通鍵暗号方式と組み合わせた
ハイブリッド暗号 で広く利用されている。
・デジタル署名
デジタル署名では、送信者の真正性(本人であるか)とメッセージの改ざんを検知できる
以下の流れで作成される。
1 送信者(Aさん)はメッセージを作成し、ハッシュ関数に掛けてハッシュ値を取得(このハッシュ値をメッセージダイジェストという)
2 Aさんの 秘密鍵 でメッセージダイジェストを署名する、これがデジタル署名となる
3 Aさんは受信者(Bさん)に元のメッセージとデジタル署名を送付する
4 Bさんは受信した元のメッセージのハッシュ値を取得する(1と同じハッシュ関数)
5 Bさんはデジタル署名をAさんの公開鍵で復号し、復号したハッシュ値と4のハッシュ値比較する
ハッシュ関数の特性として、中身が1bitでも変わるとハッシュ値が大きく変わる
メッセージの送信途中で改ざん等に遭っても検知できる、と言う仕組み。
・ハイブリッド暗号
ハイブリッド、文字通り共通鍵暗号と公開鍵暗号を組み合わせた方式
共通鍵暗号がデータの暗号化を担当し、公開鍵暗号が共通鍵を安全に配送します
これで共通鍵暗号で課題となっていた鍵配送問題を解決できます
・公開鍵暗号方式の課題
重要な役割を担っている公開鍵暗号方式ですが、こちらも課題があります。
それは中間者攻撃(Man In The Middle)に弱いことです、以下のストーリーを見てみましょう
1 Aさんが(送信者)がBさん(受信者)の公開鍵取得要求を出す
2 ここで攻撃者のCさんが、上の要求に割って入り Cさんの公開鍵 を返す
3 AさんはCさんの公開鍵で暗号化したメッセージをBさんに送信するが、Bさんの公開鍵で暗号化されているためBさんは自身の秘密鍵で復号できてしまう。
名前の通り、送受信者の中間に入ってメッセージを盗み見る攻撃です。
(以下イメージ)

※GMOグローバルサインより
これの対策としてはデジタル証明書(公開鍵証明書)が考えられます
これは認証局(CA)によって、この公開鍵はBさんのものである という署名を付し
その署名を検証することで、Bさんの正当な公開鍵が得られるというものです
この辺のCA,証明書周りも重要な技術ですのでまたの機会に解説します。
・暗号アルゴリズムの危殆化
最後にアルゴリズムの危殆化について、これは共通鍵暗号/公開鍵暗号両方に関する話です
ちょっと触れましたが、危殆化とは暗号化アルゴリズムに脆弱性が見つかって安全でなくなったことを言います。
ですので、暗号を利用する際には危殆化していない安全な暗号化アルゴリズムを利用するべきです
CRYPTREC と言う機関が利用を推奨するアルゴリズムをリストでまとめていますのでご参考に
電子政府推奨暗号リスト から選ぶと良いでしょう。
参考: https://www.cryptrec.go.jp/list.html
コメント