Data storage server and client devices for securely storing and retrieving data

EP4623367A4Pending Publication Date: 2025-12-24HUAWEI TECH CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
EP2022969008
Authority / Receiving Office
EP · EP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2022-12-23
Publication Date
2025-12-24

Smart Images

  • Figure 1.1
    Figure 1.1
Patent Text Reader

Abstract

The disclosure relates to a client device (110) for storing data in and retrieving data from a data storage server (120). The client device (110) comprises a processor (111) configured, based on an insert data query comprising at least one data element, to determine a digest value of one or more most significant bits of a binary representation of the at least one data element and to obfuscate, for instance, encrypt the at least one data element. The client device (110) further comprises a communication interface (113) configured to transmit an insert data request to the data storage server (120) for storing the at least one obfuscated data element and updating a database index (125a) for locating the at least one obfuscated data element in the data storage server (120).
Need to check novelty before this filing date? Find Prior Art

Description

Data storage server and client devices for securely storing and retrieving dataTECHNICAL FIELD

[0001] The present disclosure relates to data storage systems. More specifically, the present disclosure relates to client devices and data storage servers for securely storing and retrieving security sensitive data and enabling range queries of the security sensitive data.BACKGROUND

[0002] Remote data storage, such as cloud data storage, is becoming more and more popular, because it allows user client devices, which can usually store only a limited amount of data, to save data and files in one or more remote data storage servers that can be accessed either through the public internet or a dedicated private network connection. A cloud storage provider hosts, secures, manages, and maintains the data storage servers and associated infrastructure and ensures the access of the user client devices to the data. One of the main advantages of cloud storage is that the user data may be recovered from the remote data storage servers when the data has been removed, corrupted, or otherwise becomes inaccessible on the user client device. However, as the user data that is transferred to the remote data storage servers becomes the responsibility of the cloud storage provider, security sensitive user data may potentially become accessible to the cloud storage provider, which may be undesirable for the user and / or conflict with legal regulations. Often, security sensitive data to be stored in a remote data storage server comprises security sensitive data, such as numerical or textual data, which can be queried in plaintext, but, if obfuscated, for instance, encrypted, cannot, as such, be easily queried using, for instance, range queries.

[0003] SUMMARY

[0004] It is an objective of the present disclosure to provide an improved client device and an improved data storage server for secure cloud storage of data including security sensitive data, such as numerical and / or textual data, enabling range queries of the security sensitive data.

[0005] The foregoing and other objectives are achieved by the subject matter of the independent claims. Further implementation forms are apparent from the dependent claims, the description, and the figures.

[0006] According to a first aspect, a client device for storing data in and retrieving data from a data storage server is provided. The client device comprises a processor configured, based on an insert data query comprising at least one data element, to determine a digest value, in particular a HASH or HMAC, of one or more most significant bits of a binary representation of the at least one data element. The processor is further configured to obfuscate the at least one data element in such a way that the data storage server does not understand the content of the at least one obfuscated data element.

[0007] The client device further comprises a communication interface configured to transmit an insert data request to the data storage server for storing the at least one obfuscated data element and updating a database index for locating the at least one obfuscated data element in the data storage server. The insert data request comprises the at least one obfuscated data element to be stored in the data storage server as well as index data for updating the database index, wherein the index data comprises the digest value of the one or more most significant bits of the binary representation of the at least one data element and, one or more complementary least significant bits of the binary representation of the at least one data element and / or a bit sequence based on the one or more complementary least significant bits of the binary representation of the at least one data element, for instance, a bit sequence obtained by applying an order preserving function to the one or more complementary least significant bits of the binary representation of the at least one data element. In an implementation form, the at least one data element comprises numerical data and / or textual data. In an implementation form the insert data request may comprise in addition to the at least one obfuscated security sensitive data element one or more further plaintext data elements defining a row or a column of data elements to be stored in a table of the database implemented by the data storage server.

[0008] Thus, the database index of the data storage server is maintained and updated based on information, i.e. the index data provided by the client device. This allows the data storage server to perform queries on the data elements stored in the data storage server without the data storage server needing to know the content of the data elements, because the data elements are stored in an obfuscated form in the data storage server. Thus, the client device and the data storage server allow storing security sensitive data, for instance, numerical values or textual data in obfuscated form in a database, while enabling range queries of the data.

[0009] In a further possible implementation form of the first aspect, the processor is configured to obfuscate the at least one data element for obtaining the at least one obfuscated data  element by encrypting and / or compressing the at least one data element. Thus, in an implementation form, the insert data request may comprise the encrypted and / or compressed at least one data element.

[0010] In a further possible implementation form of the first aspect, the processor is further configured to perform a range query. As used herein, a range query is a database operation that retrieves all records, i.e. data elements where some value is between an upper and a lower boundary value, larger than a lower boundary value or smaller than an upper boundary value. To this end, the processor is further configured, based on a select data query, i.e. a range query comprising at least one boundary value data element defining a boundary value of a range of values, to determine a digest value, in particular a HASH or HMAC, of one or more most significant bits of a binary representation of the at least one boundary value data element. The communication interface may be further configured to transmit a select data request to the data storage server for retrieving one or more data elements from the data storage server. The select data request may comprise the digest value of the one or more most significant bits of the binary representation of the at least one boundary value data element and one or more complementary least significant bits of the binary representation of the at least one boundary value data element. Alternatively, the select data request may comprise the digest value of the one or more most significant bits of the binary representation of the at least one boundary value data element and a bit sequence based on the one or more complementary least significant bits of the binary representation of the at least one boundary value data element, for instance, a bit sequence obtained by applying an order preserving function to the one or more complementary least significant bits of the binary representation of the at least one boundary value data element. Advantageously, the use of the one or more complementary least significant bits of the binary representation of the at least one boundary value data element allows providing exact query results.

[0011] In a further possible implementation form of the first aspect, in response to the select data request, the communication interface is further configured to receive one or more obfuscated reply data elements from the data storage server and the processor is configured to de-obfuscate the one or more obfuscated reply data elements for obtaining the one or more reply data elements in a de-obfuscated form. As will be appreciated, in case the data storage server does not contain any obfuscated data elements matching the select data request no obfuscated reply data elements may be returned to the client device.

[0012] In a further possible implementation form of the first aspect, the one or more obfuscated reply data elements comprise one or more encrypted reply data elements and the processor is configured to decrypt the one or more encrypted reply data elements from the data storage server for obtaining one or more plaintext reply data elements. Additionally or alternatively, the one or more obfuscated reply data elements may comprise one or more compressed reply data elements and the processor is configured to decompress the one or more compressed reply data elements from the data storage server for obtaining one or more plaintext reply data elements.

[0013] In a further possible implementation form of the first aspect, the index data further comprises a further digest value of one or more further most significant bits of the binary representation of the at least one data element. The one or more further most significant bits of the binary representation of the at least one data element may comprise more or less bits than the one or more most significant bits of the binary representation of the at least one data element. In an implementation form, the further digest value may be associated to, and in particular may identify, one or more of the digest values. For example, the further digest value may cover a range defined by several digest values.

