CN102314580A - 一种基于向量和矩阵运算的支持计算的加密方法 - Google Patents

一种基于向量和矩阵运算的支持计算的加密方法 Download PDF

Info

Publication number
CN102314580A
CN102314580A CN201110276038A CN201110276038A CN102314580A CN 102314580 A CN102314580 A CN 102314580A CN 201110276038 A CN201110276038 A CN 201110276038A CN 201110276038 A CN201110276038 A CN 201110276038A CN 102314580 A CN102314580 A CN 102314580A
Authority
CN
China
Prior art keywords
vector
prime
data
result
matrix
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
CN201110276038A
Other languages
English (en)
Inventor
桂小林
黄汝维
余思
庄威
刘阳
林建材
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Jiaotong University
Original Assignee
Xian Jiaotong University
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 Xian Jiaotong University filed Critical Xian Jiaotong University
Priority to CN201110276038A priority Critical patent/CN102314580A/zh
Publication of CN102314580A publication Critical patent/CN102314580A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明提供一种基于向量和矩阵运算的支持计算的加密方法,包括以下步骤:1:将原始数据转换为向量,并通过加密矩阵进行加密,从而得到一个加密的外包向量;2:将计算参数转换为向量,并通过加密矩阵进行加密,从而得到一个加密的计算参数向量;3:对加密的外包向量和计算参数向量进行标量积、加、减、乘运算,从而得到加密的计算结果;4:用户通过加密矩阵与加密的计算结果的运算,得到计算结果的明文。本发明无论在数据加密或加密数据的运算中始终是一种具有IND-COA安全性的加密方案,起到了保护用户隐私的作用;同时,在加密字符串的模糊检索中表现出了良好的运行性能,在服务提供者处的计算性能良好,并具有适中的存储和通信负载。

Description

一种基于向量和矩阵运算的支持计算的加密方法
技术领域
本发明涉及计算机技术领域,特别涉及一种支持计算的数据加密方法。
背景技术
云计算以服务的形式向用户提供按需的、可扩展的、满足服务质量要求的计算和存储资源,而用户只需要通过上网设备就能随时随地地使用这些资源。面对云计算如此强大的优势,个人和企业却很犹豫是否要从个人电脑或企业的数据中心迁移到云环境中,其主要原因是人们担心失去了对数据和计算的控制力。而目前发生的多起云服务商泄露和丢失用户数据的事件证实了人们的担心:在2009年,Google的Docs由于软件缺陷使得用户数据遭到无授权用户的访问,发生了数据泄露;在2008年,云存储服务提供商MediaMax由于系统管理员的失误丢失了45%的用户数据从而倒闭;在2007年,攻击者使用钓鱼攻击的方法,成功地盗取了云服务提供商Salesforce.com存储的用户Email和地址信息。因此,为了持续和深入地发展,云计算必须解决隐私安全问题。
加密是一种常用的保护用户敏感数据的方法。支持计算的加密技术是一种加密方法,它通过加密保证数据安全,同时加密后的数据能够支持某些计算。目前已有的支持计算的加密技术可分为两类:支持检索的加密技术和支持运算的加密技术。
支持检索的加密技术:Liu提出了一种基于对称加密的密文检索方法;Wang等人提出了基于非对称加密的密文检索方法;Ohtaki等人提出了基于Bloom Filter的密文检索方法。但这些方法只支持精确的字符串匹配,即两字符串是否相等。然而,在许多实际的情况下,错别字和格式不一致是不可避免的,因此,Jin等人设计了一个支持对加密关键字进行模糊检索的方案,它使用编辑距离来量化关键字的相似度,并为每个关键字附加一个基于通配符的模糊关键字组。该方法的不足是它不能对满足检索条件的关键字进行相似度排序,而且会产生较大的计算、存储和通信负载。对于一个长度为len的关键字w,为了使它能处理d位的错别字和格式不一致,需要进行O(lend)次哈希运算和产生O(lend*160)位的存储和通信负载。Cong等人提出一个分级的关键字检索方案。该方案基于保序的加密技术OPSE,能够根据某一指标对检索的关键字分级,并按用户的要求返回前N个符合要求的结果。该方案要求数据拥有者在外包文件前对每个文件进行全文扫描,计算出每个关键字在该文件中的出现频率,这对于数据拥有者来说是一件非常麻烦的事情。Hacigümüs等人提出了基于同态加密技术的密文聚集查询方案,但是它要求数据拥有者自己建立一个加密的索引表。
支持运算的加密方法:Rakesh等人提出一个针对数值数据的保序的对称加密算法OPSE,它支持对加密数据进行各种比较操作。但是OPSE是一种确定性的加密方案,这使得它不具有语义安全性,而且只能用于数值数据,不适合于字符串的比较。Wong等人设计了一个基于向量标量积的非对称加密方案,该方案支持对加密数据库进行KNN(k-nearest neighbor)计算。除此之外,目前已有一些同态加密算法,例如unpadded RSA、ElGamal、Goldwasser-Micali、Benaloh和Paillier等,但它们只支持加法同态和乘法同态运算中的一种。Gentry首次设计出了一种基于理想格的全同态加密方案,该方案能同时支持加法和乘法同态。之后,VanDijk等人对Gentry的工作进行了改进。但是目前已有的全同态方案都太复杂且计算量太大,还不适合应用到云计算的环境中。
根据以上分析,我们发现:(i)目前还没有一种加密方案能够同时支持字符串的检索和数值数据(包括整数和浮点数)的算术运算;(ii)对加密字符串的模糊检索是一种非常有用的技术,但目前还没有一个实际可行的方案;(iii)加密数值数据的算术运算对于密码学领域一直是一个挑战;(iv)目前已有的一些方案往往要求数据拥有者在数据外包前做大量的准备工作,这会使用户的使用体验大打折扣。
发明内容
本发明的目的是提供一种基于向量和矩阵运算的支持计算的加密方法,该方法基于向量和矩阵运算,支持对加密字符串的模糊检索和对加密数值数据的基本算术运算。
本发明的目的是通过以下技术方案来实现的:
一种基于向量和矩阵运算的支持计算的加密方法,,包括以下步骤:
步骤一:将原始数据转换为向量,并通过加密矩阵进行加密,从而得到一个加密的外包向量;
步骤二:将计算参数转换为向量,并通过加密矩阵进行加密,从而得到一个加密的计算参数向量;
步骤三:对加密的外包向量和计算参数向量进行标量积、加、减、乘等运算,从而得到加密的计算结果;
步骤四:用户通过加密矩阵与加密的计算结果的运算,得到计算结果的明文。
步骤一具体包括:
一、字符串
(1)字符串转换为向量
数据拥有者首先生成字符串np的带通配符的子串,其基本步骤为按照空格将字符串分割,再根据各个子串在字符串中的位置加上通配符;然后,数据拥有者对字符串np和其带通配符的子串执行以下操作:计算元素组ce由n个元素组成,算法允许的字符串最大长度为len,np的长度为len’,首先为np连接len-len’个零从而形成np’,然后将np’分为(n-1)段;对于第i段,将其中每个字符转换为对应的ASCII码减去23,从而确保了每一个字符都用一个两位数来表示;接着将每个字符的对应两位数连接起来,中间用数字“0”间隔,形成数字vi,再计算vi’=vi*10m,其中m表示后面的(n-1-i)段的长度和;通过以上运算,数据拥有者将字符串np转换为一个(n-1)维的向量p=(v1′,v2′,...,v′n-1);
(2)外包字符串的加密
密钥由一个随机数组W={w1,w2,...,wk-3,wk-2}(k≥4,wi∈R),和一个d*d可逆矩阵M组成;假设外包字符串npi对应的向量为pi;数据拥有者创建一个d维的向量 p i ′ = ( p i , - 0.5 * | | p i | | 2 , r 1 , w 2 , . . r k - 3 , w k - 2 , - ( Σ j = 1 2 * t - 1 r j * w j ) , 1 ) T , 其中t∈[1,k/2-1],||pi||是pi的标量积,rj是随机数且rj∈R;也就是说,计算元素组ce={pi,-0.5*||pi||2},随机元素组为 re = ( r 1 , w 2 , . . . , r k - 3 , w k - 2 , - ( Σ j = 1 2 * t - 1 r j * w j ) , 1 ) ; 然后数据拥有者加密向量pi’得到Pi=M*pi’,并将Pi存储到服务提供者处;
二、数值数据
对数值数据的操作分为四种基本算术运算:加法、减法、乘法和除法;为了实现加/减法和乘/除法,计算元素组cs由加法因子addF和乘法因子mulF组成,其中addF由da(da∈Z+且da≥1)个元素组成,mulF由dm(dm∈Z+且dm≥2)个元素组成;也就是说,ce=(addF,mulF)且n=da+dm
转换一个数值数据np为d维向量的过程可以分为以下四步:首先,选择(da-1)个随机实数 { ar p 1 , ar p 2 , . . . , ar p ( d a - 1 ) } , 并计算 ar pd a = np - Σ i = 1 d a - 1 ar pi , 从而得到一个da维的向量
Figure BDA0000092492860000045
然后,随机选择(dm-1)个随机实数其中每个实数的倒数都是有限小数,计算
Figure BDA0000092492860000048
也是一个有限小数;这样,数据拥有者就将p转换为一个(da+dm)维的向量 p ′ = ( ar p 1 , ar p 2 , . . . , ar pd a , mr p 1 , mr p 2 , . . . , mr pd m ) T ; 第三步,数据拥有者通过加入随机元素组re扩充p’从而构成了一个(da+dm+k)维的向量 p ′ ′ = ( ar p 1 , ar p 2 , . . . , ar pd a , mr p 1 , mr p 2 , . . . , mr pd m , r p 1 , . . . , r pk ) T , 其中k∈Z+,rpj是随机实数;最后,数据拥有者使用一个d*d可逆矩阵M作为密钥加密p”形成了外包向量P=M*p”,并存储到服务提供者的服务器上;数据使用者转换检索参数为向量的步骤与数据拥有者的步骤一样;只是在进行加/减法运算时,数据使用者可以设置
步骤二具体包括:
(1)、字符串
当数据使用者检索关键字nq时,首先选择一个随机数r(r>0且r∈R)并根据步骤一中字符串转换方法生成对应的向量q,然后将q扩充为一个d维向量 q ′ = r * ( q , 1 , w 1 , r 2 , . . . , w k - 3 , r k - 2 , 1 , - ( Σ j = 2 2 t r j * w j ) ) T , 其中t∈[1,k/2-1],rj是随机数且rj∈R;也就是说,ce′={q,1}, re ′ = ( w 1 , r 2 , . . . , w k - 3 , r k - 2 , 1 , - ( Σ j = 2 2 t r j * w j ) ) ; 然后数据使用者加密q’得到Q=(MT)-1*q’并提交给服务提供者;
(2)、数值数据
对于计算参数nq:首先,选择(da-1)个随机实数
Figure BDA0000092492860000055
并计算 ar qd a = nq - Σ i = 1 d a - 1 ar qi , 从而得到一个da维的向量 q = ( ar q 1 , ar q 2 , . . . , ar qd a ) T ; 然后,随机选择(dm-1)个随机实数
Figure BDA0000092492860000058
其中每个实数的倒数都是有限小数,计算
Figure BDA0000092492860000059
Figure BDA00000924928600000510
也是一个有限小数;这样,数据拥有者就将q转换为一个(da+dm)维的向量 q ′ = ( ar q 1 , ar q 2 , . . . , ar qd a , mr q 1 , mr q 2 , . . . , mr qd m ) T ; 第三步,数据拥有者通过加入随机元素组re扩充q’从而构成了一个(da+dm+k)维的向量 q ′ ′ = ( ar q 1 , ar q 2 , . . . , ar qd a , mr q 1 , mr q 2 , . . . , mr qd m , r q 1 , . . . , r qk ) T , 其中k∈Z+,rqj是随机实数;最后,数据拥有者加密q”形成了外包向量Q=M*q”,并存储到服务提供者的服务器上。
步骤三具体包括:
一、加密字符串的检索
当服务提供者接到请求时,对数据使用者权限范围内的Pi进行如下运算:
( Q ) T * P i = ( ( M T ) - 1 q ′ ) T * M * p i ′ ( q ′ ) T * M - 1 * M * p i ′ = ( q ′ ) T p i ′
= r * ( q , 1 , w 1 , r 2 , . . . , w t - 3 , r t - 2 , 1 , - Σ j = 2 2 * t r j * w j ) *
( p i , - 0.5 | | p i | | 2 , r 1 , w 2 , . . . , r k - 3 , w k - 2 , - ( Σ j = 1 2 * t - 1 r j * w j ) , 1 ) T - - - ( 1 )
= r * ( p i * q - 0.5 | | p i | | 2 + Σ j = 1 2 k r j * w j - Σ j = 1 2 k r j * w j )
= r * ( p i * q - 0.5 | | p i | | 2 ) .
然后服务提供者通过对Pi和Q的标量积的排序从而实现对加密关键字的模糊检索。
二、加密数值数据的运算
(1)加法
服务提供者直接对P和Q执行加法运算:
P + Q = M * p ′ ′ + M * q ′ ′
= M * [ ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) T + ( ar q 1 , . . . , ar qd a , mr q 1 , . . . , mr qd m , r q 1 , . . . , r qk ) T ] - - - ( 4 )
= M * ( ( ar p 1 + ar q 1 ) , . . . , ( ar pd a + ar qd a ) , ( mr p 1 + mr q 1 ) , . . . , ( mr pd m + mr qd m ) , ( r p 1 + r q 1 ) , . . . , ( r pk + r qk ) ) T
然后,服务提供者将计算结果返回给数据使用者;
(2)减法
服务提供者直接对P和Q执行减法运算:
P - Q = M * p ′ ′ - M * q ′ ′
= M * [ ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) T - ( ar q 1 , . . . , ar qd a , mr q 1 , . . . , mr qd m , r q 1 , . . . , r qk ) T ] - - - ( 6 )
= M * ( ( ar p 1 - ar q 1 ) , . . . , ( ar pd a - ar qd a ) , ( mr p 1 - mr q 1 ) , . . . , ( mr pd m - mr qd m ) , ( r p 1 - r q 1 ) , . . . , ( r pk - r qk ) ) T
然后,服务提供者将计算结果返回给数据使用者;
(3)乘法
服务提供者可以对P和Q进行如下操作:
P * ( Q ) T = M * p ′ ′ * ( M * q ′ ′ ) T = M * p ′ ′ * ( q ′ ′ ) T * M T (11)
= M * ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) T * ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) * M T
公式(11)的结果是一个(da+dm+k)*(da+dm+k)矩阵;服务提供者将结果返回给数据使用者;
(4)除法
服务提供者首先按照公式(11)对P和Q进行运算,然后将结果返回给数据使用者。
步骤四具体包括:
一、字符串
数据使用者收到服务提供者检索结果的密文为Pi,则有:Pi’=(M)-1*Pi=(M)-1*M*pi’=pi’;取pi’的前(n-1)个元素,构成(n-1)维向量p=(v1′,v2′,...,v′n-1);对p中的每个元素进行如下计算:vi=vi’/10m,其中m表示后面的(n-1-i)段的长度和;从左至右,将vi中每隔两位后的“0”去掉,然后每两位形成的数字加上23并转换为一个字符cij,连接起来形成一个字符子串:ci=ci1·ci2·...·ci(len-len’)/(n-1),其中“·”表示连接;由(n-1)个子串构成了原字符串的明文:c=c1·c2·...·c(n-1)
二、数值数据
(1)加法
数据使用者对结果解密:
M - 1 * ( P + Q )
= M - 1 * M * ( ( ar p 1 + ar q 1 ) , . . . , ( ar pd a + ar qd a ) , ( mr p 1 + mr q 1 ) , . . . ,
( mr pd m + mr qd m ) , ( r p 1 + r q 1 ) , . . . , ( r pk + r qk ) ) T - - - ( 5 )
= ( ( ar p 1 + ar q 1 ) , . . . , ( ar pd a + ar qd a ) , ( mr p 1 + mr q 1 ) , . . . ,
( mr pd m + mr qd m ) , ( r p 1 + r q 1 ) , . . . , ( r pk + r qk ) ) T .
通过公式(5),数据使用者得到一个d维向量,再通过公式
Figure BDA0000092492860000086
将向量的前da个元素相加从而得到最后的结果;
(2)减法
数据使用者对结果进行解密:
M - 1 * ( P - Q )
= M - 1 * M * ( ( ar p 1 - ar q 1 ) , . . . , ( ar pd a - ar qd a ) , ( mr p 1 - mr q 1 ) , . . . ,
( mr pd m - mr qd m ) , ( r p 1 - r q 1 ) , . . . , ( r pk - r qk ) ) T - - - ( 7 )
= ( ( ar p 1 - ar q 1 ) , . . . , ( ar pd a - ar qd a ) , ( mr p 1 - mr q 1 ) , . . . ,
( mr pd m - mr qd m ) , ( r p 1 - r q 1 ) , . . . , ( r pk - r qk ) ) T .
通过公式(7),数据使用者得到一个d维向量,再通过公式
Figure BDA00000924928600000812
将向量的前da个元素相加从而得到最后的结果;
(3)乘法
数据使用者对结果进行解密:
M - 1 * P * ( Q ) T ( M T ) - 1
= M - 1 * M * ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) T * (12)
( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) * M T * ( M T ) - 1
= ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) T * ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk )
公式(12)的计算结果是一个(da+dm+k)*(da+dm+k)矩阵,用matrix表示,接下来,数据使用者通过公式 Σ i = 1 d a Σ j = 1 d a matrix [ i ] [ j ] Π i = d a + 1 d a + d m matrix [ i ] [ j ] 计算得到最终结果;
(4)除法
数据使用者根据公式(12)对结果进行解密得到矩阵matrix,为了得到最后的结果,数据使用者还需要按照以下步骤进行处理:
i ) , Π i = d a + 1 d a + d m ( Σ j = 1 d a matrix [ j ] [ i ] ) = np d m * nq - - - ( 16 )
ii ) , Π i = d a + 1 d a + d m ( Σ j = 1 d a matrix [ i ] [ j ] ) = np * nq d m - - - ( 17 )
iii ) , d m - 1 np d m * nq np * nq d m = d m - 1 np d m - 1 nq d m - 1 = np / nq - - - ( 18 )
公式(18)的结果就是最后的明文结果。
本发明具有以下有益效果:本发明一种基于向量和矩阵运算的支持计算的加密方法,通过安全分析和性能评估证明,无论在数据加密或加密数据的运算中始终是一种具有IND-COA(Indistinguishability under Ciphertext-only Attack)安全性的加密方案,起到了保护用户隐私的作用;同时,本发明方法在加密字符串的模糊检索中表现出了良好的运行性能,在服务提供者处的计算性能良好,并具有适中的存储和通信负载。
附图说明
图1为本发明方法中数据拥有者、服务提供者和数据使用者之间进行数据加密、储存、检索、运算、解密而构建起来的框架示意图。
具体实施方式
下面结合附图和具体实施实例对本发明做进一步的详细说明。
本发明一种基于向量和矩阵运算的支持计算的加密方法CESVMC(computable encryption scheme based on vector and matrix calculations)的框架如图1所示。该方案首先通过构建一个由计算元素组和随机元素组组成的向量,通过与加密矩阵运算得到加密向量,从而将原始数据转换为一个向量,该向量通过引入随机数,使得其具有不可区分性和多项式时间内无法破解性;其次,在进行字符串模糊匹配的过程中,利用了外包字符串与检索参数之间的距离之差来实现排序从而实现模糊查询,攻击者是无法得到外包字符串与查询字符串之间的距离,从而使得该方案无法通过距离之差而推断出对应的明文;再次,在进行数值数据的算术运算的过程中,计算的结果始终是加密的,攻击者在没有加密矩阵的情况下是无法解密的,且由于加密方案是非确定性的,计算的过程也没有破坏这种非确定性,使得即使结果也具有不确定性。CESVMC的基本框架如下:
(i)密钥(Key):密钥由一个随机数组W={w1,w2,...,wk-3,wk-2}(k≥4,wi∈R),和一个d*d可逆矩阵M组成。
(ii)外包数据的加密:将一个外包数据转换为一个d维向量p=(ce,re),其中ce是由n个元素组成的计算元素组,re是由k个元素组成的随机元素组,re的构造与W有关,d=n+k;然后,加密p得到外包向量P=M*p.
(iii)计算参数的加密:首先选择一个随机数r(r∈R),然后将计算参数转换为一个d维向量q=r*(ce’,re’),其中ce’是由n个元素组成的计算元素组,re’是由k个元素组成的随机元素组,re’的构造与W有关。然后,加密q得到计算参数向量Q=Mx*q,(x=1,T,-1),其中x标识了矩阵的类型,例如,当x=T时,表示M的转置矩阵;当x=1时,表示M;当x=-1时,表示M的逆矩阵。
(iv)对加密数据的计算:根据计算类型的不同,对P和Q进行不同的运算,主要有求和、差、标量积和向量乘等运算。
(v)对计算结果解密:使用可逆矩阵M与加密的计算结果进行运算,从而可得到计算结果的明文。
图1中反映了框架中的参与者,即数据拥有者(Owner),数据使用者(User)和服务提供者(Service Provider,SP)之间的交互,具体过程如下:
(i)Owner用加密算法CESVMC对敏感的数据i(i∈[1,n],n≥1)加密得到CESVMC(数据i),然后存储到SP的服务器上;
(ii)User获得Owner的授权后,对敏感计算参数加密得到CESVMC(参数),并将CESVMC(参数)和计算类型提交给SP;
(iii)SP验证User的权限,然后根据User的计算要求,对其权限范围的CESVMC(数据i)和计算参数CESVMC(参数)进行计算,得到计算结果CESVMC(结果),并将CESVMC(结果)返回给User。
(iv)User对CESVMC(结果)进行解密,得到结果的明文。
基于以上框架将具体描述CESVMC的实现步骤。
步骤一:将原始数据转换为向量,并通过加密矩阵进行加密,从而得到一个加密的外包向量;
1、字符串
(1)字符串转换为向量
假设有一个字符串np,数据拥有者首先生成np的带通配符的子串。其基本思想是按照空格将字符串分割,再根据各个子串在字符串中的位置加上通配符。例如,字符串“cloud computing”对应的带通配符的子串分别为:“*cloud*”,“cloud*”,“*computing”,“*computing*”。然后,数据拥有者对字符串np和其带通配符的子串执行以下操作:假设计算元素组ce由n个元素组成,算法允许的字符串最大长度为len,np的长度为len’,首先为np连接len-len’个零从而形成np’,然后将np’分为(n-1)段。对于第i段,将其中每个字符转换为对应的ASCII码减去23,从而确保了每一个字符都用一个两位数来表示;接着将每个字符的对应两位数连接起来,中间用数字”0”间隔,形成数字vi,再计算vi’=vi*10m,其中m表示后面的(n-1-i)段的长度和。通过以上运算,数据拥有者将字符串np转换为一个(n-1)维的向量p=(v1′,v2′,...,v′n-1)。当数据使用者准备发出检索请求时,他也是用同样的方法来转换检索参数。
(2)外包字符串的加密
密钥由一个随机数组W={w1,w2,...,wk-3,wk-2}(k≥4,wi∈R),和一个d*d可逆矩阵M组成;假设假设外包字符串npi对应的向量为pi。数据拥有者创建一个d维的向量 p i ′ = ( p i , - 0.5 * | | p i | | 2 , r 1 , w 2 , . . r k - 3 , w k - 2 , - ( Σ j = 1 2 * t - 1 r j * w j ) , 1 ) T , 其中t∈[1,k/2-1],||pi||是pi的标量积,rj是随机数且rj∈R。也就是说,计算元素组ce={pi,-0.5*||pi||2},随机元素组为 re = ( r 1 , w 2 , . . . , r k - 3 , w k - 2 , - ( Σ j = 1 2 * t - 1 r j * w j ) , 1 ) . 然后数据拥有者加密向量pi’得到Pi=M*pi’,并将Pi存储到服务提供者处。
2、数值数据
对数值数据的操作可以简单地分为四种基本算术运算:加法、减法、乘法和除法。为了实现加/减法和乘/除法,计算元素组cs由加法因子addF和乘法因子mulF组成,其中addF由da(da∈Z+且da≥1)个元素组成,mulF由dm(dm∈Z+且dm≥2)个元素组成。也就是说,ce=(addF,mulF)且n=da+dm.
转换一个数值数据np为d维向量的过程可以分为以下四步:首先,选择(da-1)个随机实数 { ar p 1 , ar p 2 , . . . , ar p ( d a - 1 ) } , 并计算 ar pd a = np - Σ i = 1 d a - 1 ar pi , 从而得到一个da维的向量然后,随机选择(dm-1)个随机实数
Figure BDA0000092492860000126
其中每个实数的倒数都是有限小数,计算
Figure BDA0000092492860000127
Figure BDA0000092492860000128
也是一个有限小数。这样,数据拥有者就将p转换为一个(da+dm)维的向量 p ′ = ( ar p 1 , ar p 2 , . . . , ar pd a , mr p 1 , mr p 2 , . . . , mr pd m ) T . 第三步,数据拥有者通过加入随机元素组re扩充p’从而构成了一个(da+dm+k)维的向量 p ′ ′ = ( ar p 1 , ar p 2 , . . . , ar pd a , mr p 1 , mr p 2 , . . . , mr pd m , r p 1 , . . . , r pk ) T , 其中k∈Z+,rpj是随机实数。最后,数据拥有者使用一个d*d可逆矩阵M作为密钥加密p”形成了外包向量P=M*p”,并存储到服务提供者的服务器上。数据使用者转换检索参数为向量的步骤与数据拥有者的步骤一样。只是在进行加/减法运算时,数据使用者可以设置
Figure BDA0000092492860000132
步骤二:将计算参数转换为向量,并通过加密矩阵进行加密,从而得到一个加密的计算参数向量;
1、字符串
当数据使用者想检索关键字nq时,他首先选择一个随机数r(r>0且r∈R)并根据以上字符串转换方法生成对应的向量q,然后将q扩充为一个d维向量 q ′ = r * ( q , 1 , w 1 , r 2 , . . . , w k - 3 , r k - 2 , 1 , - ( Σ j = 2 2 t r j * w j ) ) T , 其中t∈[1,k/2-1],rj是随机数且rj∈R。也就是说,ce′={q,1}, re ′ = ( w 1 , r 2 , . . . , w k - 3 , r k - 2 , 1 , - ( Σ j = 2 2 t r j * w j ) ) . 然后数据使用者加密q’得到Q=(MT)-1*q’并提交给服务提供者。
2、数值数据
对于计算参数nq:首先,选择(da-1)个随机实数
Figure BDA0000092492860000135
并计算 ar qd a = nq - Σ i = 1 d a - 1 ar qi , 从而得到一个da维的向量 q = ( ar q 1 , ar q 2 , . . . , ar qd a ) T ; 然后,随机选择(dm-1)个随机实数其中每个实数的倒数都是有限小数,计算
Figure BDA0000092492860000139
也是一个有限小数;这样,数据拥有者就将q转换为一个(da+dm)维的向量 q ′ = ( ar q 1 , ar q 2 , . . . , ar qd a , mr q 1 , mr q 2 , . . . , mr qd m ) T ; 第三步,数据拥有者通过加入随机元素组re扩充q’从而构成了一个(da+dm+k)维的向量 q ′ ′ = ( ar q 1 , ar q 2 , . . . , ar qd a , mr q 1 , mr q 2 , . . . , mr qd m , r q 1 , . . . , r qk ) T , 其中k∈Z+,rqj是随机实数;最后,数据拥有者加密q”形成了外包向量Q=M*q”,并存储到服务提供者的服务器上。
接下来,我们将阐述如何实现各种算术运算。
步骤三:对加密的外包向量和计算参数向量进行运算,从而得到加密的计算结果;
1、加密字符串的检索
当服务提供者接到请求时,他将对数据使用者权限范围内的Pi进行如下运算:
( Q ) T * P i = ( ( M T ) - 1 q ′ ) T * M * p i ′ ( q ′ ) T * M - 1 * M * p i ′ = ( q ′ ) T p i ′
= r * ( q , 1 , w 1 , r 2 , . . . , w t - 3 , r t - 2 , 1 , - Σ j = 2 2 * t r j * w j ) *
( p i , - 0.5 | | p i | | 2 , r 1 , w 2 , . . . , r k - 3 , w k - 2 , - ( Σ j = 1 2 * t - 1 r j * w j ) , 1 ) T - - - ( 1 )
= r * ( p i * q - 0.5 | | p i | | 2 + Σ j = 1 2 k r j * w j - Σ j = 1 2 k r j * w j )
= r * ( p i * q - 0.5 | | p i | | 2 ) .
然后服务提供者比较标量积的值,其值越大,nq与npi越相似。其原因如下:
假设P1和P2是两个外包字符串np1和np2对应的加密向量,Q是检索参数nq的加密向量:
(Q)T*P1-(Q)T*P2=r*(p1*q-0.5*||p1||2-p2*q+0.5*||p2||2)
=r*(p1*q-0.5*||p1||2-p2*q+0.5*||p2||2-0.5*||q||2+0.5*||q||2)
=-0.5*r*(||p1||2-2p1q+||q||2)+0.5*(||p2||2-2p2q+||q||2)       (2)
=0.5*r*[d(p2,q)-d(p1,q)]
由(2)得:
0.5 * ( d ( p 2 , q ) - d ( p 1 , q ) ) > 0 ⇔ d ( p 2 , q ) > d ( p 1 , q ) . - - - ( 3 )
d(p,q)表示向量p和q的欧几里得距离。所以服务提供者可以通过对Pi和Q的标量积的排序从而实现对加密关键字的模糊检索。
2、加密数值数据的运算
(1)加法
服务提供者直接对P和Q执行加法运算:
P + Q = M * p ′ ′ + M * q ′ ′
= M * [ ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) T + ( ar q 1 , . . . , ar qd a , mr q 1 , . . . , mr qd m , r q 1 , . . . , r qk ) T ] - - - ( 4 )
= M * ( ( ar p 1 + ar q 1 ) , . . . , ( ar pd a + ar qd a ) , ( mr p 1 + mr q 1 ) , . . . , ( mr pd m + mr qd m ) , ( r p 1 + r q 1 ) , . . . , ( r pk + r qk ) ) T
然后,服务提供者将计算结果返回给数据使用者。
(2)减法
服务提供者直接对P和Q执行减法运算:
P - Q = M * p ′ ′ - M * q ′ ′
= M * [ ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) T - ( ar q 1 , . . . , ar qd a , mr q 1 , . . . , mr qd m , r q 1 , . . . , r qk ) T ] - - - ( 6 )
= M * ( ( ar p 1 - ar q 1 ) , . . . , ( ar pd a - ar qd a ) , ( mr p 1 - mr q 1 ) , . . . , ( mr pd m - mr qd m ) , ( r p 1 - r q 1 ) , . . . , ( r pk - r qk ) ) T
然后,服务提供者将计算结果返回给数据使用者。
(3)乘法
服务提供者可以对P和Q进行如下操作:
P * ( Q ) T = M * p ′ ′ * ( M * q ′ ′ ) T = M * p ′ ′ * ( q ′ ′ ) T * M T (11)
= M * ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) T * ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) * M T
公式(11)的结果是一个(da+dm+k)*(da+dm+k)矩阵。服务提供者将结果返回给数据使用者。
(4)除法
服务提供者首先按照公式(11)对P和Q进行运算,然后将结果返回给数据使用者。
步骤四:数据使用者通过加密矩阵与加密的计算结果的运算,得到计算结果的明文;
1、字符串
假设检索结果的密文为Pi,则有:Pi’=(M)-1*Pi=(M)-1*M*pi’=pi’。取pi’的前(n-1)个元素,构成(n-1)维向量p=(v1′,v2′,...,v′n-1);对p中的每个元素进行如下计算:vi=vi’/10m,其中m表示后面的(n-1-i)段的长度和。从左至右,将vi中每隔两位后的“0”去掉,然后每两位形成的数字加上23并转换为一个字符cij,连接起来形成一个字符子串:ci=ci1·ci2·...·ci(len-len’)/(n-1),其中“·”表示连接。由(n-1)个子串构成了原字符串的明文:c=c1·c2·...·c(n-1)
2、数值数据
(1)加法
数据使用者对结果解密:
M - 1 * ( P + Q )
= M - 1 * M * ( ( ar p 1 + ar q 1 ) , . . . , ( ar pd a + ar qd a ) , ( mr p 1 + mr q 1 ) , . . . ,
( mr pd m + mr qd m ) , ( r p 1 + r q 1 ) , . . . , ( r pk + r qk ) ) T - - - ( 5 )
= ( ( ar p 1 + ar q 1 ) , . . . , ( ar pd a + ar qd a ) , ( mr p 1 + mr q 1 ) , . . . ,
( mr pd m + mr qd m ) , ( r p 1 + r q 1 ) , . . . , ( r pk + r qk ) ) T .
通过(5),数据使用者得到一个d维向量,于是他通过公式
Figure BDA0000092492860000166
将向量的前da个元素相加从而得到最后的结果。该方案支持在不解密的情况下进行多次加法操作。
(2)减法
数据使用者对结果进行解密:
M - 1 * ( P - Q )
= M - 1 * M * ( ( ar p 1 - ar q 1 ) , . . . , ( ar pd a - ar qd a ) , ( mr p 1 - mr q 1 ) , . . . ,
( mr pd m - mr qd m ) , ( r p 1 - r q 1 ) , . . . , ( r pk - r qk ) ) T - - - ( 7 )
= ( ( ar p 1 - ar q 1 ) , . . . , ( ar pd a - ar qd a ) , ( mr p 1 - mr q 1 ) , . . . ,
( mr pd m - mr qd m ) , ( r p 1 - r q 1 ) , . . . , ( r pk - r qk ) ) T .
通过(7),数据使用者得到一个d维向量,于是他通过公式
Figure BDA0000092492860000171
将向量的前da个元素相加从而得到最后的结果。该方案支持在不解密的情况下进行多次减法操作。
(3)乘法
数据使用者对结果进行解密:
M - 1 * P * ( Q ) T ( M T ) - 1
= M - 1 * M * ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) T * (12)
( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) * M T * ( M T ) - 1
= ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) T * ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk )
公式(12)的计算结果也是一个(da+dm+k)*(da+dm+k)矩阵,用matrix表示。接下来,数据使用者通过公式 Σ i = 1 d a Σ j = 1 d a matrix [ i ] [ j ] Π i = d a + 1 d a + d m matrix [ i ] [ j ] 来计算最终结果。
本方案在不解密的情况下只支持一次乘法运算。
(4)除法
数据使用者根据公式(12)对结果进行解密得到矩阵matrix。为了得到最后的结果,数据使用者还需要按照以下步骤进行处理:
i ) , Π i = d a + 1 d a + d m ( Σ j = 1 d a matrix [ j ] [ i ] ) = np d m * nq - - - ( 16 )
ii ) , Π i = d a + 1 d a + d m ( Σ j = 1 d a matrix [ i ] [ j ] ) = np * nq d m - - - ( 17 )
iii ) , d m - 1 np d m * nq np * nq d m = d m - 1 np d m - 1 nq d m - 1 = np / nq - - - ( 18 )
公式(18)的结果就是最后的结果。本方案在不解密的情况下只支持一次除法运算。
本发明一种基于向量与矩阵运算的支持计算的加密方法,特别适合于机密数据的外包存储和计算,可用于个人或企业机密数据的保护和国防信息安全建设。该方案针对目前云计算面临的隐私安全问题,而已有的加密方法通常不支持有效的数据操作,从而使数据外包存储和计算与通过加密方法保证用户数据安全之间产生了矛盾。为了解决这一矛盾,提出了一种基于向量与矩阵运算的支持计算的加密方法。本发明方法支持加密字符串的模糊检索和加密数值数据的加、减、乘和除法运算。首先,该方案将外包的数据分为字符串和数值数据两种,并根据不同的数据类型,将数据转换为对应的向量,然后通过加密矩阵对向量进行加密,得到加密向量;其次,将计算参数转换为对应的向量并进行加密,得到加密的计算向量;然后,对加密的外包数据与加密的计算参数按照一定的规则进行向量或矩阵运算,得到加密的运算结果;最后,用户通过加密矩阵对加密结果进行解密,从而可得到结果的明文。本发明方法是一种具有IND-COA(Indistinguishabilityunder Ciphertext-onlyAttack)安全性的加密方案,并能有效地实现对加密数据的计算。
本发明部署在一个基于web的云计算环境,以KVM和Hadoop的HDFS为底层支撑技术,并部署在由10台服务器构成的集群上。通过安全分析和性能对比来反映CESVMC的性能。安全分析从加密方案、计算过程两方面来分析CESVMC的安全性;性能对比通过实验将CESVMC与已有的支持加密字符串模糊检索的方案FKSED,支持乘法同态的unpadded RSA和支持加法同态的Paillier方案,分别从加解密负载、计算负载以及存储和通信负载进行评估。通过安全分析和性能评估证明CESVMC无论在数据加密或加密数据的运算中始终是一种具有IND-COA安全性的加密方案,起到了保护用户隐私的作用;同时,CESVMC在加密字符串的模糊检索中表现出了良好的运行性能,在加密数值数据的计算中加解密以及后处理的计算量略大,在服务提供者处的计算性能良好,并具有适中的存储和通信负载。

Claims (5)

1.一种基于向量和矩阵运算的支持计算的加密方法,其特征在于,包括以下步骤:
步骤一:将原始数据转换为向量,并通过加密矩阵进行加密,从而得到一个加密的外包向量;
步骤二:将计算参数转换为向量,并通过加密矩阵进行加密,从而得到一个加密的计算参数向量;
步骤三:对加密的外包向量和计算参数向量进行标量积、加、减、乘运算,从而得到加密的计算结果;
步骤四:用户通过加密矩阵与加密的计算结果的运算,得到计算结果的明文。
2.如权利要求1所述的基于向量和矩阵运算的支持计算的加密方法,其特征在于,步骤一具体包括:
一、字符串
(1)字符串转换为向量
数据拥有者首先生成字符串np的带通配符的子串,其基本步骤为按照空格将字符串分割,再根据各个子串在字符串中的位置加上通配符;然后,数据拥有者对字符串np和其带通配符的子串执行以下操作:计算元素组ce由n个元素组成,算法允许的字符串最大长度为len,np的长度为len’,首先为np连接len-len’个零从而形成np’,然后将np’分为(n-1)段;对于第i段,将其中每个字符转换为对应的ASCII码减去23,从而确保了每一个字符都用一个两位数来表示;接着将每个字符的对应两位数连接起来,中间用数字“0”间隔,形成数字vi,再计算vi’=vi*10m,其中m表示后面的(n-1-i)段的长度和;通过以上运算,数据拥有者将字符串np转换为一个(n-1)维的向量p=(v1′,v2′,...,v′n-1);
(2)外包字符串的加密
密钥由一个随机数组W={w1,w2,...,wk-3,wk-2}(k≥4,wi∈R),和一个d*d可逆矩阵M组成;假设外包字符串npi对应的向量为pi;数据拥有者创建一个d维的向量 p i ′ = ( p i , - 0.5 * | | p i | | 2 , r 1 , w 2 , . . r k - 3 , w k - 2 , - ( Σ j = 1 2 * t - 1 r j * w j ) , 1 ) T , 其中t∈[1,k/2-1],||pi||是pi的标量积,rj是随机数且rj∈R;也就是说,计算元素组ce={pi,-0.5*||pi||2},随机元素组为 re = ( r 1 , w 2 , . . . , r k - 3 , w k - 2 , - ( Σ j = 1 2 * t - 1 r j * w j ) , 1 ) ; 然后数据拥有者加密向量pi’得到Pi=M*pi’,并将Pi存储到服务提供者处;
二、数值数据
对数值数据的操作分为四种基本算术运算:加法、减法、乘法和除法;为了实现加/减法和乘/除法,计算元素组cs由加法因子addF和乘法因子mulF组成,其中addF由da(da∈Z+且da≥1)个元素组成,mulF由dm(dm∈Z+且dm≥2)个元素组成;也就是说,ce=(addF,mulF)且n=da+dm
转换一个数值数据np为d维向量的过程可以分为以下四步:首先,选择(da-1)个随机实数 { ar p 1 , ar p 2 , . . . , ar p ( d a - 1 ) } , 并计算 ar pd a = np - Σ i = 1 d a - 1 ar pi , 从而得到一个da维的向量
Figure FDA0000092492850000025
然后,随机选择(dm-1)个随机实数
Figure FDA0000092492850000026
其中每个实数的倒数都是有限小数,计算
Figure FDA0000092492850000027
Figure FDA0000092492850000028
也是一个有限小数;这样,数据拥有者就将p转换为一个(da+dm)维的向量 p ′ = ( ar p 1 , ar p 2 , . . . , ar pd a , mr p 1 , mr p 2 , . . . , mr pd m ) T ; 第三步,数据拥有者通过加入随机元素组re扩充p’从而构成了一个(da+dm+k)维的向量 p ′ ′ = ( ar p 1 , ar p 2 , . . . , ar pd a , mr p 1 , mr p 2 , . . . , mr pd m , r p 1 , . . . , r pk ) T , 其中k∈Z+,rpj是随机实数;最后,数据拥有者使用一个d*d可逆矩阵M作为密钥加密p”形成了外包向量P=M*p”,并存储到服务提供者的服务器上;数据使用者转换检索参数为向量的步骤与数据拥有者的步骤一样;只是在进行加/减法运算时,数据使用者设置
Figure FDA0000092492850000031
3.如权利要求1所述的基于向量和矩阵运算的支持计算的加密方法,其特征在于,步骤二具体包括:
(1)、字符串
当数据使用者检索关键字nq时,首先选择一个随机数r(r>0且r∈R)并根据步骤一中字符串转换方法生成对应的向量q,然后将q扩充为一个d维向量 q ′ = r * ( q , 1 , w 1 , r 2 , . . . , w k - 3 , r k - 2 , 1 , - ( Σ j = 2 2 t r j * w j ) ) T , 其中t∈[1,k/2-1],rj是随机数且rj∈R;也就是说,ce′={q,1}, re ′ = ( w 1 , r 2 , . . . , w k - 3 , r k - 2 , 1 , - ( Σ j = 2 2 t r j * w j ) ) ; 然后数据使用者加密q’得到Q=(MT)-1*q’并提交给服务提供者;
(2)、数值数据
对于计算参数nq:首先,选择(da-1)个随机实数
Figure FDA0000092492850000034
并计算 ar qd a = nq - Σ i = 1 d a - 1 ar qi , 从而得到一个da维的向量 q = ( ar q 1 , ar q 2 , . . . , ar qd a ) T ; 然后,随机选择(dm-1)个随机实数其中每个实数的倒数都是有限小数,计算
Figure FDA0000092492850000038
Figure FDA0000092492850000039
也是一个有限小数;这样,数据拥有者就将q转换为一个(da+dm)维的向量 q ′ = ( ar q 1 , ar q 2 , . . . , ar qd a , mr q 1 , mr q 2 , . . . , mr qd m ) T ; 第三步,数据拥有者通过加入随机元素组re扩充q’从而构成了一个(da+dm+k)维的向量 q ′ ′ = ( ar q 1 , ar q 2 , . . . , ar qd a , mr q 1 , mr q 2 , . . . , mr qd m , r q 1 , . . . , r qk ) T , 其中k∈Z+,rqj是随机实数;最后,数据拥有者加密q”形成了外包向量Q=M*q”,并存储到服务提供者的服务器上。
4.如权利要求1所述的基于向量和矩阵运算的支持计算的加密方法,其特征在于,步骤三具体包括:
一、加密字符串的检索
当服务提供者接到请求时,对数据使用者权限范围内的Pi进行如下运算:
( Q ) T * P i = ( ( M T ) - 1 q ′ ) T * M * p i ′ ( q ′ ) T * M - 1 * M * p i ′ = ( q ′ ) T p i ′
= r * ( q , 1 , w 1 , r 2 , . . . , w t - 3 , r t - 2 , 1 , - Σ j = 2 2 * t r j * w j ) *
( p i , - 0.5 | | p i | | 2 , r 1 , w 2 , . . . , r k - 3 , w k - 2 , - ( Σ j = 1 2 * t - 1 r j * w j ) , 1 ) T - - - ( 1 )
= r * ( p i * q - 0.5 | | p i | | 2 + Σ j = 1 2 k r j * w j - Σ j = 1 2 k r j * w j )
= r * ( p i * q - 0.5 | | p i | | 2 ) .
然后服务提供者通过对Pi和Q的标量积的排序从而实现对加密关键字的模糊检索;
二、加密数值数据的运算
(1)加法
服务提供者直接对P和Q执行加法运算:
P + Q = M * p ′ ′ + M * q ′ ′
= M * [ ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) T + ( ar q 1 , . . . , ar qd a , mr q 1 , . . . , mr qd m , r q 1 , . . . , r qk ) T ] - - - ( 4 )
= M * ( ( ar p 1 + ar q 1 ) , . . . , ( ar pd a + ar qd a ) , ( mr p 1 + mr q 1 ) , . . . , ( mr pd m + mr qd m ) , ( r p 1 + r q 1 ) , . . . , ( r pk + r qk ) ) T
然后,服务提供者将计算结果返回给数据使用者;
(2)减法
服务提供者直接对P和Q执行减法运算:
P - Q = M * p ′ ′ - M * q ′ ′
= M * [ ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) T - ( ar q 1 , . . . , ar qd a , mr q 1 , . . . , mr qd m , r q 1 , . . . , r qk ) T ] - - - ( 6 )
= M * ( ( ar p 1 - ar q 1 ) , . . . , ( ar pd a - ar qd a ) , ( mr p 1 - mr q 1 ) , . . . , ( mr pd m - mr qd m ) , ( r p 1 - r q 1 ) , . . . , ( r pk - r qk ) ) T
然后,服务提供者将计算结果返回给数据使用者;
(3)乘法
服务提供者对P和Q进行如下操作:
P * ( Q ) T = M * p ′ ′ * ( M * q ′ ′ ) T = M * p ′ ′ * ( q ′ ′ ) T * M T (11)
= M * ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) T * ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) * M T
公式(11)的结果是一个(da+dm+k)*(da+dm+k)矩阵;服务提供者将结果返回给数据使用者;
(4)除法
服务提供者首先按照公式(11)对P和Q进行运算,然后将结果返回给数据使用者。
5.如权利要求1所述的基于向量和矩阵运算的支持计算的加密方法,其特征在于,步骤四具体包括:
一、字符串
数据使用者收到服务提供者检索结果的密文为Pi,则有:Pi’=(M)-1*Pi=(M)-1*M*pi’=pi’;取pi’的前(n-1)个元素,构成(n-1)维向量p=(v1′,v2′,...,v′n-1);对p中的每个元素进行如下计算:vi=vi’/10m,其中m表示后面的(n-1-i)段的长度和;从左至右,将vi中每隔两位后的“0”去掉,然后每两位形成的数字加上23并转换为一个字符cij,连接起来形成一个字符子串:ci=ci1·ci2·...·ci(len-len’)/(n-1),其中“·”表示连接;由(n-1)个子串构成了原字符串的明文:c=c1·c2·...·c(n-1)
二、数值数据
(1)加法
数据使用者对结果解密:
M - 1 * ( P + Q )
= M - 1 * M * ( ( ar p 1 + ar q 1 ) , . . . , ( ar pd a + ar qd a ) , ( mr p 1 + mr q 1 ) , . . . ,
( mr pd m + mr qd m ) , ( r p 1 + r q 1 ) , . . . , ( r pk + r qk ) ) T - - - ( 5 )
= ( ( ar p 1 + ar q 1 ) , . . . , ( ar pd a + ar qd a ) , ( mr p 1 + mr q 1 ) , . . . ,
( mr pd m + mr qd m ) , ( r p 1 + r q 1 ) , . . . , ( r pk + r qk ) ) T .
通过公式(5),数据使用者得到一个d维向量,再通过公式
Figure FDA0000092492850000066
将向量的前da个元素相加从而得到最后的明文结果;
(2)减法
数据使用者对结果进行解密:
M - 1 * ( P - Q )
= M - 1 * M * ( ( ar p 1 - ar q 1 ) , . . . , ( ar pd a - ar qd a ) , ( mr p 1 - mr q 1 ) , . . . ,
( mr pd m - mr qd m ) , ( r p 1 - r q 1 ) , . . . , ( r pk - r qk ) ) T - - - ( 7 )
= ( ( ar p 1 - ar q 1 ) , . . . , ( ar pd a - ar qd a ) , ( mr p 1 - mr q 1 ) , . . . ,
( mr pd m - mr qd m ) , ( r p 1 - r q 1 ) , . . . , ( r pk - r qk ) ) T .
通过公式(7),数据使用者得到一个d维向量,再通过公式
Figure FDA00000924928500000612
将向量的前da个元素相加从而得到最后的明文结果;
(3)乘法
数据使用者对结果进行解密:
M - 1 * P * ( Q ) T ( M T ) - 1
= M - 1 * M * ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) T * (12)
( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) * M T * ( M T ) - 1
= ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk ) T * ( ar p 1 , . . . , ar pd a , mr p 1 , . . . , mr pd m , r p 1 , . . . , r pk )
公式(12)的计算结果是一个(da+dm+k)*(da+dm+k)矩阵,用matrix表示,接下来,数据使用者通过公式
Figure FDA0000092492850000071
Figure FDA0000092492850000072
计算得到最终明文结果;
(4)除法
数据使用者根据公式(12)对结果进行解密得到矩阵matrix,为了得到最后的结果,数据使用者还需要按照以下步骤进行处理:
i ) , Π i = d a + 1 d a + d m ( Σ j = 1 d a matrix [ j ] [ i ] ) = np d m * nq - - - ( 16 )
ii ) , Π i = d a + 1 d a + d m ( Σ j = 1 d a matrix [ i ] [ j ] ) = np * nq d m - - - ( 17 )
iii ) , d m - 1 np d m * nq np * nq d m = d m - 1 np d m - 1 nq d m - 1 = np / nq - - - ( 18 )
公式(18)的结果就是最后的明文结果。
CN201110276038A 2011-09-20 2011-09-20 一种基于向量和矩阵运算的支持计算的加密方法 Pending CN102314580A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110276038A CN102314580A (zh) 2011-09-20 2011-09-20 一种基于向量和矩阵运算的支持计算的加密方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110276038A CN102314580A (zh) 2011-09-20 2011-09-20 一种基于向量和矩阵运算的支持计算的加密方法

