シファー(Cipher)の定義:何をする仕組みか

シファー(Cipher)は、平文(もとのデータ)を、鍵(key)と呼ばれる情報を用いた一定の手順により、暗号文(暗号化後のデータ)へ変換する方法(またはその方式)です。復号(decryption)は、暗号文を元の平文へ戻すための手順です。

重要なのは、「シファー」は暗号化だけを指す場合もありますが、一般には暗号化と復号の考え方(対応する手順のセット)として語られることが多い点です。また、ここでの「鍵」は固定のパスワードのように扱われることもあれば、乱数や派生関数を通じて複数の値に展開されることもあり、鍵の扱いが安全性・正しさの両面に影響します。

実用のための簡単なモデル:入力・変換・出力

シファーを理解するために、次のような抽象モデルで捉えると整理しやすくなります。

  • 入力:平文(P)
  • 鍵:K
  • 出力:暗号文(C)
  • 復号:暗号文(C)と鍵(K)から平文(P)を再現

このとき、暗号化は「C = Enc(K, P)」のように考えられ、復号は「P = Dec(K, C)」のように考えられます。

このモデルから導ける実務上のポイントは、(1) 同じ平文でも鍵が違えば暗号文は異なり得る、(2) 暗号文から平文へ戻すには同じ鍵や手順が必要、(3) 実装が同じ仕様に従っているかを確認するには、入出力の対応を確かめる必要がある、という点です。

暗号化方式の“部品”として見る:置換・変換・反復

多くのシファーは、データをいくつかの段階で変換します。よくある考え方として、データを「別の位置へ動かす」「値を別の値へ写像する」「これらを繰り返す」といった設計思想があります。

  • 置換(置き換え):文字やビットのパターンを別のものへ換える
  • 転置(位置入れ替えに近い概念):データの位置関係を入れ替える
  • 反復:単純な変換を何段階か重ねて全体の混ざり方を増やす

ただし、ここで注意すべき制限があります。一般に、単純な置換や短い鍵で作られた方式は、試行の幅が小さくなり、攻撃の余地が増えます。つまり「シファー=魔法の安全」ではなく、鍵長、設計の複雑さ、そして攻撃に対する耐性を前提に評価されます。

制限と誤解:シファーの強さは“条件つき”で決まる

シファーの理解でよく起きる誤解は、「良いシファーを使えば常に安全」という捉え方です。実際には、少なくとも次の要素が絡みます。

  1. 鍵の管理 同じ方式でも、鍵の生成・保存・共有・更新のいずれかが弱いと、攻撃者に鍵が知られる可能性が生まれます。ここはシファーの“外側”の話ですが、結果として暗号の目的が達成できなくなります。

  2. 仕様と実装のズレ 方式の理論が正しくても、実装で入出力の扱いを誤ると復号できない、想定外のパターンが漏れる等が起こり得ます。とくに「文字列の扱い(エンコーディング)」「パディング」「初期値の扱い」などは、方式の理解と密接です。

  3. 使い方(適用範囲) シファーには、想定する利用条件があります。 例えば、暗号文をそのまま何度も同じ手順で扱うと、情報が偏る場合があります。