暗号理論(暗号学)とは|定義・歴史・仕組みと現代暗号の基礎

暗号学(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)など、量子力学の原理を利用した新しい通信手段の研究も進行中です。

まとめ

暗号学は単なる「秘匿技術」ではなく、現代の情報社会を支える基盤技術です。理論(数学)と実装(工学)、運用(鍵管理)を総合的に考慮することで初めて安全が確保されます。日常で使う多くのサービス(銀行取引、インターネット通信、認証サービス)は暗号技術に依存しているため、暗号の基本的な仕組みや限界を理解することは重要です。

20世紀初頭の暗号ホイールZoom
20世紀初頭の暗号ホイール

対称的

称鍵アルゴリズムでは、送信者と受信者の両方が鍵を共有します。送信者はメッセージを隠すために鍵を使用します。その後、受信者は同じ鍵を逆の方法で使用して、メッセージを明らかにします。何世紀にもわたって、ほとんどの暗号技術は対称的なものでした。Advanced Encryption Standardは広く使われているものです。しかし、これは対称性と混同してはいけません。

非対称

非対称暗号の方が使いにくい。非対称暗号を使いたい人はそれぞれ、共有されない秘密の番号(「秘密鍵」)と、誰にでも教えられる別の番号(「公開鍵」)を使います。もし他の誰かがこの人にメッセージを送りたいと思ったら、彼らはメッセージを隠すために言われた番号を使います。これで、メッセージは送信者であっても明かすことができなくなりましたが、受信者は自分の秘密、あるいは「秘密鍵」を使って簡単にメッセージを明かすことができるようになります。そうすれば、誰も秘密鍵を知る必要はありません。

非対称暗号は一般的に、より多くの時間がかかり、より多くのコンピュータパワーを必要とするため、ほとんどの場合には使用されません。その代わりに、あるデータ(ファイルやウェブサイトなど)が特定の送信者から送信されたことをコンピュータが知る必要がある場合に、コンピュータ署名に使用されることが多いです。例えば、ソフトウェアの更新プログラムをリリースしているコンピュータ・ソフトウェア会社は、更新プログラムに署名して、その更新プログラムが自分たちによって作成されたものであることを証明することで、ハッカーが危害を加えるような更新プログラムを自分たちで作成できないようにすることができます。HTTPS を使用するウェブサイトでは、RSA という一般的なアルゴリズムを使用して証明書を作成しています。コンピュータはまた、非対称暗号を使用して、対称暗号のための鍵をお互いに与えることができます。

コンピュータ

コンピュータは素早く計算できます。コンピュータは非常に強力な暗号化を行うことができ、21世紀の暗号技術のほとんどはそれを使用しています。例としては、RSAやAESのようなコンピュータアルゴリズムがありますが、他にもたくさんあります。これらのような優れたアルゴリズムを使用すると、送信された情報を読み取るのが非常に困難になります。

人々

人はコンピュータよりも遅いので、彼らが使っているどんな暗号も、それを変更するための秘密の方法が十分に知られていれば、おそらく壊れる可能性があります。

機械がなくても人ができる暗号の単純な形式としては、シーザー暗号や転置暗号などがありますが、コンピュータが使われる前には他にも多くの種類が使われていました。

質問と回答

Q:暗号とは何ですか?


A: 暗号学は、情報を隠すための技術であり、研究です。数学、コンピュータサイエンス、電気工学を組み合わせて、情報を秘匿し、安全に保つための技術です。

Q:暗号はどのように使われているのですか?


A: 暗号は、ATM(銀行)カード、コンピュータのパスワード、インターネットでの買い物などで使われています。暗号を使ってメッセージを送信する場合、送信前に変更(暗号化)されます。

Q: 暗号を使って文章を変えるとは、どのようなことですか?


A: 暗号で文章を変えるには、「暗号」を使います。変更されたテキストは「暗号文」と呼ばれます。これにより、メッセージが読みにくくなるので、誰かがそれを元に戻す(または復号する)必要があります。

Q:暗号文を研究して秘密を発見することを何と言いますか?


A: 秘密を発見するために暗号文を研究することを「暗号解読」または「クラッキング」、時には「コードブレーキング」と呼びます。

Q:暗号はどのような鍵を使用するのですか?


A:暗号は「鍵」を使用します。「鍵」は秘密のメッセージを隠すための秘密です。

Q:シーザー暗号はいくつの鍵を持っていますか?


A:シーザー暗号はアルファベットの数だけ鍵があるので、可能な限りの鍵を試せば簡単に解読することができます。

Q:20世紀になって、コンピュータはどのように暗号に関わるようになったのですか?


A:20世紀にコンピュータが暗号の重要なツールとなったのは、何十億もの鍵を許容する暗号をより複雑な方法で解読することが可能になったからです。

AlegsaOnline.com - 2020 / 2025 - License CC3