CN110324422B - 一种云应用的证实方法及系统 - Google Patents
一种云应用的证实方法及系统 Download PDFInfo
- Publication number
- CN110324422B CN110324422B CN201910604816.8A CN201910604816A CN110324422B CN 110324422 B CN110324422 B CN 110324422B CN 201910604816 A CN201910604816 A CN 201910604816A CN 110324422 B CN110324422 B CN 110324422B
- Authority
- CN
- China
- Prior art keywords
- node
- pcr
- metric
- log
- sending
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/30—Decision processes by autonomous network management units using voting and bidding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种云应用的证实方法及系统,该方法,包括:当任意两个节点发生交互时,接收节点对需要证实的发送节点进行预证实,在确定发送节点通过预证实时,区块链网络中的其他节点在投票通过后,将发送节点的完整性证据和接收节点的完整性证据保存到区块链中;证实节点确定待证实的目标云应用所在的目标节点和待证实的目标时间段,从区块链中获取目标节点在目标时间段内的完整性证据,以及在目标时间段内与目标节点发生交互的相关节点的完整性证据,与预先存储的标准度量信息进行对比,确定目标云应用是否通过证实。本发明提供的一种云应用的证实方法及系统,降低了证实过程的开销。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种云应用的证实方法及系统。
背景技术
在现有技术中,对云应用的证实需要选取一个中心委托者,通过该中心委托者用来获取TPM产生的证实证据,来对云中其他节点进行证实,中心委托者对每台机器完成证实,并将每个单独的证实结果组合成最后的证实证据。
现有技术的方案,要求用户依赖于某个中心委托者来证实云内部,为了证明某个目标云应用是安全的,中心委托者将会对整个云中的所有节点进行证实,无法剥离出目标云应用的依赖,造成了大量的开销。
发明内容
本发明实施例提供了一种云应用的证实方法及系统,降低了证实过程的开销。
一方面,本发明实施例提供了一种云应用的证实方法,包括:
当任意两个节点发生交互时,接收节点对需要证实的发送节点进行预证实,所述接收节点在确定所述发送节点通过预证实时,所述接收节点发出将所述发送节点的完整性证据和所述接收节点的完整性证据保存到区块链中的请求;
区块链网络中的发生交互的两个节点之外的其他节点对所述请求进行投票,投票通过后,将所述发送节点的完整性证据和所述接收节点的完整性证据保存到所述区块链中;
包括:
证实节点确定待证实的目标云应用所在的目标节点和待证实的目标时间段;
所述证实节点从所述区块链中获取所述目标节点在所述目标时间段内的完整性证据,以及在所述目标时间段内与所述目标节点发生交互的相关节点的完整性证据;
所述证实节点将所述目标节点在所述目标时间段内的完整性证据,以及每个所述相关节点的完整性证据与预先存储的标准度量信息进行对比,确定所述目标云应用是否通过证实。
可选地,
所述接收节点对需要证实的发送节点进行预证实,包括:
A1:所述接收节点接收所述发送节点发来的交互信息,判断所述交互信息是否能够使得所述接收节点的度量日志发生改变,如果是,则确定所述发送节点需要证实,执行A2;
A2:所述接收节点向所述发送节点发送挑战请求;
A3:所述发送节点在接收到所述挑战请求后,通过本节点的TPM生成的AIK对本节点的存储在TPM内部的PCR中的PCR度量值进行签名,生成签名后的PCR度量值;
A4:所述发送节点将签名后的所述发送节点的PCR度量值和所述发送节点的增量度量日志发送给所述接收节点,其中,所述发送节点的增量度量日志为所述发送节点中未证实过的度量日志;
A5:所述接收节点对所述发送节点的AIK进行验证,通过验证后,判断本节点是否存储有所述发送节点的历史PCR度量值,如果是,则执行A6,否则,执行A9;
A6:所述接收节点判断所述发送节点发来的所述发送节点的PCR度量值与本节点存储的所述发送节点的历史PCR度量值是否相同,如果是,则确定所述发送节点通过预证实,否则,执行A7;
A7:所述接收节点将本节点存储的所述发送节点的历史PCR度量值与接收到的所述发送节点的增量度量日志中的文件内容哈希值进行串接,生成第一串接结果,计算所述第一串接结果的哈希值,执行A8;
A8:所述接收节点判断所述第一串接结果的哈希值与所述发送节点发来的所述发送节点的PCR度量值是否相同,如果是,则确定所述发送节点通过预证实,否则,确定所述发送节点没有通过预证实;
A9:所述接收节点计算所述发送节点发来的所述发送节点的增量度量日志的哈希值,执行A10;
A10:所述接收节点判断所述发送节点的增量度量日志的哈希值与所述发送节点发来的所述发送节点的PCR度量值是否相同,如果是,则确定所述发送节点通过预证实,否则,确定所述发送节点没有通过预证实。
可选地,
所述完整性证据,包括:度量日志和PCR度量值;
所述接收节点发出将所述发送节点的完整性证据和所述接收节点的完整性证据保存到区块链中的请求,包括:
C1:所述接收节点通过本节点的TPM生成的AIK对本节点的PCR度量值进行签名,生成所述签名后的所述接收节点的PCR度量值;
C2:所述接收节点将所述接收节点的增量度量日志、签名后的所述接收节点的PCR度量值、所述发送节点的增量度量日志和签名后的所述发送节点的PCR度量值作为一条事务,将所述事务广播到区块链网络中,以请求将所述事务存储到区块链中,其中,所述接收节点的增量度量日志为所述接收节点中未证实过的度量日志。
可选地,
所述区块链网络中的发生交互的两个节点之外的其他节点对所述请求进行投票,包括:
区块链网络中的发生交互的两个节点之外的每个其他节点,执行:
B1:验证所述事务中的AIK签名是否均是合法的,如果是,执行B2,否则,执行B9;
B2:验证本节点中存储的所述接收节点的历史PCR度量值与所述事务中的所述接收节点的PCR度量值是否相同,如果是,则执行B5,否则,执行B3;
B3:将本节点存储的所述接收节点的历史PCR度量值与所述事务中的所述接收节点的增量度量日志中的文件内容哈希值进行串接,生成第二串接结果,计算所述第二串接结果的哈希值,执行B4;
B4:判断所述第二串接结果的哈希值与所述事务中的所述接收节点的PCR度量值是否相同,如果是,则执行B5,否则,执行B9;
B5:验证本节点中存储的所述发送节点的历史PCR度量值与所述事务中的所述发送节点的PCR度量值是否相同,如果是,则执行B8,否则,执行B6;
B6:将本节点存储的所述发送节点的历史PCR度量值与所述事务中的所述发送节点的增量度量日志中的文件内容哈希值进行串接,生成第三串接结果,计算所述第三串接结果的哈希值,执行B7;
B7:判断所述第三串接结果的哈希值与所述事务中的所述发送节点的PCR度量值是否相同,如果是,则执行B8,否则,执行B9;
B8:投票同意将所述事务保存到区块链中;
B9:投票不同意将所述事务保存到区块链中;
在投票通过后,进一步包括:
区块链网络中的每个节点将本地存储所述接收节点的历史PCR度量值更新为所述事务中所述接收节点的PCR度量值;
区块链网络中的每个节点将本地存储所述发送节点的历史PCR度量值更新为所述事务中所述发送节点的PCR度量值;
所述发送节点将所述事务中所述发送节点的增量度量日志标记为证实过的度量日志;
所述接收节点将所述事务中所述接收节点的增量度量日志标记为证实过的度量日志。
可选地,
所述完整性证据,包括:度量日志和PCR度量值;
所述标准度量信息,包括:标准PCR度量值和标准度量日志;
所述证实节点将所述目标节点在所述目标时间段内的完整性证据,以及每个所述相关节点的完整性证据与预先存储的标准度量信息进行对比,确定所述目标云应用是否通过证实,包括:
H1:所述证实节点判断所述目标节点在所述目标时间段内的PCR度量值,以及,每个所述相关节点的PCR度量值是否与所述标准PCR度量值相匹配,如果是,则确定所述目标云应用通过证实,否则,执行H2;
H2:所述证实节点将所述目标节点在所述目标时间段内的度量日志,以及每个所述相关节点的度量日志与所述标准度量日志进行对比;
如果所述目标节点在所述目标时间段内的度量日志,以及每个所述相关节点的度量日志与所述标准度量日志相同,则确定所述目标云应用通过证实;
如果所述目标节点在所述目标时间段内的度量日志,以及每个所述相关节点的度量日志与所述标准度量日志不相同,则确定所述目标云应用没有通过证实。
另一方面,本发明实施例提供了一种云应用的证实系统,包括:
多个节点;
任意两个发生交互节点中的接收节点,用于对需要证实的发送节点进行预证实,在确定所述发送节点通过预证实时,发出将所述发送节点的完整性证据和所述接收节点的完整性证据保存到区块链中的请求;
区块链网络中的发生交互的两个节点之外的其他节点,用于对所述请求进行投票,投票通过后,将所述发送节点的完整性证据和所述接收节点的完整性证据保存到所述区块链中;
当任一节点作为证实节点时,
所述证实节点,用于确定待证实的目标云应用所在的目标节点和待证实的目标时间段;从所述区块链中获取所述目标节点在所述目标时间段内的完整性证据,以及在所述目标时间段内与所述目标节点发生交互的相关节点的完整性证据;将所述目标节点在所述目标时间段内的完整性证据,以及每个所述相关节点的完整性证据与预先存储的标准度量信息进行对比,确定所述目标云应用是否通过证实。
可选地,
所述接收节点,用于执行A1和A2:
A1:接收所述发送节点发来的交互信息,判断所述交互信息是否能够使得所述接收节点的度量日志发生改变,如果是,则确定所述发送节点需要证实,执行A2;
A2:向所述发送节点发送挑战请求;
所述发送节点,用于执行A3和A4:
A3:在接收到所述挑战请求后,通过本节点的TPM生成的AIK对本节点的存储在TPM内部的PCR中的PCR度量值进行签名,生成签名后的PCR度量值;
A4:将签名后的所述发送节点的PCR度量值和所述发送节点的增量度量日志发送给所述接收节点,其中,所述发送节点的增量度量日志为所述发送节点中未证实过的度量日志;
所述接收节点,用于执行A5-A10:
A5:对所述发送节点的AIK进行验证,通过验证后,判断本节点是否存储有所述发送节点的历史PCR度量值,如果是,则执行A6,否则,执行A9;
A6:判断所述发送节点发来的所述发送节点的PCR度量值与本节点存储的所述发送节点的历史PCR度量值是否相同,如果是,则确定所述发送节点通过预证实,否则,执行A7;
A7:将本节点存储的所述发送节点的历史PCR度量值与接收到的所述发送节点的增量度量日志中的文件内容哈希值进行串接,生成第一串接结果,计算所述第一串接结果的哈希值,执行A8;
A8:判断所述第一串接结果的哈希值与所述发送节点发来的所述发送节点的PCR度量值是否相同,如果是,则确定所述发送节点通过预证实,否则,确定所述发送节点没有通过预证实;
A9:所述接收节点计算所述发送节点发来的所述发送节点的增量度量日志的哈希值,执行A10;
A10:判断所述发送节点的增量度量日志的哈希值与所述发送节点发来的所述发送节点的PCR度量值是否相同,如果是,则确定所述发送节点通过预证实,否则,确定所述发送节点没有通过预证实。
可选地,
所述完整性证据,包括:度量日志和PCR度量值;
所述接收节点,在执行所述发出将所述发送节点的完整性证据和所述接收节点的完整性证据保存到区块链中的请求时,具体用于执行C1-C3:
C1:所述接收节点通过本节点的TPM生成的AIK对本节点的PCR度量值进行签名,生成所述签名后的所述接收节点的PCR度量值;
C2:所述接收节点将所述接收节点的增量度量日志、签名后的所述接收节点的PCR度量值、所述发送节点的增量度量日志和签名后的所述发送节点的PCR度量值作为一条事务,将所述事务广播到区块链网络中,以请求将所述事务存储到区块链中,其中,所述接收节点的增量度量日志为所述接收节点中未证实过的度量日志。
可选地,
区块链网络中的发生交互的两个节点之外的每个其他节点,用于执行B1-B9:
B1:验证所述事务中的AIK签名是否均是合法的,如果是,执行B2,否则,执行B9;
B2:验证本节点中存储的所述接收节点的历史PCR度量值与所述事务中的所述接收节点的PCR度量值是否相同,如果是,则执行B5,否则,执行B3;
B3:将本节点存储的所述接收节点的历史PCR度量值与所述事务中的所述接收节点的增量度量日志中的文件内容哈希值进行串接,生成第二串接结果,计算所述第二串接结果的哈希值,执行B4;
B4:判断所述第二串接结果的哈希值与所述事务中的所述接收节点的PCR度量值是否相同,如果是,则执行B5,否则,执行B9;
B5:验证本节点中存储的所述发送节点的历史PCR度量值与所述事务中的所述发送节点的PCR度量值是否相同,如果是,则执行B8,否则,执行B6;
B6:将本节点存储的所述发送节点的历史PCR度量值与所述事务中的所述发送节点的增量度量日志中的文件内容哈希值进行串接,生成第三串接结果,计算所述第三串接结果的哈希值,执行B7;
B7:判断所述第三串接结果的哈希值与所述事务中的所述发送节点的PCR度量值是否相同,如果是,则执行B8,否则,执行B9;
B8:投票同意将所述事务保存到区块链中;
B9:投票不同意将所述事务保存到区块链中;
区块链网络中的每个节点,用于执行:在投票通过后,将本地存储所述接收节点的历史PCR度量值更新为所述事务中所述接收节点的PCR度量值,将本地存储所述发送节点的历史PCR度量值更新为所述事务中所述发送节点的PCR度量值;
所述发送节点,进一步用于在投票通过后,将所述事务中所述发送节点的增量度量日志标记为证实过的度量日志;
所述接收节点,进一步用于在投票通过后,将所述事务中所述接收节点的增量度量日志标记为证实过的度量日志。
可选地,
所述完整性证据,包括:度量日志和PCR度量值;
所述标准度量信息,包括:标准PCR度量值和标准度量日志;
所述证实节点,用于执行:
H1:所述证实节点判断所述目标节点在所述目标时间段内的PCR度量值,以及,每个所述相关节点的PCR度量值是否与所述标准PCR度量值相匹配,如果是,则确定所述目标云应用通过证实,否则,执行H2;
H2:所述证实节点将所述目标节点在所述目标时间段内的度量日志,以及每个所述相关节点的度量日志与所述标准度量日志进行对比;
如果所述目标节点在所述目标时间段内的度量日志,以及每个所述相关节点的度量日志与所述标准度量日志相同,则确定所述目标云应用通过证实;
如果所述目标节点在所述目标时间段内的度量日志,以及每个所述相关节点的度量日志与所述标准度量日志不相同,则确定所述目标云应用没有通过证实。
在本发明实施例中,任一两个节点发生交互时,接收节点会对需要证实的发送节点进行预证实,并在通过预证实后,将发送节点的完整性证据和接收节点的完整性证据保存到区块链中,任意一个节点都可以对目标云应用进行证实,在证实过程中,证实节点只需从区块链中获取目标节点在目标时间段内的完整性证据,以及在目标时间段内与目标节点发生交互的相关节点的完整性证据,证实节点无需对所有的节点进行证实,大大降低了证实过程的开销。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种云应用的证实方法的流程图;
图2是本发明一实施例提供的一种云应用的证实系统的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种云应用的证实方法,该方法可以包括以下步骤:
步骤101:当任意两个节点发生交互时,接收节点对需要证实的发送节点进行预证实,所述接收节点在确定所述发送节点通过预证实时,所述接收节点发出将所述发送节点的完整性证据和所述接收节点的完整性证据保存到区块链中的请求;
步骤102:区块链网络中的发生交互的两个节点之外的其他节点对所述请求进行投票,投票通过后,将所述发送节点的完整性证据和所述接收节点的完整性证据保存到所述区块链中;
步骤103:证实节点确定待证实的目标云应用所在的目标节点和待证实的目标时间段;
步骤104:所述证实节点从所述区块链中获取所述目标节点在所述目标时间段内的完整性证据,以及在所述目标时间段内与所述目标节点发生交互的相关节点的完整性证据;
步骤105:所述证实节点将所述目标节点在所述目标时间段内的完整性证据,以及每个所述相关节点的完整性证据与预先存储的标准度量信息进行对比,确定所述目标云应用是否通过证实。
在本发明实施例中,任一两个节点发生交互时,接收节点会对需要证实的发送节点进行预证实,并在通过预证实后,将发送节点的完整性证据和接收节点的完整性证据保存到区块链中,任意一个节点都可以对目标云应用进行证实,在证实过程中,证实节点只需从区块链中获取目标节点在目标时间段内的完整性证据,以及在目标时间段内与目标节点发生交互的相关节点的完整性证据,证实节点无需对所有的节点进行证实,大大降低了证实过程的开销。
在本发明一实施例中,所述接收节点对需要证实的发送节点进行预证实,包括:
A1:所述接收节点接收所述发送节点发来的交互信息,判断所述交互信息是否能够使得所述接收节点的度量日志发生改变,如果是,则确定所述发送节点需要证实,执行A2;
A2:所述接收节点向所述发送节点发送挑战请求;
A3:所述发送节点在接收到所述挑战请求后,通过本节点的TPM生成的AIK对本节点的存储在TPM内部的PCR中的PCR度量值进行签名,生成签名后的PCR度量值;
A4:所述发送节点将签名后的所述发送节点的PCR度量值和所述发送节点的增量度量日志发送给所述接收节点,其中,所述发送节点的增量度量日志为所述发送节点中未证实过的度量日志;
A5:所述接收节点对所述发送节点的AIK进行验证,通过验证后,判断本节点是否存储有所述发送节点的历史PCR度量值,如果是,则执行A6,否则,执行A9;
A6:所述接收节点判断所述发送节点发来的所述发送节点的PCR度量值与本节点存储的所述发送节点的历史PCR度量值是否相同,如果是,则确定所述发送节点通过预证实,否则,执行A7;
A7:所述接收节点将本节点存储的所述发送节点的历史PCR度量值与接收到的所述发送节点的增量度量日志中的文件内容哈希值进行串接,生成第一串接结果,计算所述第一串接结果的哈希值,执行A8;
A8:所述接收节点判断所述第一串接结果的哈希值与所述发送节点发来的所述发送节点的PCR度量值是否相同,如果是,则确定所述发送节点通过预证实,否则,确定所述发送节点没有通过预证实;
A9:所述接收节点计算所述发送节点发来的所述发送节点的增量度量日志的哈希值,执行A10;
A10:所述接收节点判断所述发送节点的增量度量日志的哈希值与所述发送节点发来的所述发送节点的PCR度量值是否相同,如果是,则确定所述发送节点通过预证实,否则,确定所述发送节点没有通过预证实。
在本发明实施例中,在任意两个节点发生交互时,接收节点会对发送节点进行预证实,具体地,通过步骤A1-A10来实现该预证实过程。
在预证实之后,证实节点可以根据区块链中保存的各个节点的完整性证据,对目标云应用进行最后验证。
另外,发送节点发送给接收节点的增量度量日志是从发送节点启动到与接收节点发生交互这段时间内的度量日志,在交互之后的度量日志不会发送给接收节点。
对于接收节点来说,只有从发送节点启动到与接收节点发生交互这段时间内的发送节点的增量度量日志才是接收节点的有效依赖,在交互之后的发送节点的度量日志不是接收节点的有效依赖。
在本发明实施例中,度量日志中包括:文件名称、对文件名称所对应的文件内容进行哈希得到的文件内容哈希值等内容。在进行串接时,对文件内容哈希值进行串接,而不是对整个度量日志进行串接。
举例来说,如下是一段度量日志:
在该段度量日志中,共用7条度量日志,每一段是一条度量日志,其中,在每条度量日志中“ima-ng”之前这一串哈希值称之为“列表项度量值”,是文件内容的哈希值。“sha1:”之后的哈希值为包括文件内容以及文件信息(如文件名)总体计算出的SHA1值,可以称之为模板数据度量值。最终TPM芯片硬件度量以及挑战者软件度量所采用的度量值是列表项度量值。在该段度量日志中,通过sha1算法对内容进行哈希。
以第一条度量日志来说,在进行串接时,只需对0d4b523aeec6625439e70aad3190804c30238f22这个文件内容哈希值来进行串接。
另外,以该段度量日志为例,如果在第二条度量日志及第二条度量日志之前的度量日志以及被证实过了,而第三条度量日志及第三条度量日志之后的度量日志没有被证实过,那么,第三条度量日志及第三条度量日志之后的度量日志为增量度量日志,具体地,以下度量日志为增量度量日志:
在本发明一实施例中,所述完整性证据,包括:度量日志和PCR度量值;
所述接收节点发出将所述发送节点的完整性证据和所述接收节点的完整性证据保存到区块链中的请求,包括:
C1:所述接收节点通过本节点的TPM生成的AIK对本节点的PCR度量值进行签名,生成所述签名后的所述接收节点的PCR度量值;
C2:所述接收节点将所述接收节点的增量度量日志、签名后的所述接收节点的PCR度量值、所述发送节点的增量度量日志和签名后的所述发送节点的PCR度量值作为一条事务,将所述事务广播到区块链网络中,以请求将所述事务存储到区块链中,其中,所述接收节点的增量度量日志为所述接收节点中未证实过的度量日志。
具体地,所述当任意两个节点发生交互时,接收节点对需要证实的发送节点进行预证实,所述接收节点在确定所述发送节点通过预证实时,所述接收节点发出将所述发送节点的完整性证据和所述接收节点的完整性证据保存到区块链中的请求,可以通过以下过程实现:
D1:发送节点生成即将发送的交互信息;
D2:发送节点通过网络模块将交互信息发送给接收节点;
D3:接收节点判断交互信息是否会影响其度量日志的变化。
具体地,不是任何文件的任何操作都会被度量,进而写入度量日志。只有度量用户级可执行文件(User-level Executables),共享链接库(Dynamically LoadableLibraries)、内核模块(Kernel Modules)以及脚本(Scripts)会被度量,会改变度量日志。有一些交互信息不会影响接收节点安全性,对此将不会进行度量。
D4:如果交互信息会改变接收节点的度量日志,就会对发送节点进行证实,否则发送节点将不划为接收节点的依赖,接收节点不会对发送节点进行证实。为了防止重放攻击,接收节点发送一个密码学随机数nonce给发送节点,其中nonce=Hash<msg,ts>,ts为当前时刻的时间戳timestamp,msg为交互信息;
D5:发送节点载入本节点TPM生成的AIK,调用Tspi_TPM_Quote接口利用AIK对本节点的指定的PCR(可以采用PCR10)进行签名。
具体地,可以把利用AIK进行签名的操作叫做quote,同时将发送节点的PCR度量值叫做s-pcr。在签名时会先将nonce和PCR度量值做SHA1算法的Hash。如果Sender的度量日志更新过,那么就同时quote本节点的delta(ML)。delta(ML)是指相较于上次发出过的度量日志增加的若干条度量日志值,如果此次为第一次发出度量日志,则delta(ML)指从本节点的机器上电到当前时刻的所有度量日志。
D6:发送节点将用AIK签过名的PCR度量值和nonce以及s-pcr原值,msg,ts,delta(ML)通过安全通道一起发给接收节点;
D7:接收节点收到发送节点发来的信息时,首先计算nonce’=Hash<msg,ts’>,其中ts’为当前时刻的时间戳;
D8:接收节点验证发送节点发来的AIK签名,验证发送节点的度量日志与PCR度量值是否相对应(若这不是第一次交互,则接收节点本地存有发送节点的历史PCR度量值,根据PCR度量值的extend规则,s-pcr应该等于Hash(historyPCR||delta(ML),其中historyPCR指历史PCR度量值)。若验证通过,则确定发送节点通过证实,否则停止此次交互。
D9:接收节点用自己的TPM生成的AIK和nonce’来quote自己的PCR度量值,叫做d-pcr。并且如果接收节点自己的度量日志发生过变化的话就同时quote自己的delta(ML);
D10:接收节点生成一个六元组<s-name/d-name,s-pcr/d-pcr,s-payload/d-payload>,并将其作为一条事务全网广播(广播到区块链网络中),尝试写入区块链。其中,s-name为发送节点的节点标识,d-name为接收节点的节点标识;s-pcr为签过名的发送节点的PCR度量值,d-pcr为签过名的接收节点的PCR度量值;s-payload是发送节点的nonce,ts以及它的delat(ML),可以叫做s-delta(ML),d-payload是接收节点的nonce’,ts,以及它的delat(ML),可以叫做d-delta(ML)。
其中,接收节点将该事务进行全网广播,请求其他节点的投票共识通过,经过其他的节点投票共识通过后,该条事务将被写入区块链,无法篡改,且可以随时查阅。
在本发明一实施例中,所述区块链网络中的发生交互的两个节点之外的其他节点对所述请求进行投票,包括:
区块链网络中的发生交互的两个节点之外的每个其他节点,执行:
B1:验证所述事务中的AIK签名是否均是合法的,如果是,执行B2,否则,执行B9;
B2:验证本节点中存储的所述接收节点的历史PCR度量值与所述事务中的所述接收节点的PCR度量值是否相同,如果是,则执行B5,否则,执行B3;
B3:将本节点存储的所述接收节点的历史PCR度量值与所述事务中的所述接收节点的增量度量日志中的文件内容哈希值进行串接,生成第二串接结果,计算所述第二串接结果的哈希值,执行B4;
B4:判断所述第二串接结果的哈希值与所述事务中的所述接收节点的PCR度量值是否相同,如果是,则执行B5,否则,执行B9;
B5:验证本节点中存储的所述发送节点的历史PCR度量值与所述事务中的所述发送节点的PCR度量值是否相同,如果是,则执行B8,否则,执行B6;
B6:将本节点存储的所述发送节点的历史PCR度量值与所述事务中的所述发送节点的增量度量日志中的文件内容哈希值进行串接,生成第三串接结果,计算所述第三串接结果的哈希值,执行B7;
B7:判断所述第三串接结果的哈希值与所述事务中的所述发送节点的PCR度量值是否相同,如果是,则执行B8,否则,执行B9;
B8:投票同意将所述事务保存到区块链中;
B9:投票不同意将所述事务保存到区块链中;
在投票通过后,进一步包括:
区块链网络中的每个节点将本地存储所述接收节点的历史PCR度量值更新为所述事务中所述接收节点的PCR度量值;
区块链网络中的每个节点将本地存储所述发送节点的历史PCR度量值更新为所述事务中所述发送节点的PCR度量值;
所述发送节点将所述事务中所述发送节点的增量度量日志标记为证实过的度量日志;
所述接收节点将所述事务中所述接收节点的增量度量日志标记为证实过的度量日志。
在本发明实施例中,发送节点可以通过记录证实过的度量日志的行数来实现将所述事务中所述发送节点的增量度量日志标记为证实过的度量日志;接收节点可以通过记录证实过的度量日志的行数来实现将所述事务中所述发送节点的增量度量日志标记为证实过的度量日志。
在本发明实施例中,将各个节点的历史PCR度量值存储在各个节点的本地,而不是每次从区块链上获取。由于每次从区块链上获取开销太大,存储在本地能够降低开销。另外,即使有作恶节点的历史PCR度量值是有问题的,也可以用区块链的共识机制来保证最终的投票结果是正确的,所以不怕因为在各个节点本地存储历史PCR度量值而引入的安全问题。
具体地,可以在每个节点的本地维护一个历史PCR Table,通过历史PCR Table存储各个节点的历史PCR度量值。
具体地,区块链网络中的其他节点对接收节点发出的事务进行验证和投票的过程可以通过以下步骤实现:
E1:其他节点收到需要被确认的交易(这里是接收节点发出的事务)时,首先进行交易格式验证,包括交易的语法和数据结构的正确性,交易签名的合法性等等,这个由采用的各区块链规定,有所不同。验证通过后进行下一步,否则投票失败。
E2:验证s-pcr,d-pcr对应的AIK签名是否合法;
E3:验证s-pcr,d-pcr是否是每个节点本地维护的历史PCR table里的值。如果是则可以直接进行步骤E5,否则进行步骤E4;其中,历史PCR table中保存有各个节点的历史PCR度量值;
E4:如果s-pcr,d-pcr是改变过的,与历史PCR Table里的值不符,进行计算,看是否s-pcr等于Hash(historyPCR||ML)(注:此处为简写,真实是每一条的度量日志依次与historyPCR进行Hash);
E5:投票通过,交易入池,同时各节点(包括发送节点和接收节点)更新自己本地的历史PCR Table的值,具体地,将本次接收到的s-pcr替换历史PCR Table中的发送节点的历史PCR度量值,将本次接收到的d-pcr替换历史PCR Table中的接收节点的历史PCR度量值。
在经过生成交易和对交易投票的机制后,将事务保存到区块链中,通过区块链本身的保护与容错机制以及本发明实施例中的写入和投票机制,可以在区块链中真实地查到所写入的信息,包括每次进行交互时的源节点,目标节点,交互时间以及交互时的两个节点的状态,这些都被写入了区块链。在之后需要去对某一云应用(或者某个或多个虚拟机)进行完整性证实的时候,就可以通过从区块链中直接得到结果,并依次与用户期望的标准日志信息(例如:可以通过白名单的形式实现)进行比对,得到证实结果。
证实节点在对目标云应用进行证实时,具体可以通过以下步骤实现:
F1:确定目标时间段t1~t2,比如2018年10月1日到10月7日,确定某一个目标云应用(或某个VM,或多个VM)的某个节点Node1;
F2:在区块链中搜寻指定的节点Node1在指定的时间范围t1~t2内的所有信息;
F3:得到与Node1交互过的所有节点的签过名的PCR,度量日志ML以及Node1自己的PCR以及度量日志ML;
F4:将这些度量日志与用户预期的白名单进行一一比对,即可得到挑战结果。
在本发明一实施例中,所述完整性证据,包括:度量日志和PCR度量值;
所述标准度量信息,包括:标准PCR度量值和标准度量日志;
所述证实节点将所述目标节点在所述目标时间段内的完整性证据,以及每个所述相关节点的完整性证据与预先存储的标准度量信息进行对比,确定所述目标云应用是否通过证实,包括:
H1:所述证实节点判断所述目标节点在所述目标时间段内的PCR度量值,以及,每个所述相关节点的PCR度量值是否与所述标准PCR度量值相匹配,如果是,则确定所述目标云应用通过证实,否则,执行H2;
H2:所述证实节点将所述目标节点在所述目标时间段内的度量日志,以及每个所述相关节点的度量日志与所述标准度量日志进行对比;
如果所述目标节点在所述目标时间段内的度量日志,以及每个所述相关节点的度量日志与所述标准度量日志相同,则确定所述目标云应用通过证实;
如果所述目标节点在所述目标时间段内的度量日志,以及每个所述相关节点的度量日志与所述标准度量日志不相同,则确定所述目标云应用没有通过证实。
在区块链中存储了很多节点的很长时间内的完整性证据,如果每次度量时都将此时该节点所有的度量日志上传,将有很大的冗余性,这会大大降低系统的性能以及效率。因此,为了实现对于某个单个节点的度量日志的去冗余,在每个节点本地记录了本节点的历史PCR度量值对应的ML(度量日志)行数,记为MLIndex。假设之前的度量日志的行数为MLIndex1,当前度量日志的行数为MLIndex2,这样每次需要上传的度量日志将为:
delta(ML)=MLIndex2-MLIndex1|MLIndex2>=MLIndex1,MLIndex1,MLIndex2>0
这样除了第一次需要将所有的从上电开始到目前状态的度量日志传输之外,每一次新的度量只需要将当前时刻到上一次被度量时刻之间的度量日志上传,即只需要上传delta(ML),这大大减少了证实的开销,包括上传、Hash比对及白名单比对的开销。
由于云平台中节点的同构性,许多的节点从上电到初次度量时的PCR度量值和度量日志都是相同的,无差异的,因此如果将每个节点的度量日志都传输并证实一次开销是极大的,也是浪费的。因此可以经过实际度量后得到一个初始PCR度量值。假设所有初始化的计算节点的初始PCRcompute=α,存储节点的初始PCRstorage=β。那么在度量时所有PCR度量值等于α的节点都可以视为刚完成开机操作,没有被篡改过的安全的计算节点。而PCR度量值等于β的节点即可以视为安全的存储节点。
在本发明实施例中,可以通过智能合约,以及在交易验证时加入钩子来实现本发明实施例提供的方案。
可以采用以太坊项目作为区块链部分,因此可以自定义智能合约,并用web3js调用智能合约将需要上链的六元组<s-name/d-name,s-pcr/d-pcr,s-payload/d-payload>进行了上链。值得一提的是,由以太坊的EVM的机制,每次智能合约的执行都是由多节点共同执行的,因此在上链时我们的度量结果可以保证真实可信,增强了安全性与可信性。
在上链之前,为了确保不是恶意节点发送的恶意信息上链,在以太坊的交易验证流程中加入钩子,运行本发明实施例的证实流程,对源节点与目标节点的PCR度量值与度量日志进行了实时的度量,保证其上链信息的真实性。
此外,为了减少上链信息,考虑加入IPFS技术。星际文件系统(InterPlanetaryFile System,缩写IPFS)是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的超媒体分发协议。在IPFS网络中的节点将构成一个分布式文件系统。将完整性信息做Hash,将Hash值放在区块链上,而将完整信息存储在IPFS中,这样即保持了去中心化的特性,又可以减少区块链的负荷。
在本发明实施例中,通过使每一个节点都可以成为挑战者和被挑战者,去除了单点的中心证实委托者,解决了单点故障和中心信任问题。通过改变证实流程和证实目标,优化了证实效率。通过区块链的存储,对证实结果无篡改地持久保存,随时可查。
在本发明实施例中,通过实时证实,识别出了更加细粒度的有效依赖,去除了无效部分,同时还降低了证实延迟。通过去冗余机制,去除了证实过程中的冗余的完整性信息。通过引入区块链,可以对证实结果持久化保存,并保证无篡改,随时可查。避免了证实票据在网络中传播直到收敛的开销。
在本发明实施例中,为了实现识别有效依赖,证实证据去冗余,和降低证实延迟,通过对节点发送的网络数据进行抓取,当节点获取到其他节点网络数据时,将收集源节点的平台状态(PCR度量值与信任链信息,即度量日志ML),从而完成有效依赖信息的获取。同时,云中所有节点构成区块链,通过设计区块链事务内容,将依赖信息写入区块链中,并设计对应的投票机制,完成对写入的依赖信息的可信度验证。通过设置合理的去重策略,对度量日志(Measurement List,ML)的去重操作也将在写入区块链时完成。当验证者对其某一或多个云应用(或虚拟机)进行验证时,可以直接从区块链中还原出其依赖节点与对应的有效依赖。基于区块链的防篡改机制,验证者不再需要利用TPM签名、PCR度量值对ML的验证来验证这些依赖的完整,而只需要与区块链交互,得到之前证实的记录,并完成最后的与白名单(White List,WL)的比对即可,从而极大地降低验证延迟。最后,还将各个时间段的证实结果永久无篡改地存储在了区块链上,可供用户随时查阅,对其机器的安全状态溯源。
在本发明实施例中,证实包括度量加验证。度量是指使用TPM对机器进行度量。将验证机制分为了两部分,一部分是在节点发生交互时,将会对其进行预证实,包括验证签名和验证PCR度量值。另一部分发生在用户想要获取证实结果时,将对目标云应用发起挑战,将从区块链上下载的有效依赖的完整性证据(度量日志、PCR度量值等)与自己设定的白名单进行比对。
在本发明实施例中,所有节点都加入一个区块链的私链,与此同时每一个节点都装有可信硬件TPM,上面运行着预证实模块,网络监控模块和区块链服务模块。他们的作用分别是在完整性证据上链之前完成对节点的预证实,对节点的通信进行监控和将预证实后的完整性证据上链。
如图2所示,本发明实施例提供了一种云应用的证实系统,包括:
多个节点201;
任意两个发生交互节点中的接收节点,用于对需要证实的发送节点进行预证实,在确定所述发送节点通过预证实时,发出将所述发送节点的完整性证据和所述接收节点的完整性证据保存到区块链中的请求;
区块链网络中的发生交互的两个节点之外的其他节点,用于对所述请求进行投票,投票通过后,将所述发送节点的完整性证据和所述接收节点的完整性证据保存到所述区块链中;
当任一节点作为证实节点时,
所述证实节点,用于确定待证实的目标云应用所在的目标节点和待证实的目标时间段;从所述区块链中获取所述目标节点在所述目标时间段内的完整性证据,以及在所述目标时间段内与所述目标节点发生交互的相关节点的完整性证据;将所述目标节点在所述目标时间段内的完整性证据,以及每个所述相关节点的完整性证据与预先存储的标准度量信息进行对比,确定所述目标云应用是否通过证实。
图2中示出了3个节点。
在本发明一实施例中,所述接收节点,用于执行A1和A2:
A1:接收所述发送节点发来的交互信息,判断所述交互信息是否能够使得所述接收节点的度量日志发生改变,如果是,则确定所述发送节点需要证实,执行A2;
A2:向所述发送节点发送挑战请求;
所述发送节点,用于执行A3和A4:
A3:在接收到所述挑战请求后,通过本节点的TPM生成的AIK对本节点的存储在TPM内部的PCR中的PCR度量值进行签名,生成签名后的PCR度量值;
A4:将签名后的所述发送节点的PCR度量值和所述发送节点的增量度量日志发送给所述接收节点,其中,所述发送节点的增量度量日志为所述发送节点中未证实过的度量日志;
所述接收节点,用于执行A5-A10:
A5:对所述发送节点的AIK进行验证,通过验证后,判断本节点是否存储有所述发送节点的历史PCR度量值,如果是,则执行A6,否则,执行A9;
A6:判断所述发送节点发来的所述发送节点的PCR度量值与本节点存储的所述发送节点的历史PCR度量值是否相同,如果是,则确定所述发送节点通过预证实,否则,执行A7;
A7:将本节点存储的所述发送节点的历史PCR度量值与接收到的所述发送节点的增量度量日志中的文件内容哈希值进行串接,生成第一串接结果,计算所述第一串接结果的哈希值,执行A8;
A8:判断所述第一串接结果的哈希值与所述发送节点发来的所述发送节点的PCR度量值是否相同,如果是,则确定所述发送节点通过预证实,否则,确定所述发送节点没有通过预证实;
A9:所述接收节点计算所述发送节点发来的所述发送节点的增量度量日志的哈希值,执行A10;
A10:判断所述发送节点的增量度量日志的哈希值与所述发送节点发来的所述发送节点的PCR度量值是否相同,如果是,则确定所述发送节点通过预证实,否则,确定所述发送节点没有通过预证实。
在本发明一实施例中,所述完整性证据,包括:度量日志和PCR度量值;
所述接收节点,在执行所述发出将所述发送节点的完整性证据和所述接收节点的完整性证据保存到区块链中的请求时,具体用于执行C1-C3:
C1:所述接收节点通过本节点的TPM生成的AIK对本节点的PCR度量值进行签名,生成所述签名后的所述接收节点的PCR度量值;
C2:所述接收节点将所述接收节点的增量度量日志、签名后的所述接收节点的PCR度量值、所述发送节点的增量度量日志和签名后的所述发送节点的PCR度量值作为一条事务,将所述事务广播到区块链网络中,以请求将所述事务存储到区块链中,其中,所述接收节点的增量度量日志为所述接收节点中未证实过的度量日志。
在本发明一实施例中,区块链网络中的发生交互的两个节点之外的每个其他节点,用于执行B1-B9:
B1:验证所述事务中的AIK签名是否均是合法的,如果是,执行B2,否则,执行B9;
B2:验证本节点中存储的所述接收节点的历史PCR度量值与所述事务中的所述接收节点的PCR度量值是否相同,如果是,则执行B5,否则,执行B3;
B3:将本节点存储的所述接收节点的历史PCR度量值与所述事务中的所述接收节点的增量度量日志中的文件内容哈希值进行串接,生成第二串接结果,计算所述第二串接结果的哈希值,执行B4;
B4:判断所述第二串接结果的哈希值与所述事务中的所述接收节点的PCR度量值是否相同,如果是,则执行B5,否则,执行B9;
B5:验证本节点中存储的所述发送节点的历史PCR度量值与所述事务中的所述发送节点的PCR度量值是否相同,如果是,则执行B8,否则,执行B6;
B6:将本节点存储的所述发送节点的历史PCR度量值与所述事务中的所述发送节点的增量度量日志中的文件内容哈希值进行串接,生成第三串接结果,计算所述第三串接结果的哈希值,执行B7;
B7:判断所述第三串接结果的哈希值与所述事务中的所述发送节点的PCR度量值是否相同,如果是,则执行B8,否则,执行B9;
B8:投票同意将所述事务保存到区块链中;
B9:投票不同意将所述事务保存到区块链中;
区块链网络中的每个节点,用于执行:在投票通过后,将本地存储所述接收节点的历史PCR度量值更新为所述事务中所述接收节点的PCR度量值,将本地存储所述发送节点的历史PCR度量值更新为所述事务中所述发送节点的PCR度量值;
所述发送节点,进一步用于在投票通过后,将所述事务中所述发送节点的增量度量日志标记为证实过的度量日志;
所述接收节点,进一步用于在投票通过后,将所述事务中所述接收节点的增量度量日志标记为证实过的度量日志。
在本发明一实施例中,所述完整性证据,包括:度量日志和PCR度量值;
所述标准度量信息,包括:标准PCR度量值和标准度量日志;
所述证实节点,用于执行:
H1:所述证实节点判断所述目标节点在所述目标时间段内的PCR度量值,以及,每个所述相关节点的PCR度量值是否与所述标准PCR度量值相匹配,如果是,则确定所述目标云应用通过证实,否则,执行H2;
H2:所述证实节点将所述目标节点在所述目标时间段内的度量日志,以及每个所述相关节点的度量日志与所述标准度量日志进行对比;
如果所述目标节点在所述目标时间段内的度量日志,以及每个所述相关节点的度量日志与所述标准度量日志相同,则确定所述目标云应用通过证实;
如果所述目标节点在所述目标时间段内的度量日志,以及每个所述相关节点的度量日志与所述标准度量日志不相同,则确定所述目标云应用没有通过证实。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本发明各个实施例至少具有如下有益效果:
在本发明实施例中,任一两个节点发生交互时,接收节点会对需要证实的发送节点进行预证实,并在通过预证实后,将发送节点的完整性证据和接收节点的完整性证据保存到区块链中,任意一个节点都可以对目标云应用进行证实,在证实过程中,证实节点只需从区块链中获取目标节点在目标时间段内的完整性证据,以及在目标时间段内与目标节点发生交互的相关节点的完整性证据,证实节点无需对所有的节点进行证实,大大降低了证实过程的开销。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (8)
1.一种云应用的证实方法,其特征在于,
当任意两个节点发生交互时,接收节点对需要证实的发送节点进行预证实,所述接收节点在确定所述发送节点通过预证实时,所述接收节点发出将所述发送节点的完整性证据和所述接收节点的完整性证据保存到区块链中的请求;
区块链网络中的发生交互的两个节点之外的其他节点对所述请求进行投票,投票通过后,将所述发送节点的完整性证据和所述接收节点的完整性证据保存到所述区块链中;
还包括:
证实节点确定待证实的目标云应用所在的目标节点和待证实的目标时间段;
所述证实节点从所述区块链中获取所述目标节点在所述目标时间段内的完整性证据,以及在所述目标时间段内与所述目标节点发生交互的相关节点的完整性证据;
所述证实节点将所述目标节点在所述目标时间段内的完整性证据,以及每个所述相关节点的完整性证据与预先存储的标准度量信息进行对比,确定所述目标云应用是否通过证实;
所述接收节点对需要证实的发送节点进行预证实,包括:
A1:所述接收节点接收所述发送节点发来的交互信息,判断所述交互信息是否能够使得所述接收节点的度量日志发生改变,如果是,则确定所述发送节点需要证实,执行A2;
A2:所述接收节点向所述发送节点发送挑战请求;
A3:所述发送节点在接收到所述挑战请求后,通过本节点的可信平台模块TPM生成的身份证明密钥AIK对本节点的存储在TPM内部的平台配置寄存器PCR中的PCR度量值进行签名,生成签名后的PCR度量值;
A4:所述发送节点将签名后的所述发送节点的PCR度量值和所述发送节点的增量度量日志发送给所述接收节点,其中,所述发送节点的增量度量日志为所述发送节点中未证实过的度量日志;
A5:所述接收节点对所述发送节点的AIK进行验证,通过验证后,判断本节点是否存储有所述发送节点的历史PCR度量值,如果是,则执行A6,否则,执行A9;
A6:所述接收节点判断所述发送节点发来的所述发送节点的PCR度量值与本节点存储的所述发送节点的历史PCR度量值是否相同,如果是,则确定所述发送节点通过预证实,否则,执行A7;
A7:所述接收节点将本节点存储的所述发送节点的历史PCR度量值与接收到的所述发送节点的增量度量日志中的文件内容哈希值进行串接,生成第一串接结果,计算所述第一串接结果的哈希值,执行A8,其中,所述文件内容哈希值为对所述增量度量日志中的文件名称对应的文件内容进行哈希得到的;
A8:所述接收节点判断所述第一串接结果的哈希值与所述发送节点发来的所述发送节点的PCR度量值是否相同,如果是,则确定所述发送节点通过预证实,否则,确定所述发送节点没有通过预证实;
A9:所述接收节点计算所述发送节点发来的所述发送节点的增量度量日志的哈希值,执行A10;
A10:所述接收节点判断所述发送节点的增量度量日志的哈希值与所述发送节点发来的所述发送节点的PCR度量值是否相同,如果是,则确定所述发送节点通过预证实,否则,确定所述发送节点没有通过预证实。
2.根据权利要求1所述的方法,其特征在于,
所述完整性证据,包括:度量日志和PCR度量值;
所述接收节点发出将所述发送节点的完整性证据和所述接收节点的完整性证据保存到区块链中的请求,包括:
C1:所述接收节点通过本节点的TPM生成的AIK对本节点的PCR度量值进行签名,生成所述签名后的所述接收节点的PCR度量值;
C2:所述接收节点将所述接收节点的增量度量日志、签名后的所述接收节点的PCR度量值、所述发送节点的增量度量日志和签名后的所述发送节点的PCR度量值作为一条事务,将所述事务广播到区块链网络中,以请求将所述事务存储到区块链中,其中,所述接收节点的增量度量日志为所述接收节点中未证实过的度量日志。
3.根据权利要求2所述的方法,其特征在于,
所述区块链网络中的发生交互的两个节点之外的其他节点对所述请求进行投票,包括:
区块链网络中的发生交互的两个节点之外的每个其他节点,执行:
B1:验证所述事务中的AIK签名是否均是合法的,如果是,执行B2,否则,执行B9;
B2:验证本节点中存储的所述接收节点的历史PCR度量值与所述事务中的所述接收节点的PCR度量值是否相同,如果是,则执行B5,否则,执行B3;
B3:将本节点存储的所述接收节点的历史PCR度量值与所述事务中的所述接收节点的增量度量日志中的文件内容哈希值进行串接,生成第二串接结果,计算所述第二串接结果的哈希值,执行B4;
B4:判断所述第二串接结果的哈希值与所述事务中的所述接收节点的PCR度量值是否相同,如果是,则执行B5,否则,执行B9;
B5:验证本节点中存储的所述发送节点的历史PCR度量值与所述事务中的所述发送节点的PCR度量值是否相同,如果是,则执行B8,否则,执行B6;
B6:将本节点存储的所述发送节点的历史PCR度量值与所述事务中的所述发送节点的增量度量日志中的文件内容哈希值进行串接,生成第三串接结果,计算所述第三串接结果的哈希值,执行B7;
B7:判断所述第三串接结果的哈希值与所述事务中的所述发送节点的PCR度量值是否相同,如果是,则执行B8,否则,执行B9;
B8:投票同意将所述事务保存到区块链中;
B9:投票不同意将所述事务保存到区块链中;
在投票通过后,进一步包括:
区块链网络中的每个节点将本地存储所述接收节点的历史PCR度量值更新为所述事务中所述接收节点的PCR度量值;
区块链网络中的每个节点将本地存储所述发送节点的历史PCR度量值更新为所述事务中所述发送节点的PCR度量值;
所述发送节点将所述事务中所述发送节点的增量度量日志标记为证实过的度量日志;
所述接收节点将所述事务中所述接收节点的增量度量日志标记为证实过的度量日志。
4.根据权利要求1-3中任一所述的方法,其特征在于,
所述完整性证据,包括:度量日志和PCR度量值;
所述标准度量信息,包括:标准PCR度量值和标准度量日志;
所述证实节点将所述目标节点在所述目标时间段内的完整性证据,以及每个所述相关节点的完整性证据与预先存储的标准度量信息进行对比,确定所述目标云应用是否通过证实,包括:
H1:所述证实节点判断所述目标节点在所述目标时间段内的PCR度量值,以及,每个所述相关节点的PCR度量值是否与所述标准PCR度量值相匹配,如果是,则确定所述目标云应用通过证实,否则,执行H2;
H2:所述证实节点将所述目标节点在所述目标时间段内的度量日志,以及每个所述相关节点的度量日志与所述标准度量日志进行对比;
如果所述目标节点在所述目标时间段内的度量日志,以及每个所述相关节点的度量日志与所述标准度量日志相同,则确定所述目标云应用通过证实;
如果所述目标节点在所述目标时间段内的度量日志,以及每个所述相关节点的度量日志与所述标准度量日志不相同,则确定所述目标云应用没有通过证实。
5.一种云应用的证实系统,其特征在于,包括:
多个节点;
任意两个发生交互节点中的接收节点,用于对需要证实的发送节点进行预证实,在确定所述发送节点通过预证实时,发出将所述发送节点的完整性证据和所述接收节点的完整性证据保存到区块链中的请求;
区块链网络中的发生交互的两个节点之外的其他节点,用于对所述请求进行投票,投票通过后,将所述发送节点的完整性证据和所述接收节点的完整性证据保存到所述区块链中;
当任一节点作为证实节点时,
所述证实节点,用于确定待证实的目标云应用所在的目标节点和待证实的目标时间段;从所述区块链中获取所述目标节点在所述目标时间段内的完整性证据,以及在所述目标时间段内与所述目标节点发生交互的相关节点的完整性证据;将所述目标节点在所述目标时间段内的完整性证据,以及每个所述相关节点的完整性证据与预先存储的标准度量信息进行对比,确定所述目标云应用是否通过证实;
所述接收节点,用于执行A1和A2:
A1:接收所述发送节点发来的交互信息,判断所述交互信息是否能够使得所述接收节点的度量日志发生改变,如果是,则确定所述发送节点需要证实,执行A2;
A2:向所述发送节点发送挑战请求;
所述发送节点,用于执行A3和A4:
A3:在接收到所述挑战请求后,通过本节点的可信平台模块TPM生成的身份证明密钥AIK对本节点的存储在TPM内部的平台配置寄存器PCR中的PCR度量值进行签名,生成签名后的PCR度量值;
A4:将签名后的所述发送节点的PCR度量值和所述发送节点的增量度量日志发送给所述接收节点,其中,所述发送节点的增量度量日志为所述发送节点中未证实过的度量日志;
所述接收节点,用于执行A5-A10:
A5:对所述发送节点的AIK进行验证,通过验证后,判断本节点是否存储有所述发送节点的历史PCR度量值,如果是,则执行A6,否则,执行A9;
A6:判断所述发送节点发来的所述发送节点的PCR度量值与本节点存储的所述发送节点的历史PCR度量值是否相同,如果是,则确定所述发送节点通过预证实,否则,执行A7;
A7:将本节点存储的所述发送节点的历史PCR度量值与接收到的所述发送节点的增量度量日志中的文件内容哈希值进行串接,生成第一串接结果,计算所述第一串接结果的哈希值,执行A8,其中,所述文件内容哈希值为对所述增量度量日志中的文件名称对应的文件内容进行哈希得到的;
A8:判断所述第一串接结果的哈希值与所述发送节点发来的所述发送节点的PCR度量值是否相同,如果是,则确定所述发送节点通过预证实,否则,确定所述发送节点没有通过预证实;
A9:所述接收节点计算所述发送节点发来的所述发送节点的增量度量日志的哈希值,执行A10;
A10:判断所述发送节点的增量度量日志的哈希值与所述发送节点发来的所述发送节点的PCR度量值是否相同,如果是,则确定所述发送节点通过预证实,否则,确定所述发送节点没有通过预证实。
6.根据权利要求5所述的系统,其特征在于,
所述完整性证据,包括:度量日志和PCR度量值;
所述接收节点,在执行所述发出将所述发送节点的完整性证据和所述接收节点的完整性证据保存到区块链中的请求时,具体用于执行C1-C3:
C1:所述接收节点通过本节点的TPM生成的AIK对本节点的PCR度量值进行签名,生成所述签名后的所述接收节点的PCR度量值;
C2:所述接收节点将所述接收节点的增量度量日志、签名后的所述接收节点的PCR度量值、所述发送节点的增量度量日志和签名后的所述发送节点的PCR度量值作为一条事务,将所述事务广播到区块链网络中,以请求将所述事务存储到区块链中,其中,所述接收节点的增量度量日志为所述接收节点中未证实过的度量日志。
7.根据权利要求6所述的系统,其特征在于,
区块链网络中的发生交互的两个节点之外的每个其他节点,用于执行B1-B9:
B1:验证所述事务中的AIK签名是否均是合法的,如果是,执行B2,否则,执行B9;
B2:验证本节点中存储的所述接收节点的历史PCR度量值与所述事务中的所述接收节点的PCR度量值是否相同,如果是,则执行B5,否则,执行B3;
B3:将本节点存储的所述接收节点的历史PCR度量值与所述事务中的所述接收节点的增量度量日志中的文件内容哈希值进行串接,生成第二串接结果,计算所述第二串接结果的哈希值,执行B4;
B4:判断所述第二串接结果的哈希值与所述事务中的所述接收节点的PCR度量值是否相同,如果是,则执行B5,否则,执行B9;
B5:验证本节点中存储的所述发送节点的历史PCR度量值与所述事务中的所述发送节点的PCR度量值是否相同,如果是,则执行B8,否则,执行B6;
B6:将本节点存储的所述发送节点的历史PCR度量值与所述事务中的所述发送节点的增量度量日志中的文件内容哈希值进行串接,生成第三串接结果,计算所述第三串接结果的哈希值,执行B7;
B7:判断所述第三串接结果的哈希值与所述事务中的所述发送节点的PCR度量值是否相同,如果是,则执行B8,否则,执行B9;
B8:投票同意将所述事务保存到区块链中;
B9:投票不同意将所述事务保存到区块链中;
区块链网络中的每个节点,用于执行:在投票通过后,将本地存储所述接收节点的历史PCR度量值更新为所述事务中所述接收节点的PCR度量值,将本地存储所述发送节点的历史PCR度量值更新为所述事务中所述发送节点的PCR度量值;
所述发送节点,进一步用于在投票通过后,将所述事务中所述发送节点的增量度量日志标记为证实过的度量日志;
所述接收节点,进一步用于在投票通过后,将所述事务中所述接收节点的增量度量日志标记为证实过的度量日志。
8.根据权利要求5-7中任一所述的系统,其特征在于,
所述完整性证据,包括:度量日志和PCR度量值;
所述标准度量信息,包括:标准PCR度量值和标准度量日志;
所述证实节点,用于执行:
H1:所述证实节点判断所述目标节点在所述目标时间段内的PCR度量值,以及,每个所述相关节点的PCR度量值是否与所述标准PCR度量值相匹配,如果是,则确定所述目标云应用通过证实,否则,执行H2;
H2:所述证实节点将所述目标节点在所述目标时间段内的度量日志,以及每个所述相关节点的度量日志与所述标准度量日志进行对比;
如果所述目标节点在所述目标时间段内的度量日志,以及每个所述相关节点的度量日志与所述标准度量日志相同,则确定所述目标云应用通过证实;
如果所述目标节点在所述目标时间段内的度量日志,以及每个所述相关节点的度量日志与所述标准度量日志不相同,则确定所述目标云应用没有通过证实。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910604816.8A CN110324422B (zh) | 2019-07-05 | 2019-07-05 | 一种云应用的证实方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910604816.8A CN110324422B (zh) | 2019-07-05 | 2019-07-05 | 一种云应用的证实方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110324422A CN110324422A (zh) | 2019-10-11 |
CN110324422B true CN110324422B (zh) | 2020-08-28 |
Family
ID=68122783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910604816.8A Active CN110324422B (zh) | 2019-07-05 | 2019-07-05 | 一种云应用的证实方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110324422B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113364583B (zh) * | 2021-05-31 | 2024-05-21 | 山东中科好靓基础软件技术有限公司 | 一种基于去中心化网络的远程验证方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103179129A (zh) * | 2013-03-29 | 2013-06-26 | 华南理工大学 | 一种基于云计算IaaS环境的远程证明方法 |
CN103501303A (zh) * | 2013-10-12 | 2014-01-08 | 武汉大学 | 一种针对云平台虚拟机度量的主动远程证明方法 |
CN105975868A (zh) * | 2016-04-29 | 2016-09-28 | 杭州云象网络技术有限公司 | 一种基于区块链的证据保全方法及装置 |
CN107171812A (zh) * | 2017-07-18 | 2017-09-15 | 光载无限(北京)科技有限公司 | 一种基于区块链的无密钥签名基础设施构建方法 |
CN108776616A (zh) * | 2018-06-06 | 2018-11-09 | 北京八分量信息科技有限公司 | 一种确定区块链节点可信状态的方法、区块链节点及系统 |
US10181948B1 (en) * | 2018-01-25 | 2019-01-15 | Fortress Cyber Security, LLC | Secure storage of hashes within a distributed ledger |
CN109325331A (zh) * | 2018-09-13 | 2019-02-12 | 北京航空航天大学 | 基于区块链和可信计算平台的大数据采集交易系统 |
CN109714168A (zh) * | 2017-10-25 | 2019-05-03 | 阿里巴巴集团控股有限公司 | 可信远程证明方法、装置和系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018516026A (ja) * | 2015-03-20 | 2018-06-14 | リヴェッツ・コーポレーションRivetz Corp. | ブロックチェーンを使用したデバイス整合性の自動認証 |
CN107196934B (zh) * | 2017-05-18 | 2019-05-10 | 电子科技大学 | 一种基于区块链的云数据管理方法 |
CN107682308B (zh) * | 2017-08-16 | 2019-12-13 | 北京航空航天大学 | 基于区块链潜信道技术的电子证据保存系统 |
CN108614683A (zh) * | 2018-04-11 | 2018-10-02 | 暨南大学 | 一种基于区块链技术的机动车违章管理系统建设方法 |
CN108768972B (zh) * | 2018-05-16 | 2020-11-27 | 智车优行科技(北京)有限公司 | 车辆数据的存储和访问方法及装置、系统、电子设备 |
-
2019
- 2019-07-05 CN CN201910604816.8A patent/CN110324422B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103179129A (zh) * | 2013-03-29 | 2013-06-26 | 华南理工大学 | 一种基于云计算IaaS环境的远程证明方法 |
CN103501303A (zh) * | 2013-10-12 | 2014-01-08 | 武汉大学 | 一种针对云平台虚拟机度量的主动远程证明方法 |
CN105975868A (zh) * | 2016-04-29 | 2016-09-28 | 杭州云象网络技术有限公司 | 一种基于区块链的证据保全方法及装置 |
CN107171812A (zh) * | 2017-07-18 | 2017-09-15 | 光载无限(北京)科技有限公司 | 一种基于区块链的无密钥签名基础设施构建方法 |
CN109714168A (zh) * | 2017-10-25 | 2019-05-03 | 阿里巴巴集团控股有限公司 | 可信远程证明方法、装置和系统 |
US10181948B1 (en) * | 2018-01-25 | 2019-01-15 | Fortress Cyber Security, LLC | Secure storage of hashes within a distributed ledger |
CN108776616A (zh) * | 2018-06-06 | 2018-11-09 | 北京八分量信息科技有限公司 | 一种确定区块链节点可信状态的方法、区块链节点及系统 |
CN109325331A (zh) * | 2018-09-13 | 2019-02-12 | 北京航空航天大学 | 基于区块链和可信计算平台的大数据采集交易系统 |
Non-Patent Citations (3)
Title |
---|
Trusted Attestation Architecture on an Infrastructure-as-a-Service;Xin Jin,Xingshu Chen,Cheng Zhao,Dandan Zhao;《Tsinghua Science and Technology》;20170911;第22卷(第5期);第469-477页 * |
基于VMI的虚拟机远程证明方案;王伟,等;《网络与信息安全学报》;20181215;全文 * |
基于可信计算的企业云签证协议设计与证明;孙浩男,鹤荣育;《计算机应用研究》;20190614;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110324422A (zh) | 2019-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11861343B2 (en) | Systems, apparatus, and methods for updating a programmable device using a distributed ledger | |
Nikitin et al. | {CHAINIAC}: Proactive {Software-Update} transparency via collectively signed skipchains and verified builds | |
US20180359096A1 (en) | Cryptographically Verifiable Data Structure Having Multi-Hop Forward and Backwards Links and Associated Systems and Methods | |
US9536092B2 (en) | Method, system, and program product for remotely attesting to a state of a computer system | |
EP3542298B1 (en) | Verified boot and key rotation | |
US11949789B2 (en) | Blockchain-enabled computing | |
US11706035B2 (en) | Signature verification using blockchain | |
US11308194B2 (en) | Monitoring device components using distributed ledger | |
US20120324229A1 (en) | System and method for generating keyless digital multi-signatures | |
CN110782251B (zh) | 一种基于智能合约自动化部署区块链网络的方法 | |
CN112287034B (zh) | 一种数据同步方法、设备以及计算机可读存储介质 | |
US20070239748A1 (en) | Management of reference data for platform verification | |
CN109861996B (zh) | 基于区块链的关系证明方法、装置、设备及存储介质 | |
CN114221972A (zh) | 中继区块链系统以及跨链交易方法 | |
US20200076619A1 (en) | Data certification as a service powered by permissioned blockchain network | |
Yang et al. | Ubiquitous verification in centralized ledger database | |
CN111555860A (zh) | 一种区块链节点共识方法、装置、电子设备及存储介质 | |
CN114762288A (zh) | 用于在分布式系统中建立信任关系的系统和方法 | |
CN110324422B (zh) | 一种云应用的证实方法及系统 | |
CN104394166A (zh) | 一种云环境下面向移动终端的证书防伪认证系统及方法 | |
CN111385096A (zh) | 一种区块链网络、签名处理方法、终端及存储介质 | |
CN111147477B (zh) | 一种基于区块链网络的验证方法及装置 | |
CN112737793B (zh) | 一种更新区块链域名配置的方法和装置 | |
Majd et al. | Secure and Cost Effective IoT Authentication and Data Storage Framework using Blockchain NFT | |
CN112653767B (zh) | 数字身份管理方法、装置、电子设备和可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |