发明名称 一种网络信息系统中服务器端的个人隐私数据保护方法
摘要 本发明公开了一种网络信息系统中服务器端的个人隐私数据保护方法,意在提供一种能支持各类常见文本查询、查询性能高、且安全性好的一种网络信息系统中服务器端的个人隐私数据保护方法。通过在网络信息系统的客户端和服务器端之间铺设一层中间软件,负责实施本发明所提供的技术方法,以完成两项功能:一是将外部用户通过系统客户端输入的个人隐私数据进行加密后,存放到系统服务器端的后台数据库中,从而确保个人隐私信息在不可信服务器端的安全性;二是为个人隐私数据建立合适的索引,以支持精确查询、相似查询、范围查询等常见文本查询,从而确保密文查询的高效性。
申请公布号 CN103973668B 申请公布日期 2017.02.01
申请号 CN201410118012.4 申请日期 2014.03.27
申请人 温州大学 发明人 吴宗大;卢成浪
分类号 H04L29/06(2006.01)I;G06F17/30(2006.01)I 主分类号 H04L29/06(2006.01)I
代理机构 杭州杭诚专利事务所有限公司 33109 代理人 王江成
主权项 一种网络信息系统中服务器端的个人隐私数据保护方法,其特征在于,在网络信息系统的客户端和服务器端之间布置一层中间软件,并且所述中间软件与客户端运行在同一台机单元上;在客户端的中间软件中设有一个“元数据”的内部数据结构单元,用于保存加密索引、查询转换、数据解密等过程中所需要的各类参数信息;中间软件的数据加密单元包括加密函数E和索引函数X,其中,加密函数E使用传统分组加密算法将用户通过客户端输入的各类隐私数据U转换为密文E(U),而索引函数X负责为隐私数据U建立合适的索引X(U),然后把密文E(U)连同相应的索引X(U)一起存放到服务器端数据库中;中间软件的查询转换单元将客户端所提交的定义在隐私数据U之上的数据库查询操作Q转化为能在服务器端数据库中相应的索引X(U)上正确执行的新查询Q<sup>E</sup>,使得数据库能通过执行新查询Q<sup>E</sup>来过滤掉数据表中大部分不满足数据库查询操作Q的非目标记录;中间软件的数据解密单元包括解密函数,数据解密单元负责解密服务器端所返回的密文E(U),并将密文E(U)解密后的隐私数据U存放到临时结果库中,作为数据筛选单元的输入;由中间软件的数据筛选单元重新执行客户端所提交的定义在隐私数据U上的原始查询Q,让数据库查询操作Q对存放到临时结果库中的隐私数据U重新进行一次筛选,进一步过滤掉不满足数据库查询操作Q的非目标记录,从而得到精确的目标结果M,并把精确的目标结果M返回给客户端的用户;在服务器端的数据库中,除了存储密文E(U)之外还附加存储了隐私数据U的索引X(U),用户在客户端提交的定义在明文隐私数据U上的原始查询Q是无法在密文E(U)上直接执行的,但可将定义在明文隐私数据U上的原始查询Q转换为定义在索引X(U)上的新查询Q<sup>E</sup>,然后再提交给服务器端执行,该过程要求:新查询Q<sup>E</sup>所返回的中间结果不仅包括原始查询Q的精确结果,还尽可能的接近精确结果,所以,如何把密文E(U)和索引X(U)存放到服务器端数据库中、如何为隐私数据U建立对应的密文E(U)和索引X(U)、如何将用户原始查询Q转换为新查询Q<sup>E</sup>,以及如何通过执行新查询获取用户查询的精确结果,它们的解决方案如下:(1)把密文E(U)和索引X(U)存放到服务器端数据库中的方案为:首先要改造服务器端数据库中的原有关系模式R,以存储密文E(U)和索引X(U),假设在服务器端数据库中存在着一个原有关系模式R为R(A<sub>1</sub>,A<sub>2</sub>,...,A<sub>r</sub>,...),其中,A<sub>r</sub>存储的是隐私数据,因此,A<sub>r</sub>是需要进行加密处理的敏感属性,则改造后的加密关系模式R<sup>E</sup>为<img file="FDA0001086366980000021.GIF" wi="554" he="65" />其中:加密关系模式R<sup>E</sup>中的密文属性<img file="FDA0001086366980000022.GIF" wi="60" he="67" />用于存储原有关系模式R中的敏感属性A<sub>r</sub>加密后得到的密文E(U);在加密关系模式R<sup>E</sup>中新增的索引属性<img file="FDA0001086366980000023.GIF" wi="67" he="67" />用来存储对应的索引X(U),并且索引属性<img file="FDA0001086366980000024.GIF" wi="66" he="70" />的类型与敏感属性A<sub>r</sub>的类型保持一致,加密关系模式R<sup>E</sup>中的其余属性与原有关系模式R中对应的原有属性保持一致;(2)为隐私数据U建立对应的密文E(U)和索引X(U)的方案为:在服务器端数据库中的加密关系模式R<sup>E</sup>建立完成后,数据加密单元运用加密函数E为隐私数据U建立对应的密文E(U),数据加密单元运用索引函数X为隐私数据U建立对应的索引X(U),并分别将密文E(U)和索引X(U)存储到加密关系模式R<sup>E</sup>中的密文属性<img file="FDA0001086366980000025.GIF" wi="59" he="67" />和索引属性<img file="FDA0001086366980000026.GIF" wi="67" he="67" />中;其中为隐私数据U建立对应的索引X(U)共需三个步骤:(步骤1)系统管理员预先离线手动设定的参数包括隐私数据U的单位值域和隐私数据U的安全系数μ,(步骤1.1)为各类隐私数据U设定单位值域的过程为:对于某类给定的隐私数据U,假定该隐私数据U最多包含<img file="FDA0001086366980000032.GIF" wi="217" he="66" />个字符,则该类隐私数据U最多可以划分为n个字符单位,记作:(P<sub>1</sub>,P<sub>2</sub>,...,P<sub>n</sub>),系统管理员需要为各个字符单位预先设定所有可能的取值,所有可能的取值即为隐私数据U的单位值域,记作:dom(P<sub>1</sub>),dom(P<sub>2</sub>),...,dom(P<sub>n</sub>);(步骤1.2)为各类隐私数据U设定安全系数<img file="FDA0001086366980000031.GIF" wi="227" he="67" />安全系数<img file="FDA0001086366980000033.GIF" wi="217" he="63" />值越大,则表示生成的索引X(U)的安全性越好,安全系数<img file="FDA0001086366980000034.GIF" wi="212" he="64" />的取值范围为:<img file="FDA0001086366980000035.GIF" wi="543" he="67" />对于不同类别的隐私数据U需要分别设定单位值域和安全系数μ,并把单位值域和安全系数μ作为“元数据”保存在客户端;(步骤2)为各类隐私数据U自动构造索引函数X的过程为:首先确定隐私数据U各个字符单位的分区数,然后确定各个字符单位的分区过程,最后为各个字符单位建立对应的分区分配标识,并把分区数、分区过程和分区分配标识的信息作为“元数据”保存在可信任的客户端中;(步骤2.1)根据为各类隐私数据U预先设定的单位值域和安全系数μ,为隐私数据U的各个字符单位P<sub>i</sub>(i=1,2,...,n)自动分配一个分区数num(P<sub>i</sub>),该分区数满足三个条件:一是各个字符单位的分区数必须为正整数,即<img file="FDA0001086366980000036.GIF" wi="299" he="60" />二是各个字符单位的分区数必须小于其单位值域的大小,即||dom(P<sub>i</sub>)||≥num(P<sub>i</sub>);三是各个字符单位的分区数的连乘与安全系数μ的积,必须小于各个字符单位值域大小的连乘,即<img file="FDA0001086366980000037.GIF" wi="755" he="67" />(步骤2.2)根据分区数num(P<sub>i</sub>),按照近似等宽策略或近似等深策略的划分过程,将各隐私数据U的单位值域dom(P<sub>i</sub>)划分成若干个子集,该子集即为分区,记作:<img file="FDA0001086366980000041.GIF" wi="707" he="84" />该分区要求满足四个条件:一是各个分区不能为空,即<img file="FDA0001086366980000042.GIF" wi="851" he="95" />二是各个分区互不相交,即<img file="FDA0001086366980000043.GIF" wi="1314" he="96" />三是所有分区的并集等于单位值域,即<img file="FDA0001086366980000044.GIF" wi="538" he="90" />四是分区<img file="FDA0001086366980000048.GIF" wi="80" he="86" />中任意元素的值大于分区<img file="FDA0001086366980000049.GIF" wi="104" he="86" />中所有元素的值,即<img file="FDA0001086366980000045.GIF" wi="1523" he="95" />(步骤2.3)从划分得到的各个分区<img file="FDA00010863669800000410.GIF" wi="555" he="83" />中分别分配一个字符值<img file="FDA00010863669800000411.GIF" wi="195" he="93" />作为分区<img file="FDA00010863669800000412.GIF" wi="87" he="83" />的标识,该标识要求满足两个条件:一是对于来自同一个单位值域的任意两个分区<img file="FDA00010863669800000413.GIF" wi="99" he="85" />标识互不相等,即<img file="FDA0001086366980000046.GIF" wi="1419" he="110" />二是任意单位值域的任意分区的标识值均落在同一个取值范围,且满足:<img file="FDA0001086366980000047.GIF" wi="1850" he="96" />,其中,θ为随机数;至此,步骤2实际上构造了n个映射函数:X<sup>(1)</sup>,X<sup>(2)</sup>,...,X<sup>(n)</sup>,这些映射函数均能将任意给定的字符u映射为一个新的字符:<img file="FDA0001086366980000051.GIF" wi="1363" he="187" />(步骤3)对于用户通过客户端所提交的一条隐私数据U,其形式为:U=u<sub>1</sub>u<sub>2</sub>...u<sub>m</sub>(m≤n),按照如下步骤将其映射为索引值;(步骤3.1)将隐私数据U中的各个字符u<sub>i</sub>(i=1,2,...,m),按照其在字符单位P<sub>i</sub>中所属的分区,将其映射为一个新的字符:X<sup>(i)</sup>(u<sub>i</sub>);(步骤3.2)隐私数据U的索引值为:X(U)=X<sup>(1)</sup>(u<sub>1</sub>)X<sup>(2)</sup>(u<sub>2</sub>)...X<sup>(m)</sup>(u<sub>m</sub>);(3)将用户原始查询Q转换为新查询Q<sup>E</sup>的方案为:查询转换单元应用查询转换方案对用户原始查询Q进行转换,生成能够在服务器端的索引上正确执行的新查询Q<sup>E</sup>;定义在文本型隐私数据上的原始查询Q的查询形式包括:精确查询、相似查询和范围查询,它们的转换过程如下:(3.1)精确查询条件转换;精确查询条件的形式一般为:R.A<sub>i</sub>=U,其中,U为隐私数据的文本常量,R.A<sub>i</sub>是涉及隐私数据U的敏感属性A<sub>r</sub>,精确查询条件的转换过程需要使用相应的索引函数X对文本常量做变换,若文本常量是U=u<sub>1</sub>u<sub>2</sub>...u<sub>m</sub>(m≤n),则精确查询条件转换为:<maths num="0001"><math><![CDATA[<mrow><mi>t</mi><mi>r</mi><mi>a</mi><mi>n</mi><mi>s</mi><mrow><mo>(</mo><mi>R</mi><mo>.</mo><msub><mi>A</mi><mi>i</mi></msub><mo>=</mo><mi>U</mi><mo>)</mo></mrow><mo>&DoubleRightArrow;</mo><msup><mi>R</mi><mi>E</mi></msup><mo>.</mo><msubsup><mi>A</mi><mi>i</mi><mi>x</mi></msubsup><mo>=</mo><msup><mi>X</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msup><mrow><mo>(</mo><msub><mi>u</mi><mn>1</mn></msub><mo>)</mo></mrow><msup><mi>X</mi><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></msup><mrow><mo>(</mo><msub><mi>u</mi><mn>2</mn></msub><mo>)</mo></mrow><mo>...</mo><msup><mi>X</mi><mrow><mo>(</mo><mi>m</mi><mo>)</mo></mrow></msup><mrow><mo>(</mo><msub><mi>u</mi><mi>m</mi></msub><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0001086366980000052.GIF" wi="1298" he="74" /></maths>其中,trans表示转换函数;(3.2)基于通配符“_”的相似查询条件转换;其一般形式为:R.A<sub>i</sub>LIKE U_V(其中,LIKE表示“相似”,为SQL关键字),若文本常量为:U=u<sub>1</sub>u<sub>2</sub>...u<sub>m</sub>,V=v<sub>1</sub>v<sub>2</sub>...v<sub>z</sub>(m+z≤n‑1;0≤z;0≤m),则相似查询条件转换为:<maths num="0002"><math><![CDATA[<mrow><mi>t</mi><mi>r</mi><mi>a</mi><mi>n</mi><mi>s</mi><mrow><mo>(</mo><mi>R</mi><mo>.</mo><msub><mi>A</mi><mi>i</mi></msub><mi>L</mi><mi>I</mi><mi>K</mi><mi>E</mi><mi> </mi><mi>U</mi><mo>_</mo><mi>V</mi><mo>)</mo></mrow><mo>&DoubleRightArrow;</mo><msup><mi>R</mi><mi>E</mi></msup><mo>.</mo><msubsup><mi>A</mi><mi>i</mi><mi>x</mi></msubsup><mi>L</mi><mi>I</mi><mi>K</mi><mi>E</mi><mi> </mi><msup><mi>U</mi><mi>E</mi></msup><mo>_</mo><msup><mi>V</mi><mi>F</mi></msup><mo>,</mo></mrow>]]></math><img file="FDA0001086366980000053.GIF" wi="1035" he="70" /></maths>其中:<img file="FDA0001086366980000061.GIF" wi="955" he="156" />(3.3)基于通配符“[]”的相似查询条件转换,其一般形式为:R.A<sub>i</sub>LIKE U[L]V,若文本常量U=u<sub>1</sub>u<sub>2</sub>...u<sub>m</sub>,V=v<sub>1</sub>v<sub>2</sub>...v<sub>z</sub>,字符列表L=l<sub>1</sub>l<sub>2</sub>...l<sub>t</sub>,则相似查询条件转换为:<maths num="0003"><math><![CDATA[<mrow><mi>t</mi><mi>r</mi><mi>a</mi><mi>n</mi><mi>s</mi><mrow><mo>(</mo><mi>R</mi><mo>.</mo><msub><mi>A</mi><mi>i</mi></msub><mi>L</mi><mi>I</mi><mi>K</mi><mi>E</mi><mi> </mi><mi>U</mi><mo>&lsqb;</mo><mi>L</mi><mo>&rsqb;</mo><mi>V</mi><mo>)</mo></mrow><mo>&DoubleRightArrow;</mo><msup><mi>R</mi><mi>E</mi></msup><mo>.</mo><msubsup><mi>A</mi><mi>i</mi><mi>x</mi></msubsup><mi>L</mi><mi>I</mi><mi>K</mi><mi>E</mi><mi> </mi><msup><mi>U</mi><mi>E</mi></msup><mo>&lsqb;</mo><msup><mi>L</mi><mi>E</mi></msup><mo>&rsqb;</mo><msup><mi>V</mi><mi>E</mi></msup></mrow>]]></math><img file="FDA0001086366980000065.GIF" wi="1123" he="73" /></maths>其中:<img file="FDA0001086366980000062.GIF" wi="955" he="245" />(3.4)基于通配符“%”的相似查询条件转换,其一般形式为:R.A<sub>i</sub>LIKE U%V,若文本常量U=u<sub>1</sub>u<sub>2</sub>...u<sub>m</sub>,V=v<sub>1</sub>v<sub>2</sub>...v<sub>z</sub>,则相似查询条件转换为:<img file="FDA0001086366980000066.GIF" wi="1155" he="75" /><maths num="0004"><math><![CDATA[<mrow><msup><mi>R</mi><mi>E</mi></msup><mo>.</mo><msubsup><mi>A</mi><mi>i</mi><mi>x</mi></msubsup><mi>L</mi><mi>I</mi><mi>K</mi><mi>E</mi><mi> </mi><msup><mi>U</mi><mi>E</mi></msup><mo>_</mo><mo>_</mo><msubsup><mi>V</mi><mn>2</mn><mi>E</mi></msubsup><mi>O</mi><mi>R</mi><mn>...</mn><mi>O</mi><mi>R</mi><mo>,</mo></mrow>]]></math><img file="FDA0001086366980000067.GIF" wi="723" he="68" /></maths><img file="FDA0001086366980000063.GIF" wi="811" he="142" />其中:<img file="FDA0001086366980000064.GIF" wi="1017" he="412" />特殊地,如果(z=0),则相似查询条件可简单地转换为:<maths num="0005"><math><![CDATA[<mrow><mi>t</mi><mi>r</mi><mi>a</mi><mi>n</mi><mi>s</mi><mrow><mo>(</mo><mi>R</mi><mo>.</mo><msub><mi>A</mi><mi>i</mi></msub><mi>L</mi><mi>I</mi><mi>K</mi><mi>E</mi><mi> </mi><mi>U</mi><mi>%</mi><mo>)</mo></mrow><mo>&DoubleRightArrow;</mo><msup><mi>R</mi><mi>E</mi></msup><mo>.</mo><msubsup><mi>A</mi><mi>i</mi><mi>x</mi></msubsup><msup><mi>LIKEX</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msup><mrow><mo>(</mo><msub><mi>u</mi><mn>1</mn></msub><mo>)</mo></mrow><msup><mi>X</mi><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></msup><mrow><mo>(</mo><msub><mi>u</mi><mn>2</mn></msub><mo>)</mo></mrow><mo>...</mo><msup><mi>X</mi><mrow><mo>(</mo><mi>m</mi><mo>)</mo></mrow></msup><mrow><mo>(</mo><msub><mi>u</mi><mi>m</mi></msub><mo>)</mo></mrow><mi>%</mi><mo>,</mo></mrow>]]></math><img file="FDA0001086366980000068.GIF" wi="1531" he="77" /></maths>特殊地,如果(m=0),则相似查询条件可简单地转换为:<maths num="0006"><math><![CDATA[<mrow><mi>t</mi><mi>r</mi><mi>a</mi><mi>n</mi><mi>s</mi><mrow><mo>(</mo><mi>R</mi><mo>.</mo><msub><mi>A</mi><mi>i</mi></msub><mi>L</mi><mi>I</mi><mi>K</mi><mi>E</mi><mi>%</mi><mi>V</mi><mo>)</mo></mrow><mo>&DoubleRightArrow;</mo><msup><mi>R</mi><mi>E</mi></msup><mo>.</mo><msubsup><mi>A</mi><mi>i</mi><mi>x</mi></msubsup><msup><mi>LIKE%X</mi><mrow><mo>(</mo><mi>n</mi><mo>-</mo><mi>z</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msup><mrow><mo>(</mo><msub><mi>v</mi><mn>1</mn></msub><mo>)</mo></mrow><msup><mi>X</mi><mrow><mo>(</mo><mi>n</mi><mo>-</mo><mi>z</mi><mo>+</mo><mn>2</mn><mo>)</mo></mrow></msup><mrow><mo>(</mo><msub><mi>v</mi><mn>2</mn></msub><mo>)</mo></mrow><mn>...</mn><msup><mi>X</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></msup><mrow><mo>(</mo><msub><mi>v</mi><mi>z</mi></msub><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0001086366980000069.GIF" wi="1704" he="80" /></maths>(3.5)范围查询条件转换,范围查询条件的一般形式为:R.A<sub>i</sub>≥U,若U=u<sub>1</sub>u<sub>2</sub>...u<sub>m</sub>,记字符单位P<sub>i</sub>(i=1,2,...,n)中,编码值最大字符为v<sub>i</sub>,即<img file="FDA0001086366980000071.GIF" wi="608" he="65" />则范围查询条件转换为:<maths num="0007"><math><![CDATA[<mrow><mi>t</mi><mi>r</mi><mi>a</mi><mi>n</mi><mi>s</mi><mrow><mo>(</mo><mi>R</mi><mo>.</mo><msub><mi>A</mi><mn>1</mn></msub><mo>&GreaterEqual;</mo><mi>U</mi><mo>)</mo></mrow><mo>&DoubleRightArrow;</mo><mi>t</mi><mi>r</mi><mi>a</mi><mi>n</mi><mi>s</mi><mrow><mo>(</mo><mi>R</mi><mo>.</mo><msub><mi>A</mi><mi>i</mi></msub><mi>L</mi><mi>I</mi><mi>K</mi><mi>E</mi><mo>&lsqb;</mo><mo>(</mo><msub><mi>u</mi><mn>1</mn></msub><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><msub><mi>v</mi><mn>1</mn></msub><mo>&rsqb;</mo><mi>%</mi><mo>)</mo><mi>O</mi><mi>R</mi><mo>,</mo></mrow>]]></math><img file="FDA0001086366980000072.GIF" wi="1334" he="72" /></maths>trans(R.A<sub>i</sub>LIKE u<sub>1</sub>[(u<sub>2</sub>+1)‑v<sub>2</sub>]%)OR,trans(R.A<sub>i</sub>LIKE u<sub>1</sub>u<sub>2</sub>[(u<sub>3</sub>+1)‑v<sub>3</sub>]%)OR...OR,trans(R.A<sub>i</sub>LIKE u<sub>1</sub>u<sub>2</sub>...u<sub>m‑1</sub>[u<sub>m</sub>‑v<sub>m</sub>]%);(4)获取用户查询精确结果的方案通过两阶段数据查询过程实现:首先,在服务器端执行数据查询的粗糙查询,即让服务器端通过在后台数据库上执行查询转换单元所生成的新查询,过滤掉绝大部分的非目标记录,从而获得用户查询的一个粗糙结果集,并把粗糙结果集返回给客户端;然后,数据解密单元基于保存在客户端中的“元数据”,对粗糙结果集进行解密,并将得到的明文记录集写入到临时结果库中;最后,在客户端执行数据查询的精确查询,即让数据筛选单元在临时结果库上再执行一次用户查询,把不符合条件的非目标记录进一步过滤掉,从而得到用户查询的精确结果集,并把精确结果集返回给用户。
地址 325027 浙江省温州市瓯海经济开发区东方南路38号温州市国家大学科技园孵化器