Hamming codes with privacy
Patent Information
- Application Number
- GB2024002586
- Authority / Receiving Office
- GB · GB
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-02-23
- Publication Date
- 2025-08-27
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
TECHNICAL FIELD
[0001] Various example embodiments generally relate to the field of data encoding and decoding. Some example embodiments relate to preserving data privacy with error correction codes. BACKGROUND
[0002] In various communication applications it may be desired to preserve privacy of individuals, for example by modifying original data such that the resulting data cannot be used to infer information about any individual. Forward error correction coding (FEC) may be applied to enable transmitted data to be correctly received regardless of error occurring in the transmission channel, for example a wireless radio channel. Hamming codes are one class of error correction codes. SUMMARY
[0003] This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the detailed description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
[0004] Example embodiments of the present disclosure enable to improve data privacy without affecting error correction performance of Hamming codes. This and other benefits may be achieved by the features of the independent claims. Further example embodiments are provided in the dependent claims, the description, and the drawings.
[0005] According to a first aspect, a method is disclosed. The method may comprise: obtaining a message for encoding, the message belonging to a message space; encoding the message based on a Hamming code to obtain a codeword belonging to a codeword space, wherein the Hamming code is configured to map adjacent messages of the message space to adjacent codewords of the codeword space, and transmitting a signal comprising the codeword.
[0006] According to an example embodiment of the first aspect, the message comprises an integer, and a distance between adjacent integers of the message space is equal to one.
[0007] According to an example embodiment of the first aspect, the method comprises: converting the integer to a bit sequence based on a mapping configured to map adjacent integers of the message space to adjacent bit sequences, wherein a Hamming distance between adjacent bit sequences is equal to one; and encoding the bit sequence as the message.
[0008] According to an example embodiment of the first aspect, the message comprises a bit sequence, and a Hamming distance between adjacent bit sequences of the message space is equal to one.
[0009] According to an example embodiment of the first aspect, the codeword space comprises bit sequences, and a Hamming distance between the adjacent codewords is equal to a minimum distance of the Hamming code.
[0010] According to an example embodiment of the first aspect, Hamming code is characterized by a parity-check matrix comprising a concatenation of a nonidentity matrix and an identity matrix, wherein columns of the non-identity matrix are ordered according to increasing or decreasing weight. [0011 ] According to an example embodiment of the first aspect, the Hamming code is characterized by a generator matrix, wherein rows of the generator matrix comprise shifted versions of a binary representation of a generator polynomial of the Hamming code.
[0012] According to an example embodiment of the first aspect, the method comprises: obtaining the message based on a counting query to a set of data. [001 3] According to an example embodiment of the first aspect, the method comprises: privatizing the message based on a differential privacy algorithm before the encoding of the message.
[0014] According to a second aspect, a method is disclosed. The method may comprise: receiving a signal comprising a representation of a codeword belonging to a codeword space; and decoding the representation of the codeword based on a Hamming code to obtain an estimate of a message belonging to a message space, wherein the Hamming code is configured to map adjacent messages of the message space to adjacent codewords of the codeword space.
[0015] According to an example embodiment of the second aspect, the message comprises an integer, and a distance between adjacent integers of the message space is equal to one.
[0016] According to an example embodiment of the second aspect, the message comprises a bit sequence, and a Hamming distance between adjacent bit sequences of the message space is equal to one.
[0017] According to an example embodiment of the second aspect, the codeword space comprises bit sequences, and a Hamming distance between the adjacent codewords is equal to a minimum distance of the Hamming code.
[0018] According to an example embodiment of the second aspect, the Hamming code is characterized by a parity-check matrix comprising a concatenation of a non-identity matrix and an identity matrix, wherein columns of the non-identity matrix are ordered according to increasing or decreasing weight.
[0019] According to an example embodiment of the second aspect, the Hamming code is characterized by a generator matrix, wherein rows of the generator matrix comprise shifted versions of a binary representation of a generator polynomial of the Hamming code
[0020] According to a third aspect, an apparatus is disclosed. The apparatus may comprise: at least one processor; and at least one memory storing instructions that, when executed by the at least one processor, cause the apparatus at least to: obtain a message for encoding, the message belonging to a message space; encode the message based on a Hamming code to obtain a codeword belonging to a codeword space, wherein the Hamming code is configured to map adjacent messages of the message space to adjacent codewords of the codeword space; and transmit a signal comprising the codeword.
[0021] According to an example embodiment of the third aspect, the message comprises an integer, and a distance between adjacent integers of the message space is equal to one.
[0022] According to an example embodiment of the third aspect, the instructions are configured to, when executed by the at least one processor, cause the apparatus to: convert the integer to a bit sequence based on a mapping configured to map adjacent integers of the message space to adjacent bit sequences, wherein a Hamming distance between adjacent bit sequences is equal to one; and encode the bit sequence as the message.
[0023] According to an example embodiment of the third aspect, the message comprises a bit sequence, and a Hamming distance between adjacent bit sequences of the message space is equal to one.
[0024] According to an example embodiment of the third aspect, the codeword space comprises bit sequences, and a Hamming distance between the adjacent codewords is equal to a minimum distance of the Hamming code. [002 5] According to an example embodiment of the third aspect, Hamming code is characterized by a parity-check matrix comprising a concatenation of a nonidentity matrix and an identity matrix, wherein columns of the non-identity matrix are ordered according to increasing or decreasing weight.
[0026] According to an example embodiment of the third aspect, the Hamming code is characterized by a generator matrix, wherein rows of the generator matrix comprise shifted versions of a binary representation of a generator polynomial of the Hamming code.
[0027] According to an example embodiment of the third aspect, the instructions are configured to, when executed by the at least one processor, cause the apparatus to: obtain the message based on a counting query to a set of data.
[0028] According to an example embodiment of the third aspect, the instructions are configured to, when executed by the at least one processor, cause the apparatus to: privatize the message based on a differential privacy algorithm before the encoding of the message.
[0029] According to a fourth aspect, an apparatus is disclosed. The apparatus may comprise: at least one processor; and at least one memory storing instructions that, when executed by the at least one processor, cause the apparatus at least to: receive a signal comprising a representation of a codeword belonging to a codeword space; and decode the representation of the codeword based on a Hamming code to obtain an estimate of a message belonging to a message space, wherein the Hamming code is configured to map adjacent messages of the message space to adjacent codewords of the codeword space.
[0030] According to an example embodiment of the fourth aspect, the message comprises an integer, and a distance between adjacent integers of the message space is equal to one. [0031 ] According to an example embodiment of the fourth aspect, the message comprises a bit sequence, and a Hamming distance between adjacent bit sequences of the message space is equal to one.
[0032] According to an example embodiment of the fourth aspect, the codeword space comprises bit sequences, and a Hamming distance between the adjacent codewords is equal to a minimum distance of the Hamming code.
[0033] According to an example embodiment of the fourth aspect, the Hamming code is characterized by a parity-check matrix comprising a concatenation of a non-identity matrix and an identity matrix, wherein columns of the non-identity matrix are ordered according to increasing or decreasing weight.
[0034] According to an example embodiment of the fourth aspect, the Hamming code is characterized by a generator matrix, wherein rows of the generator matrix comprise shifted versions of a binary representation of a generator polynomial of the Hamming code.
[0035] According to a fifth aspect, an apparatus is disclosed. The apparatus may comprise: means for obtaining a message for encoding, the message belonging to a message space; means for encoding the message based on a Hamming code to obtain a codeword belonging to a codeword space, wherein the Hamming code is configured to map adjacent messages of the message space to adjacent codewords of the codeword space; and means for transmitting a signal comprising the codeword. The apparatus may comprise means for performing any example embodiment of the method of the first aspect.
[0036] According to a sixth aspect, an apparatus is disclosed. The apparatus may comprise: means for receiving a signal comprising a representation of a codeword belonging to a codeword space; and means for decoding the representation of the codeword based on a Hamming code to obtain an estimate of a message belonging to a message space, wherein the Hamming code is configured to map adjacent messages of the message space to adjacent codewords of the codeword space. The apparatus may comprise means for performing any example embodiment of the method of the second aspect.
[0037] According to a seventh aspect, a data structure is disclosed. The data structure may comprise: a generator matrix of a Hamming code configured to map adjacent messages of a message space to adjacent codewords of a codeword space. The data structure may be embodied on a computer-readable medium.
[0038] According to an eighth aspect, a data structure is disclosed. The data structure may comprise: a parity-check matrix configured for decoding a Hamming code, wherein the Hamming code is configured to map adjacent messages of a message space to adjacent codewords of a codeword space. The data structure may be embodied on a computer-readable medium.
[0039] According to a ninth aspect, a method is disclosed. The method may comprise: obtaining, by an encoder device, a first message for encoding, the first message belonging to a message space; communicating, with a decoder device, information indicative of a first Hamming code being configured for encoding the first message; encoding the first message based on the first Hamming code to obtain a first codeword belonging to a codeword space, wherein the first Hamming code is configured to map adjacent messages of the message space to adjacent codewords of the codeword space; and transmitting a signal comprising the first codeword to the decoder device.
[0040] According to an example embodiment of the ninth aspect, the method may comprise: obtaining, by the encoder device, a second message for encoding, the second message belonging to the message space; communicating, with the decoder device, information indicative of a second code being configured for encoding the second message; encoding the second message based on the second code; and transmitting a signal comprising the encoded second message to the decoder device. [0041 ] According to an example embodiment of the ninth aspect, the method may comprise: receiving the information indicative of the first Hamming code being configured for encoding the first message and the information indicative of the second code being configured for encoding the second message from the decoder device.
[0042] According to an example embodiment of the ninth aspect, the method may comprise: determining to configure the first Hamming code for encoding the first message and the second code for encoding the second message; and transmitting the information indicative of the first Hamming code being configured for encoding the first message and the information indicative of the second code being configured for encoding the second message to the decoder device.
[0043] According to an example embodiment of the ninth aspect, the second code comprises a second Hamming code configured to map at least one pair of adjacent messages of the message space to non-adjacent codewords of the codeword space.
[0044] According to an example embodiment of the ninth aspect, the first message and the second message comprise respective integers, and a distance between adjacent integers of the message space is equal to one.
[0045] According to an example embodiment of the ninth aspect, the method may comprise: converting the respective integers to bit sequences based on a mapping configured to map adjacent integers of the message space to adjacent bit sequences, wherein a Hamming distance between the adjacent bit sequences is equal to one; an encoding the bit sequences as the first and second messages.
[0046] According to an example embodiment of the ninth aspect, the first message and the second message comprise respective bit sequences, and a Hamming distance between adjacent bit sequences of the message space is equal to one.
[0047] According to an example embodiment of the ninth aspect, the method may comprise: obtaining the first message and the second message based on at least one counting query to a set of data.
[0048] According to an example embodiment of the ninth aspect, the method may comprise: privatizing the first message based on a differential privacy algorithm before the encoding of the first message; or privatizing the second message based on the differential privacy algorithm before the encoding of the second message.
[0049] According to an example embodiment of the ninth aspect, the codeword space comprises bit sequences, and a Hamming distance between the adjacent codewords is equal to a minimum distance of the Hamming code.
[0050] According to an example embodiment of the ninth aspect, the Hamming code is characterized by a parity-check matrix comprising a concatenation of a nonidentity matrix and an identity matrix, wherein columns of the non-identity matrix are ordered according to increasing or decreasing weight. [0051 ] According to an example embodiment of the ninth aspect, the Hamming code is characterized by a generator matrix, wherein rows of the generator matrix comprise shifted versions of a binary representation of a generator polynomial of the Hamming code.
[0052] According to a tenth aspect, a method is disclosed. The method may comprise: communicating, by a decoder device with an encoder device, information indicative of a first Hamming code being configured for encoding a first message by the encoder device, wherein the first message belongs to a message space; receiving, from the encoder device, a signal comprising a representation of a first codeword belonging to a codeword space and representing the first message; and decoding the representation of the first codeword based on the first Hamming code to obtain an estimate of the first message, wherein the first Hamming code is configured to map adjacent messages of the message space to adjacent codewords of the codeword space.
[0053] According to an example embodiment of the tenth aspect, the method comprises: communicating, by the decoder device with the encoder device, information indicative of a second code being configured for encoding a second message by the encoder device, wherein the second message belongs to the message space; receiving, from the encoder device, a signal comprising a representation of the encoded second message representing the second message; and decoding the representation of the encoded second message based on the second code to obtain an estimate of the second message.
[0054]
[0055] According to an example embodiment of the tenth aspect, the method comprises: receiving the information indicative of the first Hamming code being configured for encoding the first message and the information indicative of the second code being configured for encoding the second message from the encoder device.
[0056] According to an example embodiment of the tenth aspect, the method comprises: determining to configure the first Hamming code for encoding the first message and the second code for encoding the second message; and transmitting the information indicative of the first Hamming code being configured for encoding the first message and the information indicative of the second code being configured for encoding the second message to the encoder device.
[0057] According to an example embodiment of the tenth aspect, the second code comprises a second Hamming code configured to map at least one pair of adjacent messages of the message space to non-adjacent codewords of the codeword space.
[0058] According to an example embodiment of the tenth aspect, the first message and the second message comprise respective integers, and a distance between adjacent integers of the message space is equal to one.
[0059] According to an example embodiment of the tenth aspect, the first message and the second message comprise respective bit sequences, and a Hamming distance between adjacent bit sequences of the message space is equal to one.
[0060] According to an example embodiment of the tenth aspect, the method comprises: privatizing the first message based on a differential privacy algorithm before the encoding of the first message; or privatizing the second message based on the differential privacy algorithm before the encoding of the second message. [0061 ] According to an example embodiment of the tenth aspect, the codeword space comprises bit sequences, and a Hamming distance between the adjacent codewords is equal to a minimum distance of the Hamming code.
[0062] According to an example embodiment of the tenth aspect, the first Hamming code is characterized by a parity-check matrix comprising a concatenation of a non-identity matrix and an identity matrix, wherein columns of the non-identity matrix are ordered according to increasing or decreasing weight.
[0063] According to an example embodiment of the tenth aspect, the first Hamming code is characterized by a generator matrix, wherein rows of the generator matrix comprise shifted versions of a binary representation of a generator polynomial of the Hamming code.
[0064] According to an eleventh aspect, an encoder device is disclosed. The encoder device may comprise: at least one processor; and at least one memory storing instructions that, when executed by the at least one processor, cause the encoder device at least to: obtain a first message for encoding, the first message belonging to a message space; communicate, with a decoder device, information indicative of a first Hamming code being configured for encoding the first message; encode the first message based on the first Hamming code to obtain a first codeword belonging to a codeword space, wherein the first Hamming code is configured to map adjacent messages of the message space to adjacent codewords of the codeword space; and transmit a signal comprising the first codeword to the decoder device.
[0065] According to an example embodiment of the eleventh aspect, the instructions are configured to, when executed by the at least one processor, cause the encoder device to: obtain a second message for encoding, the second message belonging to the message space; communicate, with the decoder device, information indicative of a second code being configured for encoding the second message; encode the second message based on the second code; and transmit a signal comprising the encoded second message to the decoder device.
[0066] According to an example embodiment of the eleventh aspect, the instructions are configured to, when executed by the at least one processor, cause the encoder device to: receive the information indicative of the first Hamming code being configured for encoding the first message and the information indicative of the second code being configured for encoding the second message from the decoder device.
[0067] According to an example embodiment of the eleventh aspect, the instructions are configured to, when executed by the at least one processor, cause the encoder device to: determine to configure the first Hamming code for encoding the first message and the second code for encoding the second message; and transmit the information indicative of the first Hamming code being configured for encoding the first message and the information indicative of the second code being configured for encoding the second message to the decoder device.
[0068] According to an example embodiment of the eleventh aspect, the second code comprises a second Hamming code configured to map at least one pair of adjacent messages of the message space to non-adjacent codewords of the codeword space.
[0069] According to an example embodiment of the eleventh aspect, the first message and the second message comprise respective integers, and a distance between adjacent integers of the message space is equal to one.
[0070] According to an example embodiment of the eleventh aspect, the instructions are configured to, when executed by the at least one processor, cause the encoder device to: convert the respective integers to bit sequences based on a mapping configured to map adjacent integers of the message space to adjacent bit sequences, wherein a Hamming distance between the adjacent bit sequences is equal to one; an encode the bit sequences as the first and second messages.
[0071] According to an example embodiment of the eleventh aspect, the first message and the second message comprise respective bit sequences, and a Hamming distance between adjacent bit sequences of the message space is equal to one.
[0072] According to an example embodiment of the eleventh aspect, the instructions are configured to, when executed by the at least one processor, cause the encoder device to: obtain the first message and the second message based on at least one counting query to a set of data.
[0073] According to an example embodiment of the eleventh aspect, the instructions are configured to, when executed by the at least one processor, cause the encoder device to: privatize the first message based on a differential privacy algorithm before the encoding of the first message; or privatize the second message based on the differential privacy algorithm before the encoding of the second message.
[0074] According to an example embodiment of the eleventh aspect, the codeword space comprises bit sequences, and a Hamming distance between the adjacent codewords is equal to a minimum distance of the Hamming code.
[0075] According to an example embodiment of the eleventh aspect, the Hamming code is characterized by a parity-check matrix comprising a concatenation of a non-identity matrix and an identity matrix, wherein columns of the non-identity matrix are ordered according to increasing or decreasing weight.
[0076] According to an example embodiment of the eleventh aspect, the Hamming code is characterized by a generator matrix, wherein rows of the generator matrix comprise shifted versions of a binary representation of a generator polynomial of the Hamming code.
[0077] According to a twelfth aspect, a decoder device is disclosed. The decoder device may comprise: at least one processor; and at least one memory storing instructions that, when executed by the at least one processor, cause the decoder device at least to: communicate, with an encoder device, information indicative of a first Hamming code being configured for encoding a first message by the encoder device, wherein the first message belongs to a message space; receive, from the encoder device, a signal comprising a representation of a first codeword belonging to a codeword space and representing the first message; and decode the representation of the first codeword based on the first Hamming code to obtain an estimate of the first message, wherein the first Hamming code is configured to map adjacent messages of the message space to adjacent codewords of the codeword space.
[0078] According to an example embodiment of the twelfth aspect, the instructions are configured to, when executed by the at least one processor, cause the decoder device to: communicate, with the encoder device, information indicative of a second code being configured for encoding a second message by the encoder device, wherein the second message belongs to the message space; receive, from the encoder device, a signal comprising a representation of the encoded second message representing the second message; and decoding the representation of the encoded second message based on the second code to obtain an estimate of the second message.
[0079] According to an example embodiment of the twelfth aspect, the instructions are configured to, when executed by the at least one processor, cause the decoder device to: receive the information indicative of the first Hamming code being configured for encoding the first message and the information indicative of the second code being configured for encoding the second message from the encoder device.
[0080] According to an example embodiment of the twelfth aspect, the instructions are configured to, when executed by the at least one processor, cause the decoder device to: determine to configure the first Hamming code for encoding the first message and the second code for encoding the second message; and transmit the information indicative of the first Hamming code being configured for encoding the first message and the information indicative of the second code being configured for encoding the second message to the encoder device. [0081 ] According to an example embodiment of the twelfth aspect, the second code comprises a second Hamming code configured to map at least one pair of adjacent messages of the message space to non-adjacent codewords of the codeword space.
[0082] According to an example embodiment of the twelfth aspect, the first message and the second message comprise respective integers, and a distance between adjacent integers of the message space is equal to one.
[0083] According to an example embodiment of the twelfth aspect, the first message and the second message comprise respective bit sequences, and a Hamming distance between adjacent bit sequences of the message space is equal to one.
[0084] According to an example embodiment of the twelfth aspect, the instructions are configured to, when executed by the at least one processor, cause the decoder device to: privatize the first message based on a differential privacy algorithm before the encoding of the first message; or privatize the second message based on the differential privacy algorithm before the encoding of the second message.
[0085] According to an example embodiment of the twelfth aspect, the codeword space comprises bit sequences, and a Hamming distance between the adjacent codewords is equal to a minimum distance of the Hamming code.
[0086] According to an example embodiment of the twelfth aspect, the first Hamming code is characterized by a parity-check matrix comprising a concatenation of a non-identity matrix and an identity matrix, wherein columns of the non-identity matrix are ordered according to increasing or decreasing weight.
[0087] According to an example embodiment of the twelfth aspect, the first Hamming code is characterized by a generator matrix, wherein rows of the generator matrix comprise shifted versions of a binary representation of a generator polynomial of the Hamming code.
[0088] According to a thirteenth aspect, an apparatus is disclosed. The apparatus may comprise: means for obtaining, by an encoder device, a first message for encoding, the first message belonging to a message space; means for communicating, with a decoder device, information indicative of a first Hamming code being configured for encoding the first message; means for encoding the first message based on the first Hamming code to obtain a first codeword belonging to a codeword space, wherein the first Hamming code is configured to map adjacent messages of the message space to adjacent codewords of the codeword space; and transmitting a signal comprising the first codeword to the decoder device. The apparatus may comprise means for performing any example embodiment of the method of the ninth aspect.
[0089] According to a fourteenth aspect, an apparatus is disclosed. The apparatus may comprise: means for communicating, by a decoder device with an encoder device, information indicative of a first Hamming code being configured for encoding a first message by the encoder device, wherein the first message belongs to a message space; means for receiving, from the encoder device, a signal comprising a representation of a first codeword belonging to a codeword space and representing the first message; and means for decoding the representation of the first codeword based on the first Hamming code to obtain an estimate of the first message, wherein the first Hamming code is configured to map adjacent messages of the message space to adjacent codewords of the codeword space. The apparatus may comprise means for performing any example embodiment of the method of the tenth aspect.
[0090] According to a fifteenth aspect, a computer program, a computer program product, or a (non-transitory) computer-readable medium is disclosed. The computer program, computer program product, or (non-transitory) computer-readable medium may comprise instructions, which when executed by an apparatus, cause the apparatus at least to perform the method according to the first, second, ninth or tenth aspect, or any example embodiment(s) thereof.
[0091] Example embodiments of the present disclosure can thus provide apparatuses, methods, computer programs, computer program products, or computer readable media for improving various aspects of wireless tethering. Any example embodiment may be combined with one or more other example embodiments. These and other aspects of the present disclosure will be apparent from the example embodiment(s) described below. According to some aspects, there is provided the subject matter of the independent claims. Some further aspects are defined in the dependent claims. DESCRIPTION OF THE DRAWINGS
[0092] The accompanying drawings, which are included to provide a further understanding of the example embodiments and constitute a part of this specification, illustrate example embodiments and, together with the description, help to explain the example embodiments. In the drawings:
[0093] FIG. 1 illustrates an example of a communication network;
[0094] FIG. 2 illustrates an example of an apparatus configured to practice one or more example embodiments;
[0095] FIG. 3 illustrates an example of a transmission model;
[0096] FIG. 4 illustrates an example of a method for determining a re-ordered code with adjacent codewords having a distance equal to a minimum distance of the code;
[0097] FIG. 5 illustrates an example of a pairwise distance matrix of a Hamming code;
[0098] FIG. 6 illustrates an example of a pairwise distance matrix of a re-ordered Hamming code;
[0099] FIG. 7 illustrates an example of a first algorithm for determining a mapping configured to map adjacent messages to adjacent codewords;
[0100] FIG. 8 illustrates an example of a pseudocode for implementing the first algorithm;
[0101] FIG. 9 illustrates an example of a mapping between message bits and codewords for a re-ordered Hamming code (7,4);
[0102] FIG. 10 illustrates an example of a second algorithm for determining a mapping configured to map adjacent messages to adjacent codewords;
[0103] FIG. 11 illustrates an example of a pseudocode for implementing the second algorithm;
[0104] FIG. 12 illustrates an example of a mapping between integer messages and codewords for a re-ordered Hamming code (15,11);
[0105] FIG. 13 illustrates an example of generator polynomials for different Hamming codes;
[0106] FIG. 14 illustrates an example of a generator matrix obtained based on shifted versions of a codeword corresponding to a generator polynomial of a Hamming code;
[0107] FIG. 15 illustrates an example of a privacy loss for a Hamming code and a re-ordered Hamming code;
[0108] FIG. 16 illustrates an example of signalling and operations for communicating information indicative of a code selected for particular message(s);
[0109] FIG. 17 illustrates an example of a method for encoding;
[0110] FIG. 18 illustrates an example of a method for decoding;
[0111] FIG. 19 illustrates an example of another method for encoding; and
[0112] FIG. 20 illustrates an example of another method for decoding.
[0113] Like references are used to designate like parts in the accompanying drawings. DETAILED DESCRIPTION
[0114] Reference will now be made in detail to example embodiments, examples of which are illustrated in the accompanying drawings. The detailed description provided below in connection with the appended drawings is intended as a description of the present examples and is not intended to represent the only forms in which the present example may be constructed or utilized. The description sets forth the functions of the example and the sequence of steps for constructing and operating the example. However, the same or equivalent functions and sequences may be accomplished by different examples.
[0115] In data communications, the physical medium from the transmitter to the receiver may be called the communication channel. The communication channel may corrupt the transmitted signal in a random manner, for example due to additive thermal noise caused by random motion of charged particles in electronic devices and / or other phenomena in the communication channel such as multipath radio propagation. One way to overcome the effect of noise and other adverse effects is to apply error correcting codes (ECC) at the physical layer. For example, a binary information sequence may be provided to a channel encoder, also referred to as an error correcting encoder or forward error correction (FEC) encoder, which may be configured to add redundant data to the message, for example by appending the message with parity bits to form a codeword. The added redundancy enables the receiver to detect and correct up to a certain number of errors incurred by the communication channel.
[0116] The inherent randomness of data communications caused by the thermal noise could be utilized for enhancing privacy. On the one hand, the primary goal of a communication system may be considered to be to transmit information reliably by means of proper error control. By contrast, a goal of privacy-preserving schemes may be to distort the original data, which is opposite to the goal of error correction. Therefore, instead of first trying to make the data private by adding noise and then transmitting the data by a reliable error correction scheme, both targets could be targeted in a unified manner. For example, the error correction code structure in a communications or storage systems could be altered such that errors occurring in the process are not corrected but carefully considered as a way to enhance privacy. Therefore, example embodiments of the present disclosure enable to exploit properties of Hamming codes to improve privacy of data communicated with error correction coding.
[0117] Differential privacy: When sharing information about a group of individuals, differential privacy methods may be used to preserve privacy of individuals by changing the original data such that the resulting data cannot be used to infer information about any individual. Differential privacy may be for example exploited if other anonymization techniques such as ^-anonymity and / -divergence do not guarantee sufficient privacy. Differential privacy may be used for example in order to comply with data privacy regulations such as GDPR (General Data Protection Regulation) and CCPA (California Consumer Privacy Act).
[0118] Two data sets D± and D2 may be consider to be neighbours (adjacent) if they differ in only one data entry (e.g., the data of an individual). Let e >0 . An algorithm / mechanism JI, which may be a random mapping in general, may be said to be e -differential private if Pr(c4(D1) G 5) <e£ Pr(c4(D2) G 5) for all subsets S of image of JI and all adjacent datasets and D2. The smaller the e , the harder it is to distinguish whether Dx or D2 has generated the output of the algorithm, which in turn, makes the presence of an individual less likely to be noticed, since or D2 differ in only one entry. Therefore, by lowering e, the algorithm becomes more privacy-preserving. As a result, e may be called the privacy loss.
[0119] Assuming a random mapping from M = [0: k — 1] (= {0,1,2,..., k — 1}) to itself, and letting pj:i denote the probability that i is mapped to j (i,j G M), it is possible to verify that 1 Vj.i e = In max i,j,k-.\j-k\=lPj,k noting that if for any pair (j, k), pj k = 0, then e = oo. [01 20] Hamming codes: Hamming codes are a particular class of parity check codes characterizable by the (n, k) notation, where n refers to the number of bits in a codeword and k refers to the number bits of the message to be encoded. The encoder may be configured to transform a sequence of k message bits, into a longer sequence of n codeword bits. A group of parity bits may be calculated by the encoder according to an encoding rule, which may by expressed by a generator matrix G of the code. The encoding rule may determine the mathematical structure of the code. In general, a Hamming code may provide a mapping from a message space comprising possible messages (e.g., a set of ^-bit messages) to a codeword space comprising possible codewords (e.g., w-bit codewords).
[0121] Hamming codes may be characterized by generator matrix G and paritycheck matrix H. An encoder device may be configured to encode a message x (message vector) to obtain a respective codeword c by c = xG. Parity-check matrix H enables decoding of the codeword to reconstruct the message. For each k x n generator matrix G, there exists an (n — k) X n parity-check matrix H, such that the rows of G are orthogonal to the rows of H, that is, GHT, where (.)Tis the matrix transpose operation. The n bits of codeword c may be formed by linear combinations of the k message bits. An integer message may be transformed to a bit sequence for subsequent encoding by the Hamming code. As one example, Hamming code (7,4) may be characterized by the following parity-check matrix and generator matrix: 1 H = 0 .1 0 0 1. 1 0 0 .0 0 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 1 1 1 r i 0 1.
[0122] Hamming codes may be characterized by block length n = 2q — 1, number of message bits k = 2q — q — 1, number of parity bits q = n — k, where q >3. Codewords of a Hamming code have a minimum distance of three in the codeword space, meaning that the Hamming distance (number of differing bits) between any pair of codewords is higher than or equal to three. Adjacent codewords (i.e., closest neighbouring codewords) of a Hamming code may therefore have a Hamming distance of three. By contrast, the Hamming distance between adjacent binary messages of the message space may be equal to one, which means that adjacent bit sequences differ on one bit position, (e.g., 4-bit sequences ‘0101’ and ‘0001’ may be considered to be adjacent because they differ only by the second bit). Integer messages may be considered to be adjacent if their distance (difference) is equal to one. For example, integer messages ‘5’ and ‘6’ may be considered to be adjacent.
[0123] Binary symmetric channel'. A binary symmetric channel with crossover probability p, also referred to as BSC(p), is a binary-input binary-output random mapping, in which a bit is flipped with probability p. This is one example of a model for a noisy channels and many problems in communication theory can be reduced to a BSC.
[0124] Counting query: Counting query over tabular data is one type of a query for data analysis. A counting query may be expressed with the form "how many rows in a database have the property A?" For example, each row of the database might correspond to a survey respondent, and the property X might be indicative of whether the respondent answered ‘yes’ to the survey. As another example, each row might correspond to an individual patient, and the property A could be indicative of whether the patient has been tested positive for a certain disease.
[0125] In the context of counting problems, the output of a query may be an integer value, and since two neighbouring datasets will have counts that differ by at most one, the adjacency constraint in the definition of differential privacy maps to the adjacency of integer numbers. In other words, it may be desired to make adjacent numbers indistinguishable as required depending on the choice of e.
[0126] FIG. 1 illustrates an example of a communication network. Communication network 100 may comprise one or more access nodes 120, 122, 124. Access node(s) 120, 122, 124 may be part of a radio access network (RAN) configured to enable a device, represented throughout the description by UE 110, to access communication services provided by core network 140. In connection with communication network 100, access node(s) 120, 122, 124 and core network 140 may be collectively referred to as ‘network’. UE 110 may be referred to as a user device, a terminal apparatus, a terminal device, a mobile device, or the like. UE 110 may be configured to communicate with access node(s) 120, 122, 124 over a radio interface, which may be also referred to as an air interface. Access nodes 120, 122, 124 may be also referred to as network devices. A terminal device may comprise a device to which a connection from a communication network is terminated.
[0127] The radio interface may be configured for example based on the 5G NR (New Radio) standard defined by the 3rd Generation Partnership Project (3GPP), or any future standard or technology (e.g., 6G). Access nodes 120, 122, 124 may for example comprise 5th generation access nodes (gNB). Transmission by an access node to UE 110 may be called downlink (DL) transmission. Transmission by UE 110 to an access node may be called uplink (UL) transmission. UE 110 may be therefore configured to operate as a transmitter for uplink transmissions and as a receiver for downlink transmissions. Access node(s) 120, 122, 124 may be configured to operate as a receiver for uplink transmissions and as a transmitter for downlink transmissions. A transmitter may comprise an encoder for encoding messages. A receiver may comprise a decoder for decoding messages. An encoder or a transmitter may be also referred to as an encoding device. A decoder or a receiver may be also referred to as a decoder device.
[0128] Communication network 100 may comprise a wireless communication network or a mobile communication network, such as for example a cellular communication network. UE 110 may be configured to communicate with access node(s) 120, 122, 124 using one or more logical channels and / or physical channels, for example a control channel such as the physical downlink control channel (PDCCH) or data channels such as the physical downlink shared channel (PDSCH) or the physical uplink shared channel (PUSCH). Shared data channels, e.g., PDSCH and PUSCH, may be shared by multiple UEs. An access node may be also referred to as an access point or a base station.
[0129] Core network 140 may be implemented with various network functions (NF), including, for example, one or more user plane functions (UPF) and one or more access and mobility management functions (AMF). A UPF may be configured to handle user data part of a communication session. A UPF may thus provide an interconnect point between the radio access network and a data network configured to provide application services to UE 110 via core network 140 and the radio access network. For example, a UPF may be configured to handle encapsulation and decapsulation of user plane protocol(s), such as the GPRS (general packet radio service) tunnelling protocol for the user plane (GTP-U). An AMF may be configured to receive connection and session request related data from UE 110 (via an access node). An AMF may be configured to control connection and mobility management in communication network 100.
[0130] An access node 120, 122, 124 may be configured to communicate with UEs via one or more cells. For example, access node 120 may be configured to serve one or more UEs at cell 130. Access node 122 may be configured to serve UEs at cell 132. Access node 124 may be configured to serve UEs at cell 134. A cell may be configured to serve UEs at a certain geographical area at a certain radio frequency, or a range of radio frequencies around a centre frequency of the cell. The frequency of the cell may belong to a particular frequency band, such as for example Frequency Range 1 (FR1, for example 450 MHz to 6 GHz) or Frequency Range 2 (FR2, for example 24.25 GHz to 52.6 GHz), for example as specified by 3GPP. In general, a frequency band may comprise a set of predefined radio frequencies, for example a continuous set of frequencies between lower and upper limits of the frequency band.
[0131] Communication network 100 may be operated based on a protocol stack comprising a plurality of protocol layers. The protocol stack may be arranged based on the open systems interconnection (OSI) model or a layer model of a particular standard. In one example, the protocol stack may comprise a service data adaptation protocol (SDAP) layer, which may receive data from an application layer for transmission. The SDAP layer may be configured to exchange data with the packet data convergence (PDCP) layer. The PDCP layer may be responsible of generation of data bursts comprising one or more data packets, for example based on data obtained from the SDAP layer.
[0132] The PDCP layer may provide data to one or more instances of the radio link control (RLC) layer. For example, PDCP data may be transmitted on one or more RLC transmission legs. Each RLC instance may be associated with corresponding MAC instances of the MAC layer. The MAC layer may provide a mapping between logical channels of upper layer(s) and transport channels of the physical layer, handle multiplexing and demultiplexing of MAC service data units (SDU). Furthermore, the MAC layer may provide error correction functionality based on packet retransmissions, for example according to the hybrid automatic repeat request (HARQ) process. Physically separate transmission legs may be provided by the physical (PHY) layer, also known as Layer 1 (LI). Corresponding protocol stacks may be applied both at access nodes 120, 122, 124 and UE 110.
[0133] In a split access node architecture, part of the protocol layers may be implemented at a central unit (CU) of an access node, e.g., a gNB-CU, which may be configured to handle upper layers of the protocol stack, for example SDAP and PDCP layers. Furthermore, gNB-CU may be configured to handle radio resource control (RRC) operations. A central unit of an access node may be associated with, e.g., configured to control, one or more distributed units (DU) of the access node, e.g., gNB-DU, which may be configured to handle lower layers of the protocol stack, for example RLC, MAC, and LI. Radio unit(s) of the gNB-DU(s) may be configured to transmit / receive data to / from UE(s) over the radio interface. Error correction encoding and / or decoding may be performed at the physical layer, for example by UE 110 or an access node, e.g., a distributed unit thereof. [01 34] Communication network 100 may comprise other network function(s), network device(s), or protocol(s), in addition, or alternative to, those illustrated in FIG. 1. A network device may be configured to implement functionality of one or more network functions. Even though some embodiments have been described in the context of 5G, it is appreciated that embodiments of the present disclosure are not limited to this example network. Example embodiments may be therefore applied in any present or future communication networks. An apparatus, such as for example UE 110 or access node 120, may comprise, or be configured to implement, e.g. by means of software, one or more of the protocol layers described herein.
[0135] It is however noted that example embodiments may be applied in any context, where data is encoded or decoded. For example, transmission of a codeword may comprise transmitting (e.g., writing) the codeword to a memory within the encoder device or to a memory external to the encoder device. Receiving a representation of a codework may comprise receiving (e.g., reading) the codeword from a memory of the decoder device or from a memory external to the decoder device.
[0136] FIG. 2 illustrates an example of an apparatus configured to practice one or more example embodiments. Apparatus 200 may be a device such as UE 110, or an access node 120, 122, 124, an access point, a base station, a radio network node, or a split portion thereof (e.g., a central or distributed unit of an access node), a network device, a terminal device, or in general any apparatus configured to implement functionality described herein. Apparatus 200 may comprise at least one processor 202. The at least one processor 202 may comprise, for example, one or more of various processing devices, such as for example a co-processor, a microprocessor, a controller, a digital signal processor (DSP), a processing circuitry with or without an accompanying DSP, or various other processing devices including integrated circuits such as, for example, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a microcontroller unit (MCU), a hardware accelerator, a special-purpose computer chip, or the like.
[0137] Apparatus 200 may further comprise at least one memory 204. The memory 204 may be configured to store, for example, computer program code 206 or the like, for example operating system software and application software. Memory 204 may comprise one or more volatile memory devices, one or more nonvolatile memory devices, and / or a combination thereof. For example, the memory may be embodied as magnetic storage devices (such as hard disk drives, magnetic tapes, etc.), optical magnetic storage devices, or semiconductor memories (such as mask ROM, PROM (programmable ROM), EPROM (erasable PROM), flash ROM, RAM (random access memory), etc.). Memory 204 is provided as an example of a (non-transitory) computer readable medium. The term “non-transitory,” as used herein, is a limitation of the medium itself (i.e., tangible, not a signal) as opposed to a limitation on data storage persistency (e.g., RAM vs. ROM).
[0138] Apparatus 200 may further comprise a communication interface 208 configured to enable apparatus 200 to transmit and / or receive information. Communication interface 208 may comprise an external communication interface, such as for example a radio interface between UE 110 and access node(s) 120, 122, 124, or a communication interface between a central unit and distributed unit(s) of an access node (e.g., an Fl-U and / or Fl-C interface). Communication interface 208 may comprise one or more radio transmitters or receivers, which may be coupled to one or more antennas or apparatus 200, or be configured to be coupled to one or more antennas external to apparatus 200. Communication interface may, alternatively or additionally, comprise an internal communication interface of apparatus 200 configured, for example, for accessing the at least one memory 204 or an external memory configured to be communicatively or physically coupled to apparatus 200 in order to read or write codewords.
[0139] Apparatus 200 may further comprise other components and / or functions such as user interface 210 comprising at least one input device and / or at least one output device. The input device may take various forms such a keyboard, a touch screen, or one or more embedded control buttons. The output device may for example comprise a display, a speaker, or the like.
[0140] When apparatus 200 is configured to implement some functionality, some component and / or components of apparatus 200, such as for example the at least one processor 202 and / or the at least one memory 204, may be configured to implement this functionality. Furthermore, when the at least one processor 202 is configured to implement some functionality, this functionality may be implemented using program code 206 comprised, for example, in the at least one memory 204.
[0141] The functionality described herein may be performed, at least in part, by one or more computer program product components such as software components. According to an example embodiment, apparatus 200 comprises a processor or processor circuitry, such as for example a microcontroller, configured by the program code 206, when executed, to execute the embodiments of the operations and functionality described herein. Program code 206 is provided as an example of instructions which, when executed by the at least one processor 202, cause performance of apparatus 200.
[0142] Alternatively, or in addition, the functionality described herein can be performed, at least in part, by one or more hardware logic components. For example, and without limitation, illustrative types of hardware logic components that can be used include field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), application-specific standard products (ASSPs), system-on-a-chip systems (SOCs), complex programmable logic devices (CPLDs), graphics processing units (GPUs), or the like.
[0143] Apparatus 200 may be configured to perform, or cause performance of, method(s) described herein or comprise means for performing method(s) described herein. In one example, the means comprises the at least one processor 202, the at least one memory 204 including instructions (e.g., program code 206) configured to, when executed by the at least one processor 202, cause apparatus 200 to perform the method(s). In general, computer program instructions may be executed on means providing generic processing functions. Such means may be embedded for example in a personal computer, a smart phone, a network device, or the like. The method(s) may be thus computer-implemented, for example based algorithm(s) executable by the generic processing functions, an example of which is the at least one processor 202. The means may comprise transmission or reception means, for example one or more radio transmitters or receivers, which may be coupled or be configured to be coupled to one or more antennas. Apparatus 200 may comprise, for example, a network device, for example, an access node, an access point, a base station, or a central / distributed unit thereof. Although apparatus 200 is illustrated as a single device, it is appreciated that, wherever applicable, functions of apparatus 200 may be distributed to a plurality of devices.
[0144] FIG. 3 illustrates an example of a transmission model. Encoder device 310 may receive a message x and generate, for example based on generator matrix G, a codeword c. Codeword c may be communicated over a channel 330, e.g., a radio channel or a computer-readable storage medium, to decoder device 320, which may receive a distorted representation r of transmitted codeword c Note that depending on the application, encoder device 310 and decoder device 320 might be located at a single apparatus or be a single apparatus. The distortions of channel 330 and additive noise may be modelled by a binary error pattern vector e. The distorted representation of the transmitted codeword may be therefore expressed by r = c + e
[0145] The task of decoder device 320 is to determine an estimate x of the transmitted message such that the probability of erroneous decoding is minimized. Decoder device 320 may be for example configured to calculate a syndrome s = HrT and find the index of the column in H that matches s. Finally, decoder device 320 may flip the bit corresponding to this index in the received vector r and determine the resulting vector as the estimate of the transmitted codeword. If s is the all-zero, vector r itself may be regarded as the transmitted codeword.
[0146] FIG. 4 illustrates an example of a method for determining a re-ordered Hamming code with adjacent codewords having a distance equal to a minimum distance (three) of the code. Example embodiments of the present disclosure enable to improve privacy of Hamming codes. When applying the disclosed embodiments to a Hamming code, the resulting re-ordered Hamming code may be also called a Hamming code with privacy (HAPY). The example embodiments enable for example to provide the maximum possible privacy for a given data utility on Hamming codes designed for a BSC. The structure of the code is modified to provide privacy directly by using environmental randomness, for example instead of using a pseudo random generator and separate privacy enhancing mechanisms such as differential privacy. The example embodiments enable to improve privacy with a minor change in encoding and no change in decoding, thus resulting in very low complexity (almost none when compared to, for example, Gray mapping), while performing better than any reference scheme in terms of both coding and privacy. Furthermore, the example embodiments enable to avoid issues arising from sampling from a continuous Gaussian distribution and enable to enhance privacy without affecting the communication rate or the probability of error. Privacy may be therefore enhanced without reduction in utility, e.g., key performance indicators (KPI) of communication network 100. Both theoretical and simulation results are provided for verifying the privacy enhancement.
[0147] Let us consider an example where outputs of a counting query, comprising integer values, are to be sent over a binary symmetric channel with a Hamming code used as the channel encoder. According to one approach, the messages might be first mapped to their equivalent binary bit strings and then multiplied by generator matrix G to produce the corresponding codewords, without considering how exactly the generator matrix maps the messages to codewords. In case of a Hamming code (n, k) the maximum distance of any pair of codewords, is n, which is the code block length. Sending the outputs of the counting query via such Hamming code would come at a great privacy loss that scales with n. It may be therefore desired to search for solutions that enhance the privacy of this transmission with, ideally, little or even no loss in utility.
[0148] In Hamming codes the minimum distance between any two codewords is three, i.e., any two codewords differ in at least three bit positions. In the context of differential privacy, it may be desired to make adjacent datasets less distinguishable. Therefore, mapping adjacent messages to adjacent codewords, thereby making neighbouring codewords to be as close as possible, would improve privacy of the code. Example embodiments of the present disclosure enable to generate Hamming codes where codewords are arranged such that any successive codewords have the minimum distance of the code, which is equal to three for Hamming codes. Methods for obtaining such an arrangement are disclosed with a proof optimality in the sense that a minimum possible privacy loss is provided and the privacy loss does not scale with the block length of the code.
[0149] A method for generating such a code is illustrated in FIG. 4. The method may be performed by encoder device 320, or by another device. The resulting code may be then preconfigured (e.g., hard-coded) at encoder device 310 and decoder device 320, or delivered to encoder device 310 and decoder device 320 after deployment.
[0150] At operation 401, the method may comprise converting an integer message i to its binary equivalent xt with length k , for example by xt = dec2bin(i), Vi G [0:2k - 1], Message Xi may belong to a message space [0:2k -1], which may comprise a range of successive integer values. A distance between adjacent messages may be therefore equal to one. Converting integer message i may be based on a mapping configured to map adjacent messages to adjacent bit sequences. Such mapping may be called the Gray mapping. Adjacent bit sequences may differ from each other at exactly one bit position. A Hamming distance between adjacent bit sequences may be therefore equal to one.
[0151] At operation 402, the method may comprise constructing the Hamming (n, k) codewords, for example by ct = x£G, Vi G [0:2k — 1], Codewords c£ may belong to a codeword space comprising the possible codewords for the messages in the message space. A distance between codewords in the codeword space may vary (e.g., from three to seven). A pair of codewords whose mutual Hamming distance is equal to the minimum distance of the code, e.g., three in the case of Hamming codes, may be considered to be adjacent codewords. Alternatively, message x may comprise a bit sequence directly. In this case the message space may comprises a range of binary values and the Hamming distance between adjacent messages of the message space may be equal to one, as noted above.
[0152] At operation 403, the method may comprise forming the pairwise Hamming distance matrix of codewords, for example by D[C j] = dH(Ct, Cj) , Vi e [0: 2k — 1], An example of the pairwise distance matrix D of Hamming code (7,4) is illustrated in FIG. 5. The first row and column denote the 24 = 16 integer messages from message space 0 to 15. It is observed that the distance between adjacent codewords, corresponding to the circled immediate off-diagonal elements, ranges from three to seven.
[0153] At operation 404, the method may comprise re-ordering rows and columns of the pairwise distance matrix D such that immediate off-diagonal entries of D are equal to three. This is equivalent to making neighbouring codewords have the distance of three. An example of the pairwise distance matrix D of the reordered Hamming code (7,4) is illustrated in FIG. 6. By re-ordering the rows and columns of D the arrangement such that all successive codewords are as close as possible. As a result, the pairwise distance matrix D in the new arrangement has the property that the immediate off-diagonal values are equal to three, which is the minimum distance of Hamming codes. [01 54] At operation 405, the method may comprise reassigning the messages of the message space to codewords of the codeword space according to the new ordering. The resulting re-ordered Hamming code is therefore configured to map adjacent messages of the message space to adjacent codewords of the codeword space. This provides the benefit of improving privacy of the code, as described above. The mapping may be characterized by a rearranged generator matrix G or a corresponding parity-check matrix H. Examples of generator and parity-check matrices configured to map adjacent messages to adjacent codewords are provided below. The generator matrix and / or the parity-check matrix may be stored as a data structure on a computer-readable medium, for example the at least one memory 204 or a portable storage medium.
[0155] Referring back to FIG. 3, encoder device 310 may obtain a message for encoding, for example based on a counting query to set of data, encode the message based on a re-ordered Hamming code (e.g., the generator matrix) obtained with the any of the methods described herein. The code may be therefore a Hamming code that is configured to map adjacent messages of the message space (e.g., any pair of adjacent messages of the message space) to adjacent codewords of the codeword space. Encoder device 310 may further transmit the codeword, for example within a radio signal over channel 310 to decoder device 320 or by writing the codeword on a computer-readable storage medium. Decoder device 320 may receive a (possibly distorted) representation of the codeword and decode it based on the code (e.g., the respective parity-check matrix) to obtain an estimate of the original message. Privacy of communicating error correction encoded data is thereby improved.
[0156] FIG. 7 illustrates an example of a first algorithm (Algorithm 1) for determining a mapping configured to map adjacent messages to adjacent codewords. Consider parity-check matrix H = [A|In_k] (In_k referring to an identity matrix of size n — k) having all the binary columns of length n — k except the all-zero vector. Therefore, A has all the binary columns of length n — k that have at least two ones, and the total number of these columns is k = S”=2k(n ^). 7i — k 7i — k More specifically, there are ( ) columns that have two ones, ( ) columns that have three ones and so on.
[0157] At operation 701, columns of matrix A, also referred to as a non-identity matrix, may be arranged according to an increasing order of their weights. A nonidentity matrix may be a matrix, which is not an identity matrix. Weight of a column or row may refer to the number of ones in the row or column. Hence, the first group of columns, referred to as Group 1, may comprise columns having two ones, and similarly, Group i, where i 6 [3: k — 1] may comprise columns having i + 1 ones. With this arrangement of the columns of A, the corresponding generator matrix may be obtained by G = [Ik|AT]. The first (n ^) rows of G (cf., Group 1) have two ones in their last n — k bits, the next ) rows (cf. Group 2), have three ones in their last — k bits, and so on.
[0158] The code may be therefore characterized by parity-check matrix, which is a concatenation of the non-identity matrix (A) and the identity matrix (In_fc), where columns of the non-identity matrix are ordered according to increasing order of weight, starting from the first column of the non-identity matrix. As noted above, some columns may have the same weight and therefore the ordering may be such that groups of columns having identical weights are ordered in increasing order of weight. This provides the benefit of causing the Hamming code to map adjacent messages to adjacent codewords, which improves privacy.
[0159] At operation 702, the k bits of the message may be partitioned into n — k — 1 successive groups, where Group i corresponds to ( ) bits.
[0160] At operation 703, message vector x of k bits may be set to zero (x = 0).
[0161] At operation 704, a mapping may be determined between messages and codewords. The encoding may be initiated by Gray coding of Group n — k — 1 based on the following: i) for any fixed bits corresponding to Group i, perform a full loop of Gray coding until all combinations are written, and ii) for any bit flip in group i, select and flip a particular bit in group i — 1.
[0162] It may be desired to arrange the message bits (x) such that their corresponding codewords (xG) are arranged with neighboring distance of three, or in general the minimum distance of the code in question. If the code is systematic, the first k bits of the codewords match their corresponding message bits. As a Yt — k result, it is observed that if the first ( ^ ) bits of the message are incremented according to Gray codes, that is adjacent binary vectors differing by one bit, and the remaining k — ( ) its are kept fixed, their corresponding codewords xG have the neighboring distance of exactly three. The reason is that since two successive x’s differ in only one bit position, which is one of the first ( 2 ) positions, the first k bits of their corresponding codewords (xG’s), being the same as the message bits, differ only in that position. Furthermore, since the differing bit corresponds to one of first ( ) rows of G, which has only two ones in its last n — k bits, the last n — k bits of these successive codewords differ only in two positions. As a result, having one different bit in the first k positions, and two different bits in the lastn — k positions, these two adjacent codewords have the Hamming distance of three.
[0163] It may not be however possible to write all the message bits according to Gray codes and obtain adjacent codewords with distance three, since any single change in a message bit corresponding to Group i of rows may result in a change in i + 2 positions of the corresponding codeword; one change in the first k bits and i + 1 changes in the last n — k bits of the corresponding codeword, since rows in Group i have i + 1 ones in their last n — k bits. This would violate the neighbouring distance of three if i >2. This issue may be however solved as follows.
[0164] The message bits may be initiated with the all-zero vector (cf. operation 703). Keeping the last fc — (n bits fixed, e.g., zero, the first (n bits, corresponding to Group 1, may be incremented according to Gray encoding. Once all the combinations are exhausted, one bit in Group 2 may be flipped, e.g., one of ti — k the bits corresponding to the ( ) rows of Group 2. With this bit flip, the resulting codeword has the Hamming distance of four with its predecessor, which is not desirable. This may be remedied by simultaneously flipping a bit corresponding to a row in Group 1 that has a Hamming distance of two from the row in Group 2 whose corresponding bit was flipped. With this modification, the new message bits is no longer according to Gray coding, since it is a result of two bit flips in its previous message bits. However, the corresponding codewords differ in two positions in the first k bits, and only one position in the remaining n — k bits, which still results in the overall distance of three.
[0165] The last k — ( ) bits of the message may be then fixed and the Gray encoding may be repeated for the first (n bits until all combinations in Group 1 are covered. Again, a bit in Group 2 and a corresponding bit in Group 1 may be flipped. This procedure may be repeated until all the combinations in Group 2 are exhausted. At this point, a bit in Group 3 and a corresponding bit in Group 2 may be flipped. The whole scenario may be then repeated again. This procedure may be continued until all the 2k message bits have been written.
[0166] In general, whenever all the combinations in Group i have been written, a bit in group i + 1 and a corresponding bit in Group i may be flipped. The procedure may then continue by exhausting again the combinations in Group i. Finally, since at each creation of a codeword, the neighbouring distance is three and all the message bits have been considered, the desired mapping between messages and codewords has been obtained.
[0167] Hence, Algorithm 1 may be characterized as follows: - for any fixed bits corresponding to group i,a full loop of Gray encoding may be performed for the bits in group i — 1 until all combinations have been written (i E [2:n - k - 1]), and - for any bit flip in Group i, a particular bit in group i — 1 is flipped (i E [2:n — k - 1]). The procedure may be run in a backward manner, i.e., initiating with Gray coding of Group n — k — 1, which comprises the last message bit corresponding to the all-one column of the parity-check matrix.
[0168] FIG. 8 illustrates an example of a pseudocode for implementing the first algorithm (Algorithm 1). Notation xgi denotes the message bits corresponding to Group i. The function Grayupdate(-) on lines 14 and 21 takes a binary vector as its input and outputs the successive binary vector according to Gray encoding, which is in Hamming distance one from its input. In step 15, e* is a vector which has a one in the position of the bit to be flipped in group i — 1 in response to a bit flip in Group i, and zeros in other positions.
[0169] FIG. 9 illustrates an example of a mapping between message bits and codewords. Table 1 of FIG. 9 illustrates an example of a mapping between message bits and codewords for the re-ordered Hamming code (7,4) resulting from Algorithm 1. In this example, the parity-check and generator matrices characterizing the re-ordered Hamming code (7,4) comprise: ro H= 1 Ll i o o o o 1 r 0 10 0 10 1 0 0 10 110 .0 0 0 1 1 1 1. In this example, the first three (= (”2k) = (2)) columns of H, which have two ones, form Group 1, and the fourth column forms Group 2. Similarly, Group 1 of rows in G are the first three rows, and Group 2 is the last row.
[0170] Algorithm 1 may be initiated with all-zero message bits, first considering the bits corresponding to the last group, here, the last bit of the message. Currently it is zero, and fixing it, we write a full loop of Gray coding in Group 1 to exhaust all the possible combinations in the first three bits. This results in eight messages as shown in Table 1. Now is the time to flip the last bit. It is observed that the Hamming distance of the last row of G with any row in Group 1 is equal to two. Therefore, any of these rows in Group 1 can be selected, and in this example the third row has been selected. Hence, the corresponding bit, i.e., the third bit is flipped at the same time of flipping the last bit. This is shown in Table 1 by underlining. Again, for the new value of the last bit, the procedure is proceeded to exhaust all the possible combinations of the first three bits according to Gray encoding. As expected, on the right column in Table 1, all the codewords are arranged such that any two neighbours, also referred to as successive or adjacent codewords, have the Hamming distance of three. [01 71] FIG. 10 illustrates an example of a second algorithm (Algorithm 2) for determining a mapping configured to map adjacent messages to adjacent codewords. Algorithm 2 is based on the following lemma. [01 72] Lemma 1. In Hamming code (n, k), there exists a set of k codewords with weight three that form a basis for the null space of the parity check matrix H. In other words, any codeword can be written as a linear combination of these k codewords.
[0173] It is therefore possible to construct a generator matrix G, whose rows are these k linearly independent codewords with the message bits being Gray encoded. Since the adjacent message bits differ in exactly one position, their corresponding codewords differ in addition / subtraction of one row of G, which has the weight of three. As a result, the adjacent codewords have the minimum distance of three. Algorithm 2 may be used to find k linearly independent codewords of weight three.
[0174] At operation 1001, columns of A in H = [A|I] may be arranged according to decreasing order of their weights, for example starting with the all-one vector. As an example, foi (n, k = (15, 11), we get 1 0 1 1 1 0 0 0 1 1 1 1 0 0 0’ u — 1 1 0 1 1 0 1 1 0 0 1 0 1 0 0 n — 1 1 1 0 1 1 0 1 0 1 0 0 0 1 0 .1 1 1 1 0 1 1 0 1 0 0 0 0 0 1.
[0175] The code may be therefore characterized by parity-check matrix, which is a concatenation of the non-identity matrix (A) and the identity matrix (I), where columns of the non-identity matrix are ordered according to decreasing order of weight, starting from the first column of the non-identity matrix. As noted above, some columns may have the same weight and therefore the ordering may be such that groups of columns having identical weights are ordered in decreasing order of weight. This provides the benefit of causing the Hamming code to map adjacent messages to adjacent codewords.
[0176] At operation 1002, for each column of i of H, the n(i) denoting the decimal value of column i and i (‘ i hat’) denoting the position of the most significant bit (MSB) of column i may be determined.
[0177] At operation 1003, generator matrix G may be determined based on assigning, for each row i ones in three positions and zeros in other position. To obtain k linearly independent codewords of weight three, firstly, a one may be assigned in position i of codeword i, i G [1: k] and assign zeros in positions [1: i — 1] for i G [2: k]. This zero indentation provides the benefit of linear independence, since no codeword can be a summation of a subset the remaining k - Icodewords. Let n: [1: n] -> [1: n] be a one-to-one mapping from the column index of H to its decimal value. For the example at hand, the first column is [1 1 1 1] , and hence tt(1) = 15. The second column is [0 1 1 1] , and its decimal equivalent is 7, hence, tt(2) = 7, and so on.
[0178] For i G [1: k], let i ('i hat’) denote the position of the most significant bit of column i. More rigorously, i = max j. 2i-A<TT(i)
[0179] For codeword i (i £ [1: k], assign ones in positions n — i + 1 and 7T-1(7r(i) — 21-1) and assign zeros in other positions. In this example, we have jt([1: 15]) = [15 7 11 13 14 3 5 6 9 10 12 8 4 2 l],and [1:A 11] = [4 3 4 4 2 3 3 4 4 4], resulting from application of the ‘hat’ operator configured to output the MSB position.
[0180] Hence, the generator matrix formed by these k(= 11) linearly independent codewords of weight three is 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 G = 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 . 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 -0 0 0 0 0 0 0 0 0 0 1 1 1 0 0
[0181] At operation 1004, codewords for encoded Gray messages may be determined by multiplying the binary message vector by the generator matrix (xG).
[0182] A pseudocode for implementing Algorithm 2 is illustrated in FIG. 11 and the resulting mapping between some messages and respective codewords has been illustrated in FIG. 12. It is again observed that the Hamming distance between adjacent codewords is three, that is, the minimum distance of Hamming codes.
[0183] FIG. 13 illustrates an example of generator polynomials for different Hamming codes. A third algorithm (Algorithm 3) may be used for determining the generator matrix for Hamming codes with privacy.
[0184] For a Hamming code of a particular size (n, k), the generator polynomial may be as provided in FIG. 13. For example, for Hamming code (15, 11), the generator polynomial may be x4 + % + 1, corresponding to a binary representation of[l 0 0 1 1], In the binary representation, each bit position may indicate weight of a respective term of the generator polynomial, starting from the highest order term. In general, an m-th element of the binary representation of an A7-th order generator polynomial (m G [0: M]) may represent presence (value “1”) or absence (value “0”) of the (M — m)-th order term in the generator polynomial.
[0185] Algorithm 3 is based on using the generator polynomial of the Hamming code and shifting it incrementally to the right. In this case, rows of the generator matrix G comprise shifted versions of a binary representation of the respective generator polynomial of the Hamming code. For example, the first row of the generator matrix G may comprise the binary representation of the generator polynomial, starting from the first element of the first row. The second row of the generator matrix G may comprise the binary representation of the generator polynomial, starting from the second element of the second row, and so on. In general, an z-th row of the generator matrix may comprise the binary representation of the generator polynomial starting from the z-th element of the z-th row. Other elements of the generator matrix may comprise zeros. Algorithm 3 exploits the generator polynomial of the code to determine the mapping between messages and codewords such that adjacent messages are mapped to adjacent codewords. An example of a re-ordered generator matrix for Hamming code (7, 4), obtained based on shifted versions of a binary representation of the respective generator polynomial, is illustrated in FIG. 14. It is observed that shifted versions of bit sequence [10 0 11] appear at each row of the generator matrix, as illustrated by the dotted rectangles.
[0186] FIG. 15 illustrates an example of a privacy loss of a Hamming code and a re-ordered Hamming code. The privacy loss, i.e., e, in the transmission of the messages over a BSC(p) via normal Hamming codes (n, k) can be as large as A z ... 1-P . n - (n - l)p p (n — iiln--n------------- in _ Yyp where the subscript “w” stands for the worst case scenario, in which, two neighbouring codewords have the Hamming distance of n, i.e., they differ in every bit position.
[0187] The re-ordered Hamming code results in a privacy loss given as . 4„ i’P , (l-p)n + p e = 3 In--In-----------------=---5—, P (1 - p)n + p - 3 which is much lower than cw, especially when n is large. FIG. 15 illustrates the privacy loss for Hamming code (black circles) and a re-ordered Hamming code (white circles) for different code block lengths n. It is observed that re-ordering the Hamming code, as provided by the example embodiments of the present disclosure reduces the privacy loss, especially with high code block lengths.
[0188] With normal Hamming codes the privacy loss scales with the code block ■J___ length, while re-ordering the code causes the privacy loss to saturate at 3 In which is the first term on the right-hand side of the definition of e*. Since the nature of the re-ordered Hamming code a careful rearrangement of the codewords, no loss in probability of error or communication occurs. Therefore, there is no reduction in utility.
[0189] As an example with Hamming code (7,4) over BSC(O.l), a normal Hamming code, re-ordered Hamming code, and the combination of privatization and Hamming coding have the following error probabilities and privacy losses: Code rate Error probability Privacy loss Normal Hamming 4 7 0.1497 11.8 Re-ordered Hamming 4 7 0.1497 6.05 Privatizing &Normal Hamming 4 7 0.1534 6.05
[0190] Therefore, the re-ordering the Hamming code enables to reduce the privacy loss from 11.8 to 6.05 without altering the code rate or the probability of error. Privatizing the data first and then sending the data over the BSC(O.l) by normal Hamming coding results in the same privacy at the cost of increased error probability. In this example, a differential parity mechanism is used for mapping integers [0:15] to itself such that e = 6.05 is met. Among alternative ways of achieving this, a method resulting in the minimum probability of error was selected. Even though the same privacy loss is achieved, this comes with the additional drawback of increased implementation cost and complexity due to the privatization mechanism added prior to channel coding.
[0191] It is however possible to combine separate privatization step with the reordered Hamming code. In this case, the re-ordered Hamming code may be used as an add-on to the approach of separately privatizing and channel coding the data. For example, encoder device 310 may be configured to privatize the message based on a differential privacy algorithm before the encoding of the message. This enables to further decrease the probability of error, which is an improvement in the utility. Therefore, the re-ordered code, either on its own or in conjunction with other mechanisms may be used to improve data privacy.
[0192] FIG. 16 illustrates an example of signalling and operations for communicating information indicative of a code selected for particular message(s). The procedure of FIG. 16 may be used for synchronizing encoding and decoding between devices such that same code is used both for encoding and decoding at a given time. This enables to turn off and on the privacy protective nature of the reordered Hamming code.
[0193] At operation 1601, decoder device 320, which may be the receiver for the data to be encoded (e.g., a server), may transmit a request for data of a counting query to encoder device 310. Encoder device 310 may be a transmitter for the data to be encoded (e.g., a data holder device). Encoder device 310 and decoder device 320 may be initially (e.g., by a default configuration) configured to encode and decode data with another error correction code, for example any other linear block code or a convolutional code. In this example, a normal Hamming code is used as an example of such other code, also referred to as a second code It is however understood that the second code may be any suitable error correction code. Normal Hamming code may refer to a Hamming code that is not re-ordered according to the embodiments described above, for example a Hamming code which is configured to map at least one pair of adjacent messages of the message space to non-adjacent codewords of the codeword space.
[0194] At operation 1602, encoder device 310 may determine to configure the re-ordered Hamming code, also referred to as the first Hamming code, for encoding message(s). Encoder device 310 may determine to configure the re-ordered Hamming code to be used, response to determining that privacy protection is needed, for example when the set of data associated with the counting query is determined to comprise privacy protected data. Encoder device 310 may further transmit information indicative of the re-ordered Hamming code being configured for encoding the message(s).
[0195] At operation 1603, decoder device 320 may transmit an acknowledgement of the use of the re-ordered Hamming code to encoder device 310. The acknowledgement enables encoder device to be informed about the decoder device 320 being ready for decoding messages with the re-ordered Hamming code.
[0196] At operation 1604, encoder device 310 may initiate encoding of message(s) with the re-ordered Hamming code, for example in response to receiving the acknowledgement of operation 1603. Encoder device 310 may obtain the message(s) based on the counting query to the set of data. It is however possible that decoder device 320 transmits multiple requests for the data and encoder device 310 obtains the messages based on these requests.
[0197] At operation 1605, encoder device 310 may transmit signal(s) comprising message(s) encoded with the Hamming re-ordered code to decoder device 320. The encoded message(s) may comprise the codeword(s) to which respective message(s) are mapped by the re-ordered Hamming code. The codeword(s) therefore represent the message(s). The message(s) encoded and transmitted at operations 1604 and 1605 and the corresponding codeword(s) may be referred to as first message(s) and first codeword(s), respectively. Decoder device 1606 may receive (possibly corrupted) representation(s) of the codeword(s).
[0198] At operation 1606, decoder device 320 may decode the received representation(s) of the codeword(s) based on the re-ordered Hamming code, e.g., the parity-check matrix associated therewith.
[0199] At operation 1607, encoder device 310 may determine to configure the normal Hamming code, or a second code in general, for encoding message(s). Encoder device 310 may determine to (re)configure the normal Hamming code, in response to determining that privacy protection is not needed, for example when another counting query is requested for another set of data determined not to comprise privacy protected data. Encoder device 310 may transmit information indicative of the normal Hamming code being configured for encoding the message(s). This indication may be provided for example as an indication of terminating use of the re-ordered Hamming code, as illustrated in FIG. 16.
[0200] At operation 1608, decoder device 320 may transmit an acknowledgement of the use of the normal Hamming code to encoder device 310. The acknowledgement enables encoder device 310 to be informed about the decoder device 320 being ready for decoding messages with the normal Hamming code.
[0201] At operation 1609, encoder device 310 may initiate encoding of message(s) with the normal Hamming code, for example in response to receiving the acknowledgement of operation 160. Encoder device 310 may obtain the message(s) based on the counting query to the set of data. It is however possible that decoder device 320 transmits multiple requests for the data and encoder device 310 obtains the messages based on these requests. In general, encoder device 310 may alternatively obtain data for encoding from any suitable data source, with or without a counting query.
[0202] At operation 1610, encoder device 310 may transmit signal(s) comprising message(s) encoded with the normal Hamming code to decoder device 320. The encoded message(s) may comprise the codeword(s) to which respective message(s) are mapped by the normal Hamming code. The codeword(s) therefore represent the message(s). The message(s) encoded and transmitted at operations 1609 and 1610 and the corresponding codeword(s) may be referred to as second message(s) and second codeword(s), respectively. Decoder device 1606 may receive (possibly corrupted) representation(s) of these codeword(s).
[0203] At operation 1606, decoder device 320 may decode the representation(s) of the codeword(s) received at operation 1610 based on the normal Hamming code, e.g., the parity-check matrix associated therewith.
[0204] Even though a particular sequence of operations is illustrated in FIG. 16 it is possible to perform the operations in different order or partially reverse the roles of encoder device 310 and decoder device 320. For example, decoder device 320 might be responsible of configuration of the appropriate code. In this case, decoder device 320 might be configured to transmit the indication of operation 1602 to encoder device 310. And, encoder device 310 might be configured to acknowledge the use of the re-ordered Hamming code, or the second code in general, at operation 1603 to decoder device 320. Similarly, decoder device 320 might be configured to transmit the indication of operation 1607 to encoder device 310. Encoder device 310 might be configured to acknowledge the use of the normal Hamming code, or the second code in general, at operation 1603 to decoder device 320.
[0205] Mathematical proof of optimality may be provided based on Lemmas 2 and 3. Let dH(.,.) denote the Hamming distance between two binary codewords, i.e., the number of positions at which they differ.
[0206] Lemma 2\ In the transmission of Hamming (n, k) codewords over a BSC(p), the probability of decoding representation c' when codeword c is transmitted may be described by Pr{c'|c} = pd(l — p)n-d (1 + ^-d + ^^(n — d)}, Vc, c' e C, where d = dH(c, c') and C denotes the set of all pk codewords (codeword space).
[0207] Proof. Codeword c' decoded at the decoder device if and only if the received vector r satisfies dH(r, c') <1. Sine c and c'differ in d positions, we have dH(r, c') = 0, if and only if all these d differing bits are flipped, and the remaining n — d similar bits remain unchanged during the transmission of c, which occurs with the probability of pd(l — py-f For the case dH(r, c') = 1, there are two possibilities: f) one of these d differing bits and the n — d similar bits remain unchanged and d — 1 differing bits are flipped during the transmission of c, which occurs with probability dylf — py-d+f Or ii) all the d differing bits and one of the (n — d) similar bits are flipped and the remaining (n — d — 1) similar bits remain unchanged, which has the probability of (n — d)pd+1(l — py-^1
[0208] Hence, the probability of the event dH(r, c') <lis Pr{c'|c} = pd (1 - p}n-d + dp^fl - py-M+(n - d)pMfl - py-d-' . ' A ( 1 - P P \ = pd (1 — p)n d (1 -I---d +-----(n — d)). ■ \ p 1 — p /
[0209] For fixed n, p, let / (d) denote the transition probability Pr{c'|c] as a function of d.
[0210] Lemma 3: Function / (d) is strictly decreasing in d and for a give positive integer m, -y—........- is strictly decreasing in d.
[0211] Proof. The first part is proved by showing / (d + 1) < / (d) , or alternatively <1. For simplicity of notation, let a = * 2p, and b = 1 + ' fW E J p(i-p) —. Hence we have / (d) = pd(l — p)n-d(ad + b), and we can write 1—p f(d + 1) p a(d + 1) + b f(d) 1 — p ad + b 1 — p V ad + b' l-p(1 + = 1, where the third row follows from the fact that a^+b, being decreasing in d, is maximum at d = 0, and the fourth row follows from having n >1 (more precisely, we have n >3). Hence, f(d) is strictly decreasing in d.
[0212] The second part can be proved by showing >0- We have d f(d) / p \m d a(d—m)+b ddf(d+m) \l-p) dd ad + b / p \m ma2 \1 — p) (ad + b)2 > 0. [021 3] Let Pij = Pr{c'|c}, Vij S M , where M = [0: 2k — 1] denotes the message set (message space). It can be readily verified that the privacy loss e in the transmission of the messages over a BSC(p) via Hamming codes is 1 bl 6 — In max i,j,keM'. p | i-k\ = 1 which can be as large as ew 1-p n — (n — l)p = (n - 1) In--In----;-----r—, p 1 + (n — l)p where n denotes the code block length and the subscript w stands for the worst case scenario, in which, two neighbouring codewords have the Hamming distance of n, i.e., they differ in every bit position. In the context of differential privacy, the goal of a privacy-preserving mapping may be to make the adjacent datasets as indistinguishable as possible. Therefore, for transmission of the outputs of a counting query via Hamming codes, a heuristic approach to enhance the privacy, i.e., reducing the privacy loss, would be to make the adjacent codewords as close as possible in terms of Hamming distance. Codewords may be therefore arranged such that any two neighbouring codewords have the distance of three. And, since this may be implemented by a permutation of the input messages, it does not affect the probability of error. Theorem T. The minimum privacy loss in transmission of the outputs of a counting query over a BSC(p) via Hamming code ( / / , k) is 1-p (l-p)n + p e = 3 In------5—, p (1 - p)n + p - 3 and it may be achieved if and only if the codewords are arranged such that dH(ci, Q+1) = 3, Vt E [0: 2fc — 2]. Based on Lemmas 2 and 3 it is possible to proof Theorem 1 by showing that: 1) For any arrangement in which any two adjacent codewords have the Hamming distance of three, the privacy loss is as defined for e* above. 2) For any arrangement in which there exist two neighbouring codewords that have a Hamming distance greater than three, the privacy loss is strictly greater than e*. 3) It is possible to construct an arrangement of codewords with minimum neighbouring distance of three.
[0214] FIG. 17 illustrates an example of a method for encoding. The method may be performed by an encoder, e.g., encoder device 310, UE 110, access node 120, or by a control apparatus configured to control the functioning thereof, when installed therein.
[0215] At operation 1701, the method may comprise obtaining a message for encoding, the message belonging to a message space.
[0216] At operation 1702, the method may comprise encoding the message based on a Hamming code to obtain a codeword belonging to a codeword space, wherein the Hamming code is configured to map adjacent messages of the message space to adjacent codewords of the codeword space.
[0217] At operation 1703, the method may comprise transmitting a signal comprising the codeword.
[0218] FIG. 18 illustrates an example of a method for decoding. The method may be performed by a decoder, e.g., decoder device 320, UE 110, access node 120, or by a control apparatus configured to control the functioning thereof, when installed therein.
[0219] At operation 1801, the method may comprise receiving a signal comprising a representation of a codeword belonging to a codeword space.
[0220] At operation 1802, the method may comprise decoding the representation of the codeword based on a Hamming code to obtain an estimate of a message belonging to a message space, wherein the Hamming code is configured to map adjacent messages of the message space to adjacent codewords of the codeword space.
[0221] FIG. 19 illustrates an example of another method for encoding. The method may be performed by an encoder, e.g., encoder device 310, UE 110, access node 120, or by a control apparatus configured to control the functioning thereof, when installed therein.
[0222] At operation 1901, the method may comprise obtaining, by an encoder device, a first message for encoding, the first message belonging to a message space.
[0223] At operation 1902, the method may comprise communicating, with a decoder device, information indicative of a first Hamming code being configured for encoding the first message.
[0224] At operation 1903, the method may comprise encoding the first message based on the first Hamming code to obtain a first codeword belonging to a codeword space, wherein the first Hamming code is configured to map adjacent messages of the message space to adjacent codewords of the codeword space.
[0225] At operation 1904, the method may comprise transmitting a signal comprising the first codeword to the decoder device.
[0226] FIG. 20 illustrates an example of another method for decoding. The method may be performed by a decoder, e.g., decoder device 320, UE 110, access node 120, or by a control apparatus configured to control the functioning thereof, when installed therein.
[0227] At operation 2001, the method may comprise communicating, by a decoder device with an encoder device, information indicative of a first Hamming code being configured for encoding a first message by the encoder device, wherein the first message belongs to a message space.
[0228] At operation 2002, the method may comprise receiving, from the encoder device, a signal comprising a representation of a first codeword belonging to a codeword space and representing the first message.
[0229] At operation 2003, the method may comprise decoding the representation of the first codeword based on the first Hamming code to obtain an estimate of the first message, wherein the first Hamming code is configured to map adjacent messages of the message space to adjacent codewords of the codeword space.
[0230] Further features of the methods directly result for example from functionality of encoder 310, decoder 320, UE 110, access node(s) 120, 122, 124, as described throughout the description, claims, and drawings, and are therefore not repeated here. An apparatus, for example a device such as encoder 310, decoder 320, UE 110, or access node(s) 120, 122, 124, may be configured to perform or cause performance of any aspect of the method(s) described herein. Further, a computer program or a computer program product may comprise instructions for causing, when executed by an apparatus, the apparatus to perform any aspect of the method(s) described herein. Further, an apparatus may comprise means for performing any aspect of the method(s) described herein. According to an example embodiment, the means comprises at least one processor; and at least one memory storing instructions that, when executed by the at least one processor, cause the apparatus at least to perform any aspect of the method(s).
[0231] Any range or device value given herein may be extended or altered without losing the effect sought. Also, any embodiment may be combined with another embodiment unless explicitly disallowed.
[0232] Although the subject matter has been described in language specific to structural features and / or acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as examples of implementing the claims and other equivalent features and acts are intended to be within the scope of the claims.
[0233] It will be understood that the benefits and advantages described above may relate to one embodiment or may relate to several embodiments. The embodiments are not limited to those that solve any or all of the stated problems or those that have any or all of the stated benefits and advantages. It will further be understood that reference to 'an' item may refer to one or more of those items.
[0234] The steps or operations of the methods described herein may be carried out in any suitable order, or simultaneously where appropriate.
[0235] Additionally, individual blocks may be deleted from any of the methods without departing from the scope of the subject matter described herein. Aspects of any of the example embodiments described above may be combined with aspects of any of the other example embodiments described to form further example embodiments without losing the effect sought.
[0236] The term 'comprising' is used herein to mean including the method, blocks, or elements identified, but that such blocks or elements do not comprise an exclusive list and a method or apparatus may contain additional blocks or elements.
[0237] As used herein, “at least one of the following: ” and “at least one of ” and similar wording, where the list of two or more elements are joined by “and” or “or”, mean at least any one of the elements, or at least any two or more of the elements, or at least all the elements. Expression “or” may be understood as a non-exclusive “or” and therefore a list or two or more elements indicated to be mutually optional by the expression ”or” means at least any one of the elements, or at least any two or more of the elements, or at least all the elements.
[0238] Although subjects may be referred to as ‘first’ or ‘second’ subjects, this does not necessarily indicate any order or importance of the subjects. Instead, such attributes may be used solely for the purpose of making a difference between subjects.
[0239] As used in this application, the term ‘circuitry’ may refer to one or more or all of the following: (a) hardware-only circuit implementations (such as implementations in only analog and / or digital circuitry) and (b) combinations of hardware circuits and software, such as (as applicable):(i) a combination of analog and / or digital hardware circuit(s) with software / firmware and (ii) any portions of hardware processor(s) with software (including digital signal processors)), software, and memory(ies) that work together to cause an apparatus, such as a mobile phone or server, to perform various functions) and (c) hardware circuit(s) and or processor(s), such as a microprocessor s) or a portion of a microprocessors), that requires software (e.g., firmware) for operation, but the software may not be present when it is not needed for operation. This definition of circuitry applies to all uses of this term in this application, including in any claims.
[0240] As a further example, as used in this application, the term circuitry also covers an implementation of merely a hardware circuit or processor (or multiple processors) or portion of a hardware circuit or processor and its (or their) accompanying software and / or firmware. The term circuitry also covers, for example and if applicable to the particular claim element, a baseband integrated circuit or processor integrated circuit for a mobile device or a similar integrated circuit in server, a cellular network device, or other computing or network device.
[0241] It will be understood that the above description is given by way of example only and that various modifications may be made by those skilled in the art. The above specification, examples and data provide a complete description of the structure and use of exemplary embodiments. Although various embodiments have been described above with a certain degree of particularity, or with reference to one or more individual embodiments, those skilled in the art could make numerous alterations to the disclosed embodiments without departing from scope of this specification.
Claims
1. A method, comprising:obtaining a message for encoding, the message belonging to a message space;encoding the message based on a Hamming code to obtain a codeword belonging to a codeword space, wherein the Hamming code is configured to map adjacent messages of the message space to adjacent codewords of the codeword space; andtransmitting a signal comprising the codeword.
2. The method according to claim 1, wherein the message comprises an integer, and wherein a distance between adjacent integers of the message space is equal to one.
3. The method according to claim 2, further comprising:converting the integer to a bit sequence based on a mapping configured to map adjacent integers of the message space to adjacent bit sequences, wherein a Hamming distance between adjacent bit sequences is equal to one; andencoding the bit sequence as the message.
4. The method according to claim 1, wherein the message comprises a bit sequence, and wherein a Hamming distance between adjacent bit sequences of the message space is equal to one.
5. The method according to any of claims 1 to 4, wherein the codeword space comprises bit sequences, and wherein a Hamming distance between the adjacent codewords is equal to a minimum distance of the Hamming code.
6. The method according to any of claims 1 to 5, wherein the Hamming code is characterized by a parity-check matrix comprising a concatenation of a non-identity matrix and an identity matrix, and wherein columns of the non-identity matrix are ordered according to increasing or decreasing weight.
7. The method according to any of claims 1 to 5, wherein the Hamming code is characterized by a generator matrix, wherein rows of the generator matrix comprise shifted versions of a binary representation of a generator polynomial of the Hamming code.
8. The method according to any of claims 1 to 7, further comprising: obtaining the message based on a counting query to a set of data.
9. The method according to any of claims 1 to 8, further comprising: privatizing the message based on a differential privacy algorithm before the encoding of the message.
10. A method, comprising:receiving a signal comprising a representation of a codeword belonging to a codeword space; anddecoding the representation of the codeword based on a Hamming code to obtain an estimate of a message belonging to a message space, wherein the Hamming code is configured to map adjacent messages of the message space to adjacent codewords of the codeword space.
11. The method according to claim 10, wherein the message comprises an integer, and wherein a distance between adjacent integers of the message space is equal to one.
12. The method according to claim 10, wherein the message comprises a bit sequence, and wherein a Hamming distance between adjacent bit sequences of the message space is equal to one.
13. The method according to any of claims 10 to 12, wherein the codeword space comprises bit sequences, and wherein a Hamming distance between the adjacent codewords is equal to a minimum distance of the Hamming code.
14. The method according to any of claims 10 to 13, wherein the Hamming code is characterized by a parity-check matrix comprising a concatenation of a nonidentity matrix and an identity matrix, and wherein columns of the non-identity matrix are ordered according to increasing or decreasing weight.
15. The method according to any of claims 10 to 13, wherein the Hamming code is characterized by a generator matrix, wherein rows of the generator matrix comprise shifted versions of a binary representation of a generator polynomial of the Hamming code.
16. An apparatus comprising means for performing the method according to any of claims 1 to 15.
17. A computer program comprising instructions, which, when executed by an apparatus, cause the apparatus at least to performing the method according to any of claims 1 to 15.
18. A data structure embodied on computer-readable medium, the data structure comprising:a generator matrix of a Hamming code configured to map adj acent messages of a message space to adjacent codewords of a codeword space.
19. A data structure embodied on computer-readable medium, the data structure comprising:a parity-check matrix configured for decoding a Hamming code, wherein the Hamming code is configured to map adjacent messages of a message space to adjacent codewords of a codeword space.
Citation Information
Patent Citations
Servo decoder for decoding an error correcting servo code recorded on a disc storage medium
US6005727A
Device and method for detecting and correcting errors in a data stream
US7493550B1