Geração da chave de criptografia - PBKDF2

PostgreSQL no Raspberry Pi com FreeBSD 13

Foi utilizado o algoritmo PBKDF2 (Função de Derivação de Chave com Base em Senha 2), para gerar a chave usada para encriptar os dados pelos programas Python. A chave gerada foi guardada na íntegra no aplicativo KeePassXC para uso posterior.

#!/usr/bin/env ipython
# -*- coding: utf-8 -*-
"""Gera uma chave para encriptação/desencriptação de dados

Este programa usa o método PBKDF2HMAC para gerar uma chave para
encriptar/desencriptar dados com base no sal e senha fornecidos.

As funções de derivação de chave derivam bytes adequados para
operações criptográficas a partir de senhas ou outras fontes
de dados usando uma função pseudo-aleatória (PRF).

A camada hazmat (hazardous materials/materiais perigosos)
fornece primitivas criptográficas de baixo nível.

"""

import os
import base64
import getpass
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC

# Sal criptográfcico
sal = os.urandom(16)

# Ler a chave na console
senha = getpass.getpass(prompt="Entre com a senha para gerar a chave: ").encode()

kdf = PBKDF2HMAC(
     algorithm=hashes.SHA256(),
     length=32,
     salt=sal,
     iterations=100000,
     backend=default_backend()
)

key = base64.urlsafe_b64encode(kdf.derive(senha))

print("A chave pode ser guardada em um programa gerenciador de senhas como o KeePassXC")
print("Guarde a chave abaixo para uso futuro:")
print(key)

Abaixo está mostrada a saída produzida pelo programa:

Warning: Password input may be echoed.
Entre com a senha para gerar a chave: C*]5]nOMR3bT}2{f
A chave pode ser guardada em um programa gerenciador de senhas como o KeePassXC
Guarde a chave abaixo para uso futuro:
b'JvNU1GfIsnIU4vkVi2UqN9218SWhUe0u9KDFwgHEDOQ='

Referências