一位开发人员最近表示,在发现汽车制造商使用的密钥不仅公开而且从编程示例。汽车信息娱乐硬件运行它编写的软件。明尼苏达州明尼阿波利斯市的软件工程师DanielFeldman想要更改其2021现代IoniqSEL上的车载信息娱乐(IVI)系统。为此,他必须弄清楚如何连接到系统并绕过安全线路。Feldman想出了如何为IVI的D-Audio2系统(由现代汽车公司的移动平台子公司HyundaiMobis制造)定制固件更新并让IVI接受定制更新,然后找到了一个令人惊讶的唯一方法找到它:谷歌它。IVI接受受密码保护的ZIP存档形式的固件更新。费尔德曼从现代网站下载了更新ZIP,绕过存档的简单密码保护机制并访问其内容,其中包括IVI各个部分的加密固件映像。然后他的目标变成了创建自己的固件映像,以汽车可以接受、安装和运行的方式在ZIP中加密,允许他通过他提供的代码控制硬件。幸运的是,Feldman在Mobis的网站上找到了一个Linux安装脚本,它创建了一个合适的ZIP文件来执行系统更新。该脚本包含系统更新存档的基本ZIP密码,以及AES对称密码块链(CBC)加密密钥(单个密钥,而不是RSA非对称公钥/私钥对)和IV(初始化向量)值.此信息也可用于解密图像。这意味着他可以使用AES密钥解密固件映像,修改它们,然后使用脚本使用AES密钥重新加密映像,并将其全部打包到受密码保护的ZIP中,以供现代IVI更新系统获取.但这并没有那么容易:所提供数据的至少某些部分需要使用RSA私钥进行加密签名,而Feldman没有RSA私钥。更新程序将使用与私钥相对应的RSA公钥来检查数据是否使用正确的秘密私钥签名。因此,他需要找到RSA私钥才能执行下一步。Feldman在5月份的博客文章中解释说:“脚本暗示使用了RSA签名,但不幸的是,用于签名的密钥不在源代码中。”他补充道:“后来发现脚本中的[AES]加密密钥实际上与NIST文档SP800-38A中的相同(https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38a.pdf)列出的第一个AES128位CBC示例密钥。顺便说一句,加密社区的共识似乎是CBC很难正确使用,建议使用其他方法。微软去年警告说,带有填充的AESCBC可能不安全。微软声称:“微软认为,在Usingverifiablepaddingwithoutfirstensureciphertextintegrity中,解密使用对称加密的CipherBlockChaining(CBC)模式加密的数据不再安全,除非在非常特殊的情况下。这一判断是基于目前已知的密码学研究。“但现代的错误并不是它错误地实施了AESCBC,而是它使用了另一个发布在网上的密钥作为秘密。使用这个对称密钥,Feldman能够从提取的内容中更新ZIP中的一个加密固件映像。在提取的文件中,他找到了处理IVI更新的软件,一个名为updateAgent的二进制文件。换句话说,费尔德曼现在正在查看他需要操纵的代码,他的车载IVI中的更新工具,这给了他一个很好的操纵代码的机会。费尔德曼解释说:“由于我已经有了zip密码和加密密钥,所以我决定寻找签名密钥。幸运的是,他们不仅留下了公钥,还留下了私钥。可以说,费尔德曼是幸运的。他在固件镜像中找到了更新程序使用的RSA公钥,并在网上搜索了该密钥的一部分。搜索到一个常见的公钥,出现在《C使用OpenSSL进行RSA加密和解密示例》(http://hayageek.com/rsa-encryption-decryption-openssl-c/).本教程和其他实现OpenSSL的项目在源代码密钥中包含了这个公钥和对应的RSA私钥。这意味着现代从教程中取出公私密钥对并将代码中有公钥,因此Feldman能够从互联网上找到私钥。因此,他能够签署Hyundai的文件,并让更新程序接受这些文件。此时,Feldman有机会为Hyundai编写自定义固件他汽车的IVI,他在随后的两个章节中对此进行了描述在线输入文章。他还为其他现代汽车车主概述了他的方法(https://programmingwithstyle.com/posts/howihackedmycarguidescreatingcustomfirmware/)。现代汽车没有回应置评请求。参考及出处:https://www.theregister.com/2022/08/17/software_developer_cracks_hyundai_encryption/如有转载请注明出处。
