首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在无效的曲线攻击下,我们能恢复什么?

在无效的曲线攻击下,我们能恢复什么?
EN

Cryptography用户
提问于 2021-03-04 18:12:20
回答 1查看 709关注 0票数 2

根据“椭圆曲线密码学指南”(第182页),可以用无效的曲线攻击恢复d

一旦恢复,如何使用此值?例如,对于椭圆曲线Diffie (例如在TLS中),我们可以使用d做什么?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2021-03-04 18:46:36

Weierstrass曲线点加法公式

考虑Weierstrass方程

y^2 = x^3 + a x + b

P=(x_1,x_2)Q=(x_2,y_2)是椭圆曲线上的两点。

  1. P+O=O+P=P
  2. 如果x_1 = x_2 y_1 = - y_2Q =(x_2,y_2)=(x_1,−y_1)=−P,那么P + (-P) = O
  3. 如果是Q \neq -P,则可以用以下方法计算加法P+Q = (x_3,y_3)和坐标;

\begin{align} x_3 = & \lambda^2 -x_1 - x_2 \mod p\\ y_3 = & \lambda(x_1-x_3) -y_1 \mod p \end{align}

\lambda = \begin{cases} \frac{y_2-y_1}{x_2-x_1}, & \text{if $P \neq Q$} \\[2ex] \frac{3 x_1^2+a}{2y_1}, & \text{if $P = Q$} \\[2ex] \end{cases}

Weierstrass曲线上的加法律不使用常数 \color{red}{b}This是攻击的核心。

Invalid曲线攻击

假定所用曲线为Secp256k1,曲线方程为y^2 = x^3+7

现在,利用加法公式不使用7的事实,攻击者A可以选择公钥(x_a,y_a),这样就可以在另一条曲线上使用小阶n。现在,您没有验证这个公钥,而是使用[a](x_a,y_a)作为KDF的输入来派生密钥。现在,攻击者可以尝试所有n可能值[i](x_a,y_a)0 \leq i ,并验证您发送的加密消息的结果。

现在,您不知道任何事情,而且A没有停止,下一次在同一曲线上选择另一个点,以不同的小顺序,或者在另一个曲线上进行攻击。最后,将所有提取的信息与中国剩余定理(CRT)结合起来。

现在,攻击者访问了密钥,并使用它。

TLS

如果攻击者的公钥没有使用CA进行验证,并且假设是这样的,那么您就有了问题。

在TLS 1.3之前,EDHK不一定是短暂的(ECDHE).在这种情况下,它被称为静态。如果您使用静态,则攻击者可以提取您的密钥。记录下来的过去的通讯已不再安全。

由于您在任何DHKE期间使用[d]Q_b计算交换点,所以Q_b = [d_b]G是Bobs公钥,所以它们可以重新计算[d]Q_b。在此之后,我们可以解密所有记录的会话。

如果您使用TLS1.3(应该使用),那么您必须使用ECDHE。在短暂的情况下,私钥和公钥是动态生成的。他们受到签名的保护。在这种情况下,攻击者只能恢复不用于任何其他会话的当前私钥。

这是很好的做法,因为这是原DHKE文件所界定的前向保密。为了实现前向保密,必须删除旧密钥,这正是TLS所做的。

因此,在允许静态DHKE的TLS 1.3之前,它可能是危险的.

The对策

  • 验证点
  • CA验证点,然后通过信任链信任CA。
  • 在您的协议上使用压缩点,在解压缩过程中包含验证。
  • 使用EDHKE
票数 3
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/88636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档