共通鍵暗号 / 公開鍵暗号

暗号は「共通鍵暗号方式」と「公開鍵鍵暗号方式」の2種類の形式に大きく分類されます。
当ページでは、共通鍵暗号方式と公開鍵鍵暗号方式の仕組みや使われ方などについてまとめています。
 
 

共通鍵暗号方式

共通鍵暗号方式とは、暗号化と復号化に同じ鍵を使う方式。
  • 利点:暗号化・復号化が高速(主に排他的論理和を使うため、処理が単純なため)
  • 欠点:鍵の受け渡し時に第三者に鍵を盗まれるリスクがある
 
 

共通鍵暗号のアルゴリズムの種類

共通鍵暗号は、暗号化・復号化を一度に行う単位によって、「ストリーム暗号方式」と「ブロック暗号方式」の2種類に分類される。

ストリーム暗号方式

ストリーム暗号方式とは、ビット・バイト単位で暗号化・復号化する共通鍵暗号のこと。
 
主なストリーム暗号は以下の通り。
暗号名概要
RC4(Rivest's Cipher 4)ビット単位で暗号化。解読の危険有
KCipher-2処理が高速
 

ブロック暗号方式

ブロック暗号方式とは、ブロック(規定のビット数)単位で暗号化・復号化する共通暗号のこと。
 
主なブロック暗号は以下の通り。
暗号名概要
DES (Data Encryption Standard)ブロック長:64bit固定,鍵長:3種類から選択可
Triple DESDESを異なる鍵を利用して三重適用
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同じ鍵ペアを暗号化と署名の両方に利用できる。 大きな数字の素因数分解の困難さを利用する。2048bitRivest Shamir Adleman
DH鍵交換鍵配送アルゴリズム。 離散対数問題を利用する。Deffie-Hellman
DSA デジタル署名のためのアルゴリズム(暗号化機能はない) 有限体上の離散対数問題を利用する。2048bitDigital Signature Algorithm
楕円曲線暗号楕円曲線上の離散対数問題を利用。 RSAの後継として注目されている。 Elliptic Curve Cryptography(ECC)
ECDSADSAに楕円曲線暗号を利用 デジタル署名のためのアルゴリズム。224bitElliptic Curve Digital Signature Algorithm

ハイブリッド暗号

ハイブリッド暗号とは、共通鍵暗号方式と公開鍵暗号方式を組み合わせた方式。
共通鍵暗号方式と公開鍵暗号方式の利点・欠点の比較は以下の通り。
方式利点欠点
共通鍵暗号方式暗号化/復号の処理が高速安全な鍵配送が困難
公開鍵暗号方式安全な鍵配送が可能暗号化/複合の処理が遅い
各方式の欠点を打ち消し合うために、鍵配送は公開鍵暗号方式で行い、その後の暗号化/複合の処理は共通鍵暗号方式で実施する。