Рейтинг:0

Детерминированное маскирование данных

флаг jp

Мы разрабатываем структуру маскирования данных в основном для маскировки PII. Наш масштаб довольно велик, и маскирование будет выполняться во время загрузки, поэтому мы хотим, чтобы маскирование выполнялось очень эффективно. Некоторые ограничения, которые у нас есть, заключаются в том, что мы хотели бы, чтобы маскирование было детерминированным и обратимым. Я рассмотрел шифрование AES для шифрования PII, особенно AES SIV, на моем macbook, это занимает около 2 миллисекунд, что может быть не идеальным для нашего масштаба.

Было бы здорово услышать от сообщества, есть ли какие-либо альтернативы AES SIV, которые являются более быстрыми (и детерминированными), или есть ли какие-либо другие альтернативы шифрованию AES.

Вот мой метод шифрования. Я использую Cryptodome.Cipher AES


    def encrypt (ключ: байты, текст: строка) -> строка:
        одноразовый номер = нет
        шифр = нет
        encoded_text = text.encode('utf-8')

        одноразовый номер = get_random_bytes (AES.block_size)
        шифр = AES.new (ключ, AES.MODE_SIV, одноразовый номер = одноразовый номер)
        cipher_text, тег = cipher.encrypt_and_digest(закодированный_текст)

        ret_cipher_text = одноразовый номер + зашифрованный_текст
        ret_cipher_text = тег + ret_cipher_text
        вернуть b64encode(ret_cipher_text).decode()

Производительность этого шифрования ~2 миллисекунды для небольшого текста.

poncho avatar
флаг my
2 мс для шифрования AES небольшого текста? Конечно, процессоры на макбуках не так уж и плохи — я подозреваю, что вы используете плохой (низкопроизводительный) шифратор AES…
Paul Uszak avatar
флаг cn
Фраза _"детерминированный_" появляется здесь три раза. Что конкретно вас беспокоит?
флаг jp
@poncho - Да, мелкий текст. Я использую Cryptodome.Cipher AES. Есть ли более быстрые альтернативы? Может злодей?
флаг jp
@PaulUszak - я хочу знать, действительно ли производительность шифрования AES SIV неоптимальна, и есть ли какие-либо альтернативные способы маскирования данных, чтобы один и тот же открытый текст маскировался в тот же самый зашифрованный текст и мог быть преобразован обратно в открытый текст. .
Paul Uszak avatar
флаг cn
_"или если есть какие-либо другие альтернативы шифрованию AES."_ : Вы обнаружите, что (кроме http://tls) не существует альтернативных шифрований с точки зрения маркетинга. AES или бюст.
Paul Uszak avatar
флаг cn
Вы уверены, что хотите этого: _"один и тот же открытый текст маскируется в точно такой же зашифрованный текст"_ ? Это говорит всем о том, что ничего не изменилось и считается плохим тоном.
Рейтинг:2
флаг us

тут дело скорее всего питон и нет АЕС.

При аппаратной поддержке (AES-NI) AES обычно можно вычислить менее чем за ~1 цикл ЦП/байт, если у вас достаточно много независимых задач AES (например, в режиме счетчика), и примерно за 2-5 циклов ЦП/байт, если нет (например, в режиме CBC).

АЭС-СИВ теперь эффективно работает, связывая операцию, подобную CBC, с ее выходом, используемым в качестве начального счетчика для режима счетчика. Таким образом, ожидаемая производительность составляет около 3-6 тактов на байт для оптимизированных реализаций.

Два миллисекунды на процессоре с тактовой частотой 1 ГГц (у вас, вероятно, часы выше) составляют около 2 миллионов циклов процессора. Даже если предположить довольно плохую реализацию на старом процессоре с AES-NI, «плохая» реализация будет достигать около 20-30 циклов на байт, но нигде не приближается к 2 миллион.

Таким образом, проблема, скорее всего, связана с тем, что интерпретатор должен делать больше, чем с скомпилированной/оптимизированной интерпретацией.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.