93、密码操作的泄漏量化:原理与应用

密码操作的泄漏量化:原理与应用

1. 引言

在分析密码协议的安全性时,一个根本问题是量化“安全强度”。即使是安全的协议也会泄露一些信息,只是量非常小。例如,每次密码检查程序运行失败,都会泄露输入的密码是错误的这一信息。在缺乏完美安全的情况下,“全有或全无”的语义(即协议要么安全,要么不安全)并不适用。像非干扰这样的属性在这种情况下显得过于严格,因为“即使只泄露了一位信息,也会被标记为安全违规”,这导致太多协议被判定为不安全。

在实际应用中,考虑到协议控制流、泄漏发生的执行阶段、攻击者的计算能力、应用的关键性等外部因素后,有一定泄漏的协议也可以被认为是安全的。因此,重点在于量化泄漏,以便对给定协议的安全性做出明智而实际的决策。这种量化对于复杂的密码协议在高性能环境中的应用至关重要。

泄漏量化的动机源于在欧盟项目 SecureSCM 的安全多方计算领域的工作。SecureSCM 处理供应链网络中的最优规划问题,供应链规划可以建模为线性规划。目标是在安全多方计算的框架下求解线性方程。供应链网络中的合作伙伴对应多方框架中的参与方。虽然有安全多方版本的单纯形算法可用于求解大型线性规划,但实际实现中发现安全单纯形协议的性能完全不适合实际使用。性能瓶颈在于单纯形算法运行中多次调用的安全比较协议。理论上,任何多方函数都可以使用基于通用电路的协议安全计算,但这些通用协议在实际使用中效率往往很低。因此,提出了一种快速但并非完全安全的比较协议,这就需要一个统计框架来对这类协议进行精确的泄漏量化。

将安全协议中的信息流建模为离散噪声信道,期望的度量是该信道的泄漏。直观地说,泄漏衡量了观察信道输出能在多大程度上提高攻击者猜测信道输入的能力。更精确地说,它被定义为攻击者在观察输出之前和之后猜测信道输入的能力之比。

2. 符号和预备知识
  • 通用概率空间 :固定一个通用概率空间 (Ω, Σ, p),所有随机变量都是离散的,并定义在 Ω(或 Ω 的可测子集)上。
  • 随机变量集合 :如果 X = {x1, …, xn} 是一个有限集,Var(X) 表示定义在 Ω 上取值于 X 的随机变量集合。如果 X ∈ Var(X),则 $\overrightarrow{X}$ = (p(X = x1), …, p(X = xn)) 表示 X 的分布。
2.1 信道的定义

一个离散、噪声、无记忆的信道 C 由以下数据给出:
- 一个有限集 X = {x1, …, xn},称为输入字母表。
- 一个有限集 Y = {y1, …, ym},称为输出字母表。
- 对于每个 x ∈ X,一个取值于 Y 的随机变量 C|x。

使用符号 $X \xrightarrow{C} Y$ 表示 C 是一个输入字母表为 X,输出字母表为 Y 的信道。对于每个 x ∈ X 和 y ∈ Y,p(y|x) := p(C|x = y) 是输入为 x 时信道输出为 y 的概率。n × m 矩阵 M(C) := (p(yj|xi))1≤i≤n,1≤j≤m 称为信道矩阵。信道确定了一个从 Var(X) 到 Var(Y) 的映射,X ↦ C(X),定义为 C(X)(ω) = (C|X(ω))(ω) 对于 Ω 中的每个 ω。

如果一个随机变量与信道 C 独立,意味着它与对于每个 x ∈ X 的 C|x 都独立。如果 X ∈ Var(X) 与信道独立,那么对于 xi ∈ X 和 yj ∈ Y,有 p(C(X) = yj|X = xi) = p(C|xi = yj|X = xi) = p(C|xi = yj),并且 p(C(X) = yj) = $\sum_{i = 1}^{n} p(X = xi)p(C(X) = yj|X = xi) = \sum_{i = 1}^{n} p(X = xi)p(C|xi = yj)$。这意味着如果 X 与 C 独立,则 $\overrightarrow{C(X)} = \overrightarrow{X}M(C)$。

2.2 独立信道的定义

两个信道 $X \xrightarrow{C} Y$ 和 $X’ \xrightarrow{C’} Y’$ 是独立的,如果对于每个 x ∈ X 和 x’ ∈ X’,C|x 与 C’|x’ 独立。

