g++ -I/usr/local/include -L/usr/local/lib test.cpp lib.cpp -lcryptopp
(i) To use
(ii) To use Falcon encoding to provide data protection in transit.
(iii) To use (optionally) secure chips like Trusted Platform Module (TPM) / Trusted Execution Environment (TEE) and secure memory like Error Correcting Code - Random Access Memory (ECC-RAM) and Persistent Memory (P-Mem) for an extra layer of security. (API support is not implemented in this library.)
The data structure
Replicas of a message inside the
To protect the messages in transit, we use the Falcon encoding scheme. Our rate-less scheme assumes a highly adversarial channel
After adding each message to
These components convert the secure buffer messages to secure symbols (Falcon codes) and vice-versa. However, they do not modify the existing transmission channel
This component comprises a couple of security checks at a receiver.
First, the
Second,
Third, if replication factor
Finally, since the cryptographic keys are stored for each index between sessions,
The outer layer key for symbols,
For every session
K_S <- Hash(K_S)
Nonce <- PRNG(K_S)
K_M <- KeyGen(K_S)
For every message M
K_M <- Hash(K_M)
k_{ENC}, k_{HMAC} <- K_M {inner layer key}
M_{AE} <- AuthEnc(M, k_{ENC}, k_{HMAC})
End For
k_{ENC}, k_{HMAC} <- K_S {outer layer key}
For every symbol S
S_{AE} <- AuthEnc(S, k_{ENC}, k_{HMAC})
End For
End For