Почему каждый раз при шифровании с помощью AWS KMS CMK я получаю разные байты? - PullRequest
1 голос
/ 09 июля 2020

Я пытаюсь зашифровать свои конфиденциальные данные, такие как адрес электронной почты пользователя, в базу данных с помощью aws kms cmk. Я использую aws SDK в java.

Я зашифровал поле и сохранил его в базе данных.

Я также могу расшифровать данные.

Но Основная проблема возникает, когда мне нужно запросить данные ... Когда я возвращаю aws sdkbytes, я конвертирую его в базу 68 и сохраняю его.

Почему aws всегда возвращает разные Байт SDK для тех же данных после шифрования? Я не могу просто искать в данных. Я должен принести весь список и расшифровать данные, а затем сопоставить данные. Это занимает много времени.

Пожалуйста, предложите мне хороший способ шифрования данных с помощью ключей aws cmk.

Спасибо Ankit

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Шифрование, если оно выполнено правильно, никогда не бывает детерминированным c. Детерминированность c и постоянное шифрование от abc@abc.com до fa3GeFi2nb52JH0 будет слабым местом, так как это приведет к утечке информации (если вы найдете два одинаковых зашифрованных текста, то вы знаете, что они содержат один и тот же простой текст. точное значение, но вы знаете, что оно то же самое). Технически вы делаете это со случайным значением с именем IV (вектор инициализации), передаваемым процессу шифрования, но не будем копать глубже.

Итак, как поступить с вашим случаем. Вы можете либо:

  • принять его таким, какой он есть сейчас,
  • сказать, что вы хотите, чтобы ваше шифрование было детерминированным c даже за счет более слабой и утечки данных.

Как сделать детерминированное шифрование c? Используйте постоянное значение IV. Я не знаю, можно ли это сделать в AWS и как, но это был бы самый простой способ go.

0 голосов
/ 09 июля 2020

Используя KMS таким образом, вы выполняете шифрование на стороне клиента, которое возлагает на вас ответственность за дешифрование после получения данных. ключей в рамках операций SQL, единственная поддержка - шифрование в остальной части файлового хранилища.

Возможные варианты:

  • Переключиться на собственное MySQL шифрование
  • Переключиться с зашифрованного на ha sh, чтобы соответствовать (не идеально) для этого поля.
  • Выполнить постобработку после сужения до расшифровки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...