Udostępnij za pośrednictwem


Tworzenie klucza SYMETRYCZNEGO (Transact-SQL)

Generuje klucz symetryczny i określa jego właściwości.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

CREATE SYMMETRIC KEY key_name [ AUTHORIZATION owner_name ]
    [ FROM PROVIDER Provider_Name ]
    WITH <key_options> [ , ... n ]
        |
    ENCRYPTION BY <encrypting_mechanism> [ , ... n ]
<key_options> ::=
    KEY_SOURCE = 'pass_phrase'
    |
    ALGORITHM = <algorithm>
    |
    IDENTITY_VALUE = 'identity_phrase'
    |
        PROVIDER_KEY_NAME = 'key_name_in_provider' 
    |
    CREATION_DISPOSITION = {CREATE_NEW | OPEN_EXISTING }
<algorithm> ::=
    DES | TRIPLE_DES | TRIPLE_DES_3KEY | RC2 | RC4 | RC4_128
    | DESX | AES_128 | AES_192 | AES_256 
<encrypting_mechanism> ::=
        CERTIFICATE certificate_name 
    |
    PASSWORD = 'password' 
    |
    SYMMETRIC KEY symmetric_key_name 
    |
    ASYMMETRIC KEY asym_key_name

Argumenty

  • Key_name
    Określa unikatową nazwę, pod którą znany jest klucz symetryczny w bazie danych.Nazwy kluczy tymczasowych powinien rozpoczynać się jedną cyfrę.Na przykład # temporaryKey900007.Nie można utworzyć symetrycznego klucz o nazwie zaczynającej się na więcej niż jeden #.Nie można utworzyć tymczasowego symetrycznego klucz przy użyciu EKM dostawca.

  • AUTORYZACJAowner_name
    Określa nazwę użytkownika bazy danych lub rola aplikacji , która będzie właścicielem tego klucz.

  • OD DOSTAWCYProvider_Name
    Określa zarządzania klucza rozszerzonego (EKM), dostawca i nazwę.Nie można wyeksportować klucz z urządzenia EKM.dostawca musi być zdefiniowany najpierw za pomocą dostawcy tworzenie instrukcja.Aby uzyskać więcej informacji o tworzeniu dostawców zewnętrznych klucz , zobacz Opis Extensible Key Management (EKM).

  • KEY_SOURCE ='pass_phrase"
    Określa frazę przebiegu, z której klucz.

  • IDENTITY_VALUE ='identity_phrase"
    Określa frazę tożsamości, z których można wygenerować identyfikatora GUID dla znaczników danych zaszyfrowanych za pomocą tymczasowego klucz.

  • key_name_in_provider
    Określa nazwę odwołuje się do zarządzania klucza rozszerzonego dostawca.

  • CREATION_DISPOSITION = CREATE_NEW
    Tworzy nowy klucz można na urządzeniu Extensible Key Management.Jeśli klucz już istnieje na urządzeniu, instrukcja nie powiedzie się z powodu błędu.

  • CREATION_DISPOSITION = OPEN_EXISTING
    Mapy SQL Server klucz symetrycznego do istniejącego kluczrozszerzonego Key Management.Jeśli CREATION_DISPOSITION = OPEN_EXISTING nie zostanie podana, to domyślnie CREATE_NEW.

  • certificate_name
    Określa nazwę certyfikat , który będzie używany do szyfrowania symetrycznego klucz.certyfikat musi już istnieć w bazie danych.

  • 'password'
    Określa hasło, z którego TRIPLE_DES klucz , z którą chcesz zabezpieczyć kluczsymetryczny.passwordmusi spełniać wymogi zasady haseł systemu Windows komputer, na którym jest uruchomione wystąpienie SQL Server.Należy zawsze używać silnych haseł.

  • symmetric_key_name
    Określa klucz symetryczny używany do szyfrowania klucz , który jest tworzony.Określony klucz musi już istnieć w bazie danych, a klucz musi być otwarty.

  • asym_key_name
    Określa klucz asymetrycznego ma być używany do szyfrowania klucz , który jest tworzony.Tego klucz asymetrycznego musi już istnieć w bazie danych.

Uwagi

Podczas tworzenia klucz symetrycznego klucz symetrycznego musi być zaszyfrowany przy użyciu co najmniej jedną z następujących czynności: certyfikat, hasło, kluczsymetryczny, kluczasymetrycznego lub DOSTAWCA.klucz może mieć więcej niż jednego szyfrowanie każdego typu.Innymi słowy pojedynczy klucz symetryczny można szyfrować za pomocą wielu certyfikatów, haseł, kluczy symetrycznych i klucze asymetryczne w tym samym czas.

PrzestrogaPrzestroga

W przypadku symetrycznego klucz jest szyfrowana przy użyciu hasła zamiast publicznego klucz głównego bazy danych klucz, używany jest algorytm szyfrowanie TRIPLE DES.Z tego powodu klucze utworzone za pomocą algorytmu szyfrowanie mocnego, takich jak AES, sami są zabezpieczone przez słabszego algorytmu.

