Jimmy's blog

TCL, DOCSIS 測試筆記

DOCSIS BPI 解密 - 取得 TEK

| Comments

簡介

DOCSIS 1.0 BPI 加密使用的是 DES,為了能解開封包內容必須先取得 TEK (raffic Encryption Key)。取得 TEK 是透過 BPKM (Baseline Privacy Key Management) Protocol。 BPKM 的過程中 CMTS 會使用 RSA 加密 Auth Key,CM 解開 Auth Key 後算出 KEK (Key Encryption Key),接著再用 KEK 解開 TEK,之後就能用 TEK 進行加密。

EuroDOCSIS Certificate

| Comments

EuroDOCSIS 的 BPI+ 規範基本上和 DOCSIS 是一樣的, 只是 certificates 的一些欄位名稱換一下而已

EuroDOCSIS Root Certificate

countryName=BE
organizationName=tComLabs – Euro-DOCSIS
organizationalUnitName=Cable Modems
commonName= Euro-DOCSIS Cable Modem Root CA

EuroDOCSIS Manufacturer Certificate

countryName=<Country of Manufacturer>
[stateOrProvinceName=<state/province>]
[localityName=<City>]
organizationName=<Company Name>
organizationalUnitName=Euro-DOCSIS
[organizationalUnitName=<Manufacturing Location>]
commonName=<Company Name> Cable Modem Root Certificate Authority

比較特別是 oganizationalUnitName 的值也可以是 DOCSIS

EuroDOCSIS Code Verification Certificate

countryName = <country>
organizationName = <Manufacturer organizationName from CA Certificate>
organizationalUnitName = Euro-DOCSIS
commonName = Code Verification Certificate

參考資料

  • EuroDOCSIS.BPI+Req.pdf Rev:7.0

DOCSIS Certificate

| Comments

DOCSIS 是從 DOCSIS 1.1 (BPI+) 開始使用 certificate 來驗證 CM 和 CMTS 之間金鑰交換的訊息, 在 DOCSIS 1.0 (BPI), CM 送出 AUTH-REQ 時沒有憑證, 直接丟出 RSA public key, BPI+ 加強了這一階段的驗證, CM 要送出 AUTH-INFO (CA certificate), AUTH-REQ (CM certificate), 讓 CMTS 驗證 CM 來源是否正確

BPI+ Certificate 架構

BPI+ certificate 共有 3 層

  • DOCSIS Root CA certificate
  • Manufacturer CA (distributed model) or CableLabs Mfg CA (centralized model) certificates
  • CM Device certificate

Cablelabs 已經不再簽發 Manufacturer CA certificate, 只剩下 centralized model, 另外 Root 除了簽發 Mfg CA certificate 以外, 也用來簽發 Code Verification Certificate (Legacy-PKI) 和 CableLabs DOCSIS CVC CA Certificate (New-PKI)

Generate DOCSIS CVC

| Comments

Code Verification Certificate (CVC) 是 cable modem 作 secure software download (SSD) 時提供給 CM 驗證 image 用的憑證, 當 manufacturer 要出新的 software 時, 會用 private key 簽名, 並把含有相對應 public key 的 certificate (也就是 CVC) 丟給 CM 驗證, CM 先檢查 CVC, 確認 CVC 正確後就能用 CVC 裡面的 public key 檢查 software 的簽名是否正確, 利用這種方式來驗證 software 的可靠性與正確性

通常, 這個 private key 都會放在一個需要重重關卡才能進入的地方, 所以要測試 CM SSD 功能時會用 Test CVC, 製作 Test CVC 的步驟很簡單, 只要裝好 OpenSSL 就可以開始製作, CableLabs 有詳細的步驟說明