数据的加解密和签名[但是不能防止中间人攻击得加入证书验证部分才行]
验证手机端数据过程:
那么这里一共有两组四个密钥:车机端的公钥(PUB_A),车机端的私钥(PRI_A); 手机端的公钥(PUB_B),手机端的私钥(PRI_B)
1.对信息内容M计算摘要,得到摘要D
2.使用手机端私钥对D进行签名,得到签名S
3.使用车机端的公钥,将信息内容M和签名S进行加密
4.发送给车机端
5.车机端接收到信息后,用自己的私钥解密; 得到手机端的信息内容M和签名S
6.对信息内容M计算摘要,得到摘要D
7.用手机端的公钥对D进行加密, 验证签名s
8.至此验证完成
密钥交互过程[防止中间人攻击, 可以做验证客户端或者来源部分]:
车机虚拟密钥A 手机密钥B AES
第 1 part :B请求验证
第 2 part :随机生成公共数; 比如g和p: g = 3 和 p = 17
第 3 part :A 进行指数运算,生成一个私钥A。
第 4 part :使用AES对 g + p + 私钥A 进行加密发送给B。
第 5 part :B 对接收到的消息进行指数运算,然后求模,得到最终的公共的对称密钥。
第 6 part :使用AES对 私钥B 进行加密发送给A。
第 7 part :A 对接收到的消息进行指数运算,然后求模,得到最终的公共的对称密钥。
验证手机端数据过程:(双向验证, 数据传输AES)
车机:公钥 + 私钥
手机:车机BLE公钥 + 手机公钥 + 手机私钥
1.请求验证
2.车机BLE返回随机数 + 车机BLE公钥
3.手机对信息内容M计算摘要,得到摘要D [信息内容自己生成的一个随机数],验证车机公钥
4.使用手机私钥对D进行签名,得到签名S
5.使用车机BLE公钥对 信息内容M + 签名S + 随机数 进行加密后 + 手机公钥,发送给车机BLE
6.车机BLE接收到信息后,用自己的私钥解密; 得到手机的 信息内容M + 签名S
7.对信息内容M计算摘要,得到摘要D;用手机的公钥对D进行加密, 验证签名s , 验证随机数
8.使用车机BLE私钥对返回信息H进行签名F,并使用手机公钥对 H + F 进行加密,返回给手机
9.手机接收到信息后,用自己的私钥解密; 得到手机的 信息内容H + 签名F
10.对信息内容H计算摘要,得到摘要;用车机BLE的公钥对D进行加密, 验证签名F
11.至此验证完成
基于对称密钥的认证和密钥分发
基于公钥的认证和密钥分发