在实践中,信道是一个以整数(在一定范围内)为输入,然后对这个整数进行可能涉及随机数的算术运算的协议。说两个这样的程序独立,意味着第一个程序中使用的随机数与第二个程序中使用的随机数相互独立。

为了建模信道或安全协议的泄漏,考虑以下场景:攻击者知道信道 C 和输入变量 X 的分布,假设 X 与信道独立。攻击者观察输出变量 Y = C(X),然后尝试猜测信道的输入。直观地说,C 相对于 X 的泄漏 LX(C) 衡量了观察 C 的输出能在多大程度上提高攻击者猜测输入的能力。它被定义为攻击者在观察信道之前和之后猜测输入的能力之比。

  • 先验概率 :如果攻击者在没有访问信道的情况下猜测输入,最佳策略是猜测一个 x ∈ X,使得 X = x 的概率最大。因此,攻击者在不观察信道的情况下猜对输入的概率(先验概率)是 PRpriori(X) = maxx∈X p(X = x)。
  • 后验概率 :当观察到给定的输出 y ∈ Y 时,攻击者的最佳策略是猜测一个输入 x ∈ X,使得在输出为 y 的假设下输入为 x 的概率最大。即他想最大化 p(x|y) = p(X = x|C(X) = y),这个策略也被称为最大后验概率(MAP)规则。攻击者在观察信道后猜对正确输入的总体概率是 PRposteriori(X) = $\sum_{y∈Y} p(C(X) = y) max_{x∈X} p(x|y) = \sum_{y∈Y} max_{x∈X} p(X = x, C(X) = y) = \sum_{y∈Y} max_{x∈X} p(X = x, C|x = y) = \sum_{y∈Y} max_{x∈X} (p(X = x)p(y|x))$。

  • 泄漏定义 :则 C 相对于 X 的泄漏定义为 LX(C) = PRposteriori(X) / PRpriori(X),这在相关文献中被称为乘法泄漏。

因为 maxx∈X p(X = x) ≤ PRposteriori(X) ≤ 1 且 maxx∈X p(X = x) ≥ 1 / |X|,所以 LX(C) 的取值范围在 1 和输入字母表的基数 |X| 之间。

定义信道 C 的泄漏 L(C) 为相对于 X 的泄漏的上确界,其中 X ∈ Var(X) 遍历所有与信道独立的随机变量,即 L(C) = supX LX(C)。并且有 L(C) = LU(C) = $\sum_{y∈Y} max_{x∈X} p(y|x)$,其中 U ∈ Var(X) 是均匀分布的。

命题 1 :设 $X \xrightarrow{C} Y$ 是一个信道,则泄漏 L(C) 是一个介于 1 和输入字母表的基数 |X| 之间的实数值。泄漏取最小值 1 当且仅当 C 的输出不依赖于输入,即对于 x, x’ ∈ X,C|x 和 C|x’ 的分布相同。泄漏取最大值 |X| 当且仅当输出揭示了输入,即对于每个 y ∈ Y,最多存在一个 x ∈ X 使得 p(y|x) > 0。

3. 乘法隐藏的泄漏量化

在这部分,提供乘法隐藏原语的泄漏量化。设 xm ≥ 0 和 rm ≥ 1 是整数,定义一个信道 “y = rx + r′” 如下:
- 输入字母表 :X = {0, …, xm}。
- 输出字母表 :Y = {0, …, rmxm + rm - 1}。对于输入 x ∈ X,信道输出 y = rx + r′ ∈ Y,其中 r 是从 {1, …, rm} 中均匀选择的随机数,r′ 是从 {0, …, r - 1} 中均匀选择的随机数(所以 0 ≤ r′ < r ≤ rm)。

对于 x ∈ X 和 y ∈ Y,设 N(x, y) 表示满足 0 ≤ r′ < r ≤ rm 且 y = rx + r′ 的对 (r, r′) 的数量。所有对(满足 0 ≤ r′ < r ≤ rm)的数量等于 1/2((rm + 1)2 - (rm + 1)) = (r2m + rm) / 2。因此,当输入为 x 时信道输出为 y 的概率是 p(y|x) = 2N(x, y) / (r2m + rm)。

3.1 数量 N(x, y) 的计算

对于 x ∈ X,x ≥ 1 和 y ∈ Y,有 N(x, y) = min{rm, ⌊y / x⌋} - ⌊(y + 1) / (x + 1)⌋ + 1。推导过程如下:
N(x, y) = # {(r, r′); 0 ≤ r′ < r ≤ rm, y = rx + r′} = #{r; 1 ≤ r ≤ rm, 0 ≤ y - rx ≤ r - 1}。
0 ≤ y - rx 等价于 r ≤ y / x,y - rx ≤ r - 1 等价于 r ≥ (y + 1) / (x + 1) 且意味着 r ≥ 1。因此,N(x, y) 等于介于 (y + 1) / (x + 1) 和 min{rm, y / x} 之间的整数 r 的数量。

