掌桥专利:专业的专利平台
掌桥专利
首页

基于白盒密码算法的汽车信息安全完整性校验系统

文献发布时间:2024-04-18 19:58:26


基于白盒密码算法的汽车信息安全完整性校验系统

技术领域

本发明涉及汽车信息安全技术领域,特别是一种基于白盒密码算法的汽车信息安全完整性校验系统。

背景技术

由于汽车生态圈的不断扩大,整车功能集成度提高,T-Box(远程信息处理器)、IVI(In-Vehicle Infotainment车载信息娱乐系统)敏感数据保护、OTA(Over-The-Air)无线下载升级隐患等问题使汽车信息安全再次受到重视。同时汽车行业应用的嵌入式控制软件,对汽车功能安全、实时性有很高的要求,也需要考虑一定的开发成本。所以,在法规、国家标准强制驱动下,有实施信息安全相关的安全启动要求。安全启动相关软件主要是对固件的真实性、完整性进行验证,可以通过纯软件方案实现,也可以借助硬件安全模块(HSM(Hardware Security Module硬件安全模块))来实现。现有技术在安全启动过程中(汽车车载娱乐系统、车辆控制系统、OTA远程升级、驾驶辅助系统等软件),第一种方法是,使用CRC算法(Cyclic Redundancy Check循环冗余校核算法)来校验启动代码、引导加载程序和固件等重要组件的完整性,以确保它们在加载过程中没有被篡改或损坏,通过使用CRC算法,可以在启动过程的不同阶段计算并比较CRC值,以确保启动代码和引导加载程序的内容是原始、未经篡改的版本。第二种方法是基于HSM来实现,HSM是一种专用硬件设备,用于安全管理、存储和处理敏感数据,如加密密钥和数字证书等,具体的,HSM提供高度的物理和逻辑安全性,旨在保护敏感数据免受未授权访问和恶意攻击。另外,HSM具备密码运算加速器,可以缩短安全启动校验时间。

由于技术的限制,CRC算法和HSM硬件方法确保相关软件的安全启动还存在如下技术缺点。CRC算法中,(1)CRC算法主要用于数据完整性检测,而不是数据的安全性保护,安全启动旨在确保启动过程中的代码和数据没有被恶意篡改或替换,而CRC算法无法提供足够的安全性来防止高级攻击,比如恶意代码注入、签名伪造等。(2)CRC算法是公开的、广泛使用的校验方法,CRC算法的计算过程相对简单,可能容易受到预计算攻击的影响,攻击者可以在攻击之前预先计算不同数据的CRC值,然后将恶意数据与预先计算的值匹配,以绕过CRC的检测,从而存在易于被攻击的问题。(3)CRC校验值可以被重放,攻击者可以通过拦截和存储合法校验值,然后在未来的攻击中重新发送,以绕过校验,所以存在可能受到重放攻击的问题。HSM硬件中,(1)HSM通常是专用的硬件设备,其设计和制造成本较高,因此购买和维护HSM设备可能会造成较高的成本负担,特别是对于小型组织和项目来说成本高昂。(2)HSM安全启动方案需要依赖特定的HSM硬件,这可能对系统的选择和升级路径造成限制,存在依赖于硬件的问题。(3)HSM通常提供多种功能和配置选项,其设置和管理可能较为复杂,需要专门的技术人员来操作和维护HSM,这可能对资源有一定的要求,存在复杂性的问题。(4)HSM作为硬件设备,需要特别的物理保护措施,以防止物理攻击和设备丢失,所以存在物理安全的问题。

