44、快速椭圆曲线算术与改进的韦伊对求值及服务器辅助阈值签名方案

快速椭圆曲线算术与改进的韦伊对求值及服务器辅助阈值签名方案

1. 快速椭圆曲线算术与韦伊对求值优化

1.1 抛物线方程推导

在椭圆曲线运算中,我们考虑一些点的组合。存在三个点 (R + S)、(R) 和 (-2R - S),连接它们的直线斜率为 (\lambda_2),分母是一条过 (R + S) 和 (-R - S) 的(垂直)直线。相关商在 (R)、(R)、(S)、(-2R - S) 处有零点,在 (O) 处有四阶极点。

我们通过将式子按 (x - x_3) 的幂次展开来简化式子。利用椭圆曲线 (E) 的方程消除对 (y_2) 和 (y_2^3) 的引用,得到:
[
\begin{align }
\frac{y^2 - y_2^3}{x - x_3} - \lambda_1(y - y_3) - \lambda_2(y + y_3) + \lambda_1\lambda_2(x - x_3) &= x^2 + xx_3 + x_3^2 + a + \lambda_1\lambda_2(x - x_3) - \lambda_1(y - y_3) - \lambda_2(y + y_3)\
&= x^2 + (x_3 + \lambda_1\lambda_2)x - (\lambda_1 + \lambda_2)y + \text{常数}
\end{align
}
]

已知该式过点 (R = (x_1, y_1)),则抛物线的一个公式为 ((x - x_1)(x + x_1 + x_3 + \lambda_1\lambda_2) - (\lambda_1 + \lambda_2)(y - y_1))。这个抛物线公式不涉及 (y_3),且由于其 (x^2) 系数为 1,所以它永远不会恒为零。

1.2 节省计算量分析

在配对算法中,计算抛物线在某点的值比计算直线并取其乘积所需的工作量更少。因为抛物线不涉及 (y_3),所以我们可以省略 (bP + cP) 的 (y) 坐标,并使用双加技巧。

下面是在计算泰特对时使用抛物线所节省计算量的精确分析。假设我们使用二进制方法来形成 (mP),其中 (m) 有 (n) 位(该方法进行 (2n/3) 次加倍和 (n/3) 次双加或双减操作)。我们分别处理 (h_j) 的分子和分母,最后进行一次除法 (h_j = h_{num,j}/h_{denom,j})。
- 加倍步骤分析 :标准算法和新算法在加倍步骤的分析相同。假设要从 ((h_b, bP)) 计算 ((h_{2b}, 2bP)),需要进行椭圆曲线加倍操作来计算 (2(bP)),然后应用相关公式。若 (bP = (x_1, y_1)) 且 (2bP = (x_4, y_4)),则 (\frac{g_{b,b}}{g_{2b}} = \frac{y - y_1 - \lambda_1(x - x_1)}{x - x_4})。加倍(包括 (\lambda_1) 计算)需要 3 次乘法和 1 次除法,在 (Q_1) 和 (Q_2) 处计算该式(作为分数)需要 2 次乘法,乘以 4 个分数需要 6 次乘法,净成本为 11 次域乘法(或平方)和 1 次域除法。
- 双加步骤分析 :标准算法先进行一次加倍,然后进行一次加法来从 ((h_b, bP)) 和 ((h_c, cP)) 计算 ((h_{2b + c}, (2b + c)P)),计算成本为 21 次域乘法和 2 次除法。新算法进行一次椭圆曲线双加操作,构造抛物线系数仅需 1 次乘法,两次计算抛物线(和垂直线 (g_{2b + c}))需要 4 次乘法,乘以 5 个分数需要 8 次乘法,总成本为 16 次域乘法和 2 次域除法。

算法步骤 标准算法成本 新算法成本
加倍步骤 11 次域乘法(或平方)和 1 次域除法 11 次域乘法(或平方)和 1 次域除法
双加步骤 21 次域乘法和 2 次除法 16 次域乘法和 2 次域除法

1.3 总节省情况

