36
Copyright 2003 Sarion Systems Research PKI PKI 入入 入入 - - Ruby/OpenSSL Ruby/OpenSSL 入入入入入入入入 入入入入入入入入 PKI PKI 2003-07-12 2003-07-12 入入 入入 入入入入入入入入入入入入入入 () 入入 入入 入入入入入入入入入入入入入入 () 入入 入入 入入入入入入入入入入入入入入 () 入入 入入 入入入入入入入入入入入入入入 ()

PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Embed Size (px)

DESCRIPTION

"PKI for dummies" in Japanese.

Citation preview

Page 1: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

PKIPKI 入門 入門 - Ruby/OpenSSL- Ruby/OpenSSLを触りながら学ぶを触りながら学ぶ PKIPKI

2003-07-122003-07-12

中村 浩士(サリオンシステムズリ中村 浩士(サリオンシステムズリサーチ)サーチ)

後藤 裕蔵(ネットワーク応用通信研究後藤 裕蔵(ネットワーク応用通信研究所)所)

Page 2: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

1. PKI1. PKI 概要概要

2003-07-122003-07-12

中村 浩士中村 浩士

Page 3: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

PKI: Public Key InfrastructurePKI: Public Key Infrastructure にに関係する事柄関係する事柄

公開鍵アルゴリズム公開鍵アルゴリズム核となる基本セキュリティサービス核となる基本セキュリティサービス公開鍵証明書と公開鍵認証モデル公開鍵証明書と公開鍵認証モデルセキュリティインフラとして利用するための規セキュリティインフラとして利用するための規約約規約に基づくインフラサービス規約に基づくインフラサービス // システムシステム規約に基づく応用サービス規約に基づく応用サービス // システムシステムシステムの運用ポリシーシステムの運用ポリシーシステムの運用者、利用者システムの運用者、利用者法律・保険法律・保険

Page 4: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

本資料の扱う範囲本資料の扱う範囲公開鍵アルゴリズム公開鍵アルゴリズム核となる基本セキュリティサービス核となる基本セキュリティサービス公開鍵証明書と公開鍵認証モデル公開鍵証明書と公開鍵認証モデルセキュリティインフラとして利用するための規セキュリティインフラとして利用するための規約約規約に基づくインフラサービス規約に基づくインフラサービス // システムシステム規約に基づく応用サービス規約に基づく応用サービス // システムシステムシステムの運用ポリシーシステムの運用ポリシーシステムの運用者、利用者システムの運用者、利用者法律・保険法律・保険

Page 5: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

本資料の構成本資料の構成インフラストラクチャである、とはインフラストラクチャである、とは公開鍵アルゴリズムの概略公開鍵アルゴリズムの概略PKIPKI の基本セキュリティサービスの基本セキュリティサービス

エンティティ認証、データ完全性検証、暗号化の仕組みエンティティ認証、データ完全性検証、暗号化の仕組みPKIPKI における公開鍵認証モデルにおける公開鍵認証モデルRuby/OpenSSLRuby/OpenSSL を用いたを用いた PKIPKI の各種規約の解説の各種規約の解説

X.509X.509 公開鍵証明書公開鍵証明書 証明書の失効証明書の失効 証明書の有効性検証手続き証明書の有効性検証手続き CACA 間での公開鍵認証権限の委譲間での公開鍵認証権限の委譲 鍵と証明書の管理鍵と証明書の管理 : : 登録、発行、配布、廃棄登録、発行、配布、廃棄 エンティティあたり複数の証明書エンティティあたり複数の証明書

Ruby/OpenSSLRuby/OpenSSL によるデモによるデモ CACA の構築の構築

Page 6: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

インフラストラクチャである、インフラストラクチャである、とはとは

既知で使い易い既知で使い易いサービスインタフェサービスインタフェイスイスサービスの結果がサービスの結果が予測可能かつ有用予測可能かつ有用その結果を達成するその結果を達成する方法は知らなくても方法は知らなくてもよいよい

電力インフラ

ネットワークインフラ

Page 7: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

