证书透明化日记事情道理
2019-11-18杂谈搜奇网49°c
A+ A-目次
- 观点
- 一致性证实和审计证实
- 默克一致性证实
- 默克审计证实
- 运用证实
译:How Log Proofs Work
观点
证书通明日记运用特别的加密算法有助于证书和日记的大众检察。这个特别的加密算法称作默克哈希树(Merkle hash tree) ,一种包括哈希叶和结点的简朴二叉树(图1)。叶子是已附加到日记中的单个证书的哈希。节点是成对的子叶或成对的子节点的哈希。统统叶子和结点的根,即根哈希称作默克树哈希(Merkle tree hash)。当日记服务器对默克树哈希(及其他信息)署名,称为署名树头(STH:signed tree head )。
按期地,能够一小时一次,日记服务器将新获取到的证书追加到日记中。经由过程新获取到的证书建立零丁的默克树哈希,该哈希和之前已在哈希树中的旧默克树哈希结合成新的默克树哈希(图2)。对新的默克树哈希署名建立新署名树头。反反复复的延续,之前提交到日记中的统统证书形成了一个不停增进的默克树。
一致性证实和审计证实
由于这类组织体式格局,默克哈希树让日记高效敏捷的证实两件事:
- 统统证书被一致性地附加到日记中
- 特定的证书附加到日记中
日记经由过程供应两个加密证实来支撑:默克一致性证实和默克审计证实。
默克一致性证实
默克一致性证实考证一条日记的恣意两个版本是一致的:即,新版本包括旧版本的统统,换句话说,统统新条目紧跟在上个版本的条目后。假如证实日记是一致的,意味着没有逾期的证书且插进去到日记中,日记中没有证书被修正,且日记也没有分支过。
为了演示默克一致性证实道理,假定要证实图2和图3中的日记是一致的。第一步,须要证实旧默克树哈希是新默克树哈希的子集。然后再证实新默克树哈希是旧默克树哈希加上统统中心新附加证书的结点哈希。一致性证实是盘算这两者所须要的起码中心节点哈希集。
这类情况下,一致性证实由以下中心节点哈希构成:k
,l
和m
(见图4)。用k
和m
建立旧默克树哈希,因而证实旧树存在且没有被转变。然后用l
和k
建立n
,用n
和m
建立日记新默克树哈希。假如盘算的默克树哈希和日记中的相匹配,则日记是一致性的。
监视器和审计按期运用一致性证实来考证日记是不是一般。由于监视器一般有和日记中一样的证书列表,能够自行盘算一致性证实,且考证日记中的一致性。设想能够简朴的查询日记服务器,获得恣意两个已署名树头的一致性证实。
默克审计证实
默克审计证实能够考证日记中是不是有特定的证书。这是一项主要的证实使命,由于证书通明模子须要的是统统TLS客户端谢绝没有在日记中涌现的证书。
为显现默克审计证实的道理,假定要考证d3
证书(d
叶子)已附加到图3中里的日记中。默克审计证实是盘算叶与树根之间的统统节点所需的缺乏节点哈希。假如依据审计途径盘算的根哈希和当前日记中的默克树哈希相匹配,则该叶子存在于树中(或换句话说,日记中存在该证书)。
这个例子中,默克审计证实包括以下节点哈希:c,i,n
(见图5)。认为d
已知,则能够用c
盘算出j
。然后用i
和j
盘算出m
,再用n
和m
盘算出该日记的默克树哈希。同理,假如要考证证书d4
已被附加到日记中,日记给你发送f, l, m
结点哈希的一致性证实。已知叶子哈希( e
),也就能用叶子哈希f
盘算出结点哈希k
,然后用结点哈希l
盘算出结点哈希n
,再用结点哈希m
和n
盘算出日记的默克树哈希。
任何人都能够要求日记的默克树哈希,也能考证某个证书是不是存在日记中。审计一般发送这些范例的要求到日记中,以便为TLS客户端考证证书。假如默克审计证实没有盘算出和默克树哈希相匹配的根哈希,则意味着日记中不存在该证书。
运用证实
证实供应审计须要的加密数据。关照,审计相识日记的很少信息,然则只管相识有限,证实能为审计考证日记的一致性和特定证书是不是已附加到日记中。
若没有证实,审计能够接见或归去统统的日记纪录,以行使其职责。证实让数据交流更高效,日记和审计交流的数据量也少的多。举个例子,包好1000万个证书的日记仅须要24个结点哈希一致性证实。假如日记中增加到2000万个证书,一致性证实的结点哈希数目才到25个。
证实关于监视器也很有效,只管体式格局略有不同。监视器一般保留监控到的日记副本,以便搜检日记的每一个证书,且注重特定的证书。假如监视器搜检监控到的特定日记的一致性,能够本身盘算出一致性证实,然后考证日记的一致性。同样地,假如监视器老是须要特定的证书是不是存在于日记中,也能够本身盘算出审计证实,然后用该证实考证证书。