TW201638798A - 用於在加密資料上進行查詢處理的資料庫伺服器及客戶端 - Google Patents
用於在加密資料上進行查詢處理的資料庫伺服器及客戶端 Download PDFInfo
- Publication number
- TW201638798A TW201638798A TW105106133A TW105106133A TW201638798A TW 201638798 A TW201638798 A TW 201638798A TW 105106133 A TW105106133 A TW 105106133A TW 105106133 A TW105106133 A TW 105106133A TW 201638798 A TW201638798 A TW 201638798A
- Authority
- TW
- Taiwan
- Prior art keywords
- query
- data
- encrypted
- encryption
- database application
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
係提供方法、系統、裝置及電腦程式產品以供由一資料伺服器(DS)及一資料庫應用程式(DA)安全地處理查詢。參數化查詢係基於從請求方所接收的使用者查詢從DA由DS所接收。DS分析參數化查詢以試圖針對能夠在加密資料值上由DS估算之使用者查詢的轉換版本決定加密配置。DS以決定加密配置的失敗或藉由向DA提供所決定的加密配置來回應DA。DA產生該使用者查詢的該轉換版本,且向DS提供該轉換版本。DS估算使用者查詢的轉換版本,且向DA提供結果。DA解密該等結果,且向該請求方提供該等解密結果。
Description
本發明係關於用於在加密資料上進行查詢處理的資料庫伺服器及客戶端。
可依據各種存儲配置及實施方式來本地地或遠端地儲存資料。例如,雲端計算是關於部署遠端伺服器及軟體網路的最近發展,該部署提供中心化資料存儲及對於資源及服務的線上存取,稱為「雲端服務」。雲端伺服器的集合可針對單一使用者(「租戶(tenant)」)或針對多個相關的或不相關的使用者(「多租戶」系統)主控資源/服務。類似地,資料可由實體「現場(on-site)」儲存,且可以該現場資料存儲由該實體所存取。
資料洩露無疑是針對管理敏感、商業重要資訊之應用程式採用雲端服務的主要阻礙。在公用雲端上,應用程式必須防備潛在惡意的雲端管理員、惡意的共租戶及可通過各種合法手段獲得對於資料存取的其他實體。因為計算及存儲平台本身不能被信任,在雲端平台上在任何地方(在碟上、在記憶體中、在線上等等)以明文(未加密的資料)呈現的任何資料必須被認為容易受到洩露或惡意破壞。在垂直產業(例如財金、銀行及醫療)中,合規需求要求針對這些類型之威脅的強力保護。
據此,在某些情況下,資料庫伺服器可儲存加密資料,但為了安全性的理由不能存取加密鑰。這保證的是,儲存在資料庫中的任何資料被加密,直到其傳遞至客戶端應用程式(例如由客戶端實體所管理的中介應用程式)為止,該客戶端應用程式運行於受保護的環境中。例如,資料庫伺服器可使用部分同態加密(PHE)方案、安全硬體及/或其他安全形式的計算以使用加密形式處理資料,因為資料庫伺服器並不能存取加密鑰。PHE方案容許受限制的操作類別(但非所有操作)在不需要加密鑰的情況下直接執行在加密資料上。由於這些安全性需求及加密資料計算限制,以安全及有效率的方式處理資料庫上的查詢是難以實施的。
係提供此發明內容以使用簡化形式來介紹一系列的概念,該等概念係在實施方式中於以下進一步描述。此概述係不意欲識別申請標的之關鍵特徵或必要特徵,亦不意欲用以限制申請標的之範圍。
係提供方法、系統、裝置及電腦程式產品以供由一資料伺服器及一資料庫應用程式安全地處理查詢。一參數化查詢係從該資料庫應用程式由該資料伺服器所接收。該參數化查詢係從一請求方由該資料庫應用程式所接收之一使用者查詢的一參數化(非資料包含)版本。該資料伺服器分析該參數化查詢,以針對該使用者查詢的一轉換版本決定一加密配置。該轉換版本能夠在加密資料值上由該資料伺服器估算(evaluate)。該資料伺服器藉由指示該加密配置的一失敗,來回應於該資料庫應用程式,若該參數化查詢包括在該資料伺服器處未受支援之加密資料上的一操作(例如在以不允許進行增加的一加密方案加密的一行上進行增加),則決定該加密配置的該失敗。替代性地,該資料伺服器藉由向該資料庫應用程式提供所決定的加密配置來進行回應。在這樣的情況下,該資料庫應用程式產生該使用者查詢的該轉換版本,且向該資料伺服器提供該轉換版本。該資料伺服器估算該使用者查詢的該轉換版本,以產生查詢結果,且向該資料庫應用程式提供該等結果。該資料庫應用程式解密該等結果,且向該請求方提供該等解密結果。
本發明進一步的特徵及優點以及本發明之各種實施例的結構及操作係參照隨附繪圖於下詳細描述。注意的是,本發明係不限於本文中所述的特定實施例。這樣的實施例僅為了說明目的而呈現於本文中。基於本文中所包含的教示,對於相關領域(或多個)中具技藝者而言,額外的實施例將是明確的。
I. 介紹
本說明書及隨附的繪圖揭露合併本發明之特徵的一或更多個實施例。本發明的範圍係不限於所揭露的實施例。所揭露的實施例僅舉例說明本發明,所揭露之實施例的更改版本亦由本發明所包括。本發明的實施例係由隨附於其的請求項所定義。
說明書中對於「一個實施例」、「一實施例」、「一示例實施例」等等的參照指示的是,所述的實施例可包括特定特徵、結構或特性,但每個實施例可能不一定包括該特定特徵、結構或特性。並且,這樣的用句不一定指相同的實施例。進一步地,當特定特徵、結構或特性與實施例連結而描述時,係提出其是在本領域中具技藝者的知識內,以與其他實施例連結而作用如此特徵、結構或特性,無論是否明確描述。
許多示例性實施例係如下所述。注意的是,本文中所提供的任何段落/子段落標題係不欲為限制性的。係在此文件各處描述實施例,且任何類型的實施例可被包括在任何段落/子段落下。並且,在任何段落/子段落中所揭露的實施例可以任何方式與相同段落/子段落及/或不同段落/子段落中所述的任何其他實施例結合。
II. 用於安全及有效率地處理查詢的示例實施例
本文中所述的實施例關於使用加密以保護不受信任之平台上所主控的資料。雖然許多傳統的加密方案保留了資料機密性,這樣的加密方案一般並不容許不受信任的平台運行加密資料上的任何計算。這顯著地減少了在雲端平台上主控應用程式的益處。
例如,資料伺服器(例如資料庫伺服器)可使用部分同態加密(PHE)方案、安全硬體及/或其他安全形式的計算以處理某些加密資料,因為資料伺服器可能不被認為是「受信任的」,且因此並不能存取用以加密資料的加密鑰。PHE方案容許受限制的操作類別(但非所有操作)在不需要加密鑰的情況下直接執行在加密資料上。
依據實施例,當使用者需要查詢儲存於資料伺服器處的加密資料時,使用者裝置(「請求方」)通過資料庫應用程式(亦稱為「客戶端」)向資料伺服器發送查詢。因為資料伺服器並不以非加密資料而受信任,查詢的所有參數、述詞等等必須以相對應的加密鑰加密。回傳至請求方的查詢結果亦被加密且必須被解密。一般而言,資料庫應用程式解密資料且向請求方提供解密資料。包括在查詢本身中的資料(例如參數值)可能必須在提供至資料伺服器之前被加密,以避免不必要地在資料伺服器處利用了查詢資料。據此,在一實施例中,查詢可被轉換成安全形式以供提供至資料伺服器。
據此,在一實施例中,資料庫應用程式係經配置以在向資料伺服器發送查詢之前轉換查詢及加密查詢參數。資料庫應用程式亦可經配置以從另一來源獲取用於資料加密/解密的加密鑰。
例如,資料庫可包括「病患表」,該病患表在相對應的行中對於各病患儲存病患資訊(包括名、姓及社會安全號碼),且各行可被加密。資料伺服器可對放至資料庫的查詢提供服務,該等查詢一開始由資料庫應用程式所接收且提供至資料伺服器。例如,使用者可提交以下病患表上的查詢: SELECT FirstName, LastName FROM Patients WHERE SSN=’1234567’ 此特定查詢針對具有1234567之值的社會安全號碼(SSN)從表格的行請求名及姓的值。
因為表格的SSN行被加密,資料庫應用程式必須以適當的加密演算法及加密鑰加密SSN參數值「1234567」(其呈現於查詢的述詞中),以便資料伺服器可估算加密資料上的述詞。因為FirstName及LastName的行被加密,加密資料值係針對查詢由資料伺服器所回傳。當查詢結果被回傳至資料庫應用程式時,資料庫應用程式必須針對FirstName及LastName的行決定加密方案,以便各列中的值可被解密。此分析對於具有中介變數、暫時性表格等等的複雜查詢而言可能變得非常複雜。
其他人已嘗試藉由增加用以分析資料庫客戶端上之查詢的邏輯來解決此問題。據此,資料庫客戶端必須具有加密中介資料及查詢編譯器,以分析查詢及決定何物需要被加密以供發送至資料伺服器及結果如何可被解密。這樣的解決方案並不將資料伺服器用作用於儲存加密鑰的中心化位置,而是期望各個資料庫客戶端藉由某些其他手段來獲取加密鑰。這樣的解決方案具有以下缺點:資料庫客戶端必須以顯著的查詢編譯性能擴充,以管理加密中介資料,及使用資源以執行查詢結果處理。這對於想要允許對於儲存在資料伺服器處之資料之查詢的實體而言提供了困難,因為該等實體必須部署及管理更複雜的資料庫客戶端且供應適當的加密鑰。
依據實施例,資料伺服器係經擴充以儲存加密中介資料及分析使用者查詢,以決定它們是否可被執行在加密資料上。若該決定是查詢可被執行在加密資料上,則資料伺服決定查詢如何被轉換以便查詢可被執行,及各參數如何被加密。當資料伺服器向資料庫應用程式回傳查詢結果時,資料伺服器描述查詢結果資料如何被加密以便該等結果可由資料庫應用程式解密。
並且,在一實施例中,加密鑰可儲存在資料伺服器處,使用對於資料庫應用程式而言已知或可取得的主加密鑰來加密。如此,資料庫應用程式可從中心化位置(資料伺服器)請求資料加密鑰(或多個)、使用主密鑰來解密資料加密鑰(或多個)及依所需使用經解密的密鑰。
當使用者提交一查詢時,若該查詢要執行在未加密的資料上,則使用者可提交查詢。資料庫應用程式向資料伺服器發送參數化形式的查詢,該參數化形式的查詢要使用加密中介資料來分析。資料伺服器回覆資料庫應用程式,指示如何轉換查詢,及指示哪些查詢參數要被加密及要以哪個加密方案及密鑰來加密。若資料庫應用程式並不具有適當的加密鑰(或多個),則資料庫應用程式可從資料伺服器(或其他位置)請求密鑰(或多個),且使用主密鑰來解密密鑰(或多個)。
資料庫應用程式向資料伺服器發送經轉換的查詢,且在具有查詢結果如何被解密之描述的情況下從資料伺服器接收加密查詢結果。資料庫應用程式解密結果及將它們回傳至使用者。
在一實施例中,對於上述關於病患表的示例而言,當資料庫應用程式接收在述詞中具有未加密值/參數的查詢時,資料庫應用程式向資料伺服器提交請求以分析參數化的查詢。以上查詢的示例參數化查詢版本為「SELECT FirstName, LastName FROM Patients WHERE SSN=@p1」,其中述詞係填以參數化資料(「@p1」)而不是從使用者接收的實際述詞資料(「1234567」)。資料伺服器係經配置以分析參數化查詢,考慮行加密中介資料。資料伺服器驗證是否可針對SSN行估算相等述詞。若否,則資料伺服器查詢失敗。否則,資料伺服器基於參數化查詢來產生加密配置,該參數化查詢描述應用以加密SSN參數資料以供發送至資料伺服器的加密演算法及密鑰。
一旦資料庫應用程式從資料伺服器接收加密配置,資料庫應用程式以適當的加密方案加密SSN參數值且在資料伺服器上執行查詢。若資料庫應用程式並不具有適當的資料加密鑰,則資料庫應用程式可從資料伺服器(或其他來源)請求加密鑰,且使用主密鑰來解密資料加密鑰,該主密鑰對於資料庫應用程式而言是可取得的但對於資料伺服器而言不是。一旦具有加密參數的查詢被提交至資料伺服器,資料伺服器執行加密資料上的查詢。所產生的結果集合包括查詢結果以及結果集合之加密方案(或多個)的指示。在此示例中,FirstName及LastName的行被加密。因此,資料伺服器同查詢結果向資料庫應用程式提供用於回傳之FirstName及LastName之行兩者的加密方案。使用此資訊,資料庫應用程式解密各列中的結果值且向使用者回傳結果。
在實施例中,資料伺服器具有查詢編譯及中介資料管理性能,且這些可被擴充以執行上述功能。因此,在資料伺服器側上建造所述機能允許了簡化的實施方式。
實施例亦允許將資料庫應用程式保持得相對單薄(非複雜的),且允許不使用資料庫應用程式的資源。資料庫應用程式可在不一定要部署新的資料庫應用程式的情況下依所需升級。
並且,資料伺服器可用作資料加密鑰的中心化位置,藉此簡化實體的資料加密鑰管理。
據此,在實施例中,在資料伺服器處的資料庫中介資料追蹤表格中的哪些行被加密、該等行是如何被加密及加密鑰(或多個)的加密版本是如何被維護。係提供資料庫應用程式程式庫的協定以供與資料伺服器互動,以識別查詢中的哪些輸入參數或所儲存的程序必須要被加密及如何加密。該協定亦可指示伺服器需要之查詢的任何其他轉換。該協定指示資料庫應用程式如何接收從伺服器所擷取之資料的加密資訊。亦提供用於從資料伺服器(以加密形式)接收加密鑰的協定。更進一步地,在伺服器中係允許用於決定是否可基於加密資料而回答查詢的分析。
實施例可實施於各種環境中。例如,圖1圖示通訊系統的方塊圖,其中查詢處理系統處理使用者查詢,依據一示例實施例。如圖1中所示,通訊系統100包括資料庫應用程式系統102、第一使用者裝置108a及第二使用者裝置108b,其由第一網路110耦合在一起。資料庫應用程式系統102係經配置以安全及有效率的方式處理從使用者裝置108a及108b所接收的使用者查詢。資料庫應用程式系統102可以一或更多個計算裝置的形式實施。資料庫應用程式系統102包括資料伺服器104及資料庫應用程式106,其由第二網路118耦合在一起。資料伺服器104包括查詢處理器112,且資料庫應用程式106包括資料庫客戶端114。第一使用者裝置108a包括應用程式116a,且第二使用者裝置108b包括應用程式116b。系統100係如下進一步描述。
第一及第二使用者裝置108a及108b可各為任何類型的靜態或行動計算裝置,包括行動電腦或行動計算裝置(例如Microsoft ® Surface®裝置、個人數位助理(PDA)、膝上型電腦、筆記型電腦、平板電腦(例如Apple iPad™)、易網機等等)、行動電話(例如手機、智慧型手機(例如Microsoft Windows®手機、Apple iPhone、實施Google® Android™作業系統的手機、Palm®裝置、Blackberry®裝置等等))、可穿戴式計算裝置(例如智慧型手錶、包括智慧型眼鏡(例如Google® Glass™)的頭戴式裝置等等)、便攜式導航器、相機或其他類型的行動裝置(例如汽車),或靜態計算裝置(例如桌上型電腦或PC(個人電腦))。雖然圖1中圖示一對使用者裝置,在其他實施例中,其他數量的使用者裝置可存在於系統100中,包括個位數的一個或其他數量、數十、數百、數千數量或甚至更大數量的使用者裝置。
資料伺服器104及資料庫應用程式106各可實施為經配置為伺服器裝置的一或更多個計算裝置或實施於該一或更多個計算裝置中。在一個實施例中,資料伺服器104及資料庫應用程式106係包括在一或更多個計算裝置的不同集合中,且在另一實施例中,資料伺服器104及資料庫應用程式106係包括在一或更多個計算裝置的通用集合中。資料庫應用程式106可被視為客戶端或中間層級應用程式,且資料伺服器104可被視為該客戶端的資料庫伺服器。在實施例中,資料伺服器104可對任何數量的資料庫應用程式106提供服務。
資料伺服器104、資料庫應用程式106、第一使用者裝置108a及第二使用者裝置108b中的各者可包括在網路110及118中的一者或兩者上允許通訊的至少一個網路介面。這樣的網路介面(或多個)可包括以下中的一或更多者:任何類型的網路介面(例如網路介面卡(NIC))、有線或無線(例如IEEE 802.11無線LAN(WLAN)無線介面)、全球微波連接互通(Wi-MAX)介面、乙太網路介面、通用序列匯流排(USB)介面、胞式網路介面、Bluetooth™介面、近場通訊(NFC)介面等等。網路介面的進一步示例係於本文中其他處描述。網路110及118的示例包括區域網路(LAN)、廣域網路(WAN)、個人區域網路(PAN)及/或通訊網路(例如網際網路)的組合。當資料伺服器104及資料庫應用程式106被包括在相同的計算裝置中時,網路118可不存在。
在一實施例中,第一及第二使用者裝置108a及108b中的一者(請求方)可向資料庫應用程式系統102發出查詢。可使得由與在使用者裝置上執行之應用程式互動的個人/使用者/客戶來發出查詢,或可使得自動由在使用者裝置上執行的應用程式來發出查詢。例如,可由使用者分別與使用者裝置108a及108b處的應用程式116a及116b互動,以使得查詢被提交,及/或可自動使得查詢被提交。因此,應用程式116a及116b及/或使用者裝置108a及108b可被視為是請求方。應用程式116a及116b的示例包括瀏覽器(例如其導航至由資料庫應用程式106所提供的網站)、行動或桌上型應用軟體、資料庫存取應用程式及能夠向查詢處理系統提交查詢的任何其他類型的應用程式。
在圖1中,示例查詢128係由於第一使用者裝置108a處的應用程式116a提交至資料庫應用程式系統102。查詢128可包括SQL(結構化查詢語言)查詢或由資料伺服器104所管理之資料庫的其他類型的查詢。查詢128係在網路110上傳送而要由資料庫應用程式系統102的資料庫應用程式106所接收。資料庫應用程式106對於該查詢係被視為受信任的實體。例如,在一個實施例中,資料庫應用程式106可由銀行(或其他服務提供者)所管理,且可提供一前端以供從銀行的客戶(或其他服務提供者)接收查詢。因此,查詢128可包括被使用者/請求者認為是敏感的資料,及/或可經配置以存取被認為是敏感的資料伺服器104處的資料。這樣的資料可在資料庫應用程式106處以明文(未加密)表示。例如,查詢128可為由銀行客戶所進行的存取他/她帳戶資料的請求。查詢128可包括客戶的識別資訊,例如(銀行業務背景中)他們的銀行帳戶號碼、他們的社會安全號碼等等。資料庫客戶端114處理查詢128,且處理在資料伺服器104處與查詢處理器112進行的互動以使得查詢128被處理。例如,資料庫客戶端114可包括由微軟公司所發行的ADO.NET客戶端程式庫,或資料庫應用程式106處之資料庫介面的其他實例。資料伺服器104對於查詢128而言係不被視為受信任的實體。例如,在一個實施例中,資料伺服器104可由與資料庫應用程式106之擁有者無關聯之基於雲端的存儲提供者所管理,或由儲存資料庫應用程式106之使用者/客戶之資料的其他實體所管理,但對於該資料而言是不受信任的。如此,儲存在資料伺服器104處的至少某些資料係經加密,以便資料可不在資料伺服器104處洩露。在一個示例中,資料伺服器104可包括SQL SERVER®(由華盛頓州雷德蒙的微軟所發行)的實例,或可包括替代性資料庫伺服器機制的實例(例如由加利福尼亞州紅木城的甲骨文公司所發行的Oracle®資料庫等等)。
據此,在一實施例中,資料庫客戶端114可(通過網路118(當存在時))向查詢處理器112傳送查詢128的參數化版本。查詢128的參數化版本並不包括敏感資訊,而是可包括參數化資料的虛設值或其他指示符,其因此並不暴露某些或所有的與查詢128相關聯的實際資料。例如,查詢128可包括一個人的社會安全號碼(SSN)。在此示例中,資料庫客戶端114處理查詢128以產生參數化查詢,以包括@p1而非實際的SSN,藉此保護SSN免於被暴露於資料伺服器104處。
查詢處理器112分析參數化查詢,以決定查詢128是否可在其內容被加密的情況下在資料伺服器104處被處理。換言之,在當前的示例中,若所包含的SSN的值被加密,則查詢處理器112決定查詢128是否可在資料伺服器104處被處理,而不是實際的SSN被提供至資料伺服器104。若查詢處理器112從參數化查詢的分析決定的是,查詢128不可基於加密資料在資料伺服器104處被處理,則查詢處理器112(通過網路118(當存在時))向資料庫客戶端114傳送查詢回應,指示查詢128不能被處理。若查詢處理器112從參數化查詢的分析決定的是,查詢128可基於加密資料在資料伺服器104處被處理,則查詢處理器112針對查詢128產生加密配置,指示在查詢128呈現至資料伺服器104時,查詢128的哪些資料(例如參數值、述詞等等)要被加密,及資料是如何被加密的。查詢處理器112(通過網路118(當存在時))向資料庫客戶端114傳送查詢回應,提供查詢128的加密配置。
若查詢處理器112在查詢回應中指示失敗,則資料庫客戶端114可通過網路110從資料庫應用程式106向第一使用者裝置108a傳送查詢結果130,向應用程式116a指示失敗。該失敗可向第一使用者裝置108a的使用者呈現。
替代性地,若查詢處理器112在查詢回應中提供加密配置,則資料庫客戶端114可產生及(通過網路118(當存在時))向查詢處理器112提供查詢128的轉換版本,該轉換版本包括依據所接收之加密配置來加密的內容。例如,繼續當前的示例,「1234567」的SSN值可依據加密配置中所指示的特定加密技術來加密,且以此加密形式提供於查詢128的轉換版本中。如本文中所述,可在轉換版本中對查詢128作出進一步的轉換。
資料庫客戶端114(通過網路118(當存在時))向查詢處理器112傳送查詢128的轉換版本。資料庫客戶端114處理查詢以產生查詢結果,其係(通過網路118(當存在時))傳送至資料庫客戶端114。查詢結果可包括加密資訊,其抽取自資料伺服器104處之資料庫的加密行及/或由查詢處理器112在加密資料上所執行的操作(例如加、減、除、乘等等)所產生。資料庫客戶端114可解密加密資料,且通過網路110向第一使用者裝置108a處的應用程式116a傳送解密形式的查詢結果。
注意的是,在一實施例中,若資料庫客戶端114並不能存取用於加密(查詢128之轉換版本之)資料或用於解密(查詢結果之)資料的資料加密鑰,則資料庫客戶端114可從資料伺服器104請求加密鑰。資料伺服器104可儲存但是是以加密形式儲存加密鑰,以便加密鑰可不在資料伺服器104處被使用而洩露查詢128之轉換版本的資料及/或資料庫資料。注意的是,在系統100中,在資料伺服器104處儲存在行中的加密資料以及加密/解密鑰永不在資料伺服器104上以明文呈現。資料伺服器104可在請求時或自動地向資料庫客戶端114傳送加密的加密鑰(例如同查詢結果傳送)。資料庫客戶端114可使用在資料庫應用程式106處所維護的主加密鑰來解密加密的加密/解密鑰,且依所需使用加密鑰來加密(例如查詢128之轉換版本中的)資料及/或解密(例如查詢結果中的)資料。資料庫客戶端114可在查詢結果130中包括解密的查詢結果,且通過網路110從資料庫應用程式106向第一使用者裝置108a傳送查詢結果130。該等查詢結果可向第一使用者裝置108a的使用者呈現。
據此,資料庫應用程式系統102允許安全及有效率地處理查詢。資料可以加密形式被維護在資料伺服器104處。所接收之查詢的參數化形式可(於資料庫應用程式106處)由資料庫客戶端114所產生以供由查詢處理器112進行完成分析,藉此避免在資料伺服器104處暴露查詢的實際資料。該分析指示查詢是否可由查詢處理器112處理於加密資料上。若查詢不能被處理,則查詢處理器112向資料庫客戶端114指示失敗。若查詢可被處理,則查詢處理器112向資料庫客戶端114指示如何轉換查詢以保護所包括的資料,且轉換查詢係由查詢處理器112所處理以產生查詢結果。查詢結果係由資料庫客戶端114所解密且提供至請求方。如此,沒有資料被以未加密形式暴露於資料伺服器104處(除非可容許暴露特定資料),提供高級別的資料安全性。
在實施例中,圖1的資料庫應用程式系統102可以各種方式配置,且可以各種方式操作,以允許安全的查詢處理。下一段落(段落II.A)提供用於處理在資料庫應用程式側處所接收之查詢的示例實施例,之後是段落(段落II.B),提供用於在資料庫伺服器側處處理查詢的示例實施例。這些段落之後是描述示例性計算裝置實施例的段落(段落III),及提供額外實施例的段落(段落IV)。 A. 用於處理查詢之示例資料庫應用程式側的實施例
在實施例中,資料庫應用程式106及資料庫客戶端114可以各種方式配置以處理所接收的查詢。例如,圖2圖示一流程圖200,提供資料庫應用程式中的程序以供處理使用者查詢以維持資料安全性,依據一示例實施例。資料庫客戶端114可依據實施例中的流程圖200來操作。為了說明的目的,流程圖200係針對圖3描述於下。圖3圖示資料庫應用程式300的方塊圖,該資料庫應用程式300包含資料庫客戶端302,該資料庫客戶端302係經配置以與查詢處理器通訊以安全的方式處理使用者查詢,依據一示例實施例。資料庫應用程式300係資料庫應用程式106的示例,而資料庫客戶端302係圖1之資料庫客戶端114的示例。如圖3中所示,資料庫應用程式300包括資料庫客戶端302、網路介面312及密鑰儲存器314。資料庫客戶端302包括資料庫客戶端引擎304、解密器306、加密器308及資料伺服器介面310。資料庫客戶端引擎304包括查詢參數化器320、轉換查詢產生器322及結果處理器324。資料庫應用程式300、資料庫客戶端302及流程圖200係描述如下。注意的是,流程圖200的步驟並不一定要以圖2中所示的順序發生,而是可以其他順序發生。
圖2的流程圖200以步驟202開始。在步驟202處,使用者查詢係從請求方接收。例如,參照圖3,資料庫應用程式300的網路介面312可接收查詢128(例如從圖1中的第一使用者裝置108a),且可遞送要由資料庫客戶端引擎304的查詢參數化器320所接收的查詢128。網路介面312係針對網路(例如圖1的網路110)的通訊介面,且網路介面的進一步的示例及說明係提供於本文中的其他處。
查詢128係請求方需要針對由資料伺服器(例如圖1的資料伺服器104)所管理之(例如資料庫中的)資料執行的查詢。查詢128可包括存取於資料伺服器處之資料中之一或更多個變數及/或查詢參數值上的一或更多個操作。這樣的操作可被定義為要執行於行資料上、執行於查詢的述詞(指定要估算的條件)中等等。
例如,在SQL(結構化查詢語言)查詢中,宣告的「Select」敘述可用以表明一查詢。查詢128可在「Select」敘述之後列舉呈現於查詢結果中的一或更多個資料庫表格行。可指示操作要執行於行(例如「column_1 + column_2」等等)上。「From」子句可指示資料要自以擷取的一或更多個表格。「Where」子句包括比較述詞,其限制由查詢所回傳的列。許多其他類型的子句類型可存在於查詢128中,如相關領域中具技藝者會熟知的。
例如,示例之基於SSN(社會安全號碼)的查詢係顯示於下: SELECT FirstName, LastName, Base_Salary + Annual_Bonus FROM Employees WHERE SSN = 12345678 依據此示例,查詢結果將包括來自「FirstName」及「LastName」行的資料,及「Base_Salary」及「Annual_Bonus」行的總和(逐列加法操作係執行於「Base_Salary」及「Annual_Bonus」行上以產生總和結果)。「From」子句指示的是,所指示的行係選自儲存於由資料伺服器所管理之資料庫中的「Employees」表格。「Where」子句提供限制,指示來自所指示之表格之所指示之行的資料係選自具有等於「12345678」之「SSN」行中之值的一或更多個列。
在流程圖200中,操作從步驟202繼續至步驟204。
在步驟204中,查詢被參數化。在一實施例中,查詢參數化器320係經配置以參數化所接收的使用者查詢128。例如,在一實施例中,查詢參數化器320可經配置以針對參數值(實際資料)及針對各個發現的參數值解析查詢128,以***虛設值,實質上將參數值從可能是敏感的資料值改變至某些其他非敏感的值。例如,參照以上基於SSN的查詢示例,查詢參數化器320可產生相對應的參數化查詢。查詢參數化器320可在查詢128中尋找「12345678」的參數值,且在參數化查詢中可將該參數值改變至虛設值,例如「@p1」。@p1的虛設值不可能由資料伺服器關聯至「12345678」的原始參數值。
如圖3中所示,查詢參數化器320產生參數化查詢326。操作從步驟204繼續至步驟206。
在步驟206中,係向資料伺服器提供參數化查詢以接收用於能夠由資料伺服器在加密資料值上所估算之使用者查詢之轉換版本的加密配置。例如,如圖3中所示,資料伺服器介面310可接收參數化查詢326。資料伺服器介面310係配置為用於與一或更多個資料伺服器(且可選地與其他實體)通訊的通訊介面。在某些實施例中,可能不一定存在資料伺服器介面310。資料伺服器介面310係經配置以(例如在圖1的網路118上)向資料伺服器提供(例如傳送)參數化查詢326。
在一實施例中,資料伺服器係經配置以分析參數化查詢326以決定查詢128是否包含在資料伺服器處加密的資料,且若如此,則決定是否可在加密資料上在資料伺服器處估算查詢128(例如若查詢128之參數值中的一或更多者(例如以上示例中之「12345678」的SSN值)被加密)。操作從步驟206繼續至步驟208。
在步驟208中,回應係接收自資料伺服器。例如,如圖3中所示,資料伺服器介面310可接收查詢分析回應328,且可向資料庫客戶端引擎304的轉換查詢產生器322遞送查詢分析回應328。操作從步驟208繼續至步驟210。
在步驟210中,係決定是否可由資料伺服器估算使用者查詢。在一實施例中,轉換查詢產生器322估算查詢分析回應328,以決定資料伺服器是否指示失敗(資料伺服器不能在加密資料上估算查詢128)或成功(資料伺服器可在加密資料上估算查詢128)。若查詢分析回應328指示失敗,則操作從步驟210繼續至步驟212。若查詢分析回應328指示成功,則操作從步驟210繼續至步驟214。
在步驟212中,係接收指示不能在資料伺服器處在加密資料值上估算使用者查詢的結果。據此,在步驟212中,失敗係指示於查詢分析回應328中,且因此資料伺服器不能在加密資料值上估算查詢128。如此,無法處理查詢128的指示可在查詢結果130中由轉換查詢產生器322所提供,該查詢結果130可由網路介面312傳送至請求方。替代性地,可實施另一程序以另一方式估算查詢128。流程圖200的操作結束於步驟212之後。
在步驟214中,所決定的加密配置係接收自資料伺服器。在一實施例中,若轉換查詢產生器322找到在查詢分析回應328中由資料伺服器所提供的加密配置,則此指示的是,資料伺服器已決定其可在加密資料上估算查詢128,且已提供資訊(例如指令)以供將查詢128格式化/轉換成安全形式以供提供至資料伺服器以供估算。操作從步驟214繼續至步驟216。
在步驟216中,使用者查詢的轉換版本係基於加密配置來產生。在一實施例中,轉換查詢產生器322將在查詢分析回應328中所接收的加密配置用作用於產生包括加密資料之查詢128之轉換版本的指令。轉換查詢產生器322基於加密配置來產生轉換查詢。
例如,加密配置可指示查詢128的哪些參數(例如藉由參數識別符、藉由查詢128中的位置等等來指示)要被加密在轉換版本中、用於加密參數的一或更多個加密方案及要由該一或更多個加密方案所使用以供加密該等參數的一或更多個資料加密鑰(例如藉由密鑰識別符等等來指示)。對於特定查詢而言,可同相對應的加密方案及密鑰將任何數量的參數列於加密配置中。據此,轉換查詢產生器322可經配置以請求加密器308依據所指定的加密方案及密鑰來加密一或更多個參數值。在實施例中,加密器308可經配置以實施一或更多個類型的加密方案以將純文本資料加密成密文,如相關領域中具技藝者會熟知的。這樣的加密方案可包括公用及/或私用密鑰加密方案、同態加密方案(允許在密文上執行計算/操作)、部分同態加密方案(允許在密文上執行計算/操作的特定集合)、確定性加密方案(對於相同的純文本及密鑰總是產生相同的密文)、機率性加密方案(特定純文本可加密至可能密文之集合中的任何一者(在加密程序期間隨機選擇))及/或其他類型的加密方案(或多個)。
例如,針對示例之基於SSN的查詢,加密配置可指示以下: for parameter value @pl use encryption scheme X use encryption key Y 據此,轉換查詢產生器322係經配置以產生基於SSN之查詢的轉換版本,該轉換版本包括使用加密鑰Y依據加密方案X來加密的參數值「12345678」。以加密鑰Y使用加密方案X,參數值「12345678」可由加密器308所加密以產生「!@#&HF%%」的加密值。在這樣的示例中,基於SSN的查詢可以加密值表達為 SELECT FirstName, LastName, Base_Salary + Annual_Bonus FROM Employees WHERE SSN = !@#&HF%% 如下所進一步描述的,加密配置亦可提供供轉換查詢產生器322對查詢128作出其他轉換的指令,包括改變參數的資料類型、改變操作及/或其他轉換。
如圖3中所示,密鑰儲存器314包括主密鑰316、第一密鑰318a、第二密鑰318b及任何額外數量的加密鑰。在某些情況下,在查詢分析回應328中所接收之加密配置中所指示的加密鑰可存在於密鑰儲存器314中。因此,加密器308可存取密鑰儲存器314中的加密鑰,且使用加密鑰以加密由加密配置所指示的一或更多個參數。替代性地,查詢分析回應328可包括在加密配置中指示的一或更多個加密鑰。因此,加密器308可使用同加密資訊所接收的加密鑰(或多個)以依指示加密一或更多個參數。
在又另一實施例中,加密器308可能不能存取在加密配置中所指示之資料庫應用程式300處的加密鑰。據此,加密器308可經配置以從另一來源請求加密鑰,例如資料伺服器。在一實施例中,資料伺服器可儲存可提供至資料庫應用程式300處之加密器308的一或更多個加密鑰(以加密形式儲存)。
例如,在一實施例中,加密器308可依據圖4來操作。圖4圖示一流程圖400,提供用於從資料伺服器擷取資料加密鑰以供將查詢資料加密在使用者查詢之轉換版本中的程序,依據一示例實施例。流程圖400係描述如下。
流程圖400以步驟402開始。在步驟402中,在加密配置中所指示的資料加密鑰係被決定為不存在於資料庫應用程式處。在一實施例中,如上所述,轉換查詢產生器322可存取加密器308以依據指定的加密方案及密鑰來加密參數值。加密器308可決定的是,加密鑰是不可取得的,例如因為無法從密鑰儲存器314或其他位置擷取加密鑰、因為不將加密配置提供給加密鑰等等。
在步驟404中,係針對不存在的資料加密鑰向資料伺服器提供請求。在一實施例中,加密器308可產生密鑰請求334,該密鑰請求334係由資料伺服器介面310提供至資料伺服器。密鑰請求334係針對不能在資料庫應用程式300處擷取之加密鑰的請求。
在步驟406中,係接收受請求之資料加密鑰的加密版本。在一實施例中,如圖3中所示,資料伺服器介面310可回應於密鑰請求334從資料伺服器接收加密鑰336(以加密形式接收),且可向加密器308提供加密鑰336的加密版本。
在步驟408中,資料加密鑰的加密版本係以可在資料庫應用程式處取得的主密鑰解密。在一實施例中,加密器308可在密鑰儲存器314中存取主密鑰316,且使用主密鑰316以解密所接收的加密鑰336的加密版本。並且,加密器308可可選地在密鑰儲存器314中儲存所解密(或加密)的加密鑰336的版本以供後續使用。
在步驟410中,參數資料值係使用資料加密鑰來加密。在一實施例中,加密器308可使用加密鑰336的解密版本以依據所指定的加密方案來加密參數值。加密器308可向轉換查詢產生器322提供加密參數值。
如此,轉換查詢產生器322依據在查詢分析回應328中所接收的加密配置來產生查詢128的轉換版本。如圖3中所示,轉換查詢產生器322產生轉換版本330。轉換版本330係查詢128的轉換版本,且以任何合適的格式包括查詢128的任何加密參數值(而不是未加密的值)以及查詢128的其餘元素(例如任何操作、述詞、子句、變數等等)。並且,如下在段落II.B中所進一步詳細描述的,轉換版本330可包括參數的一或更多個轉換資料類型、一或更多個轉換操作及/或依據加密配置由轉換查詢產生器322所執行的其他轉換。操作從步驟216繼續至步驟218。
在步驟218中,使用者查詢的轉換版本係提供至資料伺服器。如圖3中所示,轉換版本330係由資料伺服器介面310所接收及遞送至資料伺服器(例如在圖1的網路118上進行)。操作從步驟218繼續至步驟220。
在步驟220中,使用者查詢之轉換版本的估算結果係接收自資料伺服器。例如,如圖3中所示,估算的查詢結果322係接收自資料伺服器且由資料伺服器介面310遞送至資料庫客戶端引擎304的結果處理器324。估算的查詢結果332包括處理轉換版本330之資料伺服器處之查詢處理器(例如圖1中之資料伺服器104處的查詢處理器112)的結果。據此,估算的查詢結果332可包括從一或更多個指定表格擷取的一或更多個列/行值、由執行於所擷取之資料上之一或更多個操作所決定的一或更多個值等等。估算的查詢結果332可包括加密結果(例如加密的行等等),在該處,加密資料係擷取自表格及/或產生自執行於加密值上的操作。操作從步驟220繼續至步驟222。
在步驟222中,結果的至少一部分被解密。在一實施例中,結果處理器324可經配置以處理包括在估算的查詢結果332中的查詢結果,例如格式化所回傳的資料等等。當加密資料被包括在估算的查詢結果332中時,結果處理器324可請求解密器306解密加密資料。在實施例中,解密器306可經配置以實施一或更多個類型的解密方案以將密文解密成純文本,如相關領域中具技藝者會熟知的。例如,解密器306可實施解密方案以解密依據本文中其他處所述或原本熟知之任何加密方案來加密的資料。注意的是,在一實施例中,解密器306及加密器308可被包括在相同的功能方塊中。
例如,針對以上示例的基於SSN的查詢,估算的查詢結果332可針對包括在其中的任何加密資料指示解密方案及密鑰,例如以下: for encrypted FirstName data use decryption scheme W use decryption key Z 在此示例中,解密器306可以解密鑰Z使用解密方案W來解密FirstName資料(例如包含病患名的資料行)(注意的是,在某些情況下,相同的資料加密鑰值可用於相關的加密及解密方案)。在為了說明目的而提供的一個示例中,以加密鑰Z使用解密方案W,所接收的加密值「(&*^87&DF」可由解密器306所解密以產生「Samuel」的解密值。
在某些情況下,在估算的查詢結果332中所指示的解密鑰可存在於密鑰儲存器314中。因此,解密器306可存取密鑰儲存器314中的解密鑰,且使用解密鑰來解密如由估算的查詢結果332所指示的一或更多個參數。替代性地,估算的查詢結果332可包括一或更多個解密鑰以供解密查詢結果。因此,解密器306可使用同估算的查詢結果332接收的解密鑰(或多個)以依指示解密一或更多個資料值。
在又另一實施例中,解密器306可能不能在資料庫應用程式300處存取在估算的查詢結果332中針對加密資料所指示的解密鑰。據此,解密器306可經配置以從另一來源請求解密鑰,例如資料伺服器。在一實施例中,資料伺服器可儲存可提供至資料庫應用程式300處之解密器306的一或更多個解密鑰(以加密形式儲存)。
例如,在一實施例中,解密器306可依據圖5來操作。圖5圖示一流程圖500,提供用於從資料伺服器擷取資料加密鑰以供解密查詢資料的程序,依據一示例實施例。流程圖500係描述如下。
流程圖500以步驟502開始。在步驟502中,用於結果中之至少一個資料值的資料解密鑰係被決定為不存在於資料庫應用程式處。在一實施例中,如上所述,結果處理器324可存取解密器306以依據指定的解密方案及密鑰來解密估算的查詢結果332的加密資料。解密器306可決定的是,解密鑰是不可取得的,例如因為無法從密鑰儲存器314或其他位置擷取解密鑰、因為在估算的查詢結果332中未提供解密鑰等等。
在步驟504中,針對資料解密鑰的請求係提供至資料伺服器。在一實施例中,解密器306可產生密鑰請求338,該密鑰請求338係由資料伺服器介面310提供至資料伺服器。密鑰請求338係針對不能在資料庫應用程式300處擷取之解密鑰的請求。
在步驟506中,資料解密鑰的加密版本係接收自資料伺服器。在一實施例中,如圖3中所示,資料伺服器介面310可回應於密鑰請求338從資料伺服器接收解密鑰340的加密版本,且可向解密器306提供解密鑰340的加密版本。
在步驟508中,資料解密鑰的加密版本係以可在資料庫應用程式處取得的主密鑰解密。在一實施例中,解密器306可使用解密鑰340以依據指定的解密方案來解密解密鑰340的加密版本。解密器306可可選地在密鑰儲存器314中儲存所解密(或加密)的解密鑰340的版本以供後續使用。
在步驟510中,至少一個資料值係使用資料解密鑰來解密。在一實施例中,解密器306可使用解密鑰340的解密版本以依據所指定的解密方案來解密資料值。據此,解密器306可向結果處理器324提供解密資料。
如此,結果處理器324從資料伺服器接收估算的查詢結果332。結果處理器324可依所需格式化估算的查詢結果332的資料,且可使用解密器306來解密任何加密資料。如圖3中所示,結果處理器324產生查詢結果130以包括估算的查詢結果332中所接收、格式化及解密的資料。操作從步驟222繼續至步驟224。
在步驟224中,解密結果係傳送至請求方。如圖3中所示,網路介面312從結果處理器324接收查詢結果130,且(例如向圖1之第一使用者裝置108a處的應用程式116a在網路110上)向請求方傳送查詢結果130。如此,係以安全且有效率的方式處理使用者查詢128,其中任何敏感資料被加密(密文)在資料伺服器(未受信任的實體)處,同時能夠在資料庫應用程式300(受信任的實體)處變成明文。流程圖200的操作可結束於步驟224之後。 B. 用於處理查詢之示例資料伺服器側的實施例
在實施例中,資料伺服器104及查詢處理器112可以各種方式配置以處理所接收的查詢。例如,圖6圖示一流程圖600,提供資料伺服器中的程序以供以維持資料安全性的方式處理使用者查詢,依據一示例實施例。查詢處理器112可依據實施例中的流程圖600來操作。為了說明的目的,流程圖600係針對圖7描述於下。圖7圖示資料伺服器700的方塊圖,該資料伺服器700包含查詢處理器702,該查詢處理器702係經配置以與資料庫應用程式通訊以處理使用者查詢,依據一示例實施例。資料伺服器700係資料伺服器104的示例,且查詢處理器702係圖1之查詢處理器112的示例。如圖7中所示,資料伺服器700包括查詢處理器702、存儲器704、資料庫應用程式介面706及密鑰介面708。查詢處理器702包括加密配置產生器710及轉換查詢估算器712。存儲器704儲存資料庫714、密鑰儲存器716及中介資料720。資料伺服器700、查詢處理器702及流程圖600係描述如下。注意的是,流程圖600的步驟並不一定要以圖6中所示的順序發生,而是可以其他順序發生。
圖6的流程圖600以步驟602開始。在步驟602中,參數化查詢係接收自資料庫應用程式。例如,如圖7中所示,資料伺服器700的資料庫應用程式介面706可接收參數化查詢326(例如從圖1中的資料庫應用程式106或圖3的資料庫應用程式300接收),且可遞送要由查詢處理器702之加密配置產生器710所接收的參數化查詢326。資料庫應用程式介面706係配置為用於與一或更多個資料庫應用程式(且可選地與其他實體)通訊的通訊介面。在某些實施例中,可能不一定存在資料庫應用程式介面706。
如上所述,參數化查詢326係查詢128的更改版本,其以任何形式指向儲存在資料庫714中的資料。參數化查詢326包括替代查詢128之實際參數值的虛設值,以便敏感資料不被提供至資料伺服器700。操作從步驟602繼續至步驟604。
在步驟604中,參數化查詢係經分析以決定用於能夠由資料伺服器在加密資料值上所估算之使用者查詢之轉換版本的加密配置。在一實施例中,加密配置產生器710係經配置以分析參數化查詢326,以決定對於查詢128而言加密配置是否存在,使得可在加密資料值(例如加密參數值)(而不是明文資料)上由查詢處理器702估算查詢128。若可在加密資料值上估算查詢128,查詢128的資料安全性可在資料伺服器700處保留。
據此,在一個實施例中,在產生加密配置之前,加密配置產生器710可分析參數化查詢326以決定是否可產生加密配置。此分析可以各種方式執行。例如,在一實施例中,加密配置產生器710可決定參數化查詢326是否包括在資料伺服器處未受支援之加密資料上的任何操作。若如此,則不能在加密資料上由查詢處理器702估算查詢128。
例如,在一實施例中,參數化查詢326可以表達式樹的形式由加密配置產生器710所轉換,或可已經是此形式地接收自資料庫應用程式。在表達式樹的表示中,各參數值或其他類型的變數可被設定為向內分支之樹的「葉端」,且表達式/操作可在樹之分支的交叉處。樹的各表達式將參數值、變數及/或先前估算的表達式之解答中的一或更多者接收為輸入值,且將表達式的解答產生為輸出。因此,加密配置產生器710可開始於葉端處估算表達式樹,且可向內橫穿以分析各表達式/操作的輸入,直到針對表達式樹決定最終結果(或多個)為止。即使一個表達示/操作接收在資料伺服器700處加密的輸入值,且已知在該特定類型的加密上(或在加密資料上根本)不能估算該特定表達式/操作,則分析整個失敗,且不能在資料伺服器700處的加密資料上估算查詢128。然而,若係決定表達式樹中的所有操作皆能夠在它們的輸入上被估算(即使它們的輸入被加密),則可在資料伺服器700處在加密資料上估算查詢128,且可產生加密配置。
在一實施例中,對於可在查詢128中接收的各類型的操作(例如加、減、乘、除等等)而言,係維持了操作可在哪些類型的加密輸入上操作的記錄,若有的話。例如,加密配置產生器710可儲存指示哪些操作可執行於哪些類型的加密資料上作為輸入的表格或其他資料結構(若有的話),或可使用另一技術來維持哪些操作可執行於哪些類型的加密資料上的記錄。這樣的資料結構可儲存在存儲器704中或其他處。
並且,中介資料720可包括指示資料庫714中的哪個資料(例如哪行)被加密、對於各資料(例如對於各行)是用哪個特定的加密方案及用於各資料的加密鑰是何者的中介資料。加密配置產生器710在針對參數化查詢326分析表達式樹時可使用此中介資料。例如,當分析資料庫714中之一或更多個加密行上的特定操作時,加密配置產生器710可檢查中介資料720以決定用於行(或多個)的加密方案,且在依據它們特定的加密方案加密時,可從上述的資料結構決定特定操作是否可執行於該一或更多個行上。
若加密配置產生器710決定的是,參數化查詢326並不包括在資料伺服器處不受支援之加密資料上的任何操作,加密配置產生器710則針對參數化查詢326決定加密配置。加密配置產生器710可藉由針對參數值(例如所指示的行、述詞參數等等)解析參數化查詢326的內容來執行此功能,該等內容皆為潛在加密的查詢項目。加密配置產生器710搜尋中介資料720以識別相對應於所有潛在加密之查詢項目的行,以決定資料庫714中它們的相對應加密方案及密鑰,若有的話。加密配置產生器710產生加密配置以指示查詢128的哪些參數被加密,及它們相對應的加密方案及資料加密鑰。如圖7中所示,加密配置產生器710產生查詢分析回應328,其包括加密配置。
加密配置包括經配置以允許資料庫應用程式產生查詢128之轉換版本330的資訊,已於上進一步描述。在一實施例中,加密配置產生器710可產生加密配置,以包括供資料庫應用程式遵循以產生轉換版本330的指令,及/或可包括對於查詢128的轉換。這樣的指令/轉換可包括以下潛在類型中的一或更多者: (a) 使用加密配置中所指示的加密方案及密鑰來加密轉換版本330中之查詢128的參數值; (b) 轉換轉換版本330中之查詢128之參數的資料類型;及/或 (c) 轉換轉換版本330中之查詢128的操作。
為了說明的目的,以上示例之基於SSN之查詢的參數化版本係複述於下: SELECT FirstName, LastName, Base_Salary + Annual_Bonus FROM Employees WHERE SSN = @pl 在此示例中,Base_Salary及Annual_Bonus具有類型INT(整數),且SSN具有類型CHAR(字符),SSN係依據確定性加密方案X加密於資料庫714中,且Base_Salary及Annual_Bonus係依據部分同態加密(PHE)方案Y來加密。
在一實施例中,加密配置產生器710可估算是否可在加密資料上估算此示例參數化查詢,且若如此,則可如下針對此示例參數化查詢產生指令以包括在加密配置中:
(1) 依據以下動作,藉由決定是否存在加密資料上任何未受支援的操作,來決定是否來在加密資料上估算參數化查詢:
(a) 確認資料庫714中的SSN行係以支援相等(=)操作的加密方案加密。SSN行係識別/推斷自參數化查詢。該確認可藉由檢查SSN之加密方案的中介資料720來執行,該加密方案在此示例中是確定性加密方案X。確定性加密方案確實支援相等操作,所以針對SSN行沒有發生失敗(隨機化加密方案並不支援相等操作,因為並非總是產生相同的加密結果,所以若SSN的加密方案已是隨機化方案,此檢查會已失敗)。
(b) 確認資料庫714中的Base_Salary及Annual_Bonus行是以支援加法操作的加密方案加密。這可藉由檢查Base_Salary及Annual_Bonus之加密方案(或多個)的中介資料720來執行,該等加密方案在此示例中是PHE方案Y。在此示例中,PHE方案Y支援加法操作,所以針對Base_Salary及Annual_Bonus行沒有發生失敗(若PHE方案Y並不支援加法操作,則此檢查會已失敗)。
據此,此示例參數化查詢可在加密資料上估算,因為不存在加密資料上之未受支援的操作,且因此可產生加密配置,如下。
(2) 產生具有指令的加密配置: (a) 加密指令: 中介資料720指示行SSN係依據加密方案X來加密。因此,在要依據加密方案X加密之查詢128的轉換版本中針對提供至資料伺服器700的SSN參數值(或多個)產生指令。
(b) 資料類型轉換:在查詢128中,Base_Salary及Annual_Bonus具有類型INT且SSN具有類型CHAR。然而,因為Base_Salary及Annual_Bonus實體上以加密形式儲存於資料庫714中,它們加密版本的資料類型是BINARY。因此,可產生一指令以轉換轉換版本中的查詢128以使用Base_Salary及Annual_Bonus的加密資料類型。
(c) 執行一或更多個操作:加密配置產生器710可向資料庫應用程式提供指令以執行查詢128之轉換版本中之查詢128之參數值上的一或更多個任意的操作/功能/表達式。可執行任何數量的操作及操作類型,包括移除尾隨或前導空格、將字串資料轉換至大(或其他)寫、將字串轉換至整數、依據特定日期格式來格式化資料、將第一格式時間(例如UTC時間)轉換至第二格式時間(例如本地時間)等等。加密配置產生器710可指示資料庫應用程式以執行進一步類型的操作,如相關領域中具技藝者從本文中的教示會熟知的。
並且,加密配置產生器710可註記操作轉換要由轉換查詢估算器712在查詢128的轉換版本上執行(及/或轉換查詢估算器712可自己決定這些)。例如,假設(為了說明的目的)對於加密方案Y而言,在未加密值上對於加法的等效操作是加密值的乘法。據此,加密配置產生器710可註記一指令以供轉換查詢估算器712在估算轉換查詢時將Base_Salary及Annual_Bonus的加法轉換至Base_Salary及Annual_Bonus之加密版本的乘法。
據此,回應於以上示例參數化查詢而提供至資料庫應用程式的加密配置可包括這些指令(可選地連同SSN之加密鑰的加密複本)。
如此,在步驟606處,若針對參數化查詢326決定加密配置(也就是決定能夠在加密輸入上被估算),則操作從步驟606繼續至步驟612。若存在失敗,則操作從步驟606繼續至步驟608。
在步驟608中,無法決定能夠由資料伺服器在加密資料值上估算之使用者查詢之轉換版本的加密配置。如上針對圖6所述,基於參數化查詢326的分析,由於參數化查詢128包括在資料伺服器700處未受支援的加密資料上的操作,可能存在無法針對能夠在加密資料值上由資料伺服器估算之查詢128的轉換版本決定加密配置的情況。操作從步驟608繼續至步驟610。
在步驟610中,資料庫應用程式被通知該失敗。在一實施例中,指示該失敗的資訊可在查詢分析回應328中由加密配置產生器710所提供,該分析回應328係由資料庫應用程式介面706傳送至資料庫應用程式。流程圖600的操作結束於步驟610之後。
在步驟612中,所決定的加密配置係提供至資料庫應用程式。例如,如圖7中所示,加密配置可在查詢分析回應328中由加密配置產生器710所提供,該查詢分析回應328係由資料庫應用程式介面706傳送至資料庫應用程式。
注意的是,如上所述,資料庫應用程式基於所接收的加密配置產生查詢128的轉換版本(圖2的步驟216)。在一實施例中,加密配置可在轉換版本330中由資料庫應用程式針對加密指示一或更多個參數值。如上所述,資料庫應用程式可存取用以加密參數值的加密鑰。替代性地,資料庫應用程式可能必須從資料伺服器700請求資料加密鑰的複本。
例如,圖8圖示一流程圖800,提供資料伺服器中的程序以供對由資料庫應用程式進行之針對資料加密鑰的請求提供服務,依據一示例實施例。流程圖800係描述如下。
流程圖800以步驟802開始。在步驟802中,針對資料加密鑰的請求係接收自資料庫應用程式,該資料加密鑰係經配置以加密使用者查詢的一或更多個參數值。在一實施例中,如圖7中所示,資料庫應用程式可產生密鑰請求334,該密鑰請求334係由資料庫應用程式介面706接收及遞送至密鑰介面708。如上所進一步描述的,密鑰請求334係針對不能在資料庫應用程式處擷取之加密鑰的請求。
在步驟804中,資料加密鑰的加密版本係擷取自密鑰儲存器,該密鑰儲存器包含使用至少一個主密鑰來加密的資料加密鑰。密鑰介面708係經配置以對資料庫應用程式之針對密鑰儲存器716之加密/解密鑰(例如第一及第二密鑰718a及718b)的請求提供服務。任何數量的密鑰可儲存在密鑰儲存器716中。並且,儲存在密鑰儲存器716中的密鑰718a及718b(及進一步的密鑰)可使用可在資料庫應用程式處取得但不可在資料伺服器700處取得的主密鑰(例如圖3的主密鑰316)來加密。如此,密鑰718a及718b可不在資料伺服器700處被誤用來解密及洩露資料庫714的加密資料。
據此,回應於密鑰請求334,密鑰介面708可從密鑰儲存器716擷取密鑰請求334中所指定的一或更多個資料加密鑰。
在步驟806中,資料加密鑰的加密版本係提供至資料庫應用程式。在一實施例中,如圖7中所示,密鑰介面708可向資料庫應用程式介面706提供加密鑰336(其被加密),該資料庫應用程式介面706向資料庫應用程式提供加密鑰336。資料庫應用程式可使用主密鑰來解密加密鑰336,且可使用解密的密鑰來加密查詢128之轉換版本中的資料,該資料要被提供回資料伺服器700。
參照回圖6,在步驟614中,使用者查詢的轉換版本係接收自資料庫應用程式。例如,如圖7中所示,使用者查詢128的轉換版本330係由資料庫應用程式介面310接收自資料庫應用程式,且遞送至轉換查詢估算器712。在一實施例中,轉換版本330包括一或更多個加密參數值,該等加密參數值係依據在查詢分析回應328中傳送至資料庫應用程式的加密配置來加密。轉換版本330可選地包括針對資料庫應用程式的指令,如上所述。操作從步驟614繼續至步驟616。
注意的是,在一實施例中,步驟614可包括驗證使用者查詢之轉換版本的程序。這樣的驗證可由轉換查詢估算器712所執行,以確認使用者查詢128的轉換版本330是可執行的。可執行任何合適類型(或多個)的驗證,包括檢查轉換版本330的語法以供更正、對參數化查詢326比較轉換版本330以確認對於相同使用者查詢128的關係、檢查加密配置中的所有指令皆執行於資料庫應用程式處、檢查用於轉換版本330中之參數的加密類型匹配資料庫714中相對應行的加密(例如藉由參照中介資料720來進行)及/或藉由執行任何其他種類或類型的驗證來進行的任何步驟。若轉換版本330在驗證期間具有錯誤,轉換查詢估算器712可與資料庫應用程式通訊以請求對於轉換版本330作出更正。
在步驟616中,使用者查詢的轉換版本係經估算以產生結果。在一實施例中,轉換查詢估算器712估算轉換版本330以產生查詢結果。在一實施例中,轉換查詢估算器712以類似於查詢引擎可能估算傳統經接收之查詢的方式來估算轉換版本330,例如藉由以下步驟來進行:擷取轉換版本330之相對應於參數值(其可被加密或不加密)的任何行(其可被加密或不加密)、執行行及/或參數值上的操作(其可包括加密值上的可容許操作及/或可包括轉換參數值上的操作(例如執行加密值的乘法而不是未加密值的加法))及產生查詢如由查詢所定義的結果(其可包括加密資料)。操作從步驟616繼續至步驟618。
在步驟618中,結果係連同指示至少一個資料解密鑰的中介資料提供至資料庫應用程式,該至少一個資料解密鑰係經配置以解密結果的至少一部分。例如,如圖7中所示,轉換查詢估算器712產生估算查詢結果332,其包括指示估算轉換版本330之結果的資訊。估算查詢結果332係提供至資料庫應用程式介面706,其向資料庫應用程式傳送估算查詢結果332。
在一實施例中,轉換查詢估算器712亦可在估算查詢結果332中包括中介資料,該中介資料指示(查詢128之)原始參數的資料類型、指示哪個查詢結果資料被加密及指示加密方案及密鑰以供解密加密資料。如此,在向請求方提供查詢結果130(例如圖2的步驟224)之前,資料庫應用程式可將加密之估算查詢結果332的任何部分解密(例如圖2的步驟222)成相對應的資料類型。
如上所述,資料庫應用程式可存取用以解密查詢結果的解密鑰。替代性地,資料庫應用程式可能必須從資料伺服器700請求資料解密鑰的複本。
例如,圖9圖示一流程圖900,提供資料伺服器中的程序以供對由資料庫應用程式進行之針對資料解密鑰的請求提供服務,依據一示例實施例。流程圖900係描述如下。
流程圖900以步驟902開始。在步驟902中,針對資料解密鑰的請求係接收自資料庫應用程式,該資料解密鑰係經配置以解密結果的至少一部分。資料庫應用程式可產生密鑰請求338,其係由資料庫應用程式介面706接收及遞送至密鑰介面708。如上所述,密鑰請求338係針對不能在資料庫應用程式處擷取之解密鑰的請求。
在步驟904中,資料解密鑰的加密版本係擷取自密鑰儲存器,該密鑰儲存器包含使用至少一個主密鑰來加密的資料解密鑰。回應於密鑰請求338,密鑰介面708可從密鑰儲存器716擷取密鑰請求338中所指定的一或更多個資料解密鑰。
在步驟906中,資料解密鑰的加密版本係提供至資料庫應用程式。在一實施例中,如圖7中所示,密鑰介面708可向資料庫應用程式介面706提供解密鑰340(其被加密),該資料庫應用程式介面706向資料庫應用程式提供解密鑰340。資料庫應用程式可使用主密鑰來解密解密鑰340,且可使用解密的密鑰來解密估算查詢結果332的資料。
III. 示例行動及靜態裝置實施例
可以硬體或與軟體及/或韌體結合的硬體來實施資料庫應用程式系統102、資料伺服器104、資料庫應用程式106、第一使用者裝置108a、第二使用者裝置108b、查詢處理器112、資料庫客戶端114、應用程式116a、應用程式116b、資料庫應用程式300、資料庫客戶端302、資料庫客戶端引擎304、解密器306、加密器308、資料伺服器介面310、查詢參數化器320、轉換查詢產生器322、結果處理器324、資料伺服器700、查詢處理器702、資料庫應用程式介面706、密鑰介面708、加密配置產生器710、轉換查詢估算器712、流程圖200、流程圖400、流程圖500、流程圖600、流程圖800及流程圖900。例如,資料庫應用程式系統102、資料伺服器104、資料庫應用程式106、查詢處理器112、資料庫客戶端114、應用程式116a、應用程式116b、資料庫應用程式300、資料庫客戶端302、資料庫客戶端引擎304、解密器306、加密器308、查詢參數化器320、轉換查詢產生器322、結果處理器324、資料伺服器700、查詢處理器702、加密配置產生器710、轉換查詢估算器712、流程圖200、流程圖400、流程圖500、流程圖600、流程圖800及/或流程圖900可實施為經配置以執行於一或更多個處理器中及儲存於電腦可讀取存儲媒體中的電腦程式代碼/指令。替代性地,資料庫應用程式系統102、資料伺服器104、資料庫應用程式106、第一使用者裝置108a、第二使用者裝置108b、查詢處理器112、資料庫客戶端114、應用程式116a、應用程式116b、資料庫應用程式300、資料庫客戶端302、資料庫客戶端引擎304、解密器306、加密器308、資料伺服器介面310、查詢參數化器320、轉換查詢產生器322、結果處理器324、資料伺服器700、查詢處理器702、資料庫應用程式介面706、密鑰介面708、加密配置產生器710、轉換查詢估算器712、流程圖200、流程圖400、流程圖500、流程圖600、流程圖800及流程圖900可實施為硬體邏輯/電性電路系統。
例如,在一實施例中,資料庫應用程式系統102、資料伺服器104、資料庫應用程式106、第一使用者裝置108a、第二使用者裝置108b、查詢處理器112、資料庫客戶端114、應用程式116a、應用程式116b、資料庫應用程式300、資料庫客戶端302、資料庫客戶端引擎304、解密器306、加密器308、資料伺服器介面310、查詢參數化器320、轉換查詢產生器322、結果處理器324、資料伺服器700、查詢處理器702、資料庫應用程式介面706、密鑰介面708、加密配置產生器710、轉換查詢估算器712、流程圖200、流程圖400、流程圖500、流程圖600、流程圖800及流程圖900之一或更多者或任何組合可一起實施於SoC中。SoC可包括集成電路晶片,該集成電路晶片包括以下中的一或更多者:處理器(例如中央處理單元(CPU)、微控制器、微處理器、數位訊號處理器(DSP)等等)、記憶體、一或更多個通訊介面及/或進一步的電路,且SoC可可選地執行所接收的程式代碼及/或包括嵌入式韌體以執行功能。
圖10描繪實施例可實施於其中之計算裝置1000的示例性實施方式。例如,資料伺服器104、資料庫應用程式106、第一使用者裝置108a、第二使用者裝置108b、資料庫應用程式300及/或資料伺服器700可以類似於靜態電腦實施例中之計算裝置1000的一或更多個計算裝置來實施,包括計算裝置1000的一或更多個特徵及/或替代性特徵。係為了說明的目的而提供本文中所提供之計算裝置1000的說明,且不欲為限制性的。實施例可以進一步類型的電腦系統實施,如相關領域(或多個)中具技藝者會熟知的。
如圖10中所示,計算裝置1000包括一或更多個處理器(稱為處理器電路1002)、系統記憶體1004及匯流排1006,該匯流排1006將包括系統記憶體1004的各種系統元件耦合至處理器電路1002。處理器電路1002係以一或更多個實體硬體電性電路裝置構件及/或集成電路裝置(半導體材料晶片或晶模(die))實施為中央處理單元(CPU)、微控制器、微處理器及/或其他實體硬體處理器電路的電性及/或光學電路。處理器電路1002可執行儲存於電腦可讀取媒體中的程式代碼,例如作業系統1030的程式代碼、應用程式1032、其他程式1034等等。匯流排1006表示若干類型匯流排結構中之任何者的一或更多者,包括記憶體匯流排或記憶體控制器、周邊匯流排、加速圖形埠及處理器或使用各種匯流排架構中之任何者的本地匯流排。系統記憶體1004包括唯讀記憶體(ROM)1008及隨機存取記憶體(RAM)1010。基本輸入/輸出系統1012(BIOS)係儲存於ROM 1008中。
計算裝置1000亦具有以下驅動器中的一或更多者:用於讀取自及寫入至硬碟的硬碟機1014、於讀取自或寫入至可移除式磁碟1018的磁碟機1016及用於讀取自或寫入至可移除式光碟1022(例如CD ROM、DVD ROM)或其他光學媒體的光碟機1020。硬碟機1014、磁碟機1016及光碟機1020係分別藉由硬碟機介面1024、磁碟機介面1026及光碟機介面1028連接至匯流排1006。驅動器及它們相關聯的電腦可讀取媒體提供用於電腦之電腦可讀取指令、資料結構、程式模組及其他資料的非依電性存儲器。雖然描述硬碟、可移除式磁碟及可移除式光碟,其他類型之基於硬碟的電腦可讀取存儲媒體可用以儲存資料,例如快閃記憶卡、數位視訊碟、RAM、ROM及其他硬體存儲媒體。
許多程式模組可儲存於硬碟、磁碟、光碟、ROM或RAM上。這些程式包括作業系統1030、一或更多個應用程式1032、其他程式1034及程式資料1036。應用程式1032或其他程式1034例如可包括用於實施資料庫應用程式系統102、查詢處理器112、資料庫客戶端114、應用程式116a、應用程式116b、資料庫客戶端302、資料庫客戶端引擎304、解密器306、加密器308、查詢參數化器320、轉換查詢產生器322、結果處理器324、查詢處理器702、加密配置產生器710、轉換查詢估算器712、流程圖200、流程圖400、流程圖500、流程圖600、流程圖800及/或流程圖900(包括流程圖200、400、500、600、800、900的任何合適步驟)及/或本文中所述之進一步實施例的電腦程式邏輯(例如電腦程式代碼或指令)。
使用者可通過輸入裝置(例如鍵盤1038及指向裝置1040)將命令及資訊輸進計算裝置1000。其他輸入裝置(未圖示)可包括傳聲器、搖桿、遊戲板、衛星天線、掃瞄器、觸控螢幕及/或觸控板、用以接收語音輸入的語音辨識系統、用以接收手勢輸入的手勢辨識系統或類似物。這些及其他輸入裝置通常通過耦合至匯流排1006的序列埠介面1042連接至處理器電路1002,但可由其他介面所連接,例如平行埠、遊戲埠或通用序列匯流排(USB)。
顯示螢幕1044亦透過介面(例如視訊轉接器1046)連接至匯流排1006。顯示螢幕1044可外部於或併入於計算裝置1000。顯示螢幕1044可顯示資訊以及為用於接收使用者命令及/或其他資訊的使用者介面(例如藉由觸控、手指手勢、虛擬鍵盤等等來進行)。除了顯示螢幕1044以外,計算裝置1000可包括其他周邊輸出裝置(未圖示),例如揚聲器及印表機。
計算裝置1000係通過轉接器或網路介面1050、數據機1052或用於在網路上建立通訊的其他手段連接至網路1048(例如網際網路)。數據機1052(其可為內部或外部的)可透過序列埠介面1042連接至匯流排1006(如圖10中所示),或可使用另一介面類型(包括平行介面)來連接至匯流排1006。
如本文中所使用的,用語「電腦程式媒體」、「電腦可讀取媒體」及「電腦可讀取存儲媒體」係用以指實體硬體媒體,例如與硬碟機1014相關聯的硬碟、可移除式磁碟1018、可移除式光碟1022、其他實體硬體媒體(例如RAM、ROM、快閃記憶卡、數位視訊碟、zip碟、MEM、基於奈米技術的存儲裝置)及進一步類型的實體/有形硬體存儲媒體(包括圖12的記憶體1220)。這樣的電腦可讀取存儲媒體係區隔自通訊媒體且不與通訊媒體重疊(不包括通訊媒體)。通訊媒體包括經調變之資料訊號(例如載波)中的電腦可讀取指令、資料結構、程式模組或其他資料。用語「調變資料訊號」意指一訊號,該訊號具有其特性集合中的一或更多者或以將資訊編碼於該訊號的如此方式來改變。藉由示例且非限制的方式,通訊媒體包括無線媒體(例如聲學、RF、紅外及其他無線媒體)以及有線媒體。實施例亦針對單獨的且不與針對電腦可讀取存儲媒體的實施例重疊的如此通訊媒體。
如上所述,電腦程式及模組(包括應用程式1032及其他程式1034)可儲存於硬碟、磁碟、光碟、ROM、RAM或其他硬體存儲媒體上。亦可透過網路介面1050、序列埠介面1042或任何其他介面類型來接收這樣的電腦程式。這樣的電腦程式當由應用程式所執行或加載時,允許計算裝置1000實施本文中所討論之實施例的特徵。據此,這樣的電腦程式表示計算裝置1000的控制器。
實施例亦針對包括儲存於任何電腦可讀取媒體上之電腦代碼或指令的電腦程式產品。這樣的電腦程式產品包括硬碟機、光碟機、記憶體裝置封包、可攜式記憶棒、記憶卡及其他類型的實體存儲硬體。
IV. 示例實施例
在一個實施例中,一種方法係提供於實施於至少一個計算裝置中之一資料伺服器中,該方法包括以下步驟:從一資料庫應用程式接收一參數化查詢,該參數化查詢係從一請求方由該資料庫應用程式所接收之一使用者查詢的一參數化版本;分析該參數化查詢以針對能夠在加密資料值上由該資料伺服器估算之該使用者查詢的一轉換版本決定一加密配置;及回應該資料庫應用程式。
在一實施例中,該分析步驟包括以下步驟:針對能夠在加密資料值上由該資料伺服器估算之該使用者查詢的一轉換版本決定一加密配置的失敗,該失敗係肇因於決定該參數化查詢包括在該資料伺服器處未受支援之加密資料上的一操作;及該回應步驟包括以下步驟:通知該資料庫應用程式該失敗。
在一實施例中,該使用者查詢係經配置以在儲存於該資料伺服器處之至少一個表格中的資料上被估算,該方法更包括以下步驟:儲存中介資料,該中介資料指示加密資料值所在之該至少一個表格的一或更多個行,且指示該加密資料值是如何被加密的。
在一實施例中,該回應步驟包括以下步驟:向該資料庫應用程式提供經決定的該加密配置。
在一實施例中,該加密配置包括供該資料庫應用程式執行以將該使用者查詢轉換至該使用者查詢之該轉換版本的指令。
在一實施例中,該加密配置指示該使用者查詢的哪些參數要被加密在該轉換版本中、用於加密該等參數的一或更多個加密方案及要由該一或更多個加密方案使用以供加密該等參數的一或更多個資料加密鑰。
在一實施例中,該提供步驟包括以下步驟:同經決定的加密配置向該資料庫應用程式提供至少一個資料加密鑰以供加密該使用者查詢的至少一個參數。
在一實施例中,該方法更包括以下步驟:從該資料庫應用程式接收該使用者查詢的該轉換版本,該使用者查詢的該轉換版本包括一或更多個加密參數值。
在一實施例中,該方法更包括以下步驟:從該資料庫應用程式接收針對一資料加密鑰的一請求,該資料加密鑰係經配置以加密該使用者查詢的一或更多個參數值;從一密鑰儲存器擷取該資料加密鑰的一加密版本,該密鑰儲存器包含使用至少一個主密鑰來加密的資料加密鑰;及向該資料庫應用程式提供該資料加密鑰的該加密版本。
在一實施例中,該方法更包括以下步驟:估算該使用者查詢的該轉換版本以產生結果;及連同中介資料向該資料庫應用程式提供該等結果,該中介資料指示經配置以解密該等結果之至少一部分的至少一個資料解密鑰。
在一實施例中,該方法更包括以下步驟:從該資料庫應用程式接收針對一資料解密鑰的一請求,該資料解密鑰係經配置以解密該等結果的至少一部分;從一密鑰儲存器擷取該資料解密鑰的一加密版本,該密鑰儲存器包含使用至少一個主密鑰來加密的資料解密鑰;及向該資料庫應用程式提供該資料解密鑰的該加密版本,該資料解密鑰的一解密版本係在該方法期間不存在於該資料伺服器上。
在另一實施例中,至少一個計算裝置包括:一資料伺服器,包括記憶體及經配置以從一資料庫應用程式接收一查詢的一查詢處理器,該查詢係從一使用者由該資料庫應用程式接收,該查詢處理器包括一加密配置產生器,該加密配置產生器係經配置以從一資料庫應用程式接收一參數化查詢,該參數化查詢係從一請求方由該資料庫應用程式所接收之一使用者查詢的一參數化版本,該加密配置產生器係經配置以分析該參數化查詢以針對能夠在加密資料值上由該資料伺服器估算之該使用者查詢的一轉換版本決定一加密配置,且向該資料庫應用程式提供一回應。
在一實施例中,回應於決定該參數化查詢包括在該資料伺服器處未受支援之加密資料上的一操作,該加密配置產生器係經配置以對於決定該加密配置失敗,且在該回應中通知該資料庫應用程式該失敗;且回應於成功決定該加密配置,該加密配置產生器係經配置以在該回應中向該資料庫應用程式提供所決定的該加密配置。
在一實施例中,該查詢處理器更包括:一轉換查詢分析器,係經配置以進行以下步驟:從該資料庫應用程式接收該使用者查詢的該轉換版本,該使用者查詢的該轉換版本包括一或更多個加密參數值;估算該使用者查詢的該轉換版本以產生結果;及連同中介資料向該資料庫應用程式提供該等結果,該中介資料指示經配置以解密該等結果之至少一部分的至少一個資料解密鑰。
在一實施例中,一種方法係提供於實施於至少一個計算裝置中之一資料庫應用程式中,該方法包括以下步驟:從一請求方接收一使用者查詢;參數化該查詢;向一資料伺服器提供該參數化查詢以接收針對能夠在加密資料值上由該資料伺服器估算之該使用者查詢之一轉換版本的一加密配置;及從該資料伺服器接收一回應。
在一實施例中,從該資料伺服器接收一回應的該步驟包括以下步驟:接收不能在該資料伺服器處的加密資料值上估算該使用者查詢的一指示。
在一實施例中,從該資料伺服器接收一回應的該步驟包括以下步驟:從該資料伺服器接收所決定之該加密配置;及該方法更包括以下步驟:基於該加密配置來產生該使用者查詢的該轉換版本,該使用者查詢的該轉換版本包括一或更多個加密參數值;及向該資料伺服器提供該使用者查詢的該轉換版本。
在一實施例中,該加密配置指示該使用者查詢的哪些參數要被加密在該轉換版本中、用於加密該等參數的一或更多個加密方案及要由該一或更多個加密方案所使用以供加密該等參數的一或更多個資料加密鑰,該產生步驟包括以下步驟:加密被指示為要依據一相對應經指示的加密方案及資料加密鑰來加密之該使用者查詢之該等參數的各參數值。
在一實施例中,該加密步驟包括以下步驟:決定在該加密配置中所指示的一資料加密鑰不存在於該資料庫應用程式處;向該資料伺服器提供針對該不存在之資料加密鑰的一請求;接收所請求之該資料加密鑰的一加密版本;以可在該資料庫應用程式處取得的一主密鑰解密該資料加密鑰的該加密版本;及使用該資料加密鑰來加密一參數資料值。
在一實施例中,該方法更包括以下步驟:從該資料伺服器接收該使用者查詢之該轉換版本之一估算的結果;解密該等結果的至少一部分;及向該請求方傳送該等解密結果。
在一實施例中,該解密步驟包括以下步驟:決定針對該等結果中的至少一個資料值的一資料解密鑰不存在於該資料庫應用程式處;向該資料伺服器提供針對該資料解密鑰的一請求;從該資料伺服器接收該資料解密鑰的一加密版本;以可在該資料庫應用程式處取得的一主密鑰解密該資料解密鑰的該加密版本;及使用該資料解密鑰來解密該至少一個資料值。
V. 結論
雖然已於上描述本發明的各種實施例,應了解的是,係已僅藉由示例而非限制的方式來呈現它們。將由相關領域(或多個)中具技藝的該等人所了解的是,可在其中作出形式及細節上的各種改變而不脫離如隨附請求項中所定義之本發明的精神及範圍。據此,本發明的幅度及範圍不應由上述示例性實施例中的任何者所限制,而是應僅依據以下請求項及它們的等效物來定義。
102‧‧‧資料庫應用程式系統
104‧‧‧資料伺服器
106‧‧‧資料庫應用程式
108a‧‧‧第一使用者裝置
108b‧‧‧第二使用者裝置
110‧‧‧網路
112‧‧‧查詢處理器
114‧‧‧資料庫客戶端
116a‧‧‧應用程式
116b‧‧‧應用程式
118‧‧‧第二網路
128‧‧‧查詢
130‧‧‧查詢結果
200‧‧‧流程圖
202‧‧‧步驟
204‧‧‧步驟
206‧‧‧步驟
208‧‧‧步驟
210‧‧‧步驟
212‧‧‧步驟
214‧‧‧步驟
216‧‧‧步驟
218‧‧‧步驟
220‧‧‧步驟
222‧‧‧步驟
224‧‧‧步驟
300‧‧‧資料庫應用程式
302‧‧‧資料庫客戶端
304‧‧‧資料庫客戶端引擎
306‧‧‧解密器
308‧‧‧加密器
310‧‧‧資料伺服器介面
312‧‧‧網路介面
314‧‧‧密鑰儲存器
316‧‧‧主密鑰
318a‧‧‧第一密鑰
318b‧‧‧第二密鑰
320‧‧‧查詢參數化器
322‧‧‧轉換查詢產生器
324‧‧‧結果處理器
326‧‧‧參數化查詢
328‧‧‧查詢分析回應
330‧‧‧轉換版本
332‧‧‧查詢結果
334‧‧‧密鑰請求
336‧‧‧加密鑰
338‧‧‧密鑰請求
340‧‧‧解密鑰
400‧‧‧流程圖
402‧‧‧步驟
404‧‧‧步驟
406‧‧‧步驟
408‧‧‧步驟
410‧‧‧步驟
500‧‧‧流程圖
502‧‧‧步驟
504‧‧‧步驟
506‧‧‧步驟
508‧‧‧步驟
510‧‧‧步驟
600‧‧‧流程圖
602‧‧‧步驟
604‧‧‧步驟
606‧‧‧步驟
608‧‧‧步驟
610‧‧‧步驟
612‧‧‧步驟
614‧‧‧步驟
616‧‧‧步驟
618‧‧‧步驟
700‧‧‧資料伺服器
702‧‧‧查詢處理器
704‧‧‧存儲器
706‧‧‧資料庫應用程式介面
708‧‧‧密鑰介面
710‧‧‧加密配置產生器
712‧‧‧轉換查詢估算器
714‧‧‧資料庫
716‧‧‧密鑰儲存器
718a‧‧‧第一密鑰
718b‧‧‧第二密鑰
720‧‧‧中介資料
800‧‧‧流程圖
802‧‧‧步驟
804‧‧‧步驟
806‧‧‧步驟
900‧‧‧流程圖
902‧‧‧步驟
904‧‧‧步驟
906‧‧‧步驟
1000‧‧‧計算裝置
1002‧‧‧處理器電路
1004‧‧‧系統記憶體
1006‧‧‧匯流排
1008‧‧‧唯讀記憶體(ROM)
1010‧‧‧隨機存取記憶體(RAM)
1012‧‧‧基本輸入/輸出系統(BIOS)
1014‧‧‧硬碟機
1016‧‧‧磁碟機
1018‧‧‧可移除式磁碟
1020‧‧‧光碟機
1022‧‧‧可移除式光碟
1024‧‧‧硬碟機介面
1026‧‧‧磁碟機介面
1028‧‧‧光碟機介面
1030‧‧‧作業系統
1032‧‧‧應用程式
1034‧‧‧其他程式
1036‧‧‧程式資料
1038‧‧‧鍵盤
1040‧‧‧指向裝置
1042‧‧‧序列埠介面
1044‧‧‧顯示螢幕
1046‧‧‧視訊轉接器
1048‧‧‧網路
1050‧‧‧網路介面
1052‧‧‧數據機
104‧‧‧資料伺服器
106‧‧‧資料庫應用程式
108a‧‧‧第一使用者裝置
108b‧‧‧第二使用者裝置
110‧‧‧網路
112‧‧‧查詢處理器
114‧‧‧資料庫客戶端
116a‧‧‧應用程式
116b‧‧‧應用程式
118‧‧‧第二網路
128‧‧‧查詢
130‧‧‧查詢結果
200‧‧‧流程圖
202‧‧‧步驟
204‧‧‧步驟
206‧‧‧步驟
208‧‧‧步驟
210‧‧‧步驟
212‧‧‧步驟
214‧‧‧步驟
216‧‧‧步驟
218‧‧‧步驟
220‧‧‧步驟
222‧‧‧步驟
224‧‧‧步驟
300‧‧‧資料庫應用程式
302‧‧‧資料庫客戶端
304‧‧‧資料庫客戶端引擎
306‧‧‧解密器
308‧‧‧加密器
310‧‧‧資料伺服器介面
312‧‧‧網路介面
314‧‧‧密鑰儲存器
316‧‧‧主密鑰
318a‧‧‧第一密鑰
318b‧‧‧第二密鑰
320‧‧‧查詢參數化器
322‧‧‧轉換查詢產生器
324‧‧‧結果處理器
326‧‧‧參數化查詢
328‧‧‧查詢分析回應
330‧‧‧轉換版本
332‧‧‧查詢結果
334‧‧‧密鑰請求
336‧‧‧加密鑰
338‧‧‧密鑰請求
340‧‧‧解密鑰
400‧‧‧流程圖
402‧‧‧步驟
404‧‧‧步驟
406‧‧‧步驟
408‧‧‧步驟
410‧‧‧步驟
500‧‧‧流程圖
502‧‧‧步驟
504‧‧‧步驟
506‧‧‧步驟
508‧‧‧步驟
510‧‧‧步驟
600‧‧‧流程圖
602‧‧‧步驟
604‧‧‧步驟
606‧‧‧步驟
608‧‧‧步驟
610‧‧‧步驟
612‧‧‧步驟
614‧‧‧步驟
616‧‧‧步驟
618‧‧‧步驟
700‧‧‧資料伺服器
702‧‧‧查詢處理器
704‧‧‧存儲器
706‧‧‧資料庫應用程式介面
708‧‧‧密鑰介面
710‧‧‧加密配置產生器
712‧‧‧轉換查詢估算器
714‧‧‧資料庫
716‧‧‧密鑰儲存器
718a‧‧‧第一密鑰
718b‧‧‧第二密鑰
720‧‧‧中介資料
800‧‧‧流程圖
802‧‧‧步驟
804‧‧‧步驟
806‧‧‧步驟
900‧‧‧流程圖
902‧‧‧步驟
904‧‧‧步驟
906‧‧‧步驟
1000‧‧‧計算裝置
1002‧‧‧處理器電路
1004‧‧‧系統記憶體
1006‧‧‧匯流排
1008‧‧‧唯讀記憶體(ROM)
1010‧‧‧隨機存取記憶體(RAM)
1012‧‧‧基本輸入/輸出系統(BIOS)
1014‧‧‧硬碟機
1016‧‧‧磁碟機
1018‧‧‧可移除式磁碟
1020‧‧‧光碟機
1022‧‧‧可移除式光碟
1024‧‧‧硬碟機介面
1026‧‧‧磁碟機介面
1028‧‧‧光碟機介面
1030‧‧‧作業系統
1032‧‧‧應用程式
1034‧‧‧其他程式
1036‧‧‧程式資料
1038‧‧‧鍵盤
1040‧‧‧指向裝置
1042‧‧‧序列埠介面
1044‧‧‧顯示螢幕
1046‧‧‧視訊轉接器
1048‧‧‧網路
1050‧‧‧網路介面
1052‧‧‧數據機
併入本文且構成本說明書之部份的隨附繪圖與詳細描述一起說明了本申請案的實施例,並闡述實施例的原理且允許相關領域中具技藝者製作及使用該等實施例。
圖1圖示通訊系統的方塊圖,其中查詢處理系統處理使用者查詢,依據一示例實施例。
圖2圖示一流程圖,提供資料庫應用程式中的程序以供以維持資料安全性的方式處理使用者查詢,依據一示例實施例。
圖3圖示資料庫應用程式的方塊圖,該資料庫應用程式包含資料庫客戶端,該資料庫客戶端係經配置以進行以下步驟:基於使用者查詢來產生參數化查詢;基於由資料伺服器所提供的配置加密來產生使用者查詢的轉換版本;及向資料伺服器提供轉換版本以供執行,依據一示例實施例。
圖4圖示一流程圖,提供資料庫應用程式中的程序以供從資料伺服器擷取資料加密鑰以供加密查詢資料,依據一示例實施例。
圖5圖示一流程圖,提供資料庫應用程式中的程序以供從資料伺服器擷取資料加密鑰以供解密查詢資料,依據一示例實施例。
圖6圖示一流程圖,提供資料伺服器中的程序以供以維持資料安全性的方式基於使用者查詢的轉換版本來處理使用者查詢,依據一示例實施例。
圖7圖示資料伺服器的方塊圖,該資料伺服器包含查詢處理器,該查詢處理器係經配置以進行以下步驟:基於參數化使用者查詢來產生加密配置;向資料庫應用程式提供加密配置;及執行使用者查詢的轉換版本,依據一示例實施例。
圖8及9圖示流程圖,提供資料伺服器中的程序以供對由資料庫應用程式進行之針對資料加密或解密鑰的請求提供服務,依據示例實施例。
圖10圖示可用以實施實施例之示例計算裝置的方塊圖。
當與繪圖結合採用時,從以下所闡述的詳細說明,本發明的特徵及優點將變得更明確,在該等繪圖中,類似的參考字符在各處識別相對應的構件。在該等繪圖中,類似的參考標號一般指示相同的、功能上類似的及/或結構上類似的構件。一構件首先呈現的繪圖係由相對應參考標號中的最左數字(或多個)所指示。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
(請換頁單獨記載) 無
102‧‧‧資料庫應用程式系統
104‧‧‧資料伺服器
106‧‧‧資料庫應用程式
108a‧‧‧第一使用者裝置
108b‧‧‧第二使用者裝置
110‧‧‧網路
112‧‧‧查詢處理器
114‧‧‧資料庫客戶端
116a‧‧‧應用程式
116b‧‧‧應用程式
118‧‧‧第二網路
128‧‧‧查詢
130‧‧‧查詢結果
Claims (24)
- 一種實施於至少一個計算裝置中之一資料伺服器中的方法,包括以下步驟: 從一資料庫應用程式接收一參數化查詢,該參數化查詢係從一請求方由該資料庫應用程式所接收之一使用者查詢的一參數化版本; 分析該參數化查詢以針對能夠在加密資料值上由該資料伺服器估算之該使用者查詢的一轉換版本決定一加密配置;及 以基於分析該參數化查詢來定義的資訊回應該資料庫應用程式。
- 如請求項1所述之方法,其中所述分析步驟包括以下步驟: 針對能夠在加密資料值上由該資料伺服器估算之該使用者查詢的一轉換版本決定一加密配置的失敗,所述失敗係肇因於決定該參數化查詢包括在該資料伺服器處未受支援之加密資料上的一操作;及 所述回應步驟包括以下步驟: 通知該資料庫應用程式所述失敗。
- 如請求項1所述之方法,其中該使用者查詢係經配置以在儲存在該資料伺服器處之至少一個表格中的資料上被估算,該方法更包括以下步驟: 儲存中介資料,該中介資料指示加密資料值所在之該至少一個表格的一或更多個行,且指示該等加密資料值是如何被加密的。
- 如請求項1所述之方法,其中所述回應步驟包括以下步驟: 向該資料庫應用程式提供所決定的該加密配置。
- 如請求項4所述之方法,其中該加密配置包括供該資料庫應用程式執行以將該使用者查詢轉換至該使用者查詢之該轉換版本的指令。
- 如請求項4所述之方法,其中該加密配置指示以下中的一或更多者: 該使用者查詢的哪些參數要被加密在該轉換版本中、哪些參數要具有在該轉換版本中轉換的一資料類型、用於加密要被加密之參數的一或更多個加密方案、要在該使用者查詢之參數上執行的一或更多個操作、要由該一或更多個加密方案所使用以供加密要被加密之該等參數的一或更多個資料加密鑰。
- 如請求項4所述之方法,其中所述提供步驟包括以下步驟: 同經決定的加密配置向該資料庫應用程式提供至少一個資料加密鑰以供加密該使用者查詢的至少一個參數。
- 如請求項4所述之方法,更包括下列步驟: 從該資料庫應用程式接收該使用者查詢的該轉換版本,該使用者查詢的該轉換版本包括一或更多個加密參數值。
- 如請求項7所述之方法,更包括下列步驟: 從該資料庫應用程式接收針對一資料加密鑰的一請求,該資料加密鑰係經配置以加密該使用者查詢的一或更多個參數值; 從一密鑰儲存器擷取該資料加密鑰的一加密版本,該密鑰儲存器包含使用至少一個主密鑰來加密的資料加密鑰;及 向該資料庫應用程式提供該資料加密鑰的該加密版本。
- 如請求項7所述之方法,更包括下列步驟: 估算該使用者查詢的該轉換版本以產生結果;及 連同中介資料向該資料庫應用程式提供該等結果,該中介資料指示經配置以解密該等結果之至少一部分的至少一個資料解密鑰。
- 如請求項10所述之方法,其中所述提供步驟包括以下步驟: 同該等結果向該資料庫應用程式提供所指示的該資料解密鑰。
- 如請求項10所述之方法,更包括下列步驟: 從該資料庫應用程式接收針對一資料解密鑰的一請求,該資料解密鑰係經配置以解密該等結果的至少一部分; 從一密鑰儲存器擷取該資料解密鑰的一加密版本,該密鑰儲存器包含使用至少一個主密鑰來加密的資料解密鑰;及 向該資料庫應用程式提供該資料解密鑰的該加密版本,該資料解密鑰的一解密版本在所述方法期間係不存在於該資料伺服器上。
- 至少一個計算裝置,包括: 一資料伺服器,包括記憶體及一查詢處理器,該查詢處理器係經配置以從一資料庫應用程式接收一查詢,該查詢係從一使用者由該資料庫應用程式所接收,該查詢處理器包括: 一加密配置產生器,係經配置以從該資料庫應用程式接收一參數化查詢,該參數化查詢係從一請求方由該資料庫應用程式所接收之一使用者查詢的一參數化版本,該加密配置產生器係經配置以分析該參數化查詢以針對能夠在加密資料值上由該資料伺服器估算之該使用者查詢的一轉換版本決定一加密配置,及向該資料庫應用程式提供一回應。
- 如請求項13所述之該至少一個計算裝置,其中回應於決定該參數化查詢包括在該資料伺服器處未受支援之加密資料上的一操作,該加密配置產生器係經配置以在該回應中通知該資料庫應用程式該失敗;及 回應於成功決定該加密配置,該加密配置產生器係經配置以在該回應中向該資料庫應用程式提供所決定的該加密配置。
- 如請求項13所述之該至少一個計算裝置,其中該查詢處理器更包括: 一轉換查詢分析器,係經配置以進行以下步驟:從該資料庫應用程式接收該使用者查詢的該轉換版本,該使用者查詢的該轉換版本包括一或更多個加密參數值;估算該使用者查詢的該轉換版本以產生結果;及連同中介資料向該資料庫應用程式提供該等結果,該中介資料指示經配置以解密該等結果之至少一部分的至少一個資料解密鑰。
- 一種實施於至少一個計算裝置中之一資料庫應用程式中的方法,包括以下步驟: 從一請求方接收一使用者查詢; 參數化該查詢; 向一資料伺服器提供該參數化查詢以針對能夠在加密資料值上由該資料伺服器估算之該使用者查詢的一轉換版本接收一加密配置;及 從該資料伺服器接收一回應,該回應包括基於該參數化查詢上的一分析來決定的資訊。
- 如請求項16所述之方法,其中從該資料伺服器接收一回應的所述步驟包括以下步驟: 接收不能在該資料伺服器處的加密資料值上估算該使用者查詢的一指示。
- 如請求項16所述之方法,其中從該資料伺服器接收一回應的所述步驟包括以下步驟: 從該資料伺服器接收所決定的該加密配置;及 該方法更包括以下步驟: 基於該加密配置來產生該使用者查詢的該轉換版本,該使用者查詢的該轉換版本包括一或更多個加密參數值;及 向該資料伺服器提供該使用者查詢的該轉換版本。
- 如請求項18所述之方法,其中該加密配置指示該使用者查詢的哪些參數要被加密在該轉換版本中、用於加密該等參數的一或更多個加密方案及要由該一或更多個加密方案使用以供加密該等參數的一或更多個資料加密鑰,所述產生步驟包括以下步驟: 加密被指示為要依據一相對應經指示的加密方案及資料加密鑰來加密之該使用者查詢之該等參數的各參數值。
- 如請求項16所述之方法,更包括下列步驟: 從該資料伺服器接收該使用者查詢之該轉換版本之一估算的結果; 解密該等結果的至少一部分;及 向該請求方傳送該等解密結果。
- 至少一個計算裝置,包括: 至少一個處理器電路;及 至少一個記憶體,儲存一資料庫應用程式,該資料庫應用程式係經配置以由該至少一個處理器電路所執行,該資料庫應用程式包括: 一查詢參數化器,係經配置以參數化從一請求方所接收的一使用者查詢,及向一資料伺服器提供該參數化查詢;及 一轉換查詢產生器,係經配置以從該資料伺服器接收一回應,該回應包括: 不能在該資料伺服器處的加密資料值上估算該使用者查詢的一指示,或 針對能夠在加密資料值上由該資料伺服器估算之該使用者查詢之一轉換版本的一加密配置。
- 如請求項21所述之該至少一個計算裝置,其中,回應於被包括在所接收之該回應中的該加密配置,該轉換查詢產生器係經配置以基於該加密配置來產生該使用者查詢的該轉換版本,該使用者查詢的該轉換版本包括一或更多個加密參數值,且該轉換查詢產生器係經配置以向該資料伺服器提供該使用者查詢的該轉換版本。
- 如請求項22所述之該至少一個計算裝置,其中該加密配置指示該使用者查詢的哪些參數要被加密在該轉換版本中、用於加密該等參數的一或更多個加密方案及要由該一或更多個加密方案使用以供加密該等參數的一或更多個資料加密鑰;及 該至少一個計算裝置更包括: 一加密器,係經配置以加密被指示為要依據一相對應經指示的加密方案及資料加密鑰來加密之該使用者查詢之該等參數的各參數值。
- 如請求項21所述之該至少一個計算裝置,更包括: 一結果處理器,係經配置以從該資料伺服器接收該使用者查詢之該轉換版本之一估算的結果;及 一解密器,係經配置以解密該等結果的至少一部分; 該結果處理器係經配置以向該請求方提供解密結果。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/669,848 US9875370B2 (en) | 2015-03-26 | 2015-03-26 | Database server and client for query processing on encrypted data |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201638798A true TW201638798A (zh) | 2016-11-01 |
Family
ID=56975603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105106133A TW201638798A (zh) | 2015-03-26 | 2016-03-01 | 用於在加密資料上進行查詢處理的資料庫伺服器及客戶端 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9875370B2 (zh) |
EP (1) | EP3275115B1 (zh) |
CN (1) | CN107408135B (zh) |
AR (1) | AR104107A1 (zh) |
TW (1) | TW201638798A (zh) |
WO (1) | WO2016200461A2 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI665580B (zh) * | 2017-12-14 | 2019-07-11 | 國立成功大學 | Authorization and search method for image files in cloud environment |
TWI718585B (zh) * | 2018-11-07 | 2021-02-11 | 開曼群島商創新先進技術有限公司 | 使用同態加密的區塊鏈資料保護 |
TWI724684B (zh) * | 2019-03-29 | 2021-04-11 | 開曼群島商創新先進技術有限公司 | 用於執行經過身分驗證的加密操作的方法、系統及裝置 |
TWI729709B (zh) * | 2019-07-31 | 2021-06-01 | 開曼群島商創新先進技術有限公司 | 資料預處理方法、密文資料獲取方法、裝置和電子設備 |
CN113111356A (zh) * | 2021-03-09 | 2021-07-13 | 深圳市教育信息技术中心(深圳市教育装备中心) | 数据加密方法、装置、设备和介质 |
US11251941B2 (en) | 2019-03-29 | 2022-02-15 | Advanced New Technologies Co., Ltd. | Managing cryptographic keys based on identity information |
US11251950B2 (en) | 2019-03-29 | 2022-02-15 | Advanced New Technologies Co., Ltd. | Securely performing cryptographic operations |
US11258591B2 (en) | 2019-03-29 | 2022-02-22 | Advanced New Technologies Co., Ltd. | Cryptographic key management based on identity information |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3042625B1 (fr) * | 2015-10-14 | 2017-12-15 | Commissariat Energie Atomique | Methode d'interrogation confidentielle d'une base de donnees chiffree |
US10205594B1 (en) * | 2016-03-30 | 2019-02-12 | EMC IP Holding Company LLC | Crypto-erasure resilient to network outage |
US11093635B2 (en) * | 2016-05-05 | 2021-08-17 | The Johns Hopkins University | Apparatus and method for private information retrieval |
US10210266B2 (en) * | 2016-05-25 | 2019-02-19 | Microsoft Technology Licensing, Llc | Database query processing on encrypted data |
US10505729B2 (en) * | 2016-11-09 | 2019-12-10 | Sap Se | Secure database featuring separate operating system user |
US10956519B2 (en) | 2017-06-29 | 2021-03-23 | Cisco Technology, Inc. | Fine-grained encrypted access to encrypted information |
WO2019086429A1 (en) * | 2017-10-30 | 2019-05-09 | Abb Schweiz Ag | Privacy-preserving log analysis |
US10873450B2 (en) | 2017-11-16 | 2020-12-22 | Intuit Inc. | Cryptographic key generation for logically sharded data stores |
US10586057B2 (en) * | 2017-11-16 | 2020-03-10 | Intuit Inc. | Processing data queries in a logically sharded data store |
US10733318B2 (en) | 2017-11-21 | 2020-08-04 | International Business Machines Corporation | Processing analytical queries over encrypted data using dynamical decryption |
CN109660602B (zh) * | 2018-11-28 | 2022-08-09 | 天津字节跳动科技有限公司 | 数据增量传输方法及装置 |
US11074363B2 (en) * | 2018-12-05 | 2021-07-27 | Oracle International Corporation | Selective and total query redaction |
CN109597843A (zh) * | 2018-12-19 | 2019-04-09 | 北京锐安科技有限公司 | 大数据环境的数据管理方法、装置、存储介质及电子设备 |
CN109992596A (zh) * | 2019-02-25 | 2019-07-09 | 新智云数据服务有限公司 | 数据处理方法及装置 |
CN110244976A (zh) * | 2019-05-21 | 2019-09-17 | 深圳壹账通智能科技有限公司 | 应用程序版本切换方法及装置 |
US11157495B2 (en) * | 2019-07-23 | 2021-10-26 | International Business Machines Corporation | Dynamically managing predicate expression columns in an encrypted database |
US11797531B2 (en) * | 2020-08-04 | 2023-10-24 | Micron Technology, Inc. | Acceleration of data queries in memory |
CN112732789A (zh) * | 2021-01-12 | 2021-04-30 | 宁波云麟信息科技有限公司 | 基于区块链的可搜索加密方法和电子设备 |
CN113111357B (zh) * | 2021-03-09 | 2022-02-22 | 深圳市教育信息技术中心(深圳市教育装备中心) | 字段加密方法、装置、设备和介质 |
US11501013B1 (en) | 2021-07-09 | 2022-11-15 | Sotero, Inc. | Autonomous machine learning methods for detecting and thwarting malicious database access |
US11860868B2 (en) * | 2021-12-14 | 2024-01-02 | International Business Machines Corporation | Secure database-as-a-service system |
WO2024059676A1 (en) | 2022-09-14 | 2024-03-21 | Sotero, Inc. | Autonomous machine learning methods for detecting and thwarting ransomware attacks |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6029160A (en) * | 1995-05-24 | 2000-02-22 | International Business Machines Corporation | Method and means for linking a database system with a system for filing data |
US6049821A (en) * | 1997-01-24 | 2000-04-11 | Motorola, Inc. | Proxy host computer and method for accessing and retrieving information between a browser and a proxy |
US6356887B1 (en) * | 1999-06-28 | 2002-03-12 | Microsoft Corporation | Auto-parameterization of database queries |
US7590644B2 (en) * | 1999-12-21 | 2009-09-15 | International Business Machine Corporation | Method and apparatus of streaming data transformation using code generator and translator |
US20080208743A1 (en) * | 2007-02-22 | 2008-08-28 | First Data Corporation | Transfer of value between mobile devices in a mobile commerce system |
KR100859162B1 (ko) * | 2007-10-16 | 2008-09-19 | 펜타시큐리티시스템 주식회사 | 암호화된 칼럼을 포함하는 데이터베이스에서의 쿼리의 암호화 변조를 통한 사용자 쿼리 처리 장치 및 방법 |
CN101587479B (zh) * | 2008-06-26 | 2011-04-13 | 北京人大金仓信息技术股份有限公司 | 面向数据库管理***内核的数据加解密***及其方法 |
US8874547B2 (en) * | 2010-01-04 | 2014-10-28 | Microsoft Corporation | Parameter-sensitive plans |
US8627107B1 (en) * | 2011-09-29 | 2014-01-07 | Todd Michael Kennedy | System and method of securing private health information |
US8812877B2 (en) * | 2011-11-11 | 2014-08-19 | Nec Corporation | Database encryption system, method, and program |
US9087212B2 (en) * | 2012-01-25 | 2015-07-21 | Massachusetts Institute Of Technology | Methods and apparatus for securing a database |
CN103390124B (zh) * | 2012-05-08 | 2017-12-15 | 阿姆有限公司 | 安全输入和处理口令的设备、***和方法 |
US20140214812A1 (en) * | 2012-10-04 | 2014-07-31 | Goole Inc. | Source code priority ranking for faster searching |
US9286488B2 (en) * | 2013-03-13 | 2016-03-15 | Northrop Grumman Systems Corporation | System and method for secure database queries |
US9092302B2 (en) * | 2013-09-10 | 2015-07-28 | Duo Security, Inc. | System and method for determining component version compatibility across a device ecosystem |
US20160055348A1 (en) * | 2014-07-27 | 2016-02-25 | Jerzy Jozef Lewak | Double key coding methods of providing fast search, analysis, and data retrieval of encrypted data without decryption |
-
2015
- 2015-03-26 US US14/669,848 patent/US9875370B2/en active Active
-
2016
- 2016-03-01 TW TW105106133A patent/TW201638798A/zh unknown
- 2016-03-21 WO PCT/US2016/023334 patent/WO2016200461A2/en active Application Filing
- 2016-03-21 CN CN201680018743.9A patent/CN107408135B/zh active Active
- 2016-03-21 EP EP16774729.4A patent/EP3275115B1/en active Active
- 2016-03-28 AR ARP160100811A patent/AR104107A1/es unknown
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI665580B (zh) * | 2017-12-14 | 2019-07-11 | 國立成功大學 | Authorization and search method for image files in cloud environment |
TWI718585B (zh) * | 2018-11-07 | 2021-02-11 | 開曼群島商創新先進技術有限公司 | 使用同態加密的區塊鏈資料保護 |
TWI724684B (zh) * | 2019-03-29 | 2021-04-11 | 開曼群島商創新先進技術有限公司 | 用於執行經過身分驗證的加密操作的方法、系統及裝置 |
US11251941B2 (en) | 2019-03-29 | 2022-02-15 | Advanced New Technologies Co., Ltd. | Managing cryptographic keys based on identity information |
US11251950B2 (en) | 2019-03-29 | 2022-02-15 | Advanced New Technologies Co., Ltd. | Securely performing cryptographic operations |
US11258591B2 (en) | 2019-03-29 | 2022-02-22 | Advanced New Technologies Co., Ltd. | Cryptographic key management based on identity information |
TWI729709B (zh) * | 2019-07-31 | 2021-06-01 | 開曼群島商創新先進技術有限公司 | 資料預處理方法、密文資料獲取方法、裝置和電子設備 |
CN113111356A (zh) * | 2021-03-09 | 2021-07-13 | 深圳市教育信息技术中心(深圳市教育装备中心) | 数据加密方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3275115A2 (en) | 2018-01-31 |
CN107408135A (zh) | 2017-11-28 |
WO2016200461A2 (en) | 2016-12-15 |
US9875370B2 (en) | 2018-01-23 |
CN107408135B (zh) | 2020-07-24 |
WO2016200461A3 (en) | 2017-01-12 |
AR104107A1 (es) | 2017-06-28 |
US20160283728A1 (en) | 2016-09-29 |
EP3275115B1 (en) | 2019-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201638798A (zh) | 用於在加密資料上進行查詢處理的資料庫伺服器及客戶端 | |
US10719567B2 (en) | Database query processing on encrypted data | |
US10482263B2 (en) | Computing on encrypted data using deferred evaluation | |
US11120018B2 (en) | Spark query method and system supporting trusted computing | |
US10841082B2 (en) | System and method for blockchain smart contract data privacy | |
US10917394B2 (en) | Data operations using a proxy encryption key | |
US9081978B1 (en) | Storing tokenized information in untrusted environments | |
CN117278224A (zh) | 用于验证身份属性信息的方法和*** | |
EP3769251A2 (en) | Facilitating queries of encrypted sensitive data via encrypted variant data objects | |
US11082219B2 (en) | Detection and protection of data in API calls | |
CN111737720B (zh) | 数据处理方法、装置及电子设备 | |
CN107409040A (zh) | 用于推荐数据加密而不影响程序语义的代码分析工具 | |
US20190372880A1 (en) | Deserialization service | |
JP2023551124A (ja) | 自己監査ブロックチェーン | |
US10565391B2 (en) | Expression evaluation of database statements for restricted data | |
JP2022141962A (ja) | データの照会と書き込み方法、装置、電子機器、読み取り可能な記憶媒体およびコンピュータプログラム | |
CN110543772A (zh) | 离线解密方法和装置 | |
WO2022073394A1 (en) | Authentication system (s) with multiple authentication modes using one-time passwords of increased security | |
US8856896B1 (en) | Transparently updating user credentials | |
Zhang et al. | Decentralized data transaction method and platform based on Ethereum+ IPFS | |
WO2023007385A1 (en) | System and method facilitating encryption preserving format as a distributed processing library | |
Jeun et al. | Database Encryption Implementation and Analysis Using Graphics Processing Unit | |
JP2023102269A (ja) | 方法、システム、コンピュータプログラム(ハイブリッドクラウド環境のためのデータベース階層的暗号化) |