无人驾驶汽车的隐私保护方法与流程

文档序号:14914371发布日期:2018-07-11 00:18阅读:613来源:国知局

本发明属于信息安全技术领域,特别涉及一种隐私保护方法,可用于无人驾驶汽车。



背景技术:

随着物联网技术的发展,现代社会正逐步由“互联网+”时代步入“智能+”的时代,其应用遍及无人驾驶汽车、智慧家居、智能交通、智能电网等多个领域。其中,无人驾驶汽车的研究势头迅猛。预计到2021年,无人驾驶汽车将进入市场,开启一个崭新的阶段。虽然无人驾驶可以节省人力,但公众也存在安全方面的忧虑。比如,在人工驾驶的汽车和无人驾驶汽车共存的时候,二者是否可以安全地进行交互;无人驾驶汽车收集用户数据以进行预测和分析,这些用户的个人信息是否会被泄露;车车通信、车路通信时是否有足够安全的认证机制能够保障数据的真实性和可靠性等。

在传统的车联网通信方案中,都存在中心化的服务器。当汽车用户请求服务时,需要在第三方平台上填写个人信息以注册账号,从而获得资源访问权限、数据操作权限等。首先,当用户群数量很大时,中心化服务器会有单点失败的风险,一旦平台崩溃,将使整个网络处于瘫痪状态;其次,第三方平台会存储用户的个人隐私信息,这些信息可能会被倒卖、转发导致用户隐私泄露,用户无法控制个人信息的公开程度;最后,平台提供的服务或者内容的真实性无法保证,存在欺骗用户的可能。

无人驾驶汽车若采用上述传统的车联网通信方案,单点失败、隐私泄露、平台被恶意攻击等问题是不可避免的。而且进行汽车驱动程序更新时,一旦安装的是恶意更新,则会造成严重甚至不可挽回的后果。因此无人驾驶汽车的驱动程序进行更新时需要加强认证性、透明性,防止恶意敌手对系统的攻击,实现驱动程序更新包的公开可验证,还要尽可能地保护用户的隐私。

成都信息工程大学在其申请的专利“一种保证汽车ECU免受攻击和自动更新的方法”(公开号:106897627A,申请号:201710093791.0,申请日:2017年02月21日)中公开了一种保证汽车电子控制单元ECU免受攻击和自动更新的方法。在该方法中,车主先通过插入用户权限控制的安全载体Ukey与内容服务提供商TSP建立安全通信信道,然后由车主和内容服务提供商TSP进行双向身份验证,互相确认对方的真实身份,通过验证后在线下载固件,自动更新;更新完成后将哈希值保存在汽车的安全组件上。该方法主要通过用户权限控制的安全载体Ukey控制汽车用户的权限,保障汽车电子控制单元ECU固件安全更新;通过验证固件哈希值,检测是否被篡改。该方法存在的不足之处有两方面:一是车主身份信息没有被隐藏,导致隐私泄露;二是固件更新由内容服务提供商TSP提供,当访问用户过多时,容易造成单点故障。



技术实现要素:

本发明的目的在于针对上述现有的不足,提出一种无人驾驶汽车的隐私保护方法,以保护无人驾驶汽车所属用户和汽车制造商的隐私,避免单点故障,并通过公开验证汽车驱动更新包的真实性,提高系统的安全性和可扩展性。

本发明的技术方案是,对系统进行初始化,用系统中各节点共同组成P2P网络并各自生成密钥;由软件服务提供商将驱动程序更新包上传至云存储器,云存储器将存储地址返回给软件服务提供商,之后软件服务提供商生成一笔交易,通过交易中的一次性公钥通知汽车制造商对驱动程序更新包进行验证,以隐藏汽车制造商的隐私信息;汽车制造商验证成功后进行签名,并将该交易和签名发送给矿工节点,由矿工节点生成新的区块,与此同时,通过节点之间相互转发来通知无人驾驶汽车进行驱动程序更新。其实现步骤如下:

(1)系统初始化:

利用椭圆曲线密码算法中的初始化算法,生成系统公开参数

其中,q是一个大素数,是有限域,Eq(a,b)是一条椭圆曲线,是该椭圆曲线的系数,G是该椭圆曲线上的一个基点,l是基点G的素数阶,是乘法群,g是乘法群的生成元,H(·)是安全Hash算法SHA256,Hs(·)是一个定义域为{0,1}*、值域为的密码学哈希函数;

(2)密钥生成:

(2a)软件服务提供商、云存储器、汽车制造商和无人驾驶汽车分别调用椭圆曲线密码算法的密钥生成算法,生成各自的公钥和私钥:

软件服务提供商的私钥为公钥为pkSW=skSW·G;

云存储器的私钥为公钥为pkCS=skCS·G;

汽车制造商的第一私钥为第一公钥为pkOEA=skOEA·G;

汽车制造商的第二私钥为第二公钥为pkOEB=skOEB·G;

汽车的私钥为公钥为pkMEM=skMEM·G;

(2b)无人驾驶汽车出厂时,汽车制造商将第二私钥skOEB嵌入到无人驾驶汽车车载单元中;

(3)集群生成:

(3a)软件服务提供商、汽车制造商、无人驾驶汽车和云存储器这些节点共同构成一个半分布式P2P网络系统,该网络系统根据通信网络的变化将网络中的节点动态地划分为若干个簇,在每个簇中,簇内成员共同选举出一个性能优越、可信任度高的节点作为簇首,将该簇首作为矿工节点,用于生成新的区块和维护、更新簇内成员的信息;

(3b)簇首获得簇内成员的公钥信息以及簇内汽车制造商的第二私钥信息;

(3c)簇首建立一个列表L,用于记录(3b)中获得的所有信息;

(4)驱动更新包上传:

(4a)软件服务提供商计算驱动更新包W的哈希值:h=H(W),其中,H(·)是安全Hash 算法SHA256,h是生成的哈希值;

(4b)软件服务提供商利用私钥skSW对哈希值h进行签名,得到签名值:Sig1=Sign(skSW,h),其中,Sign表示椭圆曲线签名算法;

(4c)软件服务提供商将{W||h||Sig1}信息上传至云存储器,其中,||表示级联符号;

(4d)云存储器对{W||h||Sig1}信息进行验证,若验证通过,则为驱动更新包分配存储空间,并对分配存储空间地址addr进行签名,得到签名值:Sig2=Sign(skCS,addr);

(4e)云存储器将{addr||Sig2}信息发送给软件服务提供商;

(4f)软件服务提供商验证云存储器对分配地址的签名,得到验证输出值: v1=Verify(pkCS,Sig2),其中,Verify表示椭圆曲线签名算法的验证操作;

(4g)软件服务提供商判断验证输出值v1是否为1,若是,则执行步骤(5),否则,重新执行步骤(4a);

(5)软件服务提供商生成交易并将交易信息发送给所属簇的簇首;

(6)簇首和汽车制造商对交易信息进行验证;

(7)簇首广播验证成功的交易并生成新的区块;

(8)无人驾驶汽车查看新的区块信息,从云存储器中获取驱动更新包并进行更新。

本发明与现有技术相比,具有以下优点:

第一,本发明由于采用一次性公钥隐藏汽车制造商的真实公钥,保护了汽车制造商的隐私,提高了系统的安全性。

第二,本发明由于采用区块链存放交易记录,使得网络中的节点均可验证汽车驱动更新包的真实性,防止了恶意节点对区块信息的篡改。

附图说明

图1为本发明的实现总流程图;

图2是本发明中驱动更新包上传的子流程图;

图3是本发明中交易生成的子流程图;

图4是本发明中交易验证的子流程图;

图5是本发明中交易广播与区块生成的子流程图。

具体实施方式