将一次除法估算为 5.18 次乘法,标准算法计算 ((h_m, mP)) 需要 ((16.18 \cdot 2n/3) + (31.36 \cdot n/3) = (21.24)n) 步,而新方法需要 ((16.18 \cdot 2n/3) + (26.36 \cdot n/3) = 19.57n) 步,有 7.8% 的改进。使用抛物线的韦伊对算法相比米勒算法也能节省 7.8% 的计算量。

有时在进行多次泰特对计算时,若 (P) 固定但 (Q_1) 和 (Q_2) 变化,且预先计算了所有直线和抛物线的系数,传统方法每次求值需要 (32n/3) 次乘法,而使用抛物线的方法需要 (28n/3) 次乘法,有 12.5% 的改进。

1.4 伪代码实现

椭圆曲线的一般魏尔斯特拉斯形式方程为 (E : y^2 + a_1xy + a_3y = x^3 + a_2x^2 + a_4x + a_6),其中系数 (a_1)、(a_2)、(a_3)、(a_4)、(a_6) 需满足一定不等式以防止奇点。点 (P = (x_1, y_1)) 在该曲线上的负点为 (-P = (x_1, -a_1x_3 - a_3 - y_1)),若 (P) 是曲线上的有限点,其切线斜率为 (\lambda_1 = \frac{3x_1^2 + 2a_2x_1 + a_4 - a_1y_1}{2y_1 + a_1x_1 + a_3})。

以下是实现该椭圆曲线节省计算量的伪代码:

if (P = O) then
    if (Q = O) then
        parabola = 1;
    else
        parabola = x - x2;
    end if
    return Q;
else if (Q = O) then
    if (denominator of (7) is zero) then
        parabola = x - x1;
        return O;
    end if
    Get tangent slope λ1 from (7);
    parabola = y - y1 - λ1(x - x1);
    x3 = λ1(λ1 + a1) - a2 - 2x1;
    y3 = λ1(x1 - x3) - a1x3 - a3 - y1;
    return (x3, y3);
else
    if (x1 ≠ x2) then
        λ1 = (y1 - y2)/(x1 - x2);
        /* slope of line through P, Q. */
    else if (y1 ≠ y2 OR denominator of (7) is zero) then
        parabola = (x - x1)^2;
        return P;
        /* P and Q must be negatives, so 2P + Q = P.*/
    else
        Get tangent slope λ1 from (7);
    end if
    x3 = λ1(λ1 + a1) - a2 - x1 - x2;
    /* Think y3 = λ1(x1 - x3) - a1x3 - a3 - y1. */
    if (x3 = x1) then
        parabola = y - y1 - λ1(x - x1);
        return O;
        /* P + Q and P are negatives. */
    end if
    /* Think λ2 = (y1 - y3)/(x1 - x3) */
    λ2 = (a1x3 + a3 + 2y1)/(x1 - x3) - λ1;
    x4 = λ2(λ2 + a1) - a2 - x1 - x3;
    y4 = λ2(x1 - x4) - a1x4 - a3 - y1;
    parabola = (x - x1)(x - x4 + (λ1 + λ2 + a1)λ2) - (λ1 + λ2 + a1)(y - y1);
    return (x4, y4);
end if

2. 服务器辅助阈值签名方案

2.1 背景与问题提出

在安全电子商务中,私钥签名的保密性至关重要。阈值签名可以提高安全性和可用性,但传统阈值签名方案通常假设共享签名功能只能由一定数量的参与方激活,这在用户使用公共服务器进行私钥签名功能阈值保护的场景中并不适用,因此出现了“服务器辅助阈值签名”的概念。

2.2 方案贡献

提出了两种高效且可证明安全的服务器辅助阈值签名方案,签名功能由用户激活(以某种增强方式)。这两种方案通过模块化组合方法获得,只要替代模块满足一定安全要求,任何模块都可以替换而不削弱最终方案的安全性。
- TPAKE - HTSig :适用于用户拥有强大网络设备,能够高效计算模幂运算的场景。
- LW - TSig :适用于用户拥有无加密协处理器的智能卡的场景。

