none
關於啟用加密後的DB 移轉問題 RRS feed

  • 問題

  •  

    目前在一台server上有啟用SQL加密機制,也都建立了SMK,DMK, Certificate,Symmetric key, 也都備份了

    想請問是如果今天這台server crash掉,想要在另一台上還原時,這些SMK , DMK都還能用嗎?

    因為想說SMK是根據原SQL  Instance建的,而它又是用OS層的DPAPI來加密..所以覺的是不是無法直接在另一台建立?

     

    不知有人有無這種經驗,或者是有相關的資源可以查詢...

    謝謝大家分享

     

    2008年5月21日 上午 08:05

解答

  • 你可以做個實驗。

    把所有的 key 都複製到另一台電腦,然後把加密的資料庫還原到該台電腦,看是否可用這些 key 存取加密後的資料。

     

    DPAPI 印象中是用對稱型加密法,也就是會有一把 key 做加密和解密,與作業系統和 SQL Server 版本還是 instance 都沒有關係。但那把加密時用的 key 不可以掉,一掉就完了。

     

    如果是用非對稱加密法,那加密時使用的憑證組(Public Key/Private Key pairs)也不能遺失,否則資料還是解不出來。

     

    2008年5月21日 上午 08:34
    版主

所有回覆

  • 你可以做個實驗。

    把所有的 key 都複製到另一台電腦,然後把加密的資料庫還原到該台電腦,看是否可用這些 key 存取加密後的資料。

     

    DPAPI 印象中是用對稱型加密法,也就是會有一把 key 做加密和解密,與作業系統和 SQL Server 版本還是 instance 都沒有關係。但那把加密時用的 key 不可以掉,一掉就完了。

     

    如果是用非對稱加密法,那加密時使用的憑證組(Public Key/Private Key pairs)也不能遺失,否則資料還是解不出來。

     

    2008年5月21日 上午 08:34
    版主
  • 首先謝謝小朱的回覆..

    今天找到一台server實際測了一下,當中有一些小波折,但很開心果然一切還原正常。

    但我有一些小問題不是很清楚,

    1. 我在Restore DMK時,出現了以下訊息,但我不是很了解

      --還原DataBase Master Key
    Restore  master key from file='D:\key\db_dmk.bak'  
    decryption BY PASSWORD='3dH85Hhk003GHk2597gheij4'
    ENCRYPTION BY PASSWORD = 'Encry@Test'

     

    執行後訊息: 新舊主要金鑰完全一樣,無須重新加密資料

    ----------------------------------------------------------------------------

    這意思是說如果我今天如果金鑰不一樣,就要重新加密是嗎?  可是我還原不就是要還原一樣的金鑰?

     

     

    2. 在建立用憑證加密的對稱式金鑰時 是以下語法

        CREATE SYMMETRIC KEY SymmKeyByCert WITH
        KEY_SOURCE = 'Symmetric KEY',
        ALGORITHM = AES_256,
        IDENTITY_VALUE = 'Key Identity.'
        ENCRYPTION BY CERTIFICATE EncryCert;
     

      若今天這把 Key在db不小心被刪掉了,我必須建立一模一樣的Key_Source, 一樣的IDEntity_value

      才可以再解密資料,但這樣不就表示這個語法是要被記住的??

     還是說 對稱式金鑰也可備份出來嗎?(目前是沒看過此文件說明)
       

     

     

    ps. 先前一直發現還原後的憑證無法使用,後來在研討會上有機會問了胡百敬大師,才發現原來是我沒有一起將Private Key也備份出來..在此 謝謝他.^^


     

    2008年5月22日 上午 06:32
  • 我今天也遇見相同的問題

    備份後,"還原"到另外一台SQL Server

    我沒有用憑證,只用了密碼來作SYMMETRIC KEY加密

    1. 在新的那台 SQL Server

    只需OPEN SYMMETRIC KEY [你的Key] DECRYPTION BY PASSWORD = '你的密碼'

    一樣能解密成功。

    2. 使用備份SYMMETRIC KEY到一個獨立的檔案

    BACKUP MASTER KEY TO FILE = 'd:\一個獨立的檔案' ENCRYPTION BY PASSWORD = '你原本的密碼'

    還原時,有問題。

    RESTORE MASTER KEY FROM FILE = 'd:\一個獨立的檔案' DECRYPTION BY PASSWORD = '你的舊密碼' ENCRYPTION BY PASSWORD = '你的新密碼'

     

    訊息「新舊主要金鑰完全一樣,無須重新加密資料」仍搞不清楚該怎麼作

    2013年2月5日 上午 09:23