PKIPKI によるセキュリティインフによるセキュリティインフララ

認証を局所化し、広域分散環境でも、安全なサ認証を局所化し、広域分散環境でも、安全なサインオン、シングルサインオンサービスを提供インオン、シングルサインオンサービスを提供可能に可能に

123456

password

Page 8: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

公開鍵アルゴリズムの概略公開鍵アルゴリズムの概略対称鍵暗号対称鍵暗号

out-of-band での秘密鍵の共有

暗号化 復号

送信者 受信者

平文

暗号文

Page 9: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

公開鍵アルゴリズムの概略公開鍵アルゴリズムの概略非非対称鍵暗号対称鍵暗号

暗号化 復号

私有鍵公開鍵公開

送信者 受信者

Page 10: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

公開鍵アルゴリズムの概略公開鍵アルゴリズムの概略ディジタル署名ディジタル署名

署名検証署名

私有鍵 公開鍵公開

Hash

0101001110011010

0101001110011010

0101001110011010

Hash

(暗号化) (復号)

送信者 受信者

Page 11: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

PKIPKI の基本セキュリティサービの基本セキュリティサービスス

エンティティ認証エンティティ認証データ完全性検証(改ざんの検出)データ完全性検証(改ざんの検出)

暗号化暗号化

Page 12: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

PKIPKI における公開鍵認証モデルにおける公開鍵認証モデル公開鍵証明書と公開鍵証明書と CACA

CA

エンドエンティティ

公開鍵証明書

公開鍵の利用者

自己署名証明書

CA によるディジタル署名

信用

Page 13: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

PKIPKI における公開鍵認証モデルにおける公開鍵認証モデル公開鍵認証権の委譲公開鍵認証権の委譲

ルート CA

サブ CA

エンドエンティティ証明書

サブ CA証明書

自己署名証明書

信用

Page 14: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

PGPPGP の公開鍵認証モデルの公開鍵認証モデルPKIPKI における公開鍵認証モデルにおける公開鍵認証モデル

Page 15: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

Ruby/OpenSSLRuby/OpenSSL を用いたを用いたPKIPKI の各種規約の解説の各種規約の解説

X.509X.509 公開鍵証明書公開鍵証明書証明書の失効証明書の失効証明書の有効性検証手続き証明書の有効性検証手続きCACA 間での公開鍵認証権限の委譲間での公開鍵認証権限の委譲鍵と証明書の管理鍵と証明書の管理 登録、発行、配布、廃棄登録、発行、配布、廃棄エンティティあたり複数の証明書エンティティあたり複数の証明書

Page 16: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

X.509X.509 公開鍵証明書公開鍵証明書Ruby/OpenSSLRuby/OpenSSL を用いたを用いた PKIPKI の各種規約の解説の各種規約の解説

証明書仕様バージョン 署名アルゴリズ

ム発行者名

シリアル番号

主体者名CA か否か

CRL 配布点

鍵の利用法

鍵の識別子

公開鍵

有効期間

拡張フィールド

Page 17: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

証明書の失効証明書の失効 CRL 仕様バージョン

署名アルゴリズム

発行者名

CRL 発行日時

次回 CRL 発行日時

失効証明書のシリアル番号

失効日時

Ruby/OpenSSLRuby/OpenSSL を用いたを用いた PKIPKI の各種規約の解説の各種規約の解説

Page 18: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

証明書の有効性検証手続き証明書の有効性検証手続き検証内容検証内容 証明書の完全性検証証明書の完全性検証 ::

信頼点(信頼点( trust anchortrust anchor )が発行しているか)が発行しているか 証明書は期限内か証明書は期限内か 失効されていないか失効されていないか 意図した使用法に従っているか意図した使用法に従っているか

Ruby/OpenSSLRuby/OpenSSL を用いたを用いた PKIPKI の各種規約の解説の各種規約の解説

Page 19: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

証明書の有効性検証例証明書の有効性検証例 11

Ruby/OpenSSLRuby/OpenSSL を用いたを用いた PKIPKI の各種規約の解説の各種規約の解説

