Как я должен хранить секрет ключа безопасности в среде Windows для соответствия требованиям PCI?

#.net #key #storage

#.net #Клавиша #Хранение

Вопрос:

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

Мы работаем на технологии Microsoft, поэтому .NET и IIS, Windows и т.д.

Как генерируется ключ, два хранителя вводят парольную фразу. Затем система использует их для создания главного ключа. Два хранителя никогда не должны делиться своей фразой друг с другом или любым другим лицом, и они должны подписать форму, в которой говорится об этом. Если они его записывают, он должен находиться в сейфе, доступ к которому есть только у них. Эта фраза также позволяет нам восстановить ключ в случае его потери. При повторном запуске системы используются новые фразы, и процесс начинается заново.

Я думаю, что с точки зрения безопасности у нас все в порядке. Моя основная проблема связана с технологией, как максимально сохранить этот главный ключ в секрете, не покупая аппаратное обеспечение. Лучшее, что я могу придумать с этой точки зрения, — это сначала зашифровать ключ, используя ключ, хранящийся в DLL. Это помогает ИТ-специалистам не разбираться в этом, но я знаю, что это самое слабое звено. В любом случае, после того, как он будет зашифрован с помощью этого, я собираюсь дополнительно зашифровать его с помощью DPAPI, используя режим машинного уровня. Затем сохраните его в реестре с некоторой защитой ACL. Эти последние два шага помогут программистам не расшифровывать его (у них не будет доступа к рабочей среде), а также не позволят злоумышленникам расшифровать его.

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

Этот процесс также позволил бы нам относительно легко расшириться до веб-фермы.

Но, похоже, есть что-то вопиющее, чего мне не хватает. Что-нибудь, что я должен добавить, изменить или удалить? Большое спасибо!