一、前言
在进入本章学习之前,0基础的宝子先去看下我 DIN70121 和 ISO15118-2 的PKI体系,这两篇文章哦,本章接着继续讲证书,又又又又又是它!!!!!!!!!!
二、差异点
下图是 ISO15118-2 的整体流程框图。其实无论是前面 SLAC 阶段、SDP、IP也好,其实跟DIN70121 是一样的,毕竟DIN70121 就是 ISO15118-2 的前身或阉割版,其最大的差异在于:
1、TCP建立后需要建立TLS 安全通道
2、V2G 流程增加了证书相关内容
接下来,我们针对这两差异点去展开 ISO15118-2 的解读,上车,起飞~~~
三、TLS中的证书
1、TLS 四次握手
在 TCP 建立成功后,EVCC做 TCP Client,SECC 做 TCP Server。EVCC 发起 Client Hello,进行 TLS 四次握手,建立 TLS 通道。TLS 四次握手咱这里就不细说,感兴趣的宝子查阅别的博主就好啦!!!这里我们主要重点讨论下交互的哪些证书
wireshark中的TLS:以下举例单端认证,主包目前只有单端认证的数据了
1、Client Hello (Client 发,1握)
2、Server Hello (Server 回,2握)
3、Certificate,Server Key Exchange,Server Hello Done (Server 回,2握)
3.1、Certificate
3.2、Server Key Exchange,Server Hello Done
4、Client Key Exchange (Client 发,3握)
5、Change Cipher Spec,Encrypted Handshake Message (Client 发,3握)
6、Change Cipher Spec (Server 回,4握)
7、Encrypted Handshake Message (Server 回,4握)
8、TLS四次握手后,双方交互的是 Application Data 密文
2、EVSE 证书验证流程
在 TLS 四次握手中,EV 校验了 EVSE 端的 EVSE Leaf CA、CPO Sub CA 的合法性。以下是假设 EVCC 不具备校验证书的能力,但实际上 EVCC 应该具备检验证书的能力的
四、V2G报文中的证书
在本小结中,咱们依旧讨论跟证书相关的 V2G 报文,前面已经说了在 TLS 阶段已经完成对EVSE Leaf CA、CPO Sub CA 的验签,那下面将讲述何时对 EV 相关证书的验签。
再提一嘴,证书上是附带公钥,但不会附带私钥的;私钥是证书持有者收藏的。
4.1、PaymentDetails
1、PaymentDetailsReq
EVCC 发起 PaymentDetailsReq,并携带以下参数。
1、eMAID
2、ContractSignatureCertChain
Certificate:附带的是 EV 的 ContractCertificate
SubCertificates:可以附带多个 MO Sub CA,主要是 MO Sub CA1、MO Sub CA2 等
2、PaymentDetailsRes
SECC 响应回复 PaymentDetailsRes,并携带以下参数。
3、EV 证书验证流程
一般情况下,EVSE 基本只做与 EV 通信的中间传递者,也就是说通常 EVSE 不去验证书,而是CPO 运营平台统一做证书验证管理。实际上,SECC 要具备校验证书的能力
4.2、CertificateUpdate
证书更新请求,是在 EVCC 有证书的前提下,需要更新证书,如下描述。
1、CertificateUpdateReq
EVCC 发起 CertificateUpdateReq,并携带以下参数
1、ContractSignatureCertChain:
Certificate:附带的是 EV 的旧的 ContractCertificate,这合同证书准备过期了。
SubCertificates:可以附带多个 MO Sub CA,主要是 MO Sub CA1、MO Sub CA2 等
2、ListOfRootCertificateIDs:表明设备支持哪些根证书体系(例如 V2G Root、OEM Root、CPS Root 等)
2、CertificateUpdateRes
1、SAProvisioningCertificateChain:SAP供应证书链,其结构跟 ContractSignatureCertChain 一样,只是包含不同的证书。
Certificate:附带的是 Leaf Prov Certificate,这个是 Provisioning Service(证书供应服务平台)的。
SubCertificates:可以附带多个 Prov Sub CA,主要是 Prov Sub CA1、Prov Sub CA2 等。
2、ContractSignatureCertChain:
Certificate:附带的是 EV 的 New ContractCertificate,从 Provisioning Service 平台获取的新合同证书
SubCertificates:可以附带多个MO Sub CA,主要是MO Sub CA1、MO Sub CA2。
ContractSignatureEncryptedPrivateKey:ContractCertificate 的私钥。
4.3、CertificateInstallation
EV 首次充电,需要注册一个身份,即需要进行合同证书安装,记住一般是首次充电哦
1、CertificateInstallationReq
OEMProvisioningCert:
Certificate:附带的是 OEM Prov Certificate。
SubCertificates:可以附带多个 OEM Sub CA ,主要是 OEM Sub CA1、OEM Sub CA2 等
2、CertificateInstallationRes
1、SAProvisioningCertificateChain:
Certificate:附带的是 Leaf Prov Certificate,这个是 Provisioning Service(证书供应服务平台)的。
SubCertificates:可以附带多个 Prov Sub CA,主要是 Prov Sub CA1、Prov Sub CA2 等。
2、ContractSignatureCertChain:
Certificate:附带的是 EV 的 New ContractCertificate,给 EV 首次充电安装的 New ContractCertificate。
SubCertificates:可以附带多个MO Sub CA,主要是MO Sub CA1、MO Sub CA2。
3、ContractSignatureEncryptedPrivateKey:ContractCertificate 的加密私钥;合同证书的私钥不允许明文传输,故这是加密过的合同加密私钥。
4、DHpublickey:会话密钥的公钥
3、DHpublickey ?
SECC 在 CertificateInstallationReq 中,已经获取到OEM 证书(其包含OEM public key(OEM 公钥))
1、生成临时 ECDH 密钥对
ecdh.d:临时私钥
ecdh.Q:临时公钥 (这个就是DHpublickey)
2、OEM public key(OEM 公钥)+ecdh.d(临时私钥) ——> ECDH 计算共享密钥
shared secret
3、shared secret使用 KDF 派生AES‑128 symmetric key(AES‑128对称密钥)
AES‑128 symmetric key
4、生成随机 IV
5、初始化 cipher
6、将 AES‑128 symmetric key 设置到 cipher
7、再将 IV 设置到 cipher
8、cipher + Contract CA private key (合同证书私钥) ——> 执行 AES‑CBC 加密
encrypted data
9、encrypted data 拼接 IV ——>ContractSignatureEncryptedPrivateKey
10、流程图简记版
11、EVCC 端解密
EVCC端,使用OEM private key(OEM 私钥)+DHpublickey(ecdh.Q:临时公钥),解密ContractSignatureEncryptedPrivateKey 后,得到真正的 Contract private key。
4、Contract CA 下载
1、证书更新 or 安装都需要在 SECC 能连接 CPS(Certificate Provisioning Service) 时,才允许。在前一篇我们知道,访问哪个 CPS 是根据 EVCC 提供的 EMAID。
2、CPS 需要使用 Leaf Prov CA 签名合同证书相关的内容,确保合同证书、合同私钥均来自该合法的 CPS。
3、EVCC 收到 CertificateUpdateRes/CertificateInstallationRes 的合同证书,需要用验是否来自合法的 CPS: V2G Root --> Prov Sub CA1 --> Prov Sub CA2 --> Leaf Prov CA
4、CertificateUpdate 和 CertificateInstallation 的小区别:CertificateUpdate 是验旧的 Contract CA,CertificateInstallation 则是验OEM Prov CA。
五、总结
基于目前这两章的学习,对于如下 PKI 体系中的框选的证书结构,我们已经清楚其相应的证书在整个流程中的哪些地方起作用了。