Соответствие PCI требует ежегодной ротации ключей. Определение «ротации ключей», с которым я все время сталкиваюсь, - это расшифровка ваших данных, а затем повторное шифрование с новым ключом. В самом деле? Все там каждый год расшифровывают / шифруют все свои зашифрованные данные?
В настоящее время у меня есть 16 баз данных на 3 серверах, с несколькими таблицами в каждой базе данных - и это число будет продолжать расти. Выполнение этого вручную создает огромную возможность ошибки, делая мои данные нечитаемыми. Да, я мог бы написать что-нибудь для этого ... но действительно ли это то, что все делают?
Итак, вопрос в том, решаете ли вы это вручную или можете порекомендовать доступный (субъективно, я знаю) сторонний инструмент?
Я видел несколько предложений об «изменении» ключей на более высоком уровне иерархии. Мы используем часто рекомендуемую иерархию главного ключа базы данных, шифрующего сертификат, который шифрует симметричный ключ, который шифрует данные.
Во-первых, это не соответствует определению «вращение клавиш». Во-вторых, даже если я изменю DMK или Cert, это не предотвратит дешифрование данных с помощью того же симметричного ключа, который предположительно злоумышленник украл / взломал.
Ваше определение «вращающихся ключей» верно. Вам необходимо расшифровать данные «старым» ключом и повторно зашифровать их «новым» ключом. Есть множество магазинов, которые делают это ежегодно, и да - это много работы, и лучше всего это делать с помощью автоматизированной программы (вы, вероятно, можете написать свой собственный инструмент - я не знаю сторонних инструментов, но я уверен, что они есть).
<Rant>
Интерпретация требования 3.6.4 PCI-DSS 2.0 «Криптографические ключи изменяются для ключей, срок действия которых истек (например, по прошествии определенного периода времени…») как «Вы должны менять ключи ежегодно или world will end "недальновидно и, по мнению моего / моего аудитора, неверно: если вы используете достаточно надежный алгоритм (например, AES-256) и не имеете известных нарушений вашего ключа, ротация ваших ключей не обеспечивает вам существенно большей безопасности - фактически он создает новую уязвимость (старый ключ должен быть доступен программе столько, сколько потребуется для расшифровки / повторного шифрования ваших данных - даже если машина, выполняющая эту работу, безопасна, она все равно включает в себя ввод ключа в более одного места).
Обратите внимание: если вы хотите успешно привести этот аргумент, вам понадобятся две вещи: аудитор, имеющий базовые знания о криптографии, и оправданная политика, которая идет вразрез с Публикация NIST 800-57 (в частности, таблица «рекомендуемых криптопериодов»). Наша политика, например, требует AES-256 (который не подвержен практическим атакам и потребует вечности для грубой силы) и принудительно выполняет ротацию ключей, когда кто-то с прямым доступом к ключам прекращает работу (ключевой персонал системного администратора, некоторые офицеры уровня C. ).
</Rant>