信頼点であるルート CA の公開鍵で、ディジタル署名を

検証する(信頼点であること、改ざんがないことの確認)

信頼点 :AAAArootCA

この証明書の発行者 : AAAArootCA

エンドエンティティの

証明書

Page 20: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

証明書の有効性検証例証明書の有効性検証例 22

Ruby/OpenSSLRuby/OpenSSL を用いたを用いた PKIPKI の各種規約の解説の各種規約の解説

この証明書の発行者 : BBBBrootCA

“BBBBrootCA の公開鍵が見つからない "

信頼点にない

Page 21: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

証明書の有効性検証例証明書の有効性検証例 33

Ruby/OpenSSLRuby/OpenSSL を用いたを用いた PKIPKI の各種規約の解説の各種規約の解説

CRL 配布点

AAAArootCA の証明書失効リス

この証明書の発行者 : AAAArootCA

" この認証は失効されている "

Page 22: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

証明書の有効性検証例証明書の有効性検証例 44

Ruby/OpenSSLRuby/OpenSSL を用いたを用いた PKIPKI の各種規約の解説の各種規約の解説

“localhost” のサーバ証明書

SSL 接続時に、サーバ証明書の

鍵利用法をチェックする

署名、鍵の暗号化

Page 23: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

CACA 間での公開鍵認証権限の委間での公開鍵認証権限の委譲譲

Ruby/OpenSSLRuby/OpenSSL を用いたを用いた PKIPKI の各種規約の解説の各種規約の解説

サブCA:AAAAsubCA

の証明書

ルート CA:AAAArootCA が発

CA フラグ

ルート CA

サブ CA

エンドエンティティ

公開鍵認証パス

ルート CA

サブ CA

エンドエンティティ

Page 24: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

相互認証証明書相互認証証明書 11Ruby/OpenSSLRuby/OpenSSL を用いたを用いた PKIPKI の各種規約の解説の各種規約の解説

AAAAroot

AAAAsub CCCC

A C B D

BBBBroot

BBBBsub DDDD

A 、 C の検証OK

B 、 D は NG

Page 25: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

相互認証証明書相互認証証明書 22Ruby/OpenSSLRuby/OpenSSL を用いたを用いた PKIPKI の各種規約の解説の各種規約の解説

A 、 C の検証OK

B 、 D は NG

CCCC→BBBBsub の相互認証証明書AAAAroot

AAAAsub CCCC

A C B D

BBBBroot

BBBBsub DDDD

Page 26: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

相互認証証明書相互認証証明書 33Ruby/OpenSSLRuby/OpenSSL を用いたを用いた PKIPKI の各種規約の解説の各種規約の解説

AAAAroot→DDDD の相互認証証明書AAAAroot

AAAAsub CCCC

A C B D

BBBBroot

BBBBsub DDDD

Page 27: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

鍵と証明書の管理鍵と証明書の管理Ruby/OpenSSLRuby/OpenSSL を用いたを用いた PKIPKI の各種規約の解説の各種規約の解説

要求要求エンティティ確認エンティティ確認発行発行配布配布鍵更新鍵更新

[email protected] の証明書発行リクエスト

Page 28: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

CA

エンドエンティティ 公開鍵の利用者

RA

要求

エンティティ確認

発行

配布

Page 29: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

エンティティあたり複数の証明書エンティティあたり複数の証明書

署名鍵と暗号鍵署名鍵と暗号鍵 署名鍵署名鍵 : : 私有鍵のバックアップは不要私有鍵のバックアップは不要

(バックアップを取ったら否認防止はできな(バックアップを取ったら否認防止はできない、とする見方がある)い、とする見方がある)

暗号鍵暗号鍵 : : バックアップが必須バックアップが必須公開鍵アルゴリズムの中には、一方の用公開鍵アルゴリズムの中には、一方の用途にしか使えないものがある途にしか使えないものがある

Ruby/OpenSSLRuby/OpenSSL を用いたを用いた PKIPKI の各種規約の解説の各種規約の解説

Page 30: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