2.3 密码学预备知识

2.3.1 消息认证码(MACs)

函数族 ({f_k}_k)(其中 (k \in {0, 1}^\kappa),(\kappa) 为安全参数)是一个安全的 MAC 族,如果任何概率多项式时间的对手 (A) 在以下游戏中成功的概率可忽略不计。首先随机选择一个密钥 (k \in {0, 1}^\kappa),然后 (A) 自适应地选择消息 (m_1, \cdots, m_n) 并接收相应的 MAC 值 (f_k(m_1), \cdots, f_k(m_n))。若 (A) 能生成一对 (\langle m, tag \rangle),其中 (m \neq m_1, \cdots, m_n) 但 (tag = f_k(m)),则 (A) 成功。

2.3.2 签名方案

签名方案 (Sig) 由三个算法 ((Sig.Init, Sig.Sig, Sig.Ver)) 组成。输入安全参数 (\kappa),概率密钥生成算法 (Sig.Init) 返回一对公私钥 ((Y, X))。输入消息 (m) 和私钥 (X),签名算法 (Sig.Sig) 输出签名 (\sigma)。输入标签 (\sigma)、公钥 (Y) 和消息 (m),验证算法 (Sig.Ver) 在 (\sigma) 为有效签名时返回 true,否则返回 false。签名方案需对自适应选择消息攻击安全。

2.3.3 阈值签名方案

阈值签名方案 (TSig) 由三个算法 ((TSig.Init, TSig.Sig, TSig.Ver)) 组成。我们关注一类签名方案,其阈值版本符合以下规范框架:
1. 输入安全参数 (\kappa)、容忍的损坏服务器数量 (t) 和服务器数量 (n),(TSig.Init) 输出公钥 (Y),相应的私钥 (X) 使用适当的秘密共享方案在 (n) 个服务器 ({S_1, \cdots, S_n}) 之间共享。
2. 为了对消息 (m) 签名,(TSig.Sig) 运行如下:(S_{ij}) 生成部分签名 (\sigma_{(ij)} = g_1(m, X_{(ij)})),任何人可以从 (w) 个有效部分签名计算 (\sigma = g_2(\sigma_{(i1)}, \cdots, \sigma_{(iw)})),其中 (t + 1 \leq w \leq n),(1 \leq i_j \leq n),(g_1) 和 (g_2) 是依赖于 (Sig) 的算法。
3. (TSig.Ver) 与 (Sig.Ver) 相同。

阈值签名方案 (TSig) 安全需满足:在自适应选择消息攻击下不可伪造,且在存在 (t) 个损坏服务器时仍能正常工作。

2.3.4 混合阈值签名方案

混合阈值签名方案 (HTSig) 是两方签名方案 (2Sig) 和多方签名方案 (TSig) 对应于同一基础签名方案 (Sig) 的混合。其由三个算法 ((HTSig.Init, HTSig.Sig, HTSig.Ver)) 组成。输入安全参数 (\kappa) 和底层秘密共享方案所需的访问结构,初始化算法 (HTSig.Init) 输出公钥 (Y),相应的私钥 (X) 根据给定的访问结构在参与者之间共享。输入消息 (m) 和私钥份额,(HTSig.Sig) 输出签名 (\sigma),通常 (HTSig.Ver) 与 (Sig.Ver) 相同。

2.3.5 阈值密码认证密钥交换方案

阈值密码认证密钥交换方案(TPAKE)使一组服务器能够使用密码协同认证用户,确保一定数量的服务器被攻破时,对手无法进行离线字典攻击。TPAKE 方案由两个协议 ((TPAKE.Init, TPAKE.Login)) 组成。
- TPAKE.Init :服务器协同生成某些系统范围的配置(如果有),其中一些可能会公布。每个用户选择自己的密码并将其转换后的版本发送给服务器。
- TPAKE.Login :用户成功向服务器认证自己后,用户与每个服务器共享一个不同的即时会话密钥。

