こんにちは、フルスタックエンジニアのryuです。
今回の記事では、基本情報技術者試験の過去問を使いながら、共通鍵暗号方式の仕組みと特徴について解説します。
暗号方式を勉強すると、
「共通鍵と公開鍵、どっちが同じ鍵を使うんだっけ?」 「なぜ共通鍵暗号方式の方が高速なの?」 「鍵を相手に渡す必要があるなら、安全に渡せないのでは?」
と混乱することがあります。
共通鍵暗号方式でまず覚えておきたいのは、暗号化と復号に同じ秘密鍵を使うことです。
そして、公開鍵暗号方式と比べて処理が高速で、大量のデータを暗号化する用途に向いている一方、秘密鍵を相手と安全に共有する必要があります。
この記事では、過去問を解きながら、共通鍵暗号方式と公開鍵暗号方式の違い、鍵配送の問題、実際の通信でどのように使われるのかまで順番に解説します。
共通鍵暗号方式の特徴はどれか¶
今回はこちらの問題です。
共通鍵暗号方式の特徴はどれか。
ア:暗号化通信に使用する場合,鍵を相手と共有する必要があり,事前に平文で送付することが推奨されている。 イ:暗号化通信をする相手が1人の場合,使用する鍵の個数は公開鍵暗号方式よりも多い。 ウ:同じ程度の暗号強度をもつ鍵長を選んだ場合,公開鍵暗号方式と比較して,暗号化や復号に必要な時間が短い。 エ:鍵のペアを生成し,一方の鍵で文書を暗号化すると,他方の鍵でだけ復号することができる。 出典:平成30年秋期 問38
答えは、ウです。
共通鍵暗号方式は、公開鍵暗号方式と比べて暗号化・復号の処理を高速に行いやすいという特徴があります。
まずは、そもそも共通鍵暗号方式がどのような仕組みなのか確認してみましょう。
共通鍵暗号方式とは?¶
共通鍵暗号方式とは、暗号化と復号に同じ秘密鍵を使う暗号方式です。
送信者と受信者が、あらかじめ同じ鍵を共有します。

送信者は、その共通鍵を使ってデータを暗号化します。

受信者は、同じ共通鍵を使って暗号文を復号します。