[0014] In a further possible implementation form of the first aspect, the digest value of the one or more most significant bits of the binary representation of the at least one data element comprises a Hash value and / or a HMAC value of the one or more most significant bits of the binary representation of the at least one data element.

[0015] According to a second aspect, a method of operating a client device for storing and retrieving data from a data storage server is provided.

[0016] The method comprises a step of determining, based on an insert data query comprising at least one data element, a digest value, in particular a HASH or HMAC, of one or more most significant bits of a binary representation of the at least one data element.

[0017] Moreover, the method comprises a step of obfuscating the at least one data element in such a way that the data storage server does not understand the content of the at least one obfuscated data element.

[0018] The method further comprises a step of transmitting an insert data request to the data storage server for storing the at least one obfuscated data element in the data storage server and a step of updating a database index for locating the at least one obfuscated data element in the data storage server, wherein the insert data request comprises the at least one obfuscated data element to be stored in the data storage server as well as index  data for updating the database index, wherein the index data comprises the digest value of the one or more most significant bits of the binary representation of the at least one data element and, in particular in plaintext, one or more complementary least significant bits of the binary representation of the at least one data element and / or a bit sequence based on the one or more complementary least significant bits of the binary representation of the at least one data element, for instance, a bit sequence obtained by applying an order preserving function to the one or more complementary least significant bits of the binary representation of the at least one data element.

[0019] The method according to the second aspect of the present disclosure can be performed by the client device according to the first aspect of the present disclosure. Thus, further features of the method according to the second aspect of the present disclosure result directly from the functionality of the client device according to the first aspect of the present disclosure as well as its different implementation forms described above and below.

[0020] According to a third aspect, a data storage server for storing data from a client device is provided. The data storage server comprises a communication interface configured to receive from the client device an insert data request, including at least one obfuscated data element, i.e. at least one data element in obfuscated form and index data, wherein the index data comprises a digest value, in particular a HASH or HMAC, of one or more most significant bits of a binary representation of the at least one data element and one or more complementary least significant bits of the binary representation of the at least one data element and / or a bit sequence based on the one or more complementary least significant bits of the binary representation of the at least one data element, for instance, a bit sequence obtained by applying an order preserving function to the one or more complementary least significant bits of the binary representation of the at least one data element.

[0021] The data storage server further comprises a memory, for instance, a disk memory configured to implement a database, wherein the database is configured to store the at least one data element in the obfuscated form at a memory location of, for instance, the disk memory and update a database index based on the index data for locating the at least one data element in the obfuscated form at the memory location of, for instance, the disk memory. In an implementation form the insert data request may comprise in addition to the at least one obfuscated security sensitive data element one or more further plaintext data elements defining a row or a column of data elements to be stored in a table of the database implemented by the data storage server.

[0022] In a further possible implementation form, the database is further configured to obtain, e.g. generate a tuple identifier indicative of the memory location of the at least one data element in the obfuscated form (and possibly further plaintext data elements associated with the at least one data element in the obfuscated form) and to update the database index based on the index data and the tuple identifier. In other words, the database index may provide a mapping between the index data of a data element and a memory location of the data element identified by a tuple identifier. As already mentioned above, in an implementation form, the tuple identifier may point to a complete row, wherein the row may comprise the at least one data element in the obfuscated form only or wherein the row may comprise the at least one data element in the obfuscated form and one or more plaintext data elements.

[0023] In a further possible implementation form of the third aspect, the at least one data element in obfuscated form comprises at least one encrypted and / or compressed data element. The database may be configured to store the at least one encrypted and / or compressed data element at the memory location.

[0024] In a further possible implementation form of the third aspect, the communication interface is further configured to receive from the client device a select data request based on an select data query comprising at least one boundary value data element defining a boundary value of a range of values. The select data request may comprise a digest value of the one or more most significant bits of the binary representation of the at least one boundary value data element and one or more complementary least significant bits of the binary representation of the at least one boundary value data element and / or a bit sequence based on the one or more complementary least significant bits of the binary representation of the at least one boundary value data element. The data storage server may further comprise a processing circuitry configured to retrieve, based on the digest value of the one or more most significant bits of the binary representation of the at least one boundary value data element and the one or more complementary least significant bits of the binary representation of the at least one boundary value data element and / or the bit sequence based on the one or more complementary least significant bits of the binary representation of the at least one boundary value data element, one or more obfuscated reply data elements from the memory.

[0025] In a further possible implementation form of the third aspect, the communication interface is further configured to send the one or more obfuscated reply data elements to the client device. As will be appreciated, in case the data storage server does not contain any  obfuscated reply data elements matching the select data request no obfuscated reply data elements may be returned to the client device.

[0026] In a further possible implementation form of the third aspect, the one or more obfuscated reply data elements comprises one or more encrypted and / or compressed reply data elements.

[0027] In a further possible implementation form of the third aspect, the index data further comprises a further digest value of one or more further most significant bits of the binary representation of the at least one data element. The one or more further most significant bits of the binary representation of the at least one data element may comprise more or less bits than the one or more most significant bits of the binary representation of the at least one data element. In an implementation form, the further digest value may be associated to, and in particular may identify, one or more of the digest values. For example, the further digest value may be a HASH value of the one or more digest values.

[0028] In a further possible implementation form, the digest value of the one or more most significant bits of the binary representation of the at least one data element comprises a Hash value and / or a HMAC value of the one or more most significant bits of the binary representation of the at least one data element.

[0029] According to a fourth aspect, a method of operating a data storage server for storing data from a client device is provided.

[0030] The method comprises a step of receiving from the client device an insert data request, including at least one data element in obfuscated form and index data, wherein the index data comprises a digest value of one or more most significant bits of a binary representation of the at least one data element and one or more complementary least significant bits of the binary representation of the at least one data element and / or a bit sequence based on the one or more complementary least significant bits of the binary representation of the at least one data element, for instance, a bit sequence obtained by applying an order preserving function to the one or more complementary least significant bits of the binary representation of the at least one data element.

[0031] The method further comprises a step of storing the at least one data element in obfuscated form at a memory location of a memory, for instance, a disk memory of the data storage server.

[0032] Moreover, the method further comprises a step of updating a database index based on the index data for locating the at least one data element in the obfuscated form at the memory location.

[0033] In a further possible implementation form of the fourth aspect, the method further comprises obtaining a tuple identifier indicative of the memory location of the at least one data element in the obfuscated form and updating the database index based on the index data and the tuple identifier.

[0034] The method according to the fourth aspect of the present disclosure can be performed by the data storage server according to the third aspect of the present disclosure. Thus, further features of the method according to the fourth aspect of the present disclosure result directly from the functionality of the data storage server according to the third aspect of the present disclosure as well as its different implementation forms described above and below.

[0035] According to a fifth aspect, a computer program product comprising a non-transitory computer-readable storage medium for storing program code which causes a computer or a processor to perform the method according to the second aspect or the method according to the fourth aspect, when the program code is executed by the computer or the processor, is provided.