由于CRC算法过于简单,需要结合其他更强大的安全算法来使用。白盒密码技术是一项可以抵抗白盒攻击的密码技术,白盒密码技术从实现方式上可以分为两类:静态白盒和动态白盒。静态白盒是指密码算法结合特定的密钥经过白盒密码技术处理后形成特定的密码算法库,称为白盒库,白盒库具备特定的密码功能(加密、解密以及加解密),并能在白盒攻击环境下有效保护原有密钥的安全,静态白盒更新密钥,需要重新生成白盒库。动态白盒是指白盒库生成后就不需要再更新,原始密钥经过同样的白盒密码技术转化为白盒密钥。白盒密钥传入相匹配的白盒库可以进行正常的加密或解密功能。白盒密钥是安全的,攻击者不能通过分析白盒密钥得到任何关于原始密钥的信息。但是,现有技术中,动态白盒密码技术还未在汽车软件安全启动过程中得到应用,所以提供一种基于动态白盒密码技术,能使得汽车软件安全启动的系统显得尤为必要。

发明内容

为了克服现有汽车软件安全启动过程由于技术所限,存在如背景所述弊端,本发明提供了在相关流程作用下,利用纯软件的方式把解密的密钥隐藏在软件中,同时还能正常进行解密工作,即使攻击者完全掌握运行平台,也无法获取密码,极大地增加了安全性,在保证一定系统安全性的前提下,节省了硬件HSM的成本,具有一定经济价值,为汽车软件安全启动起到了有力技术支持的基于白盒密码算法的汽车信息安全完整性校验系统。

本发明解决起技术问题所采用的技术方案是:

基于白盒密码算法的汽车信息安全完整性校验系统,其特征在于,采用安装在汽车主控系统内的secure boot模块作为汽车信息安全完整性校验的工具,secure boot模块包括Control Logic子模块、SW Crypto子模块、Wb_Key子模块和Stored Encrypted APPCRC32 Value子模块;所述汽车信息安全完整性校验系统的应用流程包括安全启动、白盒密钥生成、白盒库生成三个步骤;所述安全启动步骤包括如下,S1:Control Logic子模块对程序比较控制运算;S2:SW Crypto子模块根据白盒密钥Wb_Key,对输入的CRC32 Value进行加密;S3:Wb_Key子模块,对输入的密钥进行白盒处理后生成Wb_Key白盒密钥;S4;StoredEncrypted APP CRC32 Value子模块,对Stored Encrypted APP CRC32 Value APP刷写结束时计算的APP CRC32 Value按照步骤S2的方法进行加密,然后存储在固定地址;所述白盒密钥生成应用中,生成白盒密钥的步骤为,SA1:在安全开发环境下随机生成一个AES密钥,对AES密钥进行密钥扩展操作,得到轮密钥,SA2:将轮密钥进行行变换操作,然后得到上的列向量;SA3:将步骤S2数据乘以随机生成的16×16的可逆矩阵进行线性变换;SA4:对步骤S3获得数据进行非线性置换编码,得到16Byte的白盒密钥;所述白盒库生成包括计算白盒库生成所涉及到的查找表和具体加密步骤;所述白盒库生成所涉及到的查找表包括计算输入编码表、计算行变换表、计算异或辅助表、计算加密钥表、计算列混淆表、计算输出编码表分步骤;所述具体加密步骤如下,SB1:将白盒密钥和明文一同输入;SB2:查找输入编码表和异或辅助表实现输入编码;SB3:查找行变换表和异或辅助表实现行变换操作;SB4:查找加密钥表实现加密钥;SB5:查找列混淆表实现列混淆操作和S盒变换;SB6:SB3至SB5分步骤重复十轮,其中,SB5分步骤在第十轮时不进行列混淆操作;SB6:十轮轮之后,查找加密钥表实现最后一轮加密钥操作;SB7:进行输出编码变换后得到真正的密文。

优选地,所述Control Logic子模块,对程序比较控制运算具体分步骤为:S01:控制器上电初始化程序开始运行;S02:Control Logic模块计算APP bin文件的CRC32 Value;S03:调用SW Crypto模块加密CRC32 Value;S04:计算SW Crypto模块反馈加密的CRC32Value;S05:Control Logic模块将当前计算的CRC32 Value与存储的值进行比较,如果相同,跳转到APP进行运行,否则程序中止运行,并记录安全日志。

