信息安全基础:什么是Public Key

随着车联网的快速发展,给车主带来便利的同时,也带来了潜在隐患。便利的一面:无钥匙进入、远程启动、远程升级(ota,over-the-air )、远程诊断等等;隐患的一面:敏感个人信息泄露、车辆被远程黑客操控等等。大家可能觉得车辆被黑客操控等事件远不可及,但是,这种事件真实存在,大家可以通过关键字“yandex taxi 黑客攻击”检索一下相关新闻。2022年,黑客通过俄罗斯叫车软件yandex taxi,将所有可预约的车辆呼叫至莫斯科,导致当地交通挤塞。
“一旦泄露或者非法使用,可能导致车主、驾驶人、乘车人、车外人员等受到歧视或者人身、财产安全受到严重危害的个人信息,包括车辆行踪轨迹、音频、视频、图像和生物识别特征等信息。”
所以,提高车辆信息安全的问题,迫在眉睫。在立法方面,欧盟等西方国家已经出台iso 21434、wp29等相关法规,国内,《汽车整车信息安全技术要求》也已经处于送审状态。所以,作为汽车人,我们又怎能不嗅到信息安全的重要性呢?
“万丈高楼平地起,一砖一瓦皆根基”,本文,从信息安全的一个关键词public key聊起,讨论如下内容:
什么是public key
public key何时写入及存储
1、什么是public key
public key,俗称公钥,相对于私钥(private key),公钥可用来验证对应私钥的签名,即:验签。公钥可以发送给第三方使用,而私钥只能节点自身或者信任中心(trust center)保管,不能让第三方知道。
工程开发中,public key又分为development public key(开发公钥)和product public key(产品公钥)。
development public key:在软件开发阶段所使用的公钥称为开发公钥。
product public key:当应用软件开发完成,需要释放到产线(eol,end of line)刷写应用软件前,需要提前写入公钥,公钥仅写入一次,不可修改。有些需求中,将其视为验证应用软件的可信任根或者可信锚(trust anchor)。
development public key和product public key本质上没有太大区别,均可以传播,只是一个在软件开发阶段使用,一个在软件释放到产线时使用。
既然public key的主要作用是验签,那就不得不提签名算法(signing method),工程上,常用sha256、rsa2048组合进行签名操作。
(一)sha256、rsa2048作用
rsa-2048:非对称成加密算法,发送方和接收方均各有一组公钥和私钥key。因存在幂运算,非对称加密算法计算速度远低于aes-256等算法(对称算法,加密速度快,适用于大量数据加密)。非对称算法适用于小量数据加密,eg:public key加密。
sha-256:安全hash(哈希)算法,主要用于数据完整性(integrity)验证。功能与crc类似,相比于crc的完整性校验,sha-256的完整性验证更可靠。
所以,rsa-2048用于小量数据(eg:签名信息、公钥等)非对称加密,sha-256用于数据完整性校验。关于这两个算法,在前文《信息安全(下):软件认证(authentication)》已经聊过。
2、public key何时写入及存储
public key可以通过$2e(write data by identifier service)写入ecu。可是,public key何时写入到ecu中呢?由于public key的主要作用是验证(verify)软件块(software part),一般来说,public key需要在刷写app、cal等程序之前写入,以便于验证软件块有效性。既然public key是验证其它信息的基础,那么就需要public key存储在一块重要区域,eg:hsm nvm。同时,确保此区域不能被修改,工程上,常常要求public key(这里指产品公钥)刷写到otp(one-time-programmable)区域,即:只能进行一次编程,以防公钥写入后的非法篡改。这就意味着:控制器在产线刷写一次公钥(product public key),此公钥伴随此产品终身,以后的app等程序升级中,依然使用它,示意如下:
vbt(verification block table),用于存储其它软件块的hash value。所以,当程序进行验证的时候,首先验证vbt的hash value(也称为根哈希,root hash)是否有效。如果root hash有效,则认为vbt中存储的其它模块hash value可信,之后通过算法(eg:sha-256)计算出对应软件块的哈希值进行完整性校验。关于vbt格式以及可以参考前文《信息安全(上):软件认证(authentication)》。 补充信息:
vbt的哈希值(root hash value)通过私钥进行非对称加密,生成数字签名(digital signatures)发送给ecu,ecu使用公钥对数字签名解密,算出root hash value #1,同时,ecu通过vbt的起始地址和长度计算root hash value #2,如果root hash value #1 == root hash value #2,则root hash验证通过。
数字签名:验证信息来源和完整性的技术,使用私钥(private key)对目标数据进行加密,生成数字签名,再用公钥进行验证。
3、拓展思考


共享项目的关闭潮,从单车行业开始
低成本用电设备完整方案含12V buck转换器、PD供电电路
三星被曝部分应用程序必须在更新操作系统后单独更新
Android APP合规检查工具介绍
Intel:Intel PC处理器降价的新闻为不实消息
信息安全基础:什么是Public Key
中国将是全球最大的机器人市场预计2022年占全球总量的38%以上
HTCU12+体验 对不起你是个好人
盛夏将至,我们该如何为光模块进行散热
超声波电子捕鱼器电路图
韩媒:宁德时代再次获得现代汽车电动汽车电池订单
京东家电全渠道称霸 预计整体销售数量将突破1000万台
数据库应用系统的作用
寄存器操作方法_对寄存器操作的通用方法总结
易华录2021第三届数据湖大会圆满举行
风光互补供电系统维护方式
TCL推出首款搭载QD Vision Color IQ 量子点技术65寸电视机
关于优必选阿尔法智能人形机器人的性能分析和简介
广电技术在视频监控系统中的转换及应用
中国移动在5G方面的超前布局将迎来新的5G红利