當前位置:首頁 » 服務存儲 » dbms數據加密存儲
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

dbms數據加密存儲

發布時間: 2023-01-21 15:51:10

資料庫加密的實現技術

對數據進行加密,主要有三種方式:系統中加密、客戶端(DBMS外層)加密、伺服器端(DBMS內核層)加密。客戶端加密的好處是不會加重資料庫伺服器的負載,並且可實現網上的傳輸加密,這種加密方式通常利用資料庫外層工具實現。而伺服器端的加密需要對資料庫管理系統本身進行操作,屬核心層加密,如果沒有資料庫開發商的配合,其實現難度相對較大。此外,對那些希望通過ASP獲得服務的企業來說,只有在客戶端實現加解密,才能保證其數據的安全可靠。
1.常用資料庫加密技術
信息安全主要指三個方面。一是數據安全,二是系統安全,三是電子商務的安全。核心是資料庫的安全,將資料庫的數據加密就抓住了信息安全的核心問題。
對資料庫中數據加密是為增強普通關系資料庫管理系統的安全性,提供一個安全適用的資料庫加密平台,對資料庫存儲的內容實施有效保護。它通過資料庫存儲加密等安全方法實現了資料庫數據存儲保密和完整性要求,使得資料庫以密文方式存儲並在密態方式下工作,確保了數據安全。
1.1資料庫加密技術的功能和特性
經過近幾年的研究,我國資料庫加密技術已經比較成熟。
一般而言,一個行之有效的資料庫加密技術主要有以下6個方面的功能和特性。
(1)身份認證:
用戶除提供用戶名、口令外,還必須按照系統安全要求提供其它相關安全憑證。如使用終端密鑰。
(2) 通信加密與完整性保護:
有關資料庫的訪問在網路傳輸中都被加密,通信一次一密的意義在於防重放、防篡改。
(3) 資料庫數據存儲加密與完整性保護:
資料庫系統採用數據項級存儲加密,即資料庫中不同的記錄、每條記錄的不同欄位都採用不同的密鑰加密,輔以校驗措施來保證資料庫數據存儲的保密性和完整性,防止數據的非授權訪問和修改。
(4)資料庫加密設置:
系統中可以選擇需要加密的資料庫列,以便於用戶選擇那些敏感信息進行加密而不是全部數據都加密。只對用戶的敏感數據加密可以提高資料庫訪問速度。這樣有利於用戶在效率與安全性之間進行自主選擇。
(5)多級密鑰管理模式:
主密鑰和主密鑰變數保存在安全區域,二級密鑰受主密鑰變數加密保護,數據加密的密鑰存儲或傳輸時利用二級密鑰加密保護,使用時受主密鑰保護。
(6) 安全備份:
系統提供資料庫明文備份功能和密鑰備份功能。
1.2對資料庫加密系統基本要求
(1) 欄位加密;
(2) 密鑰動態管理;
(3) 合理處理數據;
(4) 不影響合法用戶的操作;
(5) 防止非法拷貝;
1.3資料庫數據加密的實現
使用資料庫安全保密中間件對資料庫進行加密是最簡便直接的方法。主要是通過系統中加密、DBMS內核層(伺服器端)加密和DBMS外層(客戶端)加密。
在系統中加密,在系統中無法辨認資料庫文件中的數據關系,將數據先在內存中進行加密,然後文件系統把每次加密後的內存數據寫入到資料庫文件中去,讀入時再逆方面進行解密就,這種加密方法相對簡單,只要妥善管理密鑰就可以了。缺點對資料庫的讀寫都比較麻煩,每次都要進行加解密的工作,對程序的編寫和讀寫資料庫的速度都會有影響。
在DBMS內核層實現加密需要對資料庫管理系統本身進行操作。這種加密是指數據在物理存取之前完成加解密工作。這種加密方式的優點是加密功能強,並且加密功能幾乎不會影響DBMS的功能,可以實現加密功能與資料庫管理系統之間的無縫耦合。其缺點是加密運算在伺服器端進行,加重了伺服器的負載,而且DBMS和加密器之間的介面需要DBMS開發商的支持。
在DBMS外層實現加密的好處是不會加重資料庫伺服器的負載,並且可實現網上的傳輸,加密比較實際的做法是將資料庫加密系統做成DBMS的一個外層工具,根據加密要求自動完成對資料庫數據的加解密處理。
採用這種加密方式進行加密,加解密運算可在客戶端進行,它的優點是不會加重資料庫伺服器的負載並且可以實現網上傳輸的加密,缺點是加密功能會受到一些限制,與資料庫管理系統之間的耦合性稍差。
資料庫加密系統分成兩個功能獨立的主要部件:一個是加密字典管理程序,另一個是資料庫加解密引擎。資料庫加密系統將用戶對資料庫信息具體的加密要求以及基礎信息保存在加密字典中,通過調用數據加解密引擎實現對資料庫表的加密、解密及數據轉換等功能。資料庫信息的加解密處理是在後台完成的,對資料庫伺服器是透明的。
按以上方式實現的資料庫加密系統具有很多優點:首先,系統對資料庫的最終用戶是完全透明的,管理員可以根據需要進行明文和密文的轉換工作;其次,加密系統完全獨立於資料庫應用系統,無須改動資料庫應用系統就能實現數據加密功能;第三,加解密處理在客戶端進行,不會影響資料庫伺服器的效率。
資料庫加解密引擎是資料庫加密系統的核心部件,它位於應用程序與資料庫伺服器之間,負責在後台完成資料庫信息的加解密處理,對應用開發人員和操作人員來說是透明的。數據加解密引擎沒有操作界面,在需要時由操作系統自動載入並駐留在內存中,通過內部介面與加密字典管理程序和用戶應用程序通訊。資料庫加解密引擎由三大模塊組成:加解密處理模塊、用戶介面模塊和資料庫介面模塊。

