Подтвердить что ты не робот

Как правильно управлять закрытым ключом

Кто-нибудь получил практический опыт или ссылку на схему, которая реализует схему управления ключами, которая будет соответствовать стандарту безопасности PCI DSS?

Очевидно, существует немало реализаций, связанных с количеством компаний, совместимых с PCI DSS, но поиск их деталей сложный. Когда он переходит к хранению частных данных, обсуждение обычно останавливается, при использовании которого используется алгоритм шифрования. После этого обычно есть утверждение о правильном хранении закрытого ключа, но не обсуждается практические способы его выполнения или такие вещи, как периодическое изменение ключа или предоставление ключа для приложений и т.д.

В частности, меня интересуют ваши требования из разделов 3.5 и 3.6 стандарта PCI DSS.

3.5.2 Безопасное хранение криптографических ключей в наименьших возможных местах и ​​формах.

3.6.a Проверьте наличие процедур управления ключами для ключей, используемых для шифрования данных держателей карт. Примечание. Многочисленные отраслевые стандарты для управления ключами доступны из различных ресурсов, включая NIST, которые можно найти в http://csrc.nist.gov.

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

Я рассмотрел публикации криптографии NIST, как предлагает документ требований PCI DSS, но кроме недавних нот Семинар по управлению криптографическими ключами, похоже, не существует много способов реализации реально реализуемых схем или стандартов.

Что я не пытаюсь сделать:

  • Храните пароли + соли в качестве хэшей для проверки подлинности,
  • Выберите сильный симметрийный алгоритм шифрования данных,
  • Избегайте необходимости хранить личные данные в первую очередь.
  • Избегайте необходимости в управлении ключами с помощью других механизмов: физической безопасности, безопасности баз данных, драконов и мастеров и т.д.

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

4b9b3361

Ответ 1

Я знаком с болью, с которой вы проходите. Мы пытались обновить старую систему EFT в соответствии с требованиями PCI. Управление ключами было, конечно, (с моей точки зрения программного обеспечения) самой сложной частью.

Думаю, я также наткнулся на рекомендации NIST для управления ключами, которые Мартин опубликовал, и получил невероятное разочарование в связи с отсутствием конкретных примеров.

ANSI X9.17 - Управление ключевыми финансовыми институтами, вероятно, наиболее соответствует вашим потребностям, с PCI-DSS. Удачи, читая его, хотя, документ представляет собой массивную коллекцию TLA, которую я знаю, я, конечно, изо всех сил пытался читать.

Когда разочарование превратилось в отчаяние, я наткнулся на The Electronic Money Mill, который является вымышленной сказкой, с большим количеством соответствующих технических ссылок. Глава 17 обсуждает X9.17 и может помочь с пониманием.

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

Моя реализация заключалась в том, чтобы приложение Key Server запускалось в окне Windows. Это приложение потребовало ввода двух отдельных "основных ключей сервера ключей", прежде чем он мог быть использован. Эти ключи будут известны только администраторам ключевых серверов. Эти ключи объединяются для генерации главного ключа, который хранится только в защищенной памяти во время работы приложения. Затем приложение может автоматически генерировать криптографически сильные Key Encrypting Keys, которые хранятся в зашифрованном виде с использованием главного ключа.

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

Удачи. Надеюсь, вам также станет интересной задача!

Ответ 2

Вы видели NIST SP 800-57, Рекомендация для управления ключами?