In general, using the output of a KDF as the key for symmetric
encryption is fine.

Alex

On Fri, Jan 10, 2025 at 5:01 PM Sriram R via Cryptography-dev
<cryptography-dev@python.org> wrote:
>
> Hello,
>
> I'm generating a key using Scrypt from a password supplied by the user. I 
> then use this key as follows. This works but my question to the experts: is 
> this an acceptable way to use the AESGCMSIV cipher? Am I doing something 
> that's fundamentally against best practices? In the examples on the 
> Cryptography site, the sample code snippet uses AESGCMSIV.generate_key() 
> method to generate the key instead. The requirement I have is to generate the 
> key that's based on a password.
>
> def gen_salt(size=32):
>   return secrets.token_bytes(size)
>
> def der_key(salt, password):
>   kdf = Scrypt(salt=salt, length=32, n=2**20, r=8, p=1)
>   return kdf.derive(password.encode())
>
> def gen_symmkey(salt, password):
>   symmkey = der_key(salt, password)
>   return symmkey
>
>  key = gen_symmkey(salt, password)
>  aesgcmsiv = AESGCMSIV(key)
>
> ct = aesgcmsiv.encrypt(nonce, file_data, aad)
> with open(fname, "wb") as outfile:
>      outfile.write(ct)
>
> Best,
> PE
>
> _______________________________________________
> Cryptography-dev mailing list
> Cryptography-dev@python.org
> https://mail.python.org/mailman/listinfo/cryptography-dev



-- 
All that is necessary for evil to succeed is for good people to do nothing.
_______________________________________________
Cryptography-dev mailing list
Cryptography-dev@python.org
https://mail.python.org/mailman/listinfo/cryptography-dev

Reply via email to