Вопрос

Есть ли у кого-нибудь практический опыт или ссылка на схему, реализующую схему управления ключами, которая соответствовала бы 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, но помимо недавних замечаний о Семинар по управлению криптографическими ключами по-видимому, там не так уж много реальных реализуемых схем или стандартов.

Что касается того, что я пытаюсь сделать, то это не:

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

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

Это было полезно?

Решение

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

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

ANSI X9.17 - Управление ключами финансовых учреждений вероятно, это наиболее подходящий для ваших нужд вариант с PCI-DSS.Удачи вам в чтении, хотя этот документ представляет собой огромную коллекцию TLA, которую, я знаю, мне определенно было трудно прочитать.(X9.17 обновляется ежегодно, и сейчас доступна последняя версия: NIST SP 800-57 Pt.1 Откр .4 )

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

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

Моя реализация заключалась в том, чтобы приложение Сервера ключей работало в Windows box.Это приложение требовало ввода двух отдельных "мастер-ключей сервера ключей", прежде чем его можно было использовать.Эти ключи были бы известны только администраторам сервера ключей.Эти ключи преобразуются вместе для генерации главного ключа, который хранится только в защищенной памяти во время работы приложения.Затем приложение может автоматически генерировать криптографически надежные Ключи шифрования, которые хранятся в зашифрованном виде с использованием Главного ключа.

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

Удачи.Я надеюсь, что вы тоже сочтете это интересным испытанием!

Другие советы

Вы видели NIST СП 800-57, Рекомендация для ключевого руководства?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top