[0036] Details of one or more embodiments are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description, drawings, and claims.BRIEF DESCRIPTION OF THE DRAWINGS

[0037] In the following, embodiments of the present disclosure are described in more detail with reference to the attached figures and drawings, in which:

[0038] Fig. 1 is a schematic diagram illustrating a data storage system according to an embodiment, including a plurality of client devices according to an embodiment and a data storage server operating a database according to an embodiment;

[0039] Fig. 2a is a schematic diagram illustrating processing steps implemented by a client device according to an embodiment for generating index data for updating a data base index used by a data storage server according to an embodiment;

[0040] Fig. 2b is a schematic diagram illustrating aspects of a database index implemented by a data storage server according to an embodiment;

[0041] Fig. 3a is a sequence diagram illustrating interactions between a client device according to an embodiment and a data storage server according to an embodiment for storing data by means of an insert query;

[0042] Fig. 3b is a sequence diagram illustrating interactions between a client device according to an embodiment and a data storage server according to an embodiment for retrieving data by means of a select query;

[0043] Fig. 4a is a schematic diagram illustrating further aspects of a database index implemented by the data storage system according to an embodiment for handling select data queries defining big query ranges in an optimized manner minimizing access operations to the database index;

[0044] Fig. 4b is a schematic diagram illustrating further aspects of a database index implemented by the data storage system according to an embodiment for handling select data queries defining big query ranges in an optimized manner consuming less memory space than the embodiment of figure 4a;

[0045] Fig. 5a is a sequence diagram illustrating interactions between a client device according to an embodiment and a data storage server according to an embodiment for storing data using big range optimization;

[0046] Fig. 5b is a sequence diagram illustrating interactions between a client device according to an embodiment and a data storage server according to an embodiment for retrieving data using big range optimization;

[0047] Fig. 5c is a sequence diagram illustrating a variant of figure 5b for retrieving data using big range optimization according to a further embodiment;

[0048] Fig. 6 is a flow diagram illustrating a method of operating a client device according to an embodiment for storing and retrieving data from a data storage server according to an embodiment; and

[0049] Fig. 7 is a flow diagram illustrating a method of operating a data storage server according to an embodiment for storing data from a client device according to an embodiment.

[0050] In the following, identical reference signs refer to identical or at least functionally equivalent features.

[0051] DETAILED DESCRIPTION OF THE EMBODIMENTS

[0052] In the following description, reference is made to the accompanying figures, which form part of the disclosure, and which show, by way of illustration, specific aspects of embodiments of the present disclosure or specific aspects in which embodiments of the present disclosure may be used. It is understood that embodiments of the present disclosure may be used in other aspects and comprise structural or logical changes not depicted in the figures. The following detailed description, therefore, is not to be taken in a limiting sense, and the scope of the present disclosure is defined by the appended claims.

[0053] For instance, it is to be understood that a disclosure in connection with a described method may also hold true for a corresponding device or system configured to perform the method and vice versa. For example, if one or a plurality of specific method steps are described, a corresponding device may include one or a plurality of units, e.g. functional units, to perform the described one or plurality of method steps (e.g. one unit performing the one or plurality of steps, or a plurality of units each performing one or more of the plurality of steps) , even if such one or more units are not explicitly described or illustrated in the figures. On the other hand, for example, if a specific apparatus is described based on one or a plurality of units, e.g. functional units, a corresponding method may include one step to perform the functionality of the one or plurality of units (e.g. one step performing the functionality of the one or plurality of units, or a plurality of steps each performing the functionality of one or more of the plurality of units) , even if such one or plurality of steps are not explicitly described or illustrated in the figures. Further, it is understood that the features of the various exemplary embodiments and / or aspects described herein may be combined with each other, unless specifically noted otherwise.

[0054] Figure 1 is a schematic diagram illustrating a data storage system 100 according to an embodiment. As will be described in more detail below, the data storage system 100 may comprise a plurality of client or user devices 110, such as for example smart phones, smart watches, tablet computers, laptop computers, desktop computers or other types of IoT devices, and one or more remote data storage servers 120 operating a database. In the following detailed embodiments of the client device 110 and the data storage server 120 will be described. The database may be implemented as a relational database, for instance, a SQL based relational database. For example, the data storage server 120 may  be configured to store security sensitive data in one or more encrypted, compressed and / or otherwise obfuscated columns of one or more tables of the relational database. As used herein, an encrypted, compressed and / or otherwise obfuscated column of a table of the relational database may be a column having data elements being encrypted with one or more encryption keys (for instance, with different encryption keys of different client devices 110) , compressed and / or otherwise obfuscated. For instance, a first data element may be encrypted with the encryption key of a first client device 110, while a second data element of the same column may be encrypted with the encryption key of a second client device 110. In a further example, a table of the relational database may have a first column of encrypted data elements, a second column of compressed data elements, a third column of encrypted and compressed data elements and a fourth column of plaintext data elements.

[0055] It will be appreciated, that the data storage server 120 may comprise a memory 125, for example a disk memory 125 for implementing a non-relational database and the client device 110 may be configured to operate therewith. For example, the security sensitive data may be stored in an encrypted, compressed and / or otherwise obfuscated data structure other than an encrypted, compressed and / or otherwise obfuscated column of a table. For instance, in an embodiment, the database may be implemented as a MongoDB database. For such an embodiment, the data storage server 120 may be configured to store the security sensitive data in one or more encrypted, compressed and / or otherwise obfuscated fields of the MongoDB database.

[0056] As illustrated in figure 1, the plurality of client devices 110 and the one or more remote data storage servers 120 may be configured to communicate with each other via a wireless, e.g. cellular and / or wired communication network 140. In an embodiment, the one or more remote data storage server 120 may be one or more cloud storage servers 120 configured to communicate with the client devices 110 via the Internet.

[0057] As illustrated in figure 1, the client device 110 may comprise a processor 111 for processing and generating data, a communication interface 113, including, for instance, an antenna, for exchanging data with the other components of the data storage system 100, and a non-transitory memory 115 for storing data. The processor 111 of the client device 110 may be implemented in hardware and / or software. The hardware may comprise digital circuitry, or both analog and digital circuitry. Digital circuitry may comprise components such as application-specific integrated circuits (ASICs) , field-programmable gate arrays (FPGAs) , digital signal processors (DSPs) , or general-purpose processors. The non-transitory memory 115 may store data, such as electronic keys and executable  program code which, when executed by the processor 111, causes the client device 110 to perform the functions, operations and methods described herein. The communication interface 113 may comprise a wired or wireless communication interface 113. Likewise, the data storage server 120 may comprise a processor 121 for processing and generating data, a communication interface 123 for exchanging data with the other components of the data storage system 100 as well as the database on the memory 125, for instance, disk memory 125 for storing data.

[0058] Although in the following several embodiments are described in the context of a database index implemented as a Hash table, alternative embodiments may use other indexing data structures, such as a B tree, a R tree, Trie and the like to implement aspects of the embodiments disclosed in the following.

