密钥--基础

数据的加解密和签名[但是不能防止中间人攻击得加入证书验证部分才行]

验证手机端数据过程:
那么这里一共有两组四个密钥:车机端的公钥(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.至此验证完成

基于对称密钥的认证和密钥分发

基于公钥的认证和密钥分发

猜你喜欢

转载自blog.csdn.net/qq_39325340/article/details/81171953