#今天要来点数学吗?##椭圆曲线##密码学[超话]##比特币# 所使用的是椭圆曲线加密机制(Elliptic Curve Cryptography, ECC),
或者更具体点说,是这一定义明确的曲线
y^2 = x^3 + 7
代号secp256k1。
该曲线不是在实数域上定义,而是在一个有限域(finite field)上运算,具体是模一个大素数
𝑝=2^256-2^32−977
虽然椭圆曲线加法在几何上可以用切线与交点解释,但在有限域中,必须用代数公式定义加法规则。
运算是在一个阿贝尔群(Abelian group)中进行,群的加法由椭圆曲线上的点定义
secp256k1标准指定了一个基点(Base Point)𝑔,其坐标以压缩或非压缩形式表示
私钥是一个整数 𝑘,公钥是点𝑘⋅𝑔,即将基点自己加自己𝑘 次。
因为这里是加法群,所以“乘法”其实是群元素重复相加的意思。不至混淆的情况下,也可以表示成𝑔○𝑔○𝑔○𝑔○𝑔……○𝑔=𝑔^𝑘。这样仿指数的表示,就有了离散对数的概念。
压缩形式只包含 𝑥,通过求解
𝑦^2=𝑥^3+7 mod𝑝 得到 𝑦
非压缩形式直接包含 𝑥 和𝑦 的十六进制表示。
虽然从 𝑘 可以高效计算𝑘⋅𝑔,但从𝑘⋅𝑔 反推出𝑘 是极其困难的,
这就是椭圆曲线加密的安全基础:椭圆曲线离散对数问题(Elliptic Curve Discrete Logarithm Problem)
目前,求解大小为n的群中的离散对数问题的最佳算法需要 O(√n) 次运算。这里n 有多大?
基点的阶约为 2^256,因此安全性约为√(2^256)=2^128,即128位安全性。
这里xx位安全性是密码学中的一个衡量标准,用来描述破解某个加密系统所需的计算强度。它并不是指密钥长度本身,而是指攻击者需要尝试的可能性数量级,即大约
2^128 次操作才能成功破解。
