干货丨看金仓数据库如何支持透明加密!
數據庫透明加密是指對庫內數據的加密和解密,對數據庫的訪問程序是完全無感知的。特別是應用系統,不需要做任何修改,就可以直接操作加密對象。
金倉數據庫支持基于透明加密,支持RC4, SM4等多種內置的加密算法,同時金倉數據庫也支持其他加密設備,包括衛士通,漁翁等加密設備。
如何同時支持多種加密算法呢?金倉數據庫開發了一套透明加密框架,只要加密處理算法封裝成加密框架,金倉數據庫就可以集成這種加密算法,應用于數據庫服務器內部的透明加密。
透明加密框架介紹
加密框架由加密方式管理,加密設備管理和密鑰管理三部分組成。加密方式包括透明加密,半透明加密和非透明加密組成;加密設備管理,包括軟加密設備和硬加密設備;密鑰管理包括主密鑰管理,對象密鑰管理等。
加密框架總覽
錢包機制
密鑰管理中包括主密鑰的生成,更換,對象密鑰的生成,對象密鑰同步到備機等內容,其中錢包機制是最核心最重要的。數據庫透明加密框架中引入了錢包概念,錢包是一個加密容器,用于存儲所有密鑰,包括主密鑰文件和對象密鑰文件。錢包的另一個優點是可以對密鑰進行統一管理,與數據文件分開,因此,沒有錢包,及時得到了數據文件,數據也是不能解密的,從而大大提高了數據的安全性。錢包需要經常備份,防止錢包因系統損壞或硬件設備導致的丟失錢包的風險。
對于錢包自身來說,支持設置錢包密碼。在數據庫使用或關閉錢包時需要先通過錢包密碼驗證,否則將不能使用錢包。創建加密對象時,錢包必須處于OPEN的狀態;若錢包處于CLOSE的狀態,則不能創建加密對象。修改錢包密碼時,錢包必須處于CLOSE的狀態。安全管理員可以通過SQL命令修改錢包密碼。
開啟/關閉錢包
密鑰管理
目前密鑰采用三級密鑰結構,分別為主密鑰和對象密鑰和塊級密鑰。
主密鑰是唯一的,安全管理員是可以通過SQL命令更新主密鑰的。主密鑰的作用用于加密對象密鑰,主密鑰自身加密存儲在主密鑰文件中。
更新主密鑰
每個加密對象都有一個對象密鑰,對象密鑰之間是不重復的。塊級密鑰是根據對象密鑰和塊標識生成的,加密時使用的密鑰就是塊級密鑰。對象密鑰暫時不可更改并且由數據庫系統維護。對象密鑰是由主密鑰加密后根據對象類型不同存儲在不同的密鑰文件中,密鑰文件分為:表空間密鑰文件,表密鑰文件,表列密鑰文件,用戶密鑰文件等。
數據加解密
數據加解密目前采用的是頁面級的塊加密和塊解密。對于塊加密,分組加密算法需要的待加密數據的長度應為算法數據對齊長度的整數倍,對于流加密算法的待加密數據的長度并沒有對齊的要求。塊加密是在數據頁面需要同步到外存時進行加密操作;從外存讀取數據頁面到緩沖區時,首先進行解密操作。內存中的數據都是解密后的數據。
備份加密
數據庫的備份文件通常是明文的或是二進制的形式存儲,這樣也是有數據泄露風險的,
對備份文件加密是一種常用的維護數據庫安全的手段。
備份文件時需要用戶指定備份的密鑰,該密鑰不會存儲到備份文件中,這樣就確保了密鑰的安全,沒有密鑰,即使文件被盜取也沒有辦法獲取到備份出來的真實數據。與此同時,數據庫服務器會對備份文件的完整性進行校驗,如果備份文件被人惡意破壞,那么還原數據的時候是會先檢查備份文件的完整性,完整性校驗不通過則無法還原數據到數據庫中,防止了惡意篡改數據的操作。
加密框架
為了滿足用戶使用不同加密算法的需求并且高效的兼容各種加密硬件設備,KingbaseES增加了加密框架用以支持多種加密方式。
加密框架是以插件的形式加載到數據庫,支持軟加密及硬加密。軟加密指通過已經封裝好的算法庫實現的加密方式,硬加密指的是需要通過硬件設備進行加密的方式。在加密框架下,用戶可以通過自己編譯算法庫來實現使用自己指定的算法,具體實現時通過數據庫提供的加密框架內部的API,在API內實現自己所想要的加解密算法及密鑰生成管理等方法,編譯成可調用的動態庫并放到lib目錄下。
框架整體分為三層:
框架流程
在服務器啟動時,首先加載加密框架插件,完成加密設備初始化,包括打開加密設備,加載加密設備庫函數,加載密鑰等初始化操作,然后完成服務器啟動等待處理加解密。
如何實現用戶自己的加密方式:
首先根據數據庫提供的API函數編譯封裝好用戶自己的設備庫,然后把設備庫和設備庫所調用的算法庫一同放到數據庫的LIB目錄下。初始化時指定自己的加密方式,包括指定設備庫名稱,算法庫名稱,密鑰最大長度以及算法對齊長度。對于算法對齊長度,分組加密算法對齊長度是不為0的偶數。對于流加密算法,算法對齊長度指定為0。
API函數主要包括五大類函數:設備管理類函數,密鑰管理類函數,加解密算法類函數,數據管理類函數,錯誤處理類函數。設備管理類函數負責對加密設備的管理,打開加密設備、關閉加密設備等。密鑰管理類函數負責密鑰管理,包括生成密鑰,加載密鑰,銷毀密鑰等。加解密算法類函數負責對數據的加解密。數據管理類函數負責加密前對數據的處理操作。錯誤處理類函數負責對加解密運行中的錯誤處理。
初始化完成后,就可以使用自己指定的加密算法來使用透明加密的功能。
透明加密框架的優點
加密敏感數據,降低數據庫文件失竊的風險。
采用錢包機制,統一密鑰的管理,提高密鑰的維護效率與安全。
加密備份數據,防止備份數據被竊取及修改。
支持加密框架,便于用戶擴展加密算法,增加數據庫的算法多樣性,提高用戶數據安全。
總結
以上是生活随笔為你收集整理的干货丨看金仓数据库如何支持透明加密!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2016红帽年度创新大奖榜单揭晓
- 下一篇: 关于软件测试的英语面试题,软件测试工程师