## 4 Proposed Architecture
### Construction of the Proposed Scheme  
The proposed scheme includes the following four entities: KGC, blind signer, requester, and verifier. Further, it involves the following six sub-algorithms for producing the certificateless blind signature: setup, partial private key setting (PPKS), secret value setting (SVS), private key setting (PKS), public key setting (PBKS), blind signature, and verification.In Table 1, we provide an explanation about the notations used in the proposed algorithm. Therefore, for representing the whole process of certificateless blind signature, we aimed to provide the simplest explanation by using the following steps:  
1. Setup: In this sub-algorithm, the KGC selects the following parameters: * A hyper elliptic curve (C); * A divisor (\(\mathcal{D}\)), where \(D\) is the divisor in C; * The hash function (\(h\)); * Select \(\vartheta\) from {1, 2,..., \(n-1\)} and the size of \(n=2^{80}\).  
After the above process, the KGC determines the master public key using \(\gamma=\vartheta\mathcal{D}\). Then, it publishes the set of selected parameters, {C, \(\mathcal{D}\), \(Y\), \(n=2^{80}\)}.  
2. Partial private key setting (PPKS): In order to set the partial private key for the participating users (verifier and signer) with identity \(\mathcal{J}\mathcal{D}_{u}\), the KGC performs the following sub-steps: * It selects \(X_{\text{u}}\) from {1, 2,..., \(n-1\)}; * It computes \(\alpha_{\text{u}}=X_{\text{u}}\). \(\mathcal{D}\) and \(\beta_{\text{u}}=X_{\text{u}}+\vartheta\). \(\alpha_{\text{u}}\); * It computes \(\delta_{\text{u}}=\beta_{\text{u}}\). \(\mathcal{D}\); * It sends (\(\beta_{\text{u}}\), \(\delta_{\text{u}}\)) to the users (verifier and signer) with identity \(\mathcal{J}\mathcal{D}_{u}\).  
The users can verify the pair (\(\beta_{\text{u}}\), \(\delta_{\text{u}}\)) such as: \(\beta_{\text{u}}\). \(\mathcal{D}=\alpha_{\text{u}}+\alpha_{\text{u}}\).\(Y=\alpha_{\text{u}}+\alpha_{\text{u}}\).\(Y=X\mathcal{D}+\alpha_{\text{u}}\) (\(\partial\mathcal{D}\)) = \(\mathcal{D}\) (\(\beta_{\text{u}}\)) = \(\mathcal{D}\).  
3. Secret value setting (SVS): The user (verifier and signer) with identity \(\mathcal{J}\mathcal{D}_{u}\) selects \(\mathcal{G}_{\text{u}}\) from {1, 2,..., \(n-1\)} and keeps it as his secret value.  
4. Private key setting (PKS): The user (verifier and signer) set the private key as \(\sigma_{\text{u}}=<\mathcal{G}_{\text{u}}\), \(\beta_{\text{u}}>\).  
5. Public key setting (PBKS): The user (verifier and signer), with identity \(\mathcal{J}\mathcal{D}_{u}\), compute \(\chi_{u}=\sigma_{\text{u}}\).\(\mathcal{D}\). The user sets his/her public key as \(\mathcal{R}_{\text{u}}=<\chi_{u^{\prime}}\delta_{\text{u}}>\).  
* Blind signature: In this part, the blind signer first selects \(\omega\) from {1, 2,..., \(n-1\)}, computes \(\Delta_{1}=\omega/\mathcal{G}_{\text{s}}\), \(\Delta_{2}=\beta_{\text{s}}/\omega\), and then sends it (\(\Delta_{1}\), \(\Delta_{2}\)) to the requester. Further, the requester proceeds as follows:It selects (\(r\), \(\varphi\)) from {1, 2,..., \(n-1\)};  
It computes \(\mathcal{E}=\mathcal{H}(m,\Delta_{1},\Delta_{2},\sigma_{\rm r})\) and \(\mathcal{E}=\mathcal{E}+\varphi\);  
It sends \(\mathcal{E}\) to the blind signer. The blind signer generates the partial blind signature \(\mathcal{S}^{*}=\mathcal{E}_{\rm s}-\mathcal{E}_{\rm s}\) and sends it to the requester;  
The requester, then, generates the hash value as \(r=(m,\,\mathrm{Ns})\) and full blind signature, using \(\mathcal{S}^{**}=\mathcal{S}^{*}-r\), and transfers it (\(\mathcal{S}^{**},r\)) to the verifier.  
Verification: The verifier can verify the blind signature if either of the following equalities are satisfied: \(r^{*}=(m,\,\mathrm{Ns})=r=(m,\,\mathrm{Ns})\) or \(r^{*}=r\).