Шифрование данных в SQL ServerData Encryption in SQL Server

SQL Server содержит функции шифрования и расшифровки данных с помощью сертификата и асимметричного или симметричного ключа.SQL Server provides functions to encrypt and decrypt data using a certificate, asymmetric key, or symmetric key. Все они содержатся во внутреннем хранилище сертификатов.It manages all of these in an internal certificate store. Хранилище использует иерархию шифрования, обеспечивающую безопасность сертификатов и ключей на уровне, находящемся выше в иерархии.The store uses an encryption hierarchy that secures certificates and keys at one level with the layer above it in the hierarchy. Эта область возможностей SQL Server называется секретным хранилищем.This feature area of SQL Server is called Secret Storage.

Самым быстрым режимом шифрования, поддерживаемым функциями шифрования, является шифрование с помощью симметричного ключа.The fastest mode of encryption supported by the encryption functions is symmetric key encryption. Этот режим подходит для управления большими томами данных.This mode is suitable for handling large volumes of data. Симметричные ключи могут быть зашифрованы сертификатами, паролями или другими симметричными ключами.The symmetric keys can be encrypted by certificates, passwords or other symmetric keys.

Ключи и алгоритмыKeys and Algorithms

SQL Server поддерживает несколько алгоритмов шифрования симметричным ключом, включая DES, Triple DES, RC2, RC4, 128-разрядный RC4, DESX, 128-разрядный AES, 192-разрядный AES и 256-разрядный AES.SQL Server supports several symmetric key encryption algorithms, including DES, Triple DES, RC2, RC4, 128-bit RC4, DESX, 128-bit AES, 192-bit AES, and 256-bit AES. Алгоритмы реализуются с помощью API-интерфейса Windows Crypto.The algorithms are implemented using the Windows Crypto API.

В пределах соединения с базой данных SQL Server может поддерживать несколько открытых симметричных ключей.Within the scope of a database connection, SQL Server can maintain multiple open symmetric keys. Открытый ключ получается из хранилища и доступен для расшифровки данных.An open key is retrieved from the store and is available for decrypting data. Не нужно указывать, какой симметричный ключ будет использоваться для расшифровки фрагмента данных.When a piece of data is decrypted, there is no need to specify the symmetric key to use. Каждое зашифрованное значение содержит идентификатор ключа (идентификатор GUID ключа), использованного для его шифрования.Each encrypted value contains the key identifier (key GUID) of the key used to encrypt it. Если расшифрован и открыт верный ключ, то ядро сопоставляет зашифрованный поток байтов с открытым симметричным ключом.The engine matches the encrypted byte stream to an open symmetric key, if the correct key has been decrypted and is open. Этот ключ затем используется для выполнения расшифровки и возвращения данных.This key is then used to perform decryption and return the data. Если верный ключ не открыт, возвращается значение NULL.If the correct key is not open, NULL is returned.

Пример, демонстрирующий работу с зашифрованными данными в базе данных, см. в разделе Шифрование столбца данных.For an example that shows how to work with encrypted data in a database, see Encrypt a Column of Data.

Внешние ресурсыExternal Resources

Дополнительные сведения о шифровании см. в одном из следующих источников.For more information on data encryption, see the following resources.

ResourceResource ОписаниеDescription
Шифрование SQL ServerSQL Server Encryption Содержит общие сведения о шифровании в SQL Server.Provides an overview of encryption in SQL Server. Этот раздел содержит ссылки на дополнительные статьи.This topic includes links to additional articles.
Иерархия шифрованияEncryption Hierarchy Содержит общие сведения о шифровании в SQL Server.Provides an overview of encryption in SQL Server. В этом разделе приводятся ссылки на дополнительные статьи.This topic provides links to additional articles.

См. такжеSee also