From 4aee37b4026a8d0ec6e6c3afb59287d27614dcd3 Mon Sep 17 00:00:00 2001 From: Sanaz Date: Wed, 13 Jan 2021 14:59:21 -0800 Subject: [PATCH] WIP: adds the authentication path recalculation --- rln-research/GID.png | Bin 0 -> 35902 bytes rln-research/GIDauthPath.png | Bin 0 -> 40988 bytes rln-research/merkle-tree-update.md | 49 ++++++++++++++++++++++++++--- 3 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 rln-research/GID.png create mode 100644 rln-research/GIDauthPath.png diff --git a/rln-research/GID.png b/rln-research/GID.png new file mode 100644 index 0000000000000000000000000000000000000000..806d5ce6ea00845484f2ef56d6a7b8648d65f342 GIT binary patch literal 35902 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 Q1OI8M>8d_fwu<=w07fs682|tP literal 0 HcmV?d00001 diff --git a/rln-research/GIDauthPath.png b/rln-research/GIDauthPath.png new file mode 100644 index 0000000000000000000000000000000000000000..b52606d9c0608663301445508bf21fa3c565ff3e GIT binary patch literal 40988 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 =0S$W+R_|<{*2EzV@fO)sF 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 # Solution Overview @@ -113,8 +117,43 @@ HasCommAnc(i, j, lev) = # Updating authentication paths -Lets index the tree nodes following the formula below, for each tree node with index `i`, its right and left child have index `2*i` and `2*i+1`, respectively. The root has index `1`. The sample tree is illustrated below. -When a node gets deleted, +### Node labeling +Consider the following labling procedure through which each node of the tree assigned a label `GID`. The labeling procedure is as follows. For each tree node with index `GID`, its right and left child have index `2*GID` and `2*GID+1`, respectively. The procedure starts by assigning `GID` of `1` to the tree root. The sample labeled tree is illustrated below. This labeling mechanism allows to uniquely address each tree node through its GID. + +![GID](GID.png) + +We utlize this labeling mechanism, to efficiently update peers authentication paths when new join or deletion occurs. The general idea is to additionally store the GID of the tree nodes in the authentication paths. As such, when an update occurs, the peer identifies the GID of the nodes of the tree that are altered as the result of the update operation, and checks whether any of them (based on the GIDs) are part of its own authentication path. If yes, then she updates the correspondign nodes in her authentication path. + +The authentication path shall be of the following structure `authPath=[(H_0,GID_0), ..., (H_d, GID_d)]` where `H_i` indicates the hash value of the node, and `GID_i` signifies the GID of that node. The authentication path of leaf2 is depicted below and has the following values `authPath=[(h,8), (e,5), (c,3), (a,1)]`. + +![GIDauthPath](GIDauthPath.png) + + +Below, we demonestrate how to update a peer's authentication path when a deletion operation occurs. +Consider a peer with `leafIdex_peer` and the authentication path as `authPath_peer=[(H_0,GID_0), ..., (H_d, GID_d)]` +The deleted peer's has the index `leafIndex_del` and the authentication path `authPath_del` + +- calculate the indices of the latered nodes. Note that all the ancestors of the deleted leaf node get altered as the result of the deletion of that node, so we calculate the GIDs of its ancestors at level `i = [0, ..., logn]` + - The GID of the deleted leaf is `GID_leaf_del = leafIndex_del + (2^d) - 1` + - The GID of the ancestor (of the deleted leaf) at level `i` is `GID_leaf_del_anc_i = floor( GID_leaf /(2^i))` (this is equivalent to shifting `GID_leaf ` to right by `i` bits) +- Lets `A=[GID_leaf_del), ..., GID_leaf_del_anc_d]` where `d=logn` +- Find the intersection of `A` and `authPath_peer` i.e., nodes on the peer's authentication path whose GIDs belong to `A`. Once found, replace their hash values with the updated ones. + +An example: +Consider a peer holding leaf 6, with the authentication path `authPath_peer=[(l,11), (g,7), (b,2), (a,1)]` +that recevies the deletion of `leafIndex_del:2` with the `authPath_del= [(h,8), (e,5), (c,3), (a,1)]` +Calculate the GID of the latered nodes, `GID_leaf_del= leafIndex_del + (2^d) - 1 = 2 + 7 =9` thus `A=[9, floor(9/2)=4, floor(9/2^2)=2, floor(9/2^3)=1]` +lets denote the altered hash values of by `i', d', b', a'` +Among the latered node, `authPath_peer` contains GIDs `2` and `1` hence the corresponding hash values must be updated to `b'` and `a'`, respectively. + +### Simplification +We do not have to store the GIDs of inside an authentication path. Insteadm we can follow the following formula to calculate them on the fly. We first calculte the ancestors of the leaf node as we did above, the siblings of those the ancestors constitute the nodes on the authentication path, thus we shall find the GID of the ancestors. +Here is the formula: +`A[0], ..., A[d]` +Siblings of `A[i]` is ` A[i]+1` if `A[i]` is even, otherwise `A[i]-1`. + +For a given leaf index, the GID of the nodes along its authentication path can be computed as: + + -While writing up the preceding solution, I came up with a simiplified version in which we do not need to store the the leaf indices, instead we can compute them on the fly.