# A Blockchain Network Admission Control Mechanism Using Anonymous Identity-Based Cryptography
## 3 Proposed Mechanism
### Generation of User Pseudonyms and Private Key Groups
#### 3.3.2 Generation of Multi-Level Identity Pseudonym  
_Pseudonym chain:_ Before applying for each level of identity pseudonym, the user performs anonymous authentication using the pseudonym and corresponding private key of the previous level. For the first-level pseudonym, the user authenticates with their real identity information. The multi-level pseudonyms obtained through this approach form a chained relationship, which we define as a pseudonym chain. The multi-level identity pseudonyms generated are exclusively used for authenticating with the VKGC at each level.  
The user randomly or intentionally constructs a VKGC chain \(p\) of length \(k\) to determine the application order of identity pseudonyms, where \(p=(p_{0},p_{1},\ldots,p_{k-1})\). The head of the chain is \(p_{0}\), and the tail is \(p_{k-1}\). For any \(\alpha ep\), \(\alpha e[1,j]\). The process of generating identity pseudonyms is as follows:  
**Step 1 for the First-Level Pseudonym (\(p_{0}\)):**
* The user, with their real identity \(U\), applies to \(VKGC_{p_{0}}\) for the first-level pseudonym \(ID_{1}\) and the corresponding private key \(ds_{1}\). Upon successful verification, \(VKGC_{p_{0}}\) generates \(ID_{1}=H(U||salt||timestamp)\) and records the relationship between \(ID_{1}-U\).
* To create the private key \(ds_{1}\) for \(ID_{1}\), \(VKGC_{p_{0}}\) calculates \(t_{1}=H_{1}(ID_{1}||hid,N)+kv_{p_{0}}\) and \(t_{2}=kv_{p_{0}}\cdot{t_{1}}^{-1}\ mod\ N\). It sends \(ds_{11}=[t_{2}]P_{1}\) and \([t_{1}]^{-1}P_{1}\) to the user.
* The user selects a secret value \(s_{1}\in[1,N-1]\) and sends \(P_{pub-\alpha 1}=s_{1}P_{2}\) to \(VKGC_{p_{0}}\), which then publicly releases the pair \(\left(ID_{1},P_{pub-\alpha 1}\right)\). Finally, the user calculates \(ds_{12}=s_{1}\cdot[t_{1}]^{-1}P_{1}\) and combines it to form the identity private key \(ds_{1}=ds_{11}+ds_{12}=\left(kv_{p_{0}}+s_{1}\right)\cdot[t_{1}]^{-1}P_{1}\).  
**Step 2 for Intermediate-Level Pseudonyms (\(p_{x}\) where \(x\
eq\)0 and \(x\
eq k-\)1):**  
* The user uses the current pseudonym \(ID_{x}\) and private key \(ds_{x}\) to sign a fixed bit string message.
* \(VKGC_{p_{x}}\) verifies this message by checking the user's pseudonym against the previous level VKGC's published pair \(\left(ID_{x},P_{pub-\alpha x}\right)\).
* Once verified, \(VKGC_{p_{x}}\) generates the next pseudonym \(ID_{x+1}=H(ID_{x}||salt||timestamp)\) and records the relationship \(ID_{x+1}-ID_{x}\).
* \(VKGC_{p_{x}}\) then creates the corresponding private key \(ds_{x+1}\) for \(ID_{x+1}\) using the same method as in **Step 1** and publicly releases \(\left(ID_{x+1},P_{pub-\alpha(x+1)}\right)\).  
**Step 3 for the Last-Level Pseudonym (\(p_{k-1}\)):**  
* The user uses the pseudonym \(ID_{k-1}\) and corresponding private key \(ds_{k-1}\) to verify their identity with \(VKGC_{p_{k-1}}\) and requests the final pseudonym \(ID_{A}\) and its private key \(ds_{A}\).
* The relationship between \(ID_{A}-ID_{k-1}\) is recorded by \(VKGC_{p_{k-1}}\), and the pair \(\left(ID_{A},P_{pub-\alpha}\right)\) is released.  
The process of generating a multi-level identity pseudonym is illustrated in Figure 2.