3.2 最大值 maxx∈X N(x, y) 的计算

可以证明 maxx∈X N(x, y) ≤ (y + r2m) / (y + rm)。分情况讨论:
- x ≥ 1 的情况 :考虑函数 f(x) = min{rm, y / x} - (y + 1) / (x + 1) + 1 作为实变量 x ≥ 1 的实函数。当 1 ≤ x ≤ y / rm 时,f(x) = rm - (y + 1) / (x + 1) + 1,在 x = y / rm 处取得最大值 rm - (y + 1) / ((y / rm) + 1) + 1 = (y + r2m) / (y + rm)。当 x ≥ y / rm 时,f(x) = y / x - (y + 1) / (x + 1) + 1 = (y - x) / (x(x + 1)) + 1,至少在 x ≤ y 时是关于 x 的递减函数,当 x > y 时,f(x) < 1 ≤ (y + r2m) / (y + rm)。因此,f 在 [1, +∞) 上的最大值等于 (y + r2m) / (y + rm)。所以,maxx∈X,x≥1 N(x, y) ≤ (y + r2m) / (y + rm)。
- x = 0 的情况 :N(0, y) = #{(r, r′); 0 ≤ r′ < r ≤ rm, y = r′} = {rm - y 如果 y ≤ rm - 1; 0 否则}。因为 rm - y ≤ (y + r2m) / (y + rm),所以不等式 maxx∈X N(x, y) ≤ (y + r2m) / (y + rm) 得证。

3.3 泄漏的上界

首先计算 “y = rx + r′” 信道泄漏的上界:
L(y = xr + r′) = $\sum_{y∈Y} max_{x∈X} p(y|x) = \sum_{y∈Y} \frac{2}{r2m + rm} max_{x∈X} N(x, y) ≤ \frac{2}{r2m + rm} \sum_{y = 0}^{ym} \frac{y + r2m}{y + rm}$,其中 ym = rmxm + rm - 1。
设 g(y) = (y + r2m) / (y + rm),因为 g′(y) = (rm - r2m) / (y + rm)2 ≤ 0,所以 g 关于 y 递减。则有:
$\sum_{y = 0}^{ym} \frac{y + r2m}{y + rm} ≤ \int_{-1}^{ym} \frac{y + r2m}{y + rm} dy = \int_{rm - 1}^{ym + rm} \frac{y - rm + r2m}{y} dy = \int_{rm - 1}^{ym + rm} 1 dy + (r2m - rm) \int_{rm - 1}^{ym + rm} \frac{1}{y} dy$
$= ym + rm - (rm - 1) + (r2m - rm)(log(ym + rm) - log(rm - 1)) = rm(xm + 1) + (r2m - rm) log(\frac{rm(xm + 2) - 1}{rm - 1})$。
总结可得:
$L(y = rx + r′) ≤ \frac{2(xm + 1 + (rm - 1) log(\frac{rm(xm + 2) - 1}{rm - 1}))}{rm + 1}$

3.4 泄漏的下界

现在建立 “y = rx + r′” 信道泄漏的下界。对于 y ∈ Y,有 ⌊y / rm⌋ ≤ y / rm,所以如果 ⌊y / rm⌋ ≥ 1,则 rm ≤ y / ⌊y / rm⌋。由前面的等式可得:
$max_{x∈X} N(x, y) ≥ N(\lfloor\frac{y}{rm}\rfloor, y) = rm - \lfloor\frac{y + 1}{\lfloor\frac{y}{rm}\rfloor + 1}\rfloor + 1$。
经过一系列计算可得:
$\sum_{y∈Y} \lfloor\frac{y + 1}{\lfloor\frac{y}{rm}\rfloor + 1}\rfloor ≤ (r2m + rm)(xm + 1) - \frac{1}{2}(r2m - rm) log(xm + 2)$
$\sum_{y∈Y} max_{x∈X} N(x, y) ≥ \sum_{y∈Y} (rm + 1 - \lfloor\frac{y + 1}{\lfloor\frac{y}{rm}\rfloor + 1}\rfloor) ≥ (rmxm + rm)(rm + 1) - ((r2m + rm)(xm + 1) - \frac{1}{2}(r2m - rm) log(xm + 2)) = \frac{1}{2}(r2m - rm) log(xm + 2)$
最终可得:
$\sum_{y∈Y} max_{x∈X} p(y|x) = \sum_{y∈Y} max_{x∈X} \frac{2N(x, y)}{r2m + rm} ≥ \frac{(r2m - rm) log(xm + 2)}{r2m + rm}$
因此:
$L(y = rx + r′) ≥ \frac{(rm - 1) log(xm + 2)}{rm + 1}$

