lu100101の日記

勉強の記録

2. PKI

ディジタル署名の仕組み

  • 送信側が本文 + ハッシュ関数 = メッセージダイジェスト作成
  • 自分の秘密鍵で暗号化
  • 対になる公開鍵で復号
  • 受信側もメッセージダイジェストを作成し比較

PKI

  • CA
  • RA
    • 登録局
    • 申請を受け付けて、承認や認可を行う
  • IA
    • 発行局
    • ディジタル証明書やCRLの発行を行う
  • CSR
    • CAに提出する証明書署名要求
  • CP/CPS
    • 証明書ポリシ/認証局運用規定
    • 必要に応じて利用者に公開する
    • 内容
      • ディジタル証明書の利用者、適用範囲
      • 証明書申請手続き方法
      • 失効や効力停止手続き方法
      • キーペア作成方法
      • 秘密鍵の受渡方法
  • 申請
    • 鍵ペアを生成
    • CSRを作成し、CAに申請
    • CAがディジタル証明書を発行
  • 確認

ディジタル証明書の形式

  • X.509
  • PKCS#7
    • 複数の証明書 + 暗号化データを含むことができる
    • サーバ証明書を配布したり移動したりするときに使われる
  • PKCS#12
    • 複数の証明書 + 秘密鍵を含むことができる
    • 秘密鍵を移動させたいときに使われる

ディジタル証明書のチェック方法

  • CA、発行元のディジタル証明書を検証
  • 証明書内の有効期限をチェック
  • 失効情報をチェック
    • CRL
      • CAからダウンロードする
    • OCSP
      • オンライン
      • OSCPレスポンダ(OSCPサーバ)を立て、CRLを取り込む
  • ルートCAの確認
  • 証明書のレベル
    • DV < OV < EV
    • DV
    • OV
      • 企業の実在性を確認
    • EV
      • 最も厳しい審査基準
  • 入力されたFQDNとコモンネームのチェック

SSL/TLSのバージョン

  • SSL2.0
  • SSL3.0
  • TLS1.0~TLS1.1
    • 例外的に利用可能
  • TLS1.2
    • ギリOK
    • 使用できる暗号化を大幅に強化
  • TLS1.3
    • ハンドシェイク時のデータを暗号化する仕組みに変更
    • 現在の一推し

SSL/TLSの通信手順

  • Hello Requestの交換
    • クライアント側が使用可能な暗号化アルゴリズムや圧縮方式を通知
    • サーバ側でそのうちの一つの組み合わせを選択し決定
  • サーバからクライアントにメッセージ送信
    • サーバからディジタル証明書を送信する
    • ディジタル証明書がなければDiffie-Hellmanの鍵交換方式を使用可能
    • Server Hello Doneで終了
  • クライアントからサーバへメッセージ送信
    • サーバの証明書の正当性を確認
    • サーバの公開鍵を用いて生成したマスターシークレットをサーバに送信
    • クライアントからディジタル証明書を送信する
    • Change Cipher Specを送信
  • サーバもChange Cipher Specを送信
  • 暗号化通信の開始

SSL/TLSに対する攻撃

  • ダウングレード攻撃
    • 弱い暗号化スイートの使用を強制
  • バージョンロールバック攻撃
    • SSL2.0等古く弱い旧バージョンの通信を行うように仕向ける
  • BEAST攻撃
    • SSL3.0/TLS1.0のCBCモードの脆弱性を利用して選択平文攻撃を行いCookieを得る
    • TLS1.1で改善
  • POODLE攻撃
    • SSL3.0にあるブロック暗号上のパディングに関する設計上の脆弱性

TLS1.2からTLS1.3への変更点

  • 危殆化した暗号化の削除
  • ハッシュ関数はSHA-256が必須に
  • ServerHello以降のハンドシェイクパラメータを暗号化
  • 1-RTTでハンドシェイクが完了

HSTS

  • HTTP Strict Transport Security
  • Webサイトがブラウザに対してHTTPSの使用を強制
  • HTTP要求の応答にStrict-Transport-Securityを指定
  • プリロードHSTS
    • 最初の要求からHSTSが機能する

ディジタル証明書の利用

  • サーバ証明書
  • クライアント証明書
  • S/MIME
  • コードサイニング証明書
    • ソフトウェアの正当性を証明する

時刻認証で証明できること

  • 存在性証明
  • 完全性証明

時刻認証のインフラ

  • TSA(Time Stamp Authority:時刻認証局
  • TAA(Time Assessment Authority:時刻配信局)

時刻認証方式

時刻認証の手順

  • ディジタル証明書方式
    • TSTの発行
    • TSTの検証
    • アーカイビング方式
      • ハッシュ値と正確な時刻から作成したトークンをTSAで保存
      • TSAに都度問い合わせて確認
      • TSAに保存されている限り正当性の確認が可能
        • 長期間保存義務の電子データの保存に向いている
      • TSA内に保管しているトークンが改ざんされてしまうと有効性を証明できなくなる
        • 保管している全データのハッシュ値を取り、定期的に利用者に公開することで対応

長期署名

  • RFC3126
    • 長期署名フォーマット
  • ES
    • 電子文書
  • ES-T
    • ESにタイムスタンプを付与
  • ES-A
    • ES-Tにパス中の各証明書や失効情報や検証情報を加え、タイムスタンプを付与