流れを簡単にすると、
送信者
平文
↓
共通鍵で暗号化
↓
暗号文
↓
受信者
共通鍵で復号
↓
平文
となります。
送信者と受信者の両方が同じ秘密鍵を知っていることがポイントです。
「共通鍵」という名前の意味¶
共通鍵暗号方式という名前は、通信する相手同士が共通の秘密鍵を利用することから付いています。
例えば、AさんとBさんが通信するなら、
Aさん:秘密鍵Kを持つ
Bさん:秘密鍵Kを持つ
という状態です。
Aさんが鍵Kで暗号化したデータを、Bさんが同じ鍵Kで復号します。
ここで重要なのは、この鍵を第三者へ知られてはいけないことです。
もし攻撃者が鍵Kを入手すると、その鍵で暗号化された通信を復号される可能性があります。
そのため、共通鍵暗号方式では、
「どうやって秘密鍵を安全に相手へ共有するか」
が重要な課題になります。
共通鍵暗号方式は処理が高速¶
今回の問題で正解になっているのが、この特徴です。
共通鍵暗号方式は、一般に公開鍵暗号方式よりも暗号化・復号の処理が高速です。
そのため、大きなデータや継続的な通信内容を暗号化する用途で利用されます。
例えば、大量のデータを送るたびに計算負荷の高い処理を行うより、効率的に暗号化できる方式を使った方が実用的です。
代表的な共通鍵暗号アルゴリズムとしては、AESがあります。
基本情報技術者試験では、
共通鍵暗号方式=処理が速い
という特徴を、公開鍵暗号方式との比較で覚えておくとよいでしょう。
公開鍵暗号方式との違い¶
共通鍵暗号方式と一緒に覚えておきたいのが公開鍵暗号方式です。
公開鍵暗号方式では、二つの異なる鍵を使います。
公開鍵
秘密鍵
公開鍵は外部へ公開でき、秘密鍵は本人だけが安全に管理します。
例えば、公開鍵で暗号化したデータは、対応する秘密鍵で復号します。
違いを表にすると次のようになります。
| 項目 | 共通鍵暗号方式 | 公開鍵暗号方式 |
|---|---|---|
| 鍵 | 同じ秘密鍵 | 公開鍵と秘密鍵のペア |
| 暗号化・復号 | 高速 | 共通鍵方式より計算負荷が大きい |
| 鍵共有 | 秘密鍵を安全に共有する必要がある | 公開鍵は公開できる |
| 主な用途 | データ本体の暗号化など | 鍵交換、認証など |
「どちらが優れている」という話ではありません。
それぞれ得意な役割が違うため、実際のシステムでは組み合わせて利用されることがあります。
アが誤りの理由¶
アはこちらです。
暗号化通信に使用する場合,鍵を相手と共有する必要があり,事前に平文で送付することが推奨されている。
前半の、
鍵を相手と共有する必要がある
は正しいです。
しかし、
平文で送付することが推奨されている
という部分が誤りです。
共通鍵を暗号化されていない通信でそのまま送ってしまえば、途中で盗聴されたときに鍵そのものが漏れてしまいます。
秘密鍵Kを平文で送信
↓
途中で盗聴
↓
攻撃者も秘密鍵Kを知る
↓
暗号文を復号される可能性
となります。
つまり、共通鍵は安全な方法で共有する必要があるわけです。
イが誤りの理由¶
イはこちらです。
暗号化通信をする相手が1人の場合,使用する鍵の個数は公開鍵暗号方式よりも多い。
相手が1人の場合、共通鍵暗号方式では、通信する2者で1つの共通鍵を共有できます。
一方、公開鍵暗号方式では、基本的に公開鍵と秘密鍵のペアを利用します。
そのため、「相手が1人なら共通鍵暗号方式の方が鍵の個数が多い」という説明は適切ではありません。
ただし、通信相手が増えると共通鍵暗号方式では鍵管理が複雑になります。
例えば、利用者同士がそれぞれ別の秘密通信を行うために個別の共通鍵を持つなら、組合せが増えるほど管理する鍵も増えていきます。
基本情報技術者試験では、
共通鍵暗号方式は相手ごとに安全な共通鍵を管理する必要があり、多人数では鍵管理が課題になる
と理解しておくとよいでしょう。
エは公開鍵暗号方式の説明¶
エはこちらです。
鍵のペアを生成し,一方の鍵で文書を暗号化すると,他方の鍵でだけ復号することができる。
これは公開鍵暗号方式の特徴です。
共通鍵暗号方式では、
暗号化する鍵 = 復号する鍵
ですが、公開鍵暗号方式では、
公開鍵
秘密鍵
という異なる鍵のペアを利用します。
問題文に、
「鍵のペア」 「一方の鍵で暗号化し、他方で復号」
とあれば、公開鍵暗号方式を疑いましょう。
なぜ共通鍵をそのまま送れないの?¶
共通鍵暗号方式で初心者が疑問に思いやすいのが、
「相手も同じ鍵を持つ必要があるなら、その鍵をどうやって渡すの?」
という点です。
これは鍵配送問題と呼ばれることがあります。
通信を暗号化するための鍵なのに、その鍵を安全でない通信で送れば意味がありません。
例えば、
これから秘密の通信をします
↓
秘密鍵は「ABC123」です
↓
その鍵を平文でネットワークへ送る
では、鍵そのものを盗聴される可能性があります。
そのため、実際の通信では公開鍵暗号や鍵共有の仕組みなどを利用して、安全に共通鍵となる秘密情報を確立します。
実際の通信では暗号方式を組み合わせる¶
WebサイトへHTTPSで接続するときなど、現代の暗号通信では、一つの暗号方式だけですべてを処理するとは限りません。
大まかな考え方としては、
公開鍵暗号などを利用
↓
安全に共有秘密を確立
↓
共通鍵暗号で通信データを高速に暗号化
というように、それぞれの長所を生かして組み合わせます。
公開鍵暗号は秘密情報の共有や認証に向いており、共通鍵暗号は大量の通信データを効率よく暗号化するのに向いています。
試験では細かなプロトコル実装まで覚える前に、
公開鍵暗号=鍵共有や認証に活用 共通鍵暗号=実際のデータ暗号化を高速に処理
という役割の違いを理解すると整理しやすいです。
あわせて読みたい
ブルートフォース攻撃との関係¶
前の記事では、共通鍵暗号の鍵をブルートフォース攻撃で探す過去問を解説しました。
暗号鍵がnビットなら、単純化すると候補は、
2^n
通りあります。
鍵長が大きくなるほど、全候補を試すために必要な計算量も増えます。
そのため暗号方式を学ぶときは、
暗号化・復号の仕組み だけでなく、 鍵の長さや鍵管理 も重要です。
共通鍵暗号方式の記事とブルートフォース攻撃の記事をセットで読むと、暗号分野の理解がつながりやすくなります。
あわせて読みたい:ブルートフォース攻撃に該当するものはどれか
科目Bでは暗号方式を状況から判断する¶
今回の問題は、共通鍵暗号方式の特徴を選ぶ知識問題です。
一方、科目Bのセキュリティでは、システム構成や通信の流れを読んで、
「どの情報を秘密にする必要があるか」 「どこで暗号化するか」 「どの鍵を誰が持つのか」
を考えることがあります。
例えば、
A社とB社で大量のデータを暗号化して送信したい
↓
通信データの暗号化処理はできるだけ高速にしたい
という状況なら、共通鍵暗号方式の特徴が関係してきます。
一方、
通信開始前に秘密情報を安全に共有したい
という部分では、公開鍵暗号など別の仕組みが関係するかもしれません。
このように、
用語の特徴 ↓ 通信のどこで使うか ↓ なぜその方式を選ぶのか
まで考えられるようにすると、科目Bにもつながります。
Giji Academyで科目Bのセキュリティを実践的に学ぶ¶
暗号方式は、文章だけで覚えると、
共通鍵
公開鍵
ハッシュ
電子署名
などが混ざりやすい分野です。
大切なのは、それぞれについて、
何のために使うのか 誰がどの鍵を持つのか どの情報を守っているのか
を整理することです。
Giji Academyでは、基本情報技術者試験の科目Bに関連するセキュリティ問題を、ネットワークやサーバーの基礎から段階的に学習できます。
擬似言語だけではなく、
- 通信
- 認証
- 暗号
- ハッシュ
- 攻撃手法
- セキュリティ対策
などを、システムの流れと結びつけながら理解できるようにしています。
「科目Aでは暗号用語を覚えたけど、科目Bで通信構成が出ると分からなくなる」という方は、実際にどこで何を守っているのかまで考えてみてください。
登録不要で無料体験できます。
過去問解説まとめ¶
今回の記事では、次の問題を解説しました。
共通鍵暗号方式の特徴はどれか。
ア:暗号化通信に使用する場合,鍵を相手と共有する必要があり,事前に平文で送付することが推奨されている。 イ:暗号化通信をする相手が1人の場合,使用する鍵の個数は公開鍵暗号方式よりも多い。 ウ:同じ程度の暗号強度をもつ鍵長を選んだ場合,公開鍵暗号方式と比較して,暗号化や復号に必要な時間が短い。 エ:鍵のペアを生成し,一方の鍵で文書を暗号化すると,他方の鍵でだけ復号することができる。 出典:平成30年秋期 問38
答えは、ウです。
共通鍵暗号方式で覚えておきたいポイントは、
- 暗号化と復号に同じ秘密鍵を使う
- 公開鍵暗号方式と比べて暗号化・復号を高速に行いやすい
- 秘密鍵を通信相手と安全に共有する必要がある
- 鍵を平文でそのまま送るのは危険
- 公開鍵暗号方式では公開鍵と秘密鍵のペアを使う
- 実際の暗号通信では複数の暗号技術を組み合わせることがある
というところです。
基本情報技術者試験では、
「同じ鍵を使う=共通鍵」 だけで終わらず、
「高速だが、安全な鍵共有が必要」
までセットで理解しておきましょう。
Giji Academyでは、擬似言語に加えて、科目Bに関連するセキュリティ問題も実践的に学習できます。
Giji Academy|科目Bの擬似言語・セキュリティを学ぶ
基本情報技術者試験の過去問解説はこちらから確認できます。