优选地,所述步骤S03中加密CRC32 Value的具体流程为:当Control Logic模块计算好APP bin文件的CRC32 Value后,Wb_Key使用强密码学安全的随机数生成器生成AES128位的密钥,随后通过同样的白盒密码技术转化成白盒密钥,每次的计算都会生成新的白盒密钥,然后将计算好的CRC32 Value和随机生成的白盒密钥一同输入SW Crypto模块中的白盒库中进行加密。

优选地,所述SA2中,具体的,将密钥矩阵的每一列分成两个部分,按照每2个字节为一组进行分组,得到GF(2)

优选地,所述计算输入编码表中,对输入的明文乘以128×8的可逆矩阵IN,为减小表的大小,对矩阵进行分块,分成16个8×128的表来实现。

优选地,所述计算行变换表中,行变换表计算一共进行十轮,其中第一轮和第二到十轮的操作不同,第一轮将8bit数据分为两组输入,先对其解码,再乘矩阵IN

优选地,所述计算异或辅助表中,行变换表输出128bit列向量,因此异或辅助表要实现32个128bit列向量的加法操作,对应31次异或操作,为减小表的大小,将31次128bit的异或操作分成31×32次4bit的异或操作。

优选地,所述计算加密钥表中,将8bit白盒密钥和8bit明文输入,先进行解码,再进行异或操作得到8bit的数据,然后对8bit的数据先进行线性变换再进行非线性编码后得到8bit的输出数据。

优选地,所述计算列混淆表中,包括S盒变换和列混淆操作两个分步骤,列混淆表也进行十轮,列混淆操作只进行九轮,第十轮的列混淆表不引入列混淆操作,列混淆表第一至九轮先对16bit数据的输入进行解码,再乘16×16的矩阵去掉线性编码的部分,并进行S盒变换,然后乘以列混淆矩阵得到32bit数据,对该数据乘32×32的可逆矩阵进行线性编码,最后对32bit的输出每4bit为一组进行非线性输出编码,列混淆表第十轮不引入列混淆操作,故在S盒变换操作之后乘以16×16的可逆矩阵后输出编码即可。

优选地,所述计算输出编码表中:输出编码是对输出前的密文乘128×128的可逆矩阵OUT,为减小表的大小,对矩阵进行分块,分成16个8×128的表来实现。

本发明有益效果是:(1)本发明具有较高的灵活性,每次更换密钥时,不必更新白盒库,只需更新较小的白盒密钥即可。(2)具有较高的实用性,本发明使用的动态白盒密码,具有较高的运算效率和较低的存储空间需求,尤其适合计算和存储资源受限的物联网设备。(3)本发明使用白盒密码,采用纯软件的方式将密钥隐藏在软件中,即使攻击者完全掌握了密码实现和运行平台,也无法获取密钥,极大地增加了系统的安全性,在保证一定的系统安全性的前提下,节省了硬件HSM成本,也具有一定的经济价值。(4)可以防止简单CRC伪造攻击,攻击者也无法简单地计算出正确的CRC值,极大地提高了整体的安全性。本发明在保证一定系统安全性的前提下,节省了硬件HSM的成本,也具有一定经济价值,为汽车软件安全启动起到了有力技术支持。

附图说明

图1是本发明secure boot模块架构框图。

图2是本发明Control Logic控制模块逻辑执行过程图。

图3是本发明白盒密钥生成的流程图。

图4是本发明加密过程步骤流程图。

具体实施方式

图1所示,基于白盒密码算法的汽车信息安全完整性校验系统,采用安装在汽车主控系统内的secure boot(安全启动)模块作为汽车信息安全完整性校验的工具,secureboot模块包括Control Logic(控制逻辑)子模块、SW Crypto子模块(加密运算子模块,即白盒库)、Wb_Key(白盒密钥)子模块和Stored Encrypted APP(Application)CRC32 Value(存储的加密APP CRC32值,CRC32是一种循环冗余校验的算法,会生成一个32位的校验值,即为CRC32值,用于文件传输和存储中,以确保数据在传输或存储的过程中密钥发生损坏或被篡改)子模块作为汽车信息安全完整性校验的工具;所述汽车信息安全完整性校验系统的应用流程包括安全启动、白盒密钥生成、白盒库生成三个步骤。