[0059] As will be described in more detail below, the client device 110 is configured to generate index data for building and updating a database index 125a of the data storage server 120, i.e. by providing essential information, i.e. the index data for building and updating the database index 125a. As will be appreciated, the database index 125a may be a data structure that improves the speed of data retrieval operations on the tables of the database implemented by the data storage server 120. As will be described in more detail below, the database index 125a implemented by the data storage server 120 according to an embodiment may be used by the data storage server 120 to efficiently conduct range queries. For processing such queries the client device 110 is configured to assist the remote data storage server 120 in identifying the correct and accurate query results without for example sacrificing the security of any security sensitive data stored in the database of the remote data storage server 120.

[0060] To this end, embodiments make use of the database index 125a, which allows the remote data storage server 120 to run queries on the obfuscated, e.g. encrypted and / or compressed data without actually knowing, i.e. understanding the data.

[0061] As will be described in more detail below, in an embodiment, the client device 110 is configured to store data in and retrieving data from the data storage server 120 and the data storage server 120 is configured to store the data from the client device 110. In the following, further reference is made to figures 2a and 2b, which illustrate processing steps implemented by the processing circuitry 111 of the client device 110 according to an embodiment for generating the index data for updating the data base index 125 as well as different aspects (for instance, memory management aspects) of the database index 125a implemented by the data storage server 120.

[0062] As schematically illustrated in in figures 2a and 2b, the processor 111 of the client device 110 is configured, in response to an insert data query comprising at least one plaintext data element 210, to determine a digest value 220a-n, in particular a HASH or HMAC value (herein also referred to as H value 220a-n) , of one or more most significant bits or bytes 201 of a binary representation of the at least one data element 210 and to obfuscate the at least one data element 210 in such a way that the data storage server 120 does not understand the content of the at least one obfuscated data element 210’. To this end, the processor 111 of the client device 110 may be configured to encrypt and / or compress the at least one data element 210 to obtain an encrypted and / or compressed data element 210’. By way of example, in figures 2a and 2b, the one or more data elements 210 may be integer values represented with a four byte binary representation.

[0063] Furthermore, the communication interface 113 of the client device 110 is configured to transmit an insert data request to the data storage server 120 for storing the at least one obfuscated data element 210’ in the data storage server 120 and updating the database index 125a for locating the at least one obfuscated data element 210’ in the data storage server 120. The insert data request comprises the at least one obfuscated data element 210’ as well as the index data for updating the database index 125a. The index data comprises the digest value 220a-n of the one or more most significant bits 201 of the binary representation of the at least one data element 210 and one or more complementary least significant bits 203 of the binary representation of the at least one data element 210. Alternatively, as schematically illustrated in figure 2a, the index data comprises the digest value 220a-n of the one or more most significant bits 201 of the binary representation of the at least one data element 210 and a bit sequence 203*based on the one or more complementary least significant bits 203 of the binary representation of the at least one data element 210, for instance, a bit sequence 203*obtained by applying an order preserving function to the one or more complementary least significant bits 203 of the binary representation of the at least one data element 210. In an embodiment, the insert data request may comprise in addition to the at least one obfuscated potentially security sensitive data element 210’ one or more further plaintext data elements defining a row or a column of data elements to be stored in a table of the database implemented by the data storage server 120.

[0064] As will be appreciated, the one or more most significant bits (MSB) 201 of the binary representation of the at least one data element 210, which in the example of figures 2a and 2b comprise three bytes, and the one or more complementary least significant bits (LSB) 203 of the binary representation of the at least one data element 210, which in the  example of figures 2a and 2b comprise 1 byte, together define the whole binary representation of the at least one data element 210. As will be described in more detail below, in the context of embodiments for query ranges, the digest value of the MSB portion 201 of, for instance, an integer data element 210 may be considered as defining a range bin containing the integer data element 210 as well as a plurality of neighbouring integer data elements, while the LSB portion 203 defines an offset of the integer data element 210 from the boundary of the range bin defined by the digest value of the MSB portion 201 of the integer data element 210

[0065] Complementary to the client device 110, the communication interface 123 of the data storage server 120 is configured to receive from the client device 110 the insert data request, including the at least one obfuscated data element 210’ and the index data, including the digest value 220a-n of the one or more most significant bits 201 of the binary representation of the at least one data element 210 and the one or more complementary least significant bits 203 of the binary representation of the at least one data element 210 and / or the bit sequence 203*based on the one or more complementary least significant bits 203 of the binary representation of the at least one data element 210, for instance, a bit sequence 203*obtained by applying an order preserving function to the one or more complementary least significant bits 203 of the binary representation of the at least one data element 210.

[0066] The memory 125, for instance, disk memory 125 of the data storage server 120 is configured to implement a database. As will be described in more detail below, the database is configured to store the at least one obfuscated data element 210’ at a selected memory location of the memory 125 and to update the database index 125a based on the index data for locating the at least one obfuscated data element 210’ at the selected memory location of the memory 125. In an embodiment, the database may be further configured to obtain, e.g. generate a tuple identifier, i.e. an address indicative of the selected memory location of the at least one obfuscated data element 210’ and to update the database index 125a based on the index data and the tuple identifier. As will be appreciated, the database index 125 may provide a mapping between memory locations of data elements 210’ identified by a respective tuple identifier and the index data of the respective data element 210’ and vice versa. In an embodiment, the tuple identifier may point to a complete row of a table of the database, wherein the row may comprise the at least one obfuscated data element 210’ only or wherein the row may comprise the at least one obfuscated data element 210’ and one or more plaintext data elements associated with the at least one obfuscated data element 210’.

[0067] As illustrated in figure 2b, the elements of the data index 125a may be stored on respective pages 230a-n in the memory 125 of the data storage server 120. In an embodiment, each of the digest values 220a-n may be associated with one or more pages 230a-n of the memory 125.

[0068] Figure 3a is a sequence diagram illustrating interactions between the client device 110 according to an embodiment and the data storage server 120 according to an embodiment for storing data. More specifically, figure 3a illustrates steps performed at the client device 110 and at the data storage server 120 by the corresponding processors 111, 121 for processing the insert data request. As illustrated in figure 3a, the processor 111 of the client device 110 may be configured to implement an application 111a and a client driver 111b.

[0069] In step 301 of figure 3a, the application 111a implemented by the processor 111 of the client device 110 may be triggered, for example by a user interaction, to send an insert data query which may for example comprise a row with one or more data elements 210 in plaintext intended to be inserted in the database.