Publications (1)

Publication Number Publication Date
CN102314580A true CN102314580A (zh) 2012-01-11

Family

ID=45427737

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110276038A Pending CN102314580A (zh) 2011-09-20 2011-09-20 一种基于向量和矩阵运算的支持计算的加密方法

Country Status (1)

Country Link
CN (1) CN102314580A (zh)

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103684742A (zh) * 2013-11-29 2014-03-26 西安交通大学 一种基于循环矩阵变换的支持密文计算的加密方法
CN104052750A (zh) * 2014-06-24 2014-09-17 北京邮电大学 一种基于仿射变换保护凸二次规划外包中隐私的方法
CN104156671A (zh) * 2013-05-13 2014-11-19 清华大学 一种保护隐私的无中心点积计算方法
CN104268825A (zh) * 2014-09-28 2015-01-07 西安交通大学 一种针对图像的加密及密文处理方法
CN104615692A (zh) * 2015-01-23 2015-05-13 重庆邮电大学 一种支持动态更新及多关键字安全排序的可搜索加密方法
CN104620533A (zh) * 2012-06-22 2015-05-13 联邦科学技术研究组织 用于数据库查询的同态加密
CN106788980A (zh) * 2017-01-16 2017-05-31 中国人民解放军国防科学技术大学 一种面向云计算的矩阵乘法外包过程中安全加密方法
CN106775576A (zh) * 2017-03-28 2017-05-31 青岛大学 可验证的矩阵乘法的安全外包计算方法及系统
CN107147484A (zh) * 2017-05-12 2017-09-08 南京邮电大学 一种面向隐私保护的浮点数全同态加密方法
CN107194185A (zh) * 2017-05-31 2017-09-22 湖北工业大学 一种具有隐私保护的多功能数据处理系统及方法
CN108173885A (zh) * 2018-03-27 2018-06-15 国家基础地理信息中心 数据加密方法、数据解密方法及相关装置
CN108710698A (zh) * 2018-05-23 2018-10-26 湖南大学 云环境下基于密文的多关键词模糊查询方法
CN108831186A (zh) * 2018-06-25 2018-11-16 深圳市嘉泊智慧城市运营管理有限公司 大型综合停车场信息管理平台
CN109190395A (zh) * 2018-08-21 2019-01-11 浙江大数据交易中心有限公司 一种基于数据变换的全同态加密方法及系统
CN109359588A (zh) * 2018-10-15 2019-02-19 电子科技大学 一种新的隐私保护下非交互式的k近邻分类方法
CN109583217A (zh) * 2018-11-21 2019-04-05 深圳市易讯天空网络技术有限公司 一种互联网电商平台用户隐私数据加密及解密方法
CN109698812A (zh) * 2017-10-23 2019-04-30 中国电信股份有限公司 信息加密方法和装置、信息解密方法和装置及安全系统
CN109787743A (zh) * 2019-01-17 2019-05-21 广西大学 一种基于矩阵运算的可验证的全同态加密方法
CN110086603A (zh) * 2019-04-30 2019-08-02 中国联合网络通信集团有限公司 字符串的加密和解密方法、装置、产品标识及制造方法
JP2019523492A (ja) * 2016-07-21 2019-08-22 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 難読化算術を実行するためのデバイス及び方法
CN110266481A (zh) * 2019-06-14 2019-09-20 深圳职业技术学院 基于矩阵的后量子加、解密方法与解密装置
CN110263570A (zh) * 2019-05-10 2019-09-20 电子科技大学 一种实现高效相似性查询和访问控制的基因数据脱敏方法
CN110704850A (zh) * 2019-09-03 2020-01-17 华为技术有限公司 人工智能ai模型的运行方法和装置
CN111563268A (zh) * 2020-07-15 2020-08-21 平安国际智慧城市科技股份有限公司 基于矩阵运算的数据加密方法、装置及存储介质
CN112166577A (zh) * 2018-05-24 2021-01-01 维萨国际服务协会 高效的并发标量积计算
CN112269904A (zh) * 2020-09-28 2021-01-26 华控清交信息科技(北京)有限公司 数据处理方法及装置
CN112653556A (zh) * 2020-12-24 2021-04-13 光大兴陇信托有限责任公司 一种基于token的微服务安全认证方法、装置、存储介质
CN112883389A (zh) * 2021-02-09 2021-06-01 上海凯馨信息科技有限公司 支持特征保持的可逆脱敏算法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
黄汝维,桂小林: "云环境中支持隐私保护的可计算加密方法", 《2011年中国计算机学会服务计算学术会议》 *