Ruby/OpenSSLRuby/OpenSSL によるによるデモデモ CACA の構築の構築

デモデモ CACA 構築用ツール構築用ツール CACA 初期化初期化 : init_ca.rb: init_ca.rb 中間中間 CACA 初期化初期化 : init_sub_ca.rb: init_sub_ca.rb 証明書発行リクエスト作成証明書発行リクエスト作成 : gen_csr.rb: gen_csr.rb 証明書発行証明書発行 : gen_cert.rb: gen_cert.rb

エンドエンティティ証明書エンドエンティティ証明書SSL/TLSSSL/TLS サーバ証明書サーバ証明書サブサブ CACA 証明書証明書CACA 相互認証証明書相互認証証明書

CRLCRL 発行発行 : gen_crl.rb: gen_crl.rb

Page 31: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

まとめまとめPKI: PKI: 広域分散環境でのセキュアな認証基盤広域分散環境でのセキュアな認証基盤PKIPKI が提供する、基本セキュリティサービスが提供する、基本セキュリティサービスRuby/OpenSSLRuby/OpenSSL を利用したサンプルを利用したサンプル応用については後半を応用については後半を本格利用には設計時の深い理解、十分な準備、本格利用には設計時の深い理解、十分な準備、信頼度のあるアプリケーションが必要信頼度のあるアプリケーションが必要(( Ruby/OpenSSLRuby/OpenSSL がどうかについてはノーがどうかについてはノーコメント)コメント)

Page 32: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

CP/CPSCP/CPS[RFC2527][RFC2527]

CPCP (証明書ポリシー)(証明書ポリシー) 証明書の適用性を指定する証明書の適用性を指定する [X.509][X.509]

コミュニティにおける、コミュニティにおける、 CACA により認証されにより認証された証明書の適用可能性を記述するた証明書の適用可能性を記述する

CPSCPS (認証実施規定)(認証実施規定) CACA による認証をどのように実践するかによる認証をどのように実践するか

Page 33: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

ありがとうございましたありがとうございました株式会社サリオンシステムズリサーチ株式会社サリオンシステムズリサーチ www.sarion.co.jpwww.sarion.co.jp [email protected][email protected]

本資料に関するお問い合わせ本資料に関するお問い合わせ [email protected]@sarion.co.jp

Page 34: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

参考文献参考文献 11

[1] [1] 青木、稲田、青木、稲田、““ PKIPKI と電子社会のセキュリティ”、共立出版、と電子社会のセキュリティ”、共立出版、 ISBNISBN43201202804320120280 (( 20012001 ))

[2] Carlisle Adams[2] Carlisle Adams 、、 Steve LloydSteve Lloyd 、鈴木訳、、鈴木訳、““ PKIPKI 公開鍵インフラス公開鍵インフラストラクチャの概念、標準、展開”、ピアソン・エデュケーション、トラクチャの概念、標準、展開”、ピアソン・エデュケーション、 IISBN4894712482SBN4894712482 (( 20002000 ))

[3] Charlie Kaufman[3] Charlie Kaufman 、、 Radia PerlmanRadia Perlman 、、 Mike SpecinerMike Speciner 、石橋、菊池、、石橋、菊池、松井、土井訳、松井、土井訳、““ ネットワークセキュリティ”、プレンティスホーネットワークセキュリティ”、プレンティスホール出版、ル出版、 ISBN4931356982ISBN4931356982 (( 19971997 ))

[4] Bruce Schneier[4] Bruce Schneier 、山形訳、、山形訳、““ 暗号技術大全”、ソフトバンクパブリッ暗号技術大全”、ソフトバンクパブリッシング、シング、 ISBN4797319119ISBN4797319119 (( 20032003 ))

[5] [5] Niels FergusonNiels Ferguson 、、 Bruce SchneierBruce Schneier 、、““ Practical Cryptography”Practical Cryptography” 、、 JoJohn Wiley & Sonshn Wiley & Sons 、、 ISBN0471223573ISBN0471223573 (( 20032003 ))

