椭圆曲线公钥密码算法原理入门

目录


公钥密码的基础

以下是公钥密码学一些关键点,

公钥可以发送给任何人,它是公开的。

必须保护好私钥。如果中间方获得私钥,他们就能解密私信。

计算机可以使用公钥快速加密消息,使用私钥快速解密消息。如果没有私钥,计算机需要很长一段时间(数百万年)才能暴力破解加密消息。

公钥密码学原理:陷门函数

对于所有公钥密码学算法来说,最关键的是它们都有自己独特的陷门函数(Trapdoor Function)。陷门函数是一种只能单向计算,至少是只在一个方向上易于计算的函数。(如果使用现代计算机从另一个方向暴力破解,需要数百万年时间。)

非陷门函数的例子:A + B = C

已知 A 和 B,我就能计算出 C 。问题在于,在已知 B 和 C 的情况下,我也能计算出 A 。这就是非陷门函数。

陷门函数演示流程:

"I love Fox and Friends" + Public Key = "s80s1s9sadjds9s"

已知 "I love Fox and Friends" 和公钥,我可以计算出 "s80s1s9sadjds9s" ,但是已知 "s80s1s9sadjds9s" 和公钥,我无法计算出 "I love Fox and Friends" 。

在 RSA 算法中,陷门函数取决于将一个巨大的数分解成质因数的难易程度。

公钥:944,871,836,856,449,473

私钥:961,748,941 和 982,451,653

在上述例子中,公钥是一个很大的数,私钥是公钥的两个质因数。这是一个很好的例子,因为将私钥中的数相乘,很容易就能算出公钥,但是你只有公钥的话,需要很长时间才能使用计算机算出私钥。

注:在真正的密码学实践中,私钥的长度必须超过 200 位才能被视为是安全的。

ECC 引入

椭圆曲线公钥密码算法简称ECC,ECC 与 RSA 的用途相同。

ECC 会生成一个公钥和私钥,允许双方安全通信。

不过,ECC 相比 RSA 有一大优势。一个 256 位的 ECC 密钥与一个 3072 位的 RSA 密钥安全性相同。也就是说,在资源有限的系统(如智能手机、嵌入式计算机和加密货币网络)中,ECC 密钥需占用的硬盘空间和带宽是 RSA 密钥的 10% 不到。

Principle

ECC 与 RSA 的主要区别 在于陷门函数。

ECC 的陷门函数类似于数学版的台球游戏。我们先在曲线上找到一个特定的点,然后使用函数(通常称为点函数)在曲线上找到一个新的点,接着重复使用点函数,在曲线上不断跳跃,直到找到最后一个点为止。我们来看一下该算法的具体步骤:

椭圆曲线公钥密码算法原理:

从 A 点开始:A dot B = -C(从 A 点至 B 点画一条直线,与曲线相交于 -C 点)-C 点经过 X 轴反射到曲线上的 C 点A dot C = -D (从 A 点至 C 点画一条直线,与曲线相交于 -D 点)-D 点经过 X 轴反射到曲线上的 D 点A dot D = -E (在 A 点至 D 点画一条直线,与曲线相交于 -E 点)-E 点经过 X 轴反射到曲线上的 E 点。

这是一个很棒的陷门函数,因为如果你知道起点(A)在哪里,以及到达终点(E)需要经历多少次跳跃,很容易就能找到终点。但是,如果你只知道起点 A 和终点 E 在哪里,几乎不可能知道中间经历了几次跳跃。

公钥: 起点 A 、终点 E
私钥: 从 A 点至 E 点需要经历几次跳跃

如果转化为加密算法?如何创建公钥和私钥?如何用它们来加密数据?

TODO。。。

椭圆曲线加密算法的安全性如何?

虽然 RSA 加密算法具有极高的安全性,但 ECC 可以说是更胜一筹。

理论上,量子计算机或可有效解决 RSA 所依赖的因数分解问题,从而破解 RSA。 这种情况是否会很快成真,是一个很有争议的问题。 但我们可以肯定地说,考虑到 ECC 的复杂性,与 RSA 相比,它更能抵抗量子计算攻击。

有多大的抵抗能力? 荷兰数学家 Arjen Lenstra 在与他人合著的一篇研究论文中,将破解加密算法与烧水进行比较。 基本概念是计算出破解一个特定的加密算法需要多少能量,然后计算这些能量可以煮沸多少水。 通过这样的类比,破解一个 228 位 RSA 密钥所需的能量比煮沸一茶匙水所需的能量还少,但破解一个 228 位 ECC 密钥所消耗的能量可以煮沸地球上所有的水。 要达到相同的安全级别,RSA 密钥的长度需要达到 2380 位。

Reference:

https://www.panewslab.com/zh/articledetails/D55038644.html
https://www.keepersecurity.com/blog/zh-hans/2023/06/07/what-is-elliptic-curve-cryptography/

相关推荐
Yaml41 个月前
Spring Boot 安全 API 构建:加密解密功能的卓越实践
服务器·网络·spring boot·安全·aes·rsa
许野平1 个月前
OpenSSL:生成 DER 格式的 RSA 密钥对
服务器·网络·openssl·rsa·pem·der
软件算法开发2 个月前
基于ECC簇内分组密钥管理算法的无线传感器网络matlab性能仿真
算法·ecc·无线传感器网络·簇内分组密钥管理
一丝晨光3 个月前
Https 加密原理
开发语言·网络·网络协议·http·https·加密·rsa
Tassel_YUE4 个月前
Cisco交换机SSH使用RSA公钥免密登录(IOS与Nexus,服务器以RHEL8为例)
linux·服务器·经验分享·ssh·交换机·cisco·rsa
无名函数4 个月前
《密码编码学与网络安全原理与实践》第九章 第十章 公钥密码学与密钥管理
网络·密码学·rsa·ecc·公钥加密·elgamal
CyberSecurity_zhang4 个月前
密码学基础 -- RSA加密、签名填充模式解析(终极图解版)
加密解密·rsa·非对称算法·签名验签
又菜又爱coding5 个月前
Flutter RSA公钥转PEM
flutter·rsa
-代号95275 个月前
系统数据加密传输的实现
非对称加密·aes·jasypt·rsa·对称加密