system: [SYSTEM]

user: 3. 同态加密特征提取算法 上小节对Paillier同态加密过程进行了基本算法介绍，本节在此基础上提出了相应的同态加密域下的自适应提升小波和LBP策略，在研究过程中同样关注了同态加密域的数值比较问题。 3.1. 同态自适应提升小波方案 通过对自适应提升小波算法的运算过程进行分析 [ 7 ] ，结合Paillier加密系统的加法同态性，我们提出了在同态加密域内实现该方案的具体方法： 首先，用户对大小为 N × M 原明文图像函数 f ( x ， y ) 按照公式(2)进行加密运算，之后得到相同大小的加密后图像 f e ( x ， y ) (下标“e”表示加密域的参数，下文中出现同样适用)，将其传送给服务器端后，服务器端在加密的情况下对密文进行相应的小波运算，特征提取等处理攻错。与传统提升小波的计算过程相类似的，本方案的准备工作为图像的像素奇偶位置重组，我们将从 f e ( x ， y ) 分离得到4个密文图像子块： x e ( n ， m ) = f e ( 2 n ， 2 m ) ， y e h ( n ， m ) = f e ( 2 n − 1 ， 2 m ) ， y e v ( n ， m ) = f e ( 2 n ， 2 m − 1 ) ， y e d ( n ， m ) = f e ( 2 n − 1 ， 2 m − 1 ) 。为使该方案在明文域得到二值决策矩阵 D ( n ， m ) ，八个方向相邻像素均值和偏差值关系表，需要经过以下的运算过程： μ = 1 8 [ y h ( n − 1 ， m ) + y h ( n ， m ) + y v ( n ， m ) + y v ( n ， m − 1 ) + y d ( n − 1 ， m ) + y d ( n ， m ) + y d ( n ， m − 1 ) + y d ( n − 1 ， m − 1 ) ] (7) σ ( n ， m ) = | y h ( n − 1 ， m ) − μ | + | y h ( n ， m ) − μ | + | y v ( n ， m − 1 ) − μ |                             + | y v ( n ， m ) − μ | + | y d ( n − 1 ， m ) − μ | + | y d ( n ， m − 1 ) − μ |                             + | y d ( n ， m ) − μ | + | y d ( n − 1 ， m − 1 ) − μ | (8) 在公式(7)和(8)的基础上可以得到二值决策阵 D ( n ， m ) 的算法： D ( n ， m ) = { 0 σ ( n ， m ) > T 1 σ ( n ， m ) ≤ T (9) 其中T为阈值我们可以根据具体情况和需要进行调整。 近似信号 x ′ ( n ， m ) 被定义为： x ′ ( n ， m ) = { x ( n ， m ) D ( n ， m ) = 0 1 2 [ x ( n ， m ) + U ] D ( n ， m ) = 1 (10) 其中U为更新因子，被定义为： U = 1 4 [ y h ( n − 1 ， m ) + y h ( n ， m ) + y v ( n ， m − 1 ) + y v ( n ， m ) ] (11) 预测参数可以根据以下公式得到： p h ( n ， m ) = 1 2 [ x ′ ( n − 1 ， m ) + x ′ ( n ， m ) ] (12) p v ( n ， m ) = 1 2 [ x ′ ( n ， m − 1 ) + x ′ ( n ， m ) ] (13) p d ( n ， m ) = 1 2 [ x ′ ( n − 1 ， m − 1 ) + x ′ ( n ， m ) ] (14) 根据上述的公式，细节信号参数 y ′ h ， y ′ v 和 y ′ d 可以被定义为： y ′ h ( n ， m ) = | y h ( n ， m ) − p h ( n ， m ) | (15) y ′ v ( n ， m ) = | y v ( n ， m ) − p v ( n ， m ) | (16) (17) 求得估计信号 x ′ ( n ， m ) 和细节信号参数 y ′ h ， y ′ v 和 y ′ d 的过程包括了四则运算和绝对值运算，显然如果我们对整数进行加减乘运算并不会得到带小数的结果，但是从公式(7)~(17)可以看出，计算过程中同样包含了除法运算，因此我们无法确保计算结果都是整数，公式(9)包含了绝对值运算和两个数之间比较大小的问题，上述提到的运算在明文域进行都是十分方便的，但由于同态加密域中所有参与运算的参数和数据必须以整数形式表达出来这一特点，在同态加密系统中完成上述运算是一项重要且艰巨的挑战。 基于从加密后图像 f e ( x ， y ) 分离出来的子图像 y e h ( n ， m ) ， y e v ( n ， m ) 和 y e d ( n ， m ) ，通过对 σ ( n ， m ) 和T值扩大8倍的运算，我们可以得到同态加密域下的二值决策矩阵 D e (实际上与明文域下的D相同)。具体方法如下：令 y e h 8 ( n ， m ) = y e h Q ( n ， m ) ， y e v 8 ( n ， m ) = y e v Q ( n ， m ) ， y e d 8 ( n ， m ) = y e d Q ( n ， m ) 其中Q = 8，再根据式(4)~式(8)，可推导出如下计算公式： μ e = y e h 8 ( n − 1 ， m ) × y e h 8 ( n ， m ) × y e v 8 ( n ， m ) × y e v 8 ( n ， m − 1 ) × y e d 8 ( n − 1 ， m ) × y e d 8 ( n ， m ) × y e d 8 ( n ， m − 1 ) × y e d 8 ( n − 1 ， m − 1 ) (18) σ e ( n ， m ) = | y e h 8 ( n − 1 ， m ) − μ e | e × | y e h 8 ( n ， m ) − μ e | e × | y e v 8 ( n ， m − 1 ) − μ e | e                             × | y e v 8 ( n ， m ) − μ e | e × | y e d 8 ( n − 1 ， m ) − μ e | e × | y e d 8 ( n ， m − 1 ) − μ e | e                             × | y e d 8 ( n ， m ) − μ e | e × | y e d 8 ( n − 1 ， m − 1 ) − μ e | e (19) 其中，加密域下的绝对值运算 | x 1 − x 2 | e 可以被表示为： | x 1 − x 2 | e = { x 1 ⋅ x 2 − 1 x 1 ≥ x 2 x 2 ⋅ x 1 − 1 x 1 < x 2 (20) 式中的 x n − 1 表示 x n 的模逆。 同态加密域的二值决策矩阵 D e ( n ， m ) 被定义为： D e ( n ， m ) = { 0 σ e ( n ， m ) > T e 1 σ e ( n ， m ) ≤ T e (21) 其中 T e = E ( T ， r ) 8 mod N 2 。如果将所有参数同时扩大相同倍数，他们的数值之间的大小关系并不会发生改变，进行这样运算相当于扩充了仅是为了确保加密域下的所有参数为整数，因此不难得知 D e ( n ， m ) 与 D ( n ， m ) 的值实际上是相同的。本文的3.3小节对同态比较方法进行了介绍。 为了在随后的计算过程中同样避免小数的产生，该运算过程中需要首先将明文域原图像素扩大16倍，并根据公式(4)~(6)的同态法则将相应的运算过程转换至密文域中。当从密文图像 f e ( x ， y ) 求得决策矩阵 D e ( n ， m ) 之后，可以得到同态加密域下的近似信号 x ′ e ( n ， m ) 为： x ′ e ( n ， m ) = { E ( x ( n ， m ) ) 16 mod N 2 D e ( n ， m ) = 0 E ( x ( n ， m ) ) 8 × E ( U 4 ) 2 mod N 2 D e ( n ， m ) = 1 (22) 其中 U 4 = y e h ( n − 1 ， m ) × y e h ( n ， m ) × y e v ( n ， m − 1 ) × y e v ( n ， m ) ，原计算公式(12)~(17)可以按法则转换到同态加密系统下，依次为： p e h ( n ， m ) = x ′ e ( n − 1 ， m ) × x ′ e ( n ， m ) (23) p e v ( n ， m ) = x ′ e ( n ， m − 1 ) × x ′ e ( n ， m ) (24) p e d ( n ， m ) = x ′ e ( n − 1 ， m − 1 ) × x ′ e ( n ， m ) (25) y ′ e h ( n ， m ) = | y e h Q ( n ， m ) − p e h ( n ， m ) | e (26) y ′ e v ( n ， m ) = | y e v Q ( n ， m ) − p e v ( n ， m ) | e (27) y ′ e d ( n ， m ) = | y e d Q ( n ， m ) − p e d ( n ， m ) | e (28) 其中，式(26)~(28)中的Q = 16。为了在加密域直接进行图像重构，根据式(26)~(28)中绝对值运算的过程，需要保留运算过程中的数值大小关系矩阵 C e h ( n ， m ) ， C e v ( n ， m ) 和 C e d ( n ， m ) 。图1(a)，图1(b)分别给出了加密域下的自适应提升小波运算步骤和其逆运算的步骤。 图1. (a)加密提升小波方案；(b)加密小波逆运算方案 3.2. 同态加密LBP方案 LBP (local binary patterns)是一种局部特征算子，近年来被广泛应用于图像的识别工作当中 [ 8 ] [ 9 ] [ 10 ] ，LBP算法的基本思想是：将图片分成数个小区域，选区每个区域中的中心点像素的灰度值作为一个阈值，取中心点邻近像素的值与阈值进行对比，根据比较的结果对图像像素进行某种规则的编码。图2是中心 像素与其邻近像素的示意图，其中 x c 表示中心像素， x p ， ( p = 0 ， 1 ， ⋯ p − 1 ) 为邻近像素，这里选取径向距 离R = 1，p = 8，表示编码方式考虑8个不同方向，由此，每个中心像素点的编码过程可以表示如下： L B P p ， R = ∑ p = 0 p − 1 s ( x p − x c ) ⋅ 2 p (29) 其中，门限函数 s ( x ) = { 1 x ≥ 0 0 x < 0 [ 11 ] ，大于等于中心点像素则赋值为1，小于则赋0值，编码顺序可以 采取顺时针或逆时针任意一种形式，并根据公式进行加权求和运算得到直方图，保留直方图中的有效数据作为特征向量进行接下来的识别工作。 图2. p= 8，R = 1相邻像素顺时针编码示意图 要在加密域进行LBP运算的核心问题依然是同态加密域下的两个数值比较大小的问题，3.3节详细介绍了所要用到的同态加密域下的比较大小策略，在我们用该方法求出加密域的 s ( x ) 的值后，式(29)依旧可以用相同的形式来计算密文图像没一个中心像素的LBP值。 3.3. 同态数值比较策略 对于加密域两个密文数值大小比较： c 1 = E ( m 1 ， r 1 ) ， c 2 = E ( m 2 ， r 2 ) ，用户需要发送 c 1 ， c 2 至服务器，并且将密文域从0到 N 2 − 1 划分为k个区间，区间的个数取决于用户在明文域的门限设置 T i ∈ Z n 。用户需要首先将数个门限值 T i 进行加密为 T e i u ： T e i u = E ( T i ， r u ) = g T i r u N mod N 2 (30) 其中r u 分别等于r 1 和r 2 ， i = 1 ， 2 ， 3 ⋯ ， k 。根据文献 [ 8 ] ，同态比较的原则是找到加密数据在整个数据段中 的位置，即被 T e i u 分段后所处的段位，根据公式(4)不难得出， E ( m u ， r u ) ⋅ E ( I n c ， r s ) = E ( m u + I n c ， r u ⋅ r s ) 可以通过计算逐步步长Inc接近门限 T e i u 来得到。很明显， m u 与 T e i u 之间的距离可以通过给 E ( m u ， r u ) 逐步乘 E ( 1 ， 1 ) 直到 E ( m u + I n c ， r u ) = T e i u ， ( i = 1 ， 2 ⋯ ， k ) 这样的方式来进行度量。具体的比较策略如下： ( s u ， d u ) = arg min i ， I n c ( E ( T i ， r u ) − E ( m u ， r u ) g I n c ) (31) 其中s u 表示与密文c u 数值上最接近的门限值，d u 衡量了与最接近的门限值之间的距离，因此通过两个密文我们可以得到两组数据 ( s 1 ， d 1 ) 和 ( s 2 ， d 2 ) ，密文c 1 和c 2 之间的数值大小关系比较方法为：如果s 1 > s 2 ，则c 1 > c 2 ；如果s 1 < s 2 ，则c 1 < c 2 ，如果得到的结果是s 1 = s 2 ，则比较的结果取决于d u 的值： { i f d 1 > d 2 h e n c 1 < c 2 i f d 1 < d 2 h e n c 1 > c 2 i f d 1 = d 2 h e n c 1 = c 2 (32) 以上介绍的同态数值大小的比较方法可以用于加密系统的绝对值运算，LBP运算，以及后续实验中要将用到的K近邻分类方法的计算过程中。