图1所示,安全启动用于确保启动过程(汽车车载娱乐系统、车辆控制系统、OTA远程升级、驾驶辅助系统等)中软件的真实性和完整性,防止被篡改的软件运行,影响车辆的安全行驶。具体的,安全启动多采用串行模式,串行模式是指在校验完某个模块(比如存储模块等)无误后,才将此模块启动,优点在于安全性较高,不会存在被篡改软件运行的可能性。安全启动步骤一中,经Control Logic子模块,用于程序的比较控制运算(安全启动的程序),其逻辑执行过程如图2所示,具体包括如下分步骤,S11:控制器上电初始化程序开始运行(MCU微控制器上电,开始运行);S12:Control Logic模块计算APP bin文件的CRC32Value(CRC32是一种循环冗余校验的算法,会生成一个32位的校验值,即为CRC32值,用于文件传输和存储中,以确保数据在传输或存储的过程中密钥发生损坏或被篡改);S13:调用SWCrypto模块加密CRC32 Value,具体的加密CRC32 Value的具体流程为,当Control Logic子模块计算好APP bin(汽车车载娱乐系统、车辆控制系统、OTA远程升级、驾驶辅助系统等中的文件)文件的CRC32 Value(一个32位的校验值,用于检查数据的完整性)后,Wb_Key子模块使用强密码学安全的随机数生成器生成AES128位的密钥,随后通过同样的白盒密码技术转化成白盒密钥,白盒密钥的生成过程如图2所示,每次的计算都会生成新的白盒密钥;然后将计算好的CRC32 Value和随机生成的白盒密钥一同输入SW Crypto子模块中的白盒库中进行加密,加密过程如图4所示(对计算好的CRC32值进行加密,以便与存储的CRC32值进行比较);S14:SW Crypto模块反馈加密的CRC32 Value(将加密好的CRC32值输出);S15:Control Logic模块将当前计算的CRC32 Value与存储的值(存储的CRC32值)进行比较,如果相同,跳转到APP(汽车车载娱乐系统、车辆控制系统、OTA远程升级、驾驶辅助系统等中的APP)进行运行,否则程序中止运行,并记录安全日志(将失败的原因记录在安全日志中;上述所有步骤目的是为了校验系统的完整性)。安全启动步骤二中,经SW Crypto模块,根据白盒密钥Wb_Key,对输入的CRC32 Value进行加密(该步骤目的是将计算好的CRC32值进行加密,以便与存储的CRC32值进行比较)。安全启动步骤三中,通过Wb_Key子模块,对输入的密钥进行白盒处理后生成Wb_Key白盒密钥(根据密钥得出白盒密钥,方便后续的加密工作)。安全启动步骤四中,通过Stored Encrypted APP CRC32 Value子模块,对APP(汽车车载娱乐系统、车辆控制系统、OTA远程升级、驾驶辅助系统等中APP)刷写结束时计算的APP CRC32Value,按照步骤二的方法进行加密,然后存储在固定地址(存储的固定地址可以是硬件寄存器或者是特殊的存储单元,用于存储加密好的CRC32值,以便在安全启动是可以调用,将其与输入并加密的CRC32值进行比较;上述所有步骤目的是为了对汽车信息安全完整性的校验)。

图1所示,白盒密钥是将强密码学安全的随机数生成器生成的原始的AES128位密钥,通过同样的白盒密码技术转化的,白盒密钥传入相匹配的白盒库即可以进行正常的加密或解密功能,白盒密钥是安全的,攻击者无法通过分析白盒密钥得到关于原始密钥的任何信息。如图3所示,白盒密钥生成的步骤如下:S21:在安全开发环境下随机生成一个AES密钥,对AES密钥进行密钥扩展操作,得到轮密钥(密钥扩展将输入的128位密钥扩展成11个128位的子密钥,从中选取若干部分使其充当AES每一轮迭代的轮密钥)。S22:将轮密钥进行行变换操作,然后将密钥矩阵的每一列分成两个部分,按照每2个字节为一组进行分组,得到GF(2)

