Выбор алгоритма шифрованияChoose an Encryption Algorithm

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics даПараллельное хранилище данныхParallel Data WarehouseyesПараллельное хранилище данныхParallel Data WarehouseПрименимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics даПараллельное хранилище данныхParallel Data WarehouseyesПараллельное хранилище данныхParallel Data Warehouse

Шифрование — одно из нескольких эффективных средств защиты, позволяющих администраторам обеспечивать безопасность экземпляра SQL ServerSQL Server.Encryption is one of several defenses-in-depth that are available to the administrator who wants to secure an instance of SQL ServerSQL Server.

Алгоритмы шифрования определяют преобразования данных, которые не могут с легкостью отменить неавторизованные пользователи.Encryption algorithms define data transformations that cannot be easily reversed by unauthorized users. SQL ServerSQL Server позволяет администраторам и разработчикам выбирать из нескольких алгоритмов, в том числе DES, Triple DES, TRIPLE_DES_3KEY, RC2, RC4, RC4 со 128-разрядным ключом, DESX, AES со 128-разрядным ключом, AES со 192-разрядным ключом и AES с 256-разрядным ключом.allows administrators and developers to choose from among several algorithms, including DES, Triple DES, TRIPLE_DES_3KEY, RC2, RC4, 128-bit RC4, DESX, 128-bit AES, 192-bit AES, and 256-bit AES.

Примечание

Начиная с версии SQL Server 2016 (13.x);SQL Server 2016 (13.x)все алгоритмы, отличные от AES_128, AES_192 и AES_256, являются нерекомендуемыми.Beginning with SQL Server 2016 (13.x);SQL Server 2016 (13.x), all algorithms other than AES_128, AES_192, and AES_256 are deprecated. Чтобы использовать старые алгоритмы (что не рекомендуется), необходимо установить уровень совместимости базы данных 120 или ниже.To use older algorithms (not recommended) you must set the database to database compatibility level 120 or lower.

Не существует одного алгоритма, идеально подходящего для всех случаев. Информация по качеству каждого из них лежит за пределами электронной документации по SQL ServerSQL Server .No single algorithm is ideal for all situations, and guidance on the merits of each is beyond the scope of SQL ServerSQL Server Books Online. Однако можно руководствоваться следующими общими принципами:However, the following general principles apply:

  • Надежные алгоритмы шифрования обычно потребляют больше ресурсов ЦП, чем менее надежные средства шифрования.Strong encryption generally consumes more CPU resources than weak encryption.

  • Использование длинных ключей, как правило, дает более надежные результаты, чем шифрование с помощью коротких ключей.Long keys generally yield stronger encryption than short keys.

  • Асимметричное шифрование медленнее симметричного.Asymmetric encryption is slower than symmetric encryption.

  • Длинные сложные пароли надежнее, чем короткие пароли.Long, complex passwords are stronger than short passwords.

  • Симметричное шифрование обычно рекомендуется использовать, только если ключ хранится локально; асимметричное — если ключи должны передаваться по каналу связи.Symmetric encryption is generally recommended when they key is only stored locally, asymmetric encryption is recommended when keys need to be shared across the wire.

  • При необходимости шифровать большие объемы данных, шифруйте данные с помощью симметричного ключа, а симметричный ключ — с помощью асимметричного ключа.If you are encrypting lots of data, you should encrypt the data using a symmetric key, and encrypt the symmetric key with an asymmetric key.

  • Зашифрованные данные не поддаются сжатию, но сжатые данные могут быть зашифрованы.Encrypted data cannot be compressed, but compressed data can be encrypted. При использовании сжатия данных, выполняйте эту операцию до их шифрования.If you use compression, you should compress data before encrypting it.

Важно!

