暗号技術
暗号技術は、情報を保護するためにデータを他人には解読できない形に変換する技術です。
この技術を使うことで、データが盗聴や不正アクセスにより第三者に漏れても、その内容が読み取れない状態で保護されます。
インターネット上での安全な通信や、データの保護において、暗号技術は非常に重要な役割を果たしています。
平文と暗号文
暗号化されていない、元の情報またはメッセージのことを平文といいます。
一方、平文を特定の暗号化手段を用いて変換したものを暗号文といいます。読み取るためには適切な鍵が必要となります。
暗号化と復号化
平文を特定のアルゴリズムを用いて変換し、暗号文に変換するプロセスを暗号化といいます。
復号化はその逆のプロセスで、暗号文を元の平文に戻すことをいいます。
![](https://it-school.te2software.com/wp-content/uploads/2023/09/暗号化.png)
暗号技術の種類
暗号技術には、共通鍵暗号方式と公開鍵暗号方式があります。
共通鍵暗号方は同じ鍵(共通鍵)を暗号化と復号化に使用し、公開鍵暗号方式は異なる鍵(公開鍵と秘密鍵)を使用して情報を保護します。
共通鍵暗号方式
共通鍵暗号方式は、暗号化と復号の両方のプロセスで同じ鍵を使用する暗号技術です。
この方式の特徴は、送信者と受信者が同じ鍵を共有している必要があることです。鍵が正しく管理されていれば、共通鍵暗号方式は非常に安全で効率的な方法で情報を保護することができます。
共通鍵暗号方式の一般的なアルゴリズムには、無線LANの暗号化規格であるWPA2で利用されているAES(Advanced Encryption Standard)やDES(Data Encryption Standard)、3DES(Triple Data Encryption Standard)などがあります。これらのアルゴリズムは、暗号化と復号の速度が速く、コンピュータの処理能力をあまり消費しないため、大量のデータを効率的に暗号化・復号する際に広く使われています。
ただし、共通鍵暗号方式の最大の課題は、鍵の配布です。送信者と受信者が同じ鍵を共有しなければならないため、鍵を安全に配布する方法が必要です。
この課題は、次に説明する公開鍵暗号方式で解決されています。公開鍵暗号方式では、鍵のペア(公開鍵と秘密鍵)が使用され、鍵の配布問題を効果的に解決します。
![](https://it-school.te2software.com/wp-content/uploads/2023/08/暗号化_共通鍵暗号方式-1.png)
公開鍵暗号方式
公開鍵暗号方式は、暗号化と復号化のプロセスで異なる鍵を使用する暗号技術です。
この方式では、鍵のペアが用いられます。そのペアは、公開鍵と秘密鍵から構成されています。
公開鍵は、他の人と共有され、誰でも利用できる鍵です。誰かがあなたに情報を送信したい場合、あなたの公開鍵を使って情報を暗号化します。
一方、秘密鍵はあなただけが持っており、他人とは共有されません。暗号化された情報を復号化する際には、この秘密鍵が必要です。
公開鍵暗号方式の代表的なアルゴリズムには、RSA(Rivest-Shamir-Adleman)や楕円曲線暗号があります。
この方式は、鍵の配布の問題を効果的に解決します。送信者は受信者の公開鍵を使って情報を暗号化し、受信者は秘密鍵を使って情報を復号化できるため、鍵の安全な配布が容易になります。
ただし、公開鍵暗号方式の欠点は、計算量が多く、共通鍵暗号方式に比べて速度が遅いことです。
そのため、一般的には、公開鍵暗号方式は鍵の交換やデータの署名など、小規模なデータに対して用いられ、データの暗号化・復号化には共通鍵暗号方式が使われることが多いです。
![](https://it-school.te2software.com/wp-content/uploads/2023/08/暗号化_公開鍵暗号方式.png)
公開鍵暗号方式を、日常的な例え話でわかりやすく説明します。
ある日、あなたは新しい金庫を購入しました。この金庫は特別で、それぞれ異なる二つの鍵穴があり、「公開鍵」で施錠した場合は「秘密鍵」でしか開錠できず、「秘密鍵」で施錠した場合は「公開鍵」でしか開錠できません。
※話の都合上、この金庫にはコインロッカーのように同様の仕組みの箱が無数にあるとします。
あなたは、「公開鍵」を友人や宅配業者などの大勢の人に配る一方、「秘密鍵」は自分一人だけが持つことにし、以下のような使い方をしようと考えました。
①あなただけに秘密で送信できるメッセージボックス
友人たちがあなたにメッセージを送りたい場合、メッセージを中に入れ、公開鍵で施錠します。こうすることで、メッセージを受け取れるのは、秘密鍵を所有しているあなただけなので、安全にメッセージを受け取ることができます。
※友人たちからメッセージを受け取るだけでなく、お互いにこの「金庫」を所持し、公開鍵を交換し合うことで相互に連絡することも可能です。
②あなただけが受け取れる絶対に盗まれることのない宅配ボックス。
宅配業者があなたに荷物を届けたい場合、荷物を中に入れ、公開鍵で施錠します。こうすることで、荷物を受け取れるのは、秘密鍵を所有しているあなただけなので、安全に荷物を受け取ることができます。
※①②は使い方としては同じです。
この金庫の仕組みが、公開鍵暗号方式の基本的な考え方です。公開鍵(誰でも使える暗号化の鍵)を使ってメッセージを暗号化し、秘密鍵(あなただけが持つ復号化の鍵)を使ってメッセージを復号化することで、情報の安全性を保ちながら通信ができます。この方法により、事前に秘密の鍵を共有する必要がなく、公開鍵を使って誰でも安全にメッセージを送ることが可能になります。
暗号技術は、情報を秘密に保つために、数学的な操作を利用して情報を変換します。その中でも公開鍵暗号方式は、ある数学的問題の「困難さ」を基盤として安全性を保証します。
公開鍵暗号の代表的なものに「RSA暗号」というものがあります。RSA暗号の安全性は、大きな数の「素因数分解」という数学的操作の難しさに基づいています。
具体的には、2つの大きな素数を乗算して得られる一つの巨大な数字(合成数)が、RSA暗号の公開鍵の一部として利用されます。元となる2つの素数自体は秘密鍵として保持され、公開されることはありません。
ここでの「困難さ」とは、現代の最良のアルゴリズムやコンピュータを使用しても、合成数からその構成要素の素数を求める(素因数分解する)のに非常に長い時間がかかることを意味します。
例として、
- p = 61
- q = 53
この2つの素数を掛け合わせると、
- n = p × q = 3233
となります。この数「3233」が公開鍵の一部として利用される合成数です。
小さい数字であれば因数分解は簡単ですが、実際のRSA暗号では、このような素数は数百桁以上もの非常に大きな数字となります。例えば、現代の暗号の安全な推奨長としては、2048ビット(約617桁)以上がしばしば使用されます。
このような非常に大きな合成数を素因数分解しようとすると、現在のコンピュータやアルゴリズムでは実質的に不可能なほどの時間がかかるとされています。この素因数分解の難しさが、RSA暗号の安全性の根底にあります。
![](https://it-school.te2software.com/wp-content/uploads/2023/11/暗号化_因数分解.png)
ハイブリッド鍵暗号方式
ハイブリッド暗号方式は、共通鍵暗号方式と公開鍵暗号方式の両方のメリットを組み合わせた暗号化手法です。それぞれの短所をそれぞれの長所でカバーしあった方式と言えます。
この方式では、共通鍵暗号方式の高速性と、公開鍵暗号方式の鍵配布の安全性を活用して、データの暗号化と復号化を効率的かつ安全に行います。
ハイブリッド暗号方式の仕組みは以下のようになります。
- 送信者が受信者に接続を要求します。
- 受信者が公開鍵を生成し、送信者に配布します。
- 送信者は、ランダムな共通鍵を生成します。
- 送信者は、受信者の公開鍵を使って共通鍵を暗号化し、受信者に送信します。
- 受信者は、自分の秘密鍵を使って暗号化された共通鍵を復号化し、元の共通鍵を取得します。
- 送信者と受信者は、同じ共通鍵を使って暗号化された通信を開始します。
この方法では、公開鍵暗号方式を用いて安全に共通鍵を送信し、共通鍵暗号方式を用いて高速にデータの暗号化と復号化を行うことができます。
![](https://it-school.te2software.com/wp-content/uploads/2023/08/暗号化_ハイブリッド-5.png)
ハイブリッド暗号方式は、インターネット上で安全な通信を実現するための標準的な手法であり、例えば、HTTPS(セキュアなウェブ通信)などで広く利用されています。
ハイブリッド鍵暗号方式では、最初の共通鍵の受け渡しのみ公開鍵暗号方式で通信し、残りは高速な共通鍵暗号方式を用いて通信します。
練習問題
- 公開鍵暗号方式を使って10人がそれぞれ相互に通信する場合、何種類の鍵が必要ですか?
-
公開鍵暗号方式では、1人あたり1つの公開鍵と1つの秘密鍵が必要です。
10人がそれぞれ1対1で相互に通信する場合、各人が1つの公開鍵と1つの秘密鍵を持っていると考えると、合計で2×10=20種類の鍵が必要になります。
各人の公開鍵は他の参加者と共有され、秘密鍵は各自が保持します。相手の公開鍵で暗号化し、自分の秘密鍵で復号することで安全な通信が可能になります。
関連用語
「耐タンパ性(tamper resistance)」とは、製品やシステムが改ざんや不正アクセスに対して耐性を持っていることを指します。
具体的には、ハードウェアやソフトウェアの設計段階からセキュリティ対策を施し、悪意のある第三者がシステムや情報にアクセスしたり、データを改ざん・破壊したりすることを防ぐことを目指します。
これには、物理的なセキュリティ対策やアクセス制御、暗号技術などが含まれます。
耐タンパ性が高いシステムは、不正アクセスや改ざんに対してより強固な防御を提供し、情報セキュリティを向上させる効果があります。
※tamperは「改ざん」の意味の英単語です。