Cited By (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104620533A (zh) * 2012-06-22 2015-05-13 联邦科学技术研究组织 用于数据库查询的同态加密
CN104620533B (zh) * 2012-06-22 2018-08-21 联邦科学技术研究组织 用于数据库查询的同态加密
US10027486B2 (en) 2012-06-22 2018-07-17 Commonwealth Scientific And Industrial Research Organisation Homomorphic encryption for database querying
CN104156671A (zh) * 2013-05-13 2014-11-19 清华大学 一种保护隐私的无中心点积计算方法
CN103684742A (zh) * 2013-11-29 2014-03-26 西安交通大学 一种基于循环矩阵变换的支持密文计算的加密方法
CN104052750B (zh) * 2014-06-24 2017-09-22 北京邮电大学 一种基于仿射变换保护凸二次规划外包中隐私的方法
CN104052750A (zh) * 2014-06-24 2014-09-17 北京邮电大学 一种基于仿射变换保护凸二次规划外包中隐私的方法
CN104268825A (zh) * 2014-09-28 2015-01-07 西安交通大学 一种针对图像的加密及密文处理方法
CN104615692A (zh) * 2015-01-23 2015-05-13 重庆邮电大学 一种支持动态更新及多关键字安全排序的可搜索加密方法
CN104615692B (zh) * 2015-01-23 2017-09-19 重庆邮电大学 一种支持动态更新及多关键字安全排序的可搜索加密方法
JP2019523492A (ja) * 2016-07-21 2019-08-22 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 難読化算術を実行するためのデバイス及び方法
CN106788980B (zh) * 2017-01-16 2019-07-30 中国人民解放军国防科学技术大学 一种面向云计算的矩阵乘法外包过程中安全加密方法
CN106788980A (zh) * 2017-01-16 2017-05-31 中国人民解放军国防科学技术大学 一种面向云计算的矩阵乘法外包过程中安全加密方法
CN106775576A (zh) * 2017-03-28 2017-05-31 青岛大学 可验证的矩阵乘法的安全外包计算方法及系统
CN107147484A (zh) * 2017-05-12 2017-09-08 南京邮电大学 一种面向隐私保护的浮点数全同态加密方法
CN107147484B (zh) * 2017-05-12 2020-03-31 南京邮电大学 一种面向隐私保护的浮点数全同态加密方法
CN107194185A (zh) * 2017-05-31 2017-09-22 湖北工业大学 一种具有隐私保护的多功能数据处理系统及方法
CN107194185B (zh) * 2017-05-31 2020-01-24 湖北工业大学 一种具有隐私保护的多功能数据处理系统及方法
CN109698812A (zh) * 2017-10-23 2019-04-30 中国电信股份有限公司 信息加密方法和装置、信息解密方法和装置及安全系统
CN108173885A (zh) * 2018-03-27 2018-06-15 国家基础地理信息中心 数据加密方法、数据解密方法及相关装置
CN108173885B (zh) * 2018-03-27 2020-09-15 国家基础地理信息中心 数据加密方法、数据解密方法及相关装置
CN108710698B (zh) * 2018-05-23 2021-10-15 湖南大学 云环境下基于密文的多关键词模糊查询方法
CN108710698A (zh) * 2018-05-23 2018-10-26 湖南大学 云环境下基于密文的多关键词模糊查询方法
CN112166577A (zh) * 2018-05-24 2021-01-01 维萨国际服务协会 高效的并发标量积计算
CN108831186A (zh) * 2018-06-25 2018-11-16 深圳市嘉泊智慧城市运营管理有限公司 大型综合停车场信息管理平台
CN109190395B (zh) * 2018-08-21 2020-09-04 浙江大数据交易中心有限公司 一种基于数据变换的全同态加密方法及系统
CN109190395A (zh) * 2018-08-21 2019-01-11 浙江大数据交易中心有限公司 一种基于数据变换的全同态加密方法及系统
CN109359588A (zh) * 2018-10-15 2019-02-19 电子科技大学 一种新的隐私保护下非交互式的k近邻分类方法
CN109359588B (zh) * 2018-10-15 2021-02-09 电子科技大学 一种新的隐私保护下非交互式的k近邻分类方法
CN109583217B (zh) * 2018-11-21 2022-06-07 深圳市易讯天空网络技术有限公司 一种互联网电商平台用户隐私数据加密及解密方法
CN109583217A (zh) * 2018-11-21 2019-04-05 深圳市易讯天空网络技术有限公司 一种互联网电商平台用户隐私数据加密及解密方法
CN109787743B (zh) * 2019-01-17 2022-06-14 广西大学 一种基于矩阵运算的可验证的全同态加密方法
CN109787743A (zh) * 2019-01-17 2019-05-21 广西大学 一种基于矩阵运算的可验证的全同态加密方法
CN110086603A (zh) * 2019-04-30 2019-08-02 中国联合网络通信集团有限公司 字符串的加密和解密方法、装置、产品标识及制造方法
CN110263570A (zh) * 2019-05-10 2019-09-20 电子科技大学 一种实现高效相似性查询和访问控制的基因数据脱敏方法
CN110263570B (zh) * 2019-05-10 2020-09-25 电子科技大学 一种实现高效相似性查询和访问控制的基因数据脱敏方法
CN110266481B (zh) * 2019-06-14 2022-05-20 深圳职业技术学院 基于矩阵的后量子加、解密方法与解密装置
CN110266481A (zh) * 2019-06-14 2019-09-20 深圳职业技术学院 基于矩阵的后量子加、解密方法与解密装置
CN110704850B (zh) * 2019-09-03 2022-05-10 华为技术有限公司 人工智能ai模型的运行方法和装置
CN110704850A (zh) * 2019-09-03 2020-01-17 华为技术有限公司 人工智能ai模型的运行方法和装置
CN111563268B (zh) * 2020-07-15 2021-01-15 平安国际智慧城市科技股份有限公司 基于矩阵运算的数据加密方法、装置及存储介质
CN111563268A (zh) * 2020-07-15 2020-08-21 平安国际智慧城市科技股份有限公司 基于矩阵运算的数据加密方法、装置及存储介质
CN112269904A (zh) * 2020-09-28 2021-01-26 华控清交信息科技(北京)有限公司 数据处理方法及装置
CN112269904B (zh) * 2020-09-28 2023-07-25 华控清交信息科技(北京)有限公司 数据处理方法及装置
CN112653556A (zh) * 2020-12-24 2021-04-13 光大兴陇信托有限责任公司 一种基于token的微服务安全认证方法、装置、存储介质
CN112653556B (zh) * 2020-12-24 2022-09-23 光大兴陇信托有限责任公司 一种基于token的微服务安全认证方法、装置、存储介质
CN112883389A (zh) * 2021-02-09 2021-06-01 上海凯馨信息科技有限公司 支持特征保持的可逆脱敏算法

Similar Documents

Publication Publication Date Title
CN102314580A (zh) 一种基于向量和矩阵运算的支持计算的加密方法
Alloghani et al. A systematic review on the status and progress of homomorphic encryption technologies
CN108632032B (zh) 无密钥托管的安全多关键词排序检索系统
Liu et al. Toward highly secure yet efficient KNN classification scheme on outsourced cloud data
JP6180177B2 (ja) プライバシーを保護することができる暗号化データの問い合わせ方法及びシステム
Giannotti et al. Privacy-preserving mining of association rules from outsourced transaction databases
US20090138698A1 (en) Method of searching encrypted data using inner product operation and terminal and server therefor
CN106571905A (zh) 一种数值型数据同态保序加密方法
Feng et al. A secure high-order Lanczos-based orthogonal tensor SVD for big data reduction in cloud environment
Jayapandian et al. Secure and efficient online data storage and sharing over cloud environment using probabilistic with homomorphic encryption
CN107291861B (zh) 一种面向加密图的带约束近似最短距离查询方法
CN112332979B (zh) 云计算环境中的密文搜索方法及系统、设备
CN104967693A (zh) 面向云存储的基于全同态密码技术的文档相似度计算方法
Zhu et al. Improved collusion‐resisting secure nearest neighbor query over encrypted data in cloud
Jiang et al. An Efficient Symmetric Searchable Encryption Scheme for Cloud Storage.
Sun et al. An efficient secure k nearest neighbor classification protocol with high‐dimensional features
Guo et al. A provably secure and efficient range query scheme for outsourced encrypted uncertain data from cloud-based Internet of Things systems
CN105721146A (zh) 一种面向云存储基于smc的大数据共享方法
Shekhawat et al. Privacy-preserving techniques for big data analysis in cloud
Wang et al. QuickN: Practical and secure nearest neighbor search on encrypted large-scale data
Yuan et al. Toward secure and scalable computation in internet of things data applications
KR100951034B1 (ko) 암호문 크기를 줄이기 위한 공개키 기반의 검색가능암호문생성 방법과, 그에 따른 공개키 기반의 데이터 검색 방법
Gai et al. Privacy-preserving data synchronization using tensor-based fully homomorphic encryption
CN108243000B (zh) 云存储系统中的密文搜索方法
Jiang et al. A novel privacy preserving keyword search scheme over encrypted cloud data

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20120111