Безопасное хранение KMS-шифрования с помощью aws_encryption_sdk для python - PullRequest
0 голосов
/ 24 сентября 2018

Я хочу зашифровать oauth-доступ и обновить токен для сохранения в моей базе данных Postgres для дальнейшего использования в моем проекте Django.Я использую Python aws_encryption_sdk, вызывая функцию шифрования, следуя приведенному ниже примеру: https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/python-example-code.html. Я могу успешно зашифровать и расшифровать свой токен, используя следующий метод и аналогичный метод дешифрования.

    ciphertext, encryptor_header = aws_encryption_sdk.encrypt(
        source=access_token_plaintext,
        key_provider=master_key_provider
        )
    print('Ciphertext: ', ciphertext)

Теперь я хочу сохранить зашифрованный текст в поле модели, прикрепленном к пользователю, чтобы я мог совершать вызовы API для пользователя без необходимости их повторной аутентификации.Но хотя зашифрованный текст успешно содержит зашифрованный access_token, он также содержит мой AWS ARN + keyId в виде открытого текста, поэтому хранение зашифрованного текста, похоже, не соответствует всей цели шифрования.чтобы извлечь только зашифрованный текст токена, что я и пытался сделать.

Есть ли лучший способ?Безопасно ли хранить мой ARN как часть байтового объекта зашифрованного текста?Нужно ли хранить все это в отдельной базе данных?

Когда я печатаю зашифрованный текст, я получаю ответ такого типа:

    b'\x01\x00{\x03\x0cencryption_context_example_string\x00\x0cencryption_context_example_match\x00\x15aws-crypto-public-key\abcdefghighlmnopqrstuvwxyz/1234567==\x00\x01\x00\x07aws-kms\x00Karn:aws:kms:region_name:account-number:key/ABCD1234-ABCD-1234-A1B2-ABCD1234\x00\xcd...'
...