Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python Cryptography

Python Cryptography

Python + Criptografia

Dann Luciano

June 10, 2016
Tweet

More Decks by Dann Luciano

Other Decks in Programming

Transcript

  1. Usando Fernet from cryptography.fernet import Fernet key = Fernet.generate_key() f

    = Fernet(key) token = f.encrypt(b"my deep dark secret") f.decrypt(token) 26
  2. Geração Fernet Token 1. Guardo o Tempo Corrente 2. Escolho

    um IV único 3. Criptografo a mensagem usando o AES 128 no modo CBC com IV e Chave de Criptografia. 4. Computo o HMAC usando a Chave de Assinatura. 5. Concateno Todos dos Campos 6. Codifico o Token usando base64url 44
  3. Verificação Fernet Token 1. Decodifico o Token usando base64url. 2.

    Verifico se o Primeiro Byte do Token é 0x80. 3. Verifico se Tempo Corrente não é muito maior que o Tempo Corrente do Token. 4. Computo o HMAC usando a Chave de Assinatura. 5. Verifico se o HMAC é igual ao HMAC do Token 6. Descriptografo a mensagem usando o AES 128 no modo CBC com o IV e Chave de Criptografia. 45
  4. Usando MultiFernet from cryptography.fernet import Fernet, MultiFernet key1 = Fernet(Fernet.generate_key())

    key2 = Fernet(Fernet.generate_key()) f = MultiFernet([key1, key2]) token = f.encrypt(b"Secret message!") f.decrypt(token) 46