2.4 第一个方案:TPAKE - HTSig

2.4.1 方案适用场景

适用于用户拥有强大网络设备,能够高效计算模幂运算的场景。设计该方案的挑战在于确保即使用户设备被攻破,也只有用户能够激活阈值签名会话。因此假设对手只能在用户软件不活动或密码不在对手可访问的设备内存中时攻破用户设备。

2.4.2 HTSig 构造方法

给定属于特定子类的签名方案 (Sig = (Sig.Init, Sig.Sig, Sig.Ver)),从其两方变体 (2Sig = (2Sig.Init, 2Sig.Sig, 2Sig.Ver)) 和多方变体 (TSig = (TSig.Init, TSig.Sig, TSig.Ver)) 构造混合阈值签名方案 (HTSig = (HTSig.Init, HTSig.Sig, HTSig.Ver))。
- 初始化算法 (HTSig.Init)
1. 用户 (U) 使用 2 出 2 秘密共享将其私钥 (X) 共享为 (X^{(2,2)} \leftrightarrow (X_U, X_S)),其中 (X_U) 是 (U) 的份额,对应于 (2Sig.Init)。
2. 用户 (U) 使用适当的秘密共享方案将 (X_S) 共享为 (X_S^{(t + 1,n)} \leftrightarrow (X_{(1)}^S, \cdots, X_{(n)}^S)),其中 (X_{(i)}^S)((1 \leq i \leq n))是 (S_i) 的份额,对应于 (TSig.Init)。
- 签名算法 (HTSig.Sig)
1. 用户 (U) 生成部分签名 (\sigma_U = g_1’(m, X_U)),其中 (g_1’) 是依赖于基础签名方案 (Sig) 的适当算法。
2. (S_{ij}) 贡献其部分签名 (\sigma_{(ij)}^S = g_1(m, X_{(ij)}^S)),其中 (g_1) 是依赖于 (Sig) 的算法,(1 \leq i_j \leq n),(t + 1 \leq w \leq n)。
3. 给定 (w) 个有效部分签名,任何人可以计算 (\sigma_S = g_2(\sigma_{(i1)}^S, \cdots, \sigma_{(iw)}^S)),其中 (1 \leq i_j \leq n),(t + 1 \leq w \leq n),(g_2) 是依赖于 (Sig) 的适当算法。
4. 给定 (\sigma_U) 和 (\sigma_S),任何人可以计算签名 (\sigma = g_2’(\sigma_U, \sigma_S)),其中 (g_2’) 是依赖于 (Sig) 的适当算法。
- 验证算法 (HTSig.Ver) :与 (Sig.Ver) 相同。

2.4.3 HTSig 安全性

混合阈值签名方案 (HTSig) 安全需满足不可伪造和健壮性。
- 不可伪造性 :存在一个多项式时间模拟器,能够在访问对应于基础签名方案 (Sig) 的签名预言机的情况下模拟 (HTSig)。具体在两种情况下需要存在这样的模拟器:
- (X_U) 暴露(即用户设备被攻破)但最多 (t) 个服务器被攻破(即 (X_S) 仍为秘密)。
- (X_S) 暴露(即至少 (t + 1) 个服务器被攻破)但 (X_U) 为秘密。
- 健壮性 :在存在 (t) 个损坏服务器的情况下仍能正常工作。

2.4.4 HTSig 实例化

研究并概述了基于 RSA、DSS 和 Schnorr 的三种 (HTSig) 方案。以 RSA 签名方案为例,假设 (N = PQ) 是 RSA 模数,(\langle e, N \rangle) 和 (\langle d, N \rangle) 是一对 RSA 公私钥,满足 (ed = 1 \mod \varphi(N))。用户首先拆分秘密指数 (d) 来获得 (HTSig)。

2.5 方案流程图