Opcjonalne hasło może służyć do szyfrowania symetrycznego klucz przed dostarczeniem klucz do wielu użytkowników.

Tymczasowe klucze są własnością użytkownika, który je tworzy.Tymczasowe klucze są prawidłowe tylko dla bieżącej sesja.

IDENTITY_VALUE generuje identyfikator GUID, z którym dane znacznika zaszyfrowane przy użyciu nowego kluczsymetrycznego.Znakowanie to może służyć do dopasowania kluczy zaszyfrowanych danych.Identyfikator GUID generowanych przez określone wyrażenie zawsze taka sama.Po frazę został użyty do wygenerowania identyfikatora GUID, zwrot nie można użyć ponownie tak długo, jak istnieje co najmniej jednej sesja aktywnie frazę.IDENTITY_VALUE jest opcjonalna klauzula; jednak zaleca się korzystanie, są przechowywania danych zaszyfrowanych za pomocą tymczasowego klucz.

Nie ma żadnych domyślnym algorytmem szyfrowanie .

Ważna informacjaWażne:

dane poufnejest chroniony za pomocą szyfrowania RC4 i RC4_128 w strumieniu nie jest zalecane.SQL Servernie dalsze Koduj szyfrowanie , wykonane z takich kluczy.

Informacje na temat kluczy symetrycznych są widoczne w sys.symmetric_keys katalogu widoku.

Nie można zaszyfrować kluczy symetrycznych przez utworzone z szyfrowanie dostawcakluczy symetrycznych.

Wyjaśnienie dotyczące algorytmów DES:

  • DESX była niepoprawna.Utworzone za pomocą ALGORYTMU kluczy symetrycznych = DESX faktycznie używać z 192-bitowy kluczszyfrowania TRIPLE DES.Nie podano algorytm DESX.Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Należy unikać stosowania tej funkcji w nowych projektach oraz zaplanować modyfikację aplikacji, w których obecnie jest używana ta funkcja.

  • Utworzone za pomocą ALGORYTMU kluczy symetrycznych = TRIPLE_DES_3KEY użytek TRIPLE DES 192-bitowego klucz.

  • Utworzone za pomocą ALGORYTMU kluczy symetrycznych = używaj TRIPLE_DES TRIPLE DES ze 128-bitowego klucz.

Oczekiwany algorytm RC4:

Powtórzyć wykorzystanie tego samego RC4 lub KEY_GUID RC4_128 w różnych blokach danych spowoduje ten sam klucz RC4 ponieważ SQL Server nie świadczy automatycznie solą.Przy użyciu tego samego klucz RC4 wielokrotnie jest dobrze znany błąd, który spowoduje bardzo słabe szyfrowanie.W związku z tym firma Microsoft zostały zaniechane słowa kluczowe RC4 i RC4_128.Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Nie należy stosować tej funkcji w nowych projektach oraz jak najszybciej należy zmodyfikować aplikacje, w których obecnie jest używana ta funkcja.

Uprawnienia

Wymaga uprawnienia zmienić dowolny klucz SYMETRYCZNY z bazy danych.Jeśli określono autoryzacji wymaga uprawnienia PERSONIFIKUJ użytkownik bazy danych lub ZMIEŃ uprawnienia rola aplikacji.Jeśli szyfrowanie jest certyfikat lub kluczasymetrycznego, wymaga uprawnień VIEW DEFINITION certyfikat lub kluczasymetrycznego.Tylko logowania systemu Windows, SQL Server logowania do i z ról aplikacji mogą być właścicielami symetrycznych kluczy.Kluczy symetrycznych nie może należeć do grupy i role.

Przykłady

A.Tworzenie kluczsymetrycznego

Poniższy przykład tworzy symetrycznego klucz o nazwie JanainaKey09 za pomocą AES 256 algorytmu i szyfruje nowego klucz z certyfikat Shipping04.

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

B.Tworzenie tymczasowych kluczsymetryczny

Poniższy przykład tworzy tymczasowe symetrycznego klucz o nazwie #MarketingXXV z frazę przebiegu: The square of the hypotenuse is equal to the sum of the squares of the sides.klucz jest zaopatrzona w identyfikator GUID, który jest generowany na podstawie ciągPythagoras i zaszyfrowane przy użyciu certyfikat 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

C.Tworzenie symetrycznego klucz za pomocą urządzenia zarządzania klucza rozszerzonego (EKM)

Poniższy przykład tworzy symetrycznego klucz o nazwie MySymKey za pomocą dostawca o nazwie MyEKMProvider i nazwę klucz KeyForSensitiveData.Przypisuje autoryzacja do User1 i zakłada się, administrator systemu jest już zarejestrowany dostawca o nazwie MyEKMProvider w SQL Server.

CREATE SYMMETRIC KEY MySymKey
AUTHORIZATION User1
FROM PROVIDER EKMProvider
WITH
PROVIDER_KEY_NAME='KeyForSensitiveData',
CREATION_DISPOSITION=OPEN_EXISTING;
GO