WO2018107949A1 - 一种基于模运算的全同态加密处理方法 - Google Patents

一种基于模运算的全同态加密处理方法 Download PDF

Info

Publication number
WO2018107949A1
WO2018107949A1 PCT/CN2017/112482 CN2017112482W WO2018107949A1 WO 2018107949 A1 WO2018107949 A1 WO 2018107949A1 CN 2017112482 W CN2017112482 W CN 2017112482W WO 2018107949 A1 WO2018107949 A1 WO 2018107949A1
Authority
WO
WIPO (PCT)
Prior art keywords
ciphertext
plaintext
encryption
bit
modulo
Prior art date
Application number
PCT/CN2017/112482
Other languages
English (en)
French (fr)
Inventor
胡和平
廖云峰
Original Assignee
深圳市全同态科技有限公司
胡和平
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 深圳市全同态科技有限公司, 胡和平 filed Critical 深圳市全同态科技有限公司
Priority to EP17880833.3A priority Critical patent/EP3531611A4/en
Priority to JP2019514179A priority patent/JP6682041B2/ja
Publication of WO2018107949A1 publication Critical patent/WO2018107949A1/zh
Priority to US16/106,029 priority patent/US10868666B2/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise

Definitions

  • the present invention belongs to the field of information security, and more specifically, to a full homomorphic encryption processing method based on a modulo operation.
  • the existing modulo-based full homomorphic encryption processing methods have some problems that cannot be ignored: First, there is a problem that the ciphertext multiplication noise is difficult to control in the encryption process, and the encryption result cannot be correctly decrypted; Since the result of the plaintext summation is equal to the hexadecimal, the result of the ciphertext summation will inevitably go wrong during the decryption process, which may result in the encryption result not being correctly decrypted.
  • the present invention provides a full homomorphic encryption processing method based on a modulo operation, which aims to solve the existing modal-based full homomorphic encryption processing method,
  • the multiplication noise is difficult to control, and the result of the ciphertext addition is equal to the technical problem that the result of the ciphertext summation in the decryption process cannot be correctly decrypted due to an error in the decryption process.
  • a modulo operation based The homomorphic encryption processing method includes the following steps:
  • step (2) performing encryption operation on each number in the plaintext plaintext obtained in step (1), and combining the ciphertexts obtained by the encryption operation to obtain a corresponding ciphertext combination;
  • step (3) performing ciphertext operation on the ciphertext combination obtained in step (2) by using ciphertext original code, ciphertext inverse code and ciphertext complement code based on modulo encryption;
  • the encryption operation in step (2) adopts the following formula:
  • c is the ciphertext
  • m is the binary digit in the plaintext
  • s is the hexadecimal number used in the encryption
  • r is the random number
  • p is the encryption key
  • x 0 is an intermediate variable equal to the encryption key p and The product of another encryption key q, which is not publicly available.
  • step (4) specifically adopts the following formula: (c mod p) mod s.
  • step (3) for the ciphertext addition operation, the two ciphertext combinations are directly subjected to the alignment sum operation.
  • step (3) for the ciphertext subtraction operation, the inverse of the ciphertext combination of the subtraction is first obtained, and then the corresponding complement is obtained according to the inverse code, and finally the complement and the ciphertext of the subtracted number are obtained.
  • the combined original code performs a bitwise summation operation.
  • step (3) the multiplication for the ciphertext, the first ciphertext composition according to the number c 1 and c 2 n elements to create a n * (2n-1) of the matrix, the first row of the matrix from The right-to-left elements are: the product of the rightmost element in c 1 and the rightmost element in c 2 , the product of the second to last right element in c 1 and the rightmost element in c 2 , and so on.
  • the left side in the first element c 1 and c 2 of the rightmost element of the product; the second row of the matrix element from right to left are: a 0, the rightmost element c 1 and c 2
  • n-th row of the matrix element from right to left are: (n-1) th 0, c 1 in the right-most elements of the left 2 C a product elements of the product of the right penultimate element and the first element of the left c 1 c 2, and so on, the left side in the first element c 1 and c 2 on the left side of the first Product of the elements, then, will Each column of the constructed matrix is summed to obtain a new row vector, which is taken as the result of the ciphertext multiplication operation. Finally, the row vector is taken as the result of the ciphertext multiplication operation.
  • step (3) for the ciphertext division operation, the following substeps are included:
  • (3-4-1) A storage format for creating an empty division result, the total length of the storage format being 32 bits, 64 bits, or 80 bits, and including sign bits, integer bits, and decimal places, and according to the storage format pair
  • the binary bit is extended in plaintext
  • step (3-4-5) determining whether the ciphertext of the dividend is greater than the ciphertext of the divisor, if it is greater than the transfer step (3-4-6), otherwise step (3-4-7);
  • step (3-4-6) Add the ciphertext of the dividend and the complement of the divisor ciphertext in step (3-4-3) to obtain the remainder as the new dividend, and add the ciphertext of 1 in the integer number. , that is, the cipher is obtained, and returns to step (3-4-5);
  • step (3-4-7) Determine whether the ciphertext of the remainder is all zero or the decimal counter counter is greater than the total length of the storage format, if not, then go to step (3-4-8); if yes, ciphertext division End, and go to step (3-4-13) to obtain the ciphertext division result;
  • the judgment step (3-4-8) obtains whether the new residual ciphertext is greater than the ciphertext of the divisor, and if it is greater than the step (3-4-10), otherwise (3-4) -11);
  • the integer part of the quotient is equal to:
  • the step (3-4-5) is specifically: determining whether the ciphertext of the dividend is greater than the ciphertext of the divisor, and determining whether each bit in the dividend is greater than or equal to the correspondence in the divisor by traversing from left to right. Bit, if one of the bits is less than the corresponding bit in the divisor, it means that the ciphertext of the dividend is not a ciphertext greater than the divisor.
  • each bit of the ciphertext is first obtained according to a decryption formula (ciphertext mod p) mod s, and the obtained plaintext is summed by bit, and then Determine whether the value obtained after each bit is equal to the hexadecimal. If it is equal to, it indicates that a carry occurs. At this time, the carry value is returned, and the result of the ciphertext bit summation is returned, and the previous bit of the ciphertext bit is Add 1 to the summation; if not, it means that no carry occurs, return the carry value and the result of the ciphertext summation, and add 0 to the previous summation of the ciphertext.
  • ciphertext mod p decryption formula
  • the present invention can solve the technical problem that the encryption result cannot be correctly decrypted due to difficulty in controlling the ciphertext multiplication noise in the prior art: since the present invention adopts the carry mechanism in the encryption process and the refresh of the ciphertext calculation result, Solve the noise problem that occurs during the homomorphic encryption process.
  • the present invention can solve the technical problem that the result of the ciphertext addition in the prior method is equal to the hexadecimal, and the result of the ciphertext summation is not correctly decrypted due to an error in the decryption process: since the present invention adopts The carry mechanism in the encryption process, which determines whether the carry operation needs to be performed by judging whether the ciphertext summation result is equal to the hexadecimal, thereby solving the problem of ciphertext addition error.
  • the ciphertext original code, the ciphertext inverse code and the ciphertext complement code of the cryptographic encryption can realize the addition, subtraction, multiplication and division between arbitrary data ciphertexts, thereby further expanding the application scenario of the present invention and improving Data security in the application scenario ciphertext calculation process.
  • 1 is a flow chart of a method for processing a full homomorphic encryption based on a modulo operation of the present invention.
  • FIG. 2 is a flow chart of a process for performing a ciphertext division calculation in the method of the present invention.
  • Binary digits The number of bits determined according to the hexadecimal, for example: binary is 1 digit, octal is 3 digits, hexadecimal is 4 digits, 32 hexadecimal is 5 digits, hexadecimal is 6 digits, 128 hexadecimal It is 7 digits.
  • the method of the invention implements encryption, decryption and ciphertext calculation of all data types by using ciphertext original code, ciphertext inverse code and ciphertext complement code based on modulo encryption.
  • the operations include operations such as AND, AND, and (or, not).
  • a full homomorphic encryption processing method based on modulo operation includes data representation, key generation, encryption algorithm, decryption algorithm and Ciphertext Operation (CO).
  • the data indicates that the type (type) of the plaintext m is T, and the set of T is ⁇ integer, real number, character, date, boolean ⁇ , etc.
  • the work key W key (pk, p) is introduced for a clear description of the algorithm for expressing encryption, decryption and ciphertext calculations.
  • the ciphertext operation function f" is constructed to implement ciphertext calculation, and the ciphertext calculation process derives the following judgment rules according to the encryption algorithm f.
  • c 1 m 1 +2*r 1 +p*r 1 mod x 0 ;
  • the addition grammar calculation judgment rule is:
  • the ciphertext calculation judgment rule of multiplication is:
  • the ciphertext result obtained by the ciphertext addition calculation is erroneous, that is, the decryption must be erroneous.
  • the noise formula (2) the product of the two ciphertexts causes the noise to increase exponentially.
  • circuit function f 1 circuit function f 2
  • Input parameters work key W key (x 0 , p), ciphertext c 1 , c 2 , operator op.
  • Output parameters return the calculated ciphertext c, return the carry flag flag, 1 for carry, 0 for no carry.
  • the ciphertext calculation steps are as follows:
  • Step 4 Return the refresh ciphertext c and the carry flag flag.
  • Input parameters work key W key (x 0 , p), ciphertext c 1 , c 2 .
  • the ciphertext calculation steps are as follows:
  • Step 3 Return the value of flag.
  • the modulo-based full homomorphic encryption processing method of the present invention includes the following steps:
  • c is the ciphertext
  • m is the hexadecimal digit in the plaintext
  • r is the random number
  • p For the encryption key, x 0 is an intermediate variable equal to the product of the encryption key p and another encryption key q (where p and q are both odd numbers), all of which are not publicly available.
  • the number 0 encrypted ciphertext is equal to 113;
  • the number 1 encrypted ciphertext is equal to 114;
  • Example 1 The plaintext of plaintext 5 is 101.
  • Example 2 The plaintext of plaintext 7 is 111.
  • Example 3 The plaintext of plaintext 7 is 111.
  • this step specifically includes the following substeps. :
  • each bit of the ciphertext needs to obtain the corresponding plaintext according to the decryption formula (cryptographic mod p) mod s, and the obtained plaintext is summed and summed by bit, and then each judgment is made. Whether the value obtained after the summation of the bits is equal to the hexadecimal, if it is equal, it means that the carry occurs, then the carry value is returned (ie 1), and the result of the ciphertext summation is returned (that is, the ciphertext summation result is achieved).
  • the inverse of the ciphertext combination c 2 is obtained, which is specifically equal to the number of hexadecimal digits - the digit -1;
  • the original plaintext code is 011
  • n 3
  • n * (2n-1) matrix which elements of the first row of the matrix from right to left are: the product of c 1 and c 2 rightmost element rightmost element, c 1 in the right penultimate element c 2 and the right-most elements product, C ...
  • first element 1 and c 2 on the left side of the rightmost element of the product; the second row of the matrix element from right to left are: a 0, the rightmost element c 1
  • ... n-th row of the matrix element from right to left are: (n-1) th 0, c 1 in the right-most elements of the left 2 C a product of the element, c 1 in the right penultimate product of the elements in the first element of the left c 2, ... c is left of the first element 1 and c 2 on the left side of the first element product.
  • each column of the constructed matrix is summed to obtain a new row vector, which is taken as the result of the ciphertext multiplication operation. For example,
  • Example 1 For the above example, the first c 1 (114,113,114), and c 2 (113,114,114) are multiplied, and build a matrix of 3 rows and five columns according to the above rule as follows:
  • Example 2 For the above example, the first c 1 (114,114,114), and c 2 (113,114,114) are multiplied, and build a matrix of 3 rows and five columns according to the above rule as follows:
  • Example 3 For the above example, the first c 1 (114,114,114), and c 2 (113,114,113) are multiplied, and build a matrix of 3 rows and five columns according to the above rule as follows:
  • (3-4-1) A storage format for creating an empty division result, the total length of the storage format conforming to the IEEE754 standard, being 32-bit, 64-bit or 80-bit, and including a sign bit, an integer bit, and a decimal place, and The storage format expands the binary plaintext;
  • the first bit is a sign bit, which is equal to 0 or 1, and is used to respectively represent the positive and negative numbers of the ciphertext; the length of the integer bit also conforms to the IEEE754 standard and is expressed as L. Then the remaining decimal length is (the total length of the storage format -L), as shown in the following format:
  • the purpose of using this storage format is to calculate the integer part and the fractional part of the quotient of the division, respectively, where the integer part of the quotient is equal to x L *2 0 +x L-1 *2 1 +...+x 1 *2 L -1 , where x represents the ciphertext value in the integer part;
  • the storage format length of 8 bits is taken as an example for description: the first bit from left to right is a sign bit, the second to fourth bits are integer bits, and the fifth to eighth bits are decimals. Bit. And expanding the binary plaintext obtained in step (1), the extended plaintext length is 8 bits, and the extended bits are all filled with the number 0, for example,
  • Example 1 The binary plaintext 101 in step (1) is expanded to 00000101, and the binary plaintext 011 is expanded to 00000011;
  • Example 2 The binary bit plaintext 111 in step (1) is expanded to 00000111, and the binary bit plaintext 011 is expanded to 00000011;
  • Example 3 The binary plaintext 111 in step (1) is expanded to 00000111, and the binary plaintext 010 is expanded to 00000010.
  • Example 1 The above-mentioned extended plaintexts 00000101 and 00000011 are converted into (113, 113, 113, 113, 114, 113, 114) (00000101) and (113, 113, 113, respectively, through the operations of this process. 113, 113, 113, 114, 114) (00000011);
  • Example 2 The above-mentioned extended plaintexts 00000111 and 00000011 are converted into (113, 113, 113, 113, 114, 114, 114) (00000111) and (113, 113, 113, respectively, through the operations of this process. 113, 113, 113, 114, 114) (00000011);
  • Example 3 The above-mentioned extended plaintexts 00000111 and 00000010 are converted into (113, 113, 113, 113, 114, 114, 114) (00000111) and (113, 113, 113, respectively, through the operations of this process. 113, 113, 113, 114, 113) (00000010);
  • Ciphertext 114 is multiplied by (113, 113, 113, 113, 113, 114, 114) (00000011) to obtain a ciphertext combination (12882, 12882, 12882, 12882, 12882, 12882, 12996, 12996) (00000011), and obtain the ciphertext complement code for its product, the step of obtaining the ciphertext complement code is exactly the same as the above step (3-2), and the ciphertext combination is obtained by the product complement code (12883, 12883, 12883, 12883, 12883, 12883, 12883, 12997, 12998) (11111101); the ciphertext complement of Example 2 is the same as in Example 1.
  • Example 3 ciphertext 114 is multiplied by (113, 113, 113, 113, 113, 114, 113) (00000010) to obtain a ciphertext combination (12882, 12882, 12882, 12882, 12882, 12882, 12996, 12882) (00000010), and the ciphertext complement code is obtained for the product, and the step of obtaining the ciphertext complement code is exactly the same as the above step (3-2), and the ciphertext combination is obtained by the product complement code (12883, 12883, 12883, 12883, 12883, 12883, 12883, 12998, 12884) (11111110).
  • judging whether the ciphertext of the dividend is greater than the ciphertext of the divisor determining whether each bit in the dividend is greater than or equal to the corresponding bit in the divisor by traversing from left to right, if one of the bits is less than the divisor The corresponding bit in the middle indicates that the ciphertext of the dividend is not a ciphertext greater than the divisor;
  • step (3-4-6) Add the ciphertext of the dividend and the complement of the divisor ciphertext in step (3-4-3) to obtain the remainder as the new dividend, and add the ciphertext of 1 in the integer number. , that is, the cipher is obtained, and returns to step (3-4-5);
  • step (3-4-7) Determine whether the ciphertext of the remainder is all zero or the decimal counter counter is greater than the total length of the storage format, if not, then go to step (3-4-8); if yes, ciphertext division End, and go to step (3-4-13) to obtain the ciphertext division result;
  • step (3-4-8) Add a ciphertext of 0 to the far right of the remainder ciphertext to obtain a new remainder ciphertext, and go to step (3-4-9), for example,
  • Example 1 The first remainder of the ciphertext is (12997, 12997, 12997, 12997, 12997, 13111, 13112, 113) (00000100);
  • Example 2 The first remainder of the ciphertext is (25881, 25881, 25881, 25881, 25881, 25881, 26109, 26110, 113) (000000010);
  • the new remainder ciphertext is obtained (25881, 25881, 25881, 25881, 26109, 26110, 113, 113) (0000000100);
  • Example 3 The first remainder of the new ciphertext is (38765, 38763, 38765, 38765, 38765, 39108, 38766, 113) (00000010);
  • the judgment step (3-4-8) obtains whether the new residual ciphertext is greater than the ciphertext of the divisor, and if it is greater than the step (3-4-10), otherwise (3-4) -11);
  • step (3-4-10) Adding the new residual ciphertext and the ciphertext complement of the divisor to obtain the new remainder ciphertext again, and setting the value of the countth decimal place to the ciphertext value corresponding to 1; For example: the ciphertext of 1 is 114, then go to step (3-4-12); for example,
  • step (3-4-13) Obtain the integer part and the fractional part of the quotient according to the obtained ciphertext value, and store according to the storage format in step (3-4-1), for example,
  • Example 1 The integer part execution (3-4-6) step records the next ciphertext 114. Since this example is a number that cannot be divisible, until the decimal place is full, the decimal place counter count is larger than the total length of the storage format.
  • the ciphertext division operation ends, that is, the fractional part performs four steps (3-4-10), (3-4-11), (3-4-10), and (3-4-11) in the loop process, respectively.
  • the ciphertexts recorded in the fifth to eighth decimal places are 114, 113, 114 and 113, that is, the ciphertext values of the quotient are (113, 113, 113, 114, 114, 113, 114, 113).
  • Example 2 The integer part is cyclically executed (3-4-6) in two steps. The first time, the ciphertext value 114 is recorded in the fourth bit of the integer bit, and the fourth time in the fourth bit of the integer bit is encrypted. Therefore, the ciphertext value of the integer bit is 113, 114, 228. Since this example is a number that cannot be divisible, the decimal place counter count is greater than the total length of the storage format until the decimal place is full, so that the ciphertext division operation ends. That is, the fractional part performs four steps (3-4-10), (3-4-11), (3-4-10), and (3-4-11) in the loop, respectively, in the fifth of the decimal places.
  • the ciphertext values recorded in bits 8 are 113, 114, 113 and 114, which are the ciphertext values of the quotient (113, 113, 114, 228, 113, 114, 113, 114).
  • Example 3 The integer part is cyclically executed (3-4-6) in three steps.
  • the ciphertext value 114 is recorded in the fourth digit of the integer bit, and the fourth digit is encrypted in the fourth digit of the integer digit. Therefore, the ciphertext value of the integer bit is 113, 114, 228, and the third bit of the integer bit is encrypted by 114, so the ciphertext value of the integer bit is 113, 114, 342, since this example is one Divisible number, so the ciphertext of the remainder is all zero, so that the ciphertext division operation ends, that is, the fractional part performs the (3-4-10) step in the loop, and the ciphertext value recorded in the fifth digit of the decimal place 114, the ciphertext value of the quotient is (113, 113, 114, 342, 114, 113, 113, 113).
  • the decimal point of this example has only 4 bits, the result is 1.625. If the decimal place is represented by 7 bits, the result is 1.664063, which means that the precision of the decimal place is related to the length of the reserved decimal place.
  • the decimal point of this example has only 4 digits, the result is 2.3125. If the decimal digit is represented by 8 bits, the result is 2.320031, which indicates that the precision of the decimal place is related to the length of the reserved decimal place.
  • the above ciphertext calculation results show that after the two plaintexts are encrypted, the ciphertext calculation results of the ciphertext addition, subtraction, multiplication and division are decrypted and the same as the plaintext calculation result.
  • step (3) Decrypting the ciphertext operation result obtained in step (3) by using the mode division method to obtain The decrypted plaintext; specifically, the following formula is used: (c mod p) mod s.

Abstract

本发明公开了一种基于模运算的全同态加密处理方法,包括以下步骤:获取加密过程中任意数值数据类型的明文,并根据加密需要将其转换为对应的进制位明文,对得到的进制位明文中的各个数进行加密运算,将加密运算得到的密文进行组合,从而得到对应的密文组合,采用基于模加密的密文原码、密文反码和密文补码对得到的密文组合进行加减乘除密文运算,利用模除法对获取的密文运算结果进行解密,以获得解密后的明文。本发明能够解决现有的基于模运算的全同态加密处理方法中,由于密文乘法噪音难以控制,以及密文加法的结果等于进制时密文求和的结果在解密过程中出错所导致的加密结果无法被正确解密的技术问题。

Description

一种基于模运算的全同态加密处理方法 技术领域
本发明属于信息安全领域,更具体地,涉及一种基于模运算的全同态加密处理方法。
背景技术
全同态加密作为一种前沿和先进的加密算法,已经经历了接近40年的发展。1978年,R.Rivest等人提出了“全同态加密”的概念,2009年C.Gentry理论上设计了基于理想格的全同态加密方案,2010年他又提出了“somewhat”同态加密方案,2011年Brakerski等人提出了基于容错学习问题(Learning with errors,简称LWE)和环上的容错学习问题(Ring learning with errors,简称RLWE)构造出一种不依赖理想格的全同态加密方案。
然而,现有的基于模运算的全同态加密处理方法都存在一些不可忽略的问题:首先,其在加密过程中存在着密文乘法噪音难以控制的问题,导致加密结果无法被正确解密;其次,由于明文求和结果等于进制时,其密文求和的结果在解密过程中必然会出错,由此会导致加密结果无法被正确解密。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于模运算的全同态加密处理方法,其目的在于,解决现有的基于模运算的全同态加密处理方法中,由于密文乘法噪音难以控制,以及密文加法的结果等于进制时密文求和的结果在解密过程中出错所导致的加密结果无法被正确解密的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于模运算的 全同态加密处理方法,包括以下步骤:
(1)获取加密过程中任意数值数据类型的明文,并根据加密需要将其转换为对应的进制位明文;
(2)对步骤(1)中得到的进制位明文中的各个数进行加密运算,将加密运算得到的密文进行组合,从而得到对应的密文组合;
(3)采用基于模加密的密文原码、密文反码和密文补码对步骤(2)得到的密文组合进行密文运算;
(4)利用模除法对步骤(3)获取的密文运算结果进行解密,以获得解密后的明文。
优选地,步骤(2)中加密运算是采用以下公式:
c=(m+s*r+p*q)mod x0
其中c表示密文,m表示明文中的进制位,s表示加密中所采用的进制,r表示随机数,p为加密密钥,x0是一个中间变量,其等于加密密钥p与另一个加密密钥q的乘积,所述密钥均不对外公开。
优选地,步骤(4)具体是采用以下公式:(c mod p)mod s。
优选地,步骤(3)中,对于密文加法运算,直接将两个密文组合进行对位求和运算。
优选地,步骤(3)中,对于密文减法运算,首先获取减数的密文组合的反码,然后根据该反码获取对应的补码,最后将该补码与被减数的密文组合的原码进行对位求和运算。
优选地,步骤(3)中,对于密文乘法运算,首先根据密文组合c1和c2中元素的个数n创建一个n*(2n-1)的矩阵,该矩阵的第一行从右至左的元素分别为:c1中最右侧元素与c2中最右侧元素的乘积、c1中右侧倒数第二个元素与c2中最右侧元素的乘积、以此类推、c1中左侧第一个元素与c2中最右侧元素的乘积;该矩阵的第二行从右至左的元素分别为:1个0、c1中最右侧元素与c2中右侧倒数第二个元素的乘积、c1中右侧倒数第二个元 素与c2中右侧倒数第二个元素的乘积、以此类推、c1中左侧第一个元素与c2中右侧倒数第二个元素的乘积;…该矩阵的第n行从右至左的元素分别为:(n-1)个0,c1中最右侧元素与c2中左侧第一个元素的乘积、c1中右侧倒数第二个元素与c2中左侧第一个元素的乘积、以此类推、c1中左侧第一个元素与c2中左侧第一个元素的乘积,然后,将构建的矩阵的每列进行求和,从而得到一个新的行向量,取该行向量作为密文乘法运算的结果,最后,取该行向量作为密文乘法运算的结果。
优选地,步骤(3)中,对于密文除法运算,其包括以下子步骤:
(3-4-1)创建空的除法运算结果的存储格式,该存储格式的总长度为32位、64位或80位,且包括符号位、整数位和小数位,并根据该存储格式对二进制位明文进行扩展;
(3-4-2)根据步骤(2)的算法对扩展后的二进制位明文进行加密运算,将加密运算结果进行组合,从而得到对应的密文分别作为被除数和除数;
(3-4-3)用步骤(2)中得到的1的密文乘以作为除数的密文;
(3-4-4)设置小数位计数器count的初始值等于存储格式的长度-L,其中L是存储格式中整数位的长度;
(3-4-5)判断被除数的密文是否大于除数的密文,如果大于转步骤(3-4-6),否则转步骤(3-4-7);
(3-4-6)将被除数的密文与步骤(3-4-3)中的除数密文的补码做加法,得到余数作为新的被除数,并且在整数位用1的密文做加法,即得到的是密文商,并返回步骤(3-4-5);
(3-4-7)判断余数的密文是否全部为零或小数位计数器count大于存储格式的总长度,如果不是,则转步骤(3-4-8);如果是,则密文除法运算结束,并转入步骤(3-4-13),以获得密文除法运算结果;
(3-4-8)在余数密文的最右边添加0的密文,得到新的余数密文,并转步骤(3-4-9);
(3-4-9)判断步骤(3-4-8)得到新的余数密文是否大于除数的密文,如果是大于则转步骤(3-4-10)步骤,否则转(3-4-11);
(3-4-10)将新的余数密文与除数的密文补码做加法,以再次获得新的余数密文,同时将第count个小数位的值设置为1对应的密文值;
(3-4-11)将第count个小数位的值设置为0对应的密文值,然后转步骤(3-4-12);
(3-4-12)将小数位计数器count加1,然后返回步骤(3-4-7);
(3-4-13)根据得到的密文值获取商的整数部分和小数部分,并按步骤(3-4-1)中的存储格式进行存放。
优选地,商的整数部分等于:
xL*20+xL-1*21+…+x1*2L-1,其中x表示整数部分中的密文值;
商的小数部分等于:
y1*2-1+y2*2-2+…+y存储格式的总长度-L*2存储格式的总长度-L,其中y表示小数部分中的密文值。
优选地,步骤(3-4-5)具体为,判断被除数的密文是否大于除数的密文,是从左到右以遍历的方式判断被除数中的每一位是否大于或等于除数中的对应位,如果一旦有其中一位小于除数中的对应位,则表示被除数的密文不是大于除数的密文。
优选地,在密文加法运算中,首先将密文的每一位根据解密公式(密文mod p)mod s求出对应的明文,并将得到的明文按位进行求和相加,接下来判断每个位求和后得到的值是否等于进制,如果等于,则表示出现了进位,此时返回进位值,并返回密文位求和的结果,并且在该密文位的上一位求和过程中加1;如果不等于,则表示没有出现进位,此时返回进位值以及密文位求和的结果,并且在该密文位的上一位求和过程中加0。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)本发明能够解决现有方法中由于密文乘法噪音难以控制导致的加密结果无法被正确解密的技术问题:由于本发明采用了加密过程中的进位机制和密文计算结果的刷新,能够解决全同态加密过程中出现的噪音问题。
(2)本发明能够解决现有方法中密文加法的结果等于进制时,密文求和的结果在解密过程中出错所导致的加密结果无法被正确解密的技术问题:由于本发明采用了加密过程中的进位机制,该机制通过判断密文求和结果是否等于进制来确定是否需要进行进位操作,从而解决了密文加法出错的问题。
(3)本发明通过模加密的密文原码、密文反码和密文补码,能够实现任意数据密文之间的加减乘除运算,从而进一步扩展了本发明的应用场景,并提升了应用场景密文计算过程中的数据安全性。
附图说明
图1是本发明基于模运算的全同态加密处理方法的流程图。
图2是本发明方法中执行密文除法计算过程的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
进制位:根据进制所确定的位的数量,例如:二进制就是1位,八进制就是3位,16进制就是4位,32进制就是5位,64进制就是6位,128进制就是7位。
本发明的方法采用基于模加密的密文原码、密文反码和密文补码实现了所有数据类型的加密、解密和密文计算。该方法通过构造电路函数刷新密文实现了算术运算、关系运算和逻辑运算的密文计算,其中算术运算包 括加、减、乘、除(+,-,*,/),关系运算包括小于、小于等于、大于、大于等于、等于和不等于(<,≤,>,≥,=,≠),逻辑运算包括与、或和非(and,or,not)等操作。
一种基于模运算的全同态加密处理方法包含有数据表示、密钥生成、加密算法、解密算法以及密文运算(Ciphertext Operation,简称CO)。
数据表示:记明文m的类型(Type)为T,T的集合为{整数、实数、字符、日期、布尔型}等,已知明文ms,其中:s表示数据进制(System),即二进制、十进制、十六进制、521进制等等,记作(T,ms);例如:s=2表示二进制,二进制通常用B表示,明文m表示为二进制位mB,记作(T,mB);s=16表示十六进制,十六进制通常用H表示,明文m表示为十六进制位mH,记作(T,mH);s=512表示512进制,明文m表示为512进制位m512,记作(T,m512)等。
密钥生成(KeyGen):选择一个大奇数p,计算x0=q0*p+s*r,x0必须是一个奇数,否则重新计算。随机生成τ个数,计算xi=qi*p+s*r,其中:0≤i≤τ,qi<<q0、r是随机数。用于非对称算法的公钥为pk=(x0,x1,…,xi,…xτ),私钥为p;用于对称算法的密钥为(x0,p)。为了清晰的表达加密、解密和密文计算的算法描述引入工作密钥Wkey(pk,p)。
加密算法(Enc):由KeyGen生成的工作密钥Wkey,对于任意的一个数m加密。将m转换成二进制mB表示为B,B=(b1,b2,…,bi,…,bn),bi∈{0,1},1≤i≤n,c=Enc(Wkey,B),c是采用加密算法f得到c=(c1,c2,…,ci,…,cn),
Figure PCTCN2017112482-appb-000001
其中:r是随机数。
解密算法(Dec):由KeyGen生成的工作密钥Wkey,对输入的密文数据c,b’=Dec(Wkey,ci),b’是采用解密算法f’得到b’=(b1’,b2’,…,bi’,…,bn’),其中:b=f’(Wkey,ci)=(ci mod p)mod s,1≤i≤n,将s进制b’转换成明文m。
密文运算(CO):由KeyGen生成的工作密钥Wkey,对于输入的两个密文数据c1、c2,c’=CO(Wkey,c1O c2),c’是采用构造的密文运算函数f”计算得到c’=(c1’,c2’,…,ci’,…,cn’)
ci’=f”(Wkey,c1i’O c2i’)
其中:1≤i≤n,O∈{+,-,*,/……}
构造密文运算函数f”来实现密文计算,其密文计算过程是根据加密算法f推导出如下判断规则。
以s=2二进制为例:假设
c1=m1+2*r1+p*r1mod x0
c2=m2+2*r2+p*r2mod x0
c=c1+c2=(m1+m2)+2*r1+p*r1+2*r2+p*r2
=(m1+m2)+2*(r1+r2)+p*(r1+r2)
c=c1*c2=(m1+2*r1+p*r1)(m2+2*r2+p*r2)
=m1*m2+m1*2*r2+m1*p*r2+2*r1*m2+2*r1*2*r2+2*r1*p*r2+p*r1*m2+p*r1*2*r2+p*r1*p*r2
=m1*m2+2*(m1*r2+m2*r1+2*r1*r2)+p*(m1*r2+4*r1*r2+r1*m2+r1*p*r2)
对密文c mod p后,密文计算的加法和乘法噪音公式如下:
c=(c1+c2)mod p=(m1+m2)+2(r1+r2)             (1)
c=(c1*c2)mod p=m1*m2+2*(m1*r2+m2*r1+2*r1*r2)         (2)
当明文(m1=0,m2=0),(m1=0,m2=1),(m1=1,m2=0),(m1=1,m2=1)时:
加法的密文计算判断规则为:
c=0+2(r1+r2);(c mod p)mod 2=0;解密正确
c=1+2(r1+r2);(c mod p)mod 2=1;解密正确
c=1+2(r1+r2);(c mod p)mod 2=1;解密正确
c=2+2(r1+r2);(c mod p)mod 2=0;解密错误
乘法的密文计算判断规则为:
c=0+4r1r2;(c mod p)mod 2=0;解密正确
c=0+2(r1+2r1r2);(c mod p)mod 2=0;解密正确
c=0+2(r2+2r1r2);(c mod p)mod 2=0;解密正确
c=1+2(r1+r2+2r1r2);(c mod p)mod 2=1;解密正确
根据以上分析,从噪音公式(1)可知当明文(m1=1,m2=1)时,密文加法计算时得到的密文结果是错误的,即解密时一定会出错。从噪音公式(2)可知两个密文的乘积使得噪音成指数级的增涨,一旦模p后的结果不在(-p/s,p/s]范围内,解密也一定会出错。掌握这个规律后,构造两个电路函数如下。
1、电路函数f1
功能描述:二进制密文计算,解决密文计算时的噪音问题。
输入参数:工作密钥Wkey(x0,p),密文c1、c2,操作符op。
输出参数:返回计算的密文c,返回进位标识flag,1表示进位,0表示不进位。
密文计算步骤如下:
步骤1:初始化c=0,flag=0。
步骤2:如果op等于add转步骤3,否则密文相乘c=c1*c2,转步骤4。
步骤3:判断两个密文((c1mod p)mod 2)and((c2mod p)mod 2)是否为真,如果为真密文相加c=c1+c2,flag=1。
步骤4:返回刷新密文c和进位标识flag。
2、电路函数f2
功能描述:判断二进制位密文大小,解决密文除法计算时是否能够继续做减法。
输入参数:工作密钥Wkey(x0,p),密文c1、c2
输出参数:如果c1≥c2,返回结果值flag为真,否则flag为假。
密文计算步骤如下:
步骤1:初始化flag=假;
步骤2:判断两个密文((c1mod p)mod 2)≥((c2mod p)mod 2)是否为真,如果为真flag=真。
步骤3:返回flag的值。
如图1所示,本发明的基于模运算的全同态加密处理方法包括以下步骤:
(1)获取加密过程中任意数值数据类型的明文,并根据加密需要将其转换为对应的进制位明文;举例而言,
例1,两个明文分别为m1=5,m2=3,需要分别对其进行二进制位加密,则得到的二进制位明文分别为101和011;
例2,两个明文分别为m1=7,m2=3,需要分别对其进行二进制位加密,则得到的二进制位明文分别为111和011;
例3,两个明文分别为m1=7,m2=2,需要分别对其进行二进制位加密,则得到的二进制位明文分别为111和010;
(2)对步骤(1)中得到的进制位明文中的各个数进行加密运算,将加密运算得到的密文进行组合,从而得到对应的密文组合,加密运算具体是采用以下公式:
c=(m+s*r+p*q)mod x0
其中c表示密文,m表示明文中的进制位,s表示加密中所采用的进制(例如二进制,则s=2;十六进制,则s=16),r表示随机数,p为加密密钥,x0是一个中间变量,其等于加密密钥p与另一个加密密钥q(其中p和q均是奇数)的乘积,上述密钥都是对外不公开。
例如,假设工作密钥p=111,q=11,x0=p*q=1221,令r=1,则对于明文5的二进制位明文101和明文3的二进制位明文011中的数0和1而言,使用本步骤的上述公式计算后,可得到:
数0加密后的密文等于113;
数1加密后的密文等于114;
举例而言,
例1:明文5的二进制位明文为101经过加密后的密文组合变成了c1=(114,113,114);明文3的二进制位明文011经过加密后的密文变成了c2=(113,114,114);
例2:明文7的二进制位明文为111经过加密后的密文组合变成了c1=(114,114,114);明文3的二进制位明文011经过加密后的密文变成了c2=(113,114,114)。
例3:明文7的二进制位明文为111经过加密后的密文组合变成了c1=(114,114,114);明文2的二进制位明文010经过加密后的密文变成了c2=(113,114,113)。
(3)采用基于模加密的密文原码、密文反码和密文补码对步骤(2)得到的密文组合进行密文运算;如图2所示,本步骤具体包括以下子步骤:
(3-1)对于密文加法运算,直接将两个密文组合进行对位求和运算;
对于上面的示例而言,即为:
例1:c1+c2=(114,113,114)+(113,114,114);
例2:c1+c2=(114,114,114)+(113,114,114);
例3:c1+c2=(114,114,114)+(113,114,113);
在密文加法运算中,首先需要将密文的每一位根据解密公式(密文mod p)mod s求出对应的明文,并将得到的明文按位进行求和相加,接下来判断每个位求和后得到的值是否等于进制,如果等于,则表示出现了进位,此时返回进位值(即1),并返回密文位求和的结果(即实现了密文求和结果的刷新),并且在该密文位的上一位求和过程中加1;如果不等于,则表示没有出现进位,此时返回进位值(即0)以及密文位求和的结果,并且在该密文位的上一位求和过程中加0。
在以下的密文减法、乘法、除法运算中,都会出现加法进位的情况,其处理方式与上述进位过程完全相同,以下再不赘述。
例1:c1+c2=(114,228,228,228)
例2:c1+c2=(114,228,229,228)
例3:c1+c2=(114,228,228,227)
用解密算法m=(c mod p)mod 2验证密文计算是正确的,举例而言,
例1:解密密文c1+c2计算结果:(114,228,228,228)=(1000)=8
例2:解密密文c1+c2计算结果:(114,228,229,228)=(1010)=10
例3:解密密文c1+c2计算结果:(114,228,228,227)=(1001)=9
(3-2)对于密文减法运算,首先获取减数的密文组合的反码,然后根据该反码获取对应的补码,最后将该补码与被减数的密文组合的原码进行对位求和运算;
对于上面的示例而言,即为:
首先,获取密文组合c2的反码,其具体等于进制的数量-进制位-1;
对于c2而言,其明文原码是011,第一位0对应的反码是2-0-1=1,第二位1对应的反码是2-1-1=0,第三位是2-1-1=0,因此其反码就是100,对应的密文反码是对密文原码的每一位加1。
举例而言,
例1:c2反码=(114,115,115);
例2:c2反码=(114,115,115);
例3:c2反码=(114,115,114);
然后通过对反码中最后一位加1得到密文组合c2的补码:
例1:c2补码=(114,115,116);
例2:c2补码=(114,115,116);
例3:c2补码=(114,116,115);
最后将c1的原码与c2的补码做加法,得到:
例1:c1-c2=c1原码+c2补码=(114,113,114)+(114,115,116)=(228,229,230)
例2:c1-c2=c1原码+c2补码=(114,114,114)+(114,115,116)=(229,230,230)
例3:c1-c2=c1原码+c2补码=(114,114,114)+(114,116,115)=(229,230,229)
应该注意的是,在上述密文计算过程中会出现进位情况,下面用解密算法m=(c mod p)mod 2验证密文计算是正确的,举例而言,
例1:解密密文c1-c2计算结果:(228,229,230)=(010)=2;
例2:解密密文c1-c2计算结果:(229,230,230)=(100)=4;
例3:解密密文c1-c2计算结果:(229,230,229)=(101)=5;
(3-3)对于密文乘法运算,首先根据密文组合c1和c2中元素的个数n(在本实施方式中n=3)创建一个n*(2n-1)的矩阵,该矩阵的第一行从右至左的元素分别为:c1中最右侧元素与c2中最右侧元素的乘积、c1中右侧倒数第二个元素与c2中最右侧元素的乘积、…c1中左侧第一个元素与c2中最右侧元素的乘积;该矩阵的第二行从右至左的元素分别为:1个0、c1中最右侧元素与c2中右侧倒数第二个元素的乘积、c1中右侧倒数第二个元素与c2中右侧倒数第二个元素的乘积、…c1中左侧第一个元素与c2中右侧倒数第二个元素的乘积;…该矩阵的第n行从右至左的元素分别为:(n-1)个0,c1中最右侧元素与c2中左侧第一个元素的乘积、c1中右侧倒数第二个元素与c2中左侧第一个元素的乘积、…c1中左侧第一个元素与c2中左侧第一个元素的乘积。
然后,将构建的矩阵的每列进行求和,从而得到一个新的行向量,取该行向量作为密文乘法运算的结果。举例而言,
例1:针对上述示例而言,首先将c1(114,113,114)和c2(113,114,114)相乘,并根据以上规则构建一个3行5列的矩阵如下:
Figure PCTCN2017112482-appb-000002
然后将该矩阵的每一列求和,从而得到以下行向量:
(12882 25765 38770 25878 12996)
最后,取该行向量作为密文乘法运算的结果,即c1*c2=(12882,25765,38770,25878,12996)。
例2:针对上述示例而言,首先将c1(114,114,114)和c2(113,114,114)相乘,并根据以上规则构建一个3行5列的矩阵如下:
Figure PCTCN2017112482-appb-000003
然后将该矩阵的每一列求和,从而得到以下行向量:
(12883 25879 38875 25992 12996)
最后,取该行向量作为密文乘法运算的结果,即c1*c2=(12883,25879,38875,25992,12996)。
例3:针对上述示例而言,首先将c1(114,114,114)和c2(113,114,113)相乘,并根据以上规则构建一个3行5列的矩阵如下:
Figure PCTCN2017112482-appb-000004
然后将该矩阵的每一列求和,从而得到以下行向量:
(12882 25878 38760 25878 12882)
最后,取该行向量作为密文乘法运算的结果,即c1*c2=(12882,25878,38760,25878,12882)。
应该注意的是,在上述密文计算过程中会出现进位情况,下面用解密算法m=(c mod p)mod 2验证密文计算是正确的,举例而言,
例1:解密密文c1*c2计算结果:
(12882,25765,38770,25878,12996)=(01111)=15;
例2:解密密文c1*c2计算结果:
(12883,25879,38875,25992,12996)=(10101)=21;
例3:解密密文c1*c2计算结果:
(12882,25878,38760,25878,12882)=(01110)=14;
(3-4)对于密文除法运算,其包括以下子步骤:
(3-4-1)创建空的除法运算结果的存储格式,该存储格式的总长度符合IEEE754标准,为32位、64位或80位,且包括符号位、整数位和小数位,并根据该存储格式对二进制位明文进行扩展;
需要注意的是,在存储格式中,第一位是符号位,其取值等于0或1,用于分别表示密文的正负数;整数位的长度也同时符合IEEE754标准,并表示为L;那么剩下的小数位长度就是(存储格式的总长度-L),具体如以下格式所示:
Figure PCTCN2017112482-appb-000005
使用该存储格式的目的在于,分别计算出除法运算的商的整数部分和小数部分,其中,商的整数部分等于xL*20+xL-1*21+…+x1*2L-1,其中x表示整数部分中的密文值;
商的小数部分等于:
y1*2-1+y2*2-2+…+y存储格式的总长度-L*2存储格式的总长度-L
其中y表示小数部分中的密文值。
举例而言,为了简单表示和方便描述起见,以存储格式长度8位为例进行说明:从左至右第1位为符号位,第2~4位为整数位,第5~8位为小数 位。并将步骤(1)中得到的二进制位明文进行扩展,扩展后的明文长度为8位,扩展位均用数字0进行填充,举例而言,
例1:步骤(1)中的二进制位明文101被扩展为00000101,二进制位明文011被扩展为00000011;
例2:步骤(1)中的二进制位明文111被扩展为00000111,二进制位明文011被扩展为00000011;
例3:步骤(1)中的二进制位明文111被扩展为00000111,二进制位明文010被扩展为00000010。
(3-4-2)根据步骤(2)的算法对扩展后的二进制位明文进行加密运算,将加密运算结果进行组合,从而得到对应的密文分别作为被除数和除数;举例而言,
例1:上述扩展后的明文00000101和00000011,经过本过程的运算,分别被变为了(113,113,113,113,113,114,113,114)(00000101)和(113,113,113,113,113,113,114,114)(00000011);
例2:上述扩展后的明文00000111和00000011,经过本过程的运算,分别被变为了(113,113,113,113,113,114,114,114)(00000111)和(113,113,113,113,113,113,114,114)(00000011);
例3:上述扩展后的明文00000111和00000010,经过本过程的运算,分别被变为了(113,113,113,113,113,114,114,114)(00000111)和(113,113,113,113,113,113,114,113)(00000010);
(3-4-3)用步骤(2)中得到的1的密文乘以作为除数的密文,举例而言,
例1:密文114乘以(113,113,113,113,113,113,114,114)(00000011),即得到密文组合(12882,12882,12882,12882,12882,12882,12996,12996)(00000011),并对其乘积求密文补码,求密文补码的步骤与上述步骤(3-2)完全相同,乘积求补码后得到密文组合为(12883,12883,12883, 12883,12883,12883,12997,12998)(11111101);例2的密文补码与例1相同。
例3:密文114乘以(113,113,113,113,113,113,114,113)(00000010),即得到密文组合(12882,12882,12882,12882,12882,12882,12996,12882)(00000010),并对其乘积求密文补码,求密文补码的步骤与上述步骤(3-2)完全相同,乘积求补码后得到密文组合为(12883,12883,12883,12883,12883,12883,12998,12884)(11111110)。
(3-4-4)设置小数位计数器count的初始值等于(存储格式的长度-L);
(3-4-5)判断被除数的密文是否大于除数的密文,如果大于转(3-4-6)步骤,否则转(3-4-7)步骤;
具体而言,判断被除数的密文是否大于除数的密文,是从左到右以遍历的方式判断被除数中的每一位是否大于或等于除数中的对应位,如果一旦有其中一位小于除数中的对应位,则表示被除数的密文不是大于除数的密文;
(3-4-6)将被除数的密文与步骤(3-4-3)中的除数密文的补码做加法,得到余数作为新的被除数,并且在整数位用1的密文做加法,即得到的是密文商,并返回步骤(3-4-5);
举例而言,
例1:第1次循环计算得到的余数密文=被除数密文+除数密文补码=(113,113,113,113,113,114,113,114)(00000101)+(12883,12883,12883,12883,12883,12883,12997,12998)(11111101)=(12997,12997,12997,12997,12997,12997,13111,13112)(00000010),应注意本过程求和中会有进位的情况,获得余数密文后转(3-4-5)步骤;
例2:第1次循环计算得到的余数密文=被除数密文+除数密文补码=(113,113,113,113,113,114,114,114)(00000111)+(12883,12883,12883,12883,12883,12883,12997,12998)(11111101)=(12997,12997, 12997,12997,12997,12998,13112,13112)(00000100),应注意本过程求和中会有进位的情况,获得余数密文后转(3-4-5)步骤;
第2次循环计算得到的余数密文=(12997,12997,12997,12997,12997,12998,13112,13112)(00000100)+(12883,12883,12883,12883,12883,12883,12997,12998)(11111101)=(25881,25881,25881,25881,25881,25881,26109,26110)(00000001)
例3:第1次循环计算得到的余数密文=被除数密文+除数密文补码=(113,113,113,113,113,114,114,114)(00000111)+(12883,12883,12883,12883,12883,12883,12998,12884)(11111110)=(12997,12997,12997,12997,12997,12998,13112,12998)(00000101),应注意本过程求和中会有进位的情况,获得余数密文后转(3-4-5)步骤;
第2次循环计算得到的余数密文=(12997,12997,12997,12997,12997,12998,13112,12998)(00000101)+(12883,12883,12883,12883,12883,12883,12998,12884)(11111110)=(25881,25881,25881,25881,25881,25881,26110,25882)(00000011)
第3次循环计算得到的余数密文=(25881,25881,25881,25881,25881,25881,26110,25882)(00000011)+(12883,12883,12883,12883,12883,12883,12998,12884)(11111110)=(38765,38765,38763,38765,38765,38765,39108,38766)(00000001)
(3-4-7)判断余数的密文是否全部为零或小数位计数器count大于存储格式的总长度,如果不是,则转步骤(3-4-8);如果是,则密文除法运算结束,并转入步骤(3-4-13),以获得密文除法运算结果;
(3-4-8)在余数密文的最右边添加0的密文,得到新的余数密文,并转步骤(3-4-9),举例而言,
例1:第1次循环得到新的余数密文为(12997,12997,12997,12997,12997,13111,13112,113)(00000100);
例2:第1次循环得到新的余数密文为(25881,25881,25881,25881,25881,26109,26110,113)(000000010);
第2次循环得到新的余数密文为(25881,25881,25881,25881,26109,26110,113,113)(0000000100);
例3:第1次循环得到新的余数密文为(38765,38763,38765,38765,38765,39108,38766,113)(00000010);
(3-4-9)判断步骤(3-4-8)得到新的余数密文是否大于除数的密文,如果是大于则转步骤(3-4-10)步骤,否则转(3-4-11);
(3-4-10)将新的余数密文与除数的密文补码做加法,以再次获得新的余数密文,同时将第count个小数位的值设置为1对应的密文值;例如:1的密文是114,然后转步骤(3-4-12);举例而言,
例1:更新的余数密文=新的余数密文+除数密文补码=(12997,12997,12997,12997,12997,13111,13112,113)(00000100)+(12883,12883,12883,12883,12883,12883,12997,12998)(11111101)=(25881,25881,25881,25881,25881,25994,26109,13111)(00000001);
例2:更新的余数密文=新的余数密文+除数密文补码=(25881,25881,25881,25881,26109,26110,113,113)(0000000100)+(12883,12883,12883,12883,12883,12883,12997,12998)(11111101)=(38765,38765,38765,38765,38993,38993,13110,13111)(00000001);
例3:更新的余数密文=新的余数密文+除数密文补码=(38765,38763,38765,38765,38765,39108,38766,113)(00000010)+(12883,12883,12883,12883,12883,12883,12998,12884)(11111110)=(51649,51649,51649,51649,51649,51992,51764,12997)(00000000);
(3-4-11)将第count个小数位的值设置为0对应的密文值,例如:0的密文是113,然后转步骤(3-4-12);
(3-4-12)将小数位计数器count加1,然后返回步骤(3-4-7);
(3-4-13)根据得到的密文值获取商的整数部分和小数部分,并按步骤(3-4-1)中的存储格式进行存放,举例而言,
例1:整数部分执行(3-4-6)步骤记下一次密文114,由于此例是一个无法整除的数,所以直到小数位记满,即小数位计数器count大于存储格式的总长度使得密文除法运算结束,即小数部分在循环过程中执行(3-4-10)、(3-4-11)、(3-4-10)、(3-4-11)四个步骤,分别在小数位的第5位到第8位记下的密文为114,113,114和113,即商的密文值为(113,113,113,114,114,113,114,113)。
例2:整数部分循环执行(3-4-6)步骤2次,第1次在整数位的第4位记下一次密文值114,第2次在整数位的第4位加密文值114,所以整数位的密文值为113、114、228,由于此例是一个无法整除的数,所以直到小数位记满,即小数位计数器count大于存储格式的总长度使得密文除法运算结束,即小数部分在循环过程中执行(3-4-10)、(3-4-11)、(3-4-10)、(3-4-11)四个步骤,分别在小数位的第5位到第8位记下的密文值为113,114,113和114,即商的密文值(113,113,114,228,113,114,113,114)。
例3:整数部分循环执行(3-4-6)步骤3次,第1次在整数位的第4位记下一次密文值114,第2次在整数位的第4位加密文值114,所以整数位的密文值为113、114、228,第3次在整数位的第4位加密文值114,所以整数位的密文值为113、114、342,由于此例是一个可以整除的数,所以余数的密文全部为零使得密文除法运算结束,即小数部分在循环过程中执行(3-4-10)步骤,并且在小数位的第5位记下的密文值114,即商的密文值为(113,113,114,342,114,113,113,113)。
以上密文计算过程得到的结果与明文计算的结果一致,举例而言,
例1:
c1/c2=5/3=(113,113,113,113,113,114,113,114)(00000101)/(113,113,113,113,113,113,114,114)(00000011)=(113,113, 113,114,114,113,114,113)。
例2:
c1/c2=7/3=(113,113,113,113,113,114,114,114)(00000111)/(113,113,113,113,113,113,114,114)(00000011)=(113,113,114,228,113,114,113,114)。
例3:
c1/c2=7/2=(113,113,113,113,113,114,114,114)(00000111)/(113,113,113,113,113,113,114,114)(00000010)=(113,113,114,342,114,113,113,113)。
应该注意的是,在上述密文计算过程中会出现进位情况,下面用解密算法m=(c mod p)mod 2验证密文计算是正确的,举例而言,
例1:解密密文c1/c2计算结果:(113,113,113,114,114,113,114,113)=(00011010)=1.625
说明:由于此例的浮点数的小数位只有4位,所以结果为1.625;如果把小数位用7位来表示,那么结果是1.664063,这说明小数位的精度是与保留小数位的长度相关。
例2:解密密文c1/c2计算结果:(113,113,114,228,113,114,113,114)=(00100101)=2.3125
说明:由于此例的浮点数的小数位只有4位,所以结果为2.3125;如果把小数位用8位来表示,那么结果是2.332031,这说明小数位的精度是与保留小数位的长度相关。
例3:解密密文c1/c2计算结果:(113,113,114,342,114,113,113,113)=(00111000)=3.5
以上进行密文计算的结果表明,两个明文加密后,进行密文的加、减、乘、除的密文计算结果解密后与明文的计算结果相同。
(4)利用模除法对步骤(3)获取的密文运算结果进行解密,以获得 解密后的明文;具体而言,是采用以下公式:(c mod p)mod s。
对于上述步骤中提到的所有示例而言,由于在加、减、乘、除加密运算的末尾,都对随后的解密过程和结果进行了详细描述,因此在本步骤中不单独对其再进行赘述。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

  1. 一种基于模运算的全同态加密处理方法,其特征在于,包括以下步骤:
    (1)获取加密过程中任意数值数据类型的明文,并根据加密需要将其转换为对应的进制位明文;
    (2)对步骤(1)中得到的进制位明文中的各个数进行加密运算,将加密运算得到的密文进行组合,从而得到对应的密文组合;
    (3)采用基于模加密的密文原码、密文反码和密文补码对步骤(2)得到的密文组合进行密文运算;
    (4)利用模除法对步骤(3)获取的密文运算结果进行解密,以获得解密后的明文。
  2. 根据权利要求1所述的基于模运算的全同态加密处理方法,其特征在于,步骤(2)中加密运算是采用以下公式:
    c=(m+s*r+p*q)mod x0
    其中c表示密文,m表示明文中的进制位,s表示加密中所采用的进制,r表示随机数,p为加密密钥,x0是一个中间变量,其等于加密密钥p与另一个加密密钥q的乘积,所述密钥均不对外公开。
  3. 根据权利要求2所述的基于模运算的全同态加密处理方法,其特征在于,步骤(4)具体是采用以下公式:(c mod p)mod s。
  4. 根据权利要求3所述的基于模运算的全同态加密处理方法,其特征在于,步骤(3)中,对于密文加法运算,直接将两个密文组合进行对位求和运算。
  5. 根据权利要求3所述的基于模运算的全同态加密处理方法,其特征在于,步骤(3)中,对于密文减法运算,首先获取减数的密文组合的反码,然后根据该反码获取对应的补码,最后将该补码与被减数的密文组合的原 码进行对位求和运算。
  6. 根据权利要求3所述的基于模运算的全同态加密处理方法,其特征在于,步骤(3)中,对于密文乘法运算,首先根据密文组合c1和c2中元素的个数n创建一个n*(2n-1)的矩阵,该矩阵的第一行从右至左的元素分别为:c1中最右侧元素与c2中最右侧元素的乘积、c1中右侧倒数第二个元素与c2中最右侧元素的乘积、以此类推、c1中左侧第一个元素与c2中最右侧元素的乘积;该矩阵的第二行从右至左的元素分别为:1个0、c1中最右侧元素与c2中右侧倒数第二个元素的乘积、c1中右侧倒数第二个元素与c2中右侧倒数第二个元素的乘积、以此类推、c1中左侧第一个元素与c2中右侧倒数第二个元素的乘积;…该矩阵的第n行从右至左的元素分别为:(n-1)个0,c1中最右侧元素与c2中左侧第一个元素的乘积、c1中右侧倒数第二个元素与c2中左侧第一个元素的乘积、以此类推、c1中左侧第一个元素与c2中左侧第一个元素的乘积,然后,将构建的矩阵的每列进行求和,从而得到一个新的行向量,取该行向量作为密文乘法运算的结果,最后,取该行向量作为密文乘法运算的结果。
  7. 根据权利要求3所述的基于模运算的全同态加密处理方法,其特征在于,步骤(3)中,对于密文除法运算,其包括以下子步骤:
    (3-4-1)创建空的除法运算结果的存储格式,该存储格式的总长度为32位、64位或80位,且包括符号位、整数位和小数位,并根据该存储格式对二进制位明文进行扩展;
    (3-4-2)根据步骤(2)的算法对扩展后的二进制位明文进行加密运算,将加密运算结果进行组合,从而得到对应的密文分别作为被除数和除数;
    (3-4-3)用步骤(2)中得到的1的密文乘以作为除数的密文;
    (3-4-4)设置小数位计数器count的初始值等于存储格式的长度-L,其中L是存储格式中整数位的长度;
    (3-4-5)判断被除数的密文是否大于除数的密文,如果大于转步骤 (3-4-6),否则转步骤(3-4-7);
    (3-4-6)将被除数的密文与步骤(3-4-3)中的除数密文的补码做加法,得到余数作为新的被除数,并且在整数位用1的密文做加法,即得到的是密文商,并返回步骤(3-4-5);
    (3-4-7)判断余数的密文是否全部为零或小数位计数器count大于存储格式的总长度,如果不是,则转步骤(3-4-8);如果是,则密文除法运算结束,并转入步骤(3-4-13),以获得密文除法运算结果;
    (3-4-8)在余数密文的最右边添加0的密文,得到新的余数密文,并转步骤(3-4-9);
    (3-4-9)判断步骤(3-4-8)得到新的余数密文是否大于除数的密文,如果是大于则转步骤(3-4-10)步骤,否则转(3-4-11);
    (3-4-10)将新的余数密文与除数的密文补码做加法,以再次获得新的余数密文,同时将第count个小数位的值设置为1对应的密文值;
    (3-4-11)将第count个小数位的值设置为0对应的密文值,然后转步骤(3-4-12);
    (3-4-12)将小数位计数器count加1,然后返回步骤(3-4-7);
    (3-4-13)根据得到的密文值获取商的整数部分和小数部分,并按步骤(3-4-1)中的存储格式进行存放。
  8. 根据权利要求7所述的基于模运算的全同态加密处理方法,其特征在于,
    商的整数部分等于:
    xL*20+xL-1*21+…+x1*2L-1,其中x表示整数部分中的密文值;
    商的小数部分等于:
    y1*2-1+y2*2-2+…+y存储格式的总长度-L*2存储格式的总长度-L,其中y表示小数部分中的密文值。
  9. 根据权利要求7所述的基于模运算的全同态加密处理方法,其特征 在于,步骤(3-4-5)具体为,判断被除数的密文是否大于除数的密文,是从左到右以遍历的方式判断被除数中的每一位是否大于或等于除数中的对应位,如果一旦有其中一位小于除数中的对应位,则表示被除数的密文不是大于除数的密文。
  10. 根据权利要求4至7中任意一项所述的基于模运算的全同态加密处理方法,其特征在于,在密文加法运算中,首先将密文的每一位根据解密公式(密文mod p)mod s求出对应的明文,并将得到的明文按位进行求和相加,接下来判断每个位求和后得到的值是否等于进制,如果等于,则表示出现了进位,此时返回进位值,并返回密文位求和的结果,并且在该密文位的上一位求和过程中加1;如果不等于,则表示没有出现进位,此时返回进位值以及密文位求和的结果,并且在该密文位的上一位求和过程中加0。