下面结合附图对本发明做进一步的描述。

本发明适用的系统是:由软件服务提供商、云存储器、汽车制造商和无人驾驶汽车这些节点共同组成的一个P2P网络系统,当软件服务提供商将驱动更新包上传到区块链后,所有的节点都可以验证驱动更新包的真实性和完整性,无人驾驶汽车可以通过请求云存储器来获得驱动更新包,并进行驱动更新;通过隐藏汽车制造商的真实公钥,保护汽车制造商在交易中的真实身份信息。

参照图1,本发明的具体实现如下。

步骤1,系统初始化。

利用椭圆曲线密码算法中的初始化算法,生成系统公开参数

其中,q是一个大素数,是有限域,Eq(a,b)是一条椭圆曲线,是该椭圆曲线的系数,G是该椭圆曲线上的一个基点,l是基点G的素数阶,是乘法群,g是乘法群的生成元,H(·)是安全Hash算法SHA256,Hs(·)是一个定义域为{0,1}*、值域为的密码学哈希函数。

步骤2,密钥生成。

(2a)软件服务提供商、云存储器、汽车制造商和无人驾驶汽车分别调用椭圆曲线密码算法中的密钥生成算法,生成各自的公钥和私钥,其中:

软件服务提供商生成的私钥为公钥为pkSW=skSW·G;

云存储器生成的私钥为公钥为pkCS=skCS·G;

汽车制造商生成的第一私钥为第一公钥为pkOEA=skOEA·G;

汽车制造商生成的第二私钥为第二公钥为pkOEB=skOEB·G;

汽车生成的私钥为公钥为pkMEM=skMEM·G;

(2b)无人驾驶汽车出厂时,汽车制造商将第二私钥skOEB嵌入到无人驾驶汽车车载单元中。

步骤3,集群生成。

(3a)软件服务提供商、汽车制造商、无人驾驶汽车和云存储器这些节点共同构成一个半分布式P2P网络系统,该网络系统根据通信网络的变化将网络中的节点动态地划分为若干个簇,在每个簇中,簇内成员共同选举出一个性能优越、可信任度高的节点作为簇首,将该簇首作为矿工节点,用于生成新的区块和维护、更新簇内成员的信息;

(3b)簇首按如下步骤获得簇内成员的公钥信息以及簇内汽车制造商的第二私钥信息:

(3b1)簇首向簇内成员公布个人公钥pkOB;

(3b2)簇内成员将公钥信息发送给簇首;

(3b3)汽车制造商与簇首进行密钥协商,按如下步骤共同生成会话密钥ssym:

(3b31)汽车制造商选取随机秘密值u1∈[0,l-2],计算得到第一协商值:利用自己的第一私钥值skOEA对β进行签名,得到签名值:Sig6=Sign(skOEA,β),将β||Sig6发送给簇首;

(3b32)簇首选取随机秘密值u2∈[0,l-2],计算得到第二协商值:利用自己的私钥值skOB对γ进行签名,得到签名值:Sig7=Sign(skOB,γ),将γ||Sig7发送给汽车制造商;

(3b33)簇首验证签名值Sig6,汽车制造商验证签名值Sig7,若验证通过,则簇首和汽车制造商共同计算出会话密钥执行(3b4),否则,重新执行步骤(3b31);

(3b4)汽车制造商利用会话密钥ssym,加密自己的第二私钥skOEB,将获得的密文 CT=Enc(ssym,skOEB)发送给簇首,其中,Enc表示对称加密算法AES的加密算法;

(3b5)簇首利用会话密钥ssym,解密密文CT,获得汽车制造商的第二私钥 skOEB=Dec(ssym,CT),其中,Dec表示对称加密算法AES的解密算法;

(3c)簇首建立一个列表L,用于记录(3b)中获得的所有信息。

步骤4,驱动更新包上传。

参照图2,本步骤的具体实现如下:

(4a)软件服务提供商计算驱动更新包W的哈希值:h=H(W),其中,H(·)是安全Hash 算法SHA256,h是生成的哈希值;

(4b)软件服务提供商利用自己的私钥skSW对哈希值h进行签名,得到签名值: Sig1=Sign(skSW,h),其中,Sign表示椭圆曲线签名算法;

(4c)软件服务提供商将{W||h||Sig1}信息上传至云存储器,其中,||表示级联符号;

(4d)云存储器按如下步骤对{W||h||Sig1}信息进行验证:

(4d1)判断哈希值h=H(W)是否成立:若成立,则哈希值验证通过,执行步骤(4d2),否则,停止操作;

(4d2)计算签名验证输出值:v5=Verify(pkSW,Sig1),其中,Verify表示椭圆曲线签名算法的验证操作,pkSW是软件服务提供商的公钥;

(4d3)判断v5=1是否成立,若成立,则验证通过,云存储器为驱动更新包分配存储空间,并对分配存储空间地址addr进行签名,得到签名值:Sig2=Sign(skCS,addr),否则,验证失败;

(4e)云存储器将{addr||Sig2}信息发送给软件服务提供商;

(4f)软件服务提供商验证云存储器对分配地址的签名,得到验证输出值: v1=Verify(pkCS,Sig2);

(4g)软件服务提供商判断验证输出值v1是否为1,若是,则执行步骤(5),否则,重新执行步骤(4a)。

步骤5,交易生成。

本步骤是由软件服务提供商生成交易并将交易信息发送给所属簇的簇首。

参照图3,其实现如下:

(5a)软件服务提供商计算交易的第一部分值:part1={pkSW||addr||pkCS||h||Sig1},并对这部分值进行签名,得到签名值:Sig3=Sign(skSW,part1);

(5b)软件服务提供商计算得到汽车制造商的一次性公钥:pkOT=Hs(r·pkOEB)·G+pkOEA,其中,r∈[1,l-1]是软件服务提供商选取的一个随机数,pkOEA和pkOEB分别是汽车制造商的第一公钥和第二公钥;

(5c)软件服务提供商计算第一辅助值R=r·G;

(5d)软件服务提供商计算交易的第二部分值:part2={pkOT||R},并对这部分值进行签名,得到签名值:Sig4=Sign(skSW,part2);

(5e)软件服务提供商将交易信息transcur={part1||Sig3||part2||Sig4}发送给所属簇的簇首。

步骤6,交易验证。

本步骤是由簇首和汽车制造商对交易信息进行验证。

参照图4,其实现如下:

(6a)簇首收到交易信息transcur后,验证软件服务提供商对交易的第二部分值的签名,得到验证输出值:v2=Verify(pkSW,Sig4);

(6b)判断验证输出值v2是否为1,若是,则执行步骤(6c),否则,拒绝服务并终止记录;

(6c)簇首根据列表L中的信息,分别为簇中的各汽车制造商计算一次性公钥值: pkOT′=Hs(skOEB·R)·G+pkOEA,其中,skOEB是汽车制造商的第二私钥,pkOEA是汽车制造商的第一公钥;

(6d)簇首判断是否存在一个汽车制造商的一次性公钥值满足等式pkOT′=pkOT,若存在,则执行步骤(6e),否则,将交易信息transcur广播给其他簇首,返回步骤(6a);

(6e)簇首将交易信息transcur发送给这一汽车制造商,并通知这一汽车制造商对交易的第二部分值part2进行核实:

首先,这一汽车制造商根据交易信息transcur中软件服务提供商对第一部分值的签名值 Sig3,计算自己的第一验证输出值v6=Verify(pkSW,Sig3),根据交易信息transcur中软件服务提供商对第二部分值的签名值Sig4,计算自己的第二验证输出值v7=Verify(pkSW,Sig4);

