赞
踩
0x00 前言
之前做题的时候遇到一个ECC相关的题目,学习了好几篇大佬的文章ECC的剖析文章,学习之后也记录一下,写一遍加强自己的巩固。
此文章严格意义上来讲应该算是读书笔记,在总结过程中观摩了很多位前辈的帖子和书籍资料,一字一句的写下来最后也只是勉强理解了ECC,所以难免会有说的不严谨或是思考错误的地方,大佬们轻喷,也希望跟我一样刚开始学习的伙伴能够对ECC多一点点认识。
0x01 ECC介绍
椭圆曲线密码学(Elliptic curve cryptography),简称ECC,和RSA、ElGamel算法等类似,是一种公开秘钥加密的算法,也就是非对称加密。ECC被公认为在给定秘钥长度下最安全的加密算法。
0x02 数学引入
1. 平行线谈起
从初中数学开始,我们就知道两条平行线是永不相交的。不过到了近代这个结论也被质疑了,目前为止我们所见到的都是有限远的平行线,在有限远的距离内,平行线的确是永不相交的,可是在我们看不到的无穷远处呢,平行线会不会最终相交,这就变成一个问题。
所以平行线 a // b 永不相交是一个假设
所以也可以假设 a和b 最终会在一个无穷远处 P∞相交
根据这个假设做出下图:
假设平行线a和平行线b相交于无穷远处P∞
所以P∞就是平行线的交点,为了区别, 之后将平面上的点称为平常点。
根据上面的简单分析可以得到以下几个特点:
(1) 直线L上只有一个无穷远点P∞
(2) 平面上一组相互平行的直线有公共的无穷远点,比如图中的a和b,所以所有平行线都应该相交于同一个无穷远点P∞
(3) 平面上任何相交的直线L1 和 L2有不同的无穷远点。(无穷远点是平行线的交点,既然L1和L2相交与平面了,那么他们的无穷远点肯定是不同的)
(4) 平面上全体无穷远点会构成一条无穷远直线。
(5) 平面上全体无穷远点与全体平常点构成射影平面。
2. 射影平面
射影平面的概念是从普通直角坐标系引入的,也就是中学时候笛卡尔积坐标系。
我们都知道,笛卡尔积坐标系是没有设置无穷点的,所以为了表示无穷远点,就产生了一个叫做射影平面坐标系的东西,这个射影平面坐标系可以同时表示无穷远点和平常点。
接下来看具体是如何建立射影平面坐标系的。
这是普通的笛卡尔积坐标系:
坐标系上有一个点A,坐标为 A(4,3) x=4 y=3
现在令 x = x/z , y = y/z (z!=0),则可以将A点表示为A(x,y,z)
现在就在平面直角坐标系的基础上建立了一个新的坐标体系
代入运算一下:
这里 x/z = 4 y/z=3 (z!=0)
所以 x = 4z y = 3z
所以新的坐标系中A点坐标表示为A(4z,3z,z)
所以A(4,3,1)
B(8,6,2)
C(12,9,3)
...
等表示形式为(4z,3z,z)的点都是A点在新坐标系中的坐标表示。
3. 直线方程
中学的时候就知道,直线方程为:Ax + By +C = 0 (AB不同时为0)
根据上面的分析可以得到直线在新坐标系中的表示为: A(x/z) + B(y/z) + C = 0
左右乘以z可以得到新的直线方程为: Ax+ By + Cz = 0
现在假设有两条平行线:
L1: Ax + By + C1z = 0
L2: Ax + By + C2z = 0
C1 != C2 ,根据平行线的定义(斜率相同)可以得知L1 平行于L2
联立两条直线方程求解可以得知:
L1 : C1z = -(Ax + By)
L2 : C2 z = -(Ax + By)
所以C1z = C2z = -(Ax + By)
又因为C1 !=C2 所以 z = 0 所以-(Ax + By) = 0,也就是(Ax+By=0)
所以表达式为:Ax + By + C*0 = 0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。