[0070] In step 303 of figure 3a, the client driver 111b implemented by the processor 111 of the client device 110 may determine, i.e. calculate for at least some of the one or more data elements 210 the digest value 220a-n of the one or more most significant bits 201 (for instance the three most significant bytes) thereof and the one or more least significant bits 203 (for instance the last significant byte) thereof. In an embodiment, as illustrated in figure 2a, the client driver 111b implemented by the processor 111 may further process the one or more least significant bits 203 of the respective data element 210 by applying an order preserving function thereto. Moreover, as further illustrated in figure 2a, the client driver 111b is configured to obfuscate the at least one data element 210, for instance, by means of an encryption, compression or another type of obfuscation operation in order to obtain the at least one data element 210’ in an obfuscated from, e.g. in a compressed and / or encrypted form. In an embodiment, the client driver 111b may be further instructed by configuration or by the application 111a to use, for instance, a specific compression method, a specific encryption method and / or a specific encryption key. Alternatively, the client driver 111b may use, for instance, a predetermined compression method, a predetermined encryption method and / or a predetermined encryption key. As will be appreciated, according to embodiments disclosed herein, the operations of the client driver 111b may be transparent for the application 111a. In other words, the applications 111a only exchanges plaintext data elements 210 with the client driver 111b, while the  client driver 111b handles the obfuscation operations and generating the digest values 220a-n.

[0071] In step 305 of figure 3a, the client driver 111b may send the insert data request comprising the at least one obfuscated data element 210’ and the index data to the data storage server 120, wherein, as already described above, the index data comprises the digest value, in particular Hash value 220a-n of the one or more most significant bits 201 and the one or more least significant bits 203 of the binary representation of the at least one data element 210 or a bit sequence 203*based thereon.

[0072] In step 307 of figure 3a, the processor 121 of the data storage server 120 may insert the row with the at least one data element 210’ in obfuscated, e.g. compressed and / or encrypted form in the memory 125 of the data storage server 120 and may obtain the corresponding tuple identifier 205. As already described above, the tuple identifier 205 may represent a storage location, for example a hardware address, of the at least one obfuscated data element 210’ and possibly further data elements in the memory 125 of the data storage server 120.

[0073] In step 309 of figure 3a, the processor 121 of the data storage server 120 may search the database, in particular the database index 125a of the database, implemented by the memory 125 of the data storage server 120 for the digest value 220a-n and return a page 230a-n associated with the digest value 220a-n.

[0074] In step 311 of figure 3a, in case no such digest value 220a-n can be found, the processor 121 of the data storage server 120 may be configured to flag the digest value 220a-n as new.

[0075] In step 313 of figure 3a, in case the page 230a-n associated with the digest value 220a-n returned in step 309 does not have enough space left to store the least significant bits 203 and the tuple identifier 205 or in case the digest value 220a-n is flagged as new, the processor 121 of the data storage server 120 may be configured to find a further page 230a-n with enough space, as schematically also illustrated in figure 2b.

[0076] In step 315 of figure 3a, in case no further page 230a-n can be found in step 313, the processor 121 of the data storage server 120 may be configured to create a new page 230a-n and associate the digest value 220a-n with the new page 230a-n.

[0077] In step 317 of figure 3a, the processor 121 of the data storage server 120 may add the one or more least significant bits 203 and the tuple identifier 205 to the corresponding page 230a-n.

[0078] In step 319 of figure 3a, the processor 121 of the data storage server 120 informs the client driver 111b that the insert data request has been processed.

[0079] In step 321 of figure 3a, the client driver 111b informs the application 111a that the insert data request has been processed.

[0080] Figure 3b is a sequence diagram illustrating interactions between the client device 110 according to an embodiment and the data storage server 120 according to an embodiment for retrieving data. More specifically, figure 3b illustrates steps performed at the client device 110 and at the data storage server 120 by the corresponding processors 111, 121 for processing a select data query for retrieving one or more data elements 210 from the data storage server 120.

[0081] In step 323 of figure 3b, the application 111a implemented by the processor 111 of the client device 110 may be triggered, for example by a user interaction, to generate the select data query which may comprise at least one boundary value data element defining a boundary value of a range of values, such as an integer boundary value or an upper and a lower integer boundary value.

[0082] In step 325 of figure 3b, the client driver 111b may determine, i.e. calculate the digest value 220a-n, in particular a HASH or HMAC, of the one or more most significant bits 201 of a binary representation of the at least one boundary value data element. The digest value 220a-n may be the same for a sequence of a block of the range of values, for example 256 values. The client driver 111 may determine corresponding digest values 220a-n for each further block of the range of values, for example for each sequence of 256 values to cover the full range defined, for instance, by the upper and lower boundary value.

[0083] In step 327 of figure 3b, the client driver 111b may determine, i.e. calculate the one or more least significant bits 203 of the at least one boundary value data element or a bit sequence 203*based thereon.

[0084] In step 329 of figure 3b, the client driver 111b may send a select data request comprising the digest value 220a-n of the one or more most significant bits 201 of the binary representation of the at least one boundary value data element and the one or more  complementary least significant bits 203 of the binary representation of the at least one boundary value data element. In an alternative embodiment, the select data request may comprise the digest value 220a-n of the one or more most significant bits 201 of the binary representation of the at least one boundary value data element and the bit sequence 203*based on the one or more complementary least significant bits 203 of the binary representation of the at least one boundary value data element. The select data request may further comprise the digest values 220a-n for each further block of the range of values, for example in a list.

[0085] In step 331 of figure 3b, the processor 121 of the data storage server 120 searches for the corresponding pages 230a-n associated with the plurality of digest values 220a-n of the select data request.

[0086] In step 333 of figure 3b, the processor 121 of the data storage server 120 gets, i.e. retrieves corresponding tuple identifiers 205 based on the plurality of digest values 220a-n of the select data request and the one or more least significant bits 203 of the binary representation of the at least one boundary value data element from the pages 230a-n found in step 331.

[0087] In step 335 of figure 3b, the processor 121 of the data storage server 120 reads, i.e. retrieves the corresponding obfuscated, e.g. encrypted and / or compressed data elements 210’ based on the tuple identifiers 205 retrieved in step 333 from the memory 125 of the data storage server 120.

[0088] In step 337 of figure 3b, the processor 121 of the data storage server 120 sends the one or more obfuscated, e.g. encrypted and / or compressed reply data elements 210’ retrieved in step 335 together with other data elements in the same tuple to the client driver 111b.

[0089] In step 339 of figure 3b, the client driver 111b implemented by the processor 111 of the client device 110 is configured to de-obfuscate, e.g. decrypt and / or decompress the one or more obfuscated reply data elements 210’ received from the data storage server 120 for obtaining one or more plaintext reply data elements 210. In an embodiment, the client driver 111b may be configured or further instructed by the application 111a to use, for instance, a specific decompression method, a specific decryption method and / or a specific decryption key. Alternatively, the client driver 111b may, for instance, use a predetermined decompression method, a predetermined decryption method and / or a predetermined decryption key.

[0090] In step 341 of figure 3b, the client driver 111b sends the plaintext reply data elements 210 to the application 111a.

[0091] As will be appreciated, for instance, from the example shown in figure 3b, even though the database index 125a is stored in the data storage server 120 and the data storage server 120 utilities the database index 125a to perform range queries –the privacy of the customer’s data is maintained. In every interaction between the data storage server 120 and the database index 125a, the client driver’s 111b guidance is required in to help the data storage server 120 to get to the correct, and accurate results.

[0092] In further embodiments, the steps of building and / or updating the database index 125a by the data storage server 120 may comprise one or more of the following steps:

