Где вы положили ключ шифрования на общедоступный сервер? - PullRequest
6 голосов
/ 01 февраля 2011

Я использую NServiceBus с MSMQ между моим веб-приложением и службой, и мне нужно иметь возможность зашифровать полезную нагрузку сообщения так, чтобы, если сообщение помещается в очередь локально на веб-сервере (узел службы не работает), конфиденциальные данные не могли быть просмотренным.

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

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

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

Ответы [ 4 ]

7 голосов
/ 01 февраля 2011

Можно ли использовать шифрование с открытым / закрытым ключом?Тогда вам нужен только открытый ключ на сервере, и данные расшифровываются с помощью закрытого ключа в другом месте.

1 голос
/ 01 февраля 2011

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

Кажетсякак это единственное ограничение, чтобы сосредоточиться на - подтвердить, что это верно для начинающих.Это исключит подходы DPAPI + локальное хранилище ключей.

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

Аппаратные карты шифрования - единственный способ преодолеть последние сценарии.*

0 голосов
/ 03 февраля 2011

Вы можете переопределить источник, из которого NServiceBus получает свой ключ шифрования - это описано в документации здесь: http://docs.particular.net/nservicebus/security/encryption

Таким образом, вы можете избежать размещения этой конфиденциальной информации в DMZ.

0 голосов
/ 01 февраля 2011

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

...