首页 > 其他分享 >椭圆曲线加密笔记

椭圆曲线加密笔记

时间:2023-11-02 14:23:59浏览次数:30  
标签:椭圆 加密 曲线 笔记 GF 逆元 加法 乘法

数学知识

  • :一组元素的集合,以及在集合上的四则运算,构成一个域。其中加法和乘法必须满足交换、结合和分配的规律。加法和乘法具有封闭性,即加法和乘法结果仍然是域中的元素。域中必须有加法单位元和乘法单位元,且每一个元素都有对应的加法逆元和乘法逆元。但不要求域中的 0有乘法逆元。
  • 单位元:单位元和其他元素结合时,并不会改变那些元素。 通常使用e来表示。
  • 逆元:若ab=ba=e,则称a为b的逆元,b为a的逆元。
  • 本原多项式: 域中不可约多项式是不能够进行因子分解的多项式, 本原多项式 (primitive polynomial)是一种特殊的不可约多项式。当一个域上的本原多项式确定了,这个域上的运算也就确定了。通过将域中的元素化为多项式形式,可以将域上的乘法运算转化为普通的多项式乘法再模本原多项式。

椭圆曲线定义

实数域上一组点集(x,y)满足

\[y^2 =x^3 +ax+b \]

\[4a^3+27b^2 \neq0 \]

就是一条椭圆曲线。\(4a^3+27b^2 \neq0\) 是为了保证曲线不包含奇点。

奇点:尖点或自相交。
奇点示例:
image

另外,无穷远点也是椭圆曲线的一部分,以0表示无穷远点。

运算

加法运算:取一条直线与椭圆曲线相交,这条直线和椭圆曲线相交的三点为P, Q, R(皆非零)。定义他们的总和等于0,\(P+Q+R=0\)。这里的0前述提到的单位元。
image

PQR同一直线上三点的顺序任意交换不影响加法运算总和,椭圆曲线上的点集属于阿贝尔群,也就是可交换群。

逆元

由\(P+Q+R=0\) 可以推知 \(-Q=P+R\)

那么-Q又是什么呢?-Q+Q=P+R+Q=0,容易想到,给定一个椭圆曲线上点Q,经Q画一条直线,这条直线与椭圆曲线仅交于两个点,一个点是Q,另一个自然就是-Q了。
这样的直线有两种情况,一种是直线经此点相切,另一种就是过此点作垂直于x轴的直线。

先讨论作垂线的情况,由$y^2 =x^3 +ax+b $可知,椭圆曲线关于x轴对称。那么另外一点,也就是-Q,自然就是Q关于x轴对称的另一点了。也就是这条直线与椭圆曲线相较于无穷远点0。

倍点运算

那么切线的情况呢?于切线我们可以通过渐进的方式,即P不断接近Q,直到P与Q重合,直线也就成了切线。
在这种情况下,可以写成\(Q+Q+R=0\),也就是\(R=(-Q)+(-Q)\)。
是的,虽然很难理解,但是在直线与椭圆曲线相切的情况下,另一点是-2Q
这就是倍点运算

既然有了 -2Q,很容易我们就能得到2Q,也就是-R。有了2QQ,把他们连起来,-3Q3Q也是手到擒来。
以此类推,对于已知参数的椭圆曲线,给定点Q,得到它的n倍点,只需要按部就班计算即可。得益于计算机的算力,这并不复杂。

注意,n的取值应当使nQ不为无穷远点。

验证点

现在我们已知两个非零非对称的椭圆曲线点\(P(x_P,y_P)\)和\(Q(x_Q,y_Q)\),过此两点的直线交椭圆曲线于点\(R(x_R,y_R)\)。

非常容易验证点R是否与P,Q处于同一直线和椭圆曲线上,不再赘述。

有限域实践

以上阐述和图形都建立在坐标连续的情况下,实践中我们常用有限域(伽罗华域, Galois Field)上的椭圆曲线。有限域又可分为素数域\(GF(P)\)与二进制域\(GF(2^m)\)。

之所以要引入有限域,是因为有限域中的加法和乘法具有封闭性,即加法和乘法结果仍然是域中的元素,实践中我们不可能对变量取无穷多的值进行计算,

\(GF(P)\)上的椭圆曲线:

\[y^2\equiv x^3+ax+b(mod p) \]

a,b,x,y均在有限域\(GF(p)\)中取值,即取值在\({0,1,2,3...,p-1}\)。p为大于3的素数。

p为素数时,才能保证集合中的所有的元素都有乘法逆元(0除外)。即对于域中的任一个元素a,总能在域中找到另外一个元素b,使得a*b mod p 等于1。

说明:假如p等于10,其乘法单位元为1。对于元素2,找不到一个数a,使得2*a mod 10 等于1,即2没有乘法逆元。这时,在域上就不能进行除2运算。

实例:在\(GF(23)\)上的椭圆曲线\(y^2\equiv x^3+x(mod 23)\)。
点\((1,5)\)在该椭圆曲线上,因为:
\(5^2=25\),
\(1+1=2\),
\(25(mod 23)=2\)。

二进制域\(GF(2^m)\)上的椭圆曲线:

\[y^2+xy=x^3+ax+b \]

\(a,b,x,y\)均在有限域\(GF(2^m)\)中取值
当 b = 1 时 , 方程表示的曲线称Koblitz曲线,是椭圆曲线密码体制实现中速度最快的曲线。

为了保证单位元性质,\(GF(2^w)\)上的加法运算和乘法运算,不再使用一般的加法和乘法,而是使用多项式运算。

在实践中,为了保证安全强度,有限域常常取得很大,当前来说\(GF(2^m)\)中m取160是合适的,即2的160次方这么大。

椭圆曲线公私钥