[6] ITU-T Recommendation X.509[6] ITU-T Recommendation X.509 、”、” Information Technology – Open Information Technology – Open Systems Interconnection – The Directory: Authentication FrameworSystems Interconnection – The Directory: Authentication Framework.”k.” (( 19971997 ))

[7] “Public-Key Infrastructure (X.509) (pkix) Charter”[7] “Public-Key Infrastructure (X.509) (pkix) Charter” 、、 http://www.ietf.ohttp://www.ietf.org/html.charters/pkix-charter.htmlrg/html.charters/pkix-charter.html

Page 35: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

参考文献参考文献 22

[8] [8] 情報処理振興事業協会情報処理振興事業協会セキュリティセンター、“セキュリティセンター、“ Security related RSecurity related RFCs”FCs” 、、 http://www.ipa.go.jp/security/rfc/RFC.html#13http://www.ipa.go.jp/security/rfc/RFC.html#13

[9] VeriSign, Inc.[9] VeriSign, Inc. 、 、 "Digital ID Services""Digital ID Services" 、、 https://digitalid.verisign.cohttps://digitalid.verisign.com/services/client/m/services/client/

[10] [10] 夏井、夏井、 "" 現代ビジネスとサイバー法 電子署名法現代ビジネスとサイバー法 電子署名法 "" 、リックテレコ、リックテレコム、ム、 ISBN4897975115ISBN4897975115 (( 20012001 ))

[11] Warwick Ford[11] Warwick Ford 他、山田訳、 “ディジタル署名と暗号技術 第他、山田訳、 “ディジタル署名と暗号技術 第 22 版”、版”、ピアソン・エデュケーション、ピアソン・エデュケーション、 ISBN4894715120ISBN4894715120 (( 20012001 ))

[12] The OpenSSL Project[12] The OpenSSL Project 、、 "OpenSSL: The Open Source toolkit for S"OpenSSL: The Open Source toolkit for SSL/TLS"SL/TLS" 、、 http://www.openssl.org/http://www.openssl.org/

[13] [email protected][13] [email protected] 、、 "" オブジェクト指向スクリプト言語オブジェクト指向スクリプト言語Ruby"Ruby" 、、 http://www.ruby-lang.org/http://www.ruby-lang.org/

[14] Michal[14] Michal 、後藤、中村他、、後藤、中村他、 "RubyPKI""RubyPKI" 、、 http://savannah.nongnu.orghttp://savannah.nongnu.org/projects/rubypki//projects/rubypki/

Page 36: PKI入門 - Ruby_OpenSSLを触りながら学ぶPKI

Copyright 2003 Sarion Systems Research

参考文献参考文献 33

[RFC2511] M. Myers[RFC2511] M. Myers 他、他、 "Internet X.509 Certificate Request Message "Internet X.509 Certificate Request Message Format "Format " 、、 RFC2511RFC2511 (( 19991999 ))

[RFC2527] S. Chokhani[RFC2527] S. Chokhani 他、 他、 "Internet X.509 Public Key Infrastructure "Internet X.509 Public Key Infrastructure - Certificate Policy and Certification Practices Framework"- Certificate Policy and Certification Practices Framework" 、、 RFC25RFC252727 (( 19991999 ))

[RFC3280] [RFC3280] R. HousleyR. Housley 他、“他、“ Internet X.509 Public Key Infrastructure - Internet X.509 Public Key Infrastructure - Certificate and Certificate Revocation List (CRL) Profile”Certificate and Certificate Revocation List (CRL) Profile” 、、 RFC328RFC32800 (( 20022002 ))

[PKCS] “Public-Key Cryptography Standards”[PKCS] “Public-Key Cryptography Standards” 、、 http://www.rsasecurithttp://www.rsasecurity.com/rsalabs/pkcs/y.com/rsalabs/pkcs/

[PKCS#10] M. Nystrom[PKCS#10] M. Nystrom 他、他、 "PKCS #10: Certification Request Syntax "PKCS #10: Certification Request Syntax Specification"Specification" 、、 RFC2986RFC2986 (( 20002000 ))