Открытие симметричного ключа SQL Server 2008 с разными паролями?

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

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

Я знаю, что есть возможность добавить пароли к существующему симметричному ключу, используя

ALTER KEY MySymKey ADD ENCRYPTION BY PASSWORD = 'newpasswd'

Вопрос в том, делает ли это уже добавление нового шифрования по паролю, и каждый пароль здесь будет открывать его, или ключ просто дополнительно зашифрован новым паролем и нужно предоставить все пароли и/или другие данные шифрования (сертификаты, другие ключи и т.д.), чтобы открыть этот ключ?

Если верно последнее, как я могу создать несколько дубликатов одного и того же симметричного ключа, но с разными паролями?


person Alexander Galkin    schedule 30.12.2011    source источник


Ответы (1)


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

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

Что касается вашего вопроса: добавление нового шифрования к ключу не удаляет предыдущие шифрования. К ключу можно добавить несколько паролей. Хотя, судя по вашему примеру, вы планируете добавить пароль к симметричному ключу, что, скорее всего, неверно.

Причина, по которой иерархия имеет значение, определяется двумя факторами:

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

  • ключи шифрования данных необходимо периодически менять, чтобы уменьшить вероятность коллизии и смягчить некоторые многие аналитические атаки, а также уменьшить поверхность, уязвимую в случае потери ключа. Это делается путем простой смены ключа и шифрования новых данных с помощью нового ключа (повторное шифрование старых данных не только недопустимо, но и сводит на нет само преимущество ротации ключей). Новый ключ шифруется сертификатом пользователя/асимметричным ключом/паролем, открывая его для использования.

Пожалуйста, потратьте некоторое время и прочитайте соответствующие статьи MSDN (начните со статьи, указанной выше), этот материал действительно легко испортить, и вы получите либо «идеальное шифрование» (т.е. потеряете способность расшифровывать данные) или, что еще хуже, много дыма и зеркал, которые запутают тот факт, что ваше управление ключами и иерархия просто сломаны.

person Remus Rusanu    schedule 30.12.2011
comment
Нет, я тоже так делаю. Я знаком с классической иерархией шифрования, и мне действительно нужно было какое-то управление правами для асимметричного ключа, чтобы не всем было разрешено его использовать. Поскольку я не могу использовать сервер MS SQL для этой политики, я реализовал решение, в котором я храню множество версий одного и того же асимметричного ключа, зашифрованных с использованием разных паролей — пользователь должен указать правильный пароль для применения асимметричного ключа. Это то, что я в основном хотел. - person Alexander Galkin; 31.01.2012