暗号学(cryptography、またはcryptology)とは、情報を隠すための実践と研究のことである。暗号と呼ばれることもありますが、これは本当の正しい名前ではありません。情報を秘密にして安全に保つために使われる科学です。現代の暗号学は、数学、コンピュータサイエンス、電気工学をミックスしたものです。暗号はATM(銀行)カード、コンピュータのパスワード、インターネットでの買い物などで使われています。暗号は単に「秘匿」のためだけでなく、認証、完全性(改竄の検出)、否認防止(デジタル署名)など情報の信頼性を支える重要な技術体系でもあります。
暗号を使ってメッセージを送信する場合、送信前に文字を変更(暗号化)します。文字を変更する方法を「暗号」、より正確には「暗号」と呼びます。変更されたテキストは「暗号文」と呼ばれます。この変更により、メッセージは読みにくくなります。それを読もうとする人は、それを変更し直さなければなりません(あるいは解読しなければなりません)。どうやって書き換えるかは秘密です。メッセージを送った人も、受け取った人も、秘密の変更方法を知っているはずですが、それ以外の人は知ることができないはずです。秘密を発見するためにサイファーテキストを研究することを「暗号解読」や「クラッキング」、時には「コードブレーキング」と呼んでいます。
暗号の種類が違えば、使いやすいものと使いにくいものがあり、秘密のメッセージを良くも悪くも隠すことができます。暗号は、秘密のメッセージを隠すための秘密である「鍵」を使用します。暗号方式は秘密である必要はありません。様々な人が同じ方法を使っていても鍵が違うので、お互いのメッセージを読み取ることはできません。シーザー暗号はアルファベットの文字数と同じ数の鍵しかないので、すべての鍵を試すことで簡単に解読することができます。何十億もの鍵を許す暗号は、より複雑な方法で解読されます。
カエサルの時代以来、多くの改良されたサイファーが作られてきました。その中には、巧妙な暗号解読に対抗するための巧妙な数学が関与していたものもありました。20世紀には、コンピュータが暗号解読の主要なツールとなった。
歴史の概略
暗号の歴史は古く、古代の単純な置換や換字(シーザー暗号など)から始まり、中世・近代を経て、20世紀には機械式・電気機械式の暗号機(例:エニグマ)とそれを破る組織的な暗号解読活動が発展しました。第二次世界大戦では暗号解読が戦局に大きな影響を与え、戦後は数学的基盤に裏付けられた理論的な暗号研究が進みました。1970年代には公開鍵暗号(公開鍵暗号方式の発明、Diffie–Hellman、RSA)が登場し、暗号は通信インフラの基盤となりました。
基本的な仕組み
暗号は大きく以下の要素で成り立ちます。
- 平文(プレーンテキスト):元の読み取り可能なメッセージ。
- 暗号化アルゴリズム:平文を暗号文に変換する手順。
- 復号アルゴリズム:暗号文を平文に戻す手順。
- 鍵:暗号化・復号の際に使う秘密情報(または公開/秘密の対)。鍵の管理(生成・配布・破棄)は暗号の安全性を左右します。
暗号方式の分類
- 共通鍵暗号(対称鍵暗号):暗号化と復号に同じ鍵(または容易に導出できる鍵)を使う方式。AESが代表例で、高速なため大量データの暗号化に適する。
- 公開鍵暗号(公開鍵・秘密鍵):鍵が公開鍵と秘密鍵のペアになっており、公開鍵で暗号化すれば対応する秘密鍵で復号できる。RSAや楕円曲線暗号(ECC)、Diffie–Hellman鍵交換などがある。鍵配布問題を解決する一方で計算コストは高い。
- ハッシュ関数(不可逆関数):入力を固定長のダイジェストに変換する関数(SHA-2、SHA-3など)。データの整合性確認やパスワード保存、デジタル署名の一部に用いられる。
- メッセージ認証コード(MAC):共有鍵を用いてメッセージの完全性と認証性を保証する方式。
- デジタル署名:公開鍵暗号を用いてメッセージの作成者を証明し、否認防止と改竄検出を実現する技術。
暗号の安全性と主な攻撃手法
暗号の安全性は「理論的に絶対安全」か「計算上安全(現実的には安全)」かで区別されます。多くの実用暗号は、特定の数学的困難性(素因数分解、離散対数、格子問題など)に基づく計算困難性に依存しています。
攻撃手法には様々なモデルがあります:
- 暗号文のみ攻撃(ciphertext-only)
- 既知平文攻撃(known-plaintext)
- 選択平文攻撃(chosen-plaintext)や選択暗号文攻撃(chosen-ciphertext)
- 辞書攻撃・総当たり(ブルートフォース)攻撃:鍵の空間が小さいと実行可能
- サイドチャネル攻撃:消費電力、電磁波、タイミングなど実装上の情報漏洩を利用
- 暗号解析(数学的攻撃):構造的な弱点を突く方法
安全設計では、強力な乱数源(エントロピー)、適切な鍵長、標準化されたアルゴリズムとプロトコル、堅牢な実装が欠かせません。
現代暗号の主要な技術と応用
- AES(Advanced Encryption Standard):対称鍵暗号の標準。128/192/256ビット鍵があり、高速かつ安全性が高い。
- RSA、ECC:公開鍵暗号の代表。RSAは素因数分解の難しさ、ECCは離散対数問題(楕円曲線版)に基づく。
- TLS/SSL:インターネット通信の暗号化プロトコル。HTTPSでの安全な通信に使われる。
- デジタル署名(例:RSA署名、ECDSA):ソフトウェア配布や電子契約で用いられる。
- 認証プロトコルとPKI(公開鍵基盤):認証局(CA)を使った鍵の検証、証明書による信頼の仕組み。
- ハッシュ(SHA-2/3)とHMAC:データ整合性や認証に使用。
実践上の注意点
- アルゴリズム自体の安全性だけでなく、実装の脆弱性(バグ、サイドチャネル)にも注意する。
- 十分な鍵長を用いる。古い規格(例:短い鍵のRSAやMD5)は脆弱。
- 乱数生成は安全であること(擬似乱数生成器の種、ハードウェア乱数)。
- 鍵管理(生成、配布、保管、更新、破棄)を厳格に行う。
- 利用するプロトコルやライブラリは広く検証されたものを使い、古いものは更新する(例:TLSの古いバージョンは脆弱)。
将来の課題:量子コンピュータとポスト量子暗号
量子コンピュータは一部の公開鍵暗号(素因数分解や離散対数に基づく方式)を脅かす可能性があります。これに対して、格子基盤暗号、コードベース暗号、多変数多項式暗号などのポスト量子暗号が研究・標準化されつつあります。また、量子鍵配送(QKD)など、量子力学の原理を利用した新しい通信手段の研究も進行中です。
まとめ
暗号学は単なる「秘匿技術」ではなく、現代の情報社会を支える基盤技術です。理論(数学)と実装(工学)、運用(鍵管理)を総合的に考慮することで初めて安全が確保されます。日常で使う多くのサービス(銀行取引、インターネット通信、認証サービス)は暗号技術に依存しているため、暗号の基本的な仕組みや限界を理解することは重要です。

