# A Redactable Blockchain Scheme Supporting Quantum-Resistance and Trapdoor Updates
## 3 Hierarchical Identity-Based Chameleon Hash with Revocable Subkey
### Syntax of HIBCH-RS  
Trapdoors for chameleon hash functions are usually managed through the key sharing method, but this mechanism requires a lot of interaction time and is less efficient. Therefore, we introduced the mechanism for hierarchical identity management of trapdoors. Trapdoors between users are independent but at the same time controllable. In Figure 1, we show how the chameleon algorithm achieves this property using hierarchical identity. In Figure 1, the trusted party can be a regulator and performs initialization operations in HIBCH-RS. Subsequently, the trusted party delegates the trapdoor to the node members by generating the slave key, while the node members can repeat the operation of the trusted  
Figure 1: Delegating trapdoor model of HIBCH-RS. party to delegate the trapdoor to other nodes. The trusted party public key is used for chameleon hash encryption and the trapdoor information is used to find collisions. In this hierarchical structure, the parent node removes and updates the child node trapdoor information by withdrawing or updating the slave key. This paper introduces a subordinate key between parent and child nodes, unlike the hierarchical identity encryption schemes of [22; 37; 38; 39]. The HIBCH-RS model encompasses six probabilistic polynomial-time (PPT) algorithms: _Setup_, _SlaveKey_, _DelKey_, _Update_, _CH_, and _Forge_. \(Setup(1^{n},q)\rightarrow(PP,MK)\) : Run by any trusted node, the initialization operation of the model takes as inputs the security parameter \(n\), the positive integer \(q\), and outputs the public parameter \(PP\) and the master key \(MK\). \(SlaveKey(1^{n},q,ID)\rightarrow\left(\mathbf{A}_{\mathbf{S}_{id_{e}}},\mathbf{S}_{id_{e}}\right)\): Run by \(\mathbf{id_{e}}\), to obtain the slave key before delegating the trapdoor. The algorithm takes \(n,q,ID\) as inputs and outputs the slave public key \(\mathbf{A}_{\mathbf{S}_{id_{e}}}\), and slave secret key \(\mathbf{S}_{id_{e}}\) for \(ID\). \(DelKey\left(\mathbf{A}_{\mathbf{S}_{id_{e}^{\prime}}},\mathbf{S}_{id_{e}^{\prime}},\mathbf{ id_{e}}\right)\rightarrow\left(\mathbf{F}_{\mathbf{id_{e}}},\mathbf{R}_{\mathbf{id_{e}}},\mathbf{E}_{id_{e}}\right)\): Run by \(\mathbf{id_{e}}\) node, use parent node slave key to generate delegated trapdoor, take slave public key \(\mathbf{A}_{\mathbf{S}_{id_{e}^{\prime}}}\), slave private key \(\mathbf{S}_{id_{e}^{\prime}}\) and \(\mathbf{id_{e}}\) as inputs, output the public key \(\mathbf{F}_{\mathbf{id_{e}}}\), trapdoor \(\mathbf{R}_{\mathbf{id_{e}}}\), and personal key \(\mathbf{E}_{id_{e}}\). \(Update(1^{n},q,\mathbf{id_{e}},\mathbf{RL})\rightarrow\left(\mathbf{A}_{\mathbf{S}_{id_{e}^{ \prime}}},\mathbf{S}_{id_{e}^{\prime}}^{\prime},\mathbf{RL}^{\prime}\right)\) : Run by the \(\mathbf{id_{e}}\), this algorithm is run when the user is untrutworthy in the delegate and needs to recycle and update its key. The algorithm takes \(n,q\), revocation list \(\mathbf{RL}\) and a new random \(tag\mathbf{H}_{\ell}^{\prime}\) as inputs. Outputs are a new slave key pair \(\mathbf{A}_{\mathbf{S}_{id_{e}}}^{\prime},\mathbf{S}_{id_{e}}^{\prime}\) and updated list \(\mathbf{RL}^{\prime}\). \(CH(PP,M)\rightarrow(\mathbf{h},\mathbf{r},(str,\mathbf{ver}))\): Input the public parameters \(PP\) and message \(M\). Compute the hash value \(M\). Outputs the hash value \(\mathbf{h}\), the random field \(\mathbf{r}\), and the verification pair \((str,\mathbf{ver})\).