インターネットのセキュリティと暗号化に関する次の記述のうち、最も適切なものはどれか。
- 公開鍵暗号方式では、公開鍵だけが必要である。
- 公開鍵基盤における公開鍵の所有者を保証する方法の1つとして、認証局を利用するものがある。
- スマートフォンはウイルスに感染しないので、インターネットヘのアクセスは安全である。
- デジタル署名では、メッセージに対するダイジェストを公開鍵で暗号化することで、メッセージの改ざんを検出できる。
- 無線LANの利用において、WEP( Wired Equivalent Privacy )方式を用いた暗号化によって完全に盗聴を防ぐことができる。
https://kakomonn.com/gijyutushi/questions/36510
最も適切なのは2番です。
解説
- 公開鍵暗号方式では「暗号化」に際しては相手の公開鍵だけを使いますが、「復号」には秘密鍵が必要です。
- 公開鍵基盤(PKI)では、認証局(CA)によって公開鍵とその所有者を証明する仕組みを用いる。
- スマートフォンもウイルスやマルウェアに感染します。
- デジタル署名は「ダイジェストを秘密鍵で暗号化」し、検証時に公開鍵で復号して照合します。
- WEP は既に脆弱性が多数発見されており、完全な盗聴防止はできません。
公開鍵暗号方式について詳しく教えてください
公開鍵暗号方式(Public-Key Cryptography)は、1970年代後半に考案された「非対称鍵暗号方式」とも呼ばれる暗号技術で、次のような特徴・仕組みを持ちます。
1. 基本概念
- 非対称鍵
- 「公開鍵(Public Key)」と「秘密鍵(Private Key)」の2つの鍵ペアを用意する。
- 公開鍵:誰にでも配布してよい鍵
- 秘密鍵:所有者だけが厳重に管理する鍵
- 暗号化と復号
- 暗号化には受信者の「公開鍵」を使い、
- 復号には対応する「秘密鍵」を使う。
受信者以外には秘密鍵がないため、安全に通信ができる。
2. 主なアルゴリズム例
アルゴリズム | 安全性の根拠 | 特長 |
---|---|---|
RSA | 大きな整数の素因数分解の困難性 | 実装が比較的シンプルで広く普及 |
楕円曲線暗号(ECC) | 楕円曲線上の離散対数問題 | 同じ安全度をより短い鍵長で実現 → 計算・通信コスト小 |
ElGamal | 離散対数問題 | RSAと同じく公開鍵暗号、鍵交換にも利用可能 |
Diffie–Hellman | 離散対数問題 | 鍵交換プロトコル。通信経路上で共通鍵を安全に生成 |
3. 鍵の生成と運用
- 鍵ペアの生成
- アルゴリズムに応じた乱数および数学的手続きで、公開鍵/秘密鍵を同時に作成。
- 例:RSAなら大きな素数 p, q をランダムに選び、 や公開指数 、秘密指数 を計算。
- 公開鍵の配布
- ウェブサイトやLDAP、証明書ファイル(.crt/.pem)の形で配布。
- 受信側は公開鍵を使って送信データを暗号化。
- 秘密鍵の保護
- 所有者だけがアクセスできる安全な環境(ハードウェアセキュリティモジュール HSM やパスフレーズで保護)で管理。
- 漏えいすると暗号通信が丸裸になる。
4. 暗号化・復号の流れ(RSAの例)
- 送信者が受信者の公開鍵 を取得
- 平文メッセージ に対して
で暗号文 を生成
- 送信者は暗号文 を受信者に送付
- 受信者は自分の秘密鍵 を使い
で元のメッセージを復元
5. デジタル署名との関係
公開鍵暗号方式は 機密性の確保(暗号化) だけでなく、真正性や改ざん検出(デジタル署名) にも使えます。
- 送信者がメッセージからハッシュ値 を計算
- 送信者が自分の秘密鍵で を署名 → 署名 を生成
- 受信者は公開鍵で を検証し、ハッシュを復号 → 受信側で計算した と一致すれば真正性・完全性が確認できる
6. 公開鍵基盤(PKI)と認証局(CA)
- 公開鍵そのものには「本当に本人のものか」という保証がないため、認証局(CA: Certificate Authority) が登場
- CAは本人確認を行った上で、公開鍵と所有者情報を組み合わせた デジタル証明書 を発行
- 証明書をブラウザやOSにインストールしておくことで、安全な公開鍵取得が可能に
7. 利用例
- HTTPS/TLS:ウェブブラウザとサーバー間の安全通信
- メール暗号化(S/MIME、OpenPGP):メールの機密性と署名
- SSH:リモートサーバーへの安全なログイン
- 電子契約・ブロックチェーン:トランザクション署名
8. 長所と短所
項目 | 長所 | 短所 |
---|---|---|
機密性 | 秘密鍵を漏らさなければ安全 | 鍵長が長いと計算コストが大きい |
真正性・改ざん検出 | デジタル署名で非否認性を実現 | 鍵管理・証明書管理の運用が煩雑 |
鍵配布 | 公開鍵だけ配布すればよい → ネットワーク負荷低減 | 中間者攻撃(MITM)対策にPKIや証明書チェーンが必須 |
まとめ
公開鍵暗号方式は、「公開鍵で暗号化 / 秘密鍵で復号」「秘密鍵で署名 / 公開鍵で検証」という非対称の性質を活かし、インターネット全体のセキュリティを支える基盤技術です。適切な鍵管理と認証局による証明書発行を組み合わせることで、安全・便利なデジタル社会を実現しています。
秘密鍵はどのように入手するのですか?
秘密鍵は、公開鍵とペアで自分自身が生成し、自分だけが厳重に保管します。以下、一般的な手順です。
- 鍵ペアの生成
- RSA や ECC といったアルゴリズムを指定し、暗号ライブラリ(OpenSSL、GnuPG、ssh-keygen など)を使ってコマンド一発で作成します。
# 例:OpenSSL で 2048ビットの RSA 鍵ペアを作る openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private_key.pem openssl pkey -in private_key.pem -pubout -out public_key.pem
- このとき出力される
private_key.pem
が「秘密鍵」、public_key.pem
が「公開鍵」です。
- RSA や ECC といったアルゴリズムを指定し、暗号ライブラリ(OpenSSL、GnuPG、ssh-keygen など)を使ってコマンド一発で作成します。
- 秘密鍵の保管
- ソフトウェア保護:
- ファイルにパスフレーズ(パスワード)をかける。
- できるだけ権限を制限したディレクトリ(例:Linux の
~/.ssh
や Windows のユーザープロファイル内など)に置く。
- ハードウェア保護:
- USBトークンやスマートカード、HSM(ハードウェア・セキュリティ・モジュール)に格納し、物理的・論理的にアクセス制限をかける。
- ソフトウェア保護:
- 公開鍵の配布
- 秘密鍵は絶対に外部へ渡さず、自分で生成した公開鍵だけを証明書作成やサーバ登録、相手への配布に使います。
- たとえば SSH なら相手サーバの
~/.ssh/authorized_keys
に、TLS サーバ証明書なら CSR(証明書署名要求)とともに CA に渡します。
ポイント:
- CA(認証局)やサービス提供者、あるいは他人から「秘密鍵」を受け取ることは基本的にありません。
- 秘密鍵は「自分のマシンで自分が作る」「決して他人と共有しない」「厳重にアクセス制御する」のが鉄則です。
- 万が一漏洩すると、その鍵で保護しているすべての通信や署名が突破されてしまうため、パスフレーズや HSM の利用で二重に守ることが推奨されます。
公開鍵や秘密鍵はインターネットでネットサーフィンをするときなどに使われているのですか?
はい。普段の「ネットサーフィン」(ウェブサイト閲覧)でも、裏では公開鍵/秘密鍵の仕組みが広く使われています。代表的なのが HTTPS(TLS)による安全な通信です。大まかな流れは以下のとおりです。
- サーバ証明書の検証
- あなたのブラウザが https:// で始まるサイトにアクセスすると、そのサイトは「公開鍵」を組み込んだ SSL/TLS 証明書をブラウザに送ってきます。
- ブラウザはその証明書を「この公開鍵は本当にこのサイトのものか?」と認証局(CA)が署名した電子署名でチェックし、真正性を確認します。
- セッション鍵の交換(鍵交換)
- 証明書検証後、実際のデータ暗号化に使う「共通鍵(セッション鍵)」を安全に交換する必要があります。
- ここで公開鍵暗号方式(EPSA や RSA、あるいは楕円曲線 DH)を使い、サーバの公開鍵で暗号化した情報をサーバに送り、サーバ側で秘密鍵で復号。これにより、第三者に盗み見されないよう共通鍵を安全に共有します。
- 対称鍵暗号による通信
- 共通鍵が安全に共有できたら、以後は通信の暗号化・復号ともに高速な「対称鍵暗号(AES など)」を使ってデータのやり取りを行います。
──まとめると──
- 公開鍵/秘密鍵 は「最初の認証」と「セッション鍵の安全な交換」に使われ、
- 対称鍵 はその後の大量データの暗号化に使われます。
ですから、あなたが普段ブラウザでウェブサイトを閲覧したり、オンラインバンキングを利用したりする際には、必ずと言っていいほどこの公開鍵暗号方式が裏で動いており、安全性を支えています。