Hi. I’m exploring concrete to implement statistical operations on encrypted data. In the documentation, I noticed that we can generate public and private keys using keygen() but I didn’t find any example where we could use the keys for encryption or decryption.
I want to implement a scenario where only the authorized user would be able to decrypt the result using their private key (which means encryption would be done using their public key).
Could you please confirm whether it is possible using concrete and how can I implement it ? Thanks
Hi, I did go through the deployment page, but as far as I understand, it mainly focuses on the deployment of the server and client setup.
What I am trying to achieve is to perform encryption using the public key and decryption using the private key in order to introduce access control—basically, only the authorized user should be able to decrypt the data and see the result. Essentially, I want to:
Generate a set of keys (private, public).
Encrypt the data using the public key.
Decrypt the encrypted result using the private key.
For example (roughly speaking):
# Encrypt the data using the public key
encrypted_data = client.encrypt(plaintext_data, public_key)
# Perform computations on the encrypted data (server side)
encrypted_result = server.run(encrypted_data)
# Decrypt the result using the private key
decrypted_result = client.decrypt(encrypted_result, private_key)
Is this possible with Concrete? If so, could you guide me on how to set this up?
For now they are no public keys support in concrete. It’s on our roadmap, but not yet implemented. Where have you seen that the public keys can be generated?