# Comparison of Distributed Tamper-Proof Storage Methods for Public Key Infrastructures
## 3 Concepts and Evaluation Methods
### Public IPFS-Filecoin
#### Hyperledger Fabric  
Hyperledger Fabric is a private/permissioned Blockchain platform that offers custom programmability using Smart Contracts and a fully custom network setup. In contrast to other, mostly public Blockchain platforms, the network structure of Fabric is heterogeneous. It is comprised of different nodes each with a different role, although each peer role may occur multiple times within the network. **1. Channels**  
On the top level, each custom Fabric network is based around a _Channel_[20]. It hosts a custom Blockchain together with a so-called _World State_ database. The Blockchain is responsible for keeping the transactions logged and persisted within the network while the World State contains all the software-defined objects and their connected states. Fundamentally, it acts as a distributed database that is kept in sync using an ordering mechanism. **2. Organizations**  
Each Channel can be organized within several _Organizations_[21]. They allow for a more business-oriented network structure and encapsulate the clients within it from the rest of the network. Each Organization can host its own CA, which is responsible for issuing new client certificates. Additionally, Smart Contracts can be deployed on an organizational basis. **3. Peers**  
The Peers are physical entities within the network [22]. The Channel and Organization concepts in themselves are purely logical while the Peers are separate clients within the network. Each Peer hosts a full copy of the shared ledger, in this case, the Fabric Blockchain and the World State. To keep these in sync with other Peers and thus reach a consensual basis, each Peer will communicate with other Peers within the same Organization. Furthermore, the peers are responsible for executing and validating Smart Contracts being installed onto them. During network setup, an administrator may choose to configure some Peers as _Endorsement Peers_. Those Peers are on duty of executing, checking, and endorsing Smart Contracts while non-Endorsement Peers only hold and maintain a copy of the Blockchain and the World State. _4. Smart Contracts_  
In the Fabric domain, Smart Contracts are called _Chaincodes_ since they are code fragments, written in high-level languages like Java or GoLang [23] and run on-chain using the underlying Fabric Blockchain. They are the fundamental way to alter the World State by adding, deleting, updating, and reading data from it. Thus, the Smart Contracts allow for decision-based data storage for data that can be stored within the World State database. Methods like cryptographical signature verification, decryption, and permission handling are all possible using the Smart Contract functionality of Fabric. _5. Ordering Service_  
After a Peer issues a new transaction, it needs to be stored on the Blockchain. Since there might be multiple transactions being issued at the same time within the network, a protocol for reaching a consensus must be employed. For this, the role of an _Orderer_ has been created [24]. Using a Byzantine-Fault-Tolerant algorithm, the (multiple) Ordering nodes, which themselves are distinct clients within the network, are responsible for receiving the new transactions from the peers, sorting them by their timestamps and other metrics, and creating a new block for the Blockchain. The new block will hold the newly collected transactions and is sent to every peer within the network. Eventually, every peer will receive the new Block and append it to its local copy of the Blockchain and update the World State accordingly. _NFC-Key Exchange and Evaluation Methods_  
Modern PKI hierarchies and certification chains are often too cumbersome to set up and maintain, especially for SMEs. Some scenarios within the Industry 4.0 domain require the use of trusted communication between the involved parties. Mostly, these scenarios are based on sensor networks and low-cost devices. Thus, large server environments and multiple CA instances are too expensive in terms of resources and maintenance effort for these specific scenarios.