kyber_py.kyber package
Submodules
kyber_py.kyber.default_parameters module
- kyber_py.kyber.default_parameters.DEFAULT_PARAMETERS = {'kyber_1024': {'du': 11, 'dv': 5, 'eta_1': 2, 'eta_2': 2, 'k': 4, 'q': 3329}, 'kyber_512': {'du': 10, 'dv': 4, 'eta_1': 3, 'eta_2': 2, 'k': 2}, 'kyber_768': {'du': 10, 'dv': 4, 'eta_1': 2, 'eta_2': 2, 'k': 3}}
Lattice parameters for the Kyber key exchange.
To be used for initialisation of
Kyberobjects.
- kyber_py.kyber.default_parameters.Kyber1024 = <kyber_py.kyber.kyber.Kyber object>
Key exchange object that uses Kyber1024 parameters internally.
Provides about 256 bit level of security.
- kyber_py.kyber.default_parameters.Kyber512 = <kyber_py.kyber.kyber.Kyber object>
Key exchange object that uses Kyber512 parameters internally.
Provides about 128 bit level of security.
- kyber_py.kyber.default_parameters.Kyber768 = <kyber_py.kyber.kyber.Kyber object>
Key exchange object that uses Kyber768 parameters internally.
Provides about 192 bit level of security.
kyber_py.kyber.kyber module
- class kyber_py.kyber.kyber.Kyber(parameter_set)
Bases:
object- decaps(sk, c, key_length=32)
Decapsulate a key from a ciphertext using a secret key.
Algorithm 9 (CCA KEM Decapsulation) https://pq-crystals.org/kyber/data/kyber-specification-round3-20210804.pdf
- NOTE:
We switch the order of the input (c, sk) as (sk, c) to align with FIPS 203
- encaps(pk, key_length=32)
Generate a random key, encapsulate it, return both it and ciphertext.
Algorithm 8 (CCA KEM Encapsulation) https://pq-crystals.org/kyber/data/kyber-specification-round3-20210804.pdf
- NOTE:
We switch the order of the output (c, K) as (K, c) to align encaps output with FIPS 203.
- keygen()
Generate a public public key and private secret key.
Algorithm 7 (CCA KEM KeyGen) https://pq-crystals.org/kyber/data/kyber-specification-round3-20210804.pdf
- set_drbg_seed(seed)
Change entropy source to a DRBG and seed it with provided value.
Setting the seed switches the entropy source from
os.urandom()to an AES256 CTR DRBG.Used for both deterministic versions of Kyber as well as testing alignment with the KAT vectors
- Note:
currently requires pycryptodome for AES impl.
- Parameters:
seed (bytes) – random bytes to seed the DRBG with