namdicul's blog

気ままに更新します. CTFと暗号理論について勉強中です.

暗号理論 [まとめ1] ~ (2)から(8)のまとめ ~

これまで紹介してきた記事は1つ1つが独立している訳ではなく,それぞれ関連があります.それを1度まとめてみましょう.

共通鍵暗号方式

共通鍵暗号方式とは,暗号化と復号に同じ鍵を使用する場合のことを指します.バーナム暗号やストリーム暗号は共通鍵暗号方式と言えます.

共通鍵暗号方式のメリットは,暗号化と復号をするのにかかる時間が短いことが挙げられます.

デメリットとして,鍵配送問題が生じることが挙げられます.

公開鍵暗号方式

公開鍵暗号方式は,暗号化と復号に異なる鍵を使用する場合のことを指します.RSA暗号公開鍵暗号方式の代表的な1つです.

公開鍵暗号方式のメリットは,鍵配送問題が解決される点が挙げられます.

デメリットとしては,メッセージデータが大きい場合には暗号化と復号に時間がかかることと,man-in-the-middle攻撃に弱いことが挙げられます.

ハイブリッド暗号システム

ハイブリッド暗号システムは,メッセージの暗号化と復号には共通鍵を使用し,共通鍵を事前に共有するために公開鍵暗号方式を使用するというシステムのことを指します.

ハイブリッド暗号システムによって,共通鍵暗号方式と公開鍵暗号方式のデメリットを,お互いのメリットで補完することが可能になります.具体的には,共通鍵暗号方式のデメリットであった鍵配送問題が公開鍵暗号方式によって解決され,公開鍵暗号方式のデメリットであった暗号化と復号に時間がかかることが,共通鍵暗号方式によって解決できるようになります.

一方向ハッシュ関数

一方向ハッシュ関数は,あるメッセージが入力されたら,固定長ビットの出力値(ハッシュ値)を得ることができる関数です.

一方向ハッシュ関数の性質として,任意のデータに対してハッシュ値を得ることができる,同じデータに対しては同じハッシュ値を得ることができる,1ビットでも違うデータに対してはまったく違うハッシュ値が出力されることなどが挙げられます.

一方向ハッシュ関数を使用することでメッセージの改竄を検出することが出来ます.

しかし,一方向ハッシュ関数は「なりすまし」を検出することが出来ません.

メッセージ認証コード

メッセージ認証コードとは, 送信者と受信者間で共通鍵を共有し, データの送信者が計算したMAC値と, データの送信者が実際に計算したMAC値を確認することによって, なりすましとデータの改ざんを防ぐ仕組みのことを言います. メッセージ認証コードを使用することで, 一方向ハッシュ関数のデメリットであった「なりすましの検出が不可能であること」が解決されます.

しかし, メッセージ認証コードだけでは, 否認を防止したり第三者に証明することができません.

デジタル署名

デジタル署名とは, 送信者が送信データに署名をし, その送信データを送信者以外の人が検証できるシステムのことを指します. デジタル署名は公開鍵暗号方式の逆適用であり, 秘密鍵を使用して署名(暗号化)をし, 公開鍵を使用して検証(復号)することができます. デジタル署名によって, このデータはAさんが送ったものであるということを第三者に証明することができるので, 否認を防止することができます.

しかし, デジタル署名だけでは, 検証するにあたって公開鍵が本当に正しい相手のものなのか確認する手段がまだ確立されていません.

証明書

この公開鍵はAさんのものであると証明するものが証明書になります. この証明書のおかげで, 公開鍵が本当に正しい相手のものなのかを確認することができます.

まとめ

いかがでしょうか. 分からないことがあったら該当記事に戻っていただくか, コメントを頂けるとありがたいです.