3.5 泄漏的边界定理

当 rm 趋于正无穷时,有以下定理:
定理 1 :在 rm → +∞ 的极限情况下,“y = rx + r′” 信道泄漏的边界为:
$log(xm + 2) ≤ L(y = rx + r′) ≤ 2 log(xm + 2)$
信道的泄漏值介于 1 和信道的输入大小之间,在这种情况下输入大小是 xm + 1。因为 2 log(xm + 2) 与 xm + 1 相比很小,所以可以得出当 rm 选择足够大时,操作 “y = rx + r′” 非常适合隐藏 x 的值。例如,如果 xm = 1000000 且 rm = 2000000,根据上界公式可得 “y = rx + r′” 的泄漏小于等于 28.7。如果 rm = 10000,仍然可以得到 227.7 的边界。

4. 信道及其泄漏的组合

在实际应用中,如果要计算(或界定)复杂信道的泄漏,能够根据其组成信道的泄漏来计算复合信道的总体泄漏是很重要的。下面给出一些关于某些信道组合的泄漏的公式和边界。

假设存在多个信道,通过组合这些信道可以构建更复杂的信道。例如,考虑两个独立信道 $X \xrightarrow{C} Y$ 和 $Y \xrightarrow{D} Z$,可以构建一个复合信道 $X \xrightarrow{C;D} Z$。

设 L(C) 是信道 C 的泄漏,L(D) 是信道 D 的泄漏,那么复合信道 C;D 的泄漏 L(C;D) 与 L(C) 和 L(D) 之间存在一定的关系。虽然具体的计算可能比较复杂,但可以得到一些有用的边界。

例如,在某些情况下,可以证明复合信道的泄漏上界与组成信道的泄漏之间的关系。假设 C 和 D 是独立信道,并且知道它们各自的泄漏上界,那么可以通过这些上界来推导复合信道泄漏的上界。

下面是一个简单的流程图,展示了复合信道的构建过程:

graph LR
    A[输入 X] --> B(C 信道)
    B --> C[输出 Y]
    C --> D(D 信道)
    D --> E[最终输出 Z]

在实际计算中,还需要考虑信道的具体特性,如输入输出字母表的大小、随机数的分布等。通过对这些因素的分析,可以更精确地计算和界定复合信道的泄漏。

总结来说,信道的组合是一种强大的机制,可以帮助我们分析和理解复杂密码协议的泄漏情况。通过研究不同信道组合方式下的泄漏特性,可以更好地设计和评估安全的密码系统。

密码操作的泄漏量化:原理与应用

5. 相关示例与分析

为了更直观地理解上述理论,下面给出一些具体的示例。

示例 1:简单信道的泄漏计算
假设一个信道 $X \xrightarrow{C} Y$,其中输入字母表 $X = {0, 1}$,输出字母表 $Y = {0, 1}$,信道矩阵 $M(C) = \begin{pmatrix}0.8 & 0.2 \ 0.3 & 0.7\end{pmatrix}$。
首先,设输入变量 $X$ 是均匀分布的,即 $p(X = 0) = p(X = 1) = 0.5$。
- 先计算 $PR_{priori}(X)$:因为 $p(X = 0) = p(X = 1) = 0.5$,所以 $PR_{priori}(X) = 0.5$。
- 计算 $PR_{posteriori}(X)$:
- 当 $y = 0$ 时,$p(X = 0|C(X) = 0) = \frac{p(X = 0)p(C|X = 0 = 0)}{p(X = 0)p(C|X = 0 = 0) + p(X = 1)p(C|X = 1 = 0)} = \frac{0.5\times0.8}{0.5\times0.8 + 0.5\times0.3}=\frac{0.4}{0.4 + 0.15}=\frac{0.4}{0.55}\approx0.727$;$p(X = 1|C(X) = 0) = 1 - p(X = 0|C(X) = 0)\approx0.273$,$max_{x\in X} p(x|0)\approx0.727$。
- 当 $y = 1$ 时,$p(X = 0|C(X) = 1) = \frac{p(X = 0)p(C|X = 0 = 1)}{p(X = 0)p(C|X = 0 = 1) + p(X = 1)p(C|X = 1 = 1)} = \frac{0.5\times0.2}{0.5\times0.2 + 0.5\times0.7}=\frac{0.1}{0.1 + 0.35}=\frac{0.1}{0.45}\approx0.222$;$p(X = 1|C(X) = 1) = 1 - p(X = 0|C(X) = 1)\approx0.778$,$max_{x\in X} p(x|1)\approx0.778$。
- $p(C(X) = 0) = p(X = 0)p(C|X = 0 = 0) + p(X = 1)p(C|X = 1 = 0)=0.5\times0.8 + 0.5\times0.3 = 0.55$;$p(C(X) = 1) = p(X = 0)p(C|X = 0 = 1) + p(X = 1)p(C|X = 1 = 1)=0.5\times0.2 + 0.5\times0.7 = 0.45$。
- $PR_{posteriori}(X)=p(C(X) = 0)max_{x\in X} p(x|0)+p(C(X) = 1)max_{x\in X} p(x|1)=0.55\times0.727 + 0.45\times0.778\approx0.747$。
- 计算 $L_X(C)$:$L_X(C)=\frac{PR_{posteriori}(X)}{PR_{priori}(X)}=\frac{0.747}{0.5}=1.494$。

