Microsoft Access 2007推出了一個用於存儲Access數據庫信息的新的文件格式。這個文件格式可以由任何以.ACCDB結尾的文件識別。雖然Microsoft Access2007仍然支持.MDB的文件類型,但是未來的Access將圍繞.ACCDB格式來建立。
.ACCDB格式最顯著的一個改變是一個新的加密方法,它是基於數據庫密碼的。這個改變是一個非常顯著的安全改進,因為加密的ACCDB數據庫是(理論上)足夠強大,它們只可以使用非常強大的密碼恢復才能破解。當然,如同所有的安全一樣,如果許多人以同樣方式來進行,那麼這個風險要高得多,因為有人將得出怎樣破壞這個安全。這無疑將適用於加密一個Access 2007數據庫,因為使用的默認加密算法是40位密鑰的RC4,它沒有達到它所能達到的那麼強大。在這篇文章裡,將向你展示怎樣使得你的密碼加密數據庫比標准的ACCDB加密更加安全。
這個加密是什麼以及為什麼它很重要
Access 2007以塊——也就是頁面的形式讀取和寫入到.ACCDB文件。這些頁面的大小是固定的:4096字節。加密是發生在頁面級別的,為了使事情變得簡單(以及考慮性能原因),加密的頁面必須也是4096字節。在ACCDB中,每個加密 的“頁面”有一個唯一鍵,它是從一個密碼哈希(它包含隨機基礎數據)獲得的。這是非常重要的,因為現在數據庫密碼不再存儲在這個文件中(不像之前的版本)。這個方法意味著只有強力密碼恢復才有可能。
另外,默認加密只使用40位密鑰,這確實使得它差一些,但是幸運的是這可以提高到128位加密。在本文中會介紹如何做到這一點。
在你開始加密之前
你可能會在讀一篇關於數據庫的文章時,會急於在你所使用的數據庫上進行嘗試。在這個例子中,請不要這麼做;使用這篇文章所帶的數據庫,並在一個不含有任何其它數據庫的文件夾下進行試驗。當你准備好要對你自己的數據庫添加一個密碼時,請確保你有一個系統用於記住密碼,例如打印和存儲在一個安全的保險箱中。
使用標准40位密鑰加密一個Access 2007數據庫
要加密一個數據庫,開始時和你進行Access 2003加密的過程是很類似的。首先你需要打開Microsoft Access,不選數據庫,然後使用Open More Files選項(見圖1的RHS)浏覽數據庫。在你選擇了數據庫之後,點擊Open按鈕旁邊的向下箭頭(見圖1的底部)並選擇Open Exclusive。
圖 1 – 以獨占方式打開你的數據庫
選擇Database Tools標簽頁並選擇Encrypt with PassWord,如圖2所示。
圖 2–在2007工具條上的密碼加密
輸入一個強密碼(字母和數字以及特殊字符)並確認。請將這步的密碼記錄在其它什麼地方。
改變一個密碼
改變數據庫密碼總是一個好方法。要這麼做,以獨占方式打開數據庫。現在你將看到Decrypt Database按鈕在Access 工具條中Database Tools標簽頁上取代了Encrypt With PassWord按鈕。使用這個按鈕來刪除密碼。
使用一個128位密鑰加密一個Access 2007 數據庫
正如前面所提到的,Access 現在支持不同的RC4加密算法提供者(也叫做加密提供者)。現在讓我們看看你怎樣使用一個較長的密鑰長度來加密你的ACCDB數據庫、提供更強的加密。在你這麼做之前,你最好有一個最近的完全系統備份,因為你現在將被顯示怎樣改變Windows注冊表。
要對一個ACCDB數據庫進行一個更強的加密,你需要對你的注冊表進行修改。要這麼做,點擊Windows 開始按鈕並選擇Run,在程序對話框中輸入RegEdit。
在注冊表的層級中找到下面的鍵
HKEY_CURRENT_USER/Software/Microsoft/Office/12.0/Common
注意:注冊表中的鍵12.0意味著Office 2007
創建一個新的鍵,叫做Security (如圖3所示),如果它不存在的話。
圖 3 ~ 在注冊表中創建一個鍵
創建叫做DefaultEncryption的多字符串值(如果它不存在的話),如圖4所示:
圖 4 ~ 在注冊表中創建一個多值鍵
重命名這個值New Value #1為DefaultEncryption,如圖5所示
圖 5 ~ 重命名字段值
黏貼下面的內容(在一個方框中的單獨三行),如圖4所示:
Microsoft Enhanced Cryptographic Provider v1.0
RC4
128
圖 6 ~ 添加加密設置值
注意:多值字符串的格式是:
值1. 加密提供者名稱
值2. 加密算法
值3. 加密密鑰長度
這完成了你的注冊表建立,下一次你加密一個2007數據庫時,將會使用你在注冊表中指定的(更強)加密算法。
注意:如果你擔心這太復雜;記住只有實施了密碼的人才需要修改注冊表的鍵。對於其它人,Access 會從數據庫裡的信息整理出要使用的加密方法。
檢查使用了什麼加密密鑰
如果你在Windows Explorer中浏覽數據庫,右鍵單擊文件名稱並選擇以記事本或你自己選擇一個十六進制編輯器來打開,如圖7所示。
圖 7 ~ 怎樣在記事本中查看數據庫(在Windows XP浏覽器中)
當你在你的編輯器中打開了這個數據庫,如圖8所示,那麼你會在這個文件的上部發現寫有這個加密算法。如果沒有加密,那麼這個地方將是空白的。
圖 8 ~所使用的加密在編輯器中是可見的
警告:當使用這類的編輯器時,無論你做什麼,請不要改變和保存這個數據庫文件,否則你可能會損壞它。
最後,你可能還想試試其它的RC4加密提供者。找出你機器上有什麼其它的RC4加密的一個方法是以加密形式保存一個Word文件,如圖8所示。
圖 9 ~ Microsoft Word會顯示出你機器上的加密算法
清除
如果你不喜歡128位加密數據庫的概念,而想反過來使用標准的40位加密,那麼重新命名或刪除你遵循這篇文章所添加到注冊表中的任何注冊表項。在此之後,刪除這個密碼並重新添加密碼。
性能
本篇文章忽略的一個主題是性能。如果你想加密一個已經運行得很慢的數據庫,那麼請在執行加密之前和執行加密之後測試性能。你可能會注意到不同的加密算法有不同的性能。
壓縮的文件沒有被壓縮
如果一個數據庫被加密了,那麼使用一個工具比如WinZip 來壓縮將根本不會壓縮這個文件。
下載示例
示例下載包括一個沒有被加密的數據庫、一個已經使用40位密鑰長度的RC4加密的數據庫和一個使用128位密鑰長度的RC4加密的數據庫。你需要Access 2007使得這些數據庫可用,這些示例的密碼是vb123.com。
建議你在所有目標計算機上打開這個128位加密文件,以確保加密算法存在於這些計算機上。如果不存在,那麼這些計算機將不允許打開這個數據庫。