暗号技術の基礎と応用
ブロック暗号とストリーム暗号、AES、暗号利用モード(ECB・CBC・CTR・GCM)、初期化ベクトルとナンス、パディングオラクル攻撃、鍵長と総当たりの手間、SHA-2とSHA-3、長さ拡張攻撃とHMAC、誕生日攻撃の計算、鍵導出関数、小さな数で確かめるRSA暗号とディフィー・ヘルマン鍵交換、楕円曲線暗号の鍵長、前方秘匿性、認証局と証明書チェーン、証明書の透明性、TLS 1.3、0-RTTとリプレイ、相互TLS、グローバーのアルゴリズムと鍵長、ML-KEM・ML-DSA・SLH-DSA、ハイブリッド鍵交換、HSM、エンベロープ暗号化、鍵のローテーション、クリプトアジリティを、計算問題を含む3択問題で学べます。
暗号技術の基礎と応用の要点
暗号は、アルゴリズムが安全なだけでは役に立ちません。同じナンスを二度使う、ECBモードで暗号化する、証明書のホスト名を確かめない、といった使い方の誤りで、強い暗号もたやすく破られます。ここでは、暗号が実際のシステムやプロトコルの中でどう組み合わされて使われているかを、一段深く学びます。
まず共通鍵暗号として、ブロック暗号とストリーム暗号、AESのブロック長と鍵長、暗号利用モード(ECB・CBC・CTR・GCM)と初期化ベクトル・ナンスの条件、パディングとパディングオラクル攻撃、認証付き暗号(AEAD)を扱い、CTRモードでナンスを再利用したときに平文が漏れる様子を計算で確かめます。続いて、SHA-2とSHA-3、長さ拡張攻撃とHMAC、誕生日攻撃によるブロック長64ビットの限界、鍵導出関数を学び、RSA暗号とディフィー・ヘルマン鍵交換を小さな数で計算して、離散対数問題、中間者攻撃、楕円曲線暗号の鍵長の目安、前方秘匿性、ECDSAの乱数の扱いを確かめます。後半では、認証局と証明書チェーン、ホスト名の確認、証明書の透明性、TLS 1.3の変更点と暗号スイート、0-RTTのリプレイ、相互TLSを扱い、耐量子計算機暗号として、グローバーのアルゴリズムと鍵長、2024年8月に標準化されたML-KEM・ML-DSA・SLH-DSA、鍵カプセル化メカニズム、ハイブリッド鍵交換、移行の時期の考え方を学びます。最後に、HSM、エンベロープ暗号化、鍵のローテーション、クリプトアジリティといった鍵の管理を確かめます。応用情報技術者試験や情報処理安全確保支援士試験のセキュリティ分野の学習に役立ちます。計算問題の値は、誤りの選択肢の値も含めて、Pythonで計算して確かめています。共通鍵暗号と公開鍵暗号の基本、鍵の数の計算、ハッシュ関数の性質とパスワードの保存、デジタル署名とMACの違いは「情報セキュリティの基礎」、サイドチャネル攻撃と定数時間の実装、AES-NI、TPM、真性乱数生成器は「ハードウェアセキュリティ」、ショアのアルゴリズムと量子コンピュータの規模は「量子コンピュータのハードウェア」、TLSの往復の回数とHTTPSで守られることは「ネットワークの基礎」、JWTとOAuthは「Web技術の基礎」、エントロピーは「情報理論と符号の基礎」の分野で扱います。
暗号技術の基礎と応用の問題一覧(40問)
- 共通鍵暗号のうち、ブロック暗号とストリーム暗号の違いの説明として、正しいものはどれか。
- 現在広く使われているブロック暗号AESの、ブロック長と鍵長の組み合わせとして正しいものはどれか。
- 画像のデータをAESのECBモードで暗号化したところ、暗号化した後の画像でも、元の絵の輪郭が見分けられた。この原因として正しいものはどれか。
- AESをCBCモードで使うときの、初期化ベクトル(IV)の扱いとして適切なものはどれか。
- AES(ブロック長16バイト)をCBCモードで使い、パディングにはPKCS#7方式を使う。PKCS#7方式では、足りないバイト数をnとして値がnのバイトをn個足し、平文の長さがちょうど16の倍数のときも、値が16のバイトを16個足す。96バイトの平文を暗号化したときの暗号文の長さ(IVは含めない)はどれか。
- CBCモードで暗号化したデータを受け取るサーバが、復号した後のパディングが正しくないときと、パディングは正しいが中身の検査に失敗したときとで、異なるエラーを返していた。この状況についての説明として、正しいものはどれか。
- ブロック暗号のCTRモード(カウンタモード)の特徴として、正しいものはどれか。
- CTRモードで、誤って同じ鍵と同じナンスを使い、2つのメッセージを暗号化した。ある位置のバイトについて、1つ目の平文 P₁ は 01001000(ASCIIの「H」)、その暗号文 C₁ は 01110100、2つ目の暗号文 C₂ は 01010101 である。攻撃者が P₁ を知っているとき、同じ位置の2つ目の平文 P₂ はどれか。
- AES-GCMのような認証付き暗号(AEAD)が、1つの処理で提供するものとして正しいものはどれか。
- AES-GCMで使う96ビットのナンス(IV)についての説明として、正しいものはどれか。
- ある装置で、56ビットの鍵をすべて試す総当たりに約20時間かかる。同じ装置で、64ビットの鍵をすべて試すのにかかる時間に最も近いものはどれか。
- ハッシュ関数のSHA-2とSHA-3の説明として、正しいものはどれか。
- 秘密の鍵Kとメッセージmをつなげた値のハッシュ値 SHA-256(K ‖ m) を、改ざんの検出用のタグとして使うのは危険とされる。その理由として正しいものはどれか。
- 1 GiB = 2³⁰ バイト、1 EiB = 2⁶⁰ バイトとする。ブロック長が64ビットのブロック暗号(3DESなど)をCBCモードで使い、1つの鍵で大量のデータを暗号化する。暗号文ブロックをランダムな64ビットの値とみなすとき、誕生日のパラドックスにより、同じ暗号文ブロックの組が現れる確率が無視できなくなるデータ量の目安はどれか。
- TLS 1.3などのプロトコルで、ECDHEの鍵交換で得た共有の秘密をそのまま暗号の鍵には使わず、HKDFのような鍵導出関数(KDF)を通して鍵を作る理由として、適切なものはどれか。
- RSA暗号の仕組みを小さな数で確かめる。素数 p = 5、q = 11 から n = pq を作り、公開指数を e = 3 とする。φ(n) = (p − 1)(q − 1) として、e × d ≡ 1 (mod φ(n)) を満たす秘密指数 d(0 < d < φ(n))はどれか。
- RSA暗号で、公開鍵を n = 55、e = 3 とする。平文 m = 7 を c = m^e mod n で暗号化したときの暗号文 c はどれか。
- 教科書どおりのRSA暗号(平文 m をそのまま c = m^e mod n とする方式)を、パディングを付けずに実際の通信に使うことの問題点として、正しいものはどれか。
- ディフィー・ヘルマン鍵交換では、素数 p と生成元 g を公開し、AさんとBさんがそれぞれ秘密の値 a、b を選んで、g^a mod p と g^b mod p を互いに送る。盗聴者がこれらの公開された値をすべて見ても、共有の秘密 g^(ab) mod p を求められないと考えられている理由として、正しいものはどれか。
- ディフィー・ヘルマン鍵交換を小さな数で確かめる。p = 23、g = 5 とし、Aさんは秘密の値 a = 6、Bさんは秘密の値 b = 15 を選ぶ。Aさんは A = g^a mod p を、Bさんは B = g^b mod p を送り合う。2人が得る共有の秘密はどれか。
- 認証を行わないディフィー・ヘルマン鍵交換の弱点と、その対策の組み合わせとして正しいものはどれか。
- NIST SP 800-57 の表で、128ビットの共通鍵暗号(AES-128)と同程度の安全性の目安とされる、RSA暗号の鍵長(n のビット数)と楕円曲線暗号の鍵長の組み合わせはどれか。
- TLSで、サーバの証明書の秘密鍵が後で漏えいしても、それ以前に記録された通信は復号されないという性質(前方秘匿性)が得られる鍵交換の方法はどれか。
- ECDSAのデジタル署名では、署名ごとに秘密の乱数 k を使う。k の扱いについての説明として、正しいものはどれか。
- ブラウザがWebサーバの証明書を検証するときの、証明書チェーンについての説明として正しいものはどれか。
- TLSの証明書の検証では、署名のチェーンと有効期間を確かめるだけでなく、接続しようとしたホスト名が証明書のSAN(サブジェクト代替名)に含まれるかも確かめる。この確認が欠かせない理由として、正しいものはどれか。
- 証明書の透明性(Certificate Transparency、CT)の仕組みの説明として、正しいものはどれか。
- TLS 1.3(RFC 8446)で、TLS 1.2から変わった点として正しいものはどれか。
- TLS 1.3の暗号スイート TLS_AES_128_GCM_SHA256 が指定するものの組み合わせとして、正しいものはどれか。
- TLS 1.3の0-RTT(以前の接続で得た事前共有鍵を使い、最初のメッセージと一緒に「アーリーデータ」を送る方法)の注意点として、正しいものはどれか。
- 相互TLS(mTLS)の説明として、正しいものはどれか。
- 鍵長がnビットの共通鍵暗号の鍵を、量子コンピュータのグローバーのアルゴリズムで探すと、必要な計算の回数は約 2^(n/2) 回になるとされる。この単純な目安で考えたときの、量子コンピュータに対するAES-128の安全性として、最も近いものはどれか。
- 米国のNISTが2024年8月に公表した耐量子計算機暗号の標準と、その種類の組み合わせとして正しいものはどれか。
- ML-KEMのような鍵カプセル化メカニズム(KEM)の使い方の説明として、正しいものはどれか。
- 耐量子計算機暗号への移行の途中で使われる、X25519(楕円曲線を使うディフィー・ヘルマン鍵交換)とML-KEMを組み合わせたハイブリッド鍵交換の考え方として、正しいものはどれか。
- 暗号の移行の時期を考えるのに、「データを秘密にしておく必要のある年数 x と、新しい暗号への移行にかかる年数 y の和が、暗号を破れる量子コンピュータが現れるまでの年数 z を超えるなら、すでに危険である」という考え方(モスカの不等式)がある。x = 10年、y = 5年とし、z を仮に12年とするとき、正しい判断はどれか。
- HSM(ハードウェアセキュリティモジュール)の役割として、正しいものはどれか。
- DEKをデータ暗号化鍵、KEKを鍵暗号化鍵とする。クラウドのストレージなどで使われる、エンベロープ暗号化の説明として正しいものはどれか。
- 暗号の鍵を一定の期間ごとに新しい鍵に替える、鍵のローテーションの主な目的はどれか。
- システムの設計で、クリプトアジリティ(暗号の方式を入れ替えやすくしておく性質)を高める取り組みとして、適切なものはどれか。
この分野の比較
暗号技術の基礎と応用の参考書を探す PR
Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。
コンピュータシステムのほかの分野
- 計算機算術 IEEE 754・固定小数点・丸め誤差
- 確率・統計と待ち行列 場合の数・確率分布・推定と検定・M/M/1
- 情報理論と符号の基礎 エントロピー・ハフマン符号・ハミング符号・CRC
- 命令セット・アセンブリ RISC-V・アドレッシング・呼び出し規約
- コンパイラ 構文解析・SSA・最適化・レジスタ割り当て
- リンカ・ローダと実行形式 ELF・シンボル解決・再配置・動的リンク
- OSとハードウェア 割り込み・システムコール・ページフォールト
- Linuxとコマンドラインの基礎 シェル・パーミッション・パイプ・スクリプト
- メモリ階層と性能 キャッシュ・置き換え方式・ミスの3分類
- マルチコアと同期 MESI・アトミック命令・メモリバリア
- GPUプログラミング ワープ・共有メモリ・合体アクセス・占有率
- AIハードウェアとソフトウェアスタック 推論と学習・量子化・Rooflineモデル
- 機械学習の基礎 学習の種類・評価指標・ニューラルネットワーク
- 組込み・ファームウェア GPIO・UART/SPI/I2C・RTOS
- ハードウェア記述言語と検証 Verilog・ラッチ・状態機械・テストベンチ
- インターフェース・バス規格 PCIe・USB・SerDes・CXL
- ネットワークの基礎 TCP/IP・サブネット計算・DNS・TLS
- Web技術の基礎 HTTP・Cookie・REST・CORS・キャッシュ
- 無線通信の基礎 変調・OFDM・MIMO・RF回路
- 情報セキュリティの基礎 暗号・認証・Web攻撃と対策
- データベースの基礎 SQL・正規化・トランザクション
- データ構造とアルゴリズム 計算量・探索・ソート・グラフ
- プログラミングの基礎(擬似言語のトレース) 擬似言語・トレース・配列・再帰
- C言語の基礎 ポインタ・メモリ・未定義動作
- ソフトウェア開発とプロジェクト管理 開発プロセス・テスト・日程とコストの管理
- 経営戦略と会計の基礎(ストラテジ系) 会計・損益分岐点・経営戦略・マーケティング
- サービスマネジメントとシステム監査 SLA・インシデントと問題・監査と内部統制
- システム構成と信頼性設計 冗長化・RAID・バックアップ・クラウド
- クラウドとコンテナの基礎 Docker・Kubernetes・責任共有モデル・IaC
- 性能評価・プロファイリング アムダールの法則・CPI・ボトルネック
- ハードウェアセキュリティ サイドチャネル・セキュアブート・TEE・PUF
- 電力管理(ソフトウェア制御) DVFS・パワーゲーティング・スリープ状態