-

暗号化のお話 (5)

前へ << 暗号化のお話 (3) SSL/TLS の導入 (1) >> 次へ

暗号技術の分類

これまでいろんな技術を説明したので、整理しましょう。
  • 暗号: 暗号とは、暗号化・復号化が可能で、鍵が存在するもの。
    • 共通鍵暗号方式: 鍵はひとつ
      • ブロック暗号: データを固定長のブロック単位に区切り、それぞれのブロックを暗号化するもの。
        • DES: 鍵長は 56bit。今となっては使うべきではない。
        • 3DES: 3回 DES を繰り返したもの。2つの鍵を使うものと、3つの鍵を使うものがある。
        • AES: DES の後継とも言える暗号。
      • ストリーム暗号: データを区切らず、ひとつのデータの流れとして処理するもの。
        • RC4: ソースは非公開だったが、メーリングリストに匿名でソースが投稿され世界中の人が知るところとなった。
    • 公開鍵暗号方式: 鍵は 2つ。公開鍵と秘密鍵。
      • RSA : 最も広く使われている公開鍵暗号方式。安全性の根拠は「大きな数の素因数分解が難しいこと」
      • ElGamal (エルガマル): 安全性の根拠は「有限体上の離散対数問題が難しいこと」
      • 楕円曲線暗号: 安全性の根拠は「楕円曲線上の離散対数問題が難しいこと」
      • ナップサック暗号: 安全性の根拠は…検索してください。現在安全でないことが数学的に証明された。
  • 署名: データを作成したのが本人であることと、改竄されていないことを示すもの。
    • 公開鍵暗号方式: 公開鍵暗号方式 (RSA・ElGamal・楕円曲線暗号など) は署名にも使用できる。
    • DSA: 署名専用のアルゴリズム
  • ハッシュ: 暗号化・復号化という概念はない。鍵は存在しない。
    • MD4・MD5: ハッシュ値は 128bit。
    • SHA・SHA-1: ハッシュ値は 160bit。
  • 鍵交換アルゴリズム
    • Diffie-Hellman 鍵交換アルゴリズム
DES や RSA が暗号技術のどこに位置するか確認してください。 一部解説していないものがあるので、以下、落ち穂拾いをします。

ブロック暗号とストリーム暗号

DES や AES はブロック暗号に分類されます。 これは平文を一定の長さごとに区切り (ひとつの区切りをブロックと呼ぶ)、 そのブロックごとに暗号化処理を行うものです。

一方、平文をひとつのデータの流れとして処理する暗号方式をストリーム暗号と呼びます。 代表的なものに RC4 があります。

楕円曲線暗号 (Elliptic Curve Cryptography)

楕円曲線とは以下のような式を指します (正確な定義はちょっと違いますが、 まぁこんな感じです)。
y2 = x3 + ax2 + bx + c (a, b, c は有理数)
なぜ楕円曲線と呼ぶかと言うと、楕円の円周長を積分する場合の式に関係していたようなしていなかったような。 ちなみに x と y が複素数を取る場合、ドーナツ型 (トーラス) になるそうで。 当ページ管理人はよくわかってません。

楕円曲線暗号は上記の式を用いた公開鍵暗号方式のことを指します (よって、楕円と楕円曲線は直接の関係はありません)。 RSA が素数を使って秘密鍵と公開鍵を実現したように、楕円曲線暗号も 上記のような式を利用して、秘密鍵と公開鍵を実現しています。

楕円曲線暗号は 160 bit で RSA の 1024 bit 相当の強度を持つそうです。 同様に、211 bit で RSA の 2048 bit 相当だそうです。

詳しくは 妖精現実 フェアリアル楕円曲線暗号 をどうぞ。

RSA と同様に、楕円曲線暗号を解読するコンテストも開催されています。 カナダの certicom という企業が主催している The Certicom ECC Challenge です。2000年に 109 bit の楕円暗号 (RSA の 600 bit に相当) が解読されました。 次は 131 bit で、賞金は 2万ドルです。がんばってください。

DSA

未稿

Diffie-Hellman 鍵交換アルゴリズム

未稿

RSA と素数

RSA と素数についてさらなる知識を得たい方は、同じく 妖精現実 フェアリアル の以下のリンク先を読んでください。 レベルが高すぎて、当ページ管理人はついていけないのが無念でなりません。

規格

FIPS Federal Information Processing Standards)
前へ << 暗号化のお話 (3) SSL/TLS の導入 (1) >> 次へ