PKIの基礎まとめ (1)

「セキュアシステム設計技術者の育成」プログラム、松本泰先生の資料を参考にまとめました。
やっぱり文字だけじゃつらいな。。

基礎知識 キーワード

  • 署名 Signature (否認防止 Non Repudiation)
    • Certification
    • 証明書を使って、何らかの権威者が何事かを証明する
    • 否認防止の署名は、自署名、記名捺印にあたる。署名がなされた文章は一定期間保存され、事後に大きな意味を持つ。(身近な例: 米国出入国カード)
  • 認証 Authentication
    • 本人真正性の確認
  • ボブはアリスの文書(署名)をどうやって検証するのか(単一CAモデルの場合)
    1. 何らかの形でCA証明書を信頼する(ボブの信頼点)
    2. CA証明書を使ってアリスの公開鍵証明書を検証できる(なぜなら、アリスの公開鍵証明書は、CAの署名鍵による署名が付いており、これをCA証明書(CA公開鍵)によって検証できるため)
    3. アリスのメッセージを検証できる
  • X.509証明書の中身抜粋
    • 発行者名の識別子
    • 発行者名の識別名 issuer ou=(MyName)CA, o=TESTORG, c=JP
    • 有効期間
    • 主体者(ユーザ)の識別名 subject cn=(MyName)EE, ou=(MyName)CA, o=TESTORG, c=JP
    • 主体者の公開鍵
    • V3の拡張
      • 拡張フィールド(タイプ、フラグ、値)
    • CAのデジタル署名(証明書を発行したCAの署名鍵による署名)
  • (証明書の中身が出てきたのでついでに、、) V3拡張の、criticalフラグについて
    • criticalがTRUEだが、拡張タイプを知らない場合、証明書の検証は失敗する
    • criticalがFALSEで、拡張タイプを知らない場合は、該当の拡張フィールドを無視する
      • criticalが付いている証明書はあんまりないみたい。一般に配る証明書に付けると、検証に失敗してしまう場合が出てくるので、特定のサイトでしか付けていないみたい。
  • PKIが安全であるための基本的な要件
    • subscriberの要件
      • なりすましをいかに防ぐか、私有鍵(署名鍵)の保護
    • relying partyの要件
      • 信頼点が信頼できること
      • リポジトリから必要な情報(CRLなど)を取得
      • 信頼点の公開鍵認証パスの検証を行う
    • 証明局の要件
      • 証明局の運用、鍵の管理
  • サブスクライバー(署名者)
    • ハードウェアトークンの利用(アリスの私有鍵、アリスの証明書、信頼点の証明書)
    • 耐タンパー性(一生キーがカードから出ない)
    • PIN、指紋照合でハードウェアにログイン
  • リライングパーティ(署名検証者)
    • 階層型CAモデル(ボブとアリスの信頼点が同一の場合)
    • 認証パスの構築
    • 相互認証モデル(ボブとアリスの信頼点が異なる場合に、ボブがアリスの証明書を検証する)
    • 相互認証モデルでのCRL/ARLによる失効情報の取得
      • XYZ認証局が発行したABC認証局への相互認証証明書の失効をチェックするうためにARLを取得する。ARLにはXYZ CAの署名が付いており、信頼点の証明書を使って検証できる。
  • PKIの基本コンポーネント
    • CA Certificate Authority: CRL/ARL、証明書などの発行 (CAの鍵を管理するHSMとつながっており、非常にセキュアな環境にある)
    • RA Registration Authority: 証明書発行要求、更新要求、失効要求などの受付
    • EE End Entitiy
    • リポジトリ: CRL/ARL、各種証明書の配布。耐障害性が要求される。
  • 鍵ペアの生成と証明書発行
    • End Entity側で鍵ペアを生成する場合
      • 鍵をPC、ハードウェアトークン内部で生成
      • PKCS#10などで証明書要求を生成
      • CAで証明書発行
      • CAからPKCS#7などで証明書を配布
    • CA/RA側で鍵ペアを生成する場合
      • CAで鍵ペアを生成
      • PKCS#12などで私有鍵、証明書を配布(PKCS#12には信頼点のCA証明書(ホント?)、EEの公開鍵証明書、EEの秘密鍵が入っている。秘密鍵が入っているため、PKCS#12はPINが設定される。)
  • X.509証明書拡張 基本制約拡張 (BasicConstraints)
    • Critical、CA True(CAへの証明書)、PathLength=0(CAへのパス数)をTop CAからCA-Aに発行すると、Top CAを信頼点とするEEは、CA-Aが下位CAに発行した証明書が検証できない。
  • X.509証明書拡張 鍵使用目的拡張 (Key Usage)
    • 署名用: 電子署名用証明書では鍵使用目的拡張をnonRepudiation(否認防止)ビット(NRビット)のみを立てて区別する。電子署名の検証時には電子署名用証明書のみを用い、認証用証明書では署名検証を不可とする
    • 認証用: 認証用証明書の鍵使用目的拡張(keyUsage)を digitalSignatureビット(DSビット)のみとする

明日は、EasyCertを使って実習してみよう。