[0093] - The database index 125a itself may be a variation of a HASH Index commonly implemented in databases.

[0094] - The digest value 220a-n, in particular a one-way hash (HMAC) may be calculated on the most significant bytes (MSB) 201 of the user data –except the last byte.

[0095] - Every MSB value may represent a range of sequential 256 values.

[0096] - The digest value 220a-n, in particular a HMAC value, may be used as the key in the hash index.

[0097] - Inside the index nodes the last byte, i.e. the least significant bits 203 may be exposed in plaintext. Alternatively, Order Preserving Encryption may be used to provide some security to the last byte.

[0098] - Memory pages 230a-n, that are not full, may be shared between different ranges in order to be space efficient.

[0099] - The client device 110 may embed the digest value 220a-n, in particular the HMAC value and the least significant bits 202 in subsequent SQL range queries for efficient access of the database index 125a by the data storage server 120.

[0100] - The database index 125a may be managed by the data storage server 120 but may be build based on the input of the insert queries and searched based on the input of the select queries sent by the client device 110.

[0101] Figure 4a is a schematic diagram illustrating the use of a further digest value 221a-n (referred to as Di values in figure 4a) for a big range optimization of a select data query in the data storage system 100 according to an embodiment. As will be explained in more detail below, the database may be further configured to store a further digest value Di 221a-n of one or more further most significant bits of the binary representation of the at least one data element 210. The one or more further most significant bits of the binary representation of the at least one data element 210 may comprise more or less bits than the one or more most significant bits 201 of the binary representation of the at least one data element 210 used for generating the digest values 220a-n, i.e. the Hi values. Figure 4a shows an implementation in which the further digest values Di 221a-n are stored in the same database index entry as the digest values Hi 220a-n and may point directly to the pages 230a-n in the same way as the digest values Hi 220a. As will be appreciated, in the example of figure 4, each further digest value Di overlaps with one or more digest values Hi.In other words, at least some of the further digest values Di cover a larger range than the respective digest values Hi.

[0102] Figure 4b shows a variant of figure 4a. As illustrated by frame 400 in figure 4b, each further digest value Di 221a-n may cover a range indicated by one or more digest values Hi 220a-n. In other words, a large range covered by several digest values Hi 220a-n may be covered by a further digest value Di 221a-n. The digest values Hi 220a-n may correspond to values of the data elements 210 of sequential ranges and may be grouped together in random order. As further illustrated in figure 4b, each of the further digest values Di 221a-n may be associated with one or more of the pages 230a-n of the memory, in particular disk memory 125.

[0103] A big range may be defined in the data storage system 100 by a fixed range, for example 64 digest values Hi 220a-n. The fixed range may be configured, for example by the client driver 111b and / or the application 111a of the client device 110. Alternatively, a variable range may be configured by the client driver 111b and / or the application 111a which may comprise, for instance, any number between 32 to 96 digest values Hi 220a-n.

[0104] The big ranges may then be identified by the further digest values Di 221a-n created from the borders of the ranges described above.

[0105] The client driver 111b may then decide for a select data query of a small range that only one digest value 220a is needed. For a big range, as defined above, the further digest values Di 221a-n may be used. In some cases a combination of the digest values Hi 220a-n and the further digest values Di 221a-n may be chosen, for example where such  combination is more efficient in network bandwidth and / or processing time of at least one of the processors 111, 121. In order to specify accurate boundaries for the query, LSB portions of the boundaries may also be added to the combination of the H values and / or D values.

[0106] By way of example, a select data query, e.g. range query may cover a range from 0 to 95, wherein each digest value Hi 220a-n covers a subrange of 8 and three further digest values D1, D2 and D3 221a-c cover a respective larger subrange of 32. For an exemplary select query from the lower boundary 19 to the upper boundary value 78 the client driver 111b may include the following data in the select query: a first digest value H1 covering the values 16 to 23 with an LSB offset of 3 (i.e. the offset relative to the boundary defined by the first digest value H1) ; a second digest value H2 covering the values 24 to 31; a further digest value D2 covering the values 32 to 63; a third digest value H3 covering the values 64 to 71; and a fourth digest value H4 covering the values 72 to 79 with an LSB offset of 6 (i.e. the offset relative to the boundary defined by the fourth digest value H4) . This data will be used by the data storage server 120 to perform the range query in the way described above.

[0107] Figure 5a is a sequence diagram illustrating interactions between the client device 110 according to an embodiment and the data storage server 120 according to an embodiment for storing data with a big range optimization. More specifically, figure 5a illustrates steps performed at the client device 110 and at the data storage server 120 by the corresponding processors 111, 121 for processing the insert data request with a big range optimization. In the following only steps differing from the embodiment shown in figure 3a are described in more detail.

[0108] In step 501 of figure 5a, the client driver 111b implemented by the processor 111 of the client device 110 may determine, i.e. calculate the digest value H 220a-n of the one or more most significant bits 201, the further digest value D 221a-n based on the digest values 220a-n, the one or more least significant bits 203 and the at least one data element 210’ in obfuscated, e.g. compressed and / or encrypted form.

[0109] In step 503 of figure 5a, the client driver 111b may send the insert data request comprising the digest value H 220a-n of the one or more most significant bits 201, the further digest value D 221a-n, the one or more least significant bits 203 and the at least one data element 210’ in obfuscated, e.g. compressed and / or encrypted form to the data storage server 120.

[0110] Figure 5b is a sequence diagram illustrating interactions between the client device 110 according to an embodiment and the data storage server 120 according to an embodiment for retrieving data with a big range optimization. More specifically, figure 5b illustrates steps performed at the client device 110 and at the data storage server 120 by the corresponding processors 111, 121 for processing a select data query with a big range optimization. In the following only steps differing from the embodiment shown in figure 3b are described in more detail.

[0111] In step 505 of figure 5b, in response to receiving the select data query from the application 111a, the client driver 111b may calculate, in particular for full big ranges as defined above, the ranges for the further digest values 221a-n and the corresponding further digest values Di 221a-n.

[0112] In step 325 of figure 5b, for digest values Hi 220a-n which are not associated with the further digest value Di 221a-n, the client driver 111b may determine, i.e. calculate the digest value 220a-n, in particular a HASH or HMAC, of the one or more most significant bits 201 of the binary representation of the at least one boundary value data element. The digest value 220a-n may be the same for a sequence of a block of the range of values, for example 256 values. The client driver 111b may determine corresponding digest value 220a-n for each further block of the range of values which are not associated with the further digest value 221a-n, for example for each sequence of 256 values.

[0113] In step 507 of figure 5b, the client driver 111b may send a select data request comprising the digest value 220a-n of the one or more most significant bits 201 of the binary representation of the at least one boundary value data element and one or more complementary least significant bits 203 of the binary representation of the at least one boundary value data element to the data storage server 120. The select data request may further comprise the further digest values Di 221a-n, for example in a list. The select data request may further comprise the digest values 220a-n which are not associated with the further digest value 221a-n for each further block of the range of values, for example in a list.

