DeterministicAead один ключ, но изменить вектор инициализации? - PullRequest
0 голосов
/ 29 апреля 2020

Я использую Googles Tink DeterministicAead. Чего я хотел бы добиться, так это использовать один и тот же ключ в течение длительного времени, но менять шифротекст для определенного открытого текста каждые 24 часа (по причинам GDPR).

Можно ли каким-то образом выбрать новый вектор инициализации раз в 24 часа? Код, который я использую:

KeysetHandle keysetHandle = KeysetHandle.generateNew(
                DeterministicAeadKeyTemplates.AES256_SIV);
DeterministicAead daead = keysetHandle.getPrimitive(DeterministicAead.class);
byte[] ciphertext = daead.encryptDeterministically(clearText.getBytes(), "".getBytes());

ciphertext действительно определен c, так что хотя бы эта часть хороша: -)

Я хочу иметь возможность расшифровать зашифрованный текст в BigQuery, так что пользовательские примитивы меня немного волнуют.

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

1 Ответ

0 голосов
/ 29 апреля 2020

По определению (из того, что я читаю в этих документах), кажется, нет способа указать IV (так как тогда это не будет детерминировано c).

DeterministicAead Примитив, похоже, AES с MA C, без IV.

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

Помните, что схемы c не являются семантически безопасными.

...