共通鍵暗号 / 公開鍵暗号
暗号は「共通鍵暗号方式」と「公開鍵鍵暗号方式」の2種類の形式に大きく分類されます。
当ページでは、共通鍵暗号方式と公開鍵鍵暗号方式の仕組みや使われ方などについてまとめています。
共通鍵暗号方式共通鍵暗号のアルゴリズムの種類ストリーム暗号方式ブロック暗号方式ブロック暗号の暗号モード公開鍵暗号方式利用例① 相手の公開鍵で暗号化して情報を送信する場合利用例② 自身の秘密鍵で暗号化して情報を送信する場合公開鍵暗号の種類ハイブリッド暗号
共通鍵暗号方式
共通鍵暗号方式とは、暗号化と復号化に同じ鍵を使う方式。
- 利点:暗号化・復号化が高速(主に排他的論理和を使うため、処理が単純なため)
- 欠点:鍵の受け渡し時に第三者に鍵を盗まれるリスクがある
共通鍵暗号のアルゴリズムの種類
共通鍵暗号は、暗号化・復号化を一度に行う単位によって、「ストリーム暗号方式」と「ブロック暗号方式」の2種類に分類される。
ストリーム暗号方式
ストリーム暗号方式とは、ビット・バイト単位で暗号化・復号化する共通鍵暗号のこと。
主なストリーム暗号は以下の通り。
暗号名 | 概要 |
---|---|
RC4(Rivest's Cipher 4) | ビット単位で暗号化。解読の危険有 |
KCipher-2 | 処理が高速 |
ブロック暗号方式
ブロック暗号方式とは、ブロック(規定のビット数)単位で暗号化・復号化する共通暗号のこと。
主なブロック暗号は以下の通り。
暗号名 | 概要 |
---|---|
DES (Data Encryption Standard) | ブロック長:64bit固定,鍵長:3種類から選択可 |
Triple DES | DESを異なる鍵を利用して三重適用 |
AES (Advanced Encryption Standard) | ブロック長:3種類から選択可,鍵長:3種類から選択可 鍵長によって段数(ラウンド数)が決まる。 |
Camellia | 暗号と復号が同一手順 。メモリ容量が少ないICカード等に利用 |
IDEA |
ブロック暗号の暗号モード
ブロック長以上の長い文を暗号化する場合、ブロック暗号を繰り返し利用する必要がある。
この繰り返しの際のルールをと呼ぶ。
主な暗号モードの種類は以下の5種である。
モード | 概要 |
---|---|
ECB (Electronic Code Book) | ブロックごとに分けて暗号化。 |
CBC (Cipher Block Chaining) | 1つ前のブロックとXORを取った後暗号化。 |
CFB (Cipher Feedback) | 1つ前のブロックを暗号化しXOR演算。 |
OFB (Output Feedback) | 初期ベクトルの暗号化をブロックの数分繰り返し、キーストリームを作成する。ブロックごとにキーストリームとXOR演算。 |
CTR (CounTeR) | ブロックごとに初期値をカウントアップしたものを暗号化してキーストリームを生成する。ブロックごとにキーストリームとXOR演算。 |
公開鍵暗号方式
公開鍵暗号方式とは、暗号化と復号化に異なる鍵を使う方式。
誰でも利用できるように公開する鍵を「公開鍵」、持ち主のみが知る鍵を「秘密鍵」と呼ぶ。
- 利点:暗号を解くことが非常に困難。通信相手の数が増えても必要な鍵の数は変わらない。
- 欠点:データの暗号化に大きな負荷がかかる(送受信する情報量に比例)
利用例① 相手の公開鍵で暗号化して情報を送信する場合
相手の公開鍵で暗号化して情報を送信する場合、第三者の盗聴を防止することができる。
利用例② 自身の秘密鍵で暗号化して情報を送信する場合
自身の秘密鍵で暗号化して情報を送信する場合、以下の事が可能となる。
- 送信データの改竄検知
- 送信者のなりすまし検知
- 送信者の事後否認防止
下記の図では(データが通信途中で改ざんされていないことを証明するための仕組み)の動作を示す。
公開鍵暗号の種類
種類 | 概要 | 安全な鍵長 | フルネーム |
---|---|---|---|
RSA | 同じ鍵ペアを暗号化と署名の両方に利用できる。 大きな数字の素因数分解の困難さを利用する。 | 2048bit | Rivest Shamir Adleman |
DH鍵交換 | 鍵配送アルゴリズム。 離散対数問題を利用する。 | Deffie-Hellman | |
DSA | デジタル署名のためのアルゴリズム(暗号化機能はない) 有限体上の離散対数問題を利用する。 | 2048bit | Digital Signature Algorithm |
楕円曲線暗号 | 楕円曲線上の離散対数問題を利用。 RSAの後継として注目されている。 | Elliptic Curve Cryptography(ECC) | |
ECDSA | DSAに楕円曲線暗号を利用 デジタル署名のためのアルゴリズム。 | 224bit | Elliptic Curve Digital Signature Algorithm |
ハイブリッド暗号
ハイブリッド暗号とは、共通鍵暗号方式と公開鍵暗号方式を組み合わせた方式。
共通鍵暗号方式と公開鍵暗号方式の利点・欠点の比較は以下の通り。
方式 | 利点 | 欠点 |
---|---|---|
共通鍵暗号方式 | 暗号化/復号の処理が高速 | 安全な鍵配送が困難 |
公開鍵暗号方式 | 安全な鍵配送が可能 | 暗号化/複合の処理が遅い |
各方式の欠点を打ち消し合うために、鍵配送は公開鍵暗号方式で行い、その後の暗号化/複合の処理は共通鍵暗号方式で実施する。