Алгоритм RC4 поддерживается только в целях обратной совместимости.The RC4 algorithm is only supported for backward compatibility. Когда база данных имеет уровень совместимости 90 или 100, новые материалы могут шифроваться только с помощью алгоритмов RC4 или RC4_128.New material can only be encrypted using RC4 or RC4_128 when the database is in compatibility level 90 or 100. (Не рекомендуется.) Используйте вместо этого более новые алгоритмы, например AES.(Not recommended.) Use a newer algorithm such as one of the AES algorithms instead. В SQL Server 2012 (11.x)SQL Server 2012 (11.x) и более поздних версиях материалы, зашифрованные с помощью алгоритмов RC4 или RC4_128, могут быть расшифрованы на любом уровне совместимости.In SQL Server 2012 (11.x)SQL Server 2012 (11.x) and higher material encrypted using RC4 or RC4_128 can be decrypted in any compatibility level.

Многократное использование одного и того же RC4 или RC4_128 KEY_GUID для различных блоков данных приведет к одному и тому же ключу RC4, так как SQL ServerSQL Server не предоставляет рассеивание автоматически.Repeated use of the same RC4 or RC4_128 KEY_GUID on different blocks of data will result in the same RC4 key because SQL ServerSQL Server does not provide a salt automatically. Повторное использование ключа RC4 является типичной ошибкой, снижающей надежность шифра.Using the same RC4 key repeatedly is a well-known error that will result in very weak encryption. Таким образом, ключевые слова RC4 и RC4_128 являются устаревшими.Therefore, we have deprecated the RC4 and RC4_128 keywords. В будущей версии Microsoft SQL Server этот компонент будет удален.This feature will be removed in a future version of Microsoft SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

Дополнительные сведения об алгоритмах шифрования и о технологии шифрования см. в разделе Основные понятия безопасности руководства разработчика для платформы .NET Framework в сети MSDN.For more information about encryption algorithms and encryption technology, see Key Security Concepts in the .NET Framework Developer's Guide on MSDN.

Пояснение к алгоритмам DES:Clarification regarding DES algorithms:

  • DESX был именован неправильно.DESX was incorrectly named. Симметричные ключи, созданные с параметром ALGORITHM = DESX, в действительности используют шифр TRIPLE DES с 192-битным ключом.Symmetric keys created with ALGORITHM = DESX actually use the TRIPLE DES cipher with a 192-bit key. Алгоритм DESX не предоставляется.The DESX algorithm is not provided. В будущей версии Microsoft SQL Server этот компонент будет удален.This feature will be removed in a future version of Microsoft SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

  • Симметричные ключи, созданные с параметром ALGORITHM = TRIPLE_DES_3KEY, используют шифр TRIPLE DES с 192-битным ключом.Symmetric keys created with ALGORITHM = TRIPLE_DES_3KEY use TRIPLE DES with a 192-bit key.

  • Симметричные ключи, созданные с параметром ALGORITHM = TRIPLE_DES, используют шифр TRIPLE DES с 128-битным ключом.Symmetric keys created with ALGORITHM = TRIPLE_DES use TRIPLE DES with a 128-bit key.

ЗадачаTask ТипType
Шифрование с помощью симметричного ключа.Encrypting using a symmetric key. CREATE SYMMETRIC KEY (Transact-SQL)CREATE SYMMETRIC KEY (Transact-SQL)
Шифрование с помощью асимметричного ключа.Encrypting using an asymmetric key. CREATE ASYMMETRIC KEY (Transact-SQL)CREATE ASYMMETRIC KEY (Transact-SQL)
Кодирование с использованием сертификата.Encrypting using a certificate. CREATE CERTIFICATE (Transact-SQL)CREATE CERTIFICATE (Transact-SQL)
Шифрование файлов базы данных с помощью прозрачного шифрования данных.Encrypting database files using transparent data encryption. Прозрачное шифрование данных (TDE)Transparent Data Encryption (TDE)
Как зашифровать столбец таблицы.How to encrypt one column of a table. Шифрование столбца данныхEncrypt a Column of Data

См. также:See Also

Шифрование SQL Server SQL Server Encryption
Иерархия средств шифрованияEncryption Hierarchy