graph TD;
    A[开始] --> B{P是否为O};
    B -- 是 --> C{Q是否为O};
    C -- 是 --> D[parabola = 1; 返回Q];
    C -- 否 --> E[parabola = x - x2; 返回Q];
    B -- 否 --> F{Q是否为O};
    F -- 是 --> G{分母是否为0};
    G -- 是 --> H[parabola = x - x1; 返回O];
    G -- 否 --> I[获取切线斜率λ1];
    I --> J[parabola = y - y1 - λ1(x - x1)];
    J --> K[x3 = λ1(λ1 + a1) - a2 - 2x1];
    K --> L[y3 = λ1(x1 - x3) - a1x3 - a3 - y1];
    L --> M[返回(x3, y3)];
    F -- 否 --> N{x1是否不等于x2};
    N -- 是 --> O[λ1 = (y1 - y2)/(x1 - x2)];
    N -- 否 --> P{y1是否不等于y2或分母是否为0};
    P -- 是 --> Q[parabola = (x - x1)^2; 返回P];
    P -- 否 --> R[获取切线斜率λ1];
    O --> S[x3 = λ1(λ1 + a1) - a2 - x1 - x2];
    R --> S;
    S --> T{x3是否等于x1};
    T -- 是 --> U[parabola = y - y1 - λ1(x - x1); 返回O];
    T -- 否 --> V[λ2 = (a1x3 + a3 + 2y1)/(x1 - x3) - λ1];
    V --> W[x4 = λ2(λ2 + a1) - a2 - x1 - x3];
    W --> X[y4 = λ2(x1 - x4) - a1x4 - a3 - y1];
    X --> Y[parabola = (x - x1)(x - x4 + (λ1 + λ2 + a1)λ2) - (λ1 + λ2 + a1)(y - y1)];
    Y --> Z[返回(x4, y4)];

2.6 总结

通过上述对快速椭圆曲线算术与韦伊对求值优化以及服务器辅助阈值签名方案的介绍,我们看到了在密码学领域不同场景下的高效解决方案。椭圆曲线运算中的抛物线优化可以显著减少计算量,提高配对算法的效率。而服务器辅助阈值签名方案则为安全电子商务中的私钥签名保密性提供了新的思路和方法,不同的方案适用于不同的用户设备场景,并且具有模块化和可证明安全的特点。这些技术的发展将有助于推动安全电子商务的进一步发展。

3. 第二个方案:LW - TSig

3.1 方案适用场景

LW - TSig 方案适用于用户拥有无加密协处理器的智能卡的场景。在这种场景下,智能卡的计算能力有限,无法高效地进行复杂的加密运算,如模幂运算。因此,该方案需要设计得足够轻量级,以适应智能卡的计算能力。

3.2 方案设计思路

由于智能卡无法独立完成复杂的签名操作,LW - TSig 方案依赖于服务器的协助。服务器在签名过程中承担了大部分的计算任务,而智能卡主要负责提供必要的信息和进行简单的验证。

3.3 方案具体步骤

  • 初始化阶段

    1. 系统生成一个安全参数 (\kappa),以及服务器的数量 (n) 和容忍的损坏服务器数量 (t)。
    2. 使用适当的秘密共享方案将用户的私钥 (X) 进行共享,使得服务器 (S_i) 持有私钥份额 (X_{(i)})。
    3. 智能卡存储必要的信息,如用户的身份标识和部分私钥信息。
  • 签名阶段

    1. 用户通过智能卡向服务器发送签名请求,同时提供消息 (m)。
    2. 服务器接收到请求后,根据自己持有的私钥份额 (X_{(i)}) 生成部分签名 (\sigma_{(i)})。
    3. 服务器将部分签名 (\sigma_{(i)}) 发送给智能卡。
    4. 智能卡收集足够数量((t + 1) 个)的部分签名,并使用自己存储的信息对这些部分签名进行验证。
    5. 智能卡将验证通过的部分签名组合成最终的签名 (\sigma)。
  • 验证阶段
    验证算法 (LW - TSig.Ver) 与基础签名方案 (Sig.Ver) 相同。验证者使用公钥 (Y) 对签名 (\sigma) 和消息 (m) 进行验证,判断签名是否有效。

