# Getting started

**Concrete** is a fully homomorphic encryption (FHE) library that implements Zama's variant of TFHE. TFHE is based on Learning With Errors (LWE), a well studied cryptographic primitive believed to be secure even against quantum computers.

Concrete is currently released in alpha. The API is not stable and likely to change short term.

Concrete is an open source library. The code is available on Github.

In cryptography, a raw value is called a **message** (also sometimes called a **cleartext**), an encoded message is called a **plaintext** and an encrypted plaintext is called a **ciphertext**.

Using FHE in a Rust program with Concrete consists in:

generating a secret key using secure parameters

encoding input messages into fixed-precision plaintexts

encrypting plaintexts using the secret key to produce ciphertexts

operating homomorphically on ciphertexts

decrypting the resulting ciphertexts into plaintexts using the secret key

decoding plaintexts to get the final output messages

Here is an example program that adds two ciphertexts:

Concrete being a library, all functions are wrapped in a `Result`

to let you manage errors the way you see fit for your program.

This guide will walk you through using the Concrete library to build homomorphic programs, explaining the underlying key concepts as they are encountered.

Last updated