CREATE SYMMETRIC KEY (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 來標記利用暫時金鑰加密的資料之識別片語。
當建立對稱金鑰時,至少必須利用下列一項來加密對稱金鑰:憑證、密碼、對稱金鑰、非對稱金鑰。針對每一種類型,金鑰都可以有多個加密。換句話說,可以同時利用多個憑證、密碼、對稱金鑰及非對稱金鑰來加密單一對稱金鑰。
注意: |
|---|
| 如果是利用密碼 (而不是利用資料庫主要金鑰的公開金鑰) 來加密對稱金鑰,則會使用 TRIPLE_DES 加密演算法。因此,利用強式加密演算法 (如 AES) 建立的金鑰,其本身的安全是由較弱的演算法來維護的。 |
將金鑰散發至多個使用者之前,可先利用選擇性的密碼來加密對稱金鑰。
暫時金鑰由建立它們的使用者擁有。暫時金鑰只能用於目前的工作階段。
IDENTITY_VALUE 會產生 GUID,這個 GUID 可用來標記利用新對稱金鑰加密的資料。這項標記作業可用來使金鑰符合加密的資料。特定片語產生的 GUID 永遠相同。已利用片語產生 GUID 之後,除非已卸除相關聯的對稱金鑰,否則不能在目前的工作階段中重複使用該片語。IDENTITY_VALUE 是選擇性的子句;不過,當您要儲存利用暫時金鑰加密的資料時,我們建議您使用這個子句。
沒有預設的加密演算法。
重要事項: |
|---|
| 我們不建議您使用 RC4 和 RC4_128 資料流加密來保護機密資料。SQL Server 2005 並不會對使用這類金鑰執行的加密功能進行加碼 (Salt)。 |
您可以在 sys.symmetric_keys 目錄檢視中,看到有關對稱金鑰的資訊。
有關 DES 演算法的釐清資訊:
-
DESX 的名稱不正確。使用 ALGORITHM = DESX 所建立的對稱金鑰實際上會使用含有 192 位元金鑰的 TRIPLE DES 密碼。未提供 DESX 演算法。
-
使用 ALGORITHM = TRIPLE_DES 所建立的對稱金鑰會使用含有 128 位元金鑰的 TRIPLE DES。
A. 建立對稱金鑰
下列範例會利用 AES 256 演算法建立一個稱為 JanainaKey09 的對稱金鑰,然後利用憑證 Shipping04 加密新金鑰。
CREATE SYMMETRIC KEY JanainaKey09 WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE Shipping04;
GO
B. 建立暫時對稱金鑰
下列範例會從 The square of the hypotenuse is equal to the sum of the squares of the sides 這個密碼片語中建立一個稱為 #MarketingXXV 的暫時對稱金鑰。金鑰由某 GUID 提供,該 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