3.4 方案安全性分析

  • 不可伪造性 :在自适应选择消息攻击下,攻击者很难伪造有效的签名。因为私钥被分散存储在多个服务器和智能卡中,攻击者需要攻破足够数量的服务器和智能卡才能获取完整的私钥信息。
  • 健壮性 :即使存在 (t) 个损坏的服务器,只要智能卡和其他未损坏的服务器正常工作,签名方案仍然可以正常运行。智能卡可以通过验证部分签名的有效性来排除损坏服务器的影响。

3.5 方案优势

  • 轻量级 :由于智能卡只需要进行简单的验证和组合操作,不需要进行复杂的加密运算,因此该方案对智能卡的计算能力要求较低。
  • 安全性高 :通过秘密共享和多服务器协作的方式,提高了私钥的安全性,降低了私钥泄露的风险。

4. 保护私钥签名功能的系统分类

4.1 分类依据

根据系统的组成结构、签名方式和安全机制等因素,对保护私钥签名功能的系统进行分类。

4.2 分类结果

  • 传统签名系统 :私钥由单个用户或实体持有,签名过程完全由该用户或实体完成。这种系统的优点是简单直接,但安全性较低,一旦私钥泄露,签名的安全性将受到严重威胁。
  • 阈值签名系统 :私钥被分散存储在多个参与方中,只有当一定数量的参与方协作时才能生成有效的签名。阈值签名系统提高了私钥的安全性和可用性,但需要参与方之间进行有效的协作和通信。
  • 服务器辅助阈值签名系统 :结合了服务器的计算能力和阈值签名的安全性。用户可以借助服务器的协助来完成签名操作,同时通过阈值机制保证私钥的安全性。TPAKE - HTSig 和 LW - TSig 都属于这类系统。

4.3 分类对比

系统类型 私钥存储方式 签名方式 安全性 计算复杂度
传统签名系统 单个用户或实体 单个用户或实体完成
阈值签名系统 多个参与方 多个参与方协作完成
服务器辅助阈值签名系统 多个参与方和服务器 用户借助服务器协助完成 适中

4.4 分类流程图

graph TD;
    A[保护私钥签名功能的系统] --> B{是否为单个用户或实体签名};
    B -- 是 --> C[传统签名系统];
    B -- 否 --> D{是否使用阈值机制};
    D -- 是 --> E{是否有服务器协助};
    E -- 是 --> F[服务器辅助阈值签名系统];
    E -- 否 --> G[阈值签名系统];
    D -- 否 --> H[其他系统];

5. 总结与展望

5.1 总结

本文介绍了快速椭圆曲线算术与韦伊对求值优化以及两种服务器辅助阈值签名方案(TPAKE - HTSig 和 LW - TSig)。椭圆曲线运算中的抛物线优化通过减少计算量,提高了配对算法的效率。服务器辅助阈值签名方案为安全电子商务中的私钥签名保密性提供了有效的解决方案,不同的方案适用于不同的用户设备场景。TPAKE - HTSig 适用于拥有强大网络设备的用户,而 LW - TSig 适用于拥有无加密协处理器智能卡的用户。这些方案具有模块化和可证明安全的特点,能够满足不同场景下的安全需求。

5.2 展望

  • 性能优化 :进一步研究如何优化椭圆曲线运算和签名方案的性能,减少计算复杂度和通信开销,提高系统的效率。
  • 安全性增强 :探索新的安全机制和技术,如零知识证明、同态加密等,以增强系统的安全性,抵御更复杂的攻击。
  • 应用拓展 :将这些技术应用到更多的领域,如物联网、区块链等,为这些领域的安全通信和数据保护提供支持。
  • 标准化 :推动相关技术的标准化,促进不同系统之间的互操作性和兼容性,加速技术的推广和应用。

随着信息技术的不断发展,安全电子商务和数据保护的需求将越来越高。这些技术的不断完善和发展将为保障用户的隐私和数据安全提供更加坚实的基础。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值