DOCSIS BPI 解密 - 取得 TEK



簡介


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 進行加密。

Generating Test DOCSIS CVC




熟悉 OpenSSL 的操作後,製作 Test CVC 就很簡單了, 只要照著 spec 把值填進去就可以了
先紀錄最簡單的方法, 使用 DOCSIS 提供的 test root cert/key 製作 test cvc

第一步

CableLabs下載TEST DOCSIS 3.0 or Earlier Certificate Steps (Legacy PKI)

第二步

解壓縮, 按照 TEST_DOCSIS_MFR_CVC_STEPS.txt 的步驟,改一下 config, 打打指令就完成了

第零步

根據 CM-SP-SECv3.0-I13-100611.pdf 的 III.1.7 Code Verification Certificate Format, 編寫 config file, 製作 CVC

OpenSSL 操作筆記 - 產生 CSR


有了 private key 之後就可以作 CSR 了, req 指令就是拿來產生 CSR 的, 使用時需要搭配 config file 一起使用, 即便給了滿滿的參數
req 還是會去找 distinguished_name 這個設定, config file 的筆記在這裡

參數簡介

以下列出幾個製作 CSR 常用的參數

OpenSSL 操作筆記 - OpenSSL.cnf (req section)


功用

使用openssl ca,req,x509 指令時需要下很多參數,為了方便可以把一些值寫在 config file 裡, 另外還有一些比較複雜的內容
以及無法用指令修改的參數必須寫在 config file 裡

檔案路徑

若下指令時沒有指定路徑.openssl 會去抓環境變數OPENSSL_CONFSSLEAY_CONF,若沒有這些變數
就用 compile 時設定的路徑, 通常是 $OPENSSL_DIR/openssl.cnf
OPENSSL_DIR 可用 version 指令查詢
openssl version -d 
我手邊的電腦測出來結果是
Ubuntu: OPENSSLDIR: "/usr/lib/ssl"
CentOS: OPENSSLDIR: "/etc/pki/tls"
Windows:OPENSSLDIR: "/usr/local/ssl/openssl.cnf"

OpenSSL 操作筆記 - 產生 RSA 金鑰

Certificate 的目的就是用來發布 public key, 在 public key 上加入各種屬性讓人知道這張 certificate 的作用是什麼, 再加上一段 CA 的簽名,增加這隻 public key 的可靠性
在 DOCSIS 1.0 的時候, 跑 bpi 時, CM 直接丟 public key 與頭端溝通, DOCSIS 1.1 之後 bpi 變成 bpi+ , 這時候 CM 丟的就是 certificate 了, CMTS 可以用它已知的 CA 去檢查 CM certificate 是否為正確的
作 certificate 第一步就是製作 key, 目前我用到的都是用 RSA

openssl 產生 RSA key 有多種方式,有專門產生 key 的, 和順便產生 key 的

OpenSSL 操作筆記 - 檔案格式轉換

格式簡介

Certificate 和 key 可以存成多種格式, 常見的有 DER , PEM , PFX



  • DER


  • 將 certificate 或 key 用 DER ASN.1 編碼的原始格式, certificate 就是依照X.509的方式編碼, key 則是又能分為PKCS#1 和PKCS#8



  • PEM


  • 把 DER 格式的 certificate 或 key 使用 base64-encoded 編碼後在頭尾補上資料標明檔案類型

    Generating KDC Certificate for PacketCable

    測試 PacketCable Secure provisioning 時需要用到 KDC, 如果是用真實的 certificate , 那大家都一樣,不會有問題,但一般測試時都是用 test certificate, 這時就可能遇到不一致的問題了, 經過種種不可考得原因, 手邊出現了2組 KDC certificate, 造成兩邊測試結果不同,觀察後發現一邊用的是 Cablelabs 提供的 test certificate, 另一邊是不知道誰按照 spec 一層層做出來的 certificate, 為了讓以後測試一致, 把 KDC certificate 用 Cablelabs 提供的 test certificate 重新 sign 過就可以了