给定已知椭圆曲线上一点G和倍数k,计算k倍点 K,即
\(K=kG\)
知道G和k, 计算K是容易的,但是已知K和G,得到k却是困难的。所以我们可以将G和K 发送出去,k保留。K就是我们常说的公钥 , k则是私钥。

加解密

选定已知椭圆曲线E,其上一点G。生成私钥k,计算得到公钥K。
现在用户Alice可以将椭圆曲线E的参数和基点G, 公钥K发送给用户Bob。

Bob收到这些参数后,将需要加密的信息m编码到这个椭圆曲线上一点M,并产生随机数r。计算两个参数。
\(C1=M+rK=M+rkG=M+kC2\),
\(C2=rG\),
这里的M点是未经加密的信息,C1则是信息经过了公钥加密的点,C2点则是Bob的随机数r倍G点。
可以看到,Bob也生成了一个r倍点C2, 并利用r乘以Alice的公钥,本质上实现了Alice和Bob的两个随机数r和k一起对M点进行加法运算。

Alice收到C1和C2后,进行计算
\(C1-kC2=M+kC2-kC2=M\)

现在,Alice得到了信息m,这个过程中,即使攻击者获得了C1,C2,椭圆曲线E,基点G,也无法破解加密信息。

参考资料:
1.《应用密码学》胡向东等。
2. 伽罗华域(Galois Field)上的四则运算
3. 椭圆曲线加密算法原理解析(ECC)
4. 椭圆曲线加密原理与应用

标签:椭圆,加密,曲线,笔记,GF,逆元,加法,乘法
From: https://www.cnblogs.com/BYGAO/p/17040468.html

相关文章

  • 学习笔记8
    苏格拉底挑战第五章定时器及时钟服务一、知识点归纳(一)硬件定时器定时器是由时钟源和可编程计数器组成的硬件设备。时钟源通常是一个晶体振荡器,会产生周期性电信号,以料青确的频率驱动计数器。使用一个倒计时值对计数器进行编程,每个时钟信号减1。当计改减为0时,计数器向CPU......
  • Windows常用运维命令汇总-学习笔记
    基本网络命令ipconfig/all                                     查看IP地址whoami                                           查询账号所属权限whoami/all               ......
  • JS加密/解密之jsjiami在线js加密的效率问题
    故事背景 经常有客户反馈,v7加密的效率比v6低,但是安全性更好。这里我给大家科普一下关于jsjiami的优化诀窍。示例源代码//伪代码while(1){varname=‘张三’}优化后var_name='张三';while(1){varname=_name}优化原理相信很多朋友会疑惑这两者的区别是什......
  • Effective Python 编写高质量Python代码的59个有效方法----读书笔记
    第二条遵循PETP8风格指南PEP8指南PythonEnhancementProposal#8使用space(空格)来表示缩进,而不要用tab(制表符)和与法相关的每一层缩进都用4个空格来表示每行的字符数不应超过79对于占据多行的长表达式来说,除了首行之外的其余各行都应该在通常的缩进级别至上再加4个空格......
  • 最小表示法学习笔记
    找出与\(S\)循环同构的字符串中字典序最小的那一个。记录两个指针\(i\)和\(j\),表示当前可能成为答案的最前面两个位置。初值为字符串的前两个位置\(1\)和\(2\)。每次按\(k\)从小到大暴力比较\(S_{i+k}\)和\(S_{j+k}\)的大小,当遇到\(S_{i+k}>S_{j+k}\)时,\(i\simi......
  • 学习笔记:卢卡斯定理
    卢卡斯定理引入卢卡斯定理用于求解大组合数取模的问题,其中模数必须为素数。正常的组合数运算可以通过递推公式求解,但当问题规模很大,而模数是一个不大的质数的时候,就不能简单地通过递推求解来得到答案,需要用到卢卡斯定理。定义卢卡斯定理内容如下:对于质数\(p\),有\[\binom{n}{......
  • 学习笔记:裴蜀定理
    裴蜀定理定义裴蜀定理,又称贝祖定理(Bézout'slemma)。是一个关于最大公约数的定理。其内容是:设\(a,b\)是不全为零的整数,则存在整数\(x,y\),使得\(ax+by=\gcd(a,b)\).证明若任何一个等于\(0\),则\(\gcd(a,b)=a\).这时定理显然成立。若\(a,b\)不等于\(0\).由......
  • 学习笔记:威尔逊定理
    威尔逊定理定义威尔逊定理:对于素数\(p\)有\((p-1)!\equiv-1\pmodp\)。证明我们知道在模奇素数\(p\)意义下,\(1,2,\dots,p-1\)都存在逆元且唯一,那么只需要将一个数与其逆元配对发现其乘积均为(同余意义下)\(1\),但前提是这个数的逆元不等于自身。那么很显然\((p-1)!\bmod......
  • uboot的重定向汇编详细分析--Apple的学习笔记
    一,前言既然是第二轮学习,当然要比第一轮增加深度,获取更多技能和通用方法论。之前我想通过代码关闭relocate功能,结果一尝试就复位了,看来没我想的简单,还是先了解下relocate的代码。二,源码分析调用前r0有传参为gd->relocaddr,也就是一个指针地址保存在r0。arch/arm/lib/crt0.S ldr r0,......
  • Shapley Value 学习笔记
    Shapleyvalue用于计算个体对整体的贡献度,它的计算公式如下:\[\varphi_i(v)=\sum_{S\subseteqN\backslash\{i\}}\frac{|S|!(N-|S|-1)!}{n!}(v(S\cup\{i\})-v(S))\]其中,\(v\)表示是价值函数,返回一个组合的价值。\(S\)表示一种可能的组合(不包含\(i\),所以它可能是空集......