PCT/CN2017/112482 2016-12-13 2017-11-23 一种基于模运算的全同态加密处理方法 WO2018107949A1 (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP17880833.3A EP3531611A4 (en) 2016-12-13 2017-11-23 MODULE-BASED COMPLETE HOMOMORPH ENCRYPTION PROCESSING METHOD
JP2019514179A JP6682041B2 (ja) 2016-12-13 2017-11-23 モジュロ演算に基づく完全準同型暗号化の処理方法
US16/106,029 US10868666B2 (en) 2016-12-13 2018-08-21 Fully homomorphic encryption method based on modular operation

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201611145127.8 2016-12-13
CN201611145127.8A CN106452723B (zh) 2016-12-13 2016-12-13 一种基于模运算的全同态加密处理方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US16/106,029 Continuation-In-Part US10868666B2 (en) 2016-12-13 2018-08-21 Fully homomorphic encryption method based on modular operation

Publications (1)

Publication Number Publication Date
WO2018107949A1 true WO2018107949A1 (zh) 2018-06-21

Family

ID=58217890

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2017/112482 WO2018107949A1 (zh) 2016-12-13 2017-11-23 一种基于模运算的全同态加密处理方法

Country Status (5)

Country Link
US (1) US10868666B2 (zh)
EP (1) EP3531611A4 (zh)
JP (1) JP6682041B2 (zh)
CN (1) CN106452723B (zh)
WO (1) WO2018107949A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109921907A (zh) * 2019-02-12 2019-06-21 安徽继远软件有限公司 一种身份认证识别算法和基于该算法的系统
CN112231718A (zh) * 2020-07-13 2021-01-15 广发银行股份有限公司 数据加密处理方法、装置、计算机设备和存储介质
CN112367157A (zh) * 2020-10-31 2021-02-12 深圳供电局有限公司 一种物联网环境加密方法及装置

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106452723B (zh) * 2016-12-13 2017-05-31 深圳市全同态科技有限公司 一种基于模运算的全同态加密处理方法
CN106953722B (zh) * 2017-05-09 2017-11-07 深圳市全同态科技有限公司 一种全同态加密的密文查询方法和系统
CN107294697B (zh) * 2017-07-21 2019-08-13 西安电子科技大学 基于明文相似矩阵的对称全同态加密方法
CN107977193A (zh) * 2017-12-12 2018-05-01 金陵科技学院 一种基于 b/s 架构下的高精度计算方法
CN110335586B (zh) * 2018-03-31 2021-07-02 深圳市掌网科技股份有限公司 一种信息转换方法及系统
CN109190414B (zh) * 2018-08-09 2021-06-15 宁波大学 一种用于乘法器的全同态混淆方法
CN110019075B (zh) * 2018-08-09 2021-08-10 苏州科达科技股份有限公司 日志加密方法与解密方法及装置
CN109190395B (zh) * 2018-08-21 2020-09-04 浙江大数据交易中心有限公司 一种基于数据变换的全同态加密方法及系统
CN109412786B (zh) * 2018-11-14 2022-09-06 沈阳航空航天大学 一种基于同态加密的整数密文算术运算方法
CN113098675B (zh) * 2019-12-23 2023-04-18 郑珂威 基于多项式完全同态的二进制数据加密系统及方法
KR20210147645A (ko) 2020-05-29 2021-12-07 삼성전자주식회사 동형 암호화 장치 및 그것의 암호문 연산 방법
KR20220009643A (ko) 2020-07-16 2022-01-25 삼성전자주식회사 스토리지 컨트롤러, 이를 포함하는 클라이언트 및 서버, 및 이의 동작 방법
CN111885079B (zh) * 2020-07-31 2022-04-12 支付宝(杭州)信息技术有限公司 保护数据隐私的多方联合处理数据的方法及装置
CN112543091B (zh) * 2020-10-26 2022-10-14 中国人民武装警察部队工程大学 密文长度固定的多密钥全同态加密方法
EP4050471A1 (en) * 2021-02-26 2022-08-31 Zama SAS Encrypted scalar multiplication
CN113032848B (zh) * 2021-05-20 2021-08-10 华控清交信息科技(北京)有限公司 一种数据处理方法和用于数据处理的芯片
CN113343262B (zh) * 2021-06-22 2022-10-11 海光信息技术股份有限公司 同态加密装置、同态加密芯片及同态加密方法
JP7187074B1 (ja) * 2021-10-26 2022-12-12 株式会社アクセル 暗号処理装置、暗号処理方法、及び暗号処理プログラム
JP7187076B1 (ja) * 2021-11-26 2022-12-12 株式会社アクセル 暗号処理装置、暗号処理方法、及び暗号処理プログラム
US11856083B2 (en) * 2022-01-06 2023-12-26 International Business Machines Corporation Analysis and debugging of fully-homomorphic encryption
US20230344617A1 (en) * 2022-04-20 2023-10-26 Crypto Lab Inc. Apparatus for bootstrap processing homomorphic encrypted message and method thereof
CN115314600B (zh) * 2022-10-12 2023-01-24 山东沃尔美肥业有限公司 一种化肥生产监控数据管理方法
CN115801224B (zh) * 2023-01-16 2023-04-28 北京隐算科技有限公司 一种云计算环境中支持浮点数运算的全同态加密方法
CN116743349B (zh) * 2023-08-14 2023-10-13 数据空间研究院 一种Paillier密文求和方法、系统、装置和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103259643A (zh) * 2012-08-14 2013-08-21 苏州大学 一种矩阵全同态加密方法
CN105099653A (zh) * 2014-05-20 2015-11-25 华为技术有限公司 分布式数据处理方法、装置及系统
CN105323209A (zh) * 2014-06-05 2016-02-10 江苏博智软件科技有限公司 全同态加密和多重数字水印技术的云数据安全保护方法
US20160357799A1 (en) * 2015-06-02 2016-12-08 Hong Kong Baptist University Structure-Preserving Subgraph Queries
CN106452723A (zh) * 2016-12-13 2017-02-22 深圳市全同态科技有限公司 一种基于模运算的全同态加密处理方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0924895B1 (en) * 1997-12-17 2009-07-08 Nippon Telegraph and Telephone Corporation Encryption and decryption devices for public-key cryptosystems and recording medium with their processing programs recorded thereon
US6785388B1 (en) * 1998-09-16 2004-08-31 Murata Kikai Kabushiki Kaisha Encryption method, decryption method, encryption/decryption method, cryptographic communications system, and computer usable medium
US7532720B2 (en) * 2003-10-15 2009-05-12 Microsoft Corporation Utilizing SIMD instructions within montgomery multiplication
US20050157872A1 (en) * 2003-11-12 2005-07-21 Takatoshi Ono RSA public key generation apparatus, RSA decryption apparatus, and RSA signature apparatus
US7769168B2 (en) * 2005-03-31 2010-08-03 Microsoft Corporation Locally interative encryption generating compliant ciphertext for general syntax specifications
US20060251248A1 (en) * 2005-05-03 2006-11-09 Jesse Lipson Public key cryptographic methods and systems with preprocessing
JP5297918B2 (ja) * 2009-07-03 2013-09-25 日本電信電話株式会社 暗号化数値二進変換システム及び方法とプログラム
US9946810B1 (en) * 2010-04-21 2018-04-17 Stan Trepetin Mathematical method for performing homomorphic operations
US9442980B1 (en) * 2010-04-21 2016-09-13 Stan Trepetin Mathematical method for performing homomorphic operations
CN103392178B (zh) * 2011-11-11 2015-08-26 日本电气株式会社 数据库加密系统、方法和程序
CN104509024B (zh) * 2012-07-26 2018-02-27 Nds有限公司 用于使输入同态随机化的方法和系统
JP6083234B2 (ja) * 2012-12-27 2017-02-22 富士通株式会社 暗号処理装置
JP2016012111A (ja) * 2014-06-30 2016-01-21 富士通株式会社 暗号処理方法、暗号処理装置、および暗号処理プログラム
CN104283669B (zh) * 2014-08-25 2017-07-18 东南大学 全同态加密中重加密深度优化方法
JP2016131335A (ja) * 2015-01-14 2016-07-21 富士通株式会社 情報処理方法、情報処理プログラムおよび情報処理装置
US10581812B2 (en) * 2015-12-01 2020-03-03 Duality Technologies, Inc. Device, system and method for fast and secure proxy re-encryption
US10129029B2 (en) * 2016-06-16 2018-11-13 International Business Machines Corporation Proofs of plaintext knowledge and group signatures incorporating same
US9973342B2 (en) * 2016-06-16 2018-05-15 International Business Machines Corporation Authentication via group signatures
US10833841B2 (en) * 2016-07-13 2020-11-10 Sap Se Leakage-free order-preserving encryption

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103259643A (zh) * 2012-08-14 2013-08-21 苏州大学 一种矩阵全同态加密方法
CN105099653A (zh) * 2014-05-20 2015-11-25 华为技术有限公司 分布式数据处理方法、装置及系统
CN105323209A (zh) * 2014-06-05 2016-02-10 江苏博智软件科技有限公司 全同态加密和多重数字水印技术的云数据安全保护方法
US20160357799A1 (en) * 2015-06-02 2016-12-08 Hong Kong Baptist University Structure-Preserving Subgraph Queries
CN106452723A (zh) * 2016-12-13 2017-02-22 深圳市全同态科技有限公司 一种基于模运算的全同态加密处理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3531611A4 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109921907A (zh) * 2019-02-12 2019-06-21 安徽继远软件有限公司 一种身份认证识别算法和基于该算法的系统
CN109921907B (zh) * 2019-02-12 2023-11-07 国网安徽省电力有限公司电力科学研究院 一种身份认证识别算法和基于该算法的系统
CN112231718A (zh) * 2020-07-13 2021-01-15 广发银行股份有限公司 数据加密处理方法、装置、计算机设备和存储介质
CN112231718B (zh) * 2020-07-13 2024-03-12 广发银行股份有限公司 数据加密处理方法、装置、计算机设备和存储介质
CN112367157A (zh) * 2020-10-31 2021-02-12 深圳供电局有限公司 一种物联网环境加密方法及装置
CN112367157B (zh) * 2020-10-31 2023-05-12 深圳供电局有限公司 一种物联网环境加密方法及装置

Also Published As

Publication number Publication date
JP2019517684A (ja) 2019-06-24
EP3531611A1 (en) 2019-08-28
US20180359079A1 (en) 2018-12-13
CN106452723A (zh) 2017-02-22
JP6682041B2 (ja) 2020-04-15
EP3531611A4 (en) 2019-11-27
US10868666B2 (en) 2020-12-15
CN106452723B (zh) 2017-05-31

Similar Documents

Publication Publication Date Title
WO2018107949A1 (zh) 一种基于模运算的全同态加密处理方法
Carlet Boolean functions for cryptography and coding theory
JP6783877B2 (ja) 完全準同型暗号化の暗号化テキストのクエリメソッド及びシステム
WO2020253234A1 (zh) 实现隐私保护的数据同态加解密方法及装置
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
JP2020074039A (ja) データを暗号化する方法およびシステム
GB2549981A (en) A public key cryptosystem based on the partitioning of elements of vectors
Shoufan et al. A novel cryptoprocessor architecture for the McEliece public-key cryptosystem
Coron et al. High order masking of look-up tables with common shares
EP2742644A1 (en) Encryption and decryption method
Shantha et al. Analysis and implementation of ECC algorithm in lightweight device
Chen et al. Integer arithmetic over ciphertext and homomorphic data aggregation
Wu et al. ElGamal algorithm for encryption of data transmission
Childs Cryptology and Error Correction
Rentería-Mejía et al. Lattice-based cryptoprocessor for CCA-secure identity-based encryption
US20040174995A1 (en) Cryptosystems
WO2020152831A1 (ja) 情報処理装置、秘密計算方法及びプログラム
Babenko et al. Euclidean division method for the homomorphic scheme ckks
Huang et al. A black-box construction of strongly unforgeable signature schemes in the bounded leakage model
Raharinirina Use of Signed Permutations in Cryptography
Shiriaev et al. Efficient implementation of the CKKS scheme using a quadratic residue number system
JP2010186075A (ja) 整数の暗号化及び復号化方法
Ariffin et al. AA β public key cryptosystem-A comparative analysis against RSA and ECC
JP2015132690A5 (zh)
US7480380B2 (en) Method for efficient generation of modulo inverse for public key cryptosystems

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2019514179

Country of ref document: JP

Kind code of ref document: A

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17880833

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2017880833

Country of ref document: EP

Effective date: 20190715