# ARIBC: Online Reporting Based on Identity-Based Cryptography
## 3 Structure of the ARIBC
### Services Offered by the ARIBC  
#### 3.6.1 Integrity and Authenticity Service  
The ARIBC offers the capability of signing all types of data of the ARIBC instance operator and of its registered users. Anyone, including users not registered with the ARIBC, can verify the signature, consequently the authenticity and integrity of the signed data. Two entities are involved in the signing process, namely the Signer and the Verifier. The Signer signs the data with her/his digital signature and the Verifier verifies the validity of the signature and thus the authenticity and integrity of the signed data. The Signer can be any registered user of the ARIBC that has a valid Private Key \(SSK_{signer}\) issued by the specific ARIBC-KMS. The Verifier can be anyone, s/he only needs the publicly available \(ID_{signer}\) of the Signer and the Public Parameters of the specific ARIBC-KMS to validate the signature. The Integrity and authenticity service is implemented by means of the Signature Generation operation and the Signature Verification operation, which are based on the BLMQ identity-based signatures operations [5; 42]. Note that we choose to define \(KPAK\in G_{1}\), \(SSKinG_{2}\) to avoid \(G_{2}\) arithmetic during verification; a description with \(KPAK\in G_{2}\), \(KSAK\in G_{1}\) and signed messages in \(\{0,1\}^{*}\times Z_{n}^{*}\times G_{1}\) would be equally secure, while keeping the signature as short as possible in practice.  
The input to the Signature Generation operation consists of:  
* The DATA to be signed \(DATA\in\{0,1\}^{length}\), (where \(length=\) length of the DATA in bits);
* The ARIBC Public Parameters (\(G_{1}\), \(G_{2}\), \(G_{T}\), \(e\), \(P_{G_{1}}\), \(P_{G_{2}}\), \(KPAK\), \(e(P_{G_{1}},P_{G_{2}})\), \(\phi\), \(H_{2}\));
* The private key of the Signer \(SSK_{signer}\); and
* A random integer \(r\), (\(0<r<p-1\)), generated with the random number generator \(R\) described in Section 3.3. The computations performed in the Signature Generation operation are: 1. \(u=e(P_{G_{1}},P_{G_{2}})^{r}\), where \(e\) is the bilinear pairing mapping, \(e(P_{G_{1}},P_{G_{2}})\in G_{T}\); 2. \(h=H_{2}(DATA,u),H_{2}\), where \(H_{2}\) is the hash function defined in the initial setup phase of the ARIBC; and  
Figure 2: ARIBC user registration process.  
3. \(S=(r+h)SSK_{signer}\). The output (i.e. the signed data) of the Signature Generation operation is the following triplet: \[Signature=[DATA,h,S]\in[\{0,1\}^{length}\times\mathbb{Z}_{p}\times G_{2}]\] The input to the **Signature Verification** operation consists of: 1. The \(Signature=[DATA,h,S]\in[\{0,1\}^{length}\times\mathbb{Z}_{p}\times G_{2}]\) to be validated; 2. The ARIBC-KMS Public Parameters (\(PP\)) \((G_{1},G_{2},G_{T},e,P_{G_{1}},P_{G_{2}},KPAK,e(P_{G_{1}},P_{G_{2}}),\phi,H_{1}, H_{2})\); and 3. the publicly available \(ID_{signer}\) of the Signer. The computations performed in the Signature Verification operation are: 1. \(u=\frac{e(S,H_{1}(ID_{signer})P_{G_{1}}+KPAK)}{e(P_{G_{1}},P_{G_{2}})^{n}}\); and 2. \(H_{2}(DATA,u)\) The output of the Signature Verification operation is a verdict on whether the signature is Valid (if \(h=H_{2}(DATA,u)\)) or _Invalid_ (otherwise). Both the signature generation and the signature verification processes described above are shown in graphical form in Figure 3.  
Figure 3: ARIBC signature generation and signature verification processes.