验证装置、验证系统、验证方法和验证程序与流程

文档序号:29633435发布日期:2022-04-13 16:32阅读:126来源:国知局
验证装置、验证系统、验证方法和验证程序与流程

1.本发明涉及一种验证装置、验证系统、验证方法以及验证程序。


背景技术:

2.近年来,由于物联网(iot)的普及,检测嵌入式设备中的恶意软件和软件篡改并采取安全措施变得很重要。另一方面,在嵌入式系统中,从成本等观点来看,难以内置具有防篡改功能的硬件,并且与诸如服务器的通用pc相比,难以扩展功能。因此,期望白名单型检测技术在不使用特殊硬件的情况下从外部验证安装在设备中的软件是否偏离了预定的正确状态(非专利文献1)。
3.引用列表
4.非专利文献
5.非专利文献1:a.seshadri,a.perrig,l.van doorn,p.khosla,"swatt:software-based attestation for embedded devices",usa,ieee symposium on security and privacy,2004.proceedings,2004,pp.272-282
6.非专利文献2:ling ren,srinivas devadas,"proof of space from stacked expanders",theory of cryptography conference,德国,2016,p.262-285
7.非专利文献3:stefan dziembowski,sebastian faust,vladimir kolmogorov,krzysztof pietrzak,"proofs of space",annual cryptology conference,德国,2015,pp.585-605


技术实现要素:

8.技术问题
9.然而,在传统技术中,可能难以从设备外部验证存在或不存在嵌入式设备的软件的篡改。例如,根据非专利文献1所描述的技术,虽然可以证明设备的存储器的软件区域没有被篡改,但难以证明没有未授权的软件被添加到空闲区域中。
10.鉴于上述情况做出了本发明,并且本发明的目的是从设备外部验证存在或不存在嵌入式设备的软件的篡改。
11.解决问题的手段
12.为了解决上述问题并达到目的,根据本发明的验证装置的特征在于,所述验证装置包括:存储单元,所述存储单元存储对象设备的存储器的空闲区域的大小以及保存在所述存储器中的软件;生成单元,所述生成单元根据所述对象设备的所述存储器的所述空闲区域的大小,生成包含多个节点的图,并且将所述图发送给所述对象设备;计算单元,所述计算单元计算与保存在所述对象设备的所述存储器中的每个软件块相对应的哈希值;以及验证单元,所述验证单元使用所计算出的与该块相对应的哈希值、从所述对象设备返回的使用图计算出的对指定图的节点的质询的响应、以及作为对指定该块的质询的响应的从所述对象设备返回的与该块相对应的哈希值,来验证存在或不存在所述对象设备的所述存储
器的篡改。
13.发明效果
14.根据本发明,可以容易地从设备外部验证存在或不存在嵌入式设备的软件的篡改。
附图说明
15.图1是例示根据本实施方式的验证系统的示意构造的示意图。
16.图2是用于说明生成单元的处理的图。
17.图3是用于说明验证处理的概要的图。
18.图4是示出验证处理过程的序列图。
19.图5是示出执行验证程序的计算机的示例的图。
具体实施方式
20.在下文中,将参照附图来详细描述本发明的实施方式。注意,本发明不限于实施方式。此外,在附图的描述中,相同的部分由相同的附图标记表示。
21.[验证系统的构造]
[0022]
图1是例示根据本实施方式的验证系统的示意构造的示意图。如图1所示,验证系统1包括验证装置10和对象设备20。对象设备20是作为稍后描述的验证处理的对象的诸如iot设备的软件嵌入式设备。这里,在本实施方式中,将程序和数据统称为软件。此外,在对象设备20的存储器21中,保存软件的区域被称为软件区域。
[0023]
验证装置10通过稍后描述的验证处理来验证对象设备20的软件区域是否未被篡改以及未授权软件是否未被添加到空闲区域。因此,验证装置10可以从对象设备20的外部验证对象设备20的程序和数据是否未被篡改或者是否未添加未授权程序和数据,即,验证存在或不存在对象设备20的软件的篡改。
[0024]
[验证装置的构造]
[0025]
图1是例示根据本实施方式的验证装置的示意构造的示意图。如图1所示,本实施方式的验证装置10由诸如个人计算机的通用计算机实现,并且包括存储单元11、控制单元12和未示出的通信控制单元。
[0026]
存储单元11由诸如ram(随机存取存储器)或闪存的半导体存储元件或者诸如硬盘或光盘的存储装置来实现。在存储单元11中,用于操作验证装置10的处理程序、在处理程序的执行期间使用的数据等被预先存储,或者在每次执行处理时被临时存储。在本实施方式中,存储单元11存储对象设备20的存储器21的空闲区域的大小以及保存在存储器21中的软件。
[0027]
该软件包括验证程序,该验证程序是用于操作作为稍后描述的验证处理的对象的对象设备20的程序。此外,软件区域通过地址等被划分为任意块。假设数据d(x)被保存在块x中。
[0028]
通信控制单元由nic(网络接口卡)等实现,并且通过诸如lan(局域网)、互联网等的通信线路控制诸如对象设备20的外部设备与控制单元12之间的通信。
[0029]
控制单元12通过使用cpu(中央处理单元)等来实现,并且执行存储在存储器中的
处理程序。因此,控制单元12用作生成单元12a、计算单元12b和验证单元12c,如图1所示。注意,这些功能单元中的每一个或部分可以在不同的硬件中实现。此外,控制单元12可以包括其他功能单元。
[0030]
生成单元根据对象设备20的存储器21的空闲区域的大小生成包含多个节点的图,并且将所述图发送给对象设备20。
[0031]
首先,将描述对有向无环图g=(v,e)进行标记的图。这里,v是包含在g中的节点的集合,并且e是边的集合。v中包含的节点数被标记为|v|=n,并且每个节点用1到n的数值标记。另外,数值ω(v)∈{1,0}
λ
与每个节点v∈v相关联。λ是哈希值的大小。
[0032]
这里,对于子集v'={v1,...,vn},定义了ω(v')={(ω(v1),...,ω(vn)}。此外,v的父节点的集合被定义为π(v)={v'|(v',v)∈e}。此外,定义了与每个节点相对应的数值ω(v)=h(v,ω(v,π(v)))。这里,h是哈希函数h:{1,0}*

