CREATE SYMMETRIC KEY (Transact-SQL)

Изменения: 17 ноября 2008 г.

Создает симметричный ключ и указывает его свойства.

Значок ссылки на разделСоглашения о синтаксическом обозначении в Transact-SQL

Синтаксис

CREATE SYMMETRIC KEY key_name [ AUTHORIZATION owner_name ]
    WITH <key_options> [ , ... n ]
    ENCRYPTION BY <encrypting_mechanism> [ , ... n ] 

<encrypting_mechanism> ::=
    CERTIFICATE certificate_name 
    |
    PASSWORD = 'password' 
    |
    SYMMETRIC KEY symmetric_key_name 
    |
    ASYMMETRIC KEY asym_key_name    

<key_options> ::=
    KEY_SOURCE = 'pass_phrase'
    |
    ALGORITHM = <algorithm>
    |
    IDENTITY_VALUE = 'identity_phrase'

<algorithm> ::=
    DES | TRIPLE_DES | RC2 | RC4 | RC4_128
    | DESX | AES_128 | AES_192 | AES_256 

Аргументы

  • key_name
    Уникальное имя, под которым симметричный ключ известен в базе данных. Имена временных ключей должны начинаться с одиночного символа номера (#). Например, #temporaryKey900007. Нельзя создать симметричный ключ, в начале имени которого указано более одного символа #.
  • AUTHORIZATION owner_name
    Указывает имя пользователя базы данных или роли приложения, которым будет принадлежать этот ключ.
  • certificate_name
    Указывает имя сертификата, который будет использоваться для шифрования симметричного ключа. Сертификат уже должен существовать в базе данных.
  • 'password'
    Указывает пароль, из которого извлекается ключ TRIPLE_DES для защиты симметричного ключа. Будет выполнена проверка сложности пароля. Следует всегда использовать надежные пароли.
  • symmetric_key_name
    Указывает симметричный ключ, который будет использоваться для шифрования создаваемого ключа. Указанный ключ должен уже существовать в базе данных, и этот ключ должен быть открытым.
  • asym_key_name
    Указывает асимметричный ключ, который будет использоваться для шифрования создаваемого ключа. Асимметричный ключ должен уже существовать в базе данных.
  • KEY_SOURCE ='pass_phrase'
    Указывает парольную фразу, из которой извлекается ключ.
  • IDENTITY_VALUE ='identity_phrase'
    Указывает идентифицирующую фразу, из которой будет формироваться идентификатор GUID для маркировки данных, зашифрованных с помощью временного ключа.

Замечания

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

ms188357.Caution(ru-ru,SQL.90).gifВнимание!
Если симметричный ключ шифруется с использованием пароля вместо открытого ключа главного ключа базы данных, то используется алгоритм шифрования TRIPLE_DES. Поэтому ключи, созданные с помощью сильных алгоритмов шифрования, таких как AES, защищены с помощью более слабого алгоритма.

Необязательный пароль можно использовать для шифрования симметричного ключа перед распространением ключа нескольким пользователям.

Владельцем временных ключей является пользователь, который создает их. Временные ключи действительны только в текущем сеансе.

Аргумент IDENTITY_VALUE формирует идентификатор GUID, с помощью которого маркируются данные, зашифрованные новым симметричным ключом. Маркирование может быть использовано для сопоставления ключей шифрованным данным. Идентификатор GUID, формируемый указанной фразой, будет всегда одним и тем же. Фраза, использованная для создания идентификатора GUID, не может быть повторно использована в текущем сеансе, если только связанный с ней симметричный ключ не был удален. Аргумент IDENTITY_VALUE является необязательным, но рекомендуется использовать его для хранения данных, зашифрованных с применением временного ключа.

Не существует алгоритма шифрования по умолчанию.

ms188357.note(ru-ru,SQL.90).gifВажно!
Защищать конфиденциальные данные с помощью потоковых шифров RC4 и RC4_128 не рекомендуется. SQL Server 2005 не рассеивает шифрование, выполненное с помощью таких ключей.

Сведения о симметричных ключах см. в представлении каталога sys.symmetric_keys.

Разъяснение, касающееся алгоритмов DES

  • Алгоритм DESX был назван неправильно. В симметричных ключах, созданных с параметром ALGORITHM = DESX, фактически используется шифр TRIPLE DES с 192-разрядным ключом. Алгоритм DESX не предоставлен.
  • В симметричных ключах, созданных с параметром ALGORITHM = TRIPLE_DES, используется шифр TRIPLE DES с 128-разрядным ключом.

Разрешения

Необходимо разрешение ALTER ANY SYMMETRIC KEY на базу данных. Если указан аргумент AUTHORIZATION, то требуется разрешение IMPERSONATE для пользователя базы данных или разрешение ALTER для роли приложения. Если для шифрования использовался сертификат или асимметричный ключ, то требуется разрешение VIEW DEFINITION для сертификата или асимметричного ключа.

Примеры

А. Создание симметричного ключа

В следующем примере создается симметричный ключ с именем JanainaKey09 с помощью алгоритма AES 256, а затем новый ключ шифруется с применением сертификата Shipping04.

CREATE SYMMETRIC KEY JanainaKey09 WITH ALGORITHM = AES_256
    ENCRYPTION BY CERTIFICATE Shipping04;
GO

Б. Создание временного симметричного ключа

В следующем примере создается временный симметричный ключ с именем #MarketingXXV из парольной фразы: The square of the hypotenuse is equal to the sum of the squares of the sides. Ключу назначается идентификатор GUID, формируемый из строки Pythagoras и зашифрованный сертификатом Marketing25.

CREATE SYMMETRIC KEY #MarketingXXV 
     WITH ALGORITHM = AES_128,
     KEY_SOURCE 
     = 'The square of the hypotenuse is equal to the sum of the squares of the sides',
     IDENTITY_VALUE = 'Pythagoras'
     ENCRYPTION BY CERTIFICATE Marketing25;
GO

См. также

Справочник

ALTER SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL)
sys.symmetric_keys (Transact-SQL)

Другие ресурсы

Выбор алгоритма шифрования
Иерархия средств шифрования

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

5 декабря 2005 г.

Добавления
  • Добавлено важное примечание об использовании потоковых шифров RC4 и RC4_128.

17 ноября 2008 г.

Добавления
  • Уточнено описание алгоритма DESX.