CCC3.0评价


前言

虽然CCC3.0的规范2021年才正式发布,但各大车企和手机厂商纷纷跟进,背后原因是手机作为汽车钥匙的习惯已经深入人心形成势不可挡的趋势。


一、CCC3.0为啥会成为数字车钥匙的未来?

为什么是CCC3.0会成为主流车钥匙规范,因为CCC3.0以UWB+安全芯片为主要技术依托, UWB以其精准测距和再配合安全芯片联合组建了强大的动态STS安全防护体系,CCC3.0使得无感便捷与安全这两个过去不可兼得的诉求得到完美解决,回首CCC系列标准,CCC1.0的NFC机制存在客户找位置刷卡的不友好,CCC2.0的蓝牙机制又存在蓝牙配对不成功和蓝牙测距有时不准确的问题。

二、CCC3.0的体系架构的主要特色

如果说CCC3.0仅仅是加了一个UWB这个物理通道那就小看CCC3.0了,
CCC3.0主要特色主要体现在系统考虑全面,安全前提下的简洁。

1.系统考虑全面

系统考虑全面主要体现在7个大的角色,车,车厂服务器,Owner设备,Owner服务器,Friend设备,Friend服务器,Key服务器,配对机制,到自由共享钥匙和及时删除共享机制,系统设计考虑非常的全面。

2.安全前提下的简洁

2.1配对的简洁

安全前提下的简洁在配对机制体现的淋漓尽致,配对在用户看来就是输入几个密码那样平淡无奇,普通到不能再普通的方式,但背后的巧妙的SPAK2机制使得后台车没有密码副本,配对过程无密码明文,而且神奇的做到了完美向前保密,即使后续密码泄露,过去的安全通道依然安全。

2.2安全交易的简洁

安全前提下的简洁在标准交易和快速交易也是完美体现,标准交易使用AUTH0和AUTH1两个APDU交互就完成核心密钥交互,核心技术就是TLS采用的ECDH+ECDSA的思想,为了更加的简洁CCC3.0还提供快速交易模型,利用标准交易用AUTH0一次交互就形成快速交易模式,所有的设计都是以安全为根基争取简洁高效为初心。

2.3经典PKI证书体系的模范之作

应用采用SROOTCA为信任根,然后信任传递到SEROOT公钥,然后信任传递到InstanceCA,然后传递到DK公钥,回头利用设备商拥有SEROOTCA公钥获得InstanceCA的信任后换自己签名形成最终证书链,然后车通过设备公钥证书验证DK的合法性,PKI体系有20年历史,早期网银模式都是客户拿个参考号授权码去换取银行私钥签名获得证书,理论上有公钥被替换的风险,3.0巧妙设计InstanceCA来保障公钥的合法性,确实是经典PKI设计的模范之作。

三、CCC3.0的规范瑕疵点

以前没仔细读的时候有开始没发现,深究细节才发现,瑕疵点在于整个3.0整个配对和标准交易基本只做一次,大量99%的时间跑的是快速交易,快速交易的本质是利用标准交易过程产生点双方共享的对称密钥进行挑战应答,速度超级快避免了特斯拉模式的ECDH运算,本来是完美超越特斯拉的巧妙设计,但规范却要求计算点乘,取点乘的X为挑战,安全完全等价随机挑战,完全没必要做点乘,如何完美实现3.0就看应用怎么写,车端是否傻傻验证点的合法性,如果合理编写应用,车端不验点,那么3.0的设计和实现确实相当优美,而且实际开门感觉超级快。

总结

读完CCC3.0你会发现整个逻辑安全的灵魂的椭圆曲线离散对数问题,无论是配对的SPAKE2,还是标准交易模型,还是快速交易模型,还有X509证书体系,还有framework层到DK层的SCP11安全保护,还有服务器到服务器的API要双向TLS认证设计,这些设计的点点滴滴都是ECC的身影,ECC终于迎来了属于他的时代,ECC+UWB终将成就火爆的CCC3.0.

