I have a use case where one individual(i1) hosts hyperledger fabric system. Other individual(i2) is also interested to use the system, but is unsure if his data is secure in the system. I can create two separate channels or even make private data store and give access to data to only the data owner. However, since i1 is in control of the system, he could see data through couchdb or by accessing docker containers. How to secure the database, so that the second individual (i2) can be convinced that his data is not accessible by the first individual (i1)?
-
If using the private data feature https://hyperledger-fabric.readthedocs.io/en/release-1.4/private-data/private-data.html, (i1) won't see the private data of (i2) so the couchDB scenario won't apply. A hash of that data, however (which is endorsed, ordered) is written to the ledgers of every peer on that channel you mention. The hash serves as evidence of the transaction without revealing the content of the txn. – Paul O'Mahony Aug 07 '19 at 10:56
-
Even if private data store is used, the data is still residing on the system managed by i1. So, i1 can still access hyperledger docker containers and access any data. Am I correct? I assume the problem would be solved if the data in world state would be encrypted by key that only i2 has access to. But I am unsure about how this is to be applied. – Bukks Aug 08 '19 at 04:19
-
Nope. The private data can be defined to not be distributed (but a private data hash proof is written in the ledger on org i1 as evidence) beyond org i2. Eg https://hyperledger-fabric.readthedocs.io/en/release-1.4/private-data/private-data.html . Encryption will help yes, ledger data at rest can be encrypted via file system encryption on the peer, and data in-transit is encrypted via TLS. With that, I'll refer you to the Fabric FAQ https://hyperledger-fabric.readthedocs.io/en/release-1.4/Fabric-FAQ.html - good luck! – Paul O'Mahony Aug 09 '19 at 08:38
-
Thanks for trying to help, but I don't think you understood my problem statement. – Bukks Aug 09 '19 at 09:10
1 Answers
@Bukks for just simply encrypting data in Hyperledger Fabric couchdb you can follow this tutorial https://www.skcript.com/svr/end-to-end-encryption-hyperledger-fabric/ . as per your concern that is related to data privacy in case where network is owned by i1 in fabric network to perform any transaction a user needs an MSP and i2 user/admin MSP will be required to do so. that i1 will not have. so accessing anything from docker container wouldn't be possible. now talking about couchdb while spinning up couchdb container you can specify username password using env variable in docker-compose.yml file so even accessing couchdb wouldn't be possible.
i2 as an organisation, Considering your particular scenario when i2 joins the network peer, couchdb and MSP will be created dynamically for i2, at same time a random password generation or user can provide password for couchdb.

- 383
- 4
- 15