Управление ключами в Windows Azure

Я немного смущен тем, как хранить ключи (для шифрования данных) в Windows Azure.

В соответствии со следующими двумя ссылками (# 1, # 2), рекомендуется хранить ключи/библиотеку ключей в хранилище Windows Azure:

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

Но "Рекомендации по безопасности для разработки приложений для Windows Azure" (№ 3) НЕ рекомендует хранить какие-либо связанные с ключом материалы в Windows Azure:

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

Каков наилучший подход для хранения ключей для шифрования в Windows Azure?

Ответы

Ответ 1

Недавно появившаяся служба хранилища Azure Key отлично подходит для решения проблемы. Это было введено для того, чтобы клавиши могли управляться в центральном месте, и доступ можно легко контролировать. Он также поддерживает обслуживание, поддерживающее HSM, что делает его очень безопасным.

Вот искусство на Начало работы с хранилищем ключей Azure

Ответ 2

Вы увидите из моего комментария в этой первой ссылке, что я согласен с вашими проблемами.:)

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

Поле Примечание: использование шифрования на основе сертификатов в приложениях Windows Azure

Вы заметите, что я также прокомментировал эти недостатки статьи, ссылаясь на этот вопрос:

Прочитайте раздел сертификата azure ServiceConfiguration с помощью С#

Пример использования Azure, встроенного в хранилище сертификатов для шифрования ключей AES (исключая ограничения RSA на зашифрованную длину данных, сохраняя ключ безопасности AES), можно найти в этом проекте:

Codeplex: шифрование таблицы Azure через атрибут

Класс SymmetricKeyHelper в проекте EncryptDecrypt представляет особый интерес.

Престижность @breischl за упоминание об этом и за вклад в проект.

Ответ 4

Всегда есть риск. Если кто-то получает доступ к вашей учетной записи с помощью любых средств (например, с помощью инструмента), они могут узнать ваш ключ. Таким образом, в конце концов, необходимо защитить учетную запись хранилища от доступа к неавторизованному доступу.

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

Только администраторы хранилища (и разработчики, которым доверяют 100%) могут иметь полный доступ к учетной записи производственного хранилища. Тогда вы сохраните ключ в своем хранилище.

Ответ 5

Я знаю, что это может быть немного поздно, но если кто-то ищет быструю и легкую реализацию шифрования для веб-сайтов Azure, я создал (Azure.Security, а исходный код в настоящее время находится на GitHub. Проект свободно основан на Codeplex: Azure Table Encryption by Attribute, но это намного проще и удобнее. Вскоре после этого появится сообщение о том, как его настроить и использовать он.