資源公鑰基礎設施

資源公鑰基礎設施（Resource Public Key Infrastructure，簡稱RPKI），也稱資源認證（Resource Certification），中文全稱「網際網路碼號資源公鑰基礎設施」，是一項旨在使網際網路路由基礎設施更安全的公開金鑰基礎建設（PKI）框架。

RPKI為將網際網路碼號資源資訊（如自治系統號碼和IP位址）連接到一個信任錨提供了一種方式。它的證書結構反映了網際網路碼號資源的分發方式，即資源最初由IANA分配到區域網際網路註冊管理機構（RIR），區域機構再將其分配給本地網際網路註冊管理機構（LIR），最後由本地機構將資源分配給其客戶。資源的合法持有人可以使用RPKI來控制網際網路路由協議的運行，以防止路由劫持和其他攻擊。尤其是RPKI可通過BGPSEC保護邊界網關協議（BGP），以及以安全鄰居發現協議（SEND）作為IPv6的鄰居發現協議。

RPKI架構被記錄於RFC 6480。RPKI規範記錄於一系列RFC：RFC 6481、RFC 6482、RFC 6483、RFC 6484、RFC 6485、RFC 6486、RFC 6487、RFC 6488、RFC 6489、RFC 6490、RFC 6491、RFC 6492和RFC 6493。SEND記錄於RFC 6494和RFC 6495。這些RFC由IETF的 SIDE工作組 的製作，並是基於RFC 4593記錄的一份威脅分析。這些標準涵蓋了BGP源驗證，而路徑驗證（BGPSEC）則還在進展中。前綴源驗證目前已有數個實現。

## 資源證書和子對象

RPKI使用X.509 PKI證書（RFC 5280）附有IP位址和AS標識符擴展（RFC 3779）的。它允許區域網際網路註冊管理機構的成員即本地網際網路註冊機構（LIR）獲取一個資源證書，列出其持有的網際網路碼號資源。這為其持有提供了有效證據，但應注意該證書不包含身份資訊。通過使用資源證書，本地機構可以為其對所持有前綴執行路由宣告一事創建密碼學證明。這些證明被稱為路由源授權（ROA）。

### 路由源授權

路由源授權狀態表示著自治系統（AS）是否已被授權作為特定IP前綴的源頭。此外，它可以確定AS已被授權宣告的最大前綴長度。

#### 最大前綴長度

最大前綴長度是一個可選欄位。當它未定義時，AS僅被授權宣告明確指定的前綴，任何更具體的前綴宣告被視為無效。這是以宣告更具體前綴來強制實施聚合併防止劫持的一種方式。

當它存在時，這指定了AS已被授權宣告具體IP前綴的長度。例如，如果IP位址前綴為10.0/16，最大長度為22，則該AS被授權宣告10.0/16下的任何前綴，只要沒有超出/22的範圍。因此本例中，該AS被授權宣告10.0/16、10.0.128/20或10.0.252/22，但不含10.0.255.0/24。

#### RPKI路由宣告核驗

當為特定源AS和前綴創建一個ROA時，它將對一個或多個路由宣告的RPKI有效性產生影響。它們可以是：

- 有效
- 路由宣告覆蓋至少一個ROA
- 無效
- 該前綴從未經授權的AS發布。意即：
- 另一個AS有這個前綴的ROA，但沒有ROA授權這個AS。或者。
- 這可能是一次劫持企圖
- 該宣告超過ROA中設置的與前綴和AS匹配的最大長度
- 未知
- 此次宣告的前綴未被現有的ROA覆蓋（或僅部分覆蓋）

注意，無效的BGP更新也可能是由於配置不正確的ROA所造成。

## 管理

已有 開源工具可用於運行證書頒發機構和管理資源證書以及子對象（例如ROA）。此外，區域機構在其成員門戶有託管的RPKI平台。本地機構可以選擇依賴於一個託管的系統，或運行自己的軟體。

## 發布

該系統不使用單個存儲庫發布點來發布RPKI對象，而是由由多個存儲庫發布點組成。每個存儲庫發布點與一個或多個RPKI證書發布點相關聯。在實踐中，這意味著運行一個證書頒發機構時，本地機構可以選擇自己發布所有加密資料，也可以依賴第三方發布。當本地機構選擇使用由區域機構提供的託管系統時，原則上發布將在區域機構的存儲庫中完成。

## 驗證

相關各方運行本地的RPKI驗證工具，它們指向不同的RPKI信任錨，並使用rsync收集用於發布各存儲庫的所有加密對象。這將創建一個本地驗證的緩存，用於進行BGP路由決策。

## 路由決策

在ROA驗證後，該證明可以與BGP路由一同協助網路運營商的決策過程。這可以手動完成，但已驗證前綴的原始數據也可以使用 RPKI to Router Protocol (RFC 6810) 發送到支持的路由器。思科系統在 眾多平台 提供了獲取RPKI數據集的原生支持，並在 路由器配置 中使用。瞻博網絡在運行12.2或更新版本的 所有平台 上提供支持。Quagga通過 BGP Secure Routing Extensions (BGP-SRx) 或基於RTRlib的一個 RFC完全兼容RPKI實現 獲得此功能。RTRlib 提供了一個RTR協議和前綴源驗證的開源C實現。該庫對於路由軟體的開發人員有用，但也適用於網路運營商。開發人員可以將RTRlib集成到BGP守護程序中，以實現將其擴展到RPKI。網路運營商也可以使用RTRlib開發監控工具（例如，檢查緩存的正常運行或評估其性能）。

RFC 6494更新了鄰居發現協議（ND）的安全機制（即安全鄰居發現協議，SEND）的證書驗證方法，以便在IPv6中使用RPKI。它使用修改的RFC 6487 RPKI證書配置定義了SEND證書配置，其中包含一個RFC 3779 IP位址委派擴展。

## 外部連結

中文：

- CNNIC成功舉辦2017中國IP位址分配聯盟高峰會議，CNNIC
- 通標網站內檢索：RPKI

英文：

- IETF Journal - Securing BGP and SIDR
- An open source implementation of the complete set of RPKI protocols and tools
- RTRlib - Open source RPKI-Router Client C Library
- Quagga RPKI implementation
- BGP-SrX - Quagga router implementation of RPKI-based Origin and Path validation.
- RPKI-Monitor - Global and regional monitoring and analysis of RPKI deployment and use.
- RPKI Deployment statistics for all RIRs
- Global ROA deployment heatmap
- EuroTransit Czech Republic
- BGPMON - Validating BGP announcement with RPKI
- An APNIC primer on RPKI
- RIPE NCC Resource Certification (RPKI) information
- LACNIC RPKI Information
- ARIN RPKI Information
- NRO statement on RPKI
- Internet Architecture Board statement on RPKI
- Building a new governance hierarchy: RPKI and the future of Internet routing and addressing
- Secure Border Gateway Protocol (Secure-BGP)
- RPKI Router Implementation Report