PKI

電子証明書の定義であるRFC5280を読んでみる(ASN1)その②

昨日に引き続き、電子証明書を定義しているRFC5280を読もうと思います。
RFC5280の4.1.2.4.Issuerの定義についてです。
余談ですが、PKIを勉強しようとしても日本語のサイト、ほとんど検索に引っかからず、どうしても海外のサイトまで探しに行かないと解決できないのは勘弁してほしい…。
Issuer(発行者)はCertificate(証明書)に記載される証明書に署名し、発行する主体(CA)です。
Certificateの中で「issuer Name,」と定義されています。
このNameの定義がRFC5280の4.1.2.4.Issuerで記載されています。
--------------------------------------------------
Name ::= CHOICE { -- only one possibility for now
-- rdnSequence RDNSequence } …①
RDNSequence ::= SEQUENCE OF RelativeDistinguishedName …②
RelativeDistinguishedName ::= …③
SET SIZE (1..MAX) OF AttributeTypeAndValue
AttributeTypeAndValue ::= SEQUENCE { …④
type   AttributeType,
value   AttributeValue }
AttributeType ::= OBJECT IDENTIFIER …⑤
AttributeValue ::= ANY -- DEFINED BY AttributeType …⑥
DirectoryString ::= CHOICE { …⑦
teletexString      TeletexString (SIZE (1..MAX)),
printableString     PrintableString (SIZE (1..MAX)),
universalString     UniversalString (SIZE (1..MAX)),
utf8String        UTF8String (SIZE (1..MAX)),
bmpString        BMPString (SIZE (1..MAX)) }
--------------------------------------------------
①Name
::= CHOICEとあるので、NameはCHOICE以降のいずれかで定義されます。ちなみに{}内の--はASN1の記述方法で、コメントを記載する際に使用されます。
「only one possibility for now」なので、Nameは以下で定義される一つを指す。
②RDNSequence
SEQUENCE OF RelativeDistinguishedName、「SEQUENCE」は複数の集合かつ順序が決まっている、という意味なので複数のRelativeDistinguishedNameが連続する。
③RelativeDistinguishedName
②で定義されたRelativeDistinguishedNameですが、「SET」は複数の集合かつ順序は決まっていない、という意味なのでAttributeTypeAndValueの集合体。ちなみにSET SIZE (1..MAX)は個数が1以上(上限なし)なので、少なくとも1つのAttributeTypeAndValueが存在する。
④AttributeTypeAndValue
SEQUENCEなので、type、valueの順で構成される。
⑤AttributeType
最低限、以下の属性種別を受けることを想定していなければならないとされています。
* country(国)
* organization(組織)
* organizational unit(組織内部署)
* distinguished name qualifier(DN Qualifier)
* state or province name(州、地域)
* common name (e.g., "Susan Housley")(一般的な名前)
* serial number(シリアル番号)
⑥AttributeValue
Anyなのでなんでもよい。しかし、「DEFINED BY AttributeType」と注意書きがあるとおり、⑤で何を設定したかによって値が決まる。
⑦DirectoryString
::= CHOICE{}なので{}の中から選択する。
AttributeValueがstringの場合に許容される値を指すそうです。
めっちゃ分かりにくい…。言い換えると以下のようになるらしい↓↓
◆AttributeTypeはCN(名前)とか、OU(部署名)とか、O(組織名)等の属性のこと。
ここでCNとかOUと言っているのは、ディレクトリ情報ツリー(DIT)で決められている属性値で、公開鍵証明書では、このDITを利用して属性値を定義している。
◆AttributeValueはCNの実際の値、鈴木とか、秘書室とか田中物産のこと。
◆RelativeDistinguishedName(RDN)はAttributeTypeとAttributeValueから構成されるので「CN=鈴木」とかで表現される。
◆RDNSequenceは、RDNが連続しているものなので、「CN=鈴木、OU=秘書室、O=田中物産、C=JP」とかで表現される。
◆RDNSequenceの中から一つ選択したものがnameとなるので、nameは「CN=鈴木、OU=秘書室、O=田中物産、C=JP」のことを指します。

-PKI
-, , ,