❷ 請問資料庫要如何保密

1、思路:在需要加密欄位的表中,增加對應的加密後的密文欄位。
例如表users中有欄位salary需要加密,則增加新欄位encrypted存放加密後的內容,而原salary的內容設為0值或者刪除。
2、具體來說:編寫PL/sql代碼,主要是產生密鑰和提供加密解密的function,其中加密解密的function調用Oracle8i提供的數據加密包:dbms_obfuscation_toolkit。
從而使數據得到加解密。
3、測試案例:
(1)、新建了一個SWING的單屏幕,在SF_POST_QUERY_OF_EACH_ROW()方法中調用Oracle已經建立好的function,對解密欄位進行解密之後,再顯示屏幕相應的欄位上。
(2)、當進行insert或者update存檔,在SF_POST_DATABASE_COMMIT()方法中,調用加密function進行加密,然後存入資料庫。
4、遇到的問題:
(1)查詢的時候,由於在SF_POST_QUERY_OF_EACH_ROW()方法中解密後,又往屏幕中欄位進行了set動作,導致屏幕的狀態改變,最終導致屏幕存檔後會出現數據錯誤。
(2)這樣做的效率比較低,因為每次都要在Java程序里調用解密,存檔時調用加密。
Oracle規定,不能對trigger的觸發表進行操作。
還有,如果用自治事務去實現,同樣在update動作的時候會造成dead lock發生。

❸ 資料庫中怎樣創建加密的存儲過程

可以例用Oracle 自帶的Wrap工具實現,此工具在$ORACLE_HOME/BIN目錄下,具體如下
1、設置字元集環境變數
set NLS_LANG=CHINESE_CHINA.ZHS16GBK

2、創建一個存儲過程文件
在E:\下創建test.sql文件,內容如下:
create or replace procere test1(i in number) as
begin
dbms_output.put_line(' 輸入參數是'||to_char(i));
end;
3、加密
c:\> cd %ORACLE_HOME%\BIN
c:\>wrap iname=e:\test1.sql
PL/SQL Wrapper: Release 8.1.7.0.0 - Proction on Tue Nov 27 22:26:48 2001
Copyright (c) Oracle Corporation 1993, 2000.All Rights Reserved.
Processing test1.sql to test1.plb

4、運行test1.plb
sqlplus /nolog
SQL>conn TEST/TEST@db01
SQL> @e:\a.plb
過程已創建。

5、運行存儲過程
SQL> set serveroutput on
SQL> execute test1(1);
輸入參數是1
PL/SQL 過程已成功完成。

6、查看存儲過程的代碼
SQL> select name,text from all_source where type='PROCEDURE' and name='TEST1';

結果:看不到其原碼

❹ 資料庫中怎樣創建加密的存儲過程

