密码学、中间件安全与Hwang - Rao秘密纠错码方案分析
1. 密码学与中间件安全
在网络通信中,当多个连接使用相同的套接字时,它们会共享相同的加密身份。虽然将加密身份进行映射在技术上容易实现,但抽象掉底层安全机制的本质往往并不可取。这种抽象虽然保留了互操作性、抽象性和可移植性,但当底层安全机制改变时,会引入语义不匹配的风险。
1.1 目标标识符抽象
对象引用中的信息是临时的,但对象适配器可以在创建对象引用时将其半自动地映射到静态域名。管理员在请求注册新对象时可以提供域名,对象适配器会将域名与自身名称以及随机选择的对象标识符之间的映射放入本地映射表。
例如,特定用户的银行账户对象在本地映射表中可以始终具有相同的名称。当调用到来时,中间件可以使用请求中的信息(最初来自对象引用)映射回目标名称,然后通过域名定位关联的策略。通过这种间接方式,每次对象重新实例化时无需修改策略,从而抽象了可扩展性需求带来的动态性。
1.2 MICOSec:概念验证
ObjectSecurity开发了MICOSec,这是一个开源的CORBA安全服务实现。它基于MICO ORB,这是CORBA规范的C++实现。选择MICO是因为其透明的结构和高度符合CORBA标准。
当前版本的MICOSec使用MICO内置的SSL支持进行身份验证和消息保护服务。客户端用户身份和目标端身份都基于X.509证书,由公钥基础设施管理。此外,还实现了基于域名的访问控制和审计服务。
1.3 中间件安全面临的挑战
将加密安全机制融入中间件安全架构是困难的,因为这可能会破坏中间件的设计目标,如抽象性、透明性、互操作性、可扩展性和可移植性。中间件安全策略需要表达系统中的参与者,但中间件层没有合适的参与者表示方式。没有“主体”的概念,客户端应用程序没有标识符,目标标识符(如对象引用或接口类型)也不合适。
因此,安全策略不得不依赖底层加密机制的可验证标识符。中间件层实现的参考监视器依赖于中间件试图隐藏的底层加密机制的保证标识符,这打破了ORB层与底层安全技术分离的概念。引入中间件层不仅将应用程序与底层网络分离,还将安全问题与安全解决方案分离。
虽然提出了一些潜在的解决方法,如将加密标识符映射到中间件层的合适表示,但这种方法可能会引入与标识符语义和粒度相关的新问题。
2. Hwang - Rao秘密纠错码方案的密码分析
2.1 方案概述
使用纠错码作为密码系统的概念由McEliece提出,他建议使用Goppa码作为公钥方案的基础。Rao和Nam随后引入了一种新的私钥代数编码密码系统方法,需要简单的纠错码(距离≥6的码)。Hwang和Rao设计了一类私钥密码系统,即秘密纠错码(SECC)。
SECC在保留引入代码的完整纠错能力以处理可能的信道错误的同时,提供数据安全性和可靠性。在SECC方案中,未经授权的用户在没有解码密钥的情况下难以纠正信道错误,信道错误的存在为系统增加了额外的安全级别。
2.2 SECC方案的组成
SECC方案在电子码本(ECB)模式下涉及三个变换:Ψ、E和P。密文C由以下公式给出:
[C = E(\Psi(M)) \cdot P]
其中,Ψ是由子密钥K1选择的加密变换,E是由子密钥K2选择的(n, k)非线性码的编码,P是由子密钥K3选择的随机n × n置换矩阵。加密变换Ψ的目的是抵御选择明文攻击,E的基础是Preparata码。
Preparata码是一类(n = 2r - 1, k = 2r - 2r, 5)的最优双纠错码,对于偶数r ≥ 4。其在GF(2)上的多项式表示如下:
设α是GF(2r - 1)的一个本原元素,g(x)是α的最小多项式,g3(x)是α3的最小多项式,{r(x)}是由g(x)生成的{2r - 1 - 1, 2r - 1 - r, 3}汉明码,{s(x)}是由(1 + x)g(x)g3(x)生成的[2r - 1 - 1, 2r - 1 - 2r, 6]BCH码,f(x)是{m(x)}的对偶码的非零码多项式,使得f²(x) = f(x),u(x) = 1 + x + x² + … + x²r - 1 - 2,q(x) ∈ {0, 1, x, x², …, x²r - 1 - 2},b ∈ {0, 1}。则形式为w = [m(x) + q(x), b, m(x) + (m(1) + b)u(x) + q(x)·f(x) + s(x)]的3块二进制向量是Preparata码的码字。
2.3 SECC方案I
在存在权重≤1的随机错误向量的情况下,使用Preparata码的SECC方案称为SECC方案I。
2.3.1 已知明文攻击步骤
已知s个明文 - 密文对((M_1, C_1), (M_2, C_2), …, (M_s, C_s)),攻击分为以下两个步骤:
1.
确定子密钥K1
:通过穷举搜索来尝试找到未知的子密钥K1。对于每个给定的明文(M_i)(1 ≤ i ≤ s),在试验密钥K1的控制下计算(B_i = E_P(\Psi (M_i)))。由于置换P是保持(汉明)权重的变换,因此可以使用条件(weight (B_i) = weight (C_i))(1 ≤ i ≤ s)来搜索正确的子密钥K1。对于Preparata码,随机选择的码字权重为i的概率(p_i < \frac{1}{2})(4 ≤ i ≤ n - 4),因此错误的K1通过s个明文 - 密文对测试的概率(p < \frac{1}{2^s})。通常,如果有s > |K1|(子密钥K1的比特长度)个这样的对,就可以唯一确定正确的子密钥K1。
2.
确定置换P
:一旦找到子密钥K1,有(B \cdot P = C),其中B是s × n矩阵:
[B =
\begin{bmatrix}
B_1 \
B_2 \
\vdots \
\vdots \
B_s
\end{bmatrix}
]
C是s × n矩阵:
[C =
\begin{bmatrix}
C_1 \
C_2 \
\vdots \
\vdots \
C_s
\end{bmatrix}
]
通过比较矩阵B的n列和矩阵C的n列,可以确定置换P。
2.4 SECC方案II
为了提高使用Preparata码的SECC的纠错能力,Hwang和Rao建议使用| u | u + v |码构造方法,这就是SECC方案II。
2.4.1 方案描述
密文(C_i)由下式给出:
[C_i = (W_i, U_i) \cdot P = (W_i, W_i \cdot Q + V_i) \cdot P]
其中(W_i = E_P (B_i)),(V_i = E_L (A_i)),((B_i, A_i) = \Psi_{K1}(M_i)),(E_P)表示对(n, m1)Preparata码的编码,(E_L)是由子密钥K2选择的(n, m2)线性码的生成矩阵,k = m1 + m2,P是2n × 2n置换矩阵,Q是n × n置换矩阵,分别由子密钥K3和K4随机选择。
2.4.2 已知明文攻击步骤
- 确定子密钥K1 :设K1为试验子密钥,((B_i, A_i) = \Psi_{K1}(M_i))。首先找到齐次线性代数方程组(\lambda A = 0)的最大线性独立解(\lambda^{(1)}, \lambda^{(2)}, …, \lambda^{(N)}),其中A是s × n矩阵,(\lambda = (\lambda_1, \lambda_2, …, \lambda_s))是未知的s维向量。根据线性代数定理,(N \geq s - m_2),并且由于线性码(E_L)的线性性质,有(\sum_{j = 1}^{s} \lambda^{(i)} j E_L(A_j) = E_L(\sum {j = 1}^{s} \lambda^{(i)}_j A_j) = 0)(i = 1, 2, …, N)。
如果K1是正确的选择,则有(2 weight(\sum_{j = 1}^{s} \lambda^{(i)}
j E_P(B_j)) = weight(\sum
{j = 1}^{s} \lambda^{(i)}
j C_j))(1 ≤ i ≤ N)。通过穷举搜索并使用该条件作为密钥识别标准来确定未知的K1。在一些一般条件下,随机生成的l维向量对具有相同(汉明)权重的概率(p < \frac{1}{4}),因此如果s > m2 + (\frac{|K1|}{2}),可以期望唯一确定K1。
2.
确定图像集T
:一旦找到K1,确定置换P下区间[n + 1, 2n]的图像集T。找到齐次线性代数方程组(\mu W = 0)的最大线性独立解向量(\mu^{(1)}, \mu^{(2)}, …, \mu^{(L)})(L ≥ s - m1),其中W是s × n矩阵,(\mu = (\mu_1, \mu_2, …, \mu_s))是未知的s维向量。对于每个1 ≤ i ≤ L,有(\Phi^{(i)} = \sum
{i = 1}^{s} \mu^{(i)}
j C_j = (0^{(n)}, D^{(i)}) \cdot P),其中(D^{(i)} = \sum
{j = 1}^{s} \mu^{(i)}
j E_L(A_j))是(E_L)中的码字。当s足够大(例如s ≥ m1 + m2 + 4)时,这些码字中存在(E_L)的线性基的概率接近1。如果存在这样的基,则可以根据规则(k \in T \Leftrightarrow k) - 第k个分量的(\Phi^{(i)})对于某个i ∈ [1, L]为1来确定T。
3.
在不知道K2, K3, K4的情况下解密密文
:一旦从给定的s个明文 - 密文对中确定了子密钥K1,就可以在不知道K2, K3, K4的情况下解密其他密文。将集合T和(S = I(2n) - T)的数字按某种固定顺序(例如升序)排列为(S = {s_1, s_2, …, s_n}),(T = {t_1, t_2, …, t_n})。对于任何2n维向量(C = (c_1, c_2, …, c
{2n})),写成(C(S) = (c_{s_1}, c_{s_2}, …, c_{s_n})),(C(T) = (c_{t_1}, c_{t_2}, …, c_{t_n}))。
由于(\Psi(M) = (B, A)),首先从接收到的无错误密文C中找到B和A,然后恢复明文M。
-
找到B
:设r是Preparata码的线性闭包(< E >)的维数,从码字(W_i)(1 ≤ i ≤ s)中找到(< E >)的线性基(W_{\alpha_1}, W_{\alpha_2}, …, W_{\alpha_r})。成功找到基的概率接近1。然后有(C(S) = \sum_{k = 1}^{r} \xi_k C_{\alpha_k}(S)),通过求解相应的非齐次线性代数方程组计算系数(\xi_k),得到(W = \sum_{k = 1}^{r} \xi_k W_{\alpha_k}),进而得到(B = E_P^{-1}(W))。
-
找到A
:将(C(T))替换为(C^
(T) = C(T) + \sum_{k = 1}^{r} \xi_k C_{\alpha_k}(T)),从向量(\Phi^{(i)}(T))(1 ≤ i ≤ L)中找到m2个线性独立的向量(\Phi^{(\beta_1)}(T), \Phi^{(\beta_2)}(T), …, \Phi^{(\beta_{m2})}(T))。将(C^
(T))表示为它们的线性组合(C^
(T) = \sum_{k = 1}^{m2} \eta_k \Phi^{(\beta_k)}(T)),通过求解n个方程m2个未知数的系统计算组合系数(\eta_k)。根据(E_L)的线性性质,有(A = \sum_{k = 1}^{m2} \eta_k \sum_{j = 1}^{s} \mu^{(\beta_k)}
j A_j + \sum
{k = 1}^{r} \xi_k A_{\alpha_k})。最后,通过(M = \Psi^{-1}(A, B))得到明文M。
4.
确定子密钥K2, K3, K4
*:以(E_L)是由多项式(g(x) = x^d + g_{d - 1}x^{d - 1} + … + g_0)(d = n - m2)生成的(n, m2)循环码为例。考虑生成矩阵G:
[G =
\begin{pmatrix}
0 & 0 & \cdots & 1 \
0 & 0 & \cdots & g_{d - 1} \
\cdots & \cdots & \cdots & \cdots \
\cdots & \cdots & \cdots & \cdots \
0 & 1 & \cdots & g_2 \
1 & g_{d - 1} & \cdots & g_1 \
g_{d - 1} & g_{d - 2} & \cdots & g_0 \
\cdots & \cdots & \cdots & \cdots \
g_1 & g_0 & \cdots & 0 \
g_0 & 0 & \cdots & 0
\end{pmatrix}
]
以及m2 × m2非奇异矩阵Y:
[Y =
\begin{bmatrix}
Y_{\beta_1} \
Y_{\beta_2} \
\cdots \
Y_{\beta_{m2}}
\end{bmatrix}
]
其中(Y_{\beta_k} = \sum_{j = 1}^{s} \mu^{(\beta_k)}
j A_j),m2 × n矩阵(\Phi):
[ \Phi =
\begin{bmatrix}
\Phi^{(\beta_1)}(T) \
\Phi^{(\beta_2)}(T) \
\cdots \
\Phi^{(\beta
{m2})}(T)
\end{bmatrix}
]
Y和(\Phi)可以从已知的明文 - 密文对计算得到,并且有(G = Y^{-1} \Phi R),其中R是n × n置换矩阵。通过列置换将(Y^{-1} \cdot \Phi)化为规范形式(式2),从而确定矩阵G,即子密钥K2。
2.5 方案总结
在电子码本(ECB)模式下使用的所有SECC都存在密钥信息冗余,可以对次密钥K1进行穷举搜索并恢复其他次密钥。这并不意味着这些方案在密码学上不安全,而是表明在已知明文攻击下,方案中引入的所有附加功能对其密码强度的贡献不大。为了应对这种情况,可以使用密钥扩展技术,将短密钥扩展为长密钥。
综上所述,无论是密码学与中间件安全的融合问题,还是Hwang - Rao秘密纠错码方案的密码分析,都展示了密码学领域在实际应用中面临的挑战和解决思路。对于中间件安全,需要在保证设计目标的前提下,更好地处理加密机制与中间件层的关系;对于秘密纠错码方案,需要进一步优化以提高其在已知明文攻击下的安全性。
3. 技术点分析与对比
3.1 中间件安全技术点分析
- 目标标识符抽象的优势与风险 :目标标识符抽象通过将对象引用映射到静态域名,使得策略无需在对象重新实例化时修改,提高了系统的可扩展性。然而,这种抽象可能会引入语义不匹配的风险,当底层安全机制改变时,可能导致安全策略的不准确应用。
- MICOSec的特点 :MICOSec基于MICO ORB实现,具有透明的结构和高度的标准符合性。其使用X.509证书进行身份验证和消息保护,结合基于域名的访问控制和审计服务,为CORBA系统提供了较为全面的安全保障。但依赖底层SSL支持,可能受到SSL相关漏洞的影响。
3.2 Hwang - Rao SECC方案技术点分析
- SECC方案的安全性基础 :SECC方案利用纠错码的特性,在提供数据安全性的同时保证数据可靠性。信道错误的存在增加了系统的安全级别,但也对解码带来了挑战。
- 已知明文攻击的有效性 :通过对SECC方案I和方案II的已知明文攻击分析,发现可以通过穷举搜索子密钥K1,并利用线性代数方法确定其他子密钥或解密密文。这表明在已知明文攻击下,SECC方案存在一定的安全隐患。
3.3 两种技术的对比
| 对比项 | 中间件安全 | Hwang - Rao SECC方案 |
|---|---|---|
| 应用场景 | 分布式系统中的中间件层安全保障 | 数据加密与纠错 |
| 安全机制 | 依赖底层加密机制和策略映射 | 纠错码与加密变换结合 |
| 攻击应对 | 处理加密机制与中间件层的融合问题 | 应对已知明文攻击 |
| 扩展性 | 通过目标标识符抽象提高可扩展性 | 可通过码构造方法提高纠错能力 |
4. 操作步骤总结
4.1 SECC方案I已知明文攻击操作步骤
graph TD;
A[获取s个明文 - 密文对] --> B[确定子密钥K1];
B --> C[计算Bi = EP(Ψ (Mi))];
C --> D{weight (Bi) = weight (Ci)?};
D -- 是 --> E[找到正确K1];
D -- 否 --> B;
E --> F[确定置换P];
F --> G[比较矩阵B和C的列];
G --> H[得到置换P];
- 获取s个明文 - 密文对((M_1, C_1), (M_2, C_2), …, (M_s, C_s))。
- 对每个试验子密钥K1,计算(B_i = E_P(\Psi (M_i)))。
- 检查(weight (B_i) = weight (Ci))(1 ≤ i ≤ s),若满足则为正确K1。
- 确定置换P,通过比较矩阵B和C的列。
4.2 SECC方案II已知明文攻击操作步骤
graph TD;
A[获取s个明文 - 密文对] --> B[确定子密钥K1];
B --> C[找到齐次线性方程组解];
C --> D{满足2 weight(Σλ(i)j EP(Bj)) = weight(Σλ(i)j Cj)?};
D -- 是 --> E[找到正确K1];
D -- 否 --> B;
E --> F[确定图像集T];
F --> G[找到齐次线性方程组解];
G --> H[判断是否存在EL的线性基];
H -- 是 --> I[确定T];
H -- 否 --> G;
I --> J[解密密文];
J --> K[找到B和A];
K --> L[得到明文M];
L --> M[确定子密钥K2, K3, K4];
M --> N[计算矩阵G];
N --> O[确定子密钥K2];
- 获取s个明文 - 密文对((M_1, C_1), (M_2, C_2), …, (M_s, C_s))。
-
确定子密钥K1:
- 找到齐次线性代数方程组(\lambda A = 0)的最大线性独立解。
- 检查(2 weight(\sum_{j = 1}^{s} \lambda^{(i)} j E_P(B_j)) = weight(\sum {j = 1}^{s} \lambda^{(i)}_j C_j))(1 ≤ i ≤ N)。
-
确定图像集T:
- 找到齐次线性代数方程组(\mu W = 0)的最大线性独立解向量。
- 判断是否存在(E_L)的线性基,若存在则确定T。
-
解密密文:
- 从接收到的无错误密文C中找到B和A。
- 通过(M = \Psi^{-1}(A, B))得到明文M。
-
确定子密钥K2, K3, K4:
- 计算矩阵G,通过列置换将(Y^{-1} \cdot \Phi)化为规范形式确定子密钥K2。
5. 总结与展望
5.1 总结
密码学在中间件安全和秘密纠错码方案中都扮演着重要角色。中间件安全需要解决加密机制与中间件层的融合问题,以保证系统的抽象性、透明性、互操作性、可扩展性和可移植性。Hwang - Rao SECC方案在数据加密和纠错方面有一定的创新性,但在已知明文攻击下存在安全隐患。
5.2 展望
- 中间件安全 :未来可以研究更灵活的加密机制与中间件层的集成方式,减少对底层加密机制的依赖,提高中间件安全策略的表达能力。
- SECC方案 :针对已知明文攻击的问题,可以进一步优化SECC方案,例如采用更复杂的加密变换、增加密钥长度或引入动态密钥生成机制,提高方案在各种攻击下的安全性。同时,可以探索SECC方案在更多领域的应用,如物联网、云计算等。
总之,密码学领域不断面临新的挑战和机遇,需要持续的研究和创新来推动其发展。通过对中间件安全和SECC方案的深入分析,我们可以更好地理解密码学在实际应用中的需求和解决方案,为构建更安全的信息系统提供参考。
超级会员免费看
1025

被折叠的 条评论
为什么被折叠?



