暗号(サイファー)とは:定義、暗号化・復号の仕組み、鍵の種類と歴史
暗号(サイファー)の定義から暗号化・復号の仕組み、鍵の種類と歴史までをわかりやすく解説する入門ガイド。
暗号(またはサイファー)とは、暗号化(コーディング)または復号(デコーディング)を行うためのアルゴリズムです。 ここでいうアルゴリズムとは、従うべき明確に定義された手順の集合を指します。暗号化や符号化とは、平文の情報を暗号やコードに変換して第三者に理解されないようにする処理です。
非技術的な使用法では「暗号」はしばしば「コード」と同じ意味で使われますが、暗号学の分野では暗号とコードは区別されます。ある20世紀の定義によれば、暗号は「隠蔽の基本単位が文字である方法」を指し、コードは基本単位が単語や語句である隠蔽の一形態とされています。後の時代には、言葉としての「暗号」が文字単位の意味で使われることが一般的になり、21世紀の暗号は、主にビットストリームを処理する技術へと移行しました。
コードは、単語やフレーズとランダムに見える文字列を結び付けた大規模なコードブックに従って置換することで成り立ちます。例えば、コード表によって「UQJHSE」は「次の座標に進んでください」という意味に対応することがあります。
暗号は元の情報(「平文」)を読み取れない形(「暗号文」)に変換します。暗号文は平文の情報をすべて含んでいますが、適切な復号の仕組みや鍵が無ければ人間やコンピュータが意味を取り出すことはできません。暗号化や復号化には通常「鍵」が必要で、暗号化は鍵に従って平文を暗号文に変換し、復号化は逆の処理を行います。
暗号の種類(鍵の観点から)
- 対称鍵アルゴリズム(秘密鍵暗号方式):暗号化と復号に同じ鍵を使用します。代表的な例としては古典的なシーザー暗号やヴィジュネル暗号、現代ではAES(Advanced Encryption Standard)などがあります。対称暗号は処理が高速で、データの大量暗号化に向いていますが、鍵の配布と管理が課題です。
- 非対称鍵アルゴリズム(公開鍵暗号):暗号化と復号に異なる鍵(公開鍵と秘密鍵)を使います。公開鍵は誰でも入手でき、秘密鍵は所有者のみが保持します。代表例はRSAや楕円曲線暗号(ECC)です。公開鍵暗号は鍵配布問題を大幅に軽減し、デジタル署名や鍵交換(例:Diffie–Hellman)に広く使われます。
暗号化と復号の仕組み(概念レベル)
暗号アルゴリズムは、次のような基本要素で成り立ちます。
- 平文:暗号化前の読み取り可能なデータ(例:メッセージ、ファイル)。
- 鍵:アルゴリズムに与えるパラメータで、変換の具体的内容を定めます(鍵)。
- 暗号化関数:平文と鍵を入力として暗号文を生成する関数。
- 復号化関数:暗号文と(対応する)鍵を入力して平文を再現する関数。
現代の暗号では、暗号強度は鍵の長さやアルゴリズムの数学的難易度に依存します。安全な暗号は、鍵が知られていない限り事実上復号が不可能であること(計算上の困難性)を目標に設計されます。
代表的な暗号方式の例
- 古典暗号:シーザー暗号、置換・転置暗号、ヴィジュネル暗号など。教育や歴史的事例で重要ですが、今日では容易に破られます。
- ブロック暗号:データを固定長のブロックに分けて暗号化(例:AES)。モード(CBC、GCMなど)を組み合わせることで安全性や機能(認証付き暗号)を確保します。
- ストリーム暗号:連続するビット列に対して逐次的に鍵ストリームをXORする方式(例:RC4の旧実装、現代のものではChaCha20など)。高速な処理が必要な場面で用いられます。
- 公開鍵暗号:RSA、楕円曲線暗号(ECC)、楕円曲線版の鍵交換や署名方式など。鍵交換、デジタル署名、鍵の配布に適します。
- ハッシュ関数:可逆でない関数で、データの要約(ダイジェスト)を作成します。整合性検査やパスワード保存、デジタル署名の基礎として使われます(例:SHA-256)。
用途と応用例
暗号技術は現代の情報社会の多くの場面で不可欠です。代表的な用途には次のものがあります。
- インターネット通信の機密性と整合性(TLS/SSL)
- 電子メールの暗号化(PGPなど)
- デジタル署名による認証と否認防止
- クレジットカード決済やオンラインバンキングの保護
- 仮想通貨やブロックチェーン技術における鍵管理と署名
- 端末のディスク暗号化(例:BitLocker、FileVault)
攻撃手法と防御
暗号に対する攻撃は多様で、対策もそれに応じて設計されます。主な攻撃手法には次のものがあります。
- 総当たり(ブルートフォース)攻撃:可能な鍵を全て試す方法。鍵長を十分に長くすることで防げます。
- 暗号解析(クリプトアナリシス):数学的性質や統計的偏りを利用して鍵や平文を推定する手法。安全なアルゴリズム設計と鍵管理で対抗します。
- サイドチャネル攻撃:電力消費、電磁波、計算時間などの実際的な情報から秘密を漏洩させる攻撃。実装時の対策(タイミングの平坦化、ノイズ追加)が必要です。
- プロトコル攻撃:暗号アルゴリズム自体は強くても、誤った運用やプロトコルの設計ミスにより脆弱性が生じます。安全なプロトコル設計と検証が重要です。
鍵管理の重要性
暗号の安全性はアルゴリズムだけでなく、鍵の管理(生成、配布、保管、更新、廃棄)に大きく依存します。鍵が漏洩すれば暗号は意味を失うため、ハードウェアセキュリティモジュール(HSM)、安全な鍵交換プロトコル、定期的な鍵更新(キー・ローテーション)などが実務上重要です。
歴史的背景と語源
暗号の歴史は古く、古代文明から軍事・外交の秘匿手段として発展してきました。近代になって計算機の登場とともに数学的解析が進み、第二次世界大戦時のエニグマ解読などで暗号学の重要性が認識されました。
「暗号(cipher)」という語は、フランス語で cifre、中世ラテン語で cifra、さらにアラビア語で「ゼロ」を意味する sifr に由来します。英語で最初にゼロが使われた記録は1598年に遡ります。暗号の学術的発展は、特に20世紀後半に公開鍵暗号の発見(1970年代)を契機に大きく進展しました。
現代的課題:量子コンピュータと耐量子暗号
量子コンピュータの発展は、現在広く使われているRSAやECCの安全性に影響を与える可能性があります。これに対して、量子耐性(ポスト量子)暗号の研究が進んでおり、格子暗号やコードベース暗号などが候補として注目されています。将来の移行計画と実装準備が重要です。
まとめ(実務上のポイント)
- 暗号アルゴリズムの選択は用途(通信、保存、署名)に依存する。対称と非対称の長所短所を理解して使い分ける。
- 鍵管理と実装の正しさが安全性を左右する。安全なプロトコル、ライブラリ、ハードウェアの利用を推奨。
- 最新の脅威(量子コンピューティング、サイドチャネル攻撃)に備えた継続的な評価と更新が必要。
暗号は単なる数式やプログラムではなく、設計・運用・政策が密接に関係する総合技術分野です。基礎概念を押さえつつ、実務(鍵管理、プロトコル設計、実装検証)を重視することが安全なシステム構築の鍵となります。
関連ページ
質問と回答
Q:暗号とは何ですか?
A: 暗号(またはサイファー)とは、暗号化(コード化)または復号化(デコード化)を行うためのアルゴリズムです。手順として明確に定義された一連のステップです。
Q: 情報はどのように暗号化されるのですか?
A: 暗号化または符号化することは、平文から暗号または符号に情報を変換することです。
Q: 暗号と暗号の違いは何ですか?
A: 専門的でない使い方では、「暗号」は「コード」と同じ意味であることが多いですが、暗号学では暗号はコードと区別されます。20世紀のある文献によると、暗号とは「隠蔽の基本単位が文字である方法」であると説明されています。これに対し、暗号は言葉を基本単位とする隠蔽の形式である」。
Q:暗号の仕組みは?
A: 暗号は、元の情報(「平文」)を暗号化された形(「暗号文」)に変えるために使われます。暗号文は平文の情報をすべて含んでいますが、復号するための適切なメカニズムがなければ、人間にもコンピュータにも読み取ることができません。暗号化または復号化するためには、「鍵」が必要です。暗号化では、平文を暗号文に、復号化ではその逆の特定の変換を鍵で指定します。
Q:暗号は使用する鍵の種類によってどのように分けられますか?
A:暗号は、暗号化と復号化に同じ鍵を使う対称鍵アルゴリズム(秘密鍵暗号)と、暗号化と復号化に異なる2つの鍵を使う非対称鍵アルゴリズム(公開鍵暗号)に分類されます。
Q:「暗号」の語源は?
A:「暗号」という言葉はフランス語のcifreと中世ラテン語のcifraに由来し、「ゼロ」を意味するアラビア語のsifrが語源となっています。英語でゼロが最初に使われたのは1598年です。
百科事典を検索する