{1,0}
λ

[0033]
在本实施方式中,非专利文献2中提出的局部堆叠扩展器lg
(n,k,α,β)
被用作有向无环图。局部堆叠扩展器是节点数n(k+1)的图,其包括具有n个节点的有向二分图的k+1个局部二分扩展器lbg
(n,α,β)

[0034]
众所周知,局部堆叠扩展器可以用于构建需要一定量或更多存储容量的图,以便在所有节点v处计算ω(v)。
[0035]
接下来,将参照图2描述使用在非专利文献1中提出的哈希树的验证方法。图2是用于说明生成单元12a的处理的图。如图2所示,生成具有n个叶的哈希树会导致具有(logn+1)个级的哈希树。假设没有输出边的末端节点是第0级,则图2的左端是第logn级。与每个节点相对应的哈希值是与父节点的哈希值级联的哈希值。
[0036]
这里,函数open(c)是如下的函数。也就是说,假设可达节点v的节点集合为π(v),并且具有来自节点v的输入边的节点集合为σ(v)=v'(v,v')∈e。open(c)是在选择第logn级的节点c时,满足以下等式(1)的函数,其中i=1,...。
[0037]
[数学函数1]
[0038]
对于open(c):i=1,...,logn,该函数返回满足以下关系的所有υ:(c)并且σ(υ)∈ii(c)(1)
[0039]
换句话说,这个open(c)是返回图2中阴影节点的哈希值的函数,它是计算不可达c但可达c的子节点的节点(即,在图末端的节点φ)的哈希值所需要的函数。
[0040]
在稍后描述的处理中,当验证装置10针对节点c向对象设备20发送质询c(c∈c)时,对象设备20返回open(c)和π(c)作为对质询c的响应。在这种情况下,对于所有的c∈c,如果父节点的哈希值h((π(c))匹配c的哈希值并且h(open(c))匹配,则可以大概率保证对象设备20正确地计算出与n个节点v相对应的ω(v)。
[0041]
然后,生成单元12a生成节点数为n的局部二分扩展器lbg
(n,α,β)
并将其发送到对象设备20。这里,图3是用于说明验证处理的概要的图。如图3所示,本实施方式的验证装置10通过验证程序在对象设备20的存储器21的空闲区域中的大小为n的空间中扩展lgb
(n,α,β)
。然后,验证装置10使用与图的节点相对应的open函数来证明对象设备20的存储器21中的空闲区域肯定是空闲的。
[0042]
另外,在计算lbg
(n,α,β)
的哈希值的处理中,验证装置10随机指定软件区域的块x,并且使用通过参考块x的数据d(x)计算出的级联哈希值验证对象设备20的存储器21的软件
区域是否未被篡改。
[0043]
具体地,生成单元12a首先生成节点数为n的局部二分扩展器lbg
(n,α,β)
并将其发送到对象设备20。
[0044]
如稍后将描述的,在对象设备20中,存储器21中的空闲区域中的大小为n的空间被保留用于验证处理,并且基于接收到的lbg
(n,α,β)
来写入哈希值。
[0045]
返回到图1的描述。计算单元12b计算与对象设备20的存储器21中保存的每个软件块相对应的哈希值。具体地,计算单元12b计算诸如h(open(c1))、z(c2)等的值,这些值用于将由验证单元12c重复k次的处理中的每一次处理,这将在后面描述。
[0046]
另外,验证单元12c使用所计算出的与该块相对应的哈希值、从对象设备20返回的使用图计算出的对指定图的节点的质询的响应以及作为对指定该块的质询的响应的从对象设备20返回的与该块相对应的哈希值,来验证存在或不存在对象设备20的存储器21的篡改。
[0047]
验证单元12c验证:从对象设备20返回的使用图计算出的响应与所有质询一致以及所计算出的与块相对应的哈希值是否与从对象设备20返回的与该块相对应的哈希值匹配。
[0048]
验证单元12c还使用利用预定数量的随机数的级联哈希值作为与该块相对应的哈希值。
[0049]
具体地,验证单元12c将质询c={c1,c2,l}发送到对象设备20。这里,c1是对存储器21的空闲区域的质询,并指定所生成的图的节点c1∈c1。此外,c2是对存储器21的软件区域的质询,并且随机指定块。此外,l是随机指定块时要生成的随机数的数量(即,指定待指定的块的数量的信息)。
[0050]
验证单元12c从对象设备20接收open(c1)和π(c1)作为对所有c1∈c1的质询c1的响应。
[0051]
另外,验证单元12c从对象设备20接收级联哈希值z(c2)=h(d(r1),...,d(r
l
))作为对质询c2的响应。这里,r(c2)={r1,...,r
l
}是由伪随机数生成函数生成的l个随机数的随机数序列。
[0052]
也就是说,验证单元12c接收{open(c1),π(c1),z(c2)}作为对质询c的响应。
[0053]
然后,验证单元12c针对所有c∈c验证:h((π(c)))是否与c的哈希值匹配,h(open(c))是否都匹配,以及级联哈希值z(c2)是否与计算单元12b计算出的值相匹配。当它们都匹配时,验证单元12c以大概率保证空闲区域可靠地空闲并且软件区域未被篡改,即,对象设备20的存储器21未被篡改。
[0054]
验证单元12c重复上述处理k次。如上所述,验证装置10使用节点数n(k+1)的图来执行验证处理。
[0055]
注意,生成单元12a生成图,使得节点的数量和与每个节点相对应的哈希值的大小的乘积在预定范围内接近对象设备20的存储器21的空闲区域的大小。
[0056]
例如,如果γ=β-2α足够接近1,则可以证明使用了具有足够接近空闲区域的容量γn的区域,因此可以证明未经授权的软件未被添加到空闲区域中。然而,众所周知,每个节点的输入边的数量d随着γ接近1而指数地增长。验证装置10可以证明的区域的大小是与lbg的计算量dnk的权衡,并且例如可以是0.7《γ《0.9。
[0057]
[对象设备]
[0058]
对象设备20包括存储器21、控制单元22和未示出的通信控制单元。
[0059]
存储器21由诸如ram(随机存取存储器)或闪存的半导体存储元件或者诸如硬盘或光盘的存储装置来实现。在存储器21中,用于操作对象设备20的处理程序、在处理程序的执行期间使用的数据等被预先存储,或者在每次执行处理时被临时存储。在本实施方式中,作为用于作为对象设备20操作的程序的验证程序被存储在存储器21的软件区域中。
[0060]
通信控制单元通过nic(网络接口卡)等实现,并且通过诸如lan(局域网)或互联网的通信线路控制诸如对象设备10的外部设备与控制单元22之间的通信。
[0061]
控制单元22通过使用cpu(中央处理单元)、np(网络处理器)、fpga(现场可编程门阵列)等来实现,并且执行存储在存储器中的处理程序。在本实施方式中,控制单元22通过执行验证程序而起到保存单元22a和响应单元22b的作用。
[0062]
保存单元22a将所计算出的与从验证装置10接收到的图的每个节点相对应的哈希值保存在存储器21的空闲区域中。具体地,当保存单元22a接收到节点数为n的局部二分扩展器lbg
(n,α,β)
时,存储器21中的空闲区域中的大小为n的空间被保留用于验证处理,并且基于接收到的lbg
(n,α,β)
来写入哈希值。
[0063]
当响应单元22b从验证装置10接收到指定图的节点和保存在存储器中的软件的块的质询时,响应单元22b以使用所保存的与该节点相对应的哈希值和所计算出的与该块相对应的哈希值计算出的响应对验证装置10做出响应。
[0064]
此外,当响应单元22b从验证装置10接收到指定块的质询时,如果进一步指定了随机数的数量,则响应单元22b返回使用进一步指定的随机数的数量计算出的级联哈希值作为与块相对应的哈希值。
[0065]
具体地,当从验证装置10接收到质询c={c1,c2,l}时,响应单元22b针对所有c1∈c1计算open(c1)和π(c1)。
[0066]
另外,随机数序列r(c2)={r1,...,r
l
}是使用质询c2作为伪随机数生成函数的种子而生成的。然后,响应单元22b计算级联哈希值z(c2)=h(d(r1),...,d(r
l
))。
[0067]
然后,响应单元22b向验证装置10返回res={open(c1),π(c1),z(c2)}作为对质询的响应。对象设备20与验证装置10重复上述处理k次。因此,如上所述,验证装置10验证存在或不存在对象设备20的存储器21的篡改。
[0068]
[验证处理]
[0069]
接下来,参照图4描述根据本实施方式的验证装置10进行的验证处理。图4是示出验证处理过程的序列图。例如,图4的序列在用户进行指示开始的操作输入的时刻开始。
[0070]
首先,在验证装置10中,生成单元12a根据对象设备20的存储器21的空闲区域的大小生成包含多个节点的图,并且将所述图发送给对象设备20(步骤s1)。
[0071]
在对象设备20中,保存单元22a计算与从验证装置10接收到的图的每个节点相对应的哈希值,并且将哈希值保存在存储器21的空闲区域中(步骤s2)。
[0072]
接下来,在验证装置10中,验证单元12c将指定图的节点和保存在存储器中的软件的块的质询发送到对象设备20(步骤s3)。
[0073]
在接收到质询的对象设备20中,响应单元22b使用图计算对指定节点的质询的响应,并且计算与该块相对应的哈希值作为对指定块的质询的响应。此外,响应单元22b将所
计算出的响应返回给验证装置10(步骤s4)。
[0074]
在接收到响应的验证装置10中,验证单元12c验证存在或不存在对象设备20的存储器21的篡改(步骤s5)。具体地,验证单元12c验证对指定节点的质询的响应是否与所有质询匹配。另外,验证单元12c验证对指定块的质询的响应是否与由计算单元12b计算出的与该块相对应的哈希值匹配。验证单元12c重复步骤s1到s5的处理k次。
[0075]
例如,当它们所有都匹配时,验证单元12c确定对象设备20的存储器21的空闲区域可靠地空闲并且软件区域未被篡改,即,对象设备20的存储器21未被篡改。
[0076]
此外,验证单元12c显示验证结果并将验证结果输出到诸如显示器的未示出的输出单元。因此,完成了一系列验证处理。
[0077]
如上所述,在本实施方式的验证装置10中,存储单元11存储对象设备20的存储器的空闲区域的大小以及保存在存储器中的软件。此外,生成单元12a根据对象设备20的存储器21的空闲区域的大小生成包含多个节点的图,并且将所述图发送给对象设备20。另外,计算单元12b计算与对象设备20的存储器21中保存的每个软件块相对应的哈希值。另外,验证单元12c使用与该块相对应的哈希值、从对象设备20返回的使用图计算出的对指定图的节点的质询的响应、以及作为对指定该块的质询的响应的从对象设备20返回的与该块相对应的哈希值,来验证存在或不存在对象设备20的存储器21的篡改。
[0078]
验证单元12c验证从对象设备20返回的使用图计算出的响应与所有质询一致以及所计算出的与该块相对应的哈希值是否与从对象设备20返回的与该块相对应的哈希值匹配。
[0079]
因此,验证装置10可以通过利用在包括对象设备20的易失性存储器的存储器21的空闲区域当中的具有预定容量或更大容量的区域来高准确度地证明空闲区域可靠地空闲。另外,验证装置10可以通过参考软件区域中的数据来检测存在或不存在软件区域的篡改。特别是,验证装置10可以在存储器21的软件区域的篡改或未授权软件添加到空闲区域中的任一者或两者发生时以大概率检测到。因此,验证装置10可以同时验证存在或不存在软件区域的篡改,或者空闲区域是否可靠地空闲。如上所述,根据验证装置10,可以从对象设备20外部验证存在或不存在嵌入式设备的软件20的篡改。
[0080]
另外,生成单元12a生成图,使得节点的数量和与每个节点相对应的哈希值的大小的乘积在预定范围内接近对象设备20的存储器的空闲区域的大小。因此,验证装置10可以以更高的准确度验证对象设备20的空闲区域是否可靠地空闲。
[0081]
此外,在对象设备20中,保存单元22a将所计算出的与从验证装置10接收到的图的每个节点相对应的哈希值保存在存储器21的空闲区域中。此外,当响应单元22b从验证装置10接收到指定图的节点和保存在存储器中的软件的块的质询时,响应单元22b以使用所保存的与图的该节点相对应的哈希值和所计算出的与该块相对应的哈希值计算出的响应对验证装置10做出响应。
[0082]
因此,验证装置10可以验证存在或不存在对象设备20的存储器21的篡改。
[0083]
另外,当验证装置10的验证单元12c向对象设备20发送指定块的质询时,该验证单元12c进一步指定随机数的数量。在这种情况下,对象设备20的响应单元22b返回使用进一步指定数量的随机数计算出的级联哈希值作为与该块相对应的哈希值。这使得能够以更高的准确度验证存在或不存在软件区域的篡改。
[0084]
值得注意的是,验证装置10会搜索软件区域kl次。此时,检测到在大小为m的软件区域中εm被篡改的概率为(1-ε)
kl
。如果ε=(1/kl),则当kl足够大时,这个概率为e-kl
。因此,如果kl足够大,则漏掉软件区域的篡改的概率会指数地减小。
[0085]
此外,在上述实施方式中,对象设备20的计算量为k(2n-1+l+dn),并且验证装置10的计算量为k(|c1|logn+l)。当kl足够大时,验证装置10和对象设备20的计算量都是kl。
[0086]
[程序]
[0087]
还可以创建程序,在该程序中,由根据上述实施方式的验证装置10执行的处理以可以由计算机执行的语言来描述。作为一个实施方式,可以通过将用于执行上述验证处理的验证程序作为封装软件或在线软件安装在期望的计算机中来实现验证装置10。例如,通过使信息处理装置执行验证程序,信息处理装置可以用作验证装置10。在此上下文中的信息处理装置包括台式或笔记本个人计算机。另外,信息处理装置包括诸如智能电话、移动电话或phs(个人手持电话系统)的移动通信终端以及诸如pda(个人数字助理)的平板终端。此外,验证装置10的功能可以在云服务器中实现。
[0088]
图5是示出执行验证程序的计算机的示例的图。计算机1000例如包括存储器1010、cpu1020、硬盘驱动器接口1030、磁盘驱动器接口1040、串行端口接口1050、视频适配器1060和网络接口1070。这些组件通过总线1080连接。
[0089]
存储器1010包括rom(只读存储器)1011和ram1012。rom1011例如存储诸如bios(基本输入输出系统)的引导程序。硬盘驱动器接口1030连接到硬盘驱动器1031。磁盘驱动器接口1040连接到磁盘驱动器1041。诸如磁盘或光盘的可移除存储介质被插入到磁盘驱动器1041。例如,鼠标1051和键盘1052连接到串行端口接口1050。例如,显示器1061连接到视频适配器1060。
[0090]
这里,硬盘驱动器1031存储例如os1091、应用程序1092、程序模块1093和程序数据1094。上述实施方式中描述的每条信息被存储在例如硬盘驱动器1031或存储器1010中。
[0091]
此外,验证程序作为例如程序模块1093被存储在硬盘驱动器1031中,在该程序模块1093中描述了要由计算机1000执行的指令。具体地,描述上述实施方式中描述的验证装置10执行的每个处理的程序模块1093被存储在硬盘驱动器1031中。
[0092]
此外,用于验证程序的信息处理的数据作为程序数据1094被存储在例如硬盘驱动器1031中。然后,cpu1020根据需要将存储在硬盘驱动器1031中的程序模块1093和程序数据1094读入ram1012中,并执行上述各个过程。
[0093]
值得注意的是,与验证程序相关的程序模块1093和程序数据1094不限于存储在硬盘驱动器1031中,并且例如可以被存储在可移除存储介质中,并且经由磁盘驱动器1041等由cpu1020读出。另选地,与验证程序有关的程序模块1093和程序数据1094可以被存储在经由诸如lan或wan(广域网)的网络连接的另一台计算机中,并经由网络接口1070由cpu1020读出。
[0094]
上面已经描述了应用了本发明人的做出本发明的实施方式,但本发明不限于构成本实施方式的本发明的公开内容的一部分的说明书和附图。也就是说,本领域技术人员基于本实施方式执行的所有其他实施方式、示例、操作技术等均包含在本发明的范围内。
[0095]
附图标记列表
[0096]
1验证系统
[0097]
10验证装置
[0098]
11存储单元
[0099]
12控制单元
[0100]
12a生成单元
[0101]
12b计算单元
[0102]
12c验证单元
[0103]
20对象设备
[0104]
21存储器
[0105]
22控制单元
[0106]
22a保存单元
[0107]
22b响应单元
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1