接着,这一汽车制造商判断自己的第一验证输出值v6和第二验证输出值v7是否均为1,若是,则计算一次性公钥值:pkOT″=Hs(skOEB·R)·G+pkOEA,否则,验证失败,拒绝服务;

然后,判断等式pkOT″=pkOT是否成立,若成立,则向云存储器提交{addr||h}信息,云存储器将addr地址中存储的驱动更新包W发送给这一汽车制造商,否则,拒绝服务;

最后,这一汽车制造商对驱动更新包的版本进行检测,检测通过后,计算得到一次性私钥值:skOT=Hs(skOEB·R)+skOEA,利用这一私钥对交易的第二部分值part2进行签名,得到汽车制造商对第二部分值part2的签名值:Sig5=Sign(skOT,part2),并将交易信息transcur以及该签名值Sig5发送给所属簇的簇首。

步骤7,交易广播与区块生成。

参照图5,本步骤的具体实现如下:

(7a)簇首根据汽车制造商对第二部分值的签名值Sig5,计算自己的第一验证输出值:v3=Verify(pkOT,Sig5),其中,pkOT表示汽车制造商的一次性公钥;

(7b)簇首判断自己的第一验证输出值v3是否为1,若是,则将当前交易Transcur={transcur||Sig5}放入交易池中并继续验证其他交易,否则,拒绝服务;

(7c)簇首将当前交易Transcur广播给其他簇首;

(7d)每个簇首计算自己的不同验证输出值:

根据软件服务提供商对第一部分值的签名值Sig3,计算自己的第二验证输出值 v8=Verify(pkSW,Sig3);

根据软件服务提供商对第二部分值的签名值Sig4,计算自己的第三验证输出值 v9=Verify(pkSW,Sig4);

根据汽车制造商对第二部分值的签名值Sig5,计算自己的第四验证输出值 v10=Verify(pkOT,Sig5);

(7e)簇首判断自己的第二验证输出值v8、第三验证输出值v9和第四验证输出值v10是否均为1,若是,则验证通过,并向簇中成员广播此交易,否则,验证失败,拒绝服务;

(7f)当交易池中的交易个数达到区块规定值t时,簇首生成新的区块 Blocki={i,H(Blocki-1),Msgi,Trans1,Trans2,...,Transt},并将这一区块添加到区块链中,其中, t是一个正整数,Blocki表示第i个区块,i表示区块的标号,H(Blocki-1)表示前一个区块的哈希值,Msgi表示第i个区块中包含的推广信息,Trans1,Trans2,...,Transt表示区块中包含的t 个交易;

(7g)其他簇的簇首验证新的区块中的交易是否真实,若真实,则将这一区块添加到自身维护的区块链中,否则,拒绝添加。

步骤8,驱动下载与更新。

无人驾驶汽车查看区块链中的新的区块,根据新的区块中的信息,从云存储器中获取驱动更新包并更新,其实现如下:

(8a)无人驾驶汽车计算一次性公钥值pkOT″′=Hs(skOEB·R)·G+pkOEA,判断等式 pkOT=pkOT″′是否成立,若成立,则执行步骤(8b),否则,停止操作;

(8b)无人驾驶汽车根据汽车制造商对第二部分值的签名Sig5,计算自己的第一验证输出值:v4=Verify(pkOT,Sig5),并判断v4是否为1,若是,则执行步骤(8c),否则,停止操作;

(8c)无人驾驶汽车向云存储器提交{addr||h}信息,请求下载驱动更新包;

(8d)云存储器将addr地址中存储的驱动更新包W发送给无人驾驶汽车;

(8e)无人驾驶汽车计算驱动更新包W的哈希值,并判断该哈希值与软件服务提供商计算得到的哈希值h是否相同:

若不相同,则停止操作;

若相同,则更新驱动程序,该更新过程隐藏了汽车制造商的真实公钥,为汽车制造商提供了隐私保护。

以上描述仅是本发明的一个具体实例,并未构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解了本发明内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修正和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1