[0114] In a further embodiment, the client driver 111b may send in step 507 of figure 5b a select data request comprising a combination one or more of the digest values 220a-n and / or one or more of the further digest values 221a-n to the data storage server 120. For instance, for a few big ranges one or more of the further digest values Di 221a-n may be sufficient, while for exact small ranges the select data request may comprise one or more of the digest values Hi 220a-n and LSB boundaries.

[0115] In step 509 of figure 5b, the processor 121 of the data storage server 120 searches the pages 230a-n of the memory 125 of the data storage device 120 for the further digest values Di 221a-n of the select data request and gets, i.e. retrieves the associated digest values Hi 220a-n.

[0116] In step 331 of figure 5b, the processor 121 of the data storage server 120 searches for the corresponding pages 230a-n associated with the digest values 220a-n of the select data associated with the further digest values Di 221a-n retrieved in step 509.

[0117] For example, in case of very big ranges without big range optimization the client device 110 may have to send a huge number of digest values 220a-n for ranges that are semi empty. For example, between a range of 0 to 1 million there may be only values 100524 and 789012 in a column “CCC” of a table “TTT” of the database. When the application 111a executes the query “SELECT *from table TTT WHERE CCC<1048500” the client driver 111b may have to generate 3097 (1000000 / 256) values in order to send the query request. This may create an unwanted cost in hash calculation in the client device 110 side, network bandwidth and many unnecessary index scans with empty result on the data storage server 120 side. With the big range optimization implemented by embodiments disclosed herein the number of hashes for big ranges can be reduced and the data storage server 120 can be directed to a list of digest values 120a-n in an efficient manner.

[0118] Figure 5c shows a variant of the embodiment shown in figure 5b. The embodiment shown in figure 5c does not include the step 509 of the embodiment shown in figure 5b. The embodiment shown in figure 5c further differs from the embodiment shown in figure 5b in that in step 331 of figure 5c the processor 121 of the data storage server 120 searches for the corresponding pages 230a-n associated with the digest values 220a-n and the further digest values 221a-n.

[0119] Figure 6 is a flow diagram of a method 600 of operating the client device 110 according to an embodiment for storing and retrieving data from the data storage server 120 according to an embodiment. The method 600 comprises the following steps, which are executed by the client device 110.

[0120] Step 601: determining, based on an insert data query comprising at least one data element 210, a digest value 220a-n, in particular a HASH or HMAC, of one or more most significant bits 201 of a binary representation of the at least one data element 210.

[0121] Step 602: obfuscating, for instance, encrypting and / or compressing the at least one data element 210.

[0122] Step 603: transmitting an insert data request to the data storage server 120 for storing the at least one obfuscated data element 210 in the data storage server 120 and updating the database index 125a, wherein the insert data request comprises the at least one obfuscated data element 210’ and index data for updating the database index 125a, wherein the index data comprises the digest value 220a-n of the one or more most significant bits 201 of the binary representation of the at least one data element 210 and one or more complementary least significant bits 203 of the binary representation of the at least one data element 210 and / or a bit sequence 203*based on the one or more complementary least significant bits 203 of the binary representation of the at least one data element 210.

[0123] Figure 7 is a flow diagram of a method 700 of operating the data storage server 120 according to an embodiment for storing data from the client device 110 according to an embodiment. The method 700 comprises the following steps, which are executed by the data storage server 120.

[0124] Step 701: receiving from the client device 110 an insert data request, including at least one obfuscated data element 210’ and index data, wherein the index data comprises the digest value 220a-n of one or more most significant bits 201 of a binary representation of the at least one data element 210 and one or more complementary least significant bits 203 of the binary representation of the at least one data element 210 and / or a bit sequence 203*based on the one or more complementary least significant bits 203 of the binary representation of the at least one data element 210.

[0125] Step 703: storing the at least one obfuscated data element 210’ at a memory location of the memory 120.

[0126] Step 705: updating the database index 125a based on the index data for locating the at least one obfuscated data element 210’ at the memory location of the memory 125.

[0127] In a further embodiment, the method 700 may further comprise obtaining a tuple identifier 205 indicative of the memory location of the at least one obfuscated data element 210’ in the memory 125 and updating the database index 125a based on the index data and the tuple identifier 205.

[0128] The person skilled in the art will understand that the "blocks" ( "units" ) of the various figures (method and apparatus) represent or describe functionalities of embodiments of the present disclosure (rather than necessarily individual "units" in hardware or software) and thus describe equally functions or features of apparatus embodiments as well as method embodiments (unit = step) .

[0129] In the several embodiments provided in the present application, it should be understood that the disclosed system, apparatus, and method may be implemented in other manners. For example, the described embodiment of an apparatus is merely exemplary. For example, the unit division is merely logical function division and may be another division in an actual implementation. For example, a plurality of units or components may be combined or integrated into another system, or some features may be ignored or not performed. In addition, the displayed or discussed mutual couplings or direct couplings or communication connections may be implemented by using some interfaces. The indirect couplings or communication connections between the apparatuses or units may be implemented in electronic, mechanical, or other forms.

[0130] The units described as separate parts may or may not be physically separate, and parts displayed as units may or may not be physical units, may be located in one position, or may be distributed on a plurality of network units. Some or all of the units may be selected according to actual needs to achieve the objectives of the solutions of the embodiments.

[0131] In addition, functional units in the embodiments of the invention may be integrated into one processing unit, or each of the units may exist alone physically, or two or more units are integrated into one unit.

Claims