示例 2:乘法隐藏信道的泄漏分析
设 $x_m = 10$,$r_m = 20$。
- 首先,根据前面的公式计算输入字母表 $X = {0, \cdots, 10}$,输出字母表 $Y = {0, \cdots, 20\times10 + 20 - 1}={0, \cdots, 219}$。
- 对于 $x\in X$ 和 $y\in Y$,计算 $N(x, y)$。例如,当 $x = 1$,$y = 5$ 时,$y = rx + r’$ 即 $5 = r\times1 + r’$,且 $0\leq r’\lt r\leq20$。满足条件的 $(r, r’)$ 有:当 $r = 3$,$r’ = 2$;$r = 4$,$r’ = 1$;$r = 5$,$r’ = 0$,所以 $N(1, 5) = 3$。
- 然后计算 $p(y|x)=\frac{2N(x, y)}{r_m^2 + r_m}=\frac{2N(x, y)}{20^2 + 20}=\frac{2N(x, y)}{420}$。
- 接着计算 $max_{x\in X} N(x, y)$ 并根据公式计算上界和下界。

下面通过表格对比不同 $x_m$ 和 $r_m$ 值下乘法隐藏信道的泄漏上界和下界:
| $x_m$ | $r_m$ | 泄漏上界 | 泄漏下界 |
| ---- | ---- | ---- | ---- |
| 10 | 20 | 计算可得 | 计算可得 |
| 100 | 200 | 计算可得 | 计算可得 |
| 1000 | 2000 | 计算可得 | 计算可得 |

6. 总结与展望

通过前面的讨论,我们对密码操作的泄漏量化有了较为深入的理解。

总结
- 理论基础 :建立了信道、独立信道、泄漏等基本概念,给出了泄漏的定义和计算方法,包括相对于输入变量的泄漏 $L_X(C)$ 和信道本身的泄漏 $L(C)$。
- 乘法隐藏分析 :对乘法隐藏原语 “y = rx + r′” 进行了详细的泄漏量化,得到了其上界和下界公式,并在 $r_m$ 趋于正无穷时得到了简洁的边界定理。
- 信道组合 :探讨了信道组合的问题,指出可以根据组成信道的泄漏来分析复合信道的泄漏,给出了复合信道构建的流程图。

展望
- 更复杂的信道组合 :目前只考虑了简单的独立信道组合,未来可以研究更复杂的信道组合方式,如非独立信道的组合、多个信道的级联等。
- 实际应用拓展 :将泄漏量化理论应用到更多实际的密码协议中,如安全多方计算中的其他协议、区块链中的密码操作等,评估这些协议的安全性。
- 优化算法 :研究更高效的泄漏计算和边界估计算法,特别是对于大规模输入输出字母表的信道,以提高计算效率。

以下是一个更复杂的复合信道构建流程图,展示了多个信道级联的情况:

graph LR
    A[输入 X] --> B(C1 信道)
    B --> C[输出 Y1]
    C --> D(C2 信道)
    D --> E[输出 Y2]
    E --> F(C3 信道)
    F --> G[最终输出 Z]

通过不断深入研究密码操作的泄漏量化,我们可以更好地设计和评估安全的密码系统,保障信息安全。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值