122 lines
4.1 KiB
Markdown
122 lines
4.1 KiB
Markdown
# 02. Trust Anchor (TA)
|
||
|
||
## 2.1 对象定位
|
||
TA是一个自签名的CA证书。
|
||
|
||
## 2.2 原始载体与编码
|
||
|
||
- 载体:X.509 certificates.
|
||
- 编码:DER(遵循 RFC 5280 的 certificate 结构与字段语义,但受限于RFC 8630 §2.3)
|
||
|
||
|
||
## 2.3 抽象数据类型
|
||
|
||
### 2.3.1 TA
|
||
|
||
| 字段 | 类型 | 语义 | 约束/解析规则 | RFC 引用 |
|
||
|-------------------|------------------|---------------|---------|---------------|
|
||
| name | String | 标识该TA,如apnic等 | | |
|
||
| cert_der | Vec<u8> | 原始DER内容 | | |
|
||
| cert | X509Certificate | 基础X509证书 | | RFC 5280 §4.1 |
|
||
| resource | ResourceSet | 资源集合 | | |
|
||
| publication_point | Uri | 获取该TA的URI | | |
|
||
|
||
### 2.3.2 ResourceSet
|
||
资源集合是来自RFC 3779的IP地址块(§2)和AS号段(§3),受约束于RFC 8630 §2.3
|
||
|
||
| 字段 | 类型 | 语义 | 约束/解析规则 | RFC 引用 |
|
||
|------|----------------|--------|-------------|---------------------------|
|
||
| ips | IpResourceSet | IP地址集合 | 不能是inherit | RFC 3779 §2和RFC 8630 §2.3 |
|
||
| asns | AsnResourceSet | ASN集合 | 不能是inherit | RFC 3779 §3和RFC 8630 §2.3 |
|
||
|
||
[//]: # ()
|
||
[//]: # (### 2.3.3 IpResourceSet)
|
||
|
||
[//]: # (包括IPv4和IPv6的前缀表示)
|
||
|
||
[//]: # ()
|
||
[//]: # (| 字段 | 类型 | 语义 | 约束/解析规则 | RFC 引用 |)
|
||
|
||
[//]: # (|----|------------------------|----------|-------------|--------------|)
|
||
|
||
[//]: # (| v4 | PrefixSet<Ipv4Prefix> | IPv4前缀集合 | | RFC 3779 §2 |)
|
||
|
||
[//]: # (| v6 | PrefixSet<Ipv6Prefix> | IPv6前缀集合 | | RFC 3779 §2 |)
|
||
|
||
[//]: # ()
|
||
[//]: # (### 2.3.4 AsnResourceSet)
|
||
|
||
[//]: # ()
|
||
[//]: # (| 字段 | 类型 | 语义 | 约束/解析规则 | RFC 引用 |)
|
||
|
||
[//]: # (|-------|--------------------|-------|-------------|-------------|)
|
||
|
||
[//]: # (| range | RangeSet<AsnBlock> | ASN集合 | | RFC 3779 §3 |)
|
||
|
||
[//]: # ()
|
||
[//]: # (### 2.3.5 Ipv4Prefix)
|
||
|
||
[//]: # ()
|
||
[//]: # (| 字段 | 类型 | 语义 | 约束/解析规则 | RFC 引用 |)
|
||
|
||
[//]: # (|------|-----|-----|---------|-------------|)
|
||
|
||
[//]: # (| addr | u32 | 地址 | | RFC 3779 §2 |)
|
||
|
||
[//]: # (| len | u8 | 长度 | 0-32 | RFC 3779 §2 |)
|
||
|
||
[//]: # ()
|
||
[//]: # ()
|
||
[//]: # (### 2.3.6 Ipv6Prefix)
|
||
|
||
[//]: # ()
|
||
[//]: # (| 字段 | 类型 | 语义 | 约束/解析规则 | RFC 引用 |)
|
||
|
||
[//]: # (|------|------|-----|---------|-------------|)
|
||
|
||
[//]: # (| addr | u128 | 地址 | | RFC 3779 §2 |)
|
||
|
||
[//]: # (| len | u8 | 长度 | 0-128 | RFC 3779 §2 |)
|
||
|
||
[//]: # ()
|
||
[//]: # (### 2.3.7 AsnBlock)
|
||
|
||
[//]: # ()
|
||
[//]: # (| 字段 | 类型 | 语义 | 约束/解析规则 | RFC 引用 |)
|
||
|
||
[//]: # (|----------|----------|-------|---------|--------------|)
|
||
|
||
[//]: # (| asn | Asn | ASN | | RFC 3779 §3 |)
|
||
|
||
[//]: # (| asnRange | AsnRange | ASN范围 | | RFC 3779 §3 |)
|
||
|
||
[//]: # ()
|
||
[//]: # ()
|
||
[//]: # (### 2.3.8 Asn)
|
||
|
||
[//]: # ()
|
||
[//]: # (| 字段 | 类型 | 语义 | 约束/解析规则 | RFC 引用 |)
|
||
|
||
[//]: # (|-----|-----|-----|---------|-------------|)
|
||
|
||
[//]: # (| asn | u32 | ASN | | RFC 3779 §3 |)
|
||
|
||
[//]: # ()
|
||
[//]: # (### 2.3.8 AsnRange)
|
||
|
||
[//]: # ()
|
||
[//]: # (| 字段 | 类型 | 语义 | 约束/解析规则 | RFC 引用 |)
|
||
|
||
[//]: # (|-----|-----|-------|---------|--------------|)
|
||
|
||
[//]: # (| min | Asn | 最小ASN | | RFC 3779 §3 |)
|
||
|
||
[//]: # (| max | Asn | 最大ASN | | RFC 3779 §3 |)
|
||
|
||
# 2.4 TA校验流程(RFC 8630 §3)
|
||
1. 从TAL的URI列表中获取证书对象。(顺序访问,若前面失效,再访问后面的)
|
||
2. 验证证书格式,必须是当前、有效的自签名RPKI证书。
|
||
3. 验证公钥匹配。TAL中的SubjectPublicKeyInfo与下载证书的公钥一致。
|
||
4. 其他检查。
|
||
5. 更新本地存储库缓存。
|