1.A client device (110) for storing data in and retrieving data from a data storage server (120) , wherein the client device (110) comprises:a processor (111) configured, based on an insert data query comprising at least one data element (210) , to determine a digest value (220a-n) of one or more most significant bits (201) of a binary representation of the at least one data element (210) and to obfuscate the at least one data element (210) ; anda communication interface (113) configured to transmit an insert data request to the data storage server (120) for storing the at least one obfuscated data element (210’) and updating a database index (125a) for locating the at least one obfuscated data element (210) in the data storage server (120) , wherein the insert data request comprises the at least one obfuscated data element (210) and index data for updating the database index (125a) , wherein the index data comprises the digest value (220a-n) of the one or more most significant bits (201) of the binary representation of the at least one data element (210) and one or more complementary least significant bits (203) of the binary representation of the at least one data element (210) and / or a bit sequence (203*) based on the one or more complementary least significant bits (203) of the binary representation of the at least one data element (210) .2.The client device (110) of claim 1, wherein the processor (111) is configured to obfuscate the at least one data element (210) by encrypting and / or compressing the at least one data element (210) and wherein the insert data request comprises the encrypted and / or compressed at least one data element (210’) .3.The client device (110) of claim 1 or 2,wherein the processor (111) is further configured, based on a select data query comprising at least one boundary value data element defining a boundary value of a range of values, to determine a digest value (220a-n) of one or more most significant bits (201) of a binary representation of the at least one boundary value data element; andwherein the communication interface (113) is further configured to transmit a select data request to the data storage server (120) for retrieving one or more data elements (210)  from the data storage server (120) , wherein the select data request comprises the digest value (220a-n) of the one or more most significant bits (201) of the binary representation of the at least one boundary value data element and one or more complementary least significant bits (203) of the binary representation of the at least one boundary value data element and / or a bit sequence (203*) based on the one or more complementary least significant bits (203) of the binary representation of the at least one boundary value data element.4.The client device (110) of claim 3, wherein, in response to the select data request, the communication interface (113) is further configured to receive one or more obfuscated reply data elements (210’) from the data storage server (120) and wherein the processor (111) is configured to de-obfuscate the one or more obfuscated reply data elements (210’) .5.The client device (110) of claim 4, wherein the one or more obfuscated reply data elements (210’) comprise one or more encrypted reply data elements (210’) and wherein the processor (111) is configured to decrypt the one or more encrypted reply data elements (210’) from the data storage server (120) for obtaining one or more plaintext reply data elements (210) and / or wherein the one or more obfuscated reply data elements (210’) comprise one or more compressed reply data elements (210’) and wherein the processor (111) is configured to decompress the one or more compressed reply data elements (210’) from the data storage server (120) for obtaining one or more plaintext reply data elements (210) .6.The client device (110) of any one of the preceding claims, wherein the index data further comprises a further digest value (221a-n) of one or more further most significant bits of the binary representation of the at least one data element (210) , wherein the one or more further most significant bits of the binary representation of the at least one data element (210) comprise more or less bits than the one or more most significant bits (201) of the binary representation of the at least one data element (210) .7.The client device (110) of any one of the preceding claims, wherein the digest value (220a-n) of the one or more most significant bits (201) of the binary representation of the at least one data element (210) comprises a Hash value and / or a HMAC value of the one or more most significant bits (201) of the binary representation of the at least one data element (210) .8.A method (600) for storing and retrieving data from a data storage server (120) , wherein method (600) comprises:determining (601) , based on an insert data query comprising at least one data element (210) , a digest value (220a-n) of one or more most significant bits (201) of a binary representation of the at least one data element (210) ;obfuscating (602) the at least one data element (210) ; andtransmitting (603) an insert data request to the data storage server (120) for storing the at least one obfuscated data element (210) in the data storage server (120) and updating a database index (125a) , wherein the insert data request comprises the at least one obfuscated data element (210’) and index data for updating the database index (125a) , wherein the index data comprises the digest value (220a-n) of the one or more most significant bits (201) of the binary representation of the at least one data element (210) and one or more complementary least significant bits (203) of the binary representation of the at least one data element (210) and / or a bit sequence (203*) based on the one or more complementary least significant bits (203) of the binary representation of the at least one data element (210) .9.A data storage server (120) for storing data from a client device (110) , wherein the data storage server (120) comprises:a communication interface (123) configured to receive from the client device (110) an insert data request, including at least one data element (210’) in an obfuscated form and index data, wherein the index data comprises a digest value (220a-n) of one or more most significant bits (201) of a binary representation of the at least one data element (210) and one or more complementary least significant bits (203) of the binary representation of the at least one data element (210) and / or a bit sequence (203*) based on the one or more complementary least significant bits (203) of the binary representation of the at least one data element (210) ; anda memory (125) configured to implement a database, wherein the database is configured to store the at least one data element (210’) in the obfuscated form at a memory location and update a database index (125a) based on the index data for locating the at least one data element (210’) in the obfuscated form at the memory location.10.The data storage server (120) of claim 9, wherein the database is further configured to obtain a tuple identifier (205) indicative of the memory location of the at least one data element (210’) in the obfuscated form and to update the database index (125a) based on the index data and the tuple identifier (205) .11.The data storage server (120) of claim 9 or 10, wherein the at least one data element (210’) in the obfuscated form comprises at least one encrypted and / or compressed data element (210’) and wherein the database is configured to store the at least one encrypted and / or compressed data element (210’) at the memory location.12.The data storage server (120) of any one of claims 9 to 11,wherein the communication interface (123) is further configured to receive from the client device (110) a select data request based on an select data query comprising at least one boundary value data element defining a boundary value of a range of values, wherein the select data request comprises a digest value (220a-n) of the one or more most significant bits (201) of the binary representation of the at least one boundary value data element and one or more complementary least significant bits (203) of the binary representation of the at least one boundary value data element and / or a bit sequence (203*) based on the one or more complementary least significant bits (203) of the binary representation of the at least one boundary value data element, andwherein the database is further configured to retrieve, based on the digest value (220a-n) of the one or more most significant bits (201) of the binary representation of the at least one boundary value data element and the one or more complementary least significant bits (203) of the binary representation of the at least one boundary value data element and / or the bit sequence (203*) based on the one or more complementary least significant bits (203) of the binary representation of the at least one boundary value data element, one or more reply data elements (210’) in obfuscated form from the memory (125) .13.The data storage server (120) of claim 12, wherein the communication interface (123) is further configured to send the one or more reply data elements (210’) in obfuscated form to the client device (110) .14.The data storage server (120) of claim 12 or 13, wherein the one or more reply data elements (210’) in obfuscated form comprise one or more encrypted and / or compressed reply data elements (210’) .15.The data storage server (120) of any one of claims 9 to 14, wherein the index data further comprises a further digest value (221a-n) of one or more further most significant bits of the binary representation of the at least one data element (210) , wherein the one or more further most significant bits of the binary representation of the at least one data element (210) comprise more or less bits than the one or more most significant bits (201) of the binary representation of the at least one data element (210) .16.The data storage server (120) of any one of claims 9 to 15, wherein the digest value (220a-n) of the one or more most significant bits (201) of the binary representation of the at least one data element (210) comprises a Hash value and / or a HMAC value of the one or more most significant bits (201) of the binary representation of the at least one data element (210) .17.A method (700) for storing data from a client device (110) , wherein the method (700) comprises:receiving (701) from the client device (110) an insert data request, including at least one data element (210’) in obfuscated form and index data, wherein the index data comprises a digest value (220a-n) of one or more most significant bits (201) of a binary representation of the at least one data element (210) and one or more complementary least significant bits (203) of the binary representation of the at least one data element (210) and / or a bit sequence (203*) based on the one or more complementary least significant bits (203) of the binary representation of the at least one data element (210) ;storing (703) the at least one data element (210’) in obfuscated form at a memory location of a memory (125) ; andupdating (705) a database index (125a) based on the index data for locating the at least one data element (210’) in the obfuscated form at the memory location.18.The method (700) of claim 17, wherein the method (700) further comprises obtaining a tuple identifier (205) indicative of the memory location of the at least one data  element (210’) in the obfuscated form and updating (705) the database index (125a) based on the index data and the tuple identifier (205) .19.A computer program product comprising a computer-readable storage medium for storing program code which causes a computer or a processor to perform the method (600) of claim 8 or the method (700) of claim 17 or claim 18, when the program code is executed by the computer or the processor.

Citation Information

Patent Citations

  • Methods And Systems For Securing And Retrieving Sensitive Data Using lndexable Databases

    US20210004479A1

  • Data storage server and client devices for securely storing data

    WO2022002350A1