きみはねこみたいなにゃんにゃんなまほう

ねこもスクリプトをかくなり

『PKIハンドブック』覚え書き

2000年初版の『PKIハンドブック』が中古でお安かったので覚え書きを残していきます。

2015年出版の『プロフェッショナルSSL/TLS』と並行して読んでいるので気になる部分があれば抜き出してみようと思ったのですが...初心者的な視点から見ると特に目立った差異はありませんでした。 今後気をつけて読んでいきたいです。

SSL Ver3.0 からバージョンアップしたTLSを基に解説する」と本文にありますが、 普段から数年単位で要素技術や仕様がガラリと変わり得るフロントエンドの技術調査をすることが多い身からすると笑ってしまうくらい変わっていませんね。 それだけ学習量対効果に秀でた技術領域なのかな、という感触を受けています。 一度学んでおけば数十年単位で土台となる技術が身につくという。

この辺はHTTPも似たようなものですね。 そしてPKIと言えばSSLで、SSLと言えばHTTPSです。 フロントエンド側の人間でも Docker やデプロイ系の領域に手を伸ばし始めるとこの辺りの知識の有無が利いてきますね。 もしくはマッシュアップ方面の方がHTTPSには馴染みが深かったりするのでしょうか。

とにかく、日常で触れる機会も実は気にしてみると結構多かったりする領域なので、このあたりの仕組みや語彙はフロントエンドのトラブルシュートにも結構な係数で利いてくると思います。 という期待を込めて『PKIハンドブック』を読んでいきたいと思います。

本書を読むにあたり

18年前の本書を読むことについて

2018年現在、2000年初版の本書を読むことに対し、個人的に意義であると感じていることです。

  • 『プロフェッショナルSSL/TSL』とは別視点の本を読むことで概要把握の正確性の一助とする
  • (フロントエンド技術と比較して)息の長い技術がこの期間でどの程度変化したかに素朴に興味がある
  • 素朴に歴史、隔世の感を感じたい

勉強半分、趣味半分といったところです。

どんな技術にも起こり、流行り、廃りの流れがあり、そしてその流れを追いきれなかった現実のシステムは恐らく大量に残されていて、この先自分もどこかでそれに出くわすだろうと。 スナップショットでない、時間幅を持った知識や経験って、もしかしてそういうところで活きてくるんじゃないかなと。 「昔の本を読む」という単なる追体験、真似事ですが、それでも年表を追う以上の何かが得られたらいいなと思っております。

現在の興味領域に照らし合わせ、PKIの仕組みから運用のかじりについて触れられている第8章までを読んでいくつもりです。

SSL/TLS簡易年表

SSL TLS 備考
1994 2.0 - Netscape
1995 3.0 - Netscape
1995 (3.1) 1.0
2006 (3.2) 1.1
2008 (3.3) 1.2
2018 (3.4) 1.3

1. PKI の基礎知識

  • 脅威の種類
    • 盗聴、なりすまし、改ざん、事後否認
    • 事後否認は初耳でした、情報の発信者側から内容が改ざんされていると主張することですね
  • 共通鍵暗号方式
    • 公開鍵暗号方式と比べて高速であるため大量のデータを暗号化するのに向いている
      • これ、ハンドシェイク後のTLSがマスターシークレットで暗号化通信しているところに関わってきますね
    • ブロック暗号方式のDESを3段階組み合わせるトリプルDESというものがある
  • 公開鍵暗号方式(非対称鍵暗号方式)
    • 暗号用の鍵を公開できるので共通鍵暗号に比べて鍵の管理が簡単となる *1
  • RSA(1978)
    • 十分に大きな数の素因数分解の困難性を利用した公開鍵暗号方式
    • 公開鍵で暗号化し秘密鍵で復号化すると秘密鍵保持側への一方向の機密通信が行える
    • 逆に秘密鍵で暗号化し公開鍵で復号化することもでき、電子署名に利用される
      • つまり「秘密鍵を保持した情報発信者側だけが作成でき得るデータ」を作成できる
  • その他の暗号方式・署名方式
    • DH(1976): 鍵交換の鍵配送方式
    • DSH(Digital Signature Algorithm): 離散対数問題の困難性を利用した署名方式
    • 楕円暗号(DCDSA): 楕円曲線状の離散対数問題を利用した公開鍵暗号方式
      • 一部の楕円曲線暗号には攻撃法が存在しているため適切なパラメータが必要 *2
  • 一方向性ハッシュアルゴリズム
    • SHA-1(Secure Hash Standard の Update One, 1995): 160bit のハッシュを生成する
    • MD5(Message Digest 5, 1991): 128bit のハッシュを生成する
    • ここでハッシュアルゴリズムが説明されるのは次の完全性保証で利用されるためですね
  • メッセージ認証(完全性保証)
    • 以下のMICとHMACは秘密情報と一方向ハッシュを利用したもの*3
    • MIC(Message Integrity Checksum)
    • HMAC(Keyed-Hashing for Message Authentication)
  • デジタル署名(完全性保証)
  • 相手認証
    • 秘密鍵を必ず本人が持つという前提を利用すると相手認証にも利用可能 *4
    • 秘密鍵で署名し、公開鍵で検証」という完全性の検証は悪意のある第三者が作成した鍵ペアでも行える(なりすまし)
    • なりすましを防ぐには公開鍵の所属情報を証明する何らかの仕組みが必要になり、それがTTPやCAを利用した仕組みである *5
    • 用語
      • TTP(Trusted Third Party, 信頼できる第三者): 鍵利用者に対し信頼され、かつ秘密鍵を保持しているということを公開鍵に署名し証明する
      • CA(Certificate Authority): TTPのひとつ
      • 証明書: 公開鍵に(主にCAの秘密鍵で)署名がなされたもの
  • 鍵配送

2. 公開鍵基盤

  • PKIの要素と役割
    • 認証局: CA(Certification Authority)
      • 鍵ペアの所持者に対し公開鍵証明書を発行する
    • 登録局: RA(Registration Authority)
      • 公開鍵証明書を発行する所持者の資格審査を行う
      • RAの機能をCAが担うこともある
    • ディレクト
      • 公開鍵証明書を保管・開示する手段
    • 公開鍵証明書
    • 失効リスト: CRL(Certification Revocation List)
    • 証明書有効性検証機関: VA(Validation Authority)
    • 証明書利用者: End Entity
      • 個人やサーバアプリケーションなど

3. 公開鍵証明書と失効リスト(CRL)

読み進め次第追記するつもりです... ˘ω˘

*1:つまり共通鍵暗号公開鍵暗号には「計算量」と「鍵の管理の手間」の間にトレードオフがあると考えられるのでしょうか

*2:「離散対数問題」が利用されている手法が多いので掘り進めてみたいですね。他に ElGamal の方式もその応用例として挙げられていました。

*3:完全性の検証はどう行うのか、秘密情報を共有していること前提か。つまり「メッセージ認証は共通鍵的なものでデジタル署名は公開鍵暗号方式を利用したもの」という認識でいいのでしょうか。

*4:つまり秘密鍵の漏洩はこの前提を覆し、その「本人」に対する相手認証が全て機能しなくなるということになりそう。

*5:この信頼できる第三者の存在を前提とした「信頼モデル」と呼べるものは初見ではどこか情報工学っぽくない感じもしますが、実際の社会の「信頼」という概念も結局はこんなところなのでしょうね。現実世界の反映と考えると次第に慣れていきます。