Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
базе данных SQL в Microsoft Fabric
SQL Server шифрует данные с помощью иерархической инфраструктуры шифрования и управления ключами. На каждом уровне данные низшего уровня шифруются на основе комбинации сертификатов, асимметричных ключей и симметричных ключей. Асимметричные ключи и симметричные ключи можно хранить за пределами SQL Server в модуле расширенного управления ключами (EKM).
На следующем рисунке показано, что на каждом уровне иерархии средств шифрования шифруются данные более нижнего уровня и отображаются наиболее распространенные конфигурации шифрования. Доступ к началу иерархии, как правило, защищается паролем.
Следует учитывать следующие основные понятия.
Для лучшей производительности данные следует шифровать с помощью симметричных ключей, а не с помощью сертификатов и асимметричных ключей.
Основные ключи базы данных (DMK) защищены главным ключом службы (SMK). Главный ключ службы создается программой установки SQL Server и шифруется с помощью API защиты данных Windows (DPAPI).
Возможны другие иерархии шифрования с дополнительными уровнями.
Модуль расширенного управления ключами хранит симметричные или асимметричные ключи вне SQL Server.
Прозрачное шифрование данных (TDE) должно использовать симметричный ключ, называемый ключом шифрования базы данных, который защищен либо сертификатом, хранящимся под защитой DMK
master
базы данных, либо асимметричным ключом, хранящимся в EKM.Главный ключ службы и все главные ключи базы данных являются симметричными ключами.
На следующем рисунке показаны те же сведения другим образом.
Диаграмма иллюстрирует следующие дополнительные основные понятия.
На этом рисунке стрелки указывают стандартные иерархии шифрования.
Симметричные и асимметричные ключи в EKM могут защитить доступ к симметричным и асимметричным ключам, хранящимся в SQL Server. Пунктирная линия, связанная с EKM, указывает, что ключи в EKM могут заменить симметричные и асимметричные ключи, хранящиеся в SQL Server.
Предыстория
SQL Azure и SQL Server используют алгоритм RSA для асимметричного шифрования. Алгоритм RSA не может использоваться в его "чистой" форме, так как он не имеет семантической безопасности и не обеспечивает защиту от выбранных атак с открытым текстом или атак шифров из-за ее детерминированной природы. Шифрование одного сообщения дважды создает один и тот же шифр.
Для обеспечения безопасности сообщения требуют заполнения. В настоящее время данные шифруются с использованием RSA с применением схемы заполнения PKCS #1 версии 1.5. Определенная слабость PKCS#1 версии 1.5 заключается в том, что он не очень избыточен: байты, встроенные в него, являются случайными и не имеют строго определенного значения. Последовательность случайных байтов может быть "правильно заполнена" с небольшой вероятностью. Злоумышленнику потребуется около миллиона прерванных рукопожатий, чтобы восстановить открытый текст путем подбора силы.
Новые версии PKCS#1 v1.5 описывают новый тип заполнения под названием "Оптимальное асимметричное расширенное заполнение" (OAEP), который использует хэш-функцию для добавления значительной внутренней избыточности, что делает её невероятной для случайной строки соотвествовать формату заполнения. OAEP вводит определённое хэширование в процессе шифрования RSA перед проверкой заполнения. Хэширование от OAEP значительно изменяет способность злоумышленника понять, что они видят.
В предварительной версии SQL Server 2025 (17.x) появилась поддержка шифрования на основе RSA OAEP-256. Переключение на режим заполнения OAEP инициируется уровнем совместимости базы данных. Эта функция доступна для баз данных на уровне совместимости базы данных 170 или выше.
Механизмы шифрования
SQL Server предоставляет следующие механизмы шифрования:
Функции Transact-SQL
асимметричные ключи;
симметричные ключи;
Сертификаты
прозрачное шифрование данных.
Функции Transact-SQL
Отдельные элементы можно зашифровать при их вставке или обновлении с помощью функций Transact-SQL. Дополнительные сведения см. в разделе ENCRYPTBYPASSPHRASE и DECRYPTBYPASSPHRASE.
Сертификаты
Сертификат открытого ключа, как правило, просто называемый сертификатом, представляет собой цифровую подпись, которая привязывает значение открытого ключа к идентификатору пользователя, устройства или службы, содержащей соответствующий закрытый ключ. Сертификаты поставляются и подписываются центром сертификации (certification authority, CA). Сущность, получающая сертификат от центра сертификации, является субъектом этого сертификата. Как правило, сертификаты содержат следующие сведения.
Открытый ключ субъекта.
Идентификационные данные субъекта, например имя и адрес электронной почты.
Срок действия, то есть интервал времени, на протяжении которого сертификат будет считаться действительным.
Сертификат действителен только в течение указанного в нем периода, который задается в каждом сертификате при помощи дат ( Valid From и Valid To ), определяющих начало и окончание срока действия. По истечении срока действия сертификата его субъект должен запросить новый сертификат.
Идентификационные данные поставщика сертификата.
Цифровая подпись поставщика.
Эта подпись подтверждает действительность связи между открытым ключом и идентификационными данными субъекта. (В процессе создания цифровой подписи данные, вместе с некоторыми секретными данными отправителя, преобразуются в тег, называемый подписью.)
Главное преимущество сертификатов в том, что они позволяют не хранить на узлах совокупность паролей отдельных субъектов. Вместо этого узел просто устанавливает доверие в издателе сертификата, который затем может подписать неограниченное количество сертификатов.
Когда узел (например, защищенный веб-сервер) указывает, что конкретный поставщик сертификата является доверенным корневым центром сертификации, он неявно выражает доверие к политикам, которые поставщик использовал при определении связей для изданных им сертификатов. Таким образом, узел выражает уверенность в том, что поставщик проверил идентификационные данные субъекта сертификата. Узел делает поставщика доверенным корневым центром сертификации, помещая самостоятельно подписанный сертификат поставщика, содержащий открытый ключ поставщика, в хранилище сертификатов доверенного корневого центра сертификации на главном компьютере. Промежуточные или подчиненные центры сертификации являются доверенными только в том случае, если к ним ведет правильный путь от доверенного корневого центра сертификации.
Поставщик может отозвать сертификат до истечения срока его действия. При этом отменяется связь открытого ключа с идентификационными данными, указанными в сертификате. Каждый издатель поддерживает список отзыва сертификатов, который можно использовать программами при проверке допустимости любого данного сертификата.
Самозаверяемые сертификаты, созданные SQL Server, соответствуют стандарту X.509 и поддерживают поля X.509 версии 1.
асимметричные ключи;
Асимметричный ключ состоит из закрытого ключа и соответствующего открытого ключа. Каждый из этих ключей позволяет дешифровать данные, зашифрованные другим ключом. На выполнение асимметричных операций шифрования и дешифрования требуется сравнительно много ресурсов, но они обеспечивают более надежную защиту, чем симметричное шифрование. Асимметричный ключ можно использовать для шифрования симметричного ключа перед его сохранением в базе данных.
симметричные ключи;
Симметричный ключ — это ключ, используемый и для шифрования, и для дешифрования данных. Данные при использовании симметричного ключа шифруются и дешифруются быстро, и он вполне подходит для повседневной защиты конфиденциальных данных, хранящихся в базе данных. Чтобы защитить материал ключа симметричного ключа, SQL Server сохраняет материал ключа в зашифрованной форме, использующий асимметричное шифрование RSA. Исторически этот режим шифрования использовал PKCS#1 версии 1.5; начиная с уровня совместимости базы данных 170, шифрование использует режим OAEP-256.
прозрачное шифрование данных.
Прозрачное шифрование данных (TDE) является особым случаем шифрования с использованием симметричного ключа. TDE шифрует всю базу данных, используя симметричный ключ, который называется ключом шифрования базы данных. Ключ шифрования базы данных защищен другими ключами или сертификатами, защищенными динамическим ключом или асимметричным ключом, хранящимся в модуле EKM. Дополнительные сведения см. в разделе "Прозрачное шифрование данных" (TDE).
База данных SQL Fabric
В базе данных SQL в Microsoft Fabric, Always Encrypted, EKM и TDE в настоящее время не поддерживаются. В базе данных SQL в Microsoft Fabric идентификатор Microsoft Entra для пользователей базы данных является единственным поддерживаемым методом проверки подлинности. Дополнительные сведения см. в разделе "Авторизация в базе данных SQL" в microsoft Fabric и функциях сравнения.