SİMETRİK anahtar (Transact-SQL) oluştur

Simetrik anahtar üretir ve özelliklerini belirler.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

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

Bağımsız değişkenler

  • Key_name
    Simetrik anahtar tanındığı benzersiz bir ad veritabanını belirtir.Geçici anahtar adlarını bir numarası (#) işaret ile başlamalıdır.Örneğin, # temporaryKey900007.Birden fazla # ile başlayan bir ada sahip bir simetrik anahtar oluşturulamıyor.ekm sağlayıcıkullanarak geçici simetrik anahtar oluşturulamaz.

  • YETKİLENDİRMEowner_name
    Veritabanı kullanıcı ya da bu anahtarolacağım uygulama rolü adını belirtir.

  • SAĞLAYICIDANProvider_Name
    Genişletilebilir Anahtar Yönetimi (ekm) sağlayıcı ve adını belirtir.' % S'anahtarı anahtar ekm aygıttan verilmez.sağlayıcı ilk deyimoluşturma SAĞLAYICISI kullanılarak tanımlanmalıdır.Dış anahtar sağlayıcılar oluşturma hakkında daha fazla bilgi için bkz: Genişletilebilir Anahtar Yönetimi (ekm) Anlama.

  • key_source ='pass_phrase'
    Geçiş tümceciği hangi anahtartüretmek belirtir.

  • IDENTITY_VALUE ='identity_phrase'
    Geçici anahtarile şifrelenmiş verileri etiketleme için bir GUID oluşturmak içinden bir kimlik tümcecik belirtir.

  • key_name_in_provider
    Başvurulan Genişletilebilir Key Management sağlayıcıadını belirtir.

  • CREATION_DISPOSITION = create_new
    Yeni bir anahtar can Genişletilebilir Key Management aygıtta oluşturur.anahtar zaten aygıtta varsa, deyim hata ile başarısız olur.

  • CREATION_DISPOSITION = OPEN_EXISTING
    Haritalar bir SQL Server Varolan bir Genişletilebilir Key Management anahtarsimetrik anahtar .Yoksa CREATION_DISPOSITION = OPEN_EXISTING verilmemiş, bu create_new için varsayılan olarak ayarlanır.

  • certificate_name
    Simetrik anahtarşifrelemek için kullanılan sertifika adını belirtir.sertifika veritabanında bulunması gerekir.

  • 'password'
    Simetrik anahtargüvenliğini sağlamak kullanılacak bir TRIPLE_DES anahtar türetmek hangi parolayı belirtir.passwordörnek çalıştıran bilgisayarda Windows parola ilkesi gereksinimlerini karşılamalıdır SQL Server.Her zaman güçlü parolalar kullanmalısınız.

  • symmetric_key_name
    Oluşturulmakta olan anahtar şifrelemek için kullanılacak bir simetrik anahtar belirtir.Belirtilen anahtar veritabanında önceden mevcut olmalıdır ve anahtar açık olmalıdır.

  • asym_key_name
    Oluşturulan anahtar şifrelemek için kullanılan bir asimetrik anahtar belirtir.Bu asimetrik anahtar zaten veritabanında bulunması gerekir.

Açıklamalar

Simetrik anahtar oluşturulduğunda, simetrik anahtar aşağıdakilerden en az birini kullanarak şifrelenmiş olmalıdır: sertifika, parola, simetrik anahtar, asimetrik anahtarveya sağlayıcı.Her türden birden çok şifreleme anahtar olabilir.Başka bir deyişle, tek bir simetrik anahtar aynı saatbirden çok sertifikaları, parolaları, simetrik anahtar ve asimetrik anahtarlar kullanılarak şifrelenebilir.

Dikkat notuDikkat

Simetrik anahtar veritabanı ana anahtarortak anahtar yerine bir parola ile şifrelenir, ÜÇLÜ des şifreleme algoritmasını kullanılır.Bu nedenle, aes gibi güçlü şifreleme algoritması ile oluşturulan anahtarların kendilerini zayıf algoritması tarafından güvenli tarafından.

İsteğe bağlı parola anahtar birden çok kullanıcı için dağıtmadan önce simetrik anahtar şifrelemek için kullanılır.

Geçici anahtar, onları oluşturan kullanıcı tarafından sahip olunan.Geçici anahtar yalnızca geçerli oturumiçin geçerlidir.

IDENTITY_VALUE, yeni bir simetrik anahtarkullanılarak şifrelenmiş etiket verileri için kullanılacak bir GUID oluşturur.Bu etiketleme anahtarlar şifreli verileri eşleştirmek için kullanılır.Belirli bir deyim tarafından oluşturulan GUID her zaman aynı olacaktır.Bir tümcecik bir GUID oluşturmak için kullanılan sonra etkin olarak ifadesini kullanan en az bir oturum var olduğu sürece tümcecik yeniden kullanılamaz.IDENTITY_VALUE yan tümcebir isteğe bağlıdır; Ancak, geçici anahtarile şifrelenmiş veriyi depolarken kullanmanızı öneririz.

Hiçbir varsayılan şifreleme algoritması vardır.

Önemli notÖnemli

gizli verikorumak için RC4 ve RC4_128 akış şifreleri kullanarak önerilmez.SQL Serverdaha fazla bu tür tuşları ile gerçekleştirilen şifreleme kodlamaz.

Simetrik anahtarlar hakkında bilgi görünür sys.symmetric_keys Katalog görünümü.

Simetrik anahtarlar, simetrik anahtar şifreleme sağlayıcı' ndan oluşturulan tarafından şifrelenemez.

des algoritması ile ilgili açıklama:

  • desx yanlış idi.Simetrik anahtar ALGORİTMASI ile oluşturulan desx = aslında ÜÇLÜ des şifreleme ile 192-bit anahtarkullanır.desx algoritmasını sağlanmaz.Bu özellik Microsoft SQL Server'ın ilerideki bir sürümünde kaldırılacaktır. Yeni geliştirme işlerinde bu özelliği kullanmaktan kaçının ve bu özelliği kullanmakta olan uygulamalarda değişiklik yapmayı planlayın.

  • Simetrik anahtar ALGORİTMASI ile oluşturulan = 192 bitlik bir anahtarile ÜÇLÜ des TRIPLE_DES_3KEY kullanılır.

  • Simetrik anahtar ALGORİTMASI ile oluşturulan = 128 bit anahtar, ÜÇLÜ des TRIPLE_DES kullanılır.

RC4 algoritmanın kaldırılması:

Aynı RC4 ya RC4_128 KEY_GUID farklı veri bloklarındaki hataların neden RC4 anahtar çünkü yinelenen SQL Server bir tuz otomatik olarak sağlamaz.Tekrar tekrar aynı RC4 anahtar kullanılarak çok zayıf şifrelemesonuçlanacak tanınmış bir hatadır.Bu nedenle biz RC4 ve RC4_128 anahtar sözcükler itiraz.Bu özellik Microsoft SQL Server'ın ilerideki bir sürümünde kaldırılacaktır. Yeni geliştirme işlerinde bu özelliği kullanmayın ve bu özelliği kullanmakta olan uygulamaları mümkün olduğunca erken bir zamanda değiştirin.

İzinler

Veritabanı üzerinde alter any SİMETRİK anahtar izni gerektirir.YETKİLENDİRME belirtilirse, veritabanı kullanıcı özelliklerini Al izni veya uygulama rolüalter izni gerektirir.şifreleme sertifika veya asimetrik anahtartarafından sertifika veya asimetrik anahtargörünüm TANIMI izni gerektirir.Yalnızca Windows oturumu açma SQL Server oturumları ve uygulama rolleri sahibi olabileceğini simetrik anahtarlar.Grupları ve rolleri simetrik anahtarlar sahibi olamaz.

Örnekler

A.Simetrik anahtaroluşturma

Aşağıdaki örnek olarak adlandırılan bir simetrik anahtar oluşturur JanainaKey09 kullanarak AES 256 algoritmasını ve sertifikaile yeni anahtar şifreler Shipping04.

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

B.Geçici bir simetrik anahtaroluşturma

Aşağıdaki örnek, adlı bir geçici simetrik anahtar oluşturur #MarketingXXV geçiş tümceciği gelen: The square of the hypotenuse is equal to the sum of the squares of the sides.anahtar dizeoluşturulan GUID ile hazırlananPythagoras ve sertifikaşifrelenmiş 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.Genişletilebilir Anahtar Yönetimi (ekm) aygıtı kullanarak bir simetrik anahtar oluşturma

Aşağıdaki örnek olarak adlandırılan bir simetrik anahtar oluşturur MySymKey kullanarak bir sağlayıcı adı verilen MyEKMProvider ve anahtar adını KeyForSensitiveData.yetkilendirme için atar User1 ve varsayar, Sistem Yöneticisi zaten kayıtlı sağlayıcı adı verilen MyEKMProvider , SQL Server.

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