トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

認証局 (CA)

このエントリーをはてなブックマークに追加

[SSL]

仕事のためにいろいろ調べものをする

認証局 (CA)

Wikipediaの解説は以下

CAは、公開鍵証明書を発行する。公開鍵証明書には公開鍵と持ち主の記載があり、記載の個人、組織、サーバその他の実体がこの公開鍵に対応した私有鍵の持ち主だと証言する。

  認証局の運用ポリシー

 CA は、信頼の基盤となるものなので、正しく運用される必要があります。そのため、CA を運用する際には、証明書の利用目的を定める証明書ポリシー (CP: Certificate Policy) と、
 CA の運用方法を定める認証実施規定 (CPS: Certification Practice Statement) を規定します。CP と CPS のガイドラインは 、
 RFC 3647において「情報提供 (Informational)」として公表されています。

  認証局モデルにおける公開鍵の運用

    • 認証局モデル
 信頼できる第三者機関 (TTP: Trusted Third Party)に公開鍵の所有者を保証してもらう方法です。TTP は、公開鍵の所有者の本人性をなんらかの方法で確認し、
 公開鍵とその所有者を保証する証明書(Certificate) を発行します。証明書には、公開鍵とその所有者を証明する情報が記載され、改ざんを防ぐために TTP の署名が付与されます。
 証明書を発行する TTP のことを、認証局 (CA: Certification Authority)といいます。

  X.509

現在もっとも一般的な公開鍵証明書のフォーマット、RFC 2459で規定される。 → インターネットX.509 PKI - 証明書と CRL のプロファイル

作ってみましょう。opensslがあればできます。

keygen.sh

#!/bin/bash

echo "ファイル名はどうします?"
read FILENAME
echo "鍵長はどないしますか?"
read KEY_LENGTH
echo "HASHは256bitで作ります"

# 秘密鍵の作成
openssl genrsa -out ${FILENAME}.key ${KEY_LENGTH}
# 秘密鍵を参照して公開鍵を作成
openssl req -new -key ${FILENAME}.key -out ${FILENAME}.pem -sha256
openssl x509 -days 3650 -req -signkey ${FILENAME}.key < ${FILENAME}.csr > ${FILENAME}.crt

  X.509のフォーマット

  • 一見BNF記法に見えるが、これはASN.1という文法で書かれた仕様記述である
  • 気になる部分にコメントを入れた
  • 上記のopensslコマンドで作ったpemファイル=X.509と思っていい、pemファイルはBASE64でエンコーディングされているので、読むにはデコードする必要がある
  • 細かいX.509の規定はX.501で決まっていることがある => X.501
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate, 
signatureAlgorithm AlgorithmIdentifier, 
signatureValue BIT STRING }               // signatureValue : ASN. 1 DER でエンコードされた tbsCertificate に基づいて計算されたデジタル署名
 
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1,   // X.509のバージョン
serialNumber CertificateSerialNumber,     // CA が各証明書に割当てる整数
signature AlgorithmIdentifier,                // アルゴリズムの種別
issuer Name,                                      // 発行者情報=CAの組織情報
validity Validity,
subject Name,                                    // 発行対象の組織情報
subjectPublicKeyInfo SubjectPublicKeyInfo,    // 公開鍵
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL  // CAを一意に識別するID,
-- If present, version shall be v2 or v3 subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version shall be v2 or v3 extensions [3] EXPLICIT Extensions OPTIONAL
-- If present, version shall be v3 }
Version ::= INTEGER { v1(0), v2(1), v3(2) }

CertificateSerialNumber ::= INTEGER

Validity ::= SEQUENCE {
notBefore Time, notAfter Time }
 
Time ::= CHOICE {
utcTime UTCTime, generalTime GeneralizedTime }
UniqueIdentifier ::= BIT STRING

SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier, subjectPublicKey BIT STRING }
Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension

Extension ::= SEQUENCE {
extnID OBJECT IDENTIFIER, 
critical BOOLEAN DEFAULT FALSE, 
extnValue OCTET STRING }

  暗号

東京大学総合文化研究科の授業用レジュメ、わかりやすい。

ソフトウェア開発者に必要な部分だけ抜粋

一般的な暗号についての用語の定義

用語 定義
暗号 情報セキュリティの実現手段の一つ
平文 元のデータ。第三者に読まれたくないもの => ex)「明日のランチはね…」
暗号文 変換後のデータ。盗聴されても平文を(簡単には)取り出せない(はずの)もの => ex)「嘯囮嗷囂圄圓倬埃圉囿…」
暗号化 平文から暗号文を作成すること
復号 暗号文から平文を取り出すこと
暗号方式 暗号化と復号のやり方
暗号方式のもとで、具体的な暗号化や復号を決める情報

公開鍵暗号についての用語の定義

用語 定義
公開鍵暗号 暗号化と復号の鍵が異なる暗号。暗号化の鍵から復号の鍵が推測できないような鍵を作る。
公開鍵 公開鍵暗号では一方の鍵を公開することが多いので、その公開する鍵のこと
秘密鍵 秘密にしておく方の鍵のこと
鍵ペア 暗号化の鍵と対応する復号の鍵。後から復号の鍵を作る事ができないので、同時に生成することが多く、このように呼ぶ。

公開鍵暗号の利用

暗号化
共通鍵暗号と同様に暗号化に使う事ももちろんできる。
認証
秘密鍵を見せずに秘密鍵を持っている事を証明できる。 確認するために必要な鍵は公開鍵なので、より安全。学生証など。
電子署名
秘密鍵で暗号化することで、暗号化したものを秘密鍵の持ち主が承認したことが分かる。

お名前: コメント: