Share via


CREATE SYMMETRIC KEY (Transact-SQL)

更新: 2008 年 11 月 17 日

產生對稱金鑰及指定它的屬性。

主題連結圖示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(zh-tw,SQL.90).gif注意:
如果是利用密碼 (而不是利用資料庫主要金鑰的公開金鑰) 來加密對稱金鑰,則會使用 TRIPLE_DES 加密演算法。因此,利用強式加密演算法 (如 AES) 建立的金鑰,其本身的安全是由較弱的演算法來維護的。

將金鑰散發至多個使用者之前,可先利用選擇性的密碼來加密對稱金鑰。

暫時金鑰由建立它們的使用者擁有。暫時金鑰只能用於目前的工作階段。

IDENTITY_VALUE 會產生 GUID,這個 GUID 可用來標記利用新對稱金鑰加密的資料。這項標記作業可用來使金鑰符合加密的資料。特定片語產生的 GUID 永遠相同。已利用片語產生 GUID 之後,除非已卸除相關聯的對稱金鑰,否則不能在目前的工作階段中重複使用該片語。IDENTITY_VALUE 是選擇性的子句;不過,當您要儲存利用暫時金鑰加密的資料時,我們建議您使用這個子句。

沒有預設的加密演算法。

ms188357.note(zh-tw,SQL.90).gif重要事項:
我們不建議您使用 RC4 和 RC4_128 資料流加密來保護機密資料。SQL Server 2005 並不會對使用這類金鑰執行的加密功能進行加碼 (Salt)。

您可以在 sys.symmetric_keys 目錄檢視中,看到有關對稱金鑰的資訊。

有關 DES 演算法的釐清資訊:

  • DESX 的名稱不正確。使用 ALGORITHM = DESX 所建立的對稱金鑰實際上會使用含有 192 位元金鑰的 TRIPLE DES 密碼。未提供 DESX 演算法。
  • 使用 ALGORITHM = TRIPLE_DES 所建立的對稱金鑰會使用含有 128 位元金鑰的 TRIPLE DES。

權限

需要資料庫的 ALTER ANY SYMMETRIC KEY 權限。如果指定了 AUTHORIZATION,則需要資料庫使用者的 IMPERSONATE 權限或應用程式角色的 ALTER 權限。如果是利用憑證或非對稱金鑰來加密,則需要憑證或非對稱金鑰的 VIEW DEFINITION 權限。

範例

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

請參閱

參考

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

其他資源

選擇加密演算法
加密階層

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2005 年 12 月 5 日

新增內容:
  • 新增有關使用 RC4 和 RC4_128 資料流加密的「重要事項」附註。

2008 年 11 月 17 日

新增內容:
  • 新增有關 DESX 演算法的釐清資訊。