問題解決思路:將配置文件用戶相關的信息(例如:密碼)進行加密使其以密文形式存在,進行初始化連接池的時候進行解密操作,達到成功創建連接池的目的。Tomcat默認使用DBCP連接池(基於common-pool的一種連接池實現),可在下載commons-dbcp源碼包commons-dbcp-1.4-src.zip,對org.apache.commons.dbcp.BasicDataSourceFactory類修改,把資料庫密碼欄位(加密後的密文)用解密程序解密,獲得解密後的明文即可。具體實現:1.修改org.apache.commons.dbcp.BasicDataSourceFactory類文件找到數據源密碼設置部分value=properties.getProperty(PROP_PASSWORD);if(value!=null){dataSource.setPassword(value);}修改為:value=properties.getProperty(PROP_PASSWORD);if(value!=null){dataSource.setPassword(Encode.decode(value));}將配置文件中的「密碼」(加密後的結果)取出,調用加解密類中的解密方法Encode.decode(value)進行解密。2.加密類Encode.java,本例中使用加密解密模塊比較簡單只是用來說明問題,密文為明文的十六進制串。publicclassEncode{//編碼-普通字元串轉為十六進制字元串publicstaticStringencode(Stringpassword){Stringresult=「」;byte[]psd=password.getBytes();for(inti=0;ipassword696e65743231urljdbc:oracle:thin:@127.0.0.1:1521:orcldriverClassNameoracle.jdbc.driver.OracleDriverusernamewanfang4.將修改後的BasicDataSourceFactory.java和新添加的Encode.java編譯後的class類文件重新打包進commons-dbcp-1.4.jar,將該包拷貝進tomcat下的common/lib目錄中,重啟tomcat。此時tomcat下部署的應用在連接數據源的時候都可以在不暴露密碼明文的情況下進行連接。轉載,僅供參考。
Ⅱ 加密/解密Android現有的資料庫使用sqlCipher問題,怎麼解決
針對sqlite資料庫文件,進行加密。現有兩種方案如下:
1.對資料庫中的數據進行加密。
2.對資料庫文件進行加密
1.uin怎麼獲取?
這個uin不是登錄的帳號,而是屬於內部的、程序界面上不可見的一個編號。
至於查看,最簡單的方法就是登錄web微信後,按F12打開網頁調試工具,然後ctrl+F搜索「uin」,可以找到一串長長的URL,裡面的uin就是當前登錄的微信的uin。
還
有一種方法就是配置文件里,導出的微信目錄下有幾個cfg文件,這幾個文件里有保存,不過是java的hashmap,怎麼解析留給小夥伴們自己琢磨吧,
還有就是有朋友反應退出微信(後台運行不叫退出)或者注銷微信後會清空這些配置信息,所以小夥伴們導出的時候記得在微信登陸狀態下導出。博主自己鼓搗了一
個小程序來完成解析。
2.一個手機多個登錄帳號怎麼辦(沒有uin怎麼辦)
根
據博主那個解密的帖子,必須知道串號和uin。串號好說,配置中一般都有可以搞到,uin從配置中讀取出來的時候只有當前登錄的或者最後登錄的,其他的幾
個記錄都沒辦法解密。網上某軟體的解決方法是讓用戶一個一個登錄後再導出。這個解決方法在某些情況下是不可能的,或者有時候根本不知道uin。
後來經過一個朋友的指點,博主終於發現了解決方法,可以從配置中秒讀出來這個uin,這個方法暫時不透漏了,只是說明下這個異常情況。
3.串號和uin怎麼都正確的怎麼還是沒辦法解密
先
說說串號這個玩意,幾個熱心的朋友反饋了這個問題,經過博主測試發現不同的手機使用的不一定是IMEI,也可能是IMSI等等,而且串號也不一定是標準的
15位,可能是各種奇葩,比如輸入*#06#出來的是一個,但是在微信程序里用的卻是另一個非常奇葩的東西,這種情況多在雙卡雙待和山寨機中出現,經過嚴
格的測試,現在已經能做到精確識別,那幾位熱心的朋友也贈與了不同的代碼表示鼓勵。
4.計算出來了正確的key為什麼無法打開資料庫文件
微
信這個變態用的不是標準的sqlite資料庫,那個帖子也提到了不是資料庫加密,是文件的內容加密,其實是sqlcipher。官方上竟然還賣到
149$,不過倒是開放了源碼,水平夠高的可以自己嘗試編譯。google還能搜索到sqlcipher for
windows這個很好編譯,不過博主不知是長相問題還是人品問題,編譯出來的無法打開微信的資料庫,後來改了這份代碼才完成。
5.資料庫文件內容是加密的,怎麼還原
這
個是某些特殊情況下用到的,比如聊天記錄刪除了資料庫中就沒了,但是某個網友測試說資料庫無法查詢出來了,但是在文件中還是有殘留的。這個情況我沒測試
過,不過想想感覺有這個可能,就跟硬碟上刪除了文件其實就是刪除了文件的硬碟索引,內容還是殘留在硬碟上可以還原一樣,sqlite資料庫刪除的條目只是
抹去了索引,內容還存在這個文件中。
網上的都是直接打開讀取,並沒有解密還原這個文件成普通的sqlite資料庫,使用sqlcipher
的導出方法也只是將可查詢的內容導出。後來博主花了時間通讀了內容加密的方式,做了一個小程序將加密的文件內容直接解密,不操作修改任何數據,非資料庫轉
換,直接數據流解密,完全還原出來了原始的未加密的資料庫文件,大小不變,無內容損失,可以直接用sqlite admin等工具直接打開。
6.已經刪除的聊天內容可以恢復么
通過上述第5的方式還原出原數據後,經測試可以恢復。sqlite的刪除並不會從文件中徹底刪掉,而是抹掉索引,所以可以通過掃描原始文件恢復。前提是沒有重裝過微信。。。
兩種加密方式的優缺點,比較如下:
一、對資料庫中的數據進行加密
優點:
1.實現數據加密快速,只需添加兩個方法
一是:對明文數據進行加密返回密文數據
二是:對密文數據進行解密返回明文數據
2.程序無需進行太大變動,僅在對數據進行添加,修改,刪除,查詢時。針對指定的表欄位進行修改進行加密,解密的欄位即可。
不足:
1.由於對數據進行了加密。所以為了看到明文,必須密文進行解密。因此會增加處理器的消耗。因終端手機的處理能力有限,可能會出現處理數據緩慢的現象發生。
2.僅僅對數據進行了加密,還是可以看到數據表的sql語句,可能猜測到表的作用。另外,如果沒有對一個表中的所有欄位加密,則可以看沒有加密的明文數據。
需要做的工作:
1.無需考慮平台差異性,qt,android,ios都能快速的實現。只需在每個平台上,使用各自的語言,實現同樣的加密,解密演算法即可。
2.需要對加密演算法進行了解,選擇一種加密演算法,進行實現。
二、對資料庫文件進行加密
優點:
1.對整個文件進行了加密,用戶通過編輯器看不到任何有用的數據,用戶使用sqlite browser軟體也無法打開文件查看數據,保證了數據安全。
2.進行打開資料庫時,使用程序sqlite3_key(db,」********」,8);即可對文件解密,對數據表的操作無需進行加密,採用明文即可。
不足:
1.需要修改sqlite的源代碼,這個工作難度比較大。
2.需要對修改後的sqlite進行編譯,需要對makefile有所了解,手動編寫makefile文件,對源程序進行編譯。因平台差異性,可能會造成某個平台無法編譯生成動態鏈接庫的可能。
3.需要對數據訪問層代碼進行修改,例如qt平台需要將以前對資料庫操作使用的QSqlQuery類,更改為使用sqlite3.h文件中定義操作,對資料庫操作。其他平台也一樣,都要做這一步的修改。
4.在程序編譯時,要加入使用加密的動態鏈接庫(linux為共享庫.so文件)windows平台最容易,只需將所使用的dll文件到應用程序中即可。其他平台需要實驗,看如何引入庫,如果編譯。
需要做的工作:
1.修改sqlite源代碼,追加對資料庫文件進行加密的功能。
2.編譯含有加密功能的程序源代碼,生成各自平台需要使用的庫文件。
3.將加密sqlite庫文件引入各自平台中,修改資料庫訪問層代碼。
4.進行程序的部署,測試。
三、資料庫加密原理
目前主流的資料庫都採用了各種安全措施,主要包括用戶認證、訪問控制、數據加密存儲和資料庫操作審計等措施。
用戶認證:用戶或者程序向資料庫提供自己的有效身份證明,資料庫鑒別用戶的身份是否合法,只有合法的用戶才能存取數據
庫中的數據。用戶認證是所有安全機制的前提,只有通過認證才能進行授權訪問和審計。
訪問控制:資料庫管理系統為不同的用戶分配不同的許可權,保證用戶只能進行授權的訪問。目前,一些大型資料庫(如Oracle 等)
都採用了基於角色的訪問控制機制,即為用戶授予不同的角色,如db—owner,security administrator 等,不同的角色允許對資料庫執行不同的操作。
資料庫加密:用戶認證以及訪問控制對訪問資料庫進行了控制,但攻擊者可能會利用操作系統或資料庫漏洞,或物理接觸計算機,而直接接觸資料庫系統文件,從而可能繞過身份認證和存取控制而直接竊取或篡改資料庫內容。對資料庫中的數據進行加密是防範這類威脅的有效手段。
資料庫操作審計:監視和記錄用戶對資料庫所做的各種操作的安全機制,它記錄並存儲用戶的操作,用於事後分析,以檢查導致資料庫現狀的原因以及提供追蹤攻擊者的線索。資料庫的備份與恢復:當資料庫發生不可恢復的故障時,可以將資料庫恢復到先前的某個一致性的狀態。
四、SQLite 加密
由於SQLite 是開放源碼的,並且在其源碼中預留了加密介面,我們可以通過實現其預留的加密介面實現口令認證和資料庫加密以完善其加密機制。
1.口令認證
SQLite 資料庫文件是一個普通文本文件,對它的訪問首先依賴於文件的訪問控制。在此基礎上,再增加進一步的口令認證,即在訪問資料庫時必須提供正確的口令,如果通過認證就可以對資料庫執行創建、查詢、修改、插入、刪除和修改等操作;否則,不允許進一步的訪問。
Ⅲ Oracle資料庫系統採用的訪問控制方式是什麼
沒弄明白你問的是什麼?這里說幾個想到的,看看有沒有你要的。
oracle的訪問控制方式可以有好幾種說法:
用戶控制(分到的用戶不同,能訪問的內容也可以有所區別,許可權可以不同,所以叫做用戶控制)
profile控制(每個用戶的訪問可以用相關的用戶profile進行控制,比如限制同時登錄數等等)
監聽控制(舉例來說,在監聽文件中可以設置訪問的ip段,或者訪問的ip,其他ip不能訪問,當然還有其他的能設定的)
區塊(也就是oracle內部的block,這個算是oracle內部的數據訪問控制方法)
點陣圖(這個是oracle10g以及以後的數據文件訪問方法)
還有許可權控制,角色控制,參數控制(比如限制遠程登錄)等等
Ⅳ 資料庫透明加密是什麼
資料庫透明加密系統是一款基於透明加密技術的安全加密系統,該產品能夠實現對資料庫數據的加密存儲、訪問控制增強、應用訪問安全、許可權隔離以及三權分立等功能。資料庫加密系統基於主動防禦機制,有效防止明文存儲引起的數據泄密、突破邊界防護的外部黑客攻擊、來自於內部高許可權用戶的數據竊取、防止繞開合法應用系統直接訪問資料庫,從根本上解決資料庫敏感數據泄漏問題,真正實現了數據高度安全、應用完全透明、密文高效訪問等技術特點。
目前美創資料庫加密系統支持Windows、AIX、Linux、HP等多個平台,提供軟硬體一體化加密設備和純軟體加密的不同選擇,滿足用戶的多種部署需求。該加密系統適用於大企業、政府、軍隊、軍工、電信、電力、醫療、金融、互聯網等各個領域,同時針對國家等級保護、分級保護、軍隊保密規定均具有很強的政策合規性。
Ⅳ 資料庫的訪問許可權主要有幾種控制方法
增,刪,改,查記錄以及表都可以設置許可權
Ⅵ GBase8s資料庫中標簽訪問控制的機制是怎樣的
GBase8s資料庫的標簽訪問控制的控制策略包含兩個組件:密級和范疇。密級是上讀等寫,高級的主體可以讀下級客體,不可以寫下級客體,只有同級主體可以讀寫同級客體,低級主體不可以讀寫高級客體;范疇需要主體的范疇包含客體的范疇則主體可以讀寫客體,否則不能讀寫客體。
Ⅶ 誰能簡單介紹下資料庫加密
一、資料庫加密是什麼?
資料庫加密技術屬於主動防禦機制,可以防止明文存儲引起的數據泄密、突破邊界防護的外部黑客攻擊以及來自於內部高許可權用戶的數據竊取,從根本上解決資料庫敏感數據泄漏問題。資料庫加密技術是資料庫安全措施中最頂級的防護手段,也是對技術性要求最高的,產品的穩定性至關重要。
二、資料庫加密的方式有哪些?
目前,不同場景下仍在使用的資料庫加密技術主要有:前置代理加密、應用系統加密、文件系統加密、後置代理加密、表空間加密和磁碟加密等,下文將對前四種數據加密技術原理進行簡要說明。
1、前置代理加密技術
該技術的思路是在資料庫之前增加一道安全代理服務,所有訪問資料庫的行為都必須經過該安全代理服務,在此服務中實現如數據加解密、存取控制等安全策略,安全代理服務通過資料庫的訪問介面實現數據存儲。安全代理服務存在於客戶端應用與資料庫存儲引擎之間,負責完成數據的加解密工作,加密數據存儲在安全代理服務中。
2、應用加密技術
該技術是應用系統通過加密API(JDBC,ODBC,CAPI等)對敏感數據進行加密,將加密數據存儲到資料庫的底層文件中;在進行數據檢索時,將密文數據取回到客戶端,再進行解密,應用系統自行管理密鑰體系。
3、文件系統加解密技術
該技術不與資料庫自身原理融合,只是對數據存儲的載體從操作系統或文件系統層面進行加解密。這種技術通過在操作系統中植入具有一定入侵性的「鉤子」進程,在數據存儲文件被打開的時候進行解密動作,在數據落地的時候執行加密動作,具備基礎加解密能力的同時,能夠根據操作系統用戶或者訪問文件的進程ID進行基本的訪問許可權控制。
4、後置代理技術
該技術是使用「視圖」+「觸發器」+「擴展索引」+「外部調用」的方式實現數據加密,同時保證應用完全透明。核心思想是充分利用資料庫自身提供的應用定製擴展能力,分別使用其觸發器擴展能力、索引擴展能力、自定義函數擴展能力以及視圖等技術來滿足數據存儲加密,加密後數據檢索,對應用無縫透明等核心需求。
三、資料庫加密的價值
1、在被拖庫後,避免因明文存儲導致的數據泄露
通常情況下,資料庫中的數據是以明文形式進行存儲和使用的,一旦數據文件或備份磁帶丟失,可能引發嚴重的數據泄露問題;而在拖庫攻擊中,明文存儲的數據對於攻擊者同樣沒有任何秘密可言——如Aul、MyDul等很多成熟的資料庫文件解析軟體,均可對明文存儲的數據文件進行直接分析,並輸出清晰的、結構化的數據,從而導致泄密。
資料庫加密技術可對資料庫中存儲的數據在存儲層進行加密,即使有人想對此類數據文件進行反向解析,所得到的也不過是沒有任何可讀性的「亂碼」,有效避免了因數據文件被拖庫而造成數據泄露的問題,從根本上保證數據的安全。
2、對高權用戶,防範內部竊取數據造成數據泄露
主流商業資料庫系統考慮到初始化和管理的需要,會設置以sys、sa或root為代表的資料庫超級用戶。這些超級用戶天然具備數據訪問、授權和審計的許可權,對存儲在資料庫中的所有數據都可以進行無限制的訪問和處理;而在一些大型企業和政府機構中,除系統管理員,以數據分析員、程序員、服務外包人員為代表的其他資料庫用戶,也存在以某種形式、在非業務需要時訪問敏感數據的可能。
資料庫加密技術通常可以提供獨立於資料庫系統自身許可權控制體系之外的增強權控能力,由專用的加密系統為資料庫中的敏感數據設置訪問許可權,有效限制資料庫超級用戶或其他高許可權用戶對敏感數據的訪問行為,保障數據安全。
Ⅷ 資料庫加密系統是什麼有什麼功能
透明加密技術是資料庫加密系統的核心技術,用於防止明文存儲引起的數據泄密、外部攻擊、內部竊取數據、非法直接訪問資料庫等等,從根本上解決資料庫敏感數據泄漏問題,滿足合法合規要求。
資料庫透明加密系統主要有四個功能:
1. 對敏感數據進行加密,避免與敏感數據的直接接觸。這項功能主要用於防止三種情況的發生,首先,通過對敏感數據進行透明加密阻斷入侵者訪問敏感數據,構成資料庫的最後一道防線。其次,阻斷運維人員任意訪問敏感數據,資料庫透明加密系統可以保護運維人員,避免犯錯。最後,透明加密系統可以實現,即使在資料庫中的物理文件或者備份文件失竊的情況下,依然保證敏感數據的安全性。
2. 資料庫透明加密系統,無需改變任何應用。首先,在對數據進行透明加密時,無需知道密鑰,無需改變任何代碼,即可透明訪問加密的敏感數據。其次,對敏感數據進行加解密的過程透明簡易,可以保證業務程序的連續性,以及保證業務程序不被損傷。
3. 資料庫透明加密系統提供多維度的訪問控制管理,且系統性能消耗非常低。通常資料庫實施透明加密後,整體性能下降不超過10%。
4. 最重要的是,資料庫透明加密系統滿足合規要求,滿足網路安全法、信息安全等級保護、個人信息安全規范等對於敏感數據加密明確的要求。
另外資料庫透明加密系統可以實現物理旁路部署模式和反向代理兩種部署模式。採用旁路部署模式,即在資料庫伺服器安裝資料庫透明加密安全代理軟體,不需要調整任何網路架構。資料庫透明加密後批量增刪改性能影響較小,整體滿足合規要求,管理便捷。反向代理部署模式,是物理層根據表、列等數據分類執行數據存儲加密,防止存儲層面數據丟失引起泄露,邏輯層通過加密網關實現運維管理端的密文訪問控制,整體實現業務數據正常訪問,運維授權訪問,同時提供直連控制訪問,部署更安全。
Ⅸ 資料庫加密的方式有哪幾種
資料庫加密的方式有多種,不同場景下仍在使用的資料庫加密技術主要有:前置代理加密、應用系統加密、文件系統加密、後置代理加密、表空間加密和磁碟加密等,這些你找安策工程師幫你,都是可以做到的網路裡面也有詳細介紹。
Ⅹ 【資料庫】關於強制訪問控制MAC
在這里,有必要跟你說一下強制存取控制(MAC)方法:
所謂MAC是指系統為保證更高程度的安全性,按照TDI/TCSEC標准中安全策略的要求,所採取的強制存取檢查手段。它不是用戶能直接感知或進行控制的。MAC適用於那些對數據有嚴格而固定密級分類的部門,例如軍事部門或政府部門。
在MAC中,DBMS所管理的全部實體被分為主體和客體兩大類。
主體是系統中的活動實體,既包括DBMS所管理的實際用戶,也包括代表用戶的各進程。客體是系統中的被動實體,是受主體操縱的,包括文件、基表、索引、視圖等。對於主體和客體,DBMS為它們每個實例(值)指派一個敏感度標記(Label)。
敏感度標記被分成若干級別,例如絕密(Top Secret)、機密(Secret)、可信(Confidential)、公開(Public)等。主體的敏感度標記稱為許可證級別(Clearance Level),客體的敏感度標記稱為密級(Classification Level)。MAC機制就是通過對比主體的Label和客體的Label,最終確定主體是否能夠存取客體。
當某一用戶(或某一主體)以標記label注冊入系統時,系統要求他對任何客體的存取必須遵循如下規則:
(1)僅當主體的許可證級別大於或等於客體的密級時,該主體才能讀取相應的客體;
(2)僅當主體的許可證級別等子客體的密級時,該主體才能寫相應的客體。
規則(1)的意義是明顯的。而規則(2)需要解釋一下。在某些系統中,第(2)條規則與這里的規則有些差別。這些系統規定:僅當主體的許可證級別小於或等於客體的密級時,該主體才能寫相應的客體,即用戶可以為寫入的數據對象賦予高於自己的許可證級別的密級。這樣一旦數據被寫入,該用戶自已也不能再讀該數據對象了。這兩種規則的共同點在於它們均禁止了擁有高許可證級別的主體更新低密級的數據對象,從而防止了敏感數據的泄漏。
強制存取控制(MAC)是對數據本身進行密級標記,無論數據如何復制,標記與數據是一個不可分的整體,只有符合密級標記要求的用戶才可以操縱數據,從而提供了更高級別的安全性。