Stand Up and Shout!

勉強したことや、思いついたことを気ままに記述します

暗号技術 実践活用ガイド

2020年9月24日に『暗号技術 実践活用ガイド』が出版されました。

目次の俯瞰

暗号技術 実践活用ガイド
    監訳者まえがき
    翻訳者まえがき
    序文
    はじめに
    本書のアプローチ
    本書の対象読者
    本書の構成
    謝辞
    略語
    1章 暗号化
        1.1 基本
        1.2 古典暗号
            シーザー暗号
            ヴィジュネル暗号
        1.3 暗号の仕組み
            転置
            演算モード
            古典暗号が安全でない理由
        1.4 完璧な暗号化:ワンタイムパッド
            ワンタイムパッドでの暗号化
            なぜワンタイムパッドは安全なのか?
            コラム 暗号学における確率
        1.5 暗号化の安全性
            攻撃モデル
            安全性のゴール
            安全性の概念
            コラム2つのタイプの暗号化の利用
        1.6 非対称暗号化
        1.7 暗号が暗号化以上のことをする場合
            認証付き暗号化
            フォーマット保持暗号化
            完全準同型暗号化
            検索可能暗号化
            調整可能暗号化
        1.8 失敗はいかにして生じるのか
            弱い暗号
            誤ったモデル
        1.9 参考文献
    2章 ランダム性
        2.1 ランダム? ランダムではない?
        2.2 確率分布としてのランダム性
        2.3 エントロピー:不確実性の尺度
        2.4 乱数生成器 (RNG) と疑似乱数生成器 (PRNG)
            PRNGの動作方法
            セキュリティ上の懸念
            PRNG Fortuna
            暗号的PRNG と非暗号的PRNG
            統計的検定の無用性
        2.5 現実世界のPRNG
            Unixベースのシステムで生成されるランダムビット
            WindowsにおけるCryptGen Random()関数
            ハードウェアベースのPRNG: Intel マイクロプロセッサにおけるRDRAND
        2.6 失敗はいかにして生じるのか
            不十分なエントロピー源
            起動時のエントロピー不足
            非暗号的PRNG の使用
            ランダム性が強力でもサンプリングにバグがある場合
        2.7 参考文献
    3章 暗号の安全性
        3.1 不可能の定義
            理論上の安全性: 情報的安全性
            実際の安全性 : 計算量的安全性
        3.2 安全性の定量化
            ビットの安全性を測る
            攻撃の総コスト
            安全性レベルの選択と評価
        3.3 安全性の達成
            証明可能安全性
            発見的安全性
        3.4 鍵の生成
            対称鍵の生成
            非対称鍵の生成
            鍵の保護
        3.5 失敗はいかにして生じるのか
            不正確な安全性証明
            旧式のサポートによる短い鍵
        3.6 参考文献
    4章 ブロック暗号
        4.1 ブロック暗号とは?
            安全性のゴール
            ブロックサイズ
            符号表 (コードブック) 攻撃
        4.2 ブロック暗号の構築方法
            ブロック暗号のラウンド
            スライド攻撃とラウンド鍵
            換字 - 転置ネットワーク
            ファイステルのスキーム
        4.3 高度暗号化標準 (AES)
            AESの内部
            動作中のAES
        4.4 AES の実装
            テーブルベース実装
            ネイティブ命令
            AESは安全なのか?
        4.5 演算モード
            ECB (電子符号表) モード
            CBC (暗号ブロックチェーン) モード
            CBCモードで任意のメッセージを暗号化する方法
        4.6 失敗はいかにして生じるのか
            中間一致攻撃
        4.7 参考文献
    5章 ストリーム暗号
        5.1 ストリーム暗号の動作方法
            ステートフル暗号とカウンターベース暗号
        5.2 ハードウェア指向のストリーム暗号
            帰還シフトレジスター
            Grain-128a
            A5/1
        5.3 ソフトウェア指向のストリーム暗号
            RC4
        5.4 失敗はいかにして生じるのか
        5.5 参考文献
    6章 ハッシュ関数
        6.1 安全なハッシュ関数
            予測不可能性、ふたたび.
            原像困難性
            衝突困難性
            衝突の探索
        6.2 ハッシュ関数を構築する
            圧縮ベースのハッシュ関数 : Merkle-Damgård 構造
            置換に基づくハッシュ関数: スポンジ関数
        6.3 ハッシュ関数のSHAファミリー
            SHA-1
            SHA-2.
            SHA-3 コンペティション
            Keccak (SHA-3)
        6.4 BLAKE2 ハッシュ関数
        6.5 失敗はいかにして生じるのか
            伸長攻撃
            記憶証明への欺瞞プロトコル
        6.6 参考文献
    7章 鍵付きハッシュ
        7.1 メッセージ認証コード (MAC)
            安全な通信におけるMAC...
            偽造と選択メッセージ攻撃
            リプレイ攻撃
        7.2 疑似ランダム関数 (PRF)
            PRF の安全性
            なぜPRFはMACより強いのか
        7.3 鍵付きでないハッシュから鍵付きハッシュを作る
            秘密接頭辞方式
            秘密接尾辞方式
            HMAC方式
            ハッシュベースMACに対する一般的な攻撃
        7.4 ブロック暗号から鍵付きハッシュを作る: CMAC
            破られたCBC-MAC
            CBC-MACの修正
        7.5 専用 MAC設計
            Poly1305
            SipHash:
        7.6 失敗はいかにして生じるのか
            MACの検証におけるタイミング攻撃
            スポンジが漏洩する場合
        7.7 参考文献
    8章 認証付き暗号
        8.1 MACを使う認証付き暗号
            個別型
            MAC 後暗号化
            暗号化後 MAC
        8.2 認証付き暗号
            関連データを伴う認証付き暗号
            ノンスの予測可能性の回避
            優れた認証付き暗号の要件とは?
        8.3 AES-GCM: 認証付き暗号標準
            GCMの内部: CTRとGHASH
            コラム 多項式乗算
            GCMの安全性
            GCMの効率
        8.4 OCB:GCMよりも高速な認証付き暗号
            OCBの内部
            OCBの安全性
            OCBの効率
        8.5 SIV: 最も安全な認証付き暗号?
        8.6 置換ベースのAEAD
        8.7 失敗はいかにして生じるのか
            AES-GCMと脆弱なハッシュ鍵
            AES-GCMと小さなタグ
        8.8 参考文献
    9章 難問
        9.1 計算困難性
            実行時間の計測
            多項式時間 vs 超多項式時間
        9.2 複雑性のクラス
            非決定性多項式時間
            NP完全問題
            P対NP問題
        9.3 素因数分解問題
            実際の大きな数の素因数分解
            素因数分解はNP完全?
        9.4 離散対数問題 (DLP)
            群とは何か?
            困難なこと
        9.5 失敗はいかにして生じるのか
            素因数分解が容易である場合
            小さな難問は困難ではない
        9.6 参考文献
    10章 RSA
        10.1 RSAの背景にある数学
        10.2 現実世界のPRNG
        10.3 RSAの鍵生成と安全性
        10.4 RSAによる暗号化
            教科書的 RSA暗号化の可鍛性
            強力なRSA暗号化: OAEP
        10.5 RSAによる署名...
            教科書的RSA署名を破る
            PSS署名標準
            フルドメインハッシュ署名
        10.6 RSAの実装
            高速累乗アルゴリズム : 平方乗算
            高速な公開鍵演算のための小さい指数
            中国剰余定理:
        10.7 失敗はいかにして生じるのか
            RSA-CRTに対する Bellcore 攻撃
            秘密指数やモジュラスの共有
        10.8 参考文献
    11章 ディフィー・ヘルマン
        11.1 ディフィー・ヘルマン関数
        11.2 ディフィー・ヘルマン問題
            計算的ディフィー・ヘルマン問題
            決定論的ディフィー・ヘルマン問題
            さらにディフィー・ヘルマン問題
        11.3 鍵共有プロトコル
            非DH鍵共有の例
            鍵共有プロトコルの攻撃モデル
            性能
        11.4 ディフィー・ヘルマンプロトコル
            匿名ディフィー・ヘルマン
            認証付きディフィー・ヘルマン
            メネゼスクヴァンストーン (MQV)
        11.5 失敗はいかにして生じるのか
            共有された秘密をハッシュ化しない
            TLSにおける時代に合わなくなったディフィー・ヘルマン
            安全ではない群パラメーター
        11.6 参考文献
    12章 楕円曲線
        12.1 楕円曲線とは何か?
            整数に対する楕円曲線
            点の加算と乗算
            乗算
            楕円曲線群
        12.2 ECDLP問題
        12.3 楕円曲線に対するディフィー・ヘルマン鍵共有
            楕円曲線による署名
            楕円曲線による暗号化
        12.4 曲線の選択
            NIST曲線
            Curve25519
            その他の曲線
        12.5 失敗はいかにして生じるのか
            悪いランダムさのある ECDSA
            他の曲線を使ったECDHの破壊
        12.6 参考文献
    13章 TLS
        13.1 対象アプリケーションと必要条件
        13.2 TLSプロトコルスイート
            プロトコルのTLSとSSL ファミリー : 簡単な歴史
            TLSを一言で言うと
            証明書と認証局
            レコードプロトコル
            TLSハンドシェイクプロトコル
            TLS 1.3 暗号化アルゴリズム
        13.3 TLS 1.2を改良したTLS 1.3.
            ダウングレード保護
            一往復ハンドシェイク
            セッション再開
        13.4 TLSの安全性の強度
            認証
            前方安全性
        13.5 失敗はいかにして生じるのか
            侵害された認証局
            侵入されたサーバー
            侵入されたクライアント
            実装のバグ
        13.6 参考文献
    14章 量子と耐量子
        14.1 量子コンピューターの動作の仕組み
            量子ビット
            量子ゲート
        14.2 量子加速
            指数関数的加速とサイモンの問題
            ショアのアルゴリズムの脅威
            ショアのアルゴリズムの素因数分解問題の解法
            ショアのアルゴリズムと離散対数問題
            グローバーのアルゴリズム
        14.3 量子コンピューターを構築するのはなぜそれほど難しいのか?
        14.4 耐量子暗号アルゴリズム
            コードを基にした暗号
            格子を基にした暗号
            多变量暗号
            ハッシュを基にした暗号
        14.5 失敗はいかにして生じるのか
            不明瞭な安全性レベル
            早送り : 遅すぎると何が起きるのか?
            実装上の問題
        14.6 参考文献
    索引