可以例用Oracle
自帶的Wrap工具實現,此工具在$ORACLE_HOME/BIN目錄下,具體如下
1、設置字元集環境變數
set
NLS_LANG=CHINESE_CHINA.ZHS16GBK
2、創建一個存儲過程文件
在E:\下創建test.sql文件,內容如下:
create
or
replace
procere
test1(i
in
number)
as
begin
dbms_output.put_line('
輸入參數是'||to_char(i));
end;
3、加密
c:\>
cd
%ORACLE_HOME%\BIN
c:\>wrap
iname=e:\test1.sql
PL/SQL
Wrapper:
Release
8.1.7.0.0
-
Proction
on
Tue
Nov
27
22:26:48
2001
Copyright
(c)
Oracle
Corporation
1993,
2000.All
Rights
Reserved.
Processing
test1.sql
to
test1.plb
4、運行test1.plb
sqlplus
/nolog
SQL>conn
TEST/TEST@db01
SQL>
@e:\a.plb
過程已創建。
5、運行存儲過程
SQL>
set
serveroutput
on
SQL>
execute
test1(1);
輸入參數是1
PL/SQL
過程已成功完成。
6、查看存儲過程的代碼
SQL>
select
name,text
from
all_source
where
type='PROCEDURE'
and
name='TEST1';
結果:看不到其原碼

❺ 一個好的資料庫加密系統一般應滿足哪些方面的要求

我認為,至少需要滿足下面4個方面的要求。

1、保證資料庫系統的整體性能沒有明顯下降
眾所周知,資料庫系統的數據處理性能對整個業務系統的整體性能表現有決定性的作用,在某些場合,資料庫必須保證處理能力維持在某個較高水平才能滿足業務需要。另一方面,資料庫加密系統是一個對資料庫中數據進行加密保護的應用系統,在數據從業務系統存儲到資料庫時要對數據進行加密,這個過程中明文數據需要被加密成密文,在數據由資料庫中被讀取出來傳遞到業務系統時要對數據進行解密,這個過程中密文需要被解密成明文。加密和解密是個根據一定的演算法邏輯進行循環運算的過程,這個過程對CPU會產生一定的消耗,會影響資料庫的性能。
資料庫加密系統可以有多種技術路線來實現,業界已經驗證和使用的技術路線包括應用系統加密、前置代理加密、後置代理加密、表空間透明數據加密、文件系統加密和磁碟加密。其中應用系統加密和前置代理加密技術會極大地影響資料庫性能,僅適用於小量數據加密場景;後置代理加密技術在某些場景上也會大幅影響資料庫性能,使用場景有明顯限制;所以,好的資料庫加密系統應該盡量使用後三種技術路線來實現。
2、保證數據安全

保存在資料庫中的數據是用戶的資產,因此,任何一個資料庫加密系統都需要保證在有密鑰的前提下能夠對由自己加密的數據進行無損解密。因此,一個好的資料庫加密系統應該具備密鑰備份和恢復功能,以便於在加密機故障不可用時能夠快速搭建新的加密機環境;另外,如果資料庫加密系統提供了獨立的工具或介面來實現加密機故障時用戶數據的解密,則是更好的選擇。
3、應用完全透明

資料庫系統是為業務系統提供數據服務的,一個好的資料庫加密系統應該對應用系統具備完全的透明性,這種透明性主要表現在:(1)部署資料庫加密系統時,應用系統不需要做任何改造,即使是連接字元串都不需要修改;(2)在部署了資料庫資料庫加密系統後,資料庫內部的存儲過程、用戶自定義函數、觸發器、SQL代碼段等可執行對象及主外鍵關系、各種索引、默認值、Check約束等均可以正常使用,也不需要做任何改變;(3)資料庫自身的外圍管理工具、第三方資料庫工具等在部署資料庫加密系統後仍然可以正常使用。
4、高可用性

資料庫加密系統自身應具備高可用能力,可以以主備或多機的方式提供資料庫加密服務,當其中的一台加密機發生故障時,其它加密機應可能快速接管加密服務,保證資料庫系統和用戶業務系統的可用性。

❻ 關於oracle資料庫加密的函數

Oracle 提供兩種加密方式:
a)加密 API 例如包 和 dbms_crypto 使用這些包,可以構建我們自己的基礎架構,對數據進行加密。 這種方法的靈活性最強,但是構建和管理卻相當復雜。
b)透明的數據加密是 Oracle 資料庫 ;使用該特性後,就不必手動進行密碼管理了。
資料庫管理密碼,但是正如名稱所指,加密是透明的——數據僅僅以加密的方式存儲而已。在Oracle10g中出現了dbms_crypto替代了之前的dbms_obfuscation_toolkit,DBMS_CRYPTO增加了若干新的加密演算法、哈希演算法。
DBMS_CRYPTO還撤銷了對於public組的執行許可權。