<think>嗯,用户之前问过作为小白应该从哪里开始学编程,我推荐了Python,但现在用户说想先学C语言。我需要调整之前的建议,但保持同样的结构。用户可能对底层感兴趣,或者有特定目标,比如嵌入式系统、操作系统开发。不过作为小白,C语言可能比较难,需要更详细的指导。 首先,我得确认用户了解C语言的挑战,比如指针和内存管理,但也要鼓励他们,说明学习C的好处,比如打好基础。然后,按照之前的步骤结构,分阶段引导,从环境搭建到基础语法,再到项目练习,最后进阶内容。可能需要更多的比喻和简单例子,避免用户被吓到。 要注意用户是小白,所以例子要更简单,解释更详细。比如,变量部分用储物柜的比喻,指针用房间号的例子。项目方面,选择计算器、温度转换、成绩统计这些贴近生活的例子。同时,避坑指南部分要针对C常见错误,比如分号忘记、头文件缺失等。 还要比较C和Python的不同,说明为什么从C开始可能有挑战,但如果有兴趣和坚持是可以的。最后,鼓励用户,强调动手实践的重要性,并提供资源链接,比如编译器安装、在线学习平台。确保整个回答结构清晰,步骤明确,语言浅显易懂。</think>好的!想从C语言入门是个很棒的选择——它就像编程世界的「骨架」,能帮你深入理解计算机底层原理。不过要注意,C语言的学习曲线比Python陡峭(像直接骑两轮自行车),需要更多耐心。以下是**针对小白的C语言学习路线**,用生活化案例拆解: --- ### **C语言特点先知道**(心理准备) 1. **贴近硬件**:直接操作内存(像自己管理仓库库存) 2. **高效但复杂**:需要手动管理细节(像开手动挡汽车) 3. **影响深远**:C++/Java/Python等语言都借鉴了它的设计 --- ### **第一阶段:搭建「工作台」(第1天)** **工具准备**(就像木匠需要锯子和锤子): 1. **编译器安装**: - Windows:下载[MinGW](https://sourceforge.net/projects/mingw/) - Mac/Linux:系统自带`gcc`(终端输入`gcc --version`测试) 2. **编辑器推荐**: - [VS Code](https://code.visualstudio.com/)(安装C/C++扩展) - [Code::Blocks](http://www.codeblocks.org/)(新手友好) **验证安装**:写第一个程序(就像学做菜先煮鸡蛋) ```c #include <stdio.h> // 包含标准输入输出库 int main() { // 程序入口(像房子的主门) printf("Hello, 世界!\n"); // \n代表换行 return 0; // 告诉系统程序正常结束 } ``` ➔ 保存为`hello.c`,终端执行: ```bash gcc hello.c -o hello # 编译 ./hello # 运行(Windows用hello.exe) ``` --- ### **第二阶段:掌握「基础语法」(第2-7天)** **核心四件套**(像学做菜的刀工和火候): 1. **变量与数据类型**(储物柜分类管理) ```c int age = 20; // 整数柜(-2147483648 ~ 2147483647) float price = 9.8; // 小数柜(精确到6位) char grade = &#39;A&#39;; // 字符柜(单引号) char name[] = "小明"; // 字符串(双引号+方括号) ``` 2. **输入输出**(与用户对话) ```c int score; printf("请输入分数:"); // 显示提示 scanf("%d", &score); // %d对应整数,&符号不能少! printf("你输入的是:%d\n", score); ``` 3. **条件语句**(if-else决策树) ```c int temperature; printf("当前温度:"); scanf("%d", &temperature); if (temperature > 30) { printf("建议开空调\n"); } else if (temperature < 10) { printf("记得穿羽绒服\n"); } else { printf("天气舒适\n"); } ``` 4. **循环结构**(重复劳动自动化) ```c // for循环:精确控制次数(像微波炉定时) for(int i=1; i<=5; i++) { printf("第%d次浇水\n", i); } // while循环:条件满足就执行(像烧水等沸腾) int water = 0; while(water < 100) { printf("当前水温:%d℃\n", water); water += 10; } ``` --- ### **第三阶段:攻克「难点关卡」(第2-3周)** **三大重点难点**(像学自行车时的刹车和平衡): 1. **数组**(批量数据管理) ```c // 存储一周温度 float temperatures[7] = {22.5, 23.0, 24.3, 21.7, 20.9, 25.1, 19.8}; printf("周三温度:%.1f℃\n", temperatures[2]); // 输出24.3 ``` 2. **函数**(代码模块化) ```c // 声明函数(像菜谱目录) float convertFtoC(float fahrenheit); int main() { float f = 77.0; printf("%.1f华氏度 = %.1f摄氏度\n", f, convertFtoC(f)); return 0; } // 定义函数(具体做菜步骤) float convertFtoC(float fahrenheit) { return (fahrenheit - 32) * 5 / 9; } ``` 3. **指针**(C语言精髓,像掌握仓库的钥匙) ```c int num = 10; // 定义一个变量 int *p = &num; // p存储num的地址(像记下储物柜编号) printf("num的值:%d\n", num); // 输出10 printf("通过指针访问:%d\n", *p); // *p表示取该地址的值 *p = 20; // 通过指针修改值 printf("修改后:%d\n", num); // 输出20 ``` --- ### **第四阶段:实战小项目(第4周)** **推荐项目清单**(从简单到复杂): 1. **智能计算器**(支持加减乘除) ```c #include <stdio.h> int main() { char op; double num1, num2; printf("输入运算符(+ - * /): "); scanf("%c", &op); printf("输入两个数字: "); scanf("%lf %lf", &num1, &num2); switch(op) { case &#39;+&#39;: printf("%.1lf + %.1lf = %.1lf", num1, num2, num1+num2); break; case &#39;-&#39;: printf("%.1lf - %.1lf = %.1lf", num1, num2, num1-num2); break; case &#39;*&#39;: printf("%.1lf * %.1lf = %.1lf", num1, num2, num1*num2); break; case &#39;/&#39;: if(num2 != 0) printf("%.1lf / %.1lf = %.1lf", num1, num2, num1/num2); else printf("除数不能为0"); break; default: printf("无效运算符"); } return 0; } ``` 2. **温度单位转换器**(摄氏←→华氏) 3. **学生成绩管理系统**(存储多科成绩,计算平均分) --- ### **C语言常见问题急救包** | 问题 | 解决方法 | 类比解释 | |-----------------------|--------------------------|----------------------| | 编译报错`undefined reference` | 检查是否漏写main函数 | 像房子没装门 | | 程序闪退 | 在return前加`getchar();` | 让程序等待用户按回车 | | `scanf`不读取输入 | 检查变量前是否漏写`&`符号 | 像填快递单不写地址 | | 死循环 | 确认循环条件有终止机会 | 像烧水不关火 | --- ### **学习资源推荐** 1. **书籍**: - 《C Primer Plus》(详细全面) - 《啊哈C语言》(漫画风格入门) 2. **网站**: - [菜鸟教程C语言](https://www.runoob.com/cprogramming/c-tutorial.html) - [Learn-C.org](https://www.learn-c.org/)(在线练习) 3. **视频**: - B站【C语言入门到精通】[浙江大学翁恺课程](https://www.bilibili.com/video/BV1dr4y1j7Mz) --- ### **关键学习建议** 1. **从模仿开始**:先抄写代码,再逐步修改 2. **理解内存模型**:画图辅助理解指针和数组 3. **坚持调试**:使用`printf`打印中间值(像给程序做X光检查) 现在就可以尝试这个指针练习: ```c #include <stdio.h> int main() { int a = 5; int *p = &a; printf("a的地址:%p\n", p); printf("通过指针改值前:%d\n", a); *p = 10; printf("改值后:%d\n", a); return 0; } ``` 你会看到通过指针可以直接修改变量的值——这就是C语言的魔法!✨
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值