图1所示,白盒库是指密码算法结合特定的密钥、经过白盒密码技术处理后形成的特定的密码算法库,白盒库具有特定的密码功能(加密、解密以及加解密),并能在白盒攻击环境下有效保护原有密钥的安全。本发明使用的是动态白盒密码,其白盒库生成之后就不需要再更新,每次更新密钥时只需要更新白盒密钥。包括如下步骤。(一)计算白盒库生成所涉及到的查找表、具体包括如下分步骤,(1)计算输入编码表:具体的,对输入的明文乘以128×8的可逆矩阵IN,为减小表的大小,对矩阵进行分块,分成16个8×128的表来实现(为了对输入的明文进行混淆编码,增加被逆向破解的难度)。(2)计算行变换表:行变换操作可以看作是一个128bit的列向量乘128×128矩阵,一共进行十轮,其中第一轮和第二-十轮的操作略有不同,行变换表第一轮将8bit数据分为两组输入,先对其进行解码,再乘矩阵IN

图1所示,发明的关键创新点在于车用控制器信息安全完整性校验系统中引入动态白盒密码算法,它综合考虑了开发成本、安全强度、时间性能,通过软件实现了信息安全对固件完整性校验的需求。具体的,(1)白盒密码算法在嵌入式软件中的应用,属于业内创新应用,具有行业前瞻性,白盒密码算法是一种新的密码算法,它与传统密码算法的不同点是能够抵御白盒攻击,白盒密码使得密钥信息可以充分隐藏、防止窥探,因此可以确保车用控制器安全的应用原有密码系统,极大提升了安全性。(2)保护密钥安全也有相应的硬件解决方案,但是硬件方案会增加厂商的成本负担,甚至导致因为成本而忽略了安全问题,白盒密码作为软件解决方案,对于硬件方案具备较低的成本。(3)白盒密码技术作为软件定义安全进入了更底层的基础芯片安全领域,具体的,针对车联网层出不穷的新型攻击,白盒密码作为软件能更灵活的动态响应,可集成其他的安全性措施,更新升级也更为便利快捷。(4)支持多种测试类型,具体的,支持端口扫描、漏洞扫描、密码爆破、WiFi测试、蓝牙测试、注入恶意程序、隐私文件泄露、内核漏洞测试等多种测试方式。与现有技术相比,本发明具有以下几点优点:(1)具有较高的灵活性。每次更换密钥时,不必更新白盒库,只需更新较小的白盒密钥即可。(2)具有较高的实用性,本发明使用的动态白盒密码,具有较高的运算效率和较低的存储空间需求,尤其适合计算和存储资源受限的物联网设备。(3)具有较高的安全性。本发明使用白盒密码,采用纯软件的方式将密钥隐藏在软件中,即使攻击者完全掌握了密码实现和运行平台,也无法获取密钥,极大地增加了系统的安全性,在保证一定的系统安全性的前提下,节省了硬件HSM成本,也具有一定的经济价值。(4)由于CRC32 value过于简单,需要通过其他加密算法来提供更安全的数据保护和完整性校验,动态白盒密码是一种特殊的密码学技术,大大提高了加密算法的安全性,这样设计可以防止简单CRC伪造攻击,攻击者也无法简单地计算出正确的CRC值,极大地提高了整体的安全性。

以上显示和描述了本发明的基本原理和主要特征及本发明的优点,对于本领域技术人员而言,显然本发明限于上述示范性实施例的细节,说明书的这种叙述方式仅仅是为清楚起见,但并非实施方式仅包含一个独立的技术方案,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的。

本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。

相关技术
  • 一种基于白盒密码算法的安全税控方法及系统
  • 一种基于SM3_HMAC算法的QKD设备的固件完整性校验方法及系统
技术分类

06120116491748